Difference between revisions of "Get Longest Range Ability or Move"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
<font face='Courier New'>
+
'''BATTLE.BIN''' :  - Get Longest Range Ability or Move
Get Longest Range Ability or Move 001962a0: 3c03801a lui r3,0x801a
+
------------------------------------------------------------------------------------------
  001962a4: 8c6301f8 lw r3,0x01f8(r3) units AI decision
+
Parameter : Nothing
  001962a8: 00000000 nop
+
Return : r2 = Closest Harmfull Ability if Unit is Targeting an Enemy (Acting Unit AI 0x182c 0x0e)
  001962ac: 90620004 lbu r2,0x0004(r3)
+
          r2 = Closest Helpfull Ability if Unit is Targeting an Ally (Acting Unit AI 0x182c + 0x0f)
  001962b0: 3c04801a lui r4,0x801a
+
          r2 = Acting Unit move if not focusing a Unit
  001962b4: 2484f3c4 addiu r4,r4,0xf3c4
+
------------------------------------------------------------------------------------------
  001962b8: 30420040 andi r2,r2,0x0040
+
001962a0: 3c03801a lui r3,0x801a                 |
  001962bc: 1040000f beq r2,r0,0x001962fc branch if not focust on target
+
  001962a4: 8c6301f8 lw r3,0x01f8(r3)             |{{f/adr|Acting Unit AI Decision data pointer (8019f3c4 + 0x182c)}}
  001962c0: 00000000 nop return acting units move
+
  001962a8: 00000000 nop                           |
  001962c4: 90620005 lbu r2,0x0005(r3) load main target ID
+
  001962ac: 90620004 lbu r2,0x0004(r3)             |{{f/load|Acting unit decision byte 0x04}}
  001962c8: 00000000 nop
+
  001962b0: 3c04801a lui r4,0x801a                 |
  001962cc: 00021100 sll r2,r2,0x04
+
  001962b4: 2484f3c4 addiu r4,r4,0xf3c4           |{{f/adr|0x8019f3c4}}
  001962d0: 00441021 addu r2,r2,r4
+
  001962b8: 30420040 andi r2,r2,0x0040             |
  001962d4: 90421834 lbu r2,0x1834(r2) load enemy flag
+
  001962bc: 1040000f beq r2,r0,0x001962fc         {{f/Cond|If Acting Unit has a Target (to focus)}}
  001962d8: 00000000 nop
+
  001962c0: 00000000 nop                               |
  001962dc: 10400004 beq r2,r0,0x001962f0 branch if ally
+
  001962c4: 90620005 lbu r2,0x0005(r3)                 |{{f/load|Targeted Unit ID}}
  001962e0: 00000000 nop
+
  001962c8: 00000000 nop                               |
  001962e4: 9062000e lbu r2,0x000e(r3) if enemy, load lowest range ability
+
  001962cc: 00021100 sll r2,r2,0x04                   |
  001962e8: 080658c1 j 0x00196304
+
  001962d0: 00441021 addu r2,r2,r4                     |{{f/adr|AI pointer + Unit offset (0x10)}}
  001962ec: 00000000 nop
+
  001962d4: 90421834 lbu r2,0x1834(r2)                 |{{f/load|load enemy flag}} {{f/std|0x182c + 0x08}}
  001962f0: 9062000f lbu r2,0x000f(r3) if ally, load highest range ability
+
  001962d8: 00000000 nop                               |
  001962f4: 080658c1 j 0x00196304
+
  001962dc: 10400004 beq r2,r0,0x001962f0             {{f/Cond|If Targeted unit is an Enemy}}
  001962f8: 00000000 nop
+
  001962e0: 00000000 nop                                   |
  001962fc: 3c02801a lui r2,0x801a
+
  001962e4: 9062000e lbu r2,0x000e(r3)                     |{{f/load|Load and returns }} {{f/Returns|range of closest Harmfull Ability}}
  00196300: 904201fc lbu r2,0x01fc(r2) load acting units move
+
  001962e8: 080658c1 j 0x00196304                         |{{f/loc|Exit routine}}
 +
  001962ec: 00000000 nop                                   |
 +
                                                    '''Else : Targeting an Ally'''
 +
  001962f0: 9062000f lbu r2,0x000f(r3)                     |{{f/load|Load and returns }} {{f/Returns|range of closest Helpfull Ability}}
 +
  001962f4: 080658c1 j 0x00196304                         |{{f/loc|Exit routine}}
 +
  001962f8: 00000000 nop                                   |
 +
                                                '''Else : Acting Unit is not targeting a Unit'''
 +
  001962fc: 3c02801a lui r2,0x801a                     |
 +
  00196300: 904201fc lbu r2,0x01fc(r2)                 |{{f/load|load and returns}} {{f/Returns|Acting Unit move}} {{f/std| 8019f3c4 + 0x0e38}}
 
  00196304: 03e00008 jr r31
 
  00196304: 03e00008 jr r31
  00196308: 00000000 nop</font>
+
  00196308: 00000000 nop
 +
===Return locations===
 +
'''BATTLE.BIN'''
 +
  00196578: [[Map_movement_decision/data_setting]]
 +
  00198378: [[001982d8_-_001984e8]]

Latest revision as of 19:27, 18 June 2024

BATTLE.BIN :  - Get Longest Range Ability or Move
------------------------------------------------------------------------------------------
Parameter : Nothing
Return : r2 = Closest Harmfull Ability if Unit is Targeting an Enemy (Acting Unit AI 0x182c 0x0e)
         r2 = Closest Helpfull Ability if Unit is Targeting an Ally (Acting Unit AI 0x182c + 0x0f)
         r2 = Acting Unit move if not focusing a Unit
------------------------------------------------------------------------------------------
001962a0: 3c03801a lui r3,0x801a                 |
001962a4: 8c6301f8 lw r3,0x01f8(r3)              |Acting Unit AI Decision data pointer (8019f3c4 + 0x182c)
001962a8: 00000000 nop                           |
001962ac: 90620004 lbu r2,0x0004(r3)             |Acting unit decision byte 0x04
001962b0: 3c04801a lui r4,0x801a                 |
001962b4: 2484f3c4 addiu r4,r4,0xf3c4            |0x8019f3c4
001962b8: 30420040 andi r2,r2,0x0040             |
001962bc: 1040000f beq r2,r0,0x001962fc          #If Acting Unit has a Target (to focus)
001962c0: 00000000 nop                               |
001962c4: 90620005 lbu r2,0x0005(r3)                 |Targeted Unit ID
001962c8: 00000000 nop                               |
001962cc: 00021100 sll r2,r2,0x04                    |
001962d0: 00441021 addu r2,r2,r4                     |AI pointer + Unit offset (0x10)
001962d4: 90421834 lbu r2,0x1834(r2)                 |load enemy flag 0x182c + 0x08
001962d8: 00000000 nop                               |
001962dc: 10400004 beq r2,r0,0x001962f0              #If Targeted unit is an Enemy
001962e0: 00000000 nop                                   |
001962e4: 9062000e lbu r2,0x000e(r3)                     |Load and returns  range of closest Harmfull Ability
001962e8: 080658c1 j 0x00196304                          |Exit routine
001962ec: 00000000 nop                                   |
                                                    Else : Targeting an Ally
001962f0: 9062000f lbu r2,0x000f(r3)                     |Load and returns  range of closest Helpfull Ability
001962f4: 080658c1 j 0x00196304                          |Exit routine
001962f8: 00000000 nop                                   |
                                                Else : Acting Unit is not targeting a Unit
001962fc: 3c02801a lui r2,0x801a                     |
00196300: 904201fc lbu r2,0x01fc(r2)                 |load and returns Acting Unit move  8019f3c4 + 0x0e38
00196304: 03e00008 jr r31
00196308: 00000000 nop

Return locations

BATTLE.BIN
 00196578: Map_movement_decision/data_setting
 00198378: 001982d8_-_001984e8