Anonymous

Changes

From Final Fantasy Inside

FF8/WorldMap wmx

1,489 bytes added, 12:54, 27 May 2016
no edit summary
By MaKiPL, Updated 27.5.2016 by Halfer. All thanks goes to Halfer, for rich research progress on world map file. This wiki page is also based on Blue's wmx2obj source code.
==General==
Block = contains geometry
One segment is 8192 sized (512*16) + header0x9000 or 36864 bytes long. There is 16 blocks in a segment. In theory, a segment can hold 16 blocks which each hold 0x900 bytes of data.
1-768 segments are final world map. 769-835 are story based segments like Balamb garden stationary, no Esthar, No cities in DISC4.
| W vertex normal (unused)
|}
 
==Block explained==
 
Final Fantasy 8's world map is pretty much sea all around. One sea block or as I like to call it water block is made of 32 polygons, which are always triangles. The data is pretty straight forward to read with the above information. One thing to note is, that there is only 1 normal which points upwards in water block.
 
In FF8's world data, a segment location is predefined in currently unknown place (in engine or wmset.obj) and there are horizontally 32 and vertically 24 segments to form the world map. Each block in segments follows to same logic with 4x4 grid instead of 32x24. The first block starts from the upper left corner of the segment.
 
Each block have their own local bounding box, which the vertice values follow. A blocks origin is always predefined to start from upper left corner of its bounding box. This bounding box is always a size of 2048x2048 units (up and down limit is not known). This means that 2048 units or 0x800 is the local max for vertices coordinate before it overlaps with next blocks bounding box. There are no limitation to overlapping, you can extend a blocks geometry out of its bounding box and even out of the local segment. However, the collision is always calculated from the block which bounding box you are in, so extending a blocks geometry out of its bounding box doesn't make it collidable in overlapping block.
Anonymous user