3D model format: Difference between revisions
No edit summary |
|||
Line 5: | Line 5: | ||
* Magic - <code>PMD V1.83</code> | * Magic - <code>PMD V1.83</code> | ||
** some files use version 1.82 instead, but they aren't used by the game, the engine in PC version won't recognise anything other than 1.83 | ** some files use version <code>1.82</code> instead, but they aren't used by the game, the engine in PC version won't recognise anything other than 1.83 | ||
** There is one unused mention of <code>PMD V1.71</code> in the game binary | ** There is one unused mention of <code>PMD V1.71</code> in the game binary | ||
Line 40: | Line 40: | ||
'''Bold''' IDs are in all files, rest of them are specific for tracks | '''Bold''' IDs are in all files, rest of them are specific for tracks | ||
Some of these are either unused or possibly | Some of these are either unused or possibly repurposed | ||
All blocks | All blocks seems to be 32-bit alignedIf the offset/size address is empty it's always set to zero | ||
{| class="wikitable" | {| class="wikitable" | ||
!ID | !ID |
Revision as of 21:57, 8 January 2021
Stores 3D models, more investigation needed.
Thanks to Martin for initial format reversing.
- Magic -
PMD V1.83
- some files use version
1.82
instead, but they aren't used by the game, the engine in PC version won't recognise anything other than 1.83 - There is one unused mention of
PMD V1.71
in the game binary
- some files use version
Offset | Size | Description |
---|---|---|
0x0 | 0x18? | Magic - PMD V1.83
|
0x18 | 0x4 | Type - 0 = shadow & skybox; 1 = track; 2 = car |
0x1C | 0x4 | Zeroes? |
0x20 | 0x94? | offsetsTable |
0xB4 | 0x94? | offsetsTable sizes |
offsetsTable
You have to add 0x148 to each value to get proper pointers
Bold IDs are in all files, rest of them are specific for tracks
Some of these are either unused or possibly repurposed
All blocks seems to be 32-bit alignedIf the offset/size address is empty it's always set to zero
ID | offset | size offset | Description |
---|---|---|---|
0 | 0x20 | 0xb4 | Martin think it might be some sort of colider |
1 | 0x24 | 0xb8 | polygons data? |
2 | 0x28 | 0xbc | UV texture data? |
3 | 0x2c | 0xc0 | vertex data? |
4 | 0x30 | 0xc4 | faces data? |
5 | 0x34 | 0xc8 | Textures names |
6 | 0x38 | 0xcc | Offsets to texture names, absolute addresses in file |
7 | 0x3c | 0xd0 | Each element is 16B long, ?, ?, float, float |
8 | 0x40 | 0xd4 | Holds IDs of elements in 7 |
9 | 0x44 | 0xd8 | surface transforms data? |
10 | 0x48 | 0xdc | surfaces data? |
11 | 0x4c | 0xe0 | |
12 | 0xe4 | for non-tracks it's size of 1 divided by 16, unknown for tracks | |
13 | 0x54 | 0xe8 | |
14 | 0x58 | for tracks offset marks end of file | |
15 | 0x5c | 0xf0 | |
16 | 0x60 | 0xf4 | |
17 | 0x64 | 0xf8 | |
18 | 0xfc | stores size of 20 divided by 0x90 | |
19 | 0x100 | ||
20 | 0x70 | 0x104 | |
21 | 0x74 | 0x108 | |
22 | 0x78 | 0x10c | |
23 | 0x7c | 0x110 | |
24 | 0x80 | 0x114 | |
25 | 0x84 | 0x118 | |
26 | 0x88 | 0x11c | |
27 | 0x8c | 0x120 | |
28 | 0x90 | 0x124 | |
29 | 0x94 | 0x128 | |
30 | 0x98 | 0x12c | |
31 | 0x9c | 0x130 | |
32 | 0xa0 | 0x134 | |
33 | |||
34 | |||
35 | |||
36 |