Site hosted by Angelfire.com: Build your free website today!

Imzogelmo's Final Fantasy III

Not-Even-Penultimate ROM Resource

This is my modest site of many patches (or mods) for the SNES game known as Final Fantasy 6 (or Final Fantasy 3 in the U.S.). You won't find any ROMs here, but you will find snippets of custom-made code to supplement the existing program. Enjoy!

NEWS (7/6/17): Yahoo, we're celebrating 21 years of this website existing, so, at request by Madsuir, I have uploaded source code for the FF3 Event Disassembler (based heavily on Yousei's code, with many tweaks along the way). There are other findings that have been found and re-lost, not responsible for incorrect/invalid code, yada yada yada. Enjoy this as-is would-be masterpiece/trainwreck!

NEWS (2/28/11): Two things. First, an unnumbered minor update to the Gogo & Cursed Shield fix. There's no change to the patch itself, but the file name was changed as there was an errant x in the name instead of a 3. Thanks to assassin for pointing it out. Second, the patch allocation document is updated. A few patches have been included, along with some changes for webpages and size to an existing patch. Let me know if there are any more corrections or updates. Hopefully it won't take me another year to fix it.

NEWS (2/17/11): Yikes, Gogo & Cursed Shield fix 0.85 is buggy! Uploaded a new fix, christened 0.9. Thanks to Leviathan Mist for pointing it out!

NEWS (5/08/10): Oops, messed up the patch on 0.8. If you used it, please undo and download 0.85. Thanks again to Hollywood Narrator and Klydestorm for all the help in getting this patch right!

NEWS (5/06/10): Updated the Gogo & Cursed Shield fix to version 0.8. This corrects a couple of issues in the previous version, 0.6. Thanks to Hollywood Narrator and Lenophis for the bug reporting and help in fixing!

NEWS (1/26/10): Updated the patch allocation document. I made the effort to include any new patches, but of course, there may be some omissions or typos in the addresses. Let me know if there are any such errors.

NEWS (1/21/10): Just a minor update to the page. I've updated my links, and I changed some of the old ancient descriptions and explanations. Hey, keep in mind this page started out when html 2.0 was considered modern. :)

Patches Disassembled Code Banks Coming Eventually Misc. Links

Patches of My Own Design

FC Invert with Anti-Status FC 08

