Users browsing this thread: 1 Guest(s)
Better bank C2 disassembly

#1
Posts: 28
Threads: 13
Thanks Received: 11
Thanks Given: 4
Joined: Dec 2015
Reputation: 4
Status
None
I love using Assassin's bank C2 disassembly as a reference for my gameplay-related bugfix patches. Stone Zombie, Ultimate Damage Fix, Imp's Retort, Zombie/Rippler... these all manipulate code in bank C2. However, his document is far from perfect and most of the code is not disassembled correctly. Here's a correct version for (almost) everything that's not right.

Bank C2 disassembly
Quote  
[-] The following 4 users say Thank You to 13375K37CH3R for this post:
  • Gi Nattak (03-06-2016), magno (03-21-2016), ReturnerScum (03-06-2016), Warrax (10-04-2017)

#2
Posts: 3,966
Threads: 279
Thanks Received: 234
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
Christmas in March!

Edit: Could we host this document in the wiki?
  Find
Quote  

#3
Posts: 3,966
Threads: 279
Thanks Received: 234
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
C2/8DE4 to C2/92F9 is related to ending names. There's probably more than this but I never continued the work at that level.

See: http://www.romhacking.net/documents/716/

Edit: Also, the accumulator in assassin disassembly in the C2/BD95 area is on 16-bit while it should be on 8-bit. This has consequence of creating some portions of garbage code. I don't know where this problem starts exactly but the portion I'm referring to be read like in this post and not like this:

Code:
C2/BD95: AD 4B 2F     LDA $2F4B
C2/BD98: 30 36        BMI $BDD0
C2/BD9A: EE ED E9     INC $E9ED
C2/BD9D: A9 10 8D     LDA #$8D10
C2/BDA0: 00 13        BRK $13
C2/BDA2: A9 FF 8D     LDA #$8DFF
C2/BDA5: 02 13        COP $13
C2/BDA7: AD 9D 62     LDA $629D
C2/BDAA: C9 FF D0     CMP #$D0FF
C2/BDAD: 11 AD        ORA ($AD),Y
C2/BDAF: 4B           PHK
C2/BDB0: 2F 29 38 4A  AND $4A3829
C2/BDB4: 4A           LSR
C2/BDB5: 4A           LSR
C2/BDB6: AA           TAX
C2/BDB7: BF 3B BF C2  LDA $C2BF3B,X
C2/BDBB: C9 FF F0     CMP #$F0FF
C2/BDBE: 0E 8D 01     ASL $018D
C2/BDC1: 13 AD        ORA ($AD,S),Y
C2/BDC3: E4 11        CPX $11
C2/BDC5: 29 08 D0     AND #$D008
C2/BDC8: 04 22        TSB $22
C2/BDCA: 04 00        TSB $00
  Find
Quote  

#4
Posts: 28
Threads: 13
Thanks Received: 11
Thanks Given: 4
Joined: Dec 2015
Reputation: 4
Status
None
Quote:Edit: Could we host this document in the wiki?


Do it! By all means, go for it!


Quote:Also, the accumulator in assassin disassembly in the C2/BD95 area is on 16-bit while it should be on 8-bit. This has consequence of creating some portions of garbage code.


Believe you me, I saw this problem all over the sections of code that I rewrote.
Quote  

#5
Posts: 3
Threads: 0
Thanks Received: 0
Thanks Given: 1
Joined: Mar 2016
Reputation: 0
Status
None
Hi everybody!

First, please let me introduce myself! I'm magno, a spanish ROM hacker who has been doing several translations of famous SNES RPG games into spanish for more than a decade, such as Chrono Trigger, Secret of Mana, Seiken Densetsu 3, Tales of Phantasia, Romancing Saga 3.... Some years ago I started my own translation of Final Fantasy 6 (although there was already a completed one) I did a lot of assembly work. I really wanted to register in this forum but I never could be able to pass the security question, because they were really difficult (Biggs and Wedge aren´t the name of two characters in the spanish dubbed version of Star Wars, so that was almost impossible to answer). Anyway, I finally answered a easy one, I registered and here I am!

Maybe you could fin useful some of the disassembly I dumped and fully tagged. In RHDN you could find a full dump of bank $C3, fully labelled and fully relocatable. I also dumped intro routine (which is compressed on bank $C2) and I also have all the code from $C2:0000 to $C2:A800, just the piece of code missing on the file attached in this thread. Lot of bugfixes have already been inserted, all routine have been located and labelled (to make them rellocatable) and I'm planning to finish the whole bank when I have som spare time.

The bad point in this is that all comments are in spanish... Is there anybody interested in my files?

Regards.
  Find
Quote  

#6
Posts: 2,548
Threads: 98
Thanks Received: 147
Thanks Given: 156
Joined: Aug 2009
Reputation: 52
Status
Nattak\'d
(03-21-2016, 10:53 AM)magno Wrote: Hi everybody!

First, please let me introduce myself! I'm magno, a spanish ROM hacker who has been doing several translations of famous SNES RPG games into spanish for more than a decade, such as Chrono Trigger, Secret of Mana, Seiken Densetsu 3, Tales of Phantasia, Romancing Saga 3.... Some years ago I started my own translation of Final Fantasy 6 (although there was already a completed one) I did a lot of assembly work. I really wanted to register in this forum but I never could be able to pass the security question, because they were really difficult (Biggs and Wedge aren´t the name of two characters in the spanish dubbed version of Star Wars, so that was almost impossible to answer). Anyway, I finally answered a easy one, I registered and here I am!

