This repository has been archived on 2024-07-19. You can view files and clone it, but cannot push or open issues or pull requests.
acrossdownjs/format_specs.md

29 lines
997 B
Markdown
Raw Normal View History

2020-08-03 18:34:03 +00:00
# `puz` format specifications
## Foreword
The AcrossLite format is not publicly documented. This specification was built by probing dozens of `puz` files and is a living document that will be update as new sections of the format are figured out.
## Format
The `puz` file format is a binary blob with `latin1` encoding.
### Header
The header section is consistently 52 bytes long.
|Label|Start offset|Length (bytes)|Notes|
|:----|:----|:----|:----|
|Puzzle width|`0x2c`|1|Self-explanatory.|
|Puzzle height|`0x2d`|1|Self-explanatory.|
### Body
The body of the puzzle starts consistently at offset `0x34`.
|Label|Start offset|Length (bytes)|Notes|
|:----|:----|:----|:----|
|Solution|`0x34`|`width * height`|Based on the height and width, the solution is written out as ASCII.|
|Layout|(end of the solution)|`width * height`|The layout of the grid is defined with `.` used as "empty cell"|
|Clues|(end of the layout)|???|`NUL` separated strings containing each of the clues, not numbered.|