0% found this document useful (0 votes)
36 views7 pages

94A82AAA Patch

This document contains a series of code patches for modifying the gameplay and functionality of an unidentified game. There are patches related to enabling features, fixing issues, and improving controller support. The patches modify values, addresses, and instructions in the game code.

Uploaded by

ahmadhafihafizy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views7 pages

94A82AAA Patch

This document contains a series of code patches for modifying the gameplay and functionality of an unidentified game. There are patches related to enabling features, fixing issues, and improving controller support. The patches modify values, addresses, and instructions in the game code.

Uploaded by

ahmadhafihafizy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 7

//Enable Code

patch=1,EE,F0511884,extended,00511887

//16:9 by CeruleansBlue
patch=0,EE,007cad1c,word,3fe38e38

//partial HUD fix


patch=0,EE,00106e30,word,3c043f40
patch=0,EE,00106e38,word,00701821
patch=0,EE,00106e3c,word,24632bac
patch=0,EE,00106e44,word,00000000
patch=0,EE,00106e48,word,24630004
patch=0,EE,00106e4c,word,3c043f80

//persona art fix


patch=1,EE,00114a1c,word,3c033ec0
patch=1,EE,00114a2c,word,3c023f90

//FMV's fix by nemesis2000


patch=1,EE,0010afd0,word,1462000a
patch=1,EE,0010afd8,word,3c02c294
patch=1,EE,0010afdc,word,10000008
patch=1,EE,0010afec,word,00000000
patch=1,EE,0010affc,word,3c02c1a8
patch=1,EE,0010b010,word,00000000

//Font fix by nemesis2000 (causes spacing errors)


patch=0,EE,003b14a4,word,00118903
patch=0,EE,003b14a8,word,02338818
patch=0,EE,003b14b0,word,8E93001c
patch=0,EE,003b1558,word,82970003
patch=0,EE,003b16a4,word,24130015

patch=0,EE,003b392c,word,2415000c
patch=0,EE,003b3944,word,3c0241a8
patch=0,EE,003b3970,word,01154018
patch=0,EE,003b3974,word,00084103
patch=0,EE,003b3978,word,0100a82d

//480p by asmodean
patch=0,EE,0019d320,word,3c040010
patch=0,EE,0019d324,word,348426dc
patch=0,EE,0019d328,word,8c820000
patch=0,EE,0019d32c,word,38420001
patch=0,EE,0019d330,word,ac820000
patch=0,EE,0019d334,word,000217fc
patch=0,EE,0019d338,word,000217ff
patch=0,EE,0019d33c,word,0000000f
patch=0,EE,0019d340,word,42000038
patch=0,EE,0019d344,word,03e00008
patch=0,EE,0019d348,word,00000000
patch=0,EE,0019d34c,word,00000001

patch=0,EE,004f8edc,word,24110000
patch=0,EE,004f8ee0,word,24120050
patch=0,EE,004f8ee4,word,24020001
patch=0,EE,004f8ee8,word,10820031
patch=0,EE,004f8eec,word,24130001
// Controllable party members (by TGE)
patch=1,EE,0020207C,word,00000000 // load proper unit id for battle menu skill list
(original instruction hex 14400006 / bnez v0,0x00202098)
patch=1,EE,0020208C,word,8F84B6FC
patch=1,EE,00202090,word,8C840254 //Load skill list
patch=1,EE,00202094,word,8C840030 //Load skill list
patch=1,EE,00202098,word,8C8400A4 //Load skill list

//Fusion Skill Fix


//This block is long because the code has been shifted. Further line one is a MIPS
characteristic hack where the first line of a branch executes
patch=1,EE,0020203C,word,14400005
patch=1,EE,00202040,word,8E340254
patch=1,EE,00202054,word,8E330148
patch=1,EE,0020207C,word,3C040068
patch=1,EE,00202080,word,24844F48
patch=1,EE,00202084,word,8F84B6FC
patch=1,EE,00202088,word,8C840254
patch=1,EE,0020208C,word,8C840030
patch=1,EE,00202090,word,8C8400A4
patch=1,EE,00202094,word,0C05D200
patch=1,EE,00202098,word,00000000
patch=1,EE,0020209C,word,0040902D
patch=1,EE,002020A0,word,0240202D
patch=1,EE,002020A4,word,0C05DA8C
patch=1,EE,002020A8,word,00000000
patch=1,EE,002020AC,word,0040A82D
patch=1,EE,002020B0,word,0240202D
patch=1,EE,002020B4,word,0C05CCDC
patch=1,EE,002020B8,word,00000000
patch=1,EE,002020BC,word,0040B02D
patch=1,EE,002020C0,word,0000902D
patch=1,EE,002020C4,word,0C0C3030
patch=1,EE,002020C8,word,00000000
patch=1,EE,002020CC,word,10400013
patch=1,EE,002020D0,word,00000000
patch=1,EE,002020D4,word,16740011

patch=1,EE,0028ddfc,word,8c630a2c // fix escape --> load another location with


current character's tactic id and character id
patch=1,EE,0028de00,word,94770002 // get current character id
patch=1,EE,0028de08,word,12e20007 // check if current character is mc
patch=1,EE,0028de0c,word,94630010 // load current character tactic
patch=1,EE,0028de10,word,2402000b // load DC tactic id
patch=1,EE,0028de14,word,0260202d // do original procedure before function call
patch=1,EE,0028de18,word,10620005 // jump to escape function if we are in DC
patch=1,EE,0028de1c,word,2405001b // and load the proper value for everyone to run
patch=1,EE,0028de20,word,10000003 // else jump to escape function
patch=1,EE,0028de24,word,2405001a // but loading the value for party member asking
escape

patch=1,EE,0028b1d0,word,3c160069 // fix escape 2 --> Load control address 0 (we


didn't command character to run away) | 1 (we did command character to do so)
patch=1,EE,0028b1d8,word,36d6acdc
patch=1,EE,0028b1e8,word,aec00000 // store 0 to the control address
patch=1,EE,0028b1f0,word,0000b02d // zero s6 we just used

patch=1,EE,002968d0,word,3c170069 // load control address


patch=1,EE,002968ec,word,36f7acdc
patch=1,EE,00296900,word,8ef70000 // replace s7 zeroing for loading control address
value
patch=1,EE,0029691c,word,946200a4 // load character id
patch=1,EE,00296928,word,10500002 // check if current character is mc
patch=1,EE,0029692c,word,00000000
patch=1,EE,00296930,word,12e00060 // check if current character has been commanded
to run away
patch=1,EE,00296934,word,0000b82d // make sure to zero out s7 as originally done
patch=1,EE,00296938,word,8f83b6fc // shift subsequent piece of code to make room
for this fix
patch=1,EE,0029693c,word,94620b9e
patch=1,EE,00296940,word,24420001
patch=1,EE,00296944,word,a4620b9e
patch=1,EE,00296948,word,8f82b6fc
patch=1,EE,00296950,word,8c52014c
patch=1,EE,00296ad0,word,0000b02d // make sure to zero out s6 as originally done
patch=1,EE,00296ad8,word,a682001a // add replaced instruction into the branch to
make room for the zeroing

patch=1,EE,0028AC5C,word,9683001A // disable persona menu for non-mc


