Difference between revisions of "E004 001c2500 - 001c39f4"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m
m
 
(4 intermediate revisions by the same user not shown)
Line 18: Line 18:
 
  001c2544: sll r2,r2,0x02                  p3 * 0xc4
 
  001c2544: sll r2,r2,0x02                  p3 * 0xc4
 
  001c2548: lui r3,0x801c
 
  001c2548: lui r3,0x801c
  001c254c: lw r3,-0x4078(r3)                pointer to? in effect file
+
  001c254c: lw r3,-0x4078(r3)                pointer to raw model data in effect file
 
  001c2550: addiu r2,r2,0x0014              p3 * 0xc4 + 0x14
 
  001c2550: addiu r2,r2,0x0014              p3 * 0xc4 + 0x14
 
  001c2554: sw r31,0x067c(r29)
 
  001c2554: sw r31,0x067c(r29)
Line 27: Line 27:
 
  001c2568: sw r17,0x065c(r29)
 
  001c2568: sw r17,0x065c(r29)
 
  001c256c: sw r7,0x05f8(r29)                holy shit. anyway, stores p4 to 0x05f8 stack
 
  001c256c: sw r7,0x05f8(r29)                holy shit. anyway, stores p4 to 0x05f8 stack
  001c2570: addu r19,r2,r3
+
  001c2570: addu r19,r2,r3                   effect model data pointer
 
  001c2574: lhu r20,0x0002(r19)
 
  001c2574: lhu r20,0x0002(r19)
 
  001c2578: jal 0x00044a60                    [[Find Address for Polygons by Depth]] <- get Otag list
 
  001c2578: jal 0x00044a60                    [[Find Address for Polygons by Depth]] <- get Otag list
Line 109: Line 109:
 
if 0x22 TED == 2 (execute)
 
if 0x22 TED == 2 (execute)
  
  001c2694: sll r2,r30,0x02
+
  001c2694: sll r2,r30,0x02                       p2 * 4
  001c2698: addu r2,r2,r23
+
  001c2698: addu r2,r2,r23                       temp effect data + p2 * 4?
  001c269c: lw r22,0x00e4(r2)
+
  001c269c: lw r22,0x00e4(r2)                     current model pointer
 
  001c26a0: addiu r2,r0,-0x0001
 
  001c26a0: addiu r2,r0,-0x0001
 
  001c26a4: lw r3,0x0008(r19)
 
  001c26a4: lw r3,0x0008(r19)
 
  001c26a8: lui r1,0x801c
 
  001c26a8: lui r1,0x801c
 
  001c26ac: addu r1,r1,r18
 
  001c26ac: addu r1,r1,r18
  001c26b0: lbu r16,-0x0fae(r1)
+
  001c26b0: lbu r16,-0x0fae(r1)                   0x801bf052, 0x30 something
 
  001c26b4: andi r17,r3,0x000f
 
  001c26b4: andi r17,r3,0x000f
 
  001c26b8: addiu r17,r17,-0x0001
 
  001c26b8: addiu r17,r17,-0x0001
  001c26bc: beq r17,r2,0x001c26ec
+
  001c26bc: beq r17,r2,0x001c26ec                 if == 0, clears phase index multiple thing,
 
  001c26c0: sll r2,r17,0x02
 
  001c26c0: sll r2,r17,0x02
 
  001c26c4: addu r2,r2,r17
 
  001c26c4: addu r2,r2,r17
Line 131: Line 131:
 
  001c26e4: j 0x001c26f4
 
  001c26e4: j 0x001c26f4
 
  001c26e8: addu r4,r19,r0
 
  001c26e8: addu r4,r19,r0
 +
 
  001c26ec: addu r18,r0,r0
 
  001c26ec: addu r18,r0,r0
  001c26f0: addu r4,r19,r0
+
  001c26f0: addu r4,r19,r0                         has raw effect model data
  001c26f4: addu r5,r18,r0
+
  001c26f4: addu r5,r18,r0                         transform value? just. 0
  001c26f8: jal 0x001a8c14
+
  001c26f8: jal 0x001a8c14                         fetch effect model data? returned into r6 pointer.
  001c26fc: addiu r6,r29,0x05b0
+
  001c26fc: addiu r6,r29,0x05b0                   parse stack + 0x5b0?
 
  001c2700: andi r3,r20,0x0e00
 
  001c2700: andi r3,r20,0x0e00
 
  001c2704: ori r2,r0,0x0400
 
  001c2704: ori r2,r0,0x0400
Line 148: Line 149:
 
  001c2728: j 0x001c2888
 
  001c2728: j 0x001c2888
 
  001c272c: nop
 
  001c272c: nop
 +
 
  001c2730: ori r2,r0,0x0800
 
  001c2730: ori r2,r0,0x0800
 
  001c2734: beq r3,r2,0x001c2888
 
  001c2734: beq r3,r2,0x001c2888
Line 157: Line 159:
 
  001c274c: j 0x001c2888
 
  001c274c: j 0x001c2888
 
  001c2750: nop
 
  001c2750: nop
 +
 
  001c2754: ori r2,r0,0x0a00
 
  001c2754: ori r2,r0,0x0a00
 
  001c2758: beq r3,r2,0x001c2848
 
  001c2758: beq r3,r2,0x001c2848
Line 162: Line 165:
 
  001c2760: j 0x001c2888
 
  001c2760: j 0x001c2888
 
  001c2764: nop
 
  001c2764: nop
 +
 
  001c2768: lui r16,0x801c
 
  001c2768: lui r16,0x801c
 
  001c276c: addiu r16,r16,-0x5236
 
  001c276c: addiu r16,r16,-0x5236
Line 218: Line 222:
 
  001c2840: j 0x001c2888
 
  001c2840: j 0x001c2888
 
  001c2844: sw r3,0x05b8(r29)
 
  001c2844: sw r3,0x05b8(r29)
 +
 
  001c2848: jal 0x0008df48
 
  001c2848: jal 0x0008df48
 
  001c284c: addiu r4,r29,0x05f0
 
  001c284c: addiu r4,r29,0x05f0
Line 251: Line 256:
 
  001c28c4: j 0x001c28d0
 
  001c28c4: j 0x001c28d0
 
  001c28c8: nop
 
  001c28c8: nop
 +
 
  001c28cc: addu r18,r0,r0
 
  001c28cc: addu r18,r0,r0
 
  001c28d0: lh r4,0x00a8(r19)
 
  001c28d0: lh r4,0x00a8(r19)
Line 274: Line 280:
 
  001c2920: j 0x001c292c
 
  001c2920: j 0x001c292c
 
  001c2924: nop
 
  001c2924: nop
 +
 
  001c2928: addu r18,r0,r0
 
  001c2928: addu r18,r0,r0
 
  001c292c: lh r4,0x002c(r19)
 
  001c292c: lh r4,0x002c(r19)
Line 324: Line 331:
 
  001c29e8: j 0x001c29f4
 
  001c29e8: j 0x001c29f4
 
  001c29ec: nop
 
  001c29ec: nop
 +
 
  001c29f0: addu r18,r0,r0
 
  001c29f0: addu r18,r0,r0
 
  001c29f4: lh r4,0x0064(r19)
 
  001c29f4: lh r4,0x0064(r19)
Line 358: Line 366:
 
  001c2a70: j 0x001c2a7c
 
  001c2a70: j 0x001c2a7c
 
  001c2a74: nop
 
  001c2a74: nop
 +
 
  001c2a78: addu r18,r0,r0
 
  001c2a78: addu r18,r0,r0
 
  001c2a7c: lh r4,0x007c(r19)
 
  001c2a7c: lh r4,0x007c(r19)
 
  001c2a80: lh r5,0x0088(r19)
 
  001c2a80: lh r5,0x0088(r19)
  001c2a84: jal 0x001a8be0
+
  001c2a84: jal 0x001a8be0                 decode polygon point (no pointer to store? returns value in r4 unless r6 exists.)
 
  001c2a88: addu r6,r18,r0
 
  001c2a88: addu r6,r18,r0
  001c2a8c: sw r2,0x0040(r29)
+
  001c2a8c: sw r2,0x0040(r29)             store point
 
  001c2a90: lh r4,0x0080(r19)
 
  001c2a90: lh r4,0x0080(r19)
 
  001c2a94: lh r5,0x008c(r19)
 
  001c2a94: lh r5,0x008c(r19)
 
  001c2a98: jal 0x001a8be0
 
  001c2a98: jal 0x001a8be0
 
  001c2a9c: addu r6,r18,r0
 
  001c2a9c: addu r6,r18,r0
  001c2aa0: sw r2,0x0044(r29)
+
  001c2aa0: sw r2,0x0044(r29)             store point
 
  001c2aa4: lh r4,0x0084(r19)
 
  001c2aa4: lh r4,0x0084(r19)
 
  001c2aa8: lh r5,0x0090(r19)
 
  001c2aa8: lh r5,0x0090(r19)
 
  001c2aac: jal 0x001a8be0
 
  001c2aac: jal 0x001a8be0
 
  001c2ab0: addu r6,r18,r0
 
  001c2ab0: addu r6,r18,r0
  001c2ab4: sw r2,0x0048(r29)
+
  001c2ab4: sw r2,0x0048(r29)             store point
  001c2ab8: lw r2,0x0008(r19)
+
  001c2ab8: lw r2,0x0008(r19)            
 
  001c2abc: nop
 
  001c2abc: nop
 
  001c2ac0: srl r17,r2,0x1c
 
  001c2ac0: srl r17,r2,0x1c
 
  001c2ac4: addiu r17,r17,-0x0001
 
  001c2ac4: addiu r17,r17,-0x0001
 
  001c2ac8: addiu r2,r0,-0x0001
 
  001c2ac8: addiu r2,r0,-0x0001
  001c2acc: beq r17,r2,0x001c2afc
+
  001c2acc: beq r17,r2,0x001c2afc         ...?
 
  001c2ad0: sll r2,r17,0x02
 
  001c2ad0: sll r2,r17,0x02
 
  001c2ad4: addu r2,r2,r17
 
  001c2ad4: addu r2,r2,r17
Line 391: Line 400:
 
  001c2af4: j 0x001c2b00
 
  001c2af4: j 0x001c2b00
 
  001c2af8: nop
 
  001c2af8: nop
 +
 
  001c2afc: addu r18,r0,r0
 
  001c2afc: addu r18,r0,r0
 
  001c2b00: lh r4,0x005c(r19)
 
  001c2b00: lh r4,0x005c(r19)
Line 400: Line 410:
 
  001c2b18: addu r4,r4,r2
 
  001c2b18: addu r4,r4,r2
 
  001c2b1c: andi r4,r4,0x0fff
 
  001c2b1c: andi r4,r4,0x0fff
  001c2b20: jal 0x0001bb5c
+
  001c2b20: jal 0x0001bb5c                   sin r4
 
  001c2b24: sh r4,0x1a04(r22)
 
  001c2b24: sh r4,0x1a04(r22)
  001c2b28: lh r4,0x1a04(r22)
+
  001c2b28: lh r4,0x1a04(r22)                
 
  001c2b2c: addu r21,r2,r0
 
  001c2b2c: addu r21,r2,r0
  001c2b30: jal 0x0001bb5c
+
  001c2b30: jal 0x0001bb5c                   sin r4
 
  001c2b34: addiu r4,r4,0x0200
 
  001c2b34: addiu r4,r4,0x0200
 
  001c2b38: lh r4,0x1a04(r22)
 
  001c2b38: lh r4,0x1a04(r22)
  001c2b3c: jal 0x0001bc28
