Skip to content

Instantly share code, notes, and snippets.

@dotcomboom
Last active October 18, 2022 04:04
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dotcomboom/a0598d954ebf3809d9354a4444514993 to your computer and use it in GitHub Desktop.
Save dotcomboom/a0598d954ebf3809d9354a4444514993 to your computer and use it in GitHub Desktop.
Donkey Konga 2 Modding Guide
<TRACK
NAME Chart
PEAKCOL 32559202
BEAT -1
AUTOMODE 0
VOLPAN 0.4316101837015 0 -1 -1 1
MUTESOLO 0 0 0
IPHASE 0
PLAYOFFS 0 1
ISBUS 1 1
BUSCOMP 1 0 0 0 0
SHOWINMIX 1 0.6667 0.5 1 0.5 0 0 0
FREEMODE 0
REC 0 0 1 0 0 0 0
VU 2
TRACKHEIGHT 0 0 0
INQ 0 0 0 0.5 100 0 0 100
NCHAN 2
TRACKIMGFN "bongos.png"
FX 1
TRACKID {386AAADA-31C6-4BC1-8741-FCD0ADA1694F}
PERF 0
UNDO_HAS_TRACKENV
MIDIOUT -1
<MIDINOTENAMES
-1 39 Clap 0 39
-1 63 Left 0 63
-1 64 Right 0 64
>
MAINSEND 1 0
<FXCHAIN
WNDRECT 273 347 588 663
SHOW 0
LASTSEL 0
DOCKED 0
BYPASS 0 0 0
<VST "VST: ReaControlMIDI (Cockos)" reacontrolmidi.dll 0 "" 1919118692<56535472636D64726561636F6E74726F> ""
ZG1jcu5e7f4AAAAAAAAAAOUAAAABAAAAAAAQAA==
CQAAAAAAAAAAAAAAAAAAAAkAAAAMAAAAAQAAAP8/AAAAIAAAACAAAAAAAAA0AAAAQzpcVXNlcnNcRXJpY1xBcHBEYXRhXFJvYW1pbmdcUkVBUEVSXERhdGFcR00ucmVh
YmFuawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAE1ham9yAA0AAAAxMDIwMzQwNTA2MDcA
AQAAAAAAAAAAAAAAAAoAAAANAAAAAQAAAAAAAAAAAAAAAAAAAA==
AAAQAAAA
>
FLOATPOS 591 278 377 616
FXID {3152FB0E-2A8E-43EC-9FDE-219480A573FD}
WAK 0 0
>
<ITEM {137EE4DC-B4C0-42CE-A5D3-8F2CFB5163B6}
POSITION 0 0
SNAPOFFS 0 0
LENGTH 198.11267389459064 297.16901084188595
LOOP 1
ALLTAKES 0
FADEIN 1 0 0 1 0 0
FADEOUT 1 0 0 1 0 0
MUTE 0 0
SEL 1
IGUID {137EE4DC-B4C0-42CE-A5D3-8F2CFB5163B6}
IID 55
NAME 07-Chart-consolidated
VOLPAN 1 0 1 -1
SOFFS 0 0
PLAYRATE 1 1 0 -1 0 0.0025
CHANMODE 0
GUID {9B4F7689-96D9-4FB4-996C-F21E424DC04B}
<SOURCE MIDI
HASDATA 1 960 QN
CCINTERP 32
POOLEDEVTS {63B64923-BF41-4820-ADF9-2ADFC414CCD5}
E 7680 99 27 60
E 120 89 27 00
E 360 99 3f 60
E 120 89 3f 00
E 360 99 27 7f
E 120 89 27 00
E 360 99 40 60
E 120 89 40 00
E 360 99 27 60
E 120 89 27 00
E 360 99 3f 7f
E 120 89 3f 00
E 360 99 27 7f
E 120 89 27 00
e 360 99 40 7f
e 120 89 40 00
E 274122 b0 7b 00
CCINTERP 32
CHASE_CC_TAKEOFFS 1
GUID {F327A1F4-F609-49CF-91D4-F779DAB35B9C}
IGNTEMPO 0 120 4 4
SRCCOLOR 56
VELLANE -1 100 0
CFGEDITVIEW 3310.15947 0.056903 61 17 0 -1 0 0 0 0.5
KEYSNAP 0
TRACKSEL 0
EVTFILTER 0 -1 -1 -1 -1 0 0 0 0 -1 -1 -1 -1 0 -1 0 -1 -1
CFGEDIT 1 1 0 1 0 16 1 1 1 1 1 0.125 375 198 1561 993 0 0 0 2 0 0 0 0 0 0.5 0 0 1 64
>
>
>
<TRACK
NAME Metadata?
PEAKCOL 16576
BEAT -1
AUTOMODE 0
VOLPAN 1 0 -1 -1 1
MUTESOLO 0 0 0
IPHASE 0
PLAYOFFS 0 1
ISBUS 0 0
BUSCOMP 0 0 0 0 0
SHOWINMIX 1 0.6667 0.5 1 0.5 0 0 0
FREEMODE 0
REC 0 0 1 0 0 0 0
VU 2
TRACKHEIGHT 0 0 0
INQ 0 0 0 0.5 100 0 0 100
NCHAN 2
FX 1
TRACKID {EB5617C7-8AE9-4FD2-8E11-BF76B8A4F7C4}
PERF 0
UNDO_HAS_TRACKENV
MIDIOUT -1
MAINSEND 1 0
<FXCHAIN
WNDRECT 24 52 655 408
SHOW 0
LASTSEL 0
DOCKED 0
BYPASS 0 0 0
<VST "VST: ReaControlMIDI (Cockos)" reacontrolmidi.dll 0 "" 1919118692<56535472636D64726561636F6E74726F> ""
ZG1jcu5e7f4AAAAAAAAAAOUAAAABAAAAAAAQAA==
AQAAAAAAAAAAAAAAAAAAAAkAAAAMAAAAAQAAAP8/AAAAIAAAACAAAAAAAAA0AAAAQzpcVXNlcnNcRXJpY1xBcHBEYXRhXFJvYW1pbmdcUkVBUEVSXERhdGFcR00ucmVh
YmFuawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAE1ham9yAA0AAAAxMDIwMzQwNTA2MDcA
AQAAAAAAAAAAAAAAAAoAAAANAAAAAQAAAAAAAAAAAAAAAAAAAA==
AAAQAAAA
>
FLOATPOS 0 0 0 0
FXID {2DDEF7D7-39A6-4446-BAE4-576CA2CED4E1}
WAK 0 0
>
<ITEM {59626737-ACA9-4BB8-A054-F5D58F892588}
POSITION 0 0
SNAPOFFS 0 0
LENGTH 3.25 4.875
LOOP 1
ALLTAKES 0
FADEIN 1 0 0 1 0 0
FADEOUT 1 0 0 1 0 0
MUTE 0 0
SEL 0
IGUID {59626737-ACA9-4BB8-A054-F5D58F892588}
IID 56
NAME 08-Metadata_-consolidated
VOLPAN 1 0 1 -1
SOFFS 0 0
PLAYRATE 1 1 0 -1 0 0.0025
CHANMODE 0
GUID {2552946F-1DA4-4589-8EC7-7DAC5876E8C6}
<SOURCE MIDI
HASDATA 1 960 QN
CCINTERP 32
POOLEDEVTS {EBD796AC-1354-41D2-9573-AAF2C4AC0988}
E 3720 c1 00 00
E 961 b0 7b 00
CCINTERP 32
CHASE_CC_TAKEOFFS 1
GUID {F4E1E78A-3DF2-4EDA-910F-E9039566798D}
IGNTEMPO 0 120 4 4
SRCCOLOR 58
VELLANE -1 100 0
>
>
>
<TRACK
NAME ?
PEAKCOL 16576
BEAT -1
AUTOMODE 0
VOLPAN 1 0 -1 -1 1
MUTESOLO 0 0 0
IPHASE 0
PLAYOFFS 0 1
ISBUS 0 0
BUSCOMP 0 0 0 0 0
SHOWINMIX 1 0.6667 0.5 1 0.5 0 0 0
FREEMODE 0
REC 0 0 1 0 0 0 0
VU 2
TRACKHEIGHT 0 0 0
INQ 0 0 0 0.5 100 0 0 100
NCHAN 2
FX 1
TRACKID {6D851269-B43B-4E6B-BD2C-3386A8E4C2BC}
PERF 0
UNDO_HAS_TRACKENV
MIDIOUT -1
MAINSEND 1 0
<FXCHAIN
WNDRECT 24 52 655 408
SHOW 0
LASTSEL 0
DOCKED 0
BYPASS 0 0 0
<VST "VST: ReaControlMIDI (Cockos)" reacontrolmidi.dll 0 "" 1919118692<56535472636D64726561636F6E74726F> ""
ZG1jcu5e7f4AAAAAAAAAAOUAAAABAAAAAAAQAA==
AgAAAAAAAAAAAAAAAAAAAAkAAAAMAAAAAQAAAP8/AAAAIAAAACAAAAAAAAA0AAAAQzpcVXNlcnNcRXJpY1xBcHBEYXRhXFJvYW1pbmdcUkVBUEVSXERhdGFcR00ucmVh
YmFuawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAE1ham9yAA0AAAAxMDIwMzQwNTA2MDcA
AQAAAAAAAAAAAAAAAAoAAAANAAAAAQAAAAAAAAAAAAAAAAAAAA==
AAAQAAAA
>
FLOATPOS 0 0 0 0
FXID {6A338BEA-9FF8-4BE7-9C88-36220CF68E8B}
WAK 0 0
>
<ITEM {2BFDA48D-8172-4697-8AD1-F3915B114236}
POSITION 0 0
SNAPOFFS 0 0
LENGTH 5.91666666670548 8.87500000005822
LOOP 1
ALLTAKES 0
FADEIN 1 0 0 1 0 0
FADEOUT 1 0 0 1 0 0
MUTE 0 0
SEL 0
IGUID {2BFDA48D-8172-4697-8AD1-F3915B114236}
IID 57
NAME 09-_-consolidated
VOLPAN 1 0 1 -1
SOFFS 0 0
PLAYRATE 1 1 0 -1 0 0.0025
CHANMODE 0
GUID {861D3E38-08F7-4BA6-A704-F100C453ECCA}
<SOURCE MIDI
HASDATA 1 960 QN
CCINTERP 32
POOLEDEVTS {58FAA456-2991-43C1-B73D-CD23F03029EA}
E 3720 c2 00 00
E 3840 c2 00 00
E 966 b0 7b 00
CCINTERP 32
CHASE_CC_TAKEOFFS 1
GUID {6131804B-0397-4970-8752-655E3F051E2B}
IGNTEMPO 0 120 4 4
SRCCOLOR 60
VELLANE -1 100 0
>
>
>
<TRACK
NAME ?
PEAKCOL 16576
BEAT -1
AUTOMODE 0
VOLPAN 1 0 -1 -1 1
MUTESOLO 0 0 0
IPHASE 0
PLAYOFFS 0 1
ISBUS 2 -1
BUSCOMP 0 0 0 0 0
SHOWINMIX 1 0.6667 0.5 1 0.5 0 0 0
FREEMODE 0
REC 0 0 1 0 0 0 0
VU 2
TRACKHEIGHT 0 0 0
INQ 0 0 0 0.5 100 0 0 100
NCHAN 2
FX 1
TRACKID {F16867DE-01F7-4EA8-A9BD-80D79EF3A196}
PERF 0
UNDO_HAS_TRACKENV
MIDIOUT -1
MAINSEND 1 0
<FXCHAIN
WNDRECT 24 52 655 408
SHOW 0
LASTSEL 0
DOCKED 0
BYPASS 0 0 0
<VST "VST: ReaControlMIDI (Cockos)" reacontrolmidi.dll 0 "" 1919118692<56535472636D64726561636F6E74726F> ""
ZG1jcu5e7f4AAAAAAAAAAOUAAAABAAAAAAAQAA==
AwAAAAAAAAAAAAAAAAAAAAkAAAAMAAAAAQAAAP8/AAAAIAAAACAAAAAAAAA0AAAAQzpcVXNlcnNcRXJpY1xBcHBEYXRhXFJvYW1pbmdcUkVBUEVSXERhdGFcR00ucmVh
YmFuawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAE1ham9yAA0AAAAxMDIwMzQwNTA2MDcA
AQAAAAAAAAAAAAAAAAoAAAANAAAAAQAAAAAAAAAAAAAAAAAAAA==
AAAQAAAA
>
FLOATPOS 0 0 0 0
FXID {5392E707-87BE-4251-B2A9-27F33D3AC4A3}
WAK 0 0
>
<ITEM {7F64B237-48C5-4668-B9AD-5D6F403C1C53}
POSITION 0 0
SNAPOFFS 0 0
LENGTH 3.25 4.875
LOOP 1
ALLTAKES 0
FADEIN 1 0 0 1 0 0
FADEOUT 1 0 0 1 0 0
MUTE 0 0
SEL 0
IGUID {7F64B237-48C5-4668-B9AD-5D6F403C1C53}
IID 58
NAME 10-_-consolidated
VOLPAN 1 0 1 -1
SOFFS 0 0
PLAYRATE 1 1 0 -1 0 0.0025
CHANMODE 0
GUID {D9ADA726-B7B0-4115-984F-72027CC16857}
<SOURCE MIDI
HASDATA 1 960 QN
CCINTERP 32
POOLEDEVTS {E821DD92-0C8C-47CC-A239-2327E089D449}
E 3720 c3 00 00
E 961 b0 7b 00
CCINTERP 32
CHASE_CC_TAKEOFFS 1
GUID {C1416171-76A8-4B45-821E-7A7163C34B7A}
IGNTEMPO 0 120 4 4
SRCCOLOR 62
VELLANE -1 100 0
>
>
>