patch=1,EE,0028AC60,word,3063FFBF
patch=1,EE,0028AC64,word,A683001A
patch=1,EE,0028AC68,word,96830018
patch=1,EE,0028AC6C,word,00000000
patch=1,EE,0028AC70,word,081A6AF8
patch=1,EE,002004f0,word,081a6b6a // display proper flavor text when party members
can't change personas -> jump to unused location
patch=1,EE,0069ada8,word,8f93b6fc
patch=1,EE,0069adac,word,8e770148 // get mc address in s7
patch=1,EE,0069adb0,word,12e0000a // check whether current address is 0 for safety
reasons, if it is 0 we assume mc is the current character and jump accordingly
patch=1,EE,0069adb4,word,00000000
patch=1,EE,0069adb8,word,8ef3000c // else we load the current character status
patch=1,EE,0069adbc,word,02e0a02d // we save current character address in s4
patch=1,EE,0069adc0,word,24170005 // we load a 5 (currently commanding status) to
s7
patch=1,EE,0069adc4,word,16f3fffa // we loop again if 5 is not the current
character status
patch=1,EE,0069adc8,word,8e9704a4 // while we jump in the loop we load in s7 the
next character address
patch=1,EE,0069adcc,word,8f93b6fc // if we ended the loop and found the current
character controlling address we go on here
patch=1,EE,0069add0,word,8e770148 // we load the mc address in s7
patch=1,EE,0069add4,word,16f40003 // if s7 (mc address) and s4 (current character
address) are not equal we jump to the party member flavor message
patch=1,EE,0069add8,word,00000000
patch=1,EE,0069addc,word,10400003 // else we do the normal check that would be done
with mc and jump according to the situation
patch=1,EE,0069ade0,word,00000000
patch=1,EE,0069ade4,word,0808013e
patch=1,EE,0069adec,word,08080144
patch=1,EE,0069adf0,word,00000000

patch=1,EE,002BF600,word,081A6340 // Jump for operations menu processiong


patch=1,EE,0069ABE0,word,8F82B6FC // Jump and enable persona menu for MC
patch=1,EE,0069ABE4,word,8C420148
patch=1,EE,0069ABE8,word,14540004
patch=1,EE,0069ABEC,word,00000000
patch=1,EE,0069ABF0,word,34630400
patch=1,EE,0069ABF4,word,A6830018
patch=1,EE,0069ABF8,word,34630400
patch=1,EE,0069ABFC,word,080A2B1D
patch=1,EE,0069AC00,word,00000000
patch=1,EE,00698D00,word,0C081EE8 // Process operations menu, off when not mc.
patch=1,EE,00698D04,word,00000000
patch=1,EE,00698D08,word,8F91B6FC
patch=1,EE,00698D0C,word,8E310148
patch=1,EE,00698D10,word,16330003
patch=1,EE,00698D14,word,00000000
patch=1,EE,00698D18,word,0C081F74
patch=1,EE,00698D1c,word,00000000
patch=1,EE,00698D20,word,0000882D
patch=1,EE,00698D24,word,080AFD81
patch=1,EE,00698D28,word,00000000
patch=1,EE,0020047C,word,10400006 // Display flavor text when attempting to acces
the disabled tactics menu
patch=1,EE,00200204,word,081a6b46 // Fix non mc party members can't analyze enemies
patch=1,EE,0069ad18,word,8e360148 // Load in s6 mc address
patch=1,EE,0069ad1c,word,24030005 // Load 5 in v1
patch=1,EE,0069ad20,word,8ed5000c // Load in s5 current character status (5 is
currently commanding)
patch=1,EE,0069ad24,word,16a3fffe // If v1 and s5 are not equal that means we are
not commanding this character so we jump to see next character status
patch=1,EE,0069ad28,word,8ed604a4 // We load the next character status for the next
iteration
patch=1,EE,0069ad2c,word,8ed604a8 // Else we are commanding this character, so we
load the characte address before because it will be shifted
patch=1,EE,0069ad30,word,8e350148 // We load the mc address
patch=1,EE,0069ad34,word,12b60003 // If mc is not the character we are commanding
we continue execution else we jump a bit longer
patch=1,EE,0069ad38,word,00000000
patch=1,EE,0069ad3c,word,08080083 // Jump to continue original code execution
because we are analyzing the enemy
patch=1,EE,0069ad40,word,00000000
patch=1,EE,0069ad44,word,1440fffd // If we are commanding mc we need to make the
original check
patch=1,EE,0069ad48,word,00000000
patch=1,EE,0069ad4c,word,0808009b // If we get here we can't analyze the enemy so
we jump to that part of the code
patch=1,EE,0069ad50,word,00000000

