Resource uses symbol libraries. Very easy to put together as they're just lists of symbols and their values. Let me know what they are for the A4 offsets and I can put one together and apply it to the disassembly. I used them extensively in the AMOS extensions disassemblies.
Good luck for Wednesday 😉
See thread "Champion Data (BW)" :
http://www.ultimateamiga.co.uk/index.php/topic,9736.msg46373.html#msg46373... it seems we have cross-over of information being discussed!
There's a few key data-sets i've identied, and i'll try and get the full definitions into the revelant posts in the general Hacking Resource thread. (You can see a couple of links in that post already)
Certainly the one for "Champion Data" - that defines strength, agility, level etc is commonly used, any time "CharacterStats" is linked to (*usually* in A4)
On a related matter.....
Removing Excess LabelsDid you see my post above about how to define 'offset' address labels? I still don't know how to do this, perhaps via an EQU ? This would actually remove a number of unwanted labels, and allow us to pack more data blocks up via INCBIN "filename.data" or "filename.graphics" in the final source.
I ask , as this is coming up more and more as i look to put meaningful labels in.
Let me give an example. There is a label called "PocketContents" - which is a clearly defined datablock for all of the objects held by all 16 champions at any one point. As such it's a 16 * $10 datablock ($100 bytes)
The PocketContents label is therefore referred to in 13 lines of code. Unsurprisingly these are usually something like:
adrJA005170
MOVEQ #0,D0
MOVE.B (adrB_00EE3E).L,D0
ASL.W #4,D0
LEA (PocketContents).L,A0
ADDA.W D0,A0
MOVEQ #0,D0
MOVE.B (A0),D1
CMPI.B #$1B,D1
BCS.B adrCd005192
CMPI.B #$3F,D1
BCS.B adrCd0051A4
adrCd005192
MOVE.B (1,A0),D1
MOVEQ #1,D0
CMPI.B #$1B,D1
BCS.B adrCd0051CE
CMPI.B #$3F,D1
BCC.B adrCd0051CE
This allows the code to skip to the correct Champion's Pockets and start using (A0) and (1,A0) etc to read what is in left hand (A0) and right hand (1,A0)
Now... the currently worn Armour can be checked by looking at (2,A0) .... however, in
one instance(!!!) in a routine starting at adrCd00A744, for some reason we jump directly to a label called 'ArmourWorn'
LEA (ArmourWorn).L,A0
The label itself, is meaningless, because it is effectively (2,PocketContents)... and the routine will also need to add $20 * X to the address, to reach it's 'actual' destination.
Unfortunatley, (2,PocketContents) is not permitted by DevPac, but I guess there must be a way of defining / reaching it, allowing us to change that one instruction. It will also then allow us to take the entire pocket-contents datablock, and replace it with an INCBIN "filename.data".
This technique is used a lot in the graphics sets, which obviously we want to avoid in the final ASM file, in order to include the graphics as individual files!
in my identification spreadsheet for new labels, i am putting yellow highlights on any labels i suspect need removing/replacing for whatever method avoids this.
Any thoughts on how we get to this end-goal??