Maybe you could fin useful some of the disassembly I dumped and fully tagged. In RHDN you could find a full dump of bank $C3, fully labelled and fully relocatable. I also dumped intro routine (which is compressed on bank $C2) and I also have all the code from $C2:0000 to $C2:A800, just the piece of code missing on the file attached in this thread. Lot of bugfixes have already been inserted, all routine have been located and labelled (to make them rellocatable) and I'm planning to finish the whole bank when I have som spare time.

The bad point in this is that all comments are in spanish... Is there anybody interested in my files?

Regards.
Hello and welcome! I do recognize you from RH.net, lots of folks seem to mistaking and call you 'Mango'. And sorry about the security questions >_<. I don't believe we've ever considered a language barrier issue preventing folks from joining, outside of possible spammers.

Anyways I gotta keep this short because I'm dead tired but thanks for offering your files and the introduction! I'm sure there must be some out there who would very much appreciate a Spanish disassembly.
Quote  

#7
Posts: 3,966
Threads: 279
Thanks Received: 234
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
(03-21-2016, 10:53 AM)magno Wrote: The bad point in this is that all comments are in spanish... Is there anybody interested in my files?

Welcome!

Yes I'd be interested in your files. It's a great work you've done there. I think I sent you a pm on RHND about hosting the $C3 disassembly on our wiki. I totally forgot to check if you answered. I would also be interested in hosting your $C2 code block once you finish it.

For now I have linked the RHDN entry here: https://www.ff6hacking.com/wiki/doku.php...s:doc:game
  Find
Quote  

#8
Posts: 3
Threads: 0
Thanks Received: 0
Thanks Given: 1
Joined: Mar 2016
Reputation: 0
Status
None
(03-21-2016, 10:29 PM)Gi Nattak Wrote: Hello and welcome! I do recognize you from RH.net, lots of folks seem to mistaking and call you 'Mango'. And sorry about the security questions >_<. I don't believe we've ever considered a language barrier issue preventing folks from joining, outside of possible spammers.

Anyways I gotta keep this short because I'm dead tired but thanks for offering your files and the introduction! I'm sure there must be some out there who would very much appreciate a Spanish disassembly.

Thanks for this warm welcome!
Although my files are in Spanish, I think they can be really useful to those who want to edit code. The changes I did to the spanish version of FF6 are all properly commented above each assembler line, so they can be easily detected.
And yes, some people call me Mango, which is a famous clothing store for women in Spain XD


(03-21-2016, 11:34 PM)Madsiur Wrote: Yes I'd be interested in your files. It's a great work you've done there. I think I sent you a pm on RHND about hosting the $C3 disassembly on our wiki. I totally forgot to check if you answered. I would also be interested in hosting your $C2 code block once you finish it.

For now I have linked the RHDN entry here: https://www.ff6hacking.com/wiki/doku.php...s:doc:game

I answered you some days ago. You can use the file as you please, and host it here if you like, no problem. I also offered you my intro routine, which is properly tagged as well and adapted to PAL SNES (audio and video are synchronized to 50Hz).

Besides, I changed the opera scene to match music and text in PAL consoles, and fixed the world map bug in 50Hz: if I remember correctly, some HDMA was outside screen due to longer NMI when running at 50Hz, which made the map flicker.
Some other "special" feature of my spanish version is that the menu bug is fixed. I didn't apply the solution everybody would find googling about this issue, instead I re-wrote some NMI code executed during menus. This can be found in my $C3 disassembly.

It would be great to share all this with all you.
  Find
Quote  

#9
Posts: 3,966
Threads: 279
Thanks Received: 234
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
(03-22-2016, 04:05 AM)magno Wrote: It would be great to share all this with all you.

I sent you a email regarding the C2 and intro disassembly. Thanks!
  Find
Quote  

#10
Posts: 3
Threads: 0
Thanks Received: 0
Thanks Given: 1
Joined: Mar 2016
Reputation: 0
Status
None
(03-22-2016, 10:53 AM)Madsiur Wrote: I sent you a email regarding the C2 and intro disassembly. Thanks!

Check your email

"Intro.asm" has all the code that is decompressed on RAM $7E:5000 to be executed from there. These routines include:
 * Main title screen
 * Intro where Magitek Armors go to Narshe
 * Scene where the world collapses
 * An unknown scene, which I think it is related to the ending credits.

All these routines share an "event queue" where routines are added to be executed in a cyclic fashion. Most of them works in this way:
* The event routine is accesed from the queue using a JMP ($AAAA,x)
* The first time the queue executes a routine, X=0, so the jump points to the first address in the table which is a initialization code
* The next times the queue executes that routine, X=1, so the jump points to the second address in the table which is the normal code to be executed eache time the queue is analyzed

All routines are labelled so you can modify the code as you please, even I gave some routines a name (in english Laugh ) to make the code more readable.

Bank $C2 disassembly is not finished yet. There are some routines remaining to be identified and some others which need to be tagged and formatted.

By the way, all my source code assembles properly using X816 assembler.  Once I thought it will be better to make the code compatible with asar or xkas, but that meant to change each label because labels in asar/xkas are ended with a ':' and both compilers don't support '$' as part of a label. That was too much work to do Sad
  Find
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite