001a5ea4 - 001a600c
Jump to navigation
Jump to search
effect vector matrix routine? 001a5ea4: 27bdffd0 addiu r29,r29,0xffd0 001a5ea8: afb00028 sw r16,0x0028(r29) 001a5eac: 00a08021 addu r16,r5,r0 r5 is... I dunno. way outside the bounds of any known table - but also not a stack pointer? 001a5eb0: afbf002c sw r31,0x002c(r29) 001a5eb4: 8e02000c lw r2,0x000c(r16) 001a5eb8: 8e030054 lw r3,0x0054(r16) r3 = current effect parameter pointer 001a5ebc: 00021303 sra r2,r2,0x0c 001a5ec0: a462000c sh r2,0x000c(r3) Store XX 001a5ec4: 8e020010 lw r2,0x0010(r16) 001a5ec8: 8e030054 lw r3,0x0054(r16) r3 = current effect parameter pointer 001a5ecc: 00021303 sra r2,r2,0x0c 001a5ed0: a462000e sh r2,0x000e(r3) Store YY 001a5ed4: 8e020014 lw r2,0x0014(r16) 001a5ed8: 8e030054 lw r3,0x0054(r16) r3 = current effect parameter pointer. again. Christ 3 times? 001a5edc: 00021303 sra r2,r2,0x0c 001a5ee0: a4620010 sh r2,0x0010(r3) Store ZZ 001a5ee4: 9602004c lhu r2,0x004c(r16) 001a5ee8: 00000000 nop 001a5eec: 30420002 andi r2,r2,0x0002 check for flag 2 001a5ef0: 1040001d beq r2,r0,0x001a5f68 branch if flag 2 doesn't exist (don't translate from map plane to projection on screen? (or vice versa?)) 001a5ef4: 00000000 nop 001a5ef8: 3c04800a lui r4,0x800a 001a5efc: 24848a24 addiu r4,r4,0x8a24 0x80098a24 (Rotation matrix vector pointer?) 001a5f00: 0c00742a jal 0x0001d0a8 Store Rotation matrix elements to GTE return MX 001a5f04: 00000000 nop 001a5f08: 3c04801c lui r4,0x801c 001a5f0c: 24848a0c addiu r4,r4,0x8a0c 0x801b8a0c (translation vector pointer?) 001a5f10: 0c00744e jal 0x0001d138 Store Translation Vectors to GTE return CV (bets on the acronym here being "camera vector" which is never explained.) 001a5f14: 00000000 nop 001a5f18: 8e020018 lw r2,0x0018(r16) load Vector X 001a5f1c: 27a40010 addiu r4,r29,0x0010 pointer to vector x (0x10, half) y (0x12, half) and z (0x14, word) 001a5f20: 000210c3 sra r2,r2,0x03 001a5f24: a7a20010 sh r2,0x0010(r29) store vector X 001a5f28: 8e02001c lw r2,0x001c(r16) load Vector Y 001a5f2c: 27a50018 addiu r5,r29,0x0018 return value pointer = sp + 0x18 001a5f30: 000210c3 sra r2,r2,0x03 vector Y / 8 001a5f34: a7a20012 sh r2,0x0012(r29) store vector Y 001a5f38: 8e020020 lw r2,0x0020(r16) load Vector Z (word) 001a5f3c: 27a60024 addiu r6,r29,0x0024 return value pointer = sp + 0x24 001a5f40: 000210c3 sra r2,r2,0x03 Z / 8 001a5f44: 0c00755e jal 0x0001d578 Get vector*matrix from GTE return CV + ([x;y;z] * MX) 001a5f48: a7a20014 sh r2,0x0014(r29) store vector Z 001a5f4c: 8fa4001c lw r4,0x001c(r29) ΔY 001a5f50: 8fa50018 lw r5,0x0018(r29) ΔX 001a5f54: 0c00763a jal 0x0001d8e8 Get Angle Value via ArcTan Table Atan(r4/r5) 001a5f58: 00000000 nop 001a5f5c: 8e030054 lw r3,0x0054(r16) load effect parameter pointer 001a5f60: 00000000 nop 001a5f64: a4620012 sh r2,0x0012(r3) store angle between units at 0x12 001a5f68: 9602004e lhu r2,0x004e(r16) ? 001a5f6c: 00000000 nop 001a5f70: 30420040 andi r2,r2,0x0040 check for 0x40 flag 001a5f74: 1040001c beq r2,r0,0x001a5fe8 branch if no 0x40 flag (does not have custom colour?) 001a5f78: 34050080 ori r5,r0,0x0080 blue = 0x80 001a5f7c: 92030046 lbu r3,0x0046(r16) math transform function? 001a5f80: 8e040054 lw r4,0x0054(r16) r4 = current effect parameter pointer 001a5f84: 3c07801c lui r7,0x801c 001a5f88: 8ce7bf7c lw r7,-0x4084(r7) 0x801cbf7c (effect math transformation on input value?) 001a5f8c: 86080050 lh r8,0x0050(r16) math input? 001a5f90: 00031080 sll r2,r3,0x02 001a5f94: 00431021 addu r2,r2,r3 001a5f98: 00021140 sll r2,r2,0x05 table length is 0xA0 per entry 001a5f9c: 00471021 addu r2,r2,r7 points to math transform table of function 001a5fa0: 00481021 addu r2,r2,r8 + r8 001a5fa4: 92030047 lbu r3,0x0047(r16) second function set...? 001a5fa8: 90450004 lbu r5,0x0004(r2) loads blue value (loads function(input)) 001a5fac: 00031080 sll r2,r3,0x02 001a5fb0: 00431021 addu r2,r2,r3 001a5fb4: 00021140 sll r2,r2,0x05 0xA0 per entry 001a5fb8: 00471021 addu r2,r2,r7 001a5fbc: 00481021 addu r2,r2,r8 001a5fc0: 92030048 lbu r3,0x0048(r16) third function set? 001a5fc4: 90460004 lbu r6,0x0004(r2) Loads green value (function_2(input)) 001a5fc8: 00031080 sll r2,r3,0x02 001a5fcc: 00431021 addu r2,r2,r3 001a5fd0: 00021140 sll r2,r2,0x05 001a5fd4: 00471021 addu r2,r2,r7 001a5fd8: 00481021 addu r2,r2,r8 001a5fdc: 90470004 lbu r7,0x0004(r2) Loads red value (function_3(input)) 001a5fe0: 080697fd j 0x001a5ff4 001a5fe4: 00000000 nop 001a5fe8: 8e040054 lw r4,0x0054(r16) load parameter data pointer from r16 001a5fec: 34060080 ori r6,r0,0x0080 green = 0x80 001a5ff0: 34070080 ori r7,r0,0x0080 red = 0x80 001a5ff4: 0c06a87e jal 0x001aa1f8 Composite frame loading for parameter sets(current effect param data, blue, green, red) 001a5ff8: 00000000 nop 001a5ffc: 8fbf002c lw r31,0x002c(r29) 001a6000: 8fb00028 lw r16,0x0028(r29) 001a6004: 27bd0030 addiu r29,r29,0x0030 001a6008: 03e00008 jr r31 001a600c: 00000000 nop