Equipment Attribute Setting
Jump to navigation
Jump to search
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 0x 0005e644 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 0x 0005b880 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,0x 0005c82c 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: 0 0005021 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,0x 0005c648 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,0x 0005c688 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,0x 0005c68c 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,0x 0005c81c 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,0x 0005c6f8 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,0x 0005c6d8 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,0x 0005c72c 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,0x 0005c750 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: 9042 0005 lbu r2,0x 0005(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,0x 0005c758 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: 28a2 0005 slti r2,r5,0x 0005 0005c7a0: 1440fff8 bne r2,r0,0x 0005c784 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,0x 0005c81c 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,0x 0005c7ec 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,0x 0005c818 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,0x 0005c620 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,0x 0005c850 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,0x 0005c874 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: 1040 0005 beq r2,r0,0x 0005c8a8 Branch if New Stat is Speed 0005c894: 2c620064 sltiu r2,r3,0x0064 0005c898: 14400008 bne r2,r0,0x 0005c8bc Branch if New Stat < 100 0005c89c: 00000000 nop 0005c8a0: 0801722f j 0x 0005c8bc 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,0x 0005c8bc 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,0x 0005c87c 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
Return Locations
0005ab18: Equipment/Move/Jump +X/Name Storing/Generation 0005d710: Status Setting/Checking + Equip/R/S/M Stats