• Post New Message
You're browsing the GameFAQs Message Boards as a guest. Sign Up for free (or Log In if you already have an account) to be able to post messages, change how messages are displayed, and view media in posts.
  1. Boards
  2. Final Fantasy
  3. Bug Fixes and Enhancements

User Info: AstralEsper

AstralEsper
11 years ago#1
The purpose of this thread is to be a repository for every bug fix in the game and as many enhancements as can be devised. Most of the material at this point is a reposting of content from Paulygon’s Ambush, Preemptive, Battle Order, etc. thread, which came to be known as the “Bug Fix” thread, although a few other sources were used as well. First, let me clarify that I did not make the vast majority of these patches; I have merely extracted the different bug fixes and enhancement patches from the thread and tried to organize them here. Credit for each patch is indicated in italics, to the best of my knowledge. I’ve done my best to organize them in a logical and consistent fashion, but naturally, it isn’t perfect. The post in which each section can be found is indicated in [Brackets] to make navigating easier. I’ve generally copied and pasted verbatim the explanations in the original thread with a few edits, mostly for organizational purposes. Of course, if you see any mistakes or errors here, please post corrections.

The original thread can be found here:

http://www.gamefaqs.com/boards/genmessage.php?board=522595&topic=33693741

Please also note that applying these patches requires at least some knowledge of hex editing. Tutorials can be found easily enough on the web if you are unfamiliar with this and are interested in learning.

Please continue to make additions to this thread! To that end, remember to check for additional content beyond the Table of Contents! Thanks to everyone who has and will contribute to the bug fixes, enhancements, and general knowledge of Final Fantasy!

Because of posting restrictions, it will take some time to post this. Please do not post until the last page is posted.

TABLE OF CONTENTS
I. List of Bugs [2-3]
II. Bug Fixes

…A. Miscellaneous Bugs
……1. Caravan Landing Bug [4]
……2. House Bug [4]
……3. Party Order Sorting Bug [4]
……4. ToFR Exit [4-5]
…B. Character Stat Bugs
……1. Black Belt Armor Bug [5]
……2. Attack Rating Calculation Bug [5]
……3. Magic Defense Bug [5-7]
…C. General Battle Bugs
……1. Evasion Bugs [7-8]
……2. HEL2 Effectivity Bug [8]
……3. LOCK/LOK2 Bugs [8]
…D. Character Battle Bugs
……1. Weapon Data Bug [8]
……2. Running Bug [9]
……3. Mute Bug [9]
……4. Multiple Level-ups Bug [9]
…E. Enemy Battle Bugs
……1. Enemy Attack Bugs [9]
……2. Status Attack Bug [9]
……3. Target-All Caster Bug [9]
……4. Poison Bug/Regeneration Patch [10]
……5. Waking Bug [10]
……6. Enemy Suicide Bug [11]
…F. Text and Sprite Bugs
……1. Tile Message Byte Data Bug [11]
……2. Dialogue Bugs [11]
……3. Sprite Bugs [11]
……4. NPC Overlap Bug [12]
…G. Cosmetic Bugs
……1. Canoe Bug [12]
……2. Ribbon Name Bug [12]
……3. Door Bug [13]
……4. Enemy Miscoloration Bug [13]
…H. Credits Patch [13]
III. Enhancements
…A. Mechanics Enhancements
……1. Improved PRNG [14]
……2. Improved Turn Order Algorithm [15]
……3. Weapon Elemental Enhancement [15-16]
……4. Black Belt Antheosis [16]
……5. Sleep Uses Magic Defense instead of HP [17]
…B. Convenience Enhancements
……1. Respond Rate Default [17]
……2. Dash Button [17]
……3. Party Order Sorting Prevention [17]
……4. Buy 10 in Item Shops [18]
……5. Treasure Identification [18]
…C. Text and Menu Enhancements
……1. Magic Defense on Status Screen [18]
……2. Item Menu Order Adjustment [19]
……3. Potion-Stay Patch [19]
……4. DTE Table Expansion [20]
……5. Extended Item Names [21]
……6. Magic Window Expansion [21]
…D. Hacking Enhancements
……1. Armor Bitmask [22]
……2. Spiked Square Usable Battles Expansion [22]
……3. Teleport Target Increase [22-23]
……4. Map-to-Map Teleport Without Warp Back [23]
…E. Strings Patch (Text Expansion) [24-27]
……1. Basic [24-25]
……2. Battle Border/BG Stuff [25-26]
……3. Player Names to 6 Letters [26]
……4. Bridge Screen [26]
……5. Post-Patch Notes [27]

User Info: AstralEsper

AstralEsper
11 years ago#2
IV. INT Patch and Related Enhancements
…A. Intelligence Patch
……1. Description [28]
……2. Testing Data [28-29]
…B. INT Patch Enhancements
……1. Items Don’t Use INT [29]
……2. Confused Attack Effect Routine [29]
……3. Running Effect Routine [30]
……4. Healing Doubling Adjustment [30]
……5. INT Boosts Spell Charge Gain [31]
……6. INT Stat for Enemies [31]
……7. DoS INT vs. MD/4 Chart [32-33]
V. Informational Excerpts
…A. NASIR Bypass and Bridge Scene [34]
…B. Ambush, Preemptive, Battle Order, etc. [34]
…C. Items and Sprite Handler Routines
……1. Sprite Handler Routines [35-36]
……2. Key Item Bytes [36]
……3. Key Item Description Pointers [36]
……3. HEAL and PURE Effects Outside Battle [36]
……4. Items used by Drink Command [36]
…D. Confuse Information [37]
…E. Misc. Routine Offsets and Classes with Starting Magic [37]
…F. Caravan Modifications [37]
…G. Background Music Disassembly [38]
…H. Battle Menu Colorization [39]
…I. Reclaiming Tiles [40]
VI. Patch Conflicts
…A. FFH+ Conflicts [40]
…B. Inter-Patch Dependencies and Conflicts [40]
VII. Additional Content


I. LIST OF BUGS
This should be just about every bug in the game. I cannot trace back the ultimate source for all of these. Suffice it to say, I should probably thank Alex Jackson, anomie, Grond, patbuns, Paulygon, silktail, disch, and countless others I wish I could identify for the information here and throughout this thread. My apologies for the inevitable omissions. Of course, please identify any bugs you don’t see listed here.

*The Ribbon's name has an extra space
*The Airship can land on the caravan.
*There are two Canoe items. One shows up in the menu but doesn’t doing anything, and the other works, but doesn’t show up in the menu.
*House saves before restoring MP. Also needs message corrected.
*BB Armor bug, it looks at whether a weapon is equipped instead of checking armor.
*The game never actually calculates Damage Rating from STR, it just adds/subtracts weapon damage as you equip/unequip things. For the BB/MA, it does recalculated Damage based on STR when the BB/MA has a weapon equipped, but rounds *up* instead of *down* when adding STR/2 to the Weapon’s Damage.
*BB Magic Defense Growth is +4, while MA Magic Defense Growth is +1. Several other values are suspect are there is evidence that most are bugged.
*The "swap" function used when character order is rearranged after battle is passed the original slot numbers rather than the current slot numbers, causing incorrect ordering in 106 of the 256 possible combinations of statuses.
*A phantom door will appear if you exit the menu while standing in a doorway and then walk down.
*NPCs can walk through you under certain circumstances.
*The data from the last enemy domain area you were in is used when you get into a battle (on the Overworld?). NOTE: I believe this is the only bug this thread does not include a fix for.
*The Peninsula North East of Pravoka (PNEOP) is the result of overworld mapping, whereby the monsters from the zone primarily overlaying the area around Lufein overlaps on a few tiles. IThere isn’t really any fix other than remapping the terrain.

User Info: AstralEsper

AstralEsper
11 years ago#3
*Target-dark should not be applied when the target is asleep/stopped.
*Hit% should be applied even if asleep, and not clamped until after evade is subtracted.
*Weapon category/element attack values are never loaded.
*Weapon index is used for critical value.
*Enemies use their category/element as a category/element attack, and the warrior's category/element attack as the category/element to attack.
*The player class is used as the creature type when magic is cast. Fortunately, only HARM uses it and no class has bit 4 set.
*Weapon elemental attack is used as elemental weakness when magic is cast.
*Running looks in the in-battle data instead of the permanent data.
*MUTE status prevents Item and Drink as well. This is likely a bug, as preventing drink makes no real sense. Whether it should also prevent Item usage is uncertain.
*If you gain enough experience in one battle for one of your characters to gain 2 or more levels, you only gain one level at a time even if you get enough exp for 8 levels, and your "For Level Up" value is all wrong until you manage to gain levels up to your exp.
*Status attacks are attempted on misses after the first successful hit
*Enemies always wake from sleep.
*Enemy-cast all-allies spells (e.g. AFIR) don't hit the caster.
*Poison doesn't work on enemies.
*In the 2-large-6-small enemy formation the third enemy type will use the palette set for the second enemy type rather than the palette set for itself.
*If an enemy kills itself (because it was Confused), the battle won't actually end until either one of your warriors tries to attack or cast magic on an enemy or the round of battle ends
*INT is never used.
*HEL2 effectivity should be 0x18.
*LOK2 should use effect 0E instead of 10.
*LOCK (and fixed LOK2) always misses.
*TMPR should probably be using effect 0B instead of 0D.
*For warrior targets, Damage and Hit% are never loaded/saved for use by magic. Thus, TMPR and SABR are bugged.
*Absorb for enemy targets is loaded from ROM instead of RAM for magic, making FOG not work.
*For enemy targets, Hit% is never loaded/saved for use by magic.
*Enemy elemental resistance is not stored in the in-RAM data, so spells like AFIR and XFER don't work.
*Several caster bytes are loaded for magic, with wrong values. But none are actually used.
*Spells causing multiple status ailments will claim "Ineffective" if the target has any of the ailments (all will still be applied though).
*There is an invisible lady in Coneria Castle. Her sprite is set to be visible inside rooms, when it should be set to visible outside rooms.
*There is a Bat in the Waterfall that starts on a wall, leading it move into the wall area half of the time.
*There is a Fairy sprite in the black area of the Ice Cave (though this is not noticeable during normal gameplay).
*The old man next to the submarine in Onrac uses “Wind Orb Lit” as a condition for changing dialogue when it should probably be “Water Orb Lit”
*The Sage at 3:00 in the Circle of Sages in Crescent Lake is supposed to use Text 9D, but lacks a condition. This should probably be “All Orbs Lit”
*The routine that looks at the tile data and determines whether to use the second byte as a message index or not says "not" for far too many values. The effect is that you can talk to the Earth and Water Altars, but not the Fire and Wind.
*The Gaia Spring Tile is unused.
*There is an unused Warp Tile in the ToFR Tileset that looks like the Time Warp in the ToF Tileset. Its absence may or may not be a bug.

This works out to somewhere around ~47, more or less, depending on how you interpret some of these. That's a lot of bugs!

User Info: AstralEsper

AstralEsper
11 years ago#4
II. BUG FIXES

A. MISCELLANEOUS BUGS

1. Caravan Landing Bug

Developed by anomie

The Airship can land on the Caravan square in the desert. This patch fixes that:

0x00007C: 8e


2. House Bug
Developed separately by anomie and Paulygon

I decided to look into the house bug, and it was surprisingly easy to find. I searched for code that set HP to Max HP, and code playing with magic charges. The latter was the key, there was only one routine and it was called from only two places. I dummied the most likely one, and sure enough inns kept working but houses broke. Then it was just a matter of moving the magic restore to before the prompt:

03b2db: 20 f3 ab a9 1e 20 e0 b2 ea ea

As a side effect, if you don't save it still restores your magic. Bonus. Of course, we don't want the prompt to lie about what's happening, so:

038826: 20 3b 42 a4 aa ac a6 ff 23 a6 b2 32 23 a7 c0 05
038836: 9c 8a 9f 8e c5 ff ff ff ff ff ff ff


3. Party Order Sorting Bug
Developed by anomie

The background: after a battle, the game re-sorts your warriors based on their status ailments. It does this by "tagging" each warrior with a number made up of the warrior's current slot (0-3) plus a number based on the status (dead=64, stone=32, poison=16, normal=0). Then it performs a simple bubble sort. It's supposed to end up with the afflicted warriors moved to the end, but otherwise maintain the original order. But in 106 of the 256 possible combinations of statuses, it gets the order screwed up.

The cause of the bug is that the "swap" function is passed the original slot numbers rather than the current slot numbers. So for example, if the numbers start out as "00 41 12 03" (i.e. second warrior dead, third poisoned), the bubble sort will proceed as follows:

00 41 12 03 ; Compare 00 and 41: no swap
00 41 12 03 ; Compare 41 and 12: Swap slots 1 and 2
00 12 41 03 ; Compare 41 and 03: Swap slots 1 and 3 (instead of 2 and 3)
00 03 41 12 ; Compare 00 and 03: no swap
00 03 41 12 ; Compare 03 and 41: no swap
00 03 41 12 ; Compare 41 and 12: Swap slots 1 and 2 (instead of 2 and 3)
00 41 03 12 ; Compare 00 and 41: no swap
00 41 03 12 ; Compare 41 and 03: Swap slots 1 and 3 (instead of 1 and 2)
00 12 03 41 ; Compare 03 and 41: no swap
00 12 03 41 ; Compare 00 and 12: no swap
00 12 03 41 ; Compare 12 and 03: Swap slots 2 and 3 (instead of 1 and 2)
00 12 41 03 ; Compare 41 and 03: Swap slots 1 and 3 (instead of 2 and 3)
00 03 41 12 ; Final order: your poisoned guy is after your dead guy


The patch is pretty simple:
032cd3: 84 88 c8 84 89 d0 07 ea ea ea ea ea ea
032ce0: ea


4. Temple of Fiends Revisited Exit
Developed by AstralEsper

There is an unused Warp Tile in the Temple of Fiends Revisited Tileset that looks identical to the Time Warp Tile in the Temple of Fiends (Present). It seems likely that this may have been created to serve as the other end of the Time Gate in the TOFR, which makes sense conceptually and in terms of gameplay (this lets melee parties leave the TOFR – albeit only after trudging all the way back to the beginning). It’s uncertain whether the designers accidentally forget to put it in or changed their minds and deliberately left it out/removed it (or, perhaps, programmed with no particular intention at all). Because of the uncertainty surrounding this, I wasn’t sure whether I should have put this in the “Bugs” section or “Enhancements” section, but even though it isn’t clearly a bug, the pre-coded nature of the tile makes it seem a little bit more like a bug than an enhancement to me, and if nothing else, a curiosity worth mentioning.

User Info: AstralEsper

AstralEsper
11 years ago#5
Unfortunately, I’m not good enough with hex editing to manually construct a patch that is short and simple enough to merit posting (adding in this tile phase-shifts a LOT of code), but this tile can easily be placed in the TOFR 1F using FFHackster (it’s the fifth tile down from the top to the far left on the tileset visual). If you’re at all interested in utilizing this tile, I would recommend placing it on the same spot your characters enter the TOFR, in the middle of the four statues.


B. CHARACTER STAT BUGS
1. Black Belt Armor Bug

Developed by Alex Jackson, anomie, and Paulygon
NOTE: This patch is incompatible with the BB Antheosis Patch, which obsoletes it


Upon level-up, the game looks at whether a Black Belt has a Weapon is equipped in order to determine if a Black Belt’s Armor Rating or Level should be used in calculating Absorb instead of checking whether Armor is equipped. So, if a Black Belt is not using a Weapon, Absorb will be set to Level after level-up, which at many levels can be very dangerous. While it can be remedied by going to the equip screen, this patch fixes it:

Offset 0002D9F6 : AA

Offset 0002DA11 : BA

Offset 0002DB03 : AA

Offset 0002DB22 : AA

Offset 0002DE37 : A5

Offset 0002DE51 : 9B

Offset 0002DE58 : A8

Offset 0002DE71 : 9B

0002D976: A0 00 B1 86 C9 02 F0 04 C9 08
0002D980: D0 27 A0 26 B1 86 AA E8 A0 18 B1 86 30 0B C8 C0
0002D990: 1C 90 F7 8A 0A A0 20 91 86 A0 1C B1 86 30 0A C8
0002D9A0: C0 20 90 F7 A0 22 8A 91 86 60 EA A0 00 B1 80 38
0002D9B0: E9 01 91 80 60 40 42 0F E8 03 18 69 00 85 96 A9
0002D9C0: 00 69 93 85 97 A9 0C 4C 09 F2 A9 00 8D B7 68 8D
0002D9D0: B8 68 A9 50 85 4B 8D A7 6B A4 FA


2. Attack Rating Calculation Bug
Developed by anomie
NOTE: This patch is incompatible with the BB Antheosis Patch, which obsoletes it


When leveling up (for all warriors), the game increments Damage by 1 if STR just went up and now is an even number. For all except BB/Ma, it never actually calculates Damage from STR; it just adds/subtracts the weapon damage as you equip and unequip things. Which explains why the BM has a mysterious extra point of damage that it doesn't seem like he should have: his STR starts out as 1, but his Damage also starts at 1 instead of 0 like it should. For the BB/Ma, however, it does recalculate the Damage based on STR every time the weapon screen is exited and the BB/Ma has a weapon equipped. But it effectively rounds *up* instead of *down* when adding STR/2 to the weapon's Damage.

This fixes it:

03eefe: bd 20
03ef00: 61 f0 0c bd 10 61 4a 18 7d 20 61 9d 20 61 60 bd
03ef10: 26 61 18 69 01 0a d0 f3 60

Of course, either of the BB Antheosis patches obsolete this one, as they change the weapon damage calculation anyway.


3. Magic Defense Bug
Offsets provided by anomie, explanation, analysis and proposed solution by AstralEsper

This bug is somewhat problematic, because, like the INT Bug (INT is never used – described further below), it’s clear that something is wrong, but it’s not necessarily all that clear in terms of how it was meant to be. The following is an attempt to analyze the situation and develop a reasonable solution that is minimally arbitrary.

The following are the Initial Magic Defense values and Magic Defense Growth rates for each class (before and after Class Change):

CLASS____Initial___Pre-CC___Post-CC
Fighter_____15_______3________3
Thief.______15_______2________2
B. Belt._____10_______4________1
Mages_____ 20_______2________2

User Info: AstralEsper

AstralEsper
11 years ago#6
The first thing that jumps out is the differential in Magic Defense Growth rates between the Black Belt (4) and Master (1). It’s hard to conceive that the designers purposely intended for class change to be a downgrade for Black Belts, and it’s pretty clear that this is a bug. What isn’t clear, however, is whether the Black Belt was supposed to have a growth rate of 1, the Master was supposed to have a growth rate of 4, or both.

A closer look at the figures also reveals the curious trend that, with the exception of the Thief, magic defense growth rates are not only counter-intuitive, but inversely correlated with Initial Magic Defense in each class. This is highly suspicious and strong evidence that something about these rates are also bugged. The mere fact that they’re discordant is strange enough, but when you also consider that the initial Mage lead in magic defense is reversed by level 7, at which point the only magic using enemy most parties would have encountered are OddEyes, and the fact that it’s a hidden stat in the first place so the player is never really aware of these values, it really undermines any notion that such a small initial lead was meant to have an invisible and rapid reversal.

Still, that doesn’t tell us which value we should use as a target to match the other – merely that they were probably meant to line up. Common sense might tell us that mages were meant to have higher values, but there’s also evidence elsewhere in the game. The average magic defense value for enemies that don’t use any sort of magic is ~88, while the average magic defense value of enemies that can use some form of magic is ~137. Now, obviously there will be some exceptions to the rule (e.g., T Rexes don’t use any magic and have 200 magic defense, while Mancats do and have 62 magic defense), and stronger enemies in general are likely to have higher magic defense values, but these average values illustrate a clear correlation of magic use with above average magic defense and lack thereof with below average magic defense. Initial PC magic defense values reflect the same correlation. Thus, there is more evidence to point to the Magic Defense Growth Rates, rather than Initial Values, as the locus of the error.

Finally, the vast majority (86%) of attack magic in FF is target-all by nature (rather than multi-targetable as in later FF games), and characters can’t avoid target-all spells in the back row. It would have made sense for the designers to give mages higher levels of magic defense to compensate for their lower HP totals so that they could more easily survive unavoidable spells. By contrast, melee classes take less damage from physical attacks and have more HP to absorb damage in general, and so can more easily afford lower magic defense.

Without necessarily getting into further balancing adjustments, one very viable solution is to invert magic defense growth rates on a scale of 1 to 4. That is, 1 becomes 4, 2 becomes 3, 3 becomes 2, and 4 becomes 1. If this is done for every class but the Thief, this gives the result of:

CLASS____Initial___Pre-CC___Post-CC
Fighter_____15_______2________2
Thief.______15_______2________2
B. Belt._____10_______1________4
Mages_____20_______3________3

User Info: AstralEsper

AstralEsper
11 years ago#7
This presents us with a rather nice paradigm whereby initial magic defense values can be consistently correlated with growth rates. For every increment of 5 in initial magic defense, growth rate increases by 1. So we have the Black Belt at a base value of 10 with a growth rate of 1, the Fighter and Thief with a value of 15 (+5) and a growth rate of 2 (+1), and the three Mages with a value of 20 (+10) and a growth rate of 3 (+2). This also creates a paradigm whereby degree of magic use is correlated with Magic Defense (None = 10/1, Post-CC = 15/2, Pre-CC = 20/3). The only inconsistent variable here is the Master’s growth rate of +4. However, even though it violates the pattern, it is useful in terms of provided a tangible upgrade from Black Belt to Master (without this, there is no difference, and using the original values, there was a downgrade) and is in any case merely an extrapolation from the original values of 1 and 4; it just makes the order more appropriate.

However, since this patch merely involves changing variables rather than formulas (which are much more complex), individually customizable solutions are easy to implement.

The magic defense gain values are at 0x02ddf8-0x02de03. They're in the order of FI > TH > BB > RM > WM > BM > KN > NI > MA > RW > WW > BW. By default, the code should read:

0x02ddf8: 03 02 04 02 02 02 03 02
0x02de00: 01 02 02 02

Which corresponds to:
0x02ddf8: FI TH BB RM WM BM KN NI
0x02de00: MA RW WW BW

The Inversion solution I’ve proposed above is:
0x02ddf8: 02 02 01 03 03 03 02 02
0x02de00: 04 03 03 03

Just switching the BB/MA values is:
0x02ddfa: 01
0x02de00: 04


C. GENERAL BATTLE BUGS

1. Evasion Bugs

Developed by anomie
NOTE: This patch is shifted by the Weapon Elemental Enhancement Patch. If you want to use both, do NOT use this patch; use the one in Section III (A)(3).


1. If the attacker's hit% is greater than the target's evade%, there is a greater chance of missing when the target is asleep/stopped!

2. Hit% over 88 doesn't give any better chance to hit, so Chaos's 200 does no better than GrNAGA's 88. This is also what makes 3 RUSEs so powerful, it reduces any enemy's chances to just under 1%. If we would fix this, Chaos would get a 56.7% chance to hit after maximum RUSEing. That sort of thing could really increase the difficulty of some of these solos.

The patch changes the code from something like:

if(asleep or stopped){
dmg += dmg/4;
} else {
hit_chance += hit_percent; // addition routine clamps to 0xffff
if(hit_chance>255) hit_chance = 255;
hit_chance -= evade; // subtraction routine clamps to 0
if(hit_chance<0) hit_chance = 0;
}

to

hit_chance += hit_percent; // addition routine clamps to 0xffff
if(asleep or stopped){
dmg += dmg/4;
} else {
hit_chance -= evade; // subtraction routine clamps to 0
}
if(hit_chance>255) hit_chance = 255;


I was thinking about the evade bugs this morning, and had a thought: Is it a bug that target-dark makes an asleep/stopped target easier to hit? It increases the chance from ~84% (or better if the Hit% bug on stop/sleep is fixed) to the max ~99.5%.

And it also seems to be a bug that hit chance is clamped to 255 after adding dark and weapon bonuses, but it never shows up because even with both bonuses the total is only 248 at that point. But if FFHplus gets the ability to edit the dark and weapon bonuses...

User Info: AstralEsper

AstralEsper
11 years ago#8
Ok, I think this'll do it. The patch is 80 bytes larger because there is more bloated code to eat, we now have 47-50 NOPs.
Editor’s Note: I posted the shifted version necessary to accommodate the Weapon Elemental Enhancement in Section III(A)(3). That patch relies on this one, but just using this one doesn’t mean you have to use the Weapon Elemental Enhancement. You could shift the code starting at 0x032701 26 bytes backwards to 0x0326e7 if you wanted, though it would change the target dark bonus and sleep/stop damage bonus by 26 bytes.

000326c0: ad 6d 68 2d 76 68 d0 08 ad 6e 68 2d 77 68 f0 14
000326d0: a9 00 a2 28 20 dd ae ad 58 68 18 69 04 90 02 a9
000326e0: ff 8d 58 68 4c f1 a6 ea ea ea ea ea ea ea ea ea
000326f0: ea ea ea ea ea ea ea ea ea ea ea ea ea ea ea ea
00032700: ea a9 00 ae 6f 68 20 dd ae ad 89 68 29 30 f0 13
00032710: ad 58 68 4a 4a 18 6d 58 68 90 02 a9 ff 8d 58 68
00032720: 4c 27 a7 ae 78 68 20 0a af ad 89 68 29 08 f0 07
00032730: a9 00 a2 28 20 dd ae ac 56 68 ae 57 68 20 aa a4
00032740: 8c 56 68 8e 57 68 4c 4b a7 ea ea ea ea ea ea ea
00032750: ea ea ea ea ea ea ea ea ea ea ea

There shouldn't be any stupid wrong-byte bugs this time, I wrote a quick program to compile the bytes and test if it matches the mnemonics (it was easier than trying to compile the mnemonics and match the bytes). So if there are any bugs, they should be actual bugs!

0x326a0: base chance
0x326bc: attacker dark penalty

0x326cc: target dark bonus pre-patch
0x326ed: category/element hit% bonus pre-patch
0x32705: category/element damage bonus pre-patch
0x32717-c sleep/stop damage bonus pre-patch

0x326d3: category/element hit% bonus post-patch
0x326dc: category/element damage bonus post-patch
0x32733: target dark bonus post-patch
0x32710-5: sleep/stop damage bonus post-patch

