Difference between revisions of "Load WEP/EFF graphics from WEP1/EFF Sheet"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m (Formatting)
 
Line 1: Line 1:
<font face='Courier New'>
+
 
  Load WEP graphic from WEP1 Sheet <font face='Courier New'>
+
  Load WEP graphic from WEP1 Sheet
 
  Expects r4 = pointer to miscellaneous unit data
 
  Expects r4 = pointer to miscellaneous unit data
 
  Expects r5 = WEP1 or EFF sprite data
 
  Expects r5 = WEP1 or EFF sprite data
 
  Expects r6 to be palette ID
 
  Expects r6 to be palette ID
 
    
 
    
  0008526c: 27bdff98 addiu r29,r29,0xff98
+
0008526c: 27bdff98 addiu r29,r29,0xff98
  00085270: afbe0060 sw r30,0x0060(r29)
+
00085270: afbe0060 sw r30,0x0060(r29)
  00085274: 0080f021 addu r30,r4,r0 r30 = Points to misc. unit data data
+
00085274: 0080f021 addu r30,r4,r0             r30 = Points to misc. unit data data
  00085278: afb3004c sw r19,0x004c(r29)
+
00085278: afb3004c sw r19,0x004c(r29)
  0008527c: 00a09821 addu r19,r5,r0 r19 = WEP sprite data
+
0008527c: 00a09821 addu r19,r5,r0             r19 = WEP sprite data
  00085280: afb7005c sw r23,0x005c(r29)
+
00085280: afb7005c sw r23,0x005c(r29)
  00085284: 00e0b821 addu r23,r7,r0 r23 = value?
+
00085284: 00e0b821 addu r23,r7,r0             r23 = value?
  00085288: afbf0064 sw r31,0x0064(r29)
+
00085288: afbf0064 sw r31,0x0064(r29)
  0008528c: afb60058 sw r22,0x0058(r29)
+
0008528c: afb60058 sw r22,0x0058(r29)
  00085290: afb50054 sw r21,0x0054(r29)
+
00085290: afb50054 sw r21,0x0054(r29)
  00085294: afb40050 sw r20,0x0050(r29)
+
00085294: afb40050 sw r20,0x0050(r29)
  00085298: afb20048 sw r18,0x0048(r29)
+
00085298: afb20048 sw r18,0x0048(r29)
  0008529c: afb10044 sw r17,0x0044(r29)
+
0008529c: afb10044 sw r17,0x0044(r29)
  000852a0: afb00040 sw r16,0x0040(r29)
+
000852a0: afb00040 sw r16,0x0040(r29)
  000852a4: afa60028 sw r6,0x0028(r29)
+
000852a4: afa60028 sw r6,0x0028(r29)
  000852a8: 93c2013a lbu r2,0x013a(r30) load used weapon
+
000852a8: 93c2013a lbu r2,0x013a(r30)         load used weapon
  000852ac: 96760004 lhu r22,0x0004(r19) load current animation
+
000852ac: 96760004 lhu r22,0x0004(r19)         load current animation
  000852b0: 00021040 sll r2,r2,0x01 r2 = weapon ID * 2
+
000852b0: 00021040 sll r2,r2,0x01             r2 = weapon ID * 2
  000852b4: 3c018009 lui r1,0x8009
+
000852b4: 3c018009 lui r1,0x8009
  000852b8: 00220821 addu r1,r1,r2 r1 = 0x80090000 + ID * 2
+
000852b8: 00220821 addu r1,r1,r2               r1 = 0x80090000 + ID * 2
  000852bc: 902243e5 lbu r2,0x43e5(r1) load used weapon graphic ID
+
000852bc: 902243e5 lbu r2,0x43e5(r1)           load used weapon graphic ID
  000852c0: 96710006 lhu r17,0x0006(r19) load frame command? Counter
+
000852c0: 96710006 lhu r17,0x0006(r19)         load frame command? Counter
  000852c4: 000210c0 sll r2,r2,0x03  
+
000852c4: 000210c0 sll r2,r2,0x03  
  000852c8: a7a20038 sh r2,0x0038(r29) store used weapon graphic ID*8
+
000852c8: a7a20038 sh r2,0x0038(r29)           store used weapon graphic ID*8
  000852cc: 8e75001c lw r21,0x001c(r19) load SHP data
+
000852cc: 8e75001c lw r21,0x001c(r19)         load SHP data
  000852d0: 8e740020 lw r20,0x0020(r19) load SEQ data
+
000852d0: 8e740020 lw r20,0x0020(r19)         load SEQ data
  000852d4: 16e00002 bne r23,r0,0x000852e0 #branch if value(?) != 0
+
000852d4: 16e00002 bne r23,r0,0x000852e0       #branch if value(?) != 0
  000852d8: 32d0ffff andi r16,r22,0xffff |r16 = animation #
+
000852d8: 32d0ffff andi r16,r22,0xffff             |r16 = animation #
  000852dc: 2631fffe addiu r17,r17,0xfffe |counter - 2
+
000852dc: 2631fffe addiu r17,r17,0xfffe           |counter - 2
  000852e0: 2e020101 sltiu r2,r16,0x0101 set if animation < 0x101
+
000852e0: 2e020101 sltiu r2,r16,0x0101         set if animation < 0x101
  000852e4: 14400004 bne r2,r0,0x000852f8 #branch if so
+
000852e4: 14400004 bne r2,r0,0x000852f8       #branch if so
  000852e8: 00101080 sll r2,r16,0x02 |animation*4
+
000852e8: 00101080 sll r2,r16,0x02                 |animation*4
  000852ec: 0c011282 jal 0x00044a08 |--> [[00044a08 - 00044a30]] Also clears something. I dunno what it is though.
+
000852ec: 0c011282 jal 0x00044a08                 |--> [[00044a08 - 00044a30]] Also clears something. I dunno what it is though.
  000852f0: 34040009 ori r4,r0,0x0009 |clears r4 and moves 0x09 to r5. for some reason.
+
000852f0: 34040009 ori r4,r0,0x0009               |clears r4 and moves 0x09 to r5. for some reason.
  000852f4: 00101080 sll r2,r16,0x02 |r2 = weapon anim*4
+
000852f4: 00101080 sll r2,r16,0x02                 |r2 = weapon anim*4
  000852f8: 00541021 addu r2,r2,r20 r2 = WP anim*4 + SEQ data location
+
000852f8: 00541021 addu r2,r2,r20             r2 = WP anim*4 + SEQ data location
  000852fc: 8c430000 lw r3,0x0000(r2) load frame commands? Pointer from SEQ table (Make a new page for SEQ and SHP?)
+
000852fc: 8c430000 lw r3,0x0000(r2)           load frame commands? Pointer from SEQ table (Make a new page for SEQ and SHP?)
  00085300: 2402ffff addiu r2,r0,0xffff this seems to be a rather redundant check for garbage data.
+
00085300: 2402ffff addiu r2,r0,0xffff         this seems to be a rather redundant check for garbage data.
  00085304: 14620005 bne r3,r2,0x0008531c #branch if Frame command pointer is not 0xffff
+
00085304: 14620005 bne r3,r2,0x0008531c       #branch if Frame command pointer is not 0xffff
  00085308: 00161880 sll r3,r22,0x02 |r3 = weapon anim*4
+
00085308: 00161880 sll r3,r22,0x02                 |r3 = weapon anim*4
  0008530c: 34040009 ori r4,r0,0x0009 |r4 = 0x9
+
0008530c: 34040009 ori r4,r0,0x0009               |r4 = 0x9
  00085310: 0c011282 jal 0x00044a08 |--> [[00044a08 - 00044a30]] clears r4 and moves to r5
+
00085310: 0c011282 jal 0x00044a08                 |--> [[00044a08 - 00044a30]] clears r4 and moves to r5
  00085314: 00000000 nop |
+
00085314: 00000000 nop                             |
  00085318: 00161880 sll r3,r22,0x02 |r3 = weapon anim*4
+
00085318: 00161880 sll r3,r22,0x02                 |r3 = weapon anim*4
  0008531c: 00741821 addu r3,r3,r20 animation*4 + SEQ data
+
0008531c: 00741821 addu r3,r3,r20             animation*4 + SEQ data
  00085320: 00111400 sll r2,r17,0x10 r2 = r17 * 2^16
+
00085320: 00111400 sll r2,r17,0x10             r2 = r17 * 2^16
  00085324: 8c650000 lw r5,0x0000(r3) Load Frame commands? pointer from SEQ table AGAIN
+
00085324: 8c650000 lw r5,0x0000(r3)           Load Frame commands? pointer from SEQ table AGAIN
  00085328: 00021403 sra r2,r2,0x10 r2 = first halfword of r17 (even though it was already a halfword and unsigned)
+
00085328: 00021403 sra r2,r2,0x10             r2 = first halfword of r17 (even though it was already a halfword and unsigned)
  0008532c: 00a21021 addu r2,r5,r2 r2 = frame command counter + frame command location
+
0008532c: 00a21021 addu r2,r5,r2               r2 = frame command counter + frame command location
  00085330: 90430000 lbu r3,0x0000(r2) load Frame command
+
00085330: 90430000 lbu r3,0x0000(r2)           load Frame command
  00085334: 340200ff ori r2,r0,0x00ff
+
00085334: 340200ff ori r2,r0,0x00ff
  00085338: 146200f5 bne r3,r2,0x00085710 #branch if frame command is not ff
+
00085338: 146200f5 bne r3,r2,0x00085710       #branch if frame command is not ff
  0008533c: 00111c00 sll r3,r17,0x10 |r3 = r17 * 2^16 (Moves halfword to upper half)
+
0008533c: 00111c00 sll r3,r17,0x10                 |r3 = r17 * 2^16 (Moves halfword to upper half)
  00085340: 26230001 addiu r3,r17,0x0001 |r3 = r17 + 1
+
00085340: 26230001 addiu r3,r17,0x0001             |r3 = r17 + 1
  00085344: 00031400 sll r2,r3,0x10 |in the event that the first frame command? = ff, another 1 is added to r2, and increment is increased by an additional 1, also.
+
00085344: 00031400 sll r2,r3,0x10                 |in the event that the first frame command? = ff, another 1 is added to r2, and increment is increased by an additional 1, also.
  00085348: 00021403 sra r2,r2,0x10 |a stupid long way of moving r17 to r2
+
00085348: 00021403 sra r2,r2,0x10                 |move r17 to r2
  0008534c: 00a21021 addu r2,r5,r2 |r2 = r2 + r5
+
0008534c: 00a21021 addu r2,r5,r2                   |r2 = r2 + r5
  00085350: 90420000 lbu r2,0x0000(r2) |Load frame command?
+
00085350: 90420000 lbu r2,0x0000(r2)               |Load frame command?
  00085354: 24710001 addiu r17,r3,0x0001 |r17 = r3 + 1
+
00085354: 24710001 addiu r17,r3,0x0001             |r17 = r3 + 1
  00085358: 2443ff2d addiu r3,r2,0xff2d |r3 = frame command? - 0xd3
+
00085358: 2443ff2d addiu r3,r2,0xff2d             |r3 = frame command? - 0xd3
  0008535c: 2c62002d sltiu r2,r3,0x002d |set r2 = true if r3 < 0x00d2 (if frame command > 0xd3)
+
0008535c: 2c62002d sltiu r2,r3,0x002d             |set r2 = true if r3 < 0x00d2 (if frame command > 0xd3)
  00085360: 104000e9 beq r2,r0,0x00085708 #branch if not true (continues beyond table)
+
00085360: 104000e9 beq r2,r0,0x00085708           #branch if not true (continues beyond table)
  00085364: 00031080 sll r2,r3,0x02 |r2 = r3 * 4 (location pointer)
+
00085364: 00031080 sll r2,r3,0x02                 |r2 = r3 * 4 (location pointer)
  00085368: 3c018007 lui r1,0x8007 |
+
00085368: 3c018007 lui r1,0x8007                   |
  0008536c: 00220821 addu r1,r1,r2 |r1 = 0x80070000 + r2
+
0008536c: 00220821 addu r1,r1,r2                   |r1 = 0x80070000 + r2
  00085370: 8c228028 lw r2,-0x7fd8(r1) |loads a word from the table at this location, based on weapon and angle (Link a new page with the table here?)
+
00085370: 8c228028 lw r2,-0x7fd8(r1)               |loads a word from the table at this location, based on weapon and angle (Link a new page with the table here?)
  Frame Command =  
+
                            Frame Command =  
  0xd3: 0x800856b8 (skipped by above conditional)
+
                                0xd3: 0x800856b8 (skipped by above conditional)
  0xd4: 0x80085708
+
                                0xd4: 0x80085708
  0xd5: 0x800853b4
+
                                0xd5: 0x800853b4
  0xd6: 0x80085420
+
                                0xd6: 0x80085420
  0xd7: 0x80085700
+
                                0xd7: 0x80085700
  0xd8: 0x800854a4
+
                                0xd8: 0x800854a4
  0xd9: 0x800853d4
+
                                0xd9: 0x800853d4
  0xda: 0x80085708
+
                                0xda: 0x80085708
  0xdb: 0x80085470
+
                                0xdb: 0x80085470
  0xdc: 0x800853e4
+
                                0xdc: 0x800853e4
  0xdd: 0x800854d8
+
                                0xdd: 0x800854d8
  0xde: 0x80085318 (jumps further back in routine)
+
                                0xde: 0x80085318 (jumps further back in routine)
  0xdf: 0x800853c8
+
                                0xdf: 0x800853c8
    0xe0, 0xe1: 0x80085318 (^)
+
                          0xe0, 0xe1: 0x80085318 (^)
  0xe2: 0x800853f4
+
                                0xe2: 0x800853f4
    0xe3, 0xe4: 0x80085700
+
                          0xe3, 0xe4: 0x80085700
  0xe5: 0x80085668
+
                                0xe5: 0x80085668
      0xe6, 0xe7, 0xe8: 0x800853dc
+
                    0xe6, 0xe7, 0xe8: 0x800853dc
  0xe9: 0x80085700
+
                                0xe9: 0x80085700
  0xea: 0x800853dc
+
                                0xea: 0x800853dc
  0xeb: 0x80085394
+
                                0xeb: 0x80085394
  0xec: 0x80085380
+
                                0xec: 0x80085380
  0xed, 0xee, 0xef, 0xf0, 0xf1: 0x80085700
+
        0xed, 0xee, 0xef, 0xf0, 0xf1: 0x80085700
  0xf2: 0x800855ec
+
                                0xf2: 0x800855ec
      0xf3, 0xf4, 0xf5: 0x80085700
+
                    0xf3, 0xf4, 0xf5: 0x80085700
  0xf6: 0x8008543c
+
                                0xf6: 0x8008543c
  0xf7: 0x800856b0
+
                                0xf7: 0x800856b0
  0xf8: 0x800853dc
+
                                0xf8: 0x800853dc
  0xf9: 0x8008550c
+
                                0xf9: 0x8008550c
  0xfa: 0x800856b0
+
                                0xfa: 0x800856b0
  0xfb: 0x800853dc
+
                                0xfb: 0x800853dc
  0xfc: 0x80085570
+
                                0xfc: 0x80085570
  0xfd: 0x800856cc
+
                                0xfd: 0x800856cc
  0xfe: 0x800853a8
+
                                0xfe: 0x800853a8
  0xff: 0x800853ac
+
                                0xff: 0x800853ac
  00085374: 00000000 nop
+
00085374: 00000000 nop
  00085378: 00400008 jr r2 jumps to address
+
00085378: 00400008 jr r2                       jumps to address
  0008537c: 00000000 nop
+
0008537c: 00000000 nop
  
  00085380: 96620018 lhu r2,0x0018(r19) Load rotation flags
+
00085380: 96620018 lhu r2,0x0018(r19)         Load rotation flags
  00085384: 00000000 nop
+
00085384: 00000000 nop
  00085388: 38420002 xori r2,r2,0x0002 flips horizontal bitflag
+
00085388: 38420002 xori r2,r2,0x0002           flips horizontal bitflag
  0008538c: 080214c6 j 0x00085318 Engage next frame command
+
0008538c: 080214c6 j 0x00085318               Engage next frame command
  00085390: a6620018 sh r2,0x0018(r19) Save new rotation flag
+
00085390: a6620018 sh r2,0x0018(r19)           Save new rotation flag
  
  00085394: 96620018 lhu r2,0x0018(r19) load rotation flags
+
00085394: 96620018 lhu r2,0x0018(r19)         load rotation flags
  00085398: 00000000 nop
+
00085398: 00000000 nop
  0008539c: 38420004 xori r2,r2,0x0004 flips vertical bitflag
+
0008539c: 38420004 xori r2,r2,0x0004           flips vertical bitflag
  000853a0: 080214c6 j 0x00085318 Engage next frame command
+
000853a0: 080214c6 j 0x00085318               Engage next frame command
  000853a4: a6620018 sh r2,0x0018(r19) save new rotation flag
+
000853a4: a6620018 sh r2,0x0018(r19)           save new rotation flag
  
  000853a8: a6600000 sh r0,0x0000(r19) clears graphic trigger
+
000853a8: a6600000 sh r0,0x0000(r19)           clears graphic trigger
  000853ac: 08021679 j 0x000859e4 finish routine
+
000853ac: 08021679 j 0x000859e4               finish routine
  000853b0: a660000a sh r0,0x000a(r19) clear frame + frame delay + frame command
+
000853b0: a660000a sh r0,0x000a(r19)           clear frame + frame delay + frame command
  
  000853b4: 9662000c lhu r2,0x000c(r19) Loads loop count
+
000853b4: 9662000c lhu r2,0x000c(r19)         Loads loop count
  000853b8: 00008821 addu r17,r0,r0 clear frame command byte indicator
+
000853b8: 00008821 addu r17,r0,r0             clear frame command byte indicator
  000853bc: 24420001 addiu r2,r2,0x0001 increment loop count
+
000853bc: 24420001 addiu r2,r2,0x0001         increment loop count
  000853c0: 080214c6 j 0x00085318 Engage next frame command
+
000853c0: 080214c6 j 0x00085318               Engage next frame command
  000853c4: a662000c sh r2,0x000c(r19) saves new loop count
+
000853c4: a662000c sh r2,0x000c(r19)           saves new loop count
  
  000853c8: 8e620024 lw r2,0x0024(r19) Load ? display data pointer
+
000853c8: 8e620024 lw r2,0x0024(r19)           Load ? display data pointer
  000853cc: 080214c6 j 0x00085318 engage next frame command  
+
000853cc: 080214c6 j 0x00085318               engage next frame command  
  000853d0: a440000c sh r0,0x000c(r2) clear spin on Y axis
+
000853d0: a440000c sh r0,0x000c(r2)           clear spin on Y axis
  
  000853d4: 0c01a269 jal 0x000689a4 [[Set evade type data, item and throw stone hardcoding]]
+
000853d4: 0c01a269 jal 0x000689a4             [[Set evade type data, item and throw stone hardcoding]]
  000853d8: 03c02021 addu r4,r30,r0 moves misc unit data into r4
+
000853d8: 03c02021 addu r4,r30,r0             moves misc unit data into r4
  000853dc: 080214c6 j 0x00085318 queue next frame command
+
000853dc: 080214c6 j 0x00085318               queue next frame command
  000853e0: 26310002 addiu r17,r17,0x0002 increment frame command byte indicator by 2
+
000853e0: 26310002 addiu r17,r17,0x0002       increment frame command byte indicator by 2
  
  000853e4: 96710010 lhu r17,0x0010(r19) ?
+
000853e4: 96710010 lhu r17,0x0010(r19)         ?
  000853e8: 9676000e lhu r22,0x000e(r19) Load Weapon animation from WEP1 data
+
000853e8: 9676000e lhu r22,0x000e(r19)         Load Weapon animation from WEP1 data
  000853ec: 080214c7 j 0x0008531c engage next frame command
+
000853ec: 080214c7 j 0x0008531c               engage next frame command
  000853f0: 00161880 sll r3,r22,0x02 r3 = Weapon anim*4 (in case of error?)
+
000853f0: 00161880 sll r3,r22,0x02             r3 = Weapon anim*4 (in case of error?)
  
  000853f4: 00161880 sll r3,r22,0x02 move weapon anim * 4 to r3
+
000853f4: 00161880 sll r3,r22,0x02             move weapon anim * 4 to r3
  000853f8: 00741821 addu r3,r3,r20 weapon animation's SEQ data
+
000853f8: 00741821 addu r3,r3,r20             weapon animation's SEQ data
  000853fc: 02201021 addu r2,r17,r0 r2 = frame command byte indicator
+
000853fc: 02201021 addu r2,r17,r0             r2 = frame command byte indicator
  00085400: 00021400 sll r2,r2,0x10 why
+
00085400: 00021400 sll r2,r2,0x10             compiler math
  00085404: 8c630000 lw r3,0x0000(r3) load spritesheet data
+
00085404: 8c630000 lw r3,0x0000(r3)           load spritesheet data
  00085408: 00021403 sra r2,r2,0x10 dumb compiler
+
00085408: 00021403 sra r2,r2,0x10             compiler math
  0008540c: 00621821 addu r3,r3,r2 r3 = r3 + r2
+
0008540c: 00621821 addu r3,r3,r2               r3 = r3 + r2
  00085410: 90620000 lbu r2,0x0000(r3) load Frame delay
+
00085410: 90620000 lbu r2,0x0000(r3)           load Frame delay
  00085414: 26310001 addiu r17,r17,0x0001 increment frame counter
+
00085414: 26310001 addiu r17,r17,0x0001       increment frame counter
  00085418: 080214c6 j 0x00085318 queue next frame command
+
00085418: 080214c6 j 0x00085318               queue next frame command
  0008541c: a7c20014 sh r2,0x0014(r30) save Frame delay to unit Misc data
+
0008541c: a7c20014 sh r2,0x0014(r30)           save Frame delay to unit Misc data
  
  00085420: 3c028009 lui r2,0x8009
+
00085420: 3c028009 lui r2,0x8009
  00085424: 8c42612c lw r2,0x612c(r2) load weapon sheathe check
+
00085424: 8c42612c lw r2,0x612c(r2)           load weapon sheathe check
  00085428: 00000000 nop
+
00085428: 00000000 nop
  0008542c: 144000a8 bne r2,r0,0x000856d0 #branch if not yet sheathing
+
0008542c: 144000a8 bne r2,r0,0x000856d0       #branch if not yet sheathing
  00085430: 00161080 sll r2,r22,0x02 |r2 = weapon anim*4
+
00085430: 00161080 sll r2,r22,0x02             |r2 = weapon anim*4
  00085434: 080214c6 j 0x00085318 |engage next command
+
00085434: 080214c6 j 0x00085318                   |engage next command
  00085438: 26310001 addiu r17,r17,0x0001       |increment frame command pointer by 1 (branch continues beyond here)
+
00085438: 26310001 addiu r17,r17,0x0001           |increment frame command pointer by 1 (branch continues beyond here)
  
  0008543c: 02201021 addu r2,r17,r0 move frame command byte counter to r2
+
0008543c: 02201021 addu r2,r17,r0             move frame command byte counter to r2
  00085440: 26310001 addiu r17,r17,0x0001 increment counter
+
00085440: 26310001 addiu r17,r17,0x0001       increment counter
  00085444: 00161880 sll r3,r22,0x02 weapon anim * 4
+
00085444: 00161880 sll r3,r22,0x02             weapon anim * 4
  00085448: 00741821 addu r3,r3,r20 Weapon anim's SEQ data
+
00085448: 00741821 addu r3,r3,r20             Weapon anim's SEQ data
  0008544c: 00021400 sll r2,r2,0x10 queue bullshit
+
0008544c: 00021400 sll r2,r2,0x10             compiler math
  00085450: 8c630000 lw r3,0x0000(r3) Load frame command pointer
+
00085450: 8c630000 lw r3,0x0000(r3)           Load frame command pointer
  00085454: 00021403 sra r2,r2,0x10 continued bullshit
+
00085454: 00021403 sra r2,r2,0x10             compiler math
  00085458: 00621821 addu r3,r3,r2 r3 = location of frame command
+
00085458: 00621821 addu r3,r3,r2               r3 = location of frame command
  0008545c: 90650000 lbu r5,0x0000(r3) Load frame command byte
+
0008545c: 90650000 lbu r5,0x0000(r3)           Load frame command byte
  00085460: 0c01ae58 jal 0x0006b960 [[0006b960 - 0006b990]] seems to be an input-y thing
+
00085460: 0c01ae58 jal 0x0006b960             [[0006b960 - 0006b990]] seems to be an input-y thing
  00085464: 03c02021 addu r4,r30,r0 r4 = Unit misc data
+
00085464: 03c02021 addu r4,r30,r0             r4 = Unit misc data
  00085468: 080214c7 j 0x0008531c queue next frame command
+
00085468: 080214c7 j 0x0008531c               queue next frame command
  0008546c: 00161880 sll r3,r22,0x02 r3 = weapon anim * 4
+
0008546c: 00161880 sll r3,r22,0x02             r3 = weapon anim * 4
  
  00085470: 00161880 sll r3,r22,0x02 r3 = weapon anim * 4
+
00085470: 00161880 sll r3,r22,0x02             r3 = weapon anim * 4
  00085474: 00741821 addu r3,r3,r20 Weapon anim's SEQ Data
+
00085474: 00741821 addu r3,r3,r20             Weapon anim's SEQ Data
  00085478: 02201021 addu r2,r17,r0 r2 = frame command byte counter
+
00085478: 02201021 addu r2,r17,r0             r2 = frame command byte counter
  0008547c: 00021400 sll r2,r2,0x10
+
0008547c: 00021400 sll r2,r2,0x10             compiler math
  00085480: 8c630000 lw r3,0x0000(r3) Load spritesheet data
+
00085480: 8c630000 lw r3,0x0000(r3)           Load spritesheet data
  00085484: 00021403 sra r2,r2,0x10
+
00085484: 00021403 sra r2,r2,0x10             compiler math
  00085488: 00621821 addu r3,r3,r2 Weapon anim's spritesheet data
+
00085488: 00621821 addu r3,r3,r2               Weapon anim's spritesheet data
  0008548c: 90620000 lbu r2,0x0000(r3) Load Frame delay
+
0008548c: 90620000 lbu r2,0x0000(r3)           Load Frame delay
  00085490: 26310001 addiu r17,r17,0x0001 increment counter
+
00085490: 26310001 addiu r17,r17,0x0001       increment counter
  00085494: 00021600 sll r2,r2,0x18
+
00085494: 00021600 sll r2,r2,0x18          
  00085498: 00021603 sra r2,r2,0x18
+
00085498: 00021603 sra r2,r2,0x18
  0008549c: 080214c6 j 0x00085318 Next command, with new frame delay :D
+
0008549c: 080214c6 j 0x00085318               Next command, with new frame delay :D
  000854a0: a6620012 sh r2,0x0012(r19) Save frame delay
+
000854a0: a6620012 sh r2,0x0012(r19)           Save frame delay
  
  000854a4: 00161880 sll r3,r22,0x02 Weapon anim * 4
+
000854a4: 00161880 sll r3,r22,0x02             Weapon anim * 4
  000854a8: 00741821 addu r3,r3,r20 spritesheet data + weapon anim * 4
+
000854a8: 00741821 addu r3,r3,r20             spritesheet data + weapon anim * 4
  000854ac: 02201021 addu r2,r17,r0 Move counter to r2
+
000854ac: 02201021 addu r2,r17,r0             Move counter to r2
  000854b0: 00021400 sll r2,r2,0x10
+
000854b0: 00021400 sll r2,r2,0x10             compiler math
  000854b4: 8c630000 lw r3,0x0000(r3) frame command pointer
+
000854b4: 8c630000 lw r3,0x0000(r3)           frame command pointer
  000854b8: 00021403 sra r2,r2,0x10 compiler please
+
000854b8: 00021403 sra r2,r2,0x10             compiler math
  000854bc: 00621821 addu r3,r3,r2 frame command pointer + counter
+
000854bc: 00621821 addu r3,r3,r2               frame command pointer + counter
  000854c0: 90620000 lbu r2,0x0000(r3) Load byte at this location
+
000854c0: 90620000 lbu r2,0x0000(r3)           Load byte at this location
  000854c4: 26310001 addiu r17,r17,0x0001 increment counter
+
000854c4: 26310001 addiu r17,r17,0x0001       increment counter
  000854c8: 00021600 sll r2,r2,0x18
+
000854c8: 00021600 sll r2,r2,0x18
  000854cc: 00021603 sra r2,r2,0x18
+
000854cc: 00021603 sra r2,r2,0x18
  000854d0: 080214c6 j 0x00085318 next command
+
000854d0: 080214c6 j 0x00085318               next command
  000854d4: a6620014 sh r2,0x0014(r19) Save frame command byte to weapon rotation
+
000854d4: a6620014 sh r2,0x0014(r19)           Save frame command byte to weapon rotation
  
  000854d8: 00161080 sll r2,r22,0x02 Weapon anim * 4
+
000854d8: 00161080 sll r2,r22,0x02             Weapon anim * 4
  000854dc: 00541021 addu r2,r2,r20 Weapon anim's SEQ data
+
000854dc: 00541021 addu r2,r2,r20             Weapon anim's SEQ data
  000854e0: 02201821 addu r3,r17,r0 r3 = frame command byte counter
+
000854e0: 02201821 addu r3,r17,r0             r3 = frame command byte counter
  000854e4: 00031c00 sll r3,r3,0x10
+
000854e4: 00031c00 sll r3,r3,0x10             compiler math
  000854e8: a676000e sh r22,0x000e(r19) save weapon animation to WEP1 data
+
000854e8: a676000e sh r22,0x000e(r19)         save weapon animation to WEP1 data
  000854ec: 8c420000 lw r2,0x0000(r2) load command pointer
+
000854ec: 8c420000 lw r2,0x0000(r2)           load command pointer
  000854f0: 00031c03 sra r3,r3,0x10
+
000854f0: 00031c03 sra r3,r3,0x10             compiler math
  000854f4: 00431021 addu r2,r2,r3 Load location of byte of current frame command
+
000854f4: 00431021 addu r2,r2,r3               Load location of byte of current frame command
  000854f8: 90560000 lbu r22,0x0000(r2) load byte to weapon anim (override? :O)
+
000854f8: 90560000 lbu r22,0x0000(r2)         load byte to weapon anim (override? :O)
  000854fc: 26310001 addiu r17,r17,0x0001 increment counter + 1
+
000854fc: 26310001 addiu r17,r17,0x0001       increment counter + 1
  00085500: a6710010 sh r17,0x0010(r19) save counter to WEP1 data
+
00085500: a6710010 sh r17,0x0010(r19)         save counter to WEP1 data
  00085504: 080214c6 j 0x00085318 queue next command
+
00085504: 080214c6 j 0x00085318               queue next command
  00085508: 00008821 addu r17,r0,r0 clear counter
+
00085508: 00008821 addu r17,r0,r0             clear counter
  
  0008550c: 00162080 sll r4,r22,0x02 r4 = weapon anim * 4
+
0008550c: 00162080 sll r4,r22,0x02             r4 = weapon anim * 4
  00085510: 00942021 addu r4,r4,r20 Weapon anim's SEQ data
+
00085510: 00942021 addu r4,r4,r20             Weapon anim's SEQ data
  00085514: 00111400 sll r2,r17,0x10 moves counter to r2
+
00085514: 00111400 sll r2,r17,0x10             moves counter to r2
  00085518: 00021403 sra r2,r2,0x10
+
00085518: 00021403 sra r2,r2,0x10
  0008551c: 26250001 addiu r5,r17,0x0001 increment counter into r5
