Skip to content

Asset Modding Guide#

Welcome to the Asset Modding Guide for Courage Reborn. This guide covers how to modify, replace, and create custom game assets like 3D models, textures, animations, and level layouts. This guide doesn't go in depth on every file formats but links to guides for most of them.


Important

Do not distribute Nintendo assets in your mods. Distributing copyrighted files like original .bmd or .bdl files is illegal.


Loading Custom Assets / Overrides#

To keep your mods legal and avoid distributing copyright-protected Nintendo game archives, the Courage Reborn mod loader (Petrichor) lets you override individual files inside .arc archives without replacing the full archive.

Whenever the game requests a resource (such as a .bmd model, .bti texture, or .dzr room data) from a .arc file, the mod loader intercepts the call and checks the global mods/ directory for an override.

Where to put override files#

Put the file inside a mod package, using the same path as on the game disc:

mods/<mod-id>/assets/overrides/res/<path-on-disc>

<mod-id> is the folder name under mods/. The res/ part and everything after it should match the extracted disc layout.

Example: Master Sword model#

On the disc the Master Sword mesh is here:

res/Object/Alink.arc/assets/overrides/bmwe/al_swm.bmd

Copy your edited al_swm.bmd to:

mods/my-master-sword/assets/overrides/res/Object/Alink.arc/bmwe/al_swm.bmd

Replace my-master-sword with your mod folder name. The game still loads Alink.arc from the disc. Petrichor reads your file instead of the one inside the archive.

Example: Lakebed Temple room 10#

Lakebed Temple uses stage id D_MN01. Room 10 data is here on the disc:

res/Stage/D_MN01/R10_00.arc/dzr/room.dzr

Your override path:

mods/my-lakebed-fix/assets/overrides/res/Stage/D_MN01/R10_00.arc/dzr/room.dzr

The dev map loader lists stage archives by name if you want to browse D_MN01 without memorizing paths. You can also look in the ultimate spreadsheet for a full list of all maps or other assets.

Full .arc files#

You cannot drop in a whole replacement .arc file. Unpack the archive with Siphon or another tool, edit the files you need, then place them under mods/<mod-id>/assets/overrides/res/... using the paths above.


Game File Formats Reference#

Here is a list of file formats used by the game engine:

Format Description
.arc RARC archive
.bck Skeletal animation
.bmd Binary 3D model
.bti Binary texture image
.btk Texture SRT animation
.btp Texture pattern animation
.dat Data file
.dzb Object collision mesh
.brk TEV register color animation
.dzs Stage object layout
.gz Gzip compressed file
.dzr Room object layout
.kcl Terrain collision octree map
.plc Collision attribute data
.stb Cutscene script and sound data
.blo UI layout data
.blk Cluster animation (key)
.bpk Color animation
.bmg Message text resource
.jpc Particle effect container
.tga Targa image file
.bin Binary data
.bls Binary cluster shapes
.bdl Binary display list model
.bfn Binary font file

Asset Modding Categories#

Asset modding in Twilight Princess is split by the file formats used in the GameCube/Wii engine. Here is a list of the main areas:

3D Models and Meshes (.bmd, .bdl)#

  • What they are: Binary Model Data (.bmd) and Binary Display List (.bdl) files store 3D meshes, skeleton structures, materials, and textures for actors, items, and environment pieces.
  • How they are modded: You model in standard software like Blender, export to .fbx or .obj, and use converter tools like SuperBMD to compile them back into the game's native format. You can also use tools like BMD-Optimizer in the Twilight Princess Gamecube Toolbox to optimize models before conversion.
  • Using GCFT: GCFT can preview BMD and BDL models in real time, extract or replace embedded BTI textures, and edit MAT3 material properties directly.
  • Reference: Archives and Models tabs of the TP Ultimate Spreadsheet.

Animations (.bck, .btk, .btp, .brk, .bpk)#

  • What they are: These formats store skeletal bone movements (.bck), texture scale/rotation/translation animations (.btk), texture pattern animations (.btp), TEV register color animations (.brk), and color animations (.bpk).
  • How they are modded: Skeletal animations are rigged and animated in Blender, then exported and converted using community tools. The Twilight Princess Gamecube Toolbox provides animation editing tools and rigs (like LinkRigBase.blend) to assist with Blender setups.
  • Using GCFT: GCFT lets you view and edit texture and color animations directly within J3D model archives.

Stages and Rooms (.dzs, .dzr, .dzb, .kcl, .plc)#

  • What they are: Stage object layout files (.dzs) define data that stays active for the whole stage. Room object layout files (.dzr) define actors, doors, spawns, and other room data. Terrain collision (.kcl) and its attribute companion (.plc) define map floor and wall geometry. Object collision meshes (.dzb) cover individual actors and objects, not full map terrain.
  • How they are modded: TODO WE NEED A TOOL IN CR FOR THIS.
  • Reference: Rooms, Exits, and Act. by Area tabs of the TP Ultimate Spreadsheet.

