Difference between revisions of "Main ability loading routine?"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m (Align comments)
Line 3: Line 3:
 
  0017ce44: 27bdffb0 addiu r29,r29,0xffb0
 
  0017ce44: 27bdffb0 addiu r29,r29,0xffb0
 
  0017ce48: afb40040 sw r20,0x0040(r29)
 
  0017ce48: afb40040 sw r20,0x0040(r29)
  0017ce4c: 0080a021 addu r20,r4,r0 r20 = unit ID of the attacker
+
  0017ce4c: 0080a021 addu r20,r4,r0               r20 = unit ID of the attacker
 
  0017ce50: afb10034 sw r17,0x0034(r29)
 
  0017ce50: afb10034 sw r17,0x0034(r29)
  0017ce54: 00a08821 addu r17,r5,r0 r17 = misc unit data
+
  0017ce54: 00a08821 addu r17,r5,r0               r17 = misc unit data
 
  0017ce58: 340300ff ori r3,r0,0x00ff
 
  0017ce58: 340300ff ori r3,r0,0x00ff
 
  0017ce5c: afb20038 sw r18,0x0038(r29)
 
  0017ce5c: afb20038 sw r18,0x0038(r29)
Line 15: Line 15:
 
  0017ce74: afb00030 sw r16,0x0030(r29)
 
  0017ce74: afb00030 sw r16,0x0030(r29)
 
  0017ce78: 3c018019 lui r1,0x8019
 
  0017ce78: 3c018019 lui r1,0x8019
  0017ce7c: ac20f4f8 sw r0,-0x0b08(r1) clear 8018f4f8
+
  0017ce7c: ac20f4f8 sw r0,-0x0b08(r1)           clear 8018f4f8
 
  0017ce80: 3c018019 lui r1,0x8019
 
  0017ce80: 3c018019 lui r1,0x8019
  0017ce84: ac20f4f4 sw r0,-0x0b0c(r1)
+
  0017ce84: ac20f4f4 sw r0,-0x0b0c(r1)
 
  0017ce88: 3c018019 lui r1,0x8019
 
  0017ce88: 3c018019 lui r1,0x8019
  0017ce8c: a020390f sb r0,0x390f(r1) clear ability X
+
  0017ce8c: a020390f sb r0,0x390f(r1)             clear ability X
  0017ce90: a0430000 sb r3,0x0000(r2) store 0xff onto stack
+
  0017ce90: a0430000 sb r3,0x0000(r2)             store 0xff onto stack
  0017ce94: 2652ffff addiu r18,r18,0xffff decrease r18 (starts at 0x14)
+
  0017ce94: 2652ffff addiu r18,r18,0xffff         decrease r18 (starts at 0x14)
  0017ce98: 0641fffd bgez r18,0x0017ce90 branch if greater or equal to zero
+
  0017ce98: 0641fffd bgez r18,0x0017ce90         branch if greater or equal to zero
  0017ce9c: 2442ffff addiu r2,r2,0xffff decrease r2
+
  0017ce9c: 2442ffff addiu r2,r2,0xffff           decrease r2
  0017cea0: 2a820015 slti r2,r20,0x0015 set if attacker ID < 20
+
  0017cea0: 2a820015 slti r2,r20,0x0015           set if attacker ID < 20
  0017cea4: 14400003 bne r2,r0,0x0017ceb4 branch if so
+
  0017cea4: 14400003 bne r2,r0,0x0017ceb4         branch if so
 
  0017cea8: 34120015 ori r18,r0,0x0015
 
  0017cea8: 34120015 ori r18,r0,0x0015
  0017ceac: 0805f4ca j 0x0017d328 jump to end
+
  0017ceac: 0805f4ca j 0x0017d328                 jump to end
  0017ceb0: 2402ffff addiu r2,r0,0xffff
+
  0017ceb0: 2402ffff addiu r2,r0,0xffff
 
  0017ceb4: 001410c0 sll r2,r20,0x03
 
  0017ceb4: 001410c0 sll r2,r20,0x03
 
  0017ceb8: 00541023 subu r2,r2,r20
 
  0017ceb8: 00541023 subu r2,r2,r20
 
  0017cebc: 00021180 sll r2,r2,0x06
 
  0017cebc: 00021180 sll r2,r2,0x06
 
  0017cec0: 3c038019 lui r3,0x8019
 
  0017cec0: 3c038019 lui r3,0x8019
  0017cec4: 246308cc addiu r3,r3,0x08cc r19 = attacker unit data
+
  0017cec4: 246308cc addiu r3,r3,0x08cc           r19 = attacker unit data
 
  0017cec8: 00439821 addu r19,r2,r3
 
  0017cec8: 00439821 addu r19,r2,r3
  0017cecc: 0c062f5d jal 0x0018bd74 [[Current Action Data Nulling]]
+
  0017cecc: 0c062f5d jal 0x0018bd74               [[Current Action Data Nulling]]
 
  0017ced0: 2664018c addiu r4,r19,0x018c
 
  0017ced0: 2664018c addiu r4,r19,0x018c
 
  0017ced4: 3c108019 lui r16,0x8019
 
  0017ced4: 3c108019 lui r16,0x8019
Line 41: Line 41:
 
  0017cedc: 02002021 addu r4,r16,r0
 
  0017cedc: 02002021 addu r4,r16,r0
 
  0017cee0: 34020008 ori r2,r0,0x0008
 
  0017cee0: 34020008 ori r2,r0,0x0008
  0017cee4: a260018c sb r0,0x018c(r19) clear hit flag byte
+
  0017cee4: a260018c sb r0,0x018c(r19)           clear hit flag byte
  0017cee8: 0c062f5d jal 0x0018bd74 [[Current Action Data Nulling]]
+
  0017cee8: 0c062f5d jal 0x0018bd74               [[Current Action Data Nulling]]
  0017ceec: a262018e sb r2,0x018e(r19) store evade type = 8
+
  0017ceec: a262018e sb r2,0x018e(r19)           store evade type = 8
  0017cef0: a2000000 sb r0,0x0000(r16) clear temp action data
+
  0017cef0: a2000000 sb r0,0x0000(r16)           clear temp action data
  0017cef4: a2200022 sb r0,0x0022(r17) clear misc. data
+
  0017cef4: a2200022 sb r0,0x0022(r17)           clear misc. data
 
  0017cef8: a2200016 sb r0,0x0016(r17)
 
  0017cef8: a2200016 sb r0,0x0016(r17)
 
  0017cefc: a2200013 sb r0,0x0013(r17)
 
  0017cefc: a2200013 sb r0,0x0013(r17)
 
  0017cf00: 3c028019 lui r2,0x8019
 
  0017cf00: 3c028019 lui r2,0x8019
  0017cf04: 8c42f5f0 lw r2,-0x0a10(r2) load reaction check
+
  0017cf04: 8c42f5f0 lw r2,-0x0a10(r2)           load reaction check
 
  0017cf08: 00008021 addu r16,r0,r0
 
  0017cf08: 00008021 addu r16,r0,r0
  0017cf0c: 10400015 beq r2,r0,0x0017cf64 branch if not reacting
+
  0017cf0c: 10400015 beq r2,r0,0x0017cf64         branch if not reacting
 
  0017cf10: a6200020 sh r0,0x0020(r17)
 
  0017cf10: a6200020 sh r0,0x0020(r17)
 
   
 
   
 
  If Reacting
 
  If Reacting
  0017cf14: 02802021 addu r4,r20,r0 r4 = attacker ID
+
  0017cf14: 02802021 addu r4,r20,r0               r4 = attacker ID
  0017cf18: 02202821 addu r5,r17,r0 r5 = misc. data
+
  0017cf18: 02202821 addu r5,r17,r0               r5 = misc. data
 
  0017cf1c: 27a60028 addiu r6,r29,0x0028
 
  0017cf1c: 27a60028 addiu r6,r29,0x0028
 
  0017cf20: 3c028019 lui r2,0x8019
 
  0017cf20: 3c028019 lui r2,0x8019
  0017cf24: 94422d9c lhu r2,0x2d9c(r2) load reaction ID
+
  0017cf24: 94422d9c lhu r2,0x2d9c(r2)           load reaction ID
 
  0017cf28: 27a70010 addiu r7,r29,0x0010
 
  0017cf28: 27a70010 addiu r7,r29,0x0010
  0017cf2c: 0c05f2b3 jal 0x0017cacc [[Reaction Target/Hit Calculation]]
+
  0017cf2c: 0c05f2b3 jal 0x0017cacc               [[Reaction Target/Hit Calculation]]
  0017cf30: a6220020 sh r2,0x0020(r17) returns r2=01 if no hit