+
0008551c: 26250001 addiu r5,r17,0x0001         increment counter into r5
  00085520: 8c830000 lw r3,0x0000(r4) Load spritesheet data
+
00085520: 8c830000 lw r3,0x0000(r4)           Load spritesheet data
  00085524: 24b10001 addiu r17,r5,0x0001 r17 = counter + 2
+
00085524: 24b10001 addiu r17,r5,0x0001         r17 = counter + 2
  00085528: 00621821 addu r3,r3,r2
+
00085528: 00621821 addu r3,r3,r2          
  0008552c: 90620000 lbu r2,0x0000(r3) loads ?
+
0008552c: 90620000 lbu r2,0x0000(r3)           loads ?
  00085530: 97c30058 lhu r3,0x0058(r30) loads some vector value?
+
00085530: 97c30058 lhu r3,0x0058(r30)         loads some vector value?
  00085534: 00021600 sll r2,r2,0x18
+
00085534: 00021600 sll r2,r2,0x18             compiler math
  00085538: 00021603 sra r2,r2,0x18
+
00085538: 00021603 sra r2,r2,0x18             compiler math
  0008553c: 00431021 addu r2,r2,r3 r2 = r2 + r3
+
0008553c: 00431021 addu r2,r2,r3               r2 = r2 + r3
  00085540: a7c20058 sh r2,0x0058(r30) save new value
+
00085540: a7c20058 sh r2,0x0058(r30)           save new value
  00085544: 00051400 sll r2,r5,0x10 sure, poggers your royal pain in the ass.
+
00085544: 00051400 sll r2,r5,0x10             compiler math
  00085548: 8c830000 lw r3,0x0000(r4) load command pointer
+
00085548: 8c830000 lw r3,0x0000(r4)           load command pointer
  0008554c: 00021403 sra r2,r2,0x10
+
0008554c: 00021403 sra r2,r2,0x10             compiler math
  00085550: 00621821 addu r3,r3,r2 add ? and command pointer
+
00085550: 00621821 addu r3,r3,r2               add ? and command pointer
  00085554: 90620000 lbu r2,0x0000(r3) load the command byte here
+
00085554: 90620000 lbu r2,0x0000(r3)           load the command byte here
  00085558: 97c3005a lhu r3,0x005a(r30) Load another vector value?  
+
00085558: 97c3005a lhu r3,0x005a(r30)         Load another vector value?  
  0008555c: 00021600 sll r2,r2,0x18
+
0008555c: 00021600 sll r2,r2,0x18
  00085560: 00021603 sra r2,r2,0x18
