Deconimus
Smash Cadet
- Joined
- Feb 24, 2015
- Messages
- 26
[ Disclaimer - Mileage May Vary; Experimentation Required: This program has a few issues which may cause your game to no longer boot. Use at your own risk, and be sure to create a copy of your game prior to use. A method that you can try if you experience problems can be found here. If you try that, please post whether or not it worked for you, and what you did. Alternatively, you can try the method given here. Although it is not known what exactly causes a problem, in some cases it seems less likely to occur if you keep the total number of songs in your game the same. ]


About
Ever since I heard about in-game playlists coming to 20XX, I was stoked about this feature.
Since Achilles delivered and I finally had the time on my hands, I wrote this tool to exploit their full potential.
With this tool you can extract your 20XX ISO, add or remove music tracks to your extracted root-folder, rebuild the ISO and even convert it to a file format, that is compatible with Wii USB- / SD-Loaders.
Download
20XX Music Manager v1.2f (no mono and .m4a support atm)
20XX Music Manager v1.2e
20XX Music Manager v1.2d
20XX Music Manager v1.1
20XX Music Manager v1
Update
v1.2f: Higher audio quality by utilizing dsp2hps.
v1.2:
The latest version has the ability to patch ISOs and root-folders alike.
That means you can now select your 20XX ISO or installation on your USB-Device (if it was extracted with GCReEx) and just patch that without any further steps.
If patching a folder there is virtually no size-limit to your 20XX installation. I tested this with a total of 137 custom audio tracks and a directory size of 1.9gb.
I've updated the "Usage Instructions" accordingly for those who want further detail on using this feature.
v1.2f (2016-04-14)
v1.2e (2016-04-13)
v1.2d and previous sub-versions this day (2016-04-11)
v1.2 (2016-04-11)
v1.1 (2016-04-09)
- Uses a newer version of hpsbuilder. The new hpsbuilder version uses dsp2hps which leads to higher quality audio being produced than before.
v1.2e (2016-04-13)
- Fixed all kinds of filepath related things. You can now run this program from wherever you want and however you want (as long as you're using a JRE that supports Java 8).
v1.2d and previous sub-versions this day (2016-04-11)
- Fixed a bug for some USB-Loaders.
- Fixed some bugs regarding directory naming.
- Sped up the patching process for quite a bit when dealing with USB-Devices or slower HDDs.
v1.2 (2016-04-11)
- ISO patching is now supported.
- Overall process is more convenient now.
v1.1 (2016-04-09)
- FST files will now be patched. So you can now select your 20XX installation on your USB-Device (if it was extracted with GCReEx) and just patch that without any further steps.
- A log.txt file will now be created that holds reports and possible error-messages.
Prequisites
There are only 2 things you will need to use this program:
1. A working 20XX ISO of version 4.0 or higher.
Download the root files from here and follow the guide in its readme.txt or this one.
2. Java
If you haven't installed it already, just do so now, it only takes a few minutes.
Usage Instructions
Selecting your source-file / -directory
When you start the program for the first time, you'll see this window popping up:

You can now select you ISO or your existing extracted directory (on your USB-Device for instance).
Adding and/or removing music

You'll see two track lists, on the left is the one we are working with, the right one displays the tracks that are currently in you root-folder. You can safely remove all the songs in the left list, it will only be applied if you hit patch, until then you can happily close the program or hit "revert changes" as often as you like.
To add tracks, simply drag and drop audio files from your file-browser into the list.
You can then change the Title and other settings when selecting a track and either pressing F2 or CTRL+E on your keyboard or with doing a right-click on a track and selecting "edit".
Editing a Track

This menu should be pretty self-explanatory you can change the title, select a different source-file for the track, create a custom loop, or adjust the sample-rate for the resulting audio-file.
Note: As of this version loop- and sample-rate changes are not supported when having HPS files as source.
Selecting your output ISO /game-dir
Note: This step is only necessary if you do not want to patch your source ISO or directory.
In this step you'll select whether your output files will be an ISO or a root-directory, and where they will be saved. The default setting is, that you patch your opened ISO or opened directory.

Example: You loaded your 20XX ISO into the program, added/removed some music and want to get the result onto your USB-Device. All you have to do to achieve that is to select your USB-Device as your output directory.
Patching your ISO / game-dir
You just have to press "Patch" in the program's main-window. After that you should see this window opening up:

At this point you'll have to be patient for a bit. Depending on the number and length of your added songs, it can take a few minutes to convert them (~20s per 5min .mp3 on my machine).
Also if you're patching a folder on your USB, it can take a few minutes to copy the files.
FAQ and Common Issues
20XX freezes after being patched with this tool!
This can happen from time to time. While there are many possible reasons for that, here is what you can do:
1. Unplug your memory card and restart your Wii
If it works now, your previous 20XX had a music file, that isn't on the image anymore, which you selected in one of your playlists. This usually only happens, when the resulting number of tracks is less than before patching.
2. Test the tracks in Dolphin
There may have been a problem converting one of the music-files, the custom-loop was flawed, or my audio-tool simply derped. Test the songs each in Dolphin and make sure they at least start.
You can also test them in your Wii, but Dolphin will be more convenient, as on the Wii, the audio buffer sometimes just gives up and can't play a file when quickly switching through them.
The track-list looks weird and editing titles won't work!
If you are encountering these or similar issues to this post, please have a look at my responses to this and send me regarding information. I haven't encountered this problem myself so I can only fix this with your input.
The Playlist-Menu freezes!
Thats a weird one. It occured to me after I deleted most custom songs and only added a few of my own.
To fix this, just add some more tracks (per default the last track has a hex-number of 76).
What is up with those song titles?
Wellp.
The titles for songs in 20XX are limited to 32 characters in theory. I limit them to 31 characters, because 20XX won't display them correctly otherwise.
To deal with those limitations I've come up with a number of steps that my program automatically does to make up a good title for your audio file:
I first read the files metadata and look for the Artist's name and the Song-Title.
If the artist's name is longer than 15-chars, I look for a known abbreviation in my own little database. If there is none, my tool generates one automagically. My algorithm for abbreviations for example takes the name "Five Finger Death Punch" and puts "5FDP" out.
If the resulting form of "Artist - Title" is still longer than 31 characters I shorten the title:
Firstly I look for a leading "The" to be removed.
After that I get kinda desperate and remove vowels if there are any.
Why does the track-list behave weird sometimes?
I blame Java-Swing and me not having the nerve to fight it's stupidly designed Lists enough to fix all of the issues I had with it. This will probably be fixed in the near future though.
This can happen from time to time. While there are many possible reasons for that, here is what you can do:
1. Unplug your memory card and restart your Wii
If it works now, your previous 20XX had a music file, that isn't on the image anymore, which you selected in one of your playlists. This usually only happens, when the resulting number of tracks is less than before patching.
2. Test the tracks in Dolphin
There may have been a problem converting one of the music-files, the custom-loop was flawed, or my audio-tool simply derped. Test the songs each in Dolphin and make sure they at least start.
You can also test them in your Wii, but Dolphin will be more convenient, as on the Wii, the audio buffer sometimes just gives up and can't play a file when quickly switching through them.
The track-list looks weird and editing titles won't work!
If you are encountering these or similar issues to this post, please have a look at my responses to this and send me regarding information. I haven't encountered this problem myself so I can only fix this with your input.
The Playlist-Menu freezes!
Thats a weird one. It occured to me after I deleted most custom songs and only added a few of my own.
To fix this, just add some more tracks (per default the last track has a hex-number of 76).
What is up with those song titles?
Wellp.
The titles for songs in 20XX are limited to 32 characters in theory. I limit them to 31 characters, because 20XX won't display them correctly otherwise.
To deal with those limitations I've come up with a number of steps that my program automatically does to make up a good title for your audio file:
I first read the files metadata and look for the Artist's name and the Song-Title.
If the artist's name is longer than 15-chars, I look for a known abbreviation in my own little database. If there is none, my tool generates one automagically. My algorithm for abbreviations for example takes the name "Five Finger Death Punch" and puts "5FDP" out.
If the resulting form of "Artist - Title" is still longer than 31 characters I shorten the title:
Firstly I look for a leading "The" to be removed.
After that I get kinda desperate and remove vowels if there are any.
Why does the track-list behave weird sometimes?
I blame Java-Swing and me not having the nerve to fight it's stupidly designed Lists enough to fix all of the issues I had with it. This will probably be fixed in the near future though.
How it works
For the audio stuff, there's the thread about my conversion tool.
20XX's filesystem regarding audio files
In standard Melee the audio files have arbitrary names. For instance DreamLand64's music file is called "old_kb.hps"
This is different in 20XX, as they are now named after a 2 digit hex-value. They begin at 00.hps and would end theoretically at FF.hps which would be a max of 256 music files.
The first 49 of them, going up to 31.hps, are the default melee tracks.
They can be replaced but should not be removed or renamed.
Patching 20XX's binary file
In the new 20XX there is a binary file called "MnSlChr.usd".
Aside from refactoring it, Achilles uses this binary to store titles and pointers for the music files.
At 0x3EDD90 is the first 32byte entry, which is used to store the Song-Title for the 32.hps file. The entries go up from there, meaning the Title for 33.hps would be at an offset of 0x3EDD70.
These entries are ANSI encoded and contain one character per byte.
If you're curious, the titles for the default songs begin at 0x3EE1D0 and go down from there. Unlike the entries for custom songs they are tightly packed and can't be changed as comfortably.
Starting at 0x3EDDA8 there are 4byte fill values. I'm not exactly sure if these are pointers to file names/locations, or if they are just there, so 20XX knows how many music-files are on the image.
The first don't seem to follow a strict pattern and aren't of interest if adding or removing custom tracks.
The ones I have to care about start at 0x3EDE6C the values follow a simple pattern. They start with the 4byte value 0x80FDA4A0 going one entry down the file means substracting 0x20 from this value.
There needs to be one value following this pattern for every music file existing in 20XX's image, or you simply can't play it in-game. This is more crucial than the titles since you can theoretically just leave those blank.
20XX's filesystem regarding audio files
In standard Melee the audio files have arbitrary names. For instance DreamLand64's music file is called "old_kb.hps"
This is different in 20XX, as they are now named after a 2 digit hex-value. They begin at 00.hps and would end theoretically at FF.hps which would be a max of 256 music files.
The first 49 of them, going up to 31.hps, are the default melee tracks.
They can be replaced but should not be removed or renamed.
Patching 20XX's binary file
In the new 20XX there is a binary file called "MnSlChr.usd".
Aside from refactoring it, Achilles uses this binary to store titles and pointers for the music files.
At 0x3EDD90 is the first 32byte entry, which is used to store the Song-Title for the 32.hps file. The entries go up from there, meaning the Title for 33.hps would be at an offset of 0x3EDD70.
These entries are ANSI encoded and contain one character per byte.
If you're curious, the titles for the default songs begin at 0x3EE1D0 and go down from there. Unlike the entries for custom songs they are tightly packed and can't be changed as comfortably.
Starting at 0x3EDDA8 there are 4byte fill values. I'm not exactly sure if these are pointers to file names/locations, or if they are just there, so 20XX knows how many music-files are on the image.
The first don't seem to follow a strict pattern and aren't of interest if adding or removing custom tracks.
The ones I have to care about start at 0x3EDE6C the values follow a simple pattern. They start with the 4byte value 0x80FDA4A0 going one entry down the file means substracting 0x20 from this value.
There needs to be one value following this pattern for every music file existing in 20XX's image, or you simply can't play it in-game. This is more crucial than the titles since you can theoretically just leave those blank.
Using Achilles' Playlists

I don't know how much you've looked into this feature already, but it's really easy to use:
You have to go into the Debug Menu and and then "Music Codes" in there is a preview for all of the tracks available on the image and a Menu Entry called "Custom Playlists".
There you can change the playlists for most maps and can even set up a global playlist!
Note: Watch the "Play Type" setting. If you leave it at "Single Song" you wont notice much change (unless you remove the original one in the playlist).
A setting I find very useful is turn on the global-playlist and set it to "Random - Customs only".
Credits

bsv798 For GCrebuilder (although no longer utilized since v1.2)
Crediar For DiscEx
Tueidj For GCReEx
@GenesisFan64 For MeleeHPS which is used in my "Melee Audio Converter"... which is used in this tool.


Last edited by a moderator: