Difference between revisions of "Check target type"
Jump to navigation
Jump to search
(Uploaded Correct Routine) |
m |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | 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 | ||
− | + | ===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)