Difference between revisions of "Block Start Event Instruction"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
(Created page with " 8013e904: 27bdffa8 addiu r29,r29,-0x0058 8013e908: 3c028017 lui r2,0x8017 8013e90c: 8c424038 lw r2,0x4038(r2) 8013e910: 34030008 ori r3,r0,0x0008 8013e914: afbf0054 sw r3...")
 
 
Line 1: Line 1:
 +
#  ROUTINE: BlockStart event instruction
 +
 
  8013e904: 27bdffa8 addiu r29,r29,-0x0058
 
  8013e904: 27bdffa8 addiu r29,r29,-0x0058
 
  8013e908: 3c028017 lui r2,0x8017
 
  8013e908: 3c028017 lui r2,0x8017
  8013e90c: 8c424038 lw r2,0x4038(r2)
+
  8013e90c: 8c424038 lw r2,0x4038(r2)                 #  threadID
  8013e910: 34030008 ori r3,r0,0x0008
+
  8013e910: 34030008 ori r3,r0,0x0008                 #  8
 
  8013e914: afbf0054 sw r31,0x0054(r29)
 
  8013e914: afbf0054 sw r31,0x0054(r29)
 
  8013e918: afb40050 sw r20,0x0050(r29)
 
  8013e918: afb40050 sw r20,0x0050(r29)
Line 9: Line 11:
 
  8013e924: afb10044 sw r17,0x0044(r29)
 
  8013e924: afb10044 sw r17,0x0044(r29)
 
  8013e928: afb00040 sw r16,0x0040(r29)
 
  8013e928: afb00040 sw r16,0x0040(r29)
  8013e92c: 00021280 sll r2,r2,0x0a
+
  8013e92c: 00021280 sll r2,r2,0x0a                   #  threadID * sizeof(thread)
 
  8013e930: 3c018017 lui r1,0x8017
 
  8013e930: 3c018017 lui r1,0x8017
 
  8013e934: 00220821 addu r1,r1,r2
 
  8013e934: 00220821 addu r1,r1,r2
  8013e938: ac2398b8 sw r3,-0x6748(r1)
+
  8013e938: ac2398b8 sw r3,-0x6748(r1)               #  thread.TaskID = 8
  8013e93c: 0c0532f0 jal 0x8014cbc0
+
  8013e93c: 0c0532f0 jal 0x8014cbc0                   #  eventInstructionPtr = [[Get First Thread Parameter]] ();
 
  8013e940: 00000000 nop
 
  8013e940: 00000000 nop
  8013e944: 00409021 addu r18,r2,r0
+
  8013e944: 00409021 addu r18,r2,r0                   #  eventInstructionPtr
  8013e948: 92430000 lbu r3,0x0000(r18)
+
  8013e948: 92430000 lbu r3,0x0000(r18)               #  eventInstructionID = *eventInstructionPtr
  8013e94c: 3402002b ori r2,r0,0x002b
+
  8013e94c: 3402002b ori r2,r0,0x002b                 #  EVENT_INSTRUCTION_BLOCK_END
  8013e950: 10620116 beq r3,r2,0x8013edac
+
  8013e950: 10620116 beq r3,r2,0x8013edac             #  if (eventInstructionID != EVENT_INSTRUCTION_BLOCK_END) {
  8013e954: 26500001 addiu r16,r18,0x0001
+
  8013e954: 26500001 addiu r16,r18,0x0001             #      eventInstructionParamsPtr = eventInstructionPtr + 1
  8013e958: 341407d0 ori r20,r0,0x07d0
+
  8013e958: 341407d0 ori r20,r0,0x07d0               #      0x07d0
  8013e95c: 0c05181e jal 0x80146078
+
                                                    #      do {
 +
  8013e95c: 0c05181e jal 0x80146078                   #          halfwordParam1 = [[Load Halfword]] (eventInstructionParamsPtr);
 
  8013e960: 02002021 addu r4,r16,r0
 
  8013e960: 02002021 addu r4,r16,r0
  8013e964: 00408821 addu r17,r2,r0
+
  8013e964: 00408821 addu r17,r2,r0                   #          halfwordParam1
  8013e968: 92430000 lbu r3,0x0000(r18)
+
  8013e968: 92430000 lbu r3,0x0000(r18)               #          eventInstructionID
  8013e96c: 34020043 ori r2,r0,0x0043
+
  8013e96c: 34020043 ori r2,r0,0x0043                
  8013e970: 14620010 bne r3,r2,0x8013e9b4
+
  8013e970: 14620010 bne r3,r2,0x8013e9b4             #          if (eventInstructionID == EVENT_INSTRUCTION_CALL_FUNCTION) {
 
  8013e974: 34020021 ori r2,r0,0x0021
 
  8013e974: 34020021 ori r2,r0,0x0021
  8013e978: 92430001 lbu r3,0x0001(r18)
+
  8013e978: 92430001 lbu r3,0x0001(r18)               #              functionID
 
  8013e97c: 34020009 ori r2,r0,0x0009
 
  8013e97c: 34020009 ori r2,r0,0x0009
  8013e980: 14620006 bne r3,r2,0x8013e99c
+
  8013e980: 14620006 bne r3,r2,0x8013e99c             #              if (functionID == 9) {
 
  8013e984: 3402000a ori r2,r0,0x000a
 
  8013e984: 3402000a ori r2,r0,0x000a
 
  8013e988: 34040053 ori r4,r0,0x0053
 
  8013e988: 34040053 ori r4,r0,0x0053
  8013e98c: 0c04ed91 jal 0x8013b644
+
  8013e98c: 0c04ed91 jal 0x8013b644                   #                  [[Set Script Variable]] (0x53, 1);
 
  8013e990: 34050001 ori r5,r0,0x0001
 
  8013e990: 34050001 ori r5,r0,0x0001
 
  8013e994: 0804fb60 j 0x8013ed80
 
  8013e994: 0804fb60 j 0x8013ed80
  8013e998: 00000000 nop
+
  8013e998: 00000000 nop                            
  8013e99c: 146200f8 bne r3,r2,0x8013ed80
+
  8013e99c: 146200f8 bne r3,r2,0x8013ed80             #              } else if (functionID == 10) {
 
  8013e9a0: 34040053 ori r4,r0,0x0053
 
  8013e9a0: 34040053 ori r4,r0,0x0053
  8013e9a4: 0c04ed91 jal 0x8013b644
+
  8013e9a4: 0c04ed91 jal 0x8013b644                   #                  [[Set Script Variable]] (0x53, 0);
 
  8013e9a8: 00002821 addu r5,r0,r0
 
  8013e9a8: 00002821 addu r5,r0,r0
 
  8013e9ac: 0804fb60 j 0x8013ed80
 
  8013e9ac: 0804fb60 j 0x8013ed80
  8013e9b0: 00000000 nop
+
  8013e9b0: 00000000 nop                             #              }
  8013e9b4: 14620007 bne r3,r2,0x8013e9d4
+
  8013e9b4: 14620007 bne r3,r2,0x8013e9d4             #          } else if (eventInstructionID == EVENT_INSTRUCTION_SOUND) {
 
  8013e9b8: 3402005f ori r2,r0,0x005f
 
  8013e9b8: 3402005f ori r2,r0,0x005f
 
  8013e9bc: 00111400 sll r2,r17,0x10
 
  8013e9bc: 00111400 sll r2,r17,0x10
 
  8013e9c0: 00021403 sra r2,r2,0x10
 
  8013e9c0: 00021403 sra r2,r2,0x10
 
  8013e9c4: 3c018016 lui r1,0x8016
 
  8013e9c4: 3c018016 lui r1,0x8016
  8013e9c8: ac225fb4 sw r2,0x5fb4(r1)
+
  8013e9c8: ac225fb4 sw r2,0x5fb4(r1)                 #              *0x80165fb4 = soundID
 
  8013e9cc: 0804fb60 j 0x8013ed80
 
  8013e9cc: 0804fb60 j 0x8013ed80
 
  8013e9d0: 00000000 nop
 
  8013e9d0: 00000000 nop
  8013e9d4: 14620005 bne r3,r2,0x8013e9ec
+
  8013e9d4: 14620005 bne r3,r2,0x8013e9ec             #          } else if (eventInstructionID == EVENT_INSTRUCTION_WARP_UNIT) {
 
  8013e9d8: 3402007e ori r2,r0,0x007e
 
  8013e9d8: 3402007e ori r2,r0,0x007e
  8013e9dc: 0c051f98 jal 0x80147e60
+
  8013e9dc: 0c051f98 jal 0x80147e60                   #              [[Warp Unit]] (eventInstructionParamsPtr);
 
  8013e9e0: 02002021 addu r4,r16,r0
 
  8013e9e0: 02002021 addu r4,r16,r0
 
  8013e9e4: 0804fb60 j 0x8013ed80
 
  8013e9e4: 0804fb60 j 0x8013ed80
 
  8013e9e8: 00000000 nop
 
  8013e9e8: 00000000 nop
  8013e9ec: 14620005 bne r3,r2,0x8013ea04
