Difference between revisions of "Equipment Stat Setting"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m
m
 
Line 1: Line 1:
 
  Equipment Stat Setting
 
  Equipment Stat Setting
  0005c398: 27bdffe8 addiu r29,r29,0xffe8
+
   
0005c39c: afb00010 sw r16,0x0010(r29)
+
  Parameters : r4 = Unit Data pointer
  0005c3a0: 00808021 addu r16,r4,r0 r16 = Unit's Data Pointer
+
  0005c3a4: 2604003c addiu r4,r16,0x003c r4 = Unit's Data Pointer (WP 1)
+
  This routine set Unit's 0x3c to 0x46 data based on Equipped item's data (Equipped Item ID come from Unit 0x1c to 0x20)
  0005c3a8: afbf0014 sw r31,0x0014(r29)
+
  ----------------------------------------------------------------------------------------------------------------
0005c3ac: 0c017991 jal 0x 0005e644 Data Nullifying (Equipment Stats)
+
  0005c398: 27bdffe8 addiu r29,r29,-0x0018    |
0005c3b0: 3405000b ori r5,r0,0x000b r5 = b (Equipment Stats)
+
  0005c39c: afb00010 sw r16,0x0010(r29)      |
0005c3b4: 92030003 lbu r3,0x0003(r16) Load Unit's Job ID
+
  0005c3a0: 00808021 addu r16,r4,r0          |{{f/std|<nowiki>r16 = Unit data pointer</nowiki>}}
