Difference between revisions of "Check target type"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
(Uploaded Correct Routine)
m
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<font face='Courier New'>
+
BATTLE.BIN : Check target type
 +
--------------------------------------------------------------------------------------------------
 +
Parameters : r4 is Focused Unit ID
 
   
 
   
  00196c8c: 00041100 sll r2,r4,0x04
+
Returns : r2 = 0x01 if Unit is Target is not targetable (from AI targeting flag)
  00196c90: 3c01801a lui r1,0x801a
+
          r2 = 0x01 if Unit is Dead without reraise (dead for good)
  00196c94: 00220821 addu r1,r1,r2
+
          r2 = 0x01 if Unit is Petrified
  00196c98: 90230bf7 lbu r3,0x0bf7(r1)
+
          r2 = 0x00 if none of above are true (worth to be considered ?)
  00196c9c: 00000000 nop
+
--------------------------------------------------------------------------------------------------
  00196ca0: 00031102 srl r2,r3,0x04
+
  00196c8c: 00041100 sll r2,r4,0x04           |{{f/std|Unit ID * 16}}
  00196ca4: 30420001 andi r2,r2,0x0001
+
  00196c90: 3c01801a lui r1,0x801a           |
  00196ca8: 1440000d bne r2,r0,0x00196ce0
+
  00196c94: 00220821 addu r1,r1,r2           |{{f/std|801a0000 + Unit offset}}
  00196cac: 34020001 ori r2,r0,0x0001
+
  00196c98: 90230bf7 lbu r3,0x0bf7(r1)       |{{f/load|Load AI Targeting Flags/Settings}} {{f/std| 8019f3c4 + 0x182c + 0x07 + Unit Offset (Flags come from Unit Battle stats 0x16a)}}
  00196cb0: 00031142 srl r2,r3,0x05
+
  00196c9c: 00000000 nop                     |
  00196cb4: 30420001 andi r2,r2,0x0001
+
  00196ca0: 00031102 srl r2,r3,0x04           |{{f/std|Left nibble}}
  00196cb8: 14400009 bne r2,r0,0x00196ce0
+
  00196ca4: 30420001 andi r2,r2,0x0001       |{{f/std|Check [Can't be Targeted]}}
  00196cbc: 34020001 ori r2,r0,0x0001
+
  00196ca8: 1440000d bne r2,r0,0x00196ce0     {{f/Cond|If Focused Unit is Targetable}} /Else : branch to {{f/loc|END}}
  00196cc0: 000410c0 sll r2,r4,0x03
+
  00196cac: 34020001 ori r2,r0,0x0001         |{{f/std|returns 0x01}}
  00196cc4: 00441023 subu r2,r2,r4
+
  00196cb0: 00031142 srl r2,r3,0x05               |
  00196cc8: 00021180 sll r2,r2,0x06
+
  00196cb4: 30420001 andi r2,r2,0x0001           |{{f/std|Check [Dead Unit without reraise]}}
  00196ccc: 3c018019 lui r1,0x8019
+
  00196cb8: 14400009 bne r2,r0,0x00196ce0         {{f/Cond|If Unit is not Dead (or dead with reraise)}} /Else : branch to {{f/loc|END}}
  00196cd0: 00220821 addu r1,r1,r2
+
  00196cbc: 34020001 ori r2,r0,0x0001             |{{f/std|Returns 0x01}}
  00196cd4: 90220925 lbu r2,0x0925(r1)
+
  00196cc0: 000410c0 sll r2,r4,0x03                   |
  00196cd8: 00000000 nop
+
  00196cc4: 00441023 subu r2,r2,r4                   |
  00196cdc: 000211c2 srl r2,r2,0x07
+
  00196cc8: 00021180 sll r2,r2,0x06                   |{{f/std|Unit ID * 0x1c0}}
  00196ce0: 03e00008 jr r31
+
  00196ccc: 3c018019 lui r1,0x8019                   |
 +
  00196cd0: 00220821 addu r1,r1,r2                   |
 +
  00196cd4: 90220925 lbu r2,0x0925(r1)               |{{f/load|Load Unit Current Status 2nd Set}} {{f/std|0x801908cc + 0x59 + Unit offset}}
 +
  00196cd8: 00000000 nop                             |
 +
  00196cdc: 000211c2 srl r2,r2,0x07                   |{{f/std|<nowiki>r2 = 0x1 if Unit is petrified</nowiki>}}
 +
  00196ce0: 03e00008 jr r31                   END
 
  00196ce4: 00000000 nop
 
  00196ce4: 00000000 nop
</font>
+
===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)]]

Latest revision as of 19:16, 14 May 2023

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)