Anvil Patch Format

From AlephWiki

Jump to: navigation, search

Here's some notes on what I've been able to divine from Anvil's patch formats so far.

Contents

Shapes

Layout

Regrettably, Anvil Shapes patches do not begin with a magic number.

Shapes patches are a list of collections:

int32 collection_index
int32 bit_depth (so far, 8 or 16)
(optional list of chunks)
'endc' tag to end the collection

Empty (unchanged) collections just have the collection index, bit depth, then the 'endc' tag.

Collections with changes appear to always have a 'cldf', followed by chunks for CLUTs, high level shapes, low level shapes, and bitmaps to be replaced or added.

Anvil does not appear to be able to delete things, so patch files are unable to represent deletions as well.

Tags

'cldf' Collection Definition

'cldf' tag
544 bytes containing struct collection_definition (collection_definition.h)

The offset tables and size members of this struct are probably for Anvil's in-memory representation. I don't believe they apply to the patch file.

Anvil uses version 3 collection definitions

'ctab' Color Table

'ctab' tag
int32 color_table_index
color_count * 8 bytes of rgb_color_value structs (collection_definition.h)

color_count comes from the collection definition

'hlsh' High Level Shape Definition

'hlsh' tag
int32 high_level_shape_index
int32 chunk_size
chunk_size bytes containing high_level_shape_definition and padding (collection_definition.h)

'llsh' Low Level Shape Definition

'llsh' tag
int32 low_level_shape_index
36 bytes containing low_level_shape_definition (collection_definition.h)

'bmap' Bitmap Definition

'bmap' tag
int32 bitmap_index
int32 chunk_size
chunk_size bytes containing bitmap_definition and data (textures.h)

'endc' End Collection

'endc' tag

Sounds

No information available yet.

Personal tools