Skip to main content

Zelda (Wii U / Switch) — XeNTaX Forum Knowledge Extraction

1. Breath of the Wild (Wii U / Switch) — Yaz0 / SARC / sblarc​

1.1 Archive Pipeline​

Game data → .pack (SARC) → .sblarc (Yaz0 compressed SARC) → content files
Path example: content/Pack/Bootup.pack/Layout/Common.sblarc

1.2 Yaz0 Compression​

  • Magic: Yaz0 (4 bytes)
  • Endianness: Big-endian (Nintendo standard)
  • Original spec: http://www.amnoid.de/gc/yaz0.txt (2005, GameCube era)
  • BotW uses: Yaz0 wrapping SARC archives (.sblarc = Yaz0 + SARC)

1.3 Tools​

ToolPurposeNotes
Syroot.NintenTools.Yaz0C# decode/encodehttps://github.com/Syroot/NintenTools.Yaz0 — NuGet package
Yaz0.exe (XeNTaX community)CLI decode/encodeFake compression (level 0) on encode → larger files but valid
Uwizard / yaz0encCommunity toolsRepacking issues reported (game crashes even with untouched content)
Switch-ToolboxMulti-formathttps://github.com/KillzXGaming/Switch-Toolbox — supports Yaz0, SARC, BWAV, GTX

1.4 SARC Archives​

  • Magic: SARC
  • Tool: JayK's unpacker (2015) — works for BotW, Mario 3D World, Captain Toad
  • Repacking: Community asked but no confirmed working repacker in thread

