Game-data formats
Firestaff reads original media supplied by the player. This reference describes the file containers and record families that the current code recognises. It is not a compatibility promise: a successfully decoded record may still be held behind a runtime gate until its original consumer is known.
The scanner identifies an edition by content hash. A familiar filename is not enough, and files from different editions must not be combined. Original media, saves and firmware stay outside the repository.
Format status
| Term | Meaning |
|---|---|
| Read | The container and the stated record family are decoded from verified original bytes. |
| Bound | Decoded data reaches a source-owned runtime consumer. |
| Opaque | The bytes and their boundaries are verified, but their semantics have not been inferred. |
| Closed | Firestaff deliberately refuses the route until the missing original evidence is available. |
Common media handling
Loose files, ZIP archives and supported disc-image containers can be scanned
without relying on their paths. Archive members are read directly from the
supplied container into bounded process memory; Firestaff does not unpack
or persist game-data members in a Firestaff-owned directory. For the DAT-based
games, GRAPHICS.DAT and DUNGEON.DAT form an edition pair; a recognised
graphics file never authorises a dungeon from another release.
Dungeon Master and Chaos Strikes Back
DM1 and CSB share much of the original dungeon lineage, but their graphics containers differ by platform. A renderer must select the decoder belonging to the verified release; it must not reinterpret another platform’s bytes.
| Family | Container or record form | Current use |
|---|---|---|
| PC 3.4 graphics | GRAPHICS.DAT IMG3 records. The decoded pixels are packed 4-bit values, high nibble first, with row padding. |
Read and bound for the PC DM1 route. CSB has no original DOS release; PC-shaped CSB data remains a reference and compatibility boundary, not CSB’s default platform. |
| Amiga graphics | Direct IMG1 records. The expansion path is nibble RLE and is independent of IMG3. | Read and bound for DM1 and the native CSB Amiga routes. |
| Atari ST graphics | DMCSB1 catalog with 563 records. Individual records use Atari LZW; graphics records then use big-endian IMG1 data. | Read and bound for DM1. CSB uses the same native-container family for its Atari startup, HUD and supported viewport material. |
| FM Towns graphics | GRAPHICS.DAT has an 0x8001 envelope but its records use the native IMG2 stream. It is not a PC IMG3 file merely because the outer marker is similar. |
Read and bound for the verified DM1 and CSB FM Towns paths. |
| Dungeon data | DUNGEON.DAT holds maps, square data and linked thing records. Byte order is selected from the verified platform data rather than guessed from a filename. |
Read and bound where the corresponding game/runtime path is admitted. |
| Amiga program media | CSB uses platform program and presentation assets such as TITL.DAT, APPB.FTL, KAOS.FTL, BJELoad_R and decoded IMG1 graphics. |
Native Amiga startup, entrance and supported HUD/viewport surfaces are bound per edition. |
| Atari CSB program media | ANIMATE.SCR, ANIMATE.DAT, ANIMATE.FTL, FTLCODE, CHAOS.FTL and SWITCH.DAT are separate Atari-era assets. |
Native ANIMATE-to-runtime handoff is bound; file names alone are never a substitute for the matching hashes. |
| FM Towns CSB program media | RUN386.EXE, SWITCHTW.EXP, CHTWE.EXP/CHTWJ.EXP, UTILE.EXP/UTILJ.EXP, ANM streams and CD data are a version-specific package. |
The verified title, Game and supported Utility routes use the selected language package. |
CSB saves and character media
| File family | What is established | Current boundary |
|---|---|---|
MINI.DAT, MINIF.DAT, MINIG.DAT |
Original campaign/bootstrap media, not a generic user-save name. | Read where a source-supported platform route uses it. Firestaff never writes campaign MINI files. |
Atari/Amiga CSBGAME*.DAT and .BAK |
Original GAMEBLOCK-derived saves with platform-specific byte order and language slot names (CSBGAME, CSBGAMEF, CSBGAMEG). Backup recovery follows the original canonical-slot rule. |
Provenance and native backup recovery are bound. A complete byte-for-byte Amiga user-save corpus is still required before expanding Amiga write claims. |
FM Towns CSBGAME.DAT / .BAK |
F31 save image: a C5 header, five checksummed save parts, active groups, champions/party, events, timeline, four portraits and a dungeon tail. CDATA/MINI.DAT and CJDATA/MINI.DAT are bootstrap images, not user saves. |
Reader, canonical-slot backup recovery and bounded F0433/F7052 write-back are fail-closed. Writing requires an already admitted canonical slot, preserves unowned source bytes, rotates .BAK and is read back through F0435. The supplied English candidate is rejected for its impossible map pairing; the language-matched Japanese corpus passes its F0435 runtime gate. Independent byte comparison against an original F31 write capture remains open. |
CSBWin csbgame*.dat |
CSBWin’s save layout is source-format evidence for GAMEBLOCK body variants, timer widths and tail records. | It is not original CSB game media, a DOS edition or a Firestaff runtime route. No CSBWin data path can make CSB playable on PC/DOS. |
| Utility portraits | Amiga Utility ADF, Atari Utility MSA and FM Towns C06 portrait files are separately identified media. FM Towns .CMP admission checks its original header fields before use. |
The verified FM Towns C06 route is exposed through the dedicated start-menu entry and --csb-utility-disk; it boots the selected F31 package before C06. Supported import/editor slices are bound; a full native file-picker and save transaction are not claimed. |
Dungeon Master II: Skullkeep
| Family | Container or record form | Current use |
|---|---|---|
GRAPHICS.DAT |
Typed GDAT record graph rather than a flat sprite sheet. Records carry palettes, interface media, maps, map chips, materials, creature data and placement data. | Read and bound only through typed source consumers. Unknown records are not promoted to images. |
DUNGEON.DAT |
PC G1 map/record data. Real-data evidence establishes that GenericRecord::w0 is game data, not a next-record link; DB3 and DB4 have proven extension pools. |
Read and bound for the covered world/runtime slices. Other record semantics stay gated. |
| GDAT audio | A sound entry has a two-byte format header followed by unsigned 8-bit mono PCM at 6,000 Hz. | Source PCM decoding and bounded voice allocation are implemented. |
| FM Towns data | Original CD DATA/ content, Japanese program/presentation material and platform-specific animation streams. |
Identified and used only by the corresponding Towns route. DM2 maps authenticated Towns GDAT text keys through gettext; no sibling PC data is required or used as a fallback. |
| Amiga media | Installer media plus CD.DAT and SK00.MOD through SK09.MOD for original map music. |
Read as original media where supported; these files do not replace the required edition pair. |
SKSAVE |
Original save media. | Optional resume input, never a substitute for a verified new-game data pair. |
More detail on GDAT and the G1 record graph is in DM2 GDAT internals.
DM Nexus
Nexus is a Sega Saturn game. Preserve the complete CUE/BIN image or an equivalent verified extraction; individual files are useful evidence but are not a replacement for the source disc.
| Family | Container or record form | Current use |
|---|---|---|
| Disc identity | DM.BIN and associated Saturn data track identify the package. |
Required admission marker. |
LEV*.DGN |
DMDF/DGN level data with bounded Structure1, Structure2 and Structure3 families. Structure3 currently supplies typed topology and fixed-point vector evidence, not an inferred draw format. | Read; only source-proven world/material paths are bound. |
*.MNS |
Static material resources such as SN_FLOOR.MNS and SN_WALL.MNS, with bounded texture/palette material data. |
Used by the admitted static-material route. |
MENU.BPK and FACE.BIN |
PRS3 compressed data. The decoder consumes control bits least-significant-bit first, literals and bounded window copies; FACE.BIN also carries 64-entry BGR555 palettes. |
Byte decoding is verified. General BPK presentation remains closed until VDP1 upload, palette lane, placement and command order are captured. |
SNDLEV*.SAL / SNDLEV*.MAP |
Sound-level data. A shared SAL prefix is verified, but no complete payload or driver grammar has been established. | Opaque and closed for speculative decoding. |
See Nexus DGN and PRS3 internals and Nexus SAL/MAP internals.
Theron’s Quest
Theron’s Quest does not expose a conventional runtime filesystem on its data track. The original program addresses CD records relative to the track base.
| Family | Container or record form | Current use |
|---|---|---|
| Track 02 | Hash-verified JP/US raw MODE1/2352 BIN with strict CUE layout. A physical sector is 2,352 bytes and its MODE1 user data begins at offset 0x10 with 2,048 bytes. |
Required source route. ISO/2048 data is not silently treated as the source-locked raw track path. |
| IPL and stage records | The verified IPL, stage-two and later record windows have bounded record, sector and destination receipts. | Transport and selected data framing are bound; unproven payloads remain opaque. |
| Level descriptors and resources | Descriptor records identify bounded resource spans and variable-width encoded payloads. | Framing and source byte decoding are available only with the matching runtime evidence; tile, palette and later semantic claims stay gated. |
| Track 19 | Separate optional audio/metadata media. | Preserved independently from Track 02 admission. |
| SRM saves | A save candidate is a gzip member with bounded header parsing, CRC32 and ISIZE checks. Firestaff-native exports use a clearly separate FSTQPTY1 body and no-replace publication. |
Unknown original bodies remain opaque and are not restored by guesswork. |
See Theron’s Quest Track 02 internals for the sector and save boundaries.
What Firestaff does not do
Firestaff does not create game data, fill missing formats with a different platform’s assets, re-label an opaque span as a known structure, or format an original game disk. When a required decoder, ownership rule or original runtime consumer is missing, the relevant route stays closed.