In words of one syllable
WOW.
Ok dokey this is great. We know something more than what we did before
Cyb
Thank you Cyberman, it certainly is more information than what you knew a week ago and what you provided with the sarcastic bit in your comment altogether.
(For your previous information and the non-sarcastic part of your comment, I truly thank you.)
I admit it's not the most precious information you can get but I thought it was you who was interested in locating the underwater world... and that was the easy part to document.
Now, let's go on...
I think the part after the vertices' coordinates in the mesh structure holds the normals of the vertices. I added those vectors to the surface of the WM and more or less they follow the slope. I didn't make any calculation to verify this, so the real interpretation can be a bit different but surface related.
This is an update to the mesh structure I posted before:
(2 bytes) Number of triangles.
(2 bytes) Number of vertices.
Start of triangle data:
(1 byte) Index of vertex 0 of triangle.
(1 byte) Index of vertex 1 of triangle.
(1 byte) Index of vertex 2 of triangle.
(1 byte) Unknown.
(1 byte) Coordinate u in texture for vertex 0.
(1 byte) Coordinate v in texture for vertex 0.
(1 byte) Coordinate u in texture for vertex 1.
(1 byte) Coordinate v in texture for vertex 1.
(1 byte) Coordinate u in texture for vertex 2.
(1 byte) Coordinate v in texture for fertex 2.
(2 bytes) Unknown.
... (Repeat for each triangle.)
Start of vertex data:
(2 bytes) Coordinate x of vertex.
(2 bytes) Coordinate y of vertex. (Signed.)
(2 bytes) Coordinate z of vertex.
(2 bytes) Unknown.
... (Repeat for each vertex.)
Start of normal data:
(2 bytes) Component on coordinate x of normal for vertex 0. (Signed.)
(2 bytes) Component on coordinate y of normal for vertex 0. (Signed.)
(2 bytes) Component on coordinate z of normal for vertex 0. (Signed.)
(2 bytes) Unknown. (Always 0.)
... (Repeat for each vertex.)
That's all I have to add about the meshes. The rest must be texture and walkmap related.
The rest of this post is about the WM in general and the repetition of the blocks, that I find interesting.
I posted to Mirex's trashbin (
http://bin.mypage.sk/FILES/ff7wm2.JPG) a picture of WM0. The boxes marked in red delimit the meshes of the blocks that change according to the story of the game. I only marked the meshes but put the numbers of the blocks inside the boxes.
'wm0.map' has the blocks arranged like this:
+----+----+----+----+----+----+----+----+----+
+ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
+----+----+----+----+----+----+----+----+----+
+ 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
+----+----+----+----+----+----+----+----+----+
+ 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
+----+----+----+----+----+----+----+----+----+
+ 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
+----+----+----+----+----+----+----+----+----+
+ 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
+----+----+----+----+----+----+----+----+----+
+ 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 |
+----+----+----+----+----+----+----+----+----+
+ 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 |
+----+----+----+----+----+----+----+----+----+
and blocks 63, 64, 65, 66, 67 and 68 replace blocks 50, 41, 42, 60, 47 and 48, in that order.
- Block 63 replaces mesh 8.
- Block 64 replaces meshes 1, 2, 3, 5, 6, 7, 9, 10, 11, 13, 14 and 15.
- Block 65 replaces mesh 4.
- Block 66 replaces meshes 2 and 3.
- Block 67 replaces meshes 3 and 7.
- Block 68 replaces meshes 0 and 4.
What follows is another take on the blocks of 'wm0.bot':
As I said in a previous post, the blocks in 'wm0.bot' are arranged in sets, but I only mentioned that for the first 252 blocks.
The remaining 80 blocks are arranged in a similar way; they don't cover the whole WM but selected regions, usually around the blocks that are replaced. When I say they are arranged in the same way, I mean that blocks divisible by 4 are part of a set, the ones with a reminder of 1 are part of another set (rotated horizontaly), the ones with a reminder of 2 are another set (rotated vertically) and the ones with a reminder of 3 another set (rotated horizontally and vertically.)
That leaves us with 20 blocks and the remaining 60 blocks simply as translations of those blocks.
Those 20 blocks seem to be arranged in 4 sub-groups arranged like this:
- Blocks 252, 256, 260 and 264 that substitute blocks 40, 41, 49 and 50 of 'wm0.map'.
- Blocks 268, 272, 276, 280, 284 and 288 that substitute blocks 31, 32, 33, 40, 41 and 42 of 'wm0.map'.
- Blocks 292, 296, 300 and 304 that substitute blocks 50, 51, 59 and 60 of 'wm0.map'.
- Blocks 308, 312, 316, 320, 324 and 328 that substitute blocks 37, 38, 39, 46, 47 and 48 of 'wm0.map'.
It seems as if 'wm0.bot' is used to optimize scrolling the world map on the screen... but I wonder why so much redundancy.
Well, that's enough FF7 for me at the moment.