001993a0 - 00199494

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
BATTLE.BIN :  - 001993a0_-_00199494
Reset AI Table of Reachable Tile (8019f3c4 + 0xa74) and then enables only two tiles as reachable : Active Unit Tile and Tile from AI 0xcc4 Table
Variable at 0x8019f3c4 + 0xe2d is used as offset for both Table (potential scenarii ?)
------------------------------------------------------------------------------------------
Parameter : Nothing
Return : Nothing
------------------------------------------------------------------------------------------
001993a0: 3c07801a lui r7,0x801a             |
001993a4: 24e7f3c4 addiu r7,r7,0xf3c4        |0x8019f3c4
001993a8: 00002821 addu r5,r0,r0             |reset Y row counter
                                            @LOOP
001993ac: 90e30e2d lbu r3,0x0e2d(r7)             |Load AI 0xe2d Offset for some Table (handle different scenarii ?)
001993b0: 00052040 sll r4,r5,0x01                |This iteration halford offset
001993b4: 000310c0 sll r2,r3,0x03                |
001993b8: 00431021 addu r2,r2,r3                 |
001993bc: 000210c0 sll r2,r2,0x03                |0xe2d * 0x48
001993c0: 00e21021 addu r2,r7,r2                 |
001993c4: 00821021 addu r2,r4,r2                 |
001993c8: a4400a74 sh r0,0x0a74(r2)              |Reset Y row Flags in AI 0xa74 Table All tiles set to unreachable state / 8019f3c4 + 0xa74
001993cc: 90e30e2d lbu r3,0x0e2d(r7)             |Load AI 0xe2d
001993d0: 24a50001 addiu r5,r5,0x0001            |Y row Counter + 1
001993d4: 000310c0 sll r2,r3,0x03                |
001993d8: 00431021 addu r2,r2,r3                 |
001993dc: 000210c0 sll r2,r2,0x03                |0xe2d * 0x48
001993e0: 00e21021 addu r2,r7,r2                 |
001993e4: 00822021 addu r4,r4,r2                 |
001993e8: 28a20012 slti r2,r5,0x0012             |
001993ec: 1440ffef bne r2,r0,0x001993ac      #Reset all Flags in AI reachable Tiles table Table at 0x8019f3c4 + 0xa74
001993f0: a4800a98 sh r0,0x0a98(r4)              |Reset Y row Flags in AI 0xa74 high elevation Table All tiles set to unreachable state
001993f4: 90e40e2d lbu r4,0x0e2d(r7)         |Load AI 0xe2d
001993f8: 00000000 nop                       |
001993fc: 000418c0 sll r3,r4,0x03            |
00199400: 00641821 addu r3,r3,r4             |
00199404: 000318c0 sll r3,r3,0x03            |0xe2d * 0x48
00199408: 00671821 addu r3,r3,r7             |part of pointer - 8019f3c4 + 0xe2d * 0x48
0019940c: 00042080 sll r4,r4,0x02            |
00199410: 00e42021 addu r4,r7,r4             |part of pointer - 8019f3c4 + 0xe2d * 0x04
00199414: 90850cc5 lbu r5,0x0cc5(r4)         |Load this Entry Elevation Flag Always acting Unit ?  0x8019f3c4 + 0xcc4 + 0x01
00199418: 24630a74 addiu r3,r3,0x0a74        |Part of pointer to this entry Reachable Tiles table 8019f3c4 + 0xa74
0019941c: 000510c0 sll r2,r5,0x03            |
00199420: 00451021 addu r2,r2,r5             |
00199424: 00021080 sll r2,r2,0x02            |Elevation * 0x24 Elevation Offset in 0xa74 Table
00199428: 90850cc6 lbu r5,0x0cc6(r4)         |Load this entry Y coordinates  0x8019f3c4 + 0xcc4 + 0x02
0019942c: 00431021 addu r2,r2,r3             |
00199430: 00052840 sll r5,r5,0x01            |Y Row offset (Halfword)
00199434: 00a22821 addu r5,r5,r2             |Part of pointer to This Entry Y Row halfword in AI reachable Tiles Table 8019f3c4 + 0xa74
00199438: 90820cc4 lbu r2,0x0cc4(r4)         |Load this entry X coordinates  0x8019f3c4 + 0xcc4 
0019943c: 34068000 ori r6,r0,0x8000          |
00199440: 00461007 srav r2,r6,r2             |Bitmask for this entry Tile 
00199444: a4a20000 sh r2,0x0000(r5)          |Store This Entry Tile as reachable
00199448: 90e20e2d lbu r2,0x0e2d(r7)         |Load AI 0xe2d
0019944c: 90e40e31 lbu r4,0x0e31(r7)         |Acting Unit Elevation
00199450: 000218c0 sll r3,r2,0x03            |
00199454: 00621821 addu r3,r3,r2             |
00199458: 000318c0 sll r3,r3,0x03            |0xe2d * 0x48
0019945c: 00671821 addu r3,r3,r7             |
00199460: 24630a74 addiu r3,r3,0x0a74        |Pointer to This 0xe2d AI reachable tile Table
00199464: 000410c0 sll r2,r4,0x03            |
00199468: 00441021 addu r2,r2,r4             |
0019946c: 00021080 sll r2,r2,0x02            |Elevation * 0x24
00199470: 00431021 addu r2,r2,r3             |Pointer + Elevation offset
00199474: 90e40e32 lbu r4,0x0e32(r7)         |Load Acting Unit's Y
00199478: 90e30e30 lbu r3,0x0e30(r7)         |Load Acting Unit's X
0019947c: 00042040 sll r4,r4,0x01            |Y * 2
00199480: 00822021 addu r4,r4,r2             |Pointer + Y offset
00199484: 94820000 lhu r2,0x0000(r4)         |Load Flags for Acting Unit Y Row 
00199488: 00663007 srav r6,r6,r3             |Bitmask For acting Unit Tile
0019948c: 00461025 or r2,r2,r6               |Enable Bitmask
00199490: 03e00008 jr r31                    |
00199494: a4820000 sh r2,0x0000(r4)          |Store Acting Unit Tile as reachable in AI Table 0xa74

Return locations

BATTLE.BIN
 00196648: Map_movement_decision/data_setting
 00198430: 001982d8_-_001984e8
 001990f8: 0019905c_-_00199120