+
  8013e9ec: 14620005 bne r3,r2,0x8013ea04             #          } else if (eventInstructionID == EVENT_INSTRUCTION_WAIT_VALUE) {
 
  8013e9f0: 34020072 ori r2,r0,0x0072
 
  8013e9f0: 34020072 ori r2,r0,0x0072
  8013e9f4: 0c0528fe jal 0x8014a3f8
+
  8013e9f4: 0c0528fe jal 0x8014a3f8                   #              [[? 0x14a3f8]] (eventInstructionParamsPtr);
 
  8013e9f8: 02002021 addu r4,r16,r0
 
  8013e9f8: 02002021 addu r4,r16,r0
 
  8013e9fc: 0804fb60 j 0x8013ed80
 
  8013e9fc: 0804fb60 j 0x8013ed80
 
  8013ea00: 00000000 nop
 
  8013ea00: 00000000 nop
  8013ea04: 14620005 bne r3,r2,0x8013ea1c
+
  8013ea04: 14620005 bne r3,r2,0x8013ea1c             #          } else if (eventInstructionID == 0x72) {        // Never used
 
  8013ea08: 34020028 ori r2,r0,0x0028
 
  8013ea08: 34020028 ori r2,r0,0x0028
  8013ea0c: 0c04f961 jal 0x8013e584
+
  8013ea0c: 0c04f961 jal 0x8013e584                   #              [[? 0x13e584]] ();
 
  8013ea10: 00000000 nop
 
  8013ea10: 00000000 nop
 
  8013ea14: 0804fb60 j 0x8013ed80
 
  8013ea14: 0804fb60 j 0x8013ed80
 
  8013ea18: 00000000 nop
 
  8013ea18: 00000000 nop
  8013ea1c: 14620009 bne r3,r2,0x8013ea44
+
  8013ea1c: 14620009 bne r3,r2,0x8013ea44             #          } else if (eventInstructionID == EVENT_INSTRUCTION_WALK_TO) {
 
  8013ea20: 34020079 ori r2,r0,0x0079
 
  8013ea20: 34020079 ori r2,r0,0x0079
 
  8013ea24: 3c028014 lui r2,0x8014
 
  8013ea24: 3c028014 lui r2,0x8014
  8013ea28: 2442e5c0 addiu r2,r2,-0x1a40
+
  8013ea28: 2442e5c0 addiu r2,r2,-0x1a40             #              0x8013e5c0
 
  8013ea2c: 3c018017 lui r1,0x8017
 
  8013ea2c: 3c018017 lui r1,0x8017
  8013ea30: ac223ca8 sw r2,0x3ca8(r1)
+
  8013ea30: ac223ca8 sw r2,0x3ca8(r1)                 #              Routine to call: 0x8013e5c0
  8013ea34: 0c0533ad jal 0x8014ceb4
+
  8013ea34: 0c0533ad jal 0x8014ceb4                   #              [[Call Inner Subroutine]] (eventInstructionParamsPtr);  // Called on main thread
 
  8013ea38: 02002021 addu r4,r16,r0
 
  8013ea38: 02002021 addu r4,r16,r0
 
  8013ea3c: 0804fb60 j 0x8013ed80
 
  8013ea3c: 0804fb60 j 0x8013ed80
 
  8013ea40: 00000000 nop
 
  8013ea40: 00000000 nop
  8013ea44: 14620014 bne r3,r2,0x8013ea98
+
  8013ea44: 14620014 bne r3,r2,0x8013ea98             #          } else if (eventInstructionID == EVENT_INSTRUCTION_WALK_TO_ANIM) {
 
  8013ea48: 34020070 ori r2,r0,0x0070
 
  8013ea48: 34020070 ori r2,r0,0x0070
 
  8013ea4c: 00112400 sll r4,r17,0x10
 
  8013ea4c: 00112400 sll r4,r17,0x10
  8013ea50: 0c04cc56 jal 0x80133158
+
  8013ea50: 0c04cc56 jal 0x80133158                   #              miscID = [[Get misc ID]] (halfwordParam1);
 
  8013ea54: 00042403 sra r4,r4,0x10
 
  8013ea54: 00042403 sra r4,r4,0x10
 
  8013ea58: 00021400 sll r2,r2,0x10
 
  8013ea58: 00021400 sll r2,r2,0x10
  8013ea5c: 00028403 sra r16,r2,0x10
+
  8013ea5c: 00028403 sra r16,r2,0x10                 #              miscID
  8013ea60: 12140008 beq r16,r20,0x8013ea84
+
  8013ea60: 12140008 beq r16,r20,0x8013ea84           #              if (miscID != 0x07d0) {
  8013ea64: 00101040 sll r2,r16,0x01
+
  8013ea64: 00101040 sll r2,r16,0x01                  
  8013ea68: 0c05181e jal 0x80146078
+
  8013ea68: 0c05181e jal 0x80146078                   #                  animationID = [[Load Halfword]] (eventInstructionPtr + 3);
 
  8013ea6c: 26440003 addiu r4,r18,0x0003
 
  8013ea6c: 26440003 addiu r4,r18,0x0003
 
  8013ea70: 00101840 sll r3,r16,0x01
 
  8013ea70: 00101840 sll r3,r16,0x01
 
  8013ea74: 3c018017 lui r1,0x8017
 
  8013ea74: 3c018017 lui r1,0x8017
 
  8013ea78: 00230821 addu r1,r1,r3
 
  8013ea78: 00230821 addu r1,r1,r3
  8013ea7c: a422da6c sh r2,-0x2594(r1)
+
  8013ea7c: a422da6c sh r2,-0x2594(r1)               #                  *(0x8016da6c + (miscID * 2)) = animationID
  8013ea80: 00101040 sll r2,r16,0x01
+
  8013ea80: 00101040 sll r2,r16,0x01                 #              }
 
  8013ea84: 3c018017 lui r1,0x8017
 
  8013ea84: 3c018017 lui r1,0x8017
 
  8013ea88: 00220821 addu r1,r1,r2
 
  8013ea88: 00220821 addu r1,r1,r2
  8013ea8c: a420da98 sh r0,-0x2568(r1)
+
  8013ea8c: a420da98 sh r0,-0x2568(r1)               #              *(0x8016da98 + (miscID * 2)) = 0
 
  8013ea90: 0804fb60 j 0x8013ed80
 
  8013ea90: 0804fb60 j 0x8013ed80
 
  8013ea94: 00000000 nop
 
  8013ea94: 00000000 nop
  8013ea98: 14620005 bne r3,r2,0x8013eab0
+
  8013ea98: 14620005 bne r3,r2,0x8013eab0             #          } else if (eventInstructionID == EVENT_INSTRUCTION_JUMP) {
 
  8013ea9c: 34020029 ori r2,r0,0x0029
 
  8013ea9c: 34020029 ori r2,r0,0x0029
  8013eaa0: 0c04f9c2 jal 0x8013e708
+
  8013eaa0: 0c04f9c2 jal 0x8013e708                   #              [[? 0x13e708]] (eventInstructionParamsPtr);
 
  8013eaa4: 02002021 addu r4,r16,r0
 
  8013eaa4: 02002021 addu r4,r16,r0
 
  8013eaa8: 0804fb60 j 0x8013ed80
 
  8013eaa8: 0804fb60 j 0x8013ed80
 
  8013eaac: 00000000 nop
 
  8013eaac: 00000000 nop
  8013eab0: 14620006 bne r3,r2,0x8013eacc
+
  8013eab0: 14620006 bne r3,r2,0x8013eacc             #          } else if (eventInstructionID == EVENT_INSTRUCTION_WAIT_WALK) {
 
  8013eab4: 34020011 ori r2,r0,0x0011
 
  8013eab4: 34020011 ori r2,r0,0x0011
 
  8013eab8: 00112400 sll r4,r17,0x10
 
  8013eab8: 00112400 sll r4,r17,0x10
  8013eabc: 0c04f9f4 jal 0x8013e7d0
+
  8013eabc: 0c04f9f4 jal 0x8013e7d0                   #              [[? 0x13e7d0]] (halfwordParam1);
 
  8013eac0: 00042403 sra r4,r4,0x10
 
  8013eac0: 00042403 sra r4,r4,0x10
 
  8013eac4: 0804fb60 j 0x8013ed80
 
  8013eac4: 0804fb60 j 0x8013ed80
 
  8013eac8: 00000000 nop
 
  8013eac8: 00000000 nop
  8013eacc: 14620005 bne r3,r2,0x8013eae4
+
  8013eacc: 14620005 bne r3,r2,0x8013eae4             #          } else if (eventInstructionID == EVENT_INSTRUCTION_UNIT_ANIM) {
 
  8013ead0: 34020068 ori r2,r0,0x0068
 
  8013ead0: 34020068 ori r2,r0,0x0068
  8013ead4: 0c0524e6 jal 0x80149398
+
  8013ead4: 0c0524e6 jal 0x80149398                   #              [[Unit Anim]] (eventInstructionParamsPtr);
 
  8013ead8: 02002021 addu r4,r16,r0
 
  8013ead8: 02002021 addu r4,r16,r0
 
  8013eadc: 0804fb60 j 0x8013ed80
 
  8013eadc: 0804fb60 j 0x8013ed80
Line 121: Line 124:
 
  8013eae4: 92430000 lbu r3,0x0000(r18)
 
  8013eae4: 92430000 lbu r3,0x0000(r18)
 
  8013eae8: 00000000 nop
 
  8013eae8: 00000000 nop
  8013eaec: 14620005 bne r3,r2,0x8013eb04
+
  8013eaec: 14620005 bne r3,r2,0x8013eb04             #          } else if (eventInstructionID == EVENT_INSTRUCTION_MIRROR_SPRITE) {
 
  8013eaf0: 34020097 ori r2,r0,0x0097
 
  8013eaf0: 34020097 ori r2,r0,0x0097
 
  8013eaf4: 0c04f997 jal 0x8013e65c
 
  8013eaf4: 0c04f997 jal 0x8013e65c
  8013eaf8: 26440001 addiu r4,r18,0x0001
+
  8013eaf8: 26440001 addiu r4,r18,0x0001             #              [[? 0x13e65c]] (eventInstructionParamsPtr);
 
  8013eafc: 0804fb60 j 0x8013ed80
 
  8013eafc: 0804fb60 j 0x8013ed80
 
  8013eb00: 00000000 nop
 
  8013eb00: 00000000 nop
  8013eb04: 14620005 bne r3,r2,0x8013eb1c
+
  8013eb04: 14620005 bne r3,r2,0x8013eb1c             #          } else if (eventInstructionID == EVENT_INSTRUCTION_RESET_PALETTE) {
 
  8013eb08: 34020071 ori r2,r0,0x0071
 
  8013eb08: 34020071 ori r2,r0,0x0071
  8013eb0c: 0c04f9b1 jal 0x8013e6c4
+
  8013eb0c: 0c04f9b1 jal 0x8013e6c4                   #              [[? 0x13e6c4]] (eventInstructionParamsPtr);       
 
  8013eb10: 26440001 addiu r4,r18,0x0001
 
  8013eb10: 26440001 addiu r4,r18,0x0001
 
  8013eb14: 0804fb60 j 0x8013ed80
 
  8013eb14: 0804fb60 j 0x8013ed80
 
  8013eb18: 00000000 nop
 
  8013eb18: 00000000 nop
  8013eb1c: 1462000c bne r3,r2,0x8013eb50
+
  8013eb1c: 1462000c bne r3,r2,0x8013eb50             #          } else if (eventInstructionID == 0x71) {        // Unknown
 
  8013eb20: 34020046 ori r2,r0,0x0046
 
  8013eb20: 34020046 ori r2,r0,0x0046
 
  8013eb24: 00112400 sll r4,r17,0x10
 
  8013eb24: 00112400 sll r4,r17,0x10
  8013eb28: 0c04cc56 jal 0x80133158
+
  8013eb28: 0c04cc56 jal 0x80133158                   #              miscID = [[Get misc ID]] (halfwordParam1);
 
  8013eb2c: 00042403 sra r4,r4,0x10
 
  8013eb2c: 00042403 sra r4,r4,0x10
 
  8013eb30: 00021400 sll r2,r2,0x10
 
  8013eb30: 00021400 sll r2,r2,0x10
 
  8013eb34: 00022403 sra r4,r2,0x10
 
  8013eb34: 00022403 sra r4,r2,0x10
  8013eb38: 10940091 beq r4,r20,0x8013ed80
+
  8013eb38: 10940091 beq r4,r20,0x8013ed80           #              if (miscID != 0x07d0) {
 
  8013eb3c: 00000000 nop
 
  8013eb3c: 00000000 nop
  8013eb40: 0c01e9ee jal 0x8007a7b8
+
  8013eb40: 0c01e9ee jal 0x8007a7b8                   #                  [[? 0x7a7b8]] (miscID);
 
  8013eb44: 00000000 nop
 
  8013eb44: 00000000 nop
 
  8013eb48: 0804fb60 j 0x8013ed80
 
  8013eb48: 0804fb60 j 0x8013ed80
  8013eb4c: 00000000 nop
+
  8013eb4c: 00000000 nop                             #              }
  8013eb50: 1462000c bne r3,r2,0x8013eb84
+
  8013eb50: 1462000c bne r3,r2,0x8013eb84             #          } else if (eventInstructionID == EVENT_INSTRUCTION_ERASE) {
 
  8013eb54: 34020044 ori r2,r0,0x0044
 
  8013eb54: 34020044 ori r2,r0,0x0044
 
  8013eb58: 00112400 sll r4,r17,0x10
 
  8013eb58: 00112400 sll r4,r17,0x10
  8013eb5c: 0c04cc56 jal 0x80133158
+
  8013eb5c: 0c04cc56 jal 0x80133158                   #              miscID = [[Get misc ID]] (halfwordParam1);
 
  8013eb60: 00042403 sra r4,r4,0x10
 
  8013eb60: 00042403 sra r4,r4,0x10
 
  8013eb64: 00021400 sll r2,r2,0x10
 
  8013eb64: 00021400 sll r2,r2,0x10
 
  8013eb68: 00022403 sra r4,r2,0x10
 
  8013eb68: 00022403 sra r4,r2,0x10
  8013eb6c: 10940084 beq r4,r20,0x8013ed80
+
  8013eb6c: 10940084 beq r4,r20,0x8013ed80           #              if (miscID != 0x07d0) {   
 
  8013eb70: 00000000 nop
 
  8013eb70: 00000000 nop
  8013eb74: 0c023463 jal 0x8008d18c
+
  8013eb74: 0c023463 jal 0x8008d18c                   #                  [[? 0x8d18c]] (miscID);
 
  8013eb78: 00000000 nop
 
  8013eb78: 00000000 nop
 
  8013eb7c: 0804fb60 j 0x8013ed80
 
  8013eb7c: 0804fb60 j 0x8013ed80
  8013eb80: 00000000 nop
+
  8013eb80: 00000000 nop                             #              }
  8013eb84: 1462000c bne r3,r2,0x8013ebb8
+
  8013eb84: 1462000c bne r3,r2,0x8013ebb8             #          } else if (eventInstructionID == EVENT_INSTRUCTION_DRAW) {
 
  8013eb88: 34020012 ori r2,r0,0x0012
 
  8013eb88: 34020012 ori r2,r0,0x0012
 
  8013eb8c: 00112400 sll r4,r17,0x10
 
  8013eb8c: 00112400 sll r4,r17,0x10
  8013eb90: 0c04cc56 jal 0x80133158
+
  8013eb90: 0c04cc56 jal 0x80133158                   #              miscID = [[Get misc ID]] (halfwordParam1);
 
  8013eb94: 00042403 sra r4,r4,0x10
 
  8013eb94: 00042403 sra r4,r4,0x10
 
  8013eb98: 00021400 sll r2,r2,0x10
 
  8013eb98: 00021400 sll r2,r2,0x10
 
  8013eb9c: 00022403 sra r4,r2,0x10
 
  8013eb9c: 00022403 sra r4,r2,0x10
  8013eba0: 10940077 beq r4,r20,0x8013ed80
+
  8013eba0: 10940077 beq r4,r20,0x8013ed80           #              if (miscID != 0x07d0) {
 
  8013eba4: 00000000 nop
 
  8013eba4: 00000000 nop
  8013eba8: 0c02344e jal 0x8008d138
+
  8013eba8: 0c02344e jal 0x8008d138                   #                  [[? 0x8d138]] (miscID);
 
  8013ebac: 00000000 nop
 
  8013ebac: 00000000 nop
 
  8013ebb0: 0804fb60 j 0x8013ed80
 
  8013ebb0: 0804fb60 j 0x8013ed80
  8013ebb4: 00000000 nop
+
  8013ebb4: 00000000 nop                             #              }
  8013ebb8: 1462000c bne r3,r2,0x8013ebec
+
  8013ebb8: 1462000c bne r3,r2,0x8013ebec             #          } else if (eventInstructionID == 0x12) {        // Unknown
 
  8013ebbc: 340200f1 ori r2,r0,0x00f1
 
  8013ebbc: 340200f1 ori r2,r0,0x00f1
 
  8013ebc0: 00112400 sll r4,r17,0x10
 
  8013ebc0: 00112400 sll r4,r17,0x10
  8013ebc4: 0c04cc56 jal 0x80133158
