This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
documentation:file_formats:games:deathkeep [2024/04/14 10:36] – vas.1987 | documentation:file_formats:games:deathkeep [2024/04/15 13:24] – old revision restored (2024/04/15 13:19) vas.1987 | ||
---|---|---|---|
Line 7: | Line 7: | ||
Directions for stairs and ramps means that named direction must have considered from lower to upper part of the structure. i.e. North direction for the ramp means that I’m sliding from the top towards South.\\ | Directions for stairs and ramps means that named direction must have considered from lower to upper part of the structure. i.e. North direction for the ramp means that I’m sliding from the top towards South.\\ | ||
Directions for the monsters means that monster is faced towards the named direction. | Directions for the monsters means that monster is faced towards the named direction. | ||
+ | |||
+ | I made an app, which reads all game data needed for 3D model export and for some level edit. You can edit every cube, but you can’t extend or shrink the palette. You can extract level to wavefront *.obj format. You can edit a gap between cubes before exporting (for some 3rd app needs). You can also test your suggestions by editing cube’s properties and test it later in the game. First select the target cube, edit its value and click this button “edit”. Then just save a new file or overwrite the an existing one. | ||
+ | |||
+ | ---- | ||
+ | < | ||
__**Contents**__ | __**Contents**__ | ||
Line 22: | Line 27: | ||
**Savefile structure** | **Savefile structure** | ||
- | \\ | ||
**OVERVIEW**. This description covers almost all game data files, which contains level geometry, level textures, inventory items and monsters. Movies, sounds, music and separate cel files are excluded from documenting. I also tried to investigate savefile data structure. | **OVERVIEW**. This description covers almost all game data files, which contains level geometry, level textures, inventory items and monsters. Movies, sounds, music and separate cel files are excluded from documenting. I also tried to investigate savefile data structure. | ||
Line 648: | Line 652: | ||
|FE | | | |FE | | | ||
|FF |Blank (N/A) | | |FF |Blank (N/A) | | ||
- | |||
- | I made an app, which reads all game data needed for 3D model export and for some level edit. You can edit every cube, but you can’t extend or shrink the palette. You can extract level to wavefront *.obj format. You can edit a gap between cubes before exporting (for some 3rd app needs). You can also test your suggestions by editing cube’s properties and test it later in the game. First select the target cube, edit its value and click this button “edit”. Then just save a new file or overwrite the an existing one. ( | ||
- | < | ||
**B) LEVEL DATA FILES** (\data2\levels\*data) | **B) LEVEL DATA FILES** (\data2\levels\*data) | ||
- | Data file structure | + | Data file structure: |
^Offset (HEX) ^Length (HEX) ^Description | ^Offset (HEX) ^Length (HEX) ^Description | ||
Line 1064: | Line 1065: | ||
These objects are unique items which could be found on a level (Keys, Ancestral Artefacts, Feast, etc…). Object placement encoded in Byte #7 (see chapter A.8). May be three or four of these object types per level maximum. In some levels 4th object exist in level file, but kind of ‘blank’. Object may be observed as plain texture in the game. No deep investigation also, sorry. | These objects are unique items which could be found on a level (Keys, Ancestral Artefacts, Feast, etc…). Object placement encoded in Byte #7 (see chapter A.8). May be three or four of these object types per level maximum. In some levels 4th object exist in level file, but kind of ‘blank’. Object may be observed as plain texture in the game. No deep investigation also, sorry. | ||
- | ^ ^ ^ | | + | ^Offset (HEX)^Length (HEX)^Descripton| |
- | | | | | | + | |0|4|Object types quantity available| |
- | | | | | | + | |4|1|Item ID (see Byte #7 in chapter A.8)| |
- | | | | | | + | |5|1|0| |
- | | | | | | + | |6|1|0| |
- | | | | | | + | |7|1|Header size in bytes| |
- | | | | | | + | |8|1|Offset to object’s name| |
- | | | | | | + | |9|1|Frames quantity| |
- | | | | | | + | |0xA|1|?| |
- | | | | | | + | |0xB|1|?| |
- | | | | | | + | |0xC|1|Animation speed| |
- | | | | | | + | |0xD|1|Z coordinate| |
- | | | | | | + | |0xE|1|Transparency. 0-No transparency, |
- | | | | | | + | |0xF|1|0?| |
- | | | | | | + | |0x10|1|0| |
- | | | | | | + | |0x11|1|0?| |
- | | | | | | + | |0x12|1|?| |
- | | | | | | + | |0x13|1|?| |
- | | | | | | + | |0x14|1|?| |
- | | | | | | + | |0x15|1|?| |
- | | | | | | + | |0x16|1|?| |
- | | | | | | + | |0x17|1|?| |
- | | | | | | + | |0x18|1|?| |
- | | | | | | + | |0x19|1|?| |
- | | | | | | + | |0x1A|1|?| |
- | | | | | | + | |0x1B|1|Item ID again (see Byte #7 in chapter A.8)| |
- | | | | | | + | |0x1C|1|?| |
- | | | | | | + | |0x1D|1|?| |
- | | | | | | + | |0x1E|1|?| |
- | | | | | | + | |0x1F|1|?| |
- | | | | | | + | |0x20|1|?| |
- | | | | | | + | |0x21|various|Object’s name| |
- | | | | | | + | | |4|“ANIM” section size in bytes| |
- | | | | | | + | | |4|‘ANIM’ identifier string| |
- | | | | | | + | | |various|“ANIM” data| |
+ | |||
+ | **G) END OF FILE** \\ | ||
+ | End of the file mark (-1) is located after objects block (see chapter F). After this mark level name follows. | ||
+ | |||
+ | ^Offset (HEX)^Length^Description| | ||
+ | |0|4|0xFFFFFF| | ||
+ | |4|various|Level name| | ||
+ | | |1|0x20 (dot)| | ||
+ | |||
+ | **H) GLOBAL DATA FILES** (\data2\DK Data*)\\ | ||
+ | This three files contains all item textures (also small item textures in inventory), explosions animations, weapons animations, inventory backgrounds and huge amount of unknown data.\\ | ||
+ | File structure is the follows. | ||
+ | |||
+ | ^Offset (HEX)^Length, | ||
+ | |0|0xD0|Character name and default skills| | ||
+ | |0xD0|4|Block 1 size in bytes including this 4 bytes| | ||
+ | | |various|Block 1| | ||
+ | | |4|‘APPL’ identifier string| | ||
+ | | |4|Block 2 size in bytes including this 4 bytes| | ||
+ | | |various|Block 2| | ||
+ | | |4|‘APPL’ identifier string| | ||
+ | | |4|Block 3 size in bytes including this 4 bytes| | ||
+ | | |various|Block 3| | ||
+ | | |4|‘APPL’ identifier string| | ||
+ | | |4|Block 4 size in bytes including this 4 bytes| | ||
+ | | |various|Block 4| | ||
+ | | |4|‘APPL’ identifier string| | ||
+ | | |4|Block 5 size in bytes including this 4 bytes| | ||
+ | | |various|Block 5| | ||
+ | | |4|‘APPL’ identifier string| | ||
+ | | |4|Block 6 size in bytes including this 4 bytes| | ||
+ | | |various|Block 6| | ||
+ | | |4|‘APPL’ identifier string| | ||
+ | | |4|Block 7 size in bytes including this 4 bytes| | ||
+ | | |various|Block 7| | ||
+ | | |4|‘APPL’ identifier string| | ||
+ | | |4|0x63 for DK Data 1 file, 0x64 for DK Data 2 file, 0x69 for DK Data 3 file| | ||
+ | | |4|Item ID or index # (zero-length header)| | ||
+ | | |4|“ANIM” size in bytes| | ||
+ | | |4|‘ANIM’ identifier string| | ||
+ | | |various|“ANIM” data| | ||
+ | | | |…| | ||
+ | | |1|Item ID or index # (zero-length header)| | ||
+ | | |4|“ANIM” size in bytes| | ||
+ | | |4|‘ANIM’ identifier string| | ||
+ | | |various|“ANIM” data| | ||
+ | | |4|“ANIM” or “CCB” header size in bytes| | ||
+ | | |1|If equal to zero, item’s texture is below. If not, take texture from this item’s ID| | ||
+ | | |1|0| | ||
+ | | |1|Item ID| | ||
+ | | |4|“ANIM” or “CCB” size in bytes| | ||
+ | | |4|‘ANIM’ or ‘CCB’ identifier string| | ||
+ | | |various|“ANIM” or ‘CCB’ data| | ||
+ | |||
+ | **I) SAVEFILE STRUCTURE** \\ | ||
+ | Savefile size is 356 bytes. I tried a lot of tests and now I know some bytes are used for. Some bytes have secondary meaning, may be character dependent. I made a table with all investigated data. Each cell is a byte. Number of columns and rows are equal to HEX-editor in GameGuru. | ||
+ | |||
+ | | — | — | — | — | — | <font inherit/ | ||
+ | | — | — | — | — | — | — | — | — | | ||
+ | | — | — | <font inherit/ | ||
+ | | — | — | — | — | — | — | — | — | | ||
+ | | — | — | — | — | — | — | — | — | | ||
+ | | — | — | — | — | — | — | — | — | | ||
+ | | — | — | — | — | — | — | — | — | | ||
+ | | — | — | — | — | — | — | — | — | | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | — | — | — | Health Max | Fighter at level #. Text description on the loading screen | ||
+ | | — | Character level | — | — | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | — | — | — | — | — | — | — | Level completition (time). 0 = infinite. Max - 0xFF (10 seconds) | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | — | — | — | — | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | — | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | — | — | — | — | — | — | — | — | | ||
+ | | — | — | — | — | — | — | — | — | | ||
+ | | — | — | — | — | — | — | — | — | | ||
+ | | — | — | — | — | — | — | — | — | | ||
+ | | — | — | — | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | Ring #2 | Boots | Amulet | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||
+ | | <font inherit/ | ||