A visible Studio screen can draw from a NARC embedded in decoded ARM9 rather than from a named NitroFS file. Manual packs take another route: a NitroFS .blz file decompresses to a complete NARC. The archive is a container, and individual members may be compressed again. [1]
Three levels to validate
- Locate the stored byte range using either the ROM's FAT or the decoded executable's embedded archive address.
- Decode the outer BLZ layer when present and check the result's
NARCheader. - Read NARC's
BTAFmember extents,BTNFnames andGMIFpayload; decode member LZ10 or LZ11 if the member itself is compressed. [1]
The NARC header declares a total length and blocks. Member starts and ends in BTAF are relative to the GMIF payload. Reject any member whose extent escapes that payload. For each studied build, the project compared every named compressed member of the main UI archives with the original ROM decoder. The decoded bytes matched. The role of every member on screen has not yet been established. [1]
Compression signatures
LZ10 begins with 0x10 and a decoded length; LZ11 begins with 0x11 and may use an extended length form. Backwards LZ is indicated by a structural footer and decodes from the end of its output. A plausible first byte is insufficient: validate lengths, back-reference distance and the resulting container. [1]
Resource families
Common archive suffixes include layout, animation, graphics, palette, screen-map, cell-bank, hitbox, font and message members. A suffix suggests a format family, but exact path and bytes decide the decoder. In the studied main UI archives the named-member counts are 308, 473, 676 and 866 for JP V1, JP V2, US V2 and EU V2. [1]
