Topics

UTTORI ASM ยท IN DEVELOPMENT

Asset formats and transforms

Register target-compatible converters and exact byte transforms with declared resource dependencies.

An asset plugin registers a stable format ID, implementation version, compatible targets, resource paths, and a synchronous converter through registerAssetFormat. A lossless byte transform registers encode, bounded decode, an option schema, and any resource paths through registerAssetTransform.

The assembler resolves the format on the active target. A globally unique ID is explicit; aliases such as "4bpp" are target scoped. Declaring every palette, dictionary, or manifest input lets builds and editor analysis invalidate when those resources change. The plugin must validate values and output limits; a transform is accepted only when decoding its output reproduces its exact input bytes.

Game plugins can extend the standard SNES target without replacing it. The SoM-shaped example registers a custom tile encoder and som.lz compressor, then assembles two readable WRAM images as prerequisites before including their compressed binary outputs. It uses synthetic public fixtures; original cartridge ownership is a separate ROM preservation gate.

See standalone conversion for importer and encoder registries and source inclusion for the statement syntax.