+
  8013ebc4: 0c04cc56 jal 0x80133158                   #              miscID = [[Get misc ID]] (halfwordParam1);
 
  8013ebc8: 00042403 sra r4,r4,0x10
 
  8013ebc8: 00042403 sra r4,r4,0x10
 
  8013ebcc: 00021400 sll r2,r2,0x10
 
  8013ebcc: 00021400 sll r2,r2,0x10
 
  8013ebd0: 00022403 sra r4,r2,0x10
 
  8013ebd0: 00022403 sra r4,r2,0x10
  8013ebd4: 1094006a beq r4,r20,0x8013ed80
+
  8013ebd4: 1094006a beq r4,r20,0x8013ed80           #              if (miscID != 0x07d0) {
 
  8013ebd8: 00000000 nop
 
  8013ebd8: 00000000 nop
  8013ebdc: 0c052936 jal 0x8014a4d8
+
  8013ebdc: 0c052936 jal 0x8014a4d8                   #                  [[? 0x14a4d8]] (miscID);
 
  8013ebe0: 00000000 nop
 
  8013ebe0: 00000000 nop
 
  8013ebe4: 0804fb60 j 0x8013ed80
 
  8013ebe4: 0804fb60 j 0x8013ed80
  8013ebe8: 00000000 nop
+
  8013ebe8: 00000000 nop                             #              }
  8013ebec: 14620008 bne r3,r2,0x8013ec10
+
  8013ebec: 14620008 bne r3,r2,0x8013ec10             #          } else if (eventInstructionID == EVENT_INSTRUCTION_WAIT) {
 
  8013ebf0: 3402002d ori r2,r0,0x002d
 
  8013ebf0: 3402002d ori r2,r0,0x002d
  8013ebf4: 0c05181e jal 0x80146078
+
  8013ebf4: 0c05181e jal 0x80146078                   #              waitAmount = [[Load Halfword]] (eventInstructionParamsPtr);
 
  8013ebf8: 26440001 addiu r4,r18,0x0001
 
  8013ebf8: 26440001 addiu r4,r18,0x0001
 
  8013ebfc: 00021400 sll r2,r2,0x10
 
  8013ebfc: 00021400 sll r2,r2,0x10
  8013ec00: 0c053216 jal 0x8014c858
+
  8013ec00: 0c053216 jal 0x8014c858                   #              [[Wait]] (waitAmount);
 
  8013ec04: 00022403 sra r4,r2,0x10
 
  8013ec04: 00022403 sra r4,r2,0x10
 
  8013ec08: 0804fb60 j 0x8013ed80
 
  8013ec08: 0804fb60 j 0x8013ed80
 
  8013ec0c: 00000000 nop
 
  8013ec0c: 00000000 nop
  8013ec10: 14620005 bne r3,r2,0x8013ec28
+
  8013ec10: 14620005 bne r3,r2,0x8013ec28             #          } else if (eventInstructionID == EVENT_INSTRUCTION_ROTATE_UNIT) {
 
  8013ec14: 34020053 ori r2,r0,0x0053
 
  8013ec14: 34020053 ori r2,r0,0x0053
  8013ec18: 0c0520a1 jal 0x80148284
+
  8013ec18: 0c0520a1 jal 0x80148284                   #              [[? 0x148284]] (eventInstructionParamsPtr);
 
  8013ec1c: 26440001 addiu r4,r18,0x0001
 
  8013ec1c: 26440001 addiu r4,r18,0x0001
 
  8013ec20: 0804fb60 j 0x8013ed80
 
  8013ec20: 0804fb60 j 0x8013ed80
 
  8013ec24: 00000000 nop
 
  8013ec24: 00000000 nop
  8013ec28: 14620006 bne r3,r2,0x8013ec44
+
  8013ec28: 14620006 bne r3,r2,0x8013ec44             #          } else if (eventInstructionID == EVENT_INSTRUCTION_FACE_UNIT) {
 
  8013ec2c: 3413003b ori r19,r0,0x003b
 
  8013ec2c: 3413003b ori r19,r0,0x003b
 
  8013ec30: 26440001 addiu r4,r18,0x0001
 
  8013ec30: 26440001 addiu r4,r18,0x0001
  8013ec34: 0c052021 jal 0x80148084
+
  8013ec34: 0c052021 jal 0x80148084                   #              [[? 0x148084]] (eventInstructionParamsPtr, 1);
 
  8013ec38: 34050001 ori r5,r0,0x0001
 
  8013ec38: 34050001 ori r5,r0,0x0001
 
  8013ec3c: 0804fb60 j 0x8013ed80
 
  8013ec3c: 0804fb60 j 0x8013ed80
 
  8013ec40: 00000000 nop
 
  8013ec40: 00000000 nop
  8013ec44: 10730003 beq r3,r19,0x8013ec54
+
  8013ec44: 10730003 beq r3,r19,0x8013ec54           #          } else if ((eventInstructionID == EVENT_INSTRUCTION_SPRITE_MOVE)
 
  8013ec48: 3402006e ori r2,r0,0x006e
 
  8013ec48: 3402006e ori r2,r0,0x006e
  8013ec4c: 14620020 bne r3,r2,0x8013ecd0
+
  8013ec4c: 14620020 bne r3,r2,0x8013ecd0             #              or (eventInstructionID == EVENT_INSTRUCTION_SPRITE_MOVE_BETA)) {
 
  8013ec50: 3402006f ori r2,r0,0x006f
 
  8013ec50: 3402006f ori r2,r0,0x006f
  8013ec54: 0c052712 jal 0x80149c48
+
  8013ec54: 0c052712 jal 0x80149c48                   #              threadID = [[? 0x149c48]] (16);
 
  8013ec58: 34040010 ori r4,r0,0x0010
 
  8013ec58: 34040010 ori r4,r0,0x0010
  8013ec5c: 92430000 lbu r3,0x0000(r18)
+
  8013ec5c: 92430000 lbu r3,0x0000(r18)               #              eventInstructionID
 
  8013ec60: 00000000 nop
 
  8013ec60: 00000000 nop
  8013ec64: 14730005 bne r3,r19,0x8013ec7c
+
  8013ec64: 14730005 bne r3,r19,0x8013ec7c          
  8013ec68: 00408021 addu r16,r2,r0
+
  8013ec68: 00408021 addu r16,r2,r0                   #              result_0x149c48
 +
                                                    #              if (eventInstructionID == 0x3b) {
 
  8013ec6c: 3c058014 lui r5,0x8014
 
  8013ec6c: 3c058014 lui r5,0x8014
  8013ec70: 24a56ee4 addiu r5,r5,0x6ee4
+
  8013ec70: 24a56ee4 addiu r5,r5,0x6ee4               #                  funcPtr = 0x80146ee4
 
  8013ec74: 0804fb22 j 0x8013ec88
 
  8013ec74: 0804fb22 j 0x8013ec88
  8013ec78: 02002021 addu r4,r16,r0
+
  8013ec78: 02002021 addu r4,r16,r0                   #              } else {
 
  8013ec7c: 02002021 addu r4,r16,r0
 
  8013ec7c: 02002021 addu r4,r16,r0
 
  8013ec80: 3c058014 lui r5,0x8014
 
  8013ec80: 3c058014 lui r5,0x8014
  8013ec84: 24a56f20 addiu r5,r5,0x6f20
+
  8013ec84: 24a56f20 addiu r5,r5,0x6f20               #                  funcPtr = 0x80146f20
  8013ec88: 0c053228 jal 0x8014c8a0
+
                                                    #              }
  8013ec8c: 00108280 sll r16,r16,0x0a
+
  8013ec88: 0c053228 jal 0x8014c8a0                   #              [[Initialize Thread]] (threadID, funcPtr);
  8013ec90: 00112400 sll r4,r17,0x10
+
  8013ec8c: 00108280 sll r16,r16,0x0a                 #              threadID * sizeof(thread)
  8013ec94: 26420001 addiu r2,r18,0x0001
+
  8013ec90: 00112400 sll r4,r17,0x10                
 +
  8013ec94: 26420001 addiu r2,r18,0x0001             #              eventInstructionParamsPtr
 
  8013ec98: 3c018017 lui r1,0x8017
 
  8013ec98: 3c018017 lui r1,0x8017
 
  8013ec9c: 00300821 addu r1,r1,r16
 
  8013ec9c: 00300821 addu r1,r1,r16
  8013eca0: ac22986c sw r2,-0x6794(r1)
+
  8013eca0: ac22986c sw r2,-0x6794(r1)               #              threads[threadID].FunctionParameter1 = eventInstructionParamsPtr
 
  8013eca4: 3402000b ori r2,r0,0x000b
 
  8013eca4: 3402000b ori r2,r0,0x000b
 
  8013eca8: 3c018017 lui r1,0x8017
 
  8013eca8: 3c018017 lui r1,0x8017
 
  8013ecac: 00300821 addu r1,r1,r16
 
  8013ecac: 00300821 addu r1,r1,r16
  8013ecb0: ac2298b8 sw r2,-0x6748(r1)