+
  0017cf30: a6220020 sh r2,0x0020(r17)           returns r2=01 if no hit
 
   
 
   
 
  flags = 04, !08
 
  flags = 04, !08
  0017cf34: 10400010 beq r2,r0,0x0017cf78 branch if hit
+
  0017cf34: 10400010 beq r2,r0,0x0017cf78         branch if hit
 
  0017cf38: 340201b8 ori r2,r0,0x01b8
 
  0017cf38: 340201b8 ori r2,r0,0x01b8
 
  0017cf3c: 3c038019 lui r3,0x8019
 
  0017cf3c: 3c038019 lui r3,0x8019
  0017cf40: 84632d9c lh r3,0x2d9c(r3) load reaction ID
+
  0017cf40: 84632d9c lh r3,0x2d9c(r3)             load reaction ID
 
  0017cf44: 00000000 nop
 
  0017cf44: 00000000 nop
  0017cf48: 14620003 bne r3,r2,0x0017cf58 branch if not 0x1b8 - Reflect
+
  0017cf48: 14620003 bne r3,r2,0x0017cf58         branch if not 0x1b8 - Reflect
  0017cf4c: 34020001 ori r2,r0,0x0001 return r2=01
+
  0017cf4c: 34020001 ori r2,r0,0x0001             return r2=01
  0017cf50: 0805f3d7 j 0x0017cf5c
+
  0017cf50: 0805f3d7 j 0x0017cf5c
  0017cf54: a3a2002c sb r2,0x002c(r29) store 1 on the stack
+
  0017cf54: a3a2002c sb r2,0x002c(r29)           store 1 on the stack
  0017cf58: a3a0002c sb r0,0x002c(r29) store 0 on the stack
+
  0017cf58: a3a0002c sb r0,0x002c(r29)           store 0 on the stack
  0017cf5c: 0805f3de j 0x0017cf78
+
  0017cf5c: 0805f3de j 0x0017cf78
  0017cf60: 34100001 ori r16,r0,0x0001
+
  0017cf60: 34100001 ori r16,r0,0x0001
 
   
 
   
 
  If not Reacting
 
  If not Reacting
  0017cf64: 9262016f lbu r2,0x016f(r19) load skillset of last attack?
+
  0017cf64: 9262016f lbu r2,0x016f(r19)           load skillset of last attack?
 
  0017cf68: 00000000 nop
 
  0017cf68: 00000000 nop
  0017cf6c: 14520002 bne r2,r18,0x0017cf78 branch if skillset isn't 0x15 - math skill
+
  0017cf6c: 14520002 bne r2,r18,0x0017cf78       branch if skillset isn't 0x15 - math skill
 
  0017cf70: 34020001 ori r2,r0,0x0001
 
  0017cf70: 34020001 ori r2,r0,0x0001
  0017cf74: a2220013 sb r2,0x0013(r17)
+
  0017cf74: a2220013 sb r2,0x0013(r17)
 
   
 
   
 
  If reaction target/hit calculation is affirmative
 
  If reaction target/hit calculation is affirmative
  0017cf78: 16000041 bne r16,r0,0x0017d080 branch if reaction = reflect
+
  0017cf78: 16000041 bne r16,r0,0x0017d080       branch if reaction = reflect
 
  0017cf7c: 27a40010 addiu r4,r29,0x0010
 
  0017cf7c: 27a40010 addiu r4,r29,0x0010
  0017cf80: 2664016e addiu r4,r19,0x016e r4 = attackers target data offset
+
  0017cf80: 2664016e addiu r4,r19,0x016e         r4 = attackers target data offset
  0017cf84: 0c05f349 jal 0x0017cd24 [[Map calculations for attack]], weapon range, etc.
+
  0017cf84: 0c05f349 jal 0x0017cd24               [[Map calculations for attack]], weapon range, etc.
  0017cf88: 27a5002c addiu r5,r29,0x002c
+
  0017cf88: 27a5002c addiu r5,r29,0x002c
 
  0017cf8c: 2403ffff addiu r3,r0,0xffff
 
  0017cf8c: 2403ffff addiu r3,r0,0xffff
  0017cf90: 14430004 bne r2,r3,0x0017cfa4 branch attack is valid
+
  0017cf90: 14430004 bne r2,r3,0x0017cfa4         branch attack is valid
 
  0017cf94: 2402ffff addiu r2,r0,0xffff
 
  0017cf94: 2402ffff addiu r2,r0,0xffff
  0017cf98: a2200001 sb r0,0x0001(r17) clear hit counter
+
  0017cf98: a2200001 sb r0,0x0001(r17)           clear hit counter
 
  0017cf9c: 0805f4ca j 0x0017d328
 
  0017cf9c: 0805f4ca j 0x0017d328
  0017cfa0: a2200018 sb r0,0x0018(r17) clear ??
+
  0017cfa0: a2200018 sb r0,0x0018(r17)           clear ??
 
   
 
   
 
  0017cfa4: 3c108019 lui r16,0x8019
 
  0017cfa4: 3c108019 lui r16,0x8019
  0017cfa8: 261038ef addiu r16,r16,0x38ef 801938ef
+
  0017cfa8: 261038ef addiu r16,r16,0x38ef         801938ef
  0017cfac: 92020000 lbu r2,0x0000(r16) load post action target ID
+
  0017cfac: 92020000 lbu r2,0x0000(r16)           load post action target ID
 
  0017cfb0: 00000000 nop
 
  0017cfb0: 00000000 nop
  0017cfb4: 2c420015 sltiu r2,r2,0x0015 set if less than 20
+
  0017cfb4: 2c420015 sltiu r2,r2,0x0015           set if less than 20
  0017cfb8: 1040002d beq r2,r0,0x0017d070 branch if invalid target
+
  0017cfb8: 1040002d beq r2,r0,0x0017d070         branch if invalid target
 
  0017cfbc: 27a40010 addiu r4,r29,0x0010
 
  0017cfbc: 27a40010 addiu r4,r29,0x0010
 
  0017cfc0: 3c028019 lui r2,0x8019
 
  0017cfc0: 3c028019 lui r2,0x8019
  0017cfc4: 944238c8 lhu r2,0x38c8(r2) load post-action  
+
  0017cfc4: 944238c8 lhu r2,0x38c8(r2)           load post-action
 
  0017cfc8: 00000000 nop
 
  0017cfc8: 00000000 nop
  0017cfcc: 14400007 bne r2,r0,0x0017cfec branch if not 0 (reacting?)
+
  0017cfcc: 14400007 bne r2,r0,0x0017cfec         branch if not 0 (reacting?)
 
  0017cfd0: 00000000 nop
 
  0017cfd0: 00000000 nop
 
  0017cfd4: 3c028019 lui r2,0x8019
 
  0017cfd4: 3c028019 lui r2,0x8019
  0017cfd8: 904238ed lbu r2,0x38ed(r2) load can poach flags
+
  0017cfd8: 904238ed lbu r2,0x38ed(r2)           load can poach flags
 
  0017cfdc: 00000000 nop
 
  0017cfdc: 00000000 nop
 
  0017cfe0: 30420080 andi r2,r2,0x0080
 
  0017cfe0: 30420080 andi r2,r2,0x0080
  0017cfe4: 10400022 beq r2,r0,0x0017d070 branch if not taking fall damage
+
  0017cfe4: 10400022 beq r2,r0,0x0017d070         branch if not taking fall damage
 
  0017cfe8: 00000000 nop
 
  0017cfe8: 00000000 nop
 
   
 
   
 
  if 801938ed
 
  if 801938ed
  0017cfec: 0c05ed28 jal 0x0017b4a0 [[Disable Green Panel Flags]]
+
  0017cfec: 0c05ed28 jal 0x0017b4a0               [[Disable Green Panel Flags]]
 
  0017cff0: 00000000 nop
 
  0017cff0: 00000000 nop
 
  0017cff4: 340600ff ori r6,r0,0x00ff
 
  0017cff4: 340600ff ori r6,r0,0x00ff
 
  0017cff8: 27a40011 addiu r4,r29,0x0011
 
  0017cff8: 27a40011 addiu r4,r29,0x0011
 
  0017cffc: 27a50020 addiu r5,r29,0x0020
 
  0017cffc: 27a50020 addiu r5,r29,0x0020
  0017d000: 92030000 lbu r3,0x0000(r16) load post action target ID
+
  0017d000: 92030000 lbu r3,0x0000(r16)           load post action target ID
 
  0017d004: 34020001 ori r2,r0,0x0001
 
  0017d004: 34020001 ori r2,r0,0x0001
 
  0017d008: afa20028 sw r2,0x0028(r29)
 
  0017d008: afa20028 sw r2,0x0028(r29)
 
  0017d00c: a3a30010 sb r3,0x0010(r29)
 
  0017d00c: a3a30010 sb r3,0x0010(r29)
  0017d010: a0860000 sb r6,0x0000(r4)
+
  0017d010: a0860000 sb r6,0x0000(r4)
 
  0017d014: 24840001 addiu r4,r4,0x0001
 
  0017d014: 24840001 addiu r4,r4,0x0001
 
  0017d018: 0085102a slt r2,r4,r5
 
  0017d018: 0085102a slt r2,r4,r5
Line 133: Line 133:
 
  0017d020: 00000000 nop
 
  0017d020: 00000000 nop
 
  0017d024: 3c028019 lui r2,0x8019
 
  0017d024: 3c028019 lui r2,0x8019
  0017d028: 904238ef lbu r2,0x38ef(r2) load post action target ID
+
  0017d028: 904238ef lbu r2,0x38ef(r2)           load post action target ID
 
  0017d02c: 00000000 nop
 
  0017d02c: 00000000 nop
 
  0017d030: 000220c0 sll r4,r2,0x03
 
  0017d030: 000220c0 sll r4,r2,0x03
Line 139: Line 139:
 
  0017d038: 00042180 sll r4,r4,0x06
 
  0017d038: 00042180 sll r4,r4,0x06
 
  0017d03c: 3c028019 lui r2,0x8019
 
  0017d03c: 3c028019 lui r2,0x8019
  0017d040: 244208cc addiu r2,r2,0x08cc get target for post action's data
+
  0017d040: 244208cc addiu r2,r2,0x08cc           get target for post action's data
  0017d044: 0c060428 jal 0x001810a0 [[Map Location Calculation]]
+
  0017d044: 0c060428 jal 0x001810a0               [[Map Location Calculation]]
 
  0017d048: 00822021 addu r4,r4,r2
 
  0017d048: 00822021 addu r4,r4,r2
 
  0017d04c: 000210c0 sll r2,r2,0x03
 
  0017d04c: 000210c0 sll r2,r2,0x03
 
  0017d050: 3c038019 lui r3,0x8019
 
  0017d050: 3c038019 lui r3,0x8019
  0017d054: 2463f8cc addiu r3,r3,0xf8cc tile data
+
  0017d054: 2463f8cc addiu r3,r3,0xf8cc           tile data
 
  0017d058: 00431021 addu r2,r2,r3
 
  0017d058: 00431021 addu r2,r2,r3
  0017d05c: 90430005 lbu r3,0x0005(r2)
+
  0017d05c: 90430005 lbu r3,0x0005(r2)
 
  0017d060: 00000000 nop
 
  0017d060: 00000000 nop
  0017d064: 34630080 ori r3,r3,0x0080 set target's panel = targeted
+
  0017d064: 34630080 ori r3,r3,0x0080             set target's panel = targeted
 
  0017d068: a0430005 sb r3,0x0005(r2)
 
  0017d068: a0430005 sb r3,0x0005(r2)
 
  0017d06c: 27a40010 addiu r4,r29,0x0010
 
  0017d06c: 27a40010 addiu r4,r29,0x0010
 
   
 
   
  0017d070: 0c05f614 jal 0x0017d850 [[0017d850 - 0017da1c]] more targeting checks
+
  0017d070: 0c05f614 jal 0x0017d850               [[0017d850 - 0017da1c]] more targeting checks
 
  0017d074: 02602821 addu r5,r19,r0
 
  0017d074: 02602821 addu r5,r19,r0
 
  0017d078: afa20028 sw r2,0x0028(r29)
 
  0017d078: afa20028 sw r2,0x0028(r29)
Line 160: Line 160:
 
  0017d088: 93a20028 lbu r2,0x0028(r29)
 
  0017d088: 93a20028 lbu r2,0x0028(r29)
 
  0017d08c: 3c018019 lui r1,0x8019
 
  0017d08c: 3c018019 lui r1,0x8019
  0017d090: a02238ec sb r2,0x38ec(r1) store able to knockback/hit counter  
+
  0017d090: a02238ec sb r2,0x38ec(r1)             store able to knockback/hit counter
  0017d094: 0c063b7e jal 0x0018edf8 [[Store ability data]]
+
  0017d094: 0c063b7e jal 0x0018edf8               [[Store ability data]]
 
  0017d098: 27b20025 addiu r18,r29,0x0025
 
  0017d098: 27b20025 addiu r18,r29,0x0025
  0017d09c: 0c062c9d jal 0x0018b274 [[Store used weapon]] ID based on action menu byte
+
  0017d09c: 0c062c9d jal 0x0018b274               [[Store used weapon]] ID based on action menu byte
 
  0017d0a0: 2664016e addiu r4,r19,0x016e
 
  0017d0a0: 2664016e addiu r4,r19,0x016e
  0017d0a4: 92050000 lbu r5,0x0000(r16) load from stack
+
  0017d0a4: 92050000 lbu r5,0x0000(r16)           load from stack
 
  0017d0a8: 00000000 nop
 
  0017d0a8: 00000000 nop
  0017d0ac: 10b50005 beq r5,r21,0x0017d0c4 branch if r5 = 0xff?
+
  0017d0ac: 10b50005 beq r5,r21,0x0017d0c4       branch if r5 = 0xff?
 
  0017d0b0: 26100001 addiu r16,r16,0x0001
 
  0017d0b0: 26100001 addiu r16,r16,0x0001
 
  0017d0b4: 3c018019 lui r1,0x8019
 
  0017d0b4: 3c018019 lui r1,0x8019
  0017d0b8: a02038e9 sb r0,0x38e9(r1) clear default to attack?
+
  0017d0b8: a02038e9 sb r0,0x38e9(r1)             clear default to attack?
  0017d0bc: 0c062cd3 jal 0x0018b34c [[Pre Formula Setup (FDC)]]
+
  0017d0bc: 0c062cd3 jal 0x0018b34c               [[Pre Formula Setup (FDC)]]
 
  0017d0c0: 2664016e addiu r4,r19,0x016e
 
  0017d0c0: 2664016e addiu r4,r19,0x016e
  0017d0c4: 0212102a slt r2,r16,r18 r16 and r18 = stack addresses
+
  0017d0c4: 0212102a slt r2,r16,r18               r16 and r18 = stack addresses
  0017d0c8: 1440fff6 bne r2,r0,0x0017d0a4 perform for all targets?
+
  0017d0c8: 1440fff6 bne r2,r0,0x0017d0a4         perform for all targets?
 
  0017d0cc: 00000000 nop
 
  0017d0cc: 00000000 nop
  0017d0d0: 0c062b1d jal 0x0018ac74 [[Remove transparent status if Jump is used?]]
+
  0017d0d0: 0c062b1d jal 0x0018ac74               [[Remove transparent status if Jump is used?]]
 
  0017d0d4: 02602021 addu r4,r19,r0
 
  0017d0d4: 02602021 addu r4,r19,r0
  0017d0d8: 0c063b89 jal 0x0018ee24 [[Count number of targets hit by ability]], return r2 = hit counter
+
  0017d0d8: 0c063b89 jal 0x0018ee24               [[Count number of targets hit by ability]], return r2 = hit counter
 
  0017d0dc: 26240002 addiu r4,r17,0x0002
 
  0017d0dc: 26240002 addiu r4,r17,0x0002
  0017d0e0: afa20028 sw r2,0x0028(r29) store hit counter
+
  0017d0e0: afa20028 sw r2,0x0028(r29)           store hit counter
  0017d0e4: 93a20028 lbu r2,0x0028(r29) load hit counter
+
  0017d0e4: 93a20028 lbu r2,0x0028(r29)           load hit counter
 
  0017d0e8: 00000000 nop
 
  0017d0e8: 00000000 nop
  0017d0ec: a2220001 sb r2,0x0001(r17) store hit counter in 0x18c of misc. data
+
  0017d0ec: a2220001 sb r2,0x0001(r17)           store hit counter in 0x18c of misc. data
  0017d0f0: 93a20028 lbu r2,0x0028(r29) load hit counter
+
  0017d0f0: 93a20028 lbu r2,0x0028(r29)           load hit counter
 
  0017d0f4: 3c038019 lui r3,0x8019
 
  0017d0f4: 3c038019 lui r3,0x8019
  0017d0f8: 8c63f5f0 lw r3,-0x0a10(r3) load reaction byte
+
  0017d0f8: 8c63f5f0 lw r3,-0x0a10(r3)           load reaction byte
 
  0017d0fc: 3c018019 lui r1,0x8019
 
  0017d0fc: 3c018019 lui r1,0x8019
  0017d100: a02238ec sb r2,0x38ec(r1) store hit counter
