Hacking: What next??!

Started by Hungry Horace, April 05, 2014, 12:20:54 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Hungry Horace

I've double checked and they seem right? (although there is one small mistake I will fix)

Are you sure you are familiar with how to use them?

monster.colours is a list of possible palettes, each entry of which are four bytes long.
00 00 07 08 | 00 03 04 0E | 00 08 04 0E | 00 05 06 0E | 00 09 0A 0B | 00 09 0C 0B | 00 0A 0B 0D | 00 0B 0D 0E | 00 0C 0B 0D | 00 02 .... errr.

The first entry, I call "palette -1" because it is used only on the Illusion creatures.
00 00 07 08

- colour 0 becomes colour entry 0
- colour 4 becomes colour entry 0
- colour 8 becomes colour entry 7  (blue)
- colour C becomes colour entry 8 (another blue)


The next entry is palette number 0, and is used on the most basic (grey) summon creature

00 03 04 0E

- colour 0 becomes colour entry 0
- colour 4 becomes colour entry 3 (mid grey)
- colour 8 becomes colour entry 4 (lightest grey)
- colour C becomes colour entry E (white)

I think I may have left-off some bytes though, as I don't seem to have enough entries above, but the entries are definitely correct.

The file Summon.colours (or any other mosnter name.colours) then tells you which palette to use for each "level" (or 'grade') of Summon.... this is how I know the files are right, because this one is really easy to spot!

00 01 02 03 04 05 06 07

For the lowest grade summon, use palette entries 0 (mostly grey)
For the number 1 grade summon, use palette entries 1 (mostly blue/grey)
For the number 2 grade summon, use palette entries 2 (mostly green)
etc. etc.

For the other monsters, they aren't quite as sequential, but the principle is the same.

You should bare in mind though, that a Grade 0 monster, does not relate to a level 0 monsters.... each one has its own "starting offset" value, i.e. they might not start changing colour until level 3 etc.

Hope this helps
Quote from: KillerGorillabecause winuae is made of code and your amiga is made of stuff


Hungry Horace

monsters.colours I have accidentally made 26 bytes in length.

I *think* it should be 38 (maybe less)

the correct full set of values are:

00 00 07 08 | 00 03 04 0E | 00 08 04 0E | 00 05 06 0E
00 09 0A 0B | 00 09 0C 0B | 00 0A 0B 0D | 00 0B 0D 0E
00 0C 0B 0D | 00 02 03 04 | 00 08 04 0D | 00 05 06 0D
00 07 08 04 | 00 07 08 0D


:)
Quote from: KillerGorillabecause winuae is made of code and your amiga is made of stuff


Hungry Horace

Thanks to the disassembly of the 68k source by BruceUncle, I've made some interesting finds.

I was right, that there is some hard-coding going on to determine if a character is placed in the central position:


009728 cmpi.b #$15,-$0017(a3)
00972E beq.s lbC009750
009730 cmpi.b #$16,-$0017(a3)
009736 beq.s lbC009750
009738 cmpi.b #$40,-$0017(a3)
00973E beq.s lbC009750
009740 cmpi.b #$67,-$0017(a3)
009746 bcc.s lbC009750


There is also some similar code which would allow me to have any special characters I produce to respond with a "special" name... like Zendik names himself as lord of creation.  There is also again similar code that tells Zendik to 'hold' the permit which he drops.

Now, I really like the idea of having one special character like this per tower. The problem is, this cannot be added to my editor, and therefore cannot be added to other (non amiga) versions, without writing bespoke code... thankfully, the code required isn't that difficult, and using WHDload to create unique routines for this purpose would actually make this quite easy....

however,  I am concerned about the impact of such a heavy edit, and wondered what the thoughts of 'the public' were?

Quote from: KillerGorillabecause winuae is made of code and your amiga is made of stuff


MadMunky

Thanks Horace my mistake, I'll check and try again :)

Hungry Horace

#34
I have been watching far too much Game of Thrones....

Character $11 adapted to have their own name text... (yes, i had to write new code into the game for this)

I am going to need some help form BruceUncle though to be sure i put it into an area that wont be wiped. (preferably i would like to expand the executeable size slightly)
Quote from: KillerGorillabecause winuae is made of code and your amiga is made of stuff


MadMunky

Looking good!

