Previous Page | Next Page

by Knurek at 12:23 PM EST on November 20, 2012
How much difficult would a change in the current ssfmake frontend be that would allow for... I don't know how to put it... visual building of ssf files?

Something that would allow you to specify driver, DSP program, sequence data and... say, up to 4 tone banks. The frontend would show you the location of each segment in the 68000 memory space, the available memory and other details.

Maybe it could also print out warnings when misaligning the tone banks - since can give you the information regarding number of samples a sequence file expects from a specific tone bank, if for example you would combine a 5 instrument tone on bank #0 file with a seq file that uses 11 instruments on bank #0 and 5 on bank #1 the program could catch that and notify you that you're doing something wrong. Same for picking a mixer that doesn't do any DSP effects and some other, automatically substituting known not working drivers and other common errors.

After pressing make_ssf button the tool would then create a custom map file, run the required amount of times, adding all the sequence and tone data, run ssf_time and add tags to the file (I don't remember if the current implementation does that).

Now, all of this can be done manually, I've been doing custom map files for quite a number of my rips (kingshriek ones ten to unnecessarily allocate a lot of memory to the SEQ files, resulting in overflows in the tone data), but this is something that should really be doable by a tool.

Having to do this process manually for the hundred+ GB of Saturn games I have in my processing queue is really not something I'm looking forward to.

Snakemeat, please let me know if you require additional details or an example file. :)
by snakemeat at 10:23 PM EST on November 20, 2012
Snakemeat, please let me know if you require additional details or an example file. :)

A sample would be helpful. I'm sure I'll have some questions, but I need to look at the scripts again to remember how all this works. This sounds really challenging and interesting though.
by Knurek at 3:13 PM EST on November 21, 2012
Okay, here you go

This is from a game I'm currently ripping.

OPENING_000.SEQ - size 0x2953
OPENING_000.BIN - size 0x4C242
OPENING_001.BIN - size 0xAF95

Neither of the tone banks uses DSP, so that's one less worry to have (if I manage to find a DSP using game I'll whip up another example).