1.5 Key Issues​

  • Repacking crashes: Game requires maximum compression; fake compression (level 0) produces valid Yaz0 but game rejects it
  • Compression ratio: Original 3.77 MB → re-encoded larger; no tool matched original ratio
  • File structure: content/Pack/*.pack (SARC) → contains Layout/*.sblarc (Yaz0)

2. Tears of the Kingdom (Switch) — Audio​

2.1 BWAV Format​

  • Extension: .bwav
  • Container: .bars.zs (zstd compressed) → extract with zstd → .bars → contains .bwav
  • Playback: ~90% playable in Foobar2000 with vgmstream; ~10% fail (different encoding?)

2.2 Tools & Resources​

ResourceLink
GameBanana posthttps://gamebanana.com/posts/10308634
Switch-Toolboxhttps://github.com/KillzXGaming/Switch-Toolbox
vgmstreamFoobar2000 component for BWAV

3. Twilight Princess HD (Wii U) — GTX Textures​

3.1 GTX Format​

  • Extension: .gtx
  • Difference from standard Wii U GTX: Stores multiple textures per file (newer format)
  • Standard tools (texconv2, Noesis) only extract first texture
  • Community work: RandomTBush was developing a GTX splitter (2016)

3.2 Archive​

  • Container: .pack.gz (gzipped SARC)
  • Extraction: QuickBMS script → geo/ and tex/ folders

4. Skyward Sword (Wii) — LZ / ARC / Enemy Data​

4.1 Formats​

  • Compression: LZ
  • Archive: .arc
  • Enemy files: .endat, .entxt (spawn points/events?), .zev.dat (enemy spawn data?)
  • Status: Partially documented; spawn/event formats not fully understood

5. Ocarina of Time 3D (3DS) — CSAB / CMB​

5.1 Formats​

  • .csab: Animation data (not readable by N3dsCmb viewer)
  • .cmb: Model container
  • .zar: Archive containing .cmb + .csab

5.2 Tools & Analysis​

ToolNotes
N3dsCmb ViewerLoads .cmb, fails on .csab animations
hex2objManual mesh extraction (shakotay2)
OoT3D-Importerhttps://github.com/MeltyPlayer/OoT3D-Importer — Blender importer
GAR - ZAR UnpackExtracts models/animations from ZAR

5.3 CSAB Animation Structure (from shakotay2 analysis)​

  • Bone weights stored in VatrChunk.BoneWeights
  • Animation data at sepd.BoneWeightArrayOffset
  • Frame data: 16 bytes per frame (difference of offsets = count × 16)
  • Skinning weights possibly in .dae export but not confirmed

6. Zelda 3DS Models (General) — CMB / CSAB​

6.1 Formats​

  • .cmb: Model format (Nintendo 3DS)
  • .csab: Skeletal animation
  • .zar: Archive (GAR tool extracts)

6.2 Working Pipeline​

  1. GAR - ZAR Unpack → extract .cmb + .csab
  2. OoT3D-Importer (MeltyPlayer) → import to Blender
  3. Save as .blend → open in Blender 2.83+ LTS (fixes GFX issues)

7. Zelda Zone DLC (Sonic Lost World Wii U) — Hedgehog Engine​

7.1 Archive Pipeline​

.cpk (CriWare) → quickbms cpk script → .pac files
.pac → pacpack-WiiU (libgens-sonicglvl WiiU branch) → game files

7.2 File Types​

ExtensionContent
.modelMesh (convertible to FBX via modelfbx_2012)
.shadow-modelShadow mesh
.skl.hkxHavok skeleton (HKX 2012)
.anm.hkxHavok animation
.ddsTextures (Gfx2 header = Wii U GX2)
.materialMaterial definitions

7.3 Tools​

ToolPurpose
modelfbx_2012.model → FBX (no bones)
HKXConverter-2012-With-Metadata.skl.hkx + .anm.hkx → FBX with bones
Switch-Toolbox / texconv2.dds (Gfx2) conversion
SonicGLvlLevel editor/viewer

7.4 Special Cases​

  • zdlc03_obj_fairy.model → converts to 5 planes (texture-driven geometry)
  • 4th material slot expects "water" string; other values trigger error

8. Four Swords Anniversary (DSi) — Binary Formats​

8.1 Formats​

  • .bin, .blz (compressed textures)
  • Community requested help for translation (2021)
  • No documented tools in thread

9. Cross-Game Nintendo Formats Summary​

FormatGamesCompressionTools
Yaz0BotW, TPHD, Mario 3D World, many Wii ULZSS variantSyroot.NintenTools, Yaz0.exe, Switch-Toolbox
SARCBotW, Mario 3D World, Captain Toad, manyNone (container)JayK unpacker, Switch-Toolbox
GTXTPHD, BotW, most Wii UBlock compressiontexconv2 (partial), Switch-Toolbox, custom splitter needed
BWAVTotK, BotW (Switch)ADPCM/PCM in BARvgmstream, Switch-Toolbox
BAR/ZSTotKzstd (.zs)zstd + Switch-Toolbox
CMB/CSABOoT3D, MM3D, Zelda 3DSCustomOoT3D-Importer, GAR, hex2obj
HKX (2012)Sonic Lost World (Wii U)Havok packfileHKXConverter-2012, havok2fbx
LZ/ARCSkyward Sword (Wii)LZCustom tools

RepoDescription
Syroot/NintenTools.Yaz0C# Yaz0 library
KillzXGaming/Switch-ToolboxAll-in-one Switch/Wii U tool
MeltyPlayer/OoT3D-ImporterBlender importer for 3DS Zelda
slashiee/libgens-sonicglvl (WiiU branch)Sonic Wii U PAC/PACK tools
RandomTBush (GTX splitter)WIP GTX multi-texture splitter
XeNTaX threadsOriginal discussions (see raw file)

11. Gaps / Unresolved​

  • Yaz0 maximum compression: No public tool matches Nintendo's compression ratio
  • SARC repacking: No confirmed working repacker for Wii U
  • GTX multi-texture splitter: Never released (RandomTBush 2016)
  • CSAB animation playback: Not implemented in N3dsCmb viewer
  • Skyward Sword .endat/.entxt/.zev.dat: Spawn/event format undocumented
  • Four Swords DSi .blz: No decompression tool documented