Difference between revisions of "001a5c3c - 001a5d70"
Jump to navigation
Jump to search
m |
m |
||
Line 20: | Line 20: | ||
001a5c70: afb10014 sw r17,0x0014(r29) | 001a5c70: afb10014 sw r17,0x0014(r29) | ||
001a5c74: 24450001 addiu r5,r2,0x0001 add 1 to the thing | 001a5c74: 24450001 addiu r5,r2,0x0001 add 1 to the thing | ||
− | 001a5c78: 00041140 sll r2,r4,0x05 | + | 001a5c78: 00041140 sll r2,r4,0x05 |
− | 001a5c7c: 00441023 subu r2,r2,r4 | + | 001a5c7c: 00441023 subu r2,r2,r4 |
− | 001a5c80: 000210c0 sll r2,r2,0x03 r2 = | + | 001a5c80: 000210c0 sll r2,r2,0x03 r2 = phase * 0xF8 |
001a5c84: 3c04801c lui r4,0x801c | 001a5c84: 3c04801c lui r4,0x801c | ||
001a5c88: 2484f02c addiu r4,r4,0xf02c 0x801bf02c | 001a5c88: 2484f02c addiu r4,r4,0xf02c 0x801bf02c | ||
001a5c8c: 0065182a slt r3,r3,r5 set if r3 < r2 + 1 | 001a5c8c: 0065182a slt r3,r3,r5 set if r3 < r2 + 1 | ||
001a5c90: 3c01801c lui r1,0x801c | 001a5c90: 3c01801c lui r1,0x801c | ||
− | 001a5c94: ac25bf68 sw r5,-0x4098(r1) store r2 + 1 to 0x801bbf68 ( | + | 001a5c94: ac25bf68 sw r5,-0x4098(r1) store r2 + 1 to 0x801bbf68 (counter?) |
001a5c98: 10600003 beq r3,r0,0x001a5ca8 branch if r3 > r2 + 1 (don't save input to 0x801b9140) | 001a5c98: 10600003 beq r3,r0,0x001a5ca8 branch if r3 > r2 + 1 (don't save input to 0x801b9140) | ||
001a5c9c: 00448821 addu r17,r2,r4 r17 = 0x801bf02c + effect * 0xF8 | 001a5c9c: 00448821 addu r17,r2,r4 r17 = 0x801bf02c + effect * 0xF8 | ||
001a5ca0: 3c01801c lui r1,0x801c | 001a5ca0: 3c01801c lui r1,0x801c | ||
001a5ca4: ac259140 sw r5,-0x6ec0(r1) Count only if greater than other number? | 001a5ca4: ac259140 sw r5,-0x6ec0(r1) Count only if greater than other number? | ||
− | 001a5ca8: 16000003 bne r16,r0,0x001a5cb8 branch if frame pointer is not erroneous | + | 001a5ca8: 16000003 bne r16,r0,0x001a5cb8 branch if frame pointer is not erroneous |
001a5cac: 34040001 ori r4,r0,0x0001 | 001a5cac: 34040001 ori r4,r0,0x0001 | ||
− | 001a5cb0: 0c01127e jal 0x000449f8 | + | 001a5cb0: 0c01127e jal 0x000449f8 jr r31. error code 0x13e? no frame to process? |
001a5cb4: 3405003e ori r5,r0,0x003e | 001a5cb4: 3405003e ori r5,r0,0x003e | ||
− | 001a5cb8: 8e020004 lw r2,0x0004(r16) | + | 001a5cb8: 8e020004 lw r2,0x0004(r16) Load pointer to next frame's data? |
− | 001a5cbc: 3245f000 andi r5,r18,0xf000 | + | 001a5cbc: 3245f000 andi r5,r18,0xf000 r5 = r18 bitmask 0xf000 |
001a5cc0: 3c01801c lui r1,0x801c | 001a5cc0: 3c01801c lui r1,0x801c | ||
− | 001a5cc4: ac229270 sw r2,-0x6d90(r1) | + | 001a5cc4: ac229270 sw r2,-0x6d90(r1) store pointer for next repeat |
001a5cc8: 34021000 ori r2,r0,0x1000 | 001a5cc8: 34021000 ori r2,r0,0x1000 | ||
− | 001a5ccc: 10a2000e beq r5,r2,0x001a5d08 branch if r5 = 0x1000 (do not apply transform matrix + apply effect zoom with camera) | + | 001a5ccc: 10a2000e beq r5,r2,0x001a5d08 branch if r5 = 0x1000 (do not apply transform matrix + apply effect zoom with camera) |
001a5cd0: 28a21001 slti r2,r5,0x1001 | 001a5cd0: 28a21001 slti r2,r5,0x1001 | ||
− | 001a5cd4: 10400005 beq r2,r0,0x001a5cec branch if r5 > 0x1000 | + | 001a5cd4: 10400005 beq r2,r0,0x001a5cec branch if r5 > 0x1000 |
001a5cd8: 00000000 nop | 001a5cd8: 00000000 nop | ||
− | 001a5cdc: 10a0000d beq r5,r0,0x001a5d14 branch if r5 = 0 | + | 001a5cdc: 10a0000d beq r5,r0,0x001a5d14 branch if r5 = 0 |
− | 001a5ce0: 00002021 addu r4,r0,r0 | + | 001a5ce0: 00002021 addu r4,r0,r0 apply transformation matrix + zoom effect to camera |
− | 001a5ce4: 08069749 j 0x001a5d24 | + | 001a5ce4: 08069749 j 0x001a5d24 skip rotating effect data. if an error is thrown |
001a5ce8: ae000000 sw r0,0x0000(r16) | 001a5ce8: ae000000 sw r0,0x0000(r16) | ||
001a5cec: 34022000 ori r2,r0,0x2000 | 001a5cec: 34022000 ori r2,r0,0x2000 | ||
− | 001a5cf0: 10a20007 beq r5,r2,0x001a5d10 branch if r5 = 0x2000 (don't zoom effect to camera, apply transform matrix | + | 001a5cf0: 10a20007 beq r5,r2,0x001a5d10 branch if r5 = 0x2000 (don't zoom effect to camera, apply transform matrix |
001a5cf4: 34023000 ori r2,r0,0x3000 | 001a5cf4: 34023000 ori r2,r0,0x3000 | ||
− | 001a5cf8: 10a20006 beq r5,r2,0x001a5d14 branch if r5 = 0x3000 | + | 001a5cf8: 10a20006 beq r5,r2,0x001a5d14 branch if r5 = 0x3000 |
− | 001a5cfc: 34040006 ori r4,r0,0x0006 | + | 001a5cfc: 34040006 ori r4,r0,0x0006 Store do not apply transformational(?) matrix and do not zoom effect with camera function |
001a5d00: 08069749 j 0x001a5d24 | 001a5d00: 08069749 j 0x001a5d24 | ||
001a5d04: ae000000 sw r0,0x0000(r16) | 001a5d04: ae000000 sw r0,0x0000(r16) | ||
001a5d08: 08069745 j 0x001a5d14 | 001a5d08: 08069745 j 0x001a5d14 | ||
− | 001a5d0c: 34040002 ori r4,r0,0x0002 | + | 001a5d0c: 34040002 ori r4,r0,0x0002 store do not apply transformational(?) Matrix and zoom effect with camera |
− | 001a5d10: 34040004 ori r4,r0,0x0004 | + | 001a5d10: 34040004 ori r4,r0,0x0004 Store Do not zoom effect with camera function + apply transform matrix |
Default return: | Default return: | ||
− | 001a5d14: 0c06a802 jal 0x001aa008 | + | 001a5d14: 0c06a802 jal 0x001aa008 [[001aa008 - 001aa0e4]] |
001a5d18: 00000000 nop | 001a5d18: 00000000 nop | ||
− | 001a5d1c: ae020054 sw r2,0x0054(r16) | + | 001a5d1c: ae020054 sw r2,0x0054(r16) Store pointer to parameter data |
− | 001a5d20: ae000000 sw r0,0x0000(r16) | + | 001a5d20: ae000000 sw r0,0x0000(r16) clear? |
− | 001a5d24: 8e2200d0 lw r2,0x00d0(r17) | + | 001a5d24: 8e2200d0 lw r2,0x00d0(r17) load another effect table? right after palette table maybe??? |
001a5d28: 00000000 nop | 001a5d28: 00000000 nop | ||
− | 001a5d2c: ae020004 sw r2,0x0004(r16) | + | 001a5d2c: ae020004 sw r2,0x0004(r16) store the pointer to it, in place of the temporary beforehand? |
− | 001a5d30: 8e2200d0 lw r2,0x00d0(r17) | + | 001a5d30: 8e2200d0 lw r2,0x00d0(r17) " |
001a5d34: 00000000 nop | 001a5d34: 00000000 nop | ||
− | 001a5d38: 10400002 beq r2,r0,0x001a5d44 branch if erroneous | + | 001a5d38: 10400002 beq r2,r0,0x001a5d44 branch if erroneous |
001a5d3c: 00000000 nop | 001a5d3c: 00000000 nop | ||
− | 001a5d40: ac500000 sw r16,0x0000(r2) | + | 001a5d40: ac500000 sw r16,0x0000(r2) store pointer to ? in ? effect table (loads later for 0x0004 point...? which is the where this pointer is being saved???) |
− | 001a5d44: 9623001c lhu r3,0x001c(r17) | + | 001a5d44: 9623001c lhu r3,0x001c(r17) load counter from Effect data table |
001a5d48: 02001021 addu r2,r16,r0 | 001a5d48: 02001021 addu r2,r16,r0 | ||
001a5d4c: ae2200d0 sw r2,0x00d0(r17) | 001a5d4c: ae2200d0 sw r2,0x00d0(r17) | ||
− | 001a5d50: 24630001 addiu r3,r3,0x0001 | + | 001a5d50: 24630001 addiu r3,r3,0x0001 add 1 to counter |
− | 001a5d54: a623001c sh r3,0x001c(r17) | + | 001a5d54: a623001c sh r3,0x001c(r17) store new counter |
001a5d58: 8fbf001c lw r31,0x001c(r29) | 001a5d58: 8fbf001c lw r31,0x001c(r29) | ||
001a5d5c: 8fb20018 lw r18,0x0018(r29) | 001a5d5c: 8fb20018 lw r18,0x0018(r29) |
Latest revision as of 06:50, 23 December 2022
Parameters: r4 = (p1) Effect Phase r5 = (p2) VRAM flag; camera interactions (zoom and tilt?) 001a5c3c: 27bdffe0 addiu r29,r29,0xffe0 001a5c40: afb20018 sw r18,0x0018(r29) 001a5c44: 00a09021 addu r18,r5,r0 r18 = r5 input 001a5c48: 3c02801c lui r2,0x801c 001a5c4c: 8c42bf68 lw r2,-0x4098(r2) 0x801bbf68 001a5c50: 3c03801c lui r3,0x801c 001a5c54: 8c639140 lw r3,-0x6ec0(r3) 0x801b9140 001a5c58: 00042400 sll r4,r4,0x10 001a5c5c: afb00010 sw r16,0x0010(r29) 001a5c60: 3c10801c lui r16,0x801c 001a5c64: 8e109270 lw r16,-0x6d90(r16) Load pointer to current misc/temporary? frame data. 0x54 bytes long. 001a5c68: 00042403 sra r4,r4,0x10 001a5c6c: afbf001c sw r31,0x001c(r29) 001a5c70: afb10014 sw r17,0x0014(r29) 001a5c74: 24450001 addiu r5,r2,0x0001 add 1 to the thing 001a5c78: 00041140 sll r2,r4,0x05 001a5c7c: 00441023 subu r2,r2,r4 001a5c80: 000210c0 sll r2,r2,0x03 r2 = phase * 0xF8 001a5c84: 3c04801c lui r4,0x801c 001a5c88: 2484f02c addiu r4,r4,0xf02c 0x801bf02c 001a5c8c: 0065182a slt r3,r3,r5 set if r3 < r2 + 1 001a5c90: 3c01801c lui r1,0x801c 001a5c94: ac25bf68 sw r5,-0x4098(r1) store r2 + 1 to 0x801bbf68 (counter?) 001a5c98: 10600003 beq r3,r0,0x001a5ca8 branch if r3 > r2 + 1 (don't save input to 0x801b9140) 001a5c9c: 00448821 addu r17,r2,r4 r17 = 0x801bf02c + effect * 0xF8 001a5ca0: 3c01801c lui r1,0x801c 001a5ca4: ac259140 sw r5,-0x6ec0(r1) Count only if greater than other number? 001a5ca8: 16000003 bne r16,r0,0x001a5cb8 branch if frame pointer is not erroneous 001a5cac: 34040001 ori r4,r0,0x0001 001a5cb0: 0c01127e jal 0x000449f8 jr r31. error code 0x13e? no frame to process? 001a5cb4: 3405003e ori r5,r0,0x003e 001a5cb8: 8e020004 lw r2,0x0004(r16) Load pointer to next frame's data? 001a5cbc: 3245f000 andi r5,r18,0xf000 r5 = r18 bitmask 0xf000 001a5cc0: 3c01801c lui r1,0x801c 001a5cc4: ac229270 sw r2,-0x6d90(r1) store pointer for next repeat 001a5cc8: 34021000 ori r2,r0,0x1000 001a5ccc: 10a2000e beq r5,r2,0x001a5d08 branch if r5 = 0x1000 (do not apply transform matrix + apply effect zoom with camera) 001a5cd0: 28a21001 slti r2,r5,0x1001 001a5cd4: 10400005 beq r2,r0,0x001a5cec branch if r5 > 0x1000 001a5cd8: 00000000 nop 001a5cdc: 10a0000d beq r5,r0,0x001a5d14 branch if r5 = 0 001a5ce0: 00002021 addu r4,r0,r0 apply transformation matrix + zoom effect to camera 001a5ce4: 08069749 j 0x001a5d24 skip rotating effect data. if an error is thrown 001a5ce8: ae000000 sw r0,0x0000(r16) 001a5cec: 34022000 ori r2,r0,0x2000 001a5cf0: 10a20007 beq r5,r2,0x001a5d10 branch if r5 = 0x2000 (don't zoom effect to camera, apply transform matrix 001a5cf4: 34023000 ori r2,r0,0x3000 001a5cf8: 10a20006 beq r5,r2,0x001a5d14 branch if r5 = 0x3000 001a5cfc: 34040006 ori r4,r0,0x0006 Store do not apply transformational(?) matrix and do not zoom effect with camera function 001a5d00: 08069749 j 0x001a5d24 001a5d04: ae000000 sw r0,0x0000(r16) 001a5d08: 08069745 j 0x001a5d14 001a5d0c: 34040002 ori r4,r0,0x0002 store do not apply transformational(?) Matrix and zoom effect with camera 001a5d10: 34040004 ori r4,r0,0x0004 Store Do not zoom effect with camera function + apply transform matrix Default return: 001a5d14: 0c06a802 jal 0x001aa008 001aa008 - 001aa0e4 001a5d18: 00000000 nop 001a5d1c: ae020054 sw r2,0x0054(r16) Store pointer to parameter data 001a5d20: ae000000 sw r0,0x0000(r16) clear? 001a5d24: 8e2200d0 lw r2,0x00d0(r17) load another effect table? right after palette table maybe??? 001a5d28: 00000000 nop 001a5d2c: ae020004 sw r2,0x0004(r16) store the pointer to it, in place of the temporary beforehand? 001a5d30: 8e2200d0 lw r2,0x00d0(r17) " 001a5d34: 00000000 nop 001a5d38: 10400002 beq r2,r0,0x001a5d44 branch if erroneous 001a5d3c: 00000000 nop 001a5d40: ac500000 sw r16,0x0000(r2) store pointer to ? in ? effect table (loads later for 0x0004 point...? which is the where this pointer is being saved???) 001a5d44: 9623001c lhu r3,0x001c(r17) load counter from Effect data table 001a5d48: 02001021 addu r2,r16,r0 001a5d4c: ae2200d0 sw r2,0x00d0(r17) 001a5d50: 24630001 addiu r3,r3,0x0001 add 1 to counter 001a5d54: a623001c sh r3,0x001c(r17) store new counter 001a5d58: 8fbf001c lw r31,0x001c(r29) 001a5d5c: 8fb20018 lw r18,0x0018(r29) 001a5d60: 8fb10014 lw r17,0x0014(r29) 001a5d64: 8fb00010 lw r16,0x0010(r29) 001a5d68: 27bd0020 addiu r29,r29,0x0020 001a5d6c: 03e00008 jr r31 001a5d70: 00000000 nop