+
  8013ecb0: ac2298b8 sw r2,-0x6748(r1)               #              threads[threadID].TaskID = 11
  8013ecb4: 0c04cc56 jal 0x80133158
+
  8013ecb4: 0c04cc56 jal 0x80133158                   #              miscID = [[Get misc ID]] (halfwordParam1);
 
  8013ecb8: 00042403 sra r4,r4,0x10
 
  8013ecb8: 00042403 sra r4,r4,0x10
 
  8013ecbc: 3c018017 lui r1,0x8017
 
  8013ecbc: 3c018017 lui r1,0x8017
 
  8013ecc0: 00300821 addu r1,r1,r16
 
  8013ecc0: 00300821 addu r1,r1,r16
  8013ecc4: ac2298bc sw r2,-0x6744(r1)
+
  8013ecc4: ac2298bc sw r2,-0x6744(r1)               #              threads[threadID].0x50 = miscID
 
  8013ecc8: 0804fb60 j 0x8013ed80
 
  8013ecc8: 0804fb60 j 0x8013ed80
 
  8013eccc: 00000000 nop
 
  8013eccc: 00000000 nop
  8013ecd0: 92430000 lbu r3,0x0000(r18)
+
  8013ecd0: 92430000 lbu r3,0x0000(r18)              
 
  8013ecd4: 00000000 nop
 
  8013ecd4: 00000000 nop
  8013ecd8: 14620006 bne r3,r2,0x8013ecf4
+
  8013ecd8: 14620006 bne r3,r2,0x8013ecf4             #          } else if (eventInstructionID == EVENT_INSTRUCTION_WAIT_SPRITE_MOVE) {
 
  8013ecdc: 34020064 ori r2,r0,0x0064
 
  8013ecdc: 34020064 ori r2,r0,0x0064
 
  8013ece0: 00112400 sll r4,r17,0x10
 
  8013ece0: 00112400 sll r4,r17,0x10
  8013ece4: 0c051bd7 jal 0x80146f5c
+
  8013ece4: 0c051bd7 jal 0x80146f5c                   #              [[? 0x146f5c]] (halfwordParam1);
 
  8013ece8: 00042403 sra r4,r4,0x10
 
  8013ece8: 00042403 sra r4,r4,0x10
 
  8013ecec: 0804fb60 j 0x8013ed80
 
  8013ecec: 0804fb60 j 0x8013ed80
 
  8013ecf0: 00000000 nop
 
  8013ecf0: 00000000 nop
  8013ecf4: 14620006 bne r3,r2,0x8013ed10
+
  8013ecf4: 14620006 bne r3,r2,0x8013ed10             #          } else if (eventInstructionID == EVENT_INSTRUCTION_WAIT_ROTATE_UNIT) {         
 
  8013ecf8: 34020065 ori r2,r0,0x0065
 
  8013ecf8: 34020065 ori r2,r0,0x0065
  8013ecfc: 92440001 lbu r4,0x0001(r18)
+
  8013ecfc: 92440001 lbu r4,0x0001(r18)               #              unitID
  8013ed00: 0c05263f jal 0x801498fc
+
  8013ed00: 0c05263f jal 0x801498fc                   #              [[? 0x1498fc]] (unitID);
 
  8013ed04: 00000000 nop
 
  8013ed04: 00000000 nop
 
  8013ed08: 0804fb60 j 0x8013ed80
 
  8013ed08: 0804fb60 j 0x8013ed80
 
  8013ed0c: 00000000 nop
 
  8013ed0c: 00000000 nop
  8013ed10: 14620005 bne r3,r2,0x8013ed28
+
  8013ed10: 14620005 bne r3,r2,0x8013ed28             #          } else if (eventInstructionID == EVENT_INSTRUCTION_WAIT_ROTATE_ALL) {
 
  8013ed14: 3402008c ori r2,r0,0x008c
 
  8013ed14: 3402008c ori r2,r0,0x008c
  8013ed18: 0c05263f jal 0x801498fc
+
  8013ed18: 0c05263f jal 0x801498fc                   #              [[? 0x1498fc]] (-1);
 
  8013ed1c: 2404ffff addiu r4,r0,-0x0001
 
  8013ed1c: 2404ffff addiu r4,r0,-0x0001
 
  8013ed20: 0804fb60 j 0x8013ed80
 
  8013ed20: 0804fb60 j 0x8013ed80
 
  8013ed24: 00000000 nop
 
  8013ed24: 00000000 nop
  8013ed28: 14620005 bne r3,r2,0x8013ed40
+
  8013ed28: 14620005 bne r3,r2,0x8013ed40             #          } else if (eventInstructionID == EVENT_INSTRUCTION_UNIT_ANIM_ROTATE) {
 
  8013ed2c: 34020032 ori r2,r0,0x0032
 
  8013ed2c: 34020032 ori r2,r0,0x0032
  8013ed30: 0c051feb jal 0x80147fac
+
  8013ed30: 0c051feb jal 0x80147fac                   #              [[? 0x147fac]] (eventInstructionParamsPtr);
 
  8013ed34: 26440001 addiu r4,r18,0x0001
 
  8013ed34: 26440001 addiu r4,r18,0x0001
 
  8013ed38: 0804fb60 j 0x8013ed80
 
  8013ed38: 0804fb60 j 0x8013ed80
 
  8013ed3c: 00000000 nop
 
  8013ed3c: 00000000 nop
  8013ed40: 1462000f bne r3,r2,0x8013ed80
+
  8013ed40: 1462000f bne r3,r2,0x8013ed80             #          } else if (eventInstructionID == EVENT_INSTRUCTION_COLOR_UNIT) {
 
  8013ed44: 00112400 sll r4,r17,0x10
 
  8013ed44: 00112400 sll r4,r17,0x10
  8013ed48: 0c04cc56 jal 0x80133158
+
  8013ed48: 0c04cc56 jal 0x80133158                   #              miscID = [[Get misc ID]] (halfwordParam1);
 
  8013ed4c: 00042403 sra r4,r4,0x10
 
  8013ed4c: 00042403 sra r4,r4,0x10
 
  8013ed50: 00021400 sll r2,r2,0x10
 
  8013ed50: 00021400 sll r2,r2,0x10
 
  8013ed54: 00023403 sra r6,r2,0x10
 
  8013ed54: 00023403 sra r6,r2,0x10
  8013ed58: 10d40009 beq r6,r20,0x8013ed80
+
  8013ed58: 10d40009 beq r6,r20,0x8013ed80           #              if (miscID != 0x07d0) {
 
  8013ed5c: 00000000 nop
 
  8013ed5c: 00000000 nop
  8013ed60: 82420005 lb r2,0x0005(r18)
+
  8013ed60: 82420005 lb r2,0x0005(r18)               #                  greenValue
  8013ed64: 92440003 lbu r4,0x0003(r18)
+
  8013ed64: 92440003 lbu r4,0x0003(r18)               #                  presetColor
  8013ed68: 92450007 lbu r5,0x0007(r18)
+
  8013ed68: 92450007 lbu r5,0x0007(r18)               #                  time
  8013ed6c: 82470004 lb r7,0x0004(r18)
+
  8013ed6c: 82470004 lb r7,0x0004(r18)               #                  redValue
  8013ed70: afa20010 sw r2,0x0010(r29)
+
  8013ed70: afa20010 sw r2,0x0010(r29)               #                  greenValue
  8013ed74: 82420006 lb r2,0x0006(r18)
+
  8013ed74: 82420006 lb r2,0x0006(r18)               #                  blueValue
  8013ed78: 0c024cf1 jal 0x800933c4
+
  8013ed78: 0c024cf1 jal 0x800933c4                                       [[? 0x933c4]] (presetColor, time, miscID, redValue, greenValue, blueValue);
  8013ed7c: afa20014 sw r2,0x0014(r29)
+
  8013ed7c: afa20014 sw r2,0x0014(r29)               #                  blueValue
  8013ed80: 92420000 lbu r2,0x0000(r18)
+
                                                    #              }
 +
                                                    #          }
 +
  8013ed80: 92420000 lbu r2,0x0000(r18)               #          eventInstructionID
 
  8013ed84: 3c018015 lui r1,0x8015
 
  8013ed84: 3c018015 lui r1,0x8015
 
  8013ed88: 00220821 addu r1,r1,r2
 
  8013ed88: 00220821 addu r1,r1,r2
  8013ed8c: 9022d170 lbu r2,-0x2e90(r1)
+
  8013ed8c: 9022d170 lbu r2,-0x2e90(r1)               #          eventParameterLengthArray[eventInstructionID]
 
  8013ed90: 00000000 nop
 
  8013ed90: 00000000 nop
  8013ed94: 24420001 addiu r2,r2,0x0001
+
  8013ed94: 24420001 addiu r2,r2,0x0001               #          eventInstructionSize = eventParameterLengthArray[eventInstructionID] + 1
  8013ed98: 02429021 addu r18,r18,r2
+
  8013ed98: 02429021 addu r18,r18,r2                 #          eventInstructionPtr = eventInstructionPtr + eventInstructionSize    // Go to next instruction
  8013ed9c: 92430000 lbu r3,0x0000(r18)
+
  8013ed9c: 92430000 lbu r3,0x0000(r18)               #          eventInstructionID
 
  8013eda0: 3402002b ori r2,r0,0x002b
 
  8013eda0: 3402002b ori r2,r0,0x002b
 
  8013eda4: 1462feed bne r3,r2,0x8013e95c
 
  8013eda4: 1462feed bne r3,r2,0x8013e95c
  8013eda8: 26500001 addiu r16,r18,0x0001
+
  8013eda8: 26500001 addiu r16,r18,0x0001             #          eventInstructionParamsPtr = eventInstructionPtr + 1
  8013edac: 0c053256 jal 0x8014c958
+
                                                    #      } while (eventInstructionID != EVENT_INSTRUCTION_BLOCK_END);
 +
                                                    #  }
 +
  8013edac: 0c053256 jal 0x8014c958                   #  [[Stop Current Thread]] ();
 
  8013edb0: 00000000 nop
 
  8013edb0: 00000000 nop
 
  8013edb4: 8fbf0054 lw r31,0x0054(r29)
 
  8013edb4: 8fbf0054 lw r31,0x0054(r29)

Latest revision as of 20:19, 25 April 2018

#   ROUTINE: BlockStart event instruction

8013e904: 27bdffa8 addiu r29,r29,-0x0058
8013e908: 3c028017 lui r2,0x8017
8013e90c: 8c424038 lw r2,0x4038(r2)                 #   threadID
8013e910: 34030008 ori r3,r0,0x0008                 #   8
8013e914: afbf0054 sw r31,0x0054(r29)
8013e918: afb40050 sw r20,0x0050(r29)
8013e91c: afb3004c sw r19,0x004c(r29)
8013e920: afb20048 sw r18,0x0048(r29)
8013e924: afb10044 sw r17,0x0044(r29)
8013e928: afb00040 sw r16,0x0040(r29)
8013e92c: 00021280 sll r2,r2,0x0a                   #   threadID * sizeof(thread)
8013e930: 3c018017 lui r1,0x8017
8013e934: 00220821 addu r1,r1,r2
8013e938: ac2398b8 sw r3,-0x6748(r1)                #   thread.TaskID = 8
8013e93c: 0c0532f0 jal 0x8014cbc0                   #   eventInstructionPtr = Get First Thread Parameter ();
8013e940: 00000000 nop
8013e944: 00409021 addu r18,r2,r0                   #   eventInstructionPtr
8013e948: 92430000 lbu r3,0x0000(r18)               #   eventInstructionID = *eventInstructionPtr
8013e94c: 3402002b ori r2,r0,0x002b                 #   EVENT_INSTRUCTION_BLOCK_END
8013e950: 10620116 beq r3,r2,0x8013edac             #   if (eventInstructionID != EVENT_INSTRUCTION_BLOCK_END) {
8013e954: 26500001 addiu r16,r18,0x0001             #       eventInstructionParamsPtr = eventInstructionPtr + 1
8013e958: 341407d0 ori r20,r0,0x07d0                #       0x07d0
                                                    #       do {
