============= Run Button ============= This patch is for the US version of Illusion of Gaia, unheadered. It works by changing an input which apparently toggles run mode. This button originally only checked for an attack input, but it now checks for the (formerly) unused button slot in the control type. This patch is provided as-is and without guarantees. I am not responsible for any damage caused by applying the patch to the wrong file. If you haven't used a patcher before, I recommend 'soft-patching' instead with a compatible emulator like SNES-9X. To soft patch, simply place the patch in the same folder as your game and give it the same name. Version 1 had a bug that allowed the player to run up hills with the sprint button. Version 2 fixed this bug but made the sprint button awkward to use. Version 3 also fixes this bug, but restores the smooth sprinting of Version 1. This patch uses 20 bytes ($14) of freespace at $82FC08 Below, the workings of the patch are explained in detail. ----- Input ----- org $82C5FF Vanilla: 02 40 00 80 14 C6 [If attack is pressed, branch]... IE COP #$40, dw $8000, dw $C614 [This is Illusion of Gaia's button branch instruction] [COP #$40 tells it to check if the button is pressed.] [This particular button prompt puts the character into a running state if it succeeds] [The data value $8000 is the SNES controller button mask.] [Adding $0001 to it would require the button be held since the previous frame.] [The Type 2 controller bitmask is the SNES default BYSTUDLRAXLR0000.] [Type 1 controls rotate the right-side buttons BYAX, so A becomes B, B becomes Y, Y becomes X, and X becomes A] [Note that Illusion of Gaia zeroes out any X button input. To use X, this button must first be reenabled...] [by changing both $8BE6A9 and $8BE6B6 to NOP #3, EA EA EA.] [The last data value, $C614, tells the game where in the bank to go...] [...provided the check succeeded. This value should remain intact] [unless you really know what you're doing.] Altered: 02 40 C0 80 08 FC [Checks for A, B, and Y. The result is that Y starts a run for Type 1 controls and A starts one for Type 2 controls] IE COP $40, dw $80C0, dw $FC08 [Checks if A, B, Y, or Attack are pressed and goes to freespace.] [Picked a freespace location that is not used by ability shuffle or Bagu's randomizer as of 1/22/2023] org $82FC08 Freespace: 02 40 00 80 14 C6 [If attack is pressed, jump to set run mode] AD AE 09 [Load Will's action flags] 89 00 10 [Is Will currently running (Action bit #$1000)?] D0 03 [Branch past the next command if so] 4C 14 C6 [Make Will start running] 4C 05 C6 [Do not allow him to run again while he's still running, to preserve hill behavior] IE COP #$40, dw $8000, dw $C614 LDA $09AE BIT #$1000 BNE $03 JMP $C614 JMP $C605 ----- Label ----- Change Settings Label: org $8BF5A4 Vanilla: 4D 8E A4 AC A5 A3 84 83 ["Not used"] [This is simply encoding data to draw the text string] Altered : 63 A0 A2 88 8D A4 AC AC ["Sprint"] New Game Label: org $0BF61C Vanilla: 4D 8E A4 AC A5 A3 84 83 ["Not used"] Altered: 63 A0 A2 88 8D A4 AC AC ["Sprint"] ----- Special thanks to Raeven0 for all of the information about Illusion of Gaia's processes.