Difference between revisions of "Store counter ability"
Jump to navigation
Jump to search
Line 3: | Line 3: | ||
r5 = skillset of last attack | r5 = skillset of last attack | ||
r6 = ability ID of used attack (to be used as counter) | r6 = ability ID of used attack (to be used as counter) | ||
− | r7 = 0x01 | + | r7 = 0x01 appears to be used for Hamedo, Counter, MBS, Counter Tackle; 0x00 for Counter Magic, Counter Flood |
0017e650: 3c028019 lui r2,0x8019 | 0017e650: 3c028019 lui r2,0x8019 | ||
0017e654: 8c42f8c8 lw r2,-0x0738(r2) load Target ID for reaction? | 0017e654: 8c42f8c8 lw r2,-0x0738(r2) load Target ID for reaction? |
Revision as of 20:12, 30 March 2017
Store Counter Ability? r4 = unit data r5 = skillset of last attack r6 = ability ID of used attack (to be used as counter) r7 = 0x01 appears to be used for Hamedo, Counter, MBS, Counter Tackle; 0x00 for Counter Magic, Counter Flood 0017e650: 3c028019 lui r2,0x8019 0017e654: 8c42f8c8 lw r2,-0x0738(r2) load Target ID for reaction? 0017e658: 27bdffe0 addiu r29,r29,0xffe0 0017e65c: afb20018 sw r18,0x0018(r29) 0017e660: 00809021 addu r18,r4,r0 0017e664: afb00010 sw r16,0x0010(r29) 0017e668: 2650016e addiu r16,r18,0x016e r16 = targetting data 0017e66c: afbf001c sw r31,0x001c(r29) 0017e670: afb10014 sw r17,0x0014(r29) 0017e674: a245016f sb r5,0x016f(r18) store skillset of used attack 0017e678: a6460170 sh r6,0x0170(r18) store ability ID of used attack 0017e67c: 000218c0 sll r3,r2,0x03 0017e680: 00621823 subu r3,r3,r2 0017e684: 00031980 sll r3,r3,0x06 0017e688: 3c028019 lui r2,0x8019 0017e68c: 244208cc addiu r2,r2,0x08cc Target unit data 0017e690: 10e00018 beq r7,r0,0x 0017e6f4 0017e694: 00628821 addu r17,r3,r2 r17 = target unit data?
0017e698: 0c05ea30 jal 0x 0017a8c0 Calculate ability range based on action menu byte 0017e69c: 02002021 addu r4,r16,r0 r16 = targetting data 0017e6a0: 00401821 addu r3,r2,r0 0017e6a4: 2402ffff addiu r2,r0,0xffff 0017e6a8: 10620004 beq r3,r2,0x 0017e6bc branch if result was 0xffff 0017e6ac: 2462fffe addiu r2,r3,0xfffe 0017e6b0: 2c420002 sltiu r2,r2,0x0002 0017e6b4: 10400003 beq r2,r0,0x 0017e6c4 branch if not 2 or 3 0017e6b8: 00000000 nop 0017e6bc: 0805f9d9 j 0x 0017e764 jump to end, return 0xffff 0017e6c0: 2402ffff addiu r2,r0,0xffff
0017e6c4: 0c060428 jal 0x001810a0 map location calculation 0017e6c8: 02202021 addu r4,r17,r0 0017e6cc: 000210c0 sll r2,r2,0x03 0017e6d0: 3c018019 lui r1,0x8019 0017e6d4: 00220821 addu r1,r1,r2 0017e6d8: 9022f8d1 lbu r2,-0x072f(r1) load enemy in range? 0017e6dc: 00000000 nop 0017e6e0: 30420040 andi r2,r2,0x0040 0017e6e4: 14400004 bne r2,r0,0x 0017e6f8 branch if enemy in range? targetable? 0017e6e8: 34020005 ori r2,r0,0x0005 0017e6ec: 0805f9d9 j 0x 0017e764 jump to end 0017e6f0: 2402fffe addiu r2,r0,0xfffe return r2 = 0xfffe
R7 input was 00 0017e6f4: 34020005 ori r2,r0,0x0005 0017e6f8: a202000a sb r2,0x000a(r16) store 0x05 - tile specific targeting 0017e6fc: 3c028019 lui r2,0x8019 0017e700: 9042f8c8 lbu r2,-0x0738(r2) load target ID 0017e704: 00000000 nop 0017e708: a202000b sb r2,0x000b(r16) store Target ID into reacting unit data as target 0017e70c: 92220047 lbu r2,0x0047(r17) load X coordinate 0017e710: 00000000 nop 0017e714: a602000c sh r2,0x000c(r16) store X coordinate of target 0017e718: 92220048 lbu r2,0x0048(r17) 0017e71c: 00000000 nop 0017e720: a6020010 sh r2,0x0010(r16) store Y coordinate of target 0017e724: 96220048 lhu r2,0x0048(r17) 0017e728: 02002021 addu r4,r16,r0 0017e72c: 000213c2 srl r2,r2,0x0f 0017e730: a482000e sh r2,0x000e(r4) store elevation of target 0017e734: 9250015d lbu r16,0x015d(r18) load current ability CT 0017e738: 0c05f0f7 jal 0x 0017c3dc jump to set status flags based on ability 0017e73c: 00000000 nop returns r2 = ability CT? 0017e740: 00401821 addu r3,r2,r0 0017e744: 2402ffff addiu r2,r0,0xffff 0017e748: 10620005 beq r3,r2,0x 0017e760 branch if 0xff ability CT is returned? 0017e74c: a250015d sb r16,0x015d(r18) store current ability CT
0017e750: 2462fffe addiu r2,r3,0xfffe CT - 2 0017e754: 2c420002 sltiu r2,r2,0x0002 set if CT = 2,3 0017e758: 10400002 beq r2,r0,0x 0017e764 branch if not 0017e75c: 00000000 nop
0017e760: 2402fffd addiu r2,r0,0xfffd return r2 = -3 0017e764: 8fbf001c lw r31,0x001c(r29) 0017e768: 8fb20018 lw r18,0x0018(r29) 0017e76c: 8fb10014 lw r17,0x0014(r29) 0017e770: 8fb00010 lw r16,0x0010(r29) 0017e774: 27bd0020 addiu r29,r29,0x0020 0017e778: 03e00008 jr r31 0017e77c: 00000000 nop