8013e95c: 0c05181e jal 0x80146078                   #           halfwordParam1 = Load Halfword (eventInstructionParamsPtr);
8013e960: 02002021 addu r4,r16,r0
8013e964: 00408821 addu r17,r2,r0                   #           halfwordParam1
8013e968: 92430000 lbu r3,0x0000(r18)               #           eventInstructionID
8013e96c: 34020043 ori r2,r0,0x0043                 
8013e970: 14620010 bne r3,r2,0x8013e9b4             #           if (eventInstructionID == EVENT_INSTRUCTION_CALL_FUNCTION) {
8013e974: 34020021 ori r2,r0,0x0021
8013e978: 92430001 lbu r3,0x0001(r18)               #               functionID
8013e97c: 34020009 ori r2,r0,0x0009
8013e980: 14620006 bne r3,r2,0x8013e99c             #               if (functionID == 9) {
8013e984: 3402000a ori r2,r0,0x000a
8013e988: 34040053 ori r4,r0,0x0053
8013e98c: 0c04ed91 jal 0x8013b644                   #                   Set Script Variable (0x53, 1);
8013e990: 34050001 ori r5,r0,0x0001
8013e994: 0804fb60 j 0x8013ed80
8013e998: 00000000 nop                              
8013e99c: 146200f8 bne r3,r2,0x8013ed80             #               } else if (functionID == 10) {
8013e9a0: 34040053 ori r4,r0,0x0053
8013e9a4: 0c04ed91 jal 0x8013b644                   #                   Set Script Variable (0x53, 0);
8013e9a8: 00002821 addu r5,r0,r0
8013e9ac: 0804fb60 j 0x8013ed80
8013e9b0: 00000000 nop                              #               }
8013e9b4: 14620007 bne r3,r2,0x8013e9d4             #           } else if (eventInstructionID == EVENT_INSTRUCTION_SOUND) {
8013e9b8: 3402005f ori r2,r0,0x005f
8013e9bc: 00111400 sll r2,r17,0x10
8013e9c0: 00021403 sra r2,r2,0x10
8013e9c4: 3c018016 lui r1,0x8016
8013e9c8: ac225fb4 sw r2,0x5fb4(r1)                 #               *0x80165fb4 = soundID
8013e9cc: 0804fb60 j 0x8013ed80
8013e9d0: 00000000 nop
8013e9d4: 14620005 bne r3,r2,0x8013e9ec             #           } else if (eventInstructionID == EVENT_INSTRUCTION_WARP_UNIT) {
8013e9d8: 3402007e ori r2,r0,0x007e
8013e9dc: 0c051f98 jal 0x80147e60                   #               Warp Unit (eventInstructionParamsPtr);
8013e9e0: 02002021 addu r4,r16,r0
8013e9e4: 0804fb60 j 0x8013ed80
8013e9e8: 00000000 nop
8013e9ec: 14620005 bne r3,r2,0x8013ea04             #           } else if (eventInstructionID == EVENT_INSTRUCTION_WAIT_VALUE) {
8013e9f0: 34020072 ori r2,r0,0x0072
8013e9f4: 0c0528fe jal 0x8014a3f8                   #               ? 0x14a3f8 (eventInstructionParamsPtr);
8013e9f8: 02002021 addu r4,r16,r0
8013e9fc: 0804fb60 j 0x8013ed80
8013ea00: 00000000 nop
8013ea04: 14620005 bne r3,r2,0x8013ea1c             #           } else if (eventInstructionID == 0x72) {        // Never used
8013ea08: 34020028 ori r2,r0,0x0028
8013ea0c: 0c04f961 jal 0x8013e584                   #               ? 0x13e584 ();
8013ea10: 00000000 nop
8013ea14: 0804fb60 j 0x8013ed80
8013ea18: 00000000 nop
8013ea1c: 14620009 bne r3,r2,0x8013ea44             #           } else if (eventInstructionID == EVENT_INSTRUCTION_WALK_TO) {
8013ea20: 34020079 ori r2,r0,0x0079
8013ea24: 3c028014 lui r2,0x8014
8013ea28: 2442e5c0 addiu r2,r2,-0x1a40              #               0x8013e5c0
8013ea2c: 3c018017 lui r1,0x8017
8013ea30: ac223ca8 sw r2,0x3ca8(r1)                 #               Routine to call: 0x8013e5c0
8013ea34: 0c0533ad jal 0x8014ceb4                   #               Call Inner Subroutine (eventInstructionParamsPtr);  // Called on main thread
8013ea38: 02002021 addu r4,r16,r0
8013ea3c: 0804fb60 j 0x8013ed80
8013ea40: 00000000 nop
8013ea44: 14620014 bne r3,r2,0x8013ea98             #           } else if (eventInstructionID == EVENT_INSTRUCTION_WALK_TO_ANIM) {
8013ea48: 34020070 ori r2,r0,0x0070
8013ea4c: 00112400 sll r4,r17,0x10
8013ea50: 0c04cc56 jal 0x80133158                   #               miscID = Get misc ID (halfwordParam1);
8013ea54: 00042403 sra r4,r4,0x10
8013ea58: 00021400 sll r2,r2,0x10
8013ea5c: 00028403 sra r16,r2,0x10                  #               miscID
8013ea60: 12140008 beq r16,r20,0x8013ea84           #               if (miscID != 0x07d0) {
8013ea64: 00101040 sll r2,r16,0x01                    
8013ea68: 0c05181e jal 0x80146078                   #                   animationID = Load Halfword (eventInstructionPtr + 3);
8013ea6c: 26440003 addiu r4,r18,0x0003
8013ea70: 00101840 sll r3,r16,0x01
8013ea74: 3c018017 lui r1,0x8017
8013ea78: 00230821 addu r1,r1,r3
8013ea7c: a422da6c sh r2,-0x2594(r1)                #                   *(0x8016da6c + (miscID * 2)) = animationID
8013ea80: 00101040 sll r2,r16,0x01                  #               }
8013ea84: 3c018017 lui r1,0x8017
8013ea88: 00220821 addu r1,r1,r2
8013ea8c: a420da98 sh r0,-0x2568(r1)                #               *(0x8016da98 + (miscID * 2)) = 0
8013ea90: 0804fb60 j 0x8013ed80
8013ea94: 00000000 nop
8013ea98: 14620005 bne r3,r2,0x8013eab0             #           } else if (eventInstructionID == EVENT_INSTRUCTION_JUMP) {
8013ea9c: 34020029 ori r2,r0,0x0029
8013eaa0: 0c04f9c2 jal 0x8013e708                   #               ? 0x13e708 (eventInstructionParamsPtr);
8013eaa4: 02002021 addu r4,r16,r0
8013eaa8: 0804fb60 j 0x8013ed80
8013eaac: 00000000 nop
8013eab0: 14620006 bne r3,r2,0x8013eacc             #           } else if (eventInstructionID == EVENT_INSTRUCTION_WAIT_WALK) {
8013eab4: 34020011 ori r2,r0,0x0011
8013eab8: 00112400 sll r4,r17,0x10
8013eabc: 0c04f9f4 jal 0x8013e7d0                   #               ? 0x13e7d0 (halfwordParam1);
8013eac0: 00042403 sra r4,r4,0x10
8013eac4: 0804fb60 j 0x8013ed80
8013eac8: 00000000 nop
8013eacc: 14620005 bne r3,r2,0x8013eae4             #           } else if (eventInstructionID == EVENT_INSTRUCTION_UNIT_ANIM) {
8013ead0: 34020068 ori r2,r0,0x0068
8013ead4: 0c0524e6 jal 0x80149398                   #               Unit Anim (eventInstructionParamsPtr);
8013ead8: 02002021 addu r4,r16,r0
8013eadc: 0804fb60 j 0x8013ed80
8013eae0: 00000000 nop
8013eae4: 92430000 lbu r3,0x0000(r18)
8013eae8: 00000000 nop
8013eaec: 14620005 bne r3,r2,0x8013eb04             #           } else if (eventInstructionID == EVENT_INSTRUCTION_MIRROR_SPRITE) {
8013eaf0: 34020097 ori r2,r0,0x0097
8013eaf4: 0c04f997 jal 0x8013e65c
8013eaf8: 26440001 addiu r4,r18,0x0001              #               ? 0x13e65c (eventInstructionParamsPtr);
8013eafc: 0804fb60 j 0x8013ed80
8013eb00: 00000000 nop
8013eb04: 14620005 bne r3,r2,0x8013eb1c             #           } else if (eventInstructionID == EVENT_INSTRUCTION_RESET_PALETTE) {
8013eb08: 34020071 ori r2,r0,0x0071
8013eb0c: 0c04f9b1 jal 0x8013e6c4                   #               ? 0x13e6c4 (eventInstructionParamsPtr);         
8013eb10: 26440001 addiu r4,r18,0x0001
8013eb14: 0804fb60 j 0x8013ed80
8013eb18: 00000000 nop
8013eb1c: 1462000c bne r3,r2,0x8013eb50             #           } else if (eventInstructionID == 0x71) {        // Unknown
8013eb20: 34020046 ori r2,r0,0x0046
8013eb24: 00112400 sll r4,r17,0x10
8013eb28: 0c04cc56 jal 0x80133158                   #               miscID = Get misc ID (halfwordParam1);
8013eb2c: 00042403 sra r4,r4,0x10
8013eb30: 00021400 sll r2,r2,0x10
8013eb34: 00022403 sra r4,r2,0x10
8013eb38: 10940091 beq r4,r20,0x8013ed80            #               if (miscID != 0x07d0) {
8013eb3c: 00000000 nop
8013eb40: 0c01e9ee jal 0x8007a7b8                   #                   ? 0x7a7b8 (miscID);
8013eb44: 00000000 nop
8013eb48: 0804fb60 j 0x8013ed80
8013eb4c: 00000000 nop                              #               }
8013eb50: 1462000c bne r3,r2,0x8013eb84             #           } else if (eventInstructionID == EVENT_INSTRUCTION_ERASE) {
8013eb54: 34020044 ori r2,r0,0x0044
8013eb58: 00112400 sll r4,r17,0x10
8013eb5c: 0c04cc56 jal 0x80133158                   #               miscID = Get misc ID (halfwordParam1);
8013eb60: 00042403 sra r4,r4,0x10
8013eb64: 00021400 sll r2,r2,0x10
8013eb68: 00022403 sra r4,r2,0x10
8013eb6c: 10940084 beq r4,r20,0x8013ed80            #               if (miscID != 0x07d0) {     
8013eb70: 00000000 nop
8013eb74: 0c023463 jal 0x8008d18c                   #                   ? 0x8d18c (miscID);
8013eb78: 00000000 nop
8013eb7c: 0804fb60 j 0x8013ed80
8013eb80: 00000000 nop                              #               }
8013eb84: 1462000c bne r3,r2,0x8013ebb8             #           } else if (eventInstructionID == EVENT_INSTRUCTION_DRAW) {
8013eb88: 34020012 ori r2,r0,0x0012
8013eb8c: 00112400 sll r4,r17,0x10
8013eb90: 0c04cc56 jal 0x80133158                   #               miscID = Get misc ID (halfwordParam1);
8013eb94: 00042403 sra r4,r4,0x10
8013eb98: 00021400 sll r2,r2,0x10
8013eb9c: 00022403 sra r4,r2,0x10
8013eba0: 10940077 beq r4,r20,0x8013ed80            #               if (miscID != 0x07d0) {
8013eba4: 00000000 nop
8013eba8: 0c02344e jal 0x8008d138                   #                   ? 0x8d138 (miscID);
8013ebac: 00000000 nop
8013ebb0: 0804fb60 j 0x8013ed80
8013ebb4: 00000000 nop                              #               }
8013ebb8: 1462000c bne r3,r2,0x8013ebec             #           } else if (eventInstructionID == 0x12) {        // Unknown
8013ebbc: 340200f1 ori r2,r0,0x00f1
8013ebc0: 00112400 sll r4,r17,0x10
8013ebc4: 0c04cc56 jal 0x80133158                   #               miscID = Get misc ID (halfwordParam1);
8013ebc8: 00042403 sra r4,r4,0x10
8013ebcc: 00021400 sll r2,r2,0x10
8013ebd0: 00022403 sra r4,r2,0x10
8013ebd4: 1094006a beq r4,r20,0x8013ed80            #               if (miscID != 0x07d0) {
8013ebd8: 00000000 nop
8013ebdc: 0c052936 jal 0x8014a4d8                   #                   ? 0x14a4d8 (miscID);
8013ebe0: 00000000 nop
8013ebe4: 0804fb60 j 0x8013ed80
8013ebe8: 00000000 nop                              #               }
8013ebec: 14620008 bne r3,r2,0x8013ec10             #           } else if (eventInstructionID == EVENT_INSTRUCTION_WAIT) {
8013ebf0: 3402002d ori r2,r0,0x002d
8013ebf4: 0c05181e jal 0x80146078                   #               waitAmount = Load Halfword (eventInstructionParamsPtr);
8013ebf8: 26440001 addiu r4,r18,0x0001
8013ebfc: 00021400 sll r2,r2,0x10
8013ec00: 0c053216 jal 0x8014c858                   #               Wait (waitAmount);
8013ec04: 00022403 sra r4,r2,0x10
8013ec08: 0804fb60 j 0x8013ed80
8013ec0c: 00000000 nop
8013ec10: 14620005 bne r3,r2,0x8013ec28             #           } else if (eventInstructionID == EVENT_INSTRUCTION_ROTATE_UNIT) {
8013ec14: 34020053 ori r2,r0,0x0053
8013ec18: 0c0520a1 jal 0x80148284                   #               ? 0x148284 (eventInstructionParamsPtr);
8013ec1c: 26440001 addiu r4,r18,0x0001
8013ec20: 0804fb60 j 0x8013ed80
8013ec24: 00000000 nop
8013ec28: 14620006 bne r3,r2,0x8013ec44             #           } else if (eventInstructionID == EVENT_INSTRUCTION_FACE_UNIT) {
8013ec2c: 3413003b ori r19,r0,0x003b
8013ec30: 26440001 addiu r4,r18,0x0001
8013ec34: 0c052021 jal 0x80148084                   #               ? 0x148084 (eventInstructionParamsPtr, 1);
8013ec38: 34050001 ori r5,r0,0x0001
8013ec3c: 0804fb60 j 0x8013ed80
8013ec40: 00000000 nop
8013ec44: 10730003 beq r3,r19,0x8013ec54            #           } else if ((eventInstructionID == EVENT_INSTRUCTION_SPRITE_MOVE)
8013ec48: 3402006e ori r2,r0,0x006e
8013ec4c: 14620020 bne r3,r2,0x8013ecd0             #               or (eventInstructionID == EVENT_INSTRUCTION_SPRITE_MOVE_BETA)) {
8013ec50: 3402006f ori r2,r0,0x006f
8013ec54: 0c052712 jal 0x80149c48                   #               threadID = ? 0x149c48 (16);
8013ec58: 34040010 ori r4,r0,0x0010
8013ec5c: 92430000 lbu r3,0x0000(r18)               #               eventInstructionID
8013ec60: 00000000 nop
8013ec64: 14730005 bne r3,r19,0x8013ec7c            
8013ec68: 00408021 addu r16,r2,r0                   #               result_0x149c48
                                                    #               if (eventInstructionID == 0x3b) {
