Skip to content

Extensions

Extension keys let parsers, emulators, and third parties attach data to a bundle’s header, or to a single part, under a reverse-DNS text key, without the core spec having to know about them. The spec defines the mechanism and the round-tripping rules; this catalogue lists the keys people have defined.

A key’s schema belongs to its producer, and those entries are non-normative: the page records a shape these specifications observed, and the producer may change it without notice. A key under a reserved name works the other way, because it belongs to no one producer. These specifications define it, its page carries a normative schema even though carrying the key is optional, and it moves with the format’s version rather than with anybody’s release. The Owner column below is what tells the two apart.

Which tree a name sits in follows from the same split. A key whose meaning is one producer’s sits under a domain that producer holds, as com.1retro.forge does: what one parser read out of a save is that parser’s. A key whose meaning belongs to nobody takes a reserved name in the x tree instead, which is where x.1sav.rtc carries a clock reading normalized to a Unix instant, with x.1sav.rtc.s3511a under it for the chip state a GBA cartridge keeps.

The Applies to column names every placement a key allows, and names it by shape, because a header and a part mean different things in each. A key listed for a card’s part does not belong on a device’s, and one listed for a save’s header does not belong on a collection’s.

Registration is first-come and non-blocking; to add a key, open a PR with a new extensions/<key>.md page and a row in the table.

KeyOwnerApplies toPurpose
com.1retro.forge1retroheader, partWhat a Forge parser found, and which parser found it.
x.1sav.dirent(spec)card or save partWhen a card’s directory dates a save and when it last wrote it.
x.1sav.dirent.gc-mc(spec)card partA GameCube directory entry, field by field, for a writer that builds one.
x.1sav.icon(spec)save headerThe image a console shows for a save, decoded to PNG.
x.1sav.label(spec)save header; card part as indexWhat a console calls a save, and what it says beneath that.
x.1sav.rtc(spec)save headerA clock reading normalized to a Unix instant.
x.1sav.rtc.mbc3(spec)save headerThe clock an MBC3 Game Boy cartridge keeps.
x.1sav.rtc.s3511a(spec)save headerThe latched state of a GBA cartridge’s Seiko RTC.