Difference between revisions of "Calculate Ability Pointers and Type"
Jump to navigation
Jump to search
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
− | + | '''Parameters''' : r4 = Ability ID | |
− | 0005a72c: 308401ff andi r4,r4,0x01ff | + | r5 = Previous routine Stack pointer 1 |
− | 0005a730: 000418c0 sll r3,r4,0x03 | + | r6 = Previous routine Stack pointer 2 |
− | 0005a734: 3c028006 lui r2,0x8006 | + | |
− | 0005a738: 2442ebf0 addiu r2,r2, | + | '''Returns''' : r2 = 0x00 if Used ability possess a data 2 table (ID < 0x170) |
− | 0005a73c: 00621021 addu r2,r3,r2 | + | r2 = 0x01 If Ability is an Item Ability |
− | 0005a740: aca20000 sw r2,0x0000(r5) | + | r2 = 0x02 If Ability is a Throw Ability |
− | 0005a744: 28820170 slti r2,r4,0x0170 | + | r2 = 0x03 If Ability is a Jump Ability |
− | 0005a748: 10400008 beq r2,r0,0x0005a76c | + | r2 = 0x04 If Ability is a Charge Ability |
− | 0005a74c: 00641023 subu r2,r3,r4 | + | r2 = 0x05 If Ability is a Math Ability |
− | 0005a750: 00021040 sll r2,r2,0x01 | + | r2 = 0x06 If Ability is a Reaction Ability |
− | 0005a754: 3c038006 lui r3,0x8006 | + | r2 = 0x07 If Ability is a Support Ability |
− | 0005a758: 2463fbf0 addiu r3,r3, | + | r2 = 0x08 If Ability is a Move Ability |
− | 0005a75c: 00431021 addu r2,r2,r3 | + | |
− | 0005a760: acc20000 sw r2,0x0000(r6) | + | '''Store''' : On r5 0x00 Ability Data 1 Pointer |
− | 0005a764: 08016a1f j 0x0005a87c | + | On r6 0x00 Specific Data pointer (data 2, Item, Throw etc...) |
− | 0005a768: 00001021 addu r2,r0,r0 | + | ----------------------------------------------------------------------------------------- |
− | 0005a76c: 2882017e slti r2,r4,0x017e | + | 0005a72c: 308401ff andi r4,r4,0x01ff |{{f/std|<nowiki>r4 = Used Ability ID</nowiki>}} |
− | 0005a770: 10400007 beq r2,r0,0x0005a790 | + | 0005a730: 000418c0 sll r3,r4,0x03 |{{f/std|<nowiki>r3 = Used Ability ID * 8</nowiki>}} |
− | 0005a774: 00000000 nop | + | 0005a734: 3c028006 lui r2,0x8006 | |
− | 0005a778: 3c028006 lui r2,0x8006 | + | 0005a738: 2442ebf0 addiu r2,r2,-0x1410 |{{f/std|<nowiki>r2 = 0x8005ebf0 (start of abilities data 1)</nowiki>}} |
− | 0005a77c: 24420ea0 addiu r2,r2,0x0ea0 | + | 0005a73c: 00621021 addu r2,r3,r2 |{{f/adr|<nowiki>r2 = Used Ability data 1 pointer</nowiki>}} |
− | 0005a780: 00821021 addu r2,r4,r2 | + | 0005a740: aca20000 sw r2,0x0000(r5) |{{f/store|<nowiki>Store Ability's Data 1 Pointer (on previous routine stack)</nowiki>}} |
− | 0005a784: acc20000 sw r2,0x0000(r6) | + | 0005a744: 28820170 slti r2,r4,0x0170 |{{f/std|<nowiki>r2 = 0x01 if Ability ID < 170 </nowiki>}} |
− | 0005a788: 08016a1f j 0x0005a87c | + | 0005a748: 10400008 beq r2,r0,0x0005a76c {{f/Cond|<nowiki>If Used ability < Potion (= has a data 2 table)</nowiki>}} |
− | 0005a78c: 34020001 ori r2,r0,0x0001 | + | 0005a74c: 00641023 subu r2,r3,r4 |{{f/std|<nowiki>r2 = Used Ability ID *7</nowiki>}} |
− | 0005a790: 2882018a slti r2,r4,0x018a | + | 0005a750: 00021040 sll r2,r2,0x01 |{{f/std|<nowiki>r2 = Used Ability ID *14</nowiki>}} |
− | 0005a794: 10400007 beq r2,r0,0x0005a7b4 | + | 0005a754: 3c038006 lui r3,0x8006 | |
− | 0005a798: 00000000 nop | + | 0005a758: 2463fbf0 addiu r3,r3,-0x0410 |{{f/std|<nowiki>r3 = 0x8005fbf0 (Start of gata 2 table)</nowiki>}} |
− | 0005a79c: 3c028006 lui r2,0x8006 | + | 0005a75c: 00431021 addu r2,r2,r3 |{{f/adr|<nowiki>r2 = Used ability data 2 pointer</nowiki>}} |
− | 0005a7a0: 24420ea2 addiu r2,r2,0x0ea2 | + | 0005a760: acc20000 sw r2,0x0000(r6) |{{f/store|<nowiki>Store Ability's Data 2 Pointer (previous routine stack)</nowiki>}} |
− | 0005a7a4: 00821021 addu r2,r4,r2 | + | 0005a764: 08016a1f j 0x0005a87c {{f/jump|<nowiki>Jump to </nowiki>{{f/loc|<nowiki>END</nowiki>}}<nowiki> - r2 = 0x00</nowiki>}} |
− | 0005a7a8: acc20000 sw r2,0x0000(r6) | + | 0005a768: 00001021 addu r2,r0,r0 |{{f/std|<nowiki>r2 = 0x00</nowiki>}} |
− | 0005a7ac: 08016a1f j 0x0005a87c | + | 0005a76c: 2882017e slti r2,r4,0x017e |{{f/std|<nowiki>r2 = 0x01 if Ability ID < 17e (0x170 to 0x17d = Item abilities)</nowiki>}} |
− | 0005a7b0: 34020002 ori r2,r0,0x0002 | + | 0005a770: 10400007 beq r2,r0,0x0005a790 {{f/Cond|<nowiki>If Used Ability is an item Ability</nowiki>}} |
− | 0005a7b4: 28820196 slti r2,r4,0x0196 | + | 0005a774: 00000000 nop |{{f/std|<nowiki> </nowiki>}} |
− | 0005a7b8: 10400007 beq r2,r0,0x0005a7d8 | + | 0005a778: 3c028006 lui r2,0x8006 |{{f/std|<nowiki> </nowiki>}} |
− | 0005a7bc: 00041040 sll r2,r4,0x01 | + | 0005a77c: 24420ea0 addiu r2,r2,0x0ea0 |{{f/std|<nowiki>r2 = 0x80060ea0</nowiki>}} |
− | 0005a7c0: 3c038006 lui r3,0x8006 | + | 0005a780: 00821021 addu r2,r4,r2 |{{f/adr|<nowiki>r2 = Used ability Item pointer</nowiki>}} {{f/std|<nowiki>0x80060ea0 + 0x170 = 0x80061010 (start of Item table)</nowiki>}} |
− | 0005a7c4: 24630d18 addiu r3,r3,0x0d18 | + | 0005a784: acc20000 sw r2,0x0000(r6) |{{f/store|<nowiki>Store Ability Item's Pointer (previous routine stack)</nowiki>}} |
− | 0005a7c8: 00431021 addu r2,r2,r3 | + | 0005a788: 08016a1f j 0x0005a87c {{f/jump|<nowiki>Jump to </nowiki>{{f/loc|<nowiki>END</nowiki>}}<nowiki> - r2 = 0x01</nowiki>}} |
− | 0005a7cc: acc20000 sw r2,0x0000(r6) | + | 0005a78c: 34020001 ori r2,r0,0x0001 |{{f/std|<nowiki>r2 = 0x01</nowiki>}} |
− | 0005a7d0: 08016a1f j 0x0005a87c | + | 0005a790: 2882018a slti r2,r4,0x018a |{{f/std|<nowiki>r2 = 0x01 if Ability ID < 0x18a (0x17e to 0x189 = Throw abilities)</nowiki>}} |
− | 0005a7d4: 34020003 ori r2,r0,0x0003 | + | 0005a794: 10400007 beq r2,r0,0x0005a7b4 {{f/Cond|<nowiki>If Ability is a Throw ability</nowiki>}} |
− | 0005a7d8: 2882019e slti r2,r4,0x019e | + | 0005a798: 00000000 nop |{{f/std|<nowiki> </nowiki>}} |
− | 0005a7dc: 10400007 beq r2,r0,0x0005a7fc | + | 0005a79c: 3c028006 lui r2,0x8006 |{{f/std|<nowiki> </nowiki>}} |
− | 0005a7e0: 00041040 sll r2,r4,0x01 | + | 0005a7a0: 24420ea2 addiu r2,r2,0x0ea2 |{{f/std|<nowiki>r2 = 0x80060ea2</nowiki>}} |
− | 0005a7e4: 3c038006 lui r3,0x8006 | + | 0005a7a4: 00821021 addu r2,r4,r2 |{{f/adr|<nowiki>r2 = Used ability thrown item pointer</nowiki>}} {{f/std|<nowiki> 0x8006ea2 + 0x18a = 0x80061020</nowiki>}} |
− | 0005a7e8: 24630d18 addiu r3,r3,0x0d18 | + | 0005a7a8: acc20000 sw r2,0x0000(r6) |{{f/store|<nowiki>Store Thrown item pointer (previous routine stack)</nowiki>}} |
− | 0005a7ec: 00431021 addu r2,r2,r3 | + | 0005a7ac: 08016a1f j 0x0005a87c {{f/jump|<nowiki>Jump to </nowiki>{{f/loc|<nowiki>END</nowiki>}}<nowiki> - r2 = 0x02</nowiki>}} |
− | 0005a7f0: acc20000 sw r2,0x0000(r6) | + | 0005a7b0: 34020002 ori r2,r0,0x0002 |{{f/std|<nowiki>r2 = 0x02</nowiki>}} |
− | 0005a7f4: 08016a1f j 0x0005a87c | + | 0005a7b4: 28820196 slti r2,r4,0x0196 |{{f/std|<nowiki>r2 = 0x01 if Ability ID < 0x196 (0x18a to 0x195 = Jump Abilities ID)</nowiki>}} |
− | 0005a7f8: 34020004 ori r2,r0,0x0004 | + | 0005a7b8: 10400007 beq r2,r0,0x0005a7d8 {{f/Cond|<nowiki>If Used Ability is a jump ability</nowiki>}} |
− | 0005a7fc: 288201a6 slti r2,r4,0x01a6 | + | 0005a7bc: 00041040 sll r2,r4,0x01 |{{f/std|<nowiki>r2 = Ability ID * 2</nowiki>}} |
− | 0005a800: 10400007 beq r2,r0,0x0005a820 | + | 0005a7c0: 3c038006 lui r3,0x8006 | |
− | 0005a804: 00000000 nop | + | 0005a7c4: 24630d18 addiu r3,r3,0x0d18 |{{f/std|<nowiki>r3 = 0x80060d18</nowiki>}} |
− | 0005a808: 3c028006 lui r2,0x8006 | + | 0005a7c8: 00431021 addu r2,r2,r3 |{{f/adr|<nowiki>r2 = Used Ability Range/Vertical data pointer</nowiki>}} {{f/std|<nowiki>0x80060d18 + 2*0x18a = 0x8006102c</nowiki>}} |
− | 0005a80c: 24420eb6 addiu r2,r2,0x0eb6 | + | 0005a7cc: acc20000 sw r2,0x0000(r6) |{{f/store|<nowiki>Store Jump's Ability Range/Vertical pointer</nowiki>}} |
− | 0005a810: 00821021 addu r2,r4,r2 | + | 0005a7d0: 08016a1f j 0x0005a87c {{f/jump|<nowiki>Jump to </nowiki>{{f/loc|<nowiki>END</nowiki>}}<nowiki> - r2 = 0x03</nowiki>}} |
− | 0005a814: acc20000 sw r2,0x0000(r6) | + | 0005a7d4: 34020003 ori r2,r0,0x0003 |{{f/std|<nowiki>r2 = 0x03</nowiki>}} |
− | 0005a818: 08016a1f j 0x0005a87c | + | 0005a7d8: 2882019e slti r2,r4,0x019e |{{f/std|<nowiki>r2 = 0x01 if Ability ID < 0x19e (Charge Abilities)</nowiki>}} |
− | 0005a81c: 34020005 ori r2,r0,0x0005 | + | 0005a7dc: 10400007 beq r2,r0,0x0005a7fc {{f/Cond|<nowiki>If Used Ability is a charge ability</nowiki>}} |
− | 0005a820: 288201c6 slti r2,r4,0x01c6 | + | 0005a7e0: 00041040 sll r2,r4,0x01 |{{f/std|<nowiki>r2 = Ability ID * 2</nowiki>}} |
− | 0005a824: 10400007 beq r2,r0,0x0005a844 | + | 0005a7e4: 3c038006 lui r3,0x8006 | |
− | 0005a828: 00000000 nop | + | 0005a7e8: 24630d18 addiu r3,r3,0x0d18 |{{f/std|<nowiki>r3 = 0x80060d18</nowiki>}} |
− | 0005a82c: 3c028006 lui r2,0x8006 | + | 0005a7ec: 00431021 addu r2,r2,r3 |{{f/adr|<nowiki>r2 = Used Ability Power/CT data pointer</nowiki>}} {{f/std|<nowiki>0x80060d18 + 2*0x96 = 0x80061044</nowiki>}} |
− | 0005a830: 24420eb6 addiu r2,r2,0x0eb6 | + | 0005a7f0: acc20000 sw r2,0x0000(r6) |{{f/store|<nowiki>Store Charge's Ability Pointer</nowiki>}} |
− | 0005a834: 00821021 addu r2,r4,r2 | + | 0005a7f4: 08016a1f j 0x0005a87c {{f/jump|<nowiki>Jump to </nowiki>{{f/loc|<nowiki>END</nowiki>}}<nowiki> - r2 = 0x04</nowiki>}} |
− | 0005a838: acc20000 sw r2,0x0000(r6) | + | 0005a7f8: 34020004 ori r2,r0,0x0004 |{{f/std|<nowiki>r2 = 0x04</nowiki>}} |
− | 0005a83c: 08016a1f j 0x0005a87c | + | 0005a7fc: 288201a6 slti r2,r4,0x01a6 |{{f/std|<nowiki>r2 = 0x01 if Ability ID < 0x1a6 (Math Abilities)</nowiki>}} |
− | 0005a840: 34020006 ori r2,r0,0x0006 | + | 0005a800: 10400007 beq r2,r0,0x0005a820 {{f/Cond|<nowiki>If Used Ability is a Math Ability</nowiki>}} |
− | 0005a844: 288201e6 slti r2,r4,0x01e6 | + | 0005a804: 00000000 nop |{{f/std|<nowiki> </nowiki>}} |
− | 0005a848: 14400007 bne r2,r0,0x0005a868 | + | 0005a808: 3c028006 lui r2,0x8006 | |
− | 0005a84c: 00000000 nop | + | 0005a80c: 24420eb6 addiu r2,r2,0x0eb6 |{{f/std|<nowiki>r2 = 0x80060eb6</nowiki>}} |
− | 0005a850: 3c028006 lui r2,0x8006 | + | 0005a810: 00821021 addu r2,r4,r2 |{{f/adr|<nowiki>r2 = Used Ability Math ID data pointer</nowiki>}} {{f/std|<nowiki> 0x80060eb6 + 0x19a = 0x80061054</nowiki>}} |
− | 0005a854: 24420eb6 addiu r2,r2,0x0eb6 | + | 0005a814: acc20000 sw r2,0x0000(r6) |{{f/store|<nowiki>Store Math's Ability Pointer</nowiki>}} |
− | 0005a858: 00821021 addu r2,r4,r2 | + | 0005a818: 08016a1f j 0x0005a87c {{f/jump|<nowiki>Jump to </nowiki>{{f/loc|<nowiki>END</nowiki>}}<nowiki> - r2 = 0x05</nowiki>}} |
− | 0005a85c: acc20000 sw r2,0x0000(r6) | + | 0005a81c: 34020005 ori r2,r0,0x0005 |{{f/std|<nowiki>r2 = 0x05</nowiki>}} |
− | 0005a860: 08016a1f j 0x0005a87c | + | 0005a820: 288201c6 slti r2,r4,0x01c6 |{{f/std|<nowiki>r2 = 0x01 If Ability ID < 0x1c6</nowiki>}} |
− | 0005a864: 34020008 ori r2,r0,0x0008 | + | 0005a824: 10400007 beq r2,r0,0x0005a844 {{f/Cond|<nowiki>If Used Ability is a Reaction Ability</nowiki>}} |
− | 0005a868: 3c028006 lui r2,0x8006 | + | 0005a828: 00000000 nop |{{f/std|<nowiki> </nowiki>}} |
− | 0005a86c: 24420eb6 addiu r2,r2,0x0eb6 | + | 0005a82c: 3c028006 lui r2,0x8006 | |
− | 0005a870: 00821021 addu r2,r4,r2 | + | 0005a830: 24420eb6 addiu r2,r2,0x0eb6 |{{f/std|<nowiki>r2 = 0x80060eb6</nowiki>}} |
− | 0005a874: acc20000 sw r2,0x0000(r6) | + | 0005a834: 00821021 addu r2,r4,r2 |{{f/adr|<nowiki>r2 = Used Ability Reaction ID data pointer</nowiki>}} |
− | 0005a878: 34020007 ori r2,r0,0x0007 | + | 0005a838: acc20000 sw r2,0x0000(r6) |{{f/store|<nowiki>Store Reaction's Ability ID Pointer</nowiki>}} |
− | 0005a87c: 03e00008 jr r31 | + | 0005a83c: 08016a1f j 0x0005a87c {{f/jump|<nowiki>Jump to </nowiki>{{f/loc|<nowiki>END</nowiki>}}<nowiki> - r2 = 0x06</nowiki>}} |
+ | 0005a840: 34020006 ori r2,r0,0x0006 |{{f/std|<nowiki>r2 = 0x06</nowiki>}} | ||
+ | 0005a844: 288201e6 slti r2,r4,0x01e6 |{{f/std|<nowiki>r2 = 0x01 if Ability ID < 0x1e6</nowiki>}} | ||
+ | 0005a848: 14400007 bne r2,r0,0x0005a868 {{f/Cond|<nowiki>If Ability ID is a Move Ability (>= 0x1e6)</nowiki>}} | ||
+ | 0005a84c: 00000000 nop |{{f/std|<nowiki> </nowiki>}} | ||
+ | 0005a850: 3c028006 lui r2,0x8006 | | ||
+ | 0005a854: 24420eb6 addiu r2,r2,0x0eb6 |{{f/std|<nowiki>r2 = 0x80060eb6</nowiki>}} | ||
+ | 0005a858: 00821021 addu r2,r4,r2 |{{f/adr|<nowiki>r2 = Used Ability Move ID data pointer</nowiki>}} | ||
+ | 0005a85c: acc20000 sw r2,0x0000(r6) |{{f/store|<nowiki>Store Movement's Ability Pointer</nowiki>}} | ||
+ | 0005a860: 08016a1f j 0x0005a87c {{f/jump|<nowiki>Jump to </nowiki>{{f/loc|<nowiki>END</nowiki>}}<nowiki> - r2 = 0x07</nowiki>}} | ||
+ | 0005a864: 34020008 ori r2,r0,0x0008 |{{f/std|<nowiki>r2 = 0x07</nowiki>}} | ||
+ | {{f/Cond|<nowiki>Else Ability ID is a Support Ability (between 0x1c6 and 0x1e5</nowiki>}} | ||
+ | 0005a868: 3c028006 lui r2,0x8006 | | ||
+ | 0005a86c: 24420eb6 addiu r2,r2,0x0eb6 |{{f/std|<nowiki>r2 = 0x80060eb6</nowiki>}} | ||
+ | 0005a870: 00821021 addu r2,r4,r2 |{{f/adr|<nowiki>r2 = Used Ability Support ID data pointer</nowiki>}} | ||
+ | 0005a874: acc20000 sw r2,0x0000(r6) |{{f/store|<nowiki>Store Support Ability Pointer</nowiki>}} | ||
+ | 0005a878: 34020007 ori r2,r0,0x0007 |{{f/std|<nowiki>r2 = 0x07</nowiki>}} | ||
+ | 0005a87c: 03e00008 jr r31 | ||
0005a880: 00000000 nop | 0005a880: 00000000 nop | ||
− | + | === Return locations === | |
− | + | '''Battle.bin''' | |
− | + | 00136254: [[001361e8_-_00136320]] | |
− | == Return | + | 00141794: [[Spell Quote determination]] |
− | |||
− | |||
− |
Latest revision as of 21:03, 27 February 2022
Parameters : r4 = Ability ID r5 = Previous routine Stack pointer 1 r6 = Previous routine Stack pointer 2 Returns : r2 = 0x00 if Used ability possess a data 2 table (ID < 0x170) r2 = 0x01 If Ability is an Item Ability r2 = 0x02 If Ability is a Throw Ability r2 = 0x03 If Ability is a Jump Ability r2 = 0x04 If Ability is a Charge Ability r2 = 0x05 If Ability is a Math Ability r2 = 0x06 If Ability is a Reaction Ability r2 = 0x07 If Ability is a Support Ability r2 = 0x08 If Ability is a Move Ability Store : On r5 0x00 Ability Data 1 Pointer On r6 0x00 Specific Data pointer (data 2, Item, Throw etc...) ----------------------------------------------------------------------------------------- 0005a72c: 308401ff andi r4,r4,0x01ff |r4 = Used Ability ID 0005a730: 000418c0 sll r3,r4,0x03 |r3 = Used Ability ID * 8 0005a734: 3c028006 lui r2,0x8006 | 0005a738: 2442ebf0 addiu r2,r2,-0x1410 |r2 = 0x8005ebf0 (start of abilities data 1) 0005a73c: 00621021 addu r2,r3,r2 |r2 = Used Ability data 1 pointer 0005a740: aca20000 sw r2,0x0000(r5) |Store Ability's Data 1 Pointer (on previous routine stack) 0005a744: 28820170 slti r2,r4,0x0170 |r2 = 0x01 if Ability ID < 170 0005a748: 10400008 beq r2,r0,0x0005a76c #If Used ability < Potion (= has a data 2 table) 0005a74c: 00641023 subu r2,r3,r4 |r2 = Used Ability ID *7 0005a750: 00021040 sll r2,r2,0x01 |r2 = Used Ability ID *14 0005a754: 3c038006 lui r3,0x8006 | 0005a758: 2463fbf0 addiu r3,r3,-0x0410 |r3 = 0x8005fbf0 (Start of gata 2 table) 0005a75c: 00431021 addu r2,r2,r3 |r2 = Used ability data 2 pointer 0005a760: acc20000 sw r2,0x0000(r6) |Store Ability's Data 2 Pointer (previous routine stack) 0005a764: 08016a1f j 0x0005a87c >>Jump to END - r2 = 0x00 0005a768: 00001021 addu r2,r0,r0 |r2 = 0x00 0005a76c: 2882017e slti r2,r4,0x017e |r2 = 0x01 if Ability ID < 17e (0x170 to 0x17d = Item abilities) 0005a770: 10400007 beq r2,r0,0x0005a790 #If Used Ability is an item Ability 0005a774: 00000000 nop | 0005a778: 3c028006 lui r2,0x8006 | 0005a77c: 24420ea0 addiu r2,r2,0x0ea0 |r2 = 0x80060ea0 0005a780: 00821021 addu r2,r4,r2 |r2 = Used ability Item pointer 0x80060ea0 + 0x170 = 0x80061010 (start of Item table) 0005a784: acc20000 sw r2,0x0000(r6) |Store Ability Item's Pointer (previous routine stack) 0005a788: 08016a1f j 0x0005a87c >>Jump to END - r2 = 0x01 0005a78c: 34020001 ori r2,r0,0x0001 |r2 = 0x01 0005a790: 2882018a slti r2,r4,0x018a |r2 = 0x01 if Ability ID < 0x18a (0x17e to 0x189 = Throw abilities) 0005a794: 10400007 beq r2,r0,0x0005a7b4 #If Ability is a Throw ability 0005a798: 00000000 nop | 0005a79c: 3c028006 lui r2,0x8006 | 0005a7a0: 24420ea2 addiu r2,r2,0x0ea2 |r2 = 0x80060ea2 0005a7a4: 00821021 addu r2,r4,r2 |r2 = Used ability thrown item pointer 0x8006ea2 + 0x18a = 0x80061020 0005a7a8: acc20000 sw r2,0x0000(r6) |Store Thrown item pointer (previous routine stack) 0005a7ac: 08016a1f j 0x0005a87c >>Jump to END - r2 = 0x02 0005a7b0: 34020002 ori r2,r0,0x0002 |r2 = 0x02 0005a7b4: 28820196 slti r2,r4,0x0196 |r2 = 0x01 if Ability ID < 0x196 (0x18a to 0x195 = Jump Abilities ID) 0005a7b8: 10400007 beq r2,r0,0x0005a7d8 #If Used Ability is a jump ability 0005a7bc: 00041040 sll r2,r4,0x01 |r2 = Ability ID * 2 0005a7c0: 3c038006 lui r3,0x8006 | 0005a7c4: 24630d18 addiu r3,r3,0x0d18 |r3 = 0x80060d18 0005a7c8: 00431021 addu r2,r2,r3 |r2 = Used Ability Range/Vertical data pointer 0x80060d18 + 2*0x18a = 0x8006102c 0005a7cc: acc20000 sw r2,0x0000(r6) |Store Jump's Ability Range/Vertical pointer 0005a7d0: 08016a1f j 0x0005a87c >>Jump to END - r2 = 0x03 0005a7d4: 34020003 ori r2,r0,0x0003 |r2 = 0x03 0005a7d8: 2882019e slti r2,r4,0x019e |r2 = 0x01 if Ability ID < 0x19e (Charge Abilities) 0005a7dc: 10400007 beq r2,r0,0x0005a7fc #If Used Ability is a charge ability 0005a7e0: 00041040 sll r2,r4,0x01 |r2 = Ability ID * 2 0005a7e4: 3c038006 lui r3,0x8006 | 0005a7e8: 24630d18 addiu r3,r3,0x0d18 |r3 = 0x80060d18 0005a7ec: 00431021 addu r2,r2,r3 |r2 = Used Ability Power/CT data pointer 0x80060d18 + 2*0x96 = 0x80061044 0005a7f0: acc20000 sw r2,0x0000(r6) |Store Charge's Ability Pointer 0005a7f4: 08016a1f j 0x0005a87c >>Jump to END - r2 = 0x04 0005a7f8: 34020004 ori r2,r0,0x0004 |r2 = 0x04 0005a7fc: 288201a6 slti r2,r4,0x01a6 |r2 = 0x01 if Ability ID < 0x1a6 (Math Abilities) 0005a800: 10400007 beq r2,r0,0x0005a820 #If Used Ability is a Math Ability 0005a804: 00000000 nop | 0005a808: 3c028006 lui r2,0x8006 | 0005a80c: 24420eb6 addiu r2,r2,0x0eb6 |r2 = 0x80060eb6 0005a810: 00821021 addu r2,r4,r2 |r2 = Used Ability Math ID data pointer 0x80060eb6 + 0x19a = 0x80061054 0005a814: acc20000 sw r2,0x0000(r6) |Store Math's Ability Pointer 0005a818: 08016a1f j 0x0005a87c >>Jump to END - r2 = 0x05 0005a81c: 34020005 ori r2,r0,0x0005 |r2 = 0x05 0005a820: 288201c6 slti r2,r4,0x01c6 |r2 = 0x01 If Ability ID < 0x1c6 0005a824: 10400007 beq r2,r0,0x0005a844 #If Used Ability is a Reaction Ability 0005a828: 00000000 nop | 0005a82c: 3c028006 lui r2,0x8006 | 0005a830: 24420eb6 addiu r2,r2,0x0eb6 |r2 = 0x80060eb6 0005a834: 00821021 addu r2,r4,r2 |r2 = Used Ability Reaction ID data pointer 0005a838: acc20000 sw r2,0x0000(r6) |Store Reaction's Ability ID Pointer 0005a83c: 08016a1f j 0x0005a87c >>Jump to END - r2 = 0x06 0005a840: 34020006 ori r2,r0,0x0006 |r2 = 0x06 0005a844: 288201e6 slti r2,r4,0x01e6 |r2 = 0x01 if Ability ID < 0x1e6 0005a848: 14400007 bne r2,r0,0x0005a868 #If Ability ID is a Move Ability (>= 0x1e6) 0005a84c: 00000000 nop | 0005a850: 3c028006 lui r2,0x8006 | 0005a854: 24420eb6 addiu r2,r2,0x0eb6 |r2 = 0x80060eb6 0005a858: 00821021 addu r2,r4,r2 |r2 = Used Ability Move ID data pointer 0005a85c: acc20000 sw r2,0x0000(r6) |Store Movement's Ability Pointer 0005a860: 08016a1f j 0x0005a87c >>Jump to END - r2 = 0x07 0005a864: 34020008 ori r2,r0,0x0008 |r2 = 0x07 #Else Ability ID is a Support Ability (between 0x1c6 and 0x1e5 0005a868: 3c028006 lui r2,0x8006 | 0005a86c: 24420eb6 addiu r2,r2,0x0eb6 |r2 = 0x80060eb6 0005a870: 00821021 addu r2,r4,r2 |r2 = Used Ability Support ID data pointer 0005a874: acc20000 sw r2,0x0000(r6) |Store Support Ability Pointer 0005a878: 34020007 ori r2,r0,0x0007 |r2 = 0x07 0005a87c: 03e00008 jr r31 0005a880: 00000000 nop
Return locations
Battle.bin 00136254: 001361e8_-_00136320 00141794: Spell Quote determination