Every map consists of two NARC archives storing the layout and textures of the scene: * .map.tex.lz: Textures * .map.dat.lz: Layout The exact content of these archives is thoroughly described below. As denoted by the file extension, the archives are LZ10 compressed. * Content of .map.tex.lz: - Magic "TEX" - NARC - NARCs for each tileset - NCBR texture - NCLR palette * Content of .map.dat.lz: - Binary file "MPIF" - Binary file "TXIF" - Binary file "LYR" - NARC container - NARC files for each layer - binary files; first uint32 is the data identifier - Binary file "CTA" - NARC container - ~todo~ - Binary file "PLA" - NARC container - ~todo~ --------------------------------------------------------------- * MPIF (0x14 bytes) 0x00 uint32 magic 0x04 uint32 width 0x08 uint32 height 0x0C uint32 unknown 0x10 uint32 unknown * TXIF (0x8 bytes + entries * 0x8 bytes) 0x00 uint32 magic 0x04 uint16 textures count 0x06 uint16 unknown 0x08 texture entries (à 0x8 bytes) 0x00 uint16 unknown 0x02 uint16 texture ID 0x04 uint16 unknown 0x05 uint16 unknown --------------------------------------------------------------- * LYR files: Type 0x01 - Unknown: 0x00 uint32 identifier Type 0x02 - Tiles 0x00 uint32 identifier 0x04 uint32 data size 0x08 uint32 always 0x14, header size without identifier?? 0x0C uint32 entry size(?) 0x10 uint32 unknown ~todo~ Type 0x03 - Collision 0x00 uint32 identifier 0x04 uint32 always 0x10, header size without identifier?? 0x08 uint32 entries count (width * height) 0x0C uint32 width 0x10 uint32 height 0x14 entries (à 0x2 bytes) 0x00 uint16 collision type Type 0x04 - Obstacles: 0x00 uint32 identifier 0x04 uint32 entries count 0x08 entries (à 0xC bytes) 0x00 uint16 X-Pos 0x02 uint16 Y-Pos 0x04 int8 unknown 0x05 int8 unknown 0x06 uint16 Obstacle ID 0x08 int16 upper bytes for 0x06 (?) 0x0A int8 unknown, maybe uint16 0x0B int8 unknown, upper byte for 0x0A (?) Type 0x05 - Unused 0x00 uint32 identifier ~todo~ Type 0x06 - Overlay collision(?) 0x00 uint32 identifier 0x04 uint32 always 0x10, header size without identifier?? 0x08 uint32 entries count (width * height) 0x0C uint32 width 0x10 uint32 height 0x14 entries (à 0x2 bytes) 0x00 uint16 collision type Type 0x07 - Trigger: 0x00 uint32 identifier 0x04 uint32 entries count 0x08 entries (à 0xA bytes) 0x00 uint16 X-Pos 0x02 uint16 Y-Pos 0x04 uint16 Width 0x06 uint16 Height 0x08 uint16 unknown Type 0x08 - NPC: 0x00 uint32 identifier 0x04 uint32 entries count 0x08 entries (à 0xB bytes) 0x00 uint16 X-Pos 0x02 uint16 Y-Pos 0x04 uint8 Direction 0x05 bool8 Is active? 0x06 uint16 NPC ID 0x08 int8 unknown 0x09 int8 unknown 0x0A bool8 unknown Type 0x09 - Pokémon: 0x00 uint32 identifier 0x04 uint32 entries count 0x08 entries (à 0xA bytes) 0x00 uint16 X-Pos 0x02 uint16 Y-Pos 0x04 uint8 Behavior 0x05 uint8 Appearance 0x06 uint16 Pokémon ID 0x08 int8 unknown 0x09 int8 unknown Type 0x0A - Unknown 0x00 uint32 identifier ~todo~ Type 0x0B - Unknown 0x00 uint32 identifier ~todo~ Type 0x0C - Unknown 0x00 uint32 identifier ~todo~ Type 0x0D - Unknown: 0x00 uint32 identifier 0x04 uint32 entries count 0x08 entries (à 0x12 bytes) ~todo~ Type 0x0E - Unknown 0x00 uint32 identifier ~todo~ -------------------------------------------------------------- * Direction values 0x00 down 0x01 left 0x02 up 0x03 right 0x04 down(?) 0x05 left(?) 0x06 up(?) 0x07 right(?) 0x08 down(?) 0x09 left(?) 0x0A up(?) 0x0B right(?) * Appearance values 0x00 Not active 0x01 Active 0x02 Spawns from Tree * Behavior values Qwilfish 0x00 Moving 0x01 Cautious 0x02 Still (Unused) 0x03 Still