Valley Bell's SMPS Research

Discussion in 'Showroom Archive' started by ValleyBell, Feb 2, 2014.

Thread Status:
Not open for further replies.
  1. ValleyBell

    ValleyBell Well-Known Member Member

    Joined:
    Dec 23, 2011
    Messages:
    166
    This is sort of a crosspost from Sonic Retro, but I'll try to quickly explain what this is about.

    I've been researching the SMPS sound engine for quite a while now. This involved ripping songs of course, but also DAC sounds and PSG instruments.
    I have also disassembled some SMPS drivers and wrote tools that rip songs and DAC sounds and play them back (to help me naming them properly).

    So, at first we have a link to the SMPS Research Pack v2. (v1 was posted on Retro a month ago)

    It has 4 folders:

    • DACFrequencies
      Information about how to calculate the playback frequency of a DAC sample with speed setting "x" in various SMPS drivers.
    • Drivers
      Disassemblies of SMPS sound and DAC drivers. SMPS Z80 drivers are sorted in categories. (DAC/FM drums and Type 1/2)
      There are in-depth comparisons of the DAC drivers for SMPS 68k and there's a document that lists SMPS commands, explains a few things and compares SMPS drivers in general.
    • Rips
      Contains data ripped from games that use SMPS. That means songs, PSG instruments (mid2smps format) and DAC sounds.
      There is also a file called Pointers.txt in every folder that contains various hacking information. (pointers, DAC formats, etc.)
      Currently there are rips from 23 SMPS 68k, 37 SMPS Z80 and 7 preSMPS games. (though only 1 preSMPS game has all songs extracted and converted to SMPS 68k format)
    • Tools
      Tools that you need when working with SMPS games.
      dpcm2pcm and pcm2dpcm help you to convert DAC sounds
      SMPSExtract extracts SMPS songs and DAC sounds (with a DAC list autodetection)
      The "Z80 Disassembler and Cycle Counter" disassembles Z80 code and tells you how many cycles that section of code takes. (This is what I used to calculate DAC sample rates.)
    But lots of ripped songs are boring if you can't listen to them, right?
    Right, but I also have a tool for that.
    SMPSPlay, originally written by Rob Jinnai, is a Windows program that plays SMPS files and records them to VGM. (and automatically loops them sometimes)
    You can download the Win32 binary or the source code.

    Note: SMPS 68k support is okay and works pretty well. SMPS Z80 doesn't work so well due to many tiny differences between the sound drivers and because it is almost impossible to always detect the in-ROM offset of the song properly.
    Also, the tempo of .smy files is usually wrong due to a lack of the YM2612 Timer emulation and FM/PSG drums are not supported either. (And no, .skc files aren't playable.)

    Anyway, enjoy!
     
  2. ValleyBell

    ValleyBell Well-Known Member Member

    Joined:
    Dec 23, 2011
    Messages:
    166
    Crossposting from Sonic Retro:

    tl;dr: The SMPS research pack has songs ripped from 27 SMPS 68k and 49 SMPS Z80 games now (+7 betas) and there is a new version of SMPSPlay that finally can play SMPS Z80 files correctly.
     
Thread Status:
Not open for further replies.