Files
ordoor/doc/formats/index.md
Nick Thomas acb7882549 Do some more file format spelunking
`WarHammer.ani` turns out to be a regular `obj` file; `WarHammer.idx`
is partially decoded, but I'm struggling to link it to the former in
a reasonable way at the moment.
2020-04-15 00:27:43 +01:00

5.1 KiB

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/
  • Assign/
    • *.asn # Unknown, seems to be related to .obj files
  • Cursor/
    • *.ani # RIFF data, standard ANI format \o/
    • Cursors.cur # obj file containing pointers and drag elements
  • 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 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/
  • Idx/
  • Maps/
  • Menu/ - UI element definitions
  • Misc/
    • occlusio.lis # plain text, presumably occlusion mappings?
  • MultiMaps/
  • [✓] 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/
  • [✓] SMK/
    • *.smk # Videos: RAD Game Tools Smacker Multimedia version 2
  • Sounds/
  • Wav/

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!

(Just some noticed so far)