+
  001c2b3c: jal 0x0001bc28                   cosine r4
 
  001c2b40: addu r20,r2,r0
 
  001c2b40: addu r20,r2,r0
 
  001c2b44: addu r17,r0,r0
 
  001c2b44: addu r17,r0,r0
 
  001c2b48: lh r4,0x1a04(r22)
 
  001c2b48: lh r4,0x1a04(r22)
 
  001c2b4c: addu r18,r2,r0
 
  001c2b4c: addu r18,r2,r0
  001c2b50: jal 0x0001bc28
+
  001c2b50: jal 0x0001bc28                   cosine r4
 
  001c2b54: addiu r4,r4,0x0200
 
  001c2b54: addiu r4,r4,0x0200
 
  001c2b58: addu r5,r2,r0
 
  001c2b58: addu r5,r2,r0
 
  001c2b5c: addu r10,r0,r0
 
  001c2b5c: addu r10,r0,r0
 
  001c2b60: addu r8,r0,r0
 
  001c2b60: addu r8,r0,r0
 +
 
  001c2b64: lw r2,0x1a08(r22)
 
  001c2b64: lw r2,0x1a08(r22)
 
  001c2b68: nop
 
  001c2b68: nop
Line 492: Line 503:
 
  001c2c88: sw r2,0x0038(r29)
 
  001c2c88: sw r2,0x0038(r29)
 
  001c2c8c: slti r2,r17,0x0009
 
  001c2c8c: slti r2,r17,0x0009
  001c2c90: bne r2,r0,0x001c2b64
+
  001c2c90: bne r2,r0,0x001c2b64           ^ loop
 
  001c2c94: addu r10,r10,r4
 
  001c2c94: addu r10,r10,r4
 +
 
  001c2c98: lui r16,0x800a
 
  001c2c98: lui r16,0x800a
 
  001c2c9c: addiu r16,r16,-0x75dc
 
  001c2c9c: addiu r16,r16,-0x75dc
Line 509: Line 521:
 
  001c2ccc: jal 0x0001d138                  [[Store Translation Vectors to GTE]]
 
  001c2ccc: jal 0x0001d138                  [[Store Translation Vectors to GTE]]
 
  001c2cd0: addu r4,r16,r0
 
  001c2cd0: addu r4,r16,r0
  001c2cd4: addiu r4,r29,0x0010
+
  001c2cd4: addiu r4,r29,0x0010             model data to transform in r4
  001c2cd8: lw r16,0x05b0(r29)
+
  001c2cd8: lw r16,0x05b0(r29)             load corners from stack
 
  001c2cdc: lhu r2,0x0050(r29)
 
  001c2cdc: lhu r2,0x0050(r29)
 
  001c2ce0: lw r23,0x0000(r22)
 
  001c2ce0: lw r23,0x0000(r22)
Line 524: Line 536:
 
  001c2d08: sh r2,0x0012(r29)
 
  001c2d08: sh r2,0x0012(r29)
 
  001c2d0c: addu r12,r4,r0
 
  001c2d0c: addu r12,r4,r0
  001c2d10: lwc2 gtedr00_vxy0,0x0000(r12)
+
  001c2d10: lwc2 gtedr00_vxy0,0x0000(r12)   move vxy0 vector from stack to gte coprocessor
  001c2d14: lwc2 gtedr01_vz0,0x0004(r12)
+
  001c2d14: lwc2 gtedr01_vz0,0x0004(r12)     ditto for vz0
 
  001c2d18: nop
 
  001c2d18: nop
 
  001c2d1c: nop
 
  001c2d1c: nop
Line 546: Line 558:
 
  001c2d60: addiu r2,r2,0x0004
 
  001c2d60: addiu r2,r2,0x0004
 
  001c2d64: lhu r3,0x04f0(r29)
 
  001c2d64: lhu r3,0x04f0(r29)
  001c2d68: addu r6,r22,r2
+
  001c2d68: addu r6,r22,r2  
  001c2d6c: sh r3,0x0020(r6)
+
  001c2d6c: sh r3,0x0020(r6)                     Store polygon YYY3
 
  001c2d70: lhu r2,0x04f4(r29)
 
  001c2d70: lhu r2,0x04f4(r29)
 
  001c2d74: nop
 
  001c2d74: nop
  001c2d78: sh r2,0x0022(r6)                      Store new model phase?
+
  001c2d78: sh r2,0x0022(r6)                      Store polygon XXX3
 
  001c2d7c: lhu r2,0x0060(r29)
 
  001c2d7c: lhu r2,0x0060(r29)
 
  001c2d80: lhu r3,0x04f8(r29)
 
  001c2d80: lhu r3,0x04f8(r29)
Line 580: Line 592:
 
  001c2de8: lhu r2,0x0500(r29)
 
  001c2de8: lhu r2,0x0500(r29)
 
  001c2dec: nop
 
  001c2dec: nop
  001c2df0: sh r2,0x002c(r6)
+
  001c2df0: sh r2,0x002c(r6)                     store YYY4
 
  001c2df4: lhu r2,0x0504(r29)
 
  001c2df4: lhu r2,0x0504(r29)
 
  001c2df8: nop
 
  001c2df8: nop
  001c2dfc: sh r2,0x002e(r6)
+
  001c2dfc: sh r2,0x002e(r6)                     store XXX4
 
  001c2e00: lhu r2,0x00d0(r29)
 
  001c2e00: lhu r2,0x00d0(r29)
 
  001c2e04: lhu r3,0x0508(r29)
 
  001c2e04: lhu r3,0x0508(r29)
Line 613: Line 625:
 
  001c2e6c: lhu r2,0x04d0(r29)
 
  001c2e6c: lhu r2,0x04d0(r29)
 
  001c2e70: nop
 
  001c2e70: nop
  001c2e74: sh r2,0x0008(r6)
+
  001c2e74: sh r2,0x0008(r6)                         store YYY1
 
  001c2e78: lhu r2,0x04d4(r29)
 
  001c2e78: lhu r2,0x04d4(r29)
 
  001c2e7c: nop
 
  001c2e7c: nop
  001c2e80: sh r2,0x000a(r6)
+
  001c2e80: sh r2,0x000a(r6)                         store XXX1
 
  001c2e84: lhu r2,0x00e0(r29)
 
  001c2e84: lhu r2,0x00e0(r29)
 
  001c2e88: lhu r3,0x04d8(r29)
 
  001c2e88: lhu r3,0x04d8(r29)
Line 647: Line 659:
 
  001c2ef4: lhu r2,0x04e0(r29)
 
  001c2ef4: lhu r2,0x04e0(r29)
 
  001c2ef8: addu r8,r6,r0
 
  001c2ef8: addu r8,r6,r0
  001c2efc: sh r2,0x0014(r8)
+
  001c2efc: sh r2,0x0014(r8)                     store YYY2
 
  001c2f00: lhu r2,0x04e4(r29)
 
  001c2f00: lhu r2,0x04e4(r29)
 
  001c2f04: addiu r5,r29,0x0014
 
  001c2f04: addiu r5,r29,0x0014
  001c2f08: sh r2,0x0016(r8)
+
  001c2f08: sh r2,0x0016(r8)                     store XXX2
 
  001c2f0c: lhu r2,0x04e8(r29)
 
  001c2f0c: lhu r2,0x04e8(r29)
  001c2f10: ori r7,r0,0x0034
+
  001c2f10: ori r7,r0,0x0034                     polygt4 polygon
 
  001c2f14: sh r2,0x0522(r29)
 
  001c2f14: sh r2,0x0522(r29)
 
  001c2f18: lhu r2,0x04e0(r29)
 
  001c2f18: lhu r2,0x04e0(r29)
  001c2f1c: addu r6,r8,r7
+
 
  001c2f20: sh r2,0x0008(r6)
+
  001c2f1c: addu r6,r8,r7                       pointer to next polygon
 +
  001c2f20: sh r2,0x0008(r6)                     store next polygon's YYY1
 
  001c2f24: lhu r2,0x04e4(r29)
 
  001c2f24: lhu r2,0x04e4(r29)
 
  001c2f28: nop
 
  001c2f28: nop
  001c2f2c: sh r2,0x000a(r6)
+
  001c2f2c: sh r2,0x000a(r6)                     " XXX2
 
  001c2f30: lhu r2,0x0500(r29)
 
  001c2f30: lhu r2,0x0500(r29)
 
  001c2f34: nop
 
  001c2f34: nop
Line 665: Line 678:
 
  001c2f3c: lhu r2,0x0504(r29)
 
  001c2f3c: lhu r2,0x0504(r29)
 
  001c2f40: addiu r3,r29,0x0050
 
  001c2f40: addiu r3,r29,0x0050
  001c2f44: sh r2,0x0022(r6)                      store new model phase?
+
  001c2f44: sh r2,0x0022(r6)                       
 
  001c2f48: sll r2,r17,0x04
 
  001c2f48: sll r2,r17,0x04
 
  001c2f4c: addu r3,r3,r2
 
  001c2f4c: addu r3,r3,r2
Line 743: Line 756:
 
  001c3074: sh r2,0x0510(r5)
 
  001c3074: sh r2,0x0510(r5)
 
  001c3078: slti r2,r17,0x0008
 
  001c3078: slti r2,r17,0x0008
  001c307c: bne r2,r0,0x001c2f18
+
  001c307c: bne r2,r0,0x001c2f18             ^ loop
 +
 
 
  001c3080: addiu r5,r5,0x0002
 
  001c3080: addiu r5,r5,0x0002
 
  001c3084: sll r2,r23,0x01
 
  001c3084: sll r2,r23,0x01
Line 775: Line 789:
 
  001c30f4: lhu r3,0x000a(r7)
 
  001c30f4: lhu r3,0x000a(r7)
 
  001c30f8: lhu r4,0x0020(r7)
 
  001c30f8: lhu r4,0x0020(r7)
  001c30fc: lhu r5,0x0022(r7)                        Note: probably not effect phase
+
  001c30fc: lhu r5,0x0022(r7)                         
 
  001c3100: addu r30,r0,r0
 
  001c3100: addu r30,r0,r0
 
  001c3104: sh r2,0x0180(r7)
 
  001c3104: sh r2,0x0180(r7)
Line 781: Line 795:
 
  001c310c: sh r4,0x0198(r7)
 
  001c310c: sh r4,0x0198(r7)
 
  001c3110: sh r5,0x019a(r7)
 
  001c3110: sh r5,0x019a(r7)
 +
 
  001c3114: addiu r10,r18,0x0001
 
  001c3114: addiu r10,r18,0x0001
 
  001c3118: sll r2,r10,0x07
 
  001c3118: sll r2,r10,0x07
Line 875: Line 890:
 
  001c3284: addiu r8,r2,0x0504
 
  001c3284: addiu r8,r2,0x0504
 
  001c3288: sh r3,0x002e(r6)
 
  001c3288: sh r3,0x002e(r6)
 +
 
  001c328c: sll r3,r18,0x03
 
  001c328c: sll r3,r18,0x03
 
  001c3290: addu r3,r3,r17
 
  001c3290: addu r3,r3,r17
Line 951: Line 967:
 
  001c33b4: sh r2,0x0000(r8)
 
  001c33b4: sh r2,0x0000(r8)
 
  001c33b8: slti r2,r17,0x0008
 
  001c33b8: slti r2,r17,0x0008
  001c33bc: bne r2,r0,0x001c328c
+
  001c33bc: bne r2,r0,0x001c328c         ^ loop
 
  001c33c0: addiu r8,r8,0x0002
 
  001c33c0: addiu r8,r8,0x0002
 +
 
  001c33c4: lw r25,0x0640(r29)
 
  001c33c4: lw r25,0x0640(r29)
 
  001c33c8: lw r24,0x0630(r29)
 
  001c33c8: lw r24,0x0630(r29)
