- Dolphin Emulator for extracting the game's files, testing and making ISOs.
- Your text editor of choice for modifying .res files (song information etc.)
- Audacity GameCube DSPADPCM for converting your music to Standard Mono L/R dsp format.
- dkdsp to convert Standard Mono L/R dsp files to the Stereo format DK2 uses.
- (Optional) xmplay and the in_cube plugin to play your DSPs and check header information.
In order to modify Donkey Konga 2, you'll need an ISO rip of the game. In Dolphin's game list, right click your clean copy of Donkey Konga 2, choose Properties
, go to the Filesystem
tab, right click on Disc
, and then choose Extract Entire Disc..
. Create a folder to extract the files into, then choose it.
After extracting, add its folder to your Dolphin paths (Config -> Paths ) and make sure Search Subfolders
is turned on. Your extracted copy should now show up in the games list. You can tell it is an extracted copy by 0.00 B*
as the size.
Whenever you need to reload the score, quit out of the song and go back into it through the Song Select menu. If that does not reflect your changes, restart the emulation.
Donkey Konga 2 uses a variation of the DSP audio format (commonplace in many GameCube games) in Stereo and with the Cstr header. Converting your audio will involve two programs: Audacity-gcdspadpcm (a fork of Audacity with added GameCube DSP export options) and dkdsp 0.4.
Audacity will get your music into two DSP files for the L/R channels, and dkdsp will weave these together into a stereo DSP the game can use.
(Here's one of the game's DSP files and its header information, for reference.)
- Launch Audacity-gcdspadpcm.
- Load your music into it, as per usual, through File -> Import -> Audio...
- You may wish to lower the sample rate to reduce file size. The game's built-in songs use a sample rate of 32000 Hz.
- The game will start the song immediately, so you may wish to add one or two seconds of silence. Any changes you make, make an equivalent regular audio version so you can use it in Reaper while charting.
- Export with File -> Export -> Export Audio.... In the dialog choose Nintendo GameCube DSPADPCM (.dsp) as the type, and leave the format as Standard Mono. Save it somewhere, and it will export two files.
- Close out of Audacity, and now it's time to use dkdsp. Open up cmd and go to its folder. You can run it to see its usage:
DKDSP 0.4 - GC DSP mono to stereo converter
by hcs
usage: dkdsp MONO.DSP [-s MONO2.DSP] STEREO.DSP [DKHEADER.DSP]
Here I take my exported sample and convert it.
D:\Modding\dkdsp04>dkdsp "..\sampleL.dsp" -s "..\sampleR.dsp" sample.dsp
DKDSP 0.4 - GC DSP mono to stereo converter
by hcs
copying header...done
interleaving mono->stereo...done
Now you have a file you can swap one of the game's tracks with.
I'll be using song number 1 for demonstration.
Go to the /root/stream/score directory and you will see the game's playable tracks numbered from 01 to 34. (33 is a secret song, and 34 is the tutorial song.)
Swap 01.dsp with your new stereo DSP, with that name. Now the audio is replaced.
Now you have the audio replaced, you can edit the songlist's information. This is stored in the /root/Resource/SongInfo.res file. Open it in whichever text editor you fancy, and you'll see multiple entries like this:
#1
SONGNAME=Predictable
FILENAME=01predictable
OFFSET=1
LENGTH=180
PRICE=1500
1E=7
1H=8
1X=6
2E=8
2H=8
2X=5
4=7
B=7
C=7
RUBY=
COMMENT=
GENRE=1
Someone on ROMhacking.net wrote a handy bit on what these fields mean. Initially I was confused by the 1E through C fields, but those are how many bananas to display for each of the difficulties. I'll quote:
SONGNAME= Title of Song (Shift-JIS).
FILENAME= Beats to load in "Score" folder (.mid files).
OFFSET= Delay before the song starts. Used for timing the beats.
LENGTH= All have 180 (besides 'I Just Wanna Live' in EU version = 200)
PRICE= Amount of coins to buy Expert version of song.
1E= Single Easy Difficulty (shown by bananas 0 - 9).
1H= Single Normal Difficulty (shown by bananas 0 - 9).
1X= Single Hard Difficulty (shown by bananas 0 - 9).
2E= Co-Op Easy Difficulty (shown by bananas 0 - 9).
2H= Co-Op Normal Difficulty (shown by bananas 0 - 9).
2X= Co-Op Hard Difficulty (shown by bananas 0 - 9).
4= Concert Quartet (shown by bananas 0 - 9).
B= Battle Difficulty (shown by bananas 0 - 9).
C= Concert Share Difficulty (shown by bananas 0 - 9).
RUBY= Displays smaller text above SONG NAME (Shift-JIS).
COMMENT= Comment below Song Title (Shift-JIS).
GENRE= Sets color background and genre text in top left corner.
Here are the changes in action (remember to rebuild your ISO with the directions above to test):
I marked it up in Paint to show what the fields do.
The game's scores are all out in the open, in MIDI format. They're stored in the /files/Score directory.
For editing scores, Reaper can be used. I attached a track template to this Gist, with note names.
Bongo | Note |
---|---|
Left bongo | D#4 |
Right bongo | E4 |
Clap | D#2 |
If you would like to hear the percussion, use a VSTi such as Cakewalk TTS-1. This is very handy, I've found.
Note: Remember to set any new notes to channel 10 before exporting out a MIDI. Change the channel by selecting all the notes (hold right click, drag), right clicking one, and choosing Note channel > 10
.
You can make an ISO with Dolphin by right clicking your modded game in the list and choosing Convert File...
.
I did a few more tests and I found out that if I add or modify notes that are after the first original midi note then I can export the midi file, replace it and it works in the game.

Also, one thing that I don't understand yet is how to syn the music to the midi file. In other words, how to edit the midi file such that a note would fall on the beat. Anything I do at the moment results in the first note playing immediately, even if I include some offset.