Check target type

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
BATTLE.BIN : Check target type
--------------------------------------------------------------------------------------------------
Parameters : r4 is Focused Unit ID

Returns : r2 = 0x01 if Unit is Target is not targetable (from AI targeting flag)
          r2 = 0x01 if Unit is Dead without reraise (dead for good)
          r2 = 0x01 if Unit is Petrified
          r2 = 0x00 if none of above are true (worth to be considered ?)
--------------------------------------------------------------------------------------------------
00196c8c: 00041100 sll r2,r4,0x04           |Unit ID * 16
00196c90: 3c01801a lui r1,0x801a            |
00196c94: 00220821 addu r1,r1,r2            |801a0000 + Unit offset
00196c98: 90230bf7 lbu r3,0x0bf7(r1)        |Load AI Targeting Flags/Settings  8019f3c4 + 0x182c + 0x07 + Unit Offset (Flags come from Unit Battle stats 0x16a)
00196c9c: 00000000 nop                      |
00196ca0: 00031102 srl r2,r3,0x04           |Left nibble
00196ca4: 30420001 andi r2,r2,0x0001        |Check [Can't be Targeted]
00196ca8: 1440000d bne r2,r0,0x00196ce0     #If Focused Unit is Targetable /Else : branch to END
00196cac: 34020001 ori r2,r0,0x0001         |returns 0x01
00196cb0: 00031142 srl r2,r3,0x05               |
00196cb4: 30420001 andi r2,r2,0x0001            |Check [Dead Unit without reraise]
00196cb8: 14400009 bne r2,r0,0x00196ce0         #If Unit is not Dead (or dead with reraise) /Else : branch to END
00196cbc: 34020001 ori r2,r0,0x0001             |Returns 0x01
00196cc0: 000410c0 sll r2,r4,0x03                   |
00196cc4: 00441023 subu r2,r2,r4                    |
00196cc8: 00021180 sll r2,r2,0x06                   |Unit ID * 0x1c0
00196ccc: 3c018019 lui r1,0x8019                    |
00196cd0: 00220821 addu r1,r1,r2                    |
00196cd4: 90220925 lbu r2,0x0925(r1)                |Load Unit Current Status 2nd Set 0x801908cc + 0x59 + Unit offset
00196cd8: 00000000 nop                              |
00196cdc: 000211c2 srl r2,r2,0x07                   |r2 = 0x1 if Unit is petrified
00196ce0: 03e00008 jr r31                   END
00196ce4: 00000000 nop

Return Locations

BATTLE.BIN
00194618: Some_targetability_setting
00194808: Set_AI_flags_for_target_consideration
00194ec0: Set_AI_ability_considerations_for_all_units_and_self
0019736c: Set_chosen_ability/target_for_AI_status
00198078: Fight_for_Life_-_Auto_Battle_(00197ff4)
00199754: Check_for_good_units_to_target_(based_on_distance,status,coordinate)