Sprite Move
Jump to navigation
Jump to search
# ROUTINE: SpriteMove? # Parameters: # r4 = (params) Parameter array for this event instruction # r5 = (0 if SpriteMove, 1 if SpriteMoveBeta)? 80146940: 27bdff48 addiu r29,r29,-0x00b8 80146944: afb00090 sw r16,0x0090(r29) 80146948: 00808021 addu r16,r4,r0 8014694c: afb20098 sw r18,0x0098(r29) 80146950: 00a09021 addu r18,r5,r0 80146954: afbf00b4 sw r31,0x00b4(r29) 80146958: afbe00b0 sw r30,0x00b0(r29) 8014695c: afb700ac sw r23,0x00ac(r29) 80146960: afb600a8 sw r22,0x00a8(r29) 80146964: afb500a4 sw r21,0x00a4(r29) 80146968: afb400a0 sw r20,0x00a0(r29) 8014696c: afb3009c sw r19,0x009c(r29) 80146970: 0c05181e jal 0x80146078 # ENTDUnitID = Load Halfword (params.UnitID); 80146974: afb10094 sw r17,0x0094(r29) 80146978: 00021400 sll r2,r2,0x10 8014697c: 0c04cc56 jal 0x80133158 # MiscID = Get misc ID (ENTDUnitID); 80146980: 00022403 sra r4,r2,0x10 80146984: afa20058 sw r2,0x0058(r29) # MiscID 80146988: 8fa70058 lw r7,0x0058(r29) # MiscID 8014698c: 340207d0 ori r2,r0,0x07d0 # 0x07d0 80146990: 10e20147 beq r7,r2,0x80146eb0 80146994: 00000000 nop 80146998: 3c028017 lui r2,0x8017 8014699c: 8c424038 lw r2,0x4038(r2) 801469a0: 8fa40058 lw r4,0x0058(r29) 801469a4: 00021280 sll r2,r2,0x0a 801469a8: 3c018017 lui r1,0x8017 801469ac: 00220821 addu r1,r1,r2 801469b0: ac2798bc sw r7,-0x6744(r1) 801469b4: 0c023292 jal 0x8008ca48 801469b8: 26100002 addiu r16,r16,0x0002 # paramPtr = params + 2 801469bc: 84430000 lh r3,0x0000(r2) 801469c0: 00000000 nop 801469c4: afa30010 sw r3,0x0010(r29) 801469c8: 84430002 lh r3,0x0002(r2) 801469cc: 00000000 nop 801469d0: afa30014 sw r3,0x0014(r29) 801469d4: 84430004 lh r3,0x0004(r2) 801469d8: 00000000 nop 801469dc: afa30018 sw r3,0x0018(r29) 801469e0: 84430000 lh r3,0x0000(r2) 801469e4: 00000000 nop 801469e8: 00031823 subu r3,r0,r3 801469ec: afa30040 sw r3,0x0040(r29) 801469f0: 84430002 lh r3,0x0002(r2) 801469f4: 0000a821 addu r21,r0,r0 # count = 0 801469f8: 00031823 subu r3,r0,r3 801469fc: afa30044 sw r3,0x0044(r29) 80146a00: 84420004 lh r2,0x0004(r2) 80146a04: 27b10010 addiu r17,r29,0x0010 # destPtr = &structData 80146a08: 00021023 subu r2,r0,r2 80146a0c: afa20048 sw r2,0x0048(r29) # Load (X, Higher Elevation, Y) # do { 80146a10: 0c05181e jal 0x80146078 # param = Load Halfword (paramPtr) 80146a14: 02002021 addu r4,r16,r0 80146a18: 00021400 sll r2,r2,0x10 80146a1c: 00021403 sra r2,r2,0x10 80146a20: ae220010 sw r2,0x0010(r17) # *destPtr = param 80146a24: 26100002 addiu r16,r16,0x0002 # paramPtr = paramPtr + 2 // (2 bytes; corresponds to 1 parameter) 80146a28: 26b50001 addiu r21,r21,0x0001 # count = count + 1 80146a2c: 2aa20003 slti r2,r21,0x0003 80146a30: 1440fff7 bne r2,r0,0x80146a10 80146a34: 26310004 addiu r17,r17,0x0004 # destPtr = destPtr + 4 // (4 bytes; corresponds to 1 parameter) # } while (count < 3) 80146a38: 92070000 lbu r7,0x0000(r16) # MovementType = *paramPtr 80146a3c: 26100001 addiu r16,r16,0x0001 # paramPtr = paramPtr + 1 80146a40: 26040001 addiu r4,r16,0x0001 # paramPtr + 1 80146a44: afa70068 sw r7,0x0068(r29) # MovementType 80146a48: 92100000 lbu r16,0x0000(r16) # UnknownParam = *paramPtr 80146a4c: 0c05181e jal 0x80146078 # SpeedOrNumFrames = Load Halfword (paramPtr + 1) 80146a50: afb00060 sw r16,0x0060(r29) # UnknownParam 80146a54: 00021400 sll r2,r2,0x10 80146a58: 0002f403 sra r30,r2,0x10 # SpeedOrNumFrames 80146a5c: 34020001 ori r2,r0,0x0001 # 1 (SpriteMoveBeta) 80146a60: 16420017 bne r18,r2,0x80146ac0 # if (SpriteMoveBeta) { // (not SpriteMove) 80146a64: 00000000 nop 80146a68: 0000b821 addu r23,r0,r0 # count = 0 80146a6c: 27a40010 addiu r4,r29,0x0010 # do { 80146a70: 8c820010 lw r2,0x0010(r4) 80146a74: 8c830000 lw r3,0x0000(r4) 80146a78: 00000000 nop 80146a7c: 00431023 subu r2,r2,r3 80146a80: 00420018 mult r2,r2 80146a84: 26f70001 addiu r23,r23,0x0001 # count = count + 1 80146a88: 00001012 mflo r2 80146a8c: 00021100 sll r2,r2,0x04 80146a90: ac820020 sw r2,0x0020(r4) 80146a94: 2ae20003 slti r2,r23,0x0003 80146a98: 1440fff5 bne r2,r0,0x80146a70 80146a9c: 24840004 addiu r4,r4,0x0004 # } while (count < 3) 80146aa0: 8fa40030 lw r4,0x0030(r29) 80146aa4: 8fa20034 lw r2,0x0034(r29) 80146aa8: 8fa30038 lw r3,0x0038(r29) 80146aac: 00822021 addu r4,r4,r2 80146ab0: 0c006fce jal 0x8001bf38 # result_0x1bf38 = func_0x1bf38($a0); 80146ab4: 00832021 addu r4,r4,r3 80146ab8: 005e001a div r2,r30 80146abc: 0000f012 mflo r30 # NumFrames = (result_0x1bf38) / SpeedOrNumFrames // (Convert Speed into NumFrames) # } 80146ac0: 0000a821 addu r21,r0,r0 # count = 0 80146ac4: 27a40010 addiu r4,r29,0x0010 # &structData # do { 80146ac8: 26b50001 addiu r21,r21,0x0001 # count = count + 1 80146acc: 8c820000 lw r2,0x0000(r4) 80146ad0: 8c830010 lw r3,0x0010(r4) 80146ad4: 00021200 sll r2,r2,0x08 80146ad8: 00031a00 sll r3,r3,0x08 80146adc: ac820000 sw r2,0x0000(r4) 80146ae0: ac830010 sw r3,0x0010(r4) 80146ae4: 2aa20003 slti r2,r21,0x0003 80146ae8: 1440fff7 bne r2,r0,0x80146ac8 80146aec: 24840004 addiu r4,r4,0x0004 # } while (count < 3) 80146af0: 34150001 ori r21,r0,0x0001 # frame = 1 80146af4: 02be102a slt r2,r21,r30 80146af8: 104000c3 beq r2,r0,0x80146e08 80146afc: 34020010 ori r2,r0,0x0010 # 16 # if (NumFrames > 1) { 80146b00: 8fa70060 lw r7,0x0060(r29) 80146b04: 00000000 nop 80146b08: 00471023 subu r2,r2,r7 80146b0c: 001e3940 sll r7,r30,0x05 80146b10: afa20070 sw r2,0x0070(r29) 80146b14: afa70078 sw r7,0x0078(r29) # do { 80146b18: 0c0532a0 jal 0x8014ca80 # Switch To Next Thread (); 80146b1c: 0000b821 addu r23,r0,r0 80146b20: 03d51023 subu r2,r30,r21 80146b24: 00550018 mult r2,r21 80146b28: 00003812 mflo r7 80146b2c: afa70080 sw r7,0x0080(r29) 80146b30: 8fa70078 lw r7,0x0078(r29) 80146b34: 00000000 nop 80146b38: 03c70018 mult r30,r7 80146b3c: 00003812 mflo r7 80146b40: afa70088 sw r7,0x0088(r29) 80146b44: 00171880 sll r3,r23,0x02 80146b48: 27a20010 addiu r2,r29,0x0010 80146b4c: 0062a021 addu r20,r3,r2 80146b50: 8e830010 lw r3,0x0010(r20) 80146b54: 8e820000 lw r2,0x0000(r20) 80146b58: 8fa70068 lw r7,0x0068(r29) 80146b5c: 00000000 nop 80146b60: 14e00007 bne r7,r0,0x80146b80 80146b64: 00622023 subu r4,r3,r2 80146b68: 02a02821 addu r5,r21,r0 80146b6c: 0c05332e jal 0x8014ccb8 80146b70: 03c03021 addu r6,r30,r0 80146b74: 8e830000 lw r3,0x0000(r20) 80146b78: 08051b4b j 0x80146d2c 80146b7c: 00431021 addu r2,r2,r3 80146b80: 34020001 ori r2,r0,0x0001 80146b84: 14e20019 bne r7,r2,0x80146bec 80146b88: 34020003 ori r2,r0,0x0003 80146b8c: 8fa70070 lw r7,0x0070(r29) 80146b90: 00000000 nop 80146b94: 00870018 mult r4,r7 80146b98: 00009012 mflo r18 80146b9c: 8fa70060 lw r7,0x0060(r29) 80146ba0: 00000000 nop 80146ba4: 00870018 mult r4,r7 80146ba8: 02a02821 addu r5,r21,r0 80146bac: 8fa60078 lw r6,0x0078(r29) 80146bb0: 00001012 mflo r2 80146bb4: 00028840 sll r17,r2,0x01 80146bb8: 02322021 addu r4,r17,r18 80146bbc: 0c05332e jal 0x8014ccb8 80146bc0: 00922021 addu r4,r4,r18 80146bc4: 00408021 addu r16,r2,r0 80146bc8: 8fa50080 lw r5,0x0080(r29) 80146bcc: 8fa60088 lw r6,0x0088(r29) 80146bd0: 0c05332e jal 0x8014ccb8 80146bd4: 02202021 addu r4,r17,r0 80146bd8: 8e830000 lw r3,0x0000(r20) 80146bdc: 02028021 addu r16,r16,r2 80146be0: 02031821 addu r3,r16,r3 80146be4: 08051b4c j 0x80146d30 80146be8: ae830020 sw r3,0x0020(r20) 80146bec: 14e20015 bne r7,r2,0x80146c44 80146bf0: 34020002 ori r2,r0,0x0002 80146bf4: 8fa70070 lw r7,0x0070(r29) 80146bf8: 00000000 nop 80146bfc: 00870018 mult r4,r7 80146c00: 00009012 mflo r18 80146c04: 8fa70060 lw r7,0x0060(r29) 80146c08: 00000000 nop 80146c0c: 00870018 mult r4,r7 80146c10: 02a02821 addu r5,r21,r0 80146c14: 03c03021 addu r6,r30,r0 80146c18: 00002012 mflo r4 80146c1c: 0c05332e jal 0x8014ccb8 80146c20: 00042040 sll r4,r4,0x01 80146c24: 00521021 addu r2,r2,r18 80146c28: 00522021 addu r4,r2,r18 80146c2c: 02a02821 addu r5,r21,r0 80146c30: 0c05332e jal 0x8014ccb8 80146c34: 001e3140 sll r6,r30,0x05 80146c38: 8e830000 lw r3,0x0000(r20) 80146c3c: 08051b4b j 0x80146d2c 80146c40: 00431021 addu r2,r2,r3 80146c44: 8fa70068 lw r7,0x0068(r29) 80146c48: 00000000 nop 80146c4c: 14e20038 bne r7,r2,0x80146d30 80146c50: 001e17c2 srl r2,r30,0x1f 80146c54: 03c21021 addu r2,r30,r2 80146c58: 00029843 sra r19,r2,0x01 80146c5c: 000417c2 srl r2,r4,0x1f 80146c60: 16600002 bne r19,r0,0x80146c6c 80146c64: 0082b021 addu r22,r4,r2 80146c68: 34130001 ori r19,r0,0x0001 80146c6c: 00151040 sll r2,r21,0x01 80146c70: 005e102a slt r2,r2,r30 80146c74: 10400014 beq r2,r0,0x80146cc8 80146c78: 02a02821 addu r5,r21,r0 80146c7c: 8fa70070 lw r7,0x0070(r29) 80146c80: 00000000 nop 80146c84: 00870018 mult r4,r7 80146c88: 00009012 mflo r18 80146c8c: 8fa70060 lw r7,0x0060(r29) 80146c90: 00000000 nop 80146c94: 00870018 mult r4,r7 80146c98: 02603021 addu r6,r19,r0 80146c9c: 00002012 mflo r4 80146ca0: 0c05332e jal 0x8014ccb8 80146ca4: 00042040 sll r4,r4,0x01 80146ca8: 00521021 addu r2,r2,r18 80146cac: 00522021 addu r4,r2,r18 80146cb0: 02a02821 addu r5,r21,r0 80146cb4: 0c05332e jal 0x8014ccb8 80146cb8: 00133180 sll r6,r19,0x06 80146cbc: 8e830000 lw r3,0x0000(r20) 80146cc0: 08051b4b j 0x80146d2c 80146cc4: 00431021 addu r2,r2,r3 80146cc8: 8fa70070 lw r7,0x0070(r29) 80146ccc: 00000000 nop 80146cd0: 00870018 mult r4,r7 80146cd4: 00009012 mflo r18 80146cd8: 8fa70060 lw r7,0x0060(r29) 80146cdc: 00000000 nop 80146ce0: 00870018 mult r4,r7 80146ce4: 02b38023 subu r16,r21,r19 80146ce8: 02702823 subu r5,r19,r16 80146cec: 02603021 addu r6,r19,r0 80146cf0: 00001012 mflo r2 80146cf4: 00028840 sll r17,r2,0x01 80146cf8: 0c05332e jal 0x8014ccb8 80146cfc: 02202021 addu r4,r17,r0 80146d00: 02221021 addu r2,r17,r2 80146d04: 00521021 addu r2,r2,r18 80146d08: 00522021 addu r4,r2,r18 80146d0c: 02002821 addu r5,r16,r0 80146d10: 0c05332e jal 0x8014ccb8 80146d14: 00133180 sll r6,r19,0x06 80146d18: 8e830000 lw r3,0x0000(r20) 80146d1c: 00000000 nop 80146d20: 00431021 addu r2,r2,r3 80146d24: 00161843 sra r3,r22,0x01 80146d28: 00431021 addu r2,r2,r3 80146d2c: ae820020 sw r2,0x0020(r20) 80146d30: 26f70001 addiu r23,r23,0x0001 80146d34: 2ae20003 slti r2,r23,0x0003 80146d38: 1440ff83 bne r2,r0,0x80146b48 80146d3c: 00171880 sll r3,r23,0x02 80146d40: 8fa40058 lw r4,0x0058(r29) 80146d44: 0c0232ed jal 0x8008cbb4 80146d48: 00000000 nop 80146d4c: 14400004 bne r2,r0,0x80146d60 80146d50: 27b00050 addiu r16,r29,0x0050 80146d54: 0c053256 jal 0x8014c958 80146d58: 00000000 nop 80146d5c: 27b00050 addiu r16,r29,0x0050 80146d60: 8fa40058 lw r4,0x0058(r29) 80146d64: 97a20040 lhu r2,0x0040(r29) 80146d68: 97a30044 lhu r3,0x0044(r29) 80146d6c: 97a60048 lhu r6,0x0048(r29) 80146d70: 02002821 addu r5,r16,r0 80146d74: a7a20050 sh r2,0x0050(r29) 80146d78: a7a30052 sh r3,0x0052(r29) 80146d7c: 0c023271 jal 0x8008c9c4 80146d80: a7a60054 sh r6,0x0054(r29) 80146d84: 8fa20030 lw r2,0x0030(r29) 80146d88: 00000000 nop 80146d8c: 04410002 bgez r2,0x80146d98 80146d90: 00000000 nop 80146d94: 244200ff addiu r2,r2,0x00ff 80146d98: 8fa30034 lw r3,0x0034(r29) 80146d9c: 00021203 sra r2,r2,0x08 80146da0: 04610002 bgez r3,0x80146dac 80146da4: a7a20050 sh r2,0x0050(r29) 80146da8: 246300ff addiu r3,r3,0x00ff 80146dac: 8fa60038 lw r6,0x0038(r29) 80146db0: 00031203 sra r2,r3,0x08 80146db4: 04c10002 bgez r6,0x80146dc0 80146db8: a7a20052 sh r2,0x0052(r29) 80146dbc: 24c600ff addiu r6,r6,0x00ff 80146dc0: 02002821 addu r5,r16,r0 80146dc4: 8fa40058 lw r4,0x0058(r29) 80146dc8: 00061203 sra r2,r6,0x08 80146dcc: 0c023271 jal 0x8008c9c4 80146dd0: a7a20054 sh r2,0x0054(r29) 80146dd4: 26b50001 addiu r21,r21,0x0001 # frame = frame + 1 80146dd8: 87a20050 lh r2,0x0050(r29) 80146ddc: 87a30054 lh r3,0x0054(r29) 80146de0: 00021023 subu r2,r0,r2 80146de4: afa20040 sw r2,0x0040(r29) 80146de8: 87a20052 lh r2,0x0052(r29) 80146dec: 00031823 subu r3,r0,r3 80146df0: afa30048 sw r3,0x0048(r29) 80146df4: 00021023 subu r2,r0,r2 80146df8: afa20044 sw r2,0x0044(r29) 80146dfc: 02be102a slt r2,r21,r30 80146e00: 1440ff45 bne r2,r0,0x80146b18 # } while (frame < NumFrames) 80146e04: 00000000 nop # } 80146e08: 8fa40058 lw r4,0x0058(r29) 80146e0c: 0c0232ed jal 0x8008cbb4 # result_0x8cbb4 = ? 0x8cbb4 ($a0); (Returns 1 if a misc data pointer exists for this unit misc ID, 0 otherwise?) 80146e10: 00000000 nop 80146e14: 14400004 bne r2,r0,0x80146e28 80146e18: 27b00050 addiu r16,r29,0x0050 # if (result_0x8cbb4 == 0) { 80146e1c: 0c053256 jal 0x8014c958 # Stop Current Thread (); 80146e20: 00000000 nop 80146e24: 27b00050 addiu r16,r29,0x0050 # } 80146e28: 8fa40058 lw r4,0x0058(r29) 80146e2c: 97a20040 lhu r2,0x0040(r29) 80146e30: 97a30044 lhu r3,0x0044(r29) 80146e34: 97a60048 lhu r6,0x0048(r29) 80146e38: 02002821 addu r5,r16,r0 80146e3c: a7a20050 sh r2,0x0050(r29) 80146e40: a7a30052 sh r3,0x0052(r29) 80146e44: 0c023271 jal 0x8008c9c4 80146e48: a7a60054 sh r6,0x0054(r29) 80146e4c: 8fa20020 lw r2,0x0020(r29) 80146e50: 00000000 nop 80146e54: 04410002 bgez r2,0x80146e60 80146e58: 00000000 nop 80146e5c: 244200ff addiu r2,r2,0x00ff 80146e60: 8fa40024 lw r4,0x0024(r29) 80146e64: 00021203 sra r2,r2,0x08 80146e68: 04810002 bgez r4,0x80146e74 80146e6c: a7a20050 sh r2,0x0050(r29) 80146e70: 248400ff addiu r4,r4,0x00ff 80146e74: 8fa30028 lw r3,0x0028(r29) 80146e78: 00041203 sra r2,r4,0x08 80146e7c: 04610002 bgez r3,0x80146e88 80146e80: a7a20052 sh r2,0x0052(r29) 80146e84: 246300ff addiu r3,r3,0x00ff 80146e88: 00031203 sra r2,r3,0x08 80146e8c: 8fa40058 lw r4,0x0058(r29) 80146e90: 02002821 addu r5,r16,r0 80146e94: 0c023271 jal 0x8008c9c4 80146e98: a7a20054 sh r2,0x0054(r29) 80146e9c: 34020001 ori r2,r0,0x0001 80146ea0: 17c20003 bne r30,r2,0x80146eb0 80146ea4: 00000000 nop 80146ea8: 0c0532a0 jal 0x8014ca80 80146eac: 00000000 nop 80146eb0: 8fbf00b4 lw r31,0x00b4(r29) 80146eb4: 8fbe00b0 lw r30,0x00b0(r29) 80146eb8: 8fb700ac lw r23,0x00ac(r29) 80146ebc: 8fb600a8 lw r22,0x00a8(r29) 80146ec0: 8fb500a4 lw r21,0x00a4(r29) 80146ec4: 8fb400a0 lw r20,0x00a0(r29) 80146ec8: 8fb3009c lw r19,0x009c(r29) 80146ecc: 8fb20098 lw r18,0x0098(r29) 80146ed0: 8fb10094 lw r17,0x0094(r29) 80146ed4: 8fb00090 lw r16,0x0090(r29) 80146ed8: 27bd00b8 addiu r29,r29,0x00b8 80146edc: 03e00008 jr r31 80146ee0: 00000000 nop