(Considered FC invert version 4.7, updated 8/23/05

FC Invert with Anti-Status FC 08 Script (considered FC invert ver. 4.7, updated 8/23/05)

Monster writers, please give me feedback if you use this.

This is basically an AI upgrade for monsters. FC-invert allows any FC-command to be inverted by setting the high bit on the 2nd byte; e.g. FC 03 xx xx inverted becomes FC 83 xx xx. It would mean that the check is logically evaluated, then reversed (inverted). However, this can lead to somewhat unexpected results in the case of status checks, so I have added the Anti-status check as explained in "new feature" below.

New Feature: 

    FC 08 43 0n = FC 89 43 0n = True if one or more characters has status 0n = True if some or none, but not all, characters lack status 0n

    FC 09 43 0n = FC 88 43 0n = True if no characters have status 0n = True if all characters lack status 0n

    FC 08 43 8n = FC 89 43 8n = True if one or more character lack status 0n = True if some or none, but not all, characters have status 0n

    FC 09 43 8n = FC 88 43 8n = True if no characters lack status 0n = True if all characters have status 0n

Also keep in mind that 0n = any status 00 to 1F, so that 8n = 80 to 9F. As for why it's so long, well, 90% of the changes are just shifting things around to make it fit. I added a few lines, removed a lot of redundant code, changed a lot of pointers, and recalculated the affected branches. Hopefully I did this okay, but if not, as always, e-mail me.

EDIT: The new version, 4.7, fixes two single-byte errors in a pointer table.

This is not guaranteed to work with other patches, although with my notes you should be able to relocate and/or shift it to make it work. Use at your own risk.

NOTE: No new F1 target types are created with this patch. It only affects the FC command possibilities. It does, however, shift or relocate almost the entire vanilla monster AI code. Some later-released enhancements or bugfixes may (will) conflict with this.

Lowercasing patch

one and only version

Yes, I know this is not a command script patch. This is a text patch to make the characters names default to initial caps instead of ALL CAPS. I mean, how many times have I had to put in "Terra" for "TERRA"? Yes, it does work, and it's great for people who're lazy like me. For the curious, I spelled "KUKU" as "KuKu" because I thought that was a cool way to do it.

Separation of Powers patch

version 2.3 updated 8/7/04

Here it is! This is the long-awaited separation of powers patch, which allows you to consider each element of a multi-elemental attack as separate components for things like absorb, nullify, resistance, and weakness! This could be good or bad, depending on how you play, but it cuts both ways, for characters and monsters! Check out the text document to get all the info you need to know how it works.

What's new: (Version 2.3): Apparently there was a not-often-jumped-to place that caused a stack mismatch, which, as you may not know, will crash the game terribly. I expect this to fix it. (Future): I may release a slightly different algorithm which would have less roundoff error.

NOTE: If you plan to use my "Carve Stone" patch along with this one, apply this one FIRST. Otherwise, you will merely overwrite the Carve Stone patch and add that bug back into the game.

Carve Stone bugfix

updated 3/29/06

This patch corrects a very minor but still faulty bug in the code which allows a petrified player to incur damage due to an attack with the Atma Weapon. EDIT: The new version (unnumbered) adds a patch for the Japanese version, cleverly named CarveStone-J.ips.

Multi-Steal-Fix

formerly Klepto, version 1.01, updated 10/25/05

There are two errors associated with multiple steal attempts in this game. First, the stolen items are not all added to your inventory (only the last successful steal is actually added). Second, the message display window does not clear in between steal animations, meaning that the first item name is the one that is displayed for all subsequent successful steals. This patch now corrects both. As of the 1.0 release, this patch may be used with either version of FF3us, as well as FF6j and FF6j with RPGOne 1.2. Enjoy.

EDIT: Version 1.01 has the same patches, but corrected some errors/typos in the documentation files.

Grand Stairway (and other items) text and event correction

released 8/18/04

This patch fixes the various errors with (event-based) treasures in this game. Basically, I made the item added to your inventory be the same as the item reported to be added to your inventory. The same goes for GP (all reports of 2000 GP were actually 293 GP, but now, you will get 2000 GP). Also, I fixed the reported "Water Skean" into a "Water Edge." I finally got around to playing the game again, and this works, so I no longer need a disclaimer about it not being tested. :) FYI, this fix is not limited to the Grand Stairway items; it also fixes the incorrect item bestowal in Owzer's basement.

Life 2 Description Fix

released 8/21/04

I hope no one see this! I'm so embarrassed to even make such a puny patch... but on the other hand, it's definitely not a bandwidth-hog. I won't even worry you with the details of what this does... Look at the title, then look at your game, and all will be clear to you.

Gogo and the Cursed Shield Fix

version 0.9, released 2/17/11

Gogo can't uncurse the cursed shield, but why? If the shield is equippable, the curse should be liftable! I don't know about you, but I find this situation to be unfair. So, I made a patch. Now, Gogo can dispel the curse just like everyone else. The zip file includes two versions, one for FF3us (both versions) and one for FF6j.

EDIT: This patch has recently been re-released, due to a bug in the previous edition. Get this right away if you fell prey. Both US and Japanese versions have the new correction.

EDIT 2: Yet another bug-fix release. The A register was tainted, and the stack load of A was wrong somehow. These issues have been fixed. Get version 0.8 immediately! If you have save states/save files created using version 0.6, it is highly recommended that you delete them before continuing with your game (version 0.6 could potentially corrupt memory).

EDIT 3: Another release of this patch. Version 0.85. If you used an older version, get this update!

EDIT 4: Version 0.9 is released, thanks to Leviathan Mist for the testing and reporting!

Various Texts' corrections

released 10/30/04

I thought I'd celebrate the end of my hiatus with a little patch to fix some text errors in the game. There is no documentation, so you need to read it here...

This started out as an effort to fix the L.4 Flare description (you know, the WRONG one that says it hits level 2, 4, 6 enemies...). I did that, completely in the hex editor, so I thought I'd tackle some other errors. So, I also fixed the misspelling of "members" in the True Knight relic. Then, to bring it up to a nice number of 3, I fixed the word "bonus" in that one Esper bonus description (I forget which one). I *think* that's all I did, but I don't really remember, 'cause I did this a long time ago. What I *do* know is that this patch DOES NOT affect any dialogue, just menu stuff. Enjoy.

Vector's Cure-Castin' Kid no longer heals the dead bugfix

