19,687
edits
m (moved instance desc. flags field detail to section below table in order to simplify table and also to free up space for…; commented out this OniX info for now) |
m (thoroughly commented out OniX, for consistency, but it shall return soon) |
||
| Line 26: | Line 26: | ||
{{OBD_Table_Header}} | {{OBD_Table_Header}} | ||
{{OBDtr| 0x00 | uint64 | | 1F 27 DC 33 DF BC 03 00 | 0x0003BCDF33DC271F | Total template checksum (main indicator of engine compatibility): | {{OBDtr| 0x00 | uint64 | | 1F 27 DC 33 DF BC 03 00 | 0x0003BCDF33DC271F | Total template checksum (main indicator of engine compatibility): | ||
*0x0003BCDF33DC271F (v1.0) - templates compatible with Windows retail engine | *0x0003BCDF33DC271F (v1.0) - templates compatible with Windows retail engine | ||
*0x0003BCDF23C13061 (v1.1) - templates compatible with Windows demo and Mac engines | *0x0003BCDF23C13061 (v1.1) - templates compatible with Windows demo and Mac engines | ||
*0x0003BA70A8DBAE11 (PS2) - templates compatible with PlayStation 2 engine | *0x0003BA70A8DBAE11 (PS2) - templates compatible with PlayStation 2 engine | ||
*0x0000000000000000 (blank) - for use with [[OniX]] engine | <!--*0x0000000000000000 (blank) - for use with [[OniX]] engine, which instead handle data versioning using the 0x3C field below--> | ||
OniSplit's .oni files use PC 1.0 checksum by default and 1.1 checksums when holding data that is stored differently in the 1.1 format (SNDD, TXMP, AGQG, M3GM, IGSt, TSFT/TSGA, TRAM/TREX) }} | OniSplit's .oni files use PC 1.0 checksum by default and 1.1 checksums when holding data that is stored differently in the 1.1 format (SNDD, TXMP, AGQG, M3GM, IGSt, TSFT/TSGA, TRAM/TREX) }} | ||
{{OBDtr| 0x08 | uint32 | | 31 33 52 56 | '13RV' | .dat version (meant to be read as "VR31")<br>OniSplit's .oni files use '23RV' ("VR32") instead<br>OniX's [[Oni (folder)|GDFX]] uses '33RV' ("VR33") to signify that the new data versioning system is in use }} | {{OBDtr| 0x08 | uint32 | | 31 33 52 56 | '13RV' | .dat version (meant to be read as "VR31")<br>OniSplit's .oni files use '23RV' ("VR32") instead<!--<br>OniX's [[Oni (folder)|GDFX]] uses '33RV' ("VR33") to signify that the new data versioning system is in use--> }} | ||
{{OBDtr| 0x0C | uint16 | | 40 00 | 64 | size of this header }} | {{OBDtr| 0x0C | uint16 | | 40 00 | 64 | size of this header }} | ||
{{OBDtr| 0x0E | uint16 | | 14 00 | 20 | size of instance descriptor }} | {{OBDtr| 0x0E | uint16 | | 14 00 | 20 | size of instance descriptor }} | ||
| Line 59: | Line 59: | ||
Next we are told the addresses and sizes of the '''data and name tables''' in the instance file. The name table simply follows the data table, as you'll see if you add the data table offset plus the data table size, but that doesn't mean the name table offset is redundant; if its start was not 32-bit-aligned, it probably would be moved down to start at the next 32-bit word, but this is unnecessary because it happens to be aligned already. | Next we are told the addresses and sizes of the '''data and name tables''' in the instance file. The name table simply follows the data table, as you'll see if you add the data table offset plus the data table size, but that doesn't mean the name table offset is redundant; if its start was not 32-bit-aligned, it probably would be moved down to start at the next 32-bit word, but this is unnecessary because it happens to be aligned already. | ||
After this comes four "int"s of '''garbage'''. Space occupied by random values like this is common in the data files, and indicates that something stored in memory at this relative position was written to disk even though it wouldn't be meaningful on disk (probably pointers or uninitialized memory in a space that was being reserved for possible future use). The first two 32-bit fields are, however, used in .oni files generated by OniSplit, and the last 32-bit field is partly used by OniX for a new form of template versioning. Future usage of these fields by OniSplit and/or OniX may change (hopefully not too much). | After this comes four "int"s of '''garbage'''. Space occupied by random values like this is common in the data files, and indicates that something stored in memory at this relative position was written to disk even though it wouldn't be meaningful on disk (probably pointers or uninitialized memory in a space that was being reserved for possible future use). The first two 32-bit fields are, however, used in .oni files generated by OniSplit<!--, and the last 32-bit field is partly used by OniX for a new form of template versioning. Future usage of these fields by OniSplit and/or OniX may change (hopefully not too much)-->. | ||
That concludes the header of the instance file. Immediately after this header, we find the instance descriptors array. | That concludes the header of the instance file. Immediately after this header, we find the instance descriptors array. | ||
| Line 72: | Line 72: | ||
! width=10% | Raw Hex | ! width=10% | Raw Hex | ||
! width=10% | Value | ! width=10% | Value | ||
! width=35% | Description (retail) | ! width=35% | Description (retail<!--, OniX-->) | ||
! width=35% | Description (...) | ! width=35% | Description (...) | ||
|- align=center | |- align=center | ||