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

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m
 
(One intermediate revision by the same user not shown)
Line 4: Line 4:
 
  Return : r2 = Closest Harmfull Ability if Unit is Targeting an Enemy (Acting Unit AI 0x182c 0x0e)
 
  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 = Closest Helpfull Ability if Unit is Targeting an Ally (Acting Unit AI 0x182c + 0x0f)
           r2 = Acting Unit move
+
           r2 = Acting Unit move if not focusing a Unit
 
  ------------------------------------------------------------------------------------------
 
  ------------------------------------------------------------------------------------------
  001962a0: 3c03801a lui r3,0x801a             |
+
  001962a0: 3c03801a lui r3,0x801a                 |
 
  001962a4: 8c6301f8 lw r3,0x01f8(r3)              |{{f/adr|Acting Unit AI Decision data pointer (8019f3c4 + 0x182c)}}
 
  001962a4: 8c6301f8 lw r3,0x01f8(r3)              |{{f/adr|Acting Unit AI Decision data pointer (8019f3c4 + 0x182c)}}
 
  001962a8: 00000000 nop                          |
 
  001962a8: 00000000 nop                          |
Line 25: Line 25:
 
  001962e4: 9062000e lbu r2,0x000e(r3)                    |{{f/load|Load and returns }} {{f/Returns|range of closest Harmfull Ability}}
 
  001962e4: 9062000e lbu r2,0x000e(r3)                    |{{f/load|Load and returns }} {{f/Returns|range of closest Harmfull Ability}}
 
  001962e8: 080658c1 j 0x00196304                          |{{f/loc|Exit routine}}
 
  001962e8: 080658c1 j 0x00196304                          |{{f/loc|Exit routine}}
  001962ec: 00000000 nop                                       |
+
  001962ec: 00000000 nop                                   |
 
                                                     '''Else : Targeting an Ally'''
 
                                                     '''Else : Targeting an Ally'''
 
  001962f0: 9062000f lbu r2,0x000f(r3)                    |{{f/load|Load and returns }} {{f/Returns|range of closest Helpfull Ability}}
 
  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}}
 
  001962f4: 080658c1 j 0x00196304                          |{{f/loc|Exit routine}}
  001962f8: 00000000 nop                                       |
+
  001962f8: 00000000 nop                                   |
 
                                                 '''Else : Acting Unit is not targeting a Unit'''
 
                                                 '''Else : Acting Unit is not targeting a Unit'''
  001962fc: 3c02801a lui r2,0x801a                             |
+
  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}}
+
  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
 
  00196308: 00000000 nop

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