version 0.91, updated 8/27/08

The title is misleading; actually this prevents all event based damage AND healing from having effect on dead, zombified, or petrified characters (as it should). See Master ZED's Glitches and Bugs guide for a description. As for the reason, it appears that it was simply overlooked. For details, see the included commented code. The only thing I can add is that users should note that there *could* be events that I haven't "fixed" (this patch requires some event commands to be reordered), so there could be cases where an event used to maximize a dead character's HP/MP/Status but no longer does. If such an event is found, please report it to me so that I can track it down and fix it. This comes with two versions, but it currently only works on FF3 US. The new version corrects an event error, Thanks Hollywood Narrator!

EDIT: Apparently this fixes another bug as well, albeit a heretofore unreported bug. Spikes (like in the Phoenix Cave), or any event-based damager for that matter (stepping in lava in the Cave to the Sealed Gate), can harm a character regardless of their status. The only thing that this would effect are Petrified characters as far as I can tell, but anyway... The root cause is the same for this and the CCK bugs, so this patch fixes 'em both (and provides a better reason for this patch to exist).

EDIT 2: The original did not fix all events, therefore it was buggy. Get the new edition now! Thanks to Lenophis for pointing this out!

EDIT 3: Thanks to Novalia Spirit, who pointed out an error with my readme. Apparently, the add 1 MP function is used, once, in the game. Since the original game had all 0's for the lookup value, even this will not work without the fix.

Pink Gogo bugfix

updated 4/07/05

This one makes the two NPC versions of Gogo in Cyan's Soul have the correct palette. Two? Yes, that's right. There are two possible hostage-points for Gogo (or any other character), and somehow, the programmers gave both possible Gogos the wrong palette. Or, if you prefer, it fixes the bug stated in ZED's Glitches and Bugs Guide as:

Pink Gogo in Cyan's soul - When you first enter Cyan's soul, your now-three-man group is separated with you in control of the last character and the other two captured by a Dream Stooge. If Gogo is one of those captured, it will appear with a pink palette until you rescue it. This is because the game mistakenly gives it the Moogle/Umaro palette for this particular scenario (as long as it is an NPC).

M-Tek Vehicle in Cyan's Soul event bugfix

released 1/03/05

