As for the archive. Its almost the same as in ffvii some lzs modification. I don't rememder diferences. Please look at my class for extract it. (if you write description of it for XENO-GEARS it would be wonderful ^_^).
You can use this description if you want:
The LZS compression format used in Xenogears is similar to the one used in Final Fantasy 7 and other Square games, but it is coded slightly differently:
Each packet starts with a control code, followed by compressed and uncompressed values. The control code contains a bit for each packet, if it is clear then the value is copied verbatim, if it is set then it is copied from the ring buffer. (This is directly opposite of what the decompressor in Final Fantasy does). Additionally the ringbuffer offset is calculated differently from Final Fantasy: The offset is the lower 12 bit of a 16-bit value, the length is the upper 4 bit.
Update:
Now that I've got working decompression code I found the worldmap textures as well: The second file of the directory contains an archive of 6 textures. That explains the attributes as well: The byte after elevation is an attribute byte: The texture index is the lower 3 bit, U-flip is the 6th bit and V-flip is the 7th bit. The next byte is the tile index, the lower 4 bit are the tile in U-direction and the upper 4 bit are the tile in V direction. Just scale these by 16 to get the position in the texture.
There are still rendering problems, then, but most of the map is correct. I assume there is some additional scaling going on.
Now I'll have to write proper rendering code, as it is I get <1 fps...
screenshot!---- Update:
The duplicated tiles were a problem from me - you can ignore the 9th row/column of each 9x9, as they are only required if don't have access to neighbouring tiles. This makes each height tile exactly 16x16, which is the same size of the second tile. Which makes me think that the second tile is encounter info or something that is static over the area of a single map point.