Previous Page | Next Page
- by caius at 7:26 AM EDT on March 28, 2009
- Ok, here is:
http://rapidshare.com/files/214505620/SPXSND.BIN.html
- by Knurek at 7:40 AM EDT on March 28, 2009
- This is much too small to be streamed (200 kB would mean ~3 seconds of playtime).
And yea, sure enough. It's sequenced. Original PSG version, and a nice arrange one too.
Please, upload the rest of the bgm files and a *.tsk file, that should be somewhere on the disc.
- by caius at 10:09 AM EDT on March 28, 2009
- Here is the rest of sound files:
http://rapidshare.com/files/214557881/Irem_Arcade_classics_sounds.rar.html
Please, if you want, make a small tutorial on how to rip .ssf (also using VGMtoolbox..).
In particular, I didn't understand well how to customize the sssfmake.py adding parameters,
Are these your archives?:
http://ssf.hcs64.com/ and http://dsf.hcs64.com/
edited 10:09 AM EDT March 28, 2009
edited 10:12 AM EDT March 28, 2009
edited 10:15 AM EDT March 28, 2009
edited 10:54 AM EDT March 28, 2009
edited 11:05 AM EDT March 28, 2009
- by Knurek at 12:03 PM EDT on March 28, 2009
- Okay, let's go step by step. Just a word of worning, each game is different, there's no failproof, no brain required method of ripping.
I'm still learning stuff myself, games that scared me off few month earlier now I do without trouble.
Irem Arcade Classics is very simple, so it may be a good start...
Oh, and this requires doing some things that are not really possible (or very hard to do) with standard Windows Explorer (hex editing a file, running DOS commands). I'd recommend using Total Commander (www.ghisler.com), fits all my needs like a glove.
1. First you need to check the music driver's version. Some driver revisions simple don't work, or work bad, so this will save you some wondering why the files don't play later.
Open the Sddrvs.tsk file (take note, this might be called differently in other games) in a hex editor, and check around offset 0x1020
"Ver1.33 95/08/07"
So, we're good to go (reffer to http://snesmusic.org/hoot/kingshriek/ssf/ for nonworking driver versions).
2. Now let's extract the needed data. Let's check first if the game uses DSP. Quickest way to do is to search all the music datafiles (or the game ISO) for '.exb' string. Nothing here, so we can ignore it completely.
3. Since the game uses a datafile, which has both the sequence and sample set joined together in one .bin file, we need to separate those.
seqext.py and tonext.py scripts from kingshriek page do the trick.
Let's create an empty directory for the files, say, extract
>> md extract
And now let's extract the files there, writing the log to seq_ext.txt and ton_ext.txt
>> seqext.py *.bin extract >seq_ext.txt
>> tonext.py *.bin extract >ton_ext.txt
It should make 8 new files in the extract subfolder, 4 with BIN extension (sample data), 4 with SEQ extensions (sequence data).
Let's open seq_ext.txt to see if the sequences have more than one song...
MENUSND_000.SEQ [0x0001C1E4]: 948 bytes, 3 track(s)
SPXSND_000.SEQ [0x0003F112]: 12715 bytes, 33 track(s)
TYFSND_000.SEQ [0x0005BF82]: 5153 bytes, 33 track(s)
ZIPSND_000.SEQ [0x0003A99C]: 15441 bytes, 33 track(s)
So that's a yes, actual number doesn't really matter (ssfmake.py does everything automatically after setting multisong creation mode).
3. Let's copy the newly created files, the sound driver, ssfmake.py and a correct sound map to the same folder.
Sound maps tell the sound driver where exactly in memory is each data. There are some basic ones created by kingshriek in the ssfmake.py archive. You need to be careful when choosing one, if you try and load a 500 kB sample file with a sound map that has only 400 kB of memory allocated for samples, the resulting SSF files will play bad.
Largest SEQ in the Irem game has 0x3C51 bytes, largest TONE bank has 0x5BF5E bytes. Looking at the generic sound map data (this is from ssfmake.py):
# (without DSP)
# GEN_SEQ10000.MAP 0x65000 bytes TONE, 0x10000 bytes SEQUENCE
# GEN_SEQ20000.MAP 0x55000 bytes TONE, 0x20000 bytes SEQUENCE
We can't use the GEN_SEQ20000.MAP one, since it has less allocated for TONE. But GEN_SEQ10000.MAP fits here. So let's copy that.
4. Now all we need is running ssfmake.py with correct parameter. Open it in text editor, and scroll to this section:
# filenames - use an empty string if file isn't needed
ndrv = '' # sound driver
nmap = '' # sound area map
nbin = '' # tone data
nseq = '' # sequence data
nexb = '' # DSP program
# -----------------------------------------------------------------------------------------------------
nout = 'ssfdata.ssf' # output file name (if .ssflib, create ssflib and minissfs for each track in the bank)
So, let's fill this in:
ndrv = 'Sddrvs.tsk' # sound driver
nmap = 'GEN_SEQ10000.MAP' # sound area map
nbin = 'MENUSND_000.BIN' # tone data
nseq = 'MENUSND_000.SEQ' # sequence data
nexb = '' # DSP program
# -----------------------------------------------------------------------------------------------------
nout = 'MENUSND.ssflib' # output file name (if .ssflib, create ssflib and minissfs for each track in the bank)
Sound driver we have from the game, map we chose just before, tone and sequence data should match, DSP program field we should leave empty, since the game doesn't use DSP, and we need to set the output filename to .ssflib, since the SEQ file has more than one song.
Save, run. It should create a 3 minissf files.
Playing those will tell us that the first two are only SFX, but the third one is actually music.
You can delete the first two and leave it as that, but having a ssflib and only one minissf file that use it is rather sloppy, so let's fix this. Delete both the minissf files and the ssflib.
5. Above the filenames section in ssf is a section called # PARAMETERS. The minissf file we want to have was called MENUSND_00_02.minissf.
First number refers to bank parameter, second to the track parameter. So let's edit those:
# PARAMETERS
bank = 0x00 # sequence bank number
track = 0x02 # sequence track number
and let's tell the script to only make a single ssf file:
nout = 'MENUSND.ssf' # output file name (if .ssflib, create ssflib and minissfs for each track in the bank)
Save, run.
6. Now you just repeat step 4 (and 5 if necessary) for all the other files. Then remove the unneeded/repeated minissf files. Add timing data:
>> ssftime.py *.minissf
>> ssftime.py *.ssf
and add tagging data:
>> psfpoint -copyright="1996 Irem, I'Max" *.ssf
>> psfpoint -year="1996" *.ssf
>> psfpoint -game="Irem Arcade Classics" *.ssf
>> psfpoint -ssfby="caius" *.ssf
(PSFPoint is available here: http://www.neillcorlett.com/psfpoint/)
And we're good to go.
I did all that and put the package at http://ssf.hcs64.com/.
- by caius at 12:26 PM EDT on March 28, 2009
- Ok, many many thanks for your step-by-step guide, it's very precious, now starting from this I'll try to rip SSF from other games ( as I said before I have nearly 1400 Saturn ISOs..)
The problem is to find the .SEQ and .TON, often they are embedded in other files like in Iream Arcade Classics and choose the right sound map.
Ok, I'll try and if results are good, I will send you the SSF files..
Thanks again for the help!
edited 12:30 PM EDT March 28, 2009
- by unknownfile at 1:05 PM EDT on March 28, 2009
- bumping this thread even though it's at the top because it's awesome
- by snakemeat at 1:32 PM EDT on March 28, 2009
- The problem is to find the .SEQ and .TON, often they are embedded in other files like in Iream Arcade Classics and choose the right sound map.
You can use VGMToolbox for this. Just drag and drop the contents of your disc onto the text area in the seqext/tonext front end (Misc Tools > xSF > SSF). This can help you find relevant files. I built it to save this hassle of calling seqext/tonext for evey file on the disc.
Be aware that the driver can also be inside other files. The Simple Cutter/Offset Finder (Misc. Tools > Extraction Tools > Generic) was created for times like this. With these settings (based on section 1 of kingshriek's ssfmake.py script), you can hopefully find them:

You can also use the Finder to search for exb files, though you will likely need to cut them yourself since the filename is sometimes inside the file so the offsets can vary. Just remember that the Offset Finder is case sensitive, so search for .exb and .EXB.
Please, if you want, make a small tutorial on how to rip .ssf (also using VGMtoolbox..).
Lastly, for simple rips such as this, you can use VGMToolbox. More complex rips are best done manually. The following settings will perform a complete rip of the Irem set. You will need to remove SFX of course, but it will be ripped and timed:

Source path will be the directory with all of your data files. You would still need to remake the SSF with only one non-SFX song, but it's a nice way to get all the tracks built and then clean the set.
Currently VGMToolbox will choose a MAP file based on the TON data size. Eventually I'll use the info inside the data files. Be sure to check the output window for errors (double clicking on it will open it as a .txt file).
I highly recommend reading the ssfmake.py scripts introduction. It will explain the other parameters and how all of this works.
One other thing, don't forget to check for CPK movies. Using ffmpeg (grab the Windows build here) you can demux the audio using this code:
ffmpeg -i input.CPK -vn -acodec copy input.WAV
It usually works, though in this case it does have a bit static, could be my older version.
- by caius at 2:56 PM EDT on March 28, 2009
- OK, thanks also to you for your explanation.Are you the author of VGMToolbox?
Update:
I tried VGMToolBox with the parameters above but it doesn't work, it only copies all the data from source path in a "working_ssf_seek" folder created inside of VGMToolBox folder.I use VGMToolbox 2.0
edited 3:07 PM EDT March 28, 2009
edited 3:10 PM EDT March 28, 2009
- by snakemeat at 4:00 PM EDT on March 28, 2009
- Not sure what happened. I've tested with your data and had no problems. Do you have Python installed? Since my program still calls kingshriek's scripts to make the SSFs, you will still need it.
You can always visit IRC if you want to try and recreate the error so I can help you fix it. Try this link to get online quickly: #console_stream
edited 4:01 PM EDT March 28, 2009
- by caius at 4:13 PM EDT on March 28, 2009
- OK, it works.It was fault of the PATH environment variable not stated, so Python was not running.
Thanks again for the help!
edited 5:04 PM EDT March 28, 2009
Previous Page | Next Page
Go to Page 0 1 2
Search this thread
Show all threads
Reply to this thread:
HCS Forum Index
Halley's Comet Software
forum source