+
00085560: 00021603 sra r2,r2,0x18
  00085564: 00431021 addu r2,r2,r3 Add the vector value to the command byte (not even related to the command? I don't think?)
+
00085564: 00431021 addu r2,r2,r3               Add the vector value to the command byte (not even related to the command? I don't think?)
  00085568: 080214c6 j 0x00085318
+
00085568: 080214c6 j 0x00085318
  0008556c: a7c2005a sh r2,0x005a(r30) Save new value
+
0008556c: a7c2005a sh r2,0x005a(r30)           Save new value
  
  00085570: 26260001 addiu r6,r17,0x0001 r6 = counter + 1
+
00085570: 26260001 addiu r6,r17,0x0001         r6 = counter + 1
  00085574: 00112400 sll r4,r17,0x10 r4 = counter
+
00085574: 00112400 sll r4,r17,0x10             r4 = counter
  00085578: 24d10001 addiu r17,r6,0x0001 r17 = counter + 2
+
00085578: 24d10001 addiu r17,r6,0x0001         r17 = counter + 2
  0008557c: 00161080 sll r2,r22,0x02 r2 = weapon anim * 4
+
0008557c: 00161080 sll r2,r22,0x02             r2 = weapon anim * 4
  00085580: 00541021 addu r2,r2,r20 load weapon anim's SEQ data
+
00085580: 00541021 addu r2,r2,r20             load weapon anim's SEQ data
  00085584: 00042403 sra r4,r4,0x10
+
00085584: 00042403 sra r4,r4,0x10
  00085588: 8c430000 lw r3,0x0000(r2) Load command pointer
+
00085588: 8c430000 lw r3,0x0000(r2)           Load command pointer
  0008558c: 00061400 sll r2,r6,0x10
+
0008558c: 00061400 sll r2,r6,0x10             compiler math
  00085590: 00021403 sra r2,r2,0x10
+
00085590: 00021403 sra r2,r2,0x10             compiler math
  00085594: 00642021 addu r4,r3,r4 r4 = command pointer + counter
+
00085594: 00642021 addu r4,r3,r4               r4 = command pointer + counter
  00085598: 00621821 addu r3,r3,r2 r3 = command pointer + counter + 1
+
00085598: 00621821 addu r3,r3,r2               r3 = command pointer + counter + 1
  0008559c: 90820000 lbu r2,0x0000(r4) load third command byte
+
0008559c: 90820000 lbu r2,0x0000(r4)           load third command byte
  000855a0: 90640000 lbu r4,0x0000(r3) load fourth command byte
+
000855a0: 90640000 lbu r4,0x0000(r3)           load fourth command byte
  000855a4: 96630016 lhu r3,0x0016(r19) ?
+
000855a4: 96630016 lhu r3,0x0016(r19)         ?
  000855a8: 00021600 sll r2,r2,0x18
+
000855a8: 00021600 sll r2,r2,0x18
  000855ac: 1060000b beq r3,r0,0x000855dc branch if ? = 0
+
000855ac: 1060000b beq r3,r0,0x000855dc       branch if ? = 0
  000855b0: 00022e03 sra r5,r2,0x18 |r5 = 3rd byte
+
000855b0: 00022e03 sra r5,r2,0x18             |r5 = 3rd byte
  000855b4: 96620016 lhu r2,0x0016(r19) |load ? again
+
000855b4: 96620016 lhu r2,0x0016(r19)             |load ? again
  000855b8: 00000000 nop |
+
000855b8: 00000000 nop                             |
  000855bc: 2442ffff addiu r2,r2,0xffff |? - 1
+
000855bc: 2442ffff addiu r2,r2,0xffff             |? - 1
  000855c0: a6620016 sh r2,0x0016(r19) |Save ? - 1
+
000855c0: a6620016 sh r2,0x0016(r19)               |Save ? - 1
  000855c4: 3042ffff andi r2,r2,0xffff |does nothing
+
000855c4: 3042ffff andi r2,r2,0xffff               |does nothing
  000855c8: 1040ff54 beq r2,r0,0x0008531c #Branch back to start of routine if ? - 1 = 0
+
000855c8: 1040ff54 beq r2,r0,0x0008531c           #Branch back to start of routine if ? - 1 = 0
  000855cc: 00161880 sll r3,r22,0x02 |r3 = weapon anim * 4
+
000855cc: 00161880 sll r3,r22,0x02                 |r3 = weapon anim * 4
  000855d0: 24c2fffd addiu r2,r6,0xfffd |r2 = counter - 2
+
000855d0: 24c2fffd addiu r2,r6,0xfffd                 |r2 = counter - 2
  000855d4: 080214c7 j 0x0008531c |load next command
+
000855d4: 080214c7 j 0x0008531c                       |load next command
  000855d8: 00a28821 addu r17,r5,r2 |r17 = 3rd byte + counter - 2
+
000855d8: 00a28821 addu r17,r5,r2                     |r17 = 3rd byte + counter - 2
  000855dc: 24c2fffd addiu r2,r6,0xfffd r2 = counter - 2
+
000855dc: 24c2fffd addiu r2,r6,0xfffd         r2 = counter - 2
  000855e0: 00a28821 addu r17,r5,r2 r17 = 3rd byte + counter - 2
+
000855e0: 00a28821 addu r17,r5,r2             r17 = 3rd byte + counter - 2
  000855e4: 080214c6 j 0x00085318 load next command
+
000855e4: 080214c6 j 0x00085318               load next command
  000855e8: a6640016 sh r4,0x0016(r19) save fourth command byte as ?
+
000855e8: a6640016 sh r4,0x0016(r19)           save fourth command byte as ?
  
  000855ec: 26230001 addiu r3,r17,0x0001 Increment counter
+
000855ec: 26230001 addiu r3,r17,0x0001         Increment counter
  000855f0: 00112400 sll r4,r17,0x10 queue dumbass compiler doing stupid shit
+
000855f0: 00112400 sll r4,r17,0x10             compiler math
  000855f4: 24710001 addiu r17,r3,0x0001 increment counter by 2
+
000855f4: 24710001 addiu r17,r3,0x0001         increment counter by 2
  000855f8: 00161080 sll r2,r22,0x02 r2 = weapon anim*4
+
000855f8: 00161080 sll r2,r22,0x02             r2 = weapon anim*4
  000855fc: 00541021 addu r2,r2,r20 weapon anim*4 + SEQ data pointer
+
000855fc: 00541021 addu r2,r2,r20             weapon anim*4 + SEQ data pointer
  00085600: 00042403 sra r4,r4,0x10 Close dumbass compiler doing stupid shit
+
00085600: 00042403 sra r4,r4,0x10             compiler math
  00085604: 00031c00 sll r3,r3,0x10 queue even stupider shit
+
00085604: 00031c00 sll r3,r3,0x10             compiler math
  00085608: 8c420000 lw r2,0x0000(r2) Load frame command locations?
+
00085608: 8c420000 lw r2,0x0000(r2)           Load frame command locations?
  0008560c: 00031c03 sra r3,r3,0x10 close even stupider shit
+
0008560c: 00031c03 sra r3,r3,0x10             compiler math
  00085610: 00442021 addu r4,r2,r4 get location of first frame command? (???)
+
00085610: 00442021 addu r4,r2,r4               get location of first frame command? (???)
  00085614: 00431021 addu r2,r2,r3 get location of second frame command? (???)
+
00085614: 00431021 addu r2,r2,r3               get location of second frame command? (???)
  00085618: 90900000 lbu r16,0x0000(r4) Load first frame command?
+
00085618: 90900000 lbu r16,0x0000(r4)         Load first frame command?
  0008561c: 90520000 lbu r18,0x0000(r2) Load second frame command?
+
0008561c: 90520000 lbu r18,0x0000(r2)         Load second frame command?
  00085620: 16000004 bne r16,r0,0x00085634 #Branch if first frame command? is 0
+
00085620: 16000004 bne r16,r0,0x00085634       #Branch if first frame command? is 0
  00085624: 00101040 sll r2,r16,0x01 |r2 = Frame command? * 2
+
00085624: 00101040 sll r2,r16,0x01             |r2 = Frame command? * 2
  00085628: 0c011282 jal 0x00044a08 [[00044a08 - 00044a30]]  
+
00085628: 0c011282 jal 0x00044a08                 [[00044a08 - 00044a30]]  
  0008562c: 3404000d ori r4,r0,0x000d |Move 0x0d into r5, then clear r4.
+
0008562c: 3404000d ori r4,r0,0x000d               |Move 0x0d into r5, then clear r4.
  00085630: 00101040 sll r2,r16,0x01 |r2 = Frame command? * 2
+
00085630: 00101040 sll r2,r16,0x01                 |r2 = Frame command? * 2
  00085634: 00501021 addu r2,r2,r16 #r2 = Frame command? * 3
+
00085634: 00501021 addu r2,r2,r16             #r2 = Frame command? * 3
  00085638: 00021100 sll r2,r2,0x04 r2 = Frame command? * 30
+
00085638: 00021100 sll r2,r2,0x04             r2 = Frame command? * 30
  0008563c: 244201d8 addiu r2,r2,0x01d8 r2 = Frame command? * 30 + 0x1d8
+
0008563c: 244201d8 addiu r2,r2,0x01d8         r2 = Frame command? * 30 + 0x1d8
  00085640: 03c21021 addu r2,r30,r2 r2 = Misc Unit data + Frame command * 30 + 0x1d8
+
00085640: 03c21021 addu r2,r30,r2             r2 = Misc Unit data + Frame command * 30 + 0x1d8
  00085644: 34030001 ori r3,r0,0x0001 r3 = 0x1
+
00085644: 34030001 ori r3,r0,0x0001           r3 = 0x1
  00085648: a4520004 sh r18,0x0004(r2) Save second frame command?
+
00085648: a4520004 sh r18,0x0004(r2)           Save second frame command?
  0008564c: a4400006 sh r0,0x0006(r2) clears frame command counter
+
0008564c: a4400006 sh r0,0x0006(r2)           clears frame command counter
  00085650: a443000a sh r3,0x000a(r2) saves 0x1 to Frame delay ++
+
00085650: a443000a sh r3,0x000a(r2)           saves 0x1 to Frame delay ++
  00085654: a4400012 sh r0,0x0012(r2) clears frame delay
+
00085654: a4400012 sh r0,0x0012(r2)           clears frame delay
  00085658: a4400014 sh r0,0x0014(r2) clears graphic rotation
+
00085658: a4400014 sh r0,0x0014(r2)           clears graphic rotation
  0008565c: a4400016 sh r0,0x0016(r2) clears ??
+
0008565c: a4400016 sh r0,0x0016(r2)           clears ??
  00085660: 080214c6 j 0x00085318 queue next command
+
00085660: 080214c6 j 0x00085318               queue next command
  00085664: a4430000 sh r3,0x0000(r2) saves 0x1 to graphic trigger
+
00085664: a4430000 sh r3,0x0000(r2)           saves 0x1 to graphic trigger
  
  00085668: 26230001 addiu r3,r17,0x0001 r3 = counter + 1
+
00085668: 26230001 addiu r3,r17,0x0001         r3 = counter + 1
  0008566c: 00112400 sll r4,r17,0x10 r4 = counter
+
0008566c: 00112400 sll r4,r17,0x10             r4 = counter
  00085670: 24710001 addiu r17,r3,0x0001 r17 = counter + 2
+
00085670: 24710001 addiu r17,r3,0x0001         r17 = counter + 2
  00085674: 00161080 sll r2,r22,0x02 r2 = weapon anim * 4
+
00085674: 00161080 sll r2,r22,0x02             r2 = weapon anim * 4
  00085678: 00541021 addu r2,r2,r20 weapon anim's SEQ data
+
00085678: 00541021 addu r2,r2,r20             weapon anim's SEQ data
  0008567c: 00042403 sra r4,r4,0x10
+
0008567c: 00042403 sra r4,r4,0x10
  00085680: 00031c00 sll r3,r3,0x10
+
00085680: 00031c00 sll r3,r3,0x10             compiler math
  00085684: 8c420000 lw r2,0x0000(r2) load command pointer for anim
+
00085684: 8c420000 lw r2,0x0000(r2)           load command pointer for anim
  00085688: 00031c03 sra r3,r3,0x10
+
00085688: 00031c03 sra r3,r3,0x10             compiler math
  0008568c: 00442021 addu r4,r2,r4 r4 = location of 3rd byte
+
0008568c: 00442021 addu r4,r2,r4               r4 = location of 3rd byte
  00085690: 00431021 addu r2,r2,r3 r2 = location of 4th byte
+
00085690: 00431021 addu r2,r2,r3               r2 = location of 4th byte
  00085694: 90420000 lbu r2,0x0000(r2) load 4th byte
+
00085694: 90420000 lbu r2,0x0000(r2)           load 4th byte
  00085698: 90840000 lbu r4,0x0000(r4) load 3rd byte
+
00085698: 90840000 lbu r4,0x0000(r4)           load 3rd byte
  0008569c: 8e630024 lw r3,0x0024(r19) load ? display data
+
0008569c: 8e630024 lw r3,0x0024(r19)           load ? display data
  000856a0: 00021200 sll r2,r2,0x08 move command to upper byte
+
000856a0: 00021200 sll r2,r2,0x08             move command to upper byte
  000856a4: 00822025 or r4,r4,r2 combine the two bytes together
+
000856a4: 00822025 or r4,r4,r2                 combine the two bytes together
  000856a8: 080214c6 j 0x00085318
+
000856a8: 080214c6 j 0x00085318
  000856ac: a464000c sh r4,0x000c(r3) Save byte combo to spin on Y axis
+
000856ac: a464000c sh r4,0x000c(r3)           Save byte combo to spin on Y axis
  000856b0: 080214c6 j 0x00085318
+
000856b0: 080214c6 j 0x00085318
  000856b4: 26310003 addiu r17,r17,0x0003 r17 = r17 + 5
+
000856b4: 26310003 addiu r17,r17,0x0003       r17 = r17 + 5
  
  000856b8: 3c038009 lui r3,0x8009
+
000856b8: 3c038009 lui r3,0x8009
  000856bc: 8c63612c lw r3,0x612c(r3) Weapon sheath check
+
000856bc: 8c63612c lw r3,0x612c(r3)           Weapon sheath check
  000856c0: 34020001 ori r2,r0,0x0001
+
000856c0: 34020001 ori r2,r0,0x0001
  000856c4: 1462000e bne r3,r2,0x00085700 branch if weapon sheath check is not 1
+
000856c4: 1462000e bne r3,r2,0x00085700       branch if weapon sheath check is not 1
  000856c8: 00000000 nop
+
000856c8: 00000000 nop
  000856cc: 00161080 sll r2,r22,0x02 r2 = weapon anim * 4
+
000856cc: 00161080 sll r2,r22,0x02                 r2 = weapon anim * 4
  000856d0: 00541021 addu r2,r2,r20 r2 = location of frame command? Pointer
+
000856d0: 00541021 addu r2,r2,r20                 r2 = location of frame command? Pointer
  000856d4: 00111c00 sll r3,r17,0x10 queue compiler bullshit
+
000856d4: 00111c00 sll r3,r17,0x10                 compiler math
  000856d8: 8c420000 lw r2,0x0000(r2) Load frame command? pointer
+
000856d8: 8c420000 lw r2,0x0000(r2)               Load frame command? pointer
  000856dc: 00031c03 sra r3,r3,0x10 continued compiler bullshit
+
000856dc: 00031c03 sra r3,r3,0x10                 compiler math
  000856e0: 00431021 addu r2,r2,r3 frame command location
+
000856e0: 00431021 addu r2,r2,r3                   frame command location
  000856e4: 90420000 lbu r2,0x0000(r2) Load frame command?
+
000856e4: 90420000 lbu r2,0x0000(r2)               Load frame command?
  000856e8: 00000000 nop
+
000856e8: 00000000 nop                
  000856ec: 00021600 sll r2,r2,0x18 Frame command? * 2^18
+
000856ec: 00021600 sll r2,r2,0x18                 Frame command? * 2^18
  000856f0: 00022e03 sra r5,r2,0x18 Frame command? * 2^18 / 2^18 (this makes the number the conjugate negative number of itself (if the command was > 0x80) (0xf2 becomes -0xd))
+
000856f0: 00022e03 sra r5,r2,0x18                 Frame command? * 2^18 / 2^18 (this makes the number the conjugate negative number of itself (if the command was > 0x80) (0xf2 becomes -0xd))
  000856f4: 2622fffe addiu r2,r17,0xfffe r2 = frame command counter - 2
+
000856f4: 2622fffe addiu r2,r17,0xfffe             r2 = frame command counter - 2
  000856f8: 080214c6 j 0x00085318 jumps back to earlier in routine
+
000856f8: 080214c6 j 0x00085318                   jumps back to earlier in routine
  000856fc: 00a28821 addu r17,r5,r2 frame command counter = frame command counter - 2 - Frame command conjugate (wrap your head around that one)
+
000856fc: 00a28821 addu r17,r5,r2                 frame command counter = frame command counter - 2 - Frame command conjugate (wrap your head around that one)
  
  00085700: 080214c6 j 0x00085318
+
00085700: 080214c6 j 0x00085318
  00085704: 26310001 addiu r17,r17,0x0001
+
00085704: 26310001 addiu r17,r17,0x0001
  
  00085708: 080214c4 j 0x00085310
+
00085708: 080214c4 j 0x00085310
  0008570c: 3404000d ori r4,r0,0x000d
+
0008570c: 3404000d ori r4,r0,0x000d
  
  00085710: 00031c03 sra r3,r3,0x10 queue stupid method of moving frame counter to r3
+
00085710: 00031c03 sra r3,r3,0x10             move frame counter to r3
  00085714: 00a31821 addu r3,r5,r3 r3 = frame command location + frame counter
+
00085714: 00a31821 addu r3,r5,r3               r3 = frame command location + frame counter
  00085718: 93c2013b lbu r2,0x013b(r30) load used weapon type
+
00085718: 93c2013b lbu r2,0x013b(r30)         load used weapon type
  0008571c: 90630000 lbu r3,0x0000(r3) load 1st command byte
+
0008571c: 90630000 lbu r3,0x0000(r3)           load 1st command byte
  00085720: 00021040 sll r2,r2,0x01 mod*2
+
00085720: 00021040 sll r2,r2,0x01             mod*2
  00085724: 00551021 addu r2,r2,r21 mod*2 + SHP data
+
00085724: 00551021 addu r2,r2,r21             mod*2 + SHP data
  00085728: 94420000 lhu r2,0x0000(r2) load first frame of weapon animation
+
00085728: 94420000 lhu r2,0x0000(r2)           load first frame of weapon animation
  0008572c: 96640014 lhu r4,0x0014(r19) load frame offset
+
0008572c: 96640014 lhu r4,0x0014(r19)         load frame offset
  00085730: 00621821 addu r3,r3,r2 frame + 0 frame
+
00085730: 00621821 addu r3,r3,r2               frame + 0 frame
  00085734: 00832021 addu r4,r4,r3 r4 = frame + offset + 0 frame
+
00085734: 00832021 addu r4,r4,r3               r4 = frame + offset + 0 frame
  00085738: a7a40030 sh r4,0x0030(r29) store frame + offset + 0 frame
+
00085738: a7a40030 sh r4,0x0030(r29)           store frame + offset + 0 frame
  0008573c: 12e0000a beq r23,r0,0x00085768 #branch if wait = 0
+
0008573c: 12e0000a beq r23,r0,0x00085768       #branch if wait = 0
  00085740: 26240001 addiu r4,r17,0x0001 |increment Frame command counter?
+
00085740: 26240001 addiu r4,r17,0x0001         |increment Frame command counter?
  00085744: 00041400 sll r2,r4,0x10 |
+
00085744: 00041400 sll r2,r4,0x10                 |compiler math
  00085748: 00021403 sra r2,r2,0x10 |queue further stupidity moving register values
+
00085748: 00021403 sra r2,r2,0x10                 |compiler math
  0008574c: 00a21021 addu r2,r5,r2 |SHP data location + increment?
+
0008574c: 00a21021 addu r2,r5,r2                   |SHP data location + increment?
  00085750: 90420000 lbu r2,0x0000(r2) |load delay
+
00085750: 90420000 lbu r2,0x0000(r2)               |load delay
  00085754: 96630012 lhu r3,0x0012(r19) |load current wait
+
00085754: 96630012 lhu r3,0x0012(r19)             |load current wait
  00085758: 24910001 addiu r17,r4,0x0001 |increment frame command counter again?
+
00085758: 24910001 addiu r17,r4,0x0001             |increment frame command counter again?
  0008575c: 00431021 addu r2,r2,r3 |r2 = delay + wait
+
0008575c: 00431021 addu r2,r2,r3                   |r2 = delay + wait
  00085760: 080215db j 0x0008576c |jump ahead
+
00085760: 080215db j 0x0008576c                   |jump ahead
  00085764: a662000a sh r2,0x000a(r19) |store
+
00085764: a662000a sh r2,0x000a(r19)               |store
  00085768: 24910001 addiu r17,r4,0x0001 increments r17 if building next frame
+
00085768: 24910001 addiu r17,r4,0x0001         increments r17 if building next frame
  0008576c: 97a30030 lhu r3,0x0030(r29) Load frame + weapon rotation + 1st byte
+
0008576c: 97a30030 lhu r3,0x0030(r29)         Load frame + weapon rotation + 1st byte
  00085770: 00000000 nop
+
00085770: 00000000 nop
  00085774: 00031080 sll r2,r3,0x02 r2 = r3*4
+
00085774: 00031080 sll r2,r3,0x02             r2 = r3*4
  00085778: 00551021 addu r2,r2,r21 WEP SHP Data
+
00085778: 00551021 addu r2,r2,r21             WEP SHP Data
  0008577c: 2c630201 sltiu r3,r3,0x0201 Set r3 = true if r3 is less than 0x201
+
0008577c: 2c630201 sltiu r3,r3,0x0201         Set r3 = true if r3 is less than 0x201
  00085780: 8c550040 lw r21,0x0040(r2) Loads a spritesheet pointer?
+
00085780: 8c550040 lw r21,0x0040(r2)           Loads a spritesheet pointer?
  00085784: 14600004 bne r3,r0,0x00085798 #branch if r3 is less than 0x201
+
00085784: 14600004 bne r3,r0,0x00085798       #branch if r3 is less than 0x201
  00085788: 2402ffff addiu r2,r0,0xffff |r2 = 0xffffffff
+
00085788: 2402ffff addiu r2,r0,0xffff         |r2 = 0xffffffff
  0008578c: 0c011282 jal 0x00044a08 |--> [[00044a08 - 00044a30]] moves r4 to r5 and clears r4
+
0008578c: 0c011282 jal 0x00044a08                 |--> [[00044a08 - 00044a30]] moves r4 to r5 and clears r4
  00085790: 34040008 ori r4,r0,0x0008 |defunct error routine
+
00085790: 34040008 ori r4,r0,0x0008               |defunct error routine
  00085794: 2402ffff addiu r2,r0,0xffff |r2 = 0xffffffff
+
00085794: 2402ffff addiu r2,r0,0xffff             |r2 = 0xffffffff
  00085798: 16a20003 bne r21,r2,0x000857a8 #Branch if r21 pointer is not invalid. fairly easy to manage in all honesty
+
00085798: 16a20003 bne r21,r2,0x000857a8       #Branch if r21 pointer is not invalid. fairly easy to manage in all honesty
  0008579c: 00000000 nop |
+
0008579c: 00000000 nop                         |
  000857a0: 0c011282 jal 0x00044a08 |--> [[00044a08 - 00044a30]] moves r4 to r5 and clears r4
+
000857a0: 0c011282 jal 0x00044a08                 |--> [[00044a08 - 00044a30]] moves r4 to r5 and clears r4
  000857a4: 34040008 ori r4,r0,0x0008 |r4 = 0x08
+
000857a4: 34040008 ori r4,r0,0x0008               |r4 = 0x08
 
+
  000857a8: 92a20000 lbu r2,0x0000(r21) Load WEP//EFF spritesheet data
+
000857a8: 92a20000 lbu r2,0x0000(r21)         Load WEP//EFF spritesheet data
  000857ac: 8e720024 lw r18,0x0024(r19) load Display data (either for WEP or EFF)
+
000857ac: 8e720024 lw r18,0x0024(r19)         load Display data (either for WEP or EFF)
  000857b0: 30420007 andi r2,r2,0x0007 No. graphics to load
+
000857b0: 30420007 andi r2,r2,0x0007           No. graphics to load
  000857b4: 24420001 addiu r2,r2,0x0001             r2 = r2 + 1
+
000857b4: 24420001 addiu r2,r2,0x0001         r2 = r2 + 1
  000857b8: a2420003 sb r2,0x0003(r18)               saves number of attacking sprites to display
+
000857b8: a2420003 sb r2,0x0003(r18)           saves number of attacking sprites to display
  000857bc: 92a30000 lbu r3,0x0000(r21)             load WEP//EFF spritesheet data
+
000857bc: 92a30000 lbu r3,0x0000(r21)         load WEP//EFF spritesheet data
  000857c0: 00000000 nop
+
000857c0: 00000000 nop
  000857c4: 000318c2 srl r3,r3,0x03                 r3 = r3/8
+
000857c4: 000318c2 srl r3,r3,0x03             r3 = r3/8
  000857c8: 00031840 sll r3,r3,0x01                 r3 = r3*2 (filters out rotation pointer, then makes it a pointer)
+
000857c8: 00031840 sll r3,r3,0x01             r3 = r3*2 (filters out rotation pointer, then makes it a pointer)
  000857cc: 3c018009 lui r1,0x8009
+
000857cc: 3c018009 lui r1,0x8009
  000857d0: 00230821 addu r1,r1,r3
+
000857d0: 00230821 addu r1,r1,r3
  000857d4: 94244508 lhu r4,0x4508(r1)               load spin on Y axis?
+
000857d4: 94244508 lhu r4,0x4508(r1)           load spin on Y axis?
  000857d8: 00000000 nop
+
000857d8: 00000000 nop
  000857dc: a644000c sh r4,0x000c(r18)               store spin on Y axis?
+
000857dc: a644000c sh r4,0x000c(r18)           store spin on Y axis?
  000857e0: 97c30012 lhu r3,0x0012(r30)               load action halfword? (transparent checks, and moving/acting?)
+
000857e0: 97c30012 lhu r3,0x0012(r30)         load action halfword? (transparent checks, and moving/acting?)
  000857e4: 00000000 nop
+
000857e4: 00000000 nop
  000857e8: 30630002 andi r3,r3,0x0002               checks for moving/acting? (if the weapon is animated)
+
000857e8: 30630002 andi r3,r3,0x0002           checks for moving/acting? (if the weapon is animated)
  000857ec: 10600003 beq r3,r0,0x000857fc             branch if not animated? acting? (branch if weapon is not animated for this frame (moving from its current position)
+
000857ec: 10600003 beq r3,r0,0x000857fc       branch if not animated? acting? (branch if weapon is not animated for this frame (moving from its current position)
  000857f0: 305400ff andi r20,r2,0x00ff               move r2 to r20
+
000857f0: 305400ff andi r20,r2,0x00ff         move r2 to r20
  000857f4: 00041023 subu r2,r0,r4                   r2 = - Y axis spin
+
000857f4: 00041023 subu r2,r0,r4                   r2 = - Y axis spin
  000857f8: a642000c sh r2,0x000c(r18)               store - Y axis spin?
+
000857f8: a642000c sh r2,0x000c(r18)               store - Y axis spin?
  000857fc: 2e820004 sltiu r2,r20,0x0004             set r2 = true if r20 < 0x4
+
000857fc: 2e820004 sltiu r2,r20,0x0004         set r2 = true if r20 < 0x4
  00085800: 14400002 bne r2,r0,0x0008580c             branch if so
+
00085800: 14400002 bne r2,r0,0x0008580c       branch if so
  00085804: 34020001 ori r2,r0,0x0001                 r2 = 1
+
00085804: 34020001 ori r2,r0,0x0001           r2 = 1
  00085808: 34140003 ori r20,r0,0x0003               r20 = 3
+
00085808: 34140003 ori r20,r0,0x0003               r20 = 3
  0008580c: 96630002 lhu r3,0x0002(r19)               load graphic type (1 is weapon, 2 is Effect)
+
0008580c: 96630002 lhu r3,0x0002(r19)         load graphic type (1 is weapon, 2 is Effect)
  00085810: 92b70001 lbu r23,0x0001(r21)             load Weapon's EFF graphic bitflags from WEP1 SHP data
+
00085810: 92b70001 lbu r23,0x0001(r21)         load Weapon's EFF graphic bitflags from WEP1 SHP data
  00085814: 10620005 beq r3,r2,0x0008582c             Branch if graphic type = Weapon
+
00085814: 10620005 beq r3,r2,0x0008582c       Branch if graphic type = Weapon
  00085818: 34020002 ori r2,r0,0x0002                 r2 = 2
+
00085818: 34020002 ori r2,r0,0x0002           r2 = 2
  0008581c: 1062003a beq r3,r2,0x00085908             Branch if graphic type = Effect
+
0008581c: 1062003a beq r3,r2,0x00085908           Branch if graphic type = Effect
  00085820: 32e20060 andi r2,r23,0x0060               moves 0x40, 0x20 bit flags to r2
+
00085820: 32e20060 andi r2,r23,0x0060             moves 0x40, 0x20 bit flags to r2
  00085824: 08021675 j 0x000859d4
+
00085824: 08021675 j 0x000859d4
  00085828: a6710006 sh r17,0x0006(r19)               Saves byte command counter to WEP Data
+
00085828: a6710006 sh r17,0x0006(r19)                 Saves byte command counter to WEP Data
  
  WEP
+
WEP
  0008582c: 32e20060 andi r2,r23,0x0060               moves 0x40 and 0x20 bit flags into r2?
+
0008582c: 32e20060 andi r2,r23,0x0060         moves 0x40 and 0x20 bit flags into r2?
  00085830: 34420009 ori r2,r2,0x0009                 r2 = all previous flags + 0x8, 0x1 (? and transparent)
+
00085830: 34420009 ori r2,r2,0x0009           r2 = all previous flags + 0x8, 0x1 (? and transparent)
  00085834: 00008021 addu r16,r0,r0                   clears r16
+
00085834: 00008021 addu r16,r0,r0             clears r16
  00085838: a6420004 sh r2,0x0004(r18)               store Effect Graphic Bitflags
+
00085838: a6420004 sh r2,0x0004(r18)           store Effect Graphic Bitflags
  0008583c: 8fac0028 lw r12,0x0028(r29)               load Graphic palette? (r6 from start of routine)
+
0008583c: 8fac0028 lw r12,0x0028(r29)         load Graphic palette? (r6 from start of routine)
  00085840: 97c20010 lhu r2,0x0010(r30)               load VRAM Palette ID
+
00085840: 97c20010 lhu r2,0x0010(r30)         load VRAM Palette ID
  00085844: 000c1980 sll r3,r12,0x06                 r3 = r12 * 64
+
00085844: 000c1980 sll r3,r12,0x06             r3 = r12 * 64
  00085848: 00431021 addu r2,r2,r3                   r2 = VRAM Palette + r3
+
00085848: 00431021 addu r2,r2,r3               r2 = VRAM Palette + r3
  0008584c: 24420080 addiu r2,r2,0x0080               r2 + 0x80
+
0008584c: 24420080 addiu r2,r2,0x0080         r2 + 0x80
  00085850: 1280005f beq r20,r0,0x000859d0           branch if r20 = 0
+
00085850: 1280005f beq r20,r0,0x000859d0       branch if r20 = 0
  00085854: a6420006 sh r2,0x0006(r18)               store VRAM palette ID + other nonsense
+
00085854: a6420006 sh r2,0x0006(r18)           store VRAM palette ID + other nonsense
  00085858: 3205ffff andi r5,r16,0xffff               r5 = r16 (number of sprites already loaded from WEP1 spritesheet)
+
00085858: 3205ffff andi r5,r16,0xffff             r5 = r16 (number of sprites already loaded from WEP1 spritesheet)
  0008585c: 00051080 sll r2,r5,0x02                   r2 = r5 * 4  
+
0008585c: 00051080 sll r2,r5,0x02                 r2 = r5 * 4  
  00085860: 24420002 addiu r2,r2,0x0002               r2 = r2 + 2
+
00085860: 24420002 addiu r2,r2,0x0002             r2 = r2 + 2
  00085864: 02a21021 addu r2,r21,r2                   WEP1 SHP + Graphic location
+
00085864: 02a21021 addu r2,r21,r2                 WEP1 SHP + Graphic location
  00085868: 02402021 addu r4,r18,r0                   r4 = graphic Display data
+
00085868: 02402021 addu r4,r18,r0                 r4 = graphic Display data
  0008586c: 26100001 addiu r16,r16,0x0001             count number of WEP sprites loaded this frame
+
0008586c: 26100001 addiu r16,r16,0x0001           count number of WEP sprites loaded this frame
  00085870: 944b0002 lhu r11,0x0002(r2)               load Graphic size?? (and tile offset??)
+
00085870: 944b0002 lhu r11,0x0002(r2)             load Graphic size?? (and tile offset??)
  00085874: 80460000 lb r6,0x0000(r2)                 load X Shift
+
00085874: 80460000 lb r6,0x0000(r2)               load X Shift
  00085878: 80470001 lb r7,0x0001(r2)                 load Y Shift
+
00085878: 80470001 lb r7,0x0001(r2)               load Y Shift
  0008587c: 97ac0038 lhu r12,0x0038(r29)             load weapon graphic ID*8 (in battle sprite from WEP1)
+
0008587c: 97ac0038 lhu r12,0x0038(r29)             load weapon graphic ID*8 (in battle sprite from WEP1)
  00085880: 31633c00 andi r3,r11,0x3c00              r3 = size reference?
+
00085880: 31633c00 andi r3,r11,0x3c00              r3 = size reference?
  00085884: 000319c2 srl r3,r3,0x07                  r3 = size (?) / 128
+
00085884: 000319c2 srl r3,r3,0x07                  r3 = size (?) / 128
  00085888: 316203ff andi r2,r11,0x03ff              r2 = Y Tile offset (total tile offset?)
+
00085888: 316203ff andi r2,r11,0x03ff              r2 = Y Tile offset (total tile offset?)
  0008588c: 3048001f andi r8,r2,0x001f              r8 = X tile offset
+
0008588c: 3048001f andi r8,r2,0x001f              r8 = X tile offset
  00085890: 000840c0 sll r8,r8,0x03                  X offset*8
+
00085890: 000840c0 sll r8,r8,0x03                  X offset*8
  00085894: 00021142 srl r2,r2,0x05                  offset/32
+
00085894: 00021142 srl r2,r2,0x05                  offset/32
  00085898: 000210c0 sll r2,r2,0x03                  offset/32 * 8 (gets rid of X offset?)
+
00085898: 000210c0 sll r2,r2,0x03                  offset/32 * 8 (gets rid of X offset?)
  0008589c: 01821021 addu r2,r12,r2                  weapon graphic ID*8 + offset/32 * 8
+
0008589c: 01821021 addu r2,r12,r2                  weapon graphic ID*8 + offset/32 * 8
  000858a0: 3c018009 lui r1,0x8009
+
000858a0: 3c018009 lui r1,0x8009  
  000858a4: 00230821 addu r1,r1,r3                  r1 = 0x80090000 + r3 (size?)
+
000858a4: 00230821 addu r1,r1,r3                  r1 = 0x80090000 + r3 (size?)
  000858a8: 8c2946c8 lw r9,0x46c8(r1)                r9 = raw image width (word?)
+
000858a8: 8c2946c8 lw r9,0x46c8(r1)                r9 = raw image width (word?)
  000858ac: 3c018009 lui r1,0x8009
+
000858ac: 3c018009 lui r1,0x8009  
  000858b0: 00230821 addu r1,r1,r3
+
000858b0: 00230821 addu r1,r1,r3  
  000858b4: 8c2a46cc lw r10,0x46cc(r1)              r10 = raw image height
+
000858b4: 8c2a46cc lw r10,0x46cc(r1)              r10 = raw image height
  000858b8: 32e30061 andi r3,r23,0x0061              r3 = 0x40, 0x20, 0x1 bit flags
+
000858b8: 32e30061 andi r3,r23,0x0061              r3 = 0x40, 0x20, 0x1 bit flags
  000858bc: afa20014 sw r2,0x0014(r29)              store Y offset on WEP sheet to load from
+
000858bc: afa20014 sw r2,0x0014(r29)              store Y offset on WEP sheet to load from
  000858c0: 3162c000 andi r2,r11,0xc000               r2 = X/Y reverse (? bitflags?)
+
000858c0: 3162c000 andi r2,r11,0xc000             r2 = X/Y reverse (? bitflags?)
  000858c4: 00021342 srl r2,r2,0x0d                   
+
000858c4: 00021342 srl r2,r2,0x0d                   
  000858c8: 00621825 or r3,r3,r2                    stores bitflag on top of r3?
+
000858c8: 00621825 or r3,r3,r2                    stores bitflag on top of r3?
  000858cc: afa80010 sw r8,0x0010(r29)              store X tile (pixel?) offset
+
000858cc: afa80010 sw r8,0x0010(r29)              store X tile (pixel?) offset
  000858d0: afa30020 sw r3,0x0020(r29)              store reversal bytes (bit flags)
+
000858d0: afa30020 sw r3,0x0020(r29)              store reversal bytes (bit flags)
  000858d4: 00094cc0 sll r9,r9,0x13                  r9 = raw image width * 8192
+
000858d4: 00094cc0 sll r9,r9,0x13                  r9 = raw image width * 8192
  000858d8: 00094c03 sra r9,r9,0x10                  r9 = raw image width * 8192 / 1024 (total r9 * 8)
+
000858d8: 00094c03 sra r9,r9,0x10                  r9 = raw image width * 8192 / 1024 (total r9 * 8)
  000858dc: 000a54c0 sll r10,r10,0x13
+
000858dc: 000a54c0 sll r10,r10,0x13  
  000858e0: 000a5403 sra r10,r10,0x10                same deal but with r10
+
000858e0: 000a5403 sra r10,r10,0x10                same deal but with r10
  000858e4: afa90018 sw r9,0x0018(r29)              save image width to stack
+
000858e4: afa90018 sw r9,0x0018(r29)              save image width to stack
  000858e8: 0c01ed3b jal 0x0007b4ec                  [[Store Sprite Display Data]]
+
000858e8: 0c01ed3b jal 0x0007b4ec                  [[Store Sprite Display Data]]
  000858ec: afaa001c sw r10,0x001c(r29)              save image height to stack
+
000858ec: afaa001c sw r10,0x001c(r29)              save image height to stack
 
+
   
  000858f0: 3202ffff andi r2,r16,0xffff              r2 = r16
+
000858f0: 3202ffff andi r2,r16,0xffff              r2 = r16
  000858f4: 0054102b sltu r2,r2,r20                  set r2 = true if section counter (?) < r20
+
000858f4: 0054102b sltu r2,r2,r20                  set r2 = true if section counter (?) < r20
  000858f8: 1440ffd8 bne r2,r0,0x0008585c            branch if so
+
000858f8: 1440ffd8 bne r2,r0,0x0008585c            branch if so
  000858fc: 3205ffff andi r5,r16,0xffff              r5 = r16
+
000858fc: 3205ffff andi r5,r16,0xffff              r5 = r16
  00085900: 08021675 j 0x000859d4                   jump ahead
+
00085900: 08021675 j 0x000859d4                       jump ahead
  00085904: a6710006 sh r17,0x0006(r19)              save incremenet (?)
+
00085904: a6710006 sh r17,0x0006(r19)                 save increment (?)
 +
   
 +
00085908: 34420008 ori r2,r2,0x0008                add 0x8 bit flag
 +
0008590c: 00008021 addu r16,r0,r0                  clears r16
 +
00085910: a6420004 sh r2,0x0004(r18)              save new VRAM spritesheet ID?
 +
00085914: 8fac0028 lw r12,0x0028(r29)              Load Sprite palette ID (R6 at start of routine)
 +
00085918: 97c20010 lhu r2,0x0010(r30)              Load VRAM palette ID
 +
0008591c: 000c1980 sll r3,r12,0x06                r3 = Sprite Palette ID * 64
 +
00085920: 00431021 addu r2,r2,r3                  r2 = VRAM Palette ID + Sprite Palette ID * 64
 +
00085924: 24420080 addiu r2,r2,0x0080              r2 = r2 + 0x80
 +
00085928: 12800029 beq r20,r0,0x000859d0          branch if r20 = 0
 +
0008592c: a6420006 sh r2,0x0006(r18)              Save new VRAM Palette ID
 +
00085930: 3205ffff andi r5,r16,0xffff                  r5 = r16 (section counter?)
 +
                                                        #Loop start
 +
00085934: 00051080 sll r2,r5,0x02                          r2 = r5 * 4
 +
00085938: 24420002 addiu r2,r2,0x0002                      r2 = r2 + 2
 +
0008593c: 02a21021 addu r2,r21,r2                          r2 = SHP Data pointer + r2
 +
00085940: 02402021 addu r4,r18,r0                          r4 = ? Display pointer
 +
00085944: 26100001 addiu r16,r16,0x0001                    increment section counter?
 +
00085948: 944b0002 lhu r11,0x0002(r2)                      Load graphic size?? (And pixel offset?)
 +
0008594c: 80460000 lb r6,0x0000(r2)                        Load X shift
 +
00085950: 80470001 lb r7,0x0001(r2)                        Load Y shift
 +
00085954: 31633c00 andi r3,r11,0x3c00                      Size reference?
 +
00085958: 000319c2 srl r3,r3,0x07                          Size reference? / 128
 +
0008595c: 316203ff andi r2,r11,0x03ff                      r2 = Pixel displacement? (Total?)
 +
00085960: 3048001f andi r8,r2,0x001f                      r8 = Raw X Pixel displacement
 +
00085964: 000840c0 sll r8,r8,0x03                          r8 * 8
 +
00085968: 00021142 srl r2,r2,0x05 
 +
0008596c: 000210c0 sll r2,r2,0x03                          r2 = Y Pixel displacement
 +
00085970: 3c018009 lui r1,0x8009 
 +
00085974: 00230821 addu r1,r1,r3 
 +
00085978: 8c2946c8 lw r9,0x46c8(r1)                        r9 = Raw image Width
 +
0008597c: 3c018009 lui r1,0x8009 
 +
00085980: 00230821 addu r1,r1,r3 
 +
00085984: 8c2a46cc lw r10,0x46cc(r1)                      r10 = Raw image height
 +
00085988: 32e30061 andi r3,r23,0x0061                      r3 = 0x40, 0x20, 0x01 bitflags
 +
0008598c: afa20014 sw r2,0x0014(r29)                      Save Y pixel displacement
 +
00085990: 3162c000 andi r2,r11,0xc000                      r2 = reverse bitflags
 +
00085994: 00021342 srl r2,r2,0x0d              
 +
00085998: 00621825 or r3,r3,r2                            combine ?? bitflags and reverse bitflags
 +
0008599c: afa80010 sw r8,0x0010(r29)                      save X Pixel displacement
 +
000859a0: afa30020 sw r3,0x0020(r29)                      save reverse bitflags?
 +
000859a4: 00094cc0 sll r9,r9,0x13 
 +
000859a8: 00094c03 sra r9,r9,0x10                          r9 = actual image width
 +
000859ac: 000a54c0 sll r10,r10,0x13   
 +
000859b0: 000a5403 sra r10,r10,0x10                        r10 = actual image height
 +
000859b4: afa90018 sw r9,0x0018(r29)                      Save image width
 +
000859b8: 0c01ed3b jal 0x0007b4ec                          [[Store Sprite Display Data]]
 +
000859bc: afaa001c sw r10,0x001c(r29)                     Save image height
 +
000859c0: 3202ffff andi r2,r16,0xffff                      r2 =  r16
 +
000859c4: 0054102b sltu r2,r2,r20                          set r2 = 1 if r16 < r20
 +
000859c8: 1440ffda bne r2,r0,0x00085934                    loop
 +
000859cc: 3205ffff andi r5,r16,0xffff                      r5 = r16
 +
000859d0: a6710006 sh r17,0x0006(r19)              Save Frame Command? Counter
 +
000859d4: 97ac0030 lhu r12,0x0030(r29)            Load Frame + all that other jazz
 +
000859d8: 00000000 nop
 +
000859dc: a66c0008 sh r12,0x0008(r19)              Save Frame + all that other jazz
 +
000859e0: a6760004 sh r22,0x0004(r19)              Save weapon animation
 +
000859e4: 8fbf0064 lw r31,0x0064(r29)
 +
000859e8: 8fbe0060 lw r30,0x0060(r29)
 +
000859ec: 8fb7005c lw r23,0x005c(r29)
 +
000859f0: 8fb60058 lw r22,0x0058(r29)
 +
000859f4: 8fb50054 lw r21,0x0054(r29)
 +
000859f8: 8fb40050 lw r20,0x0050(r29)
 +
000859fc: 8fb3004c lw r19,0x004c(r29)
 +
00085a00: 8fb20048 lw r18,0x0048(r29)
 +
00085a04: 8fb10044 lw r17,0x0044(r29)
 +
00085a08: 8fb00040 lw r16,0x0040(r29)
 +
00085a0c: 27bd0068 addiu r29,r29,0x0068
 +
00085a10: 03e00008 jr r31
 +
00085a14: 00000000 nop
  
  00085908: 34420008 ori r2,r2,0x0008                add 0x8 bit flag
 
  0008590c: 00008021 addu r16,r0,r0                  clears r16
 
  00085910: a6420004 sh r2,0x0004(r18)     save new VRAM spritesheet ID?
 
  00085914: 8fac0028 lw r12,0x0028(r29)     Load Sprite palette ID (R6 at start of routine)
 
  00085918: 97c20010 lhu r2,0x0010(r30)     Load VRAM palette ID
 
  0008591c: 000c1980 sll r3,r12,0x06     r3 = Sprite Palette ID * 64
 
  00085920: 00431021 addu r2,r2,r3                  r2 = VRAM Palette ID + Sprite Palette ID * 64
 
  00085924: 24420080 addiu r2,r2,0x0080              r2 = r2 + 0x80
 
  00085928: 12800029 beq r20,r0,0x000859d0     branch if r20 = 0
 
  0008592c: a6420006 sh r2,0x0006(r18)              Save new VRAM Palette ID
 
  00085930: 3205ffff andi r5,r16,0xffff              r5 = r16 (section counter?)
 
  00085934: 00051080 sll r2,r5,0x02     r2 = r5 * 4
 
  00085938: 24420002 addiu r2,r2,0x0002     r2 = r2 + 2
 
  0008593c: 02a21021 addu r2,r21,r2     r2 = SHP Data pointer + r2
 
  00085940: 02402021 addu r4,r18,r0     r4 = ? Display pointer
 
  00085944: 26100001 addiu r16,r16,0x0001     increment section counter?
 
  00085948: 944b0002 lhu r11,0x0002(r2)     Load graphic size?? (And pixel offset?)
 
  0008594c: 80460000 lb r6,0x0000(r2)     Load X shift
 
  00085950: 80470001 lb r7,0x0001(r2)     Load Y shift
 
  00085954: 31633c00 andi r3,r11,0x3c00     Size reference?
 
  00085958: 000319c2 srl r3,r3,0x07     Size reference? / 128
 
  0008595c: 316203ff andi r2,r11,0x03ff     r2 = Pixel displacement? (Total?)
 
  00085960: 3048001f andi r8,r2,0x001f     r8 = Raw X Pixel displacement
 
  00085964: 000840c0 sll r8,r8,0x03     r8 * 8
 
  00085968: 00021142 srl r2,r2,0x05
 
  0008596c: 000210c0 sll r2,r2,0x03     r2 = Y Pixel displacement
 
  00085970: 3c018009 lui r1,0x8009
 
  00085974: 00230821 addu r1,r1,r3
 
  00085978: 8c2946c8 lw r9,0x46c8(r1)     r9 = Raw image Width
 
  0008597c: 3c018009 lui r1,0x8009
 
  00085980: 00230821 addu r1,r1,r3
 
  00085984: 8c2a46cc lw r10,0x46cc(r1)     r10 = Raw image height
 
  00085988: 32e30061 andi r3,r23,0x0061     r3 = 0x40, 0x20, 0x01 bitflags
 
  0008598c: afa20014 sw r2,0x0014(r29)     Save Y pixel displacement
 
  00085990: 3162c000 andi r2,r11,0xc000     r2 = reverse bitflags
 
  00085994: 00021342 srl r2,r2,0x0d    
 
  00085998: 00621825 or r3,r3,r2     combine ?? bitflags and reverse bitflags
 
  0008599c: afa80010 sw r8,0x0010(r29)              save X Pixel displacement
 
  000859a0: afa30020 sw r3,0x0020(r29)     save reverse bitflags?
 
  000859a4: 00094cc0 sll r9,r9,0x13
 
  000859a8: 00094c03 sra r9,r9,0x10     r9 = actual image width
 
  000859ac: 000a54c0 sll r10,r10,0x13
 
  000859b0: 000a5403 sra r10,r10,0x10     r10 = actual image height
 
  000859b4: afa90018 sw r9,0x0018(r29)     Save image width
 
  000859b8: 0c01ed3b jal 0x0007b4ec     [[Store Sprite Display Data]]
 
  000859bc: afaa001c sw r10,0x001c(r29)     Save image height
 
  000859c0: 3202ffff andi r2,r16,0xffff              r2 =  r16
 
  000859c4: 0054102b sltu r2,r2,r20     set r2 = 1 if r16 < r20
 
  000859c8: 1440ffda bne r2,r0,0x00085934     branch to earlier in routine if so
 
  000859cc: 3205ffff andi r5,r16,0xffff     r5 = r16
 
  000859d0: a6710006 sh r17,0x0006(r19) Save Frame Command? Counter
 
  000859d4: 97ac0030 lhu r12,0x0030(r29)      Load Frame + all that other jazz
 
  000859d8: 00000000 nop
 
  000859dc: a66c0008 sh r12,0x0008(r19)        Save Frame + all that other jazz
 
  000859e0: a6760004 sh r22,0x0004(r19)        Save weapon animation
 
  000859e4: 8fbf0064 lw r31,0x0064(r29)
 
  000859e8: 8fbe0060 lw r30,0x0060(r29)
 
  000859ec: 8fb7005c lw r23,0x005c(r29)
 
  000859f0: 8fb60058 lw r22,0x0058(r29)
 
  000859f4: 8fb50054 lw r21,0x0054(r29)
 
  000859f8: 8fb40050 lw r20,0x0050(r29)
 
  000859fc: 8fb3004c lw r19,0x004c(r29)
 
  00085a00: 8fb20048 lw r18,0x0048(r29)
 
  00085a04: 8fb10044 lw r17,0x0044(r29)
 
  00085a08: 8fb00040 lw r16,0x0040(r29)
 
  00085a0c: 27bd0068 addiu r29,r29,0x0068
 
  00085a10: 03e00008 jr r31
 
  00085a14: 00000000 nop
 
  
  
  
 +
== Return Locations ==
 +
[[00085c0c - 000865a0]]
  
  Return locations:(?)
 
  [[00085c0c - 000865a0]]
 
</font></font>
 
  
  

Latest revision as of 08:52, 25 April 2025

Load WEP graphic from WEP1 Sheet
Expects r4 = pointer to miscellaneous unit data
Expects r5 = WEP1 or EFF sprite data
Expects r6 to be palette ID
 
0008526c: 27bdff98 addiu r29,r29,0xff98
00085270: afbe0060 sw r30,0x0060(r29)
00085274: 0080f021 addu r30,r4,r0              r30 = Points to misc. unit data data
00085278: afb3004c sw r19,0x004c(r29)
0008527c: 00a09821 addu r19,r5,r0              r19 = WEP sprite data
00085280: afb7005c sw r23,0x005c(r29)
00085284: 00e0b821 addu r23,r7,r0              r23 = value?
00085288: afbf0064 sw r31,0x0064(r29)
0008528c: afb60058 sw r22,0x0058(r29)
00085290: afb50054 sw r21,0x0054(r29)
00085294: afb40050 sw r20,0x0050(r29)
00085298: afb20048 sw r18,0x0048(r29)
0008529c: afb10044 sw r17,0x0044(r29)
000852a0: afb00040 sw r16,0x0040(r29)
000852a4: afa60028 sw r6,0x0028(r29)
000852a8: 93c2013a lbu r2,0x013a(r30)          load used weapon
000852ac: 96760004 lhu r22,0x0004(r19)         load current animation
000852b0: 00021040 sll r2,r2,0x01              r2 = weapon ID * 2
000852b4: 3c018009 lui r1,0x8009
000852b8: 00220821 addu r1,r1,r2               r1 = 0x80090000 + ID * 2
000852bc: 902243e5 lbu r2,0x43e5(r1)           load used weapon graphic ID
000852c0: 96710006 lhu r17,0x0006(r19)         load frame command? Counter
000852c4: 000210c0 sll r2,r2,0x03 
000852c8: a7a20038 sh r2,0x0038(r29)           store used weapon graphic ID*8
000852cc: 8e75001c lw r21,0x001c(r19)          load SHP data
000852d0: 8e740020 lw r20,0x0020(r19)          load SEQ data
000852d4: 16e00002 bne r23,r0,0x000852e0       #branch if value(?) != 0
000852d8: 32d0ffff andi r16,r22,0xffff             |r16 = animation #
000852dc: 2631fffe addiu r17,r17,0xfffe            |counter - 2
000852e0: 2e020101 sltiu r2,r16,0x0101         set if animation < 0x101
000852e4: 14400004 bne r2,r0,0x000852f8        #branch if so
000852e8: 00101080 sll r2,r16,0x02                 |animation*4
000852ec: 0c011282 jal 0x00044a08                  |--> 00044a08 - 00044a30 Also clears something. I dunno what it is though.
000852f0: 34040009 ori r4,r0,0x0009                |clears r4 and moves 0x09 to r5. for some reason.
000852f4: 00101080 sll r2,r16,0x02                 |r2 = weapon anim*4
000852f8: 00541021 addu r2,r2,r20              r2 = WP anim*4 + SEQ data location
000852fc: 8c430000 lw r3,0x0000(r2)            load frame commands? Pointer from SEQ table (Make a new page for SEQ and SHP?)
00085300: 2402ffff addiu r2,r0,0xffff          this seems to be a rather redundant check for garbage data.
00085304: 14620005 bne r3,r2,0x0008531c        #branch if Frame command pointer is not 0xffff
00085308: 00161880 sll r3,r22,0x02                 |r3 = weapon anim*4
0008530c: 34040009 ori r4,r0,0x0009                |r4 = 0x9
00085310: 0c011282 jal 0x00044a08                  |--> 00044a08 - 00044a30 clears r4 and moves to r5
00085314: 00000000 nop                             |
00085318: 00161880 sll r3,r22,0x02                 |r3 = weapon anim*4
0008531c: 00741821 addu r3,r3,r20              animation*4 + SEQ data
00085320: 00111400 sll r2,r17,0x10             r2 = r17 * 2^16
00085324: 8c650000 lw r5,0x0000(r3)            Load Frame commands? pointer from SEQ table AGAIN
00085328: 00021403 sra r2,r2,0x10              r2 = first halfword of r17 (even though it was already a halfword and unsigned)
0008532c: 00a21021 addu r2,r5,r2               r2 = frame command counter + frame command location
00085330: 90430000 lbu r3,0x0000(r2)           load Frame command
00085334: 340200ff ori r2,r0,0x00ff
00085338: 146200f5 bne r3,r2,0x00085710        #branch if frame command is not ff
0008533c: 00111c00 sll r3,r17,0x10                 |r3 = r17 * 2^16 (Moves halfword to upper half)
00085340: 26230001 addiu r3,r17,0x0001             |r3 = r17 + 1
00085344: 00031400 sll r2,r3,0x10                  |in the event that the first frame command? = ff, another 1 is added to r2, and increment is increased by an additional 1, also.
00085348: 00021403 sra r2,r2,0x10                  |move r17 to r2
0008534c: 00a21021 addu r2,r5,r2                   |r2 = r2 + r5
00085350: 90420000 lbu r2,0x0000(r2)               |Load frame command?
00085354: 24710001 addiu r17,r3,0x0001             |r17 = r3 + 1
00085358: 2443ff2d addiu r3,r2,0xff2d              |r3 = frame command? - 0xd3
0008535c: 2c62002d sltiu r2,r3,0x002d              |set r2 = true if r3 < 0x00d2 (if frame command > 0xd3)
00085360: 104000e9 beq r2,r0,0x00085708            #branch if not true (continues beyond table)
00085364: 00031080 sll r2,r3,0x02                  |r2 = r3 * 4 (location pointer)
00085368: 3c018007 lui r1,0x8007                   |
0008536c: 00220821 addu r1,r1,r2                   |r1 = 0x80070000 + r2
00085370: 8c228028 lw r2,-0x7fd8(r1)               |loads a word from the table at this location, based on weapon and angle (Link a new page with the table here?)
                            Frame Command = 
                                0xd3: 0x800856b8 (skipped by above conditional)
                                0xd4: 0x80085708
                                0xd5: 0x800853b4
                                0xd6: 0x80085420
                                0xd7: 0x80085700
                                0xd8: 0x800854a4
                                0xd9: 0x800853d4
                                0xda: 0x80085708
                                0xdb: 0x80085470
                                0xdc: 0x800853e4
                                0xdd: 0x800854d8
                                0xde: 0x80085318 (jumps further back in routine)
                                0xdf: 0x800853c8
                          0xe0, 0xe1: 0x80085318 (^)
                                0xe2: 0x800853f4
                          0xe3, 0xe4: 0x80085700
                                0xe5: 0x80085668
                    0xe6, 0xe7, 0xe8: 0x800853dc
                                0xe9: 0x80085700
                                0xea: 0x800853dc
                                0xeb: 0x80085394
                                0xec: 0x80085380
        0xed, 0xee, 0xef, 0xf0, 0xf1: 0x80085700
                                0xf2: 0x800855ec
                    0xf3, 0xf4, 0xf5: 0x80085700
                                0xf6: 0x8008543c
                                0xf7: 0x800856b0
                                0xf8: 0x800853dc
                                0xf9: 0x8008550c
                                0xfa: 0x800856b0
                                0xfb: 0x800853dc
                                0xfc: 0x80085570
                                0xfd: 0x800856cc
                                0xfe: 0x800853a8
                                0xff: 0x800853ac
00085374: 00000000 nop
00085378: 00400008 jr r2                       jumps to address
0008537c: 00000000 nop
00085380: 96620018 lhu r2,0x0018(r19)          Load rotation flags
00085384: 00000000 nop
00085388: 38420002 xori r2,r2,0x0002           flips horizontal bitflag
0008538c: 080214c6 j 0x00085318                Engage next frame command
00085390: a6620018 sh r2,0x0018(r19)           Save new rotation flag
00085394: 96620018 lhu r2,0x0018(r19)          load rotation flags
00085398: 00000000 nop
0008539c: 38420004 xori r2,r2,0x0004           flips vertical bitflag
000853a0: 080214c6 j 0x00085318                Engage next frame command
000853a4: a6620018 sh r2,0x0018(r19)           save new rotation flag
000853a8: a6600000 sh r0,0x0000(r19)           clears graphic trigger
000853ac: 08021679 j 0x000859e4                finish routine
000853b0: a660000a sh r0,0x000a(r19)           clear frame + frame delay + frame command
000853b4: 9662000c lhu r2,0x000c(r19)          Loads loop count
000853b8: 00008821 addu r17,r0,r0              clear frame command byte indicator
000853bc: 24420001 addiu r2,r2,0x0001          increment loop count
000853c0: 080214c6 j 0x00085318                Engage next frame command
000853c4: a662000c sh r2,0x000c(r19)           saves new loop count
000853c8: 8e620024 lw r2,0x0024(r19)           Load ? display data pointer
000853cc: 080214c6 j 0x00085318                engage next frame command 
000853d0: a440000c sh r0,0x000c(r2)            clear spin on Y axis
000853d4: 0c01a269 jal 0x000689a4              Set evade type data, item and throw stone hardcoding
000853d8: 03c02021 addu r4,r30,r0              moves misc unit data into r4
000853dc: 080214c6 j 0x00085318                queue next frame command
000853e0: 26310002 addiu r17,r17,0x0002        increment frame command byte indicator by 2
000853e4: 96710010 lhu r17,0x0010(r19)         ?
000853e8: 9676000e lhu r22,0x000e(r19)         Load Weapon animation from WEP1 data
000853ec: 080214c7 j 0x0008531c                engage next frame command
000853f0: 00161880 sll r3,r22,0x02             r3 = Weapon anim*4 (in case of error?)
000853f4: 00161880 sll r3,r22,0x02             move weapon anim * 4 to r3
000853f8: 00741821 addu r3,r3,r20              weapon animation's SEQ data
000853fc: 02201021 addu r2,r17,r0              r2 = frame command byte indicator
00085400: 00021400 sll r2,r2,0x10              compiler math
00085404: 8c630000 lw r3,0x0000(r3)            load spritesheet data
00085408: 00021403 sra r2,r2,0x10              compiler math
0008540c: 00621821 addu r3,r3,r2               r3 = r3 + r2
00085410: 90620000 lbu r2,0x0000(r3)           load Frame delay
00085414: 26310001 addiu r17,r17,0x0001        increment frame counter
00085418: 080214c6 j 0x00085318                queue next frame command
0008541c: a7c20014 sh r2,0x0014(r30)           save Frame delay to unit Misc data
00085420: 3c028009 lui r2,0x8009
00085424: 8c42612c lw r2,0x612c(r2)            load weapon sheathe check
00085428: 00000000 nop
0008542c: 144000a8 bne r2,r0,0x000856d0        #branch if not yet sheathing
00085430: 00161080 sll r2,r22,0x02             |r2 = weapon anim*4
00085434: 080214c6 j 0x00085318                    |engage next command
00085438: 26310001 addiu r17,r17,0x0001            |increment frame command pointer by 1 (branch continues beyond here)
0008543c: 02201021 addu r2,r17,r0              move frame command byte counter to r2
00085440: 26310001 addiu r17,r17,0x0001        increment counter
00085444: 00161880 sll r3,r22,0x02             weapon anim * 4
00085448: 00741821 addu r3,r3,r20              Weapon anim's SEQ data
0008544c: 00021400 sll r2,r2,0x10              compiler math
00085450: 8c630000 lw r3,0x0000(r3)            Load frame command pointer
00085454: 00021403 sra r2,r2,0x10              compiler math
00085458: 00621821 addu r3,r3,r2               r3 = location of frame command
0008545c: 90650000 lbu r5,0x0000(r3)           Load frame command byte
00085460: 0c01ae58 jal 0x0006b960              0006b960 - 0006b990 seems to be an input-y thing
00085464: 03c02021 addu r4,r30,r0              r4 = Unit misc data
00085468: 080214c7 j 0x0008531c                queue next frame command
0008546c: 00161880 sll r3,r22,0x02             r3 = weapon anim * 4
00085470: 00161880 sll r3,r22,0x02             r3 = weapon anim * 4
00085474: 00741821 addu r3,r3,r20              Weapon anim's SEQ Data
00085478: 02201021 addu r2,r17,r0              r2 = frame command byte counter
0008547c: 00021400 sll r2,r2,0x10              compiler math
00085480: 8c630000 lw r3,0x0000(r3)            Load spritesheet data
00085484: 00021403 sra r2,r2,0x10              compiler math
00085488: 00621821 addu r3,r3,r2               Weapon anim's spritesheet data
0008548c: 90620000 lbu r2,0x0000(r3)           Load Frame delay
00085490: 26310001 addiu r17,r17,0x0001        increment counter
00085494: 00021600 sll r2,r2,0x18            
00085498: 00021603 sra r2,r2,0x18
0008549c: 080214c6 j 0x00085318                Next command, with new frame delay :D
000854a0: a6620012 sh r2,0x0012(r19)           Save frame delay
000854a4: 00161880 sll r3,r22,0x02             Weapon anim * 4
000854a8: 00741821 addu r3,r3,r20              spritesheet data + weapon anim * 4
000854ac: 02201021 addu r2,r17,r0              Move counter to r2
000854b0: 00021400 sll r2,r2,0x10              compiler math
000854b4: 8c630000 lw r3,0x0000(r3)            frame command pointer
000854b8: 00021403 sra r2,r2,0x10              compiler math
000854bc: 00621821 addu r3,r3,r2               frame command pointer + counter
000854c0: 90620000 lbu r2,0x0000(r3)           Load byte at this location
000854c4: 26310001 addiu r17,r17,0x0001        increment counter
000854c8: 00021600 sll r2,r2,0x18
000854cc: 00021603 sra r2,r2,0x18
000854d0: 080214c6 j 0x00085318                next command
000854d4: a6620014 sh r2,0x0014(r19)           Save frame command byte to weapon rotation
000854d8: 00161080 sll r2,r22,0x02             Weapon anim * 4
000854dc: 00541021 addu r2,r2,r20              Weapon anim's SEQ data
000854e0: 02201821 addu r3,r17,r0              r3 = frame command byte counter
000854e4: 00031c00 sll r3,r3,0x10              compiler math
000854e8: a676000e sh r22,0x000e(r19)          save weapon animation to WEP1 data
000854ec: 8c420000 lw r2,0x0000(r2)            load command pointer
000854f0: 00031c03 sra r3,r3,0x10              compiler math
000854f4: 00431021 addu r2,r2,r3               Load location of byte of current frame command
000854f8: 90560000 lbu r22,0x0000(r2)          load byte to weapon anim (override? :O)
000854fc: 26310001 addiu r17,r17,0x0001        increment counter + 1
00085500: a6710010 sh r17,0x0010(r19)          save counter to WEP1 data
00085504: 080214c6 j 0x00085318                queue next command
00085508: 00008821 addu r17,r0,r0              clear counter
0008550c: 00162080 sll r4,r22,0x02             r4 = weapon anim * 4
00085510: 00942021 addu r4,r4,r20              Weapon anim's SEQ data
00085514: 00111400 sll r2,r17,0x10             moves counter to r2
00085518: 00021403 sra r2,r2,0x10
0008551c: 26250001 addiu r5,r17,0x0001         increment counter into r5
00085520: 8c830000 lw r3,0x0000(r4)            Load spritesheet data
00085524: 24b10001 addiu r17,r5,0x0001         r17 = counter + 2
00085528: 00621821 addu r3,r3,r2            
0008552c: 90620000 lbu r2,0x0000(r3)           loads ?
00085530: 97c30058 lhu r3,0x0058(r30)          loads some vector value?
00085534: 00021600 sll r2,r2,0x18              compiler math
00085538: 00021603 sra r2,r2,0x18              compiler math
0008553c: 00431021 addu r2,r2,r3               r2 = r2 + r3
00085540: a7c20058 sh r2,0x0058(r30)           save new value
00085544: 00051400 sll r2,r5,0x10              compiler math
00085548: 8c830000 lw r3,0x0000(r4)            load command pointer
0008554c: 00021403 sra r2,r2,0x10              compiler math
00085550: 00621821 addu r3,r3,r2               add ? and command pointer
00085554: 90620000 lbu r2,0x0000(r3)           load the command byte here
00085558: 97c3005a lhu r3,0x005a(r30)          Load another vector value? 
0008555c: 00021600 sll r2,r2,0x18
00085560: 00021603 sra r2,r2,0x18
00085564: 00431021 addu r2,r2,r3               Add the vector value to the command byte (not even related to the command? I don't think?)
00085568: 080214c6 j 0x00085318
0008556c: a7c2005a sh r2,0x005a(r30)           Save new value
00085570: 26260001 addiu r6,r17,0x0001         r6 = counter + 1
00085574: 00112400 sll r4,r17,0x10             r4 = counter
00085578: 24d10001 addiu r17,r6,0x0001         r17 = counter + 2
0008557c: 00161080 sll r2,r22,0x02             r2 = weapon anim * 4
00085580: 00541021 addu r2,r2,r20              load weapon anim's SEQ data
00085584: 00042403 sra r4,r4,0x10
00085588: 8c430000 lw r3,0x0000(r2)            Load command pointer
0008558c: 00061400 sll r2,r6,0x10              compiler math
00085590: 00021403 sra r2,r2,0x10              compiler math
00085594: 00642021 addu r4,r3,r4               r4 = command pointer + counter
00085598: 00621821 addu r3,r3,r2               r3 = command pointer + counter + 1
0008559c: 90820000 lbu r2,0x0000(r4)           load third command byte
000855a0: 90640000 lbu r4,0x0000(r3)           load fourth command byte
000855a4: 96630016 lhu r3,0x0016(r19)          ?
000855a8: 00021600 sll r2,r2,0x18
000855ac: 1060000b beq r3,r0,0x000855dc        branch if ? = 0
000855b0: 00022e03 sra r5,r2,0x18              |r5 = 3rd byte
000855b4: 96620016 lhu r2,0x0016(r19)              |load ? again
000855b8: 00000000 nop                             |
000855bc: 2442ffff addiu r2,r2,0xffff              |? - 1
000855c0: a6620016 sh r2,0x0016(r19)               |Save ? - 1
000855c4: 3042ffff andi r2,r2,0xffff               |does nothing
000855c8: 1040ff54 beq r2,r0,0x0008531c            #Branch back to start of routine if ? - 1 = 0
000855cc: 00161880 sll r3,r22,0x02                 |r3 = weapon anim * 4
000855d0: 24c2fffd addiu r2,r6,0xfffd                  |r2 = counter - 2
000855d4: 080214c7 j 0x0008531c                        |load next command
000855d8: 00a28821 addu r17,r5,r2                      |r17 = 3rd byte + counter - 2
000855dc: 24c2fffd addiu r2,r6,0xfffd          r2 = counter - 2
000855e0: 00a28821 addu r17,r5,r2              r17 = 3rd byte + counter - 2
000855e4: 080214c6 j 0x00085318                load next command
000855e8: a6640016 sh r4,0x0016(r19)           save fourth command byte as ?
000855ec: 26230001 addiu r3,r17,0x0001         Increment counter
000855f0: 00112400 sll r4,r17,0x10             compiler math
000855f4: 24710001 addiu r17,r3,0x0001         increment counter by 2
000855f8: 00161080 sll r2,r22,0x02             r2 = weapon anim*4
000855fc: 00541021 addu r2,r2,r20              weapon anim*4 + SEQ data pointer
00085600: 00042403 sra r4,r4,0x10              compiler math
00085604: 00031c00 sll r3,r3,0x10              compiler math
00085608: 8c420000 lw r2,0x0000(r2)            Load frame command locations?
0008560c: 00031c03 sra r3,r3,0x10              compiler math
00085610: 00442021 addu r4,r2,r4               get location of first frame command? (???)
00085614: 00431021 addu r2,r2,r3               get location of second frame command? (???)
00085618: 90900000 lbu r16,0x0000(r4)          Load first frame command?
0008561c: 90520000 lbu r18,0x0000(r2)          Load second frame command?
00085620: 16000004 bne r16,r0,0x00085634       #Branch if first frame command? is 0
00085624: 00101040 sll r2,r16,0x01             |r2 = Frame command? * 2
00085628: 0c011282 jal 0x00044a08                  00044a08 - 00044a30 
0008562c: 3404000d ori r4,r0,0x000d                |Move 0x0d into r5, then clear r4.
00085630: 00101040 sll r2,r16,0x01                 |r2 = Frame command? * 2
00085634: 00501021 addu r2,r2,r16              #r2 = Frame command? * 3
00085638: 00021100 sll r2,r2,0x04              r2 = Frame command? * 30
0008563c: 244201d8 addiu r2,r2,0x01d8          r2 = Frame command? * 30 + 0x1d8
00085640: 03c21021 addu r2,r30,r2              r2 = Misc Unit data + Frame command * 30 + 0x1d8
00085644: 34030001 ori r3,r0,0x0001            r3 = 0x1
00085648: a4520004 sh r18,0x0004(r2)           Save second frame command?
0008564c: a4400006 sh r0,0x0006(r2)            clears frame command counter
00085650: a443000a sh r3,0x000a(r2)            saves 0x1 to Frame delay ++
00085654: a4400012 sh r0,0x0012(r2)            clears frame delay
00085658: a4400014 sh r0,0x0014(r2)            clears graphic rotation
0008565c: a4400016 sh r0,0x0016(r2)            clears ??
00085660: 080214c6 j 0x00085318                queue next command
00085664: a4430000 sh r3,0x0000(r2)            saves 0x1 to graphic trigger
00085668: 26230001 addiu r3,r17,0x0001         r3 = counter + 1
0008566c: 00112400 sll r4,r17,0x10             r4 = counter
00085670: 24710001 addiu r17,r3,0x0001         r17 = counter + 2
00085674: 00161080 sll r2,r22,0x02             r2 = weapon anim * 4
00085678: 00541021 addu r2,r2,r20              weapon anim's SEQ data
0008567c: 00042403 sra r4,r4,0x10
00085680: 00031c00 sll r3,r3,0x10              compiler math
00085684: 8c420000 lw r2,0x0000(r2)            load command pointer for anim
00085688: 00031c03 sra r3,r3,0x10              compiler math
0008568c: 00442021 addu r4,r2,r4               r4 = location of 3rd byte
00085690: 00431021 addu r2,r2,r3               r2 = location of 4th byte
00085694: 90420000 lbu r2,0x0000(r2)           load 4th byte
00085698: 90840000 lbu r4,0x0000(r4)           load 3rd byte
0008569c: 8e630024 lw r3,0x0024(r19)           load ? display data
000856a0: 00021200 sll r2,r2,0x08              move command to upper byte
000856a4: 00822025 or r4,r4,r2                 combine the two bytes together
000856a8: 080214c6 j 0x00085318
000856ac: a464000c sh r4,0x000c(r3)            Save byte combo to spin on Y axis
000856b0: 080214c6 j 0x00085318
000856b4: 26310003 addiu r17,r17,0x0003        r17 = r17 + 5
000856b8: 3c038009 lui r3,0x8009
000856bc: 8c63612c lw r3,0x612c(r3)            Weapon sheath check
000856c0: 34020001 ori r2,r0,0x0001
000856c4: 1462000e bne r3,r2,0x00085700        branch if weapon sheath check is not 1
000856c8: 00000000 nop
000856cc: 00161080 sll r2,r22,0x02                 r2 = weapon anim * 4
000856d0: 00541021 addu r2,r2,r20                  r2 = location of frame command? Pointer
000856d4: 00111c00 sll r3,r17,0x10                 compiler math
000856d8: 8c420000 lw r2,0x0000(r2)                Load frame command? pointer
000856dc: 00031c03 sra r3,r3,0x10                  compiler math
000856e0: 00431021 addu r2,r2,r3                   frame command location
000856e4: 90420000 lbu r2,0x0000(r2)               Load frame command?
000856e8: 00000000 nop                 
000856ec: 00021600 sll r2,r2,0x18                  Frame command? * 2^18
000856f0: 00022e03 sra r5,r2,0x18                  Frame command? * 2^18 / 2^18 (this makes the number the conjugate negative number of itself (if the command was > 0x80) (0xf2 becomes -0xd))
000856f4: 2622fffe addiu r2,r17,0xfffe             r2 = frame command counter - 2
000856f8: 080214c6 j 0x00085318                    jumps back to earlier in routine
000856fc: 00a28821 addu r17,r5,r2                  frame command counter = frame command counter - 2 - Frame command conjugate (wrap your head around that one)
00085700: 080214c6 j 0x00085318
00085704: 26310001 addiu r17,r17,0x0001
00085708: 080214c4 j 0x00085310
0008570c: 3404000d ori r4,r0,0x000d
00085710: 00031c03 sra r3,r3,0x10              move frame counter to r3
00085714: 00a31821 addu r3,r5,r3               r3 = frame command location + frame counter
00085718: 93c2013b lbu r2,0x013b(r30)          load used weapon type
0008571c: 90630000 lbu r3,0x0000(r3)           load 1st command byte
00085720: 00021040 sll r2,r2,0x01              mod*2
00085724: 00551021 addu r2,r2,r21              mod*2 + SHP data
00085728: 94420000 lhu r2,0x0000(r2)           load first frame of weapon animation
0008572c: 96640014 lhu r4,0x0014(r19)          load frame offset
00085730: 00621821 addu r3,r3,r2               frame + 0 frame
00085734: 00832021 addu r4,r4,r3               r4 = frame + offset + 0 frame
00085738: a7a40030 sh r4,0x0030(r29)           store frame + offset + 0 frame
0008573c: 12e0000a beq r23,r0,0x00085768       #branch if wait = 0
00085740: 26240001 addiu r4,r17,0x0001         |increment Frame command counter?
00085744: 00041400 sll r2,r4,0x10                  |compiler math
00085748: 00021403 sra r2,r2,0x10                  |compiler math
0008574c: 00a21021 addu r2,r5,r2                   |SHP data location + increment?
00085750: 90420000 lbu r2,0x0000(r2)               |load delay
00085754: 96630012 lhu r3,0x0012(r19)              |load current wait
00085758: 24910001 addiu r17,r4,0x0001             |increment frame command counter again?
0008575c: 00431021 addu r2,r2,r3                   |r2 = delay + wait
00085760: 080215db j 0x0008576c                    |jump ahead
00085764: a662000a sh r2,0x000a(r19)               |store
00085768: 24910001 addiu r17,r4,0x0001         increments r17 if building next frame
0008576c: 97a30030 lhu r3,0x0030(r29)          Load frame + weapon rotation + 1st byte
00085770: 00000000 nop
00085774: 00031080 sll r2,r3,0x02              r2 = r3*4
00085778: 00551021 addu r2,r2,r21              WEP SHP Data
0008577c: 2c630201 sltiu r3,r3,0x0201          Set r3 = true if r3 is less than 0x201
00085780: 8c550040 lw r21,0x0040(r2)           Loads a spritesheet pointer?
00085784: 14600004 bne r3,r0,0x00085798        #branch if r3 is less than 0x201
00085788: 2402ffff addiu r2,r0,0xffff          |r2 = 0xffffffff
0008578c: 0c011282 jal 0x00044a08                  |--> 00044a08 - 00044a30 moves r4 to r5 and clears r4
00085790: 34040008 ori r4,r0,0x0008                |defunct error routine
00085794: 2402ffff addiu r2,r0,0xffff              |r2 = 0xffffffff
00085798: 16a20003 bne r21,r2,0x000857a8       #Branch if r21 pointer is not invalid. fairly easy to manage in all honesty
0008579c: 00000000 nop                         |
000857a0: 0c011282 jal 0x00044a08                  |--> 00044a08 - 00044a30 moves r4 to r5 and clears r4
000857a4: 34040008 ori r4,r0,0x0008                |r4 = 0x08

000857a8: 92a20000 lbu r2,0x0000(r21)          Load WEP//EFF spritesheet data
000857ac: 8e720024 lw r18,0x0024(r19)          load Display data (either for WEP or EFF)
000857b0: 30420007 andi r2,r2,0x0007           No. graphics to load
000857b4: 24420001 addiu r2,r2,0x0001          r2 = r2 + 1
000857b8: a2420003 sb r2,0x0003(r18)           saves number of attacking sprites to display
000857bc: 92a30000 lbu r3,0x0000(r21)          load WEP//EFF spritesheet data
000857c0: 00000000 nop
000857c4: 000318c2 srl r3,r3,0x03              r3 = r3/8
000857c8: 00031840 sll r3,r3,0x01              r3 = r3*2 (filters out rotation pointer, then makes it a pointer)
000857cc: 3c018009 lui r1,0x8009
000857d0: 00230821 addu r1,r1,r3
000857d4: 94244508 lhu r4,0x4508(r1)           load spin on Y axis?
000857d8: 00000000 nop
000857dc: a644000c sh r4,0x000c(r18)           store spin on Y axis?
000857e0: 97c30012 lhu r3,0x0012(r30)          load action halfword? (transparent checks, and moving/acting?)
000857e4: 00000000 nop
000857e8: 30630002 andi r3,r3,0x0002           checks for moving/acting? (if the weapon is animated)
000857ec: 10600003 beq r3,r0,0x000857fc        branch if not animated? acting? (branch if weapon is not animated for this frame (moving from its current position)
000857f0: 305400ff andi r20,r2,0x00ff          move r2 to r20
000857f4: 00041023 subu r2,r0,r4                   r2 = - Y axis spin
000857f8: a642000c sh r2,0x000c(r18)               store - Y axis spin?
000857fc: 2e820004 sltiu r2,r20,0x0004         set r2 = true if r20 < 0x4
00085800: 14400002 bne r2,r0,0x0008580c        branch if so
00085804: 34020001 ori r2,r0,0x0001            r2 = 1
00085808: 34140003 ori r20,r0,0x0003               r20 = 3
0008580c: 96630002 lhu r3,0x0002(r19)          load graphic type (1 is weapon, 2 is Effect)
00085810: 92b70001 lbu r23,0x0001(r21)         load Weapon's EFF graphic bitflags from WEP1 SHP data
00085814: 10620005 beq r3,r2,0x0008582c        Branch if graphic type = Weapon
00085818: 34020002 ori r2,r0,0x0002            r2 = 2
0008581c: 1062003a beq r3,r2,0x00085908            Branch if graphic type = Effect
00085820: 32e20060 andi r2,r23,0x0060              moves 0x40, 0x20 bit flags to r2
00085824: 08021675 j 0x000859d4
00085828: a6710006 sh r17,0x0006(r19)                  Saves byte command counter to WEP Data
WEP
0008582c: 32e20060 andi r2,r23,0x0060          moves 0x40 and 0x20 bit flags into r2?
00085830: 34420009 ori r2,r2,0x0009            r2 = all previous flags + 0x8, 0x1 (? and transparent)
00085834: 00008021 addu r16,r0,r0              clears r16
00085838: a6420004 sh r2,0x0004(r18)           store Effect Graphic Bitflags
0008583c: 8fac0028 lw r12,0x0028(r29)          load Graphic palette? (r6 from start of routine)
00085840: 97c20010 lhu r2,0x0010(r30)          load VRAM Palette ID
00085844: 000c1980 sll r3,r12,0x06             r3 = r12 * 64
00085848: 00431021 addu r2,r2,r3               r2 = VRAM Palette + r3
0008584c: 24420080 addiu r2,r2,0x0080          r2 + 0x80
00085850: 1280005f beq r20,r0,0x000859d0       branch if r20 = 0
00085854: a6420006 sh r2,0x0006(r18)           store VRAM palette ID + other nonsense
00085858: 3205ffff andi r5,r16,0xffff              r5 = r16 (number of sprites already loaded from WEP1 spritesheet)
0008585c: 00051080 sll r2,r5,0x02                  r2 = r5 * 4 
00085860: 24420002 addiu r2,r2,0x0002              r2 = r2 + 2
00085864: 02a21021 addu r2,r21,r2                  WEP1 SHP + Graphic location
00085868: 02402021 addu r4,r18,r0                  r4 = graphic Display data
0008586c: 26100001 addiu r16,r16,0x0001            count number of WEP sprites loaded this frame
00085870: 944b0002 lhu r11,0x0002(r2)              load Graphic size?? (and tile offset??)
00085874: 80460000 lb r6,0x0000(r2)                load X Shift
00085878: 80470001 lb r7,0x0001(r2)                load Y Shift
0008587c: 97ac0038 lhu r12,0x0038(r29)             load weapon graphic ID*8 (in battle sprite from WEP1)
00085880: 31633c00 andi r3,r11,0x3c00              r3 = size reference?
00085884: 000319c2 srl r3,r3,0x07                  r3 = size (?) / 128
00085888: 316203ff andi r2,r11,0x03ff              r2 = Y Tile offset (total tile offset?)
0008588c: 3048001f andi r8,r2,0x001f               r8 = X tile offset
00085890: 000840c0 sll r8,r8,0x03                  X offset*8
00085894: 00021142 srl r2,r2,0x05                  offset/32
00085898: 000210c0 sll r2,r2,0x03                  offset/32 * 8 (gets rid of X offset?)
0008589c: 01821021 addu r2,r12,r2                  weapon graphic ID*8 + offset/32 * 8
000858a0: 3c018009 lui r1,0x8009   
000858a4: 00230821 addu r1,r1,r3                   r1 = 0x80090000 + r3 (size?)
000858a8: 8c2946c8 lw r9,0x46c8(r1)                r9 = raw image width (word?)
000858ac: 3c018009 lui r1,0x8009   
000858b0: 00230821 addu r1,r1,r3   
000858b4: 8c2a46cc lw r10,0x46cc(r1)               r10 = raw image height
000858b8: 32e30061 andi r3,r23,0x0061              r3 = 0x40, 0x20, 0x1 bit flags
000858bc: afa20014 sw r2,0x0014(r29)               store Y offset on WEP sheet to load from
000858c0: 3162c000 andi r2,r11,0xc000              r2 = X/Y reverse (? bitflags?)
000858c4: 00021342 srl r2,r2,0x0d                  
000858c8: 00621825 or r3,r3,r2                     stores bitflag on top of r3?
000858cc: afa80010 sw r8,0x0010(r29)               store X tile (pixel?) offset
000858d0: afa30020 sw r3,0x0020(r29)               store reversal bytes (bit flags)
000858d4: 00094cc0 sll r9,r9,0x13                  r9 = raw image width * 8192
000858d8: 00094c03 sra r9,r9,0x10                  r9 = raw image width * 8192 / 1024 (total r9 * 8)
000858dc: 000a54c0 sll r10,r10,0x13    
000858e0: 000a5403 sra r10,r10,0x10                same deal but with r10
000858e4: afa90018 sw r9,0x0018(r29)               save image width to stack
000858e8: 0c01ed3b jal 0x0007b4ec                  Store Sprite Display Data
000858ec: afaa001c sw r10,0x001c(r29)              save image height to stack
   
000858f0: 3202ffff andi r2,r16,0xffff              r2 = r16
000858f4: 0054102b sltu r2,r2,r20                  set r2 = true if section counter (?) < r20
000858f8: 1440ffd8 bne r2,r0,0x0008585c            branch if so
000858fc: 3205ffff andi r5,r16,0xffff              r5 = r16
00085900: 08021675 j 0x000859d4                        jump ahead
00085904: a6710006 sh r17,0x0006(r19)                  save increment (?)
   
00085908: 34420008 ori r2,r2,0x0008                add 0x8 bit flag
0008590c: 00008021 addu r16,r0,r0                  clears r16
00085910: a6420004 sh r2,0x0004(r18)               save new VRAM spritesheet ID?
00085914: 8fac0028 lw r12,0x0028(r29)              Load Sprite palette ID (R6 at start of routine)
00085918: 97c20010 lhu r2,0x0010(r30)              Load VRAM palette ID
0008591c: 000c1980 sll r3,r12,0x06                 r3 = Sprite Palette ID * 64
00085920: 00431021 addu r2,r2,r3                   r2 = VRAM Palette ID + Sprite Palette ID * 64
00085924: 24420080 addiu r2,r2,0x0080              r2 = r2 + 0x80
00085928: 12800029 beq r20,r0,0x000859d0           branch if r20 = 0
0008592c: a6420006 sh r2,0x0006(r18)               Save new VRAM Palette ID
00085930: 3205ffff andi r5,r16,0xffff                  r5 = r16 (section counter?)
                                                       #Loop start
00085934: 00051080 sll r2,r5,0x02                          r2 = r5 * 4
00085938: 24420002 addiu r2,r2,0x0002                      r2 = r2 + 2
0008593c: 02a21021 addu r2,r21,r2                          r2 = SHP Data pointer + r2
00085940: 02402021 addu r4,r18,r0                          r4 = ? Display pointer
00085944: 26100001 addiu r16,r16,0x0001                    increment section counter?
00085948: 944b0002 lhu r11,0x0002(r2)                      Load graphic size?? (And pixel offset?)
0008594c: 80460000 lb r6,0x0000(r2)                        Load X shift
00085950: 80470001 lb r7,0x0001(r2)                        Load Y shift
00085954: 31633c00 andi r3,r11,0x3c00                      Size reference?
00085958: 000319c2 srl r3,r3,0x07                          Size reference? / 128
0008595c: 316203ff andi r2,r11,0x03ff                      r2 = Pixel displacement? (Total?)
00085960: 3048001f andi r8,r2,0x001f                       r8 = Raw X Pixel displacement
00085964: 000840c0 sll r8,r8,0x03                          r8 * 8
00085968: 00021142 srl r2,r2,0x05  
0008596c: 000210c0 sll r2,r2,0x03                          r2 = Y Pixel displacement
00085970: 3c018009 lui r1,0x8009   
00085974: 00230821 addu r1,r1,r3   
00085978: 8c2946c8 lw r9,0x46c8(r1)                        r9 = Raw image Width
0008597c: 3c018009 lui r1,0x8009   
00085980: 00230821 addu r1,r1,r3   
00085984: 8c2a46cc lw r10,0x46cc(r1)                       r10 = Raw image height
00085988: 32e30061 andi r3,r23,0x0061                      r3 = 0x40, 0x20, 0x01 bitflags
0008598c: afa20014 sw r2,0x0014(r29)                       Save Y pixel displacement
00085990: 3162c000 andi r2,r11,0xc000                      r2 = reverse bitflags
00085994: 00021342 srl r2,r2,0x0d              
00085998: 00621825 or r3,r3,r2                             combine ?? bitflags and reverse bitflags
0008599c: afa80010 sw r8,0x0010(r29)                       save X Pixel displacement
000859a0: afa30020 sw r3,0x0020(r29)                       save reverse bitflags?
000859a4: 00094cc0 sll r9,r9,0x13  
000859a8: 00094c03 sra r9,r9,0x10                          r9 = actual image width
000859ac: 000a54c0 sll r10,r10,0x13    
000859b0: 000a5403 sra r10,r10,0x10                        r10 = actual image height
000859b4: afa90018 sw r9,0x0018(r29)                       Save image width
000859b8: 0c01ed3b jal 0x0007b4ec                          Store Sprite Display Data
000859bc: afaa001c sw r10,0x001c(r29)                      Save image height
000859c0: 3202ffff andi r2,r16,0xffff                      r2 =  r16
000859c4: 0054102b sltu r2,r2,r20                          set r2 = 1 if r16 < r20
000859c8: 1440ffda bne r2,r0,0x00085934                    loop
000859cc: 3205ffff andi r5,r16,0xffff                      r5 = r16
000859d0: a6710006 sh r17,0x0006(r19)              Save Frame Command? Counter
000859d4: 97ac0030 lhu r12,0x0030(r29)             Load Frame + all that other jazz
000859d8: 00000000 nop
000859dc: a66c0008 sh r12,0x0008(r19)              Save Frame + all that other jazz
000859e0: a6760004 sh r22,0x0004(r19)              Save weapon animation
000859e4: 8fbf0064 lw r31,0x0064(r29)
000859e8: 8fbe0060 lw r30,0x0060(r29)
000859ec: 8fb7005c lw r23,0x005c(r29)
000859f0: 8fb60058 lw r22,0x0058(r29)
000859f4: 8fb50054 lw r21,0x0054(r29)
000859f8: 8fb40050 lw r20,0x0050(r29)
000859fc: 8fb3004c lw r19,0x004c(r29)
00085a00: 8fb20048 lw r18,0x0048(r29)
00085a04: 8fb10044 lw r17,0x0044(r29)
00085a08: 8fb00040 lw r16,0x0040(r29)
00085a0c: 27bd0068 addiu r29,r29,0x0068
00085a10: 03e00008 jr r31
00085a14: 00000000 nop



Return Locations

00085c0c - 000865a0


Related Pages

https://ffhacktics.com/wiki/Unit_Animation_Index

https://ffhacktics.com/wiki/SHP_%26_Graphic_info_page

https://ffhacktics.com/wiki/SEQ_%26_Animation_info_page

https://ffhacktics.com/wiki/Weapon_Animations

https://ffhacktics.com/wiki/Unit_Animations