Besides the bitmap header, the
colour chunks and the
pixel data, an ILBM can hold any number of
other chunks. A reader that does not know one skips it. The ILBM document defines
GRAB, DEST, SPRT, CRNG and
CCRT, and lists chunks registered by other programs. Deluxe Paint writes
CRNG and DPPV in most of its pictures. All numbers are
big-endian.
GRAB, the hotspot
A Point2D: the point of a brush that sits under the pointer, measured
from the top-left corner of the picture.
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 2 | WORD | x | Pixels from the left edge. |
| 2 | 2 | WORD | y | Pixels from the top edge. |
Example: 00 3C 00 2D is the point 60, 45.
DEST, the destination merge
A DestMerge, 8 bytes: how the picture’s planes go into a bitmap with a
different number of planes.
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 1 | UBYTE | depth | The number of planes in the original source. |
| 1 | 1 | UBYTE | pad1 | Unused, 0. |
| 2 | 2 | UWORD | planePick | Where the stored planes go: each 1 bit, from the lowest, takes the next stored plane. The number of 1 bits should equal nPlanes. |
| 4 | 2 | UWORD | planeOnOff | The value to fill each destination plane that planePick leaves out: 0 or 1 for every pixel. |
| 6 | 2 | UWORD | planeMask | A 1 bit lets that destination plane be changed. |
Only the lowest depth bits of each mask mean anything. Without a
DEST, planePick and planeMask are taken as
2nPlanes − 1. None was among the files examined for this
site.
SPRT, a sprite
One UWORD, the sprite precedence: 0 is drawn in front of all others. Its presence says the picture is meant as a sprite; a 2-plane sprite would use colour 0 as the transparent colour. It is rare.
CRNG, Deluxe Paint’s colour range
A CRange, 8 bytes: a range of colours that Deluxe Paint can cycle, to
animate a picture, or use for shading. “Deluxe Paint normally writes 4 CRNG
chunks.”
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 2 | WORD | pad1 | Reserved, 0. Deluxe Paint for the PC 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. 8,192 is 30 a second, and about 273 is 1 a second. |
| 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. |
The document warns that one program sets RNG_ACTIVE but uses a rate of
36 to mean “inactive”.
000003A0 43 52 4E 47 00 00 00 08 2D 47 13 32 00 00 80 8F
000003B0 43 52 4E 47 00 00 00 08 00 00 0A AA 00 00 00 00
The first range has junk in pad1 (2D 47), a rate of 4,914,
or 18 steps a second, cycling off, and colours 128 to 143. The second has a rate of
2,730, 10 steps a second, and colours 0 to 0: an unused slot.
CCRT, Graphicraft’s colour cycle
A CycleInfo, 14 bytes, from Commodore’s Graphicraft. The document says new
programs should write CRNG instead.
| 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
Deluxe Paint IV’s range, by Lee Taran, lets a range list colours that are not next to each other. Its cells are given either as colours or as colour numbers.
| 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”; the document adds that “The RNG_DP_RESERVED flags 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: a cell given as a colour. | |
| … | 2 × nregs | DIndex | Each: cell and index, two UBYTEs: a cell given as a colour number. |
DPPV, Deluxe Paint’s perspective
Deluxe Paint II’s perspective settings (PerspState, Dan Silva, 1986),
saved so that the next session can carry on. Deluxe Paint writes it in most of its
pictures, on the Amiga and the PC, and it is 104 bytes long in every file examined for
this site. The fields, in the document’s order:
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 2 | WORD | rotType | 0 ROT_EULER, 1 ROT_INCR. |
| 2 | 2 | WORD | iA | Rotation angle, in degrees. |
| 4 | 2 | WORD | iB | Rotation angle, in degrees. |
| 6 | 2 | WORD | iC | Rotation angle, in degrees. |
| 8 | 4 | LongFrac | Depth | The perspective depth. |
| 12 | 2 | WORD | uCenter | The centre of perspective, across. |
| 14 | 2 | WORD | vCenter | The centre of perspective, down. |
| 16 | 2 | WORD | fixCoord | The fixed coordinate; the document gives no more. |
| 18 | 2 | WORD | angleStep | The large angle step. |
| 20 | 84 | the rest | grid, gridReset, gridBrCenter and permBrCenter, each a point (x, y, z), then rot[3][3], LongFracs. |
The document does not give the size of its point type. 104 bytes fits only if each point is three 32-bit values; that is an inference. The explorer shows the first nine fields and leaves the rest as bytes. That a LongFrac is a 16.16 fixed-point number is an inference from the values seen:
00000338 00 00 FF A0 00 00 00 00 01 68 00 00 01 40 00 62
00000348 00 02 00 5A …
rotType 0, iA −96, iB 0, iC 0, Depth 0x01680000 (360.0), centre 320, 98, fixCoord 2, angleStep 90DPPS, Deluxe Paint for the PC’s settings
A chunk written by Deluxe Paint for the PC, 110 bytes long in every file seen. It
was found in its PBM pictures; the ILBM files from
PC projects that were examined carry DPPV instead. No document describes
it, and the explorer shows it as bytes. Its bytes look like perspective settings, for
example the value 0x01680000 (360.0, as in DPPV’s depth) and
320, 200 (the page centre), but that is an inference.
DPI, the resolution
A DPIHeader (Spencer Shanson, 1990). The ID is DPI , with a
space.
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 2 | UWORD | dpi_x | Horizontal dots per inch. |
| 2 | 2 | UWORD | dpi_y | Vertical dots per inch. |
TINY, a thumbnail
A small copy of the picture: a UWORD width and a UWORD height, then pixel data “encoded the same way as BODY”, using the bitmap header’s compression, up to the chunk’s own size. It is described in later write-ups (Wikipedia, ModdingWiki), not in Electronic Arts’ or Commodore’s documents.
| 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 as in the BODY. |
Deluxe Paint for the PC writes it in its PBM pictures; no ILBM among the files examined for this site had one. For an ILBM, the explorer reads it as planar rows with the bitmap header’s number of planes and no mask; that is an inference.
Text chunks
Plain text, often ending in a zero byte, which the explorer leaves out when it shows them:
| ID | Holds |
|---|---|
ANNO | An annotation, often naming the program, such as “$VER: Written by ASDG’s Art Department Professional IFF3.0.4 (31.10.98)”. |
AUTH | The author. |
NAME | The picture’s name. |
(c) | The copyright notice. |
TEXT | Any text that goes with the picture. |
CLUT, a colour lookup table
A ColorLUT (Justin V. McCormick, 1989), 264 bytes: a lookup table for one
channel, used with deep or grey pictures.
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 4 | ULONG | type | Which channel: 0 CLUT_MONO, 1 CLUT_RED, 2 CLUT_GREEN, 3 CLUT_BLUE, 4 CLUT_HUE, 5 CLUT_SAT; 6 and 7 unused; higher values are reserved (CLUT_RESERVED_BITS, 0xFFFFFFF8). |
| 4 | 4 | ULONG | res0 | Reserved. |
| 8 | 256 | UBYTE[256] | lut | The table: the value to use for each input value 0 to 255. |
43 4C 55 54 00 00 01 08 00 00 00 00 00 00 00 00 00 01 02 03 …
CLUT written by Art Department Professional: type 0 (mono), an identity tableOther chunks
The explorer shows any chunk it does not decode as bytes. Some found in real files:
| ID | What is known |
|---|---|
XAMG, XMAP | Found together in LightWave 3D’s 24-plane brushes. XAMG holds 0x800, the HAM bit, and XMAP 48 bytes, a 16-colour map. They look like a CAMG and a CMAP renamed so that readers do not take the deep picture for HAM; that is an inference. |
DPXT | 64 bytes, from TrueBrilliance. Unknown. |
ASDG | 16 bytes, 00 00 00 02 80 00 80 00 80 00 80 00 80 00 80 00 in the files seen, written with Art Department Professional’s ANNO. Unknown. |
The ILBM document’s list of registered chunks also has CMYK,
CNAM, CTBL, DYCP, EPSF,
PCHG, PRVW, XBMI and XSSL, among
others; none was among the files examined for this site, and the explorer shows them
as bytes.