Difference between revisions of "Chose Move from Move List"
Jump to navigation
Jump to search
m (Nyzer moved page Chose Move from Move List? to Chose Move from Move List: Fucking question marks) |
|||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | '''BATTLE.BIN''' : - Chose Move from Move List? | |
− | Chose Move from Move List? | + | Run Simulation for all Abilities in Unit List (AI 0xef0). Best results should be saved from AI 0x54 to AI 0x154 |
− | + | ------------------------------------------------------------------------------------------ | |
− | + | Parameter : | |
− | + | Return : r2 = 0x00 (default) | |
− | + | r2 = -0x01 if Simulation of an ability returns - 0x01 | |
− | + | ------------------------------------------------------------------------------------------ | |
− | + | 00197e60: 3c02801a lui r2,0x801a | | |
− | + | 00197e64: 90420d7b lbu r2,0x0d7b(r2) |{{f/load|AI 0x19b7}} {{f/std|801a0d7b}} | |
− | + | 00197e68: 27bdffe8 addiu r29,r29,-0x0018 | | |
− | + | 00197e6c: afb00010 sw r16,0x0010(r29) | | |
− | + | 00197e70: 3c10801a lui r16,0x801a | | |
− | + | 00197e74: 2610f3c4 addiu r16,r16,0xf3c4 |{{f/adr|0x8019f3c4}} | |
− | + | 00197e78: 14400013 bne r2,r0,0x00197ec8 {{f/Cond|If AI 0x19b7 <> 0x00 : branch directly to }} {{f/loc| Simulation }} {{f/std|(Ability is chosen or return where the routine fails ?)}} | |
− | + | 00197e7c: afbf0014 sw r31,0x0014(r29) | | |
− | + | '''<nowiki>Else : AI 0x19b7 = 0x00</nowiki>''' | |
− | + | 00197e80: 3c01801a lui r1,0x801a | | |
− | + | 00197e84: a0200081 sb r0,0x0081(r1) |{{f/store|Initialize Ability counter (at 0x801a0081)}} {{f/std|AI 0x0cbd}} | |
− | + | {{f/bloop|LOOP - Each Ability}} | |
− | + | 00197e88: 92030e2f lbu r3,0x0e2f(r16) |{{f/load|Load acting unit ID}} | |
− | + | 00197e8c: 00000000 nop | | |
− | + | 00197e90: 00031100 sll r2,r3,0x04 | | |
− | + | 00197e94: 00431021 addu r2,r2,r3 | | |
− | + | 00197e98: 000210c0 sll r2,r2,0x03 |{{f/std|ID *0x88}} | |
− | + | 00197e9c: 24420ef0 addiu r2,r2,0x0ef0 | | |
− | + | 00197ea0: 92030cbd lbu r3,0x0cbd(r16) |{{f/load|Load Ability counter}} | |
− | + | 00197ea4: 02021021 addu r2,r16,r2 |{{f/adr|0x8019f3c4 + 0x0ef0 + Unit offset}} {{f/std|This unit start of usable abilities list}} | |
− | + | 00197ea8: 00031880 sll r3,r3,0x02 |{{f/std|Ability offset (1 word per ability)}} | |
− | + | 00197eac: 00432021 addu r4,r2,r3 |{{f/adr|This Ability pointer}} {{f/std|0x8019f3c4 + 0x0ef0 + Unit offset + Ability offset}} | |
− | + | 00197eb0: 90830002 lbu r3,0x0002(r4) |{{f/load|Load This Ability skillset}} | |
− | + | 00197eb4: 340200ff ori r2,r0,0x00ff | | |
− | + | 00197eb8: 10620011 beq r3,r2,0x00197f00 {{f/Cond|If End of usable Abilities }} {{f/loc|Exit routine}} {{f/Returns|Returns 0x00}} | |
− | + | 00197ebc: 00001021 addu r2,r0,r0 | | |
− | + | 00197ec0: 0c06561e jal 0x00195878 |{{f/jal|AI_Ability_Data_Setting|AI_Ability_Data_Setting}} {{f/std|Set data at 8019f3c4 (from 0x00 to 0x13)}} | |
− | + | 00197ec4: 00000000 nop | | |
− | + | {{f/sec|AI 0x19b7 <>0}} | |
− | + | 00197ec8: 0c066bc6 jal 0x0019af18 |{{f/jal|AI_Ability_Outcome_Evaluation|AI_Ability_Outcome_Evaluation}} {{f/std|Test All destination and targetable tile with this ability (save results in AI 0x54 Tables)}} | |
− | + | 00197ecc: 00000000 nop | | |
− | + | 00197ed0: 2403ffff addiu r3,r0,-0x0001 | | |
− | + | 00197ed4: 1043000a beq r2,r3,0x00197f00 {{f/Cond|If returned value is -0x01}} {{f/loc|Exit routine}} {{f/Returns|Returns -0x01}} | |
− | + | 00197ed8: 2402ffff addiu r2,r0,-0x0001 | | |
− | + | 00197edc: 92020cbd lbu r2,0x0cbd(r16) |{{f/load|Load Current ability counter}} | |
− | + | 00197ee0: 00000000 nop | | |
− | + | 00197ee4: 24420001 addiu r2,r2,0x0001 | | |
− | + | 00197ee8: a2020cbd sb r2,0x0cbd(r16) |{{f/store|Increase Ability counter by 0x1}} | |
− | + | 00197eec: 92020cbd lbu r2,0x0cbd(r16) |{{f/load|Load Current ability counter}} | |
− | + | 00197ef0: 00000000 nop | | |
− | + | 00197ef4: 2c420022 sltiu r2,r2,0x0022 |{{f/std|Check List limit}} | |
− | + | 00197ef8: 1440ffe3 bne r2,r0,0x00197e88 {{f/Cond|Do for all moves}} | |
− | + | 00197efc: 00001021 addu r2,r0,r0 |{{f/Returns|returns 0x00}} | |
− | + | 00197f00: 8fbf0014 lw r31,0x0014(r29) | |
− | + | 00197f04: 8fb00010 lw r16,0x0010(r29) | |
− | + | 00197f08: 27bd0018 addiu r29,r29,0x0018 | |
− | + | 00197f0c: 03e00008 jr r31 | |
+ | 00197f10: 00000000 nop | ||
+ | ===Return locations=== | ||
+ | '''BATTLE.BIN''' | ||
+ | 00196258: [[Non-Specific_AI_AutoBattle_(Enemies)]] | ||
+ | 00198248: [[Fight_for_Life_-_Auto_Battle_(00197ff4)]] | ||
+ | 00198288: [[Fight_for_Life_-_Auto_Battle_(00197ff4)]] | ||
+ | 00198750: [[Protect_Allies_-_Auto_Battle_(001984ec)]] | ||
+ | 00198790: [[Protect_Allies_-_Auto_Battle_(001984ec)]] | ||
+ | 001987c8: [[Protect_Allies_-_Auto_Battle_(001984ec)]] | ||
+ | 00198f28: [[AI_Critical_or_Run_Like_Rabbit]] | ||
+ | 00199000: [[AI_Critical_or_Run_Like_Rabbit]] |
Latest revision as of 22:07, 22 December 2024
BATTLE.BIN : - Chose Move from Move List? Run Simulation for all Abilities in Unit List (AI 0xef0). Best results should be saved from AI 0x54 to AI 0x154 ------------------------------------------------------------------------------------------ Parameter : Return : r2 = 0x00 (default) r2 = -0x01 if Simulation of an ability returns - 0x01 ------------------------------------------------------------------------------------------ 00197e60: 3c02801a lui r2,0x801a | 00197e64: 90420d7b lbu r2,0x0d7b(r2) |AI 0x19b7 801a0d7b 00197e68: 27bdffe8 addiu r29,r29,-0x0018 | 00197e6c: afb00010 sw r16,0x0010(r29) | 00197e70: 3c10801a lui r16,0x801a | 00197e74: 2610f3c4 addiu r16,r16,0xf3c4 |0x8019f3c4 00197e78: 14400013 bne r2,r0,0x00197ec8 #If AI 0x19b7 <> 0x00 : branch directly to Simulation (Ability is chosen or return where the routine fails ?) 00197e7c: afbf0014 sw r31,0x0014(r29) | Else : AI 0x19b7 = 0x00 00197e80: 3c01801a lui r1,0x801a | 00197e84: a0200081 sb r0,0x0081(r1) |Initialize Ability counter (at 0x801a0081) AI 0x0cbd @LOOP - Each Ability 00197e88: 92030e2f lbu r3,0x0e2f(r16) |Load acting unit ID 00197e8c: 00000000 nop | 00197e90: 00031100 sll r2,r3,0x04 | 00197e94: 00431021 addu r2,r2,r3 | 00197e98: 000210c0 sll r2,r2,0x03 |ID *0x88 00197e9c: 24420ef0 addiu r2,r2,0x0ef0 | 00197ea0: 92030cbd lbu r3,0x0cbd(r16) |Load Ability counter 00197ea4: 02021021 addu r2,r16,r2 |0x8019f3c4 + 0x0ef0 + Unit offset This unit start of usable abilities list 00197ea8: 00031880 sll r3,r3,0x02 |Ability offset (1 word per ability) 00197eac: 00432021 addu r4,r2,r3 |This Ability pointer 0x8019f3c4 + 0x0ef0 + Unit offset + Ability offset 00197eb0: 90830002 lbu r3,0x0002(r4) |Load This Ability skillset 00197eb4: 340200ff ori r2,r0,0x00ff | 00197eb8: 10620011 beq r3,r2,0x00197f00 #If End of usable Abilities Exit routine Returns 0x00 00197ebc: 00001021 addu r2,r0,r0 | 00197ec0: 0c06561e jal 0x00195878 |-->AI_Ability_Data_Setting Set data at 8019f3c4 (from 0x00 to 0x13) 00197ec4: 00000000 nop | AI 0x19b7 <>0 00197ec8: 0c066bc6 jal 0x0019af18 |-->AI_Ability_Outcome_Evaluation Test All destination and targetable tile with this ability (save results in AI 0x54 Tables) 00197ecc: 00000000 nop | 00197ed0: 2403ffff addiu r3,r0,-0x0001 | 00197ed4: 1043000a beq r2,r3,0x00197f00 #If returned value is -0x01 Exit routine Returns -0x01 00197ed8: 2402ffff addiu r2,r0,-0x0001 | 00197edc: 92020cbd lbu r2,0x0cbd(r16) |Load Current ability counter 00197ee0: 00000000 nop | 00197ee4: 24420001 addiu r2,r2,0x0001 | 00197ee8: a2020cbd sb r2,0x0cbd(r16) |Increase Ability counter by 0x1 00197eec: 92020cbd lbu r2,0x0cbd(r16) |Load Current ability counter 00197ef0: 00000000 nop | 00197ef4: 2c420022 sltiu r2,r2,0x0022 |Check List limit 00197ef8: 1440ffe3 bne r2,r0,0x00197e88 #Do for all moves 00197efc: 00001021 addu r2,r0,r0 |returns 0x00 00197f00: 8fbf0014 lw r31,0x0014(r29) 00197f04: 8fb00010 lw r16,0x0010(r29) 00197f08: 27bd0018 addiu r29,r29,0x0018 00197f0c: 03e00008 jr r31 00197f10: 00000000 nop
Return locations
BATTLE.BIN 00196258: Non-Specific_AI_AutoBattle_(Enemies) 00198248: Fight_for_Life_-_Auto_Battle_(00197ff4) 00198288: Fight_for_Life_-_Auto_Battle_(00197ff4) 00198750: Protect_Allies_-_Auto_Battle_(001984ec) 00198790: Protect_Allies_-_Auto_Battle_(001984ec) 001987c8: Protect_Allies_-_Auto_Battle_(001984ec) 00198f28: AI_Critical_or_Run_Like_Rabbit 00199000: AI_Critical_or_Run_Like_Rabbit