Line 989: Line 1,006:
 
  001c344c: sh r2,0x0016(r6)
 
  001c344c: sh r2,0x0016(r6)
 
  001c3450: slti r2,r18,0x0008
 
  001c3450: slti r2,r18,0x0008
  001c3454: bne r2,r0,0x001c3114
+
  001c3454: bne r2,r0,0x001c3114         ^ loop
 
  001c3458: addiu r30,r30,0x0008
 
  001c3458: addiu r30,r30,0x0008
 +
 
  001c345c: addu r17,r0,r0
 
  001c345c: addu r17,r0,r0
 
  001c3460: sll r3,r23,0x01
 
  001c3460: sll r3,r23,0x01
Line 1,011: Line 1,029:
 
  001c34a4: addu r2,r24,r25
 
  001c34a4: addu r2,r24,r25
 
  001c34a8: addu r4,r2,r18
 
  001c34a8: addu r4,r2,r18
  001c34ac: sb r7,0x0024(r3)
+
 
  001c34b0: sb r7,0x000c(r3)
+
polygon CLUT & TPAGE loop
  001c34b4: sb r5,0x0019(r3)
+
 
  001c34b8: sb r5,0x000d(r3)
+
  001c34ac: sb r7,0x0024(r3)                    (buffer)
  001c34bc: sb r6,0x0030(r3)
+
  001c34b0: sb r7,0x000c(r3)                     store CLUT
  001c34c0: sb r6,0x0018(r3)
+
  001c34b4: sb r5,0x0019(r3)                    store in tpage? (colour stored in sheet dedicated to effect?)
  001c34c4: sb r4,0x0031(r3)
+
  001c34b8: sb r5,0x000d(r3)                     store rest of CLUT
 +
  001c34bc: sb r6,0x0030(r3)                    (buffer)
 +
  001c34c0: sb r6,0x0018(r3)                     store TPAGE
 +
  001c34c4: sb r4,0x0031(r3)                    (buffer)
 
  001c34c8: sb r4,0x0025(r3)
 
  001c34c8: sb r4,0x0025(r3)
 
  001c34cc: addiu r17,r17,0x0001
 
  001c34cc: addiu r17,r17,0x0001
 
  001c34d0: slti r2,r17,0x0040
 
  001c34d0: slti r2,r17,0x0040
  001c34d4: bne r2,r0,0x001c34ac
+
  001c34d4: bne r2,r0,0x001c34ac                 loop 0x40 times
  001c34d8: addiu r3,r3,0x0034
+
  001c34d8: addiu r3,r3,0x0034                   next polygon
 +
 
 
  001c34dc: lhu r2,0x0006(r19)
 
  001c34dc: lhu r2,0x0006(r19)
 
  001c34e0: lh r10,0x003c(r19)
 
  001c34e0: lh r10,0x003c(r19)
Line 1,028: Line 1,050:
 
  001c34e8: beq r2,r0,0x001c3564
 
  001c34e8: beq r2,r0,0x001c3564
 
  001c34ec: ori r14,r0,0x0080
 
  001c34ec: ori r14,r0,0x0080
 +
 
  001c34f0: lw r3,0x0010(r19)
 
  001c34f0: lw r3,0x0010(r19)
 
  001c34f4: lui r4,0x801c
 
  001c34f4: lui r4,0x801c
Line 1,057: Line 1,080:
 
  001c355c: j 0x001c3570
 
  001c355c: j 0x001c3570
 
  001c3560: sll r2,r10,0x03
 
  001c3560: sll r2,r10,0x03
 +
 
  001c3564: ori r15,r0,0x0080
 
  001c3564: ori r15,r0,0x0080
 
  001c3568: ori r16,r0,0x0080
 
  001c3568: ori r16,r0,0x0080
Line 1,109: Line 1,133:
 
  001c362c: sll r2,r2,0x02
 
  001c362c: sll r2,r2,0x02
 
  001c3630: addu r11,r2,r3
 
  001c3630: addu r11,r2,r3
 +
 
  001c3634: lw r8,0x0004(r11)
 
  001c3634: lw r8,0x0004(r11)
 
  001c3638: nop
 
  001c3638: nop
Line 1,124: Line 1,149:
 
  001c3668: mflo r2
 
  001c3668: mflo r2
 
  001c366c: srl r4,r2,0x0c
 
  001c366c: srl r4,r2,0x0c
 +
 
  001c3670: sll r3,r18,0x03
 
  001c3670: sll r3,r18,0x03
 
  001c3674: addu r3,r3,r17
 
  001c3674: addu r3,r3,r17
Line 1,156: Line 1,182:
 
  001c36e8: sb r2,0x0006(r6)
 
  001c36e8: sb r2,0x0006(r6)
 
  001c36ec: slti r2,r17,0x0008
 
  001c36ec: slti r2,r17,0x0008
  001c36f0: bne r2,r0,0x001c3670
+
  001c36f0: bne r2,r0,0x001c3670       ^ loop
 
  001c36f4: nop
 
  001c36f4: nop
 +
 
  001c36f8: addiu r13,r13,0x0008
 
  001c36f8: addiu r13,r13,0x0008
 
  001c36fc: addiu r18,r18,0x0001
 
  001c36fc: addiu r18,r18,0x0001
 
  001c3700: slti r2,r18,0x0007
 
  001c3700: slti r2,r18,0x0007
  001c3704: bne r2,r0,0x001c3634
+
  001c3704: bne r2,r0,0x001c3634       ^ loop
 
  001c3708: addiu r11,r11,0x0004
 
  001c3708: addiu r11,r11,0x0004
 +
 
  001c370c: sll r2,r10,0x03
 
  001c370c: sll r2,r10,0x03
 
  001c3710: addu r2,r2,r10
 
  001c3710: addu r2,r2,r10
Line 1,201: Line 1,229:
 
  001c379c: sb r3,0x0005(r6)
 
  001c379c: sb r3,0x0005(r6)
 
  001c37a0: sb r7,0x0012(r6)
 
  001c37a0: sb r7,0x0012(r6)
  001c37a4: bne r2,r0,0x001c3780
+
  001c37a4: bne r2,r0,0x001c3780       ^ loop
 
  001c37a8: sb r7,0x0006(r6)
 
  001c37a8: sb r7,0x0006(r6)
 +
 
  001c37ac: addu r18,r0,r0
 
  001c37ac: addu r18,r0,r0
 
  001c37b0: addiu r16,r29,0x0010
 
  001c37b0: addiu r16,r29,0x0010
Line 1,221: Line 1,250:
 
  001c37ec: addu r2,r2,r16
 
  001c37ec: addu r2,r2,r16
 
  001c37f0: addiu r7,r2,0x0500
 
  001c37f0: addiu r7,r2,0x0500
 +
 
  001c37f4: lh r2,0x0000(r7)
 
  001c37f4: lh r2,0x0000(r7)
 
  001c37f8: lh r3,0x0002(r7)
 
  001c37f8: lh r3,0x0002(r7)
Line 1,262: Line 1,292:
 
  001c3890: addiu r17,r17,0x0001
 
  001c3890: addiu r17,r17,0x0001
 
  001c3894: slti r2,r17,0x0007
 
  001c3894: slti r2,r17,0x0007
  001c3898: bne r2,r0,0x001c37f4
+
  001c3898: bne r2,r0,0x001c37f4       ^ loop
 
  001c389c: addiu r7,r7,0x0002
 
  001c389c: addiu r7,r7,0x0002
 +
 
  001c38a0: sll r2,r18,0x04
 
  001c38a0: sll r2,r18,0x04
 
  001c38a4: addiu r3,r29,0x0510
 
  001c38a4: addiu r3,r29,0x0510

Latest revision as of 05:38, 25 October 2023

001c2500: addiu r29,r29,-0x0680
001c2504: sw r30,0x0678(r29)
001c2508: sll r4,r4,0x10
001c250c: sw r16,0x0658(r29)
001c2510: sra r16,r4,0x10                  phase (?)
001c2514: sll r2,r16,0x05                  p1 * 0x20
001c2518: subu r2,r2,r16                   p1 * 0x1f
001c251c: sw r18,0x0660(r29)
001c2520: sll r18,r2,0x03                  p1 * 0xf8
001c2524: lui r2,0x801c
001c2528: addiu r2,r2,-0x0fd4              temp effect data
001c252c: sw r23,0x0674(r29)
001c2530: addu r23,r18,r2                  temp effect data for current phase
001c2534: sll r2,r6,0x01                   p3 * 2
001c2538: addu r2,r2,r6                    p3 * 3
001c253c: sll r2,r2,0x04                   p3 * 0x30
001c2540: addu r2,r2,r6                    p3 * 0x31
001c2544: sll r2,r2,0x02                   p3 * 0xc4
001c2548: lui r3,0x801c
001c254c: lw r3,-0x4078(r3)                pointer to raw model data in effect file
001c2550: addiu r2,r2,0x0014               p3 * 0xc4 + 0x14
001c2554: sw r31,0x067c(r29)
001c2558: sw r22,0x0670(r29)
001c255c: sw r21,0x066c(r29)
001c2560: sw r20,0x0668(r29)
001c2564: sw r19,0x0664(r29)
001c2568: sw r17,0x065c(r29)
001c256c: sw r7,0x05f8(r29)                 holy shit. anyway, stores p4 to 0x05f8 stack
001c2570: addu r19,r2,r3                    effect model data pointer
001c2574: lhu r20,0x0002(r19)
001c2578: jal 0x00044a60                    Find Address for Polygons by Depth <- get Otag list
001c257c: addu r30,r5,r0                    p2
001c2580: addu r17,r23,r30                  temp effect data + p2
001c2584: sw r2,0x0620(r29)
001c2588: lbu r3,0x0022(r17)                current model executing phase
001c258c: ori r4,r0,0x0001
001c2590: beq r3,r4,0x001c25bc              go here if initialising
001c2594: slti r2,r3,0x0002
001c2598: bne r2,r0,0x001c39c4              go here if erroneous
001c259c: nop
001c25a0: ori r2,r0,0x0002
001c25a4: beq r3,r2,0x001c2694              go here if executing
001c25a8: ori r2,r0,0x0003
001c25ac: beq r3,r2,0x001c3984              go here if ending
001c25b0: nop
001c25b4: j 0x001c39c4                      erroneous
001c25b8: nop

0x22 TED == 1 (initialise model)

001c25bc: sll r2,r30,0x02
001c25c0: addu r17,r2,r23
001c25c4: lw r4,0x00e4(r17)
001c25c8: nop
001c25cc: beq r4,r0,0x001c25dc
001c25d0: addu r18,r0,r0
001c25d4: jal 0x001a4e9c
001c25d8: nop
001c25dc: ori r4,r0,0x1a1c
001c25e0: jal 0x001a4de8                        0x1a4de8 <-- locate file native model data
001c25e4: addu r5,r16,r0
001c25e8: addu r22,r2,r0
001c25ec: sw r22,0x00e4(r17)                    store pointer to model data
001c25f0: lhu r3,0x0024(r19)                    effect wide polygon data?
001c25f4: ori r19,r0,0x0004
001c25f8: andi r2,r3,0x0003
001c25fc: sll r2,r2,0x05
001c2600: ori r21,r2,0x0086
001c2604: andi r3,r3,0x0004                     transparent check
001c2608: sltiu r20,r3,0x0001                   1 if not transparent.
001c260c: addu r17,r0,r0
001c2610: addu r16,r22,r19
001c2614: jal 0x00023d44                        P19 SetPolyGT4
001c2618: addu r4,r16,r0
001c261c: beq r20,r0,0x001c2630                 if r20 = 0, set transparency to true
001c2620: nop
001c2624: lbu r2,0x0007(r16)                    load poly type
001c2628: j 0x001c263c
001c262c: ori r2,r2,0x0002                      enable transparency
001c2630: lbu r2,0x0007(r16)
001c2634: nop
001c2638: andi r2,r2,0x00fd                     disable transparency
001c263c: sb r2,0x0007(r16)                     store with/without transparency
001c2640: ori r2,r0,0x7b00
001c2644: sh r21,0x001a(r16)                    always maps v2u2 to a certain position...?
001c2648: sh r2,0x000e(r16)                     set CLUT to 0x7b00
001c264c: addiu r17,r17,0x0001
001c2650: slti r2,r17,0x0040
001c2654: bne r2,r0,0x001c2614                  loop 0x40 times
001c2658: addiu r16,r16,0x0034
001c265c: addiu r18,r18,0x0001
001c2660: slti r2,r18,0x0002                    do twice (0x80 polygons)
001c2664: bne r2,r0,0x001c260c
001c2668: addiu r19,r19,0x0d00                  to next?
001c266c: addu r3,r23,r30                       p1 & p2 diff?
001c2670: ori r2,r0,0x0002
001c2674: sh r0,0x1a04(r22)
001c2678: sh r0,0x1a06(r22)
001c267c: sw r0,0x0000(r22)
001c2680: sw r0,0x1a08(r22)
001c2684: sw r0,0x1a0c(r22)
001c2688: sw r0,0x1a18(r22)
001c268c: j 0x001c39c4
001c2690: sb r2,0x0022(r3)                      update model phase to execute