patch=1,EE,0028AC74,word,92920028 //Item effect/Start of turn effect fix. Changes


the register we load the one more compare into
patch=1,EE,0028AC78,word,1640000B //Changes which register we branch compare.

patch=1,EE,001FF518,word,8E300254 // fix skill requirements


patch=1,EE,001FF51C,word,8E100030
patch=1,EE,001FF520,word,8E1000A4
patch=1,EE,001FF524,word,00000000
patch=1,EE,001FF528,word,00000000
patch=1,EE,001FF52C,word,00000000
patch=1,EE,002d8204,word,94a30070 // fix items --> make room for one more load
patch=1,EE,002d8208,word,8e220a2c
patch=1,EE,002d820c,word,94570002
patch=1,EE,002d8210,word,94420010 // load current character tactic
patch=1,EE,002d8214,word,081a6b7d // jump to unused location
patch=1,EE,002d8218,word,24160001 // while at it load mc's character id
patch=1,EE,0069adf4,word,16f60003 // check if current character's id is MC
patch=1,EE,0069adf8,word,2416000b // load DC tactic id in case we are not MC
patch=1,EE,0069adfc,word,080B6087 // if we are controlling this character we go to
that original program part
patch=1,EE,0069ae00,word,24020001 // while at it we load mc's id as well
patch=1,EE,0069ae04,word,081a6b0c // jump to unused location
patch=1,EE,0069ac30,word,10560072 // check if current character has DC tactic and
jump to previous part
patch=1,EE,0069ac34,word,00000000
patch=1,EE,0069ac38,word,080b6097 // we are not mc and we are not using DC so we
jump to that program part
patch=1,EE,0069ac3c,word,00000000
patch=1,EE,002D821c,word,0003843C // original "fix items" corrections --> some
space used for original instructions that the patched nopped
patch=1,EE,002D8220,word,0010843F
patch=1,EE,002D8224,word,00000000
patch=1,EE,002D823C,word,00000000

patch=1,EE,002a3914,word,081a6b01 // fix boss battle camera -> jump to unused


location
patch=1,EE,0069ac04,word,8f87b6fc // load global position into a3
patch=1,EE,0069ac08,word,3402001d // get whether current character is pointing or
not
patch=1,EE,0069ac0c,word,10440004 // if it is pointing jump to the mc position
function
patch=1,EE,0069ac10,word,0000102d // also zero out v0 in case we are not pointing
patch=1,EE,0069ac14,word,8ce70148 // load mc address in a3
patch=1,EE,0069ac18,word,14f20003 // skip mc position function if s2 (current
character address) is not a3 (mc address)
patch=1,EE,0069ac1c,word,0000102d // also zero out v0 in case s2 is not mc
patch=1,EE,0069ac20,word,0c0be210 // call to mc position function
patch=1,EE,0069ac24,word,00000000
patch=1,EE,0069ac28,word,080a8e47 // jump to original code block

// Fix enemies not facing party members when they attack


patch=1,EE,0027f8c0,word,081a6b11 // code shifted, jump to unused location
patch=1,EE,0027f8c4,word,34170005 // status num 5 -> character we are commanding
patch=1,EE,0069ac44,word,8c480148 // Get mc address, last element of double linked
list of characters in field
patch=1,EE,0069ac48,word,9504000c // Load status of current character
patch=1,EE,0069ac4c,word,10970005 // Jump to end if we are commanding this
character
patch=1,EE,0069ac50,word,00000000
patch=1,EE,0069ac54,word,8d0804a4 // Else load the character before the actual one
patch=1,EE,0069ac58,word,1500fffb // If t0 holds a character address we continue
with the loop
patch=1,EE,0069ac5c,word,00000000
patch=1,EE,0069ac60,word,8c480148 // If no character is found somehow, we keep a0
as the mc as originally
patch=1,EE,0069ac64,word,0809fe32 // Jump to continue original code execution
patch=1,EE,0069ac68,word,8d040030 // While we jump we load the character address
needed in a0 for position
patch=1,EE,0028BD60,word,00000000 // Fix enemies not facing party members in
specific situations

