+  RHDN Forum Archive
|-+  Romhacking
| |-+  ROM Hacking Discussion
| | |-+  Final Fantasy 3 Clear/Float hack help
Pages: [1]
Author Topic: Final Fantasy 3 Clear/Float hack help  (Read 2 times)
zombero
Guest
« on: May 28, 2008, 11:42:52 am »

I'm working on a Final Fantasy 3 hack, and I'd like to make the Clear (Vanish) and Float statii go away at the end of battle.  Anyone know how to accomplish this?  Any help is appreciated.
KingMike
Guest
« Reply #1 on: May 28, 2008, 08:33:52 pm »

ASM knowledge required:

find some code that only executes when the battle ends (there's gotta be something in there, maybe when the game checks to see if all the enemies are dead), tack on some code that'll change the appropriate bits in each character's status.
The RAM values for status have probably been documented somewhere, seeing how popular this game is. I don't know about the death part.
DarthNemesis
Guest
« Reply #2 on: May 28, 2008, 08:55:51 pm »

If there are other statuses that time out at the end of battle, you could check to see when they get cleared. That should put you right where you want to hook in your changes.
zombero
Guest
« Reply #3 on: May 28, 2008, 11:01:54 pm »

Yeah, my ASM is pretty poor, this is only my second hack.  This page seems to either have or be the closest to having the information I need:  http://www.rpglegion.com/ff6/hack/code2.txt  but I'm not real sure on how to manipulate it to my end.
Lenophis
Guest
« Reply #4 on: May 29, 2008, 12:17:19 am »

Code:
C2/4957: BD F9 3E     LDA $3EF9,X  (in-battle status byte 4)
C2/495A: 29 C0        AND #$C0     (only keep Dog Block and Float after battle)
C2/495C: EB           XBA
C2/495D: BD E4 3E     LDA $3EE4,X  (in-battle status byte 1)
C2/4960: C2 30        REP #$30     (Set 16-bit Accumulator, 16-bit X and Y)
C2/4962: BC 10 30     LDY $3010,X  (get offset to character info block)
C2/4965: 99 14 16     STA $1614,Y  (save in-battle status bytes 1 and 4 to our
                                    two out-of-battle status bytes)

Assuming what you see is jibberish, do the following:

Go to C2/495A (0x2495A in the rom, add 0x200 if your rom has a header. If you use FF3usMe, then your rom does) and change the 29 C0 to 29 40. That takes care of Float. Removing Vanish will require writing a new routine, since I can't seem to find if/where Magitek status is handled. At the LDA $3EE4,X (BD E4 3E) you'll need to insert 20 yy xx (JSR $xxyy). Find some free space in the bank (C2/6469-C2/6800 should have a bunch of free space, indicated by 0xFF) and make your JSR look there. At the new location, do the following:

BD E4 3E 29 EF 60
That translates to LDA $3EE4,X, AND #$EF, RTS which will take care of Vanish.

Helpful tip, JSR's don't know what headers are, so your JSR should be -0x200 whatever your location is (assuming your rom has a header). Any questions, feel free to ask.
zombero
Guest
« Reply #5 on: May 29, 2008, 02:15:17 am »

Woo!  Yeah, that fixed it.  Thanks!
Pages: [1]  


Powered by SMF 1.1.4 | SMF © 2006-2007, Simple Machines LLC