SMPS Research Pack v4: direct link part 1 / part 2, release post
SMPSPlay 2.11: Win32/64 binary, source code archive / git repo, release post
Original post
Over the last two years I did a lot of research on SMPS drivers, both 68k and Z80.
I ripped songs from 21 SMPS 68k and 35 SMPS Z80 games, did some research on preSMPS, especially Rent-A-Hero, and disassembled some sound drivers.
And today I want to show you the results: the SMPS Research Pack.
The probably most interesting thing inside are rips from almost 60 games.
Except for the preSMPS games, every ripped game has not only the extracted SMPS files, but DAC and PSG data, too. (PSG data is stored in mid2smps' PSG list format.)
There is also a file called "Pointers.txt" in every folder that lists the locations of pointer lists and other data, as well as the format of the DAC sound list. Later rips are more complete and have more notes than earlier ones.
For two games, OutRunners and Virtua Racing (SVP), there is also table that explains the custom coordination flags.
Some folders have songs patched to work with SMPSPlay. The original songs are marked with .org in this case.
The folder for Rent-A-Hero contains files in SMPS 68k format. I converted them from preSMPS 68k to SMPS 68k using a small tool I wrote. The conversion is not perfect (missing tempo changes and DAC on/off flags), but pretty close.
The programmer guys may be interested in the folder with disassembled SMPS drivers. (Included are original .bin, the .idb and an exported .asm file.)
There are disassemblies of a fair number of DAC drivers. I also compared them and noted the differences in a separate .txt file.
I also collected some SMPS Z80 drivers, sorted them into categories and disassembled a few of them. Please note that some of the older disassemblies (2012 and early 2013) contain mistakes.
Finally there are also a few disassembled preSMPS drivers. I didn't get far with Phantasy Star 2, but the other two are labelled well. PS2 with its "chord mode" and Space Harrier 2 with a 2x 2-Operator FM drum are both pretty interesting.
Finally, there is also a folder with a few .txt files with tables that tell you the playback speed of a few DAC drivers. These are DAC rate -> frequency in Hz conversion tables and the values are reused by SMPSPlay to determinate the playback speed of the DAC samples.
You think that's all? No, it's not.
In order to play all those rips, you probably want to download an updated version of SMPSPlay, an SMPS player for Windows.
It includes a Win32 binary, as well as a 64-bit one.
If you want to look at the source code, you can get it here. Be warned though, it's pretty messy right now and I plan to make some larger changes that make it easier to support various SMPS variants.
Important notes about SMPS Z80:
- The offset autodetection is unstable and doesn't work on some games or songs. It's pretty much impossible to guess if there is garbage data between header and actual song data or not.
- For some songs you will need instrument sets that are shared between songs. You can edit data\config.ini to use the respective InsSet.bin files.
- Some SMPS Z80 games use FM and PSG drums by playing notes on the DAC/Rhythm channel. SMPSPlay currently supports only DAC sounds on this channel, so I tried to replace them with DAC drums in a few folders. The only game where it worked well was Dyna Brothers 2 though.
Now, enjoy and happy hacking!
P.S.: It's not ready yet, but I will release an updated version of my SMPS Extractor soon, too. I used it to extract all songs and DAC sounds.
EDIT: You can download a slightly updated SMPSPlay here.