Byte 0x01 of the SEQ file tells us that is has 20 subsongs, so the final run should generate a ssflib (but as this example will show, it's always better to give the user an option to stick to single song.

So we have two tone banks. will tell you that subsongs 1-19 use samples from bank 1 while the last one uses samples from bank 0 - hence we need to create an ssf with both of the banks.

First of all, let's create a custom map for the rip - all of kingshriek's examples are only for single tone bank rips, so it's not like we have any choice on the matter.

The 68000 address space that interests us starts at 0xB000 - everything before that is taken up by the sound driver. We have 0x75000 of memory to ourselves - larger amount than the 0x59B2A bytes the three files have combined, so we're safe there.

So starting from 0xB000, let's allocate 0x2A00 bytes for the sequence data, then from offset 0xDA00 (starting offset+previous bank size) 0x4C242 bytes for tone bank #0 data, then from offset 0x59C42 (previous offset+previous bank size) 0xAF95 bytes for tone bank #1. has this data in three 8 byte entries, terminated by 0xFF.

fb aa aa aa t0 ss ss ss

f - Data format (4-bits - 0: TONE, 1: SEQUENCE, 2: DSP_PROGRAM, 3: DSP_RAM)
b - Bank number (4-bits - any value between 0-15)
a - Start address (24-bits, big-endian, if DSP_RAM, must be a multiple of 0x2000)
t - Transfer bit (bit 7 - must be set to 1 for the driver to read the data)
s - Data size (24-bits, big-endian)

So our map looks like this:

1 0 00B000 80 002A00
0 0 00DA00 80 04C242
0 1 059C42 80 00AF95

Now let's build our ssf file. Kingshriek's script can only process one bank at a time, so we will need to do two passes. First pass settings will look like this (I'm skipping data that isn't important, since I've included both script passes in the archive):

bank = 0x01
use_dsp = 0
ndrv = 'driver_2.2.tsk'
nmap = 'CUST_SEQ.MAP'
nbin = 'OPENING_001.BIN'
nout = 'opening.ssf'

And then there's second pass, where we work on bank #00

bank = 0x00
ndrv = '68000ram.bin'
nbin = 'OPENING_000.BIN'
nseq = 'OPENING_000.SEQ'
nout = 'opening.ssflib'

Of course, once you actually listen to the files, you realize everything save last subsong is just SFX, so the whole process is kind of pointless (since the only proper song uses just bank #00). Makes for a good example though, hope everything's clear here. :)

edited 3:13 PM EST November 21, 2012
by Knurek at 2:13 PM EST on November 23, 2012
Ah, I totally forgot to write that you should delete the output of the first pass other than 68000ram.bin file.

Two more feature request for pmh - neither of these is really time critical given that I won't tackle NDS for at least a year, but would be appreciated nevertheless.

1. Could you combine the current NDSTo2SF and Make 2SFs tabs into one procedure? Drag'n drop the NDS file, have VGMToolbox extract all the SDAT files from it and then run Make 2SFs instance for each of them. This would let me size optimize the output (zero out SFX/etc), something not currently possible with NDSTo2SF

2. Another thing that would make my life easier would be a SDAT/2SFlib compare function, where you could load two SDAT (or 2SFlib) files (say, one from JPN region, the other for USA) and have VGMToolbox parse through them and do a binary comparison for songs and sample banks the song uses.

Would greatly simplify finding games that had music changes between regions (Mario & Luigi 2 had, if memory serves me correctly, a JPN/EUR region exclusive song).
by Koto at 7:36 AM EST on January 8, 2013
Hi Snakemeat,

I'm trying to add looping to Soul Calibur GENH editing the files, but and I'm not very sure about how I can do it.

All "Loop Start" cases are empty, I just have to fill it with the proper sample to make it work? If not, tell what I have to do with each file, because I'm quite noob with these things. Thanks.

See ya
by snakemeat at 10:06 PM EST on January 8, 2013
You need to add the loop start samples and loop end samples. For loop end, you can try the "Use File End" if the files end at the end loop point.
VGMToolbox r924 by snakemeat at 5:55 PM EST on February 1, 2013
VGMToolbox has been updated, grab it at Sourceforge.

VGMToolbox r924

-= NEW =-
Nothing visible.

[VIDEO DEMUXER] Add Electronic Arts MPC format, pretty much exactly like EA VP6 except only one video chunk type (MPCh).
[OGG EXTRACTOR] Add offset to file name for segmented tracks.
[MPEG DEMUXER] Add commented hack for a bad .PAM file.

-= FIXED =-
[VIDEO DEMUXER] Fix VP6 files where audio header (SCHl, SHEN) comes before video header (MVHD).
- Fix rebuilder to check for non-VGMT checksums and fix CRCs that begin with zero.
- Fix file locking for reading GENH files.

-= THANKS =-
Thanks to Timo for the EA video samples.
VGMToolbox r926 by snakemeat at 11:56 PM EST on February 15, 2013
VGMToolbox has been updated, grab it at Sourceforge.

VGMToolbox r926

-= NEW =-

[VGM TAGGER] Updated to leave all data between offset 0 and the data start offset unaltered for VGM v1.50 spec or greater files.

-= FIXED =-
[VGM TAGGER] Loop start offset was not updated if a header was trimmed, now that the header will not be changed, this doesn't matter.

-= THANKS =-
by peronmls at 10:33 AM EST on February 16, 2013
Never even knew it had a VIDEO DEMUXER
by Knurek at 4:47 AM EST on March 6, 2013
snakemeat, do you have any plans of implementing an SPC mass tagger?

Or do you know of such a tool - retagging them en masse using the playback plugin is a chore.

Previous Page | Next Page
Go to Page 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

Search this thread

Show all threads

Reply to this thread:

User Name Tags:

bold: [b]bold[/b]
italics: [i]italics[/i]
emphasis: [em]emphasis[/em]
underline: [u]underline[/u]
small: [small]small[/small]
Link: [url=]Link[/url]


HCS Forum Index
Halley's Comet Software
forum source