if 0x22 TED == 2 (execute)

001c2694: sll r2,r30,0x02                       p2 * 4
001c2698: addu r2,r2,r23                        temp effect data + p2 * 4?
001c269c: lw r22,0x00e4(r2)                     current model pointer
001c26a0: addiu r2,r0,-0x0001
001c26a4: lw r3,0x0008(r19)
001c26a8: lui r1,0x801c
001c26ac: addu r1,r1,r18
001c26b0: lbu r16,-0x0fae(r1)                   0x801bf052, 0x30 something
001c26b4: andi r17,r3,0x000f
001c26b8: addiu r17,r17,-0x0001
001c26bc: beq r17,r2,0x001c26ec                 if == 0, clears phase index multiple thing,
001c26c0: sll r2,r17,0x02
001c26c4: addu r2,r2,r17
001c26c8: sll r2,r2,0x05
001c26cc: lui r3,0x801c
001c26d0: lw r3,-0x4084(r3)
001c26d4: lw r25,0x05f8(r29)                    p4
001c26d8: addu r2,r2,r3
001c26dc: addu r2,r2,r25
001c26e0: lbu r18,0x0004(r2)
001c26e4: j 0x001c26f4
001c26e8: addu r4,r19,r0
001c26ec: addu r18,r0,r0
001c26f0: addu r4,r19,r0                         has raw effect model data
001c26f4: addu r5,r18,r0                         transform value? just. 0
001c26f8: jal 0x001a8c14                         fetch effect model data? returned into r6 pointer. 
001c26fc: addiu r6,r29,0x05b0                    parse stack + 0x5b0?
001c2700: andi r3,r20,0x0e00
001c2704: ori r2,r0,0x0400
001c2708: beq r3,r2,0x001c27f0
001c270c: slti r2,r3,0x0401
001c2710: beq r2,r0,0x001c2730
001c2714: nop
001c2718: beq r3,r0,0x001c2888
001c271c: ori r2,r0,0x0200
001c2720: beq r3,r2,0x001c2768
001c2724: nop
001c2728: j 0x001c2888
001c272c: nop
001c2730: ori r2,r0,0x0800
001c2734: beq r3,r2,0x001c2888
001c2738: slti r2,r3,0x0801
001c273c: beq r2,r0,0x001c2754
001c2740: ori r2,r0,0x0600
001c2744: beq r3,r2,0x001c27f4
001c2748: addu r5,r16,r0
001c274c: j 0x001c2888
001c2750: nop
001c2754: ori r2,r0,0x0a00
001c2758: beq r3,r2,0x001c2848
001c275c: nop
001c2760: j 0x001c2888
001c2764: nop
001c2768: lui r16,0x801c
001c276c: addiu r16,r16,-0x5236
001c2770: lh r4,0x0000(r16)
001c2774: lui r5,0x801c
001c2778: lh r5,-0x5232(r5)
001c277c: lui r6,0x801c
001c2780: lh r6,-0x5234(r6)
001c2784: jal 0x00183fb4
001c2788: nop
001c278c: lw r4,0x05b0(r29)
001c2790: lh r5,0x0000(r16)
001c2794: addiu r4,r4,0x000e
001c2798: sll r3,r5,0x03
001c279c: subu r3,r3,r5
001c27a0: sll r3,r3,0x02
001c27a4: addu r4,r4,r3
001c27a8: sw r4,0x05b0(r29)
001c27ac: lw r4,0x05b8(r29)
001c27b0: lui r5,0x801c
001c27b4: lh r5,-0x5232(r5)
001c27b8: addiu r4,r4,0x000e
001c27bc: sll r3,r5,0x03
001c27c0: subu r3,r3,r5
001c27c4: sll r3,r3,0x02
001c27c8: addu r4,r4,r3
001c27cc: lbu r5,0x0002(r2)
001c27d0: lw r3,0x05b4(r29)
001c27d4: sw r4,0x05b8(r29)
001c27d8: sll r2,r5,0x01
001c27dc: addu r2,r2,r5
001c27e0: sll r2,r2,0x02
001c27e4: subu r3,r3,r2
001c27e8: j 0x001c2888
001c27ec: sw r3,0x05b4(r29)
001c27f0: addiu r5,r0,-0x0001
001c27f4: lui r2,0x801c
001c27f8: lw r2,-0x5338(r2)
001c27fc: lui r6,0x801c
001c2800: addiu r6,r6,-0x52f4
001c2804: lw r4,0x0000(r2)
001c2808: addiu r7,r29,0x0010
001c280c: jal 0x001a90d0
001c2810: andi r4,r4,0x0008
001c2814: lh r2,0x0010(r29)
001c2818: lw r3,0x05b0(r29)
001c281c: lw r4,0x05b4(r29)
001c2820: lw r5,0x05b8(r29)
001c2824: addu r2,r2,r3
001c2828: sw r2,0x05b0(r29)
001c282c: lh r2,0x0012(r29)
001c2830: lh r3,0x0014(r29)
001c2834: addu r2,r2,r4
001c2838: addu r3,r3,r5
001c283c: sw r2,0x05b4(r29)
001c2840: j 0x001c2888
001c2844: sw r3,0x05b8(r29)
001c2848: jal 0x0008df48
001c284c: addiu r4,r29,0x05f0
001c2850: lh r3,0x05f0(r29)
001c2854: lh r4,0x05f4(r29)
001c2858: sll r2,r3,0x03
001c285c: subu r2,r2,r3
001c2860: lw r3,0x05b0(r29)
001c2864: sll r2,r2,0x01
001c2868: addu r2,r2,r3
001c286c: sw r2,0x05b0(r29)
001c2870: sll r2,r4,0x03
001c2874: subu r2,r2,r4
001c2878: lw r3,0x05b8(r29)
001c287c: sll r2,r2,0x01
001c2880: addu r2,r2,r3
001c2884: sw r2,0x05b8(r29)
001c2888: lhu r2,0x000e(r19)
001c288c: nop
001c2890: andi r17,r2,0x000f
001c2894: addiu r17,r17,-0x0001
001c2898: addiu r2,r0,-0x0001
001c289c: beq r17,r2,0x001c28cc
001c28a0: sll r2,r17,0x02
001c28a4: addu r2,r2,r17
001c28a8: sll r2,r2,0x05
001c28ac: lui r3,0x801c
001c28b0: lw r3,-0x4084(r3)
001c28b4: lw r24,0x05f8(r29)
001c28b8: addu r2,r2,r3
001c28bc: addu r2,r2,r24
001c28c0: lbu r18,0x0004(r2)
001c28c4: j 0x001c28d0
001c28c8: nop
001c28cc: addu r18,r0,r0
001c28d0: lh r4,0x00a8(r19)
001c28d4: lh r5,0x00ac(r19)
001c28d8: jal 0x001a8be0
001c28dc: addu r6,r18,r0
001c28e0: addu r16,r2,r0
001c28e4: lw r3,0x0008(r19)
001c28e8: addiu r2,r0,-0x0001
001c28ec: srl r3,r3,0x08
001c28f0: andi r17,r3,0x000f
001c28f4: addiu r17,r17,-0x0001
001c28f8: beq r17,r2,0x001c2928
001c28fc: sll r2,r17,0x02
001c2900: addu r2,r2,r17
001c2904: sll r2,r2,0x05
001c2908: lui r3,0x801c
001c290c: lw r3,-0x4084(r3)
001c2910: lw r25,0x05f8(r29)
001c2914: addu r2,r2,r3
001c2918: addu r2,r2,r25
001c291c: lbu r18,0x0004(r2)
001c2920: j 0x001c292c
001c2924: nop
001c2928: addu r18,r0,r0
001c292c: lh r4,0x002c(r19)
001c2930: lh r5,0x0032(r19)
001c2934: jal 0x001a8be0
001c2938: addu r6,r18,r0
001c293c: lh r4,0x002e(r19)
001c2940: lh r5,0x0034(r19)
001c2944: addu r6,r18,r0
001c2948: jal 0x001a8be0
001c294c: sw r2,0x0600(r29)
001c2950: lh r24,0x0020(r19)
001c2954: nop
001c2958: sw r24,0x0610(r29)
001c295c: lhu r4,0x1a06(r22)
001c2960: lhu r3,0x0030(r19)
001c2964: lh r25,0x0022(r19)                     load model phase
001c2968: addu r4,r4,r3
001c296c: sw r25,0x0618(r29)                     store model phase
001c2970: sh r4,0x1a06(r22)
001c2974: sw r2,0x0608(r29)
001c2978: sll r2,r4,0x10
001c297c: sra r2,r2,0x10
001c2980: sll r5,r25,0x08
001c2984: slt r2,r5,r2
001c2988: beq r2,r0,0x001c2994
001c298c: subu r2,r4,r5
001c2990: sh r2,0x1a06(r22)
001c2994: lh r2,0x1a06(r22)
001c2998: nop
001c299c: bgez r2,0x001c29ac
001c29a0: addu r3,r2,r0
001c29a4: addu r2,r3,r5
001c29a8: sh r2,0x1a06(r22)
001c29ac: lw r2,0x000c(r19)
001c29b0: nop
001c29b4: andi r17,r2,0x000f
001c29b8: addiu r17,r17,-0x0001
001c29bc: addiu r2,r0,-0x0001
001c29c0: beq r17,r2,0x001c29f0
001c29c4: sll r2,r17,0x02
001c29c8: addu r2,r2,r17
001c29cc: sll r2,r2,0x05
001c29d0: lui r3,0x801c
001c29d4: lw r3,-0x4084(r3)
001c29d8: lw r24,0x05f8(r29)
001c29dc: addu r2,r2,r3
001c29e0: addu r2,r2,r24
001c29e4: lbu r18,0x0004(r2)
001c29e8: j 0x001c29f4
001c29ec: nop
001c29f0: addu r18,r0,r0
001c29f4: lh r4,0x0064(r19)
001c29f8: lh r5,0x0070(r19)
001c29fc: jal 0x001a8be0
001c2a00: addu r6,r18,r0
001c2a04: sw r2,0x0030(r29)
001c2a08: lh r4,0x0068(r19)
001c2a0c: lh r5,0x0074(r19)
001c2a10: jal 0x001a8be0
001c2a14: addu r6,r18,r0
001c2a18: sw r2,0x0034(r29)
001c2a1c: lh r4,0x006c(r19)
001c2a20: lh r5,0x0078(r19)
001c2a24: jal 0x001a8be0
001c2a28: addu r6,r18,r0
001c2a2c: sw r2,0x0038(r29)
001c2a30: lw r2,0x000c(r19)
001c2a34: nop
001c2a38: srl r2,r2,0x04
001c2a3c: andi r17,r2,0x000f
001c2a40: addiu r17,r17,-0x0001
001c2a44: addiu r2,r0,-0x0001
001c2a48: beq r17,r2,0x001c2a78
001c2a4c: sll r2,r17,0x02
001c2a50: addu r2,r2,r17
001c2a54: sll r2,r2,0x05
001c2a58: lui r3,0x801c
001c2a5c: lw r3,-0x4084(r3)
001c2a60: lw r25,0x05f8(r29)
001c2a64: addu r2,r2,r3
001c2a68: addu r2,r2,r25
001c2a6c: lbu r18,0x0004(r2)
001c2a70: j 0x001c2a7c
001c2a74: nop
001c2a78: addu r18,r0,r0
001c2a7c: lh r4,0x007c(r19)
001c2a80: lh r5,0x0088(r19)
001c2a84: jal 0x001a8be0                 decode polygon point (no pointer to store? returns value in r4 unless r6 exists.)
001c2a88: addu r6,r18,r0
001c2a8c: sw r2,0x0040(r29)              store point
001c2a90: lh r4,0x0080(r19)
001c2a94: lh r5,0x008c(r19)
001c2a98: jal 0x001a8be0
001c2a9c: addu r6,r18,r0
001c2aa0: sw r2,0x0044(r29)              store point
001c2aa4: lh r4,0x0084(r19)
001c2aa8: lh r5,0x0090(r19)
001c2aac: jal 0x001a8be0
001c2ab0: addu r6,r18,r0
001c2ab4: sw r2,0x0048(r29)              store point
001c2ab8: lw r2,0x0008(r19)              
001c2abc: nop
001c2ac0: srl r17,r2,0x1c
001c2ac4: addiu r17,r17,-0x0001
001c2ac8: addiu r2,r0,-0x0001
001c2acc: beq r17,r2,0x001c2afc          ...?
001c2ad0: sll r2,r17,0x02
001c2ad4: addu r2,r2,r17
001c2ad8: sll r2,r2,0x05
001c2adc: lui r3,0x801c
001c2ae0: lw r3,-0x4084(r3)
001c2ae4: lw r24,0x05f8(r29)
001c2ae8: addu r2,r2,r3
001c2aec: addu r2,r2,r24
001c2af0: lbu r18,0x0004(r2)
001c2af4: j 0x001c2b00
001c2af8: nop
001c2afc: addu r18,r0,r0
001c2b00: lh r4,0x005c(r19)
001c2b04: lh r5,0x0060(r19)
001c2b08: jal 0x001a8be0
001c2b0c: addu r6,r18,r0
001c2b10: lhu r4,0x1a04(r22)
001c2b14: nop
001c2b18: addu r4,r4,r2
001c2b1c: andi r4,r4,0x0fff
001c2b20: jal 0x0001bb5c                    sin r4
001c2b24: sh r4,0x1a04(r22)
001c2b28: lh r4,0x1a04(r22)                 
001c2b2c: addu r21,r2,r0
001c2b30: jal 0x0001bb5c                    sin r4
001c2b34: addiu r4,r4,0x0200
001c2b38: lh r4,0x1a04(r22)
001c2b3c: jal 0x0001bc28                    cosine r4
001c2b40: addu r20,r2,r0
001c2b44: addu r17,r0,r0
001c2b48: lh r4,0x1a04(r22)
001c2b4c: addu r18,r2,r0
001c2b50: jal 0x0001bc28                    cosine r4
001c2b54: addiu r4,r4,0x0200
001c2b58: addu r5,r2,r0
001c2b5c: addu r10,r0,r0
001c2b60: addu r8,r0,r0
001c2b64: lw r2,0x1a08(r22)
001c2b68: nop
001c2b6c: addu r2,r8,r2
001c2b70: sra r2,r2,0x08
001c2b74: addu r2,r16,r2
001c2b78: mult r18,r2
001c2b7c: addiu r3,r29,0x0050
001c2b80: sll r2,r17,0x07
001c2b84: addu r3,r3,r2
001c2b88: mflo r2
001c2b8c: sra r2,r2,0x0c
001c2b90: sw r2,0x0028(r3)
001c2b94: sw r2,0x0000(r3)
001c2b98: subu r2,r0,r2
001c2b9c: sw r2,0x0068(r3)
001c2ba0: sw r2,0x0040(r3)
001c2ba4: lw r2,0x1a08(r22)
001c2ba8: nop
001c2bac: addu r2,r8,r2
001c2bb0: sra r2,r2,0x08
001c2bb4: addu r2,r16,r2
001c2bb8: mult r21,r2
001c2bbc: mflo r2
001c2bc0: sra r2,r2,0x0c
001c2bc4: sw r2,0x0060(r3)
001c2bc8: sw r2,0x0008(r3)
001c2bcc: subu r2,r0,r2
001c2bd0: sw r2,0x0048(r3)
001c2bd4: sw r2,0x0020(r3)
001c2bd8: lw r2,0x1a08(r22)
001c2bdc: nop
001c2be0: addu r2,r8,r2
001c2be4: sra r2,r2,0x08
001c2be8: addu r2,r16,r2
001c2bec: mult r5,r2
001c2bf0: mflo r2
001c2bf4: sra r2,r2,0x0c
001c2bf8: sw r2,0x0038(r3)
001c2bfc: sw r2,0x0010(r3)
001c2c00: subu r2,r0,r2
001c2c04: sw r2,0x0078(r3)
001c2c08: sw r2,0x0050(r3)
001c2c0c: lw r2,0x1a08(r22)
001c2c10: nop
001c2c14: addu r2,r8,r2
001c2c18: sra r2,r2,0x08
001c2c1c: addu r2,r16,r2
001c2c20: mult r20,r2
001c2c24: addiu r17,r17,0x0001
001c2c28: sra r2,r10,0x08
001c2c2c: sw r2,0x0074(r3)
001c2c30: sw r2,0x0064(r3)
001c2c34: sw r2,0x0054(r3)
001c2c38: sw r2,0x0044(r3)
001c2c3c: sw r2,0x0034(r3)
001c2c40: sw r2,0x0024(r3)
001c2c44: sw r2,0x0014(r3)
001c2c48: sw r2,0x0004(r3)
001c2c4c: mflo r2
001c2c50: sra r2,r2,0x0c
001c2c54: sw r2,0x0070(r3)
001c2c58: sw r2,0x0018(r3)
001c2c5c: subu r2,r0,r2
001c2c60: sw r2,0x0058(r3)
001c2c64: sw r2,0x0030(r3)
001c2c68: lw r4,0x0034(r29)
001c2c6c: lw r2,0x0044(r29)
001c2c70: lw r3,0x0048(r29)
001c2c74: addu r4,r4,r2
001c2c78: lw r2,0x0038(r29)
001c2c7c: sw r4,0x0034(r29)
001c2c80: addu r2,r2,r3
001c2c84: addu r8,r8,r2
001c2c88: sw r2,0x0038(r29)
001c2c8c: slti r2,r17,0x0009
001c2c90: bne r2,r0,0x001c2b64           ^ loop
001c2c94: addu r10,r10,r4
001c2c98: lui r16,0x800a
001c2c9c: addiu r16,r16,-0x75dc
001c2ca0: lw r3,0x1a0c(r22)
001c2ca4: lw r2,0x0040(r29)
001c2ca8: addu r4,r16,r0
001c2cac: addu r3,r3,r2
001c2cb0: sw r3,0x1a0c(r22)
001c2cb4: lw r2,0x0030(r29)
001c2cb8: lw r5,0x1a08(r22)
001c2cbc: addu r2,r2,r3
001c2cc0: addu r2,r2,r5
001c2cc4: jal 0x0001d0a8                  Store Rotation matrix elements to GTE
001c2cc8: sw r2,0x1a08(r22)
001c2ccc: jal 0x0001d138                  Store Translation Vectors to GTE
001c2cd0: addu r4,r16,r0
001c2cd4: addiu r4,r29,0x0010             model data to transform in r4
001c2cd8: lw r16,0x05b0(r29)              load corners from stack
001c2cdc: lhu r2,0x0050(r29)
001c2ce0: lw r23,0x0000(r22)
001c2ce4: lw r11,0x05b4(r29)
001c2ce8: lw r9,0x05b8(r29)
001c2cec: lhu r3,0x0058(r29)
001c2cf0: addu r2,r2,r16
001c2cf4: sh r2,0x0010(r29)
001c2cf8: lhu r2,0x0054(r29)
001c2cfc: addu r3,r3,r9
001c2d00: sh r3,0x0014(r29)
001c2d04: addu r2,r2,r11
001c2d08: sh r2,0x0012(r29)
001c2d0c: addu r12,r4,r0
001c2d10: lwc2 gtedr00_vxy0,0x0000(r12)    move vxy0 vector from stack to gte coprocessor
001c2d14: lwc2 gtedr01_vz0,0x0004(r12)     ditto for vz0
001c2d18: nop
001c2d1c: nop
001c2d20: mvmva 0x1,0x0,0x0,0x0,0x0
001c2d24: addiu r2,r29,0x04f0
001c2d28: addu r12,r2,r0
001c2d2c: swc2 gtedr25_mac1,0x0000(r12)
001c2d30: swc2 gtedr26_mac2,0x0004(r12)
001c2d34: swc2 gtedr27_mac3,0x0008(r12)
001c2d38: addiu r2,r29,0x04fc
001c2d3c: addu r12,r2,r0
001c2d40: cfc2 r13,gtecr31_flag
001c2d44: nop
001c2d48: sw r13,0x0000(r12)
001c2d4c: sll r2,r23,0x01
001c2d50: addu r2,r2,r23
001c2d54: sll r2,r2,0x02
001c2d58: addu r2,r2,r23
001c2d5c: sll r2,r2,0x08
001c2d60: addiu r2,r2,0x0004
001c2d64: lhu r3,0x04f0(r29)
001c2d68: addu r6,r22,r2 
001c2d6c: sh r3,0x0020(r6)                      Store polygon YYY3
001c2d70: lhu r2,0x04f4(r29)
001c2d74: nop
001c2d78: sh r2,0x0022(r6)                      Store polygon XXX3
001c2d7c: lhu r2,0x0060(r29)
001c2d80: lhu r3,0x04f8(r29)
001c2d84: addu r2,r2,r16
001c2d88: sh r2,0x0010(r29)
001c2d8c: lhu r2,0x0064(r29)
001c2d90: sh r3,0x0510(r29)
001c2d94: lhu r3,0x0068(r29)
001c2d98: addu r2,r2,r11
001c2d9c: addu r3,r3,r9
001c2da0: sh r2,0x0012(r29)
001c2da4: sh r3,0x0014(r29)
001c2da8: addu r12,r4,r0
001c2dac: lwc2 gtedr00_vxy0,0x0000(r12)
001c2db0: lwc2 gtedr01_vz0,0x0004(r12)
001c2db4: nop
001c2db8: nop
001c2dbc: mvmva 0x1,0x0,0x0,0x0,0x0
001c2dc0: addiu r2,r29,0x0500
001c2dc4: addu r12,r2,r0
001c2dc8: swc2 gtedr25_mac1,0x0000(r12)
001c2dcc: swc2 gtedr26_mac2,0x0004(r12)
001c2dd0: swc2 gtedr27_mac3,0x0008(r12)
001c2dd4: addiu r2,r29,0x050c
001c2dd8: addu r12,r2,r0
001c2ddc: cfc2 r13,gtecr31_flag
001c2de0: nop
001c2de4: sw r13,0x0000(r12)
001c2de8: lhu r2,0x0500(r29)
001c2dec: nop
001c2df0: sh r2,0x002c(r6)                      store YYY4
001c2df4: lhu r2,0x0504(r29)
001c2df8: nop
001c2dfc: sh r2,0x002e(r6)                      store XXX4
001c2e00: lhu r2,0x00d0(r29)
001c2e04: lhu r3,0x0508(r29)
001c2e08: addu r2,r2,r16
001c2e0c: sh r2,0x0010(r29)
001c2e10: lhu r2,0x00d4(r29)
001c2e14: sh r3,0x0512(r29)
001c2e18: lhu r3,0x00d8(r29)
001c2e1c: addu r2,r2,r11
001c2e20: addu r3,r3,r9
001c2e24: sh r2,0x0012(r29)
001c2e28: sh r3,0x0014(r29)
001c2e2c: addu r12,r4,r0
001c2e30: lwc2 gtedr00_vxy0,0x0000(r12)
001c2e34: lwc2 gtedr01_vz0,0x0004(r12)
001c2e38: nop
001c2e3c: nop
001c2e40: mvmva 0x1,0x0,0x0,0x0,0x0
001c2e44: addiu r2,r29,0x04d0
001c2e48: addu r12,r2,r0
001c2e4c: swc2 gtedr25_mac1,0x0000(r12)
001c2e50: swc2 gtedr26_mac2,0x0004(r12)
001c2e54: swc2 gtedr27_mac3,0x0008(r12)
001c2e58: addiu r2,r29,0x04dc
001c2e5c: addu r12,r2,r0
001c2e60: cfc2 r13,gtecr31_flag
001c2e64: nop
001c2e68: sw r13,0x0000(r12)
001c2e6c: lhu r2,0x04d0(r29)
001c2e70: nop
001c2e74: sh r2,0x0008(r6)                         store YYY1
001c2e78: lhu r2,0x04d4(r29)
001c2e7c: nop
001c2e80: sh r2,0x000a(r6)                         store XXX1
001c2e84: lhu r2,0x00e0(r29)
001c2e88: lhu r3,0x04d8(r29)
001c2e8c: addu r2,r2,r16
001c2e90: sh r2,0x0010(r29)
001c2e94: lhu r2,0x00e4(r29)
001c2e98: sh r3,0x0520(r29)
001c2e9c: lhu r3,0x00e8(r29)
001c2ea0: addu r2,r2,r11
001c2ea4: addu r3,r3,r9
001c2ea8: sh r2,0x0012(r29)
001c2eac: sh r3,0x0014(r29)
001c2eb0: addu r12,r4,r0
001c2eb4: lwc2 gtedr00_vxy0,0x0000(r12)
001c2eb8: lwc2 gtedr01_vz0,0x0004(r12)
001c2ebc: nop
001c2ec0: nop
001c2ec4: mvmva 0x1,0x0,0x0,0x0,0x0
001c2ec8: addiu r2,r29,0x04e0
001c2ecc: addu r12,r2,r0
001c2ed0: swc2 gtedr25_mac1,0x0000(r12)
001c2ed4: swc2 gtedr26_mac2,0x0004(r12)
001c2ed8: swc2 gtedr27_mac3,0x0008(r12)
001c2edc: addiu r2,r29,0x04ec
001c2ee0: addu r12,r2,r0
001c2ee4: cfc2 r13,gtecr31_flag
001c2ee8: nop
001c2eec: sw r13,0x0000(r12)
001c2ef0: ori r17,r0,0x0002
001c2ef4: lhu r2,0x04e0(r29)
001c2ef8: addu r8,r6,r0
001c2efc: sh r2,0x0014(r8)                     store YYY2
001c2f00: lhu r2,0x04e4(r29)
001c2f04: addiu r5,r29,0x0014
001c2f08: sh r2,0x0016(r8)                     store XXX2
001c2f0c: lhu r2,0x04e8(r29)
001c2f10: ori r7,r0,0x0034                     polygt4 polygon
001c2f14: sh r2,0x0522(r29)
001c2f18: lhu r2,0x04e0(r29)
001c2f1c: addu r6,r8,r7                        pointer to next polygon
001c2f20: sh r2,0x0008(r6)                     store next polygon's YYY1
001c2f24: lhu r2,0x04e4(r29)
001c2f28: nop
001c2f2c: sh r2,0x000a(r6)                     " XXX2
001c2f30: lhu r2,0x0500(r29)
001c2f34: nop
001c2f38: sh r2,0x0020(r6)
001c2f3c: lhu r2,0x0504(r29)
001c2f40: addiu r3,r29,0x0050
001c2f44: sh r2,0x0022(r6)                       
001c2f48: sll r2,r17,0x04
001c2f4c: addu r3,r3,r2
001c2f50: lhu r2,0x0000(r3)
001c2f54: nop
001c2f58: addu r2,r2,r16
001c2f5c: sh r2,0x0010(r29)
001c2f60: lhu r2,0x0004(r3)
001c2f64: nop
001c2f68: addu r2,r2,r11
001c2f6c: sh r2,0x0012(r29)
001c2f70: lhu r2,0x0008(r3)
001c2f74: nop
001c2f78: addu r2,r2,r9
001c2f7c: sh r2,0x0014(r29)
001c2f80: addu r12,r4,r0
001c2f84: lwc2 gtedr00_vxy0,0x0000(r12)
001c2f88: lwc2 gtedr01_vz0,0x0004(r12)
001c2f8c: nop
001c2f90: nop
001c2f94: mvmva 0x1,0x0,0x0,0x0,0x0
001c2f98: addiu r2,r29,0x0500
001c2f9c: addu r12,r2,r0
001c2fa0: swc2 gtedr25_mac1,0x0000(r12)
001c2fa4: swc2 gtedr26_mac2,0x0004(r12)
001c2fa8: swc2 gtedr27_mac3,0x0008(r12)
001c2fac: addiu r2,r29,0x050c
001c2fb0: addu r12,r2,r0
001c2fb4: cfc2 r13,gtecr31_flag
001c2fb8: nop
001c2fbc: sw r13,0x0000(r12)
001c2fc0: lhu r2,0x0500(r29)
001c2fc4: nop
001c2fc8: sh r2,0x002c(r6)
001c2fcc: lhu r2,0x0504(r29)
001c2fd0: nop
001c2fd4: sh r2,0x002e(r6)
001c2fd8: lhu r2,0x0508(r29)
001c2fdc: nop
001c2fe0: sh r2,0x0500(r5)
001c2fe4: lhu r2,0x0080(r3)
001c2fe8: nop
001c2fec: addu r2,r2,r16
001c2ff0: sh r2,0x0010(r29)
001c2ff4: lhu r2,0x0084(r3)
001c2ff8: nop
001c2ffc: addu r2,r2,r11
001c3000: sh r2,0x0012(r29)
001c3004: lhu r2,0x0088(r3)
001c3008: nop
001c300c: addu r2,r2,r9
001c3010: sh r2,0x0014(r29)
001c3014: addu r12,r4,r0
001c3018: lwc2 gtedr00_vxy0,0x0000(r12)
001c301c: lwc2 gtedr01_vz0,0x0004(r12)
001c3020: nop
001c3024: nop
001c3028: mvmva 0x1,0x0,0x0,0x0,0x0
001c302c: addiu r2,r29,0x04e0
001c3030: addu r12,r2,r0
001c3034: swc2 gtedr25_mac1,0x0000(r12)
001c3038: swc2 gtedr26_mac2,0x0004(r12)
001c303c: swc2 gtedr27_mac3,0x0008(r12)
001c3040: addiu r2,r29,0x04ec
001c3044: addu r12,r2,r0
001c3048: cfc2 r13,gtecr31_flag
001c304c: nop
001c3050: sw r13,0x0000(r12)
001c3054: lhu r2,0x04e0(r29)
001c3058: nop
001c305c: sh r2,0x0014(r6)
001c3060: lhu r2,0x04e4(r29)
001c3064: addiu r7,r7,0x0034
001c3068: sh r2,0x0016(r6)
001c306c: lhu r2,0x04e8(r29)
001c3070: addiu r17,r17,0x0001
001c3074: sh r2,0x0510(r5)
001c3078: slti r2,r17,0x0008
001c307c: bne r2,r0,0x001c2f18             ^ loop
001c3080: addiu r5,r5,0x0002
001c3084: sll r2,r23,0x01
001c3088: addu r2,r2,r23
001c308c: sll r2,r2,0x02
001c3090: addu r2,r2,r23
001c3094: sll r2,r2,0x08
001c3098: addiu r2,r2,0x0004
001c309c: addu r2,r22,r2
001c30a0: addu r5,r2,r0
001c30a4: ori r18,r0,0x0001
001c30a8: addiu r20,r29,0x0010
001c30ac: addu r7,r5,r0
001c30b0: lhu r2,0x04e0(r29)
001c30b4: ori r25,r0,0x016c
001c30b8: sw r25,0x0630(r29)
001c30bc: sw r0,0x0638(r29)
001c30c0: sh r2,0x0174(r7)
001c30c4: lhu r2,0x04e4(r29)
001c30c8: ori r24,r0,0x030c
001c30cc: sw r24,0x0640(r29)
001c30d0: sh r2,0x0176(r7)
001c30d4: lhu r2,0x0500(r29)
001c30d8: ori r25,r0,0x01a0
001c30dc: sw r25,0x0650(r29)
001c30e0: sh r2,0x018c(r7)
001c30e4: lhu r2,0x0504(r29)
001c30e8: ori r21,r0,0x0020
001c30ec: sh r2,0x018e(r7)
001c30f0: lhu r2,0x0008(r7)
001c30f4: lhu r3,0x000a(r7)
001c30f8: lhu r4,0x0020(r7)
001c30fc: lhu r5,0x0022(r7)                        
001c3100: addu r30,r0,r0
001c3104: sh r2,0x0180(r7)
001c3108: sh r3,0x0182(r7)
001c310c: sh r4,0x0198(r7)
001c3110: sh r5,0x019a(r7)
001c3114: addiu r10,r18,0x0001
001c3118: sll r2,r10,0x07
001c311c: addiu r3,r29,0x0050
001c3120: addu r3,r3,r2
001c3124: lhu r2,0x0000(r3)
001c3128: nop
001c312c: addu r2,r2,r16
001c3130: sh r2,0x0010(r29)
001c3134: lhu r2,0x0004(r3)
001c3138: nop
001c313c: addu r2,r2,r11
001c3140: sh r2,0x0012(r29)
001c3144: lhu r2,0x0008(r3)
001c3148: nop
001c314c: addu r2,r2,r9
001c3150: sh r2,0x0014(r29)
001c3154: addu r12,r20,r0
001c3158: lwc2 gtedr00_vxy0,0x0000(r12)
001c315c: lwc2 gtedr01_vz0,0x0004(r12)
001c3160: nop
001c3164: nop
001c3168: mvmva 0x1,0x0,0x0,0x0,0x0
001c316c: addiu r2,r29,0x04d0
001c3170: addu r12,r2,r0
001c3174: swc2 gtedr25_mac1,0x0000(r12)
001c3178: swc2 gtedr26_mac2,0x0004(r12)
001c317c: swc2 gtedr27_mac3,0x0008(r12)
001c3180: addiu r2,r29,0x04dc
001c3184: addu r12,r2,r0
001c3188: cfc2 r13,gtecr31_flag
001c318c: nop
001c3190: sw r13,0x0000(r12)
001c3194: lw r24,0x0650(r29)
001c3198: lhu r2,0x04d0(r29)
001c319c: addu r6,r7,r24
001c31a0: sh r2,0x0008(r6)
001c31a4: lhu r2,0x04d4(r29)
001c31a8: addiu r4,r29,0x0510
001c31ac: sh r2,0x000a(r6)
001c31b0: lhu r2,0x04d8(r29)
001c31b4: addu r4,r4,r21
001c31b8: sh r2,0x0000(r4)
001c31bc: lhu r2,0x0010(r3)
001c31c0: nop
001c31c4: addu r2,r2,r16
001c31c8: sh r2,0x0010(r29)
001c31cc: lhu r2,0x0014(r3)
001c31d0: nop
001c31d4: addu r2,r2,r11
001c31d8: sh r2,0x0012(r29)
001c31dc: lhu r2,0x0018(r3)
001c31e0: nop
001c31e4: addu r2,r2,r9
001c31e8: sh r2,0x0014(r29)
001c31ec: addu r12,r20,r0
001c31f0: lwc2 gtedr00_vxy0,0x0000(r12)
001c31f4: lwc2 gtedr01_vz0,0x0004(r12)
001c31f8: nop
001c31fc: nop
001c3200: mvmva 0x1,0x0,0x0,0x0,0x0
001c3204: addiu r2,r29,0x04e0
001c3208: addu r12,r2,r0
001c320c: swc2 gtedr25_mac1,0x0000(r12)
001c3210: swc2 gtedr26_mac2,0x0004(r12)
001c3214: swc2 gtedr27_mac3,0x0008(r12)
001c3218: addiu r2,r29,0x04ec
001c321c: addu r12,r2,r0
001c3220: cfc2 r13,gtecr31_flag
001c3224: nop
001c3228: sw r13,0x0000(r12)
001c322c: lhu r2,0x04e0(r29)
001c3230: nop
001c3234: sh r2,0x0014(r6)
001c3238: lhu r2,0x04e4(r29)
001c323c: nop
001c3240: sh r2,0x0016(r6)
001c3244: lw r25,0x0638(r29)
001c3248: lhu r2,0x04e8(r29)
001c324c: addu r5,r7,r25
001c3250: sh r2,0x0002(r4)
001c3254: lhu r2,0x0008(r5)
001c3258: nop
001c325c: sh r2,0x0020(r6)
001c3260: lhu r2,0x000a(r5)
001c3264: nop
001c3268: sh r2,0x0022(r6)
001c326c: lhu r2,0x0014(r5)
001c3270: ori r17,r0,0x0002
001c3274: sw r30,0x0648(r29)
001c3278: sh r2,0x002c(r6)
001c327c: addu r2,r21,r20
001c3280: lhu r3,0x0016(r5)
001c3284: addiu r8,r2,0x0504
001c3288: sh r3,0x002e(r6)
001c328c: sll r3,r18,0x03
001c3290: addu r3,r3,r17
001c3294: sll r2,r3,0x01
001c3298: addu r2,r2,r3
001c329c: sll r2,r2,0x02
001c32a0: addu r2,r2,r3
001c32a4: sll r2,r2,0x02
001c32a8: addiu r2,r2,-0x0034
001c32ac: lhu r3,0x04e0(r29)
001c32b0: addu r6,r7,r2
001c32b4: sh r3,0x0008(r6)
001c32b8: lw r24,0x0648(r29)
001c32bc: nop
001c32c0: addu r3,r24,r17
001c32c4: sll r2,r3,0x01
001c32c8: addu r2,r2,r3
001c32cc: sll r2,r2,0x02
001c32d0: addu r2,r2,r3
001c32d4: sll r2,r2,0x02
001c32d8: addiu r2,r2,-0x0034
001c32dc: lhu r3,0x04e4(r29)
001c32e0: addu r5,r7,r2
001c32e4: sh r3,0x000a(r6)
001c32e8: lhu r2,0x0008(r5)
001c32ec: nop
001c32f0: sh r2,0x0020(r6)
001c32f4: lhu r2,0x000a(r5)
001c32f8: nop
001c32fc: sh r2,0x0022(r6)
001c3300: lhu r2,0x0014(r5)
001c3304: addiu r4,r29,0x0050
001c3308: sh r2,0x002c(r6)
001c330c: lhu r2,0x0016(r5)
001c3310: sll r3,r17,0x04
001c3314: sh r2,0x002e(r6)
001c3318: sll r2,r10,0x07
001c331c: addu r3,r3,r2
001c3320: addu r4,r4,r3
001c3324: lhu r2,0x0000(r4)
001c3328: nop
001c332c: addu r2,r2,r16
001c3330: sh r2,0x0010(r29)
001c3334: lhu r2,0x0004(r4)
001c3338: nop
001c333c: addu r2,r2,r11
001c3340: sh r2,0x0012(r29)
001c3344: lhu r2,0x0008(r4)
001c3348: nop
001c334c: addu r2,r2,r9
001c3350: sh r2,0x0014(r29)
001c3354: addu r12,r20,r0
001c3358: lwc2 gtedr00_vxy0,0x0000(r12)
001c335c: lwc2 gtedr01_vz0,0x0004(r12)
001c3360: nop
001c3364: nop
001c3368: mvmva 0x1,0x0,0x0,0x0,0x0
001c336c: addiu r2,r29,0x04e0
001c3370: addu r12,r2,r0
001c3374: swc2 gtedr25_mac1,0x0000(r12)
001c3378: swc2 gtedr26_mac2,0x0004(r12)
001c337c: swc2 gtedr27_mac3,0x0008(r12)
001c3380: addiu r2,r29,0x04ec
001c3384: addu r12,r2,r0
001c3388: cfc2 r13,gtecr31_flag
001c338c: nop
001c3390: sw r13,0x0000(r12)
001c3394: lhu r2,0x04e0(r29)
001c3398: nop
001c339c: sh r2,0x0014(r6)
001c33a0: lhu r2,0x04e4(r29)
001c33a4: nop
001c33a8: sh r2,0x0016(r6)
001c33ac: lhu r2,0x04e8(r29)
001c33b0: addiu r17,r17,0x0001
001c33b4: sh r2,0x0000(r8)
001c33b8: slti r2,r17,0x0008
001c33bc: bne r2,r0,0x001c328c         ^ loop
001c33c0: addiu r8,r8,0x0002
001c33c4: lw r25,0x0640(r29)
001c33c8: lw r24,0x0630(r29)
001c33cc: lhu r2,0x04e0(r29)
001c33d0: addu r6,r7,r25
001c33d4: addu r5,r7,r24
001c33d8: addiu r24,r24,0x01a0
001c33dc: sw r24,0x0630(r29)
001c33e0: sh r2,0x0008(r6)
001c33e4: lw r25,0x0638(r29)
001c33e8: lhu r2,0x04e4(r29)
001c33ec: addiu r25,r25,0x01a0
001c33f0: sw r25,0x0638(r29)
001c33f4: sh r2,0x000a(r6)
001c33f8: lw r24,0x0640(r29)
001c33fc: lhu r2,0x0008(r5)
001c3400: addiu r24,r24,0x01a0
001c3404: sw r24,0x0640(r29)
001c3408: sh r2,0x0020(r6)
001c340c: lhu r2,0x000a(r5)
001c3410: addiu r21,r21,0x0010
001c3414: sh r2,0x0022(r6)
001c3418: lhu r2,0x0014(r5)
001c341c: nop
001c3420: sh r2,0x002c(r6)
001c3424: lw r25,0x0650(r29)
001c3428: lhu r2,0x0016(r5)
001c342c: addu r5,r7,r25
001c3430: sh r2,0x002e(r6)
001c3434: lhu r2,0x0008(r5)
001c3438: addiu r18,r18,0x0001
001c343c: sh r2,0x0014(r6)
001c3440: lhu r2,0x000a(r5)
001c3444: addiu r25,r25,0x01a0
001c3448: sw r25,0x0650(r29)
001c344c: sh r2,0x0016(r6)
001c3450: slti r2,r18,0x0008
001c3454: bne r2,r0,0x001c3114          ^ loop
001c3458: addiu r30,r30,0x0008
001c345c: addu r17,r0,r0
001c3460: sll r3,r23,0x01
001c3464: addu r3,r3,r23
001c3468: sll r3,r3,0x02
001c346c: addu r3,r3,r23
001c3470: sll r3,r3,0x08
001c3474: addiu r3,r3,0x0004
001c3478: addu r3,r22,r3
001c347c: lbu r7,0x0600(r29)
001c3480: lw r24,0x0600(r29)
001c3484: lw r25,0x0610(r29)
001c3488: lhu r2,0x1a06(r22)
001c348c: addu r6,r24,r25
001c3490: sll r2,r2,0x10
001c3494: sra r18,r2,0x18
001c3498: lw r24,0x0608(r29)
001c349c: lw r25,0x0618(r29)
001c34a0: addu r5,r24,r18
001c34a4: addu r2,r24,r25
001c34a8: addu r4,r2,r18

