Paramètres | Info |
---|---|
Console: | SNES |
Jeu Original: | Final Fantasy III |
Type: | Bug Fix |
Genre: | Role Playing |
Modifications: | G,GP |
Créateur: | Lenophis |
Date de création: | 01/21/2007 |
Dernière modification: | 01/29/2016 |
Paramètres | Info |
---|---|
Nom de fichier: | Fix - Bad Decoration.rar |
Descargas: | 7 |
Conditions requises: | No-Header (SNES) |
Version: | 1.0 |
Notation: |
Don’t think this is gonna be a 100% Gold Remake, it’ll have its differences. Extra battles (some’ll be optionals, tough but rewarding), Hoenn Pokemon (in every area, and hard to find) New areas, Remapped some dungeons (so your old guides wont work) , Extra recurring characters (some’ll hate you, some’ll help you)
Note that the hack is incomplete but feel free to enjoy the hack as-is.
Title: Bad Decoration Author: Lenophis Version: v1.0 Applies to: FF3us v1.0 Tested on: FF3us v1.0 Contents: Fix Crusader - header.ips Fix Crusader - no header.ips readme.txt crusader orig.txt crusader new.txt Anti Crusader - header.ips Anti Crusader - no header.ips ROM addresses: C0/D800 - bugfix code C1/2DD3 - palette restoring code Urgency: Varies Would you rather you see blue barriers or butt-ugly brown barriers? -------------------------------------------------------------------------------- Description: Summoning the esper Crusader will make the reflect barrier look funny. Less "ha ha" funny, more "ew" funny. Beyond that, you can only notice it if you and a monster survive the summoning. -------------------------------------------------------------------------------- How this patch came into being: WARNING! LONG STORY AHEAD! This bug had to be one of the more evasive bugs of FF6. From ZED's mystical guide: Crusader redecorates Reflect barriers - If you cast Crusader during a battle and then proceed to bounce a spell off of anyone with a Reflect status, Reflect will show up colored in red tones. This is because Crusader's palettes have overwritten the Reflect palette stored in RAM. It only lasts for the rest of the battle, the original Reflect palette is rewritten to RAM at the start of each fight. What that doesn't mention, is that for the length of the animation character slot 4 is also overwritten. Maybe that was unknown, or maybe whoever found it felt it wasn't notable enough to be included. Before the damage is displayed that palette is restored. Thus the bug hunt began... Screenshot of character 4 being ugly: http://leno.hypher.net/images/crusader.png This is what I knew about the palettes because of Crusader overwriting it: Used by Crusader, for Purifier/Collapse of Heaven and Earth/Apocalypse attack C2/BBCF: AE6961 LDX $6169 (from C1/CBD6) C2/BBD2: 7B TDC (set accumulator to 0) C2/BBD3: A8 TAY (set Y to 0) C2/BBD4: BF4078D2 LDA $D27840,X C2/BBD8: 99E07F STA $7FE0,Y (write over character 4's palette and reflect's barrier palette, set's left sprite palette) C2/BBDB: 99E07D STA $7DE0,Y (same as above) C2/BBDE: E8 INX C2/BBDF: C8 INY C2/BBE0: C02000 CPY #$0020 C2/BBE3: D0EF BNE $BBD4 C2/BBE5: 6B RTL That brought about my first attempt to find the restoring: DMA! I did some checks for the beginning of the palette block, $7F00. That led me to a DMA routine during NMI. With a little tweaking I managed to make all monsters, characters, and everything else except the backgrounds to look ugly. But, it didn't end there. Screenshots of this attempt are here: http://www.romhacking.net/forum/index.php/topic,1113.msg36987.html#msg36987 Second attempt: NMI in general! A little later on in that routine, there were two LDA's to which I set breakpoints to. I summoned Crusader. And.....Crusader disables NMI?! "Holy shit, I must be on to something!" I thought. It turns out the answer was very close to me, but I wouldn't know it for a bit yet. First attempt to fix the bug: I then hijacked some code at the beginning of NMI. Needless to say it didn't fix the bug, probably too soon in NMI. Second attempt to fix the bug: I inserted the palette restoring code at the end of NMI. I summoned Crusader, then started bouncing spells back and forth. The barrier was normal! But wait! Crusader wasn't normal! The final 8 colors of the left sprite were off! Enter Kejardon: "Why don't you set a breakpoint for writes to $7E/7FE0?" My immediate reaction was "It can't be that simple." Third attempt to fix the bug: Setting the breakpoint led me to the routine that you see at the beginning of this readme. Sure enough, there it is. Executed only during NMI. Finally, the bug was fixed. -------------------------------------------------------------------------------- What this patch does: This patch is completely compatible with Imzogelmo's MP color patch. Just use whichever patch (header or no header) and the bug is fixed. Note: The anti-patches will effectively remove this patch. -------------------------------------------------------------------------------- Credits: Terii Senshi & assassin - For writing the C2 bank disassembly. Imzogelmo - For writing the C1 bank disassembly. Kejardon - Common sense is not an often enough occurance, thanks. :)