Konami RESO extensions

DS game only γ¨γ‚“γŒγ‚Šγƒœγ‚¦γ‚·γ¨γŠγ—γ‚ƒγ‚Œγͺまほう぀かい The field guide documents the DS game's internals.

Non-Nintendo RESO type tags Konami uses: tad (widget table), nib (per-container blob), sfo (nested RESO), szl (nested LZ11).

Four RESO type_tag values sit outside the standard Nitro set. All appear only in variant-0 (16-byte TOC entry) RESO containers.

Tag census

type_tagReads asDescriptionOccurrences
szllzsNested LZ11-compressed sub-RESO34,464
taddatWidget placement table694
sfoofsNested uncompressed RESO333
nibbinPer-container blob (variable schema)251

tad β€” widget placement table

Static table of UI widget records used by overlay-driven 2D screens. Found in shop/menu containers (2d/buyitem.lzs, 2d/defcos.lzs, etc.).

The buyitem.lzs tad blob holds 76 records, each 28 bytes = 26 bytes data + 2-byte FF FF terminator (per notes/phaseA_ghidra/DISCOVERIES.md). The richer layout for screen-control records (used by the 12-byte sprite-place tables that live inside the overlay code at 0x0215A538, see sprite pipeline) is 12 bytes:

OffsetSizeTypeField
+0x002u16cell_id (which NCER cell to draw)
+0x022u16palette / style bank
+0x042u16sub_index (secondary index for compound widgets)
+0x062u16flags
+0x082u16screen_x (0..256)
+0x0A2u16screen_y (0..192)

Example: buyitem screen widget table at 0x0215A538

#cellpalsubflagsXYNotes
0692101092Left-side icon
16921022092Right-side icon
279220128107Center icon
339180125100Center near-button
4412192412896Main center
5513202512896Main center alt
601015012896BG center
7814232712896Effect center
811016012896UI alt 1
921117012896UI alt 2
10000000Zero terminator

nib β€” per-container binary

No single schema β€” each container's nib payload uses its own layout. Notable instances:

sfo β€” nested uncompressed RESO

The payload is itself a full RESO container with its own 16-byte header. Parse recursively.

szl β€” nested LZ11 sub-blob

Payload is an LZ11 stream with no LZS wrapper. Decompress with decompress_lz11() (skip the wrapper-strip step). After decompression the bytes are typically another RESO container.

Example: title_pack.ofs has 5 szl entries, each decompressing to an ~80–90 KB inner RESO holding two 256Γ—192 8bpp BG screens (top + bottom of the title for one season-of-day variant).

Container shapes

PatternCount
Only empty TOC entries (placeholders)1,477
Non-UI script / message / text348
3D-only (tbsn / mbsn / cbsn)186
NCER-bearing, no static recipe (code-driven)123
LZS-wrapped atlases123
NCER-bearing + recipe: 37 rnan-only, 8 tad, 5 nib50
NCER-less (BG-only) containers30
Nested-sfo containers6

Source