Looks like your be busy now :) unfortunately the stuff Bruce posted means nothing too me :( I'm hopeful Bits data will be more to a format I can understand but this is all excellent


Hungry Horace

well... I am thinking, it is possible that some code can be shared between Amiga and ST versions, however, this will depend heavily on memory locations, and whether there is any "spare" room in the game binaries to do this.


MadMunky - I think you may have sent me it before, but do you have the main game binary from the ST version at all you can send me? I do not mind if it is a cracked version either.


I am thinking I will however maybe sacrifice the idea of having Book of Skulls work on both machines, in favour of having a more involved update/mod, unless there are any strong objections to this?

It would be perfectly possible to write some code that looks for the correct ASM and translates it back into useable parameters to be read by an editor or your remake
(so you would know that there are names for characters 10,1A,40 etc, and they are connected to specific text.) and this is something I will allow for by adhering to specific "rules" in my new game code.



Quote from: KillerGorillabecause winuae is made of code and your amiga is made of stuff


MadMunky

I cant remember what I gave you before :(

I've attached the ST Blood files but they look like they are compressed, I honestly cant remember how/if I uncompressed them before :(

Or maybe I did a memory snap shot and extracted the data (attachment is not a zip but raw ST as I had to rename it to upload)

MadMunky

Horace are you able to find anything in the code about how many hit points are assigned to which monster level?

Hungry Horace

Quote from: MadMunky on May 21, 2014, 12:34:52 PM
Horace are you able to find anything in the code about how many hit points are assigned to which monster level?

I would need to understand the "unpacked" monster data... which if $10 in length.

it contains the monsters location, type, current status ie. are they attacking, or communicating etc) , their direction, what object they hold and various other bits like this.

It must also contain their hit-points, which will be assigned during the "unpacking" (which it think is done when you enter each tower)

If I had this block understood more, I could start looking at what happens in the unpack process....

Labeling up the ASM source code should make this much easier, so I am hoping BruceUncle can give me some pointers as to how to add new labels to his resource file.
Quote from: KillerGorillabecause winuae is made of code and your amiga is made of stuff


MadMunky

Horace: good find on the other thread I didn't want to pollute it with comments so will post here,

Also do you know why the characters stats have the Spell points set to say 9 for blodwyn but as soon as the game starts this gets changed to 6, do you know if there was any reasoning to this.

Hungry Horace

Quote from: MadMunky on May 21, 2014, 07:40:12 PM
Horace: good find on the other thread I didn't want to pollute it with comments so will post here,

Also do you know why the characters stats have the Spell points set to say 9 for blodwyn but as soon as the game starts this gets changed to 6, do you know if there was any reasoning to this.

no idea yet, but it will be easy enough to find the code that does it.... like the monsters it needs the character stats section correctly mapped out though.
Quote from: KillerGorillabecause winuae is made of code and your amiga is made of stuff


Hungry Horace


01 23 11 0D 0D 23 23 1F 1F 06 09 05 80 00 00 00
C7 FF 00 00 00 00 07 09 02 00 03 00 00 00 00 00


This is Blodwyn's starting data, unedited from the champions.stats file.

immediately after starting the game (as blodwyn) the data becomes this:


01 23 11 0D 0D 23 23 1F 1F 06 06 05 80 00 00 00
C7 00 00 FF 00 00 07 09 02 E0 03 00 0B FF 00 00


in the other thread I will post the code that does this. The address which this happens at is stored in that code at A4 .... this is important. Each of the above items is then referenced like this:   

0(a4) = first byte above (level)
5(a5) = 6th byte (stamina) 
a(a5) = 10th byte (magic)

we should really have an understanding of what every byte means in the 'live' data. maybe the code can give some insight into this.

From what i can see, it simply moves the value from the 11th byte, to the 10th byte address... rendering the value of '9' for Blodwyn's magic as meaningless. (unless the value is 'read' for some purpose prior to this routine)
Quote from: KillerGorillabecause winuae is made of code and your amiga is made of stuff


MadMunky

#43
We already know what pretty much all of this does it's attack timers and cool down timers,xp and amount of spells owed by the fairy :)

It's only this value we don't really understand

Hungry Horace

can you provide that info here please? It might help me understand the code more.

I am trying to work out a few bits atm, but i still have a lot of blanks

Some of it is probably the same with the monsters too :)
Quote from: KillerGorillabecause winuae is made of code and your amiga is made of stuff