Final Fantasy Tactics Advance/Maps

From Data Crystal
< Final Fantasy Tactics Advance
Revision as of 04:43, 1 July 2009 by Darthatron (talk | contribs) (New page: =Map Information= ==Data structures== ===struct FFTA_map=== ''0x58 bytes'' {| style="border: 1px solid; margin: auto; border-collapse: collapse;" cellspacing="0" cellpadding="3" border="1...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Map Information

Data structures

struct FFTA_map

0x58 bytes

Member name Length Offset Type Maximum value Description
graphics_data 4 0x00 Pointer N/A A pointer diff pointing to the beginning of the map tile graphics data
arrangement_data 4 0x04 Pointer N/A A pointer diff pointing to the beginning of the data that arranges the tiles
Unknown 4 0x08 Pointer N/A A pointer diff pointing to something that has to do with clipping
palette_data 4 0x0C Pointer N/A A pointer diff pointing to the beginning of the palette data
height_data 4 0x10 Pointer N/A A pointer diff pointing to the beginning of the map height data
Unknown 68 0x14 N/A N/A Unknown, usually mostly blank

All pointer diffs in this structure are against 0x08569104.

struct FFTA_map_tile

struct FFTA_map_tile {
    uint8 height;
    int8 cannot_walk_on;
};
  • height: The height of the tile. There is no offset from what is displayed. Setting to higher than 99 (0x63) causes graphical glitches, but no crashing. Setting to 0 makes the tile invalid, such that it can't be selected. This value is unsigned.
  • cannot_walk_on: 0 if the tile can be walked on, 1 otherwise. Other values seem to have the same effect as a 1.

Data layout

In RAM

Each block of map data starts at the top corner, and goes toward the right corner. The end of a row seems to be padded such that the last couple of bytes, until 0xXF, are zero. Unknown what happens if modified.

0x02007CB0(block of FFTA_map_tile): Beginning of map data in RAM ... 0x02007F14(void*): Pointer to 0x02007CB0. If changed, map data changes to correspond to the new pointer. ... 0x02007F1D(u?int8): NW-SE dimension of the map. 0x02007F1E(u?int8): Unknown. Set to 0x0C. 0x02007F1F(u?int8): NE-SW dimension of the map.

In ROM

0x08019E7C(4 bytes): 0x02007CB0 - Address to start reading map height data from in scenes 0x0801F0DC(4 bytes): 0x02007CB0 - Address to write map height data to 0x08569104 - 0x0856915B: Map data pointers for map 0 0x08569104(Pointer): Pointer to map tile graphics data in map 0 0x08569108(Pointer): Pointer to map tile arrangement data in map 0 0x0856910C(Pointer): Pointer to unknown data in map 0 0x08569110(Pointer): Pointer to palette data in map 0 0x08569114(Pointer): Pointer to map height data in map 0

Default locations of map data

Tile graphics data Tile arrangement data Unknown data Palette data Map height data
Map 0 0x0856C8B4 0x0856F528 0x0856FEF8 0x0856F4A8 0x085704C8
  • There are 163 maps, indexed from 0x00 to 0xA2. Most maps have a night version (palette shift), too.