Donkey Konga 2 Modding Guide (work in progress)

Tools you need

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

Extracting the game files

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.

Testing

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.

Injecting Custom Tracks

Making DSP files

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

  1. Launch Audacity-gcdspadpcm. 

  1. 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.
  1. 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.
  2. 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.

Replacing the audio

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.

Modifying the song information

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.

Scoring/Charting

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.

A project in Reaper

MIDI Export dialog

Making an ISO

You can make an ISO with Dolphin by right clicking your modded game in the list and choosing Convert File....

@k-T0
Copy link

k-T0 commented Mar 26, 2021

Hi I need help i dont understand the part where i have to use dkdsp (im new to all this)

@dotcomboom
Copy link
Author

dotcomboom commented Mar 26, 2021

I've recorded a small video for it, hope it helps. Starts with the standard L/R mono DSP export, and then weaving it into the game's stereo format with dkdsp through Command Prompt.

https://streamable.com/sqarvy

@donkeykongathegreat
Copy link

Hi, thank you for this guide! I managed to do all the steps in your instructions. However, when I replace the midi file and run the new ISO with Dolphin, I do not see any notes on my new song. I can hear the music fine but the track is empty in terms of inputs. There must be something wrong with my midi file. For my test I simply used the original 01predictable_1e.midi and added a few notes at the beginning of the track. I made sure to change the channel to 10 for the new notes. Could you please help me troubleshoot this issue? Thank you in advance!

