Store target stats pointer data

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
BATTLE.BIN :  - Store_target_stats_pointer_data
Use Passed Unit ID as Target, then copy data from 0x80192da0 to Target Action data and call Attack finalization (Handles recoil?)
------------------------------------------------------------------------------------------
Parameter : r4 = Unit ID
Return : r2 = -0x01 if invalid data
         r2 = 0x00 if no invalid data
------------------------------------------------------------------------------------------
0018d70c: 27bdffe8 addiu r29,r29,-0x0018     |
0018d710: afb00010 sw r16,0x0010(r29)        |
0018d714: 00808021 addu r16,r4,r0            |Preserve Unit ID
0018d718: 001010c0 sll r2,r16,0x03           |
0018d71c: 00501023 subu r2,r2,r16            |
0018d720: 00022980 sll r5,r2,0x06            |
0018d724: 3c048019 lui r4,0x8019             |
0018d728: 248408cc addiu r4,r4,0x08cc        |
0018d72c: 00a41821 addu r3,r5,r4             |Pointer to Considered Unit Battle
0018d730: 2a020015 slti r2,r16,0x0015        |
0018d734: afbf0014 sw r31,0x0014(r29)        |
0018d738: 3c018019 lui r1,0x8019             |
0018d73c: ac232d98 sw r3,0x2d98(r1)          |Set  Considered Unit Pointer as Target data Pointer
0018d740: 1040000a beq r2,r0,0x0018d76c      #If Unit ID is invalid :  Exit Returns -0x01
0018d744: 2482018c addiu r2,r4,0x018c        |
0018d748: 00a22821 addu r5,r5,r2             |
0018d74c: 3c018019 lui r1,0x8019             |
0018d750: a03038c1 sb r16,0x38c1(r1)         |Store Considered Unit ID as Target ID
0018d754: 3c018019 lui r1,0x8019             |
0018d758: ac252d90 sw r5,0x2d90(r1)          |Set  Considered Unit action data Pointer as Target current action data Pointer
0018d75c: 90630001 lbu r3,0x0001(r3)         |Load target unit ID
0018d760: 340200ff ori r2,r0,0x00ff          |
0018d764: 14620003 bne r3,r2,0x0018d774      #If Target do not exist (ID = 0xff)
0018d768: 00000000 nop                           |
0018d76c: 080635ed j 0x0018d7b4                  |Exit Returns - 0x01
0018d770: 2402ffff addiu r2,r0,-0x0001           |
                                             Else : Target exists
0018d774: 3c048019 lui r4,0x8019                 |
0018d778: 24842da0 addiu r4,r4,0x2da0            |Attacker current action data copy
0018d77c: 0c017895 jal 0x0005e254                |-->Store_X_Byte_into_Y Transfer data from 0x80192da0 to Considered Unit action data
0018d780: 3406002c ori r6,r0,0x002c              |
0018d784: 0c062f82 jal 0x0018be08                |-->Attack Finalisation & Reaction Flagging
0018d788: 02002021 addu r4,r16,r0                |
0018d78c: 3c048019 lui r4,0x8019                 |
0018d790: 8c842d90 lw r4,0x2d90(r4)              |Pointer to Target current action data
0018d794: 00000000 nop                           |
0018d798: 90830000 lbu r3,0x0000(r4)             |Hit flag
0018d79c: 00000000 nop                           |
0018d7a0: 14600003 bne r3,r0,0x0018d7b0          #If Unit is not hit
0018d7a4: 00402821 addu r5,r2,r0                     |
0018d7a8: 34020008 ori r2,r0,0x0008                  |
0018d7ac: a0820002 sb r2,0x0002(r4)                  |store evade type = canceled by status
0018d7b0: 00a01021 addu r2,r5,r0                 |Return Last routine result
0018d7b4: 8fbf0014 lw r31,0x0014(r29)
0018d7b8: 8fb00010 lw r16,0x0010(r29)
0018d7bc: 27bd0018 addiu r29,r29,0x0018
0018d7c0: 03e00008 jr r31
0018d7c4: 00000000 nop

Return locations

BATTLE.BIN
 00073274: 00073250_-_000732c4
 0019e054: AI_ability_processing