Besides the bitmap header, the
colour map and the
pixel data, Deluxe Paint for the PC writes
sixteen CRNG colour ranges, a TINY thumbnail and, in most
files, a DPPS chunk. Other chunks from the ILBM world may appear too. A
reader that does not know a chunk skips it. All numbers are big-endian.
TINY, the thumbnail
A small copy of the picture, a quarter of its width and height. Every PBM file examined for this site has one. It is described in later write-ups (Wikipedia, ModdingWiki), not in any Electronic Arts document.
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 2 | UWORD | width | The thumbnail’s width in pixels. |
| 2 | 2 | UWORD | height | Its height. |
| 4 | the rest | bytes | pixels | Rows “encoded the same way as BODY”: a byte a pixel, with the bitmap header’s compression, up to the chunk’s own size. |
000004A6 54 49 4E 59 00 00 03 AD 00 50 00 3C B1 00 B1 00
TINY of 941 bytes for a 320 × 240 picture: 80 × 60 pixels, a quarter of each sideThe rows are packed with ByteRun1, as the BODY is: B1 is
−79, so 80 bytes of colour 0, a whole row.
Two quirks were seen. A 320 × 55 picture has a thumbnail of 80 × 13 whose data holds
14 packed rows, one more than its height: 55 ÷ 4 rounded up, which suggests how
Deluxe Paint counts them, but that is an inference. And in the 1 × 1 palette files the
thumbnail’s single row is one byte, not padded to two as the BODY’s is.
The explorer paints the thumbnail and reports the bytes of the extra row as bytes
after the last row.
Which version of Deluxe Paint first wrote TINY is not known.
DPPS, Deluxe Paint for the PC’s settings
A chunk Deluxe Paint for the PC writes after the colour map, 110 bytes in every file seen; most PBM files have one. No document describes it, and the explorer shows it as bytes.
00000330 44 50 50 53 00 00 00 6E 00 02 00 00 00 00 00 00
00000340 00 00 00 00 00 00 01 68 00 00 01 40 00 C8 00 02
00000350 00 0F …
DPPS chunkIts bytes look like perspective settings, as in the Amiga’s
DPPV: they hold 0x01680000, which is
360.0 as a 16.16 fixed-point number and is also DPPV’s usual depth, and
320, 200, the page size or centre. That is an inference; the meaning of each byte is not
known.
CRNG, the colour ranges
A CRange, 8 bytes, as defined in the ILBM document: a range of colours that
Deluxe Paint can cycle, to animate a picture, or use for shading. Deluxe Paint for the
PC writes sixteen in every PBM file, one for each range slot, unused ones included.
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 2 | WORD | pad1 | Reserved, 0. Deluxe Paint for the PC sometimes leaves other values here. |
| 2 | 2 | WORD | rate | The cycling speed: 16,384 is 60 steps a second, so steps a second = rate × 60 ÷ 16,384. |
| 4 | 2 | WORD | flags | Bit 0, RNG_ACTIVE: cycling is on. Bit 1, RNG_REVERSE: cycle downwards. |
| 6 | 1 | UBYTE | low | The first colour number of the range. |
| 7 | 1 | UBYTE | high | The last colour number. |
000003A6 43 52 4E 47 00 00 00 08 00 00 0A AA 00 01 03 07
CCRT, Graphicraft’s colour cycle
Commodore Graphicraft’s colour cycle, from the ILBM document, 14 bytes. Not seen in a PBM; the explorer reads it if it is there.
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 2 | WORD | direction | 0: do not cycle; 1: forwards; −1: backwards. |
| 2 | 1 | UBYTE | start | The first colour number. |
| 3 | 1 | UBYTE | end | The last colour number. |
| 4 | 4 | LONG | seconds | The time between steps: whole seconds. |
| 8 | 4 | LONG | microseconds | The time between steps: microseconds. |
| 12 | 2 | WORD | pad | Reserved, 0. |
DRNG, Deluxe Paint IV’s colour range
The Amiga Deluxe Paint IV’s range (Lee Taran), which can list colours that are not next to each other. Not seen in a PBM; the explorer reads it if it is there.
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 1 | UBYTE | min | The first cell of the range. |
| 1 | 1 | UBYTE | max | The last cell. |
| 2 | 2 | WORD | rate | The speed, as in CRNG. |
| 4 | 2 | WORD | flags | 1 RNG_ACTIVE; 4 RNG_DP_RESERVED, which “should always be 0”. |
| 6 | 1 | UBYTE | ntrue | The number of DColor entries. |
| 7 | 1 | UBYTE | nregs | The number of DIndex entries. |
| 8 | 4 × ntrue | DColor | Each: cell, r, g, b, four UBYTEs. | |
| … | 2 × nregs | DIndex | Each: cell and index, two UBYTEs. |
GRAB, the hotspot
A Point2D: the point of a brush that sits under the pointer, from the
top-left corner.
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 2 | WORD | x | Pixels from the left edge. |
| 2 | 2 | WORD | y | Pixels from the top edge. |
DPPV, Deluxe Paint’s perspective
The perspective settings of Deluxe Paint II (PerspState, Dan Silva,
1986), described in the ILBM document and written in Deluxe Paint’s ILBM files, on the
PC as well as the Amiga. In PBM files the PC version writes DPPS instead,
in the files seen. 104 bytes:
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 2 | WORD | rotType | 0 ROT_EULER, 1 ROT_INCR. |
| 2 | 6 | 3 WORDs | iA, iB, iC | Rotation angles, in degrees. |
| 8 | 4 | LongFrac | Depth | The perspective depth; 16.16 fixed point, an inference. |
| 12 | 4 | 2 WORDs | uCenter, vCenter | The centre of perspective. |
| 16 | 2 | WORD | fixCoord | The fixed coordinate. |
| 18 | 2 | WORD | angleStep | The large angle step. |
| 20 | 84 | the rest | Four points and a 3 × 3 rotation; the sizes are an inference. The explorer shows these as bytes. |
DPI, the resolution
A DPIHeader (Spencer Shanson, 1990): dpi_x, UWORD, and
dpi_y, UWORD, the dots per inch across and down. The ID is
DPI , with a space. Not seen in a PBM.
Text chunks
Plain text, often ending in a zero byte, which the explorer leaves out when it shows
them: ANNO (an annotation), AUTH (the author),
NAME, (c) (the copyright notice) and TEXT.
None was seen in a PBM file; other programs than Deluxe Paint may write them.
CAMG
The Amiga display mode, one ULONG. It says whether an Amiga picture uses hold-and-modify or Extra Half-Brite, which need bitplanes; a PBM has none, so the chunk means nothing here. No PBM file seen has one. If one is there, the explorer shows its mode bits but reads the pixels as bytes all the same.
Other chunks
The explorer shows any chunk it does not know as bytes. Two ILBM chunks have no
meaning in a PBM: DEST, which says how bitplanes are merged into a deeper
bitmap, and SPRT, which marks an Amiga sprite. If either is there, the
explorer shows its fields as in an ILBM and links them here.