Difference between revisions of "FF8/WorldMap wmx"

From Final Fantasy Inside
< FF8
Jump to navigation Jump to search
my_wiki>MaKiPL
(Block data)
my_wiki>MaKiPL
Line 6: Line 6:
 
Segment = contains 16 blocks
 
Segment = contains 16 blocks
 
Block = contains geometry
 
Block = contains geometry
 +
 +
One block is 512 bytes, one segment is 8192 sized (512*16) + header. There is 16 blocks in a segment.
  
 
==Segment==
 
==Segment==
Line 58: Line 60:
 
| 0
 
| 0
 
| Byte
 
| Byte
| Faces count
+
| Polygon count
 
|-
 
|-
 
| 1
 
| 1
Line 73: Line 75:
 
|}
 
|}
  
Just after header a triangle data appears:
+
Just after header a polygon data appears:
 +
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
 +
! style="background:rgb(204,204,204)" | Offset
 +
! style="background:rgb(204,204,204)" | Length
 +
! style="background:rgb(204,204,204)" | Description
 +
|-
 +
| 0
 +
| Byte
 +
| F1 (Triangle 1)
 +
|-
 +
| 1
 +
| Byte
 +
| F2 (Triangle 1)
 +
|-
 +
| 2
 +
| Byte
 +
| F3 (Triangle 1)
 +
|-
 +
| 3
 +
| Byte
 +
| F1 (Triangle 2)
 +
|-
 +
| 4
 +
| Byte
 +
| F2 (Triangle 2)
 +
|-
 +
| 5
 +
| Byte
 +
| F3 (Triangle 2)
 +
|-
 +
| 6
 +
| Byte
 +
| U1
 +
|-
 +
| 7
 +
| Byte
 +
| V1
 +
|-
 +
| 8
 +
| Byte
 +
| U2
 +
|-
 +
| 9
 +
| Byte
 +
| V2
 +
|-
 +
| 10
 +
| Byte
 +
| U3
 +
|-
 +
| 11
 +
| Byte
 +
| V3
 +
|-
 +
| 12
 +
| 4 BIT/4 BIT
 +
| Texture Page/CLUT id
 +
|-
 +
| 13
 +
| Byte
 +
| Ground type
 +
|-
 +
| 14
 +
| Byte
 +
| Unknown
 +
|-
 +
| 15
 +
| Byte
 +
| Unknown
 +
|-
 +
|}

Revision as of 16:34, 12 July 2015

By MaKiPL. 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

Wmx.obj is world map geometry model only. Contains 835 segments, does not contain textures nor additional info like general header or pointers. Collision is calculated directly from faces. Towns and places on map are part of world map and are created the same way as mountains, ground etc. File size is 0x9000*835. Every 0x9000 a next segments starts.

Segment = contains 16 blocks Block = contains geometry

One block is 512 bytes, one segment is 8192 sized (512*16) + header. There is 16 blocks in a segment.

Segment

Segment starts with header (consist offsets for every block). After header a block data appears (a 4 byte header?) and triangle data.

Offset Length Description
0 68 bytes Header data
68 varies Block data
varies varies Padding (00)


Header data

Offset Length Description
0 4 bytes unknown
4 64 (16 * uint32) Offsets to blocks position. 4 bytes every offset!

Block data

Block data starts with header:

Offset Length Description
0 Byte Polygon count
1 Byte Vertices count
2 Byte Shadow(?)
3 Byte Unknown

Just after header a polygon data appears:

Offset Length Description
0 Byte F1 (Triangle 1)
1 Byte F2 (Triangle 1)
2 Byte F3 (Triangle 1)
3 Byte F1 (Triangle 2)
4 Byte F2 (Triangle 2)
5 Byte F3 (Triangle 2)
6 Byte U1
7 Byte V1
8 Byte U2
9 Byte V2
10 Byte U3
11 Byte V3
12 4 BIT/4 BIT Texture Page/CLUT id
13 Byte Ground type
14 Byte Unknown
15 Byte Unknown