This patch fixes the bug caused by switching lead characters during the M-Tek portion of Cyan's Soul. Basically, it calls another function to clear all the characters' "vehicles." Amazingly, this event code patch was possible without invading other events or free space. I may write up a readme for this at a later time, but for now, just know that this has only been tested on version 1.0 (I'm not certain if the event code is the same for both versions).

Shadow Leaves One-Man Party event bugfix

released 2/02/05

This one fixes a bug in which Shadow can leave a party consisting of just Shadow, thereby freezing the game. To experience this (not that you'd want to!), here's what you do. After the Narshe battle (where Kefka raids Narshe and you have to fight them on the snowfield), make a party of just Gau, then go to hire Shadow's help at Kohlingen and trek back to the Veldt and ditch Gau (have him leap but then don't let him come back). Then, if you take Shadow past the gate of Narshe (or try to enter the secret passage), he will leave (as he would if you had other party members). This patch corrects that behavior by blocking Shadow's entry as usual, but you still retain control of him.

Color-coded MP Digits patch

released 6/02/06

This little tweak makes it so you can finally tell MP-damage from HP-damage with no effort (unless you're colorblind, sorry). Of course, generally that is not hard in the normal game... just check for the usual suspects: Osmose, Rasp, Tincture, Ether, X-Ether... However, if you make a hack and have other MP-affecting attacks, this could be more useful. Pink is MP-damage, blue is MP-healing. Yes, I know it screws up the Reflect-barrier colors...but if I didn't re-color them, MP-healing would cause seizures. Really. (Translation from Imzogelmo-ese: It would be an ugly, chartruce-on-blue palette that is not attractive at all).

P.S.: This has not been tested extensively, and it probably won't be, so if it's buggy, just let me know (tell me what spell/attack bugged it out), and I'll fix it ASAP. Below is a little pic of it in action, just after casting Osmose on an undead monster.

Not Scary Enough...NEXT!

released 3/01/05

Now here's a fun patch. This is not a bugfix, mind you. This patch is one of my oldest projects, but only recently did I have the ability to track down all the information needed to complete this patch. You can thank T. Geiger for his wonderful SNES9x debugger, which allowed me to track down the needed data.

Oh yeah, you want to know what it does, right? This patch creates a new variable (located at 7E:2D09) which keeps up with which characters have been hit (in the high nibble) and damaged (low nibble). Characters who have not taken any damage throughout the battle will laugh instead of dance at the end of battle (they may dance very briefly...e-mail me if you need a detailed reason). If NO characters are hit OR damaged throughout the battle, a special message will appear at the end of battle (assuming it's a regular battle end): "Flawless victory"; or, if Mog is in the party "Not scary enough... NEXT!" For the uninitiated, that line comes from the old TV commercial, and it lends itself to the name of this little patch.

Mine Cart Fix

only version

The Mag Roaders that appear on the Mine Cart ride out of the Magitek Research Facility were intended to be randomized just like any event-based battles. Unfortunately, the programmers fell prey to a little known side effect of the MVx opcodes, which causes the data bank to be changed. This de-coupled the choice from the random number result, and instead it is based on some graphics data from the first character. This patch corrects the minor oversight. Comments welcome.


COMING EVENTUALLY:

Separation of Powers Modified [just lack motivation]

- This one needs to happen, because it just isn't as perfect as it should be.

Imzogelmo's "How to Hack SNES Games"

- I barely started it; however, ask me and I can usually help you.

My very own hardtype hack, with a twist

- This has pretty much been scrapped, but most of the innovations I had planned have been incorporated into Pandora's Box, a project I am working on with Lenophis, Dragonsbrethren, and King Lettuce.

"SwdTech's speed boosts as new skills are learned" patch

- Actually, RuneLancer figured this one out, and ArmorVil made a patch. Check it out here.

Event bits listing

- I had a good list started, thanks to a program written by RuneLancer. However, Novalia Spirit has compiled a perfectly good list, with both event bits and battle event bits. Check out his site in my Links section.

A little teaser

- This was already in my hack (and may be in some form in Pandora's Box), but I could easily convert it into a standalone patch. It's so simple, but really cool. What is it? Well, figure it out yourself!

Hint: It's not the alphabetizaton of the Rage List - that was done by Assassin.


Disassembled code banks

C0 bank disassembly (updated 3/24/05)

This bank contains code to handle event code commands, among other things. Now I can claim to have "discovered" a bit of this information, but mostly I just repackaged it and made it nice and clean, and now I put it out there for all the world to see. Version 1.0, of course.

C0bank.txt

C1 bank disassembly (updated 6/30/05)

Just in case you want to see my disassembly of bank C1, with many references so you can trace backwards. This is for version 1.0 (version 1.1 is very similar to this, but shifted by varying amounts). Just so you know. This shows the exact differences.

C1bank.txt

C3 bank disassembly (updated 5/28/06)

Welcome to bank 3, home of menus... and... lots of other stuff, but generally out-of-battle, non-map related stuff. This update is at Lenophis's behest, since, as I said, this was sorely out of date. The comments are still few and far between, but a pattern of code is starting to emerge for several things.

C3bank.txt


Misc.

Event Dump

Another improvement, thanks to using some ugly hacks to ensure that it uses the right script in places where it branches into non-event-script code. Also thanks go out to Lenophis and Novalia Spirit, who contributed new commands for this edition. Unlike last time, this only includes the script itself, not the program.

EventDisasm.zip

NPC Data Text, Event Trigger Text, Chest Data Text, and Map Event Pointer Text

These first four data files are generated from the ROM, nicely and neatly. NPC Data Text updated 8/11/06. The fifth file is a work-in-progress to list the event commands.

NPCDataTxt.txt EventTriggerTxt.txt ChestDataTxt.txt MapEventPointer.txt Event Commands.txt

C1 differences between version 1.0 and 1.1

Title says it all. Check it here.

Event Dump Snippet featuring the Grand Stairway Fiasco!

See what faulty code looks like! Gaze at its incredible errorfulness! Behold, the truth about the Grand Stairway!

Lies revealed

Free space allocation by patches (updated 2/28/11)

This is just a listing for anyone interested in what free space is used by certain patches. This knowledge could be useful if using multiple patches, as you don't want to have conflicting byte-usage. Also, anyone hacking the code can use this to avoid patch conflicts.

Patch allocation


Questions? Comments? Requests? Bug reports? Contact me Imzogelmo "at" gmail "dot" com.