PUZ File Format

NameOffsetEndLenContents
Checksum 0x000x010x2 Little-Endian short of the overall file checksum
File Magic 0x020x0D0xC NUL-terminated string, 4143 524f 5353 2644 4f57 4e00
CIB Checksum 0x0E0x0F0x2 Little-Endian checksum of the puzzle's CIB
Masked Low Checksums 0x100x130x4 A set of checksums, XOR-masked against a magic string.
Masked High Checksums 0x140x170x4 A set of checksums, XOR-masked against a magic string.
Version String(?) 0x180x1B0x4 NUL-terminated string, "1.2\0"
Reserved1C(?) 0x1C0x1D0x2 In many files, this is uninitialized memory
Unknown 0x1E0x1F0x2 In all files, this is set to 0x0000(?)
Reserved20(?) 0x200x2B0xB In files where Reserved1C is garbage, this is garbage too.
BIC 0x2C0x330x8 I've named this range the Board Initialization Checksum region. It contains the vitals of the puzzle, and is used to initialize the overall checksum of the file.

Note that this is not a "Real" value in the file
Width 0x2C0x2C0x1 The width of the board as a byte
Height 0x2D0x2D0x1 The height of the board as a byte
# of Clues 0x2E0x2F0x2 Little-Endian short of the number of clues for this board
Unknown Bitmask 0x300x310x2 Little-Endian short containing a bitmask. Operations unknown.
Unknown32 0x320x330x2 Unknown short or two bytes...
Solution 0x340x34+
w×h-1
w×h A flat string of bytes, one for each cell in the board. Rasters from the top left corner across the board, then to the second row, etc. Non-playable (ie: black) cells are denoted by '.'
Grid 0x34+
w×h
0x34+
2(w×h)-1
w×h A flat string of bytes, one for each cell in the board. Rasters from the top left corner across the board, then to the second row, etc. Non-playable (ie: black) cells are denoted by '.'

If a cell is empty, it gets a '-'; otherwise the player's guess is stored in the cell.
Title 0x34+
2(w×h)
??Delimited A NUL-terminated string containing the title of the puzzle.
Author ????Delimited A NUL-terminated string containing the author of the puzzle.
Copyright ????Delimited A NUL-terminated string, containing the copyright statement for the puzzle.
Clues ????Delimited A string #-of-clues NUL-terminated strings, one right after the other.
Notes ??EOF?? Exact format unknown at present. They're there. They are NUL-terminated; if the user has opened the Notes pane without entering any, you get an empty string. This looks like an extra NUL.