polygon CLUT & TPAGE loop

001c34ac: sb r7,0x0024(r3)                     (buffer)
001c34b0: sb r7,0x000c(r3)                     store CLUT 
001c34b4: sb r5,0x0019(r3)                     store in tpage? (colour stored in sheet dedicated to effect?)
001c34b8: sb r5,0x000d(r3)                     store rest of CLUT
001c34bc: sb r6,0x0030(r3)                     (buffer)
001c34c0: sb r6,0x0018(r3)                     store TPAGE
001c34c4: sb r4,0x0031(r3)                     (buffer)
001c34c8: sb r4,0x0025(r3)
001c34cc: addiu r17,r17,0x0001
001c34d0: slti r2,r17,0x0040
001c34d4: bne r2,r0,0x001c34ac                  loop 0x40 times
001c34d8: addiu r3,r3,0x0034                    next polygon
001c34dc: lhu r2,0x0006(r19)
001c34e0: lh r10,0x003c(r19)
001c34e4: andi r2,r2,0x0040
001c34e8: beq r2,r0,0x001c3564
001c34ec: ori r14,r0,0x0080
001c34f0: lw r3,0x0010(r19)
001c34f4: lui r4,0x801c
001c34f8: lw r4,-0x4084(r4)
001c34fc: lw r24,0x05f8(r29)
001c3500: andi r8,r3,0x0fff
001c3504: andi r3,r3,0x000f
001c3508: sll r2,r3,0x02
001c350c: addu r2,r2,r3
001c3510: sll r2,r2,0x05
001c3514: addu r2,r2,r4
001c3518: addu r2,r2,r24
001c351c: sra r3,r8,0x04
001c3520: andi r3,r3,0x000f
001c3524: lbu r16,0x0004(r2)
001c3528: sll r2,r3,0x02
001c352c: addu r2,r2,r3
001c3530: sll r2,r2,0x05
001c3534: addu r2,r2,r4
001c3538: addu r2,r2,r24
001c353c: srl r3,r8,0x08
001c3540: lbu r15,0x0004(r2)
001c3544: sll r2,r3,0x02
001c3548: addu r2,r2,r3
001c354c: sll r2,r2,0x05
001c3550: addu r2,r2,r4
001c3554: addu r2,r2,r24
001c3558: lbu r14,0x0004(r2)
001c355c: j 0x001c3570
001c3560: sll r2,r10,0x03
001c3564: ori r15,r0,0x0080
001c3568: ori r16,r0,0x0080
001c356c: sll r2,r10,0x03
001c3570: addu r2,r2,r10
001c3574: sll r2,r2,0x02
001c3578: lui r1,0x801c
001c357c: addu r1,r1,r2
001c3580: lw r8,0x5174(r1)
001c3584: nop
001c3588: mult r8,r16
001c358c: mflo r4
001c3590: nop
001c3594: nop
001c3598: mult r8,r15
001c359c: mflo r3
001c35a0: nop
001c35a4: nop
001c35a8: mult r8,r14
001c35ac: addu r17,r0,r0
001c35b0: sll r2,r23,0x01
001c35b4: addu r2,r2,r23
001c35b8: sll r2,r2,0x02
001c35bc: addu r2,r2,r23
001c35c0: sll r2,r2,0x08
001c35c4: addiu r2,r2,0x0004
001c35c8: addu r5,r22,r2
001c35cc: srl r4,r4,0x0c
001c35d0: srl r3,r3,0x0c
001c35d4: mflo r2
001c35d8: srl r6,r2,0x0c
001c35dc: sb r4,0x0028(r5)
001c35e0: sb r4,0x001c(r5)
001c35e4: sb r3,0x0029(r5)
001c35e8: sb r3,0x001d(r5)
001c35ec: sb r6,0x002a(r5)
001c35f0: sb r6,0x001e(r5)
001c35f4: addiu r17,r17,0x0001
001c35f8: slti r2,r17,0x0008
001c35fc: bne r2,r0,0x001c35dc
001c3600: addiu r5,r5,0x0034
001c3604: addu r18,r0,r0
001c3608: sll r2,r23,0x01
001c360c: addu r2,r2,r23
001c3610: sll r2,r2,0x02
001c3614: addu r19,r2,r23
001c3618: ori r13,r0,0x0008
001c361c: lui r3,0x801c
001c3620: addiu r3,r3,0x5174
001c3624: sll r2,r10,0x03
001c3628: addu r2,r2,r10
001c362c: sll r2,r2,0x02
001c3630: addu r11,r2,r3
001c3634: lw r8,0x0004(r11)
001c3638: nop
001c363c: mult r8,r16
001c3640: mflo r2
001c3644: nop
001c3648: nop
001c364c: mult r8,r15
001c3650: addu r17,r0,r0
001c3654: sll r3,r19,0x08
001c3658: addiu r3,r3,0x0004
001c365c: addu r9,r22,r3
001c3660: addu r12,r13,r0
001c3664: srl r7,r2,0x0c
001c3668: mflo r2
001c366c: srl r4,r2,0x0c
001c3670: sll r3,r18,0x03
001c3674: addu r3,r3,r17
001c3678: sll r2,r3,0x01
001c367c: addu r2,r2,r3
001c3680: sll r2,r2,0x02
001c3684: addu r2,r2,r3
001c3688: sll r2,r2,0x02
001c368c: addu r6,r9,r2
001c3690: addu r3,r12,r17
001c3694: sll r2,r3,0x01
001c3698: addu r2,r2,r3
001c369c: sll r2,r2,0x02
001c36a0: addu r2,r2,r3
001c36a4: mult r8,r14
001c36a8: sll r2,r2,0x02
001c36ac: addu r5,r9,r2
001c36b0: addiu r17,r17,0x0001
001c36b4: sb r7,0x0028(r5)
001c36b8: sb r7,0x001c(r5)
001c36bc: sb r7,0x0010(r6)
001c36c0: sb r7,0x0004(r6)
001c36c4: sb r4,0x0029(r5)
001c36c8: sb r4,0x001d(r5)
001c36cc: sb r4,0x0011(r6)
001c36d0: sb r4,0x0005(r6)
001c36d4: mflo r2
001c36d8: srl r2,r2,0x0c
001c36dc: sb r2,0x002a(r5)
001c36e0: sb r2,0x001e(r5)
001c36e4: sb r2,0x0012(r6)
001c36e8: sb r2,0x0006(r6)
001c36ec: slti r2,r17,0x0008
001c36f0: bne r2,r0,0x001c3670       ^ loop
001c36f4: nop
001c36f8: addiu r13,r13,0x0008
001c36fc: addiu r18,r18,0x0001
001c3700: slti r2,r18,0x0007
001c3704: bne r2,r0,0x001c3634       ^ loop
001c3708: addiu r11,r11,0x0004
001c370c: sll r2,r10,0x03
001c3710: addu r2,r2,r10
001c3714: sll r2,r2,0x02
001c3718: lui r1,0x801c
001c371c: addu r1,r1,r2
001c3720: lw r8,0x5194(r1)
001c3724: nop
001c3728: mult r8,r16
001c372c: mflo r4
001c3730: nop
001c3734: nop
001c3738: mult r8,r15
001c373c: mflo r3
001c3740: nop
001c3744: nop
001c3748: mult r8,r14
001c374c: addu r17,r0,r0
001c3750: sll r2,r23,0x01
001c3754: addu r2,r2,r23
001c3758: sll r2,r2,0x02
001c375c: addu r2,r2,r23
001c3760: sll r2,r2,0x08
001c3764: addiu r2,r2,0x0004
001c3768: ori r5,r0,0x0b60
001c376c: srl r4,r4,0x0c
001c3770: addu r8,r22,r2
001c3774: srl r3,r3,0x0c
001c3778: mflo r2
001c377c: srl r7,r2,0x0c
001c3780: addu r6,r8,r5
001c3784: addiu r5,r5,0x0034
001c3788: addiu r17,r17,0x0001
001c378c: slti r2,r17,0x0008
001c3790: sb r4,0x0010(r6)
001c3794: sb r4,0x0004(r6)
001c3798: sb r3,0x0011(r6)
001c379c: sb r3,0x0005(r6)
001c37a0: sb r7,0x0012(r6)
001c37a4: bne r2,r0,0x001c3780       ^ loop
001c37a8: sb r7,0x0006(r6)
001c37ac: addu r18,r0,r0
001c37b0: addiu r16,r29,0x0010
001c37b4: addiu r15,r29,0x0520
001c37b8: sll r2,r23,0x01
001c37bc: addu r2,r2,r23
001c37c0: sll r2,r2,0x02
001c37c4: addu r14,r2,r23
001c37c8: addu r17,r0,r0
001c37cc: lui r9,0x00ff
001c37d0: ori r9,r9,0xffff
001c37d4: lui r12,0xff00
001c37d8: sll r11,r14,0x08
001c37dc: addiu r2,r11,0x0004
001c37e0: addu r13,r22,r2
001c37e4: sll r2,r18,0x04
001c37e8: addu r8,r15,r2
001c37ec: addu r2,r2,r16
001c37f0: addiu r7,r2,0x0500
001c37f4: lh r2,0x0000(r7)
001c37f8: lh r3,0x0002(r7)
001c37fc: nop
001c3800: addu r2,r2,r3
001c3804: lh r3,0x0000(r8)
001c3808: lh r4,0x0002(r8)
001c380c: addu r2,r2,r3
001c3810: addu r2,r2,r4
001c3814: bgez r2,0x001c3824
001c3818: sra r10,r2,0x04
001c381c: addiu r2,r2,0x000f
001c3820: sra r10,r2,0x04
001c3824: sltiu r2,r10,0x0180
001c3828: beq r2,r0,0x001c3890
001c382c: addiu r8,r8,0x0002
001c3830: sll r2,r18,0x03
001c3834: addu r2,r2,r17
001c3838: sll r4,r2,0x01
001c383c: addu r4,r4,r2
001c3840: sll r4,r4,0x02
001c3844: addu r4,r4,r2
001c3848: sll r4,r4,0x02
001c384c: addu r6,r11,r22
001c3850: addu r6,r4,r6
001c3854: sll r5,r10,0x02
001c3858: addu r4,r13,r4
001c385c: lw r25,0x0620(r29)                  load otag list
001c3860: lw r2,0x0004(r6)
001c3864: addu r5,r5,r25
001c3868: lw r3,0x0000(r5)
001c386c: and r2,r2,r12
001c3870: and r3,r3,r9
001c3874: or r2,r2,r3
001c3878: sw r2,0x0004(r6)
001c387c: lw r2,0x0000(r5)
001c3880: and r4,r4,r9
001c3884: and r2,r2,r12
001c3888: or r2,r2,r4
001c388c: sw r2,0x0000(r5)
001c3890: addiu r17,r17,0x0001
001c3894: slti r2,r17,0x0007
001c3898: bne r2,r0,0x001c37f4        ^ loop
001c389c: addiu r7,r7,0x0002
001c38a0: sll r2,r18,0x04
001c38a4: addiu r3,r29,0x0510
001c38a8: addu r2,r3,r2
001c38ac: lh r4,0x0000(r2)
001c38b0: lh r2,0x000e(r2)
001c38b4: addiu r11,r18,0x0001
001c38b8: addu r4,r4,r2
001c38bc: sll r2,r11,0x04
001c38c0: addu r3,r3,r2
001c38c4: lh r2,0x0000(r3)
001c38c8: lh r3,0x000e(r3)
001c38cc: addu r4,r4,r2
001c38d0: addu r2,r4,r3
001c38d4: bgez r2,0x001c38e4
001c38d8: sra r10,r2,0x04
001c38dc: addiu r2,r2,0x000f
001c38e0: sra r10,r2,0x04
001c38e4: sltiu r2,r10,0x0180
001c38e8: beq r2,r0,0x001c3960
001c38ec: lui r9,0x00ff
001c38f0: ori r9,r9,0xffff
001c38f4: sll r5,r14,0x08
001c38f8: addu r7,r5,r22
001c38fc: sll r4,r18,0x01
001c3900: addu r4,r4,r18
001c3904: sll r4,r4,0x02
001c3908: addu r4,r4,r18
001c390c: sll r4,r4,0x05
001c3910: addu r7,r7,r4
001c3914: sll r6,r10,0x02
001c3918: lui r8,0xff00
001c391c: addiu r5,r5,0x0004
001c3920: addu r5,r22,r5
001c3924: addiu r4,r4,0x016c
001c3928: addu r5,r5,r4
001c392c: lw r24,0x0620(r29)                   load otag list
001c3930: lw r3,0x0170(r7)
001c3934: addu r6,r6,r24
001c3938: lw r2,0x0000(r6)
001c393c: and r3,r3,r8
001c3940: and r2,r2,r9
001c3944: or r3,r3,r2
001c3948: sw r3,0x0170(r7)
001c394c: lw r2,0x0000(r6)
001c3950: and r5,r5,r9
001c3954: and r2,r2,r8
001c3958: or r2,r2,r5
001c395c: sw r2,0x0000(r6)
001c3960: addu r18,r11,r0
001c3964: slti r2,r11,0x0008
001c3968: bne r2,r0,0x001c37cc
001c396c: addu r17,r0,r0
001c3970: lw r3,0x0000(r22)
001c3974: ori r2,r0,0x0001
001c3978: subu r2,r2,r3
001c397c: j 0x001c39c4
001c3980: sw r2,0x0000(r22)