0005c3b8: 00000000 nop
+
  0005c3a4: 2604003c addiu r4,r16,0x003c      |{{f/adr|<nowiki>r4 = Unit's WP1 data pointer</nowiki>}}
0005c3bc: 00031040 sll r2,r3,0x01 Job ID * 2
+
  0005c3a8: afbf0014 sw r31,0x0014(r29)       |
0005c3c0: 00431021 addu r2,r2,r3 Job ID * 3
+
  0005c3ac: 0c017991 jal 0x0005e644          |{{f/jal|Data_Nullifying|Data_Nullifying}} Nullify data from Unit 0x3c (Wp1) to 0x46 (LH shield M-Ev)
0005c3c4: 3c038006 lui r3,0x8006
+
  0005c3b0: 3405000b ori r5,r0,0x000b        |{{f/std|<nowiki>r5 = 0x0b</nowiki>}}
  0005c3c8: 8c636194 lw r3,0x6194(r3) Load Job Data Pointer
+
  0005c3b4: 92030003 lbu r3,0x0003(r16)       |{{f/load|<nowiki>r3 = Unit's Job ID</nowiki>}}
  0005c3cc: 00021100 sll r2,r2,0x04 Job ID * 48
+
  0005c3b8: 00000000 nop                     |
  0005c3d0: 00431021 addu r2,r2,r3 Job Data Pointer * ID + 48
+
  0005c3bc: 00031040 sll r2,r3,0x01           |{{f/std|Job ID * 2}}
  0005c3d4: 90430019 lbu r3,0x0019(r2) Load Job's C-EV
+
  0005c3c0: 00431021 addu r2,r2,r3           |{{f/std|Job ID * 3}}
  0005c3d8: 92020006 lbu r2,0x0006(r16) Load Unit's Gender Byte
+
  0005c3c4: 3c038006 lui r3,0x8006           |
  0005c3dc: 00000000 nop
+
  0005c3c8: 8c636194 lw r3,0x6194(r3)        |{{f/adr|<nowiki>r3 = Job Data Pointer</nowiki>}}
  0005c3e0: 30420020 andi r2,r2,0x0020
+
  0005c3cc: 00021100 sll r2,r2,0x04          |{{f/std|<nowiki>r2 = Unit's Job ID * 0x30 (Job Offset in Job data)</nowiki>}}
  0005c3e4: 14400073 bne r2,r0,0x 0005c5b4 Branch if Unit is a Monster
+
  0005c3d0: 00431021 addu r2,r2,r3            |{{f/adr|<nowiki>r2 = Unit's Job data pointer</nowiki>}}
0005c3e8: a2030043 sb r3,0x0043(r16) Store Job's C-EV into Unit's
+
  0005c3d4: 90430019 lbu r3,0x0019(r2)        |{{f/load|<nowiki>r3 = Job 's C-Ev</nowiki>}}
  0005c3ec: 9202001c lbu r2,0x001c(r16) Load Unit's Accessory ID
+
  0005c3d8: 92020006 lbu r2,0x0006(r16)      |{{f/load|<nowiki>r2 = Unit's Gender</nowiki>}}
0005c3f0: 00000000 nop
+
  0005c3dc: 00000000 nop                     |
  0005c3f4: 00021840 sll r3,r2,0x01 ID * 2
+
  0005c3e0: 30420020 andi r2,r2,0x0020        |{{f/std|<nowiki>r2 = 0x20 If Unit is a monster</nowiki>}}
  0005c3f8: 00621821 addu r3,r3,r2 ID * 3
+
  0005c3e4: 14400073 bne r2,r0,0x0005c5b4    {{f/Cond|If Unit is not a monster}} /Else Branch to  {{f/loc|END}}
0005c3fc: 00031880 sll r3,r3,0x02 ID * 12 
+
  0005c3e8: a2030043 sb r3,0x0043(r16)        |{{f/store|Store Job C-Ev in Unit C-ev}}
  0005c400: 3c018006 lui r1,0x8006            
+
0005c3ec: 9202001c lbu r2,0x001c(r16)           |{{f/load|<nowiki>r2 = Unit's Accessory ID</nowiki>}}
  0005c404: 00230821 addu r1,r1,r3
+
0005c3f0: 00000000 nop                          |
  0005c408: 90222ebb lbu r2,0x2ebb(r1) Load Accessory's Item Type (*see notes)
+
  0005c3f4: 00021840 sll r3,r2,0x01              |{{f/std|Accessory ID * 2}}
  0005c40c: 3c048006 lui r4,0x8006
+
  0005c3f8: 00621821 addu r3,r3,r2                |{{f/std|Accessory ID * 3}}
  0005c410: 24842eb8 addiu r4,r4,0x2eb8 r4 = Item Data Pointer
+
  0005c3fc: 00031880 sll r3,r3,0x02              |{{f/std|<nowiki>Accessory ID * 0x0c (Item data size = Item offset in Item data table)</nowiki>}}
  0005c414: 30420008 andi r2,r2,0x0008
+
  0005c400: 3c018006 lui r1,0x8006                |
0005c418: 1040000e beq r2,r0,0x 0005c454 Branch if Accessory isn't an Accessory
+
0005c404: 00230821 addu r1,r1,r3               |{{f/std|<nowiki>r1 = 0x80060000 + Unit's Accessory offset</nowiki>}}
  0005c41c: 00000000 nop
+
  0005c408: 90222ebb lbu r2,0x2ebb(r1)            |{{f/load|<nowiki>r2 = Unit's Accessory Item Type flags</nowiki>}}
  0005c420: 3c018006 lui r1,0x8006
+
  0005c40c: 3c048006 lui r4,0x8006                |
  0005c424: 00230821 addu r1,r1,r3
+
  0005c410: 24842eb8 addiu r4,r4,0x2eb8          |{{f/std|<nowiki>r4 = Start of Item data Table</nowiki>}}
  0005c428: 90222ebc lbu r2,0x2ebc(r1) Load Accessory's Second Table ID
+
  0005c414: 30420008 andi r2,r2,0x0008            |{{f/std|<nowiki>r2 = 0x08 if Unit's Accessory has his Accessory flag checked</nowiki>}}
  0005c42c: 3c038006 lui r3,0x8006
+
  0005c418: 1040000e beq r2,r0,0x0005c454        {{f/Cond|If Unit's Accessory is valid (Second Table will be valid)}} /Else Skip Accessory section
  0005c430: 24633f58 addiu r3,r3,0x3f58 r3 = Accessory Secondary Data Pointer
+
  0005c41c: 00000000 nop                             |{{f/std|}}
  0005c434: 00021040 sll r2,r2,0x01 ID * 2
+
  0005c420: 3c018006 lui r1,0x8006                    |{{f/std|}}
  0005c438: 00431021 addu r2,r2,r3
+
  0005c424: 00230821 addu r1,r1,r3                   |{{f/std|<nowiki>r1 = 0x80060000 + Unit's Accessory offset</nowiki>}}
  0005c43c: 90430000 lbu r3,0x0000(r2) Load Accessory's P-EV
+
  0005c428: 90222ebc lbu r2,0x2ebc(r1)                |{{f/load|<nowiki>r2 = Unit's Accessory Second Table ID</nowiki>}}
  0005c440: 00000000 nop
+
  0005c42c: 3c038006 lui r3,0x8006                    |
  0005c444: a2030040 sb r3,0x0040(r16) Store Accessory's P-EV into Unit's
+
0005c430: 24633f58 addiu r3,r3,0x3f58              |{{f/std|<nowiki>r3 = 0x80063f58</nowiki>}}
  0005c448: 90420001 lbu r2,0x0001(r2) Load Accessory's M-EV
+
  0005c434: 00021040 sll r2,r2,0x01                  |{{f/std|r2 Unit's Accessory Second Table ID *2}}
  0005c44c: 00000000 nop
+
  0005c438: 00431021 addu r2,r2,r3                    |{{f/std|<nowiki>r3 = Unit's Accessory Second Table data pointer</nowiki>}}
0005c450: a2020044 sb r2,0x0044(r16) Store Accessory's M-EV into Unit's
+
  0005c43c: 90430000 lbu r3,0x0000(r2)                |{{f/load|<nowiki>r2 = Unit's Accessory P-Ev</nowiki>}}
0005c454: 9202001e lbu r2,0x001e(r16) Load Unit's RH Shield
+
  0005c440: 00000000 nop                             |
  0005c458: 00000000 nop
+
  0005c444: a2030040 sb r3,0x0040(r16)                |{{f/store|Store Unit's Accessory P-Ev in Unit's 0x40 (Accessory P-Ev)}}
  0005c45c: 00021840 sll r3,r2,0x01 ID * 2
+
  0005c448: 90420001 lbu r2,0x0001(r2)               |{{f/load|<nowiki>r2 = Unit's Accessory M-Ev</nowiki>}}
  0005c460: 00621821 addu r3,r3,r2 ID * 3
+
  0005c44c: 00000000 nop                              |
  0005c464: 00031880 sll r3,r3,0x02 ID * 12
+
  0005c450: a2020044 sb r2,0x0044(r16)                |{{f/store|Store Unit's Accessory M-Ev in Unit's 0x44 (Accessory M-Ev)}}
  0005c468: 00641021 addu r2,r3,r4
+
  0005c454: 9202001e lbu r2,0x001e(r16)          |{{f/load|<nowiki>r2 = Unit's Right Hand's Shield ID</nowiki>}}
  0005c46c: 90420003 lbu r2,0x0003(r2) Load Shield's Item Type
+
  0005c458: 00000000 nop                         |
  0005c470: 00000000 nop
+
  0005c45c: 00021840 sll r3,r2,0x01              |{{f/std|Right Hand's Shield ID * 2}}
0005c474: 30420040 andi r2,r2,0x0040
+
  0005c460: 00621821 addu r3,r3,r2                |{{f/std|Right Hand's Shield ID * 3}}
  0005c478: 1040000e beq r2,r0,0x 0005c4b4 Branch if Shield isn't a Shield
+
  0005c464: 00031880 sll r3,r3,0x02              |{{f/std|Right Hand's Shield ID * 0x0c}}
  0005c47c: 00000000 nop
+
  0005c468: 00641021 addu r2,r3,r4                |{{f/adr|<nowiki>r2 = Start of Unit's Right Hand's Shield data pointer</nowiki>}}
  0005c480: 3c018006 lui r1,0x8006
+
  0005c46c: 90420003 lbu r2,0x0003(r2)           |{{f/load|<nowiki>r2 = Unit's Right Hand's Shield Type flag</nowiki>}}
  0005c484: 00230821 addu r1,r1,r3
+
  0005c470: 00000000 nop                         |
0005c488: 90222ebc lbu r2,0x2ebc(r1) Load Shield's Second Table ID
+
  0005c474: 30420040 andi r2,r2,0x0040            |{{f/std|<nowiki>r2 = 0x40 If Unit's Right Hand's Shield is a shield</nowiki>}}
  0005c48c: 3c038006 lui r3,0x8006
+
  0005c478: 1040000e beq r2,r0,0x0005c4b4        {{f/Cond|If Right Hand's Shield is a shield}} /Else Avoid Right Hand's Shield Section
  0005c490: 24633eb8 addiu r3,r3,0x3eb8
+
  0005c47c: 00000000 nop                              |{{f/std|}}
0005c494: 00021040 sll r2,r2,0x01 ID * 2
+
  0005c480: 3c018006 lui r1,0x8006                    |{{f/std|}}
  0005c498: 00431821 addu r3,r2,r3
+
0005c484: 00230821 addu r1,r1,r3                   |{{f/std|<nowiki>r1 = 0x80060000 + Unit's Right Hand's Shield offset</nowiki>}}
0005c49c: 90620000 lbu r2,0x0000(r3) Load Shield's P-EV
+
  0005c488: 90222ebc lbu r2,0x2ebc(r1)                |{{f/load|<nowiki>r2 = Unit's Right Hand's Shield Second Table ID</nowiki>}}
  0005c4a0: 00000000 nop
+
  0005c48c: 3c038006 lui r3,0x8006                    |
  0005c4a4: a2020041 sb r2,0x0041(r16) Store RH Shield's P-EV into Unit's
+
  0005c490: 24633eb8 addiu r3,r3,0x3eb8              |{{f/std|<nowiki>r3 = 0x80063f58</nowiki>}}
  0005c4a8: 90620001 lbu r2,0x0001(r3) Load Shield's M-EV
+
  0005c494: 00021040 sll r2,r2,0x01                  |{{f/std|<nowiki>r2 = Right Hand's Shield Second Table ID *2</nowiki>}}
  0005c4ac: 00000000 nop
+
  0005c498: 00431821 addu r3,r2,r3                   |{{f/adr|<nowiki>r3 = Right Hand's Shield Second Table data pointer</nowiki>}}
  0005c4b0: a2020045 sb r2,0x0045(r16) Store RH Shield's M-EV into Unit's
+
  0005c49c: 90620000 lbu r2,0x0000(r3)               |{{f/load|<nowiki>r2 = Right Hand's Shield P-Ev</nowiki>}}
  0005c4b4: 92020020 lbu r2,0x0020(r16) Load Unit's LH Shield
+
  0005c4a0: 00000000 nop                              |
  0005c4b8: 00000000 nop
+
  0005c4a4: a2020041 sb r2,0x0041(r16)                |{{f/store|Store Right Hand's Shield P-Ev in Unit Data}}
  0005c4bc: 00021840 sll r3,r2,0x01 ID * 2
+
  0005c4a8: 90620001 lbu r2,0x0001(r3)                |{{f/load|<nowiki>r2 = Right Hand's Shield M-Ev</nowiki>}}
  0005c4c0: 00621821 addu r3,r3,r2 ID * 3
+
  0005c4ac: 00000000 nop                              |
  0005c4c4: 00031880 sll r3,r3,0x02 ID * 12
+
  0005c4b0: a2020045 sb r2,0x0045(r16)               |{{f/store|Store Right Hand's Shield M-Ev in Unit Data}}
  0005c4c8: 00641021 addu r2,r3,r4
+
  0005c4b4: 92020020 lbu r2,0x0020(r16)           |{{f/load|<nowiki>r2 = Unit's LH shield</nowiki>}}
  0005c4cc: 90420003 lbu r2,0x0003(r2) Load Shield's Item Type
+
0005c4b8: 00000000 nop                          |
  0005c4d0: 00000000 nop
+
  0005c4bc: 00021840 sll r3,r2,0x01              |{{f/std|Leftt Hand's Shield ID * 2}}
  0005c4d4: 30420040 andi r2,r2,0x0040
+
  0005c4c0: 00621821 addu r3,r3,r2                |{{f/std|Leftt Hand's Shield ID * 3}}
  0005c4d8: 1040000e beq r2,r0,0x 0005c514 Branch if Shield isn't a Shield
+
  0005c4c4: 00031880 sll r3,r3,0x02              |{{f/std|Leftt Hand's Shield ID * 0x0c}}
  0005c4dc: 00000000 nop
+
  0005c4c8: 00641021 addu r2,r3,r4                |{{f/adr|<nowiki>r2 = Start of Unit's Leftt Hand's Shield data pointer</nowiki>}}
0005c4e0: 3c018006 lui r1,0x8006
+
0005c4cc: 90420003 lbu r2,0x0003(r2)            |{{f/load|<nowiki>r2 = Unit's Leftt Hand's Shield Type flag</nowiki>}}
0005c4e4: 00230821 addu r1,r1,r3
+
  0005c4d0: 00000000 nop                         |
  0005c4e8: 90222ebc lbu r2,0x2ebc(r1) Load Shield's Second Table ID
+
  0005c4d4: 30420040 andi r2,r2,0x0040            |{{f/std|<nowiki>r2 = 0x40 If Unit's Leftt Hand's Shield is a shield</nowiki>}}
  0005c4ec: 3c038006 lui r3,0x8006
+
  0005c4d8: 1040000e beq r2,r0,0x0005c514        {{f/Cond|If Leftt Hand's Shield is a shield}} /Else Avoid Leftt Hand's Shield Section
  0005c4f0: 24633eb8 addiu r3,r3,0x3eb8
+
  0005c4dc: 00000000 nop                              |{{f/std|}}
  0005c4f4: 00021040 sll r2,r2,0x01 ID * 2
+
  0005c4e0: 3c018006 lui r1,0x8006                    |{{f/std|}}
  0005c4f8: 00431821 addu r3,r2,r3
+
0005c4e4: 00230821 addu r1,r1,r3                    |{{f/std|<nowiki>r1 = 0x80060000 + Unit's Leftt Hand's Shield offset</nowiki>}}
  0005c4fc: 90620000 lbu r2,0x0000(r3) Load Shield's P-EV
+
  0005c4e8: 90222ebc lbu r2,0x2ebc(r1)                |{{f/load|<nowiki>r2 = Unit's Leftt Hand's Shield Second Table ID</nowiki>}}
  0005c500: 00000000 nop
+
  0005c4ec: 3c038006 lui r3,0x8006                    |
0005c504: a2020042 sb r2,0x0042(r16) Store LH Shield's P-EV into Unit's
+
  0005c4f0: 24633eb8 addiu r3,r3,0x3eb8              |{{f/std|<nowiki>r3 = 0x80063f58</nowiki>}}
  0005c508: 90620001 lbu r2,0x0001(r3) Load Shield's M-EV
+
  0005c4f4: 00021040 sll r2,r2,0x01                  |{{f/std|<nowiki>r2 = Leftt Hand's Shield Second Table ID *2</nowiki>}}
  0005c50c: 00000000 nop
+
  0005c4f8: 00431821 addu r3,r2,r3                    |{{f/adr|<nowiki>r3 = Leftt Hand's Shield Second Table data pointer</nowiki>}}
  0005c510: a2020046 sb r2,0x0046(r16) Store LH Shield's M-EV into Unit's
+
  0005c4fc: 90620000 lbu r2,0x0000(r3)                |{{f/load|<nowiki>r2 = Leftt Hand's Shield P-Ev</nowiki>}}
  0005c514: 9203001d lbu r3,0x001d(r16) Load Unit's RH Weapon
+
  0005c500: 00000000 nop                              |
  0005c518: 00000000 nop
+
  0005c504: a2020042 sb r2,0x0042(r16)               |{{f/store|Store Leftt Hand's Shield P-Ev in Unit Data}}
  0005c51c: 00031040 sll r2,r3,0x01 ID * 2
+
  0005c508: 90620001 lbu r2,0x0001(r3)               |{{f/load|<nowiki>r2 = Leftt Hand's Shield M-Ev</nowiki>}}
  0005c520: 00431021 addu r2,r2,r3 ID * 3
+
  0005c50c: 00000000 nop                             |
  0005c524: 00021080 sll r2,r2,0x02 ID * 12
+
  0005c510: a2020046 sb r2,0x0046(r16)               |{{f/store|Store Leftt Hand's Shield M-Ev in Unit Data}}
  0005c528: 00441021 addu r2,r2,r4
+
  0005c514: 9203001d lbu r3,0x001d(r16)           |{{f/load|<nowiki>r3 = Unit's Right Hand's Weapon</nowiki>}}
  0005c52c: 90420003 lbu r2,0x0003(r2) Load Weapon's Item Type
+
  0005c518: 00000000 nop                         |
  0005c530: 00000000 nop
+
  0005c51c: 00031040 sll r2,r3,0x01               |{{f/std|Right Hand's Weapon ID * 2}}
  0005c534: 30420080 andi r2,r2,0x0080
+
  0005c520: 00431021 addu r2,r2,r3               |{{f/std|Right Hand's Weapon ID * 3}}
  0005c538: 1040000a beq r2,r0,0x 0005c564 Branch if Weapon isn't a Weapon
+
  0005c524: 00021080 sll r2,r2,0x02               |{{f/std|Right Hand's Weapon ID * 0x0c}}
  0005c53c: 000318c0 sll r3,r3,0x03 Original ID * 8
+
  0005c528: 00441021 addu r2,r2,r4               |{{f/adr|<nowiki>r2 = Start of Unit's Right Hand's Weapon data pointer</nowiki>}}
0005c540: 3c028006 lui r2,0x8006
+
  0005c52c: 90420003 lbu r2,0x0003(r2)           |{{f/load|<nowiki>r2 = Unit's Right Hand's Weapon Type flag</nowiki>}}
  0005c544: 24423ab8 addiu r2,r2,0x3ab8
+
  0005c530: 00000000 nop                         |
  0005c548: 00621821 addu r3,r3,r2
+
  0005c534: 30420080 andi r2,r2,0x0080           |{{f/std|<nowiki>r2 = 0x80 If Unit's Right Hand's Weapon is a Weapon</nowiki>}}
  0005c54c: 90620004 lbu r2,0x0004(r3) Load Weapon's WP
+
0005c538: 1040000a beq r2,r0,0x0005c564        {{f/Cond|If Right Hand's Weapon is a Weapon}} /Else Avoid Right Hand's Weapon Section
  0005c550: 00000000 nop
+
  0005c53c: 000318c0 sll r3,r3,0x03                   |{{f/std|<nowiki>r3 = Right Hand's Weapon ID * 0x08</nowiki>}}
0005c554: a202003c sb r2,0x003c(r16) Store RH Weapon's WP into Unit's
+
  0005c540: 3c028006 lui r2,0x8006                   |{{f/std|}}
0005c558: 9062 0005 lbu r2,0x 0005(r3) Load Weapon's W-EV
+
  0005c544: 24423ab8 addiu r2,r2,0x3ab8               |{{f/std|<nowiki>r2 = 0x80063ab8</nowiki>}} {{f/std|Weapon secondary data Table start}}
  0005c55c: 00000000 nop
+
  0005c548: 00621821 addu r3,r3,r2                   |{{f/adr|<nowiki>r3 = Unit's Right Hand's Weapon Secondary data pointer</nowiki>}}
  0005c560: a202003e sb r2,0x003e(r16) Store RH Weapon's W-EV into Unit's
+
  0005c54c: 90620004 lbu r2,0x0004(r3)               |{{f/load|<nowiki>r2 = Right Hand's Weapon Weapon Power</nowiki>}}
  0005c564: 9203001f lbu r3,0x001f(r16) Load Unit's LH Weapon
+
  0005c550: 00000000 nop                             |
  0005c568: 00000000 nop
+
  0005c554: a202003c sb r2,0x003c(r16)               |{{f/store|Store Right Hand's Weapon Power in Unit Data}}
  0005c56c: 00031040 sll r2,r3,0x01 ID * 2
+
  0005c558: 90620005 lbu r2,0x0005(r3)               |{{f/load|<nowiki>r2 = Right Hand's Weapon W-Ev</nowiki>}}
  0005c570: 00431021 addu r2,r2,r3 ID * 3
+
  0005c55c: 00000000 nop                             |
  0005c574: 00021080 sll r2,r2,0x02 ID * 12
+
  0005c560: a202003e sb r2,0x003e(r16)               |{{f/store|Store Right Hand's Weapon W-Ev in Unit Data}}
  0005c578: 00441021 addu r2,r2,r4
+
  0005c564: 9203001f lbu r3,0x001f(r16)           |{{f/load|<nowiki>r3 = Unit's Left Hand's Weapon</nowiki>}}
  0005c57c: 90420003 lbu r2,0x0003(r2) Load Weapon's Item Type
+
0005c568: 00000000 nop                          |
  0005c580: 00000000 nop
+
0005c56c: 00031040 sll r2,r3,0x01              |{{f/std|Left Hand's Weapon ID * 2}}
  0005c584: 30420080 andi r2,r2,0x0080
+
0005c570: 00431021 addu r2,r2,r3                |{{f/std|Left Hand's Weapon ID * 3}}
0005c588: 1040000a beq r2,r0,0x 0005c5b4 Branch if Weapon isn't a Weapon
+
0005c574: 00021080 sll r2,r2,0x02              |{{f/std|Left Hand's Weapon ID * 0x0c}}
  0005c58c: 000318c0 sll r3,r3,0x03 Original ID * 8
+
0005c578: 00441021 addu r2,r2,r4                |{{f/adr|<nowiki>r2 = Start of Unit's Left Hand's Weapon data pointer</nowiki>}}
  0005c590: 3c028006 lui r2,0x8006
+
0005c57c: 90420003 lbu r2,0x0003(r2)            |{{f/load|<nowiki>r2 = Unit's Left Hand's Weapon Type flag</nowiki>}}
  0005c594: 24423ab8 addiu r2,r2,0x3ab8
+
0005c580: 00000000 nop                          |
  0005c598: 00621821 addu r3,r3,r2
+
0005c584: 30420080 andi r2,r2,0x0080            |{{f/std|<nowiki>r2 = 0x80 If Unit's Left Hand's Weapon is a Weapon</nowiki>}}
  0005c59c: 90620004 lbu r2,0x0004(r3) Load Weapon's WP
+
0005c588: 1040000a beq r2,r0,0x0005c5b4        {{f/Cond|If Left Hand's Weapon is a Weapon}} /Else Avoid Left Hand's Weapon Section
  0005c5a0: 00000000 nop
+
0005c58c: 000318c0 sll r3,r3,0x03                  |{{f/std|<nowiki>r3 = Left Hand's Weapon ID * 0x08</nowiki>}}
  0005c5a4: a202003d sb r2,0x003d(r16) Store LH Weapon's WP into Unit's
+
0005c590: 3c028006 lui r2,0x8006                    |{{f/std|}}
  0005c5a8: 9062 0005 lbu r2,0x 0005(r3) Load Weapon's W-EV
+
0005c594: 24423ab8 addiu r2,r2,0x3ab8              |{{f/std|<nowiki>r2 = 0x80063ab8</nowiki>}} {{f/std|Weapon secondary data Table start}}
  0005c5ac: 00000000 nop
+
0005c598: 00621821 addu r3,r3,r2                    |{{f/adr|<nowiki>r3 = Unit's Left Hand's Weapon Secondary data pointer</nowiki>}}
  0005c5b0: a202003f sb r2,0x003f(r16) Store LH Weapon's W-EV
+
0005c59c: 90620004 lbu r2,0x0004(r3)                |{{f/load|<nowiki>r2 = Left Hand's Weapon Weapon Power</nowiki>}}
  0005c5b4: 8fbf0014 lw r31,0x0014(r29)
+
0005c5a0: 00000000 nop                              |
0005c5b8: 8fb00010 lw r16,0x0010(r29)
+
0005c5a4: a202003d sb r2,0x003d(r16)                |{{f/store|Store Left Hand's Weapon Power in Unit Data}}
0005c5bc: 27bd0018 addiu r29,r29,0x0018
+
0005c5a8: 90620005 lbu r2,0x0005(r3)                |{{f/load|<nowiki>r2 = Left Hand's Weapon W-Ev</nowiki>}}
  0005c5c0: 03e00008 jr r31
+
0005c5ac: 00000000 nop                              |
  0005c5c4: 00000000 nop
+
0005c5b0: a202003f sb r2,0x003f(r16)                |{{f/store|Store Left Hand's Weapon W-Ev in Unit Data}}
 
+
0005c5b4: 8fbf0014 lw r31,0x0014(r29)          '''END'''
 
+
0005c5b8: 8fb00010 lw r16,0x0010(r29)             
== Return Locations ==
+
0005c5bc: 27bd0018 addiu r29,r29,0x0018           
 +
  0005c5c0: 03e00008 jr r31                          
 +
  0005c5c4: 00000000 nop                            
  
 +
=== Return Locations ===
 +
'''SCUS_942.21'''
 
  0005ab0c: [[Equipment/Move/Jump +X/Name Storing/Generation]]
 
  0005ab0c: [[Equipment/Move/Jump +X/Name Storing/Generation]]
 
  0005d704: [[Status Setting/Checking + Equip/R/S/M Stats]]
 
  0005d704: [[Status Setting/Checking + Equip/R/S/M Stats]]
  
  
== Notes ==
+
=== Notes ===
 
Notes : [[Data/Table_Locations#Item|The Item Data/Table]] start at 80062eb8 Each items are 12 bytes long So loading 0x8006YYYY (YYYY = Item ID * 12) + 2ebb = Loading offset 0x03 (2ebb - 2eb8) of this item
 
Notes : [[Data/Table_Locations#Item|The Item Data/Table]] start at 80062eb8 Each items are 12 bytes long So loading 0x8006YYYY (YYYY = Item ID * 12) + 2ebb = Loading offset 0x03 (2ebb - 2eb8) of this item

Latest revision as of 20:45, 21 March 2022

Equipment Stat Setting

Parameters : r4 = Unit Data pointer

This routine set Unit's 0x3c to 0x46 data based on Equipped item's data (Equipped Item ID come from Unit 0x1c to 0x20)
----------------------------------------------------------------------------------------------------------------
0005c398: 27bdffe8 addiu r29,r29,-0x0018    |
0005c39c: afb00010 sw r16,0x0010(r29)       |
0005c3a0: 00808021 addu r16,r4,r0           |r16 = Unit data pointer
0005c3a4: 2604003c addiu r4,r16,0x003c      |r4 = Unit's WP1 data pointer
0005c3a8: afbf0014 sw r31,0x0014(r29)       |
0005c3ac: 0c017991 jal 0x0005e644           |-->Data_Nullifying Nullify data from Unit 0x3c (Wp1) to 0x46 (LH shield M-Ev)
0005c3b0: 3405000b ori r5,r0,0x000b         |r5 = 0x0b
0005c3b4: 92030003 lbu r3,0x0003(r16)       |r3 = 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)         |r3 = Job Data Pointer
0005c3cc: 00021100 sll r2,r2,0x04           |r2 = Unit's Job ID * 0x30 (Job Offset in Job data)
0005c3d0: 00431021 addu r2,r2,r3            |r2 = Unit's Job data pointer
0005c3d4: 90430019 lbu r3,0x0019(r2)        |r3 = Job 's C-Ev
0005c3d8: 92020006 lbu r2,0x0006(r16)       |r2 = Unit's Gender
0005c3dc: 00000000 nop                      |
0005c3e0: 30420020 andi r2,r2,0x0020        |r2 = 0x20 If Unit is a monster
0005c3e4: 14400073 bne r2,r0,0x0005c5b4     #If Unit is not a monster /Else Branch to  END
0005c3e8: a2030043 sb r3,0x0043(r16)        |Store Job C-Ev in Unit C-ev
0005c3ec: 9202001c lbu r2,0x001c(r16)           |r2 = Unit's Accessory ID
0005c3f0: 00000000 nop                          |
0005c3f4: 00021840 sll r3,r2,0x01               |Accessory ID * 2
0005c3f8: 00621821 addu r3,r3,r2                |Accessory ID * 3
0005c3fc: 00031880 sll r3,r3,0x02               |Accessory ID * 0x0c (Item data size = Item offset in Item data table)
0005c400: 3c018006 lui r1,0x8006                |
0005c404: 00230821 addu r1,r1,r3                |r1 = 0x80060000 + Unit's Accessory offset
0005c408: 90222ebb lbu r2,0x2ebb(r1)            |r2 = Unit's Accessory Item Type flags
0005c40c: 3c048006 lui r4,0x8006                |
0005c410: 24842eb8 addiu r4,r4,0x2eb8           |r4 = Start of Item data Table
0005c414: 30420008 andi r2,r2,0x0008            |r2 = 0x08 if Unit's Accessory has his Accessory flag checked
0005c418: 1040000e beq r2,r0,0x0005c454         #If Unit's Accessory is valid (Second Table will be valid) /Else Skip Accessory section
0005c41c: 00000000 nop                              |
0005c420: 3c018006 lui r1,0x8006                    |
0005c424: 00230821 addu r1,r1,r3                    |r1 = 0x80060000 + Unit's Accessory offset
0005c428: 90222ebc lbu r2,0x2ebc(r1)                |r2 = Unit's Accessory Second Table ID
0005c42c: 3c038006 lui r3,0x8006                    |
0005c430: 24633f58 addiu r3,r3,0x3f58               |r3 = 0x80063f58
0005c434: 00021040 sll r2,r2,0x01                   |r2 Unit's Accessory Second Table ID *2
0005c438: 00431021 addu r2,r2,r3                    |r3 = Unit's Accessory Second Table data pointer
0005c43c: 90430000 lbu r3,0x0000(r2)                |r2 = Unit's Accessory P-Ev
0005c440: 00000000 nop                              |
0005c444: a2030040 sb r3,0x0040(r16)                |Store Unit's Accessory P-Ev in Unit's 0x40 (Accessory P-Ev)
0005c448: 90420001 lbu r2,0x0001(r2)                |r2 = Unit's Accessory M-Ev
0005c44c: 00000000 nop                              |
0005c450: a2020044 sb r2,0x0044(r16)                |Store Unit's Accessory M-Ev in Unit's 0x44 (Accessory M-Ev)
0005c454: 9202001e lbu r2,0x001e(r16)           |r2 = Unit's Right Hand's Shield ID
0005c458: 00000000 nop                          |
0005c45c: 00021840 sll r3,r2,0x01               |Right Hand's Shield ID * 2
0005c460: 00621821 addu r3,r3,r2                |Right Hand's Shield ID * 3
0005c464: 00031880 sll r3,r3,0x02               |Right Hand's Shield ID * 0x0c
0005c468: 00641021 addu r2,r3,r4                |r2 = Start of Unit's Right Hand's Shield data pointer
0005c46c: 90420003 lbu r2,0x0003(r2)            |r2 = Unit's Right Hand's Shield Type flag
0005c470: 00000000 nop                          |
0005c474: 30420040 andi r2,r2,0x0040            |r2 = 0x40 If Unit's Right Hand's Shield is a shield
0005c478: 1040000e beq r2,r0,0x0005c4b4         #If Right Hand's Shield is a shield /Else Avoid Right Hand's Shield Section
0005c47c: 00000000 nop                              |
0005c480: 3c018006 lui r1,0x8006                    |
0005c484: 00230821 addu r1,r1,r3                    |r1 = 0x80060000 + Unit's Right Hand's Shield offset
0005c488: 90222ebc lbu r2,0x2ebc(r1)                |r2 = Unit's Right Hand's Shield Second Table ID
0005c48c: 3c038006 lui r3,0x8006                    |
0005c490: 24633eb8 addiu r3,r3,0x3eb8               |r3 = 0x80063f58
0005c494: 00021040 sll r2,r2,0x01                   |r2 = Right Hand's Shield Second Table ID *2
0005c498: 00431821 addu r3,r2,r3                    |r3 = Right Hand's Shield Second Table data pointer
0005c49c: 90620000 lbu r2,0x0000(r3)                |r2 = Right Hand's Shield P-Ev
0005c4a0: 00000000 nop                              |
0005c4a4: a2020041 sb r2,0x0041(r16)                |Store Right Hand's Shield P-Ev in Unit Data
0005c4a8: 90620001 lbu r2,0x0001(r3)                |r2 = Right Hand's Shield M-Ev
0005c4ac: 00000000 nop                              |
0005c4b0: a2020045 sb r2,0x0045(r16)                |Store Right Hand's Shield M-Ev in Unit Data
0005c4b4: 92020020 lbu r2,0x0020(r16)           |r2 = Unit's LH shield
0005c4b8: 00000000 nop                          |
0005c4bc: 00021840 sll r3,r2,0x01               |Leftt Hand's Shield ID * 2
0005c4c0: 00621821 addu r3,r3,r2                |Leftt Hand's Shield ID * 3
0005c4c4: 00031880 sll r3,r3,0x02               |Leftt Hand's Shield ID * 0x0c
0005c4c8: 00641021 addu r2,r3,r4                |r2 = Start of Unit's Leftt Hand's Shield data pointer
0005c4cc: 90420003 lbu r2,0x0003(r2)            |r2 = Unit's Leftt Hand's Shield Type flag
0005c4d0: 00000000 nop                          |
0005c4d4: 30420040 andi r2,r2,0x0040            |r2 = 0x40 If Unit's Leftt Hand's Shield is a shield
0005c4d8: 1040000e beq r2,r0,0x0005c514         #If Leftt Hand's Shield is a shield /Else Avoid Leftt Hand's Shield Section
0005c4dc: 00000000 nop                              |
0005c4e0: 3c018006 lui r1,0x8006                    |
0005c4e4: 00230821 addu r1,r1,r3                    |r1 = 0x80060000 + Unit's Leftt Hand's Shield offset
0005c4e8: 90222ebc lbu r2,0x2ebc(r1)                |r2 = Unit's Leftt Hand's Shield Second Table ID
0005c4ec: 3c038006 lui r3,0x8006                    |
0005c4f0: 24633eb8 addiu r3,r3,0x3eb8               |r3 = 0x80063f58
0005c4f4: 00021040 sll r2,r2,0x01                   |r2 = Leftt Hand's Shield Second Table ID *2
0005c4f8: 00431821 addu r3,r2,r3                    |r3 = Leftt Hand's Shield Second Table data pointer
0005c4fc: 90620000 lbu r2,0x0000(r3)                |r2 = Leftt Hand's Shield P-Ev
0005c500: 00000000 nop                              |
0005c504: a2020042 sb r2,0x0042(r16)                |Store Leftt Hand's Shield P-Ev in Unit Data
0005c508: 90620001 lbu r2,0x0001(r3)                |r2 = Leftt Hand's Shield M-Ev
0005c50c: 00000000 nop                              |
0005c510: a2020046 sb r2,0x0046(r16)                |Store Leftt Hand's Shield M-Ev in Unit Data
0005c514: 9203001d lbu r3,0x001d(r16)           |r3 = Unit's Right Hand's Weapon
0005c518: 00000000 nop                          |
0005c51c: 00031040 sll r2,r3,0x01               |Right Hand's Weapon ID * 2
0005c520: 00431021 addu r2,r2,r3                |Right Hand's Weapon ID * 3
0005c524: 00021080 sll r2,r2,0x02               |Right Hand's Weapon ID * 0x0c
0005c528: 00441021 addu r2,r2,r4                |r2 = Start of Unit's Right Hand's Weapon data pointer
0005c52c: 90420003 lbu r2,0x0003(r2)            |r2 = Unit's Right Hand's Weapon Type flag
0005c530: 00000000 nop                          |
0005c534: 30420080 andi r2,r2,0x0080            |r2 = 0x80 If Unit's Right Hand's Weapon is a Weapon
0005c538: 1040000a beq r2,r0,0x0005c564         #If Right Hand's Weapon is a Weapon /Else Avoid Right Hand's Weapon Section
0005c53c: 000318c0 sll r3,r3,0x03                   |r3 = Right Hand's Weapon ID * 0x08
0005c540: 3c028006 lui r2,0x8006                    |
0005c544: 24423ab8 addiu r2,r2,0x3ab8               |r2 = 0x80063ab8 Weapon secondary data Table start
0005c548: 00621821 addu r3,r3,r2                    |r3 = Unit's Right Hand's Weapon Secondary data pointer
0005c54c: 90620004 lbu r2,0x0004(r3)                |r2 = Right Hand's Weapon Weapon Power
0005c550: 00000000 nop                              |
0005c554: a202003c sb r2,0x003c(r16)                |Store Right Hand's Weapon Power in Unit Data
0005c558: 90620005 lbu r2,0x0005(r3)                |r2 = Right Hand's Weapon W-Ev
0005c55c: 00000000 nop                              |
0005c560: a202003e sb r2,0x003e(r16)                |Store Right Hand's Weapon W-Ev in Unit Data
0005c564: 9203001f lbu r3,0x001f(r16)           |r3 = Unit's Left Hand's Weapon
0005c568: 00000000 nop                          |
0005c56c: 00031040 sll r2,r3,0x01               |Left Hand's Weapon ID * 2
0005c570: 00431021 addu r2,r2,r3                |Left Hand's Weapon ID * 3
0005c574: 00021080 sll r2,r2,0x02               |Left Hand's Weapon ID * 0x0c
0005c578: 00441021 addu r2,r2,r4                |r2 = Start of Unit's Left Hand's Weapon data pointer
0005c57c: 90420003 lbu r2,0x0003(r2)            |r2 = Unit's Left Hand's Weapon Type flag
0005c580: 00000000 nop                          |
0005c584: 30420080 andi r2,r2,0x0080            |r2 = 0x80 If Unit's Left Hand's Weapon is a Weapon
0005c588: 1040000a beq r2,r0,0x0005c5b4         #If Left Hand's Weapon is a Weapon /Else Avoid Left Hand's Weapon Section
0005c58c: 000318c0 sll r3,r3,0x03                   |r3 = Left Hand's Weapon ID * 0x08
0005c590: 3c028006 lui r2,0x8006                    |
0005c594: 24423ab8 addiu r2,r2,0x3ab8               |r2 = 0x80063ab8 Weapon secondary data Table start
0005c598: 00621821 addu r3,r3,r2                    |r3 = Unit's Left Hand's Weapon Secondary data pointer
0005c59c: 90620004 lbu r2,0x0004(r3)                |r2 = Left Hand's Weapon Weapon Power
0005c5a0: 00000000 nop                              |
0005c5a4: a202003d sb r2,0x003d(r16)                |Store Left Hand's Weapon Power in Unit Data
0005c5a8: 90620005 lbu r2,0x0005(r3)                |r2 = Left Hand's Weapon W-Ev
0005c5ac: 00000000 nop                              |
0005c5b0: a202003f sb r2,0x003f(r16)                |Store Left Hand's Weapon W-Ev in Unit Data
0005c5b4: 8fbf0014 lw r31,0x0014(r29)           END
0005c5b8: 8fb00010 lw r16,0x0010(r29)               
0005c5bc: 27bd0018 addiu r29,r29,0x0018             
0005c5c0: 03e00008 jr r31                           
0005c5c4: 00000000 nop                              

Return Locations

SCUS_942.21
0005ab0c: Equipment/Move/Jump +X/Name Storing/Generation
0005d704: Status Setting/Checking + Equip/R/S/M Stats


Notes

Notes : The Item Data/Table start at 80062eb8 Each items are 12 bytes long So loading 0x8006YYYY (YYYY = Item ID * 12) + 2ebb = Loading offset 0x03 (2ebb - 2eb8) of this item