18,700
edits
m (→Data table: oops, this row has been broken since I added the table in 2014) |
(I) |
||
Line 9: | Line 9: | ||
The level 0 files do not actually contain a level, but instances (resources) shared across all levels. Level 0 is loaded when the game starts, and never unloaded. All other level files, 1-19, are only loaded when their corresponding level starts, and unloaded when it ends. Since Oni can only hold these two levels in memory concurrently, resources have to be duplicated on disk whenever a character class, sound effect, etc. occurs in more than one level. For instance, although there are only 2,380 unique sounds in the game, there are 7,386 sounds stored across all level data files. | The level 0 files do not actually contain a level, but instances (resources) shared across all levels. Level 0 is loaded when the game starts, and never unloaded. All other level files, 1-19, are only loaded when their corresponding level starts, and unloaded when it ends. Since Oni can only hold these two levels in memory concurrently, resources have to be duplicated on disk whenever a character class, sound effect, etc. occurs in more than one level. For instance, although there are only 2,380 unique sounds in the game, there are 7,386 sounds stored across all level data files. | ||
{{TOClimit}} | |||
==Backwards and garbage data== | ==Backwards and garbage data== | ||
Line 27: | Line 29: | ||
{{Table}} | {{Table}} | ||
{{OBD_Table_Header}} | {{OBD_Table_Header}} | ||
{{OBDtr| 0x00 | int64 | | 1F 27 DC 33 DF BC 03 00 | 0x0003BCDF33DC271F | Windows level file template checksum; Windows demo and Mac retail/demo use 0x0003BCDF23C13061 instead }} | {{OBDtr| 0x00 | int64 | | 1F 27 DC 33 DF BC 03 00 | 0x0003BCDF33DC271F | Windows level file total template checksum; Windows demo and Mac retail/demo use 0x0003BCDF23C13061 instead }} | ||
{{OBDtr| 0x08 | int32 | | 31 33 52 56 | 'VR31' | .dat version; OniSplit's .oni files use 'VR32' instead }} | {{OBDtr| 0x08 | int32 | | 31 33 52 56 | 'VR31' | .dat version; OniSplit's .oni files use 'VR32' instead }} | ||
{{OBDtr| 0x0C | | {{OBDtr| 0x0C | int16 | | 40 00 14 00 10 00 08 00 | 0x0008001000140040 | signature }} | ||
{{OBDtr| 0x0C | int16 | | 40 00 14 00 10 00 08 00 | 0x0008001000140040 | signature }} | |||
{{OBDtr| 0x0C | int16 | | 40 00 14 00 10 00 08 00 | 0x0008001000140040 | signature }} | |||
{{OBDtr| 0x0C | int16 | | 40 00 14 00 10 00 08 00 | 0x0008001000140040 | signature }} | |||
{{OBDtr| 0x14 | int32 | | 83 24 00 00 | 9347 | instance descriptor count }} | {{OBDtr| 0x14 | int32 | | 83 24 00 00 | 9347 | instance descriptor count }} | ||
{{OBDtr| 0x18 | int32 | | D4 1B 00 00 | 7124 | name descriptor count }} | {{OBDtr| 0x18 | int32 | | D4 1B 00 00 | 7124 | name descriptor count }} | ||
Line 43: | Line 48: | ||
|} | |} | ||
The file's '''template checksum''' tells us that this level data is in the .dat/.raw file scheme, as opposed to the .dat/.raw/.sep file scheme used by Mac Oni and the Windows demo of Oni. | The file's '''total template checksum''' is the sum of all the tells us that this level data is in the .dat/.raw file scheme, as opposed to the .dat/.raw/.sep file scheme used by Mac Oni and the Windows demo of Oni. | ||
The '''version''' of the instance file is the format version. Reading it backwards, as discussed under the "Backwards and garbage data" section, we get "VR31", which is probably "version 31". This is the format version of all instance files in all releases of Oni, regardless of file scheme. | The '''version''' of the instance file is the format version. Reading it backwards, as discussed under the "Backwards and garbage data" section, we get "VR31", which is probably "version 31". This is the format version of all instance files in all releases of Oni, regardless of file scheme. |