@dotcomboom
Copy link
Author

dotcomboom commented Aug 18, 2021

Hi, thank you for this guide! I managed to do all the steps in your instructions. However, when I replace the midi file and run the new ISO with Dolphin, I do not see any notes on my new song. I can hear the music fine but the track is empty in terms of inputs. There must be something wrong with my midi file. For my test I simply used the original 01predictable_1e.midi and added a few notes at the beginning of the track. I made sure to change the channel to 10 for the new notes. Could you please help me troubleshoot this issue? Thank you in advance!

May have failed to load the file, usually when it does that Dolphin throws an error, though. Certain it's still named 01predictable_1e.mid?
Also, are the midi's other tracks still present? You may have exported it as a single-track midi. I've been able to double check between the original with a program like Synthfont.

Those are just my guesses. I haven't poked at this in a while myself, but I hope it helps.

@donkeykongathegreat
Copy link

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.
2021-08-18 16_34_58-MIDI take_ That's The Way (I Like It) - 02Thats_1e mid

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.

@Gitomata
Copy link

Thanks for this guide, I've used to to replace some of the cover songs that don't sound like the original artists.

I'm not music literate enough to actually create custom midis to go with custom songs though. I've looked online to see if other people have made their own midis but it doesn't seem like the the community was big enough to create their own Donkey Konga 2 playlists like with Guitar Hero, Rockband or Taiko. And using Guitar Hero, Rockband or Taiko tracks is a bit complex.

Do you know of any app that can create some sort of beat track from a song that one could use in Donkey Konga 2?

@Rumbl-fun
Copy link

Very glad to see someone take a stab at trying to mod this game. I tried my best to get it working back in 2018, the farthest I got was getting Megolavania music working in game. Can't wait to see if anything further comes along!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment