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

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
(Created page with "<font face='Courier New'> 0019619c: 3c02801a lui r2,0x801a 001961a0: 90420d7b lbu r2,0x0d7b(r2) 001961a4: 27bdffe8 addiu r29,r29,0xffe8 001961a8: afb00010 sw r16,0x0010(...")
 
m
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<font face='Courier New'>
+
'''BATTLE.BIN''' :  - Get Longest Range Ability or Move
   
+
  ------------------------------------------------------------------------------------------
  0019619c: 3c02801a lui r2,0x801a
+
  Parameter : Nothing
  001961a0: 90420d7b lbu r2,0x0d7b(r2)
+
  Return : r2 = Closest Harmfull Ability if Unit is Targeting an Enemy (Acting Unit AI 0x182c 0x0e)
001961a4: 27bdffe8 addiu r29,r29,0xffe8
+
          r2 = Closest Helpfull Ability if Unit is Targeting an Ally (Acting Unit AI 0x182c + 0x0f)
001961a8: afb00010 sw r16,0x0010(r29)
+
          r2 = Acting Unit move if not focusing a Unit
001961ac: 3c10801a lui r16,0x801a
+
  ------------------------------------------------------------------------------------------
001961b0: 2610f3c4 addiu r16,r16,0xf3c4
+
  001962a0: 3c03801a lui r3,0x801a                 |
001961b4: 1040000a beq r2,r0,0x001961e0
+
  001962a4: 8c6301f8 lw r3,0x01f8(r3)             |{{f/adr|Acting Unit AI Decision data pointer (8019f3c4 + 0x182c)}}
  001961b8: afbf0014 sw r31,0x0014(r29)
+
  001962a8: 00000000 nop                           |
  001961bc: 3c03801a lui r3,0x801a
+
  001962ac: 90620004 lbu r2,0x0004(r3)            |{{f/load|Acting unit decision byte 0x04}}
  001961c0: 90630299 lbu r3,0x0299(r3)
+
  001962b0: 3c04801a lui r4,0x801a                 |
  001961c4: 34020004 ori r2,r0,0x0004
+
  001962b4: 2484f3c4 addiu r4,r4,0xf3c4            |{{f/adr|0x8019f3c4}}
001961c8: 10620008 beq r3,r2,0x001961ec
+
  001962b8: 30420040 andi r2,r2,0x0040            |
001961cc: 34020002 ori r2,r0,0x0002
+
  001962bc: 1040000f beq r2,r0,0x001962fc          {{f/Cond|If Acting Unit has a Target (to focus)}}
001961d0: 1062000f beq r3,r2,0x00196210
+
  001962c0: 00000000 nop                              |
001961d4: 00000000 nop
+
  001962c4: 90620005 lbu r2,0x0005(r3)                 |{{f/load|Targeted Unit ID}}
  001961d8: 08065894 j 0x00196250
+
  001962c8: 00000000 nop                               |
001961dc: 00000000 nop
+
  001962cc: 00021100 sll r2,r2,0x04                    |
001961e0: 34020001 ori r2,r0,0x0001
+
  001962d0: 00441021 addu r2,r2,r4                    |{{f/adr|AI pointer + Unit offset (0x10)}}
  001961e4: 3c01801a lui r1,0x801a
+
  001962d4: 90421834 lbu r2,0x1834(r2)                |{{f/load|load enemy flag}} {{f/std|0x182c + 0x08}}
  001961e8: a02201f1 sb r2,0x01f1(r1)
+
  001962d8: 00000000 nop                              |
001961ec: 0c0658e3 jal 0x0019638c
+
  001962dc: 10400004 beq r2,r0,0x001962f0              {{f/Cond|If Targeted unit is an Enemy}}
001961f0: 00000000 nop
+
  001962e0: 00000000 nop                                  |
001961f4: 2403ffff addiu r3,r0,0xffff
+
  001962e4: 9062000e lbu r2,0x000e(r3)                     |{{f/load|Load and returns }} {{f/Returns|range of closest Harmfull Ability}}
  001961f8: 1043001a beq r2,r3,0x00196264
+
  001962e8: 080658c1 j 0x00196304                          |{{f/loc|Exit routine}}
  001961fc: 34020004 ori r2,r0,0x0004
+
  001962ec: 00000000 nop                                   |
00196200: 0c0658c3 jal 0x0019630c
+
                                                    '''Else : Targeting an Ally'''
00196204: a2000e2d sb r0,0x0e2d(r16)
+
  001962f0: 9062000f lbu r2,0x000f(r3)                     |{{f/load|Load and returns }} {{f/Returns|range of closest Helpfull Ability}}
  00196208: 34020001 ori r2,r0,0x0001
+
  001962f4: 080658c1 j 0x00196304                          |{{f/loc|Exit routine}}
  0019620c: a2020e2d sb r2,0x0e2d(r16)
+
  001962f8: 00000000 nop                                   |
  00196210: 0c0657e3 jal 0x00195f8c
+
                                                '''Else : Acting Unit is not targeting a Unit'''
00196214: 00000000 nop
+
  001962fc: 3c02801a lui r2,0x801a                    |
  00196218: 00401821 addu r3,r2,r0
+
  00196300: 904201fc lbu r2,0x01fc(r2)                 |{{f/load|load and returns}} {{f/Returns|Acting Unit move}} {{f/std| 8019f3c4 + 0x0e38}}
  0019621c: 2402ffff addiu r2,r0,0xffff
+
  00196304: 03e00008 jr r31
  00196220: 10620010 beq r3,r2,0x00196264
+
  00196308: 00000000 nop
00196224: 34020002 ori r2,r0,0x0002
+
===Return locations===
  00196228: 34020001 ori r2,r0,0x0001
+
'''BATTLE.BIN'''
  0019622c: 10620017 beq r3,r2,0x0019628c
+
  00196578: [[Map_movement_decision/data_setting]]
00196230: 00001021 addu r2,r0,r0
+
  00198378: [[001982d8_-_001984e8]]
  00196234: 34020001 ori r2,r0,0x0001
 
  00196238: a2020e2d sb r2,0x0e2d(r16)
 
  0019623c: 00002021 addu r4,r0,r0
 
00196240: 0c065f43 jal 0x00197d0c
 
  00196244: 00002821 addu r5,r0,r0
 
00196248: 10400009 beq r2,r0,0x00196270
 
0019624c: 00000000 nop
 
00196250: 0c065f98 jal 0x00197e60
 
  00196254: 00000000 nop
 
00196258: 2403ffff addiu r3,r0,0xffff
 
0019625c: 14430004 bne r2,r3,0x00196270
 
00196260: 34020007 ori r2,r0,0x0007
 
00196264: a2020ed5 sb r2,0x0ed5(r16)
 
  00196268: 080658a3 j 0x0019628c
 
0019626c: 2402ffff addiu r2,r0,0xffff
 
  00196270: 0c065c2f jal 0x001970bc
 
00196274: 00000000 nop
 
00196278: 14400004 bne r2,r0,0x0019628c
 
  0019627c: 00001021 addu r2,r0,r0
 
  00196280: 0c066526 jal 0x00199498
 
00196284: a2000e2d sb r0,0x0e2d(r16)
 
00196288: 00001021 addu r2,r0,r0
 
0019628c: 8fbf0014 lw r31,0x0014(r29)
 
  00196290: 8fb00010 lw r16,0x0010(r29)
 
00196294: 27bd0018 addiu r29,r29,0x0018
 
00196298: 03e00008 jr r31
 
  0019629c: 00000000 nop
 
</font>
 

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