// DIRECT COMMANDS TACTIC


// Addition to tactics list
patch=1,EE,00684efc,word,00684e58 // move every tactic string address up to make
room for the new one
patch=1,EE,00684f00,word,00684e68
patch=1,EE,00684f04,word,00684e78
patch=1,EE,00684f08,word,00684e88
patch=1,EE,00684f0c,word,00684e98
patch=1,EE,00684f10,word,00684ea8
patch=1,EE,00684f14,word,00684eb8
patch=1,EE,00684f18,word,00684ec8
patch=1,EE,00684f1c,word,00684ed8
patch=1,EE,00684f20,word,00684ee8
patch=1,EE,00684f24,word,0069ac70 // add direct command string address at the end
of the address array

patch=1,EE,0069ac70,word,65726944 // make a string with "Direct Commands" to match


the string address added
patch=1,EE,0069ac74,word,43207463
patch=1,EE,0069ac78,word,616d6d6f
patch=1,EE,0069ac7c,word,0073646e

patch=1,EE,00204924,word,8c44fff8 // we need to fix all times this array is


accessed in order to match the new position of the first element
patch=1,EE,00205200,word,8c44fff8
patch=1,EE,002059f4,word,8c44fff8
patch=1,EE,00205afc,word,8c44fffc
patch=1,EE,002062a4,word,8c64fff8

patch=1,EE,0020598c,word,2a62000c // we add one more element for the tactic list to


make the Direct Commands tactic show up

patch=1,EE,00205a58,word,ae1303dc // Expand the tactics array by 4 bytes and move


the visible tactics array by 4bytes
patch=1,EE,00205ca8,word,8c4203dc
patch=1,EE,00206110,word,8c4203dc
patch=1,EE,002061b8,word,8c4403dc
patch=1,EE,002062c4,word,ac6203dc
patch=1,EE,0020639c,word,8c4403dc

// Add logic to the new command added

patch=1,EE,0029afc8,word,081a6b20 // code shifted, jump to unused location


patch=1,EE,0029afcc,word,3c170069 // load first half of control address

patch=1,EE,0069ac80,word,14460003 // if character we are controlling is not mc we


continue our checks
patch=1,EE,0069ac84,word,36f7acdc // load second half of control address
patch=1,EE,0069ac88,word,24160001 // if we are controlling this character we will
load control address flag to 1
patch=1,EE,0069ac8c,word,080a6bf4 // and jump to the original program that handles
direct commands turn
patch=1,EE,0069ac90,word,aef60000 // while at it we store the flag into the control
address
patch=1,EE,0069ac94,word,8cd50030 // series of loads that get current character
tactic directly within memory, current character is in a2
patch=1,EE,0069ac98,word,8eb50a2c
patch=1,EE,0069ac9c,word,96b50010
patch=1,EE,0069aca0,word,2416000b // we load 0xb into s6, which is the "Direct
Commands" tactic id in memory
patch=1,EE,0069aca4,word,12b6fff8 // if current character has "Direct Commands"
tactic then we jump to the original program that handles direct commands turn
patch=1,EE,0069aca8,word,0000b02d // we load a 0 into the control flag if we didn't
control the character
patch=1,EE,0069acac,word,080a6bf8 // and jump to the original program that handles
ai related turns
patch=1,EE,0069acb0,word,aef60000 // while at it we store the flag into the control
address

//Rendering fixes
patch=1,EE,00223CA0,word,3C02432D
patch=1,EE,00223D44,word,3C034324

//By Sir Toasterpastry


//never tired
patch=1,EE,2016D6D4,extended,24130002
patch=1,EE,2016D940,extended,2405001F

You might also like