Difference between revisions of "Load Unit graphics from sprite sheet"
Jump to navigation
Jump to search
Line 354: | Line 354: | ||
00084c60: a6a20012 sh r2,0x0012(r21) save third frame command to sprite data | 00084c60: a6a20012 sh r2,0x0012(r21) save third frame command to sprite data | ||
− | 00084c64: 3283ffff andi r3,r20,0xffff | + | 00084c64: 3283ffff andi r3,r20,0xffff r3 = animation |
− | 00084c68: 00031880 sll r3,r3,0x02 | + | 00084c68: 00031880 sll r3,r3,0x02 anim * 4 |
00084c6c: 00761821 addu r3,r3,r22 | 00084c6c: 00761821 addu r3,r3,r22 | ||
00084c70: 02401021 addu r2,r18,r0 | 00084c70: 02401021 addu r2,r18,r0 | ||
00084c74: 00021400 sll r2,r2,0x10 | 00084c74: 00021400 sll r2,r2,0x10 | ||
− | 00084c78: 8c630008 lw r3,0x0008(r3) | + | 00084c78: 8c630008 lw r3,0x0008(r3) pointer to frame commands |
00084c7c: 00021403 sra r2,r2,0x10 | 00084c7c: 00021403 sra r2,r2,0x10 | ||
00084c80: 00621821 addu r3,r3,r2 | 00084c80: 00621821 addu r3,r3,r2 | ||
− | 00084c84: 90620000 lbu r2,0x0000(r3) | + | 00084c84: 90620000 lbu r2,0x0000(r3) Load third command byte |
− | 00084c88: 26520001 addiu r18,r18,0x0001 | + | 00084c88: 26520001 addiu r18,r18,0x0001 increment counter |
00084c8c: 00021600 sll r2,r2,0x18 | 00084c8c: 00021600 sll r2,r2,0x18 | ||
00084c90: 00021603 sra r2,r2,0x18 | 00084c90: 00021603 sra r2,r2,0x18 | ||
00084c94: 08021233 j 0x000848cc | 00084c94: 08021233 j 0x000848cc | ||
− | 00084c98: a6a20014 sh r2,0x0014(r21) | + | 00084c98: a6a20014 sh r2,0x0014(r21) save third byte to... ? |
− | 00084c9c: 3283ffff andi r3,r20,0xffff | + | 00084c9c: 3283ffff andi r3,r20,0xffff r3 = animation |
− | 00084ca0: 00031880 sll r3,r3,0x02 | + | 00084ca0: 00031880 sll r3,r3,0x02 anim * 4 |
− | 00084ca4: 00761821 addu r3,r3,r22 | + | 00084ca4: 00761821 addu r3,r3,r22 pointer to SEQ data |
− | 00084ca8: 02401021 addu r2,r18,r0 | + | 00084ca8: 02401021 addu r2,r18,r0 r2 = counter |
00084cac: 00021400 sll r2,r2,0x10 | 00084cac: 00021400 sll r2,r2,0x10 | ||
− | 00084cb0: a6b7000e sh r23,0x000e(r21) | + | 00084cb0: a6b7000e sh r23,0x000e(r21) save animation to sprite data |
− | 00084cb4: 8c630008 lw r3,0x0008(r3) | + | 00084cb4: 8c630008 lw r3,0x0008(r3) load frame command pointer |
00084cb8: 00021403 sra r2,r2,0x10 | 00084cb8: 00021403 sra r2,r2,0x10 | ||
00084cbc: 00621821 addu r3,r3,r2 | 00084cbc: 00621821 addu r3,r3,r2 | ||
− | 00084cc0: 90770000 lbu r23,0x0000(r3) | + | 00084cc0: 90770000 lbu r23,0x0000(r3) Load 3rd byte into raw anim register |
− | 00084cc4: 26520001 addiu r18,r18,0x0001 | + | 00084cc4: 26520001 addiu r18,r18,0x0001 increment counter |
− | 00084cc8: 32e3ffff andi r3,r23,0xffff | + | 00084cc8: 32e3ffff andi r3,r23,0xffff r3 = new animation |
− | 00084ccc: 2c6201f4 sltiu r2,r3,0x01f4 | + | 00084ccc: 2c6201f4 sltiu r2,r3,0x01f4 set r2 true if anim# < 0x1f4 |
− | 00084cd0: 14400005 bne r2,r0,0x00084ce8 | + | 00084cd0: 14400005 bne r2,r0,0x00084ce8 #branch if so |
− | 00084cd4: 02e0a021 addu r20,r23,r0 | + | 00084cd4: 02e0a021 addu r20,r23,r0 |r20 = animation |
− | 00084cd8: 2c620258 sltiu r2,r3,0x0258 | + | 00084cd8: 2c620258 sltiu r2,r3,0x0258 |set if animation is less than 0x258 |
− | 00084cdc: 14400002 bne r2,r0,0x00084ce8 | + | 00084cdc: 14400002 bne r2,r0,0x00084ce8 #branch if so |
− | 00084ce0: 26f4fe0c addiu r20,r23,0xfe0c | + | 00084ce0: 26f4fe0c addiu r20,r23,0xfe0c |r20 = animation -0x1f4 |
− | 00084ce4: 26f4fda8 addiu r20,r23,0xfda8 | + | 00084ce4: 26f4fda8 addiu r20,r23,0xfda8 |r20 = animation -x0258 |
− | 00084ce8: a6b20010 sh r18,0x0010(r21) | + | 00084ce8: a6b20010 sh r18,0x0010(r21) #save counter |
− | 00084cec: 08021233 j 0x000848cc | + | 00084cec: 08021233 j 0x000848cc queue next command |
− | 00084cf0: 00009021 addu r18,r0,r0 | + | 00084cf0: 00009021 addu r18,r0,r0 reset counter |
− | 00084cf4: 3283ffff andi r3,r20,0xffff | + | 00084cf4: 3283ffff andi r3,r20,0xffff r3 = animation |
− | 00084cf8: 00031880 sll r3,r3,0x02 | + | 00084cf8: 00031880 sll r3,r3,0x02 anim * 4 |
00084cfc: 00761821 addu r3,r3,r22 | 00084cfc: 00761821 addu r3,r3,r22 | ||
00084d00: 02401021 addu r2,r18,r0 | 00084d00: 02401021 addu r2,r18,r0 | ||
00084d04: 00021400 sll r2,r2,0x10 | 00084d04: 00021400 sll r2,r2,0x10 | ||
− | 00084d08: 8c630008 lw r3,0x0008(r3) | + | 00084d08: 8c630008 lw r3,0x0008(r3) load frame command pointer |
00084d0c: 00021403 sra r2,r2,0x10 | 00084d0c: 00021403 sra r2,r2,0x10 | ||
00084d10: 00621821 addu r3,r3,r2 | 00084d10: 00621821 addu r3,r3,r2 | ||
− | 00084d14: 90620000 lbu r2,0x0000(r3) | + | 00084d14: 90620000 lbu r2,0x0000(r3) load 3rd frame command |
− | 00084d18: 26520001 addiu r18,r18,0x0001 | + | 00084d18: 26520001 addiu r18,r18,0x0001 increment counter |
− | 00084d1c: 08021233 j 0x000848cc | + | 00084d1c: 08021233 j 0x000848cc queue next command |
− | 00084d20: a6620014 sh r2,0x0014(r19) | + | 00084d20: a6620014 sh r2,0x0014(r19) save ? |
00084d24: 26430001 addiu r3,r18,0x0001 r3 = counter + 1 | 00084d24: 26430001 addiu r3,r18,0x0001 r3 = counter + 1 | ||
Line 438: | Line 438: | ||
00084da0: a4480000 sh r8,0x0000(r2) save 1 to graphic trigger | 00084da0: a4480000 sh r8,0x0000(r2) save 1 to graphic trigger | ||
− | 00084da4: 26460001 addiu r6,r18,0x0001 | + | 00084da4: 26460001 addiu r6,r18,0x0001 r6 = counter + 1 |
00084da8: 00122400 sll r4,r18,0x10 | 00084da8: 00122400 sll r4,r18,0x10 | ||
− | 00084dac: 24d20001 addiu r18,r6,0x0001 | + | 00084dac: 24d20001 addiu r18,r6,0x0001 r18 = counter + 2 |
− | 00084db0: 3282ffff andi r2,r20,0xffff | + | 00084db0: 3282ffff andi r2,r20,0xffff r2 = animation |
− | 00084db4: 00021080 sll r2,r2,0x02 | + | 00084db4: 00021080 sll r2,r2,0x02 anim * 4 |
− | 00084db8: 00561021 addu r2,r2,r22 | + | 00084db8: 00561021 addu r2,r2,r22 seq data pointer |
− | 00084dbc: 00042403 sra r4,r4,0x10 | + | 00084dbc: 00042403 sra r4,r4,0x10 r4 = counter |
− | 00084dc0: 8c430008 lw r3,0x0008(r2) | + | 00084dc0: 8c430008 lw r3,0x0008(r2) pointer to frame commands |
00084dc4: 00061400 sll r2,r6,0x10 | 00084dc4: 00061400 sll r2,r6,0x10 | ||
− | 00084dc8: 00021403 sra r2,r2,0x10 | + | 00084dc8: 00021403 sra r2,r2,0x10 r2 = counter + 1 |
− | 00084dcc: 00642021 addu r4,r3,r4 | + | 00084dcc: 00642021 addu r4,r3,r4 position of 3rd command byte |
− | 00084dd0: 00621821 addu r3,r3,r2 | + | 00084dd0: 00621821 addu r3,r3,r2 position of 4th command byte |
− | 00084dd4: 90820000 lbu r2,0x0000(r4) | + | 00084dd4: 90820000 lbu r2,0x0000(r4) load 3rd byte |
− | 00084dd8: 90640000 lbu r4,0x0000(r3) | + | 00084dd8: 90640000 lbu r4,0x0000(r3) load 4th |
− | 00084ddc: 96a30016 lhu r3,0x0016(r21) | + | 00084ddc: 96a30016 lhu r3,0x0016(r21) load 16th byte of sprite data |
− | 00084de0: 00021600 sll r2,r2,0x18 | + | 00084de0: 00021600 sll r2,r2,0x18 |
− | 00084de4: 1060000b beq r3,r0,0x00084e14 | + | 00084de4: 1060000b beq r3,r0,0x00084e14 #branch if timer is still blank |
− | 00084de8: 00022e03 sra r5,r2,0x18 | + | 00084de8: 00022e03 sra r5,r2,0x18 |r5 = 3rd byte |
− | 00084dec: 96a20016 lhu r2,0x0016(r21) | + | 00084dec: 96a20016 lhu r2,0x0016(r21) | |
− | 00084df0: 00000000 nop | + | 00084df0: 00000000 nop | |
− | 00084df4: 2442ffff addiu r2,r2,0xffff | + | 00084df4: 2442ffff addiu r2,r2,0xffff | |
− | 00084df8: a6a20016 sh r2,0x0016(r21) | + | 00084df8: a6a20016 sh r2,0x0016(r21) |save third byte as 0x16 byte in sprite data |
− | 00084dfc: 3042ffff andi r2,r2,0xffff | + | 00084dfc: 3042ffff andi r2,r2,0xffff | |
− | 00084e00: 1040feb3 beq r2,r0,0x000848d0 | + | 00084e00: 1040feb3 beq r2,r0,0x000848d0 |branch if timer reaches 0 |
− | 00084e04: 3282ffff andi r2,r20,0xffff | + | 00084e04: 3282ffff andi r2,r20,0xffff |r2 = animation |
− | 00084e08: 24c2fffd addiu r2,r6,0xfffd | + | 00084e08: 24c2fffd addiu r2,r6,0xfffd | |
− | 00084e0c: 08021233 j 0x000848cc | + | 00084e0c: 08021233 j 0x000848cc |queue next command |
− | 00084e10: 00a29021 addu r18,r5,r2 | + | 00084e10: 00a29021 addu r18,r5,r2 |counter + 3rd byte - 2 |
− | 00084e14: 24c2fffd addiu r2,r6,0xfffd | + | 00084e14: 24c2fffd addiu r2,r6,0xfffd #counter - 2 |
− | 00084e18: 00a29021 addu r18,r5,r2 | + | 00084e18: 00a29021 addu r18,r5,r2 counter + 3rd byte - 2 |
− | 00084e1c: 08021233 j 0x000848cc | + | 00084e1c: 08021233 j 0x000848cc queue next command |
− | 00084e20: a6a40016 sh r4,0x0016(r21) | + | 00084e20: a6a40016 sh r4,0x0016(r21) store 4th byte as wait frames |
− | 00084e24: 3284ffff andi r4,r20,0xffff | + | |
− | 00084e28: 00042080 sll r4,r4,0x02 | + | 00084e24: 3284ffff andi r4,r20,0xffff r4 = anim |
− | 00084e2c: 00962021 addu r4,r4,r22 | + | 00084e28: 00042080 sll r4,r4,0x02 anim * 4 |
+ | 00084e2c: 00962021 addu r4,r4,r22 seq data pointer | ||
00084e30: 00121400 sll r2,r18,0x10 | 00084e30: 00121400 sll r2,r18,0x10 | ||
− | 00084e34: 00021403 sra r2,r2,0x10 | + | 00084e34: 00021403 sra r2,r2,0x10 r2 = counter |
− | 00084e38: 26450001 addiu r5,r18,0x0001 | + | 00084e38: 26450001 addiu r5,r18,0x0001 r5 = counter + 1 |
− | 00084e3c: 8c830008 lw r3,0x0008(r4) | + | 00084e3c: 8c830008 lw r3,0x0008(r4) frame command pointer |
− | 00084e40: 24b20001 addiu r18,r5,0x0001 | + | 00084e40: 24b20001 addiu r18,r5,0x0001 r18 = counter + 2 |
− | 00084e44: 00621821 addu r3,r3,r2 | + | 00084e44: 00621821 addu r3,r3,r2 location of third byte |
− | 00084e48: 90620000 lbu r2,0x0000(r3) | + | 00084e48: 90620000 lbu r2,0x0000(r3) load third command byte |
− | 00084e4c: 96630058 lhu r3,0x0058(r19) | + | 00084e4c: 96630058 lhu r3,0x0058(r19) load ? from vector data? |
− | 00084e50: 00021600 sll r2,r2,0x18 | + | 00084e50: 00021600 sll r2,r2,0x18 |
00084e54: 00021603 sra r2,r2,0x18 | 00084e54: 00021603 sra r2,r2,0x18 | ||
− | 00084e58: 00431021 addu r2,r2,r3 | + | 00084e58: 00431021 addu r2,r2,r3 load command byte and ? vector |
− | 00084e5c: a6620058 sh r2,0x0058(r19) | + | 00084e5c: a6620058 sh r2,0x0058(r19) save again |
00084e60: 00051400 sll r2,r5,0x10 | 00084e60: 00051400 sll r2,r5,0x10 | ||
− | 00084e64: 8c830008 lw r3,0x0008(r4) | + | 00084e64: 8c830008 lw r3,0x0008(r4) frame command pointer |
− | 00084e68: 00021403 sra r2,r2,0x10 | + | 00084e68: 00021403 sra r2,r2,0x10 r2 = counter + 1 |
00084e6c: 00621821 addu r3,r3,r2 | 00084e6c: 00621821 addu r3,r3,r2 | ||
− | 00084e70: 90620000 lbu r2,0x0000(r3) | + | 00084e70: 90620000 lbu r2,0x0000(r3) 4th command byte |
− | 00084e74: 9663005a lhu r3,0x005a(r19) | + | 00084e74: 9663005a lhu r3,0x005a(r19) load more vector |
00084e78: 00021600 sll r2,r2,0x18 | 00084e78: 00021600 sll r2,r2,0x18 | ||
00084e7c: 00021603 sra r2,r2,0x18 | 00084e7c: 00021603 sra r2,r2,0x18 | ||
− | 00084e80: 00431021 addu r2,r2,r3 | + | 00084e80: 00431021 addu r2,r2,r3 add vector and 4th command byte |
− | 00084e84: 08021233 j 0x000848cc | + | 00084e84: 08021233 j 0x000848cc queue next command |
− | 00084e88: a662005a sh r2,0x005a(r19) | + | 00084e88: a662005a sh r2,0x005a(r19) save more vector |
− | 00084e8c: 26430001 addiu r3,r18,0x0001 | + | |
+ | 00084e8c: 26430001 addiu r3,r18,0x0001 r3 = counter + 1 | ||
00084e90: 00122400 sll r4,r18,0x10 | 00084e90: 00122400 sll r4,r18,0x10 | ||
− | 00084e94: 24720001 addiu r18,r3,0x0001 | + | 00084e94: 24720001 addiu r18,r3,0x0001 r18 = counter + 2 |
− | 00084e98: 3282ffff andi r2,r20,0xffff | + | 00084e98: 3282ffff andi r2,r20,0xffff r2 = anim |
− | 00084e9c: 00021080 sll r2,r2,0x02 | + | 00084e9c: 00021080 sll r2,r2,0x02 anim * 4 |
− | 00084ea0: 00561021 addu r2,r2,r22 | + | 00084ea0: 00561021 addu r2,r2,r22 seq data pointer |
− | 00084ea4: 00042403 sra r4,r4,0x10 | + | 00084ea4: 00042403 sra r4,r4,0x10 r4 = counter |
00084ea8: 00031c00 sll r3,r3,0x10 | 00084ea8: 00031c00 sll r3,r3,0x10 | ||
− | 00084eac: 8c420008 lw r2,0x0008(r2) | + | 00084eac: 8c420008 lw r2,0x0008(r2) load frame command pointer |
00084eb0: 00031c03 sra r3,r3,0x10 | 00084eb0: 00031c03 sra r3,r3,0x10 | ||
− | 00084eb4: 00442021 addu r4,r2,r4 | + | 00084eb4: 00442021 addu r4,r2,r4 location of 3rd command byte |
− | 00084eb8: 00431021 addu r2,r2,r3 | + | 00084eb8: 00431021 addu r2,r2,r3 location of 4th command byte |
− | 00084ebc: 90420000 lbu r2,0x0000(r2) | + | 00084ebc: 90420000 lbu r2,0x0000(r2) load third command byte |
− | 00084ec0: 90840000 lbu r4,0x0000(r4) | + | 00084ec0: 90840000 lbu r4,0x0000(r4) load fourth command byte |
− | 00084ec4: 8ea3002c lw r3,0x002c(r21) | + | 00084ec4: 8ea3002c lw r3,0x002c(r21) loads ? display pointer |
− | 00084ec8: 00021200 sll r2,r2,0x08 | + | 00084ec8: 00021200 sll r2,r2,0x08 move 3rd byte to upper byte of halfword |
− | 00084ecc: 00822025 or r4,r4,r2 | + | 00084ecc: 00822025 or r4,r4,r2 combines two commands |
− | 00084ed0: 08021233 j 0x000848cc | + | 00084ed0: 08021233 j 0x000848cc queue next command |
− | 00084ed4: a464000c sh r4,0x000c(r3) | + | 00084ed4: a464000c sh r4,0x000c(r3) save new rotation |
+ | |||
00084ed8: 02602021 addu r4,r19,r0 | 00084ed8: 02602021 addu r4,r19,r0 | ||
00084edc: 3291ffff andi r17,r20,0xffff | 00084edc: 3291ffff andi r17,r20,0xffff |
Revision as of 11:58, 26 July 2021
appears to be a unit graphic loading routine - extremely similar in structure to Load WEP graphic from WEP1 Sheet 00084818: 27bdffc0 addiu r29,r29,0xffc0 0008481c: afb30024 sw r19,0x0024(r29) 00084820: 00809821 addu r19,r4,r0 r19 = misc unit data pointer 00084824: afb5002c sw r21,0x002c(r29) 00084828: 00a0a821 addu r21,r5,r0 r21 = frame & animation data 0008482c: afbe0038 sw r30,0x0038(r29) 00084830: 00c0f021 addu r30,r6,r0 r30 = (maybe) current facing? 00084834: afbf003c sw r31,0x003c(r29) 00084838: afb70034 sw r23,0x0034(r29) 0008483c: afb60030 sw r22,0x0030(r29) 00084840: afb40028 sw r20,0x0028(r29) 00084844: afb20020 sw r18,0x0020(r29) 00084848: afb1001c sw r17,0x001c(r29) 0008484c: afb00018 sw r16,0x0018(r29) 00084850: 96b70004 lhu r23,0x0004(r21) load current animation 00084854: 96b20006 lhu r18,0x0006(r21) load unit (not weapon) byte counter 00084858: 32e3ffff andi r3,r23,0xffff move animation to r3 0008485c: 2c6201f4 sltiu r2,r3,0x01f4 r2 = true if animation < 0x1f4 00084860: 10400004 beq r2,r0,0x00084874 #branch if animation > 0x1f4 00084864: 02e0a021 addu r20,r23,r0 |r20 = current animation 00084868: 8eb60020 lw r22,0x0020(r21) |SEQ data pointer 0008486c: 08021227 j 0x0008489c @jump ahead 00084870: 00000000 nop | 00084874: 2c620258 sltiu r2,r3,0x0258 #r2 = true if animation < 0x258 00084878: 10400005 beq r2,r0,0x00084890 #branch if animation > 0x258 0008487c: 26f4fe0c addiu r20,r23,0xfe0c |r20 = animation - 0x1f4 00084880: 3c16800a lui r22,0x800a | 00084884: 26d677d8 addiu r22,r22,0x77d8 |r22 = 0x800a77d8 00084888: 08021227 j 0x0008489c @jump ahead 0008488c: 00000000 nop 00084890: 3c16800b lui r22,0x800b # 00084894: 26d6ed3c addiu r22,r22,0xed3c r22 = 0x800a12c4 00084898: 26f4fda8 addiu r20,r23,0xfda8 r20 = animation - 0x258 0008489c: 17c00002 bne r30,r0,0x000848a8 @#branch if current facing is not 0 000848a0: 3282ffff andi r2,r20,0xffff |r2 = animation 000848a4: 2652fffe addiu r18,r18,0xfffe |r18 = ? - 1 000848a8: 00021080 sll r2,r2,0x02 #animation * 4 000848ac: 00561021 addu r2,r2,r22 SEQ + animation * 4 000848b0: 8c430008 lw r3,0x0008(r2) load animation's frame command pointer 000848b4: 2402ffff addiu r2,r0,0xffff 000848b8: 14620005 bne r3,r2,0x000848d0 #branch if pointer is not invalid 000848bc: 3282ffff andi r2,r20,0xffff |move animation to r2 000848c0: 34040009 ori r4,r0,0x0009 | 000848c4: 0c011282 jal 0x00044a08 |move r4 to r5 and clear something (error thing) 000848c8: 00000000 nop | 000848cc: 3282ffff andi r2,r20,0xffff |move animation to r2 000848d0: 00021080 sll r2,r2,0x02 #animation * 4 000848d4: 00561021 addu r2,r2,r22 |SEQ + animation * 4 000848d8: 00121c00 sll r3,r18,0x10 | 000848dc: 8c450008 lw r5,0x0008(r2) |load animation's frame command pointer 000848e0: 00031c03 sra r3,r3,0x10 |I heard you like garbage 000848e4: 00a31821 addu r3,r5,r3 | 000848e8: 90630000 lbu r3,0x0000(r3) |load appropriate frame command byte 000848ec: 340200ff ori r2,r0,0x00ff |r2 = 0xff 000848f0: 14620223 bne r3,r2,0x00085180 #branch if byte is not 0xff 000848f4: 00121400 sll r2,r18,0x10 |moves counter to r2 000848f8: 26430001 addiu r3,r18,0x0001 |increment byte counter 000848fc: 00031400 sll r2,r3,0x10 | 00084900: 00021403 sra r2,r2,0x10 |moves counter + 1 to r2 00084904: 00a21021 addu r2,r5,r2 | 00084908: 90420000 lbu r2,0x0000(r2) |load appropriate byte 0008490c: 24720001 addiu r18,r3,0x0001 |increment counter again 00084910: 2443ff42 addiu r3,r2,0xff42 |subtract 0xbe 00084914: 2c620042 sltiu r2,r3,0x0042 |r2 = true if r3 < 0x42 (if command byte => 0xbe) 00084918: 10400217 beq r2,r0,0x00085178 $branch if < 0x43 (if command byte => 0xbe) 0008491c: 00031080 sll r2,r3,0x02 |r2 = r3 * 4 (makes it a pointer :D) 00084920: 3c018006 lui r1,0x8006 | 00084924: 00220821 addu r1,r1,r2 | 00084928: 8c227f20 lw r2,0x7f20(r1) |loads return addresses based byte 0008492c: 00000000 nop | 00084930: 00400008 jr r2 |go there (above branches continue past this) 00084934: 00000000 nop | Return addresses based on command byte: 0xbe: 0x80085168 0xbf: 0x80085158 0xc0: 0x80085110 0xc1: 0x800850c0 0xc2: 0x800848cc 0xc3: 0x80085000 0xc4: 0x80085078 0xc5: 0x80084ff4 0xc6: 0x80085008 0xc7, 0xc8, 0xc9: 0x80084b08 0xca: 0x80085170 0xcb: 0x80084fe0 0xcc: 0x80084fcc 0xcd: 0x80084fb8 0xce: 0x80084fa4 0xcf: 0x80084f90 0xd0: 0x80084f7c 0xd1: 0x80084f68 0xd2: 0x80084f54 0xd3: 0x8008505c 0xd4: 0x80085024 0xd5: 0x80084a00 0xd6: 0x80084b3c 0xd7: 0x80085170 0xd8: 0x80084c64 0xd9: 0x80084b00 0xda: 0x80085178 0xdb: 0x80084c2c 0xdc: 0x80084b10 0xdd: 0x80084c9c 0xde: 0x80084a20 0xdf: 0x80084a14 0xe0: 0x8008496c 0xe1: 0x80084960 0xe2: 0x80084cf4 0xe3, 0xe4: 0x80085170 0xe5: 0x80084e8c 0xe6, 0xe7, 0xe8: 0x80084b08 0xe9: 0x80085170 0xea: 0x80084b08 0xeb: 0x8008494c 0xec: 0x80084938 0xed: 0x80085170 0xee: 0x80084c00 0xef: 0x80084bc8 0xf0: 0x80084b90 0xf1: 0x80084b08 0xf2: 0x80084d24 0xf3, 0xf4, 0xf5: 0x80084170 0xf6: 0x80085b58 0xf7: 0x80084f4c 0xf8: 0x80084b08 0xf9: 0x80084e24 0xfa: 0x80084ed8 0xfb: 0x80084b08 0xfc: 0x80084da4 0xfd: 0x80085120 0xfe, 0xff: 0x80084974
00084938: 96a20018 lhu r2,0x0018(r21) load ? 0008493c: 00000000 nop 00084940: 38420002 xori r2,r2,0x0002 00084944: 08021233 j 0x000848cc queue next command 00084948: a6a20018 sh r2,0x0018(r21) save new ?
0008494c: 96a20018 lhu r2,0x0018(r21) ? 00084950: 00000000 nop 00084954: 38420004 xori r2,r2,0x0004 00084958: 08021233 j 0x000848cc queue next command 0008495c: a6a20018 sh r2,0x0018(r21) ?
00084960: 34020001 ori r2,r0,0x0001 00084964: 08021233 j 0x000848cc queue next command 00084968: a2620298 sb r2,0x0298(r19) Save 1 to unit's shadow
0008496c: 08021233 j 0x000848cc queue next command 00084970: a2600298 sb r0,0x0298(r19) save 0 to unit's shadow
00084974: 32e3ffff andi r3,r23,0xffff r3 = animation 00084978: 2c6201f4 sltiu r2,r3,0x01f4 set if animation is < 0x1f4 0008497c: 1040001e beq r2,r0,0x000849f8 #branch if not 00084980: 30620001 andi r2,r3,0x0001 |r2 = true if animation is 0dd 00084984: 1040000c beq r2,r0,0x000849b8 $branch if even 00084988: 02602021 addu r4,r19,r0 |r4 = unit misc. data pointer 0008498c: 92620006 lbu r2,0x0006(r19) |load unit spritesheet ID 00084990: 00000000 nop | 00084994: 00021080 sll r2,r2,0x02 |ID * 4 00084998: 3c018009 lui r1,0x8009 | 0008499c: 00220821 addu r1,r1,r2 | 000849a0: 90224748 lbu r2,0x4748(r1) |Load spritesheet's SHP ID 000849a4: 3c018009 lui r1,0x8009 | 000849a8: 00220821 addu r1,r1,r2 | 000849ac: 903049d0 lbu r16,0x49d0(r1) |Load associated byte to SHP ID 000849b0: 08021277 j 0x000849dc @jump ahead 000849b4: 00000000 nop |
000849b8: 92620006 lbu r2,0x0006(r19) $load unit spritesheet ID 000849bc: 00000000 nop | 000849c0: 00021080 sll r2,r2,0x02 |unit spritesheet ID * 4 000849c4: 3c018009 lui r1,0x8009 | 000849c8: 00220821 addu r1,r1,r2 | 000849cc: 90224748 lbu r2,0x4748(r1) |Load spritesheet's SHP ID 000849d0: 3c018009 lui r1,0x8009 | 000849d4: 00220821 addu r1,r1,r2 | 000849d8: 903049c4 lbu r16,0x49c4(r1) |Load associated byte to SHP ID 000849dc: 02a02821 addu r5,r21,r0 @r5 = Frame + Animation data 000849e0: 3206ffff andi r6,r16,0xffff |r6 = associated byte to SHP ID 000849e4: 02e03821 addu r7,r23,r0 |r7 = animation ID 000849e8: a4800054 sh r0,0x0054(r4) |save 0 to Y? 000849ec: a4800052 sh r0,0x0052(r4) |save 0 to Height? 000849f0: 0c021085 jal 0x00084214 |--> Update Sprite display data 000849f4: a4800050 sh r0,0x0050(r4) |save 0 to X? 000849f8: 08021480 j 0x00085200 #Finishes animation 000849fc: a6a0000a sh r0,0x000a(r21) clears frame delay + other stuff (number of frames in that pose)
00084a00: 96a2000c lhu r2,0x000c(r21) Load animation 00084a04: 00009021 addu r18,r0,r0 set counter to 0 00084a08: 24420001 addiu r2,r2,0x0001 increment animation by 1 00084a0c: 08021233 j 0x000848cc queue next command 00084a10: a6a2000c sh r2,0x000c(r21) save new animation
00084a14: 8ea2002c lw r2,0x002c(r21) ? 00084a18: 08021233 j 0x000848cc queue next animation 00084a1c: a440000c sh r0,0x000c(r2) set animation to 0
00084a20: 3c038009 lui r3,0x8009 00084a24: 8c6360e4 lw r3,0x60e4(r3) loads type of display? 00084a28: 34020034 ori r2,r0,0x0034 r2 = 0x34 00084a2c: 1062ffa7 beq r3,r2,0x000848cc queue next command if display type is not 0x34 00084a30: 00000000 nop 00084a34: 866401a0 lh r4,0x01a0(r19) Load last attack used's ID 00084a38: 00000000 nop 00084a3c: 1080000d beq r4,r0,0x00084a74 #Branch if said attack was... attack. 00084a40: 00801821 addu r3,r4,r0 |r3 = ability ID 00084a44: 3402016f ori r2,r0,0x016f |r2 = 0x16f 00084a48: 1082000a beq r4,r2,0x00084a74 #branch if attack ID was frog attack 00084a4c: 2462ff76 addiu r2,r3,0xff76 |r2 = ability - 0x8a 00084a50: 2c420008 sltiu r2,r2,0x0008 |r2 = true if ability is between 0x8a and 0x91 (exclusive, Knight skills only?) 00084a54: 14400007 bne r2,r0,0x00084a74 #branch if such is the case 00084a58: 2462ff2b addiu r2,r3,0xff2b |type of display - 0xd5 00084a5c: 2c420003 sltiu r2,r2,0x0003 |r2 = true if ability is between 0xd5 and 0xd7 (exclusive, Mustadio's skills?) 00084a60: 14400004 bne r2,r0,0x00084a74 #branch if such is the case 00084a64: 2462fe76 addiu r2,r3,0xfe76 |ability - 0x18a 00084a68: 2c420014 sltiu r2,r2,0x0014 |r2 = true if ability is between 0x18a (exclusive, dragoon and archer skills?) 00084a6c: 1040ff98 beq r2,r0,0x000848d0 |queue next command if this is not the case 00084a70: 3282ffff andi r2,r20,0xffff |r2 = animation 00084a74: 9262018d lbu r2,0x018d(r19) #load Limit for target data 00084a78: 00000000 nop 00084a7c: 1040ff94 beq r2,r0,0x000848d0 queue next command if limit is 0 00084a80: 3282ffff andi r2,r20,0xffff r2 = animation 00084a84: 9262018d lbu r2,0x018d(r19) load limit again 00084a88: 00000000 nop 00084a8c: 1040ff8f beq r2,r0,0x000848cc queue next comand if limit is 0, but different this time I swear 00084a90: 00008821 addu r17,r0,r0 r17 = 0 00084a94: 3222ffff andi r2,r17,0xffff r2 = r17 00084a98: 02621021 addu r2,r19,r2 r2 = misc. unit data + counter 00084a9c: 9044018e lbu r4,0x018e(r2) Load target list 00084aa0: 0c01e9c9 jal 0x0007a724 --> Get unit misc data that matches r4 ID 00084aa4: 00000000 nop 00084aa8: 00408021 addu r16,r2,r0 r16 = r2 (unit ID?) 00084aac: 1200000d beq r16,r0,0x00084ae4 #branch if result of routine returns 0 (invalid unit?) 00084ab0: 26310001 addiu r17,r17,0x0001 |increment r17 by 1 00084ab4: 02602021 addu r4,r19,r0 |r4 = misc. unit data pointer 00084ab8: 0c020e5e jal 0x00083978 |--> Set targets animation based on attack type 00084abc: 02002821 addu r5,r16,r0 |r5 = r16 00084ac0: 02602021 addu r4,r19,r0 |r4 = misc. unit data pointer 00084ac4: 0c020e1d jal 0x00083874 |--> Set attacker animation for shield block 00084ac8: 02002821 addu r5,r16,r0 |r5 = r16 00084acc: 92040004 lbu r4,0x0004(r16) |Unit Misc ID? 00084ad0: 0c01a2f5 jal 0x00068bd4 |--> Jump to post action display 00084ad4: 00000000 nop | 00084ad8: 02602021 addu r4,r19,r0 |r4 = misc unit data pointer 00084adc: 0c01a253 jal 0x0006894c |--> Set evade type data and weapon element effect 00084ae0: 00002821 addu r5,r0,r0 |r5 = 0 00084ae4: 9263018d lbu r3,0x018d(r19) #loads something :D 00084ae8: 3222ffff andi r2,r17,0xffff moves resultant counter to r2 00084aec: 0043102b sltu r2,r2,r3 sets r2 to true if the number of times gone through the routine is less than r3 00084af0: 1440ffe9 bne r2,r0,0x00084a98 repeat part of the routine if still not matching loop value 00084af4: 3222ffff andi r2,r17,0xffff moves r17 into r2 again 00084af8: 08021234 j 0x000848d0 queues next command 00084afc: 3282ffff andi r2,r20,0xffff r2 = animation
00084b00: 0c01a269 jal 0x000689a4 --> Set evade type data, item and throw stone hardcoding 00084b04: 02602021 addu r4,r19,r0 r4 = misc unit data pointer 00084b08: 08021233 j 0x000848cc queue next command 00084b0c: 26520002 addiu r18,r18,0x0002 increment counter by 2
00084b10: 96b7000e lhu r23,0x000e(r21) Load unit animation 00084b14: 96b20010 lhu r18,0x0010(r21) load last animation's counter 00084b18: 32e3ffff andi r3,r23,0xffff moves animation into r3 00084b1c: 2c6201f4 sltiu r2,r3,0x01f4 set if animation is less than 0x1f4 00084b20: 1440ff6a bne r2,r0,0x000848cc queue next command if so 00084b24: 02e0a021 addu r20,r23,r0 r20 = animation 00084b28: 2c620258 sltiu r2,r3,0x0258 set if animation is less than 0x258 00084b2c: 1440ff67 bne r2,r0,0x000848cc queue next command if so 00084b30: 26f4fe0c addiu r20,r23,0xfe0c r20 = animation - 1f4 00084b34: 08021233 j 0x000848cc queue next command 00084b38: 26f4fda8 addiu r20,r23,0xfda8 r20 = animation - 0x258
00084b3c: 3c028009 lui r2,0x8009 00084b40: 8c42612c lw r2,0x612c(r2) load weapon sheathe check (maybe an anim finished check lmao) 00084b44: 00000000 nop 00084b48: 14400176 bne r2,r0,0x00085124 branch if not finishing animation 00084b4c: 3282ffff andi r2,r20,0xffff r2 = animation 00084b50: 08021234 j 0x000848d0 queue next command 00084b54: 26520001 addiu r18,r18,0x0001 increment counter by 1
00084b58: 02401021 addu r2,r18,r0 r2 = counter 00084b5c: 26520001 addiu r18,r18,0x0001 r18 = counter + 1 00084b60: 3283ffff andi r3,r20,0xffff r3 = animation 00084b64: 00031880 sll r3,r3,0x02 animation * 4 00084b68: 00761821 addu r3,r3,r22 SEQ animation + Anim * 4 00084b6c: 00021400 sll r2,r2,0x10 00084b70: 8c630008 lw r3,0x0008(r3) load pointer to frame commands 00084b74: 00021403 sra r2,r2,0x10 00084b78: 00621821 addu r3,r3,r2 00084b7c: 90650000 lbu r5,0x0000(r3) 00084b80: 0c01ae58 jal 0x0006b960 --> 0006b960 - 0006b990 00084b84: 02602021 addu r4,r19,r0 00084b88: 08021234 j 0x000848d0 queue next command 00084b8c: 3282ffff andi r2,r20,0xffff
00084b90: 02401021 addu r2,r18,r0 r2 = counter 00084b94: 26520001 addiu r18,r18,0x0001 r18 = counter + 1 00084b98: 3283ffff andi r3,r20,0xffff r3 = animation 00084b9c: 00031880 sll r3,r3,0x02 animation * 4 00084ba0: 00761821 addu r3,r3,r22 seq data + animation * 4 00084ba4: 00021400 sll r2,r2,0x10 00084ba8: 8c630008 lw r3,0x0008(r3) load pointer to frame commands 00084bac: 00021403 sra r2,r2,0x10 00084bb0: 00621821 addu r3,r3,r2 00084bb4: 80650000 lb r5,0x0000(r3) 00084bb8: 0c0211ac jal 0x000846b0 --> 000846b0 - 00084754 00084bbc: 02602021 addu r4,r19,r0 00084bc0: 08021234 j 0x000848d0 queue next command 00084bc4: 3282ffff andi r2,r20,0xffff
00084bc8: 02401021 addu r2,r18,r0 r2 = counter 00084bcc: 26520001 addiu r18,r18,0x0001 r18 = counter + 1 00084bd0: 3283ffff andi r3,r20,0xffff 00084bd4: 00031880 sll r3,r3,0x02 00084bd8: 00761821 addu r3,r3,r22 00084bdc: 00021400 sll r2,r2,0x10 00084be0: 8c630008 lw r3,0x0008(r3) load pointer to frame commands 00084be4: 00021403 sra r2,r2,0x10 00084be8: 00621821 addu r3,r3,r2 00084bec: 80650000 lb r5,0x0000(r3) load 1st byte 00084bf0: 0c0211d6 jal 0x00084758 --> 00084758 - 0008476c - Float routine? 00084bf4: 02602021 addu r4,r19,r0 r4 = unit misc. data pointer 00084bf8: 08021234 j 0x000848d0 queue next command 00084bfc: 3282ffff andi r2,r20,0xffff r2 = animation
00084c00: 02401021 addu r2,r18,r0 r2 = counter 00084c04: 3283ffff andi r3,r20,0xffff r3 = animation 00084c08: 00031880 sll r3,r3,0x02 animation * 4 00084c0c: 00761821 addu r3,r3,r22 seq data + animation * 4 00084c10: 00021400 sll r2,r2,0x10 00084c14: 8c630008 lw r3,0x0008(r3) frame command pointer 00084c18: 00021403 sra r2,r2,0x10 00084c1c: 00621821 addu r3,r3,r2 00084c20: 80650000 lb r5,0x0000(r3) load third byte to r5 00084c24: 080213cf j 0x00084f3c jump ahead with this r5 value 00084c28: 26520001 addiu r18,r18,0x0001 increment counter by 1
00084c2c: 3283ffff andi r3,r20,0xffff r3 = animation 00084c30: 00031880 sll r3,r3,0x02 animation * 4 00084c34: 00761821 addu r3,r3,r22 00084c38: 02401021 addu r2,r18,r0 00084c3c: 00021400 sll r2,r2,0x10 00084c40: 8c630008 lw r3,0x0008(r3) frame command pointer 00084c44: 00021403 sra r2,r2,0x10 00084c48: 00621821 addu r3,r3,r2 00084c4c: 90620000 lbu r2,0x0000(r3) load third frame command 00084c50: 26520001 addiu r18,r18,0x0001 increment counter 00084c54: 00021600 sll r2,r2,0x18 00084c58: 00021603 sra r2,r2,0x18 00084c5c: 08021233 j 0x000848cc queue next command 00084c60: a6a20012 sh r2,0x0012(r21) save third frame command to sprite data
00084c64: 3283ffff andi r3,r20,0xffff r3 = animation 00084c68: 00031880 sll r3,r3,0x02 anim * 4 00084c6c: 00761821 addu r3,r3,r22 00084c70: 02401021 addu r2,r18,r0 00084c74: 00021400 sll r2,r2,0x10 00084c78: 8c630008 lw r3,0x0008(r3) pointer to frame commands 00084c7c: 00021403 sra r2,r2,0x10 00084c80: 00621821 addu r3,r3,r2 00084c84: 90620000 lbu r2,0x0000(r3) Load third command byte 00084c88: 26520001 addiu r18,r18,0x0001 increment counter 00084c8c: 00021600 sll r2,r2,0x18 00084c90: 00021603 sra r2,r2,0x18 00084c94: 08021233 j 0x000848cc 00084c98: a6a20014 sh r2,0x0014(r21) save third byte to... ?
00084c9c: 3283ffff andi r3,r20,0xffff r3 = animation 00084ca0: 00031880 sll r3,r3,0x02 anim * 4 00084ca4: 00761821 addu r3,r3,r22 pointer to SEQ data 00084ca8: 02401021 addu r2,r18,r0 r2 = counter 00084cac: 00021400 sll r2,r2,0x10 00084cb0: a6b7000e sh r23,0x000e(r21) save animation to sprite data 00084cb4: 8c630008 lw r3,0x0008(r3) load frame command pointer 00084cb8: 00021403 sra r2,r2,0x10 00084cbc: 00621821 addu r3,r3,r2 00084cc0: 90770000 lbu r23,0x0000(r3) Load 3rd byte into raw anim register 00084cc4: 26520001 addiu r18,r18,0x0001 increment counter 00084cc8: 32e3ffff andi r3,r23,0xffff r3 = new animation 00084ccc: 2c6201f4 sltiu r2,r3,0x01f4 set r2 true if anim# < 0x1f4 00084cd0: 14400005 bne r2,r0,0x00084ce8 #branch if so 00084cd4: 02e0a021 addu r20,r23,r0 |r20 = animation 00084cd8: 2c620258 sltiu r2,r3,0x0258 |set if animation is less than 0x258 00084cdc: 14400002 bne r2,r0,0x00084ce8 #branch if so 00084ce0: 26f4fe0c addiu r20,r23,0xfe0c |r20 = animation -0x1f4 00084ce4: 26f4fda8 addiu r20,r23,0xfda8 |r20 = animation -x0258 00084ce8: a6b20010 sh r18,0x0010(r21) #save counter 00084cec: 08021233 j 0x000848cc queue next command 00084cf0: 00009021 addu r18,r0,r0 reset counter
00084cf4: 3283ffff andi r3,r20,0xffff r3 = animation 00084cf8: 00031880 sll r3,r3,0x02 anim * 4 00084cfc: 00761821 addu r3,r3,r22 00084d00: 02401021 addu r2,r18,r0 00084d04: 00021400 sll r2,r2,0x10 00084d08: 8c630008 lw r3,0x0008(r3) load frame command pointer 00084d0c: 00021403 sra r2,r2,0x10 00084d10: 00621821 addu r3,r3,r2 00084d14: 90620000 lbu r2,0x0000(r3) load 3rd frame command 00084d18: 26520001 addiu r18,r18,0x0001 increment counter 00084d1c: 08021233 j 0x000848cc queue next command 00084d20: a6620014 sh r2,0x0014(r19) save ?
00084d24: 26430001 addiu r3,r18,0x0001 r3 = counter + 1 00084d28: 00122400 sll r4,r18,0x10 00084d2c: 24720001 addiu r18,r3,0x0001 r18 = counter + 2 00084d30: 3282ffff andi r2,r20,0xffff r2 = animation 00084d34: 00021080 sll r2,r2,0x02 r2 = animation * 4 00084d38: 00561021 addu r2,r2,r22 r2 = SEQ + anim * 4 00084d3c: 00042403 sra r4,r4,0x10 r4 = counter 00084d40: 00031c00 sll r3,r3,0x10 00084d44: 8c420008 lw r2,0x0008(r2) load unit anim's command pointer 00084d48: 00031c03 sra r3,r3,0x10 r3 = r18 + 1 00084d4c: 00442021 addu r4,r2,r4 pointer to 3rd byte 00084d50: 00431021 addu r2,r2,r3 pointer to 4th byte 00084d54: 90900000 lbu r16,0x0000(r4) load 3rd byte 00084d58: 90510000 lbu r17,0x0000(r2) Load 4th byte 00084d5c: 16000004 bne r16,r0,0x00084d70 #branch if ? is not 0 00084d60: 00101040 sll r2,r16,0x01 |r2 = 3rd byte * 2 00084d64: 0c011282 jal 0x00044a08 |error jump thing. 00084d68: 3404000d ori r4,r0,0x000d |move r4 to r5 00084d6c: 00101040 sll r2,r16,0x01 |r2 = ? * 2 00084d70: 00501021 addu r2,r2,r16 #r2 = 3rd byte * 3 00084d74: 00021100 sll r2,r2,0x04 r2 = 3rd byte * 0x30 00084d78: 244201d8 addiu r2,r2,0x01d8 r2 = 3rd byte * 0x30 + 0x1d8 00084d7c: 02621021 addu r2,r19,r2 r2 = WEP1 data (usually) 00084d80: 34080001 ori r8,r0,0x0001 00084d84: a448000a sh r8,0x000a(r2) saves 1 to anim frame length 00084d88: a4510004 sh r17,0x0004(r2) Save weapon animation 00084d8c: a4400006 sh r0,0x0006(r2) clear increment 00084d90: a4400012 sh r0,0x0012(r2) clear frame delay 00084d94: a4400014 sh r0,0x0014(r2) clear weapon rotation 00084d98: a4400016 sh r0,0x0016(r2) clear ? 00084d9c: 08021233 j 0x000848cc queue next command 00084da0: a4480000 sh r8,0x0000(r2) save 1 to graphic trigger
00084da4: 26460001 addiu r6,r18,0x0001 r6 = counter + 1 00084da8: 00122400 sll r4,r18,0x10 00084dac: 24d20001 addiu r18,r6,0x0001 r18 = counter + 2 00084db0: 3282ffff andi r2,r20,0xffff r2 = animation 00084db4: 00021080 sll r2,r2,0x02 anim * 4 00084db8: 00561021 addu r2,r2,r22 seq data pointer 00084dbc: 00042403 sra r4,r4,0x10 r4 = counter 00084dc0: 8c430008 lw r3,0x0008(r2) pointer to frame commands 00084dc4: 00061400 sll r2,r6,0x10 00084dc8: 00021403 sra r2,r2,0x10 r2 = counter + 1 00084dcc: 00642021 addu r4,r3,r4 position of 3rd command byte 00084dd0: 00621821 addu r3,r3,r2 position of 4th command byte 00084dd4: 90820000 lbu r2,0x0000(r4) load 3rd byte 00084dd8: 90640000 lbu r4,0x0000(r3) load 4th 00084ddc: 96a30016 lhu r3,0x0016(r21) load 16th byte of sprite data 00084de0: 00021600 sll r2,r2,0x18 00084de4: 1060000b beq r3,r0,0x00084e14 #branch if timer is still blank 00084de8: 00022e03 sra r5,r2,0x18 |r5 = 3rd byte 00084dec: 96a20016 lhu r2,0x0016(r21) | 00084df0: 00000000 nop | 00084df4: 2442ffff addiu r2,r2,0xffff | 00084df8: a6a20016 sh r2,0x0016(r21) |save third byte as 0x16 byte in sprite data 00084dfc: 3042ffff andi r2,r2,0xffff | 00084e00: 1040feb3 beq r2,r0,0x000848d0 |branch if timer reaches 0 00084e04: 3282ffff andi r2,r20,0xffff |r2 = animation 00084e08: 24c2fffd addiu r2,r6,0xfffd | 00084e0c: 08021233 j 0x000848cc |queue next command 00084e10: 00a29021 addu r18,r5,r2 |counter + 3rd byte - 2 00084e14: 24c2fffd addiu r2,r6,0xfffd #counter - 2 00084e18: 00a29021 addu r18,r5,r2 counter + 3rd byte - 2 00084e1c: 08021233 j 0x000848cc queue next command 00084e20: a6a40016 sh r4,0x0016(r21) store 4th byte as wait frames
00084e24: 3284ffff andi r4,r20,0xffff r4 = anim 00084e28: 00042080 sll r4,r4,0x02 anim * 4 00084e2c: 00962021 addu r4,r4,r22 seq data pointer 00084e30: 00121400 sll r2,r18,0x10 00084e34: 00021403 sra r2,r2,0x10 r2 = counter 00084e38: 26450001 addiu r5,r18,0x0001 r5 = counter + 1 00084e3c: 8c830008 lw r3,0x0008(r4) frame command pointer 00084e40: 24b20001 addiu r18,r5,0x0001 r18 = counter + 2 00084e44: 00621821 addu r3,r3,r2 location of third byte 00084e48: 90620000 lbu r2,0x0000(r3) load third command byte 00084e4c: 96630058 lhu r3,0x0058(r19) load ? from vector data? 00084e50: 00021600 sll r2,r2,0x18 00084e54: 00021603 sra r2,r2,0x18 00084e58: 00431021 addu r2,r2,r3 load command byte and ? vector 00084e5c: a6620058 sh r2,0x0058(r19) save again 00084e60: 00051400 sll r2,r5,0x10 00084e64: 8c830008 lw r3,0x0008(r4) frame command pointer 00084e68: 00021403 sra r2,r2,0x10 r2 = counter + 1 00084e6c: 00621821 addu r3,r3,r2 00084e70: 90620000 lbu r2,0x0000(r3) 4th command byte 00084e74: 9663005a lhu r3,0x005a(r19) load more vector 00084e78: 00021600 sll r2,r2,0x18 00084e7c: 00021603 sra r2,r2,0x18 00084e80: 00431021 addu r2,r2,r3 add vector and 4th command byte 00084e84: 08021233 j 0x000848cc queue next command 00084e88: a662005a sh r2,0x005a(r19) save more vector
00084e8c: 26430001 addiu r3,r18,0x0001 r3 = counter + 1 00084e90: 00122400 sll r4,r18,0x10 00084e94: 24720001 addiu r18,r3,0x0001 r18 = counter + 2 00084e98: 3282ffff andi r2,r20,0xffff r2 = anim 00084e9c: 00021080 sll r2,r2,0x02 anim * 4 00084ea0: 00561021 addu r2,r2,r22 seq data pointer 00084ea4: 00042403 sra r4,r4,0x10 r4 = counter 00084ea8: 00031c00 sll r3,r3,0x10 00084eac: 8c420008 lw r2,0x0008(r2) load frame command pointer 00084eb0: 00031c03 sra r3,r3,0x10 00084eb4: 00442021 addu r4,r2,r4 location of 3rd command byte 00084eb8: 00431021 addu r2,r2,r3 location of 4th command byte 00084ebc: 90420000 lbu r2,0x0000(r2) load third command byte 00084ec0: 90840000 lbu r4,0x0000(r4) load fourth command byte 00084ec4: 8ea3002c lw r3,0x002c(r21) loads ? display pointer 00084ec8: 00021200 sll r2,r2,0x08 move 3rd byte to upper byte of halfword 00084ecc: 00822025 or r4,r4,r2 combines two commands 00084ed0: 08021233 j 0x000848cc queue next command 00084ed4: a464000c sh r4,0x000c(r3) save new rotation
00084ed8: 02602021 addu r4,r19,r0 00084edc: 3291ffff andi r17,r20,0xffff 00084ee0: 00118880 sll r17,r17,0x02 00084ee4: 02368821 addu r17,r17,r22 00084ee8: 00121400 sll r2,r18,0x10 00084eec: 00021403 sra r2,r2,0x10 00084ef0: 8e230008 lw r3,0x0008(r17) 00084ef4: 26500001 addiu r16,r18,0x0001 00084ef8: 00621821 addu r3,r3,r2 00084efc: 80650000 lb r5,0x0000(r3) 00084f00: 0c0211ac jal 0x000846b0 00084f04: 26120002 addiu r18,r16,0x0002 00084f08: 00101400 sll r2,r16,0x10 00084f0c: 8e230008 lw r3,0x0008(r17) 00084f10: 00021403 sra r2,r2,0x10 00084f14: 00621821 addu r3,r3,r2 00084f18: 80650000 lb r5,0x0000(r3) 00084f1c: 0c0211d6 jal 0x00084758 00084f20: 02602021 addu r4,r19,r0 00084f24: 26100001 addiu r16,r16,0x0001 00084f28: 00108400 sll r16,r16,0x10 00084f2c: 8e220008 lw r2,0x0008(r17) 00084f30: 00108403 sra r16,r16,0x10 00084f34: 00501021 addu r2,r2,r16 00084f38: 80450000 lb r5,0x0000(r2) 00084f3c: 0c0211dc jal 0x00084770 00084f40: 02602021 addu r4,r19,r0 00084f44: 08021234 j 0x000848d0 00084f48: 3282ffff andi r2,r20,0xffff 00084f4c: 08021233 j 0x000848cc 00084f50: 26520003 addiu r18,r18,0x0003 00084f54: 02602021 addu r4,r19,r0 00084f58: 0c0211dc jal 0x00084770 00084f5c: 34050001 ori r5,r0,0x0001 00084f60: 08021234 j 0x000848d0 00084f64: 3282ffff andi r2,r20,0xffff 00084f68: 02602021 addu r4,r19,r0 00084f6c: 0c0211dc jal 0x00084770 00084f70: 34050002 ori r5,r0,0x0002 00084f74: 08021234 j 0x000848d0 00084f78: 3282ffff andi r2,r20,0xffff 00084f7c: 02602021 addu r4,r19,r0 00084f80: 0c0211d6 jal 0x00084758 00084f84: 34050001 ori r5,r0,0x0001 00084f88: 08021234 j 0x000848d0 00084f8c: 3282ffff andi r2,r20,0xffff 00084f90: 02602021 addu r4,r19,r0 00084f94: 0c0211d6 jal 0x00084758 00084f98: 34050002 ori r5,r0,0x0002 00084f9c: 08021234 j 0x000848d0 00084fa0: 3282ffff andi r2,r20,0xffff 00084fa4: 02602021 addu r4,r19,r0 00084fa8: 0c0211dc jal 0x00084770 00084fac: 2405ffff addiu r5,r0,0xffff 00084fb0: 08021234 j 0x000848d0 00084fb4: 3282ffff andi r2,r20,0xffff 00084fb8: 02602021 addu r4,r19,r0 00084fbc: 0c0211dc jal 0x00084770 00084fc0: 2405fffe addiu r5,r0,0xfffe 00084fc4: 08021234 j 0x000848d0 00084fc8: 3282ffff andi r2,r20,0xffff 00084fcc: 02602021 addu r4,r19,r0 00084fd0: 0c0211d6 jal 0x00084758 00084fd4: 2405ffff addiu r5,r0,0xffff 00084fd8: 08021234 j 0x000848d0 00084fdc: 3282ffff andi r2,r20,0xffff 00084fe0: 02602021 addu r4,r19,r0 00084fe4: 0c0211d6 jal 0x00084758 00084fe8: 2405fffe addiu r5,r0,0xfffe 00084fec: 08021234 j 0x000848d0 00084ff0: 3282ffff andi r2,r20,0xffff 00084ff4: 34020001 ori r2,r0,0x0001 00084ff8: 08021233 j 0x000848cc 00084ffc: a26202d0 sb r2,0x02d0(r19) 00085000: 08021233 j 0x000848cc 00085004: a26002d0 sb r0,0x02d0(r19) 00085008: 3c02800a lui r2,0x800a 0008500c: 8c428db8 lw r2,-0x7248(r2) 00085010: 00000000 nop 00085014: 10400043 beq r2,r0,0x00085124 00085018: 3282ffff andi r2,r20,0xffff 0008501c: 08021234 j 0x000848d0 00085020: 26520001 addiu r18,r18,0x0001 00085024: 02401021 addu r2,r18,r0 00085028: 26520001 addiu r18,r18,0x0001 0008502c: 3283ffff andi r3,r20,0xffff 00085030: 00031880 sll r3,r3,0x02 00085034: 00761821 addu r3,r3,r22 00085038: 00021400 sll r2,r2,0x10 0008503c: 8c630008 lw r3,0x0008(r3) 00085040: 00021403 sra r2,r2,0x10 00085044: 00621821 addu r3,r3,r2 00085048: 90650000 lbu r5,0x0000(r3) 0008504c: 0c020988 jal 0x00082620 00085050: 02602021 addu r4,r19,r0 00085054: 08021234 j 0x000848d0 00085058: 3282ffff andi r2,r20,0xffff 0008505c: 3c028009 lui r2,0x8009 00085060: 8c42612c lw r2,0x612c(r2) 00085064: 34080001 ori r8,r0,0x0001 00085068: 1048002e beq r2,r8,0x00085124 0008506c: 3282ffff andi r2,r20,0xffff 00085070: 08021234 j 0x000848d0 00085074: 26520001 addiu r18,r18,0x0001 00085078: 3284ffff andi r4,r20,0xffff 0008507c: 00042080 sll r4,r4,0x02 00085080: 00962021 addu r4,r4,r22 00085084: 00121400 sll r2,r18,0x10 00085088: 8c830008 lw r3,0x0008(r4) 0008508c: 00021403 sra r2,r2,0x10 00085090: 00621821 addu r3,r3,r2 00085094: 90620000 lbu r2,0x0000(r3) 00085098: 26450001 addiu r5,r18,0x0001 0008509c: a26202d2 sb r2,0x02d2(r19) 000850a0: 00051400 sll r2,r5,0x10 000850a4: 8c830008 lw r3,0x0008(r4) 000850a8: 00021403 sra r2,r2,0x10 000850ac: 00621821 addu r3,r3,r2 000850b0: 90620000 lbu r2,0x0000(r3) 000850b4: 24b20001 addiu r18,r5,0x0001 000850b8: 08021233 j 0x000848cc 000850bc: a26202d3 sb r2,0x02d3(r19) 000850c0: 3284ffff andi r4,r20,0xffff 000850c4: 00042080 sll r4,r4,0x02 000850c8: 00962021 addu r4,r4,r22 000850cc: 00121400 sll r2,r18,0x10 000850d0: 8c830008 lw r3,0x0008(r4) 000850d4: 00021403 sra r2,r2,0x10 000850d8: 00621821 addu r3,r3,r2 000850dc: 90620000 lbu r2,0x0000(r3) 000850e0: 26450001 addiu r5,r18,0x0001 000850e4: 24420002 addiu r2,r2,0x0002 000850e8: a2620087 sb r2,0x0087(r19) 000850ec: 00051400 sll r2,r5,0x10 000850f0: 8c830008 lw r3,0x0008(r4) 000850f4: 00021403 sra r2,r2,0x10 000850f8: 00621821 addu r3,r3,r2 000850fc: 90620000 lbu r2,0x0000(r3) 00085100: 24b20001 addiu r18,r5,0x0001 00085104: ae600088 sw r0,0x0088(r19) 00085108: 08021233 j 0x000848cc 0008510c: ae62008c sw r2,0x008c(r19) 00085110: 92620087 lbu r2,0x0087(r19) 00085114: 00000000 nop 00085118: 10400015 beq r2,r0,0x00085170 0008511c: 00000000 nop 00085120: 3282ffff andi r2,r20,0xffff 00085124: 00021080 sll r2,r2,0x02 00085128: 00561021 addu r2,r2,r22 0008512c: 00121c00 sll r3,r18,0x10 00085130: 8c420008 lw r2,0x0008(r2) 00085134: 00031c03 sra r3,r3,0x10 00085138: 00431021 addu r2,r2,r3 0008513c: 90420000 lbu r2,0x0000(r2) 00085140: 00000000 nop 00085144: 00021600 sll r2,r2,0x18 00085148: 00022e03 sra r5,r2,0x18 0008514c: 2642fffe addiu r2,r18,0xfffe 00085150: 08021233 j 0x000848cc 00085154: 00a29021 addu r18,r5,r2 00085158: 0c01fc90 jal 0x0007f240 0008515c: 02602021 addu r4,r19,r0 00085160: 08021234 j 0x000848d0 00085164: 3282ffff andi r2,r20,0xffff 00085168: 08021233 j 0x000848cc 0008516c: ae6002e8 sw r0,0x02e8(r19) 00085170: 08021233 j 0x000848cc 00085174: 26520001 addiu r18,r18,0x0001 00085178: 08021231 j 0x000848c4 0008517c: 3404000d ori r4,r0,0x000d 00085180: 00021403 sra r2,r2,0x10 00085184: 00a21021 addu r2,r5,r2 00085188: 96a30014 lhu r3,0x0014(r21) 0008518c: 90420000 lbu r2,0x0000(r2) 00085190: 26440001 addiu r4,r18,0x0001 00085194: 13c00011 beq r30,r0,0x000851dc 00085198: 00628021 addu r16,r3,r2 0008519c: 00041400 sll r2,r4,0x10 000851a0: 00021403 sra r2,r2,0x10 000851a4: 00a21021 addu r2,r5,r2 000851a8: 90420000 lbu r2,0x0000(r2) 000851ac: 96a30012 lhu r3,0x0012(r21) 000851b0: 00000000 nop 000851b4: 00431021 addu r2,r2,r3 000851b8: a6a2000a sh r2,0x000a(r21) 000851bc: 96a2000a lhu r2,0x000a(r21) 000851c0: 00000000 nop 000851c4: 2c420101 sltiu r2,r2,0x0101 000851c8: 14400005 bne r2,r0,0x000851e0 000851cc: 24920001 addiu r18,r4,0x0001 000851d0: 34020001 ori r2,r0,0x0001 000851d4: 08021478 j 0x000851e0 000851d8: a6a2000a sh r2,0x000a(r21) 000851dc: 24920001 addiu r18,r4,0x0001 000851e0: 02602021 addu r4,r19,r0 000851e4: 02a02821 addu r5,r21,r0 000851e8: 3206ffff andi r6,r16,0xffff 000851ec: 0c021085 jal 0x00084214 000851f0: 02e03821 addu r7,r23,r0 000851f4: a6b20006 sh r18,0x0006(r21) 000851f8: a6b00008 sh r16,0x0008(r21) 000851fc: a6b70004 sh r23,0x0004(r21) 00085200: 8fbf003c lw r31,0x003c(r29) 00085204: 8fbe0038 lw r30,0x0038(r29) 00085208: 8fb70034 lw r23,0x0034(r29) 0008520c: 8fb60030 lw r22,0x0030(r29) 00085210: 8fb5002c lw r21,0x002c(r29) 00085214: 8fb40028 lw r20,0x0028(r29) 00085218: 8fb30024 lw r19,0x0024(r29) 0008521c: 8fb20020 lw r18,0x0020(r29) 00085220: 8fb1001c lw r17,0x001c(r29) 00085224: 8fb00018 lw r16,0x0018(r29) 00085228: 27bd0040 addiu r29,r29,0x0040 0008522c: 03e00008 jr r31 00085230: 00000000 nop