Hylian Modding

The Zelda Modder's Resource

Audio Modification Guide

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)
  • 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

Next Post

Previous Post

© 2020 Hylian Modding

Theme by Anders Norén