partial update history
- Upgraded dsfdtpk to v0.01. Fixed the default behavior for handling hybrid (BGM+SFX) DTPK files so that they are no longer being skipped over.
- Added am2drvext, an AM2 DTPK sound driver extraction tool (to complement dsfdtpk).
- Added another DSF ripping tool, dsfdtpk. This one targets the Sega AM2 sound driver which uses sound files that begin with the signature "DTPK".
This driver is a bit simpler to configure than the Manatee driver, mainly because of a one-to-one relationship between DTPK files and sound banks (Manatee driver's MLT files can span multiple sounds banks and sequence data can reference multiple sample banks).
It doesn't require any patching either, which is nice.
- Added a DTPK sound file extractor, dtpkext, to support the dsfdtpk ripping tool.
- Updated dsfsndext to v0.01. Fixed a slight (seldomly occuring) bug in the filename indexing. Made the script a bit faster.
- Updated dsfmake to v0.03. Changed the naming behavior of the output file when automatic dsflib/minidsf creation is turned off so that it doesn't force a .dsf extention (useful for custom dsflibs).
Added a simple utility function that gets the sound RAM offset and allocation for a given sound data type and bank (useful for custom dsflib/minidsf creation).
- Updated mltmake to v0.01. Changed the input file syntax, as the previous one interfered with full pathnames on Windows. Added capability to not include sound data in MLT files but still populate the header (can be useful for dsflib/minidsf creation).
Made the DSP work RAM size user-settable. Added lots of comments.
- Updated dsftime to v0.01. Fixed a really stupid bug in dsftime v0.00. Nothing more to see here.
- Reuploaded dsfmake, fixing a typo in the default dsfmake arguments (was lazy and didn't test it). Thanks to Knurek for pointing this out.
- Minor update to dsfmake. Put in an option to not automatically generate dsflibs/minidsfs when there is more than one track in a sequence bank.
- Added a general Manatee driver sound data extractor, dsfsndext. This will extract all individual Manatee-related sound files (drivers, MLT headers, DSP programs, mixers, sample bamks, sequences, etc.) from a specified input file.
Unlike mltext, it doesn't try to dump out full MLT files but only does the headers instead. These individual files can later be assembled into full MLT files using mltmake.
- Added a MLT file creator, mltmake. It takes in individual Manatee sound files and creates a multi-unit archive (MLT file) out of them, which can then be used with dsfmake to generate DSF files.
- Added a DSF/miniDSF autotimer (finally) for DSFs using the Manatee driver. Thanks to Knurek for helping me track down some bugs.
- Minor update to ssfmake. Fixed a very minor bug related to zero-ing out the DSP work RAM.
- Minor update to ssftime. Fixed a very minor bug in how the reference command was handled. Did some minor cleanups - the script is now faster than it was before.
- Minor updates to mltext, seqext, tonext. They now create the output directory if it doesn't exist. Adapted them so that they can be incorporated into other Python modules.
- Update ssfmake and ssfdump so that they explicitly zero out DSP work RAM. Earlier versions of the SDDRVS driver fail to do this, causing pops at the beginning of tracks. I should have noticed this much earlier...
- Updated dsfmake and mltext to v0.01. Filled in most of the previously missing information in dsfmake.
- Added (on the SSF page where they are slightly relevant):
- Added preliminary DSF python scripts (dsfmake, mltext) which are set up in the same manner as the corresponding SSF ones. I'd like to caution that dsfmake is very preliminary at the moment.
Updated ssfinfo.py to v0.08, improving the tone bank validity check, as well limiting the bank select read from tone data to prevent possible crashes.
Found yet another way to make ssfinfo crash and implemented a fix for it, script updated to v0.09.
- Updated ssfmake.py to v0.12, properly fixing one of the script-crashing bugs I tried to fix in v0.11 but ended not doing a very good job of doing so.
- Quick update. Fixed up a bug introduced into ssftime.py v0.06, where the fade wasn't being handled correctly with multiple files. Sorry for the inconvenience.
- Updated ssfmake.py to v0.11, minor bugfixes.
- Shinobi X (SSF) - Uses quite a bit of FM synthesis, which isn't currently emulated correctly in any available SSF players.
- Updated ssfinfo.py to v0.07. Changed tone bank output to display only voices that are actually used by the track (to display all voices, use the -a option). Made names of the some of the layer data clearer.
- Updated ssftime.py to v0.06. Finally added user-defined loop and fade parameters (defaults are still 2 loops and 10 second fades).
- Added (note: different driver version used for both of these rips):
- Updated ssftime to v0.05. I put in a small fix for tracks that show zero duration in their tempo data. Should prevent track lengths from being timed to zero.
- Updated ssfinfo to v0.06, adding a DSP program disassembler as well as cleaning up the slot register layer data a bit.
- Updated ssfmake to v0.10. I repackaged it with more descriptive general area maps - one for each common DSP RAM configuration and two for use without the DSP. The DSP general area maps now use any of banks 0-7 for DSP programs instead of just bank 0. I also added more warning messages related to DSP programs/RAM.
- Updated ssftime to v0.04, fixing a slight error in the autotime_process() function (this part of the script is only used as a sanity check against the values actually given into the tempo event data).
- Updated ssfinfo to v0.05, adding some more modulation parameters that I uncovered browsing through the driver code.
- Added (the following rips all use a different driver version than what is used in-game):
- Added a SSF/DSF plugin for KBMedia Player based on the emulation core from the Highly Theoretical Winamp plugin and the Audio Overload SDK interface. It includes fixes to the emulation core that improve sound playback accuracy.
- Updated ssfdump.py to version 0.06. Now the "reserved" section of the Host Interface Status Area is no longer zeroed-out since some games actually need it (NiGHTS).
- Updated seqext.py and tonext.py to version 0.06. I've made changes to speed up the scripts a bit (running them on a 300 MB file is actually tolerable now).
- Added notes on driver versions that are known not to work properly with the current ripping methods.
- Updated ssfmake.py to version 0.09, fixing some mistakes in the general area maps that I accidently introduced when last updating them. They should work better now. Sorry about that.
Also, I changed the ssfmake function to return an array representing sound memory, which can be useful for postprocessing..
- Updated ssfinfo.py to version 0.04. Added an option to dump out a text representation of the sequence data.
- Updated ssftime.py to version 0.03. Just a minor fix to prevent the script from sometimes crashing on very small tracks.
- Shining Force 3 (SSF) - Like the previous Shining the Holy Ark set, this one comes courtesy of Datschge.
- Updated seqext and tonext to v0.05. Changed scripts to produce meaniningful output when no data is found in a file instead of just outputting a newline. Also changed them to ignore reading directories instead of producing an error.
- Shining the Holy Ark (SSF) - This set was a bit of a collaboration between Datschge and I (though Datschge really did more of the work). Some of the tracks (battle ones mainly) actually use the SCSP's FM capabilities, which are not emulated in any of the current players (and probably won't be for some time).
- Updated ssfmake to v0.08. Now the minissf output includes the entire sound command block instead of just the bank and track numbers. This better facilitates doing post editing on specific tracks.
- Updated ssfinfo to v0.03. Corrected EGHOLD and MDL outputs.
- Updated - Many of these updates are to correct mixer settings that I got wrong in the original releases. This (along with people neglecting to include DSP programs in their rips) prompted me to add some notes on the SSF page about DSP/mixer settings as this is probably the hardest part to get right when ripping SSFs.
- Machi (SSF) - Fixer mixer selection for all tracks. Added many tracks that are shorter variants of others.
- Sakura Taisen (SSF) - Fixed mixer settings for quite a few tracks.
- Updated ssfmake.py to v0.07. No changes to the actual script, but the general area maps have been fixed to account for an additional 0x40 bytes used for DSP RAM.
- Added more notes about DSP/mixer settings in the comments of both ssfmake.py and ssfdump.py since it is easy to screw these up.
- Updated ssfinfo.py to v0.02. Added requirements/checks for DSP RAM. Also added information on the selected mixer to the default output since this a very common thing to check.
- Updated seqext.py and tonext.py to v0.04 and v0.03 respectively. Now multiple input files can be specified (via globs or otherwise). To support this, the output directory now must be explicitly given as the last argument.
- Updated ssfinfo.py to v0.01. Now the script only prints out tone bank data that is actually referenced by the sequence data. I added another option, -a, to print out information on all data contained in a SSF file, whether it's actually used or not.
Also, the script no longer depends on psf2exe. I changed it to use Python's zlib module for decompression instead (so now the script is entirely read only).
- Updated ssftime.py to v0.02, fixing a bug with the pre-loop step determination. This will only affect sequence data that contains multiple tempo changes before the loop point. I also removed dependency on psf2exe, favoring Python's zlib module instead.
- Updated ssfmake.py to v0.06, fixing a bug with the DSP program insertion. Before, the script ignored the DSP bank value when scanning the area map (oops).
- Added an information generator script, ssfinfo.py, to the SSF page. It basically just prints out a lot of info on the various data in a SSF file, thus it can be useful for troubleshooting.
- Fixed the general area maps provided with ssfmake.py (now v0.05) to support banks 0-7 instead of just bank 0.
- Fixed some portability problems with seqext.py and tonext.py.
- Updated ssftime.py to v0.01. I've added some code to try to correct for cases when the durations in the tempo event data have absurd values (I've seen v0.0 time a 1 second track to 7.5 minutes).
- Uploaded a SSF/miniSSF auto-timer script, ssftime.py, to the SSF page, hopefully eliminating most of the tedious work involved with timing them manually. I can't guarantee that it will time everything perfectly, but it should be able to do a decent job most of the time.
- Made a small update to ssfmake.py (v0.04) so that it handles putting output files in directories outside of where the script resides. This time I didn't forget to include the general-purpose area maps (I forgot for v0.03, sorry about that).
- Updated seqext.py to v0.02, changing one of test conditions (hopefully for the better) that catches some sequence data that the previous version would have missed.
- Made an extremely minor change in various scripts by changing all instances of paramter 'tonebank' with 'mixerbank', since all the variable really does in specify which tone bank the driver grabs the effect out mixer data from. The parameter is not used for anything else, so I think 'mixerbank' is less confusing.
- Made a somewhat big update (well, big compared to the last couple ones at least) to the ssfmake script (now v0.03). Now it can create ssflib/minissfs in cases where there are multiple tracks in a sequence bank.
Also, I restructured the script so that all the major work is defined in a function. This way, the user is free to customize its use more (batch-mode processing, for example).
It can still be used in exactly the same way as before, of course. Head to the SSF page for the new version.
- Opened up a new section of the site, a SSF page. Right now, it has a few sets I've done as well as some (hopefully) useful scripts to assist one in dumping/ripping SSF files. Link is at near the top the page. A very massive thanks goes to Datschge and Knurek for allowing me to host the SSF files here (at least for now - please download respectfully and go easy on the bandwidth, everybody).
- Quickie minor updates: I had added a bit more documentation to the ssfmake script and then forgot to upload it. Sorry about that. Newer version is up and has some information on what the ripper needs to consider. Also, I removed the statement in ssfdump about it possibly not being ready for ssf set creation, as I'm a bit more confident in it now.
No actual code changes to either of the scripts, however (hence, no version change).
- Minor update 2: Upgraded ssfmake.py to v0.02, fixing some undesirable behavior in multi-pass usage. I added a bit more ripping information in the comments while I was at it.
- No new rips in this update, but I have updated some sets with playlists courtesy of Kaminari. I would also like to mention that the latest version (as of this update) of NezPlug++ now has ADPCM support, which is necessary for some of the HES rips I've done (which ones are noted in the "Comment" field on this page).
- Cychorider (HES) - Added playlist (thanks to Kaminari)
- Magical Chase GB (GBS) - Sound driver uses bankswitchable RAM, which is not required to be supported by the GBS spec, for its variables. The GBS will only work in players that support this feature.
- Prehistorik Man (GBS) - Has problems in every GBS player I've tried, although very few emulators to begin with can emulate this game properly.
- Keep the Balance (GBS) - A huge thanks goes out to 627 of 2ch for fixing the GBS rip.
- Cychorider (HES) - From the hidden score attack shooter on Anearth Fantasy Stories Taikenban. Includes ADPCM.
...and for something new/interesting...
- Experimental PC-FX set (HES) - My attempt at ripping/converting the PSG from Ginga Ojousama Yuna FX and Team Innocent into HES format, since the music format used was very close to that of the PCE System Card driver. Not all driver features are support, so the rips aren't exactly accurate, but they generally sound pretty close to the originals. See the readme.txt included to see what new features are supported and what isn't.
Trimmed down yet even more HES rips that contained music from other games. Ahh, the perils of blindly ripping from a CD-ROM image...
- Doukyuusei (HES) - Removed tracks that were actually from Cal III (no wonder I couldn't identify them when building the playlist).
Many compatability fixes here, mainly targeting Ootake. These either required dummy writes to the timer reload register or explicit setting of the PSG global volume in the init routine. Fixes purely for Ootake compatibility are indicated by a * below.
- Cal II (HES) - Set $A000-BFFF to be RAM. I'm not sure how NEZplug managed to play it with that bank being read-only.
- Dragon Slayer - Eiyuu Densetsu 2 (HES) - Added the rest of the PSG tracks to what was a terribly incomplete rip before. The PSG music used in cutscenes was hiding under a different sound driver.
- Private Eyedol (HES) - Fixed the PSG_INIT call that I messed up in the original rip.
- Super Daisenryaku (HES) - Fixed a TII instruction that was clobbering RAM used by the IRQ handlers (when the HES is played as a PCE rom) because I messed up the byte-ordering in the length argument.
- Cyber City OEDO 808 (HES) - Another experimental ADPCM rip. Try using it as the system card in an emulator (requires SGX RAM).
- Finally succeeded in adding ADPCM to Fiend Hunter, although I don't know if any HES player officially supports it. I confirmed the rip by tricking mednafen into enabling ADPCM by loading in the HES file as a system card. I had to force SGX emulation as well, as there seems to be a 256 KB size limit that mednafen imposes on the system card. Using additional SGX ram, I can pack the music together and memcpy the tracks to the expected location in the HuC6280's logical address space. Without additional RAM, I'd have to rely on bankswitching, and with the way Fiend Hunter's music data is laid out, I can only put in one track per 8K bank, putting me over the 256K limit.
Also, there is a noticeable delay when switching between tracks. This is because I have to copy 32K of ADPCM data into ADPCM RAM, doing so by using the System Card's (slow) AD_WRITE BIOS call.
- No new sets today. This update consists of HES compatability fixes as well new playlists from Kaminari. I went ahead and fixed all of the incorrect size fields in the headers (I've been lazy with these), enabling these files to played on more HES players.
- Cal III (HES) - fixed size field in header
- Dragon Egg! (HES) - added playlist (thanks to Kaminari)
- Maison Ikkoku (HES) - fixed size field in header; added playlist (thanks to Kaminari)
- Linda Cube (HES) - Included m3u playlist. Big thanks to Kaminari for creating it.
- Top o Nerae! Gunbster Vol. 1 (HES) - Many of the tracks in the old rip were actually from Urusei Yatsura - Stay With You, so I removed them.