Initial parse of Sets/*.set
This commit is contained in:
@@ -89,7 +89,7 @@ remake.
|
||||
* `Save_G/`
|
||||
* `*.sav` # savedata, gzip-compressed, custom format
|
||||
* `*.txt` # Seems to be a copy of one of Maps/*.txt
|
||||
* `Sets/`
|
||||
* [`Sets/`](sets.md)
|
||||
* `Data.chk` # checksums? Mentions all the .set files
|
||||
* `*.set` # plain text, related to maps. Editor has a concept of map sets, which these must be
|
||||
* [✓] `SMK/`
|
||||
|
77
doc/formats/sets.md
Normal file
77
doc/formats/sets.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# Set format information
|
||||
|
||||
`*.set` files seem to act as a palette of objects for a [`.map`](maps.md) file.
|
||||
The map file loads a set, and can then reference objects by a small number.
|
||||
|
||||
Since a maximally-filled map file seems to be able to reference 91,000 * 4
|
||||
objects, this is a necessary optimization for 1998-era hardware.
|
||||
|
||||
## Structure
|
||||
|
||||
These files are plain-text.
|
||||
|
||||
We handily have a `template.set`, which looks like:
|
||||
|
||||
```
|
||||
set template
|
||||
|
||||
Defs
|
||||
|
||||
40 40 40 80
|
||||
|
||||
|
||||
dirt
|
||||
h_dirt
|
||||
rocks
|
||||
blank
|
||||
blank
|
||||
blank
|
||||
blank
|
||||
blank
|
||||
blank
|
||||
blank #
|
||||
blank
|
||||
blank
|
||||
blank
|
||||
blank
|
||||
blank
|
||||
blank
|
||||
blank
|
||||
blank
|
||||
blank
|
||||
# ...
|
||||
```
|
||||
|
||||
The files are of varying lengths. `template.set` is 220 lines, `map10.set` only
|
||||
83.
|
||||
|
||||
So it's a line-based format that goes:
|
||||
|
||||
* Set description
|
||||
* Blank line (optional, missing in `GEN_JUN.set`, `GEN_WAS.set`, others)
|
||||
* `Defs`
|
||||
* Blank line
|
||||
* 4 space-separated numbers, variable between sets
|
||||
* At least one blank line, sometimes 2
|
||||
* A list of object names, sometimes with # comments on the right hand side
|
||||
* They all seem to end with a comment of some sort, e.g. `# meaningless comment`
|
||||
|
||||
Questions:
|
||||
|
||||
What are the `Defs` for? Is it `Defaults` or `Definitions`? The values are
|
||||
quite variable between files.
|
||||
|
||||
Is whitespace significant in the list of objects? First assumption is no.
|
||||
|
||||
Is it a simple 0-indexed palette or do maps embed an absolute line number?
|
||||
|
||||
Do positions in the palette have special meaning? e.g. is a particular range
|
||||
always reserved for walls?
|
||||
|
||||
Are there any special values that don't appear as files in the `Obj/` directory?
|
||||
`blank.obj` exists, so I expect not.
|
||||
|
||||
Once the map format is fleshed out a little more, can investigate by creating a
|
||||
map with a single object from the set in it and seeing what line that works out
|
||||
to be.
|
||||
|
Reference in New Issue
Block a user