Difference between revisions of "Disable Tile Flag 0x10 For Dead and Jumping Units"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
(Created page with "<font face='Courier New'> 00174df8: 27bdffe0 addiu r29,r29,0xffe0 00174dfc: afb10014 sw r17,0x0014(r29) 00174e00: 00008821 addu r17,r0,r0 00174e04: afb00010 sw r16,0x001...")
 
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<font face='Courier New'>
+
BATTLE.BIN : Disable Tile Flag 0x10 For Dead and Jumping Units
 +
--------------------------------------------------------------------------------------------------------------
 +
Parameters : Nothing
 
   
 
   
  00174df8: 27bdffe0 addiu r29,r29,0xffe0
+
Returns : Nothing
  00174dfc: afb10014 sw r17,0x0014(r29)
+
  00174e00: 00008821 addu r17,r0,r0
+
Check all units : If dead or Jumping, disable the flag 0x10 (Reachable tile ?) in Scratch Pad at 0x18f00200
  00174e04: afb00010 sw r16,0x0010(r29)
+
                  (Not sure yet, but it seems to be used in unit Path-finding)
  00174e08: 3c108019 lui r16,0x8019
+
--------------------------------------------------------------------------------------------------------------
  00174e0c: 261008cc addiu r16,r16,0x08cc
+
  00174df8: 27bdffe0 addiu r29,r29,-0x0020    |
  00174e10: afbf0018 sw r31,0x0018(r29)
+
  00174dfc: afb10014 sw r17,0x0014(r29)       |
  00174e14: 92030001 lbu r3,0x0001(r16)
+
  00174e00: 00008821 addu r17,r0,r0           |{{f/std|Initialize counter}} {{f/std|<nowiki>r17 = 0 (initial value for counter)</nowiki>}}
  00174e18: 340200ff ori r2,r0,0x00ff
+
  00174e04: afb00010 sw r16,0x0010(r29)       |
  00174e1c: 10620010 beq r3,r2,0x00174e60
+
  00174e08: 3c108019 lui r16,0x8019           |
  00174e20: 26310001 addiu r17,r17,0x0001
+
  00174e0c: 261008cc addiu r16,r16,0x08cc     |{{f/adr|Start of Unit Battle Data (Dynamic pointer + 0x1c0 each iteration)}}
  00174e24: 92020058 lbu r2,0x0058(r16)
+
  00174e10: afbf0018 sw r31,0x0018(r29)       |
  00174e28: 00000000 nop
+
                                            {{f/bloop|LOOP - Though all units}}
  00174e2c: 30420024 andi r2,r2,0x0024
+
  00174e14: 92030001 lbu r3,0x0001(r16)           |{{f/load|Unit ID}}
  00174e30: 1040000c beq r2,r0,0x00174e64
+
  00174e18: 340200ff ori r2,r0,0x00ff             |
  00174e34: 2a220015 slti r2,r17,0x0015