+
  0017d100: a02238ec sb r2,0x38ec(r1)             store hit counter
  0017d104: 14600004 bne r3,r0,0x0017d118 branch if ability is a reaction?
+
  0017d104: 14600004 bne r3,r0,0x0017d118         branch if ability is a reaction?
 
  0017d108: 02602021 addu r4,r19,r0
 
  0017d108: 02602021 addu r4,r19,r0
 
  0017d10c: 34020001 ori r2,r0,0x0001
 
  0017d10c: 34020001 ori r2,r0,0x0001
 
  0017d110: 3c018019 lui r1,0x8019
 
  0017d110: 3c018019 lui r1,0x8019
  0017d114: a02238e8 sb r2,0x38e8(r1) store can gain exp
+
  0017d114: a02238e8 sb r2,0x38e8(r1)             store can gain exp
  0017d118: a2200023 sb r0,0x0023(r17)
+
  0017d118: a2200023 sb r0,0x0023(r17)
  0017d11c: 93a60028 lbu r6,0x0028(r29) load hit counter
+
  0017d11c: 93a60028 lbu r6,0x0028(r29)           load hit counter
  0017d120: 0c05f504 jal 0x0017d410 [[Draw out routine dealing with experience gain]]
+
  0017d120: 0c05f504 jal 0x0017d410               [[Draw out routine dealing with experience gain]]
  0017d124: 02202821 addu r5,r17,r0 r5 = misc. data
+
  0017d124: 02202821 addu r5,r17,r0               r5 = misc. data
  0017d128: a2340000 sb r20,0x0000(r17) store attacking unit ID?
+
  0017d128: a2340000 sb r20,0x0000(r17)           store attacking unit ID?
 
  0017d12c: 3c028019 lui r2,0x8019
 
  0017d12c: 3c028019 lui r2,0x8019
  0017d130: 904238d8 lbu r2,0x38d8(r2) load used weapon ID
+
  0017d130: 904238d8 lbu r2,0x38d8(r2)           load used weapon ID
 
  0017d134: 02602021 addu r4,r19,r0
 
  0017d134: 02602021 addu r4,r19,r0
  0017d138: a2200017 sb r0,0x0017(r17) clear reaction occurred byte?
+
  0017d138: a2200017 sb r0,0x0017(r17)           clear reaction occurred byte?
  0017d13c: a222001f sb r2,0x001f(r17) store used weapon ID
+
  0017d13c: a222001f sb r2,0x001f(r17)           store used weapon ID
 
  0017d140: 3c028019 lui r2,0x8019
 
  0017d140: 3c028019 lui r2,0x8019
  0017d144: 904238c3 lbu r2,0x38c3(r2) load hit number
+
  0017d144: 904238c3 lbu r2,0x38c3(r2)           load hit number
  0017d148: 02202821 addu r5,r17,r0 r5 = misc unit data
+
  0017d148: 02202821 addu r5,r17,r0               r5 = misc unit data
  0017d14c: 0c05f4d4 jal 0x0017d350 [[Set target coordinates for ability?]]
+
  0017d14c: 0c05f4d4 jal 0x0017d350               [[Set target coordinates for ability?]]
  0017d150: a2220019 sb r2,0x0019(r17) store hit number
+
  0017d150: a2220019 sb r2,0x0019(r17)           store hit number
  0017d154: 8fa20028 lw r2,0x0028(r29) load hit counter
+
  0017d154: 8fa20028 lw r2,0x0028(r29)           load hit counter
 
  0017d158: 00000000 nop
 
  0017d158: 00000000 nop
  0017d15c: 1440001c bne r2,r0,0x0017d1d0 branch if units are hit
+
  0017d15c: 1440001c bne r2,r0,0x0017d1d0         branch if units are hit
 
  0017d160: 00000000 nop
 
  0017d160: 00000000 nop
 
   
 
   
 
  If units are not hit
 
  If units are not hit
 
  0017d164: 3c028019 lui r2,0x8019
 
  0017d164: 3c028019 lui r2,0x8019
  0017d168: 904238c3 lbu r2,0x38c3(r2) load hit number
+
  0017d168: 904238c3 lbu r2,0x38c3(r2)           load hit number
 
  0017d16c: 00000000 nop
 
  0017d16c: 00000000 nop
  0017d170: 24420001 addiu r2,r2,0x0001 increment current hit counter
+
  0017d170: 24420001 addiu r2,r2,0x0001           increment current hit counter
 
  0017d174: 3c018019 lui r1,0x8019
 
  0017d174: 3c018019 lui r1,0x8019
  0017d178: a02238c3 sb r2,0x38c3(r1) store new hit number
+
  0017d178: a02238c3 sb r2,0x38c3(r1)             store new hit number
  0017d17c: 96630170 lhu r3,0x0170(r19) load last attack used
+
  0017d17c: 96630170 lhu r3,0x0170(r19)           load last attack used
  0017d180: 93a2002c lbu r2,0x002c(r29) load ability flags 5
+
  0017d180: 93a2002c lbu r2,0x002c(r29)           load ability flags 5
  0017d184: a620001a sh r0,0x001a(r17) clear ?? reaction ID?
+
  0017d184: a620001a sh r0,0x001a(r17)           clear ?? reaction ID?
 
  0017d188: 30420001 andi r2,r2,0x0001
 
  0017d188: 30420001 andi r2,r2,0x0001
  0017d18c: 14400003 bne r2,r0,0x0017d19c branch if animate on miss = true
+
  0017d18c: 14400003 bne r2,r0,0x0017d19c         branch if animate on miss = true
  0017d190: a6230014 sh r3,0x0014(r17) store last attack used
+
  0017d190: a6230014 sh r3,0x0014(r17)           store last attack used
 
  0017d194: 34020001 ori r2,r0,0x0001
 
  0017d194: 34020001 ori r2,r0,0x0001
  0017d198: a2220012 sb r2,0x0012(r17) store animate on miss flag
+
  0017d198: a2220012 sb r2,0x0012(r17)           store animate on miss flag
 
  0017d19c: 3c028019 lui r2,0x8019
 
  0017d19c: 3c028019 lui r2,0x8019
  0017d1a0: 904238c3 lbu r2,0x38c3(r2) load current hit counter
+
  0017d1a0: 904238c3 lbu r2,0x38c3(r2)           load current hit counter
 
  0017d1a4: 3c038019 lui r3,0x8019
 
  0017d1a4: 3c038019 lui r3,0x8019
  0017d1a8: 906338c2 lbu r3,0x38c2(r3) load number of hits
+
  0017d1a8: 906338c2 lbu r3,0x38c2(r3)           load number of hits
 
  0017d1ac: 00000000 nop
 
  0017d1ac: 00000000 nop
  0017d1b0: 0043102b sltu r2,r2,r3 set if number of hits not reached total yet
+
  0017d1b0: 0043102b sltu r2,r2,r3               set if number of hits not reached total yet
  0017d1b4: 10400003 beq r2,r0,0x0017d1c4 branch if not
+
  0017d1b4: 10400003 beq r2,r0,0x0017d1c4         branch if not
 
  0017d1b8: 34020001 ori r2,r0,0x0001
 
  0017d1b8: 34020001 ori r2,r0,0x0001
 
  0017d1bc: 0805f472 j 0x0017d1c8
 
  0017d1bc: 0805f472 j 0x0017d1c8
  0017d1c0: a2220018 sb r2,0x0018(r17) store 01 into ??
+
  0017d1c0: a2220018 sb r2,0x0018(r17)           store 01 into ??
  0017d1c4: a2200018 sb r0,0x0018(r17) clear ??
+
  0017d1c4: a2200018 sb r0,0x0018(r17)           clear ??
  0017d1c8: 0805f4ca j 0x0017d328 jump to end
+
  0017d1c8: 0805f4ca j 0x0017d328                 jump to end
  0017d1cc: 34020001 ori r2,r0,0x0001 return r2 = 0x01
+
  0017d1cc: 34020001 ori r2,r0,0x0001             return r2 = 0x01
 
   
 
   
 
  if units are hit:
 
  if units are hit:
 
  0017d1d0: 3c028019 lui r2,0x8019
 
  0017d1d0: 3c028019 lui r2,0x8019
  0017d1d4: 9042390e lbu r2,0x390e(r2) load ability formula?
+
  0017d1d4: 9042390e lbu r2,0x390e(r2)           load ability formula?
  0017d1d8: a2200012 sb r0,0x0012(r17) clear ??
+
  0017d1d8: a2200012 sb r0,0x0012(r17)           clear ??
  0017d1dc: a2220016 sb r2,0x0016(r17) store ability formula?
+
  0017d1dc: a2220016 sb r2,0x0016(r17)           store ability formula?
 
  0017d1e0: 3c038019 lui r3,0x8019
 
  0017d1e0: 3c038019 lui r3,0x8019
  0017d1e4: 946338c6 lhu r3,0x38c6(r3) load reaction ID ?
+
  0017d1e4: 946338c6 lhu r3,0x38c6(r3)           load reaction ID ?
 
  0017d1e8: 00000000 nop
 
  0017d1e8: 00000000 nop
  0017d1ec: 10600009 beq r3,r0,0x0017d214 branch if no reaction?
+
  0017d1ec: 10600009 beq r3,r0,0x0017d214         branch if no reaction?
 
  0017d1f0: 00000000 nop
 
  0017d1f0: 00000000 nop
 
  0017d1f4: 3c028019 lui r2,0x8019
 
  0017d1f4: 3c028019 lui r2,0x8019
  0017d1f8: 944238c8 lhu r2,0x38c8(r2) load post action thing?
+
  0017d1f8: 944238c8 lhu r2,0x38c8(r2)           load post action thing?
 
  0017d1fc: 00000000 nop
 
  0017d1fc: 00000000 nop
  0017d200: 14400004 bne r2,r0,0x0017d214
+
  0017d200: 14400004 bne r2,r0,0x0017d214
 
  0017d204: 34020001 ori r2,r0,0x0001
 
  0017d204: 34020001 ori r2,r0,0x0001
  0017d208: a6230014 sh r3,0x0014(r17) store last attack used = reaction ID
+
  0017d208: a6230014 sh r3,0x0014(r17)           store last attack used = reaction ID
 
  0017d20c: 0805f48f j 0x0017d23c
 
  0017d20c: 0805f48f j 0x0017d23c
  0017d210: a2220017 sb r2,0x0017(r17) store reaction occurred
+
  0017d210: a2220017 sb r2,0x0017(r17)           store reaction occurred
 
  0017d214: 3c028019 lui r2,0x8019
 
  0017d214: 3c028019 lui r2,0x8019
  0017d218: 904238e9 lbu r2,0x38e9(r2) load default to attack flag?
+
  0017d218: 904238e9 lbu r2,0x38e9(r2)           load default to attack flag?
 
  0017d21c: 00000000 nop
 
  0017d21c: 00000000 nop
  0017d220: 10400003 beq r2,r0,0x0017d230 branch if not defaulting to attack
+
  0017d220: 10400003 beq r2,r0,0x0017d230         branch if not defaulting to attack
 
  0017d224: 00000000 nop
 
  0017d224: 00000000 nop
 
  0017d228: 0805f48f j 0x0017d23c
 
  0017d228: 0805f48f j 0x0017d23c
  0017d22c: a6200014 sh r0,0x0014(r17) Store last attack used = attack
+
  0017d22c: a6200014 sh r0,0x0014(r17)           Store last attack used = attack
  0017d230: 96620170 lhu r2,0x0170(r19) load last attack used half from unit data
+
  0017d230: 96620170 lhu r2,0x0170(r19)           load last attack used half from unit data
 
  0017d234: 00000000 nop
 
  0017d234: 00000000 nop
  0017d238: a6220014 sh r2,0x0014(r17) store last attack used half from unit data
+
  0017d238: a6220014 sh r2,0x0014(r17)           store last attack used half from unit data
 
  0017d23c: 3c028019 lui r2,0x8019
 
  0017d23c: 3c028019 lui r2,0x8019
  0017d240: 944238c6 lhu r2,0x38c6(r2) load reaction ID
+
  0017d240: 944238c6 lhu r2,0x38c6(r2)           load reaction ID
 
  0017d244: 00000000 nop
 
  0017d244: 00000000 nop
  0017d248: a622001a sh r2,0x001a(r17) store reaction ID in misc. data
+
  0017d248: a622001a sh r2,0x001a(r17)           store reaction ID in misc. data
 
  0017d24c: 3c028019 lui r2,0x8019
 
  0017d24c: 3c028019 lui r2,0x8019
  0017d250: 904238ed lbu r2,0x38ed(r2) load can poach? post action?
+
  0017d250: 904238ed lbu r2,0x38ed(r2)           load can poach? post action?
 
  0017d254: 00000000 nop
 
  0017d254: 00000000 nop
  0017d258: 1040000e beq r2,r0,0x0017d294 branch if cannot
+
  0017d258: 1040000e beq r2,r0,0x0017d294         branch if cannot
  0017d25c: 3042007f andi r2,r2,0x007f remove poach byte?
+
  0017d25c: 3042007f andi r2,r2,0x007f           remove poach byte?
  0017d260: a2220022 sb r2,0x0022(r17) store cannot poach?
+
  0017d260: a2220022 sb r2,0x0022(r17)           store cannot poach?
 
  0017d264: 3c028019 lui r2,0x8019
 
  0017d264: 3c028019 lui r2,0x8019
  0017d268: 904238ca lbu r2,0x38ca(r2) load target new X coordinate
+
  0017d268: 904238ca lbu r2,0x38ca(r2)           load target new X coordinate
 
  0017d26c: 00000000 nop
 
  0017d26c: 00000000 nop
  0017d270: a222001c sb r2,0x001c(r17) store target X coordinate
+
  0017d270: a222001c sb r2,0x001c(r17)           store target X coordinate
 
  0017d274: 3c028019 lui r2,0x8019
 
  0017d274: 3c028019 lui r2,0x8019
  0017d278: 904238cb lbu r2,0x38cb(r2) Y coordinate
+
  0017d278: 904238cb lbu r2,0x38cb(r2)           Y coordinate
 
  0017d27c: 00000000 nop
 
  0017d27c: 00000000 nop
  0017d280: a222001d sb r2,0x001d(r17) store new
+
  0017d280: a222001d sb r2,0x001d(r17)           store new
 
  0017d284: 3c028019 lui r2,0x8019
 
  0017d284: 3c028019 lui r2,0x8019
  0017d288: 904238cc lbu r2,0x38cc(r2) Elevation
+
  0017d288: 904238cc lbu r2,0x38cc(r2)           Elevation
 
  0017d28c: 00000000 nop
 
  0017d28c: 00000000 nop
  0017d290: a222001e sb r2,0x001e(r17) store new
+
  0017d290: a222001e sb r2,0x001e(r17)           store new
 
   
 
   
 
  0017d294: 3c028019 lui r2,0x8019
 
  0017d294: 3c028019 lui r2,0x8019
  0017d298: 944238c8 lhu r2,0x38c8(r2) some reaction/poach flag
+
  0017d298: 944238c8 lhu r2,0x38c8(r2)           some reaction/poach flag
 
  0017d29c: 00000000 nop
 
  0017d29c: 00000000 nop
  0017d2a0: 1440001d bne r2,r0,0x0017d318 branch if != 0
+
  0017d2a0: 1440001d bne r2,r0,0x0017d318         branch if != 0
  0017d2a4: 34020001 ori r2,r0,0x0001 store 01 in 0x18 of current action data in misc. data  
+
  0017d2a4: 34020001 ori r2,r0,0x0001             store 01 in 0x18 of current action data in misc. data
 
  0017d2a8: 3c028019 lui r2,0x8019
 
  0017d2a8: 3c028019 lui r2,0x8019
  0017d2ac: 904238ed lbu r2,0x38ed(r2) load can poach?
+
  0017d2ac: 904238ed lbu r2,0x38ed(r2)           load can poach?
 
  0017d2b0: 00000000 nop
 
  0017d2b0: 00000000 nop
 
  0017d2b4: 30420080 andi r2,r2,0x0080
 
  0017d2b4: 30420080 andi r2,r2,0x0080
  0017d2b8: 14400017 bne r2,r0,0x0017d318 branch if ??
+
  0017d2b8: 14400017 bne r2,r0,0x0017d318         branch if ??
  0017d2bc: 34020001 ori r2,r0,0x0001 store 01 in 0x18 of current action data in misc. data
+
  0017d2bc: 34020001 ori r2,r0,0x0001             store 01 in 0x18 of current action data in misc. data
 
  0017d2c0: 3c028019 lui r2,0x8019
 
  0017d2c0: 3c028019 lui r2,0x8019
  0017d2c4: 904238ed lbu r2,0x38ed(r2) load aftermath byte?
+
  0017d2c4: 904238ed lbu r2,0x38ed(r2)           load aftermath byte?
 
  0017d2c8: 00000000 nop
 
  0017d2c8: 00000000 nop
  0017d2cc: 10400005 beq r2,r0,0x0017d2e4 branch if 0
+
  0017d2cc: 10400005 beq r2,r0,0x0017d2e4         branch if 0
 
  0017d2d0: 34020001 ori r2,r0,0x0001
 
  0017d2d0: 34020001 ori r2,r0,0x0001
  0017d2d4: a2220017 sb r2,0x0017(r17) store post action occurrence
+
  0017d2d4: a2220017 sb r2,0x0017(r17)           store post action occurrence
  0017d2d8: a2220012 sb r2,0x0012(r17) store animate on miss not true/no units hit
+
  0017d2d8: a2220012 sb r2,0x0012(r17)           store animate on miss not true/no units hit
 
  0017d2dc: 34020200 ori r2,r0,0x0200
 
  0017d2dc: 34020200 ori r2,r0,0x0200
  0017d2e0: a6220014 sh r2,0x0014(r17) store 0x200 flag on last ability used ID
+
  0017d2e0: a6220014 sh r2,0x0014(r17)           store 0x200 flag on last ability used ID
 
  0017d2e4: 3c028019 lui r2,0x8019
 
  0017d2e4: 3c028019 lui r2,0x8019
  0017d2e8: 904238c3 lbu r2,0x38c3(r2) load current hit counter
+
  0017d2e8: 904238c3 lbu r2,0x38c3(r2)           load current hit counter
 
  0017d2ec: 3c038019 lui r3,0x8019
 
  0017d2ec: 3c038019 lui r3,0x8019
  0017d2f0: 906338c2 lbu r3,0x38c2(r3) load number of hits
+
  0017d2f0: 906338c2 lbu r3,0x38c2(r3)           load number of hits
  0017d2f4: 24420001 addiu r2,r2,0x0001 current hit counter++
+
  0017d2f4: 24420001 addiu r2,r2,0x0001           current hit counter++
 
  0017d2f8: 3c018019 lui r1,0x8019
 
  0017d2f8: 3c018019 lui r1,0x8019
  0017d2fc: a02238c3 sb r2,0x38c3(r1) store current hit counter
+
  0017d2fc: a02238c3 sb r2,0x38c3(r1)             store current hit counter
 
  0017d300: 3c028019 lui r2,0x8019
 
  0017d300: 3c028019 lui r2,0x8019
  0017d304: 904238c3 lbu r2,0x38c3(r2) load load it again
+
  0017d304: 904238c3 lbu r2,0x38c3(r2)           load load it again
 
  0017d308: 00000000 nop
 
  0017d308: 00000000 nop
  0017d30c: 0043102b sltu r2,r2,r3 set if current hit counter < # hits
+
  0017d30c: 0043102b sltu r2,r2,r3               set if current hit counter < # hits
  0017d310: 10400003 beq r2,r0,0x0017d320 branch if not
+
  0017d310: 10400003 beq r2,r0,0x0017d320         branch if not
  0017d314: 34020001 ori r2,r0,0x0001
+
  0017d314: 34020001 ori r2,r0,0x0001
 
  0017d318: 0805f4c9 j 0x0017d324
 
  0017d318: 0805f4c9 j 0x0017d324
  0017d31c: a2220018 sb r2,0x0018(r17) store continue attack?
+
  0017d31c: a2220018 sb r2,0x0018(r17)           store continue attack?
  0017d320: a2200018 sb r0,0x0018(r17) store end attack
+
  0017d320: a2200018 sb r0,0x0018(r17)           store end attack
  0017d324: 00001021 addu r2,r0,r0 return 0
+
  0017d324: 00001021 addu r2,r0,r0               return 0
 
  0017d328: 8fbf0048 lw r31,0x0048(r29)
 
  0017d328: 8fbf0048 lw r31,0x0048(r29)
 
  0017d32c: 8fb50044 lw r21,0x0044(r29)
 
  0017d32c: 8fb50044 lw r21,0x0044(r29)

Revision as of 04:18, 24 August 2019

0017ce44: 27bdffb0 addiu r29,r29,0xffb0
0017ce48: afb40040 sw r20,0x0040(r29)
0017ce4c: 0080a021 addu r20,r4,r0               r20 = unit ID of the attacker
0017ce50: afb10034 sw r17,0x0034(r29)
0017ce54: 00a08821 addu r17,r5,r0               r17 = misc unit data
0017ce58: 340300ff ori r3,r0,0x00ff
0017ce5c: afb20038 sw r18,0x0038(r29)
0017ce60: 34120014 ori r18,r0,0x0014
0017ce64: 27a20024 addiu r2,r29,0x0024
0017ce68: afbf0048 sw r31,0x0048(r29)
0017ce6c: afb50044 sw r21,0x0044(r29)
0017ce70: afb3003c sw r19,0x003c(r29)
0017ce74: afb00030 sw r16,0x0030(r29)
0017ce78: 3c018019 lui r1,0x8019
0017ce7c: ac20f4f8 sw r0,-0x0b08(r1)            clear 8018f4f8
0017ce80: 3c018019 lui r1,0x8019
0017ce84: ac20f4f4 sw r0,-0x0b0c(r1)
0017ce88: 3c018019 lui r1,0x8019
0017ce8c: a020390f sb r0,0x390f(r1)             clear ability X
0017ce90: a0430000 sb r3,0x0000(r2)             store 0xff onto stack
0017ce94: 2652ffff addiu r18,r18,0xffff         decrease r18 (starts at 0x14)
0017ce98: 0641fffd bgez r18,0x0017ce90          branch if greater or equal to zero
0017ce9c: 2442ffff addiu r2,r2,0xffff           decrease r2
0017cea0: 2a820015 slti r2,r20,0x0015           set if attacker ID < 20
0017cea4: 14400003 bne r2,r0,0x0017ceb4         branch if so
0017cea8: 34120015 ori r18,r0,0x0015
0017ceac: 0805f4ca j 0x0017d328                 jump to end
0017ceb0: 2402ffff addiu r2,r0,0xffff
0017ceb4: 001410c0 sll r2,r20,0x03
0017ceb8: 00541023 subu r2,r2,r20
0017cebc: 00021180 sll r2,r2,0x06
0017cec0: 3c038019 lui r3,0x8019
0017cec4: 246308cc addiu r3,r3,0x08cc           r19 = attacker unit data
0017cec8: 00439821 addu r19,r2,r3
0017cecc: 0c062f5d jal 0x0018bd74               Current Action Data Nulling
0017ced0: 2664018c addiu r4,r19,0x018c
0017ced4: 3c108019 lui r16,0x8019
0017ced8: 26102da0 addiu r16,r16,0x2da0
0017cedc: 02002021 addu r4,r16,r0
0017cee0: 34020008 ori r2,r0,0x0008
0017cee4: a260018c sb r0,0x018c(r19)            clear hit flag byte
0017cee8: 0c062f5d jal 0x0018bd74               Current Action Data Nulling
0017ceec: a262018e sb r2,0x018e(r19)            store evade type = 8
0017cef0: a2000000 sb r0,0x0000(r16)            clear temp action data
0017cef4: a2200022 sb r0,0x0022(r17)            clear misc. data
0017cef8: a2200016 sb r0,0x0016(r17)
0017cefc: a2200013 sb r0,0x0013(r17)
0017cf00: 3c028019 lui r2,0x8019
0017cf04: 8c42f5f0 lw r2,-0x0a10(r2)            load reaction check
0017cf08: 00008021 addu r16,r0,r0
0017cf0c: 10400015 beq r2,r0,0x0017cf64         branch if not reacting
0017cf10: a6200020 sh r0,0x0020(r17)

If Reacting
0017cf14: 02802021 addu r4,r20,r0               r4 = attacker ID
0017cf18: 02202821 addu r5,r17,r0               r5 = misc. data
0017cf1c: 27a60028 addiu r6,r29,0x0028
0017cf20: 3c028019 lui r2,0x8019
0017cf24: 94422d9c lhu r2,0x2d9c(r2)            load reaction ID
0017cf28: 27a70010 addiu r7,r29,0x0010
0017cf2c: 0c05f2b3 jal 0x0017cacc               Reaction Target/Hit Calculation
0017cf30: a6220020 sh r2,0x0020(r17)            returns r2=01 if no hit

flags = 04, !08
0017cf34: 10400010 beq r2,r0,0x0017cf78         branch if hit
0017cf38: 340201b8 ori r2,r0,0x01b8
0017cf3c: 3c038019 lui r3,0x8019
0017cf40: 84632d9c lh r3,0x2d9c(r3)             load reaction ID
0017cf44: 00000000 nop
0017cf48: 14620003 bne r3,r2,0x0017cf58         branch if not 0x1b8 - Reflect
0017cf4c: 34020001 ori r2,r0,0x0001             return r2=01
0017cf50: 0805f3d7 j 0x0017cf5c
0017cf54: a3a2002c sb r2,0x002c(r29)            store 1 on the stack
0017cf58: a3a0002c sb r0,0x002c(r29)            store 0 on the stack
0017cf5c: 0805f3de j 0x0017cf78
0017cf60: 34100001 ori r16,r0,0x0001

If not Reacting
0017cf64: 9262016f lbu r2,0x016f(r19)           load skillset of last attack?
0017cf68: 00000000 nop
0017cf6c: 14520002 bne r2,r18,0x0017cf78        branch if skillset isn't 0x15 - math skill
0017cf70: 34020001 ori r2,r0,0x0001
0017cf74: a2220013 sb r2,0x0013(r17)

If reaction target/hit calculation is affirmative
0017cf78: 16000041 bne r16,r0,0x0017d080        branch if reaction = reflect
0017cf7c: 27a40010 addiu r4,r29,0x0010
0017cf80: 2664016e addiu r4,r19,0x016e          r4 = attackers target data offset
0017cf84: 0c05f349 jal 0x0017cd24               Map calculations for attack, weapon range, etc.
0017cf88: 27a5002c addiu r5,r29,0x002c
0017cf8c: 2403ffff addiu r3,r0,0xffff
0017cf90: 14430004 bne r2,r3,0x0017cfa4         branch attack is valid
0017cf94: 2402ffff addiu r2,r0,0xffff
0017cf98: a2200001 sb r0,0x0001(r17)            clear hit counter
0017cf9c: 0805f4ca j 0x0017d328
0017cfa0: a2200018 sb r0,0x0018(r17)            clear ??

0017cfa4: 3c108019 lui r16,0x8019
0017cfa8: 261038ef addiu r16,r16,0x38ef         801938ef
0017cfac: 92020000 lbu r2,0x0000(r16)           load post action target ID
0017cfb0: 00000000 nop
0017cfb4: 2c420015 sltiu r2,r2,0x0015           set if less than 20
0017cfb8: 1040002d beq r2,r0,0x0017d070         branch if invalid target
0017cfbc: 27a40010 addiu r4,r29,0x0010
0017cfc0: 3c028019 lui r2,0x8019
0017cfc4: 944238c8 lhu r2,0x38c8(r2)            load post-action
0017cfc8: 00000000 nop
0017cfcc: 14400007 bne r2,r0,0x0017cfec         branch if not 0 (reacting?)
0017cfd0: 00000000 nop
0017cfd4: 3c028019 lui r2,0x8019
0017cfd8: 904238ed lbu r2,0x38ed(r2)            load can poach flags
0017cfdc: 00000000 nop
0017cfe0: 30420080 andi r2,r2,0x0080
0017cfe4: 10400022 beq r2,r0,0x0017d070         branch if not taking fall damage
0017cfe8: 00000000 nop

if 801938ed
0017cfec: 0c05ed28 jal 0x0017b4a0               Disable Green Panel Flags
0017cff0: 00000000 nop
0017cff4: 340600ff ori r6,r0,0x00ff
0017cff8: 27a40011 addiu r4,r29,0x0011
0017cffc: 27a50020 addiu r5,r29,0x0020
0017d000: 92030000 lbu r3,0x0000(r16)           load post action target ID
0017d004: 34020001 ori r2,r0,0x0001
0017d008: afa20028 sw r2,0x0028(r29)
0017d00c: a3a30010 sb r3,0x0010(r29)
0017d010: a0860000 sb r6,0x0000(r4)
0017d014: 24840001 addiu r4,r4,0x0001
0017d018: 0085102a slt r2,r4,r5
0017d01c: 1440fffc bne r2,r0,0x0017d010
0017d020: 00000000 nop
0017d024: 3c028019 lui r2,0x8019
0017d028: 904238ef lbu r2,0x38ef(r2)            load post action target ID
0017d02c: 00000000 nop
0017d030: 000220c0 sll r4,r2,0x03
0017d034: 00822023 subu r4,r4,r2
0017d038: 00042180 sll r4,r4,0x06
0017d03c: 3c028019 lui r2,0x8019
0017d040: 244208cc addiu r2,r2,0x08cc           get target for post action's data
0017d044: 0c060428 jal 0x001810a0               Map Location Calculation
0017d048: 00822021 addu r4,r4,r2
0017d04c: 000210c0 sll r2,r2,0x03
0017d050: 3c038019 lui r3,0x8019
0017d054: 2463f8cc addiu r3,r3,0xf8cc           tile data
0017d058: 00431021 addu r2,r2,r3
0017d05c: 90430005 lbu r3,0x0005(r2)
0017d060: 00000000 nop
0017d064: 34630080 ori r3,r3,0x0080             set target's panel = targeted
0017d068: a0430005 sb r3,0x0005(r2)
0017d06c: 27a40010 addiu r4,r29,0x0010

0017d070: 0c05f614 jal 0x0017d850               0017d850 - 0017da1c more targeting checks
0017d074: 02602821 addu r5,r19,r0
0017d078: afa20028 sw r2,0x0028(r29)
0017d07c: 27a40010 addiu r4,r29,0x0010
0017d080: 341500ff ori r21,r0,0x00ff
0017d084: 27b00010 addiu r16,r29,0x0010
0017d088: 93a20028 lbu r2,0x0028(r29)
0017d08c: 3c018019 lui r1,0x8019
0017d090: a02238ec sb r2,0x38ec(r1)             store able to knockback/hit counter
0017d094: 0c063b7e jal 0x0018edf8               Store ability data
0017d098: 27b20025 addiu r18,r29,0x0025
0017d09c: 0c062c9d jal 0x0018b274               Store used weapon ID based on action menu byte
0017d0a0: 2664016e addiu r4,r19,0x016e
0017d0a4: 92050000 lbu r5,0x0000(r16)           load from stack
0017d0a8: 00000000 nop
0017d0ac: 10b50005 beq r5,r21,0x0017d0c4        branch if r5 = 0xff?
0017d0b0: 26100001 addiu r16,r16,0x0001
0017d0b4: 3c018019 lui r1,0x8019
0017d0b8: a02038e9 sb r0,0x38e9(r1)             clear default to attack?
0017d0bc: 0c062cd3 jal 0x0018b34c               Pre Formula Setup (FDC)
0017d0c0: 2664016e addiu r4,r19,0x016e
0017d0c4: 0212102a slt r2,r16,r18               r16 and r18 = stack addresses
0017d0c8: 1440fff6 bne r2,r0,0x0017d0a4         perform for all targets?
0017d0cc: 00000000 nop
0017d0d0: 0c062b1d jal 0x0018ac74               Remove transparent status if Jump is used?
0017d0d4: 02602021 addu r4,r19,r0
0017d0d8: 0c063b89 jal 0x0018ee24               Count number of targets hit by ability, return r2 = hit counter
0017d0dc: 26240002 addiu r4,r17,0x0002
0017d0e0: afa20028 sw r2,0x0028(r29)            store hit counter
0017d0e4: 93a20028 lbu r2,0x0028(r29)           load hit counter
0017d0e8: 00000000 nop
0017d0ec: a2220001 sb r2,0x0001(r17)            store hit counter in 0x18c of misc. data
0017d0f0: 93a20028 lbu r2,0x0028(r29)           load hit counter
0017d0f4: 3c038019 lui r3,0x8019
0017d0f8: 8c63f5f0 lw r3,-0x0a10(r3)            load reaction byte
0017d0fc: 3c018019 lui r1,0x8019
0017d100: a02238ec sb r2,0x38ec(r1)             store hit counter
0017d104: 14600004 bne r3,r0,0x0017d118         branch if ability is a reaction?
0017d108: 02602021 addu r4,r19,r0
0017d10c: 34020001 ori r2,r0,0x0001
0017d110: 3c018019 lui r1,0x8019
0017d114: a02238e8 sb r2,0x38e8(r1)             store can gain exp
0017d118: a2200023 sb r0,0x0023(r17)
0017d11c: 93a60028 lbu r6,0x0028(r29)           load hit counter
0017d120: 0c05f504 jal 0x0017d410               Draw out routine dealing with experience gain
0017d124: 02202821 addu r5,r17,r0               r5 = misc. data
0017d128: a2340000 sb r20,0x0000(r17)           store attacking unit ID?
0017d12c: 3c028019 lui r2,0x8019
0017d130: 904238d8 lbu r2,0x38d8(r2)            load used weapon ID
0017d134: 02602021 addu r4,r19,r0
0017d138: a2200017 sb r0,0x0017(r17)            clear reaction occurred byte?
0017d13c: a222001f sb r2,0x001f(r17)            store used weapon ID
0017d140: 3c028019 lui r2,0x8019
0017d144: 904238c3 lbu r2,0x38c3(r2)            load hit number
0017d148: 02202821 addu r5,r17,r0               r5 = misc unit data
0017d14c: 0c05f4d4 jal 0x0017d350               Set target coordinates for ability?
0017d150: a2220019 sb r2,0x0019(r17)            store hit number
0017d154: 8fa20028 lw r2,0x0028(r29)            load hit counter
0017d158: 00000000 nop
0017d15c: 1440001c bne r2,r0,0x0017d1d0         branch if units are hit
0017d160: 00000000 nop

