This tutorial aims to demonstrate how to edit most of the audio from The Legend of Zelda: The Wind Waker.
A Guide Based on the Work of Gamma, LagoLunatic, Arookas, Laenthor and Praecipua
Ported from here
Table of Contents
Introduction
- General Information
- Requirements
Part 1: Workflow
- Extracting the game files
- Preparing the workspace
- Important commands
- Running the game uncompiled
Part 2: Editing
- Extracting the audio
- Creating the replacer audio files
- Converting to RAW
- Switching the audio
- Repacking the audio
Annex
- .aw target numbers
Introduction
General information
This guide aims to demonstrate a way to create fully functional audio modifications to The Legend of Zelda: Wind Waker. Because it is not yet fully understood how some technical aspects of the game audio works, most attempts at modifying the audio have resulted in files that cannot be played on the original nintendo hardware. This guide however provides a workaround for these problems, and while it is not theoretically the best solution, it is the only one that has been proven to work. Carefully following this guide, will result in an audio modification, that could be used even on the original Nintendo GameCube.
Requirements
You will need the following:
- A fresh The Legend of Zelda: The Wind Waker ISO, NTSC region (USA)
- Here is a tutorial on how to legally rip your personal copy of the game.
- The latest DEVELOPMENT version of dolphin (can be found here.)
- Flaaffy v0.6.1 (command line sound bank editing tool): Download
- Audacity, or another similar audio editing tool: Download
- The Wind Waker Randomizer (Optional)
- Patience!
Part 1: Workflow
Extracting the game files
The first step before starting to edit the audio is to extract the game files using Dolphin.
Extract the files to a folder of your choice. In my case, I named that folder WWOG Extract. If all worked correctly you should have 2 files at the root of that folder named files and sys.


Preparing the workspace
It’s important to know exactly what files you want to edit before starting. For this tutorial, we’ll edit the Link voice clips. You might have to search a bit before you find what you want to edit. All of the sound files are located in files→Audiores→Banks. For Link’s voice clips, the file we need is voice_0.aw, but you’ll also need the Jailnit.aaf file in files→Audiores. The first file contains the raw audio itself, but the second contains the metadata that tells the game where the sound is, how fast to play it, etc.
Once you got these 2 files, put them in a folder called Flaaffy. Download the compiled version of Flaaffy v0.6.1 (see part 0) and extract it using the program of your choice (winrar, 7zip, peazip, etc.) in that same folder. Inside the Flaaffy folder, create another folder called wwvoices, and then inside that one, create a folder called banks. Copy the .aw and the Jailnit.aaf files in that banks folder.

The Flaaffy folder should look like this, minus the .bat files. These will be explained later.
Of course, make sure to have the sound clips you want to replace ready somewhere accessible!
Important commands
This section will list some important commands that you will need to extract, repack, and convert the audio. To run these commands you need to paste them to a command prompt that has your flaaffy folder as the working directory. To set the flaaffy folder as your working directory use the cd command. eg. “cd desktop\flaaffy” ← in this case the flaaffy folder is in the desktop.
- Extract command – used to extract the original audio files for editing
mareep -errand charge -extract-wsys -init-data-file ./wwvoices/banks/JaiInit.aaf -output ./wwvoices/voice_0.wsys -target 3
mareep -errand whap -input ./wwvoices/voice_0.wsys be -output ./wwvoices/voice_0.xml xml
- Repack command – used to repack your modified audio files
mareep -errand whap -input ./wwvoices/voice_0.xml xml -output ./wwvoices/voice_0.wsys be
mareep -errand charge -replace-wsys -init-data-file ./wwvoices/banks/JaiInit.aaf -input ./wwvoices/voice_0.wsys -target 3
- Raw to Wav command – used to create wav files so you can listen to the original audio
mareep -errand charge -extract-wsys -init-data-file ./wwvoices/banks/JaiInit.aaf -output ./wwvoices/voice_0.wsys -target 3
mareep -errand whap -extract-wav -input ./wwvoices/voice_0.wsys be -output ./wwvoices/voice_0.xml xml
- Wav to Raw convert command – used to convert files from the wav format to raw adpcm format
mareep -errand wave -input ./wwvoices/Replacers/<yourwavfile>.wav -output ./wwvoices/waves/voice_0_000xx.adpcm4.raw ADPCM4
If you’re using something else than the voice_0.aw file, head into the annex to see what target number you need to use for each command.
The guide will later refer back to these commands and elaborate on their usage.
Running the game uncompiled
Testing the audio that you have replaced is a crucial part in developing great audio modifications, and it will be very inconvenient if you try to compile the game every time you want to test it. Thankfully the dolphin emulator allows us to run the game in an uncompiled state.
to see the uncompiled iso in your dolphin games menu, head into settings and add the following path to your game folders: [Extracted ISO]/files/main.dol