if 0x22 TED = 0x3 (end?)

001c3984: sll r2,r30,0x02
001c3988: addu r16,r2,r23
001c398c: lw r22,0x00e4(r16)
001c3990: nop
001c3994: lw r2,0x1a18(r22)
001c3998: nop
001c399c: bne r2,r0,0x001c39ac
001c39a0: nop
001c39a4: j 0x001c39c4
001c39a8: sw r4,0x1a18(r22)
001c39ac: beq r22,r0,0x001c39c0
001c39b0: nop
001c39b4: jal 0x001a4e9c
001c39b8: addu r4,r22,r0
001c39bc: sw r0,0x00e4(r16)                             clear model pointer
001c39c0: sb r0,0x0022(r17)                             set model phase to 0

End

001c39c4: lw r31,0x067c(r29)
001c39c8: lw r30,0x0678(r29)
001c39cc: lw r23,0x0674(r29)
001c39d0: lw r22,0x0670(r29)
001c39d4: lw r21,0x066c(r29)
001c39d8: lw r20,0x0668(r29)
001c39dc: lw r19,0x0664(r29)
001c39e0: lw r18,0x0660(r29)
001c39e4: lw r17,0x065c(r29)
001c39e8: lw r16,0x0658(r29)
001c39ec: addiu r29,r29,0x0680
001c39f0: jr r31
001c39f4: nop