If units are not hit
0017d164: 3c028019 lui r2,0x8019
0017d168: 904238c3 lbu r2,0x38c3(r2)            load hit number
0017d16c: 00000000 nop
0017d170: 24420001 addiu r2,r2,0x0001           increment current hit counter
0017d174: 3c018019 lui r1,0x8019
0017d178: a02238c3 sb r2,0x38c3(r1)             store new hit number
0017d17c: 96630170 lhu r3,0x0170(r19)           load last attack used
0017d180: 93a2002c lbu r2,0x002c(r29)           load ability flags 5
0017d184: a620001a sh r0,0x001a(r17)            clear ?? reaction ID?
0017d188: 30420001 andi r2,r2,0x0001
0017d18c: 14400003 bne r2,r0,0x0017d19c         branch if animate on miss = true
0017d190: a6230014 sh r3,0x0014(r17)            store last attack used
0017d194: 34020001 ori r2,r0,0x0001
0017d198: a2220012 sb r2,0x0012(r17)            store animate on miss flag
0017d19c: 3c028019 lui r2,0x8019
0017d1a0: 904238c3 lbu r2,0x38c3(r2)            load current hit counter
0017d1a4: 3c038019 lui r3,0x8019
0017d1a8: 906338c2 lbu r3,0x38c2(r3)            load number of hits
0017d1ac: 00000000 nop
0017d1b0: 0043102b sltu r2,r2,r3                set if number of hits not reached total yet
0017d1b4: 10400003 beq r2,r0,0x0017d1c4         branch if not
0017d1b8: 34020001 ori r2,r0,0x0001
0017d1bc: 0805f472 j 0x0017d1c8
0017d1c0: a2220018 sb r2,0x0018(r17)            store 01 into ??
0017d1c4: a2200018 sb r0,0x0018(r17)            clear ??
0017d1c8: 0805f4ca j 0x0017d328                 jump to end
0017d1cc: 34020001 ori r2,r0,0x0001             return r2 = 0x01

if units are hit:
0017d1d0: 3c028019 lui r2,0x8019
0017d1d4: 9042390e lbu r2,0x390e(r2)            load ability formula?
0017d1d8: a2200012 sb r0,0x0012(r17)            clear ??
0017d1dc: a2220016 sb r2,0x0016(r17)            store ability formula?
0017d1e0: 3c038019 lui r3,0x8019
0017d1e4: 946338c6 lhu r3,0x38c6(r3)            load reaction ID ?
0017d1e8: 00000000 nop
0017d1ec: 10600009 beq r3,r0,0x0017d214         branch if no reaction?
0017d1f0: 00000000 nop
0017d1f4: 3c028019 lui r2,0x8019
0017d1f8: 944238c8 lhu r2,0x38c8(r2)            load post action thing?
0017d1fc: 00000000 nop
0017d200: 14400004 bne r2,r0,0x0017d214
0017d204: 34020001 ori r2,r0,0x0001
0017d208: a6230014 sh r3,0x0014(r17)            store last attack used = reaction ID
0017d20c: 0805f48f j 0x0017d23c
0017d210: a2220017 sb r2,0x0017(r17)            store reaction occurred
0017d214: 3c028019 lui r2,0x8019
0017d218: 904238e9 lbu r2,0x38e9(r2)            load default to attack flag?
0017d21c: 00000000 nop
0017d220: 10400003 beq r2,r0,0x0017d230         branch if not defaulting to attack
0017d224: 00000000 nop
0017d228: 0805f48f j 0x0017d23c
0017d22c: a6200014 sh r0,0x0014(r17)            Store last attack used = attack
0017d230: 96620170 lhu r2,0x0170(r19)           load last attack used half from unit data
0017d234: 00000000 nop
0017d238: a6220014 sh r2,0x0014(r17)            store last attack used half from unit data
0017d23c: 3c028019 lui r2,0x8019
0017d240: 944238c6 lhu r2,0x38c6(r2)            load reaction ID
0017d244: 00000000 nop
0017d248: a622001a sh r2,0x001a(r17)            store reaction ID in misc. data
0017d24c: 3c028019 lui r2,0x8019
0017d250: 904238ed lbu r2,0x38ed(r2)            load can poach? post action?
0017d254: 00000000 nop
0017d258: 1040000e beq r2,r0,0x0017d294         branch if cannot
0017d25c: 3042007f andi r2,r2,0x007f            remove poach byte?
0017d260: a2220022 sb r2,0x0022(r17)            store cannot poach?
0017d264: 3c028019 lui r2,0x8019
0017d268: 904238ca lbu r2,0x38ca(r2)            load target new X coordinate
0017d26c: 00000000 nop
0017d270: a222001c sb r2,0x001c(r17)            store target X coordinate
0017d274: 3c028019 lui r2,0x8019
0017d278: 904238cb lbu r2,0x38cb(r2)            Y coordinate
0017d27c: 00000000 nop
0017d280: a222001d sb r2,0x001d(r17)            store new
0017d284: 3c028019 lui r2,0x8019
0017d288: 904238cc lbu r2,0x38cc(r2)            Elevation
0017d28c: 00000000 nop
0017d290: a222001e sb r2,0x001e(r17)            store new

0017d294: 3c028019 lui r2,0x8019
0017d298: 944238c8 lhu r2,0x38c8(r2)            some reaction/poach flag
0017d29c: 00000000 nop
0017d2a0: 1440001d bne r2,r0,0x0017d318         branch if != 0
0017d2a4: 34020001 ori r2,r0,0x0001             store 01 in 0x18 of current action data in misc. data
0017d2a8: 3c028019 lui r2,0x8019
0017d2ac: 904238ed lbu r2,0x38ed(r2)            load can poach?
0017d2b0: 00000000 nop
0017d2b4: 30420080 andi r2,r2,0x0080
0017d2b8: 14400017 bne r2,r0,0x0017d318         branch if ??
0017d2bc: 34020001 ori r2,r0,0x0001             store 01 in 0x18 of current action data in misc. data
0017d2c0: 3c028019 lui r2,0x8019
0017d2c4: 904238ed lbu r2,0x38ed(r2)            load aftermath byte?
0017d2c8: 00000000 nop
0017d2cc: 10400005 beq r2,r0,0x0017d2e4         branch if 0
0017d2d0: 34020001 ori r2,r0,0x0001
0017d2d4: a2220017 sb r2,0x0017(r17)            store post action occurrence
0017d2d8: a2220012 sb r2,0x0012(r17)            store animate on miss not true/no units hit
0017d2dc: 34020200 ori r2,r0,0x0200
0017d2e0: a6220014 sh r2,0x0014(r17)            store 0x200 flag on last ability used ID
0017d2e4: 3c028019 lui r2,0x8019
0017d2e8: 904238c3 lbu r2,0x38c3(r2)            load current hit counter
0017d2ec: 3c038019 lui r3,0x8019
0017d2f0: 906338c2 lbu r3,0x38c2(r3)            load number of hits
0017d2f4: 24420001 addiu r2,r2,0x0001           current hit counter++
0017d2f8: 3c018019 lui r1,0x8019
0017d2fc: a02238c3 sb r2,0x38c3(r1)             store current hit counter
0017d300: 3c028019 lui r2,0x8019
0017d304: 904238c3 lbu r2,0x38c3(r2)            load load it again
0017d308: 00000000 nop
0017d30c: 0043102b sltu r2,r2,r3                set if current hit counter < # hits
0017d310: 10400003 beq r2,r0,0x0017d320         branch if not
0017d314: 34020001 ori r2,r0,0x0001
0017d318: 0805f4c9 j 0x0017d324
0017d31c: a2220018 sb r2,0x0018(r17)            store continue attack?
0017d320: a2200018 sb r0,0x0018(r17)            store end attack
0017d324: 00001021 addu r2,r0,r0                return 0
0017d328: 8fbf0048 lw r31,0x0048(r29)
0017d32c: 8fb50044 lw r21,0x0044(r29)
0017d330: 8fb40040 lw r20,0x0040(r29)
0017d334: 8fb3003c lw r19,0x003c(r29)
0017d338: 8fb20038 lw r18,0x0038(r29)
0017d33c: 8fb10034 lw r17,0x0034(r29)
0017d340: 8fb00030 lw r16,0x0030(r29)
0017d344: 27bd0050 addiu r29,r29,0x0050
0017d348: 03e00008 jr r31
0017d34c: 00000000 nop