Showing changes from revision #0 to #1:
Added | Removed | Changed
If the offset to the first sprite is >16, the area between the Sprite Area header and the first Sprite contains labelled blocks of data, potentially terminated by an unlabelled block that extends to the end of the extension area.
Each compliant block is of the format:
Offset | Content |
---|---|
+0 | Identifier word |
+4 | Unaligned byte length including this header |
+8 | Data (if length>8) |
… | padding to next word |
When traversing the extension blocks, if there are less than 8 bytes left in the extension area, or the length of the next block appears to be <8 or greater than the amount of data remaining, it should be considered a non-compliant, unlabelled proprietary extension block which extends to the end of the extension area, and should be ignored (some early editors produced data in a non-extensible format).
Note that as lengths are not word aligned but blocks are word aligned the length must be rounded up to the next word when traversing the list.
Identifiers have been claimed on an ad-hoc basis as there has not been a formal allocation process for sprite area extension blocks. Known identifiers include:
Identifier | Data/usage |
---|---|
“!TTX” | Teletext page |
“long” | Long sprite names |
“Chan” | Channel names |
&D40000 | Private data |
It has been suggested that DrawFile Tags be used as identifiers because these can be allocated and cannot be mistaken for a FourCC, the usual ad-hoc mechanism.
Sprite editors should maintain and not remove the extension area even if they make no use of its contents. Removal of the area must be an explicit action by the user.
There is not currently a SpriteOp to manage extension blocks.