+
  00174e1c: 10620010 beq r3,r2,0x00174e60         {{f/Cond|If Unit doesn't exist : Branch to }} {{f/loc| Next Unit iteration}}
  00174e38: 0c060428 jal 0x001810a0
+
  00174e20: 26310001 addiu r17,r17,0x0001         |{{f/std|Counter +1}}
  00174e3c: 02002021 addu r4,r16,r0
+
  00174e24: 92020058 lbu r2,0x0058(r16)               |{{f/load|Load Current Status 1}}
  00174e40: 3c038019 lui r3,0x8019
+
  00174e28: 00000000 nop                             |
  00174e44: 8c63f4f0 lw r3,-0x0b10(r3)
+
  00174e2c: 30420024 andi r2,r2,0x0024               |
  00174e48: 00000000 nop
+
  00174e30: 1040000c beq r2,r0,0x00174e64             {{f/Cond|If Unit is not Dead nor Jumping}}
  00174e4c: 00621821 addu r3,r3,r2
+
  00174e34: 2a220015 slti r2,r17,0x0015                   |
  00174e50: 90620000 lbu r2,0x0000(r3)
+
  00174e38: 0c060428 jal 0x001810a0                       |{{f/jal|Map Location Calculation|Map Location Calculation}} {{f/std|returns Unit's Tile ID}}
  00174e54: 00000000 nop
+
  00174e3c: 02002021 addu r4,r16,r0                       |{{f/std|Send Unit ID}}
  00174e58: 304200ef andi r2,r2,0x00ef
+
  00174e40: 3c038019 lui r3,0x8019                       |
  00174e5c: a0620000 sb r2,0x0000(r3)
+
  00174e44: 8c63f4f0 lw r3,-0x0b10(r3)                   |{{f/adr|Pointer to Scratch Pad (0x1f800200) - refered as S-Pad 0x200}}
  00174e60: 2a220015 slti r2,r17,0x0015
+
  00174e48: 00000000 nop                                 |
  00174e64: 1440ffeb bne r2,r0,0x00174e14
+
  00174e4c: 00621821 addu r3,r3,r2                       |{{f/adr|Pointer to Unit's Tile data (S-Pad 0x200)}}
  00174e68: 261001c0 addiu r16,r16,0x01c0
+
  00174e50: 90620000 lbu r2,0x0000(r3)                   |{{f/load|Load Tile's flag}}
  00174e6c: 8fbf0018 lw r31,0x0018(r29)
+
  00174e54: 00000000 nop                                 |
 +
  00174e58: 304200ef andi r2,r2,0x00ef                   |
 +
  00174e5c: a0620000 sb r2,0x0000(r3)                     |{{f/store|Disable flag 0x10 (not reachable anymore ?)}}
 +
  00174e60: 2a220015 slti r2,r17,0x0015                   |
 +
  00174e64: 1440ffeb bne r2,r0,0x00174e14     {{f/eloop|Loop 0x15 Times}}
 +
  00174e68: 261001c0 addiu r16,r16,0x01c0         |{{f/adr|Unit Battle data offset}}
 +
  00174e6c: 8fbf0018 lw r31,0x0018(r29)       END
 
  00174e70: 8fb10014 lw r17,0x0014(r29)
 
  00174e70: 8fb10014 lw r17,0x0014(r29)
 
  00174e74: 8fb00010 lw r16,0x0010(r29)
 
  00174e74: 8fb00010 lw r16,0x0010(r29)
Line 36: Line 44:
 
  00174e7c: 03e00008 jr r31
 
  00174e7c: 03e00008 jr r31
 
  00174e80: 00000000 nop
 
  00174e80: 00000000 nop
</font>
+
=== Return location ===
 +
'''BATTLE.BIN'''
 +
  001752e4: [[00175288_-_001754cc]]

Latest revision as of 08:50, 21 May 2023

BATTLE.BIN : Disable Tile Flag 0x10 For Dead and Jumping Units
--------------------------------------------------------------------------------------------------------------
Parameters : Nothing

Returns : Nothing

Check all units : If dead or Jumping, disable the flag 0x10 (Reachable tile ?) in Scratch Pad at 0x18f00200
                  (Not sure yet, but it seems to be used in unit Path-finding)
--------------------------------------------------------------------------------------------------------------
00174df8: 27bdffe0 addiu r29,r29,-0x0020    |
00174dfc: afb10014 sw r17,0x0014(r29)       |
00174e00: 00008821 addu r17,r0,r0           |Initialize counter r17 = 0 (initial value for counter)
00174e04: afb00010 sw r16,0x0010(r29)       |
00174e08: 3c108019 lui r16,0x8019           |
00174e0c: 261008cc addiu r16,r16,0x08cc     |Start of Unit Battle Data (Dynamic pointer + 0x1c0 each iteration)
00174e10: afbf0018 sw r31,0x0018(r29)       |
                                            @LOOP - Though all units
00174e14: 92030001 lbu r3,0x0001(r16)           |Unit ID
00174e18: 340200ff ori r2,r0,0x00ff             |
00174e1c: 10620010 beq r3,r2,0x00174e60         #If Unit doesn't exist : Branch to   Next Unit iteration
00174e20: 26310001 addiu r17,r17,0x0001         |Counter +1
00174e24: 92020058 lbu r2,0x0058(r16)               |Load Current Status 1
00174e28: 00000000 nop                              |
00174e2c: 30420024 andi r2,r2,0x0024                |
00174e30: 1040000c beq r2,r0,0x00174e64             #If Unit is not Dead nor Jumping
00174e34: 2a220015 slti r2,r17,0x0015                   |
00174e38: 0c060428 jal 0x001810a0                       |-->Map Location Calculation returns Unit's Tile ID
00174e3c: 02002021 addu r4,r16,r0                       |Send Unit ID
00174e40: 3c038019 lui r3,0x8019                        |
00174e44: 8c63f4f0 lw r3,-0x0b10(r3)                    |Pointer to Scratch Pad (0x1f800200) - refered as S-Pad 0x200
00174e48: 00000000 nop                                  |
00174e4c: 00621821 addu r3,r3,r2                        |Pointer to Unit's Tile data (S-Pad 0x200)
00174e50: 90620000 lbu r2,0x0000(r3)                    |Load Tile's flag
00174e54: 00000000 nop                                  |
00174e58: 304200ef andi r2,r2,0x00ef                    |
00174e5c: a0620000 sb r2,0x0000(r3)                     |Disable flag 0x10 (not reachable anymore ?)
00174e60: 2a220015 slti r2,r17,0x0015                   |
00174e64: 1440ffeb bne r2,r0,0x00174e14     Λ Loop 0x15 Times
00174e68: 261001c0 addiu r16,r16,0x01c0         |Unit Battle data offset
00174e6c: 8fbf0018 lw r31,0x0018(r29)       END
00174e70: 8fb10014 lw r17,0x0014(r29)
00174e74: 8fb00010 lw r16,0x0010(r29)
00174e78: 27bd0020 addiu r29,r29,0x0020
00174e7c: 03e00008 jr r31
00174e80: 00000000 nop

Return location

BATTLE.BIN
 001752e4: 00175288_-_001754cc