Part 2: Editing
Extracting the audio
Run the Extract command. If you placed all the files correctly you should get these new files in the wwvoices folder.
- voice_0.wsys
- voice_0.xml
- A folder called waves containing the extracted audio
You may notice that the audio inside the waves folder is in a .raw format. To be able to listen to these and determine which files you want to replace, you should run the Raw to Wav command. This will create .wav files inside the waves folder with names similar to their corresponding .raw files. You can listen to these .wav files to determine which sounds you want to replace.
Creating the replacer audio files
This is the most crucial part of creating the mod, as this is where most audio mods go wrong. This is also the most ambiguous part of this guide, as the technical conventions behind this part are not fully understood.
You should first create a folder for the audio files you are going to use as replacers in your mod. We are going to name this folder Replacers. It is recommended that you give the audio files the same name, as the sound file that it is going to replace has.
You should then open the file on Audacity and apply the following changes to the audio
- Change the project rate to 16000
- In effects, Normalize and set the maximum amplitude to -2db
After these steps, you can export the audio back into the Replacers folder, overwriting the original file.
Converting to RAW
Now you should open a command line and use the WAV to RAW Command according to the following instructions.
mareep -errand wave -input ./wwvoices/Replacers/<yourwavfile>.wav -output ./wwvoices/waves/voice_0_000<xx>.adpcm4.raw ADPCM4
Replace the <yourwavfile> with the name of the replacer file
Replace the <xx> so that the file name corresponds the file that you are going to replace
This is going to replace the original .raw file in waves with your custom file, that will also be converted into a .raw format. This is done to maximize compatibility with the game, and to minimize the file size. If the file sizes were as high as when using a standard .wav file, the game’s memory could potentially overflow and stop loading other sounds like music.
In theory you could use any filename.raw on the output parameter but that will create additional work for you to do, and there is really no need for it.
If you want to convert every sound from Replacers folder to .raw files in waves folder at the same time, you can run this .bat file I made in your flaaffy folder:
Switching the audio
Open the voice_0.xml file with your prefered text editing tool of choice (I recommend notepad++ for better formatting). You should see something that looks like this:

You should now change the rate on every sound that you replaced from 16000 to 15000. If it sounds too low you can make it higher, and if it sounds too high you can make it even lower. 15000 however should leave the sounds as they are.
If you decide to use the original file names in the previous step, then the rest of this section is skippable.
This file is what tells the audio tool how to repack and with what files. The filenames match the id numbers, so the only thing to worry about is how you plan on renaming the custom audio files. The best solution is to simply name the custom audio exactly how the original file is named and replace it. if you however decided to use different names, you should switch the names here to correspond your custom audio files
Repacking the audio
Once you’re done changing what you need to change, run the Repack command. You will be running this command a lot so it is recommended that you create a .bat file containing the command. The repack command will rebuild the voice_0.aw and make a new file called Jailnit.new.aaf inside the Banks folded. You then need to replace the original files in the WWOG extract folder with the ones just created. Remember to rename the Jailnit.new.aaf to Jailnit.aaf.. You are now ready to test your new sounds in-game! This is where running the game uncompiled comes in handy.
Annex
.aw target numbers
1 = w_zelda_0 (Instrument noises)
2 = SystemSE_0 (Menu sfx)
3 = voice_0 (Link, Medli and Makar)
4 = LinkMotion_0(Link’s Equipment and boat)
5 = Footnote_0 (Footsteps)
6 = Atmos_0 (Atmospheric sfx)
7 = CharVoice_0 (Enemy grunts and npc sfx)
8 = objSE_0 (Object sfx and explosions)
9 = Ryu_Mt_0 (Dragon roost sfx)
10 = I_Maju_0 (Forsaken Fortress sfx)
11 = Kindan_0 (Forbidden Woods sfx)
12 = bigpow_0
13 = tetra_0
14 = boco_0
15 = Asoko_0
16 = Shiren_0
17 = Mj_Tower_0
18 = bird_0
19 = A_mori_0
20 = WindDun_0
21 = n2i_link_0
22 = n3i_maju_0
23 = n4d_ryu_0
24 = Ojhous_0
25 = IsleLink_0
26 = Omoush_0
27 = IsleTown_0
28 = Orichh_0
29 = A_umikz_0
30 = mboss_0
31 = IsleWood_0
32 = umi_0
33 = n5store_0
34 = d_amosu_0
35 = DaiDun_0
36 = d_forest_0
37 = kaminoto_0
38 = rane_0
39 = n6pirate_0
40 = e_diocta_0
41 = d_earth_0
42 = d_wind_0
43 = IsleRiv_0
44 = hyrul_0
45 = n7i_mori_0
46 = n8s_race_0
47 = p_ganon_0
48 = n9drug_0
49 = d_ganon1_0
50 = d_ganon2_0
51 = n10i_ryu_0
52 = shop_0
53 = room1_0
54 = p_goma_0
55 = InForest_0
56 = IsleDrg_0
57 = Raichin_0
58 = Jaboo_0
59 = n11i_tur_0
60 = n12death_0
61 = GanonT_0
62 = GanonB_0
63 = kugutu_0
64 = MJGanon_0
These cover all the target numbers, other than
goma_0.aw
n_zelda_0.aw
tower_0.aw
Annex source: FrasseFreak