Creating a DC disc image with audio tracks, the Frankenstein way
Preface
This guide already assumes you can build a self-bootable .CDI image of a DC game with ExoBoot. It also assumes that DC game has CDDA tracks, and that you extracted all the audio tracks on it into a .BIN file, AND that you also extracted the table of contents of whatever game it is into a .iso file.
If you've read this far past the warning message, here it is again: THE OUTPUT FILES DON'T WORK IN CHANKAST. I don't want anyone actually trying this and expecting it to work - you will be able to play back your audio tracks if they're in a .BIN file, using foobar2000 or something else, but THAT IS ALL.
If, however, you do want to do that, keep on reading...
Tools needed:
- UltraISO
- GD Lister
- A command line window
- Patience
- Basic mathematic skills (specifically, adding up units of time)
How-To, Part 1
1) Download a copy of the trial version of UltraISO from the official site: http://www.ezbsystems.com/ ultraiso/, install it, and then run it.
2) Click on the "Tools" menu, then click on the "Convert..." menu item.
3) Click on the "..." button to the right of the text box headed "Input Image Filename(s)" and browse to the directory with your .cDI file in, then double-click on it.
4) Click on the "..." button to the right of the text box headed "Output Directory" and browse to the directory where you want the output file to end up.
5) Under "Output Format", click on the "BIN (.BIN/.CUE)" button.
6) Click the "Convert" button and your file will be processed.
7) Go to the directory with your newly-created .BIN and .CUE files, and open a command line window in that directory - leave this open in the background for the moment.
8) Go to the directory with the .BIN file containing the CDDA tracks extracted from your DC game, and copy it into the same directory as the new .BIN file containing the actual DC game files.
9) In the command line window, type the following command, and press Return or Enter (audio.bin is the file with the CDDA tracks, r2r.bin is the file with all the game data files inside it, and r2r-new.bin is the output):
copy /b r2r.bin+audio.bin r2r-new.bin
This command simply joins the two files together, so that the CDDA tracks in are attached to the end of the data track.
10) Open the table of contents file (which I will refer to from now on as toc.iso) in GD Lister, and note down the value for the length of time (in minutes:seconds:frames) of the last data track, which will appear at the bottom of the list, after the CDDA tracks.
11) Open up the CUE sheet. It should look something like this:
FILE "R2R.BIN" BINARY
TRACK 01 MODE1/2352
INDEX 01 00:00:00
Add in entries for each CDDDA track in your game, so that the file now looks a bit like this (leave the INDEX entries all blank for now):
FILE "R2R.BIN" BINARY
TRACK 01 MODE1/2352
INDEX 01 00:00:00
TRACK 02 AUDIO
INDEX 00 00:00:00
INDEX 01 00:00:00
TRACK 03 AUDIO
INDEX 00 00:00:00
INDEX 01 00:00:00
TRACK 04 AUDIO
INDEX 00 00:00:00
INDEX 01 00:00:00
-End of Part 1.
Now that's done, this is where the hard work begins. Basically, you now need to calculate the correct values for INDEX 00 and INDEX 01 under each AUDIO track in the .CUE sheet. Although we can get all the audio track lengths by opening toc.iso in GD Lister, we will need to do various calculations to get everything right.
How-To, Part 2
Unfortunately, our work is made (even) harder by the fact that we do not know the length of our .BIN file, because it's not identical in length to what was on the GD-ROM. It's not far off, though - for example, my R2R.BIN file, after much adjustment, turned out to be 53 minutes, 17 seconds, and 33 frames, plus 2 more seconds (which act as a so-called "pregap"), whereas the length of the last data track on the actual Ready 2 Rumble GD-ROM is 53 minutes, 8 seconds, and 8 frames.
It took about 10 minutes of carefully adjusting the values under TRACK 02 before I eventually got the correct values for TRACK 01's length. However, once you have the length for this, it's not too hard to get the correct INDEX values for each audio track.
Here's the .CUE sheet I made for a .BIN file of Ready 2 Rumble, and some explanation of the INDEX values:
FILE "R2R.BIN" BINARY
TRACK 01 MODE1/2352
INDEX 01 00:00:00
TRACK 02 AUDIO
INDEX 00 53:17:33 --- length of TRACK 01
INDEX 01 53:19:33 --- length of TRACK 01 + 2 seconds, or "pregap"
TRACK 03 AUDIO
INDEX 00 53:50:05 --- TRACK 02, INDEX 01 + length of audio track 1
INDEX 01 53:52:05 --- TRACK 02, INDEX 01 + length of audio track 1 + 2 seconds
TRACK 04 AUDIO
INDEX 00 55:44:69 --- TRACK 03, INDEX 01 + length of audio track 2
INDEX 01 55:46:69 --- TRACK 03, INDEX 01 + length of audio track 2 + 2 seconds
In actual fact, this isn't quite right - I had to adjust the INDEX values for TRACK 04 by subtracting 2 seconds and adding on 10 frames before the last 2 audio tracks sounded perfect.
For testing purposes, I used Daemon Tools to mount the .CUE sheet, and foobar2000's "Play Audio CD" function to check that all the tracks were playing OK. If the values were not correct, you'd get weird things happening, e.g. playing back the last track would reveal bits of the previous track at the start of it, because the INDEX values under TRACK 03 and 04 were not totally accurate. Getting all the tracks perfect was difficult, to say the least.
And of course, testing new INDEX values in the .CUE sheet required me first un-mounting the .CUE with Daemon, editing the necessary values slightly, then re-mounting the .CUE, and then using foobar's "Play Audio CD" option again. So it was slightly disappointing when I mounted the finally-hopefully-correct .CUE in Daemon, fired up Chankast and got a lovely "Please insert disc." message when trying to play a game. Oh well.
-End of Part 2, and the end of this guide.