X-Zone -> Runic Softlock Fix - Printable Version +- FF6 Hacking (https://www.ff6hacking.com/forums) +-- Forum: Discussion Forums (https://www.ff6hacking.com/forums/forum-5.html) +--- Forum: Magitek Research Facility (https://www.ff6hacking.com/forums/forum-9.html) +--- Thread: X-Zone -> Runic Softlock Fix (/thread-4283.html) |
X-Zone -> Runic Softlock Fix - C-Dude - 03-16-2023 There are a pair of Vanilla bugs that have been afflicting the Beyond Chaos Randomizer. I was asked to investigate them both. The first is the X-Zone -> Life 3 bug, which has previously been addressed by other patches and also can be dodged with a careful animation tweak. The second is more insidious, and I have dubbed it the "X-Zone -> Runic Softlock". The second bug is Vanilla-in-Principle, because only one enemy is ever in possession of Runic (Airforce's Bit) and without serious arbitrary code execution shenanigans there is no possible way to subject that enemy to an X-Zone cast. This is the bug: (1) X-Zone hides any monster it successfully strikes, regardless of if it actually KILLS the monster. (2) A runic or enemy auto-runic monster will be struck by X-Zone, but not killed. (3) Once hidden, an enemy cannot be selected by the player's cursor, thereby preventing completion of battle under normal circumstances. It's not possible to address this problem directly in the Runic function, because the animation plays out AFTER all of Runic's calculations are complete. Instead, I've solved the problem by setting a previously unused spell property bit ($11A7 bit #$04) aside as a "Don't hide character/monster" bit. This could then be referenced during the animation command to bypass the monster erasure. When applied, a Runicking monster will appear to be caught in the X-Zone portal, but will immediately reappear once the spell is complete. Regular monsters killed by X-Zone will continue to stay vanished in the portal when they are struck. Note that if you use this fix, you may also set the $11A7 bit #$04 manually (the ? bit in USME immediately beneath the Monster Text bit in spell data), to reuse animations for spells that should not otherwise hide their targets (such as, say, Smoke Bomb for a non-escape style spell). The code is presented here as annotated RAW hex, because I don't feel like converting it to assembly. It currently uses the very last 43 bytes of the freespace in the $C4 bank. Code: ------------------------------------ RE: X-Zone -> Runic Softlock Fix - madsiur - 03-18-2023 Nice work C-Dude! |