8013ec6c: 3c058014 lui r5,0x8014
8013ec70: 24a56ee4 addiu r5,r5,0x6ee4               #                   funcPtr = 0x80146ee4
8013ec74: 0804fb22 j 0x8013ec88
8013ec78: 02002021 addu r4,r16,r0                   #               } else {
8013ec7c: 02002021 addu r4,r16,r0
8013ec80: 3c058014 lui r5,0x8014
8013ec84: 24a56f20 addiu r5,r5,0x6f20               #                   funcPtr = 0x80146f20
                                                    #               }
8013ec88: 0c053228 jal 0x8014c8a0                   #               Initialize Thread (threadID, funcPtr);
8013ec8c: 00108280 sll r16,r16,0x0a                 #               threadID * sizeof(thread)
8013ec90: 00112400 sll r4,r17,0x10                  
8013ec94: 26420001 addiu r2,r18,0x0001              #               eventInstructionParamsPtr
8013ec98: 3c018017 lui r1,0x8017
8013ec9c: 00300821 addu r1,r1,r16
8013eca0: ac22986c sw r2,-0x6794(r1)                #               threads[threadID].FunctionParameter1 = eventInstructionParamsPtr
8013eca4: 3402000b ori r2,r0,0x000b
8013eca8: 3c018017 lui r1,0x8017
8013ecac: 00300821 addu r1,r1,r16
8013ecb0: ac2298b8 sw r2,-0x6748(r1)                #               threads[threadID].TaskID = 11
8013ecb4: 0c04cc56 jal 0x80133158                   #               miscID = Get misc ID (halfwordParam1);
8013ecb8: 00042403 sra r4,r4,0x10
8013ecbc: 3c018017 lui r1,0x8017
8013ecc0: 00300821 addu r1,r1,r16
8013ecc4: ac2298bc sw r2,-0x6744(r1)                #               threads[threadID].0x50 = miscID
8013ecc8: 0804fb60 j 0x8013ed80
8013eccc: 00000000 nop
8013ecd0: 92430000 lbu r3,0x0000(r18)               
8013ecd4: 00000000 nop
8013ecd8: 14620006 bne r3,r2,0x8013ecf4             #           } else if (eventInstructionID == EVENT_INSTRUCTION_WAIT_SPRITE_MOVE) {
8013ecdc: 34020064 ori r2,r0,0x0064
8013ece0: 00112400 sll r4,r17,0x10
8013ece4: 0c051bd7 jal 0x80146f5c                   #               ? 0x146f5c (halfwordParam1);
8013ece8: 00042403 sra r4,r4,0x10
8013ecec: 0804fb60 j 0x8013ed80
8013ecf0: 00000000 nop
8013ecf4: 14620006 bne r3,r2,0x8013ed10             #           } else if (eventInstructionID == EVENT_INSTRUCTION_WAIT_ROTATE_UNIT) {           
8013ecf8: 34020065 ori r2,r0,0x0065
8013ecfc: 92440001 lbu r4,0x0001(r18)               #               unitID
8013ed00: 0c05263f jal 0x801498fc                   #               ? 0x1498fc (unitID);
8013ed04: 00000000 nop
8013ed08: 0804fb60 j 0x8013ed80
8013ed0c: 00000000 nop
8013ed10: 14620005 bne r3,r2,0x8013ed28             #           } else if (eventInstructionID == EVENT_INSTRUCTION_WAIT_ROTATE_ALL) {
8013ed14: 3402008c ori r2,r0,0x008c
8013ed18: 0c05263f jal 0x801498fc                   #               ? 0x1498fc (-1);
8013ed1c: 2404ffff addiu r4,r0,-0x0001
8013ed20: 0804fb60 j 0x8013ed80
8013ed24: 00000000 nop
8013ed28: 14620005 bne r3,r2,0x8013ed40             #           } else if (eventInstructionID == EVENT_INSTRUCTION_UNIT_ANIM_ROTATE) {
8013ed2c: 34020032 ori r2,r0,0x0032
8013ed30: 0c051feb jal 0x80147fac                   #               ? 0x147fac (eventInstructionParamsPtr);
8013ed34: 26440001 addiu r4,r18,0x0001
8013ed38: 0804fb60 j 0x8013ed80
8013ed3c: 00000000 nop
8013ed40: 1462000f bne r3,r2,0x8013ed80             #           } else if (eventInstructionID == EVENT_INSTRUCTION_COLOR_UNIT) {
8013ed44: 00112400 sll r4,r17,0x10
8013ed48: 0c04cc56 jal 0x80133158                   #               miscID = Get misc ID (halfwordParam1);
8013ed4c: 00042403 sra r4,r4,0x10
8013ed50: 00021400 sll r2,r2,0x10
8013ed54: 00023403 sra r6,r2,0x10
8013ed58: 10d40009 beq r6,r20,0x8013ed80            #               if (miscID != 0x07d0) {
8013ed5c: 00000000 nop
8013ed60: 82420005 lb r2,0x0005(r18)                #                   greenValue
8013ed64: 92440003 lbu r4,0x0003(r18)               #                   presetColor
8013ed68: 92450007 lbu r5,0x0007(r18)               #                   time
8013ed6c: 82470004 lb r7,0x0004(r18)                #                   redValue
8013ed70: afa20010 sw r2,0x0010(r29)                #                   greenValue
8013ed74: 82420006 lb r2,0x0006(r18)                #                   blueValue
8013ed78: 0c024cf1 jal 0x800933c4                                       ? 0x933c4 (presetColor, time, miscID, redValue, greenValue, blueValue);
8013ed7c: afa20014 sw r2,0x0014(r29)                #                   blueValue
                                                    #               }
                                                    #           }
8013ed80: 92420000 lbu r2,0x0000(r18)               #           eventInstructionID
8013ed84: 3c018015 lui r1,0x8015
8013ed88: 00220821 addu r1,r1,r2
8013ed8c: 9022d170 lbu r2,-0x2e90(r1)               #           eventParameterLengthArray[eventInstructionID]
8013ed90: 00000000 nop
8013ed94: 24420001 addiu r2,r2,0x0001               #           eventInstructionSize = eventParameterLengthArray[eventInstructionID] + 1
8013ed98: 02429021 addu r18,r18,r2                  #           eventInstructionPtr = eventInstructionPtr + eventInstructionSize    // Go to next instruction
8013ed9c: 92430000 lbu r3,0x0000(r18)               #           eventInstructionID
8013eda0: 3402002b ori r2,r0,0x002b
8013eda4: 1462feed bne r3,r2,0x8013e95c
8013eda8: 26500001 addiu r16,r18,0x0001             #           eventInstructionParamsPtr = eventInstructionPtr + 1
                                                    #       } while (eventInstructionID != EVENT_INSTRUCTION_BLOCK_END);
                                                    #   }
8013edac: 0c053256 jal 0x8014c958                   #   Stop Current Thread ();
8013edb0: 00000000 nop
8013edb4: 8fbf0054 lw r31,0x0054(r29)
8013edb8: 8fb40050 lw r20,0x0050(r29)
8013edbc: 8fb3004c lw r19,0x004c(r29)
8013edc0: 8fb20048 lw r18,0x0048(r29)
8013edc4: 8fb10044 lw r17,0x0044(r29)
8013edc8: 8fb00040 lw r16,0x0040(r29)
8013edcc: 27bd0058 addiu r29,r29,0x0058
8013edd0: 03e00008 jr r31
8013edd4: 00000000 nop