Textures and UI (.bti)#

  • What they are: Binary Texture Images (.bti) are standard image formats used by the game engine for textures, images, and UI elements.
  • How they are modded: You can extract textures and convert them to PNG using GCFT. After editing them in an image editor, you can use GCFT to convert them back to .bti and modify image attributes like image format, palette format, wrapping, and filter modes.
  • CReact mod panels: For overlay UI, you can also ship PNG/JPEG/BMP under mods/<id>/assets/ and reference them with Courage.Assets. No BTI conversion required. See Courage.Assets.

UI Layouts (.blo)#

  • What they are: Binary Layout (.blo) files control menu screens, HUD positions, and other 2D UI structure. Linked .bck, .btk, and .bpk clips drive menu animations at runtime.
  • How they are modded: You can view and modify layout parameters using the blo-gui-editor from the Twilight Princess Gamecube Toolbox.
  • Runtime in mod UI: Courage.Layout can load a BLO screen, play linked BCK/BPK/BTK clips, and rasterize the frame into a CReact texture for use in Courage.UI panels and popups. Embedded TIMG textures decode through the engine's JUT texture path.

Particles (.jpc)#

  • What they are: Particle effect containers (.jpc) store the particle visual effects used for spells, fire, water, and environmental details.
  • How they are modded: GCFT can open JPC containers, import or export folders of particle files to add or overwrite effects, and edit particle parameters in the interface.

Text and Messages (.bmg)#

  • What they are: Message resources (.bmg) store text data for dialogue, menus, and item descriptions.
  • How they are modded: You can view and edit text files inside .bmg resources using text editors or GCFT. Alternatively, you can edit message files using pikminBMG from the Twilight Princess Gamecube Toolbox. You can also use the Luau Courage.Bmg API to dynamically replace individual message strings at runtime.
  • Reference: Runtime overrides use message ids from extracted data. The spreadsheet Debug Text tab lists debug strings. See Courage.Bmg.

Extracting Game Assets#

Before you can modify any assets, you need to extract them from your game disc image. We use Siphon, a command line tool designed to handle GameCube/Wii file formats.

Getting Siphon#

You can download Siphon or build it from source.

Downloading the binary#

Download the pre-built binary for your platform from the Siphon releases page.

Making Siphon globally accessible#

To run siphon without writing the full path each time:

Add the path to the directory containing your siphon.exe to your system Path environment variable.

Create a symlink to a folder in your Path:

sudo ln -sf "$(pwd)/build/siphon" /usr/local/bin/siphon

Create a symlink to a folder in your Path:

sudo ln -sf "$(pwd)/build/siphon" /usr/local/bin/siphon


Extracting a Game Disc (.iso)#

To extract the entire filesystem of a Twilight Princess .iso file:

siphon.exe disc path\to\game.iso path\to\output_directory
siphon disc path/to/game.iso path/to/output_directory
siphon disc path/to/game.iso path/to/output_directory

This extracts the game filesystem (including folders like res/Object/) into your output directory.


Extracting RARC Archives (.arc)#

Game assets in Twilight Princess are stored inside RARC archives (.arc files).

Extract the entire archive#

siphon.exe arc path\to\archive.arc path\to\output_directory
siphon arc path/to/archive.arc path/to/output_directory
siphon arc path/to/archive.arc path/to/output_directory

List archive contents#

siphon.exe arc ls path\to\archive.arc
siphon arc ls path/to/archive.arc
siphon arc ls path/to/archive.arc

Extract a single file#

siphon.exe arc cp path\to\archive.arc:path\inside\archive\file.ext path\to\output_file
siphon arc cp path/to/archive.arc:path/inside/archive/file.ext path/to/output_file
siphon arc cp path/to/archive.arc:path/inside/archive/file.ext path/to/output_file

Handling Yaz0 Compression#

Many .arc asset files like Alanm.arc are compressed using Yaz0 compression. You can spot them by checking if the first four magic bytes read Yaz0.

Because they are compressed, direct extraction with siphon arc will fail. You must decompress the Yaz0 wrapper first.

  1. Decompress the Yaz0 wrapper:
siphon.exe yaz0 decompress path\to\compressed.arc path\to\uncompressed.arc
siphon yaz0 decompress path/to/compressed.arc path/to/uncompressed.arc
siphon yaz0 decompress path/to/compressed.arc path/to/uncompressed.arc
  1. Extract the uncompressed archive:
siphon.exe arc path\to\uncompressed.arc path\to\output_directory
siphon arc path/to/uncompressed.arc path/to/output_directory
siphon arc path/to/uncompressed.arc path/to/output_directory

Documentation and Resources#

Here are some helpful tutorials and reference materials for asset modding:

Video Tutorials#

Reference Sheets and Specifications#