# Formats Chaos Gate has over 700MB of data, organized (seemingly) logically into files in directories. Being able to parse, display, and use that data is paramount to any remake. ## Filesystem layout * `Anim/` * `WarHammer.ani` # Doesn't seem to be a RIFF file. 398M so very important. * There's a pcx image header at `dd ... bs=1 skip=213` but it seems to be a false alert * Hits for "AmigaOS bitmap font"... probably a false positive * Lots of 8-byte reads when loading stuff in the mission editor * Some ~4K reads, havent found one corresponding to a known format yet * [`Assign/`](obj.md#assign) * `*.asn` # Unknown, seems to be related to .obj files * `Cursor/` * `*.ani` # RIFF data * `*.cur` # Presumably standard windows-format non-animated cursors * `Data/` * `*.dat` # plaintext files defining properties of objects. No single format * **PARSED** * `Accounting.dat` # key = value => internal/data/accounting.go * `AniObjDef.dat` # animated object definitions * `GenericData.dat` # Generic Game Settings * **TODO** * `ChaNames.dat` # list of character names * `Coordinates.dat` # Weapon Firing Coordinates * `Defs.dat` # defines properties for objects and tiles, each of which seems to have an id * `GDestroy.dat` # table of what destroys what? * `HasAction.dat` # "Are there animation for each of the character" - list of booleans * `MiniMap.dat` # lots of seemingly random numbers. IDs? * `MissionBriefing.dat` # Contains all Campaign Mission Briefing Text. Sections: "CAMPAIGN MISSION X ... END CAMPAIGN MISSION X" * `PWeight.dat` # Personality weights for the individual character types * `Random_AI.dat` # contains the percentage of the different AI types for each of the different Chaos Squad Types * `RandomPlanets.dat` # Campaign Primary and Secondary Objectives * [`Sounds.dat`](sound.md) # Sound Effect Data * `SpellDef.dat` # SPELL DEFINITIONS * `StdWeap.dat` # SQUAD STANDARD WEAPONS * `Ultnames.dat` # List of names for ultramarines * `VehicDef.dat` # VEHICLE DEFINITIONS * `WeapDef.dat` # Weapon definitions * **PROBABLY NOT NEEDED** * `BugHunt.dat` # Contains SMF text for Bug hunt random missions * `Credits.dat` # list of credits * `GenArm.dat` # "Random campaign armory levels - space marine" * `HeroArm.dat` # "Random campaign armory levels - Veteran" * `MHeroArm.dat` # "Random campaign armory levels - Veteran" * `PlanetDesc.dat` # well-documented params. random mission generator params per planet. * `RandChar.dat` # Random character matrix. Information on what goes into a character matrix. * `RandSMFtext.dat` # SuperMacro Objectives for Campaign Random Mission Generator. * `SpArm.dat` # "RANDOM CAMPAIGN ARMORY LEVELS - Veteran" * `VetArm.dat` # "RANDOM CAMPAIGN ARMORY LEVELS - Veteran" * `*.chk` # checksums? Mentions all the .dat files * `*.cyc` # ColorCycle DataFile. * `*.dta` # localized strings and things * `Encyclopedia.dta` # encyclopedia entries * `KeyMap.dta` # unknown * `Keymap.dta` # unknown * `USEng.dta` # Localized strings * `EquipmentMenuData` # gzip-compressed, presumably to do with (initial?) squad configuration * `Filters/` * `wh40k.flt` # Audio filter(s?) * [✓] [`Fonts/`](fonts.md) * `cboxfont` # ??? * `*.fnt` * `*.spr` * `Idx/` * `WarHammer.idx` # unknown, 1.8M * [`Maps/`](maps.md) * `*.MAP` * `*.TXT` * [`Menu/`](mnu.md) - UI element definitions * `*.mni` * `*.mnu` * [`*.obj`](obj.md) * `Misc/` * `occlusio.lis` # plain text, presumably occlusion mappings? * [`MultiMaps/`](maps.md#multimaps) * `*.MAP` * `*.TXT` * [✓] [`Obj/`](obj.md) * `*.obj` * [✓] `Pic/` * `*.pcx` # Standard .pcx format * `RandomMaps/` * `*.chk` # multiplayer. worry about these another day * `*.dat` * `Save_G/` * `*.sav` # savedata, gzip-compressed, custom format * `*.txt` # Seems to be a copy of one of Maps/*.txt * [✓] [`Sets/`](sets.md) * `Data.chk` * `*.set` * [✓] `SMK/` * `*.smk` # Videos: RAD Game Tools Smacker Multimedia version 2 * [ ] `Sounds/` * [`wh40k.ds`](sound.md) * [ ] `Wav/` * [`*.wav`](sound.md) Phew. ## General notes * For binary formats, integers seem to be stored in little-endian * *Almost everything* seems to be in a data file somewhere. Helpful! * `make loader` creates a `load` binary that will try to load various bits of data from `investigation/` and `orig/`. I use it to investigate file formats and the parsers I'm writing. Ensure you're in a `GOPATH`! ## Cross-links / associations (Just some noticed so far) * [`Assign/*.asn`](assign.md): * [`Obj/*.obj`](obj.md). * [`Maps/*.map`](maps.md): * [`Maps/*.txt`](maps.md#associated-txt-file) * [`Sets/*.set`](sets.md) * [`Sounds/wh40k.ds`](sound.md) * `Wav/*.wav`