Starting Inventory 00042a10: 340300ff ori r3,r0,0x00ff 00042a14: 3c028006 lui r2,0x8006 00042a18: 244297df addiu r2,r2,0x97df Load Inventory 00042a1c: a0400000 sb r0,0x0000(r2) Store inventory as nothing? 00042a20: 2463ffff addiu r3,r3,0xffff 00042a24: 0461fffd bgez r3,0x00042a1c 00042a28: 2442ffff addiu r2,r2,0xffff 00042a2c: 34020005 ori r2,r0,0x0005 R2 = 5 00042a30: 34030002 ori r3,r0,0x0002 R3 = 2 00042a34: 3c018006 lui r1,0x8006 00042a38: a02297d0 sb r2,-0x6830(r1) Store Potion Amount [05] 00042a3c: 34020001 ori r2,r0,0x0001 R2 = 1 00042a40: 3c018006 lui r1,0x8006 00042a44: a02397d1 sb r3,-0x682f(r1) Store Hi Potion Amount [02] 00042a48: 3c018006 lui r1,0x8006 00042a4c: a02297d2 sb r2,-0x682e(r1) Store X Potion Amount [01] 00042a50: 3c018006 lui r1,0x8006 00042a54: a02297d3 sb r2,-0x682d(r1) Store Ether Amount [01] 00042a58: 3c018006 lui r1,0x8006 00042a5c: a02297d4 sb r2,-0x682c(r1) Store Hi Ether Amount [01] 00042a60: 3c018006 lui r1,0x8006 00042a64: a02297d5 sb r2,-0x682b(r1) Store Elixir Amount [01] 00042a68: 3c018006 lui r1,0x8006 00042a6c: a02297d6 sb r2,-0x682a(r1) Store Antidote Amount [01] 00042a70: 3c018006 lui r1,0x8006 00042a74: a02397d7 sb r3,-0x6829(r1) Store Eye Drop Amount [02] 00042a78: 3c018006 lui r1,0x8006 00042a7c: a02297d8 sb r2,-0x6828(r1) Store Echo Grass Amount [01] 00042a80: 3c018006 lui r1,0x8006 00042a84: a02297d9 sb r2,-0x6827(r1) Store Maiden's Kiss Amount [01] 00042a88: 3c018006 lui r1,0x8006 00042a8c: a02297da sb r2,-0x6826(r1) Store Soft Amount [01] 00042a90: 3c018006 lui r1,0x8006 00042a94: a02297db sb r2,-0x6825(r1) Store Holy Water Amount [01] 00042a98: 3c018006 lui r1,0x8006 00042a9c: a02297dc sb r2,-0x6824(r1) Store Remedy Amount [01] 00042aa0: 3c018006 lui r1,0x8006 00042aa4: a02397dd sb r3,-0x6823(r1) Store Phoenix Down Amount [02] 00042aa8: 03e00008 jr r31 00042aac: 00000000 nop Inventory Located from: 000596e0 To: 000597dd Initialize Status Check Data 00059854: 27bdffe8 addiu r29,r29,0xffe8 00059858: afbf0010 sw r31,0x0010(r29) 0005985c: 3c048006 lui r4,0x8006 00059860: 24849414 addiu r4,r4,0x9414 r4 = Pointer to ? 00059864: 0c017991 jal 0x0005e644 Data Nullifying 00059868: 34050080 ori r5,r0,0x0080 Limit = 0x80 0005986c: 3c048006 lui r4,0x8006 00059870: 248462d0 addiu r4,r4,0x62d0 r4 = Pointer to Status Checks 00059874: 0c017991 jal 0x0005e644 Data Nullifying 00059878: 34050037 ori r5,r0,0x0037 Limit = 0x37 (11 total check types) 0005987c: 00003821 addu r7,r0,r0 Current Status = 0 00059880: 00004021 addu r8,r0,r0 Status Pointer Mod = 0 00059884: 3c018006 lui r1,0x8006 00059888: 00280821 addu r1,r1,r8 0005988c: 90255de8 lbu r5,0x5de8(r1) Load Status Effects Byte 4 00059890: 3c018006 lui r1,0x8006 00059894: 00280821 addu r1,r1,r8 00059898: 90265de9 lbu r6,0x5de9(r1) Load Status Effects Byte 5 0005989c: 04e10002 bgez r7,0x000598a8 Branch if Current Status >= 0 000598a0: 00e01021 addu r2,r7,r0 r2 = Current Status 000598a4: 24e20007 addiu r2,r7,0x0007 r2 = Current Status + 7 (random negative crap) 000598a8: 000220c3 sra r4,r2,0x03 Current Status / 8 (rather than setting back to 0 each loop) 000598ac: 30e20007 andi r2,r7,0x0007 Current Status AND 7 (get actual status bit) 000598b0: 34030080 ori r3,r0,0x0080 r3 = 0x80 000598b4: 00431807 srav r3,r3,r2 0x80 >> Current Status (which status to enable) 000598b8: 30a20001 andi r2,r5,0x0001 000598bc: 1040000a beq r2,r0,0x000598e8 Branch if KO Flag isn't enabled 000598c0: 30a20002 andi r2,r5,0x0002 000598c4: 3c018006 lui r1,0x8006 000598c8: 00240821 addu r1,r1,r4 000598cc: 902262d0 lbu r2,0x62d0(r1) Load KO Status Checks 000598d0: 00000000 nop 000598d4: 00621025 or r2,r3,r2 Enable Current Status 000598d8: 3c018006 lui r1,0x8006 000598dc: 00240821 addu r1,r1,r4 000598e0: a02262d0 sb r2,0x62d0(r1) Store new KO Status Checks 000598e4: 30a20002 andi r2,r5,0x0002 000598e8: 1040000a beq r2,r0,0x00059914 Branch if 0x02 isn't enabled (byte 0x04) 000598ec: 30a20004 andi r2,r5,0x0004 000598f0: 3c018006 lui r1,0x8006 000598f4: 00240821 addu r1,r1,r4 000598f8: 902262d5 lbu r2,0x62d5(r1) Load 0x02 Status Checks 000598fc: 00000000 nop 00059900: 00621025 or r2,r3,r2 Enable Current Status 00059904: 3c018006 lui r1,0x8006 00059908: 00240821 addu r1,r1,r4 0005990c: a02262d5 sb r2,0x62d5(r1) Store new 0x02 Status Checks 00059910: 30a20004 andi r2,r5,0x0004 00059914: 1040000a beq r2,r0,0x00059940 Branch if 0x04 isn't enabled (byte 0x04) 00059918: 30a20080 andi r2,r5,0x0080 0005991c: 3c018006 lui r1,0x8006 00059920: 00240821 addu r1,r1,r4 00059924: 902262da lbu r2,0x62da(r1) Load 0x04 Status Checks 00059928: 00000000 nop 0005992c: 00621025 or r2,r3,r2 Enable Current Status 00059930: 3c018006 lui r1,0x8006 00059934: 00240821 addu r1,r1,r4 00059938: a02262da sb r2,0x62da(r1) Store new 0x04 Status Checks 0005993c: 30a20080 andi r2,r5,0x0080 00059940: 1040000a beq r2,r0,0x0005996c Branch if 0x80 isn't enabled (byte 0x04) 00059944: 30c20080 andi r2,r6,0x0080 00059948: 3c018006 lui r1,0x8006 0005994c: 00240821 addu r1,r1,r4 00059950: 902262df lbu r2,0x62df(r1) Load 0x80 Status Checks 00059954: 00000000 nop 00059958: 00621025 or r2,r3,r2 Enable Current Status 0005995c: 3c018006 lui r1,0x8006 00059960: 00240821 addu r1,r1,r4 00059964: a02262df sb r2,0x62df(r1) Store new 0x80 Status Checks 00059968: 30c20080 andi r2,r6,0x0080 0005996c: 1040000a beq r2,r0,0x00059998 Branch if 0x80 isn't present (byte 0x05) 00059970: 30c20001 andi r2,r6,0x0001 00059974: 3c018006 lui r1,0x8006 00059978: 00240821 addu r1,r1,r4 0005997c: 902262e4 lbu r2,0x62e4(r1) Load 0x80 Status Checks 00059980: 00000000 nop 00059984: 00621025 or r2,r3,r2 Enable Current Status 00059988: 3c018006 lui r1,0x8006 0005998c: 00240821 addu r1,r1,r4 00059990: a02262e4 sb r2,0x62e4(r1) Store new 0x80 Status Checks 00059994: 30c20001 andi r2,r6,0x0001 00059998: 1040000a beq r2,r0,0x000599c4 Branch if Immortal Immunity isn't enabled 0005999c: 30c20002 andi r2,r6,0x0002 000599a0: 3c018006 lui r1,0x8006 000599a4: 00240821 addu r1,r1,r4 000599a8: 902262e9 lbu r2,0x62e9(r1) Load Immortal Immunities 000599ac: 00000000 nop 000599b0: 00621025 or r2,r3,r2 Enable Current Status 000599b4: 3c018006 lui r1,0x8006 000599b8: 00240821 addu r1,r1,r4 000599bc: a02262e9 sb r2,0x62e9(r1) Store new Immortal Immunities 000599c0: 30c20002 andi r2,r6,0x0002 000599c4: 1040000a beq r2,r0,0x000599f0 Branch if Load/Save Formation Immunities isn't enabled 000599c8: 30c20004 andi r2,r6,0x0004 000599cc: 3c018006 lui r1,0x8006 000599d0: 00240821 addu r1,r1,r4 000599d4: 902262ee lbu r2,0x62ee(r1) Load Load/Save Formation Immunities 000599d8: 00000000 nop 000599dc: 00621025 or r2,r3,r2 Enable Current Status 000599e0: 3c018006 lui r1,0x8006 000599e4: 00240821 addu r1,r1,r4 000599e8: a02262ee sb r2,0x62ee(r1) Store new Load/Save Formation Immunities 000599ec: 30c20004 andi r2,r6,0x0004 000599f0: 1040000a beq r2,r0,0x00059a1c Branch if 0x04 isn't present (byte 0x05) 000599f4: 30c20008 andi r2,r6,0x0008 000599f8: 3c018006 lui r1,0x8006 000599fc: 00240821 addu r1,r1,r4 00059a00: 902262f3 lbu r2,0x62f3(r1) Load 0x04 Status Checks 00059a04: 00000000 nop 00059a08: 00621025 or r2,r3,r2 Enable Current Status 00059a0c: 3c018006 lui r1,0x8006 00059a10: 00240821 addu r1,r1,r4 00059a14: a02262f3 sb r2,0x62f3(r1) Store new 0x04 Status Checks 00059a18: 30c20008 andi r2,r6,0x0008 00059a1c: 1040000a beq r2,r0,0x00059a48 Branch if 0x08 isn't present (byte 0x05) 00059a20: 30c20010 andi r2,r6,0x0010 00059a24: 3c018006 lui r1,0x8006 00059a28: 00240821 addu r1,r1,r4 00059a2c: 902262f8 lbu r2,0x62f8(r1) Load 0x08 Status Checks 00059a30: 00000000 nop 00059a34: 00621025 or r2,r3,r2 Enable Current Status 00059a38: 3c018006 lui r1,0x8006 00059a3c: 00240821 addu r1,r1,r4 00059a40: a02262f8 sb r2,0x62f8(r1) Store new 0x08 Status Chekcs 00059a44: 30c20010 andi r2,r6,0x0010 00059a48: 10400009 beq r2,r0,0x00059a70 Branch if 0x10 isn't present (byte 0x05) 00059a4c: 25080010 addiu r8,r8,0x0010 Status Pointer Mod += 0x10 00059a50: 3c018006 lui r1,0x8006 00059a54: 00240821 addu r1,r1,r4 00059a58: 902262fd lbu r2,0x62fd(r1) Load 0x10 Status Checks 00059a5c: 00000000 nop 00059a60: 00621025 or r2,r3,r2 Enable Current Status 00059a64: 3c018006 lui r1,0x8006 00059a68: 00240821 addu r1,r1,r4 00059a6c: a02262fd sb r2,0x62fd(r1) Store new 0x10 Status Checks 00059a70: 24e70001 addiu r7,r7,0x0001 Current Status += 1 00059a74: 28e20028 slti r2,r7,0x0028 00059a78: 1440ff82 bne r2,r0,0x00059884 Branch if Current Status < 40 00059a7c: 00000000 nop *hardcoded unmountable status checks* 00059a80: 34020060 ori r2,r0,0x0060 r2 = Crystal/Dead 00059a84: 3c018006 lui r1,0x8006 00059a88: a0226302 sb r2,0x6302(r1) Store new Unmountable Status Checks 1 00059a8c: 34020085 ori r2,r0,0x0085 r2 = Petrify/Blood Suck/Treasure 00059a90: 3c018006 lui r1,0x8006 00059a94: a0226303 sb r2,0x6303(r1) Store new Unmountable Status Checks 2 00059a98: 3402000e ori r2,r0,0x000e r2 = Berserk/Chicken/Frog 00059a9c: 3c018006 lui r1,0x8006 00059aa0: a0226304 sb r2,0x6304(r1) Store new Unmountable Status Checks 3 00059aa4: 34020020 ori r2,r0,0x0020 r2 = Charm 00059aa8: 3c018006 lui r1,0x8006 00059aac: a0226306 sb r2,0x6306(r1) Store new Unmountable Status Checks 5 00059ab0: 8fbf0010 lw r31,0x0010(r29) 00059ab4: 27bd0018 addiu r29,r29,0x0018 00059ab8: 03e00008 jr r31 00059abc: 00000000 nop Unused 00059ac0: 03e00008 jr r31 00059ac4: 00000000 nop Initialize Party ID to FF 00059ac8: 340300ff ori r3,r0,0x00ff r3 = 0xFF 00059acc: 34021300 ori r2,r0,0x1300 Counter = 0x1300 00059ad0: 3c018005 lui r1,0x8005 00059ad4: 00220821 addu r1,r1,r2 00059ad8: a0237f75 sb r3,0x7f75(r1) Store Party ID = 0xFF 00059adc: 2442ff00 addiu r2,r2,0xff00 Counter -= 0x100 00059ae0: 0441fffb bgez r2,0x00059ad0 Branch if Counter >= 0 00059ae4: 00000000 nop 00059ae8: 03e00008 jr r31 00059aec: 00000000 nop Get Party Data Pointer 00059af0: 28820014 slti r2,r4,0x0014 00059af4: 10400005 beq r2,r0,0x00059b0c Branch if Counter >= 0x14 00059af8: 00041a00 sll r3,r4,0x08 Counter * 256 00059afc: 3c028005 lui r2,0x8005 00059b00: 24427f74 addiu r2,r2,0x7f74 00059b04: 080166c4 j 0x00059b10 00059b08: 00621021 addu r2,r3,r2 Pointer = Party Data Pointer 00059b0c: 00001021 addu r2,r0,r0 Pointer = 0 00059b10: 03e00008 jr r31 00059b14: 00000000 nop Unit Initialization 00059b18: 27bdfe20 addiu r29,r29,0xfe20 r4 = ENTD Data Pointer (0x1dc000 data) 00059b1c: afb101d4 sw r17,0x01d4(r29) 00059b20: 00c08821 addu r17,r6,r0 r17 = 0 (not called with a different value in-battle) 00059b24: 00051080 sll r2,r5,0x02 Counter * 4 00059b28: 00451021 addu r2,r2,r5 Counter * 5 00059b2c: 000210c0 sll r2,r2,0x03 Counter * 40 00059b30: 00822821 addu r5,r4,r2 ENTD Data Pointer + Counter * 40 00059b34: afbf01d8 sw r31,0x01d8(r29) 00059b38: afb001d0 sw r16,0x01d0(r29) 00059b3c: 3c018006 lui r1,0x8006 00059b40: ac256238 sw r5,0x6238(r1) Store Current ENTD Data Pointer 00059b44: 90a20000 lbu r2,0x0000(r5) Load Sprite Set 00059b48: 00000000 nop 00059b4c: 10400011 beq r2,r0,0x00059b94 Branch if Sprite Set = 0 00059b50: 00e03021 addu r6,r7,r0 r6 = r7 (r7 is 1 in this case) 00059b54: 27b00010 addiu r16,r29,0x0010 r16 = Temp Unit Data 00059b58: 02002021 addu r4,r16,r0 r4 = Temp Unit Data 00059b5c: 340300ff ori r3,r0,0x00ff r3 = 0xFF 00059b60: 34020020 ori r2,r0,0x0020 r2 = 0x20 00059b64: a3a20011 sb r2,0x0011(r29) Store Unit's Unit ID = 0x20 (?) 00059b68: 34020001 ori r2,r0,0x0001 r2 = 1 00059b6c: 00003821 addu r7,r0,r0 r7 = 0 00059b70: a3a3019a sb r3,0x019a(r29) Store Unit's Unit ID = FF 00059b74: a3a20193 sb r2,0x0193(r29) Store Unit's ? = 1 (Unit Exists?) 00059b78: 0c016a6d jal 0x0005a9b4 Unit Battle Initialization 00059b7c: a3a30012 sb r3,0x0012(r29) Store Unit's Party ID = FF 00059b80: 02002021 addu r4,r16,r0 r4 = Temp Unit's Data Pointer 00059b84: 0c0166ec jal 0x00059bb0 Add Unit to Party/Store Unit's Party Data 00059b88: 02202821 addu r5,r17,r0 r5 = 0 (No new party members) 00059b8c: 080166e6 j 0x00059b98 00059b90: 00000000 nop 00059b94: 2402fffe addiu r2,r0,0xfffe r2 = -2 00059b98: 8fbf01d8 lw r31,0x01d8(r29) 00059b9c: 8fb101d4 lw r17,0x01d4(r29) 00059ba0: 8fb001d0 lw r16,0x01d0(r29) 00059ba4: 27bd01e0 addiu r29,r29,0x01e0 00059ba8: 03e00008 jr r31 00059bac: 00000000 nop Add Unit to Party/Store Unit's Party Data 00059bb0: 27bdffd8 addiu r29,r29,0xffd8 00059bb4: afb20020 sw r18,0x0020(r29) 00059bb8: 00809021 addu r18,r4,r0 r18 = Unit's Data Pointer 00059bbc: afbf0024 sw r31,0x0024(r29) 00059bc0: afb1001c sw r17,0x001c(r29) 00059bc4: afb00018 sw r16,0x0018(r29) 00059bc8: 92430006 lbu r3,0x0006(r18) Load Unit's Gender Byte 00059bcc: 92420000 lbu r2,0x0000(r18) Load Unit's Sprite Set 00059bd0: 00000000 nop 00059bd4: 2c420080 sltiu r2,r2,0x0080 00059bd8: 10400003 beq r2,r0,0x00059be8 Branch if Unit is Generic 00059bdc: 30630001 andi r3,r3,0x0001 r3 = Save Formation Flag 00059be0: 14a00002 bne r5,r0,0x00059bec Branch if Preset Value != 0 00059be4: 00000000 nop 00059be8: 00001821 addu r3,r0,r0 r3 = 0 (No Save Formation Flag) 00059bec: 92440002 lbu r4,0x0002(r18) Load Unit's Party ID 00059bf0: 306200ff andi r2,r3,0x00ff 00059bf4: 14400010 bne r2,r0,0x00059c38 Branch if Unit has Save Formation Flag (and PV != 0) 00059bf8: 309000ff andi r16,r4,0x00ff r16 = Unit's Party ID 00059bfc: 2482fff0 addiu r2,r4,0xfff0 r2 = Guest ID 00059c00: 2c420004 sltiu r2,r2,0x0004 00059c04: 1040000d beq r2,r0,0x00059c3c Branch if Unit isn't a Guest 00059c08: 2e020015 sltiu r2,r16,0x0015 (Guest joining as actual party member?) 00059c0c: 0c0167f8 jal 0x00059fe0 Remove Unit from Party 00059c10: 00000000 nop 00059c14: 00002021 addu r4,r0,r0 r4 = 0 (Normal Party) 00059c18: 0c016757 jal 0x00059d5c Find Free Party Slot 00059c1c: 27a50010 addiu r5,r29,0x0010 r5 = Stack Pointer + 0x10 00059c20: 00402021 addu r4,r2,r0 r4 = Free Party Slot 00059c24: 2402ffff addiu r2,r0,0xffff 00059c28: 10820045 beq r4,r2,0x00059d40 Branch if No slots are free 00059c2c: 00808821 addu r17,r4,r0 r17 = Free Party Slot 00059c30: 08016716 j 0x00059c58 00059c34: 00000000 nop 00059c38: 2e020015 sltiu r2,r16,0x0015 00059c3c: 14400003 bne r2,r0,0x00059c4c Branch if Unit is a Party Member 00059c40: 00002021 addu r4,r0,r0 r4 = 0 (Normal Party) 00059c44: 08016706 j 0x00059c18 (Adding new unit to party) 00059c48: 00602021 addu r4,r3,r0 r4 = Save Formation Flag (Normal if 0, Guest if 1) 00059c4c: 0c016757 jal 0x00059d5c Find Free Party Slot (just to set stack value = 0?) 00059c50: 27a50010 addiu r5,r29,0x0010 r5 = Stack Pointer 00059c54: 02008821 addu r17,r16,r0 r17 = Party ID 00059c58: 0c0166bc jal 0x00059af0 Get Party Data Pointer 00059c5c: 02202021 addu r4,r17,r0 r4 = Unit's Party ID 00059c60: 92430000 lbu r3,0x0000(r18) Load Unit's Sprite Set 00059c64: 00408021 addu r16,r2,r0 r16 = Unit's Party Data Pointer 00059c68: a2110001 sb r17,0x0001(r16) Store Unit's Party ID 00059c6c: a2030000 sb r3,0x0000(r16) Store Unit's Sprite Set 00059c70: 92420003 lbu r2,0x0003(r18) Load Unit's Job ID 00059c74: 00000000 nop 00059c78: a2020002 sb r2,0x0002(r16) Store Unit's Job ID 00059c7c: 2a220010 slti r2,r17,0x0010 00059c80: 14400007 bne r2,r0,0x00059ca0 Branch if Unit is a Normal Party Member 00059c84: 00000000 nop 00059c88: 92420004 lbu r2,0x0004(r18) Load Unit's Palette 00059c8c: 00000000 nop 00059c90: a2020003 sb r2,0x0003(r16) Store Unit's Palette 00059c94: 92420006 lbu r2,0x0006(r18) Load Unit's Gender Byte 00059c98: 0801672e j 0x00059cb8 00059c9c: 304200fb andi r2,r2,0x00fb Disable ??? stats 00059ca0: 93a20010 lbu r2,0x0010(r29) Load Stack Value (0) 00059ca4: 00000000 nop 00059ca8: a2020003 sb r2,0x0003(r16) Store Unit's Palette 00059cac: 92420006 lbu r2,0x0006(r18) Load Unit's Gender Byte 00059cb0: 00000000 nop 00059cb4: 304200fa andi r2,r2,0x00fa Disable ??? Stats and Save Formation 00059cb8: a2020004 sb r2,0x0004(r16) Store Unit's Gender Byte 00059cbc: 26440013 addiu r4,r18,0x0013 r4 = Unit's Secondary Skillset Pointer 00059cc0: 26050007 addiu r5,r16,0x0007 r5 = Party Secondary Skillset Pointer 00059cc4: 34060010 ori r6,r0,0x0010 Limit = 0x10 00059cc8: 96430008 lhu r3,0x0008(r18) Load Unit's Birthday + Zodiac 00059ccc: 96420008 lhu r2,0x0008(r18) " (Derp) 00059cd0: 306301ff andi r3,r3,0x01ff r3 = Birthday 00059cd4: 3042f000 andi r2,r2,0xf000 r2 = Zodiac 00059cd8: 00621825 or r3,r3,r2 ... 00059cdc: 00031202 srl r2,r3,0x08 Zodiac / 256 00059ce0: a2030005 sb r3,0x0005(r16) Store Party Birthday 00059ce4: 0c017895 jal 0x0005e254 Store X Byte into Y (Secondary/R/S/M/Equips/Exp/Level) 00059ce8: a2020006 sb r2,0x0006(r16) Store Party Zodiac 00059cec: 26440072 addiu r4,r18,0x0072 r4 = Unit's Raw HP Pointer 00059cf0: 92420023 lbu r2,0x0023(r18) Load Unit's Original Brave 00059cf4: 26050019 addiu r5,r16,0x0019 r5 = Party Raw HP Pointer 00059cf8: a2020017 sb r2,0x0017(r16) Store Party Brave 00059cfc: 92420025 lbu r2,0x0025(r18) Load Unit's Original Faith 00059d00: 3406000f ori r6,r0,0x000f Limit = 0xF 00059d04: 0c017895 jal 0x0005e254 Store X Byte into Y (Raw Stats) 00059d08: a2020018 sb r2,0x0018(r16) Store Party Faith 00059d0c: 26440096 addiu r4,r18,0x0096 r4 = Unit's Unlocked Jobs Pointer 00059d10: 26050028 addiu r5,r16,0x0028 r5 = Party Unlocked Jobs Pointer 00059d14: 0c017895 jal 0x0005e254 Store X Byte into Y (Job Data) 00059d18: 340600a6 ori r6,r0,0x00a6 Limit = 0xa6 00059d1c: 9242016c lbu r2,0x016c(r18) Load Unit's Name ID 00059d20: 00000000 nop 00059d24: a20200ce sb r2,0x00ce(r16) Store Party Name ID 00059d28: 9643016c lhu r3,0x016c(r18) Load Unit's Name ID 00059d2c: 00001021 addu r2,r0,r0 r2 = 0 00059d30: a20000d0 sb r0,0x00d0(r16) Store ? = 0 00059d34: a20000d2 sb r0,0x00d2(r16) Store ? = 0 00059d38: 00031a02 srl r3,r3,0x08 00059d3c: a20300cf sb r3,0x00cf(r16) Store Party Name ID High bit 00059d40: 8fbf0024 lw r31,0x0024(r29) 00059d44: 8fb20020 lw r18,0x0020(r29) 00059d48: 8fb1001c lw r17,0x001c(r29) 00059d4c: 8fb00018 lw r16,0x0018(r29) 00059d50: 27bd0028 addiu r29,r29,0x0028 00059d54: 03e00008 jr r31 00059d58: 00000000 nop Find Free Party Slot 00059d5c: 27bdff90 addiu r29,r29,0xff90 00059d60: afb20068 sw r18,0x0068(r29) 00059d64: 00809021 addu r18,r4,r0 r18 = Save Formation Flag 00059d68: afb00060 sw r16,0x0060(r29) 00059d6c: 00008021 addu r16,r0,r0 Counter = 0 00059d70: afb10064 sw r17,0x0064(r29) 00059d74: 27b10010 addiu r17,r29,0x0010 r17 = Stack Pointer + 0x10 00059d78: afbf006c sw r31,0x006c(r29) 00059d7c: a0a00000 sb r0,0x0000(r5) Store Stack Value = 0 00059d80: 0c0166bc jal 0x00059af0 Get Party Data Pointer 00059d84: 02002021 addu r4,r16,r0 r4 = Counter 00059d88: ae220000 sw r2,0x0000(r17) Store Party Data Pointer 00059d8c: 26100001 addiu r16,r16,0x0001 Counter ++ 00059d90: 2a020014 slti r2,r16,0x0014 00059d94: 1440fffa bne r2,r0,0x00059d80 Branch if Counter < 0x14 00059d98: 26310004 addiu r17,r17,0x0004 Stack Pointer += 4 00059d9c: 12400003 beq r18,r0,0x00059dac Branch if Unit doesn't have Save Formation Flag 00059da0: 34020010 ori r2,r0,0x0010 Party Counter = 0x10 (Guests) 00059da4: 0801676d j 0x00059db4 00059da8: 34050014 ori r5,r0,0x0014 Limit = 0x14 00059dac: 00001021 addu r2,r0,r0 Party Counter = 0 00059db0: 34050010 ori r5,r0,0x0010 Limit = 0x10 00059db4: 00408021 addu r16,r2,r0 r16 = Party Counter 00059db8: 0205102a slt r2,r16,r5 00059dbc: 1040000e beq r2,r0,0x00059df8 Branch if Party Counter >= Limit 00059dc0: 00101080 sll r2,r16,0x02 Party Counter * 4 00059dc4: 340400ff ori r4,r0,0x00ff r4 = FF 00059dc8: 27a30010 addiu r3,r29,0x0010 r3 = Stack Pointer + 0x10 00059dcc: 00431821 addu r3,r2,r3 00059dd0: 8c620000 lw r2,0x0000(r3) Load Unit's Party Data Pointer 00059dd4: 00000000 nop 00059dd8: 90420001 lbu r2,0x0001(r2) Load Unit's Party ID 00059ddc: 00000000 nop 00059de0: 10440006 beq r2,r4,0x00059dfc Branch if unit doesn't exist 00059de4: 02001021 addu r2,r16,r0 Free Party ID = Party Counter 00059de8: 26100001 addiu r16,r16,0x0001 Party Counter ++ 00059dec: 0205102a slt r2,r16,r5 00059df0: 1440fff7 bne r2,r0,0x00059dd0 Branch if Party Counter < Limit 00059df4: 24630004 addiu r3,r3,0x0004 Stack Pointer += 4 00059df8: 2402ffff addiu r2,r0,0xffff Free Party ID = None 00059dfc: 8fbf006c lw r31,0x006c(r29) 00059e00: 8fb20068 lw r18,0x0068(r29) 00059e04: 8fb10064 lw r17,0x0064(r29) 00059e08: 8fb00060 lw r16,0x0060(r29) 00059e0c: 27bd0070 addiu r29,r29,0x0070 00059e10: 03e00008 jr r31 00059e14: 00000000 nop Create Monster Egg 00059e18: 27bdffd8 addiu r29,r29,0xffd8 00059e1c: afb3001c sw r19,0x001c(r29) 00059e20: 00809821 addu r19,r4,r0 r19 = Monster Job ID 00059e24: afb00010 sw r16,0x0010(r29) 00059e28: 00a08021 addu r16,r5,r0 r16 = Egg Mod (used as birthday) 00059e2c: afb40020 sw r20,0x0020(r29) 00059e30: 00c0a021 addu r20,r6,r0 r20 = Random (rand(0..3)) 00059e34: 34040003 ori r4,r0,0x0003 Unit Type = Monster 00059e38: afbf0024 sw r31,0x0024(r29) 00059e3c: afb20018 sw r18,0x0018(r29) 00059e40: 0c0167b5 jal 0x00059ed4 Find Empty Party Slot and Generate Unit 00059e44: afb10014 sw r17,0x0014(r29) 00059e48: 00409021 addu r18,r2,r0 r18 = Party ID 00059e4c: 2402ffff addiu r2,r0,0xffff 00059e50: 12420017 beq r18,r2,0x00059eb0 Branch if there is no space left 00059e54: 00000000 nop 00059e58: 0c0166bc jal 0x00059af0 Get Party Data Pointer 00059e5c: 02402021 addu r4,r18,r0 r4 = Party ID 00059e60: 00408821 addu r17,r2,r0 r17 = Party Data Pointer 00059e64: 92220004 lbu r2,0x0004(r17) Load Party Gender Byte 00059e68: a2330002 sb r19,0x0002(r17) Store Job ID 00059e6c: a23400d2 sb r20,0x00d2(r17) Store ? = Random 00059e70: 34420004 ori r2,r2,0x0004 00059e74: a2220004 sb r2,0x0004(r17) Store Gender with ??? Stats (Egg) Enabled 00059e78: 3202ffff andi r2,r16,0xffff 00059e7c: 2c42016e sltiu r2,r2,0x016e 00059e80: 14400002 bne r2,r0,0x00059e8c Branch if Egg Mod < 0x16e 00059e84: 00000000 nop 00059e88: 34100001 ori r16,r0,0x0001 r16 = 1 00059e8c: 0c017976 jal 0x0005e5d8 Calculate Zodiac Symbol 00059e90: 3204ffff andi r4,r16,0xffff r4 = Egg Mod 00059e94: 00022100 sll r4,r2,0x04 Zodiac * 16 00059e98: 02401021 addu r2,r18,r0 r2 = Party ID 00059e9c: 32030100 andi r3,r16,0x0100 Egg Mod High Bit (not needed; just generic date code) 00059ea0: 00031a02 srl r3,r3,0x08 High Bit / 256 00059ea4: 00641821 addu r3,r3,r4 High Bit + Zodiac 00059ea8: a2300005 sb r16,0x0005(r17) Store Birthday = Egg Mod 00059eac: a2230006 sb r3,0x0006(r17) Store Zodiac (useless?) 00059eb0: 8fbf0024 lw r31,0x0024(r29) 00059eb4: 8fb40020 lw r20,0x0020(r29) 00059eb8: 8fb3001c lw r19,0x001c(r29) 00059ebc: 8fb20018 lw r18,0x0018(r29) 00059ec0: 8fb10014 lw r17,0x0014(r29) 00059ec4: 8fb00010 lw r16,0x0010(r29) 00059ec8: 27bd0028 addiu r29,r29,0x0028 00059ecc: 03e00008 jr r31 00059ed0: 00000000 nop Find Empty Party Slot and Generate Unit 00059ed4: 27bdff88 addiu r29,r29,0xff88 00059ed8: afb20068 sw r18,0x0068(r29) 00059edc: 00809021 addu r18,r4,r0 r18 = Unit Type 00059ee0: afb3006c sw r19,0x006c(r29) 00059ee4: 00009821 addu r19,r0,r0 Palette = 0 00059ee8: afb00060 sw r16,0x0060(r29) 00059eec: 00008021 addu r16,r0,r0 Counter = 0 00059ef0: afb10064 sw r17,0x0064(r29) 00059ef4: 27b10010 addiu r17,r29,0x0010 r17 = Stack Pointer 00059ef8: afbf0070 sw r31,0x0070(r29) 00059efc: 0c0166bc jal 0x00059af0 Get Party Data Pointer 00059f00: 02002021 addu r4,r16,r0 r4 = Counter 00059f04: ae220000 sw r2,0x0000(r17) Temp Store Party Data Pointer 00059f08: 26100001 addiu r16,r16,0x0001 Counter ++ 00059f0c: 2a020014 slti r2,r16,0x0014 (doesn't need limit of 0x14) 00059f10: 1440fffa bne r2,r0,0x00059efc Branch if Counter < 0x14 00059f14: 26310004 addiu r17,r17,0x0004 Stack Pointer += 4 00059f18: 00008021 addu r16,r0,r0 Counter = 0 00059f1c: 340500ff ori r5,r0,0x00ff r5 = FF 00059f20: 27a40010 addiu r4,r29,0x0010 r4 = Stack Pointer 00059f24: 8c830000 lw r3,0x0000(r4) Load Party Data Pointer 00059f28: 00000000 nop 00059f2c: 90620001 lbu r2,0x0001(r3) Load Party ID 00059f30: 00000000 nop 00059f34: 1445000a bne r2,r5,0x00059f60 Branch if Unit exists 00059f38: 00000000 nop 00059f3c: a0700001 sb r16,0x0001(r3) Store Party ID = Counter 00059f40: 8c820000 lw r2,0x0000(r4) Load Party Data Pointer 00059f44: 00000000 nop 00059f48: a0530003 sb r19,0x0003(r2) Store Palette = 0 00059f4c: 8c840000 lw r4,0x0000(r4) Load Party Data Pointer 00059f50: 0c0167ff jal 0x00059ffc Out of Battle Unit Generation 00059f54: 02402821 addu r5,r18,r0 r5 = Unit Type 00059f58: 080167dd j 0x00059f74 00059f5c: 02001021 addu r2,r16,r0 Party ID = Counter 00059f60: 26100001 addiu r16,r16,0x0001 Counter ++ 00059f64: 2a020010 slti r2,r16,0x0010 00059f68: 1440ffee bne r2,r0,0x00059f24 Branch if Counter < 0x10 00059f6c: 24840004 addiu r4,r4,0x0004 Stack Pointer += 4 00059f70: 2402ffff addiu r2,r0,0xffff Party ID = None 00059f74: 8fbf0070 lw r31,0x0070(r29) 00059f78: 8fb3006c lw r19,0x006c(r29) 00059f7c: 8fb20068 lw r18,0x0068(r29) 00059f80: 8fb10064 lw r17,0x0064(r29) 00059f84: 8fb00060 lw r16,0x0060(r29) 00059f88: 27bd0078 addiu r29,r29,0x0078 00059f8c: 03e00008 jr r31 00059f90: 00000000 nop Find Unit's Party Data Location 00059f94: 00002821 addu r5,r0,r0 Counter = 0 00059f98: 340600ff ori r6,r0,0x00ff r6 = FF 00059f9c: 3c038005 lui r3,0x8005 00059fa0: 24637f74 addiu r3,r3,0x7f74 r3 = Party Data Pointer 00059fa4: 90620001 lbu r2,0x0001(r3) Load Unit's Party ID 00059fa8: 00000000 nop 00059fac: 10460005 beq r2,r6,0x00059fc4 Branch if Unit doesn't exist 00059fb0: 00000000 nop 00059fb4: 90620000 lbu r2,0x0000(r3) Load Unit's Sprite Set 00059fb8: 00000000 nop 00059fbc: 10440006 beq r2,r4,0x00059fd8 Branch if Sprite Set = ENTD Sprite Set 00059fc0: 00a01021 addu r2,r5,r0 Party ID = Counter 00059fc4: 24a50001 addiu r5,r5,0x0001 Counter ++ 00059fc8: 28a20014 slti r2,r5,0x0014 00059fcc: 1440fff5 bne r2,r0,0x00059fa4 Branch if Counter < 20 00059fd0: 24630100 addiu r3,r3,0x0100 Party Data Pointer += 0x100 00059fd4: 2402ffff addiu r2,r0,0xffff Party ID = FFFF (unit doesn't exist) 00059fd8: 03e00008 jr r31 00059fdc: 00000000 nop Remove Unit from Party 00059fe0: 00042200 sll r4,r4,0x08 ID * 256 00059fe4: 340200ff ori r2,r0,0x00ff r2 = FF 00059fe8: 3c018005 lui r1,0x8005 00059fec: 00240821 addu r1,r1,r4 00059ff0: a0227f75 sb r2,0x7f75(r1) Store Unit's Party ID = FF 00059ff4: 03e00008 jr r31 00059ff8: 00000000 nop Out of Battle Unit Generation 00059ffc: 27bdffc8 addiu r29,r29,0xffc8 0005a000: afb20018 sw r18,0x0018(r29) 0005a004: 00809021 addu r18,r4,r0 r18 = Party Data Pointer 0005a008: afb50024 sw r21,0x0024(r29) 0005a00c: 00a0a821 addu r21,r5,r0 r21 = Unit Type 0005a010: afbf0034 sw r31,0x0034(r29) 0005a014: afbe0030 sw r30,0x0030(r29) 0005a018: afb7002c sw r23,0x002c(r29) 0005a01c: afb60028 sw r22,0x0028(r29) 0005a020: afb40020 sw r20,0x0020(r29) 0005a024: afb3001c sw r19,0x001c(r29) 0005a028: afb10014 sw r17,0x0014(r29) 0005a02c: 16a00006 bne r21,r0,0x0005a048 Branch if Not creating a male 0005a030: afb00010 sw r16,0x0010(r29) 0005a034: 34174100 ori r23,r0,0x4100 Name Flags = 0x4100 0005a038: 34160100 ori r22,r0,0x0100 Name Modifier = 0x100 0005a03c: 34020080 ori r2,r0,0x0080 Sprite Set = Generic Male (Gender = Male) 0005a040: 08016822 j 0x0005a088 0005a044: a2420000 sb r2,0x0000(r18) Store Party Sprite Set 0005a048: 34020001 ori r2,r0,0x0001 0005a04c: 16a20006 bne r21,r2,0x0005a068 Branch if Not creating a Female 0005a050: 34174200 ori r23,r0,0x4200 Name Flags = 0x4200 0005a054: 34160200 ori r22,r0,0x0200 Name Modifier = 0x200 0005a058: 34020081 ori r2,r0,0x0081 Sprite Set = Generic Female 0005a05c: a2420000 sb r2,0x0000(r18) Store Party Sprite Set 0005a060: 08016822 j 0x0005a088 0005a064: 34020040 ori r2,r0,0x0040 Gender = Female 0005a068: 34020003 ori r2,r0,0x0003 0005a06c: 16a2000a bne r21,r2,0x0005a098 Branch if Not creating a Monster 0005a070: 34174000 ori r23,r0,0x4000 Name Flags = 0x4000 0005a074: 34174300 ori r23,r0,0x4300 Name Flags = 0x4300 0005a078: 34160300 ori r22,r0,0x0300 Name Modifier = 0x300 0005a07c: 34020082 ori r2,r0,0x0082 Sprite Set = Monster 0005a080: a2420000 sb r2,0x0000(r18) Store Party Sprite Set 0005a084: 34020020 ori r2,r0,0x0020 Gender = Monster 0005a088: a2420004 sb r2,0x0004(r18) Store Party Gender Byte 0005a08c: 3402004a ori r2,r0,0x004a 0005a090: 0801682d j 0x0005a0b4 0005a094: a2420002 sb r2,0x0002(r18) Store Job ID = Squire 0005a098: 34150002 ori r21,r0,0x0002 Unit Type = Ramza 0005a09c: 0000b021 addu r22,r0,r0 Name Modifier = 0 0005a0a0: 34030001 ori r3,r0,0x0001 Sprite Set/Job ID = C1 Ramza 0005a0a4: 34020080 ori r2,r0,0x0080 Gender = Male 0005a0a8: a2430000 sb r3,0x0000(r18) Store Party Sprite Set 0005a0ac: a2420004 sb r2,0x0004(r18) Store Party Gender Byte 0005a0b0: a2430002 sb r3,0x0002(r18) Store Party Job ID 0005a0b4: 0c0088c3 jal 0x0002230c Random Number Generator 0005a0b8: 00000000 nop 0005a0bc: 000218c0 sll r3,r2,0x03 Random * 8 0005a0c0: 00621821 addu r3,r3,r2 Random * 9 0005a0c4: 000318c0 sll r3,r3,0x03 Random * 72 0005a0c8: 00621821 addu r3,r3,r2 Random * 73 0005a0cc: 00031080 sll r2,r3,0x02 Random * 292 0005a0d0: 00621821 addu r3,r3,r2 Random * 365 0005a0d4: 04610003 bgez r3,0x0005a0e4 Branch if Random is positive 0005a0d8: 000383c3 sra r16,r3,0x0f rand(0..364) 0005a0dc: 24637fff addiu r3,r3,0x7fff 0005a0e0: 000383c3 sra r16,r3,0x0f 0005a0e4: 26100001 addiu r16,r16,0x0001 rand(0..364) + 1 (random birthday) 0005a0e8: 02008821 addu r17,r16,r0 r17 = Birthday 0005a0ec: 0c017976 jal 0x0005e5d8 Calculate Zodiac Symbol 0005a0f0: 3224ffff andi r4,r17,0xffff r4 = Birthday 0005a0f4: 00021100 sll r2,r2,0x04 Zodiac * 16 0005a0f8: 32100100 andi r16,r16,0x0100 r16 = Birthday High Bit 0005a0fc: 00108202 srl r16,r16,0x08 High Bit / 256 0005a100: 02028021 addu r16,r16,r2 Zodiac + High Bit 0005a104: 34020002 ori r2,r0,0x0002 0005a108: a2510005 sb r17,0x0005(r18) Store Party Birthday 0005a10c: 16a20004 bne r21,r2,0x0005a120 Branch if Unit Type != Ramza 0005a110: a2500006 sb r16,0x0006(r18) Store Party Zodiac 0005a114: 34020046 ori r2,r0,0x0046 Brave/Faith = 70 0005a118: 0801685a j 0x0005a168 0005a11c: a2420017 sb r2,0x0017(r18) Store Party Brave 0005a120: 0c0088c3 jal 0x0002230c Random Number Generator 0005a124: 00000000 nop 0005a128: 00021940 sll r3,r2,0x05 Random * 32 0005a12c: 00621023 subu r2,r3,r2 Random * 31 0005a130: 04410002 bgez r2,0x0005a13c Branch if Random is positive 0005a134: 00000000 nop 0005a138: 24427fff addiu r2,r2,0x7fff 0005a13c: 000213c3 sra r2,r2,0x0f rand(0..30) 0005a140: 24420028 addiu r2,r2,0x0028 Brave = 40 + rand(0..30) 0005a144: 0c0088c3 jal 0x0002230c Random Number Generator 0005a148: a2420017 sb r2,0x0017(r18) Store Party Brave 0005a14c: 00021940 sll r3,r2,0x05 Random * 32 0005a150: 00621023 subu r2,r3,r2 Random * 31 0005a154: 04410002 bgez r2,0x0005a160 Branch if Random is positive 0005a158: 00000000 nop 0005a15c: 24427fff addiu r2,r2,0x7fff 0005a160: 000213c3 sra r2,r2,0x0f rand(0..30) 0005a164: 24420028 addiu r2,r2,0x0028 Faith = 40 + rand(0..30) 0005a168: a2420018 sb r2,0x0018(r18) Store Party Faith 0005a16c: 26440007 addiu r4,r18,0x0007 r4 = Party Secondary Skillset Pointer 0005a170: 0c017991 jal 0x0005e644 Data Nullifying (Secondary/R/S/M/Helm/Armor/Accessory) 0005a174: 34050007 ori r5,r0,0x0007 Limit = 7 0005a178: 02402021 addu r4,r18,r0 r4 = Party Data Pointer 0005a17c: 0c0168f8 jal 0x0005a3e0 Generate Unit's Base Raw Stats Prep (Useless Prep) 0005a180: 02a02821 addu r5,r21,r0 r5 = Unit Type 0005a184: 26440028 addiu r4,r18,0x0028 r4 = Party Unlocked Jobs 0005a188: 34050096 ori r5,r0,0x0096 Limit = 0x96 0005a18c: 34020001 ori r2,r0,0x0001 Level 0005a190: a2420016 sb r2,0x0016(r18) Store Level 0005a194: 0c017991 jal 0x0005e644 Data Nullifying 0005a198: a2400015 sb r0,0x0015(r18) Store Experience = 0 0005a19c: 92530004 lbu r19,0x0004(r18) Load Party Gender 0005a1a0: 00000000 nop 0005a1a4: 326200c0 andi r2,r19,0x00c0 0005a1a8: 10400025 beq r2,r0,0x0005a240 Branch if Unit doesn't have a Gender 0005a1ac: 32620080 andi r2,r19,0x0080 0005a1b0: 00008021 addu r16,r0,r0 Current Job = 0 0005a1b4: 34140011 ori r20,r0,0x0011 r20 = 0x11 (doubles as job levels) 0005a1b8: 02408821 addu r17,r18,r0 r17 = Party Data Pointer 0005a1bc: 16140004 bne r16,r20,0x0005a1d0 Branch if Current Job != Bard 0005a1c0: 34020012 ori r2,r0,0x0012 r2 = 0x12 0005a1c4: 32620040 andi r2,r19,0x0040 0005a1c8: 14400018 bne r2,r0,0x0005a22c Branch if Unit is a Female 0005a1cc: 34020012 ori r2,r0,0x0012 0005a1d0: 16020003 bne r16,r2,0x0005a1e0 Branch if Current Job != Dancer 0005a1d4: 32620080 andi r2,r19,0x0080 0005a1d8: 14400014 bne r2,r0,0x0005a22c Branch if Unit is a Male 0005a1dc: 00000000 nop 0005a1e0: 0c0088c3 jal 0x0002230c Random Number Generator 0005a1e4: 00000000 nop 0005a1e8: 00021840 sll r3,r2,0x01 Random * 2 0005a1ec: 00621821 addu r3,r3,r2 Random * 3 0005a1f0: 000318c0 sll r3,r3,0x03 Random * 24 0005a1f4: 00621821 addu r3,r3,r2 Random * 25 0005a1f8: 00031080 sll r2,r3,0x02 Random * 100 0005a1fc: 04410002 bgez r2,0x0005a208 Branch if Random is positive 0005a200: 00000000 nop 0005a204: 24427fff addiu r2,r2,0x7fff 0005a208: 000213c3 sra r2,r2,0x0f rand(0..99) 0005a20c: 24420064 addiu r2,r2,0x0064 JP = 100 + rand(0..99) 0005a210: a2220096 sb r2,0x0096(r17) Store Party Total JP 0005a214: a222006e sb r2,0x006e(r17) Store Party Current JP 0005a218: 001017c2 srl r2,r16,0x1f 0005a21c: 02021021 addu r2,r16,r2 0005a220: 00021043 sra r2,r2,0x01 Current Job / 2 0005a224: 02421021 addu r2,r18,r2 0005a228: a0540064 sb r20,0x0064(r2) Store Party Job Levels = 1 0005a22c: 26100001 addiu r16,r16,0x0001 Current Job ++ 0005a230: 2a020014 slti r2,r16,0x0014 0005a234: 1440ffe1 bne r2,r0,0x0005a1bc Branch if Current Job < 0x14 0005a238: 26310002 addiu r17,r17,0x0002 JP Pointer += 2 0005a23c: 32620080 andi r2,r19,0x0080 0005a240: 10400002 beq r2,r0,0x0005a24c Branch if Unit isn't a Male 0005a244: 34020001 ori r2,r0,0x0001 Dancer Level = 0; Mime = 1 0005a248: a242006d sb r2,0x006d(r18) Store Dancer/Mime Level 0005a24c: 32620040 andi r2,r19,0x0040 0005a250: 10400003 beq r2,r0,0x0005a260 Branch if Unit isn't a Female 0005a254: 00008021 addu r16,r0,r0 Counter = 0 0005a258: 34020010 ori r2,r0,0x0010 Calculator = 1; Bard = 0 0005a25c: a242006c sb r2,0x006c(r18) Store Calculator/Bard Level 0005a260: 3c038006 lui r3,0x8006 0005a264: 2463e90c addiu r3,r3,0xe90c 0005a268: 00151040 sll r2,r21,0x01 Unit Type * 2 0005a26c: 00551021 addu r2,r2,r21 Type * 3 0005a270: 00021080 sll r2,r2,0x02 Type * 12 0005a274: 00432821 addu r5,r2,r3 r5 = Type's Base Data Pointer 0005a278: 92440000 lbu r4,0x0000(r18) Load Party Sprite Set 0005a27c: 34020080 ori r2,r0,0x0080 Unlocked Jobs = Base 0005a280: a2420028 sb r2,0x0028(r18) Store Unlocked Jobs 0005a284: 000411c2 srl r2,r4,0x07 Sprite Set / 128 0005a288: 00021023 subu r2,r0,r2 r2 = -(Sprite Set / 128) 0005a28c: 00822024 and r4,r4,r2 Generic Name ID = Sprite Set - Sprite Set / 128 (or AND 0x7f) 0005a290: 02501821 addu r3,r18,r16 r3 = Party Data Pointer + Counter 0005a294: 00b01021 addu r2,r5,r16 r2 = Base Data Pointer + Counter 0005a298: 90420005 lbu r2,0x0005(r2) Load Base Equipment 0005a29c: 26100001 addiu r16,r16,0x0001 Counter ++ 0005a2a0: a062000e sb r2,0x000e(r3) Store Party Equipment 0005a2a4: 2a020007 slti r2,r16,0x0007 0005a2a8: 1440fff9 bne r2,r0,0x0005a290 Branch if Counter < 7 0005a2ac: 34020002 ori r2,r0,0x0002 0005a2b0: 16a20003 bne r21,r2,0x0005a2c0 Branch if Unit Type != Ramza 0005a2b4: 00161a02 srl r3,r22,0x08 r3 = Name Modifier / 256 0005a2b8: 080168db j 0x0005a36c 0005a2bc: 34050001 ori r5,r0,0x0001 Chosen Name = 1 (Ramza) 0005a2c0: 3c1e8005 lui r30,0x8005 0005a2c4: 27de7f74 addiu r30,r30,0x7f74 r30 = Party Data Pointer 0005a2c8: 341400ff ori r20,r0,0x00ff r20 = FF 0005a2cc: 309300ff andi r19,r4,0x00ff r19 = Generic Name ID 0005a2d0: 340200ff ori r2,r0,0x00ff r2 = FF 0005a2d4: a24200ce sb r2,0x00ce(r18) Store Unit's Name ID = Default (never used?) 0005a2d8: a24300cf sb r3,0x00cf(r18) Store Unit's Name ID high bit = Name Mod / 256 0005a2dc: 0c0088c3 jal 0x0002230c Random Number Generator 0005a2e0: 34110001 ori r17,r0,0x0001 r17 = 1 (Use Chosen Name) 0005a2e4: 00021a00 sll r3,r2,0x08 Random * 256 0005a2e8: 00621023 subu r2,r3,r2 Random * 255 0005a2ec: 04410002 bgez r2,0x0005a2f8 Branch if Random is positive 0005a2f0: 00008021 addu r16,r0,r0 Counter = 0 0005a2f4: 24427fff addiu r2,r2,0x7fff 0005a2f8: 000213c3 sra r2,r2,0x0f rand(0..254) 0005a2fc: 02c22821 addu r5,r22,r2 Chosen Name ID = Name Modifier + rand(0..254) 0005a300: 30a6ffff andi r6,r5,0xffff r6 = Chosen Name ID 0005a304: 03c02021 addu r4,r30,r0 r4 = Party Data Pointer 0005a308: 90820001 lbu r2,0x0001(r4) Load Party ID 0005a30c: 00000000 nop 0005a310: 10540010 beq r2,r20,0x0005a354 Branch if unit doesn't exist 0005a314: 00000000 nop 0005a318: 90830000 lbu r3,0x0000(r4) Load Party Sprite Set 0005a31c: 00000000 nop 0005a320: 000311c2 srl r2,r3,0x07 0005a324: 00021023 subu r2,r0,r2 0005a328: 00621824 and r3,r3,r2 r3 = Generic Name ID 0005a32c: 14730009 bne r3,r19,0x0005a354 Branch if Generic Name ID's differ 0005a330: 00000000 nop 0005a334: 908200cf lbu r2,0x00cf(r4) Load Party Name ID High Bit 0005a338: 908300ce lbu r3,0x00ce(r4) Load Party Name ID 0005a33c: 00021200 sll r2,r2,0x08 High Bit * 256 0005a340: 00621825 or r3,r3,r2 r3 = Name ID 0005a344: 14660003 bne r3,r6,0x0005a354 Branch if Chosen Name isn't already used 0005a348: 00000000 nop 0005a34c: 080168d9 j 0x0005a364 0005a350: 00008821 addu r17,r0,r0 r17 = 0 (Re-roll Name) 0005a354: 26100001 addiu r16,r16,0x0001 Counter ++ 0005a358: 2a020010 slti r2,r16,0x0010 0005a35c: 1440ffea bne r2,r0,0x0005a308 Branch if Counter < 0x10 0005a360: 24840100 addiu r4,r4,0x0100 Party Pointer += 0x100 0005a364: 1220ffdd beq r17,r0,0x0005a2dc Branch if Name already exists 0005a368: 00000000 nop 0005a36c: 00051202 srl r2,r5,0x08 Chosen Name / 256 0005a370: 30a400ff andi r4,r5,0x00ff r4 = Chosen Name 0005a374: 02e42021 addu r4,r23,r4 r4 = Name Flags + Chosen Name 0005a378: a24500ce sb r5,0x00ce(r18) Store Party Name ID 0005a37c: 0c039bb7 jal 0x000e6edc Prep for Loading Text (world) 0005a380: a24200cf sb r2,0x00cf(r18) Store Party Name ID High Bit 0005a384: 00402021 addu r4,r2,r0 r4 = Chosen Name 0005a388: 264500be addiu r5,r18,0x00be r5 = Party Name Pointer 0005a38c: 0c017319 jal 0x0005cc64 Store X into Y (Unit's Name) 0005a390: 34060010 ori r6,r0,0x0010 Limit = 0x10 0005a394: 34020002 ori r2,r0,0x0002 r2 = 2 0005a398: a24000d0 sb r0,0x00d0(r18) Store ? = 0 0005a39c: 16a20003 bne r21,r2,0x0005a3ac Branch if Unit Type != Ramza 0005a3a0: a24000d2 sb r0,0x00d2(r18) Store ? = 0 0005a3a4: 34020004 ori r2,r0,0x0004 Known Abilities = Wish 0005a3a8: a242002b sb r2,0x002b(r18) Store Base Known Abilities 0005a3ac: 8fbf0034 lw r31,0x0034(r29) 0005a3b0: 8fbe0030 lw r30,0x0030(r29) 0005a3b4: 8fb7002c lw r23,0x002c(r29) 0005a3b8: 8fb60028 lw r22,0x0028(r29) 0005a3bc: 8fb50024 lw r21,0x0024(r29) 0005a3c0: 8fb40020 lw r20,0x0020(r29) 0005a3c4: 8fb3001c lw r19,0x001c(r29) 0005a3c8: 8fb20018 lw r18,0x0018(r29) 0005a3cc: 8fb10014 lw r17,0x0014(r29) 0005a3d0: 8fb00010 lw r16,0x0010(r29) 0005a3d4: 27bd0038 addiu r29,r29,0x0038 0005a3d8: 03e00008 jr r31 0005a3dc: 00000000 nop Generate Unit's Base Raw Stats Prep 0005a3e0: 27bdffe8 addiu r29,r29,0xffe8 (USEFUL SECTION IS USEFUL) 0005a3e4: afbf0010 sw r31,0x0010(r29) 0005a3e8: 0c016912 jal 0x0005a448 Generate Unit's Base Raw Stats 0005a3ec: 24840019 addiu r4,r4,0x0019 r4 = Party Raw HP Pointer 0005a3f0: 8fbf0010 lw r31,0x0010(r29) 0005a3f4: 27bd0018 addiu r29,r29,0x0018 0005a3f8: 03e00008 jr r31 0005a3fc: 00000000 nop Prep for Generating Base Raw Stats 0005a400: 27bdffe8 addiu r29,r29,0xffe8 0005a404: afbf0010 sw r31,0x0010(r29) 0005a408: 90830006 lbu r3,0x0006(r4) Load Unit's Gender Byte 0005a40c: 00000000 nop 0005a410: 30620080 andi r2,r3,0x0080 0005a414: 10400003 beq r2,r0,0x0005a424 Branch if Unit isn't a Male 0005a418: 30620040 andi r2,r3,0x0040 0005a41c: 0801690c j 0x0005a430 0005a420: 00002821 addu r5,r0,r0 r5 = 0 (Male) 0005a424: 10400002 beq r2,r0,0x0005a430 Branch if Unit isn't a Female 0005a428: 34050003 ori r5,r0,0x0003 r5 = 3 (Monster) 0005a42c: 34050001 ori r5,r0,0x0001 r5 = 1 (Female) 0005a430: 0c016912 jal 0x0005a448 Generate Unit's Base Raw Stats 0005a434: 24840072 addiu r4,r4,0x0072 r4 = Pointer to Unit's Raw HP 0005a438: 8fbf0010 lw r31,0x0010(r29) 0005a43c: 27bd0018 addiu r29,r29,0x0018 0005a440: 03e00008 jr r31 0005a444: 00000000 nop Generate Unit's Base Raw Stats 0005a448: 27bdffd0 addiu r29,r29,0xffd0 0005a44c: afb40020 sw r20,0x0020(r29) 0005a450: 00a0a021 addu r20,r5,r0 r20 = Gender Value 0005a454: afb20018 sw r18,0x0018(r29) 0005a458: 00009021 addu r18,r0,r0 Counter = 0 0005a45c: afb50024 sw r21,0x0024(r29) 0005a460: 3c158006 lui r21,0x8006 0005a464: 26b5e93c addiu r21,r21,0xe93c r21 = Base Raw Random Mod Pointer 0005a468: afb10014 sw r17,0x0014(r29) 0005a46c: 00808821 addu r17,r4,r0 r17 = Unit's Data Pointer 0005a470: 3c038006 lui r3,0x8006 0005a474: 2463e90c addiu r3,r3,0xe90c r3 = Base Raw Stat Pointer 0005a478: 00141040 sll r2,r20,0x01 Gender Value * 2 0005a47c: 00541021 addu r2,r2,r20 Gender Value * 3 0005a480: 00021080 sll r2,r2,0x02 Gender Value * 12 0005a484: afb3001c sw r19,0x001c(r29) 0005a488: 00439821 addu r19,r2,r3 0005a48c: afbf0028 sw r31,0x0028(r29) 0005a490: afb00010 sw r16,0x0010(r29) 0005a494: 92700000 lbu r16,0x0000(r19) Load Raw Stat Mod 0005a498: 0c0088c3 jal 0x0002230c Random Number Generator 0005a49c: 00108380 sll r16,r16,0x0e Mod * 16384 0005a4a0: 00141880 sll r3,r20,0x02 Gender Value * 4 0005a4a4: 00741821 addu r3,r3,r20 Gender Value * 5 0005a4a8: 00751821 addu r3,r3,r21 0005a4ac: 00721821 addu r3,r3,r18 0005a4b0: 90630000 lbu r3,0x0000(r3) Load Raw Random Mod 0005a4b4: 00000000 nop 0005a4b8: 00430018 mult r2,r3 Random * Mod 0005a4bc: 26730001 addiu r19,r19,0x0001 Raw Pointer ++ 0005a4c0: 26520001 addiu r18,r18,0x0001 Counter ++ 0005a4c4: 00001012 mflo r2 r2 = Random * Mod 0005a4c8: 00021fc2 srl r3,r2,0x1f 0005a4cc: 00431021 addu r2,r2,r3 0005a4d0: 00021043 sra r2,r2,0x01 Mod Bonus = rand(0..Mod*16384 - 1) 0005a4d4: 02028021 addu r16,r16,r2 Base Raw = Raw + Mod Bonus 0005a4d8: 00101202 srl r2,r16,0x08 Base Raw / 256 0005a4dc: a2300000 sb r16,0x0000(r17) Store Raw Stat Byte 1 0005a4e0: 00108403 sra r16,r16,0x10 Base Raw / 65536 0005a4e4: a2220001 sb r2,0x0001(r17) Store Raw Stat Byte 2 0005a4e8: a2300002 sb r16,0x0002(r17) Store Raw Stat Byte 3 0005a4ec: 2a420005 slti r2,r18,0x0005 0005a4f0: 1440ffe8 bne r2,r0,0x0005a494 Branch if Counter < 5 0005a4f4: 26310003 addiu r17,r17,0x0003 Unit's Raw Stat Pointer ++ 0005a4f8: 8fbf0028 lw r31,0x0028(r29) 0005a4fc: 8fb50024 lw r21,0x0024(r29) 0005a500: 8fb40020 lw r20,0x0020(r29) 0005a504: 8fb3001c lw r19,0x001c(r29) 0005a508: 8fb20018 lw r18,0x0018(r29) 0005a50c: 8fb10014 lw r17,0x0014(r29) 0005a510: 8fb00010 lw r16,0x0010(r29) 0005a514: 27bd0030 addiu r29,r29,0x0030 0005a518: 03e00008 jr r31 0005a51c: 00000000 nop Transfer Job's Growths/Mults to Unit 0005a520: 27bdffe8 addiu r29,r29,0xffe8 0005a524: 00802821 addu r5,r4,r0 r5 = Unit's Data Pointer 0005a528: afbf0010 sw r31,0x0010(r29) 0005a52c: 90a20003 lbu r2,0x0003(r5) Load Unit's Job ID 0005a530: 24a50081 addiu r5,r5,0x0081 r5 = Unit's HP Growth Pointer 0005a534: 3406000a ori r6,r0,0x000a Limit = 10 0005a538: 00022040 sll r4,r2,0x01 ID * 2 0005a53c: 00822021 addu r4,r4,r2 ID * 3 0005a540: 3c028006 lui r2,0x8006 0005a544: 8c426194 lw r2,0x6194(r2) Load Job Data Pointer 0005a548: 00042100 sll r4,r4,0x04 ID * 48 0005a54c: 00822021 addu r4,r4,r2 0005a550: 0c017895 jal 0x0005e254 Store X Byte into Y (Stat Growths/Multipliers) 0005a554: 2484000d addiu r4,r4,0x000d r4 = Job's HP Growth Pointer 0005a558: 8fbf0010 lw r31,0x0010(r29) 0005a55c: 27bd0018 addiu r29,r29,0x0018 0005a560: 03e00008 jr r31 0005a564: 00000000 nop Load Ability From Skillset 0005a568: 288200b0 slti r2,r4,0x00b0 0005a56c: 10400017 beq r2,r0,0x0005a5cc Branch if using a monster skillset 0005a570: 28a20016 slti r2,r5,0x0016 0005a574: 1040002d beq r2,r0,0x0005a62c Branch if Counter >= 0x16 0005a578: 00a03021 addu r6,r5,r0 r6 = Counter 0005a57c: 3c038006 lui r3,0x8006 0005a580: 24634a94 addiu r3,r3,0x4a94 0005a584: 00041040 sll r2,r4,0x01 ID * 2 0005a588: 00441021 addu r2,r2,r4 ID * 3 0005a58c: 000210c0 sll r2,r2,0x03 ID * 24 0005a590: 00441021 addu r2,r2,r4 ID * 25 0005a594: 04a10002 bgez r5,0x0005a5a0 Branch if Counter >= 0 0005a598: 00432021 addu r4,r2,r3 r4 = Pointer to Skillsets 0005a59c: 24a60007 addiu r6,r5,0x0007 r6 = Counter + 7 0005a5a0: 000618c3 sra r3,r6,0x03 Counter / 8 (byte to load) 0005a5a4: 00831021 addu r2,r4,r3 0005a5a8: 000318c0 sll r3,r3,0x03 Counter / 8 * 8 0005a5ac: 00a31823 subu r3,r5,r3 r3 = Counter - Counter / 8 * 8 0005a5b0: 90420000 lbu r2,0x0000(r2) Load Ability Flags 0005a5b4: 24630001 addiu r3,r3,0x0001 C Mod = (Counter - Counter / 8 * 8) + 1 0005a5b8: 00621004 sllv r2,r2,r3 Ability Flags * 2^(C Mod) 0005a5bc: 00851821 addu r3,r4,r5 r3 = Ability ID Pointer 0005a5c0: 90630003 lbu r3,0x0003(r3) Load Ability ID 0005a5c4: 08016989 j 0x0005a624 0005a5c8: 30420100 andi r2,r2,0x0100 r2 = Ability ID +0x100 flag 0005a5cc: 288200e0 slti r2,r4,0x00e0 0005a5d0: 10400016 beq r2,r0,0x0005a62c Branch if not a monster skillset 0005a5d4: 28a20004 slti r2,r5,0x0004 0005a5d8: 10400014 beq r2,r0,0x0005a62c Branch if Counter >= 4 0005a5dc: 00a03021 addu r6,r5,r0 r6 = Counter 0005a5e0: 3c038006 lui r3,0x8006 0005a5e4: 24635854 addiu r3,r3,0x5854 (start back some instead of subtracting) 0005a5e8: 00041080 sll r2,r4,0x02 Skillset * 4 0005a5ec: 00441021 addu r2,r2,r4 Skillset * 5 0005a5f0: 04a10002 bgez r5,0x0005a5fc Branch if Counter >= 0 0005a5f4: 00432021 addu r4,r2,r3 0005a5f8: 24a60007 addiu r6,r5,0x0007 0005a5fc: 000618c3 sra r3,r6,0x03 Counter / 8 0005a600: 00831021 addu r2,r4,r3 0005a604: 000318c0 sll r3,r3,0x03 Counter / 8 * 8 0005a608: 00a31823 subu r3,r5,r3 Counter - Counter / 8 * 8 0005a60c: 90420000 lbu r2,0x0000(r2) Load Ability Flags 0005a610: 24630001 addiu r3,r3,0x0001 C Mod = (Counter - Counter / 8 * 8) + 1 0005a614: 00621004 sllv r2,r2,r3 Ability Flags * 2^(C Mod) 0005a618: 00851821 addu r3,r4,r5 0005a61c: 90630001 lbu r3,0x0001(r3) Load Ability ID 0005a620: 30420100 andi r2,r2,0x0100 r2 = Ability ID's 0x100 Flag 0005a624: 0801698c j 0x0005a630 0005a628: 00621025 or r2,r3,r2 r2 = Full Ability ID (Base ID + 0x100 flag) 0005a62c: 00001021 addu r2,r0,r0 r2 = 0 (Attack) 0005a630: 03e00008 jr r31 0005a634: 00000000 nop Store Skillset's Abilities 0005a638: 27bdffd8 addiu r29,r29,0xffd8 0005a63c: afb40020 sw r20,0x0020(r29) 0005a640: 0080a021 addu r20,r4,r0 r20 = Unit's Skillset 0005a644: afb20018 sw r18,0x0018(r29) 0005a648: 00a09021 addu r18,r5,r0 r18 = Check 0005a64c: 2a820100 slti r2,r20,0x0100 0005a650: afbf0024 sw r31,0x0024(r29) 0005a654: afb3001c sw r19,0x001c(r29) 0005a658: afb10014 sw r17,0x0014(r29) 0005a65c: 14400002 bne r2,r0,0x0005a668 Branch if Skillset is valid 0005a660: afb00010 sw r16,0x0010(r29) 0005a664: 0000a021 addu r20,r0,r0 Skillset = 0 0005a668: 00008021 addu r16,r0,r0 Counter = 0 (useless) 0005a66c: 00008821 addu r17,r0,r0 Counter2 = 0 0005a670: 3c138006 lui r19,0x8006 0005a674: 26736204 addiu r19,r19,0x6204 r19 = Pointer to Temp Ability List 0005a678: 02802021 addu r4,r20,r0 r4 = Skillset 0005a67c: 0c01695a jal 0x0005a568 Load Ability From Skillset 0005a680: 02202821 addu r5,r17,r0 r5 = Counter2 0005a684: 00402021 addu r4,r2,r0 r4 = Ability ID 0005a688: 3083ffff andi r3,r4,0xffff r3 = Ability ID 0005a68c: 2c6201a6 sltiu r2,r3,0x01a6 (pretty useless series of checks) 0005a690: 14400008 bne r2,r0,0x0005a6b4 Branch if Ability is an Ability 0005a694: 32420001 andi r2,r18,0x0001 Check = Ability 0005a698: 2c6201c6 sltiu r2,r3,0x01c6 0005a69c: 14400005 bne r2,r0,0x0005a6b4 Branch if Ability is a Reaction 0005a6a0: 32420002 andi r2,r18,0x0002 Check = Reaction 0005a6a4: 2c6201e7 sltiu r2,r3,0x01e7 (should be 0x1e6, but doesn't matter anyway) 0005a6a8: 14400002 bne r2,r0,0x0005a6b4 Branch if Ability is a Support 0005a6ac: 32420008 andi r2,r18,0x0008 Check = Support 0005a6b0: 32420004 andi r2,r18,0x0004 Check = Movement 0005a6b4: 14400002 bne r2,r0,0x0005a6c0 Branch if Check != 0 (Can't get here with r2 = 0) 0005a6b8: 26100001 addiu r16,r16,0x0001 Counter ++ (Counter and Counter2 are always the same) 0005a6bc: 00002021 addu r4,r0,r0 Ability ID = 0 0005a6c0: a6640000 sh r4,0x0000(r19) Store Ability ID 0005a6c4: 26310001 addiu r17,r17,0x0001 Counter2 ++ 0005a6c8: 2a220018 slti r2,r17,0x0018 (Load Ability function stops at 0x16 :/) 0005a6cc: 1440ffea bne r2,r0,0x0005a678 Branch if Counter2 < 0x18 0005a6d0: 26730002 addiu r19,r19,0x0002 Temp Ability List Pointer += 2 0005a6d4: 2a020018 slti r2,r16,0x0018 0005a6d8: 10400009 beq r2,r0,0x0005a700 Branch if Counter >= 0x18 (guaranteed) 0005a6dc: 00101040 sll r2,r16,0x01 Counter * 2 0005a6e0: 3c038006 lui r3,0x8006 0005a6e4: 24636204 addiu r3,r3,0x6204 (think this was just to null the last 0005a6e8: 00431821 addu r3,r2,r3 abilities, but isn't needed anyway) 0005a6ec: a4600000 sh r0,0x0000(r3) Store Ability ID = 0 0005a6f0: 26100001 addiu r16,r16,0x0001 Counter * 2 0005a6f4: 2a020018 slti r2,r16,0x0018 0005a6f8: 1440fffc bne r2,r0,0x0005a6ec Branch if Counter < 0x18 0005a6fc: 24630002 addiu r3,r3,0x0002 Temp Ability List Pointer += 2 0005a700: 3c028006 lui r2,0x8006 0005a704: 24426204 addiu r2,r2,0x6204 r2 = Temp Ability List Pointer 0005a708: 8fbf0024 lw r31,0x0024(r29) 0005a70c: 8fb40020 lw r20,0x0020(r29) 0005a710: 8fb3001c lw r19,0x001c(r29) 0005a714: 8fb20018 lw r18,0x0018(r29) 0005a718: 8fb10014 lw r17,0x0014(r29) 0005a71c: 8fb00010 lw r16,0x0010(r29) 0005a720: 27bd0028 addiu r29,r29,0x0028 0005a724: 03e00008 jr r31 0005a728: 00000000 nop Calculate Ability Pointers and Type 0005a72c: 308401ff andi r4,r4,0x01ff r4 = Ability ID 0005a730: 000418c0 sll r3,r4,0x03 ID * 8 0005a734: 3c028006 lui r2,0x8006 0005a738: 2442ebf0 addiu r2,r2,0xebf0 0005a73c: 00621021 addu r2,r3,r2 0005a740: aca20000 sw r2,0x0000(r5) Store Ability's Data 1 Pointer (usually on the stack) 0005a744: 28820170 slti r2,r4,0x0170 0005a748: 10400008 beq r2,r0,0x0005a76c Branch if Ability isn't a normal Ability 0005a74c: 00641023 subu r2,r3,r4 ID * 7 0005a750: 00021040 sll r2,r2,0x01 ID * 14 0005a754: 3c038006 lui r3,0x8006 0005a758: 2463fbf0 addiu r3,r3,0xfbf0 0005a75c: 00431021 addu r2,r2,r3 0005a760: acc20000 sw r2,0x0000(r6) Store Ability's Data 2 Pointer 0005a764: 08016a1f j 0x0005a87c 0005a768: 00001021 addu r2,r0,r0 r2 = 0 0005a76c: 2882017e slti r2,r4,0x017e 0005a770: 10400007 beq r2,r0,0x0005a790 Branch if Ability isn't an Item 0005a774: 00000000 nop 0005a778: 3c028006 lui r2,0x8006 0005a77c: 24420ea0 addiu r2,r2,0x0ea0 0005a780: 00821021 addu r2,r4,r2 0005a784: acc20000 sw r2,0x0000(r6) Store Item's Ability Pointer 0005a788: 08016a1f j 0x0005a87c 0005a78c: 34020001 ori r2,r0,0x0001 r2 = 1 0005a790: 2882018a slti r2,r4,0x018a 0005a794: 10400007 beq r2,r0,0x0005a7b4 Branch if Ability isn't a Throw 0005a798: 00000000 nop 0005a79c: 3c028006 lui r2,0x8006 0005a7a0: 24420ea2 addiu r2,r2,0x0ea2 0005a7a4: 00821021 addu r2,r4,r2 0005a7a8: acc20000 sw r2,0x0000(r6) Store Throw's Ability Pointer 0005a7ac: 08016a1f j 0x0005a87c 0005a7b0: 34020002 ori r2,r0,0x0002 r2 = 2 0005a7b4: 28820196 slti r2,r4,0x0196 0005a7b8: 10400007 beq r2,r0,0x0005a7d8 Branch if Ability isn't a Jump 0005a7bc: 00041040 sll r2,r4,0x01 ID * 2 0005a7c0: 3c038006 lui r3,0x8006 0005a7c4: 24630d18 addiu r3,r3,0x0d18 0005a7c8: 00431021 addu r2,r2,r3 0005a7cc: acc20000 sw r2,0x0000(r6) Store Jump's Ability Pointer 0005a7d0: 08016a1f j 0x0005a87c 0005a7d4: 34020003 ori r2,r0,0x0003 r2 = 3 0005a7d8: 2882019e slti r2,r4,0x019e 0005a7dc: 10400007 beq r2,r0,0x0005a7fc Branch if Ability isn't a Charge 0005a7e0: 00041040 sll r2,r4,0x01 ID * 2 0005a7e4: 3c038006 lui r3,0x8006 0005a7e8: 24630d18 addiu r3,r3,0x0d18 0005a7ec: 00431021 addu r2,r2,r3 0005a7f0: acc20000 sw r2,0x0000(r6) Store Charge's Ability Pointer 0005a7f4: 08016a1f j 0x0005a87c 0005a7f8: 34020004 ori r2,r0,0x0004 r2 = 4 0005a7fc: 288201a6 slti r2,r4,0x01a6 0005a800: 10400007 beq r2,r0,0x0005a820 Branch if Ability isn't Math 0005a804: 00000000 nop 0005a808: 3c028006 lui r2,0x8006 0005a80c: 24420eb6 addiu r2,r2,0x0eb6 0005a810: 00821021 addu r2,r4,r2 0005a814: acc20000 sw r2,0x0000(r6) Store Math's Ability Pointer 0005a818: 08016a1f j 0x0005a87c 0005a81c: 34020005 ori r2,r0,0x0005 r2 = 5 0005a820: 288201c6 slti r2,r4,0x01c6 0005a824: 10400007 beq r2,r0,0x0005a844 Branch if Ability isn't a Reaction 0005a828: 00000000 nop 0005a82c: 3c028006 lui r2,0x8006 0005a830: 24420eb6 addiu r2,r2,0x0eb6 0005a834: 00821021 addu r2,r4,r2 0005a838: acc20000 sw r2,0x0000(r6) Store Reaction's Ability Pointer 0005a83c: 08016a1f j 0x0005a87c 0005a840: 34020006 ori r2,r0,0x0006 r2 = 6 0005a844: 288201e6 slti r2,r4,0x01e6 0005a848: 14400007 bne r2,r0,0x0005a868 Branch if Ability is a Support 0005a84c: 00000000 nop 0005a850: 3c028006 lui r2,0x8006 0005a854: 24420eb6 addiu r2,r2,0x0eb6 0005a858: 00821021 addu r2,r4,r2 0005a85c: acc20000 sw r2,0x0000(r6) Store Movement's Ability Pointer 0005a860: 08016a1f j 0x0005a87c 0005a864: 34020008 ori r2,r0,0x0008 r2 = 8 0005a868: 3c028006 lui r2,0x8006 0005a86c: 24420eb6 addiu r2,r2,0x0eb6 0005a870: 00821021 addu r2,r4,r2 0005a874: acc20000 sw r2,0x0000(r6) Store Support's Ability Pointer 0005a878: 34020007 ori r2,r0,0x0007 r2 = 7 0005a87c: 03e00008 jr r31 0005a880: 00000000 nop Get Item Data Pointer 0005a884: 308400ff andi r4,r4,0x00ff r4 = Item ID 0005a888: 00041040 sll r2,r4,0x01 ID * 2 0005a88c: 00441021 addu r2,r2,r4 ID * 3 0005a890: 00021080 sll r2,r2,0x02 ID * 12 0005a894: 3c038006 lui r3,0x8006 0005a898: 24632eb8 addiu r3,r3,0x2eb8 0005a89c: 03e00008 jr r31 0005a8a0: 00431021 addu r2,r2,r3 r2 = Item Data Pointer Get Job Data Pointer 0005a8a4: 288200a0 slti r2,r4,0x00a0 0005a8a8: 14400003 bne r2,r0,0x0005a8b8 Branch if Job ID < 0xa0 (Legal ID) 0005a8ac: 00041040 sll r2,r4,0x01 ID * 2 0005a8b0: 08016a33 j 0x0005a8cc 0005a8b4: 00001021 addu r2,r0,r0 r2 = 0 0005a8b8: 00441021 addu r2,r2,r4 ID * 3 0005a8bc: 00021100 sll r2,r2,0x04 ID * 48 0005a8c0: 3c038006 lui r3,0x8006 0005a8c4: 246310b8 addiu r3,r3,0x10b8 0005a8c8: 00431021 addu r2,r2,r3 r2 = Job's Data Pointer 0005a8cc: 03e00008 jr r31 0005a8d0: 00000000 nop Initialize Unit's Job Data 0005a8d4: 27bdffd8 addiu r29,r29,0xffd8 0005a8d8: afb20018 sw r18,0x0018(r29) 0005a8dc: 00809021 addu r18,r4,r0 r18 = Unit's Data Pointer 0005a8e0: afb3001c sw r19,0x001c(r29) 0005a8e4: 00a09821 addu r19,r5,r0 r19 = Unit's Party ID 0005a8e8: afbf0020 sw r31,0x0020(r29) 0005a8ec: afb10014 sw r17,0x0014(r29) 0005a8f0: afb00010 sw r16,0x0010(r29) 0005a8f4: 3c018006 lui r1,0x8006 0005a8f8: ac266200 sw r6,0x6200(r1) Store ? 0005a8fc: 0c0166bc jal 0x00059af0 Get Party Data Pointer 0005a900: 02602021 addu r4,r19,r0 r4 = Unit's Party ID 0005a904: 00408821 addu r17,r2,r0 r17 = Unit's Party Data Pointer 0005a908: 12200021 beq r17,r0,0x0005a990 Branch if Pointer doesn't exist 0005a90c: 340200ff ori r2,r0,0x00ff r2 = FF 0005a910: 92230001 lbu r3,0x0001(r17) Load Unit's Party ID 0005a914: 00000000 nop 0005a918: 1062001d beq r3,r2,0x0005a990 Branch if Unit doesn't exist 0005a91c: 26240096 addiu r4,r17,0x0096 r4 = Pointer to Unit's Total Base Job JP 0005a920: 26300064 addiu r16,r17,0x0064 r16 = Pointer to Unit's Base/Chemist Job Level 0005a924: 0c0177ce jal 0x0005df38 Initialize Unit's Job Levels 0005a928: 02002821 addu r5,r16,r0 r5 = Pointer to Unit's Base/Chemist Job Level 0005a92c: 92250004 lbu r5,0x0004(r17) Load Unit's Gender Byte 0005a930: 0c017705 jal 0x0005dc14 Calculate Unlocked Jobs 0005a934: 02002021 addu r4,r16,r0 r4 = Pointer to Unit's Base/Chemist Job Level 0005a938: 26240028 addiu r4,r17,0x0028 r4 = Pointer to Unit's Unlocked Jobs 0005a93c: 0c0177b6 jal 0x0005ded8 Store 3-Byte Data 0005a940: 00402821 addu r5,r2,r0 r5 = Unlocked Jobs 0005a944: 0c0177eb jal 0x0005dfac Initialize Some Unit Data 0005a948: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005a94c: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005a950: 02202821 addu r5,r17,r0 r5 = Unit's Party Data Pointer 0005a954: 0c016c34 jal 0x0005b0d0 Initialize Unit's Battle Data 0005a958: a2530002 sb r19,0x0002(r18) Store Unit's Party ID 0005a95c: 0c016d77 jal 0x0005b5dc Transfer Job's Data to Unit's Data 0005a960: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005a964: 0c016de8 jal 0x0005b7a0 Enable Unit's R/S/M Flags 0005a968: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005a96c: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005a970: 0c016e20 jal 0x0005b880 Calculate Actual Stats 0005a974: 00002821 addu r5,r0,r0 r5 = 0 (Level UP) 0005a978: 0c01709f jal 0x0005c27c Equippable Item Setting (Support/Female-only) 0005a97c: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005a980: 0c016ac0 jal 0x0005ab00 Equipment/Move/Jump +X/Name Storing/Generation 0005a984: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005a988: 08016a65 j 0x0005a994 0005a98c: 00001021 addu r2,r0,r0 r2 = 0 (success) 0005a990: 2402ffff addiu r2,r0,0xffff r2 = FFFF (fail) 0005a994: 8fbf0020 lw r31,0x0020(r29) 0005a998: 8fb3001c lw r19,0x001c(r29) 0005a99c: 8fb20018 lw r18,0x0018(r29) 0005a9a0: 8fb10014 lw r17,0x0014(r29) 0005a9a4: 8fb00010 lw r16,0x0010(r29) 0005a9a8: 27bd0028 addiu r29,r29,0x0028 0005a9ac: 03e00008 jr r31 0005a9b0: 00000000 nop Unit Battle Initialization 0005a9b4: 27bdffe0 addiu r29,r29,0xffe0 0005a9b8: afb00010 sw r16,0x0010(r29) 0005a9bc: 00808021 addu r16,r4,r0 r16 = Unit's Data Pointer 0005a9c0: afb10014 sw r17,0x0014(r29) 0005a9c4: afb20018 sw r18,0x0018(r29) 0005a9c8: 00e09021 addu r18,r7,r0 r18 = r7 0005a9cc: 34020082 ori r2,r0,0x0082 r2 = 0x82 0005a9d0: afbf001c sw r31,0x001c(r29) 0005a9d4: 3c018006 lui r1,0x8006 0005a9d8: ac266200 sw r6,0x6200(r1) Store Battle Initialization Flag? (1 in 0x59b18) 0005a9dc: 12420008 beq r18,r2,0x0005aa00 Branch if r18 = 0x82 (set in one part of code, rest are 0) 0005a9e0: 00a08821 addu r17,r5,r0 r17 = ENTD Data Pointer 0005a9e4: 0c0177eb jal 0x0005dfac Initialize Some Unit Data 0005a9e8: 00000000 nop 0005a9ec: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005a9f0: 0c016b07 jal 0x0005ac1c ENTD Data Calculation 0005a9f4: 02202821 addu r5,r17,r0 r5 = ENTD Data Pointer 0005a9f8: 1440003a bne r2,r0,0x0005aae4 Branch if ENTD Data Calculation failed 0005a9fc: 2402ffff addiu r2,r0,0xffff r2 = FFFF 0005aa00: 1640000f bne r18,r0,0x0005aa40 Branch if r18 = 0 0005aa04: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005aa08: 92220001 lbu r2,0x0001(r17) Load ENTD's Gender Byte 0005aa0c: 00000000 nop 0005aa10: 30420008 andi r2,r2,0x0008 0005aa14: 14400033 bne r2,r0,0x0005aae4 Branch if Unit has Load Formation 0005aa18: 00001021 addu r2,r0,r0 r2 = 0 0005aa1c: 92220000 lbu r2,0x0000(r17) Load ENTD Sprite Set 0005aa20: 00000000 nop 0005aa24: 2c420004 sltiu r2,r2,0x0004 0005aa28: 10400005 beq r2,r0,0x0005aa40 Branch if Unit isn't Ramza 0005aa2c: 00000000 nop 0005aa30: 92220004 lbu r2,0x0004(r17) Load ENTD Birth Month 0005aa34: 00000000 nop 0005aa38: 1040002a beq r2,r0,0x0005aae4 Branch if Birth Month = 0 0005aa3c: 00001021 addu r2,r0,r0 r2 = 0 0005aa40: 0c016cad jal 0x0005b2b4 Calculate ENTD Unit Jobs 0005aa44: 02202821 addu r5,r17,r0 r5 = ENTD Data Pointer 0005aa48: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005aa4c: 0c016e9c jal 0x0005ba70 Calculate Unit's Abilities 0005aa50: 02202821 addu r5,r17,r0 r5 = ENTD Data Pointer 0005aa54: 0c016de8 jal 0x0005b7a0 Enable Unit's R/S/M Flags 0005aa58: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005aa5c: 0c016900 jal 0x0005a400 Prep for Generating Base Raw Stats 0005aa60: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005aa64: 0c016948 jal 0x0005a520 Transfer Job's Growths/Mults to Unit 0005aa68: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005aa6c: 92030002 lbu r3,0x0002(r16) Load Unit's Party ID 0005aa70: 340200ff ori r2,r0,0x00ff r2 = FF 0005aa74: 14620003 bne r3,r2,0x0005aa84 Branch if Unit is in the party 0005aa78: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005aa7c: 340200fe ori r2,r0,0x00fe r2 = FE 0005aa80: a2020002 sb r2,0x0002(r16) Store Unit's Party ID = FE (just for leveling up) 0005aa84: 0c016e20 jal 0x0005b880 Calculate Actual Stats 0005aa88: 00002821 addu r5,r0,r0 r5 = 0 (Level UP) 0005aa8c: 92030002 lbu r3,0x0002(r16) Load Unit's Party ID 0005aa90: 340200fe ori r2,r0,0x00fe r2 = FE 0005aa94: 14620002 bne r3,r2,0x0005aaa0 Branch if Unit is in the party 0005aa98: 340200ff ori r2,r0,0x00ff r2 = FF 0005aa9c: a2020002 sb r2,0x0002(r16) Store Unit's Party ID = FF 0005aaa0: 0c01709f jal 0x0005c27c Equippable Item Setting (Support/Female-only) 0005aaa4: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005aaa8: 34020082 ori r2,r0,0x0082 r2 = 0x82 0005aaac: 12420008 beq r18,r2,0x0005aad0 Branch if r18 = 0x82 0005aab0: 00000000 nop 0005aab4: 92020002 lbu r2,0x0002(r16) Load Unit's Party ID 0005aab8: 00000000 nop 0005aabc: 2c420014 sltiu r2,r2,0x0014 0005aac0: 14400003 bne r2,r0,0x0005aad0 Branch if Unit is in the party/ID is legal 0005aac4: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005aac8: 0c016f7c jal 0x0005bdf0 Calculate/Store ENTD Unit Equipment 0005aacc: 02202821 addu r5,r17,r0 r5 = ENTD Pointer 0005aad0: 0c016ac0 jal 0x0005ab00 Equipment/Move/Jump +X/Name Storing/Generation 0005aad4: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005aad8: 0c016ad2 jal 0x0005ab48 Store Ramza's Name/Birthday/Zodiac 0005aadc: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005aae0: 00001021 addu r2,r0,r0 r2 = 0 (Success) 0005aae4: 8fbf001c lw r31,0x001c(r29) 0005aae8: 8fb20018 lw r18,0x0018(r29) 0005aaec: 8fb10014 lw r17,0x0014(r29) 0005aaf0: 8fb00010 lw r16,0x0010(r29) 0005aaf4: 27bd0020 addiu r29,r29,0x0020 0005aaf8: 03e00008 jr r31 0005aafc: 00000000 nop Equipment/Move/Jump +X/Name Storing/Generation 0005ab00: 27bdffe8 addiu r29,r29,0xffe8 0005ab04: afb00010 sw r16,0x0010(r29) 0005ab08: afbf0014 sw r31,0x0014(r29) 0005ab0c: 0c0170e6 jal 0x0005c398 Equipment Stat Setting 0005ab10: 00808021 addu r16,r4,r0 r16 = Unit's Data Pointer 0005ab14: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005ab18: 0c017172 jal 0x0005c5c8 Equipment Attribute Setting 0005ab1c: 34050001 ori r5,r0,0x0001 r5 = 1 (Level UP calculation) 0005ab20: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005ab24: 0c01723b jal 0x0005c8ec Move/Jump +X Calculation 0005ab28: 00002821 addu r5,r0,r0 r5 = 0 (Set HP/MP to Max) 0005ab2c: 0c017261 jal 0x0005c984 Store/Generate Character Names 0005ab30: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005ab34: 8fbf0014 lw r31,0x0014(r29) 0005ab38: 8fb00010 lw r16,0x0010(r29) 0005ab3c: 27bd0018 addiu r29,r29,0x0018 0005ab40: 03e00008 jr r31 0005ab44: 00000000 nop Store Ramza's Name/Birthday/Zodiac 0005ab48: 27bdffe0 addiu r29,r29,0xffe0 0005ab4c: afb10014 sw r17,0x0014(r29) 0005ab50: 00808821 addu r17,r4,r0 r17 = Unit's Data Pointer 0005ab54: afbf0018 sw r31,0x0018(r29) 0005ab58: afb00010 sw r16,0x0010(r29) 0005ab5c: 92220000 lbu r2,0x0000(r17) Load Unit's Sprite Set 0005ab60: 00000000 nop 0005ab64: 2c420004 sltiu r2,r2,0x0004 0005ab68: 10400026 beq r2,r0,0x0005ac04 Branch if Unit isn't Ramza 0005ab6c: 00008021 addu r16,r0,r0 Counter = 0 0005ab70: 0c0166bc jal 0x00059af0 Get Party Data Pointer 0005ab74: 02002021 addu r4,r16,r0 Party ID = Counter 0005ab78: 00402021 addu r4,r2,r0 r4 = Party Data Pointer 0005ab7c: 90830001 lbu r3,0x0001(r4) Load Unit's Party ID 0005ab80: 340200ff ori r2,r0,0x00ff 0005ab84: 1062001b beq r3,r2,0x0005abf4 Branch if Unit doesn't exist 0005ab88: 00000000 nop 0005ab8c: 90820000 lbu r2,0x0000(r4) Load Unit's Party Sprite Set 0005ab90: 00000000 nop 0005ab94: 2c420004 sltiu r2,r2,0x0004 0005ab98: 10400017 beq r2,r0,0x0005abf8 Branch if Unit isn't Ramza 0005ab9c: 26100001 addiu r16,r16,0x0001 Counter ++ 0005aba0: 2625012c addiu r5,r17,0x012c r5 = Unit's Name 0005aba4: 34060010 ori r6,r0,0x0010 Limit = 16 0005aba8: 90820006 lbu r2,0x0006(r4) Load Unit's Party Zodiac Sign 0005abac: 90830005 lbu r3,0x0005(r4) Load Unit's Party Birthday 0005abb0: 00021200 sll r2,r2,0x08 Zodiac * 256 0005abb4: 00621821 addu r3,r3,r2 Full Birthday = Birthday + Zodiac * 256 0005abb8: 96220008 lhu r2,0x0008(r17) Load Unit's Birthday + Zodiac 0005abbc: 306301ff andi r3,r3,0x01ff r3 = Party Birthday 0005abc0: 3042fe00 andi r2,r2,0xfe00 r2 = Unit's Zodiac 0005abc4: 00431025 or r2,r2,r3 Enable Unit's Party Birthday 0005abc8: a6220008 sh r2,0x0008(r17) Store Unit's New Birthday 0005abcc: 90830006 lbu r3,0x0006(r4) Load Unit's Party Zodiac Sign 0005abd0: 248400be addiu r4,r4,0x00be r4 = Unit's Party Name 0005abd4: 30420fff andi r2,r2,0x0fff r2 = Unit's Birthday 0005abd8: 00031902 srl r3,r3,0x04 Party Zodiac / 16 0005abdc: 00031b00 sll r3,r3,0x0c Full Zodiac = Party Zodiac / 16 * 4096 0005abe0: 00431025 or r2,r2,r3 Enable Unit's Party Zodiac 0005abe4: 0c017895 jal 0x0005e254 Store X Byte into Y (Unit's Name) 0005abe8: a6220008 sh r2,0x0008(r17) Store Unit's New Birthday + Zodiac 0005abec: 08016b01 j 0x0005ac04 0005abf0: 00000000 nop 0005abf4: 26100001 addiu r16,r16,0x0001 Counter ++ 0005abf8: 2a020014 slti r2,r16,0x0014 0005abfc: 1440ffdc bne r2,r0,0x0005ab70 Branch if Counter < 20 0005ac00: 00000000 nop 0005ac04: 8fbf0018 lw r31,0x0018(r29) 0005ac08: 8fb10014 lw r17,0x0014(r29) 0005ac0c: 8fb00010 lw r16,0x0010(r29) 0005ac10: 27bd0020 addiu r29,r29,0x0020 0005ac14: 03e00008 jr r31 0005ac18: 00000000 nop ENTD Data Calculation 0005ac1c: 27bdffd0 addiu r29,r29,0xffd0 0005ac20: afb20018 sw r18,0x0018(r29) 0005ac24: 00a09021 addu r18,r5,r0 r18 = ENTD Pointer 0005ac28: afbf0028 sw r31,0x0028(r29) 0005ac2c: afb50024 sw r21,0x0024(r29) 0005ac30: afb40020 sw r20,0x0020(r29) 0005ac34: afb3001c sw r19,0x001c(r29) 0005ac38: afb10014 sw r17,0x0014(r29) 0005ac3c: afb00010 sw r16,0x0010(r29) 0005ac40: 92420017 lbu r2,0x0017(r18) Load ENTD Palette 0005ac44: 00809821 addu r19,r4,r0 r19 = Unit's Data Pointer 0005ac48: a2620004 sb r2,0x0004(r19) Store Unit's Palette 0005ac4c: 92420018 lbu r2,0x0018(r18) Load ENTD Flags 0005ac50: 00000000 nop 0005ac54: a2620005 sb r2,0x0005(r19) Store Unit's ENTD Flags 0005ac58: 92420018 lbu r2,0x0018(r18) Load ENTD Flags 0005ac5c: 00000000 nop 0005ac60: a26201ba sb r2,0x01ba(r19) Store Unit's Modified ENTD Flags 0005ac64: 92500001 lbu r16,0x0001(r18) Load ENTD Gender Byte 0005ac68: 00000000 nop 0005ac6c: 32020008 andi r2,r16,0x0008 0005ac70: 10400005 beq r2,r0,0x0005ac88 Branch if Unit doesn't have Load Formation 0005ac74: 00000000 nop 0005ac78: 0c016c0e jal 0x0005b038 Prep for Initializing Unit's Job Data 0005ac7c: 00000000 nop 0005ac80: 08016b63 j 0x0005ad8c 0005ac84: 0040a021 addu r20,r2,r0 r2 = Success Check 0005ac88: 92420000 lbu r2,0x0000(r18) Load Unit's ENTD Sprite Set 0005ac8c: 00000000 nop 0005ac90: 2c420004 sltiu r2,r2,0x0004 0005ac94: 1040003e beq r2,r0,0x0005ad90 Branch if Unit isn't Ramza 0005ac98: 00002021 addu r4,r0,r0 r4 = 0 0005ac9c: 92420004 lbu r2,0x0004(r18) Load Unit's ENTD Birth Month 0005aca0: 00000000 nop 0005aca4: 1440003a bne r2,r0,0x0005ad90 Branch if Month != 0 (Ramza Initialization) 0005aca8: 00000000 nop 0005acac: 00008821 addu r17,r0,r0 Counter = 0 0005acb0: 3c158006 lui r21,0x8006 0005acb4: 26b510e8 addiu r21,r21,0x10e8 r21 = Ramza's Job Data Pointer 0005acb8: 0c0166bc jal 0x00059af0 Get Party Data Pointer 0005acbc: 02202021 addu r4,r17,r0 r4 = Counter 0005acc0: 00402021 addu r4,r2,r0 r4 = Party Data Pointer 0005acc4: 90830001 lbu r3,0x0001(r4) Load Unit's Party ID 0005acc8: 340200ff ori r2,r0,0x00ff r2 = FF 0005accc: 1062002b beq r3,r2,0x0005ad7c Branch if Unit's Party ID = FF 0005acd0: 00000000 nop 0005acd4: 90820000 lbu r2,0x0000(r4) Load Unit's Sprite Set 0005acd8: 00000000 nop 0005acdc: 2c420004 sltiu r2,r2,0x0004 0005ace0: 10400026 beq r2,r0,0x0005ad7c Branch if Unit isn't Ramza 0005ace4: 00000000 nop 0005ace8: 90820002 lbu r2,0x0002(r4) Load Unit's Job ID 0005acec: 92430000 lbu r3,0x0000(r18) Load Unit's ENTD Sprite Set 0005acf0: 2c420003 sltiu r2,r2,0x0003 0005acf4: a0830000 sb r3,0x0000(r4) Store Unit's Sprite Set 0005acf8: 90830007 lbu r3,0x0007(r4) Load Unit's Secondary Skillset 0005acfc: 10400004 beq r2,r0,0x0005ad10 Branch if Unit's Job isn't Ramza's Squire 0005ad00: 306300ff andi r3,r3,0x00ff 0005ad04: 92420000 lbu r2,0x0000(r18) Load Unit's ENTD Sprite Set 0005ad08: 00000000 nop 0005ad0c: a0820002 sb r2,0x0002(r4) Store Unit's Job ID = Sprite Set 0005ad10: 92a20000 lbu r2,0x0000(r21) Load Job's Skillset 0005ad14: 00000000 nop 0005ad18: 10620009 beq r3,r2,0x0005ad40 Branch if Job's Skillset = Unit's Secondary Skillset 0005ad1c: 00000000 nop 0005ad20: 92a20030 lbu r2,0x0030(r21) Load 2nd Job's Skillset 0005ad24: 00000000 nop 0005ad28: 10620005 beq r3,r2,0x0005ad40 Branch if 2nd Job's Skillset = Unit's Secondary Skillset 0005ad2c: 00000000 nop 0005ad30: 92a20060 lbu r2,0x0060(r21) Load 3rd Job's Skillset 0005ad34: 00000000 nop 0005ad38: 1462000b bne r3,r2,0x0005ad68 Branch if 3rd Job's Skillset != Unit's Secondary Skillset 0005ad3c: 00000000 nop 0005ad40: 92420000 lbu r2,0x0000(r18) Load Unit's ENTD Sprite Set 0005ad44: 00000000 nop 0005ad48: 00021840 sll r3,r2,0x01 ID * 2 0005ad4c: 00621821 addu r3,r3,r2 ID * 3 0005ad50: 00031900 sll r3,r3,0x04 ID * 48 0005ad54: 3c018006 lui r1,0x8006 0005ad58: 00230821 addu r1,r1,r3 0005ad5c: 902210b8 lbu r2,0x10b8(r1) Load Sprite Set's Job's Skillset 0005ad60: 00000000 nop 0005ad64: a0820007 sb r2,0x0007(r4) Store Unit's Secondary Skillset = Sprite Set's Job's Skillset 0005ad68: 02602021 addu r4,r19,r0 r4 = Units Data Pointer 0005ad6c: 0c016c0e jal 0x0005b038 Prep for Initializing Unit's Job Data 0005ad70: 02402821 addu r5,r18,r0 r5 = ENTD Pointer 0005ad74: 0040a021 addu r20,r2,r0 r20 = Success Check 0005ad78: 34100008 ori r16,r0,0x0008 Gender Byte = 8 (Load Formation Flag) 0005ad7c: 26310001 addiu r17,r17,0x0001 Counter ++ 0005ad80: 2a220014 slti r2,r17,0x0014 0005ad84: 1440ffcc bne r2,r0,0x0005acb8 Branch if Counter < 20 0005ad88: 00000000 nop 0005ad8c: 00002021 addu r4,r0,r0 Counter = 0 0005ad90: 3c028006 lui r2,0x8006 0005ad94: 8c426238 lw r2,0x6238(r2) Load Current ENTD Pointer 0005ad98: 02641821 addu r3,r19,r4 r3 = Unit's Data Pointer + Counter 0005ad9c: 00441021 addu r2,r2,r4 r2 = Current ENTD Pointer + Counter 0005ada0: 90420021 lbu r2,0x0021(r2) Load ENTD AI Data 0005ada4: 24840001 addiu r4,r4,0x0001 Counter ++ 0005ada8: a0620165 sb r2,0x0165(r3) Store Unit's ENTD AI Data 0005adac: 28820007 slti r2,r4,0x0007 0005adb0: 1440fff7 bne r2,r0,0x0005ad90 Branch if Counter < 7 0005adb4: 32020008 andi r2,r16,0x0008 r2 = Unit's Load Formation Flag 0005adb8: 14400095 bne r2,r0,0x0005b010 Branch if Unit has Load Formation 0005adbc: 02801021 addu r2,r20,r0 r2 = Success Check 0005adc0: a2700006 sb r16,0x0006(r19) Store Unit's Gender Byte 0005adc4: 92430000 lbu r3,0x0000(r18) Load ENTD Sprite Set 0005adc8: 340200ff ori r2,r0,0x00ff r2 = FF 0005adcc: a2620002 sb r2,0x0002(r19) Store Unit's Party ID = FF 0005add0: a2630000 sb r3,0x0000(r19) Store Unit's Sprite Set = ENTD Sprite Set 0005add4: 92500003 lbu r16,0x0003(r18) Load ENTD Level 0005add8: 00000000 nop 0005addc: 320300ff andi r3,r16,0x00ff 0005ade0: 10600003 beq r3,r0,0x0005adf0 Branch if Level = Party Level 0005ade4: 340200fe ori r2,r0,0x00fe r2 = FE 0005ade8: 14620010 bne r3,r2,0x0005ae2c Branch if Level != Party Level: Random 0005adec: 2c620064 sltiu r2,r3,0x0064 0005adf0: 3c038006 lui r3,0x8006 0005adf4: 90636308 lbu r3,0x6308(r3) Load Highest Party Level 0005adf8: 00000000 nop 0005adfc: 000310c2 srl r2,r3,0x03 High Level / 8 0005ae00: 24500001 addiu r16,r2,0x0001 ENTD Level = High Level / 8 + 1 0005ae04: 0c0088c3 jal 0x0002230c Random Number Generator 0005ae08: 00628823 subu r17,r3,r2 r17 = High Level - High Level / 8 0005ae0c: 02020018 mult r16,r2 (High Level / 8 + 1) * Random 0005ae10: 00001012 mflo r2 0005ae14: 04410002 bgez r2,0x0005ae20 Branch if Result is Positive 0005ae18: 00000000 nop 0005ae1c: 24427fff addiu r2,r2,0x7fff 0005ae20: 000213c3 sra r2,r2,0x0f Result = rand(0..High Level / 8) 0005ae24: 08016b92 j 0x0005ae48 0005ae28: 02228021 addu r16,r17,r2 r16 = rand((High Level - High Level / 8)..High Level) 0005ae2c: 14400007 bne r2,r0,0x0005ae4c Branch if Level < 100 0005ae30: 02001821 addu r3,r16,r0 r3 = ENTD Level 0005ae34: 3c028006 lui r2,0x8006 0005ae38: 90426308 lbu r2,0x6308(r2) Load Highest Party Level 0005ae3c: 00000000 nop 0005ae40: 2442009c addiu r2,r2,0x009c High Level += 0x9c 0005ae44: 02028021 addu r16,r16,r2 Level = Level + High Level + 0x9c 0005ae48: 02001821 addu r3,r16,r0 r3 = " (amount over 0x100 = Level to obtain) 0005ae4c: 306200ff andi r2,r3,0x00ff 0005ae50: 14400003 bne r2,r0,0x0005ae60 Branch if Level != 0 0005ae54: 00608021 addu r16,r3,r0 0005ae58: 34030001 ori r3,r0,0x0001 0005ae5c: 00608021 addu r16,r3,r0 Level = 1 0005ae60: 320200ff andi r2,r16,0x00ff 0005ae64: 2c420064 sltiu r2,r2,0x0064 0005ae68: 14400002 bne r2,r0,0x0005ae74 Branch if Level < 100 0005ae6c: 00000000 nop 0005ae70: 34100063 ori r16,r0,0x0063 Level = 99 0005ae74: a2700022 sb r16,0x0022(r19) Store Unit's Level 0005ae78: 92430004 lbu r3,0x0004(r18) Load ENTD Birth Month 0005ae7c: 92500005 lbu r16,0x0005(r18) Load ENTD Birth Day 0005ae80: 10600007 beq r3,r0,0x0005aea0 Branch if Birth Month = 0 0005ae84: 2c62000d sltiu r2,r3,0x000d 0005ae88: 10400005 beq r2,r0,0x0005aea0 Branch if Month isn't legal 0005ae8c: 320200ff andi r2,r16,0x00ff 0005ae90: 10400003 beq r2,r0,0x0005aea0 Branch if Day is 0 0005ae94: 2c420020 sltiu r2,r2,0x0020 0005ae98: 1440000f bne r2,r0,0x0005aed8 Branch if Day is legal 0005ae9c: 00031040 sll r2,r3,0x01 Month * 2 0005aea0: 0c0088c3 jal 0x0002230c Random Number Generator 0005aea4: 00000000 nop 0005aea8: 000218c0 sll r3,r2,0x03 Random * 8 0005aeac: 00621821 addu r3,r3,r2 Random * 9 0005aeb0: 000318c0 sll r3,r3,0x03 Random * 72 0005aeb4: 00621821 addu r3,r3,r2 Random * 73 0005aeb8: 00031080 sll r2,r3,0x02 Random * 292 0005aebc: 00621021 addu r2,r3,r2 Random * 365 0005aec0: 04410002 bgez r2,0x0005aecc Branch if Random * 365 is positive (it is) 0005aec4: 00000000 nop 0005aec8: 24427fff addiu r2,r2,0x7fff 0005aecc: 000213c3 sra r2,r2,0x0f Birthday = rand(0..364) 0005aed0: 08016bbb j 0x0005aeec 0005aed4: 24420001 addiu r2,r2,0x0001 Birthday += 1 0005aed8: 3c018006 lui r1,0x8006 0005aedc: 00220821 addu r1,r1,r2 0005aee0: 942261ce lhu r2,0x61ce(r1) Load Month's Day Value 0005aee4: 00000000 nop 0005aee8: 00501021 addu r2,r2,r16 Birth Day = Day + Month's Day Value 0005aeec: 3044ffff andi r4,r2,0xffff 0005aef0: 96620008 lhu r2,0x0008(r19) Load Unit's Birthday 0005aef4: 308301ff andi r3,r4,0x01ff r3 = Unit's Birthday 0005aef8: 3042fe00 andi r2,r2,0xfe00 r2 = Unit's Zodiac 0005aefc: 00431025 or r2,r2,r3 Unit's Birthday + Zodiac 0005af00: 0c017976 jal 0x0005e5d8 Calculate Zodiac Symbol 0005af04: a6620008 sh r2,0x0008(r19) Store Unit's new Birthday 0005af08: 3042ffff andi r2,r2,0xffff r2 = Zodiac ID 0005af0c: 96630008 lhu r3,0x0008(r19) Load Unit's Birthday 0005af10: 00021300 sll r2,r2,0x0c ID * 0x1000 0005af14: 30630fff andi r3,r3,0x0fff r3 = Unit's Birthday 0005af18: 00622025 or r4,r3,r2 Unit's Birthday + Zodiac Sign 0005af1c: a6640008 sh r4,0x0008(r19) Store Unit's new Birthday 0005af20: 9243000a lbu r3,0x000a(r18) Load ENTD Job ID 0005af24: 34020097 ori r2,r0,0x0097 r2 = 0x97 0005af28: 14620003 bne r3,r2,0x0005af38 Branch if Job != Serpentarius 0005af2c: 30820fff andi r2,r4,0x0fff r2 = Unit's Birthday + Zodiac 0005af30: 3442c000 ori r2,r2,0xc000 Enable Serpentarius 0005af34: a6620008 sh r2,0x0008(r19) Store Unit's new Birthday 0005af38: 92500006 lbu r16,0x0006(r18) Load ENTD Brave 0005af3c: 00000000 nop 0005af40: 2e020065 sltiu r2,r16,0x0065 0005af44: 1440000b bne r2,r0,0x0005af74 Branch if Brave < 101 0005af48: 00000000 nop 0005af4c: 0c0088c3 jal 0x0002230c Random Number Generator 0005af50: 00000000 nop 0005af54: 00021900 sll r3,r2,0x04 Random * 16 0005af58: 00621823 subu r3,r3,r2 Random * 15 0005af5c: 00031040 sll r2,r3,0x01 Random * 30 0005af60: 04410002 bgez r2,0x0005af6c Branch if Random is positive 0005af64: 00000000 nop 0005af68: 24427fff addiu r2,r2,0x7fff 0005af6c: 000213c3 sra r2,r2,0x0f rand(0..29) 0005af70: 2450002d addiu r16,r2,0x002d Brave = rand(0..29) + 45 0005af74: a2700024 sb r16,0x0024(r19) Store Unit's Brave 0005af78: a2700023 sb r16,0x0023(r19) Store Unit's Original Brave 0005af7c: 92500007 lbu r16,0x0007(r18) Load ENTD Faith 0005af80: 00000000 nop 0005af84: 2e020065 sltiu r2,r16,0x0065 0005af88: 1440000b bne r2,r0,0x0005afb8 Branch if Faith < 101 0005af8c: 00000000 nop 0005af90: 0c0088c3 jal 0x0002230c Random Number Generator 0005af94: 00000000 nop 0005af98: 00021900 sll r3,r2,0x04 Random * 16 0005af9c: 00621823 subu r3,r3,r2 Random * 15 0005afa0: 00031040 sll r2,r3,0x01 Random * 30 0005afa4: 04410002 bgez r2,0x0005afb0 Branch if Random is Positive 0005afa8: 00000000 nop 0005afac: 24427fff addiu r2,r2,0x7fff 0005afb0: 000213c3 sra r2,r2,0x0f rand(0..29) 0005afb4: 2450002d addiu r16,r2,0x002d Faith = rand(0..29) + 45 0005afb8: a2700026 sb r16,0x0026(r19) Store Unit's Faith 0005afbc: a2700025 sb r16,0x0025(r19) Store Unit's Original Faith 0005afc0: 9250001c lbu r16,0x001c(r18) Load ENTD Starting Experience 0005afc4: 00000000 nop 0005afc8: 2e020064 sltiu r2,r16,0x0064 0005afcc: 1440000c bne r2,r0,0x0005b000 Branch if Starting Experience < 100 0005afd0: 00000000 nop 0005afd4: 0c0088c3 jal 0x0002230c Random Number Generator 0005afd8: 00000000 nop 0005afdc: 00021840 sll r3,r2,0x01 Random * 2 0005afe0: 00621821 addu r3,r3,r2 Random * 3 0005afe4: 000318c0 sll r3,r3,0x03 Random * 24 0005afe8: 00621821 addu r3,r3,r2 Random * 25 0005afec: 00031880 sll r3,r3,0x02 Random * 100 0005aff0: 04610003 bgez r3,0x0005b000 Branch if Random is positive 0005aff4: 000383c2 srl r16,r3,0x0f rand(0..99) 0005aff8: 24637fff addiu r3,r3,0x7fff 0005affc: 000383c2 srl r16,r3,0x0f 0005b000: a2700021 sb r16,0x0021(r19) Store Unit's Experience 0005b004: 92430002 lbu r3,0x0002(r18) Load ENTD Name ID 0005b008: 00001021 addu r2,r0,r0 r2 = 0 (Success) 0005b00c: a663016c sh r3,0x016c(r19) Store Unit's Name ID 0005b010: 8fbf0028 lw r31,0x0028(r29) 0005b014: 8fb50024 lw r21,0x0024(r29) 0005b018: 8fb40020 lw r20,0x0020(r29) 0005b01c: 8fb3001c lw r19,0x001c(r29) 0005b020: 8fb20018 lw r18,0x0018(r29) 0005b024: 8fb10014 lw r17,0x0014(r29) 0005b028: 8fb00010 lw r16,0x0010(r29) 0005b02c: 27bd0030 addiu r29,r29,0x0030 0005b030: 03e00008 jr r31 0005b034: 00000000 nop Prep for Initializing Unit's Job Data 0005b038: 27bdffe0 addiu r29,r29,0xffe0 0005b03c: afb00010 sw r16,0x0010(r29) 0005b040: 00808021 addu r16,r4,r0 r16 = Unit's Data Pointer 0005b044: afb10014 sw r17,0x0014(r29) 0005b048: 00a08821 addu r17,r5,r0 r17 = ENTD Data Pointer 0005b04c: afbf0018 sw r31,0x0018(r29) 0005b050: 92240000 lbu r4,0x0000(r17) Load ENTD Sprite Set 0005b054: 0c0167e5 jal 0x00059f94 Find Unit's Party Data Location 0005b058: 00000000 nop 0005b05c: 00402821 addu r5,r2,r0 r5 = Party ID 0005b060: 2402ffff addiu r2,r0,0xffff r2 = FFFF (Fail) 0005b064: 10a20014 beq r5,r2,0x0005b0b8 Branch if Unit doesn't exist 0005b068: 00000000 nop 0005b06c: 3c068006 lui r6,0x8006 0005b070: 8cc66200 lw r6,0x6200(r6) Load Battle Initialization Flag? (Loaded just to store) 0005b074: 0c016a35 jal 0x0005a8d4 Initialize Unit's Job Data 0005b078: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005b07c: 92030006 lbu r3,0x0006(r16) Load Unit's Gender Byte 0005b080: 00000000 nop 0005b084: 306300ee andi r3,r3,0x00ee 0005b088: a2030006 sb r3,0x0006(r16) Store Gender Byte without Join After Event/Save Formation 0005b08c: 92220001 lbu r2,0x0001(r17) Load Unit's ENTD Gender Byte 0005b090: 00000000 nop 0005b094: 30420011 andi r2,r2,0x0011 0005b098: 00621825 or r3,r3,r2 Enable Unit's Join After Event/Save Formation Flags 0005b09c: a2030006 sb r3,0x0006(r16) Store Unit's new Gender Byte 0005b0a0: 92220018 lbu r2,0x0018(r17) Load Unit's ENTD Flags 0005b0a4: 00000000 nop 0005b0a8: a2020005 sb r2,0x0005(r16) Store Unit's ENTD Flags 0005b0ac: 92230018 lbu r3,0x0018(r17) Load Unit's ENTD Flags 0005b0b0: 00001021 addu r2,r0,r0 r2 = 0 (Success) 0005b0b4: a20301ba sb r3,0x01ba(r16) Store Unit's Modified ENTD Flags 0005b0b8: 8fbf0018 lw r31,0x0018(r29) 0005b0bc: 8fb10014 lw r17,0x0014(r29) 0005b0c0: 8fb00010 lw r16,0x0010(r29) 0005b0c4: 27bd0020 addiu r29,r29,0x0020 0005b0c8: 03e00008 jr r31 0005b0cc: 00000000 nop Initialize Unit's Battle Data 0005b0d0: 27bdffe0 addiu r29,r29,0xffe0 (very badly done) 0005b0d4: afb10014 sw r17,0x0014(r29) 0005b0d8: 00808821 addu r17,r4,r0 r17 = Unit's Data Pointer 0005b0dc: afb00010 sw r16,0x0010(r29) 0005b0e0: 00a08021 addu r16,r5,r0 r16 = Unit's Party Data Pointer 0005b0e4: afbf0018 sw r31,0x0018(r29) 0005b0e8: 92020000 lbu r2,0x0000(r16) Load Unit's Sprite Set 0005b0ec: 00000000 nop 0005b0f0: 2c420004 sltiu r2,r2,0x0004 0005b0f4: 10400002 beq r2,r0,0x0005b100 Branch if Sprite Set isn't Ramza 0005b0f8: 34030008 ori r3,r0,0x0008 ENTD Flags = 0x8 (Control) 0005b0fc: 3403000b ori r3,r0,0x000b ENTD Flags = 0xb (Control, 0x01 and 0x02) 0005b100: a2230005 sb r3,0x0005(r17) Store Unit's ENTD Flags 0005b104: a22301ba sb r3,0x01ba(r17) Store Unit's Modified ENTD Flags 0005b108: 92020000 lbu r2,0x0000(r16) Load Unit's Sprite Set 0005b10c: 00000000 nop 0005b110: a2220000 sb r2,0x0000(r17) Store Unit's Sprite Set 0005b114: 92020001 lbu r2,0x0001(r16) Load Unit's Party ID 0005b118: 00000000 nop 0005b11c: a2220002 sb r2,0x0002(r17) Store Unit's Party ID 0005b120: 92020002 lbu r2,0x0002(r16) Load Unit's Job ID 0005b124: 00000000 nop 0005b128: a2220003 sb r2,0x0003(r17) Store Unit's Job ID 0005b12c: 92020001 lbu r2,0x0001(r16) Load Unit's Party ID 0005b130: 92030003 lbu r3,0x0003(r16) Load Unit's Palette 0005b134: 2c420010 sltiu r2,r2,0x0010 0005b138: 10400002 beq r2,r0,0x0005b144 Branch if Unit isn't in the Main Party 0005b13c: 2604000e addiu r4,r16,0x000e r4 = Unit's Party Equipment Data Pointer 0005b140: 00001821 addu r3,r0,r0 r3 = 0 (default Palette) 0005b144: a2230004 sb r3,0x0004(r17) Store Unit's Palette 0005b148: 92020004 lbu r2,0x0004(r16) Load Unit's Gender Byte 0005b14c: 2625001a addiu r5,r17,0x001a r5 = Unit's Equipment Data Pointer 0005b150: a2220006 sb r2,0x0006(r17) Store Unit's Gender Byte 0005b154: 92020006 lbu r2,0x0006(r16) Load Unit's Zodiac Sign 0005b158: 92030005 lbu r3,0x0005(r16) Load Unit's Birthday (could load/store as halfword) 0005b15c: 00021200 sll r2,r2,0x08 Zodiac Sign * 256 0005b160: 00621821 addu r3,r3,r2 Zodiac Sign * 256 + Birthday 0005b164: 96220008 lhu r2,0x0008(r17) Load Unit's Birthday + Zodiac Sign 0005b168: 306301ff andi r3,r3,0x01ff r3 = Unit's Birthday 0005b16c: 3042fe00 andi r2,r2,0xfe00 r2 = Unit's Zodiac Sign 0005b170: 00431025 or r2,r2,r3 r2 = Unit's Birthday + Zodiac Sign 0005b174: a6220008 sh r2,0x0008(r17) Store Unit's Birthday + Zodiac Sign 0005b178: 92030006 lbu r3,0x0006(r16) Load Unit's Zodiac Sign 0005b17c: 30420fff andi r2,r2,0x0fff r2 = Unit's Birthday 0005b180: 00031902 srl r3,r3,0x04 Zodiac Sign / 16 0005b184: 00031b00 sll r3,r3,0x0c Zodiac Sign / 16 * 4096 0005b188: 00431025 or r2,r2,r3 r2 = Zodiac Sign / 16 * 4096 + Unit's Birthday 0005b18c: a6220008 sh r2,0x0008(r17) Store Unit's Birthday + Zodiac Sign 0005b190: 92020007 lbu r2,0x0007(r16) Load Unit's Secondary Skillset 0005b194: 34060007 ori r6,r0,0x0007 Limit = 7 0005b198: a2220013 sb r2,0x0013(r17) Store Unit's Secondary Skillset 0005b19c: 92020009 lbu r2,0x0009(r16) Load Unit's Reaction Ability (high bit) 0005b1a0: 92030008 lbu r3,0x0008(r16) Load Unit's Reaction Ability 0005b1a4: 00021200 sll r2,r2,0x08 High Bit * 256 0005b1a8: 00621821 addu r3,r3,r2 Reaction Ability + High Bit * 256 0005b1ac: a6230014 sh r3,0x0014(r17) Store Unit's Reaction ID 0005b1b0: 9202000b lbu r2,0x000b(r16) Load Unit's Support Ability (high Bit) 0005b1b4: 9203000a lbu r3,0x000a(r16) Load Unit's Support Ability 0005b1b8: 00021200 sll r2,r2,0x08 High Bit * 256 0005b1bc: 00621821 addu r3,r3,r2 Support Ability + High Bit * 256 0005b1c0: a6230016 sh r3,0x0016(r17) Store Unit's Support Ability ID 0005b1c4: 9202000d lbu r2,0x000d(r16) Load Unit's Movement Ability (high bit) 0005b1c8: 9203000c lbu r3,0x000c(r16) Load Unit's Movement Ability 0005b1cc: 00021200 sll r2,r2,0x08 High Bit * 256 0005b1d0: 00621821 addu r3,r3,r2 Movement Ability + High Bit * 256 0005b1d4: 0c017895 jal 0x0005e254 Store X Byte into Y (Equipment ID's) 0005b1d8: a6230018 sh r3,0x0018(r17) Store Unit's Movement Ability ID 0005b1dc: 92020015 lbu r2,0x0015(r16) Load Unit's Experience (could have raised limit to 9) 0005b1e0: 00000000 nop 0005b1e4: a2220021 sb r2,0x0021(r17) Store Unit's Experience 0005b1e8: 92020016 lbu r2,0x0016(r16) Load Unit's Level 0005b1ec: 26040019 addiu r4,r16,0x0019 r4 = Pointer to Unit's Party Raw HP 0005b1f0: a2220022 sb r2,0x0022(r17) Store Unit's Level 0005b1f4: 92020017 lbu r2,0x0017(r16) Load Unit's Brave 0005b1f8: 26250072 addiu r5,r17,0x0072 r5 = Pointer to Unit's Raw HP 0005b1fc: a2220024 sb r2,0x0024(r17) Store Unit's Brave 0005b200: a2220023 sb r2,0x0023(r17) Store Unit's Original Brave 0005b204: 92020018 lbu r2,0x0018(r16) Load Unit's Faith 0005b208: 3406000f ori r6,r0,0x000f Limit = 0xF 0005b20c: a2220026 sb r2,0x0026(r17) Store Unit's Faith 0005b210: 0c017895 jal 0x0005e254 Store X Byte into Y (Raw Stats) 0005b214: a2220025 sb r2,0x0025(r17) Store Unit's Original Faith 0005b218: 00002021 addu r4,r0,r0 Counter = 0 0005b21c: 02241821 addu r3,r17,r4 r3 = Unit's Data Pointer + Counter 0005b220: 02041021 addu r2,r16,r4 r2 = Unit's Party Data Pointer + Counter 0005b224: 90420028 lbu r2,0x0028(r2) Load Unit's Unlocked Jobs 0005b228: 24840001 addiu r4,r4,0x0001 Counter ++ 0005b22c: a0620096 sb r2,0x0096(r3) Store Unit's Unlocked Jobs 0005b230: 28820003 slti r2,r4,0x0003 (could add this to below) 0005b234: 1440fffa bne r2,r0,0x0005b220 Branch if Counter < 3 0005b238: 02241821 addu r3,r17,r4 r3 = Unit's Data Pointer + Counter 0005b23c: 2604002b addiu r4,r16,0x002b r4 = Unit's Party Action Abilities 0005b240: 26250099 addiu r5,r17,0x0099 r5 = Unit's Action Abilities 0005b244: 0c017895 jal 0x0005e254 Store X Byte into Y (Job Abilities) 0005b248: 34060039 ori r6,r0,0x0039 Limit = 0x39 (Limit = 9c would also work, including above) 0005b24c: 26040064 addiu r4,r16,0x0064 r4 = Unit's Party Job Levels 0005b250: 262500d2 addiu r5,r17,0x00d2 r5 = Unit's Job Levels 0005b254: 0c017895 jal 0x0005e254 Store X Byte into Y (Job Levels) 0005b258: 3406000a ori r6,r0,0x000a Limit = 0xa 0005b25c: 2604006e addiu r4,r16,0x006e r4 = Unit's Party JP 0005b260: 262500dc addiu r5,r17,0x00dc r5 = Unit's JP 0005b264: 0c017895 jal 0x0005e254 Store X Byte into Y (JP/Total JP) 0005b268: 34060050 ori r6,r0,0x0050 Limit = 0x50 0005b26c: 260400be addiu r4,r16,0x00be r4 = Unit's Party Name 0005b270: 2625012c addiu r5,r17,0x012c r5 = Unit's Name 0005b274: 0c017895 jal 0x0005e254 Store X Byte into Y (Unit's Name) 0005b278: 34060010 ori r6,r0,0x0010 Limit = 0x10 0005b27c: 26240165 addiu r4,r17,0x0165 r4 = Unit's ENTD AI Data 0005b280: 34050007 ori r5,r0,0x0007 Limit = 7 0005b284: 920200cf lbu r2,0x00cf(r16) Load Unit's Name ID (high bit) 0005b288: 920300ce lbu r3,0x00ce(r16) Load Unit's Name ID 0005b28c: 00021200 sll r2,r2,0x08 High Bit * 256 0005b290: 00621821 addu r3,r3,r2 Name ID + High Bit * 256 0005b294: 0c017991 jal 0x0005e644 Data Nullifying (ENTD AI Data) 0005b298: a623016c sh r3,0x016c(r17) Store Unit's Name ID 0005b29c: 8fbf0018 lw r31,0x0018(r29) 0005b2a0: 8fb10014 lw r17,0x0014(r29) 0005b2a4: 8fb00010 lw r16,0x0010(r29) 0005b2a8: 27bd0020 addiu r29,r29,0x0020 0005b2ac: 03e00008 jr r31 0005b2b0: 00000000 nop Calculate ENTD Unit Jobs 0005b2b4: 27bdffe0 addiu r29,r29,0xffe0 0005b2b8: afb00010 sw r16,0x0010(r29) 0005b2bc: 00808021 addu r16,r4,r0 r16 = Unit's Data Pointer 0005b2c0: afb10014 sw r17,0x0014(r29) 0005b2c4: 00a08821 addu r17,r5,r0 r17 = ENTD Pointer 0005b2c8: 260400d2 addiu r4,r16,0x00d2 r4 = Unit's Job Level Pointer 0005b2cc: afbf0018 sw r31,0x0018(r29) 0005b2d0: 0c017991 jal 0x0005e644 Data Nullifying (Job Levels) 0005b2d4: 3405000a ori r5,r0,0x000a Limit = 10 0005b2d8: 1620000b bne r17,r0,0x0005b308 Branch if ENTD Pointer exists 0005b2dc: 00002821 addu r5,r0,r0 r5 = 0 0005b2e0: 0c016d77 jal 0x0005b5dc Transfer Job's Data to Unit's Data 0005b2e4: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005b2e8: 26040096 addiu r4,r16,0x0096 r4 = Pointer to Unit's Unlocked Jobs 0005b2ec: 00002821 addu r5,r0,r0 r5 = 0 0005b2f0: 34020020 ori r2,r0,0x0020 r2 = 0x20 0005b2f4: a2000013 sb r0,0x0013(r16) Store Unit's Secondary Skillset = 0 0005b2f8: 0c0177b6 jal 0x0005ded8 Store 3-Byte Data (Unlocked Jobs = 0) 0005b2fc: a2020006 sb r2,0x0006(r16) Store Unit's Gender = Monster 0005b300: 08016d3a j 0x0005b4e8 0005b304: 00000000 nop 0005b308: 922a0001 lbu r10,0x0001(r17) Load ENTD's Gender Byte 0005b30c: 00000000 nop 0005b310: 31420020 andi r2,r10,0x0020 0005b314: 14400042 bne r2,r0,0x0005b420 Branch if Unit is a Monster 0005b318: 00000000 nop 0005b31c: 92260008 lbu r6,0x0008(r17) Load ENTD's Job Unlocked 0005b320: 00000000 nop 0005b324: 30c700ff andi r7,r6,0x00ff 0005b328: 2ce20014 sltiu r2,r7,0x0014 0005b32c: 1040003c beq r2,r0,0x0005b420 Branch if Job Unlocked is Invalid 0005b330: 00000000 nop 0005b334: 92220009 lbu r2,0x0009(r17) Load ENTD's Job Level 0005b338: 00000000 nop 0005b33c: 3043000f andi r3,r2,0x000f 0005b340: 30c20001 andi r2,r6,0x0001 0005b344: 14400002 bne r2,r0,0x0005b350 Branch if Job Unlocked is odd (low nybble job) 0005b348: 00602021 addu r4,r3,r0 r4 = Job Level 0005b34c: 00032100 sll r4,r3,0x04 Job Level * 16 0005b350: 00071042 srl r2,r7,0x01 Job Unlocked / 2 (Job Byte) 0005b354: 02021021 addu r2,r16,r2 0005b358: a04400d2 sb r4,0x00d2(r2) Store Job Unlocked 0005b35c: 00003021 addu r6,r0,r0 Counter = 0 0005b360: 00e04821 addu r9,r7,r0 r9 = Job Unlocked 0005b364: 3c038006 lui r3,0x8006 0005b368: 246360ba addiu r3,r3,0x60ba r3 = Job Unlock Requirements 0005b36c: 00091080 sll r2,r9,0x02 Job Unlocked * 4 0005b370: 00491021 addu r2,r2,r9 Job Unlocked * 5 0005b374: 00021040 sll r2,r2,0x01 Job Unlocked * 10 0005b378: 00434021 addu r8,r2,r3 0005b37c: 11200004 beq r9,r0,0x0005b390 Branch if Job Unlocked = Base 0005b380: 02063821 addu r7,r16,r6 r7 = Unit's Data Pointer + Counter 0005b384: 91040000 lbu r4,0x0000(r8) Load Required Job Levels 0005b388: 08016ce8 j 0x0005b3a0 0005b38c: 00000000 nop 0005b390: 10c00002 beq r6,r0,0x0005b39c Branch if Counter = 0 0005b394: 34040001 ori r4,r0,0x0001 Job Levels = 0x01 0005b398: 34040011 ori r4,r0,0x0011 Job Levels = 0x11 0005b39c: 02063821 addu r7,r16,r6 r7 = Unit's Data Pointer + Counter 0005b3a0: 90e200d2 lbu r2,0x00d2(r7) Load Unit's Job Levels 0005b3a4: 00000000 nop 0005b3a8: 00821825 or r3,r4,r2 Enable Job Levels 0005b3ac: 3062000f andi r2,r3,0x000f 0005b3b0: 14400002 bne r2,r0,0x0005b3bc Branch if Low Nybble Job Level != 0 0005b3b4: 00602021 addu r4,r3,r0 r4 = Required Job Level 0005b3b8: 34640001 ori r4,r3,0x0001 Low Nybble Job Level = 1 0005b3bc: 308200f0 andi r2,r4,0x00f0 0005b3c0: 14400002 bne r2,r0,0x0005b3cc Branch if High Nybble Job Level != 0 0005b3c4: 25080001 addiu r8,r8,0x0001 Pointer ++ 0005b3c8: 34840010 ori r4,r4,0x0010 High Nybble Job Level = 1 0005b3cc: 24c60001 addiu r6,r6,0x0001 Counter ++ 0005b3d0: 28c2000a slti r2,r6,0x000a 0005b3d4: 1440ffe9 bne r2,r0,0x0005b37c Branch if Counter < 10 0005b3d8: a0e400d2 sb r4,0x00d2(r7) Store Unit's new Job Levels 0005b3dc: 31420040 andi r2,r10,0x0040 0005b3e0: 10400006 beq r2,r0,0x0005b3fc Branch if Unit isn't a Female 0005b3e4: 31420080 andi r2,r10,0x0080 0005b3e8: 920200da lbu r2,0x00da(r16) Load Unit's Bard Job Level 0005b3ec: 00000000 nop 0005b3f0: 304200f0 andi r2,r2,0x00f0 Bard Level = 0 0005b3f4: a20200da sb r2,0x00da(r16) Store Unit's new Bard Level 0005b3f8: 31420080 andi r2,r10,0x0080 0005b3fc: 10400005 beq r2,r0,0x0005b414 Branch if Unit isn't a Male 0005b400: 260400d2 addiu r4,r16,0x00d2 r4 = Unit's Job Level Pointer 0005b404: 920200db lbu r2,0x00db(r16) Load Unit's Dancer Level 0005b408: 00000000 nop 0005b40c: 3042000f andi r2,r2,0x000f Dancer Level = 0 0005b410: a20200db sb r2,0x00db(r16) Store Unit's new Dancer Level 0005b414: 0c017705 jal 0x0005dc14 Calculate Unlocked Jobs 0005b418: 01402821 addu r5,r10,r0 r5 = Unit's Gender Byte 0005b41c: 00402821 addu r5,r2,r0 r5 = Unlocked Jobs 0005b420: 0c0177b6 jal 0x0005ded8 Store 3-Byte Data (Unlocked Jobs) 0005b424: 26040096 addiu r4,r16,0x0096 r4 = Unit's Unlocked Jobs Pointer 0005b428: 9222000a lbu r2,0x000a(r17) Load ENTD Job ID 0005b42c: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005b430: 0c016d77 jal 0x0005b5dc Transfer Job's Data to Unit's Data 0005b434: a2020003 sb r2,0x0003(r16) Store Unit's Job ID 0005b438: 9226001d lbu r6,0x001d(r17) Load ENTD Primary Skillset 0005b43c: 340200ff ori r2,r0,0x00ff r2 = FF 0005b440: 30c300ff andi r3,r6,0x00ff 0005b444: 10620005 beq r3,r2,0x0005b45c Branch if Primary Skillset = FF (Job's) 0005b448: 00000000 nop 0005b44c: 10600003 beq r3,r0,0x0005b45c Branch if Primary Skillset = 0 0005b450: 340200ff ori r2,r0,0x00ff r2 = FF 0005b454: a2060012 sb r6,0x0012(r16) Store Unit's Primary Skillset 0005b458: a2020189 sb r2,0x0189(r16) Store ? = FF 0005b45c: 9226000b lbu r6,0x000b(r17) Load ENTD Secondary ID 0005b460: 340200fe ori r2,r0,0x00fe r2 = FE 0005b464: 30c300ff andi r3,r6,0x00ff r3 = Secondary ID 0005b468: 1462001e bne r3,r2,0x0005b4e4 Branch if Secondary ID != Random 0005b46c: 00000000 nop 0005b470: 92020006 lbu r2,0x0006(r16) Load Unit's Gender Byte 0005b474: 00000000 nop 0005b478: 30420020 andi r2,r2,0x0020 0005b47c: 10400003 beq r2,r0,0x0005b48c Branch if Unit isn't a Monster 0005b480: 00000000 nop 0005b484: 08016d3a j 0x0005b4e8 0005b488: a2000013 sb r0,0x0013(r16) Store Unit's Secondary ID = 0 0005b48c: 0c016d40 jal 0x0005b500 Sprite Set and Random Secondary Job Calculation 0005b490: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005b494: 00402021 addu r4,r2,r0 r4 = Chosen Job ID 0005b498: 308300ff andi r3,r4,0x00ff 0005b49c: 10600009 beq r3,r0,0x0005b4c4 Branch if a Job wasn't chosen 0005b4a0: 00031040 sll r2,r3,0x01 ID * 2 0005b4a4: 00431021 addu r2,r2,r3 ID * 3 0005b4a8: 3c038006 lui r3,0x8006 0005b4ac: 8c636194 lw r3,0x6194(r3) Load Job Data Pointer 0005b4b0: 00021100 sll r2,r2,0x04 ID * 48 0005b4b4: 00431021 addu r2,r2,r3 0005b4b8: 90430000 lbu r3,0x0000(r2) Load Job's Skillset 0005b4bc: 08016d32 j 0x0005b4c8 0005b4c0: 00000000 nop 0005b4c4: 308300ff andi r3,r4,0x00ff 0005b4c8: 92020012 lbu r2,0x0012(r16) Load Unit's Primary Skillset ID 0005b4cc: 00000000 nop 0005b4d0: 14620002 bne r3,r2,0x0005b4dc Branch if Skillset != Chosen Skillset 0005b4d4: 00000000 nop 0005b4d8: 00001821 addu r3,r0,r0 Skillset = 0 0005b4dc: 08016d3a j 0x0005b4e8 0005b4e0: a2030013 sb r3,0x0013(r16) Store Chosen Secondary Skillset 0005b4e4: a2060013 sb r6,0x0013(r16) Store Secondary Skillset = ENTD Secondary Skillset 0005b4e8: 8fbf0018 lw r31,0x0018(r29) 0005b4ec: 8fb10014 lw r17,0x0014(r29) 0005b4f0: 8fb00010 lw r16,0x0010(r29) 0005b4f4: 27bd0020 addiu r29,r29,0x0020 0005b4f8: 03e00008 jr r31 0005b4fc: 00000000 nop Sprite Set and Random Secondary Job Calculation 0005b500: 27bdffd0 addiu r29,r29,0xffd0 0005b504: 00804021 addu r8,r4,r0 r8 = Unit's Data Pointer 0005b508: 3c060080 lui r6,0x0080 Job Check = 0x800000 0005b50c: afb00028 sw r16,0x0028(r29) 0005b510: 00008021 addu r16,r0,r0 Unlocked Job Counter = 0 0005b514: 00002821 addu r5,r0,r0 Counter = 0 0005b518: 27a70010 addiu r7,r29,0x0010 r7 = Stack Pointer 0005b51c: afbf002c sw r31,0x002c(r29) 0005b520: 91020096 lbu r2,0x0096(r8) Load Unit's Unlocked Jobs 1 0005b524: 91030097 lbu r3,0x0097(r8) Load Unit's Unlocked Jobs 2 0005b528: 91040098 lbu r4,0x0098(r8) Load Unit's Unlocked Jobs 3 0005b52c: 00021400 sll r2,r2,0x10 UJ1 * 0x10000 0005b530: 00031a00 sll r3,r3,0x08 UJ2 * 0x100 0005b534: 00431021 addu r2,r2,r3 0005b538: 00442021 addu r4,r2,r4 r4 = Unlocked Jobs 0005b53c: 00861024 and r2,r4,r6 0005b540: 1040000d beq r2,r0,0x0005b578 Branch if Job isn't Unlocked 0005b544: 00000000 nop 0005b548: 14a00008 bne r5,r0,0x0005b56c Branch if Counter != 0 0005b54c: 24a3004a addiu r3,r5,0x004a Job ID = Counter + 0x4a 0005b550: 91030000 lbu r3,0x0000(r8) Load Unit's Sprite Set 0005b554: 00000000 nop 0005b558: 306200ff andi r2,r3,0x00ff 0005b55c: 2c420080 sltiu r2,r2,0x0080 0005b560: 14400002 bne r2,r0,0x0005b56c Branch if Sprite Set is Special 0005b564: 00000000 nop 0005b568: 3403004a ori r3,r0,0x004a Job ID = Squire 0005b56c: a0e30000 sb r3,0x0000(r7) Store Temp Job ID = Squire/Sprite Set ID 0005b570: 24e70001 addiu r7,r7,0x0001 Stack Pointer ++ 0005b574: 26100001 addiu r16,r16,0x0001 Unlocked Job Counter ++ 0005b578: 24a50001 addiu r5,r5,0x0001 Counter ++ 0005b57c: 000617c2 srl r2,r6,0x1f 0005b580: 00c21021 addu r2,r6,r2 0005b584: 00023043 sra r6,r2,0x01 Job Check / 2 (next job) 0005b588: 28a20013 slti r2,r5,0x0013 0005b58c: 1440ffeb bne r2,r0,0x0005b53c Branch if Counter < 0x13 (Skip Mime) 0005b590: 00000000 nop 0005b594: 1200000c beq r16,r0,0x0005b5c8 Branch if No Jobs are Unlocked 0005b598: 00001021 addu r2,r0,r0 Skillset = 0 0005b59c: 0c0088c3 jal 0x0002230c Random Number Generator 0005b5a0: 00000000 nop 0005b5a4: 00500018 mult r2,r16 Random * Jobs Unlocked Counter 0005b5a8: 00001012 mflo r2 r2 = " 0005b5ac: 04410003 bgez r2,0x0005b5bc Branch if Random is positive 0005b5b0: 00021bc2 srl r3,r2,0x0f rand(0..(Jobs Unlocked Counter - 1)) 0005b5b4: 24427fff addiu r2,r2,0x7fff 0005b5b8: 00021bc2 srl r3,r2,0x0f 0005b5bc: 306200ff andi r2,r3,0x00ff 0005b5c0: 03a21021 addu r2,r29,r2 r2 = Pointer to chosen Secondary 0005b5c4: 90420010 lbu r2,0x0010(r2) Load Chosen Job ID 0005b5c8: 8fbf002c lw r31,0x002c(r29) 0005b5cc: 8fb00028 lw r16,0x0028(r29) 0005b5d0: 27bd0030 addiu r29,r29,0x0030 0005b5d4: 03e00008 jr r31 0005b5d8: 00000000 nop Transfer Job's Data to Unit's Data 0005b5dc: 27bdffe0 addiu r29,r29,0xffe0 0005b5e0: afb00010 sw r16,0x0010(r29) 0005b5e4: 00808021 addu r16,r4,r0 r16 = Unit's Data Pointer 0005b5e8: afbf0018 sw r31,0x0018(r29) 0005b5ec: afb10014 sw r17,0x0014(r29) 0005b5f0: 92030000 lbu r3,0x0000(r16) Load Unit's Sprite Set 0005b5f4: 00000000 nop 0005b5f8: 2c62004a sltiu r2,r3,0x004a 0005b5fc: 10400009 beq r2,r0,0x0005b624 Branch if Sprite Set isn't a Special Job 0005b600: 00031040 sll r2,r3,0x01 ID * 2 0005b604: 00431021 addu r2,r2,r3 ID * 3 0005b608: 3c038006 lui r3,0x8006 0005b60c: 8c636194 lw r3,0x6194(r3) Load Job Data Pointer 0005b610: 00021100 sll r2,r2,0x04 ID * 48 0005b614: 00431021 addu r2,r2,r3 0005b618: 90420000 lbu r2,0x0000(r2) Load Job's Skillset 0005b61c: 08016d8a j 0x0005b628 0005b620: a2020162 sb r2,0x0162(r16) Store Unit's Special Skillset ID 0005b624: a2000162 sb r0,0x0162(r16) Store Unit's Special Skillset ID = 0 0005b628: 2605000a addiu r5,r16,0x000a r5 = Unit's Innate Ability Pointer 0005b62c: 92030003 lbu r3,0x0003(r16) Load Unit's Job ID 0005b630: 34060008 ori r6,r0,0x0008 Limit = 8 0005b634: 00031040 sll r2,r3,0x01 ID * 2 0005b638: 00431021 addu r2,r2,r3 ID * 3 0005b63c: 3c038006 lui r3,0x8006 0005b640: 8c636194 lw r3,0x6194(r3) Load Job Data Pointer 0005b644: 00021100 sll r2,r2,0x04 ID * 48 0005b648: 00438821 addu r17,r2,r3 r17 = Unit's Job Data Pointer 0005b64c: 92220000 lbu r2,0x0000(r17) Load Job's Skillset ID 0005b650: 26240001 addiu r4,r17,0x0001 r4 = Job's Innate Ability Pointer 0005b654: 0c017895 jal 0x0005e254 Store X Byte into Y (Innate Abilities) 0005b658: a2020012 sb r2,0x0012(r16) Store Unit's Primary Skillset ID 0005b65c: 26240009 addiu r4,r17,0x0009 r4 = Job's Equippable Items 0005b660: 2605004a addiu r5,r16,0x004a r5 = Unit's Equippable Items 0005b664: 0c017895 jal 0x0005e254 Store X Byte into Y (Equippable Items 0005b668: 34060004 ori r6,r0,0x0004 Limit = 4 0005b66c: 2624000d addiu r4,r17,0x000d r4 = Job's HP Growth 0005b670: 26050081 addiu r5,r16,0x0081 r5 = Unit's HP Growth 0005b674: 0c017895 jal 0x0005e254 Store X Byte into Y (Stat Growths/Multipliers) 0005b678: 3406000a ori r6,r0,0x000a Limit = 10 0005b67c: 92220017 lbu r2,0x0017(r17) Load Job's Move 0005b680: 00000000 nop 0005b684: a202003a sb r2,0x003a(r16) Store Unit's Move 0005b688: 92220018 lbu r2,0x0018(r17) Load Job's Jump 0005b68c: 00000000 nop 0005b690: 3042007f andi r2,r2,0x007f Cap Jump at 127 (0x80 flags stepping stone) 0005b694: a202003b sb r2,0x003b(r16) Store Unit's Jump 0005b698: 92220018 lbu r2,0x0018(r17) Load Job's Jump 0005b69c: 00000000 nop 0005b6a0: 30420080 andi r2,r2,0x0080 Get Stepping stone Flag 0005b6a4: 10400004 beq r2,r0,0x0005b6b8 Branch if Unit isn't a stepping stone 0005b6a8: 00000000 nop 0005b6ac: 96020048 lhu r2,0x0048(r16) Load Unit's Y Coordinate + Flags 0005b6b0: 08016db1 j 0x0005b6c4 0005b6b4: 34424000 ori r2,r2,0x4000 Enable Stepping Stone 0005b6b8: 96020048 lhu r2,0x0048(r16) Load Unit's Y Coordinate + Flags 0005b6bc: 00000000 nop 0005b6c0: 3042bfff andi r2,r2,0xbfff Disable Stepping Stone 0005b6c4: a6020048 sh r2,0x0048(r16) Store Unit's Y Coordinate + Flags 0005b6c8: 2624001a addiu r4,r17,0x001a r4 = Job's Innate Statuses 0005b6cc: 2605004e addiu r5,r16,0x004e r5 = Unit's Innate Statuses 0005b6d0: 0c017895 jal 0x0005e254 Store X Byte into Y (Statuses) 0005b6d4: 3406000f ori r6,r0,0x000f Limit = 15 0005b6d8: 92020005 lbu r2,0x0005(r16) Load Unit's ENTD Flags 0005b6dc: 92030006 lbu r3,0x0006(r16) Load Unit's Gender Byte 0005b6e0: 30470004 andi r7,r2,0x0004 0005b6e4: 10e0001a beq r7,r0,0x0005b750 Branch if Unit isn't Immortal 0005b6e8: 30660009 andi r6,r3,0x0009 0005b6ec: 10c00018 beq r6,r0,0x0005b750 Branch if Unit doesn't Load/Save Formation 0005b6f0: 00002821 addu r5,r0,r0 Counter = 0 0005b6f4: 26040053 addiu r4,r16,0x0053 r4 = Unit's Status Immunities 0005b6f8: 10e00008 beq r7,r0,0x0005b71c Branch if Unit isn't Immortal 0005b6fc: 00000000 nop 0005b700: 90820000 lbu r2,0x0000(r4) Load Unit's Status Immunities 0005b704: 3c018006 lui r1,0x8006 0005b708: 00250821 addu r1,r1,r5 0005b70c: 902362e9 lbu r3,0x62e9(r1) Load Immortal Immunities 0005b710: 00000000 nop 0005b714: 00431025 or r2,r2,r3 Enable Immortal Immunities 0005b718: a0820000 sb r2,0x0000(r4) Store Unit's new Status Immunities 0005b71c: 10c00008 beq r6,r0,0x0005b740 Branch if Unit doesn't Load/Save Formation 0005b720: 00000000 nop 0005b724: 90820000 lbu r2,0x0000(r4) Load Unit's Status Immunities 0005b728: 3c018006 lui r1,0x8006 0005b72c: 00250821 addu r1,r1,r5 0005b730: 902362ee lbu r3,0x62ee(r1) Load Load/Save Formation Immunities 0005b734: 00000000 nop 0005b738: 00431025 or r2,r2,r3 Enable Load/Save Formation Immunities 0005b73c: a0820000 sb r2,0x0000(r4) Store Unit's New Status Immunities 0005b740: 24a50001 addiu r5,r5,0x0001 Counter ++ 0005b744: 28a20005 slti r2,r5,0x0005 0005b748: 1440ffeb bne r2,r0,0x0005b6f8 Branch if Counter < 5 0005b74c: 24840001 addiu r4,r4,0x0001 Pointer ++ 0005b750: 26240029 addiu r4,r17,0x0029 r4 = Job's Absorbed Elements 0005b754: 2605006d addiu r5,r16,0x006d r5 = Unit's Absorbed Elements 0005b758: 0c017895 jal 0x0005e254 Store X Byte into Y (Elemental Resistances) 0005b75c: 34060004 ori r6,r0,0x0004 Limit = 4 0005b760: a2000071 sb r0,0x0071(r16) Store Unit's Strengthened Elements = 0 0005b764: 9222002d lbu r2,0x002d(r17) Load Job's Monster Portrait 0005b768: 00000000 nop 0005b76c: a202015f sb r2,0x015f(r16) Store Unit's Portrait 0005b770: 9222002e lbu r2,0x002e(r17) Load Job's Monster Palette 0005b774: 00000000 nop 0005b778: a2020160 sb r2,0x0160(r16) Store Unit's Palette 0005b77c: 9222002f lbu r2,0x002f(r17) Load Job's Monster Graphic 0005b780: 00000000 nop 0005b784: a202015e sb r2,0x015e(r16) Store Unit's Graphic 0005b788: 8fbf0018 lw r31,0x0018(r29) 0005b78c: 8fb10014 lw r17,0x0014(r29) 0005b790: 8fb00010 lw r16,0x0010(r29) 0005b794: 27bd0020 addiu r29,r29,0x0020 0005b798: 03e00008 jr r31 0005b79c: 00000000 nop Enable Unit's R/S/M Flags 0005b7a0: 27bdffe0 addiu r29,r29,0xffe0 0005b7a4: afb10014 sw r17,0x0014(r29) 0005b7a8: 00808821 addu r17,r4,r0 r17 = Unit's Data Pointer 0005b7ac: 2624008b addiu r4,r17,0x008b r4 = Unit's Data Pointer (Reactions 1) 0005b7b0: 3405000b ori r5,r0,0x000b r5 = b (Reaction -> Movement) 0005b7b4: afbf001c sw r31,0x001c(r29) 0005b7b8: afb20018 sw r18,0x0018(r29) 0005b7bc: 0c017991 jal 0x0005e644 Data Nullifying (Reactions through Movements) 0005b7c0: afb00010 sw r16,0x0010(r29) 0005b7c4: 00009021 addu r18,r0,r0 Counter = 0 0005b7c8: 02208021 addu r16,r17,r0 r16 = Unit's Data Pointer 0005b7cc: 02202021 addu r4,r17,r0 r4 = Unit's Data Pointer 0005b7d0: 9605000a lhu r5,0x000a(r16) Load Innate Ability 1 0005b7d4: 26100002 addiu r16,r16,0x0002 Unit's Data Pointer += 2 0005b7d8: 0c016e0b jal 0x0005b82c R/S/M Flag Setting (Add Innate Abilities) 0005b7dc: 26520001 addiu r18,r18,0x0001 Counter += 1 0005b7e0: 2a420004 slti r2,r18,0x0004 0005b7e4: 1440fffa bne r2,r0,0x0005b7d0 Branch if all Innates haven't been checked 0005b7e8: 02202021 addu r4,r17,r0 r4 = Unit's Data Pointer 0005b7ec: 96250014 lhu r5,0x0014(r17) Load Unit's Reaction Ability 0005b7f0: 0c016e0b jal 0x0005b82c R/S/M Flag Setting (Add Reaction) 0005b7f4: 02202021 addu r4,r17,r0 r4 = Unit's Data Pointer 0005b7f8: 96250016 lhu r5,0x0016(r17) Load Unit's Support Ability 0005b7fc: 0c016e0b jal 0x0005b82c R/S/M Flag Setting (Add Support) 0005b800: 02202021 addu r4,r17,r0 r4 = Unit's Data Pointer 0005b804: 96250018 lhu r5,0x0018(r17) Load Unit's Movement Ability 0005b808: 0c016e0b jal 0x0005b82c R/S/M Flag Setting (Add Movement) 0005b80c: 02202021 addu r4,r17,r0 r4 = Unit's Data Pointer 0005b810: 8fbf001c lw r31,0x001c(r29) 0005b814: 8fb20018 lw r18,0x0018(r29) 0005b818: 8fb10014 lw r17,0x0014(r29) 0005b81c: 8fb00010 lw r16,0x0010(r29) 0005b820: 27bd0020 addiu r29,r29,0x0020 0005b824: 03e00008 jr r31 0005b828: 00000000 nop R/S/M Flag Setting 0005b82c: 24a2fe5a addiu r2,r5,0xfe5a Ability + fe5a (= 0 if R/S/M) 0005b830: 00a01821 addu r3,r5,r0 r3 = Ability 0005b834: 3045ffff andi r5,r2,0xffff 0005b838: 2ca20058 sltiu r2,r5,0x0058 0005b83c: 1040000e beq r2,r0,0x0005b878 Branch if Ability is not an R/S/M Ability 0005b840: 3062ffff andi r2,r3,0xffff 0005b844: 2c4201c6 sltiu r2,r2,0x01c6 0005b848: 10400002 beq r2,r0,0x0005b854 Branch if Ability is not a reaction 0005b84c: 00000000 nop 0005b850: a4830014 sh r3,0x0014(r4) Store Ability as Unit's Reaction Ability 0005b854: 2484008b addiu r4,r4,0x008b r4 = Unit's Data Pointer (1st set of Reactions) 0005b858: 000510c2 srl r2,r5,0x03 Ability ID / 8 0005b85c: 00822021 addu r4,r4,r2 Unit's Data Pointer + Ability ID / 8 0005b860: 30a50007 andi r5,r5,0x0007 0005b864: 34020080 ori r2,r0,0x0080 r2 = 80 0005b868: 90830000 lbu r3,0x0000(r4) r3 = Ability's R/S/M set 0005b86c: 00a21007 srav r2,r2,r5 r2 = R/S/M's active flag 0005b870: 00621825 or r3,r3,r2 Add Ability's R/S/M Flag to active R/S/M 0005b874: a0830000 sb r3,0x0000(r4) Store new R/S/M 0005b878: 03e00008 jr r31 0005b87c: 00000000 nop Calculate Actual Stats (Used for Stat Capping as well) 0005b880: 00804821 addu r9,r4,r0 r9 = Unit's Data Pointer 0005b884: 34180064 ori r24,r0,0x0064 HP/MP Divisor = 100 (Normal Units) 0005b888: 340e03e7 ori r14,r0,0x03e7 Stat Cap = 999 0005b88c: 91220006 lbu r2,0x0006(r9) Load Unit's Gender Byte 0005b890: 00000000 nop 0005b894: 30420004 andi r2,r2,0x0004 0005b898: 10400003 beq r2,r0,0x0005b8a8 Branch if not ??? stats 0005b89c: 30ad0001 andi r13,r5,0x0001 r13 = Level UP Check AND 1 (Check if storing base PA/MA/SP) 0005b8a0: 3418000a ori r24,r0,0x000a HP/MP Divisor = 10 (??? Units) 0005b8a4: 340effff ori r14,r0,0xffff Stat Cap = 65535 0005b8a8: 00005821 addu r11,r0,r0 Counter = 0 0005b8ac: 252c0081 addiu r12,r9,0x0081 r12 = Unit's Data Pointer (Stat Growth) 0005b8b0: 912f0022 lbu r15,0x0022(r9) Load Unit's Level 0005b8b4: 252a0072 addiu r10,r9,0x0072 r10 = Unit's Data Pointer (Raw Stat) 0005b8b8: 29f90002 slti r25,r15,0x0002 (Could just lw, sll 0x08, srl 0x08) 0005b8bc: 91420001 lbu r2,0x0001(r10) Load Unit's Raw Stat (byte 2) 0005b8c0: 91440000 lbu r4,0x0000(r10) Load Unit's Raw Stat (byte 1) 0005b8c4: 91430002 lbu r3,0x0002(r10) Load Unit's Raw Stat (byte 3) 0005b8c8: 00021200 sll r2,r2,0x08 Byte 2 * 100h 0005b8cc: 00822021 addu r4,r4,r2 Byte 1 + byte 2 0005b8d0: 00031c00 sll r3,r3,0x10 Byte 3 * 10000h 0005b8d4: 14a00017 bne r5,r0,0x0005b934 Branch if Preset Value != 0 (Skip Level UP) 0005b8d8: 00832021 addu r4,r4,r3 r4 = Full Raw Stat 0005b8dc: 91230002 lbu r3,0x0002(r9) Load Unit's Party ID 0005b8e0: 340200fe ori r2,r0,0x00fe 0005b8e4: 14620013 bne r3,r2,0x0005b934 Branch if Party ID isn't 0xFE (ENTD Units not in party) 0005b8e8: 00000000 nop 0005b8ec: 91870000 lbu r7,0x0000(r12) Load Unit's Stat Growth 0005b8f0: 00000000 nop 0005b8f4: 14e00002 bne r7,r0,0x0005b900 Branch if Growth > 0 0005b8f8: 00e01021 addu r2,r7,r0 r2 = Stat Growth 0005b8fc: 34020001 ori r2,r0,0x0001 r2 = 1 (min growth) 0005b900: 00403821 addu r7,r2,r0 r7 = Stat Growth 0005b904: 34060002 ori r6,r0,0x0002 Level Counter = 2 0005b908: 1720000a bne r25,r0,0x0005b934 Branch if Unit's Level < 2 0005b90c: 01e04021 addu r8,r15,r0 r8 = Unit's Level 0005b910: 00e61021 addu r2,r7,r6 r2 = Stat Growth + Level Counter 0005b914: 2442ffff addiu r2,r2,0xffff r2 = Stat Growth + Level Counter - 1 (Previous Level) 0005b918: 0082001b divu r4,r2 Raw Stat / Stat Growth 0005b91c: 00001012 mflo r2 r2 = Raw Stat / Stat Growth (Raw Stat Bonus) 0005b920: 24c60001 addiu r6,r6,0x0001 Level Counter += 1 0005b924: 00822021 addu r4,r4,r2 Raw Stat += Raw Stat Bonus 0005b928: 0106102a slt r2,r8,r6 0005b92c: 1040fff9 beq r2,r0,0x0005b914 Branch if Unit's Level > Level Counter 0005b930: 00e61021 addu r2,r7,r6 r2 = Stat Growth + Level Counter 0005b934: 3c0200ff lui r2,0x00ff 0005b938: 3442ffff ori r2,r2,0xffff r2 = ffffff 0005b93c: 0044102b sltu r2,r2,r4 0005b940: 10400003 beq r2,r0,0x0005b950 Branch if Raw Stat <= ffffff 0005b944: 34070064 ori r7,r0,0x0064 Raw Divisor = 100 (SP/PA/MA) 0005b948: 3c0400ff lui r4,0x00ff 0005b94c: 3484ffff ori r4,r4,0xffff Raw Stat = ffffff 0005b950: 00041202 srl r2,r4,0x08 Raw Stat / 256 0005b954: a1420001 sb r2,0x0001(r10) Store Raw Stat's 2nd Byte 0005b958: 00041402 srl r2,r4,0x10 Raw Stat / 65536 0005b95c: 29660002 slti r6,r11,0x0002 (Could sh, srl 0x10, sb) 0005b960: a1440000 sb r4,0x0000(r10) Store Raw Stat's 1st byte 0005b964: a1420002 sb r2,0x0002(r10) Store Raw Stat's 3rd byte 0005b968: 91820001 lbu r2,0x0001(r12) Load Unit's Stat Multiplier 0005b96c: 10c00002 beq r6,r0,0x0005b978 Branch if Counter >= 2 (Not HP/MP) 0005b970: 00820018 mult r4,r2 Raw Stat * Stat Multiplier 0005b974: 03003821 addu r7,r24,r0 Raw Divisor = HP/MP Divisor 0005b978: 00001012 mflo r2 r2 = Raw Stat * Stat Multiplier 0005b97c: 00000000 nop 0005b980: 00000000 nop 0005b984: 0047001b divu r2,r7 Raw Stat * Stat Multiplier / Raw Divisor 0005b988: 00001012 mflo r2 r2 = Raw Stat * Stat Multiplier / Raw Divisor 0005b98c: 00000000 nop 0005b990: 00022382 srl r4,r2,0x0e Actual Stat = Raw * Multiplier / Raw Divisor / 16384 0005b994: 14800002 bne r4,r0,0x0005b9a0 Branch if Actual Stat > 0 0005b998: 00000000 nop 0005b99c: 34040001 ori r4,r0,0x0001 Actual Stat = 1 0005b9a0: 10c00004 beq r6,r0,0x0005b9b4 Branch if Counter >= 2 (Not HP/MP) 0005b9a4: 01c4102b sltu r2,r14,r4 0005b9a8: 10400003 beq r2,r0,0x0005b9b8 Branch if Stat Cap > Actual Stat 0005b9ac: 34020002 ori r2,r0,0x0002 r2 = 2 0005b9b0: 01c02021 addu r4,r14,r0 Actual Stat = Stat Cap 0005b9b4: 34020002 ori r2,r0,0x0002 r2 = 2 0005b9b8: 15620005 bne r11,r2,0x0005b9d0 Branch if Counter != 2 (Speed) 0005b9bc: 29620003 slti r2,r11,0x0003 0005b9c0: 2c820033 sltiu r2,r4,0x0033 0005b9c4: 14400002 bne r2,r0,0x0005b9d0 Branch if Actual Stat < 51 0005b9c8: 29620003 slti r2,r11,0x0003 0005b9cc: 34040032 ori r4,r0,0x0032 Actual Stat = 50 (Speed Cap) 0005b9d0: 14400005 bne r2,r0,0x0005b9e8 Branch if Counter < 3 (Not PA/MA) 0005b9d4: 2d620005 sltiu r2,r11,0x0005 0005b9d8: 2c820064 sltiu r2,r4,0x0064 0005b9dc: 14400002 bne r2,r0,0x0005b9e8 Branch if Actual Stat < 100 0005b9e0: 2d620005 sltiu r2,r11,0x0005 0005b9e4: 34040063 ori r4,r0,0x0063 Actual Stat = 99 (PA/MA Cap) 0005b9e8: 1040001a beq r2,r0,0x0005ba54 Branch if Counter < 5 0005b9ec: 000b1080 sll r2,r11,0x02 Counter * 4 0005b9f0: 3c018006 lui r1,0x8006 0005b9f4: 00220821 addu r1,r1,r2 0005b9f8: 8c229818 lw r2,-0x67e8(r1) Load Level UP Stat Storing Code Pointer 0005b9fc: 00000000 nop 0005ba00: 00400008 jr r2 0005ba04: 00000000 nop 0005ba08: 14a00012 bne r5,r0,0x0005ba54 Branch if Not Leveling UP (Initializing ENTD units) 0005ba0c: a524002a sh r4,0x002a(r9) Store New Max HP 0005ba10: 08016e95 j 0x0005ba54 (Max HP/MP are always set) 0005ba14: a5240028 sh r4,0x0028(r9) Store New Current HP 0005ba18: 14a0000e bne r5,r0,0x0005ba54 Branch if Not Leveling UP 0005ba1c: a524002e sh r4,0x002e(r9) Store New Max MP 0005ba20: 08016e95 j 0x0005ba54 0005ba24: a524002c sh r4,0x002c(r9) Store New Current MP 0005ba28: 15a0000a bne r13,r0,0x0005ba54 Branch if Not storing base PA/MA/SP 0005ba2c: 00000000 nop (Leveling UP sets these as well) 0005ba30: 08016e95 j 0x0005ba54 0005ba34: a1240032 sb r4,0x0032(r9) Store New Original SP 0005ba38: 15a00006 bne r13,r0,0x0005ba54 Branch if Not storing base PA/MA/SP 0005ba3c: 00000000 nop 0005ba40: 08016e95 j 0x0005ba54 0005ba44: a1240030 sb r4,0x0030(r9) Store New Original PA 0005ba48: 15a00002 bne r13,r0,0x0005ba54 Branch if Not storing base PA/MA/SP 0005ba4c: 00000000 nop 0005ba50: a1240031 sb r4,0x0031(r9) Store New Original MA 0005ba54: 258c0002 addiu r12,r12,0x0002 Stat Growth Pointer += 2 0005ba58: 256b0001 addiu r11,r11,0x0001 Counter ++ 0005ba5c: 29620005 slti r2,r11,0x0005 0005ba60: 1440ff96 bne r2,r0,0x0005b8bc Branch if Counter < 5 0005ba64: 254a0003 addiu r10,r10,0x0003 Raw Stat Pointer += 3 0005ba68: 03e00008 jr r31 0005ba6c: 00000000 nop Calculate Unit's Abilities 0005ba70: 27bdffc0 addiu r29,r29,0xffc0 0005ba74: afb20020 sw r18,0x0020(r29) 0005ba78: 00809021 addu r18,r4,r0 r18 = Unit's Data Pointer 0005ba7c: afbf003c sw r31,0x003c(r29) 0005ba80: afbe0038 sw r30,0x0038(r29) 0005ba84: afb70034 sw r23,0x0034(r29) 0005ba88: afb60030 sw r22,0x0030(r29) 0005ba8c: afb5002c sw r21,0x002c(r29) 0005ba90: afb40028 sw r20,0x0028(r29) 0005ba94: afb30024 sw r19,0x0024(r29) 0005ba98: afb1001c sw r17,0x001c(r29) 0005ba9c: afb00018 sw r16,0x0018(r29) 0005baa0: 92480003 lbu r8,0x0003(r18) Load Unit's Job ID 0005baa4: 00a0b021 addu r22,r5,r0 r22 = ENTD Pointer 0005baa8: a3a80010 sb r8,0x0010(r29) Temp Store Unit's Job ID 0005baac: 92570006 lbu r23,0x0006(r18) Load Unit's Gender Byte 0005bab0: 16c00006 bne r22,r0,0x0005bacc Branch if ENTD Pointer Exists 0005bab4: 340200ff ori r2,r0,0x00ff r2 = FF 0005bab8: 26440014 addiu r4,r18,0x0014 r2 = Unit's Reaction Ability Pointer 0005babc: 0c017991 jal 0x0005e644 Data Nullifying (R/S/M) 0005bac0: 34050006 ori r5,r0,0x0006 Limit = 6 0005bac4: 08016f5f j 0x0005bd7c 0005bac8: 00000000 nop 0005bacc: 92d3001d lbu r19,0x001d(r22) Load ENTD Primary Skillset 0005bad0: 00000000 nop 0005bad4: 326300ff andi r3,r19,0x00ff 0005bad8: 10620005 beq r3,r2,0x0005baf0 Branch if Skillset = FF (Job's) 0005badc: 00000000 nop 0005bae0: 10600003 beq r3,r0,0x0005baf0 Branch if Skillset = 0 0005bae4: 00000000 nop 0005bae8: 08016ec6 j 0x0005bb18 0005baec: a2530012 sb r19,0x0012(r18) Store Unit's Primary Skillset 0005baf0: 93a80010 lbu r8,0x0010(r29) Load Temp Stored Job ID 0005baf4: 3c038006 lui r3,0x8006 0005baf8: 8c636194 lw r3,0x6194(r3) Load Job Data Pointer 0005bafc: 00081040 sll r2,r8,0x01 ID * 2 0005bb00: 00481021 addu r2,r2,r8 ID * 3 0005bb04: 00021100 sll r2,r2,0x04 ID * 48 0005bb08: 00431021 addu r2,r2,r3 0005bb0c: 90420000 lbu r2,0x0000(r2) Load Job's Skillset 0005bb10: 00000000 nop 0005bb14: a2420012 sb r2,0x0012(r18) Store Unit's Primary = Job's Skillset 0005bb18: 32e200c0 andi r2,r23,0x00c0 0005bb1c: 1040006c beq r2,r0,0x0005bcd0 Branch if Unit doesn't have a Gender 0005bb20: 26440099 addiu r4,r18,0x0099 r4 = Unit's Known Ability Pointer 0005bb24: 0c017991 jal 0x0005e644 Data Nullifying (Known Abilities) 0005bb28: 34050039 ori r5,r0,0x0039 Limit = 0x39 0005bb2c: 00008821 addu r17,r0,r0 Counter = 0 0005bb30: 3c1e8006 lui r30,0x8006 0005bb34: 27de6182 addiu r30,r30,0x6182 r30 = Level 0 JP Req Pointer 0005bb38: 0240a021 addu r20,r18,r0 r20 = Unit's Data Pointer 0005bb3c: 0000a821 addu r21,r0,r0 Job Counter = 0 0005bb40: 02511021 addu r2,r18,r17 r2 = Unit's Data Pointer + Counter 0005bb44: 905300d2 lbu r19,0x00d2(r2) Load Unit's Job Levels 0005bb48: 34020009 ori r2,r0,0x0009 r2 = 9 0005bb4c: 16220004 bne r17,r2,0x0005bb60 Branch if Counter != 9 (Dancer Check) 0005bb50: 00138102 srl r16,r19,0x04 Job Level / 16 (get High Nybble Job Level) 0005bb54: 32e20080 andi r2,r23,0x0080 0005bb58: 1440001e bne r2,r0,0x0005bbd4 Branch if Unit is a Male 0005bb5c: 00001021 addu r2,r0,r0 JP = 0 0005bb60: 12000010 beq r16,r0,0x0005bba4 Branch if High Nybble Job Level = 0 0005bb64: 00000000 nop 0005bb68: 0c0088c3 jal 0x0002230c Random Number Generator 0005bb6c: 00000000 nop 0005bb70: 00021840 sll r3,r2,0x01 Random * 2 0005bb74: 00621821 addu r3,r3,r2 Random * 3 0005bb78: 000318c0 sll r3,r3,0x03 Random * 24 0005bb7c: 00621821 addu r3,r3,r2 Random * 25 0005bb80: 00032080 sll r4,r3,0x02 Random * 100 0005bb84: 00101040 sll r2,r16,0x01 Dancer Job Level 0005bb88: 04810002 bgez r4,0x0005bb94 Branch if Random is positive 0005bb8c: 005e1021 addu r2,r2,r30 Job Level + Job Req. Pointer 0005bb90: 24847fff addiu r4,r4,0x7fff 0005bb94: 94430000 lhu r3,0x0000(r2) Load JP Requirement 0005bb98: 000413c3 sra r2,r4,0x0f rand(0..99) 0005bb9c: 08016ef5 j 0x0005bbd4 0005bba0: 00621021 addu r2,r3,r2 JP = JP Requirement + rand(0..99) 0005bba4: 0c0088c3 jal 0x0002230c Random Number Generator 0005bba8: 00000000 nop 0005bbac: 00021840 sll r3,r2,0x01 0005bbb0: 00621821 addu r3,r3,r2 0005bbb4: 000318c0 sll r3,r3,0x03 0005bbb8: 00621821 addu r3,r3,r2 0005bbbc: 00031080 sll r2,r3,0x02 Random * 100 0005bbc0: 04410002 bgez r2,0x0005bbcc Branch if Random is Positive 0005bbc4: 00000000 nop 0005bbc8: 24427fff addiu r2,r2,0x7fff 0005bbcc: 000213c3 sra r2,r2,0x0f rand(0..99) 0005bbd0: 24420064 addiu r2,r2,0x0064 JP = 100 + rand(0..99) 0005bbd4: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005bbd8: 26a5004a addiu r5,r21,0x004a r5 = Job Counter + 0x4a 0005bbdc: 02c03021 addu r6,r22,r0 r6 = ENTD Pointer 0005bbe0: a6820104 sh r2,0x0104(r20) Store Unit's Total JP 0005bbe4: 0c01739d jal 0x0005ce74 Calculate Learned Abilities 0005bbe8: a68200dc sh r2,0x00dc(r20) Store Unit's JP 0005bbec: 34020008 ori r2,r0,0x0008 r2 = 8 0005bbf0: 16220004 bne r17,r2,0x0005bc04 Branch if Counter != 8 (Bard Check) 0005bbf4: 3270000f andi r16,r19,0x000f r16 = Low Nybble Job Level 0005bbf8: 32e20040 andi r2,r23,0x0040 0005bbfc: 1440001e bne r2,r0,0x0005bc78 Branch if Unit is Female 0005bc00: 00001021 addu r2,r0,r0 JP = 0 0005bc04: 12000010 beq r16,r0,0x0005bc48 Branch if Job Level = 0 0005bc08: 00000000 nop 0005bc0c: 0c0088c3 jal 0x0002230c Random Number Generator 0005bc10: 00000000 nop 0005bc14: 00021840 sll r3,r2,0x01 0005bc18: 00621821 addu r3,r3,r2 0005bc1c: 000318c0 sll r3,r3,0x03 0005bc20: 00621821 addu r3,r3,r2 0005bc24: 00032080 sll r4,r3,0x02 Random * 100 0005bc28: 00101040 sll r2,r16,0x01 Job Level * 2 0005bc2c: 04810002 bgez r4,0x0005bc38 Branch if Random is Positive 0005bc30: 005e1021 addu r2,r2,r30 Job Level + Job Level Requirements Pointer 0005bc34: 24847fff addiu r4,r4,0x7fff 0005bc38: 94430000 lhu r3,0x0000(r2) Load Job Level's JP Requirement 0005bc3c: 000413c3 sra r2,r4,0x0f rand(0..99) 0005bc40: 08016f1e j 0x0005bc78 0005bc44: 00621021 addu r2,r3,r2 JP = Job Level's JP Req. + rand(0..99) 0005bc48: 0c0088c3 jal 0x0002230c Random Number Generator 0005bc4c: 00000000 nop 0005bc50: 00021840 sll r3,r2,0x01 0005bc54: 00621821 addu r3,r3,r2 0005bc58: 000318c0 sll r3,r3,0x03 0005bc5c: 00621821 addu r3,r3,r2 0005bc60: 00031080 sll r2,r3,0x02 Random * 100 0005bc64: 04410002 bgez r2,0x0005bc70 Branch if Random is Positive 0005bc68: 00000000 nop 0005bc6c: 24427fff addiu r2,r2,0x7fff 0005bc70: 000213c3 sra r2,r2,0x0f rand(0..99) 0005bc74: 24420064 addiu r2,r2,0x0064 JP = rand(0..99) + 100 0005bc78: a6820106 sh r2,0x0106(r20) Store Unit's Total JP 0005bc7c: a68200de sh r2,0x00de(r20) Store Unit's Current JP 0005bc80: 34020009 ori r2,r0,0x0009 r2 = 9 0005bc84: 12220009 beq r17,r2,0x0005bcac Branch if Counter = 9 (Mime Check) 0005bc88: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005bc8c: 26a5004b addiu r5,r21,0x004b r5 = Job Counter + 0x4b 0005bc90: 0c01739d jal 0x0005ce74 Calculate Learned Abilities 0005bc94: 02c03021 addu r6,r22,r0 r6 = ENTD Pointer 0005bc98: 26940004 addiu r20,r20,0x0004 Unit's Data Pointer += 4 (next set of JP) 0005bc9c: 26310001 addiu r17,r17,0x0001 Counter ++ 0005bca0: 2a22000a slti r2,r17,0x000a 0005bca4: 1440ffa6 bne r2,r0,0x0005bb40 Branch if Counter < 10 0005bca8: 26b50002 addiu r21,r21,0x0002 Job Counter += 2 0005bcac: 92c3001d lbu r3,0x001d(r22) Load ENTD Primary Skillset 0005bcb0: 00000000 nop 0005bcb4: 10600006 beq r3,r0,0x0005bcd0 Branch if Skillset = 0 0005bcb8: 340200ff ori r2,r0,0x00ff r2 = FF 0005bcbc: 10620004 beq r3,r2,0x0005bcd0 Branch if Skillset = Job's 0005bcc0: 340200ff ori r2,r0,0x00ff r2 = FF 0005bcc4: a2420099 sb r2,0x0099(r18) Store Unit's Known Abilities 1 = FF (all abilities) 0005bcc8: a242009a sb r2,0x009a(r18) Store Unit's Known Abilities 2 = FF 0005bccc: a242009b sb r2,0x009b(r18) Store Unit's Known R/S/M = FF 0005bcd0: 00008821 addu r17,r0,r0 Counter = 0 0005bcd4: 93a80010 lbu r8,0x0010(r29) Load Temp Stored Job ID 0005bcd8: 02403021 addu r6,r18,r0 r6 = Unit's Data Pointer 0005bcdc: 00081040 sll r2,r8,0x01 ID * 2 0005bce0: 00481021 addu r2,r2,r8 ID * 3 0005bce4: 00023900 sll r7,r2,0x04 ID * 48 0005bce8: 00111840 sll r3,r17,0x01 Counter * 2 0005bcec: 3c028006 lui r2,0x8006 0005bcf0: 8c426194 lw r2,0x6194(r2) Load Job Data Pointer 0005bcf4: 02512821 addu r5,r18,r17 r5 = Unit's Data Pointer + Counter 0005bcf8: 00e21021 addu r2,r7,r2 0005bcfc: 00512021 addu r4,r2,r17 r4 = Job's Data Pointer + Counter 0005bd00: 26310001 addiu r17,r17,0x0001 Counter ++ 0005bd04: 00431021 addu r2,r2,r3 r2 = Job's Data Pointer + Counter * 2 0005bd08: 90430002 lbu r3,0x0002(r2) Load Innate Ability's High Bit 0005bd0c: 90420001 lbu r2,0x0001(r2) Load Innate Ability 0005bd10: 00031a00 sll r3,r3,0x08 High Bit * 256 0005bd14: 00431021 addu r2,r2,r3 r2 = Innate Ability ID 0005bd18: a4c2000a sh r2,0x000a(r6) Store Unit's Innate Ability 0005bd1c: 90820009 lbu r2,0x0009(r4) Load Job's Equippable Items 0005bd20: 00000000 nop 0005bd24: a0a2004a sb r2,0x004a(r5) Store Unit's Equippable Items 0005bd28: 2a220004 slti r2,r17,0x0004 0005bd2c: 1440ffee bne r2,r0,0x0005bce8 Branch if Counter < 4 0005bd30: 24c60002 addiu r6,r6,0x0002 Unit's Data Pointer += 2 0005bd34: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005bd38: 34060002 ori r6,r0,0x0002 r6 = 2 (Reaction) 0005bd3c: 96c5000c lhu r5,0x000c(r22) Load ENTD Reaction 0005bd40: 0c01742f jal 0x0005d0bc Calculate Unit's R/S/M 0005bd44: 02c03821 addu r7,r22,r0 r7 = ENTD Pointer 0005bd48: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005bd4c: 34060004 ori r6,r0,0x0004 r6 = 4 (Support) 0005bd50: a6420014 sh r2,0x0014(r18) Store Unit's Reaction ID 0005bd54: 96c5000e lhu r5,0x000e(r22) Load ENTD Support 0005bd58: 0c01742f jal 0x0005d0bc Calculate Unit's R/S/M 0005bd5c: 02c03821 addu r7,r22,r0 r7 = ENTD Pointer 0005bd60: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005bd64: 34060008 ori r6,r0,0x0008 r6 = 8 (Movement) 0005bd68: a6420016 sh r2,0x0016(r18) Store Unit's Support ID 0005bd6c: 96c50010 lhu r5,0x0010(r22) Load ENTD Movement 0005bd70: 0c01742f jal 0x0005d0bc Calculate Unit's R/S/M 0005bd74: 02c03821 addu r7,r22,r0 r7 = ENTD Pointer 0005bd78: a6420018 sh r2,0x0018(r18) Store Unit's Movement ID 0005bd7c: 8fbf003c lw r31,0x003c(r29) 0005bd80: 8fbe0038 lw r30,0x0038(r29) 0005bd84: 8fb70034 lw r23,0x0034(r29) 0005bd88: 8fb60030 lw r22,0x0030(r29) 0005bd8c: 8fb5002c lw r21,0x002c(r29) 0005bd90: 8fb40028 lw r20,0x0028(r29) 0005bd94: 8fb30024 lw r19,0x0024(r29) 0005bd98: 8fb20020 lw r18,0x0020(r29) 0005bd9c: 8fb1001c lw r17,0x001c(r29) 0005bda0: 8fb00018 lw r16,0x0018(r29) 0005bda4: 27bd0040 addiu r29,r29,0x0040 0005bda8: 03e00008 jr r31 0005bdac: 00000000 nop Monster Equipment Storing 0005bdb0: 90a20015 lbu r2,0x0015(r5) Load ENTD RH Equip 0005bdb4: 340300ff ori r3,r0,0x00ff r3 = FF 0005bdb8: a083001e sb r3,0x001e(r4) Store Unit's RH Shield = FF 0005bdbc: a082001d sb r2,0x001d(r4) Store Unit's RH Weapon 0005bdc0: 90a20016 lbu r2,0x0016(r5) Load ENTD LH Equip 0005bdc4: a0830020 sb r3,0x0020(r4) Store Unit's LH Shield = FF 0005bdc8: a082001f sb r2,0x001f(r4) Store Unit's LH Weapon 0005bdcc: 90a20012 lbu r2,0x0012(r5) Load ENTD Helmet 0005bdd0: 00000000 nop 0005bdd4: a082001a sb r2,0x001a(r4) Store Unit's Helmet 0005bdd8: 90a20013 lbu r2,0x0013(r5) Load ENTD Armor 0005bddc: 00000000 nop 0005bde0: a082001b sb r2,0x001b(r4) Store Unit's Armor 0005bde4: 90a20014 lbu r2,0x0014(r5) Load ENTD Accessory 0005bde8: 03e00008 jr r31 0005bdec: a082001c sb r2,0x001c(r4) Store Unit's Accessory Calculate/Store ENTD Unit Equipment 0005bdf0: 27bdffd8 addiu r29,r29,0xffd8 (messy copypasta ftl) 0005bdf4: afb00010 sw r16,0x0010(r29) 0005bdf8: 00808021 addu r16,r4,r0 r16 = Unit's Data Pointer 0005bdfc: afbf0024 sw r31,0x0024(r29) 0005be00: afb40020 sw r20,0x0020(r29) 0005be04: afb3001c sw r19,0x001c(r29) 0005be08: afb20018 sw r18,0x0018(r29) 0005be0c: afb10014 sw r17,0x0014(r29) 0005be10: 92020006 lbu r2,0x0006(r16) Load Unit's Gender Byte 0005be14: 00000000 nop 0005be18: 30420020 andi r2,r2,0x0020 0005be1c: 10400005 beq r2,r0,0x0005be34 Branch if Unit isn't a monster 0005be20: 00a0a021 addu r20,r5,r0 r20 = ENTD Pointer 0005be24: 0c016f6c jal 0x0005bdb0 Monster Equipment Storing 0005be28: 00000000 nop 0005be2c: 08017096 j 0x0005c258 0005be30: 00000000 nop 0005be34: 340200fe ori r2,r0,0x00fe r2 = FE 0005be38: 92840015 lbu r4,0x0015(r20) Load ENTD RH Equip 0005be3c: 92110091 lbu r17,0x0091(r16) Load Unit's Support set 3 0005be40: 309200ff andi r18,r4,0x00ff r18 = RH Equip 0005be44: 16420012 bne r18,r2,0x0005be90 Branch if RH Equip isn't Random 0005be48: 32220002 andi r2,r17,0x0002 0005be4c: 10400006 beq r2,r0,0x0005be68 Branch if Unit doesn't have Two-Hands 0005be50: 34050080 ori r5,r0,0x0080 Item Type = Weapon 0005be54: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005be58: 34060004 ori r6,r0,0x0004 Required Flags = Two-Hands 0005be5c: 0c017326 jal 0x0005cc98 Calculate Random Equipment 0005be60: 340700ff ori r7,r0,0x00ff Chosen Type = Any 0005be64: 00402021 addu r4,r2,r0 r4 = Chosen Weapon ID 0005be68: 308200ff andi r2,r4,0x00ff 0005be6c: 14520008 bne r2,r18,0x0005be90 Branch if a Weapon was chosen (!= FE) 0005be70: 32220001 andi r2,r17,0x0001 0005be74: 10400006 beq r2,r0,0x0005be90 Branch if Unit doesn't have Two Swords 0005be78: 34050080 ori r5,r0,0x0080 Item Type = Weapons 0005be7c: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005be80: 34060008 ori r6,r0,0x0008 Required Flags = 2 Swords 0005be84: 0c017326 jal 0x0005cc98 Calculate Random Equipment 0005be88: 340700ff ori r7,r0,0x00ff Chosen Type = Any 0005be8c: 00402021 addu r4,r2,r0 r4 = Chosen Weapon ID 0005be90: 9211008f lbu r17,0x008f(r16) Load Unit's Support set 1 0005be94: 309300ff andi r19,r4,0x00ff r19 = Chosen Weapon ID 0005be98: 340200fe ori r2,r0,0x00fe 0005be9c: 1662004e bne r19,r2,0x0005bfd8 Branch if a Weapon was chosen 0005bea0: 308200ff andi r2,r4,0x00ff r2 = Chosen Weapon ID 0005bea4: 32220020 andi r2,r17,0x0020 0005bea8: 10400006 beq r2,r0,0x0005bec4 Branch if Unit doesn't have Equip Swords 0005beac: 34050080 ori r5,r0,0x0080 Item Type = Weapons 0005beb0: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005beb4: 00003021 addu r6,r0,r0 Required Flags = None 0005beb8: 0c017326 jal 0x0005cc98 Calculate Random Equipment 0005bebc: 34070003 ori r7,r0,0x0003 Chosen Type = Swords 0005bec0: 00402021 addu r4,r2,r0 r4 = Chosen Weapon ID 0005bec4: 309200ff andi r18,r4,0x00ff r18 = Chosen Weapon ID 0005bec8: 16530043 bne r18,r19,0x0005bfd8 Branch if a Weapon was chosen 0005becc: 308200ff andi r2,r4,0x00ff r2 = Chosen Weapon ID 0005bed0: 32220010 andi r2,r17,0x0010 0005bed4: 10400006 beq r2,r0,0x0005bef0 Branch if Unit doesn't have Equip Katana 0005bed8: 34050080 ori r5,r0,0x0080 Item Type = Weapons 0005bedc: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005bee0: 00003021 addu r6,r0,r0 Required Flags = None 0005bee4: 0c017326 jal 0x0005cc98 Calculate Random Equipment 0005bee8: 34070005 ori r7,r0,0x0005 Chosen Type = Katanas 0005beec: 00402021 addu r4,r2,r0 r4 = Chosen Weapon ID 0005bef0: 309300ff andi r19,r4,0x00ff r19 = Chosen Weapon ID 0005bef4: 16720038 bne r19,r18,0x0005bfd8 Branch if a Weapon was chosen 0005bef8: 308200ff andi r2,r4,0x00ff r2 = Chosen Weapon ID 0005befc: 32220008 andi r2,r17,0x0008 0005bf00: 10400006 beq r2,r0,0x0005bf1c Branch if Unit doesn't have Equip Crossbow 0005bf04: 34050080 ori r5,r0,0x0080 Item Type = Weapons 0005bf08: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005bf0c: 00003021 addu r6,r0,r0 Required Flags = None 0005bf10: 0c017326 jal 0x0005cc98 Calculate Random Equipment 0005bf14: 3407000b ori r7,r0,0x000b Chosen Type = Crossbow 0005bf18: 00402021 addu r4,r2,r0 r4 = Chosen Weapon ID 0005bf1c: 309200ff andi r18,r4,0x00ff r18 = Chosen Weapon ID 0005bf20: 1653002d bne r18,r19,0x0005bfd8 Branch if a Weapon was chosen 0005bf24: 308200ff andi r2,r4,0x00ff r2 = Chosen Weapon ID 0005bf28: 32220004 andi r2,r17,0x0004 0005bf2c: 10400006 beq r2,r0,0x0005bf48 Branch if Unit doesn't have Equip Spear 0005bf30: 34050080 ori r5,r0,0x0080 Item Type = Weapons 0005bf34: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005bf38: 00003021 addu r6,r0,r0 Required Flags = None 0005bf3c: 0c017326 jal 0x0005cc98 Calculate Random Equipment 0005bf40: 3407000f ori r7,r0,0x000f Chosen Type = Polearm 0005bf44: 00402021 addu r4,r2,r0 r4 = Chosen Weapon ID 0005bf48: 309300ff andi r19,r4,0x00ff r19 = Chosen Weapon ID 0005bf4c: 16720022 bne r19,r18,0x0005bfd8 Branch if a Weapon was chosen 0005bf50: 308200ff andi r2,r4,0x00ff r2 = Chosen Weapon ID 0005bf54: 32220002 andi r2,r17,0x0002 0005bf58: 10400006 beq r2,r0,0x0005bf74 Branch if Unit doesn't have Equip Axe 0005bf5c: 34050080 ori r5,r0,0x0080 Item Type = Weapons 0005bf60: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005bf64: 00003021 addu r6,r0,r0 Required Flags = None 0005bf68: 0c017326 jal 0x0005cc98 Calculate Random Equipment 0005bf6c: 34070006 ori r7,r0,0x0006 Chosen Type = Axes 0005bf70: 00402021 addu r4,r2,r0 r4 = Chosen Weapon ID 0005bf74: 309200ff andi r18,r4,0x00ff r18 = Chosen Weapon ID 0005bf78: 16530017 bne r18,r19,0x0005bfd8 Branch if a Weapon was chosen 0005bf7c: 308200ff andi r2,r4,0x00ff r2 = Chosen Weapon ID 0005bf80: 32220001 andi r2,r17,0x0001 0005bf84: 10400006 beq r2,r0,0x0005bfa0 Branch if Unit doesn't have Equip Gun 0005bf88: 34050080 ori r5,r0,0x0080 Item Type = Weapons 0005bf8c: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005bf90: 00003021 addu r6,r0,r0 Required Flags = None 0005bf94: 0c017326 jal 0x0005cc98 Calculate Random Equipment 0005bf98: 3407000a ori r7,r0,0x000a Chosen Type = Guns 0005bf9c: 00402021 addu r4,r2,r0 r4 = Chosen Weapon ID 0005bfa0: 309100ff andi r17,r4,0x00ff r17 = Chosen Weapon ID 0005bfa4: 1632000c bne r17,r18,0x0005bfd8 Branch if a Weapon was Chosen 0005bfa8: 308200ff andi r2,r4,0x00ff r2 = Chosen Weapon ID 0005bfac: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005bfb0: 34050080 ori r5,r0,0x0080 Item Type = Weapons 0005bfb4: 00003021 addu r6,r0,r0 Required Flags = None 0005bfb8: 0c017326 jal 0x0005cc98 Calculate Random Equipment 0005bfbc: 340700ff ori r7,r0,0x00ff Chosen Type = Any 0005bfc0: 00402021 addu r4,r2,r0 r4 = Chosen Weapon ID 0005bfc4: 308200ff andi r2,r4,0x00ff r2 = Chosen Weapon ID 0005bfc8: 14510004 bne r2,r17,0x0005bfdc Branch if a weapon was Chosen 0005bfcc: 00021840 sll r3,r2,0x01 ID * 2 0005bfd0: 340400ff ori r4,r0,0x00ff Chosen Weapon ID = Unarmed 0005bfd4: 308200ff andi r2,r4,0x00ff r2 = Chosen Weapon ID 0005bfd8: 00021840 sll r3,r2,0x01 ID * 2 0005bfdc: 00621821 addu r3,r3,r2 ID * 3 0005bfe0: 00031880 sll r3,r3,0x02 ID * 12 0005bfe4: 3c018006 lui r1,0x8006 0005bfe8: 00230821 addu r1,r1,r3 0005bfec: 90222ebb lbu r2,0x2ebb(r1) Load Chosen Weapon's Type Flags 0005bff0: 00000000 nop 0005bff4: 30420040 andi r2,r2,0x0040 0005bff8: 10400004 beq r2,r0,0x0005c00c Branch if Weapon isn't a Shield 0005bffc: 340200ff ori r2,r0,0x00ff r2 = FF 0005c000: a204001e sb r4,0x001e(r16) Store Unit's RH Shield = Chosen Weapon ID 0005c004: 08017005 j 0x0005c014 (even though a shield isn't an outcome here) 0005c008: a202001d sb r2,0x001d(r16) Store Unit's RH Weapon = None 0005c00c: a204001d sb r4,0x001d(r16) Store Unit's RH Weapon = Chosen Weapon ID 0005c010: a202001e sb r2,0x001e(r16) Store Unit's RH Shield = None 0005c014: 340200ff ori r2,r0,0x00ff r2 = FF 0005c018: 9203001d lbu r3,0x001d(r16) Load Unit's RH Weapon 0005c01c: 92840016 lbu r4,0x0016(r20) Load ENTD LH Equip 0005c020: 10620015 beq r3,r2,0x0005c078 Branch if RH Weapon = Unarmed 0005c024: 00031040 sll r2,r3,0x01 ID * 2 0005c028: 00431021 addu r2,r2,r3 ID * 3 0005c02c: 00021080 sll r2,r2,0x02 ID * 12 0005c030: 3c018006 lui r1,0x8006 0005c034: 00220821 addu r1,r1,r2 0005c038: 90222ebc lbu r2,0x2ebc(r1) Load RH Weapon's Second Table ID 0005c03c: 00000000 nop 0005c040: 000210c0 sll r2,r2,0x03 ID * 8 0005c044: 3c018006 lui r1,0x8006 0005c048: 00220821 addu r1,r1,r2 0005c04c: 90223ab9 lbu r2,0x3ab9(r1) Load Weapon's Attack Flags 0005c050: 00000000 nop 0005c054: 30420001 andi r2,r2,0x0001 0005c058: 14400006 bne r2,r0,0x0005c074 Branch if Weapon is Forced Two-Hands 0005c05c: 00000000 nop 0005c060: 92020091 lbu r2,0x0091(r16) Load Unit's Support set 3 0005c064: 00000000 nop 0005c068: 30420002 andi r2,r2,0x0002 0005c06c: 10400002 beq r2,r0,0x0005c078 Branch if Unit doesn't have Two-Hands 0005c070: 00000000 nop 0005c074: 340400ff ori r4,r0,0x00ff LH Equip = FF 0005c078: 92110091 lbu r17,0x0091(r16) Load Unit's Support Set 3 0005c07c: 308300ff andi r3,r4,0x00ff r3 = LH Equip 0005c080: 340200fe ori r2,r0,0x00fe r2 = FE 0005c084: 14620008 bne r3,r2,0x0005c0a8 Branch if LH Equip is Random 0005c088: 32220001 andi r2,r17,0x0001 0005c08c: 10400006 beq r2,r0,0x0005c0a8 Branch if Unit doesn't have Two Swords 0005c090: 34050080 ori r5,r0,0x0080 Item Type = Weapon 0005c094: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005c098: 34060008 ori r6,r0,0x0008 Required Flags = Two Swords 0005c09c: 0c017326 jal 0x0005cc98 Calculate Random Equipment 0005c0a0: 340700ff ori r7,r0,0x00ff Chosen Type = Any 0005c0a4: 00402021 addu r4,r2,r0 r4 = Chosen Weapon ID 0005c0a8: 9211004c lbu r17,0x004c(r16) Load Unit's Equippable Items set 3 0005c0ac: 308300ff andi r3,r4,0x00ff r3 = Unit's Chosen Weapon 0005c0b0: 340200fe ori r2,r0,0x00fe r2 = FE 0005c0b4: 1462000c bne r3,r2,0x0005c0e8 Branch if a Weapon was chosen 0005c0b8: 308200ff andi r2,r4,0x00ff r2 = Chosen Weapon ID 0005c0bc: 32220010 andi r2,r17,0x0010 0005c0c0: 10400007 beq r2,r0,0x0005c0e0 Branch if Unit can't equip Shields 0005c0c4: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005c0c8: 34050040 ori r5,r0,0x0040 Item Type = Shield 0005c0cc: 00003021 addu r6,r0,r0 Required Flags = None 0005c0d0: 0c017326 jal 0x0005cc98 Calculate Random Equipment 0005c0d4: 340700ff ori r7,r0,0x00ff Chosen Type = Any 0005c0d8: 08017039 j 0x0005c0e4 0005c0dc: 00402021 addu r4,r2,r0 r4 = Chosen Shield ID 0005c0e0: 340400ff ori r4,r0,0x00ff Chosen Shield = None 0005c0e4: 308200ff andi r2,r4,0x00ff r2 = Chosen Shield ID 0005c0e8: 00021840 sll r3,r2,0x01 ID * 2 0005c0ec: 00621821 addu r3,r3,r2 ID * 3 0005c0f0: 00031880 sll r3,r3,0x02 ID * 12 0005c0f4: 3c018006 lui r1,0x8006 0005c0f8: 00230821 addu r1,r1,r3 0005c0fc: 90222ebb lbu r2,0x2ebb(r1) Load Equip's Type Flags 0005c100: 00000000 nop 0005c104: 30420080 andi r2,r2,0x0080 0005c108: 10400004 beq r2,r0,0x0005c11c Branch if Equip isn't a Weapon 0005c10c: 340200ff ori r2,r0,0x00ff r2 = FF 0005c110: a204001f sb r4,0x001f(r16) Store LH Weapon ID = Chosen Weapon 0005c114: 08017049 j 0x0005c124 0005c118: a2020020 sb r2,0x0020(r16) Store LH Shield = None 0005c11c: a2040020 sb r4,0x0020(r16) Store LH Shield = Chosen Shield 0005c120: a202001f sb r2,0x001f(r16) Store LH Weapon = None 0005c124: 340200fe ori r2,r0,0x00fe r2 = FE 0005c128: 92840012 lbu r4,0x0012(r20) Load ENTD Helmet 0005c12c: 9211008f lbu r17,0x008f(r16) Load Unit's Support Set 1 0005c130: 309300ff andi r19,r4,0x00ff r19 = ENTD Helmet 0005c134: 16620014 bne r19,r2,0x0005c188 Branch if Helmet isn't Random 0005c138: 32220080 andi r2,r17,0x0080 0005c13c: 10400006 beq r2,r0,0x0005c158 Branch if Unit doesn't have Equip Armor 0005c140: 34050020 ori r5,r0,0x0020 Item Type = Headgear 0005c144: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005c148: 00003021 addu r6,r0,r0 Required Flags = None 0005c14c: 0c017326 jal 0x0005cc98 Calculate Random Equipment 0005c150: 34070014 ori r7,r0,0x0014 Chosen Type = Heavy Helms 0005c154: 00402021 addu r4,r2,r0 r4 = Chosen Helmet ID 0005c158: 309200ff andi r18,r4,0x00ff r18 = Chosen Helmet 0005c15c: 1653000a bne r18,r19,0x0005c188 Branch if a Helmet was chosen 0005c160: 34050020 ori r5,r0,0x0020 Item Type = Headgear 0005c164: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005c168: 00003021 addu r6,r0,r0 Required Flags = None 0005c16c: 0c017326 jal 0x0005cc98 Calculate Random Equipment 0005c170: 340700ff ori r7,r0,0x00ff Chosen Type = Any 0005c174: 00402021 addu r4,r2,r0 r4 = Chosen Helmet ID 0005c178: 308200ff andi r2,r4,0x00ff r2 = Chosen Helmet 0005c17c: 14520002 bne r2,r18,0x0005c188 Branch if a Helmet was chosen 0005c180: 00000000 nop 0005c184: 340400ff ori r4,r0,0x00ff Chosen Helmet = None 0005c188: a204001a sb r4,0x001a(r16) Store Chosen Helmet ID 0005c18c: 92840013 lbu r4,0x0013(r20) Load ENTD Armor ID 0005c190: 340200fe ori r2,r0,0x00fe r2 = FE 0005c194: 309200ff andi r18,r4,0x00ff r18 = Chosen ENTD Armor ID 0005c198: 16420014 bne r18,r2,0x0005c1ec Branch if Armor isn't Random 0005c19c: 32220040 andi r2,r17,0x0040 0005c1a0: 10400006 beq r2,r0,0x0005c1bc Branch if Unit doesn't have Equip Shield (Bug, Equip Armor) 0005c1a4: 34050010 ori r5,r0,0x0010 Item Type = Armor 0005c1a8: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005c1ac: 00003021 addu r6,r0,r0 Required Flags = None 0005c1b0: 0c017326 jal 0x0005cc98 Calculate Random Equipment 0005c1b4: 34070017 ori r7,r0,0x0017 Chosen Type = Heavy Armor 0005c1b8: 00402021 addu r4,r2,r0 r4 = Chosen Armor ID 0005c1bc: 309100ff andi r17,r4,0x00ff r17 = Chosen Armor 0005c1c0: 1632000a bne r17,r18,0x0005c1ec Branch if an Armor was chosen 0005c1c4: 34050010 ori r5,r0,0x0010 Item Type = Armor 0005c1c8: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005c1cc: 00003021 addu r6,r0,r0 Required Flags = None 0005c1d0: 0c017326 jal 0x0005cc98 Calculate Random Equipment 0005c1d4: 340700ff ori r7,r0,0x00ff Chosen Type = Any 0005c1d8: 00402021 addu r4,r2,r0 r4 = Chosen Armor ID 0005c1dc: 308200ff andi r2,r4,0x00ff r2 = Chosen Armor 0005c1e0: 14510002 bne r2,r17,0x0005c1ec Branch if an Armor was chosen 0005c1e4: 00000000 nop 0005c1e8: 340400ff ori r4,r0,0x00ff Chosen Armor = None 0005c1ec: a204001b sb r4,0x001b(r16) Store Chosen Armor 0005c1f0: 92840014 lbu r4,0x0014(r20) Load ENTD Accessory ID 0005c1f4: 340200fe ori r2,r0,0x00fe r2 = FE 0005c1f8: 309100ff andi r17,r4,0x00ff r17 = ENTD Accessory ID 0005c1fc: 1622000a bne r17,r2,0x0005c228 Branch if Accessory isn't Random 0005c200: 34050008 ori r5,r0,0x0008 Item Type = Accessory 0005c204: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005c208: 00003021 addu r6,r0,r0 Required Flags = None 0005c20c: 0c017326 jal 0x0005cc98 Calculate Random Equipment 0005c210: 340700ff ori r7,r0,0x00ff Chosen Type = Any 0005c214: 00402021 addu r4,r2,r0 r4 = Chosen Accessory 0005c218: 308200ff andi r2,r4,0x00ff r2 = Chosen Accessory 0005c21c: 14510002 bne r2,r17,0x0005c228 Branch if an Accessory was chosen 0005c220: 00000000 nop 0005c224: 340400ff ori r4,r0,0x00ff Chosen Accessory = None 0005c228: a204001c sb r4,0x001c(r16) Store Chosen Accessory 0005c22c: 00001821 addu r3,r0,r0 Counter = 0 0005c230: 340500ff ori r5,r0,0x00ff r5 = FF 0005c234: 02032021 addu r4,r16,r3 r4 = Unit's Data Pointer + Counter 0005c238: 9082001a lbu r2,0x001a(r4) Load Unit's Equipment ID 0005c23c: 00000000 nop 0005c240: 14400002 bne r2,r0,0x0005c24c Branch if Equipment ID != 0 0005c244: 24630001 addiu r3,r3,0x0001 Counter ++ 0005c248: a085001a sb r5,0x001a(r4) Store Equipment ID = None 0005c24c: 28620007 slti r2,r3,0x0007 0005c250: 1440fff9 bne r2,r0,0x0005c238 Branch if Counter < 7 0005c254: 02032021 addu r4,r16,r3 r4 = Unit's Data Pointer + Counter 0005c258: 8fbf0024 lw r31,0x0024(r29) 0005c25c: 8fb40020 lw r20,0x0020(r29) 0005c260: 8fb3001c lw r19,0x001c(r29) 0005c264: 8fb20018 lw r18,0x0018(r29) 0005c268: 8fb10014 lw r17,0x0014(r29) 0005c26c: 8fb00010 lw r16,0x0010(r29) 0005c270: 27bd0028 addiu r29,r29,0x0028 0005c274: 03e00008 jr r31 0005c278: 00000000 nop Equippable Item Setting (Support/Female-only) 0005c27c: 9083008f lbu r3,0x008f(r4) Load Unit's 1st set of Support 0005c280: 00000000 nop 0005c284: 30620080 andi r2,r3,0x0080 0005c288: 10400006 beq r2,r0,0x0005c2a4 Branch if Support is not Equip Armor 0005c28c: 30620040 andi r2,r3,0x0040 0005c290: 9082004c lbu r2,0x004c(r4) Load Unit's Equippable Items set 3 0005c294: 00000000 nop 0005c298: 34420009 ori r2,r2,0x0009 Enable Helm/Armor 0005c29c: a082004c sb r2,0x004c(r4) Store new Equippable Items 0005c2a0: 30620040 andi r2,r3,0x0040 0005c2a4: 10400006 beq r2,r0,0x0005c2c0 Branch if Support is not Equip Shield 0005c2a8: 30620020 andi r2,r3,0x0020 0005c2ac: 9082004c lbu r2,0x004c(r4) Load Unit's Equippable Items set 3 0005c2b0: 00000000 nop 0005c2b4: 34420010 ori r2,r2,0x0010 Enable Shield 0005c2b8: a082004c sb r2,0x004c(r4) Store New Equippable Items 0005c2bc: 30620020 andi r2,r3,0x0020 0005c2c0: 10400006 beq r2,r0,0x0005c2dc Branch if Support is not Equip Sword 0005c2c4: 30620010 andi r2,r3,0x0010 0005c2c8: 9082004a lbu r2,0x004a(r4) Load Unit's Equippable Items set 1 0005c2cc: 00000000 nop 0005c2d0: 34420010 ori r2,r2,0x0010 Enable Swords 0005c2d4: a082004a sb r2,0x004a(r4) Store new Equippable Items 0005c2d8: 30620010 andi r2,r3,0x0010 0005c2dc: 10400006 beq r2,r0,0x0005c2f8 Branch if Support is not Equip Katana 0005c2e0: 30620008 andi r2,r3,0x0008 0005c2e4: 9082004a lbu r2,0x004a(r4) Load Unit's Equippable Items set 1 0005c2e8: 00000000 nop 0005c2ec: 34420004 ori r2,r2,0x0004 Enable Katanas 0005c2f0: a082004a sb r2,0x004a(r4) Store New Equippable Items 0005c2f4: 30620008 andi r2,r3,0x0008 0005c2f8: 10400006 beq r2,r0,0x0005c314 Branch if Support is not Equip Crossbow 0005c2fc: 30620004 andi r2,r3,0x0004 0005c300: 9082004b lbu r2,0x004b(r4) Load Unit's Equippable Items set 2 0005c304: 00000000 nop 0005c308: 34420010 ori r2,r2,0x0010 Enable Crossbow 0005c30c: a082004b sb r2,0x004b(r4) Store New Equippable Items 0005c310: 30620004 andi r2,r3,0x0004 0005c314: 10400006 beq r2,r0,0x0005c330 Branch if Support is not Equip Spear 0005c318: 30620002 andi r2,r3,0x0002 0005c31c: 9082004b lbu r2,0x004b(r4) Load Unit's Equippable Items set 2 0005c320: 00000000 nop 0005c324: 34420001 ori r2,r2,0x0001 Enable Polearms 0005c328: a082004b sb r2,0x004b(r4) Store New Equippable Items 0005c32c: 30620002 andi r2,r3,0x0002 0005c330: 10400006 beq r2,r0,0x0005c34c Branch if Support is not Equip Axe 0005c334: 30620001 andi r2,r3,0x0001 0005c338: 9082004a lbu r2,0x004a(r4) Load Unit's Equippable Items set 1 0005c33c: 00000000 nop 0005c340: 34420002 ori r2,r2,0x0002 Enable Axes 0005c344: a082004a sb r2,0x004a(r4) Store New Equippable Items 0005c348: 30620001 andi r2,r3,0x0001 0005c34c: 10400005 beq r2,r0,0x0005c364 Branch if Support is not Equip Gun 0005c350: 00000000 nop 0005c354: 9082004b lbu r2,0x004b(r4) Load Unit's Equippable Items set 2 0005c358: 00000000 nop 0005c35c: 34420020 ori r2,r2,0x0020 Enable Guns 0005c360: a082004b sb r2,0x004b(r4) Store New Equippable Items 0005c364: 90830006 lbu r3,0x0006(r4) Load Unit's Gender 0005c368: 00000000 nop 0005c36c: 30620040 andi r2,r3,0x0040 0005c370: 10400007 beq r2,r0,0x0005c390 Branch if Unit is not Female 0005c374: 00000000 nop 0005c378: 9082004c lbu r2,0x004c(r4) Load Unit's Equippable Items set 3 0005c37c: 9083004d lbu r3,0x004d(r4) Load Unit's Equippable Items set 4 0005c380: 34420042 ori r2,r2,0x0042 Enable Hair Ornaments/Bags 0005c384: 34630001 ori r3,r3,0x0001 Enable Perfume 0005c388: a082004c sb r2,0x004c(r4) Store New Equippable Items 0005c38c: a083004d sb r3,0x004d(r4) Store New Equippable Items 0005c390: 03e00008 jr r31 0005c394: 00000000 nop Equipment Stat Setting 0005c398: 27bdffe8 addiu r29,r29,0xffe8 0005c39c: afb00010 sw r16,0x0010(r29) 0005c3a0: 00808021 addu r16,r4,r0 r16 = Unit's Data Pointer 0005c3a4: 2604003c addiu r4,r16,0x003c r4 = Unit's Data Pointer (WP 1) 0005c3a8: afbf0014 sw r31,0x0014(r29) 0005c3ac: 0c017991 jal 0x0005e644 Data Nullifying (Equipment Stats) 0005c3b0: 3405000b ori r5,r0,0x000b r5 = b (Equipment Stats) 0005c3b4: 92030003 lbu r3,0x0003(r16) Load Unit's Job ID 0005c3b8: 00000000 nop 0005c3bc: 00031040 sll r2,r3,0x01 Job ID * 2 0005c3c0: 00431021 addu r2,r2,r3 Job ID * 3 0005c3c4: 3c038006 lui r3,0x8006 0005c3c8: 8c636194 lw r3,0x6194(r3) Load Job Data Pointer 0005c3cc: 00021100 sll r2,r2,0x04 Job ID * 24 0005c3d0: 00431021 addu r2,r2,r3 Job ID * 25 0005c3d4: 90430019 lbu r3,0x0019(r2) Load Job's C-EV 0005c3d8: 92020006 lbu r2,0x0006(r16) Load Unit's Gender Byte 0005c3dc: 00000000 nop 0005c3e0: 30420020 andi r2,r2,0x0020 0005c3e4: 14400073 bne r2,r0,0x0005c5b4 Branch if Unit is a Monster 0005c3e8: a2030043 sb r3,0x0043(r16) Store Job's C-EV into Unit's 0005c3ec: 9202001c lbu r2,0x001c(r16) Load Unit's Accessory ID 0005c3f0: 00000000 nop 0005c3f4: 00021840 sll r3,r2,0x01 ID * 2 0005c3f8: 00621821 addu r3,r3,r2 ID * 3 0005c3fc: 00031880 sll r3,r3,0x02 ID * 12 0005c400: 3c018006 lui r1,0x8006 0005c404: 00230821 addu r1,r1,r3 0005c408: 90222ebb lbu r2,0x2ebb(r1) Load Accessory's Item Type 0005c40c: 3c048006 lui r4,0x8006 0005c410: 24842eb8 addiu r4,r4,0x2eb8 r4 = Item Data Pointer 0005c414: 30420008 andi r2,r2,0x0008 0005c418: 1040000e beq r2,r0,0x0005c454 Branch if Accessory isn't an Accessory 0005c41c: 00000000 nop 0005c420: 3c018006 lui r1,0x8006 0005c424: 00230821 addu r1,r1,r3 0005c428: 90222ebc lbu r2,0x2ebc(r1) Load Accessory's Second Table ID 0005c42c: 3c038006 lui r3,0x8006 0005c430: 24633f58 addiu r3,r3,0x3f58 r3 = Accessory Secondary Data Pointer 0005c434: 00021040 sll r2,r2,0x01 ID * 2 0005c438: 00431021 addu r2,r2,r3 0005c43c: 90430000 lbu r3,0x0000(r2) Load Accessory's P-EV 0005c440: 00000000 nop 0005c444: a2030040 sb r3,0x0040(r16) Store Accessory's P-EV into Unit's 0005c448: 90420001 lbu r2,0x0001(r2) Load Accessory's M-EV 0005c44c: 00000000 nop 0005c450: a2020044 sb r2,0x0044(r16) Store Accessory's M-EV into Unit's 0005c454: 9202001e lbu r2,0x001e(r16) Load Unit's RH Shield 0005c458: 00000000 nop 0005c45c: 00021840 sll r3,r2,0x01 ID * 2 0005c460: 00621821 addu r3,r3,r2 ID * 3 0005c464: 00031880 sll r3,r3,0x02 ID * 12 0005c468: 00641021 addu r2,r3,r4 0005c46c: 90420003 lbu r2,0x0003(r2) Load Shield's Item Type 0005c470: 00000000 nop 0005c474: 30420040 andi r2,r2,0x0040 0005c478: 1040000e beq r2,r0,0x0005c4b4 Branch if Shield isn't a Shield 0005c47c: 00000000 nop 0005c480: 3c018006 lui r1,0x8006 0005c484: 00230821 addu r1,r1,r3 0005c488: 90222ebc lbu r2,0x2ebc(r1) Load Shield's Second Table ID 0005c48c: 3c038006 lui r3,0x8006 0005c490: 24633eb8 addiu r3,r3,0x3eb8 0005c494: 00021040 sll r2,r2,0x01 ID * 2 0005c498: 00431821 addu r3,r2,r3 0005c49c: 90620000 lbu r2,0x0000(r3) Load Shield's P-EV 0005c4a0: 00000000 nop 0005c4a4: a2020041 sb r2,0x0041(r16) Store RH Shield's P-EV into Unit's 0005c4a8: 90620001 lbu r2,0x0001(r3) Load Shield's M-EV 0005c4ac: 00000000 nop 0005c4b0: a2020045 sb r2,0x0045(r16) Store RH Shield's M-EV into Unit's 0005c4b4: 92020020 lbu r2,0x0020(r16) Load Unit's LH Shield 0005c4b8: 00000000 nop 0005c4bc: 00021840 sll r3,r2,0x01 ID * 2 0005c4c0: 00621821 addu r3,r3,r2 ID * 3 0005c4c4: 00031880 sll r3,r3,0x02 ID * 12 0005c4c8: 00641021 addu r2,r3,r4 0005c4cc: 90420003 lbu r2,0x0003(r2) Load Shield's Item Type 0005c4d0: 00000000 nop 0005c4d4: 30420040 andi r2,r2,0x0040 0005c4d8: 1040000e beq r2,r0,0x0005c514 Branch if Shield isn't a Shield 0005c4dc: 00000000 nop 0005c4e0: 3c018006 lui r1,0x8006 0005c4e4: 00230821 addu r1,r1,r3 0005c4e8: 90222ebc lbu r2,0x2ebc(r1) Load Shield's Second Table ID 0005c4ec: 3c038006 lui r3,0x8006 0005c4f0: 24633eb8 addiu r3,r3,0x3eb8 0005c4f4: 00021040 sll r2,r2,0x01 ID * 2 0005c4f8: 00431821 addu r3,r2,r3 0005c4fc: 90620000 lbu r2,0x0000(r3) Load Shield's P-EV 0005c500: 00000000 nop 0005c504: a2020042 sb r2,0x0042(r16) Store LH Shield's P-EV into Unit's 0005c508: 90620001 lbu r2,0x0001(r3) Load Shield's M-EV 0005c50c: 00000000 nop 0005c510: a2020046 sb r2,0x0046(r16) Store LH Shield's M-EV into Unit's 0005c514: 9203001d lbu r3,0x001d(r16) Load Unit's RH Weapon 0005c518: 00000000 nop 0005c51c: 00031040 sll r2,r3,0x01 ID * 2 0005c520: 00431021 addu r2,r2,r3 ID * 3 0005c524: 00021080 sll r2,r2,0x02 ID * 12 0005c528: 00441021 addu r2,r2,r4 0005c52c: 90420003 lbu r2,0x0003(r2) Load Weapon's Item Type 0005c530: 00000000 nop 0005c534: 30420080 andi r2,r2,0x0080 0005c538: 1040000a beq r2,r0,0x0005c564 Branch if Weapon isn't a Weapon 0005c53c: 000318c0 sll r3,r3,0x03 Original ID * 8 0005c540: 3c028006 lui r2,0x8006 0005c544: 24423ab8 addiu r2,r2,0x3ab8 0005c548: 00621821 addu r3,r3,r2 0005c54c: 90620004 lbu r2,0x0004(r3) Load Weapon's WP 0005c550: 00000000 nop 0005c554: a202003c sb r2,0x003c(r16) Store RH Weapon's WP into Unit's 0005c558: 90620005 lbu r2,0x0005(r3) Load Weapon's W-EV 0005c55c: 00000000 nop 0005c560: a202003e sb r2,0x003e(r16) Store RH Weapon's W-EV into Unit's 0005c564: 9203001f lbu r3,0x001f(r16) Load Unit's LH Weapon 0005c568: 00000000 nop 0005c56c: 00031040 sll r2,r3,0x01 ID * 2 0005c570: 00431021 addu r2,r2,r3 ID * 3 0005c574: 00021080 sll r2,r2,0x02 ID * 12 0005c578: 00441021 addu r2,r2,r4 0005c57c: 90420003 lbu r2,0x0003(r2) Load Weapon's Item Type 0005c580: 00000000 nop 0005c584: 30420080 andi r2,r2,0x0080 0005c588: 1040000a beq r2,r0,0x0005c5b4 Branch if Weapon isn't a Weapon 0005c58c: 000318c0 sll r3,r3,0x03 Original ID * 8 0005c590: 3c028006 lui r2,0x8006 0005c594: 24423ab8 addiu r2,r2,0x3ab8 0005c598: 00621821 addu r3,r3,r2 0005c59c: 90620004 lbu r2,0x0004(r3) Load Weapon's WP 0005c5a0: 00000000 nop 0005c5a4: a202003d sb r2,0x003d(r16) Store LH Weapon's WP into Unit's 0005c5a8: 90620005 lbu r2,0x0005(r3) Load Weapon's W-EV 0005c5ac: 00000000 nop 0005c5b0: a202003f sb r2,0x003f(r16) Store LH Weapon's W-EV 0005c5b4: 8fbf0014 lw r31,0x0014(r29) 0005c5b8: 8fb00010 lw r16,0x0010(r29) 0005c5bc: 27bd0018 addiu r29,r29,0x0018 0005c5c0: 03e00008 jr r31 0005c5c4: 00000000 nop Equipment Attribute Setting 0005c5c8: 27bdffe0 addiu r29,r29,0xffe0 (Note: Level UP Check + 1 below is to prevent Level UP, and 0005c5cc: afb10014 sw r17,0x0014(r29) to set the new Max HP/MP and/or PA/MA/SP) 0005c5d0: 00808821 addu r17,r4,r0 r17 = Unit's Data Pointer 0005c5d4: afb00010 sw r16,0x0010(r29) 0005c5d8: 00a08021 addu r16,r5,r0 r16 = Level UP Check 0005c5dc: afb20018 sw r18,0x0018(r29) 0005c5e0: 26320033 addiu r18,r17,0x0033 r18 = Unit's Data Pointer (Bonus Stats) 0005c5e4: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer (Bonus Stats) 0005c5e8: afbf001c sw r31,0x001c(r29) 0005c5ec: 0c017991 jal 0x0005e644 Data Nullifying (Bonus Stats) 0005c5f0: 34050003 ori r5,r0,0x0003 r5 = 3 (The three Bonus Stats) 0005c5f4: 02202021 addu r4,r17,r0 r4 = Unit's Data Pointer 0005c5f8: 0c016e20 jal 0x0005b880 Calculate Actual Stats (No Level UP) 0005c5fc: 26050001 addiu r5,r16,0x0001 r5 = Level UP Check + 1 (1 = HP/MP/PA/MA/SP, 2 = HP/MP) 0005c600: 92220006 lbu r2,0x0006(r17) Load Unit's Gender Byte 0005c604: 341003e7 ori r16,r0,0x03e7 HP/MP Cap = 999 (This is what causes ??? to re-cap) 0005c608: 30420020 andi r2,r2,0x0020 0005c60c: 14400087 bne r2,r0,0x0005c82c Branch if Unit is a Monster 0005c610: a2200184 sb r0,0x0184(r17) Unit's Equipped Flags? = 0 0005c614: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer (Bonus Stats) 0005c618: 00005021 addu r10,r0,r0 Equipment Counter = 0 0005c61c: 022a1021 addu r2,r17,r10 r2 = Unit's Data Pointer + Equipment's Counter 0005c620: 9045001a lbu r5,0x001a(r2) Load Unit's Equipment ID 0005c624: 34020020 ori r2,r0,0x0020 r2 = 20 0005c628: 30a300ff andi r3,r5,0x00ff r3 = Unit's Equipment ID 0005c62c: 14620006 bne r3,r2,0x0005c648 Branch if Item isn't Materia Blade 0005c630: 2c620080 sltiu r2,r3,0x0080 0005c634: 92220184 lbu r2,0x0184(r17) Load Unit's Equipped Flags? 0005c638: 00000000 nop 0005c63c: 34420004 ori r2,r2,0x0004 Enable Materia Blade 0005c640: a2220184 sb r2,0x0184(r17) Store New Equipped Flags? 0005c644: 2c620080 sltiu r2,r3,0x0080 0005c648: 1040000f beq r2,r0,0x0005c688 Branch if Item isn't a weapon 0005c64c: 00031040 sll r2,r3,0x01 ID * 2 0005c650: 00431021 addu r2,r2,r3 ID * 3 0005c654: 00021080 sll r2,r2,0x02 ID * 12 0005c658: 3c018006 lui r1,0x8006 0005c65c: 00220821 addu r1,r1,r2 0005c660: 90222ebd lbu r2,0x2ebd(r1) Load Weapon's Item Type 0005c664: 00000000 nop 0005c668: 2442fffd addiu r2,r2,0xfffd Item Type - 3 (Sword) 0005c66c: 2c420002 sltiu r2,r2,0x0002 0005c670: 10400006 beq r2,r0,0x0005c68c Branch if Weapon isn't a Sword or Knight Sword 0005c674: 30a300ff andi r3,r5,0x00ff 0005c678: 92220184 lbu r2,0x0184(r17) Load Equipped Flags? 0005c67c: 00000000 nop 0005c680: 34420008 ori r2,r2,0x0008 Enable Sword 0005c684: a2220184 sb r2,0x0184(r17) Store new Equipped Flags? 0005c688: 30a300ff andi r3,r5,0x00ff 0005c68c: 340200ff ori r2,r0,0x00ff r2 = ff 0005c690: 10620062 beq r3,r2,0x0005c81c Branch if nothing is equipped 0005c694: 00031040 sll r2,r3,0x01 ID * 2 0005c698: 00803021 addu r6,r4,r0 r6 = Unit's Data Pointer (Bonus Stats) 0005c69c: 00431021 addu r2,r2,r3 ID * 3 0005c6a0: 00021080 sll r2,r2,0x02 ID * 12 0005c6a4: 3c038006 lui r3,0x8006 0005c6a8: 24632eb8 addiu r3,r3,0x2eb8 0005c6ac: 00434821 addu r9,r2,r3 0005c6b0: 91230007 lbu r3,0x0007(r9) Load Equipment's Item Attributes 0005c6b4: 24880003 addiu r8,r4,0x0003 r8 = Unit's Data Pointer (PA) 0005c6b8: 00031040 sll r2,r3,0x01 ID * 2 0005c6bc: 00431021 addu r2,r2,r3 ID * 3 0005c6c0: 000210c0 sll r2,r2,0x03 ID * 24 0005c6c4: 00431021 addu r2,r2,r3 ID * 25 0005c6c8: 3c038006 lui r3,0x8006 0005c6cc: 246342c4 addiu r3,r3,0x42c4 0005c6d0: 00433821 addu r7,r2,r3 r7 = Item Attribute's Data Location 0005c6d4: 00e02821 addu r5,r7,r0 r5 = Item Attribute's Data Location 0005c6d8: 90a20000 lbu r2,0x0000(r5) Load Item Attribute's Stat 0005c6dc: 90c30000 lbu r3,0x0000(r6) Load Unit's Bonus Stat 0005c6e0: 00000000 nop 0005c6e4: 00431821 addu r3,r2,r3 Bonus Stat + Item Attribute's Stat 0005c6e8: 2c620100 sltiu r2,r3,0x0100 0005c6ec: 14400002 bne r2,r0,0x0005c6f8 Branch if new Stat < 256 0005c6f0: 24a50001 addiu r5,r5,0x0001 Item Attribute's Data Pointer += 1 0005c6f4: 340300ff ori r3,r0,0x00ff Stat = 255 0005c6f8: a0c30000 sb r3,0x0000(r6) Store new Bonus Stat 0005c6fc: 24c60001 addiu r6,r6,0x0001 Unit's Bonus Stat Pointer += 1 0005c700: 00c8102a slt r2,r6,r8 0005c704: 1440fff4 bne r2,r0,0x0005c6d8 Branch if all Bonus Stats haven't been checked 0005c708: 00000000 nop 0005c70c: 90e20003 lbu r2,0x0003(r7) Load Item Attribute's Move 0005c710: 9223003a lbu r3,0x003a(r17) Load Unit's Move 0005c714: 00000000 nop 0005c718: 00431821 addu r3,r2,r3 Item Attribute's Move + Unit's Move 0005c71c: 2c6200fe sltiu r2,r3,0x00fe 0005c720: 14400002 bne r2,r0,0x0005c72c Branch if Move < 254 0005c724: 00000000 nop 0005c728: 340300fd ori r3,r0,0x00fd Move = 253 0005c72c: a223003a sb r3,0x003a(r17) Store Unit's new Move 0005c730: 90e20004 lbu r2,0x0004(r7) Load Item Attribute's Jump 0005c734: 9223003b lbu r3,0x003b(r17) Load Unit's Jump 0005c738: 00000000 nop 0005c73c: 00431821 addu r3,r2,r3 Item Attribute's Jump + Unit's Jump 0005c740: 2c620008 sltiu r2,r3,0x0008 0005c744: 14400002 bne r2,r0,0x0005c750 Branch if Jump < 8 0005c748: 00002821 addu r5,r0,r0 Status Counter = 0 0005c74c: 34030007 ori r3,r0,0x0007 Jump = 7 0005c750: a223003b sb r3,0x003b(r17) Store Unit's new Jump 0005c754: 2626004e addiu r6,r17,0x004e r6 = Unit's Data Pointer (Innate Statuses) 0005c758: 00e51021 addu r2,r7,r5 r2 = Item Attribute's Pointer += Status Counter 0005c75c: 90420005 lbu r2,0x0005(r2) Load X Status set Y 0005c760: 90c30000 lbu r3,0x0000(r6) Load Unit's X Status set Y 0005c764: 24a50001 addiu r5,r5,0x0001 Status Counter += 1 0005c768: 00431025 or r2,r2,r3 Combine Item and Unit's Innate Statuses 0005c76c: a0c20000 sb r2,0x0000(r6) Store New Unit's Innate Statuses 0005c770: 28a2000f slti r2,r5,0x000f 0005c774: 1440fff8 bne r2,r0,0x0005c758 Branch if all statuses haven't been set 0005c778: 24c60001 addiu r6,r6,0x0001 Unit's Status Pointer += 1 0005c77c: 00002821 addu r5,r0,r0 Elemental Counter = 0 0005c780: 2626006d addiu r6,r17,0x006d r6 = Unit's Data Pointer (Elemental Absorption) 0005c784: 00e51021 addu r2,r7,r5 r2 = Item Attribute Pointer 0005c788: 90420014 lbu r2,0x0014(r2) Load Item Attribute's Element byte X 0005c78c: 90c30000 lbu r3,0x0000(r6) Load Unit's Element byte X 0005c790: 24a50001 addiu r5,r5,0x0001 Elemental Counter += 1 0005c794: 00431025 or r2,r2,r3 Combine Element Bytes 0005c798: a0c20000 sb r2,0x0000(r6) Store new Unit's Element Byte X 0005c79c: 28a20005 slti r2,r5,0x0005 0005c7a0: 1440fff8 bne r2,r0,0x0005c784 Branch if all Element Bytes haven't been checked 0005c7a4: 24c60001 addiu r6,r6,0x0001 Unit's Elemental Pointer += 1 0005c7a8: 91220003 lbu r2,0x0003(r9) Load Equipment's Item Type 0005c7ac: 00000000 nop 0005c7b0: 30420030 andi r2,r2,0x0030 0005c7b4: 10400019 beq r2,r0,0x0005c81c Branch if Equipment is not a Helm/Armor 0005c7b8: 00000000 nop 0005c7bc: 91220004 lbu r2,0x0004(r9) Load Equipment's Second Table ID 0005c7c0: 9623002a lhu r3,0x002a(r17) Load Unit's Max HP 0005c7c4: 00022840 sll r5,r2,0x01 ID * 2 0005c7c8: 3c018006 lui r1,0x8006 0005c7cc: 00250821 addu r1,r1,r5 0005c7d0: 90223ed8 lbu r2,0x3ed8(r1) Load Equipment's HP Bonus 0005c7d4: 00000000 nop 0005c7d8: 00621821 addu r3,r3,r2 Max HP += HP Bonus 0005c7dc: 0203102b sltu r2,r16,r3 0005c7e0: 10400002 beq r2,r0,0x0005c7ec Branch if HP/MP Cap >= Max HP 0005c7e4: 00000000 nop 0005c7e8: 02001821 addu r3,r16,r0 Max HP = HP/MP Cap 0005c7ec: 9622002e lhu r2,0x002e(r17) Load Unit's Max MP 0005c7f0: a623002a sh r3,0x002a(r17) Store new Max HP 0005c7f4: 3c018006 lui r1,0x8006 0005c7f8: 00250821 addu r1,r1,r5 0005c7fc: 90233ed9 lbu r3,0x3ed9(r1) Load Equipment's MP Bonus 0005c800: 00000000 nop 0005c804: 00431821 addu r3,r2,r3 Max MP += MP Bonus 0005c808: 0203102b sltu r2,r16,r3 0005c80c: 10400002 beq r2,r0,0x0005c818 Branch if HP/MP Cap >= Max MP 0005c810: 00000000 nop 0005c814: 02001821 addu r3,r16,r0 Max MP = HP/MP Cap 0005c818: a623002e sh r3,0x002e(r17) Store new Max MP 0005c81c: 254a0001 addiu r10,r10,0x0001 Equipment Counter += 1 0005c820: 29420007 slti r2,r10,0x0007 0005c824: 1440ff7e bne r2,r0,0x0005c620 Branch if all equipments haven't been checked 0005c828: 022a1021 addu r2,r17,r10 Equipment Pointer += 1 0005c82c: 96230028 lhu r3,0x0028(r17) Load Unit's Current HP 0005c830: 9622002a lhu r2,0x002a(r17) Load Unit's Max HP 0005c834: 00000000 nop 0005c838: 0043102b sltu r2,r2,r3 0005c83c: 10400004 beq r2,r0,0x0005c850 Branch if Max HP >= Current HP 0005c840: 00000000 nop 0005c844: 9622002a lhu r2,0x002a(r17) Load Unit's Max HP 0005c848: 00000000 nop 0005c84c: a6220028 sh r2,0x0028(r17) Store Unit's Current HP = Max HP 0005c850: 9623002c lhu r3,0x002c(r17) Load Unit's Current MP 0005c854: 9622002e lhu r2,0x002e(r17) Load Unit's Max MP 0005c858: 00000000 nop 0005c85c: 0043102b sltu r2,r2,r3 0005c860: 10400004 beq r2,r0,0x0005c874 Branch if Max MP >= Current MP 0005c864: 26250030 addiu r5,r17,0x0030 r5 = Unit's Data Pointer (Original PA) 0005c868: 9622002e lhu r2,0x002e(r17) Load Unit's Max MP 0005c86c: 00000000 nop 0005c870: a622002c sh r2,0x002c(r17) Store Unit's Current MP = Max MP 0005c874: 26260032 addiu r6,r17,0x0032 r6 = Unit's Data Pointer (Original SP) 0005c878: 26240033 addiu r4,r17,0x0033 r4 = Unit's Data Pointer (Bonus PA) 0005c87c: 90a20003 lbu r2,0x0003(r5) Load Unit's Bonus Stat 0005c880: 90a30000 lbu r3,0x0000(r5) Load Unit's Original Stat 0005c884: 00000000 nop 0005c888: 00431821 addu r3,r2,r3 Original Stat += Bonus Stat 0005c88c: 00a6102a slt r2,r5,r6 0005c890: 10400005 beq r2,r0,0x0005c8a8 Branch if New Stat is Speed 0005c894: 2c620064 sltiu r2,r3,0x0064 0005c898: 14400008 bne r2,r0,0x0005c8bc Branch if New Stat < 100 0005c89c: 00000000 nop 0005c8a0: 0801722f j 0x0005c8bc 0005c8a4: 34030063 ori r3,r0,0x0063 New Stat = 99 0005c8a8: 3062ffff andi r2,r3,0xffff 0005c8ac: 2c420033 sltiu r2,r2,0x0033 0005c8b0: 14400002 bne r2,r0,0x0005c8bc Branch if New Speed < 51 0005c8b4: 00000000 nop 0005c8b8: 34030032 ori r3,r0,0x0032 New Speed = 50 0005c8bc: a0a30006 sb r3,0x0006(r5) Store Unit's Actual Stat = New Stat 0005c8c0: 24a50001 addiu r5,r5,0x0001 Stat Pointer += 1 0005c8c4: 00a4102a slt r2,r5,r4 0005c8c8: 1440ffec bne r2,r0,0x0005c87c Branch if all stats haven't been set 0005c8cc: 00000000 nop 0005c8d0: 8fbf001c lw r31,0x001c(r29) 0005c8d4: 8fb20018 lw r18,0x0018(r29) 0005c8d8: 8fb10014 lw r17,0x0014(r29) 0005c8dc: 8fb00010 lw r16,0x0010(r29) 0005c8e0: 27bd0020 addiu r29,r29,0x0020 0005c8e4: 03e00008 jr r31 0005c8e8: 00000000 nop Move/Jump +X Calculation 0005c8ec: 14a00005 bne r5,r0,0x0005c904 Branch if not Setting Current HP/MP to Max 0005c8f0: 00000000 nop 0005c8f4: 9482002a lhu r2,0x002a(r4) Load Unit's Max HP 0005c8f8: 9483002e lhu r3,0x002e(r4) Load Unit's Max MP 0005c8fc: a4820028 sh r2,0x0028(r4) Store Current HP = Max HP 0005c900: a483002c sh r3,0x002c(r4) Store Current MP = Max MP 0005c904: 9085003a lbu r5,0x003a(r4) Load Unit's Move 0005c908: 90860093 lbu r6,0x0093(r4) Load Unit's 1st set of Movements 0005c90c: 9083003b lbu r3,0x003b(r4) Load Unit's Jump 0005c910: 30c20080 andi r2,r6,0x0080 0005c914: 10400002 beq r2,r0,0x0005c920 Branch if Unit doesn't have Move +1 0005c918: 30c20040 andi r2,r6,0x0040 0005c91c: 24a50001 addiu r5,r5,0x0001 Move += 1 0005c920: 10400002 beq r2,r0,0x0005c92c Branch if Unit doesn't have Move +2 0005c924: 30c20020 andi r2,r6,0x0020 0005c928: 24a50002 addiu r5,r5,0x0002 Move += 2 0005c92c: 10400002 beq r2,r0,0x0005c938 Branch if Unit doesn't have Move +3 0005c930: 30c20010 andi r2,r6,0x0010 0005c934: 24a50003 addiu r5,r5,0x0003 Move += 3 0005c938: 10400002 beq r2,r0,0x0005c944 Branch if Unit doesn't have Jump +1 0005c93c: 30c20008 andi r2,r6,0x0008 0005c940: 24630001 addiu r3,r3,0x0001 Jump += 1 0005c944: 10400002 beq r2,r0,0x0005c950 Branch if Unit doesn't have Jump +2 0005c948: 30c20004 andi r2,r6,0x0004 0005c94c: 24630002 addiu r3,r3,0x0002 Jump += 2 0005c950: 10400002 beq r2,r0,0x0005c95c Branch if Unit doesn't have Jump +3 0005c954: 30a2ffff andi r2,r5,0xffff 0005c958: 24630003 addiu r3,r3,0x0003 Jump += 3 0005c95c: 2c4200fd sltiu r2,r2,0x00fd 0005c960: 14400002 bne r2,r0,0x0005c96c Branch if Unit's Move < 253 0005c964: 3062ffff andi r2,r3,0xffff 0005c968: 340500fc ori r5,r0,0x00fc Move = 252 0005c96c: 2c420008 sltiu r2,r2,0x0008 0005c970: 14400002 bne r2,r0,0x0005c97c Branch if Unit's Jump < 8 0005c974: a085003a sb r5,0x003a(r4) Store Move 0005c978: 34030007 ori r3,r0,0x0007 Jump = 7 0005c97c: 03e00008 jr r31 0005c980: a083003b sb r3,0x003b(r4) Store Jump Store/Generate Character Names 0005c984: 3c028006 lui r2,0x8006 0005c988: 8c426200 lw r2,0x6200(r2) Load Battle Initialization flag? 0005c98c: 27bdfec8 addiu r29,r29,0xfec8 0005c990: afb20118 sw r18,0x0118(r29) 0005c994: 00809021 addu r18,r4,r0 r18 = Unit's Data Pointer 0005c998: afb50124 sw r21,0x0124(r29) 0005c99c: 3c158013 lui r21,0x8013 0005c9a0: 26b52824 addiu r21,r21,0x2824 r21 = Pointer to "Prep for Loading Text" Code (battle) 0005c9a4: afbf0130 sw r31,0x0130(r29) 0005c9a8: afb7012c sw r23,0x012c(r29) 0005c9ac: afb60128 sw r22,0x0128(r29) 0005c9b0: afb40120 sw r20,0x0120(r29) 0005c9b4: afb3011c sw r19,0x011c(r29) 0005c9b8: afb10114 sw r17,0x0114(r29) 0005c9bc: 10400003 beq r2,r0,0x0005c9cc Branch if not Initializing Data? 0005c9c0: afb00110 sw r16,0x0110(r29) 0005c9c4: 3c15800e lui r21,0x800e 0005c9c8: 26b56edc addiu r21,r21,0x6edc r21 = Pointer to "Prep for Loading Text" Code (world) 0005c9cc: 92440002 lbu r4,0x0002(r18) Load Unit's Party ID 0005c9d0: 340200ff ori r2,r0,0x00ff r2 = FF 0005c9d4: 14820053 bne r4,r2,0x0005cb24 Branch if Party ID != FF (already named) 0005c9d8: 00000000 nop 0005c9dc: 9247016c lbu r7,0x016c(r18) Load Unit's Name ID 0005c9e0: 00000000 nop 0005c9e4: 14e4004a bne r7,r4,0x0005cb10 Branch if Name ID != Party ID (name already chosen) 0005c9e8: 34114000 ori r17,r0,0x4000 Name Flags = 0x4000 (Special Names) 0005c9ec: 92430006 lbu r3,0x0006(r18) Load Unit's Gender Byte 0005c9f0: 00000000 nop 0005c9f4: 30620080 andi r2,r3,0x0080 0005c9f8: 10400004 beq r2,r0,0x0005ca0c Branch if Unit isn't a male 0005c9fc: 306400e0 andi r4,r3,0x00e0 r4 = Unit's Gender 0005ca00: 34114100 ori r17,r0,0x4100 Name Flags = 0x4100 (Generic Male Names) 0005ca04: 0801728a j 0x0005ca28 0005ca08: 34140100 ori r20,r0,0x0100 Name Modifier = 0x100 0005ca0c: 30620040 andi r2,r3,0x0040 0005ca10: 10400003 beq r2,r0,0x0005ca20 Branch if Unit isn't a Female 0005ca14: 34114200 ori r17,r0,0x4200 Name Flags = 0x4200 (Generic Female Names) 0005ca18: 0801728a j 0x0005ca28 0005ca1c: 34140200 ori r20,r0,0x0200 Name Mod = 0x200 0005ca20: 34114300 ori r17,r0,0x4300 Name Flags = 0x4300 (Generic Monster Names) 0005ca24: 34140300 ori r20,r0,0x0300 Name Mod = 0x300 0005ca28: 3c178005 lui r23,0x8005 0005ca2c: 26f77f74 addiu r23,r23,0x7f74 r23 = Party Data Pointer 0005ca30: 341600ff ori r22,r0,0x00ff r22 = FF 0005ca34: 309300ff andi r19,r4,0x00ff r19 = Unit's Gender 0005ca38: 0c0088c3 jal 0x0002230c Random Number Generator 0005ca3c: 34100001 ori r16,r0,0x0001 r16 = 1 (success, for later) 0005ca40: 00021a00 sll r3,r2,0x08 Random * 256 0005ca44: 00621023 subu r2,r3,r2 Random * 255 (supposed to be * 256 instead?) 0005ca48: 04410002 bgez r2,0x0005ca54 Branch if Random >= 0 (it's never negative) 0005ca4c: 00003021 addu r6,r0,r0 Counter = 0 0005ca50: 24427fff addiu r2,r2,0x7fff Random * 255 + 0x7FFF 0005ca54: 000213c3 sra r2,r2,0x0f Random * 255 / 0x8000 (rand(0..254) 0005ca58: 02823821 addu r7,r20,r2 Chosen Name = Name Mod + rand(0..254) 0005ca5c: 30e4ffff andi r4,r7,0xffff 0005ca60: 02e02821 addu r5,r23,r0 r5 = Party Data Pointer 0005ca64: 90a20001 lbu r2,0x0001(r5) Load Unit's Party ID 0005ca68: 00000000 nop 0005ca6c: 1056000e beq r2,r22,0x0005caa8 Branch if Party ID = FF 0005ca70: 00000000 nop 0005ca74: 90a20004 lbu r2,0x0004(r5) Load Unit's Gender Byte 0005ca78: 00000000 nop 0005ca7c: 304200e0 andi r2,r2,0x00e0 0005ca80: 16620009 bne r19,r2,0x0005caa8 Branch if Unit's Gender != Unit's Party Gender 0005ca84: 00000000 nop 0005ca88: 90a200cf lbu r2,0x00cf(r5) Load Unit's Name ID (high bit) 0005ca8c: 90a300ce lbu r3,0x00ce(r5) Load Unit's Name ID 0005ca90: 00021200 sll r2,r2,0x08 High Bit * 256 0005ca94: 00621825 or r3,r3,r2 Name ID + High Bit * 256 0005ca98: 14640004 bne r3,r4,0x0005caac Branch if Name ID != Chosen Name 0005ca9c: 24c60001 addiu r6,r6,0x0001 Counter ++ 0005caa0: 080172ae j 0x0005cab8 0005caa4: 00008021 addu r16,r0,r0 r16 = 0 (Another Party Unit has this name) 0005caa8: 24c60001 addiu r6,r6,0x0001 Counter ++ 0005caac: 28c20014 slti r2,r6,0x0014 0005cab0: 1440ffec bne r2,r0,0x0005ca64 Branch if Counter < 20 0005cab4: 24a50100 addiu r5,r5,0x0100 Party Data Pointer += 0x100 0005cab8: 00003021 addu r6,r0,r0 Counter = 0 0005cabc: 30e5ffff andi r5,r7,0xffff r5 = Unit's Chosen Name 0005cac0: 3c038019 lui r3,0x8019 0005cac4: 246308cc addiu r3,r3,0x08cc r3 = Unit Data Pointer 0005cac8: 90620006 lbu r2,0x0006(r3) Load Unit's Gender 0005cacc: 00000000 nop 0005cad0: 304200e0 andi r2,r2,0x00e0 0005cad4: 16620007 bne r19,r2,0x0005caf4 Branch if Gender != Gender 0005cad8: 00000000 nop 0005cadc: 9462016c lhu r2,0x016c(r3) Load Unit's Name ID 0005cae0: 00000000 nop 0005cae4: 14450003 bne r2,r5,0x0005caf4 Branch if Name ID != Chosen Name 0005cae8: 00000000 nop 0005caec: 080172c1 j 0x0005cb04 0005caf0: 00008021 addu r16,r0,r0 r16 = 0 (Another Battle Unit has this name) 0005caf4: 24c60001 addiu r6,r6,0x0001 Counter ++ 0005caf8: 28c20015 slti r2,r6,0x0015 0005cafc: 1440fff2 bne r2,r0,0x0005cac8 Branch if Counter < 21 0005cb00: 246301c0 addiu r3,r3,0x01c0 Pointer += 0x1c0 0005cb04: 1200ffcc beq r16,r0,0x0005ca38 Branch if Another Unit has the chosen name 0005cb08: 00000000 nop 0005cb0c: a647016c sh r7,0x016c(r18) Store Unit's Chosen Name ID 0005cb10: 30e400ff andi r4,r7,0x00ff r4 = Chosen Name 0005cb14: 02a0f809 jalr r21,r31 Prep for Loading Text 0005cb18: 02242021 addu r4,r17,r4 r4 = Chosen Name + Name Flags 0005cb1c: 080172cd j 0x0005cb34 0005cb20: 00402021 addu r4,r2,r0 r4 = Text Pointer 0005cb24: 0c0166bc jal 0x00059af0 Get Party Data Pointer 0005cb28: 00000000 nop 0005cb2c: 244200be addiu r2,r2,0x00be Unit's Party Name Pointer 0005cb30: 00402021 addu r4,r2,r0 r4 = " 0005cb34: 2645012c addiu r5,r18,0x012c r5 = Unit's Name Pointer 0005cb38: 0c017319 jal 0x0005cc64 Store X into Y (Unit's Name) 0005cb3c: 34060010 ori r6,r0,0x0010 Limit = 16 0005cb40: 92440003 lbu r4,0x0003(r18) Load Unit's Job ID 0005cb44: 02a0f809 jalr r21,r31 Prep for Loading Text 0005cb48: 34843000 ori r4,r4,0x3000 Job ID + 0x3000 (Job Names) 0005cb4c: 00402021 addu r4,r2,r0 r4 = Text Pointer 0005cb50: 2645013c addiu r5,r18,0x013c r5 = Unit's Job Name Pointer 0005cb54: 0c017319 jal 0x0005cc64 Store X into Y (Job Name) 0005cb58: 34060010 ori r6,r0,0x0010 Limit = 16 0005cb5c: 92440012 lbu r4,0x0012(r18) Load Unit's Primary Skillset 0005cb60: 02a0f809 jalr r21,r31 Prep for Loading Text 0005cb64: 34841000 ori r4,r4,0x1000 Primary Skillset ID += 0x1000 (Skillset Name) 0005cb68: 00402021 addu r4,r2,r0 r4 = Text Pointer 0005cb6c: 2645014c addiu r5,r18,0x014c r5 = Pointer to Unit's Primary Skillset Name 0005cb70: 0c017319 jal 0x0005cc64 Store X into Y (Primary Skillset Name) 0005cb74: 34060008 ori r6,r0,0x0008 Limit = 8 0005cb78: 92440013 lbu r4,0x0013(r18) Load Unit's Secondary Skillset ID 0005cb7c: 02a0f809 jalr r21,r31 Prep for Loading Text 0005cb80: 34841000 ori r4,r4,0x1000 Secondary Skillset ID += 0x1000 (skillset Name) 0005cb84: 00402021 addu r4,r2,r0 r4 = Text Pointer 0005cb88: 26450154 addiu r5,r18,0x0154 r5 = Pointer to Unit's Secondary Skillset Name 0005cb8c: 0c017319 jal 0x0005cc64 Store X into Y (Secondary Skillset Name) 0005cb90: 34060008 ori r6,r0,0x0008 Limit = 8 0005cb94: 264401a7 addiu r4,r18,0x01a7 r4 = Pointer to Unit's Attack's Status Infliction 0005cb98: 0c017991 jal 0x0005e644 Data Nullifying (Attack's Status Infliction/Removal) 0005cb9c: 3405000a ori r5,r0,0x000a Limit = 10 0005cba0: 8fbf0130 lw r31,0x0130(r29) 0005cba4: 8fb7012c lw r23,0x012c(r29) 0005cba8: 8fb60128 lw r22,0x0128(r29) 0005cbac: 8fb50124 lw r21,0x0124(r29) 0005cbb0: 8fb40120 lw r20,0x0120(r29) 0005cbb4: 8fb3011c lw r19,0x011c(r29) 0005cbb8: 8fb20118 lw r18,0x0118(r29) 0005cbbc: 8fb10114 lw r17,0x0114(r29) 0005cbc0: 8fb00110 lw r16,0x0110(r29) 0005cbc4: 27bd0138 addiu r29,r29,0x0138 0005cbc8: 03e00008 jr r31 0005cbcc: 00000000 nop Calculate Highest Party Level 0005cbd0: 27bdffe0 addiu r29,r29,0xffe0 0005cbd4: afb10014 sw r17,0x0014(r29) 0005cbd8: 00008821 addu r17,r0,r0 High Level = 0 0005cbdc: afb00010 sw r16,0x0010(r29) 0005cbe0: 00008021 addu r16,r0,r0 Party ID = 0 0005cbe4: afb20018 sw r18,0x0018(r29) 0005cbe8: 341200ff ori r18,r0,0x00ff r18 = FF 0005cbec: afbf001c sw r31,0x001c(r29) 0005cbf0: 0c0166bc jal 0x00059af0 Get Party Data Pointer 0005cbf4: 02002021 addu r4,r16,r0 r4 = Party ID 0005cbf8: 00401821 addu r3,r2,r0 r3 = Party Data Pointer 0005cbfc: 90620001 lbu r2,0x0001(r3) Load Party ID 0005cc00: 00000000 nop 0005cc04: 10520007 beq r2,r18,0x0005cc24 Branch if Unit doesn't exist 0005cc08: 26100001 addiu r16,r16,0x0001 Party ID ++ 0005cc0c: 90620016 lbu r2,0x0016(r3) Load Party Level 0005cc10: 00000000 nop 0005cc14: 0222102b sltu r2,r17,r2 0005cc18: 10400003 beq r2,r0,0x0005cc28 Branch if High Level >= Level 0005cc1c: 2a020014 slti r2,r16,0x0014 0005cc20: 90710016 lbu r17,0x0016(r3) High Level = Level 0005cc24: 2a020014 slti r2,r16,0x0014 0005cc28: 1440fff1 bne r2,r0,0x0005cbf0 Branch if Party ID < 0x14 0005cc2c: 2e220064 sltiu r2,r17,0x0064 0005cc30: 14400002 bne r2,r0,0x0005cc3c Branch if High Level < 100 0005cc34: 00000000 nop 0005cc38: 34110063 ori r17,r0,0x0063 High Level = 99 0005cc3c: 3c018006 lui r1,0x8006 0005cc40: a0316308 sb r17,0x6308(r1) Store Highest Party Level 0005cc44: 02201021 addu r2,r17,r0 r2 = High Level 0005cc48: 8fbf001c lw r31,0x001c(r29) 0005cc4c: 8fb20018 lw r18,0x0018(r29) 0005cc50: 8fb10014 lw r17,0x0014(r29) 0005cc54: 8fb00010 lw r16,0x0010(r29) 0005cc58: 27bd0020 addiu r29,r29,0x0020 0005cc5c: 03e00008 jr r31 0005cc60: 00000000 nop Store X into Y (r4 = Loading Pointer, r5 = Storing Pointer) 0005cc64: 27bdfff8 addiu r29,r29,0xfff8 0005cc68: 18c00008 blez r6,0x0005cc8c 0005cc6c: 00001821 addu r3,r0,r0 Counter = 0 0005cc70: 90820000 lbu r2,0x0000(r4) Load X 0005cc74: 24840001 addiu r4,r4,0x0001 X Pointer += 1 0005cc78: 24630001 addiu r3,r3,0x0001 Counter += 1 0005cc7c: a0a20000 sb r2,0x0000(r5) Store X into Y 0005cc80: 0066102a slt r2,r3,r6 0005cc84: 1440fffa bne r2,r0,0x0005cc70 Branch if not finished 0005cc88: 24a50001 addiu r5,r5,0x0001 Y Pointer += 1 0005cc8c: 27bd0008 addiu r29,r29,0x0008 0005cc90: 03e00008 jr r31 0005cc94: 00000000 nop Calculate Random Equipment 0005cc98: 27bdff68 addiu r29,r29,0xff68 0005cc9c: 00806821 addu r13,r4,r0 r13 = Unit's Data Pointer 0005cca0: 30a500ff andi r5,r5,0x00ff r5 = Item Type 0005cca4: 34020020 ori r2,r0,0x0020 0005cca8: afbf0094 sw r31,0x0094(r29) 0005ccac: 10a20014 beq r5,r2,0x0005cd00 Branch if Item Type = Headgear 0005ccb0: afb00090 sw r16,0x0090(r29) 0005ccb4: 28a20021 slti r2,r5,0x0021 0005ccb8: 10400007 beq r2,r0,0x0005ccd8 Branch if Item Type >= 0x21 0005ccbc: 34020008 ori r2,r0,0x0008 0005ccc0: 10a20014 beq r5,r2,0x0005cd14 Branch if Item Type = Accessories 0005ccc4: 34020010 ori r2,r0,0x0010 0005ccc8: 10a20010 beq r5,r2,0x0005cd0c Branch if Item Type = Armor 0005cccc: 340200ac ori r2,r0,0x00ac Item Counter = 0xac 0005ccd0: 08017348 j 0x0005cd20 0005ccd4: 00001021 addu r2,r0,r0 Item Counter = 0 0005ccd8: 34020040 ori r2,r0,0x0040 0005ccdc: 10a20006 beq r5,r2,0x0005ccf8 Branch if Item Type = Shields 0005cce0: 34020080 ori r2,r0,0x0080 Item Counter = 0x80 (also used for check) 0005cce4: 14a2000e bne r5,r2,0x0005cd20 Branch if Item Type = Weapons 0005cce8: 00001021 addu r2,r0,r0 Item Counter = 0 0005ccec: 34020001 ori r2,r0,0x0001 Item Counter = 1 0005ccf0: 08017349 j 0x0005cd24 0005ccf4: 340a0080 ori r10,r0,0x0080 Limit = 0x80 (Item Type = Weapons) 0005ccf8: 08017349 j 0x0005cd24 0005ccfc: 340a0090 ori r10,r0,0x0090 Limit = 0x90 (Item Type = Shields) 0005cd00: 34020090 ori r2,r0,0x0090 Item Counter = 0x90 0005cd04: 08017349 j 0x0005cd24 0005cd08: 340a00ac ori r10,r0,0x00ac Limit = 0xac (Item Type = Armor) 0005cd0c: 08017349 j 0x0005cd24 0005cd10: 340a00d0 ori r10,r0,0x00d0 Limit = 0xd0 (Item Type = Headgear) 0005cd14: 340200d0 ori r2,r0,0x00d0 Item Counter = 0xd0 0005cd18: 08017349 j 0x0005cd24 0005cd1c: 340a00f0 ori r10,r0,0x00f0 Limit = 0xf0 (Item Type = Accessories) 0005cd20: 340a0100 ori r10,r0,0x0100 Limit = 0x100 (Item Type != Any above) 0005cd24: 00004821 addu r9,r0,r0 Temp Counter = 0 0005cd28: 00404021 addu r8,r2,r0 r8 = Item Counter 0005cd2c: 91ae0022 lbu r14,0x0022(r13) Load Unit's Level 0005cd30: 010a102a slt r2,r8,r10 0005cd34: 1040003c beq r2,r0,0x0005ce28 Branch if Item Counter = 0 0005cd38: 00006021 addu r12,r0,r0 High Level = 0 0005cd3c: 30e700ff andi r7,r7,0x00ff r7 = Chosen Type 0005cd40: 00081040 sll r2,r8,0x01 Item Counter * 2 0005cd44: 00481021 addu r2,r2,r8 IC * 3 0005cd48: 00025880 sll r11,r2,0x02 Pointer Mod = IC * 12 0005cd4c: 3c028006 lui r2,0x8006 0005cd50: 24422eb8 addiu r2,r2,0x2eb8 0005cd54: 01622821 addu r5,r11,r2 0005cd58: 90a30003 lbu r3,0x0003(r5) Load Item's Type Flags 0005cd5c: 00000000 nop 0005cd60: 30620002 andi r2,r3,0x0002 0005cd64: 1440002c bne r2,r0,0x0005ce18 Branch if Item is Rare 0005cd68: 340200ff ori r2,r0,0x00ff r2 = FF 0005cd6c: 90a30005 lbu r3,0x0005(r5) Load Item's Type 0005cd70: 10e20003 beq r7,r2,0x0005cd80 Branch if Chosen Type = Any 0005cd74: 00000000 nop 0005cd78: 14670027 bne r3,r7,0x0005ce18 Branch if Chosen Type != Item Type 0005cd7c: 00000000 nop 0005cd80: 306300ff andi r3,r3,0x00ff 0005cd84: 000310c2 srl r2,r3,0x03 Type / 8 0005cd88: 01a21021 addu r2,r13,r2 0005cd8c: 9044004a lbu r4,0x004a(r2) Load Unit's Equippable Item Flags 0005cd90: 30630007 andi r3,r3,0x0007 0005cd94: 34020080 ori r2,r0,0x0080 r2 = 0x80 0005cd98: 00621007 srav r2,r2,r3 0x80 / 2^(Type AND 7) (flag to check) 0005cd9c: 00822024 and r4,r4,r2 0005cda0: 1080001d beq r4,r0,0x0005ce18 Branch if Type isn't usable 0005cda4: 30c200ff andi r2,r6,0x00ff r2 = Required Flags 0005cda8: 1040000b beq r2,r0,0x0005cdd8 Branch if there are no Required Flags 0005cdac: 00000000 nop 0005cdb0: 90a20004 lbu r2,0x0004(r5) Load Item's Second Table ID 0005cdb4: 00000000 nop 0005cdb8: 000210c0 sll r2,r2,0x03 ID * 8 0005cdbc: 3c018006 lui r1,0x8006 0005cdc0: 00220821 addu r1,r1,r2 0005cdc4: 90223ab9 lbu r2,0x3ab9(r1) Load Item's Attack Flags 0005cdc8: 00000000 nop 0005cdcc: 00c21024 and r2,r6,r2 0005cdd0: 10400011 beq r2,r0,0x0005ce18 Branch if Required Flags aren't present 0005cdd4: 00000000 nop 0005cdd8: 90a30002 lbu r3,0x0002(r5) Load Item's Required Level 0005cddc: 00000000 nop 0005cde0: 306400ff andi r4,r3,0x00ff 0005cde4: 01c4102b sltu r2,r14,r4 0005cde8: 1440000b bne r2,r0,0x0005ce18 Branch if Unit's Level is too low 0005cdec: 0184102b sltu r2,r12,r4 0005cdf0: 10400003 beq r2,r0,0x0005ce00 Branch if High Level >= Required Level 0005cdf4: 00000000 nop (a new high level overrides the old possible equipment list) 0005cdf8: 00606021 addu r12,r3,r0 High Level = Required Level 0005cdfc: 00004821 addu r9,r0,r0 Temp Counter = 0 0005ce00: 01201821 addu r3,r9,r0 r3 = Current Temp Counter 0005ce04: 25290001 addiu r9,r9,0x0001 Temp Counter ++ 0005ce08: 306300ff andi r3,r3,0x00ff 0005ce0c: 27a20010 addiu r2,r29,0x0010 r2 = Stack Pointer + 0x10 0005ce10: 00431021 addu r2,r2,r3 0005ce14: a0480000 sb r8,0x0000(r2) Store Item Counter 0005ce18: 25080001 addiu r8,r8,0x0001 Item Counter ++ 0005ce1c: 010a102a slt r2,r8,r10 0005ce20: 1440ffca bne r2,r0,0x0005cd4c Branch if Item Counter < Limit 0005ce24: 256b000c addiu r11,r11,0x000c Pointer Mod += 0xc 0005ce28: 313000ff andi r16,r9,0x00ff r16 = Stack Counter 0005ce2c: 1200000c beq r16,r0,0x0005ce60 Branch if nothing was stored 0005ce30: 340200fe ori r2,r0,0x00fe Item ID = FE 0005ce34: 0c0088c3 jal 0x0002230c Random Number Generator 0005ce38: 00000000 nop 0005ce3c: 00500018 mult r2,r16 Random * Stack Counter 0005ce40: 00001012 mflo r2 r2 = " 0005ce44: 04410003 bgez r2,0x0005ce54 Branch if Random is Positive 0005ce48: 00021bc2 srl r3,r2,0x0f rand(0..Stack Counter - 1) 0005ce4c: 24427fff addiu r2,r2,0x7fff 0005ce50: 00021bc2 srl r3,r2,0x0f 0005ce54: 306200ff andi r2,r3,0x00ff 0005ce58: 03a21021 addu r2,r29,r2 0005ce5c: 90420010 lbu r2,0x0010(r2) Load Chosen Item ID 0005ce60: 8fbf0094 lw r31,0x0094(r29) 0005ce64: 8fb00090 lw r16,0x0090(r29) 0005ce68: 27bd0098 addiu r29,r29,0x0098 0005ce6c: 03e00008 jr r31 0005ce70: 00000000 nop Calculate Learned Abilities 0005ce74: 27bdffd0 addiu r29,r29,0xffd0 0005ce78: 00804021 addu r8,r4,r0 r8 = Unit's Data Pointer 0005ce7c: 00a03821 addu r7,r5,r0 Job ID = Job Counter + 0x4a/0x4b 0005ce80: afb60028 sw r22,0x0028(r29) 0005ce84: 0000b021 addu r22,r0,r0 r22 = 0 (Can Learn) 0005ce88: 24e9ffb6 addiu r9,r7,0xffb6 Job Counter = Job Counter - 0x4a 0005ce8c: 3402004a ori r2,r0,0x004a r2 = 0x4a 0005ce90: afbf002c sw r31,0x002c(r29) 0005ce94: afb50024 sw r21,0x0024(r29) 0005ce98: afb40020 sw r20,0x0020(r29) 0005ce9c: afb3001c sw r19,0x001c(r29) 0005cea0: afb20018 sw r18,0x0018(r29) 0005cea4: afb10014 sw r17,0x0014(r29) 0005cea8: 14e20011 bne r7,r2,0x0005cef0 Branch if Job ID != Base Job 0005ceac: afb00010 sw r16,0x0010(r29) 0005ceb0: 91030000 lbu r3,0x0000(r8) Load Unit's Sprite Set 0005ceb4: 00000000 nop 0005ceb8: 2462ff80 addiu r2,r3,0xff80 Sprite Set - 0x80 (no special jobs) 0005cebc: 304200ff andi r2,r2,0x00ff 0005cec0: 2c420002 sltiu r2,r2,0x0002 0005cec4: 14400016 bne r2,r0,0x0005cf20 Branch if Unit is a generic Male/Female 0005cec8: 306300ff andi r3,r3,0x00ff 0005cecc: 34020082 ori r2,r0,0x0082 0005ced0: 14620004 bne r3,r2,0x0005cee4 Branch if Unit isn't a Monster 0005ced4: 00000000 nop 0005ced8: 91070003 lbu r7,0x0003(r8) Load Unit's Job ID 0005cedc: 080173c8 j 0x0005cf20 0005cee0: 00000000 nop 0005cee4: 91070000 lbu r7,0x0000(r8) Load Unit's Sprite Set 0005cee8: 080173c8 j 0x0005cf20 0005ceec: 00000000 nop 0005cef0: 3c020080 lui r2,0x0080 Counter = 0x800000 0005cef4: 01228007 srav r16,r2,r9 Counter >> Job Counter 0005cef8: 91020096 lbu r2,0x0096(r8) Load Unit's Unlocked Jobs 1-8 0005cefc: 91030097 lbu r3,0x0097(r8) Load Unit's Unlocked Jobs 9-16 0005cf00: 91040098 lbu r4,0x0098(r8) Load Unit's Unlocked Jobs 17-20 0005cf04: 00021400 sll r2,r2,0x10 0005cf08: 00031a00 sll r3,r3,0x08 0005cf0c: 00431021 addu r2,r2,r3 0005cf10: 00442821 addu r5,r2,r4 r5 = Complete Unlocked Jobs 0005cf14: 00b01024 and r2,r5,r16 0005cf18: 1040005d beq r2,r0,0x0005d090 Branch if Job isn't unlocked 0005cf1c: 00000000 nop 0005cf20: 91030006 lbu r3,0x0006(r8) Load Unit's Gender Byte 0005cf24: 3402005b ori r2,r0,0x005b r2 = 5b 0005cf28: 14e20004 bne r7,r2,0x0005cf3c Branch if Job ID != 0x5b (Bard) 0005cf2c: 3402005c ori r2,r0,0x005c r2 = 5c 0005cf30: 30620040 andi r2,r3,0x0040 0005cf34: 14400056 bne r2,r0,0x0005d090 Branch if Unit is Female 0005cf38: 3402005c ori r2,r0,0x005c r2 = 5c 0005cf3c: 14e20003 bne r7,r2,0x0005cf4c Branch if Job ID != 0x5c (Dancer) 0005cf40: 30620080 andi r2,r3,0x0080 0005cf44: 14400052 bne r2,r0,0x0005d090 Branch if Unit is Male 0005cf48: 00000000 nop 0005cf4c: 91020003 lbu r2,0x0003(r8) Load Unit's Job ID 0005cf50: 00000000 nop 0005cf54: 14e20007 bne r7,r2,0x0005cf74 Branch if Current Job ID != Unit's Job ID 0005cf58: 00071040 sll r2,r7,0x01 ID * 2 0005cf5c: 90c2001d lbu r2,0x001d(r6) Load ENTD Primary Skillset 0005cf60: 91150012 lbu r21,0x0012(r8) Load Unit's Primary Skillset 0005cf64: 1440000a bne r2,r0,0x0005cf90 Branch if ENTD Primary Skillset != 0 0005cf68: 00008021 addu r16,r0,r0 Counter = 0 0005cf6c: 080173e4 j 0x0005cf90 0005cf70: 34160001 ori r22,r0,0x0001 r22 = 1 (Can't Learn Normally) 0005cf74: 00471021 addu r2,r2,r7 ID * 3 0005cf78: 3c038006 lui r3,0x8006 0005cf7c: 8c636194 lw r3,0x6194(r3) Load Job Data Pointer 0005cf80: 00021100 sll r2,r2,0x04 ID * 48 0005cf84: 00431021 addu r2,r2,r3 0005cf88: 90550000 lbu r21,0x0000(r2) Load Job's Skillset 0005cf8c: 00008021 addu r16,r0,r0 Counter = 0 0005cf90: 00091040 sll r2,r9,0x01 Job Counter * 2 0005cf94: 00489821 addu r19,r2,r8 r19 = Unit's Data Pointer + Job Counter * 2 0005cf98: 00491021 addu r2,r2,r9 Job Counter * 3 0005cf9c: 00481021 addu r2,r2,r8 r2 = Unit's Data Pointer + Job Counter * 3 0005cfa0: 24540099 addiu r20,r2,0x0099 r20 = Unit's Known Abilities Pointer 0005cfa4: 00009021 addu r18,r0,r0 r18 = 0 (No Ability Learned) 0005cfa8: 02a02021 addu r4,r21,r0 r4 = Job's Skillset 0005cfac: 0c01695a jal 0x0005a568 Load Ability From Skillset 0005cfb0: 02002821 addu r5,r16,r0 r5 = Counter 0005cfb4: 3042ffff andi r2,r2,0xffff 0005cfb8: 10400031 beq r2,r0,0x0005d080 Branch if Ability ID = 0 0005cfbc: 000218c0 sll r3,r2,0x03 ID * 8 0005cfc0: 3c028006 lui r2,0x8006 0005cfc4: 2442ebf0 addiu r2,r2,0xebf0 r2 = Ability Data 1 Pointer 0005cfc8: 00628821 addu r17,r3,r2 0005cfcc: 92250002 lbu r5,0x0002(r17) Load Ability's Chance to Learn 0005cfd0: 12c00003 beq r22,r0,0x0005cfe0 Branch if Unit Can Learn abilities 0005cfd4: 00000000 nop 0005cfd8: 08017412 j 0x0005d048 0005cfdc: 34120001 ori r18,r0,0x0001 r18 = 1 (Ability Learned) 0005cfe0: 0c017833 jal 0x0005e0cc Check if Random >= Chance 0005cfe4: 34040064 ori r4,r0,0x0064 Hit% = 100 0005cfe8: 14400017 bne r2,r0,0x0005d048 Branch if Ability wasn't learned 0005cfec: 00000000 nop 0005cff0: 96230000 lhu r3,0x0000(r17) Load Ability's JP Cost 0005cff4: 966200dc lhu r2,0x00dc(r19) Load Unit's Current JP 0005cff8: 00000000 nop 0005cffc: 0043102b sltu r2,r2,r3 0005d000: 14400011 bne r2,r0,0x0005d048 Branch if JP < JP Cost 0005d004: 02002021 addu r4,r16,r0 r4 = Counter 0005d008: 966200dc lhu r2,0x00dc(r19) Load Unit's Current JP 0005d00c: 00000000 nop 0005d010: 00431023 subu r2,r2,r3 JP - JP Cost 0005d014: 06010002 bgez r16,0x0005d020 Branch if Counter >= 0 0005d018: a66200dc sh r2,0x00dc(r19) Store Unit's new Current JP 0005d01c: 26040007 addiu r4,r16,0x0007 0005d020: 34120001 ori r18,r0,0x0001 r18 = 1 (Ability Learned) *Starting here is code that can be deleted, plus above Counter check/addition* 0005d024: 000420c3 sra r4,r4,0x03 Counter / 8 0005d028: 02842821 addu r5,r20,r4 Known Abilities Pointer + Counter / 8 (byte to grab) 0005d02c: 000420c0 sll r4,r4,0x03 Counter / 8 * 8 0005d030: 02042023 subu r4,r16,r4 Counter - Counter / 8 * 8 (current Ability) 0005d034: 34020080 ori r2,r0,0x0080 r2 = 0x80 0005d038: 90a30000 lbu r3,0x0000(r5) Load Unit's Known Abilities 0005d03c: 00821007 srav r2,r2,r4 0x80 / 2^(current Ability Counter) 0005d040: 00621825 or r3,r3,r2 Enable Ability 0005d044: a0a30000 sb r3,0x0000(r5) Store unit's new Known Abilities *End* 0005d048: 1240000d beq r18,r0,0x0005d080 Branch if an Ability wasn't learned 0005d04c: 00000000 nop (copy-paste code) 0005d050: 06010002 bgez r16,0x0005d05c Branch if Counter is positive 0005d054: 02002021 addu r4,r16,r0 r4 = Counter 0005d058: 26040007 addiu r4,r16,0x0007 0005d05c: 000420c3 sra r4,r4,0x03 Counter / 8 0005d060: 02842821 addu r5,r20,r4 Known Abilities Pointer + Counter / 8 0005d064: 000420c0 sll r4,r4,0x03 Counter / 8 * 8 0005d068: 02042023 subu r4,r16,r4 Counter - Counter / 8 * 8 0005d06c: 34020080 ori r2,r0,0x0080 r2 = 0x80 0005d070: 90a30000 lbu r3,0x0000(r5) Load Unit's Known Abilities 0005d074: 00821007 srav r2,r2,r4 0x80 / 2^(current Ability Counter) 0005d078: 00621825 or r3,r3,r2 Enable Ability 0005d07c: a0a30000 sb r3,0x0000(r5) Store Unit's new Known Abilities 0005d080: 26100001 addiu r16,r16,0x0001 Counter ++ 0005d084: 2a020018 slti r2,r16,0x0018 0005d088: 1440ffc7 bne r2,r0,0x0005cfa8 Branch if Counter < 0x18 0005d08c: 00009021 addu r18,r0,r0 0005d090: 8fbf002c lw r31,0x002c(r29) 0005d094: 8fb60028 lw r22,0x0028(r29) 0005d098: 8fb50024 lw r21,0x0024(r29) 0005d09c: 8fb40020 lw r20,0x0020(r29) 0005d0a0: 8fb3001c lw r19,0x001c(r29) 0005d0a4: 8fb20018 lw r18,0x0018(r29) 0005d0a8: 8fb10014 lw r17,0x0014(r29) 0005d0ac: 8fb00010 lw r16,0x0010(r29) 0005d0b0: 27bd0030 addiu r29,r29,0x0030 0005d0b4: 03e00008 jr r31 0005d0b8: 00000000 nop Calculate Unit's R/S/M 0005d0bc: 27bdfbe0 addiu r29,r29,0xfbe0 0005d0c0: 00804021 addu r8,r4,r0 r8 = Unit's Data Pointer 0005d0c4: afb60410 sw r22,0x0410(r29) 0005d0c8: 00c0b021 addu r22,r6,r0 r22 = R/S/M Check 0005d0cc: 00e05021 addu r10,r7,r0 r10 = ENTD Pointer 0005d0d0: 30a5ffff andi r5,r5,0xffff r5 = Ability ID 0005d0d4: 2ca201fe sltiu r2,r5,0x01fe (could load all of the known R/S/M into the stack, which 0005d0d8: afbf041c sw r31,0x041c(r29) it gives plenty of space for (~0x400, and if all 20 jobs 0005d0dc: afbe0418 sw r30,0x0418(r29) had 6 R/S/M each, that'd only be 0xf0 total), and sort 0005d0e0: afb70414 sw r23,0x0414(r29) them based on type, then randomly choose all 3 at once) 0005d0e4: afb5040c sw r21,0x040c(r29) 0005d0e8: afb40408 sw r20,0x0408(r29) 0005d0ec: afb30404 sw r19,0x0404(r29) 0005d0f0: afb20400 sw r18,0x0400(r29) 0005d0f4: afb103fc sw r17,0x03fc(r29) 0005d0f8: 10400003 beq r2,r0,0x0005d108 Branch if Ability is Random 0005d0fc: afb003f8 sw r16,0x03f8(r29) 0005d100: 080174e4 j 0x0005d390 0005d104: 00a01021 addu r2,r5,r0 Ability ID = ENTD Ability 0005d108: 91020006 lbu r2,0x0006(r8) Load Unit's Gender Byte 0005d10c: 00000000 nop 0005d110: 30420020 andi r2,r2,0x0020 0005d114: 1440009e bne r2,r0,0x0005d390 Branch if Unit is a monster 0005d118: 00001021 addu r2,r0,r0 Ability ID = 0 0005d11c: 00009821 addu r19,r0,r0 Counter = 0 0005d120: 01002021 addu r4,r8,r0 r4 = Unit's Data Pointer 0005d124: 27a30010 addiu r3,r29,0x0010 r3 = Stack Pointer + 0x10 0005d128: 9482000a lhu r2,0x000a(r4) Load Unit's Innate Ability 0005d12c: 24840002 addiu r4,r4,0x0002 Unit's Data Pointer += 2 0005d130: 26730001 addiu r19,r19,0x0001 Counter ++ 0005d134: a46203c0 sh r2,0x03c0(r3) Store Innate Ability on the Stack 0005d138: 2a620004 slti r2,r19,0x0004 0005d13c: 1440fffa bne r2,r0,0x0005d128 Branch if Counter < 4 0005d140: 24630002 addiu r3,r3,0x0002 Stack Pointer += 2 0005d144: 0000a021 addu r20,r0,r0 Stack Counter = 0 0005d148: 34070001 ori r7,r0,0x0001 r7 = 1 (Secondary not checked yet) 0005d14c: 91060013 lbu r6,0x0013(r8) Load Unit's Secondary ID 0005d150: 00009821 addu r19,r0,r0 Counter = 0 0005d154: 0100f021 addu r30,r8,r0 r30 = Unit's Data Pointer 0005d158: 00009021 addu r18,r0,r0 Skillset = 0 0005d15c: 34020013 ori r2,r0,0x0013 r2 = 0x13 0005d160: 16620008 bne r19,r2,0x0005d184 Branch if Counter != 0x13 (Mime check) 0005d164: 34150001 ori r21,r0,0x0001 r21 = 1 (Checking known abilities) 0005d168: 10e00078 beq r7,r0,0x0005d34c Branch if Secondary has been checked 0005d16c: 00000000 nop 0005d170: 00c09021 addu r18,r6,r0 Skillset = Unit's Secondary ID 0005d174: 12400075 beq r18,r0,0x0005d34c Branch if Unit doesn't have a secondary 0005d178: 00000000 nop 0005d17c: 08017472 j 0x0005d1c8 (this is for mime with a non-generic secondary?) 0005d180: 0000a821 addu r21,r0,r0 r21 = 0 (Not checking known abilities) 0005d184: 16600010 bne r19,r0,0x0005d1c8 Branch if Counter != 0 (Base ID check) 0005d188: 2669004a addiu r9,r19,0x004a Job ID = Counter + 0x4a 0005d18c: 91030000 lbu r3,0x0000(r8) Load Unit's Sprite Set 0005d190: 00000000 nop 0005d194: 2462ff80 addiu r2,r3,0xff80 Sprite Set - 0x80 0005d198: 304200ff andi r2,r2,0x00ff 0005d19c: 2c420002 sltiu r2,r2,0x0002 0005d1a0: 14400002 bne r2,r0,0x0005d1ac Branch if Sprite Set is Generic Male/Female 0005d1a4: 00000000 nop 0005d1a8: 00604821 addu r9,r3,r0 Job ID = Sprite Set 0005d1ac: 9143001d lbu r3,0x001d(r10) Load ENTD Primary Skillset 0005d1b0: 00000000 nop 0005d1b4: 10600004 beq r3,r0,0x0005d1c8 Branch if Primary Skillset = 0 0005d1b8: 340200ff ori r2,r0,0x00ff 0005d1bc: 10620002 beq r3,r2,0x0005d1c8 Branch if Primary Skillset = FF (job's) 0005d1c0: 00000000 nop 0005d1c4: 9152001d lbu r18,0x001d(r10) Load ENTD Primary Skillset 0005d1c8: 00000000 nop 0005d1cc: 16400009 bne r18,r0,0x0005d1f4 Branch if Skillset != 0 0005d1d0: 312300ff andi r3,r9,0x00ff r3 = Job ID 0005d1d4: 1060005d beq r3,r0,0x0005d34c Branch if Job ID = 0 0005d1d8: 00031040 sll r2,r3,0x01 Job ID * 2 0005d1dc: 00431021 addu r2,r2,r3 ID * 3 0005d1e0: 3c038006 lui r3,0x8006 0005d1e4: 8c636194 lw r3,0x6194(r3) Load Job Data Pointer 0005d1e8: 00021100 sll r2,r2,0x04 ID * 48 0005d1ec: 00431021 addu r2,r2,r3 0005d1f0: 90520000 lbu r18,0x0000(r2) Load Job's Skillset 0005d1f4: 00000000 nop 0005d1f8: 16460002 bne r18,r6,0x0005d204 Branch if Skillset != Unit's Secondary ID 0005d1fc: 00000000 nop 0005d200: 00003821 addu r7,r0,r0 r7 = 0 (Secondary checked) 0005d204: 12a00004 beq r21,r0,0x0005d218 Branch if not checking known Abilities (Mime) 0005d208: 34100010 ori r16,r0,0x0010 Known Ability Counter = 0x10 (R/S/M) 0005d20c: 93cb009b lbu r11,0x009b(r30) Load Unit's Known R/S/M 0005d210: 00000000 nop 0005d214: a3ab03d8 sb r11,0x03d8(r29) Temp Store Known R/S/M 0005d218: 93b703d8 lbu r23,0x03d8(r29) r23 = Known R/S/M 0005d21c: 12a0000c beq r21,r0,0x0005d250 Branch if not checking known abilities (Mime) 0005d220: 00008821 addu r17,r0,r0 r17 = 0 (ID isn't acceptable) 0005d224: 06010002 bgez r16,0x0005d230 Branch if Ability Counter >= 0 0005d228: 02001821 addu r3,r16,r0 r3 = Ability Counter 0005d22c: 26030007 addiu r3,r16,0x0007 0005d230: 000318c3 sra r3,r3,0x03 Ability Counter / 8 0005d234: 000318c0 sll r3,r3,0x03 Ability Counter / 8 * 8 0005d238: 02031823 subu r3,r16,r3 Current Ability = Ability Counter - Ability Counter / 8 * 8 0005d23c: 34020080 ori r2,r0,0x0080 r2 = 0x80 0005d240: 00621007 srav r2,r2,r3 0x80 / 2^(Current Ability) 0005d244: 02e21024 and r2,r23,r2 r2 = Current Known R/S/M 0005d248: 1040003c beq r2,r0,0x0005d33c Branch if R/S/M isnt known 0005d24c: 00008821 addu r17,r0,r0 r17 = 0 (ID isn't acceptable) 0005d250: 324400ff andi r4,r18,0x00ff r4 = Skillset 0005d254: 02002821 addu r5,r16,r0 r5 = Known Ability Counter 0005d258: afa603e0 sw r6,0x03e0(r29) Temp Store Unit's Secondary Skillset 0005d25c: afa703e4 sw r7,0x03e4(r29) Temp Store r7 0005d260: afa803e8 sw r8,0x03e8(r29) Temp Store Unit's Data Pointer 0005d264: afa903ec sw r9,0x03ec(r29) Temp Store Job ID 0005d268: 0c01695a jal 0x0005a568 Load Ability From Skillset 0005d26c: afaa03f0 sw r10,0x03f0(r29) Temp Store ENTD Pointer 0005d270: 00402021 addu r4,r2,r0 r4 = R/S/M ID 0005d274: 3083ffff andi r3,r4,0xffff 0005d278: 340201a9 ori r2,r0,0x01a9 r2 = 0x1a9 (Sunken State) 0005d27c: 8fa603e0 lw r6,0x03e0(r29) 0005d280: 8fa703e4 lw r7,0x03e4(r29) 0005d284: 8fa803e8 lw r8,0x03e8(r29) 0005d288: 8fa903ec lw r9,0x03ec(r29) 0005d28c: 8faa03f0 lw r10,0x03f0(r29) Reload Temp Stored Values 0005d290: 1062002a beq r3,r2,0x0005d33c Branch if R/S/M ID = Sunken State 0005d294: 00000000 nop 0005d298: 97a203d0 lhu r2,0x03d0(r29) Load Innate Ability 1 0005d29c: 00000000 nop 0005d2a0: 10620026 beq r3,r2,0x0005d33c Branch if Innate = Sunken State 0005d2a4: 00000000 nop 0005d2a8: 97a203d2 lhu r2,0x03d2(r29) Load Innate Ability 2 0005d2ac: 00000000 nop 0005d2b0: 10620022 beq r3,r2,0x0005d33c Branch if Innate = Sunken State 0005d2b4: 00000000 nop 0005d2b8: 97a203d4 lhu r2,0x03d4(r29) Load Innate Ability 3 0005d2bc: 00000000 nop 0005d2c0: 1062001e beq r3,r2,0x0005d33c Branch if Innate = Sunken State 0005d2c4: 00000000 nop 0005d2c8: 97a203d6 lhu r2,0x03d6(r29) Load Innate Ability 4 0005d2cc: 00000000 nop 0005d2d0: 1062001a beq r3,r2,0x0005d33c Branch if Innate = Sunken State 0005d2d4: 32c20002 andi r2,r22,0x0002 0005d2d8: 10400003 beq r2,r0,0x0005d2e8 Branch if not setting reaction 0005d2dc: 2482fe5a addiu r2,r4,0xfe5a r2 = R/S/M - 0x1a6 0005d2e0: 3042ffff andi r2,r2,0xffff 0005d2e4: 2c510020 sltiu r17,r2,0x0020 r17 = Reaction is a Reaction ID Check (ID acceptable check) 0005d2e8: 32c20004 andi r2,r22,0x0004 0005d2ec: 10400006 beq r2,r0,0x0005d308 Branch if not setting Support 0005d2f0: 2482fe3a addiu r2,r4,0xfe3a r2 = R/S/M - 0x1c6 0005d2f4: 3042ffff andi r2,r2,0xffff 0005d2f8: 2c420020 sltiu r2,r2,0x0020 0005d2fc: 10400003 beq r2,r0,0x0005d30c Branch if Support isn't a support ID 0005d300: 32c20008 andi r2,r22,0x0008 0005d304: 34110001 ori r17,r0,0x0001 r17 = 1 (ID is acceptable) 0005d308: 32c20008 andi r2,r22,0x0008 0005d30c: 10400005 beq r2,r0,0x0005d324 Branch if not setting movement 0005d310: 3082ffff andi r2,r4,0xffff 0005d314: 2c4201e6 sltiu r2,r2,0x01e6 0005d318: 14400002 bne r2,r0,0x0005d324 Branch if Movement isn't a Movement ID 0005d31c: 00000000 nop 0005d320: 34110001 ori r17,r0,0x0001 r17 = 1 (ID is acceptable) 0005d324: 12200005 beq r17,r0,0x0005d33c Branch if ID isn't acceptable 0005d328: 00141040 sll r2,r20,0x01 Stack Counter * 2 0005d32c: 27a30010 addiu r3,r29,0x0010 r3 = Stack Pointer + 0x10 0005d330: 00431021 addu r2,r2,r3 0005d334: a4440000 sh r4,0x0000(r2) Store R/S/M ID 0005d338: 26940001 addiu r20,r20,0x0001 Stack Counter ++ 0005d33c: 26100001 addiu r16,r16,0x0001 Ability Counter ++ 0005d340: 2a020016 slti r2,r16,0x0016 0005d344: 1440ffb5 bne r2,r0,0x0005d21c Branch if Ability Counter < 0x16 0005d348: 00000000 nop 0005d34c: 26730001 addiu r19,r19,0x0001 Counter ++ 0005d350: 2a620014 slti r2,r19,0x0014 (could limit to 0x13 to skip mime) 0005d354: 1440ff80 bne r2,r0,0x0005d158 Branch if Counter < 0x14 0005d358: 27de0003 addiu r30,r30,0x0003 Unit's Known Abilities Pointer += 3 0005d35c: 1280000c beq r20,r0,0x0005d390 Branch if Stack Counter = 0 0005d360: 00001021 addu r2,r0,r0 r2 = 0 0005d364: 0c0088c3 jal 0x0002230c Random Number Generator 0005d368: 00000000 nop 0005d36c: 00540018 mult r2,r20 Random * Stack Counter 0005d370: 00001012 mflo r2 r2 = " 0005d374: 04410002 bgez r2,0x0005d380 Branch if Random * Stack Counter is positive 0005d378: 00000000 nop 0005d37c: 24427fff addiu r2,r2,0x7fff 0005d380: 000213c3 sra r2,r2,0x0f rand(0..Stack Counter) 0005d384: 00021040 sll r2,r2,0x01 rand(0..Stack Counter) * 2 0005d388: 03a21021 addu r2,r29,r2 0005d38c: 94420010 lhu r2,0x0010(r2) Load chosen R/S/M 0005d390: 8fbf041c lw r31,0x041c(r29) 0005d394: 8fbe0418 lw r30,0x0418(r29) 0005d398: 8fb70414 lw r23,0x0414(r29) 0005d39c: 8fb60410 lw r22,0x0410(r29) 0005d3a0: 8fb5040c lw r21,0x040c(r29) 0005d3a4: 8fb40408 lw r20,0x0408(r29) 0005d3a8: 8fb30404 lw r19,0x0404(r29) 0005d3ac: 8fb20400 lw r18,0x0400(r29) 0005d3b0: 8fb103fc lw r17,0x03fc(r29) 0005d3b4: 8fb003f8 lw r16,0x03f8(r29) 0005d3b8: 27bd0420 addiu r29,r29,0x0420 0005d3bc: 03e00008 jr r31 0005d3c0: 00000000 nop Find Skillset's Job ID (Not used?) 0005d3c4: 00002821 addu r5,r0,r0 Job ID = 0 0005d3c8: 3c068006 lui r6,0x8006 0005d3cc: 8cc66194 lw r6,0x6194(r6) Load Job Data Pointer 0005d3d0: 308400ff andi r4,r4,0x00ff r4 = Chosen Skillset 0005d3d4: 30a300ff andi r3,r5,0x00ff r5 = Job ID 0005d3d8: 00031040 sll r2,r3,0x01 ID * 2 0005d3dc: 00431021 addu r2,r2,r3 ID * 3 0005d3e0: 00021100 sll r2,r2,0x04 ID * 48 0005d3e4: 00461021 addu r2,r2,r6 0005d3e8: 90420000 lbu r2,0x0000(r2) Load Job's Skillset 0005d3ec: 00000000 nop 0005d3f0: 10440006 beq r2,r4,0x0005d40c Branch if Skillset = Chosen Skillset 0005d3f4: 00601021 addu r2,r3,r0 r2 = Job ID 0005d3f8: 24a50001 addiu r5,r5,0x0001 Job ID ++ 0005d3fc: 30a200ff andi r2,r5,0x00ff 0005d400: 2c42009f sltiu r2,r2,0x009f 0005d404: 1440fff4 bne r2,r0,0x0005d3d8 Branch if Job ID < 0x9f 0005d408: 30a300ff andi r3,r5,0x00ff r3 = Job ID 0005d40c: 03e00008 jr r31 0005d410: 00000000 nop Status Initialization 0005d414: 27bdffe8 addiu r29,r29,0xffe8 0005d418: afb00010 sw r16,0x0010(r29) 0005d41c: 00808021 addu r16,r4,r0 r16 = Unit's Data Pointer 0005d420: 00002821 addu r5,r0,r0 Counter = 0 0005d424: afbf0014 sw r31,0x0014(r29) 0005d428: 02052021 addu r4,r16,r5 Pointer += Counter 0005d42c: 24a50001 addiu r5,r5,0x0001 Counter ++ 0005d430: 9082004e lbu r2,0x004e(r4) Load Unit's Innate Statuses 0005d434: 90830058 lbu r3,0x0058(r4) Load Unit's Current Statuses 0005d438: 00021027 nor r2,r0,r2 (innate added to inflicted later) 0005d43c: 00621824 and r3,r3,r2 Remove Unit's Innate Statuses from Current Statuses 0005d440: 28a20005 slti r2,r5,0x0005 0005d444: 1440fff8 bne r2,r0,0x0005d428 Branch if Counter < 5 0005d448: a08301bb sb r3,0x01bb(r4) Store new Inflicted Statuses (current that aren't innate) 0005d44c: 0c01751c jal 0x0005d470 Nullify CT/Initialize Death Counter 0005d450: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005d454: 0c017534 jal 0x0005d4d0 Float/Current Statuses/Status Immunities/Status CT 0005d458: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005d45c: 8fbf0014 lw r31,0x0014(r29) 0005d460: 8fb00010 lw r16,0x0010(r29) 0005d464: 27bd0018 addiu r29,r29,0x0018 0005d468: 03e00008 jr r31 0005d46c: 00000000 nop Nullify CT/Initialize Death Counter 0005d470: 27bdffe8 addiu r29,r29,0xffe8 0005d474: afb00010 sw r16,0x0010(r29) 0005d478: 00808021 addu r16,r4,r0 r16 = Unit's Data Pointer 0005d47c: 2604005d addiu r4,r16,0x005d r4 = Pointer to Unit's Poison CT 0005d480: afbf0014 sw r31,0x0014(r29) 0005d484: 0c017991 jal 0x0005e644 Data Nullifying (Status CT) 0005d488: 34050010 ori r5,r0,0x0010 Limit = 0x10 0005d48c: 92020005 lbu r2,0x0005(r16) Load Unit's ENTD Flags 0005d490: 00000000 nop 0005d494: 30420004 andi r2,r2,0x0004 0005d498: 14400007 bne r2,r0,0x0005d4b8 Branch if Unit is Immortal 0005d49c: 340200ff ori r2,r0,0x00ff r2 = FF 0005d4a0: 92020006 lbu r2,0x0006(r16) Load Unit's Gender Byte 0005d4a4: 00000000 nop 0005d4a8: 30420009 andi r2,r2,0x0009 0005d4ac: 14400002 bne r2,r0,0x0005d4b8 Branch if Unit has Load/Save Formation 0005d4b0: 340200ff ori r2,r0,0x00ff r2 = FF 0005d4b4: 34020003 ori r2,r0,0x0003 r2 = 3 0005d4b8: a2020007 sb r2,0x0007(r16) Store Death Counter = 3/FF 0005d4bc: 8fbf0014 lw r31,0x0014(r29) 0005d4c0: 8fb00010 lw r16,0x0010(r29) 0005d4c4: 27bd0018 addiu r29,r29,0x0018 0005d4c8: 03e00008 jr r31 0005d4cc: 00000000 nop Float/Current Statuses/Status Immunities/Status CT 0005d4d0: 27bdffe0 addiu r29,r29,0xffe0 0005d4d4: afb10014 sw r17,0x0014(r29) 0005d4d8: 00808821 addu r17,r4,r0 r17 = Unit's Data Pointer 0005d4dc: afbf001c sw r31,0x001c(r29) 0005d4e0: afb20018 sw r18,0x0018(r29) 0005d4e4: afb00010 sw r16,0x0010(r29) 0005d4e8: 92220095 lbu r2,0x0095(r17) Load Unit's 3rd set of movements 0005d4ec: 00000000 nop 0005d4f0: 30420008 andi r2,r2,0x0008 0005d4f4: 10400005 beq r2,r0,0x0005d50c Branch if Unit doesn't have Float 0005d4f8: 00008021 addu r16,r0,r0 Counter = 0 0005d4fc: 92220050 lbu r2,0x0050(r17) Load Unit's Innate Statuses 0005d500: 00000000 nop 0005d504: 34420040 ori r2,r2,0x0040 Enable Float 0005d508: a2220050 sb r2,0x0050(r17) Store New Innate Statuses 0005d50c: 02302821 addu r5,r17,r16 r5 = Unit's Data Pointer + Counter 0005d510: 26100001 addiu r16,r16,0x0001 Counter += 1 0005d514: 90a2004e lbu r2,0x004e(r5) Load Unit's X set of innate Statuses 0005d518: 90a30053 lbu r3,0x0053(r5) Load Unit's X set of status Immunities 0005d51c: 90a4004e lbu r4,0x004e(r5) Load Unit's X set of Innate Statuses 0005d520: 90a601bb lbu r6,0x01bb(r5) Load Unit's X set of inflicted Statuses 0005d524: 00021027 nor r2,r0,r2 r2 = statuses that aren't innate 0005d528: 00621824 and r3,r3,r2 r3 = statuses that can be prevented 0005d52c: 00862025 or r4,r4,r6 r4 = Combined Innate/Inflicted Statuses 0005d530: 2a020005 slti r2,r16,0x0005 0005d534: a0a30053 sb r3,0x0053(r5) Store New Status Immunities 0005d538: 1440fff4 bne r2,r0,0x0005d50c Branch if all statuses haven't been checked 0005d53c: a0a40058 sb r4,0x0058(r5) Store New Current Statuses 0005d540: 34100018 ori r16,r0,0x0018 Counter = 0x18 0005d544: 34120080 ori r18,r0,0x0080 Status Check = 0x80 0005d548: 06010002 bgez r16,0x0005d554 Branch if Counter >= 0 0005d54c: 02001021 addu r2,r16,r0 r2 = Counter 0005d550: 26020007 addiu r2,r16,0x0007 r2 = Counter + 7 0005d554: 000210c3 sra r2,r2,0x03 Counter / 8 0005d558: 32030007 andi r3,r16,0x0007 r3 = Counter AND 7 (which bit to get) 0005d55c: 02221021 addu r2,r17,r2 r2 += Unit's Data Pointer 0005d560: 904201bb lbu r2,0x01bb(r2) Load specific Inflicted Status 0005d564: 00721807 srav r3,r18,r3 r3 = Status Check / Counter 0005d568: 00431024 and r2,r2,r3 Inflicted Status AND Status Check / 2^(Counter / 8) 0005d56c: 10400008 beq r2,r0,0x0005d590 Branch if status is not present 0005d570: 02301021 addu r2,r17,r16 r2 = Unit's Data Pointer + Counter 0005d574: 90420045 lbu r2,0x0045(r2) Load Status's CT 0005d578: 00000000 nop 0005d57c: 14400004 bne r2,r0,0x0005d590 Branch if there is still CT left 0005d580: 02202021 addu r4,r17,r0 r4 = Unit's Data Pointer 0005d584: 02002821 addu r5,r16,r0 r5 = Counter 0005d588: 0c0176dc jal 0x0005db70 Status CT Setting 0005d58c: 00003021 addu r6,r0,r0 r6 = 0 (Initialization?) 0005d590: 26100001 addiu r16,r16,0x0001 Counter += 1 0005d594: 2a020028 slti r2,r16,0x0028 0005d598: 1440ffeb bne r2,r0,0x0005d548 Branch if all statuses haven't been checked 0005d59c: 00000000 nop 0005d5a0: 8fbf001c lw r31,0x001c(r29) 0005d5a4: 8fb20018 lw r18,0x0018(r29) 0005d5a8: 8fb10014 lw r17,0x0014(r29) 0005d5ac: 8fb00010 lw r16,0x0010(r29) 0005d5b0: 27bd0020 addiu r29,r29,0x0020 0005d5b4: 03e00008 jr r31 0005d5b8: 00000000 nop Status Setting/Checking + Equip/R/S/M Stats Prep 0005d5bc: 27bdffe8 addiu r29,r29,0xffe8 0005d5c0: afbf0010 sw r31,0x0010(r29) 0005d5c4: 34050001 ori r5,r0,0x0001 r5 = 1 (Initialization?) 0005d5c8: 0c01758a jal 0x0005d628 Status Setting/Checking + Equip/R/S/M Stats 0005d5cc: 00003021 addu r6,r0,r0 r6 = 0 (Statuses already set?) 0005d5d0: 8fbf0010 lw r31,0x0010(r29) 0005d5d4: 27bd0018 addiu r29,r29,0x0018 0005d5d8: 03e00008 jr r31 0005d5dc: 00000000 nop Status Setting/Checking + Equip/R/S/M Stats Prep 0005d5e0: 27bdffe8 addiu r29,r29,0xffe8 0005d5e4: afbf0010 sw r31,0x0010(r29) 0005d5e8: 00002821 addu r5,r0,r0 r5 = 0 (Not Initializing?) 0005d5ec: 0c01758a jal 0x0005d628 Status Setting/Checking + Equip/R/S/M Stats 0005d5f0: 00003021 addu r6,r0,r0 r6 = 0 (Statuses already set?) 0005d5f4: 8fbf0010 lw r31,0x0010(r29) 0005d5f8: 27bd0018 addiu r29,r29,0x0018 0005d5fc: 03e00008 jr r31 0005d600: 00000000 nop Status Setting/Checking + Equip/R/S/M Stats Prep 0005d604: 27bdffe8 addiu r29,r29,0xffe8 0005d608: afbf0010 sw r31,0x0010(r29) 0005d60c: 00002821 addu r5,r0,r0 r5 = 0 (Not Initializing?) 0005d610: 0c01758a jal 0x0005d628 Status Setting/Checking + Equip/R/S/M Stats 0005d614: 34060001 ori r6,r0,0x0001 r6 = 1 (Statuses not set yet?) 0005d618: 8fbf0010 lw r31,0x0010(r29) 0005d61c: 27bd0018 addiu r29,r29,0x0018 0005d620: 03e00008 jr r31 0005d624: 00000000 nop Status Setting/Checking + Equip/R/S/M Stats 0005d628: 27bdffc8 addiu r29,r29,0xffc8 0005d62c: afb10024 sw r17,0x0024(r29) 0005d630: 00808821 addu r17,r4,r0 r17 = Unit's Data Pointer 0005d634: afb20028 sw r18,0x0028(r29) 0005d638: 00a09021 addu r18,r5,r0 r18 = Initialization Flag? 0005d63c: afb3002c sw r19,0x002c(r29) 0005d640: afbf0034 sw r31,0x0034(r29) 0005d644: afb40030 sw r20,0x0030(r29) 0005d648: afb00020 sw r16,0x0020(r29) 0005d64c: 9234018a lbu r20,0x018a(r17) Load Unit's ID 0005d650: 0c0179d1 jal 0x0005e744 Store Current Statuses 0005d654: 00c09821 addu r19,r6,r0 r19 = Statuses Set Flag? 0005d658: 00008021 addu r16,r0,r0 Counter = 0 0005d65c: 27a50010 addiu r5,r29,0x0010 r5 = Pointer to temp. stored inflicted statuses 0005d660: 27a40018 addiu r4,r29,0x0018 r4 = Pointer to temp. stored statuses 0005d664: 02301821 addu r3,r17,r16 r3 = Unit's Data Pointer 0005d668: 90620058 lbu r2,0x0058(r3) Load Unit's X set of Statuses 0005d66c: 26100001 addiu r16,r16,0x0001 Counter ++ 0005d670: a0820000 sb r2,0x0000(r4) Store Statuses Temorarily 0005d674: 906201bb lbu r2,0x01bb(r3) Load Unit's X set of Inflicted Statuses 0005d678: 24840001 addiu r4,r4,0x0001 Temp Stored Status Pointer ++ 0005d67c: a0a20000 sb r2,0x0000(r5) Store inflicted Statuses temporarily 0005d680: 2a020005 slti r2,r16,0x0005 0005d684: 1440fff7 bne r2,r0,0x0005d664 Branch if all statuses haven't been stored 0005d688: 24a50001 addiu r5,r5,0x0001 Temp Stored Inflicted Status Pointer ++ 0005d68c: 92220003 lbu r2,0x0003(r17) Load Unit's Job ID 0005d690: 2625004a addiu r5,r17,0x004a r5 = Unit's Data Pointer + 0x4a (Equippable Items) 0005d694: 00028040 sll r16,r2,0x01 Job ID * 2 0005d698: 02028021 addu r16,r16,r2 Job ID * 3 0005d69c: 3c028006 lui r2,0x8006 0005d6a0: 8c426194 lw r2,0x6194(r2) Load Job Data Pointer 0005d6a4: 00108100 sll r16,r16,0x04 Job ID * 24 0005d6a8: 02028021 addu r16,r16,r2 Job ID * 24 + Job Data Pointer 0005d6ac: 92020017 lbu r2,0x0017(r16) Load Job's Move 0005d6b0: 34060004 ori r6,r0,0x0004 Limit = 4 (all 4 equippable items) 0005d6b4: a222003a sb r2,0x003a(r17) Store Job's Move into Unit's Move 0005d6b8: 92020018 lbu r2,0x0018(r16) Load Job's Jump 0005d6bc: 26040009 addiu r4,r16,0x0009 r4 = Job Data Pointer (Equippable Items) 0005d6c0: 3042007f andi r2,r2,0x007f 0005d6c4: 0c017319 jal 0x0005cc64 Store X into Y (Job's equippable items into Unit's) 0005d6c8: a222003b sb r2,0x003b(r17) Store Job's Jump into Unit's Jump 0005d6cc: 2604001a addiu r4,r16,0x001a r4 = Job's Data Pointer (Innate Statuses) 0005d6d0: 2625004e addiu r5,r17,0x004e r5 = Unit's Data Pointer (Innate Statuses) 0005d6d4: 0c017319 jal 0x0005cc64 Store X Into Y (Job's Statuses into Unit's) 0005d6d8: 3406000f ori r6,r0,0x000f Limit = f (all three status groups) 0005d6dc: 26040029 addiu r4,r16,0x0029 r4 = Job's Data Pointer (Elemental Resistances) 0005d6e0: 2625006d addiu r5,r17,0x006d r5 = Unit's Data Pointer (Elemental Resistances) 0005d6e4: 0c017319 jal 0x0005cc64 Store X into Y (Job's Elemental Resistances into Unit's) 0005d6e8: 34060004 ori r6,r0,0x0004 Limit = 4 (all elemental resistances) 0005d6ec: 02202021 addu r4,r17,r0 r4 = Unit's Data Pointer 0005d6f0: 0c016de8 jal 0x0005b7a0 Enable Unit's R/S/M Flags 0005d6f4: a2200071 sb r0,0x0071(r17) Store Unit's Elements Strengthened = 0 0005d6f8: 02202021 addu r4,r17,r0 r4 = Unit's Data Pointer 0005d6fc: 0c01723b jal 0x0005c8ec Move/Jump +X Calculation 0005d700: 34050001 ori r5,r0,0x0001 r5 = 1 (Don't set Current HP/MP to Max) 0005d704: 0c0170e6 jal 0x0005c398 Equipment Stat Setting 0005d708: 02202021 addu r4,r17,r0 r4 = Unit's Data Pointer 0005d70c: 02202021 addu r4,r17,r0 r4 = Unit's Data Pointer 0005d710: 0c017172 jal 0x0005c5c8 Equipment Attribute Setting 0005d714: 00002821 addu r5,r0,r0 Level UP Check = 0 (No Level UP, just stat setting) 0005d718: 0c01709f jal 0x0005c27c Equippable item setting (Support/Female-only) 0005d71c: 02202021 addu r4,r17,r0 r4 = Unit's Data Pointer 0005d720: 27a40010 addiu r4,r29,0x0010 r4 = Pointer to temp. stored Inflicted Statuses 0005d724: 02201821 addu r3,r17,r0 r3 = Unit's Data Pointer 0005d728: 27a50015 addiu r5,r29,0x0015 r5 = Temp Stored Inflicted Status Limit (for loop) 0005d72c: 12600004 beq r19,r0,0x0005d740 Branch if Statuses have been set? 0005d730: 00000000 nop 0005d734: 90620058 lbu r2,0x0058(r3) Load Unit's X set of statuses 0005d738: 080175d3 j 0x0005d74c (Inflicted Statuses = Current Statuses) 0005d73c: a06201bb sb r2,0x01bb(r3) Store X set of statuses in Unit's Inflicted Statuses 0005d740: 90820000 lbu r2,0x0000(r4) Load X set of stored statuses 0005d744: 00000000 nop (Inflicted Statuses = Inflicted Statuses) 0005d748: a06201bb sb r2,0x01bb(r3) Store X set of statuses in Unit's Inflicted Statuses 0005d74c: 24840001 addiu r4,r4,0x0001 Pointer to Temp stored Inflicted Statuses += 1 0005d750: 0085102a slt r2,r4,r5 0005d754: 1440fff5 bne r2,r0,0x0005d72c Branch if all statuses haven't been stored 0005d758: 24630001 addiu r3,r3,0x0001 Unit's Data Pointer += 1 0005d75c: 02202021 addu r4,r17,r0 r4 = Unit's Data Pointer 0005d760: 92300002 lbu r16,0x0002(r17) Load Unit's Party ID 0005d764: 340200ff ori r2,r0,0x00ff 0005d768: 0c017534 jal 0x0005d4d0 Float/Current Statuses/Status Immunities/Status CT 0005d76c: a2220002 sb r2,0x0002(r17) Store Party ID = FF 0005d770: 02202021 addu r4,r17,r0 r4 = Unit's Data Pointer 0005d774: 0c0179d1 jal 0x0005e744 Store Current Statuses 0005d778: a2300002 sb r16,0x0002(r17) Store Unit's Party ID 0005d77c: 16400037 bne r18,r0,0x0005d85c Branch if Initializing Data? 0005d780: 3c03cccc lui r3,0xcccc 0005d784: 9622002a lhu r2,0x002a(r17) Load Unit's Max HP 0005d788: 3463cccd ori r3,r3,0xcccd 0005d78c: 00430019 multu r2,r3 Max HP * 0.8 0005d790: 96230028 lhu r3,0x0028(r17) Load Unit's Current HP 0005d794: 00001010 mfhi r2 r2 = Max HP * 0.8 0005d798: 00021082 srl r2,r2,0x02 r2 = Max HP * 0.8 / 4 (or Max HP / 5) 0005d79c: 3042ffff andi r2,r2,0xffff 0005d7a0: 0043102b sltu r2,r2,r3 0005d7a4: 14400004 bne r2,r0,0x0005d7b8 Branch if not in Critical 0005d7a8: 00000000 nop 0005d7ac: 922201bd lbu r2,0x01bd(r17) Load Unit's 3rd set of Inflicted Statuses 0005d7b0: 080175f1 j 0x0005d7c4 0005d7b4: 34420001 ori r2,r2,0x0001 Enable Critical 0005d7b8: 922201bd lbu r2,0x01bd(r17) Load Unit's 3rd set of Inflicted Statuses 0005d7bc: 00000000 nop 0005d7c0: 304200fe andi r2,r2,0x00fe Disable Critical 0005d7c4: a22201bd sb r2,0x01bd(r17) Store Unit's New Inflicted Statuses 0005d7c8: 0c0179d1 jal 0x0005e744 Store Current Statuses 0005d7cc: 02202021 addu r4,r17,r0 r4 = Unit's Data Pointer 0005d7d0: 00008021 addu r16,r0,r0 Counter = 0 0005d7d4: 34120001 ori r18,r0,0x0001 Counter2 = 1 0005d7d8: 06010002 bgez r16,0x0005d7e4 Branch if Counter >= 0 0005d7dc: 02001021 addu r2,r16,r0 r2 = Counter 0005d7e0: 26020007 addiu r2,r16,0x0007 Counter += 7 0005d7e4: 000210c3 sra r2,r2,0x03 Counter / 8 0005d7e8: 32040007 andi r4,r16,0x0007 0005d7ec: 34030080 ori r3,r0,0x0080 Status Check = 80 0005d7f0: 00831807 srav r3,r3,r4 r3 = Status Check / Counter 0005d7f4: 03a22021 addu r4,r29,r2 r4 = Counter / 8 + Temp Current Statuses Pointer 0005d7f8: 02221021 addu r2,r17,r2 r2 = Unit's Data Pointer += Counter / 8 0005d7fc: 90840018 lbu r4,0x0018(r4) Load Temp Stored Current Statuses 0005d800: 90420058 lbu r2,0x0058(r2) Load Unit's Current Statuses 0005d804: 00832024 and r4,r4,r3 0005d808: 16600003 bne r19,r0,0x0005d818 Branch if Statuses haven't been set yet? 0005d80c: 00431024 and r2,r2,r3 0005d810: 1082000e beq r4,r2,0x0005d84c Branch if Temp Stored Status is already present 0005d814: 00000000 nop 0005d818: 10400009 beq r2,r0,0x0005d840 Branch if Status is not present 0005d81c: 02402021 addu r4,r18,r0 r4 = Counter2 0005d820: 12600004 beq r19,r0,0x0005d834 Branch if Statuses have been set? 0005d824: 02202021 addu r4,r17,r0 r4 = Unit's Data Pointer 0005d828: 02002821 addu r5,r16,r0 r5 = Counter 0005d82c: 0c0176dc jal 0x0005db70 Status CT Setting 0005d830: 00003021 addu r6,r0,r0 r6 = 0 (Not Initializing?) 0005d834: 02402021 addu r4,r18,r0 r4 = Counter2 0005d838: 08017611 j 0x0005d844 0005d83c: 34050001 ori r5,r0,0x0001 r5 = 1 (Status Present) 0005d840: 00002821 addu r5,r0,r0 r5 = 0 (Status not Present) 0005d844: 0c063a6f jal 0x0018e9bc Determine if Status Flags can be Enabled? 0005d848: 02803021 addu r6,r20,r0 r6 = Unit's ID 0005d84c: 26100001 addiu r16,r16,0x0001 Counter += 1 0005d850: 2a020028 slti r2,r16,0x0028 0005d854: 1440ffe0 bne r2,r0,0x0005d7d8 Branch if all statuses haven't been checked 0005d858: 26520001 addiu r18,r18,0x0001 Counter2 += 1 0005d85c: 8fbf0034 lw r31,0x0034(r29) 0005d860: 8fb40030 lw r20,0x0030(r29) 0005d864: 8fb3002c lw r19,0x002c(r29) 0005d868: 8fb20028 lw r18,0x0028(r29) 0005d86c: 8fb10024 lw r17,0x0024(r29) 0005d870: 8fb00020 lw r16,0x0020(r29) 0005d874: 27bd0038 addiu r29,r29,0x0038 0005d878: 03e00008 jr r31 0005d87c: 00000000 nop Check if Unit Leveled UP 0005d880: 27bdffe0 addiu r29,r29,0xffe0 0005d884: afb00010 sw r16,0x0010(r29) 0005d888: 00808021 addu r16,r4,r0 r16 = Unit's Data Pointer 0005d88c: afbf0018 sw r31,0x0018(r29) 0005d890: afb10014 sw r17,0x0014(r29) 0005d894: 92020021 lbu r2,0x0021(r16) Load Unit's Exp 0005d898: 00000000 nop 0005d89c: 2c420064 sltiu r2,r2,0x0064 0005d8a0: 14400010 bne r2,r0,0x0005d8e4 Branch if Exp < 100 0005d8a4: 00001021 addu r2,r0,r0 Exp = 0 0005d8a8: 92110022 lbu r17,0x0022(r16) Load Unit's Level 0005d8ac: 00000000 nop 0005d8b0: 2e220063 sltiu r2,r17,0x0063 0005d8b4: 10400008 beq r2,r0,0x0005d8d8 Branch if Level < 99 0005d8b8: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer 0005d8bc: 0c017684 jal 0x0005da10 Level UP section 0005d8c0: 00002821 addu r5,r0,r0 r5 = 0 (Level Down Flag = False) 0005d8c4: 34020001 ori r2,r0,0x0001 r2 = 1 (Leveled up) 0005d8c8: 26230001 addiu r3,r17,0x0001 Level += 1 0005d8cc: a2000021 sb r0,0x0021(r16) Store Exp = 0 0005d8d0: 08017639 j 0x0005d8e4 0005d8d4: a2030022 sb r3,0x0022(r16) Store new Level 0005d8d8: 34020063 ori r2,r0,0x0063 r2 = 99 0005d8dc: a2020021 sb r2,0x0021(r16) Store Level = 99 0005d8e0: 00001021 addu r2,r0,r0 r2 = 0 (no level up) 0005d8e4: 8fbf0018 lw r31,0x0018(r29) 0005d8e8: 8fb10014 lw r17,0x0014(r29) 0005d8ec: 8fb00010 lw r16,0x0010(r29) 0005d8f0: 27bd0020 addiu r29,r29,0x0020 0005d8f4: 03e00008 jr r31 0005d8f8: 00000000 nop Level Unit to Specific Level 0005d8fc: 27bdfff8 addiu r29,r29,0xfff8 0005d900: 00804021 addu r8,r4,r0 r8 = Party Data Pointer 0005d904: 91040016 lbu r4,0x0016(r8) Load Party Level 0005d908: 91030002 lbu r3,0x0002(r8) Load Party Job ID 0005d90c: 00853021 addu r6,r4,r5 Level = Party Level + Chosen Level 0005d910: 00031040 sll r2,r3,0x01 ID * 2 0005d914: 00431021 addu r2,r2,r3 ID * 3 0005d918: 3c038006 lui r3,0x8006 0005d91c: 8c636194 lw r3,0x6194(r3) Load Job Data Pointer 0005d920: 00021100 sll r2,r2,0x04 ID * 48 0005d924: 00431021 addu r2,r2,r3 0005d928: 244d000d addiu r13,r2,0x000d r13 = Pointer to Job's HP Growth 0005d92c: 2cc20064 sltiu r2,r6,0x0064 0005d930: 14400002 bne r2,r0,0x0005d93c Branch if Level < 100 0005d934: 250e0019 addiu r14,r8,0x0019 r14 = Pointer to Party Raw HP 0005d938: 34060063 ori r6,r0,0x0063 Level = 99 0005d93c: 00c45823 subu r11,r6,r4 Level - Party Level (Chosen Level essentially) 0005d940: 19600030 blez r11,0x0005da04 Branch if Level <= 0 (will happen at chosen level 99) 0005d944: 00c01021 addu r2,r6,r0 r2 = Level 0005d948: 1960002d blez r11,0x0005da00 Branch if Level <= 0 0005d94c: 00004821 addu r9,r0,r0 Counter = 0 0005d950: 3c0c00ff lui r12,0x00ff 0005d954: 358cffff ori r12,r12,0xffff Raw Cap = 0xFFFFFF 0005d958: 01c02821 addu r5,r14,r0 r5 = Pointer to Party Raw HP 0005d95c: 01a03821 addu r7,r13,r0 r7 = Pointer to Job's HP Growth 0005d960: 24aa000f addiu r10,r5,0x000f r10 = Pointer to Party's Unlocked Jobs (Limit) 0005d964: 90a20001 lbu r2,0x0001(r5) Load Raw Stat Byte 2 0005d968: 91060016 lbu r6,0x0016(r8) Load Party Level 0005d96c: 90a40000 lbu r4,0x0000(r5) Load Raw Stat Byte 1 0005d970: 90a30002 lbu r3,0x0002(r5) Load Raw Stat Byte 3 0005d974: 00021200 sll r2,r2,0x08 0005d978: 00822021 addu r4,r4,r2 0005d97c: 00031c00 sll r3,r3,0x10 0005d980: 90e20000 lbu r2,0x0000(r7) Load Stat Growth 0005d984: 00000000 nop 0005d988: 14400003 bne r2,r0,0x0005d998 Branch if Growth != 0 0005d98c: 00832021 addu r4,r4,r3 r4 = Full Raw Stat 0005d990: 08017667 j 0x0005d99c 0005d994: 24c20001 addiu r2,r6,0x0001 r2 = Level + 1 (min of 1 growth) 0005d998: 00c21021 addu r2,r6,r2 r2 = Level + Stat Growth 0005d99c: 0082001b divu r4,r2 Raw Stat / (Level + Growth) 0005d9a0: 00001812 mflo r3 r3 = Raw Bonus 0005d9a4: 00000000 nop 0005d9a8: 00832021 addu r4,r4,r3 Raw Stat += Raw Bonus 0005d9ac: 0184102b sltu r2,r12,r4 0005d9b0: 10400003 beq r2,r0,0x0005d9c0 Branch if Raw Stat > Raw Cap 0005d9b4: 24e70002 addiu r7,r7,0x0002 Growth Pointer += 2 0005d9b8: 3c0400ff lui r4,0x00ff 0005d9bc: 3484ffff ori r4,r4,0xffff Raw Stat = FFFFFF 0005d9c0: 00041202 srl r2,r4,0x08 0005d9c4: a0a20001 sb r2,0x0001(r5) Store Raw Stat Byte 2 0005d9c8: 00041402 srl r2,r4,0x10 0005d9cc: a0a40000 sb r4,0x0000(r5) Store Raw Stat Byte 1 0005d9d0: a0a20002 sb r2,0x0002(r5) Store Raw Stat Byte 3 0005d9d4: 24a50003 addiu r5,r5,0x0003 Raw Pointer += 3 0005d9d8: 00aa102a slt r2,r5,r10 0005d9dc: 1440ffe1 bne r2,r0,0x0005d964 Branch if all Raws haven't been Increased 0005d9e0: 00000000 nop 0005d9e4: 91020016 lbu r2,0x0016(r8) Load Party Level 0005d9e8: 25290001 addiu r9,r9,0x0001 Counter ++ 0005d9ec: 24420001 addiu r2,r2,0x0001 Level ++ 0005d9f0: a1020016 sb r2,0x0016(r8) Store new Party Level 0005d9f4: 012b102a slt r2,r9,r11 0005d9f8: 1440ffd7 bne r2,r0,0x0005d958 Branch if Current Level < End Level 0005d9fc: 00000000 nop 0005da00: 91020016 lbu r2,0x0016(r8) Load Unit's Party Level 0005da04: 27bd0008 addiu r29,r29,0x0008 0005da08: 03e00008 jr r31 0005da0c: 00000000 nop Level Up Section 0005da10: 27bdffc8 addiu r29,r29,0xffc8 0005da14: afb3001c sw r19,0x001c(r29) 0005da18: 00809821 addu r19,r4,r0 r19 = Unit's Data Pointer 0005da1c: afb60028 sw r22,0x0028(r29) 0005da20: 00a0b021 addu r22,r5,r0 r22 = Level Down Flag 0005da24: afb50024 sw r21,0x0024(r29) 0005da28: 26750072 addiu r21,r19,0x0072 r21 = Unit's Raw Stat Pointer 0005da2c: afb20018 sw r18,0x0018(r29) 0005da30: 02a09021 addu r18,r21,r0 r18 = Unit's Raw Stat Pointer 0005da34: afb40020 sw r20,0x0020(r29) 0005da38: 26740081 addiu r20,r19,0x0081 r20 = Unit's Raw Growth Pointer 0005da3c: afbf0030 sw r31,0x0030(r29) 0005da40: afb7002c sw r23,0x002c(r29) 0005da44: afb10014 sw r17,0x0014(r29) 0005da48: afb00010 sw r16,0x0010(r29) 0005da4c: 92770022 lbu r23,0x0022(r19) Load Unit's Level 0005da50: 92440001 lbu r4,0x0001(r18) Load Second byte of Raw Stat 0005da54: 92910000 lbu r17,0x0000(r20) Load Stat Growth 0005da58: 92430000 lbu r3,0x0000(r18) Load first byte of Raw Stat 0005da5c: 92420002 lbu r2,0x0002(r18) Load third byte of Raw Stat 0005da60: 00042200 sll r4,r4,0x08 Raw Stat 2 * 100h 0005da64: 00641821 addu r3,r3,r4 Raw Stat 2 * 100h + Raw Stat 1 0005da68: 00021400 sll r2,r2,0x10 Raw Stat 3 * 10000h 0005da6c: 00628021 addu r16,r3,r2 r16 = Full Raw Stat (or lw, sll 0x08, srl 0x08) 0005da70: 16200002 bne r17,r0,0x0005da7c Branch if Stat Growth != 0 0005da74: 02201021 addu r2,r17,r0 r2 = Stat Growth 0005da78: 34020001 ori r2,r0,0x0001 r2 = 1 (Min 1 growth) 0005da7c: 0c0088c3 jal 0x0002230c Random Number Generator 0005da80: 00578821 addu r17,r2,r23 r17 = Stat Growth + Level 0005da84: 12c00005 beq r22,r0,0x0005da9c Branch if not Leveling Down 0005da88: 00000000 nop 0005da8c: 0211001b divu r16,r17 0005da90: 00001012 mflo r2 r2 = Raw Stat / (Stat Growth + Level) 0005da94: 080176ab j 0x0005daac 0005da98: 02028023 subu r16,r16,r2 Raw Stat -= Raw Stat / (Stat Growth + Level) 0005da9c: 0211001b divu r16,r17 0005daa0: 00001012 mflo r2 r2 = Raw Stat / (Stat Growth + Level) 0005daa4: 00000000 nop 0005daa8: 02028021 addu r16,r16,r2 Raw Stat += Raw Stat / (Stat Growth + Level) 0005daac: 3c0200ff lui r2,0x00ff 0005dab0: 3442ffff ori r2,r2,0xffff r2 = ffffff 0005dab4: 0050102b sltu r2,r2,r16 0005dab8: 10400003 beq r2,r0,0x0005dac8 Branch if ffffff < Raw Stat 0005dabc: 26940002 addiu r20,r20,0x0002 Unit's Growth Pointer += 2 0005dac0: 3c1000ff lui r16,0x00ff 0005dac4: 3610ffff ori r16,r16,0xffff Raw Stat = ffffff 0005dac8: 00101202 srl r2,r16,0x08 Raw Stat / 100 0005dacc: a2420001 sb r2,0x0001(r18) Store Raw Stat 2 0005dad0: 00101402 srl r2,r16,0x10 Raw Stat / 10000 0005dad4: a2500000 sb r16,0x0000(r18) Store Raw Stat 1 0005dad8: a2420002 sb r2,0x0002(r18) Store Raw Stat 3 0005dadc: 26520003 addiu r18,r18,0x0003 Unit's Raw Stat Pointer += 3 0005dae0: 26a2000f addiu r2,r21,0x000f Unit's Raw Stat Pointer += f 0005dae4: 0242102a slt r2,r18,r2 0005dae8: 1440ffd9 bne r2,r0,0x0005da50 Branch if Current Pointer < Max 0005daec: 00000000 nop 0005daf0: 0c017578 jal 0x0005d5e0 Status Setting/Checking Prep (Not Initializing, Statuses set?) 0005daf4: 02602021 addu r4,r19,r0 r4 = Unit's Data Pointer 0005daf8: 96630028 lhu r3,0x0028(r19) Load Unit's HP 0005dafc: 9662002a lhu r2,0x002a(r19) Load Unit's Max HP 0005db00: 00000000 nop 0005db04: 0043102b sltu r2,r2,r3 0005db08: 10400004 beq r2,r0,0x0005db1c Branch if Max HP >= Current HP 0005db0c: 00000000 nop 0005db10: 9662002a lhu r2,0x002a(r19) Load Unit's Max HP 0005db14: 00000000 nop 0005db18: a6620028 sh r2,0x0028(r19) Store Current HP = Max HP 0005db1c: 9663002c lhu r3,0x002c(r19) Load Unit's MP 0005db20: 9662002e lhu r2,0x002e(r19) Load Unit's Max MP 0005db24: 00000000 nop 0005db28: 0043102b sltu r2,r2,r3 0005db2c: 10400004 beq r2,r0,0x0005db40 Branch if Max MP >= Current MP 0005db30: 00000000 nop 0005db34: 9662002e lhu r2,0x002e(r19) Load Unit's Max MP 0005db38: 00000000 nop 0005db3c: a662002c sh r2,0x002c(r19) Store Current MP = Max MP 0005db40: 8fbf0030 lw r31,0x0030(r29) 0005db44: 8fb7002c lw r23,0x002c(r29) 0005db48: 8fb60028 lw r22,0x0028(r29) 0005db4c: 8fb50024 lw r21,0x0024(r29) 0005db50: 8fb40020 lw r20,0x0020(r29) 0005db54: 8fb3001c lw r19,0x001c(r29) 0005db58: 8fb20018 lw r18,0x0018(r29) 0005db5c: 8fb10014 lw r17,0x0014(r29) 0005db60: 8fb00010 lw r16,0x0010(r29) 0005db64: 27bd0038 addiu r29,r29,0x0038 0005db68: 03e00008 jr r31 0005db6c: 00000000 nop Status CT Setting 0005db70: 34020002 ori r2,r0,0x0002 r2 = 2 0005db74: 14a2000d bne r5,r2,0x0005dbac Branch if Counter != 2 (Death) 0005db78: 00803821 addu r7,r4,r0 r7 = Unit's Data Pointer 0005db7c: 90e20005 lbu r2,0x0005(r7) Load Unit's Battle Flags 0005db80: 00000000 nop 0005db84: 30420004 andi r2,r2,0x0004 0005db88: 14400007 bne r2,r0,0x0005dba8 Branch if Unit is Immortal 0005db8c: 340200ff ori r2,r0,0x00ff r2 = ff 0005db90: 90e20006 lbu r2,0x0006(r7) Load Unit's Gender Byte 0005db94: 00000000 nop 0005db98: 30420009 andi r2,r2,0x0009 0005db9c: 14400002 bne r2,r0,0x0005dba8 Branch if Unit has Load/Save Formation 0005dba0: 340200ff ori r2,r0,0x00ff r2 = ff 0005dba4: 34020003 ori r2,r0,0x0003 r2 = 3 0005dba8: a0e20007 sb r2,0x0007(r7) Store Unit's Death Counter = 3 or ff 0005dbac: 24a4ffe8 addiu r4,r5,0xffe8 r4 = Counter - 0x18 0005dbb0: 2c820010 sltiu r2,r4,0x0010 0005dbb4: 10400015 beq r2,r0,0x0005dc0c Branch if Counter != last 16 statuses (not a CT status) 0005dbb8: 00001021 addu r2,r0,r0 r2 = 0 0005dbbc: 10c00005 beq r6,r0,0x0005dbd4 Branch if Not Initializing Data? 0005dbc0: 00804021 addu r8,r4,r0 r8 = Counter - 0x18 0005dbc4: 00e81021 addu r2,r7,r8 r2 = Unit's Data Pointer + Counter - 0x18 0005dbc8: a040005d sb r0,0x005d(r2) Store X Status' CT = 0 0005dbcc: 08017703 j 0x0005dc0c 0005dbd0: 00001021 addu r2,r0,r0 r2 = 0 0005dbd4: 3402000f ori r2,r0,0x000f r2 = f 0005dbd8: 15020006 bne r8,r2,0x0005dbf4 Branch if Status Checked isn't Death Sentence 0005dbdc: 00001021 addu r2,r0,r0 r2 = 0 0005dbe0: 90e2006c lbu r2,0x006c(r7) Load Unit's Death Sentence CT 0005dbe4: 00000000 nop 0005dbe8: 14400008 bne r2,r0,0x0005dc0c Branch if DS CT != 0 (Check if already inflicted) 0005dbec: 2402ffff addiu r2,r0,0xffff r2 = ffffffff 0005dbf0: 00001021 addu r2,r0,r0 r2 = 0 0005dbf4: 00051900 sll r3,r5,0x04 r3 = Counter * 16 0005dbf8: 3c018006 lui r1,0x8006 0005dbfc: 00230821 addu r1,r1,r3 0005dc00: 90245de7 lbu r4,0x5de7(r1) Load Status's CT 0005dc04: 00e81821 addu r3,r7,r8 r3 = Unit's Data Pointer + Counter - 0x18 0005dc08: a064005d sb r4,0x005d(r3) Store Unit's Status's CT 0005dc0c: 03e00008 jr r31 0005dc10: 00000000 nop Calculate Unlocked Jobs 0005dc14: 27bdffe8 addiu r29,r29,0xffe8 0005dc18: 03a01821 addu r3,r29,r0 Counter = Stack Pointer 0005dc1c: 27a6000a addiu r6,r29,0x000a Limit = Stack Pointer + 10 0005dc20: 90820000 lbu r2,0x0000(r4) Load Unit's Job Levels 0005dc24: 00000000 nop 0005dc28: a0620000 sb r2,0x0000(r3) Store Unit's Job Levels 0005dc2c: 24630001 addiu r3,r3,0x0001 Counter ++ 0005dc30: 0066102a slt r2,r3,r6 0005dc34: 1440fffa bne r2,r0,0x0005dc20 Branch if Counter < Limit 0005dc38: 24840001 addiu r4,r4,0x0001 Job Pointer ++ 0005dc3c: 30a20040 andi r2,r5,0x0040 0005dc40: 10400006 beq r2,r0,0x0005dc5c Branch if Unit is not Female 0005dc44: 30a20080 andi r2,r5,0x0080 0005dc48: 93a20008 lbu r2,0x0008(r29) Load Unit's Calc/Bard Job Levels 0005dc4c: 00000000 nop 0005dc50: 3442000f ori r2,r2,0x000f Bard Level doesn't exist 0005dc54: a3a20008 sb r2,0x0008(r29) Store new Job Levels 0005dc58: 30a20080 andi r2,r5,0x0080 0005dc5c: 10400006 beq r2,r0,0x0005dc78 Branch if Unit is not Male 0005dc60: 30a20020 andi r2,r5,0x0020 0005dc64: 93a20009 lbu r2,0x0009(r29) Load Unit's Dancer/Mime Job Levels 0005dc68: 00000000 nop 0005dc6c: 344200f0 ori r2,r2,0x00f0 Dancer Level doesn't exist 0005dc70: a3a20009 sb r2,0x0009(r29) Store new Job Levels 0005dc74: 30a20020 andi r2,r5,0x0020 0005dc78: 14400030 bne r2,r0,0x0005dd3c Branch if Unit is a monster 0005dc7c: 00001021 addu r2,r0,r0 r2 = 0 0005dc80: 3c0a0080 lui r10,0x0080 Current Unlock Check = 0x800000 0005dc84: 3c0b0080 lui r11,0x0080 Jobs Unlocked = 0x800000 (start w/ squire) 0005dc88: 00007021 addu r14,r0,r0 Counter = 0 0005dc8c: 3c0d8006 lui r13,0x8006 0005dc90: 25ad60c4 addiu r13,r13,0x60c4 0005dc94: 000a17c2 srl r2,r10,0x1f 0005dc98: 01421021 addu r2,r10,r2 0005dc9c: 00025043 sra r10,r2,0x01 Current Unlock Check / 2 0005dca0: 00004821 addu r9,r0,r0 r9 = 0 0005dca4: 03a03821 addu r7,r29,r0 r7 = Stack Pointer 0005dca8: 01a04021 addu r8,r13,r0 r8 = Job Unlock Requirements Pointer 0005dcac: 27ac000a addiu r12,r29,0x000a r12 = Stack Pointer + 10 0005dcb0: 91040000 lbu r4,0x0000(r8) Load Job Unlock Requirements 0005dcb4: 90e60000 lbu r6,0x0000(r7) Load Job Levels 0005dcb8: 308300f0 andi r3,r4,0x00f0 r3 = high nybble job requirement 0005dcbc: 30c200f0 andi r2,r6,0x00f0 r2 = high nybble job level 0005dcc0: 0043102b sltu r2,r2,r3 0005dcc4: 14400005 bne r2,r0,0x0005dcdc Branch if Level < requirement 0005dcc8: 3083000f andi r3,r4,0x000f r3 = low nybble job requirement 0005dccc: 30c2000f andi r2,r6,0x000f r2 = low nybble job level 0005dcd0: 0043102b sltu r2,r2,r3 0005dcd4: 10400003 beq r2,r0,0x0005dce4 Branch if Level >= requirement 0005dcd8: 00000000 nop 0005dcdc: 0801773d j 0x0005dcf4 0005dce0: 34090001 ori r9,r0,0x0001 r9 = 1 (Job can't be unlocked) 0005dce4: 24e70001 addiu r7,r7,0x0001 Stack Pointer ++ 0005dce8: 00ec102a slt r2,r7,r12 0005dcec: 1440fff0 bne r2,r0,0x0005dcb0 Branch if Stack Pointer < SP + 10 0005dcf0: 25080001 addiu r8,r8,0x0001 Job Unlock Requirements Pointer ++ 0005dcf4: 15200002 bne r9,r0,0x0005dd00 Branch if Job can't be unlocked 0005dcf8: 25ad000a addiu r13,r13,0x000a Job Unlock Requirements Pointer += 10 0005dcfc: 016a5825 or r11,r11,r10 Unlock Job for the unit 0005dd00: 25ce0001 addiu r14,r14,0x0001 Counter ++ 0005dd04: 29c20013 slti r2,r14,0x0013 0005dd08: 1440ffe3 bne r2,r0,0x0005dc98 Branch if Counter < 19 0005dd0c: 000a17c2 srl r2,r10,0x1f 0005dd10: 30a20080 andi r2,r5,0x0080 0005dd14: 10400003 beq r2,r0,0x0005dd24 Branch if Unit is Female 0005dd18: 3c0200ff lui r2,0x00ff 0005dd1c: 3442ffd0 ori r2,r2,0xffd0 0005dd20: 01625824 and r11,r11,r2 Disable Dancer 0005dd24: 30a20040 andi r2,r5,0x0040 0005dd28: 10400003 beq r2,r0,0x0005dd38 Branch if Unit is Male 0005dd2c: 3c0200ff lui r2,0x00ff 0005dd30: 3442ffb0 ori r2,r2,0xffb0 0005dd34: 01625824 and r11,r11,r2 Disable Bard 0005dd38: 01601021 addu r2,r11,r0 r2 = Unlocked Jobs 0005dd3c: 27bd0018 addiu r29,r29,0x0018 0005dd40: 03e00008 jr r31 0005dd44: 00000000 nop Proposition JP Gain 0005dd48: 27bdffe0 addiu r29,r29,0xffe0 0005dd4c: afb20018 sw r18,0x0018(r29) 0005dd50: 00a09021 addu r18,r5,r0 r18 = Prop JP 0005dd54: afbf001c sw r31,0x001c(r29) 0005dd58: afb10014 sw r17,0x0014(r29) 0005dd5c: 06400010 bltz r18,0x0005dda0 Branch if Prop JP < 0 0005dd60: afb00010 sw r16,0x0010(r29) 0005dd64: 2c820014 sltiu r2,r4,0x0014 0005dd68: 10400054 beq r2,r0,0x0005debc Branch if Party ID is out of range 0005dd6c: 2402ffff addiu r2,r0,0xffff r2 = FFFF 0005dd70: 0c0166bc jal 0x00059af0 Get Party Data Pointer 0005dd74: 00000000 nop 0005dd78: 00408821 addu r17,r2,r0 r17 = Party Data Pointer 0005dd7c: 90430001 lbu r3,0x0001(r2) Load Unit's Party ID 0005dd80: 340200ff ori r2,r0,0x00ff 0005dd84: 1062004d beq r3,r2,0x0005debc Branch if Unit doesn't Exist 0005dd88: 2402ffff addiu r2,r0,0xffff r2 = FFFF 0005dd8c: 92220004 lbu r2,0x0004(r17) Load Party Gender Byte 0005dd90: 00000000 nop 0005dd94: 30420020 andi r2,r2,0x0020 0005dd98: 10400003 beq r2,r0,0x0005dda8 Branch if Unit isn't a monster 0005dd9c: 00000000 nop 0005dda0: 080177af j 0x0005debc 0005dda4: 2402ffff addiu r2,r0,0xffff r2 = FFFF 0005dda8: 92230002 lbu r3,0x0002(r17) Load Party Job ID 0005ddac: 00000000 nop 0005ddb0: 2462ffb6 addiu r2,r3,0xffb6 ID - 0x4a (Generic ID) 0005ddb4: 2c420014 sltiu r2,r2,0x0014 0005ddb8: 10400002 beq r2,r0,0x0005ddc4 Branch if Job isn't Generic 0005ddbc: 00008021 addu r16,r0,r0 Generic ID = 0 (Base) 0005ddc0: 2470ffb6 addiu r16,r3,0xffb6 Generic ID = ID - 0x4a 0005ddc4: 00101040 sll r2,r16,0x01 ID * 2 0005ddc8: 02222821 addu r5,r17,r2 0005ddcc: 90a2006f lbu r2,0x006f(r5) Load Job's Current JP High Byte 0005ddd0: 90a3006e lbu r3,0x006e(r5) Load Job's Current JP 0005ddd4: 00021200 sll r2,r2,0x08 High Byte * 256 0005ddd8: 00621821 addu r3,r3,r2 r3 = Job's Current JP 0005dddc: 00721821 addu r3,r3,r18 Current JP += Prop JP 0005dde0: 28622710 slti r2,r3,0x2710 0005dde4: 14400002 bne r2,r0,0x0005ddf0 Branch if Current JP < 10000 0005dde8: 00000000 nop 0005ddec: 3403270f ori r3,r0,0x270f JP = 9999 0005ddf0: a0a3006e sb r3,0x006e(r5) Store Party Current JP 0005ddf4: 04610002 bgez r3,0x0005de00 Branch if Current JP is positive 0005ddf8: 00601021 addu r2,r3,r0 r2 = JP 0005ddfc: 246200ff addiu r2,r3,0x00ff JP += 255 (>_>) 0005de00: 00021203 sra r2,r2,0x08 JP / 256 0005de04: a0a2006f sb r2,0x006f(r5) Store Party Current JP High Byte 0005de08: 90a20097 lbu r2,0x0097(r5) Load Party Total JP High Byte 0005de0c: 90a30096 lbu r3,0x0096(r5) Load Party Total JP 0005de10: 00021200 sll r2,r2,0x08 High Byte * 256 0005de14: 00621821 addu r3,r3,r2 r3 = Job's Total JP 0005de18: 00721821 addu r3,r3,r18 Total JP += Prop JP 0005de1c: 28622710 slti r2,r3,0x2710 0005de20: 14400002 bne r2,r0,0x0005de2c Branch if Total JP < 10000 0005de24: 00000000 nop 0005de28: 3403270f ori r3,r0,0x270f Total JP = 9999 0005de2c: a0a30096 sb r3,0x0096(r5) Store Total JP 0005de30: 04610002 bgez r3,0x0005de3c Branch if Total JP is positive 0005de34: 00601021 addu r2,r3,r0 r2 = Total JP 0005de38: 246200ff addiu r2,r3,0x00ff 0005de3c: 3064ffff andi r4,r3,0xffff r4 = Total JP 0005de40: 00021203 sra r2,r2,0x08 Total JP / 256 0005de44: 0c0177bd jal 0x0005def4 Calculate Job Level 0005de48: a0a20097 sb r2,0x0097(r5) Store Total JP High Byte 0005de4c: 00101fc2 srl r3,r16,0x1f 0005de50: 02031821 addu r3,r16,r3 0005de54: 00031843 sra r3,r3,0x01 Generic ID * 2 0005de58: 02231821 addu r3,r17,r3 0005de5c: 00402021 addu r4,r2,r0 r4 = Job Level 0005de60: 32020001 andi r2,r16,0x0001 r2 = Job Nybble Check 0005de64: 90630064 lbu r3,0x0064(r3) Load Party Job Levels 0005de68: 10400004 beq r2,r0,0x0005de7c Branch if Job uses High Nybble 0005de6c: 00802821 addu r5,r4,r0 r5 = Job Level 0005de70: 306200f0 andi r2,r3,0x00f0 r2 = High Nybble Job Level 0005de74: 080177a3 j 0x0005de8c 0005de78: 00821821 addu r3,r4,r2 Add new Low Nybble Job Level 0005de7c: 3063000f andi r3,r3,0x000f r3 = Low Nybble Job Level 0005de80: 30a200ff andi r2,r5,0x00ff 0005de84: 00021100 sll r2,r2,0x04 High Nybble Level * 16 0005de88: 00621825 or r3,r3,r2 Add new High Nybble Job Level 0005de8c: 001017c2 srl r2,r16,0x1f 0005de90: 02021021 addu r2,r16,r2 0005de94: 00021043 sra r2,r2,0x01 Generic ID * 2 0005de98: 02221021 addu r2,r17,r2 0005de9c: a0430064 sb r3,0x0064(r2) Store new Job Levels 0005dea0: 92250004 lbu r5,0x0004(r17) Load Party Gender Byte 0005dea4: 0c017705 jal 0x0005dc14 Calculate Unlocked Jobs 0005dea8: 26240064 addiu r4,r17,0x0064 r4 = Party Job Level Pointer 0005deac: 26240028 addiu r4,r17,0x0028 r4 = Party Unlocked Jobs 0005deb0: 0c0177b6 jal 0x0005ded8 Store 3-Byte Data 0005deb4: 00402821 addu r5,r2,r0 r5 = Unlocked Jobs 0005deb8: 00001021 addu r2,r0,r0 r2 = 0 0005debc: 8fbf001c lw r31,0x001c(r29) 0005dec0: 8fb20018 lw r18,0x0018(r29) 0005dec4: 8fb10014 lw r17,0x0014(r29) 0005dec8: 8fb00010 lw r16,0x0010(r29) 0005decc: 27bd0020 addiu r29,r29,0x0020 0005ded0: 03e00008 jr r31 0005ded4: 00000000 nop Store 3-Byte Data 0005ded8: 00051402 srl r2,r5,0x10 Data >> 16 0005dedc: a0820000 sb r2,0x0000(r4) Store Byte 1 at Pointer 0005dee0: 24840001 addiu r4,r4,0x0001 Pointer ++ 0005dee4: 00051202 srl r2,r5,0x08 Data >> 8 0005dee8: a0820000 sb r2,0x0000(r4) Store Byte 2 at Pointer 0005deec: 03e00008 jr r31 0005def0: a0850001 sb r5,0x0001(r4) Store Byte 3 at Pointer Calculate Job Level 0005def4: 00003021 addu r6,r0,r0 Job Level = 0 0005def8: 00002821 addu r5,r0,r0 Counter = 0 0005defc: 3084ffff andi r4,r4,0xffff r4 = Job's Total JP 0005df00: 3c038006 lui r3,0x8006 0005df04: 24636184 addiu r3,r3,0x6184 0005df08: 94620000 lhu r2,0x0000(r3) Load Job Level's JP Requirement 0005df0c: 00000000 nop 0005df10: 0082102b sltu r2,r4,r2 0005df14: 14400002 bne r2,r0,0x0005df20 Branch if Total JP < JP Required 0005df18: 24630002 addiu r3,r3,0x0002 Pointer += 2 0005df1c: 24c60001 addiu r6,r6,0x0001 Job Level ++ 0005df20: 24a50001 addiu r5,r5,0x0001 Counter ++ 0005df24: 28a20008 slti r2,r5,0x0008 0005df28: 1440fff7 bne r2,r0,0x0005df08 Branch if Counter < 8 0005df2c: 00000000 nop 0005df30: 03e00008 jr r31 0005df34: 00c01021 addu r2,r6,r0 r2 = Job Level Initialize Unit's Job Levels 0005df38: 27bdffd8 addiu r29,r29,0xffd8 0005df3c: afb3001c sw r19,0x001c(r29) 0005df40: 00009821 addu r19,r0,r0 Counter = 0 0005df44: afb20018 sw r18,0x0018(r29) 0005df48: 00a09021 addu r18,r5,r0 r18 = Pointer to Unit's Base/Chemist Job Level 0005df4c: afb10014 sw r17,0x0014(r29) 0005df50: 00808821 addu r17,r4,r0 r17 = Pointer to Unit's Total Base Job JP 0005df54: afbf0020 sw r31,0x0020(r29) 0005df58: afb00010 sw r16,0x0010(r29) 0005df5c: 96240000 lhu r4,0x0000(r17) Load Unit's Total JP 0005df60: 0c0177bd jal 0x0005def4 Calculate Job Level 0005df64: 26730001 addiu r19,r19,0x0001 Counter ++ 0005df68: 96240002 lhu r4,0x0002(r17) Load Unit's next Total JP 0005df6c: 26310004 addiu r17,r17,0x0004 Total JP Pointer += 4 0005df70: 0c0177bd jal 0x0005def4 Calculate Job Level 0005df74: 00028100 sll r16,r2,0x04 Job Levels = Job Level * 16 (high nybble) 0005df78: 02028025 or r16,r16,r2 Job Levels += Job Level (low nybble) 0005df7c: a2500000 sb r16,0x0000(r18) Store Unit's Job Levels 0005df80: 2a62000a slti r2,r19,0x000a 0005df84: 1440fff5 bne r2,r0,0x0005df5c Branch if Counter < 10 0005df88: 26520001 addiu r18,r18,0x0001 Job Level Pointer ++ 0005df8c: 8fbf0020 lw r31,0x0020(r29) 0005df90: 8fb3001c lw r19,0x001c(r29) 0005df94: 8fb20018 lw r18,0x0018(r29) 0005df98: 8fb10014 lw r17,0x0014(r29) 0005df9c: 8fb00010 lw r16,0x0010(r29) 0005dfa0: 27bd0028 addiu r29,r29,0x0028 0005dfa4: 03e00008 jr r31 0005dfa8: 00000000 nop Initialize Some Unit Data 0005dfac: 340200ff ori r2,r0,0x00ff r2 = FF 0005dfb0: a08001b8 sb r0,0x01b8(r4) Store Unit's ? = 0 0005dfb4: a08001b9 sb r0,0x01b9(r4) Store Unit's Main Target ID? = 0 0005dfb8: a0800039 sb r0,0x0039(r4) Store Unit's CT = 0 0005dfbc: a0800186 sb r0,0x0186(r4) Store Unit's ? = 0 (Turn Flag?) 0005dfc0: a0800189 sb r0,0x0189(r4) Store Unit's ? = 0 0005dfc4: a082015d sb r2,0x015d(r4) Store Unit's Spell CT? = 0 0005dfc8: a0800182 sb r0,0x0182(r4) Store Unit's Mount Info = 0 0005dfcc: 03e00008 jr r31 0005dfd0: a080015c sb r0,0x015c(r4) Store Unit's ? = 0 Minimum SP Capping/War Trophy Nulling/Status Initialization 0005dfd4: 27bdffe8 addiu r29,r29,0xffe8 0005dfd8: afbf0010 sw r31,0x0010(r29) 0005dfdc: 90820038 lbu r2,0x0038(r4) Load Unit's SP 0005dfe0: 00000000 nop 0005dfe4: 14400002 bne r2,r0,0x0005dff0 Branch if SP != 0 0005dfe8: 34020001 ori r2,r0,0x0001 r2 = 1 0005dfec: a0820038 sb r2,0x0038(r4) Store SP = 1 0005dff0: 10a00003 beq r5,r0,0x0005e000 Branch if not Removing Drops 0005dff4: 00000000 nop 0005dff8: a0800163 sb r0,0x0163(r4) Store War Trophy = 0 0005dffc: a0800164 sb r0,0x0164(r4) Store Bonus Money Mod = 0 0005e000: 0c017505 jal 0x0005d414 Status Initialization 0005e004: 00000000 nop 0005e008: 8fbf0010 lw r31,0x0010(r29) 0005e00c: 27bd0018 addiu r29,r29,0x0018 0005e010: 03e00008 jr r31 0005e014: 00000000 nop Get Ability's Range 0005e018: 3084ffff andi r4,r4,0xffff r4 = Ability ID 0005e01c: 2c820170 sltiu r2,r4,0x0170 0005e020: 10400008 beq r2,r0,0x0005e044 Branch if Ability isn't a Normal Ability 0005e024: 000410c0 sll r2,r4,0x03 ID * 8 0005e028: 00441023 subu r2,r2,r4 ID * 7 0005e02c: 00021040 sll r2,r2,0x01 ID * 14 0005e030: 3c018006 lui r1,0x8006 0005e034: 00220821 addu r1,r1,r2 0005e038: 9022fbf0 lbu r2,-0x0410(r1) Load Ability's Range 0005e03c: 08017812 j 0x0005e048 0005e040: 00000000 nop 0005e044: 00001021 addu r2,r0,r0 Range = 0 0005e048: 03e00008 jr r31 0005e04c: 00000000 nop Get Ability's AoE 0005e050: 3084ffff andi r4,r4,0xffff r4 = Ability ID 0005e054: 2c820170 sltiu r2,r4,0x0170 0005e058: 10400008 beq r2,r0,0x0005e07c Branch if Ability isn't a Normal Ability 0005e05c: 000410c0 sll r2,r4,0x03 ID * 8 0005e060: 00441023 subu r2,r2,r4 ID * 7 0005e064: 00021040 sll r2,r2,0x01 ID * 14 0005e068: 3c018006 lui r1,0x8006 0005e06c: 00220821 addu r1,r1,r2 0005e070: 9022fbf1 lbu r2,-0x040f(r1) Load Ability's AoE 0005e074: 08017820 j 0x0005e080 0005e078: 00000000 nop 0005e07c: 00001021 addu r2,r0,r0 AoE = 0 0005e080: 03e00008 jr r31 0005e084: 00000000 nop Calculate Unit's Palette/Portrait (return Portrait) 0005e088: 27bdffe0 addiu r29,r29,0xffe0 0005e08c: afb00010 sw r16,0x0010(r29) 0005e090: 00808021 addu r16,r4,r0 r16 = Unit's Data Pointer 0005e094: afb10014 sw r17,0x0014(r29) 0005e098: afbf0018 sw r31,0x0018(r29) 0005e09c: 0c017848 jal 0x0005e120 Get Unit's Portrait/Palette 0005e0a0: 00a08821 addu r17,r5,r0 r17 = Stack Pointer 0005e0a4: a202015f sb r2,0x015f(r16) Store Unit's Portrait 0005e0a8: 92230000 lbu r3,0x0000(r17) Load Palette 0005e0ac: 304200ff andi r2,r2,0x00ff r2 = Unit's Portrait 0005e0b0: a2030160 sb r3,0x0160(r16) Store Unit's Palette 0005e0b4: 8fbf0018 lw r31,0x0018(r29) 0005e0b8: 8fb10014 lw r17,0x0014(r29) 0005e0bc: 8fb00010 lw r16,0x0010(r29) 0005e0c0: 27bd0020 addiu r29,r29,0x0020 0005e0c4: 03e00008 jr r31 0005e0c8: 00000000 nop Check if Random >= Chance 0005e0cc: 27bdffe0 addiu r29,r29,0xffe0 (if the RNG doesn't use r4/r5, r16/r17 aren't needed) 0005e0d0: afb00010 sw r16,0x0010(r29) 0005e0d4: 00808021 addu r16,r4,r0 r16 = Random MOD 0005e0d8: afb10014 sw r17,0x0014(r29) 0005e0dc: afbf0018 sw r31,0x0018(r29) 0005e0e0: 0c0088c3 jal 0x0002230c Random number generator 0005e0e4: 00a08821 addu r17,r5,r0 r17 = Chance 0005e0e8: 00500018 mult r2,r16 Random * MOD 0005e0ec: 00001012 mflo r2 0005e0f0: 04410002 bgez r2,0x0005e0fc Check if result is >= 0 (always positive) 0005e0f4: 00000000 nop 0005e0f8: 24427fff addiu r2,r2,0x7fff Make value positive 0005e0fc: 000213c3 sra r2,r2,0x0f Result / 0x8000 0005e100: 0051102a slt r2,r2,r17 0005e104: 38420001 xori r2,r2,0x0001 r2 = 1 if Result >= Chance 0005e108: 8fbf0018 lw r31,0x0018(r29) 0005e10c: 8fb10014 lw r17,0x0014(r29) 0005e110: 8fb00010 lw r16,0x0010(r29) 0005e114: 27bd0020 addiu r29,r29,0x0020 0005e118: 03e00008 jr r31 0005e11c: 00000000 nop Get Unit's Portrait/Palette 0005e120: a0a00000 sb r0,0x0000(r5) Store Palette = 0 0005e124: 90860003 lbu r6,0x0003(r4) Load Unit's Job ID 0005e128: 90830000 lbu r3,0x0000(r4) Load Unit's Sprite Set 0005e12c: 24c2ffa4 addiu r2,r6,0xffa4 Job ID - 0x5c (Dancer) 0005e130: 2c420002 sltiu r2,r2,0x0002 0005e134: 10400002 beq r2,r0,0x0005e140 Branch if Job isn't Dancer/Mime 0005e138: 306300ff andi r3,r3,0x00ff (Bard/Dancer use the same Job ID for Palette) 0005e13c: 24c6ffff addiu r6,r6,0xffff Job ID -- 0005e140: 2c620080 sltiu r2,r3,0x0080 0005e144: 14400018 bne r2,r0,0x0005e1a8 Branch if Sprite Set is Special 0005e148: 00601021 addu r2,r3,r0 Portrait = Sprite Set 0005e14c: 34020080 ori r2,r0,0x0080 r2 = 0x80 0005e150: 14620005 bne r3,r2,0x0005e168 Branch if Sprite Set != Generic Male 0005e154: 30c200ff andi r2,r6,0x00ff 0005e158: 00021040 sll r2,r2,0x01 Job ID * 2 0005e15c: 2443ffcc addiu r3,r2,0xffcc Job ID * 2 - 0x34 0005e160: 0801786a j 0x0005e1a8 0005e164: 306200fe andi r2,r3,0x00fe r2 = Male Portrait 0005e168: 34020081 ori r2,r0,0x0081 0005e16c: 14620005 bne r3,r2,0x0005e184 Branch if Sprite Set != Generic Female 0005e170: 30c200ff andi r2,r6,0x00ff 0005e174: 00021040 sll r2,r2,0x01 Job ID * 2 0005e178: 2443ffcd addiu r3,r2,0xffcd Job ID * 2 - 0x33 0005e17c: 0801786a j 0x0005e1a8 0005e180: 306200ff andi r2,r3,0x00ff r2 = Female Portrait 0005e184: 34020082 ori r2,r0,0x0082 0005e188: 10620003 beq r3,r2,0x0005e198 Branch if Sprite Set = Monster 0005e18c: 24c30028 addiu r3,r6,0x0028 r3 = Job ID + 0x28 0005e190: 0801786a j 0x0005e1a8 0005e194: 306200ff andi r2,r3,0x00ff Palette = Job ID + 0x28 0005e198: 90820160 lbu r2,0x0160(r4) Load Palette 0005e19c: 00000000 nop 0005e1a0: a0a20000 sb r2,0x0000(r5) Store Palette 0005e1a4: 9082015f lbu r2,0x015f(r4) Load Unit's Portrait (Set from Job Data) 0005e1a8: 03e00008 jr r31 0005e1ac: 00000000 nop Status Checks (r5 = set to check) 0005e1b0: 00003021 addu r6,r0,r0 Counter = 0 0005e1b4: 3c038006 lui r3,0x8006 0005e1b8: 246362d0 addiu r3,r3,0x62d0 0005e1bc: 00051080 sll r2,r5,0x02 Preset Value * 4 0005e1c0: 00451021 addu r2,r2,r5 Preset Value * 5 0005e1c4: 00432821 addu r5,r2,r3 0005e1c8: 00861021 addu r2,r4,r6 0005e1cc: 90420058 lbu r2,0x0058(r2) Load Unit's Current Statuses 1 0005e1d0: 90a30000 lbu r3,0x0000(r5) Load Statuses to check against 0005e1d4: 00000000 nop 0005e1d8: 00431024 and r2,r2,r3 0005e1dc: 14400006 bne r2,r0,0x0005e1f8 Branch if Unit has loaded statuses 0005e1e0: 34020001 ori r2,r0,0x0001 r2 = 1 (statuses found) 0005e1e4: 24c60001 addiu r6,r6,0x0001 Counter ++ 0005e1e8: 28c20005 slti r2,r6,0x0005 0005e1ec: 1440fff6 bne r2,r0,0x0005e1c8 Branch if Counter < 5 0005e1f0: 24a50001 addiu r5,r5,0x0001 Status Pointer += 1 0005e1f4: 00001021 addu r2,r0,r0 r2 = 0 (statuses not found) 0005e1f8: 03e00008 jr r31 0005e1fc: 00000000 nop Get Known Abilities 0005e200: 00051040 sll r2,r5,0x01 Generic Job ID * 2 0005e204: 00451021 addu r2,r2,r5 ID * 3 0005e208: 00822021 addu r4,r4,r2 0005e20c: 90820099 lbu r2,0x0099(r4) Load Known Abilities 1-8 0005e210: 9083009a lbu r3,0x009a(r4) Load Known Abilities 9-16 0005e214: 9084009b lbu r4,0x009b(r4) Load Known R/S/M 1-6 0005e218: 00021400 sll r2,r2,0x10 0005e21c: 00031a00 sll r3,r3,0x08 0005e220: 00431021 addu r2,r2,r3 0005e224: 03e00008 jr r31 0005e228: 00441025 or r2,r2,r4 r2 = Known Abilities Transfer Target ID? Through Mount Data 0005e22c: 00001821 addu r3,r0,r0 Counter = 0 0005e230: 90820000 lbu r2,0x0000(r4) Load Value 0005e234: 24840001 addiu r4,r4,0x0001 Load Pointer ++ 0005e238: 24630001 addiu r3,r3,0x0001 Counter ++ 0005e23c: a0a20000 sb r2,0x0000(r5) Store Value 0005e240: 2c620014 sltiu r2,r3,0x0014 0005e244: 1440fffa bne r2,r0,0x0005e230 Branch if Counter < 0x14 0005e248: 24a50001 addiu r5,r5,0x0001 Store Pointer ++ 0005e24c: 03e00008 jr r31 0005e250: 00000000 nop Store X Byte into Y 0005e254: 27bdfff8 addiu r29,r29,0xfff8 0005e258: 18c00008 blez r6,0x0005e27c Branch if Limit <= 0 0005e25c: 00001821 addu r3,r0,r0 r3 = 0 0005e260: 90820000 lbu r2,0x0000(r4) Load X Data 0005e264: 24840001 addiu r4,r4,0x0001 Load Pointer ++ 0005e268: 24630001 addiu r3,r3,0x0001 Counter ++ 0005e26c: a0a20000 sb r2,0x0000(r5) Store X Data 0005e270: 0066102a slt r2,r3,r6 0005e274: 1440fffa bne r2,r0,0x0005e260 Branch if Counter < Limit 0005e278: 24a50001 addiu r5,r5,0x0001 Store Pointer ++ 0005e27c: 27bd0008 addiu r29,r29,0x0008 0005e280: 03e00008 jr r31 0005e284: 00000000 nop Get Total Equipment Quantity (Equip Change/Formation Screen?) 0005e288: 27bdffd0 addiu r29,r29,0xffd0 0005e28c: afb3001c sw r19,0x001c(r29) 0005e290: 00a09821 addu r19,r5,r0 r19 = Use Unit/Party Data Check 0005e294: afb50024 sw r21,0x0024(r29) 0005e298: 0080a821 addu r21,r4,r0 r21 = Item ID 0005e29c: 32a200ff andi r2,r21,0x00ff 0005e2a0: afb00010 sw r16,0x0010(r29) 0005e2a4: 00008021 addu r16,r0,r0 Party Counter = 0 0005e2a8: afb40020 sw r20,0x0020(r29) 0005e2ac: 341400ff ori r20,r0,0x00ff r20 = FF 0005e2b0: afb60028 sw r22,0x0028(r29) 0005e2b4: 3c168019 lui r22,0x8019 0005e2b8: 26d608cc addiu r22,r22,0x08cc r22 = Unit Data Pointer 0005e2bc: afb20018 sw r18,0x0018(r29) 0005e2c0: 00409021 addu r18,r2,r0 r18 = Item ID 0005e2c4: afbf002c sw r31,0x002c(r29) 0005e2c8: afb10014 sw r17,0x0014(r29) 0005e2cc: 3c018006 lui r1,0x8006 0005e2d0: 00220821 addu r1,r1,r2 0005e2d4: 903196e0 lbu r17,-0x6920(r1) Load Item's Quantity 0005e2d8: 0c0166bc jal 0x00059af0 Get Party Data Pointer 0005e2dc: 02002021 addu r4,r16,r0 r4 = Party Counter 0005e2e0: 00403021 addu r6,r2,r0 r6 = Party Data Pointer 0005e2e4: 90c80001 lbu r8,0x0001(r6) Load Party ID 0005e2e8: 00000000 nop 0005e2ec: 1114002a beq r8,r20,0x0005e398 Branch if Unit doesn't exist 0005e2f0: 00000000 nop 0005e2f4: 90c20004 lbu r2,0x0004(r6) Load Party Gender Byte 0005e2f8: 00000000 nop 0005e2fc: 30420020 andi r2,r2,0x0020 0005e300: 14400025 bne r2,r0,0x0005e398 Branch if Unit is a monster 0005e304: 00000000 nop 0005e308: 12600019 beq r19,r0,0x0005e370 Branch if using Party Data 0005e30c: 00003821 addu r7,r0,r0 r7 = 0 0005e310: 00001821 addu r3,r0,r0 Counter = 0 0005e314: 02c02821 addu r5,r22,r0 r5 = Unit Data Pointer 0005e318: 00a02021 addu r4,r5,r0 r4 = Unit Data Pointer 0005e31c: 90820183 lbu r2,0x0183(r4) Load Unit's ? 0005e320: 00000000 nop 0005e324: 1054000c beq r2,r20,0x0005e358 Branch if Unit Doesn't Exist 0005e328: 00000000 nop 0005e32c: 90820006 lbu r2,0x0006(r4) Load Unit's Gender Byte 0005e330: 00000000 nop 0005e334: 30420020 andi r2,r2,0x0020 0005e338: 14400007 bne r2,r0,0x0005e358 Branch if Unit is a Monster 0005e33c: 00000000 nop 0005e340: 90820002 lbu r2,0x0002(r4) Load Unit's Party ID 0005e344: 00000000 nop 0005e348: 14480003 bne r2,r8,0x0005e358 Branch if Found Party ID != Needed Party ID 0005e34c: 00000000 nop 0005e350: 080178da j 0x0005e368 0005e354: 34070001 ori r7,r0,0x0001 r7 = 1 0005e358: 24630001 addiu r3,r3,0x0001 r3 ++ 0005e35c: 28620015 slti r2,r3,0x0015 0005e360: 1440ffed bne r2,r0,0x0005e318 Branch if Counter < 0x15 0005e364: 24a501c0 addiu r5,r5,0x01c0 Unit Data Pointer += 0x1c0 0005e368: 14e0000b bne r7,r0,0x0005e398 Branch if Unit was Found 0005e36c: 00000000 nop 0005e370: 00001821 addu r3,r0,r0 Counter = 0 0005e374: 00c31021 addu r2,r6,r3 0005e378: 9042000e lbu r2,0x000e(r2) Load Party Equipment 0005e37c: 00000000 nop 0005e380: 14520002 bne r2,r18,0x0005e38c Branch if Equipment ID != Item ID 0005e384: 24630001 addiu r3,r3,0x0001 Counter ++ 0005e388: 26310001 addiu r17,r17,0x0001 Item Quantity ++ 0005e38c: 28620007 slti r2,r3,0x0007 0005e390: 1440fff9 bne r2,r0,0x0005e378 Branch if Counter < 7 0005e394: 00c31021 addu r2,r6,r3 0005e398: 26100001 addiu r16,r16,0x0001 Party Counter ++ 0005e39c: 2a020014 slti r2,r16,0x0014 0005e3a0: 1440ffcd bne r2,r0,0x0005e2d8 Branch if Party Counter < 0x14 0005e3a4: 00000000 nop 0005e3a8: 12600028 beq r19,r0,0x0005e44c Branch if using Party Data 0005e3ac: 02201021 addu r2,r17,r0 r2 = Item's Quantity 0005e3b0: 00008021 addu r16,r0,r0 Counter = 0 0005e3b4: 340700ff ori r7,r0,0x00ff r7 = FF 0005e3b8: 3406005d ori r6,r0,0x005d r6 = 0x5d (Mime) 0005e3bc: 32a400ff andi r4,r21,0x00ff r4 = Item ID 0005e3c0: 3c058019 lui r5,0x8019 0005e3c4: 24a508cc addiu r5,r5,0x08cc 0005e3c8: 90a20183 lbu r2,0x0183(r5) Load Unit's ? 0005e3cc: 00000000 nop 0005e3d0: 10470019 beq r2,r7,0x0005e438 Branch if Unit doesn't exist 0005e3d4: 00000000 nop 0005e3d8: 90a20006 lbu r2,0x0006(r5) Load Unit's Gender Byte 0005e3dc: 00000000 nop 0005e3e0: 30420020 andi r2,r2,0x0020 0005e3e4: 14400014 bne r2,r0,0x0005e438 Branch if Unit is a Monster 0005e3e8: 00000000 nop 0005e3ec: 90a201ba lbu r2,0x01ba(r5) Load Unit's Modified ENTD Flags 0005e3f0: 00000000 nop 0005e3f4: 30420030 andi r2,r2,0x0030 0005e3f8: 1440000f bne r2,r0,0x0005e438 Branch if Unit isn't on Blue Team 0005e3fc: 00000000 nop 0005e400: 90a20003 lbu r2,0x0003(r5) Load Unit's Job ID 0005e404: 00000000 nop 0005e408: 1046000b beq r2,r6,0x0005e438 Branch if Unit is a Mime 0005e40c: 00000000 nop 0005e410: 00001821 addu r3,r0,r0 Counter2 = 0 0005e414: 00a31021 addu r2,r5,r3 0005e418: 9042001a lbu r2,0x001a(r2) Load Unit's Equipment ID 0005e41c: 00000000 nop 0005e420: 14440002 bne r2,r4,0x0005e42c Branch if Equip ID != Item ID 0005e424: 24630001 addiu r3,r3,0x0001 Counter2 ++ 0005e428: 26310001 addiu r17,r17,0x0001 Item Quantity ++ 0005e42c: 28620007 slti r2,r3,0x0007 0005e430: 1440fff9 bne r2,r0,0x0005e418 Branch if Counter2 < 7 0005e434: 00a31021 addu r2,r5,r3 0005e438: 26100001 addiu r16,r16,0x0001 Counter ++ 0005e43c: 2a020015 slti r2,r16,0x0015 0005e440: 1440ffe1 bne r2,r0,0x0005e3c8 Branch if Counter < 0x15 0005e444: 24a501c0 addiu r5,r5,0x01c0 Pointer += 0x1c0 0005e448: 02201021 addu r2,r17,r0 r2 = Item Quantity 0005e44c: 8fbf002c lw r31,0x002c(r29) 0005e450: 8fb60028 lw r22,0x0028(r29) 0005e454: 8fb50024 lw r21,0x0024(r29) 0005e458: 8fb40020 lw r20,0x0020(r29) 0005e45c: 8fb3001c lw r19,0x001c(r29) 0005e460: 8fb20018 lw r18,0x0018(r29) 0005e464: 8fb10014 lw r17,0x0014(r29) 0005e468: 8fb00010 lw r16,0x0010(r29) 0005e46c: 27bd0030 addiu r29,r29,0x0030 0005e470: 03e00008 jr r31 0005e474: 00000000 nop Initialize Unit's X/Y+Facing/Battle Rewards 0005e478: 90a20019 lbu r2,0x0019(r5) Load ENTD X Coordinate 0005e47c: 00000000 nop 0005e480: a0820047 sb r2,0x0047(r4) Store Unit's X Coordinate 0005e484: 90a2001a lbu r2,0x001a(r5) Load ENTD Y Coordinate 0005e488: 00000000 nop 0005e48c: a0820048 sb r2,0x0048(r4) Store Unit's Y Coordinate 0005e490: 94a3001a lhu r3,0x001a(r5) Load ENTD Y Coordinate + Facing 0005e494: 94820048 lhu r2,0x0048(r4) Load Unit's Y Coordinate + Facing 0005e498: 30638000 andi r3,r3,0x8000 ENTD Higher Elevation Flag 0005e49c: 30427fff andi r2,r2,0x7fff Remove Unit's Higher Elevation Flag 0005e4a0: 00431025 or r2,r2,r3 0005e4a4: a4820048 sh r2,0x0048(r4) Store Unit's new Y Coordinate + Facing 0005e4a8: 94a3001a lhu r3,0x001a(r5) Load ENTD Y Coordinate + Facing 0005e4ac: 3042f0ff andi r2,r2,0xf0ff Remove Unit's Facing Flags 0005e4b0: 30630300 andi r3,r3,0x0300 ENTD Facing Flags 0005e4b4: 00431025 or r2,r2,r3 0005e4b8: a4820048 sh r2,0x0048(r4) Store Unit's new Y Coordinate + Facing 0005e4bc: 94a3001a lhu r3,0x001a(r5) Load ENTD Y Coordinate + Facing 0005e4c0: 3042cfff andi r2,r2,0xcfff Remove Unit's ? Flags 0005e4c4: 30633000 andi r3,r3,0x3000 ENTD's ? Flags 0005e4c8: 00431025 or r2,r2,r3 0005e4cc: a4820048 sh r2,0x0048(r4) Store Unit's new Y Coordinate + Facing 0005e4d0: 90a2001e lbu r2,0x001e(r5) Load ENTD War Trophy 0005e4d4: 00000000 nop 0005e4d8: a0820163 sb r2,0x0163(r4) Store Unit's War Trophy 0005e4dc: 90a2001f lbu r2,0x001f(r5) Load ENTD Gil 0005e4e0: 03e00008 jr r31 0005e4e4: a0820164 sb r2,0x0164(r4) Store Unit's Gil Get Lowest Order Status' 0x08 Check Data? (Status Checks 2) 0005e4e8: 240affff addiu r10,r0,0xffff Low Order = -1 0005e4ec: 00003021 addu r6,r0,r0 r6 = 0 0005e4f0: 00002821 addu r5,r0,r0 Status Counter = 0 0005e4f4: 340c0080 ori r12,r0,0x0080 r12 = 0x80 0005e4f8: 3c088006 lui r8,0x8006 0005e4fc: 25085de6 addiu r8,r8,0x5de6 r8 = Status Effect Order Pointer 0005e500: 00003821 addu r7,r0,r0 Counter 2 = 0 0005e504: 04a10002 bgez r5,0x0005e510 Branch if Status Counter is Positive 0005e508: 00a01021 addu r2,r5,r0 r2 = Status Counter 0005e50c: 24a20007 addiu r2,r5,0x0007 0005e510: 000248c3 sra r9,r2,0x03 Status Counter / 8 0005e514: 30a20007 andi r2,r5,0x0007 r2 = Current Status 0005e518: 004c1007 srav r2,r12,r2 0x80 / 2^(Current Status) 0005e51c: 00891821 addu r3,r4,r9 0005e520: 90630020 lbu r3,0x0020(r3) Load Attack's Status Removal (Current Action) 0005e524: 00000000 nop 0005e528: 00621824 and r3,r3,r2 0005e52c: 1060000f beq r3,r0,0x0005e56c Branch if Status isn't Present 0005e530: 00405821 addu r11,r2,r0 r11 = Current Status Flag 0005e534: 91030000 lbu r3,0x0000(r8) Load Status' Order 0005e538: 00000000 nop 0005e53c: 0143102a slt r2,r10,r3 0005e540: 1040000b beq r2,r0,0x0005e570 Branch if Low Order >= Status' Order 0005e544: 00891021 addu r2,r4,r9 0005e548: 00605021 addu r10,r3,r0 Low Order = Status' Order 0005e54c: 3c018006 lui r1,0x8006 0005e550: 00270821 addu r1,r1,r7 0005e554: 90225de9 lbu r2,0x5de9(r1) Load Status' Checks 2 0005e558: 00000000 nop 0005e55c: 30420008 andi r2,r2,0x0008 0005e560: 10400002 beq r2,r0,0x0005e56c Branch if 0x08 check isn't enabled 0005e564: 24a60081 addiu r6,r5,0x0081 r6 = Status Counter + 0x81 0005e568: 24a60181 addiu r6,r5,0x0181 r6 = Status Counter + 0x181 0005e56c: 00891021 addu r2,r4,r9 0005e570: 9042001b lbu r2,0x001b(r2) Load Attack's Status Infliction 0005e574: 00000000 nop 0005e578: 01621024 and r2,r11,r2 0005e57c: 1040000f beq r2,r0,0x0005e5bc Branch if Status isn't present 0005e580: 00000000 nop 0005e584: 91030000 lbu r3,0x0000(r8) Load Status' Order 0005e588: 00000000 nop 0005e58c: 0143102a slt r2,r10,r3 0005e590: 1040000a beq r2,r0,0x0005e5bc Branch if Low Order >= Status' Order 0005e594: 00000000 nop 0005e598: 00605021 addu r10,r3,r0 Low Order = Status' Order 0005e59c: 3c018006 lui r1,0x8006 0005e5a0: 00270821 addu r1,r1,r7 0005e5a4: 90225de9 lbu r2,0x5de9(r1) Load Status' Checks 2 0005e5a8: 00000000 nop 0005e5ac: 30420008 andi r2,r2,0x0008 0005e5b0: 10400002 beq r2,r0,0x0005e5bc Branch if 0x08 check isn't enabled 0005e5b4: 24a60001 addiu r6,r5,0x0001 r6 = Status Counter + 0x01 0005e5b8: 24a60101 addiu r6,r5,0x0101 r6 = Status Counter + 0x101 0005e5bc: 25080010 addiu r8,r8,0x0010 Status Pointer += 0x10 0005e5c0: 24a50001 addiu r5,r5,0x0001 Status Counter ++ 0005e5c4: 28a20028 slti r2,r5,0x0028 0005e5c8: 1440ffce bne r2,r0,0x0005e504 Branch if Status Counter < 0x28 0005e5cc: 24e70010 addiu r7,r7,0x0010 Counter2 += 0x10 (stupid counter) 0005e5d0: 03e00008 jr r31 0005e5d4: 00c01021 addu r2,r6,r0 r2 = Status Counter + Value Calculate Zodiac Symbol 0005e5d8: 00002821 addu r5,r0,r0 Zodiac = 0 0005e5dc: 00003021 addu r6,r0,r0 Counter = 0 0005e5e0: 3084ffff andi r4,r4,0xffff r4 = Birthday 0005e5e4: 3c038006 lui r3,0x8006 0005e5e8: 246361e8 addiu r3,r3,0x61e8 r3 = Pointer to Zodiac Day Limits 0005e5ec: 94620000 lhu r2,0x0000(r3) Load Zodiac Day Limit 0005e5f0: 24c60001 addiu r6,r6,0x0001 Counter ++ 0005e5f4: 0082102b sltu r2,r4,r2 0005e5f8: 38420001 xori r2,r2,0x0001 r2 = 0 if Birthday < Day Limit 0005e5fc: 00a22821 addu r5,r5,r2 Zodiac += r2 0005e600: 28c2000c slti r2,r6,0x000c 0005e604: 1440fff9 bne r2,r0,0x0005e5ec Branch if Counter < 12 0005e608: 24630002 addiu r3,r3,0x0002 Pointer += 2 0005e60c: 3c032aaa lui r3,0x2aaa 0005e610: 3463aaab ori r3,r3,0xaaab 0005e614: 24a20009 addiu r2,r5,0x0009 Zodiac += 9 (9-20 here) 0005e618: 00430018 mult r2,r3 (Zodiac + 9) * 0.167 0005e61c: 000227c3 sra r4,r2,0x1f 0005e620: 00001810 mfhi r3 Zodiac Mod = Zodiac * 0.167 0005e624: 00031843 sra r3,r3,0x01 Zodiac Mod / 2 0005e628: 00642823 subu r5,r3,r4 0005e62c: 00051840 sll r3,r5,0x01 Zodiac Mod / 2 * 2 0005e630: 00651821 addu r3,r3,r5 Zodiac Mod / 2 * 3 0005e634: 00031880 sll r3,r3,0x02 Zodiac Mod / 2 * 12 0005e638: 00431023 subu r2,r2,r3 Zodiac -= Zodiac Mod 0005e63c: 03e00008 jr r31 0005e640: 3042ffff andi r2,r2,0xffff Data Nullifying (requires r5 = Limit, and r4 = Starting location) 0005e644: 27bdfff8 addiu r29,r29,0xfff8 0005e648: 18a00006 blez r5,0x0005e664 Branch if r5 <= 0 0005e64c: 00001821 addu r3,r0,r0 r3 = 0 0005e650: a0800000 sb r0,0x0000(r4) X Value = 0 0005e654: 24630001 addiu r3,r3,0x0001 r3 += 1 (Counter ++) 0005e658: 0065102a slt r2,r3,r5 0005e65c: 1440fffc bne r2,r0,0x0005e650 Branch if counter isn't at limit 0005e660: 24840001 addiu r4,r4,0x0001 Data to null + 1 0005e664: 27bd0008 addiu r29,r29,0x0008 0005e668: 03e00008 jr r31 0005e66c: 00000000 nop Increase Casualties/Injured Counters 0005e670: 27bdffe8 addiu r29,r29,0xffe8 0005e674: afbf0014 sw r31,0x0014(r29) 0005e678: afb00010 sw r16,0x0010(r29) 0005e67c: 908201ba lbu r2,0x01ba(r4) Load Unit's Modified ENTD Flags 0005e680: 00000000 nop 0005e684: 30420030 andi r2,r2,0x0030 0005e688: 10400002 beq r2,r0,0x0005e694 Branch if Unit is on the Blue Team 0005e68c: 34100062 ori r16,r0,0x0062 r16 = 0x62 (Casualties ++) 0005e690: 34100061 ori r16,r0,0x0061 r16 = 0x61 (Injured ++) 0005e694: 0c04ed64 jal 0x0013b590 Load X Main Data Word? 0005e698: 02002021 addu r4,r16,r0 r4 = Casualties/Injured Data 0005e69c: 00402821 addu r5,r2,r0 0005e6a0: 28a2270f slti r2,r5,0x270f 0005e6a4: 10400002 beq r2,r0,0x0005e6b0 Branch if Casualties/Injured Counter >= 9999 0005e6a8: 00000000 nop 0005e6ac: 24a50001 addiu r5,r5,0x0001 Counter ++ 0005e6b0: 0c04ed91 jal 0x0013b644 Store X Main Data Word? 0005e6b4: 02002021 addu r4,r16,r0 r4 = Casualties/Injured Data 0005e6b8: 8fbf0014 lw r31,0x0014(r29) 0005e6bc: 8fb00010 lw r16,0x0010(r29) 0005e6c0: 27bd0018 addiu r29,r29,0x0018 0005e6c4: 03e00008 jr r31 0005e6c8: 00000000 nop Inflicted Status Changes 0005e6cc: 34020001 ori r2,r0,0x0001 r2 = 1 0005e6d0: 10e20010 beq r7,r2,0x0005e714 Branch if Change Type = 1 (Disable Statuses) 0005e6d4: 00c01821 addu r3,r6,r0 r3 = Statuses 0005e6d8: 28e20002 slti r2,r7,0x0002 0005e6dc: 10400005 beq r2,r0,0x0005e6f4 Branch if PV >= 2 0005e6e0: 00000000 nop 0005e6e4: 10e00008 beq r7,r0,0x0005e708 Branch if PV = 0 (Enable Statuses) 0005e6e8: 00851021 addu r2,r4,r5 r2 = Unit's Data Pointer + Status Set ID 0005e6ec: 080179cc j 0x0005e730 0005e6f0: 00851821 addu r3,r4,r5 r3 = Unit's Data Pointer + Status Set ID 0005e6f4: 34020002 ori r2,r0,0x0002 r2 = 2 0005e6f8: 10e2000b beq r7,r2,0x0005e728 Branch if PV = 2 (Force-set Statuses) 0005e6fc: 00000000 nop 0005e700: 080179cc j 0x0005e730 (No Inflicted Status Change) 0005e704: 00851821 addu r3,r4,r5 r3 = Unit's Data Pointer + Status Set ID 0005e708: 904201bb lbu r2,0x01bb(r2) Load Unit's Inflicted Statuses 0005e70c: 080179cb j 0x0005e72c 0005e710: 00464025 or r8,r2,r6 Enable Inflicted Statuses 0005e714: 00851021 addu r2,r4,r5 r2 = Unit's Data Pointer + Status Set ID 0005e718: 904301bb lbu r3,0x01bb(r2) Load Inflicted Statuses 0005e71c: 00061027 nor r2,r0,r6 r2 = Statuses to Disable 0005e720: 080179cb j 0x0005e72c 0005e724: 00624024 and r8,r3,r2 Disable Inflicted Statuses 0005e728: 00604021 addu r8,r3,r0 r8 = Statuses 0005e72c: 00851821 addu r3,r4,r5 r3 = Unit's Data Pointer + Status Set ID 0005e730: 9062004e lbu r2,0x004e(r3) Load Unit's Innate Statuses 0005e734: a06801bb sb r8,0x01bb(r3) Store new Inflicted Statuses 0005e738: 01021025 or r2,r8,r2 Enable/Disable Innate Statuses 0005e73c: 03e00008 jr r31 0005e740: a0620058 sb r2,0x0058(r3) Store new Current Statuses Store Current Statuses 0005e744: 00803021 addu r6,r4,r0 r6 = Unit's Data Pointer 0005e748: 00002821 addu r5,r0,r0 r5 = Counter 0005e74c: 00c51821 addu r3,r6,r5 r3 = Unit's Data Pointer += Counter 0005e750: 9062004e lbu r2,0x004e(r3) Load Unit's X set of Innate Statuses 0005e754: 906401bb lbu r4,0x01bb(r3) Load Unit's X set of Inflicted Statuses 0005e758: 24a50001 addiu r5,r5,0x0001 Counter += 1 0005e75c: 00441025 or r2,r2,r4 Combine Innate and Inflicted Statuses 0005e760: a0620058 sb r2,0x0058(r3) Store Current Statuses into set X 0005e764: 28a20005 slti r2,r5,0x0005 0005e768: 1440fff8 bne r2,r0,0x0005e74c Branch if all statuses haven't been altered 0005e76c: 00000000 nop 0005e770: 03e00008 jr r31 0005e774: 00000000 nop Transfer Last Ability Used CT 0005e778: 84830170 lh r3,0x0170(r4) Load Unit's Last Attack Used ID 0005e77c: 00000000 nop 0005e780: 000310c0 sll r2,r3,0x03 ID * 8 0005e784: 00431023 subu r2,r2,r3 ID * 7 0005e788: 00021040 sll r2,r2,0x01 ID * 14 0005e78c: 3c018006 lui r1,0x8006 0005e790: 00220821 addu r1,r1,r2 0005e794: 9022fbfc lbu r2,-0x0404(r1) Load Ability's CT 0005e798: 00000000 nop 0005e79c: 3042007f andi r2,r2,0x007f 0005e7a0: 03e00008 jr r31 0005e7a4: a082018b sb r2,0x018b(r4) Store Ability's CT 0005e7a8: 27bdffd8 addiu r29,r29,0xffd8 0005e7ac: afb20018 sw r18,0x0018(r29) 0005e7b0: 00809021 addu r18,r4,r0 r18 = Unit's Data Pointer 0005e7b4: 30a300ff andi r3,r5,0x00ff r3 = Status ID? 0005e7b8: 340200ff ori r2,r0,0x00ff r2 = FF 0005e7bc: afbf0024 sw r31,0x0024(r29) 0005e7c0: afb40020 sw r20,0x0020(r29) 0005e7c4: afb3001c sw r19,0x001c(r29) 0005e7c8: afb10014 sw r17,0x0014(r29) 0005e7cc: afb00010 sw r16,0x0010(r29) 0005e7d0: 92540058 lbu r20,0x0058(r18) Load Unit's Current Statuses set 1 0005e7d4: 9253018a lbu r19,0x018a(r18) Load Unit's Unit ID 0005e7d8: 14620005 bne r3,r2,0x0005e7f0 Branch if Status ID? != FF 0005e7dc: 2c620009 sltiu r2,r3,0x0009 0005e7e0: 32820001 andi r2,r20,0x0001 Performing Flag 0005e7e4: 000228c0 sll r5,r2,0x03 Flag * 8 (0 or 8 here) 0005e7e8: 30a300ff andi r3,r5,0x00ff (prevent branching) 0005e7ec: 2c620009 sltiu r2,r3,0x0009 0005e7f0: 10400016 beq r2,r0,0x0005e84c Branch if Status ID? >= 9 0005e7f4: 00031080 sll r2,r3,0x02 ID * 4 (0-0x20) 0005e7f8: 3c018006 lui r1,0x8006 0005e7fc: 00220821 addu r1,r1,r2 0005e800: 8c229830 lw r2,-0x67d0(r1) Load Code Pointer for Below 0005e804: 00000000 nop 0005e808: 00400008 jr r2 0005e80c: 00000000 nop *Normal Action* 0005e810: 00008821 addu r17,r0,r0 r17 = 0 (None) 0005e814: 08017a12 j 0x0005e848 0005e818: 340200ff ori r2,r0,0x00ff CT = FF *Charging* 0005e81c: 08017a13 j 0x0005e84c 0005e820: 34110008 ori r17,r0,0x0008 r17 = 8 (Charging) *Jump* 0005e824: 08017a13 j 0x0005e84c 0005e828: 34110004 ori r17,r0,0x0004 r17 = 4 (Jump) *Defending* 0005e82c: 34110002 ori r17,r0,0x0002 r17 = 2 (Defending) 0005e830: 08017a12 j 0x0005e848 0005e834: 340200ff ori r2,r0,0x00ff CT = FF *Performing* 0005e838: 0c0179de jal 0x0005e778 Transfer Last Ability Used CT 0005e83c: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005e840: 9242018b lbu r2,0x018b(r18) Load Unit's Last Ability CT 0005e844: 34110001 ori r17,r0,0x0001 r17 = 1 (Performing) 0005e848: a242015d sb r2,0x015d(r18) Store Unit's Ability CT *Default* 0005e84c: 3a30000f xori r16,r17,0x000f r16 = 0xF with r17 Disabled 0005e850: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005e854: 00002821 addu r5,r0,r0 r5 = 0 (Status Set 1) 0005e858: 322600ff andi r6,r17,0x00ff r6 = Statuses to Enable 0005e85c: 0c0179b3 jal 0x0005e6cc Inflicted Status Changes 0005e860: 00003821 addu r7,r0,r0 r7 = 0 (Enable Statuses) 0005e864: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005e868: 00002821 addu r5,r0,r0 r5 = 0 (Status Set 1) 0005e86c: 320600ff andi r6,r16,0x00ff r6 = Statuses to Disable 0005e870: 0c0179b3 jal 0x0005e6cc Inflicted Status Changes 0005e874: 34070001 ori r7,r0,0x0001 r7 = 1 (Disable Statuses) 0005e878: 34110008 ori r17,r0,0x0008 Status Check = 8 0005e87c: 92420058 lbu r2,0x0058(r18) Load Unit's Current Statuses 0005e880: 34100005 ori r16,r0,0x0005 Counter = 5 0005e884: 02821026 xor r2,r20,r2 0005e888: 00409021 addu r18,r2,r0 r18 = Statuses that were removed 0005e88c: 02511024 and r2,r18,r17 0005e890: 10400008 beq r2,r0,0x0005e8b4 Branch if the status wasn't removed 0005e894: 02911024 and r2,r20,r17 0005e898: 10400003 beq r2,r0,0x0005e8a8 Branch if the original statuses didn't have the status 0005e89c: 02002021 addu r4,r16,r0 r4 = Counter 0005e8a0: 08017a2b j 0x0005e8ac 0005e8a4: 00002821 addu r5,r0,r0 r5 = 0 (Status Removed) 0005e8a8: 34050001 ori r5,r0,0x0001 r5 = 1 (Status added) 0005e8ac: 0c063a6f jal 0x0018e9bc Status Change Updating 0005e8b0: 02603021 addu r6,r19,r0 r6 = Unit's ID 0005e8b4: 26100001 addiu r16,r16,0x0001 Counter ++ 0005e8b8: 2a020009 slti r2,r16,0x0009 0005e8bc: 1440fff3 bne r2,r0,0x0005e88c Branch if Counter < 9 0005e8c0: 00118842 srl r17,r17,0x01 Move to next status check 0005e8c4: 8fbf0024 lw r31,0x0024(r29) 0005e8c8: 8fb40020 lw r20,0x0020(r29) 0005e8cc: 8fb3001c lw r19,0x001c(r29) 0005e8d0: 8fb20018 lw r18,0x0018(r29) 0005e8d4: 8fb10014 lw r17,0x0014(r29) 0005e8d8: 8fb00010 lw r16,0x0010(r29) 0005e8dc: 27bd0028 addiu r29,r29,0x0028 0005e8e0: 03e00008 jr r31 0005e8e4: 00000000 nop ? (removed code?) 0005e8e8: 27bdffe8 addiu r29,r29,0xffe8 0005e8ec: afbf0010 sw r31,0x0010(r29) 0005e8f0: 00802821 addu r5,r4,r0 r5 = Some value + 100/200/300/400/500/600, or 128? 0005e8f4: 0c011280 jal 0x00044a00 (does nothing; jr r31) 0005e8f8: 34040003 ori r4,r0,0x0003 r4 = 3 0005e8fc: 8fbf0010 lw r31,0x0010(r29) 0005e900: 27bd0018 addiu r29,r29,0x0018 0005e904: 03e00008 jr r31 0005e908: 00000000 nop