[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]

Here's a regular expression summary of the FORM ILBM syntax.  This could
be an IFF file or a part of one.

    ILBM ::= "FORM" #{    "ILBM" BMHD [CMAP] [GRAB] [DEST] [SPRT] [CAMG]
                            CRNG* CCRT* [BODY]    }

    BMHD ::= "BMHD" #{    BitMapHeader    }
    CMAP ::= "CMAP" #{    (red green blue)*    } [0]
    GRAB ::= "GRAB" #{    Point2D    }
    DEST ::= "DEST" #{    DestMerge    }
    SPRT ::= "SPRT" #{    SpritePrecedence    }
    CAMG ::= "CAMG" #{    LONG    }

    CRNG ::= "CRNG" #{    CRange    }
    CCRT ::= "CCRT" #{    CycleInfo    }
    BODY ::= "BODY" #{    UBYTE*    } [0]

The token "#" represents a ckSize LONG count of the following {braced}
data bytes.  E.g., a BMHD's "#" should equal sizeof(BitMapHeader).
Literal strings are shown in "quotes", [square bracket items] are
optional, and "*" means 0 or more repetitions.  A sometimes-needed pad
byte is shown as "[0]".

The property chunks BMHD, CMAP, GRAB, DEST, SPRT, CAMG and any CRNG and
CCRT data chunks may actually be in any order but all must appear before
the BODY chunk since ILBM readers usually stop as soon as they read the
BODY.  If any of the 6 property chunks are missing, default values are
inherited from any shared properties (if the ILBM appears inside an IFF
LIST with PROPs) or from the reader program's defaults.  If any property
appears more than once, the last occurrence before the BODY is the one
that counts since that's the one that modifies the BODY.

[Back to Amiga Developer Docs]