Document maps findings and start moving things out of README.md
This commit is contained in:
147
README.md
147
README.md
@@ -1,116 +1,25 @@
|
||||
# WH40K: Chaos Gate
|
||||
|
||||
Re-implementation of the WH40K binary using SDL.
|
||||
Re-implementation of the WH40K binary.
|
||||
|
||||
**You must have a copy of the original game data to use this project**
|
||||
|
||||
Files:
|
||||
|
||||
```
|
||||
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/
|
||||
*.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
|
||||
IN PROGRESS:
|
||||
|
||||
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/
|
||||
cboxfont # unknown
|
||||
*.fnt # ASCII text. Map keycodes to sprites?
|
||||
*.spr # sprites, presumably
|
||||
Idx/
|
||||
WarHammer.idx # unknown, 1.8M
|
||||
Maps/
|
||||
*.MAP # gzip-compressed, must be map definition, contains `WHMAP` constant and character names
|
||||
*.TXT # scenario text
|
||||
Menu/
|
||||
*.mnu # plain text, linked to .obj file, contains definitions
|
||||
*.obj # unknown, not 3D .obj format
|
||||
Misc/
|
||||
occlusio.lis # plain text, presumably occlusion mappings?
|
||||
MultiMaps/
|
||||
*.MAP # Like Maps/
|
||||
*.TXT
|
||||
Obj/
|
||||
*.obj # must be visual data of some sort, one per placeable map object?
|
||||
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/
|
||||
Data.chk # checksums? Mentions all the .set files
|
||||
*.set # plain text, related to maps, lists a set of .obj files for that map?
|
||||
SMK/
|
||||
*.smk # Videos: RAD Game Tools Smacker Multimedia version 2
|
||||
Sounds/
|
||||
wh40k.ds # 0xffffffff then a list of .wav file names. Some sort of index?
|
||||
Wav/
|
||||
*.wav # normal WAV files, all mentioned in Sounds/wh40k.ds
|
||||
```
|
||||
|
||||
WH40K.exe is the existing game engine
|
||||
|
||||
WH40K_TD.exe is the map editor. Allows things to be saved as .MAP or as .SMF
|
||||
("Super Macro File")
|
||||
|
||||
"Mission Setup" includes information about available squad types
|
||||
This README is a grab-bag of miscellaneous information about file formats at
|
||||
present. This is being migrated to the [Formats overview](doc/formats/index.md)
|
||||
as a precursor to making this file useful!
|
||||
|
||||
No game yet, nothing even close. I'm in the very early stages of trying to
|
||||
understand the various file formats. Until then, you can play WH40L: Chaos Gate
|
||||
in a WinXP VM, disconnected from the internet. It doesn't need 3D rendering!
|
||||
|
||||
|
||||
|
||||
"Mission Setup" includes information about available squad types
|
||||
|
||||
From EquipDef.cpp Dumo: CEquipment we learn the following object types:
|
||||
|
||||
@@ -404,4 +313,38 @@ Perhaps we have 24 bytes of header and that's the header-exclusive pixel data si
|
||||
Last 8 bits would then actually be the start of the image, but there's a lot
|
||||
of similarity between them...
|
||||
|
||||
It smells a bit like a DIB:
|
||||
|
||||
| Offset | Size | Example | Purpose |
|
||||
| 0 | 2 | D1 00 (209) | ?
|
||||
| 2 | 2 | 41 01 (321) | ?
|
||||
| 4 | 2 | 80 00 (128) | Width? |
|
||||
| 6 | 2 | 3F 00 (63) | Height?
|
||||
| 8 | 4 | 00 00 00 00 | Could be pitch / stride?
|
||||
| 12 | 4 | D1 10 00 00 | Size of pixel data
|
||||
| 16 | 4 | 00 00 00 00 | ?
|
||||
| 20 | 4 | 00 00 00 00 | ?
|
||||
|
||||
|
||||
Now, how to convert the pixel data to an image?!?!
|
||||
|
||||
Average bits per pixel seems to be less-than-1, e.g. for crates.obj:
|
||||
|
||||
```
|
||||
2018/03/16 21:21:37 CFrame 0: w=76 h=57 sz=3008 w*h=4332 bpp=0.6943674976915974
|
||||
2018/03/16 21:21:37 CFrame 1: w=76 h=57 sz=2988 w*h=4332 bpp=0.6897506925207756
|
||||
2018/03/16 21:21:37 CFrame 2: w=108 h=73 sz=5185 w*h=7884 bpp=0.6576610857432775
|
||||
2018/03/16 21:21:37 CFrame 3: w=107 h=73 sz=5208 w*h=7811 bpp=0.6667520163871463
|
||||
2018/03/16 21:21:37 CFrame 4: w=109 h=95 sz=7639 w*h=10355 bpp=0.7377112506035731
|
||||
2018/03/16 21:21:37 CFrame 5: w=109 h=95 sz=7620 w*h=10355 bpp=0.7358763882182521
|
||||
2018/03/16 21:21:37 CFrame 6: w=76 h=57 sz=2996 w*h=4332 bpp=0.6915974145891043
|
||||
2018/03/16 21:21:37 CFrame 7: w=76 h=57 sz=2964 w*h=4332 bpp=0.6842105263157895
|
||||
2018/03/16 21:21:37 CFrame 8: w=108 h=73 sz=5148 w*h=7884 bpp=0.6529680365296804
|
||||
2018/03/16 21:21:37 CFrame 9: w=107 h=73 sz=5153 w*h=7811 bpp=0.659710664447574
|
||||
2018/03/16 21:21:37 CFrame 10: w=109 h=95 sz=7423 w*h=10355 bpp=0.7168517624336069
|
||||
2018/03/16 21:21:37 CFrame 11: w=109 h=95 sz=7487 w*h=10355 bpp=0.7230323515210043
|
||||
```
|
||||
|
||||
So some form of compression? RLE?
|
||||
|
||||
How does WH40K_TD.EXE draw these?
|
||||
|
Reference in New Issue
Block a user