You could also change the sleep/stop damage bonus by changing the code at 0x32717-c pre-patch or 0x32710-5 post-patch. Obvious possibilities would be to make it a constant increase or change the multiplier to x8 (heh), x4, x2, x3/2, x9/8, or x1 (x9/8 could get +1 because we'd lose the CLC).


2. HEL2 Effectivity Bug
Developed by anomie

HEL2 functions as HEL3 in battle. This is because its Effectivity is set to 48, when it should really be set to 24. This patch fixes that:

0x30309: 18


3. LOCK/LOK2 Bugs

LOCK is bugged to always miss. It can be fixed by the following changes:

0x33a5e: f0 17 ea

LOK2 uses the incorrect effect routine, and raises the enemies’ evasion. It can be fixed by giving it the correct spell effect in Hackster. Alternatively, you can manually change the relevant byte:

0x302AC: 0e


D. CHARACTER BATTLE BUGS

1. Weapon Data Bug

Developed by anomie and Paulygon, with info/disassembly from Alex Jackson
NOTE: I had to reverse-engineer this from a patch file; I don’t believe it was posted in the old thread. Hopefully I got it correct.


*Weapon category/element attack values are never loaded.
*Weapon index is used for critical value.

This patch fixes both problems.

0x031332: f2

0x032CF1: b1 82 48 c8 b1 82 48 8a a8 68 91 80 88 68 91
0x032D00: 80 60 a9 00 20 06 ad a9 01 20 06 ad a9 02 20 06
0x032D10: ad a9 03 4c 06 ad 8d b3 68 20 45 a1 a0 00 b1 82
0x032D20: a8 b9 3c a0 ac b3 68 99 a8 6b ad b3 68 a0 00 91
0x032D30: 80 a2 02 20 e1 ac a0 0a a2 04 20 e1 ac a0 21 a2
0x032D40: 06 20 e1 ac a0 25 a2 07 20 e1 ac a0 23 a2 08 20
0x032D50: e1 ac a0 22 a2 09 20 e1 ac a0 20 a2 0a 20 e1 ac
0x032D60: a0 24 a2 0b 20 e1 ac a9 01 a0 0b 91 80 a0 21 b1
0x032D70: 82 4a 4a 4a 4a 4a 18 69 01 a0 0c 91 80 a9 00 a0
0x032D80: 0d 91 80 c8 91 80 c8 91 80 a0 18 b1 82 30 07 c8
0x032D90: c0 1c d0 f7 a9 00 29 7f f0 2d e9 00 20 05 ac 85
0x032DA0: 88 86 89 a0 02 b1 88 a0 0f 91 80 a0 05 b1 88 a0
0x032DB0: 0d 91 80 a0 04 b1 88 a0 0e 91 80

User Info: AstralEsper

AstralEsper
11 years ago#9
2. Running Bug
Developed by Alex Jackson
NOTE: I had to reverse-engineer this from a patch file; I don’t believe it was posted in the old thread. Hopefully I got it correct.


Running looks in the in-battle data instead of the permanent data. This patch fixes it:

0x0323FF: 82


3. Mute Bug
Developed by anomie

MUTE probably shouldn't prevent your warriors from drinking potions (unless MUTE works by removing your mouth?) or waving around items.

032395: 4c ba b3

0323a3: 4c b5 b3

0323c5: 4c bf b3

0333c5: 48 a9 02 d0 08 48 a9 01 d0 03 48
0333d0: a9 00 8d 8f 6c 68 8d 8c 6c 98 29 03 09 80 48 8d
0333e0: 89 6c 8d d1 6b 8e 8a 6c a9 00 8d a7 6d 20 0c b0
0333f0: 20 5e b0 20 74 b0 68 20 eb b5 ad 8f 6c c9 00 d0
033400: 0d a0 01 b1 92 29 40 f0 05 a9 03 4c 8e b2 a9 00
033410: 8d 94 6d 20 5c b3 20 0c b4 4c 0e b5 20 84 b6 a0
033420: 03 b1 98 4a 90 03 4c 95 b4 4a 90 03 4c 80 b4 4a
033430: b0 05 4a 90 12 b0 21 20 3d b5 20 b4 b0 4c ad b5

Actually, the patch is a little more flexible than just that. By setting 0x333fe and 0x333ff to appropriate values, you can choose from any of these possibilities:
00 d0 = MUTE only prevents Magic
01 d0 = MUTE only prevents Drink
02 d0 = MUTE only prevents Item
00 f0 = MUTE prevents Drink & Item
01 f0 = MUTE prevents Magic & Item
02 f0 = MUTE prevents Magic & Drink

I can see a case for preventing Item as well as Magic (are any words required to invoke the item's effect, or is just waving it around sufficient?), but preventing Drink really just seems odd.


4. Multiple Level-ups Bug
Developed by anomie

If you gain enough experience in one battle for one of your characters to gain 2 or more levels, you only gain one level at a time even if you get enough exp for 8 levels, and your "For Level Up" value is all wrong until you manage to gain levels up to your exp.

02dd82: a9 33 8d a7 6a a0 00 8c a6 6a b9 ac 6a f0
02dd90: 30 a9 38 8d fd 6a a9 0f 8d fa 6a 8d fc 6a ad a7
02dda0: 6a 8d fb 6a a9 00 8d fe 6a a9 0b 85 57 a9 04 a2
02ddb0: fa a0 6a 20 18 f2 20 66 9f 20 78 9f a9 01 20 0f
02ddc0: f2 ee a7 6a ac a6 6a c8 c0 05 d0 bd 20 57 9f 20
02ddd0: f3 9b 4c e8 9b


E. ENEMY BATTLE BUGS

1. Enemy Attack Bugs

Developed by Paulygon with info/disassembly and suggested fixes from Alex Jackson
NOTE: I had to reverse-engineer this from a patch file; I don’t believe it was posted in the old thread. Hopefully I got it correct.


*Enemies use their category/element as a category/element attack, and the warrior's category/element attack as the category/element to attack.

*Weapon elemental attack is used as elemental weakness when magic is cast.

*The player class is used as the creature type when magic is cast. Fortunately, only HARM uses it and no class has bit 4 set.

This patch fixes these:

0x325C0: a9 00 8d 6d 68 a0 0e

0x325F8: a9 00 8d 76 68 a0 0e a9 00

0x33628: a9 00

0x33665: a9 00


2. Status Attack Bug
Developed by anomie
NOTE: This is a correction to the solution posted on 3/22/2007, which was bugged


Status effects on attacks, should only have a chance of working for successful hits in an attack. But apparently they also get chances on the unsuccessful hits after the first success.

Easy enough to fix, though. This should do it:

032821: 90 df

It just makes missing "normally" do the exact same thing as rolling unlucky 200.


3. Target-All Caster Bug
Developed by anomie

Enemy-cast target all-allies spells (e.g. AFIR) don't hit the caster. Replace the two bytes at 0x3357e-f with 0xea. Or maybe just 0x3357f with 0.

0x3357e: ea ea

User Info: AstralEsper

AstralEsper
11 years ago#10
4. Poison(/Regeneration) Bug (Patch)
Developed by anomie

I found a bug in my old patch for fixing enemy poison: regenerative enemies were looking at the wrong bytes for MaxHP, which could result in either regenerating far above their actual max or being clipped down to something lower.

So here is a new patch:
0321e7: 20 32 a2

032242: a9 00 20 c3 a2 a9 01 20 c3 a2 a9 02 20 c3
032250: a2 a9 03 20 c3 a2 20 50 aa a9 08 8d 8a 6c ad 8a
032260: 6c 20 be b4 a0 14 b1 90 99 56 68 b1 92 99 6a 68
032270: 88 10 f3 ad 5c 68 29 04 f0 15 a9 01 a2 02 20 0a
032280: af 20 3c af ea d0 08 a9 01 8d 5c 68 20 48 bb ad
032290: 7a 68 10 14 a9 01 a2 03 20 dd ae ea a2 0c a0 01
0322a0: 20 ea ad 90 03 20 50 af a0 06 b9 56 68 91 90 88
0322b0: 10 f8 ce 8a 6c 10 a7 4c 0d a2 ea ea ae 6e 68 ac
0322c0: 6f 68 20 1b aa 0d 8d 68 d0 03 ee 8c 68 a9 01 aa
0322d0: a0 1b 60

0322e0: bd 01 61 29 04 f0 49 bd 0a 61 8d 58 68 bd 0b 61
0322f0: 8d 59 68 bd 0c 61 8d 6e 68 bd 0d 61 8d 6f 68 a9
032300: 01 a2 02 20 0a af 20 3c af ea d0 15 ae ad 6b a9
032310: 01 9d 01 61 ad 5a 68 29 03 0a 0a a8 a9 00 99 8f
032320: 68 ae ad 6b ad 58 68 9d 0a 61 ad 59 68 9d 0b 61
032330: 60 ea ea ea ea ea ea ea ea ea ea ea ea

032a2b: 8d 8b 68 8e 8c
032a30: 68 8c 8d 68 20 2b ae ad 8c 68 ae 8b 68

032e44: 2e 8c 68 2e 8d 68

032e50: cd 8b 68 90 06 ed 8b 68 8d b3 68 2e 8c 68 2e 8d
032e60: 68

032e67: 8d 8b 68

As a bonus, if you want poison/regen to do a fraction of the MaxHP then you can replace the bold sections with these: (the bold 0a is the divisor, giving MaxHP/10 here)

; (Enemy Poison)
03227a: a9 0a 20 ac a2 20 ac ae 1d 56 68

; (Enemy Regeneration)
032294: a9 0a 20 ac a2 20 7b ae

; (Player Poison)
0322ff: a9 0a 20 ac a2 20 ac ae 1d 56 68

Also, if you would rather do a fraction of the current HP instead of MaxHP, change 0322bd and 0322c0 from 6e and 6f to 58 and 59 respectively.

(in fact, everything after 0322b9 is unnecessary unless you want to use fractional rather than constant damage).


5. Waking Bug
Developed by anomie, Reposted by Paulygon, Modification Explanation by AstralEsper

Whether a player character wakes from sleep is determined by selecting a random number from 0…80. If that number is less than Max HP, then the character wakes up. Enemies should do the same, but are bugged to always wake. This patch fixes that:

000331B4: A0 00 B1 9A 85 9C C8 B1 9A 85 9D A9
000331C0: 02 8D A7 6D 20 0C B0 A9 00 8D 8F 6C A0 06 B1 9A
000331D0: 29 30 F0 48 20 5E B0 29 20 D0 14 20 27 F2 C9 19
000331E0: B0 09 A9 EF 20 90 B1 A9 10 D0 2E A9 01 D0 2A A0
000331F0: 04 B1 9C 8D 56 68 C8 B1 9C 8D 57 68 A9 00 A2 50
00033200: 20 5D AE AA A9 00 20 0A AF 20 3C AF F0 09 A9 DF
00033210: 20 90 B1 A9 0F D0 02 A9 02 4C 8E B2 A0 06 B1 9A
00033220: 10 24 20 27 F2 C9 40 B0 0C A9 7F 20 90 B1 20 5E
00033230: B0 A9 0D D0 E4 20 5E B0 A9 04 8D 8C 6C 20 5C B3
00033240: 20 4D B5 4C 22 B0

Of course, this means that any enemy with over 80HP will always wake. The waking threshold (upper range of the random number selected) can be adjusted by changing the number at 0x0331FF.

0x0331FF: Waking Threshold Post-Patch
0x03322E: Spell used by Confused Enemies Pre-Patch
0x033239: Spell used by Confused Enemies Post-Patch
  1. Boards
  2. Final Fantasy
  3. Bug Fixes and Enhancements
  • Post New Message

GameFAQs Answers