The SEGA SC-3000H was my first ever computer. Distributed by John Sands Electronics in Australia in the early 80's, it was Sega's attempt at competing with a number of early 8 bit home computers. It was essentially the same internals as the SEGA SG-1000, which was a cartridge-only unit popular in Japan. This same family of hardware would eventually become the "Sega Mark III", better known as the "Sega Master System" to the rest of the word.
The SC-3000 and SC-3000H both allowed software to be written and read via standard audio cassette. Data was encoded as individual bits stored as 1200/2400Hz cycles, with each bit taking 833.3us of time on the tape. 1 MegaByte (8 MegaBits) raw, not including parity and stop bits, would be almost 2 hours of audio!
Dumping the tapes
As these old analogue cassettes stretch and warp over the years, the quality of the information they contain deteriorates. I wanted to preserve the tapes I had. The first step was simply getting the information off an analogue format and on to a digital one. My dad kindly went through the process of recording all the old tapes from a standard cassette player and capturing them as raw PCM WAV files.
The next step was seeing how they'd compress. The compression needed to be lossless, which ruled out codecs like MP3, Ogg Vorbis, AAC etc. Firstly, there was no need for stereo, as the data was single channel only. That halved the file size. Legacy compression tools like gzip, bzip2 and zip offered little compression. xz offered about a 30% reduction. FLAC - a lossless audio compressor - offered the most compression at around 55%.
Remastering the tapes - emulation to the rescue!
Thanks to new features added to MESS (a computer and console emulator, and sibling project to MAME) not only can these tape dumps be played, but an emulated SC-3000 can now also write out new audio data.
The method I used follows the guide created by the SC-3000 Survivors authors. There's more information also in this SMS Power forum thread.
Following their guide, the resulting output file is a perfect digital representation of the 1200/2400Hz cycles needed, which means a couple of things. Firstly, the encoded information is much clearer, read errors are greatly reduced. Secondly, as the wave forms are more consistent, compression is now 99% or more.
Analysing the wav files before and after, we can see the difference. The image below contains (top to bottom), zoomed out remastered, zoomed out original, zoomed in remastered and zoomed in original views.
Playing the games
If you have an original SC-3000 or SC-3000H, you can use these dumped games directly on real hardware. Play the WAV files direct from your computer to the SC-3000, put them on a media player or phone and play them back that way, record them to an audio CD, or do it the old fashioned way and record them to cassette tape.
If you don't have an original SC-3000, you can emulate one on almost any modern computer. MAME and MESS are now merged into a single project. Download MAME for your platform, and the Sega SC-3000 BIOS: Sega_BASIC_Level_3_V1_SC-3000.zip and unzip it.
Next, grab any of the games I've dumped, and unzip them also. Execute MAME and tell it how to start up:
mame sc3000h -cart Sega_BASIC_Level_3_V1_SC-3000.sc -cass filename.wav
Type "OK" to get past the MAME information screen. You'll see the Sega SC-3000 BASIC screen. Type "load" to start loading a tape:
Press whatever key you've mapped to MAME's internal menu (possibly TAB or F12, depending on how you've configured it) to bring up the menu. Select "Tape control" and then "Play".
You'll see a counter appear on screen to show the virtual tape is playing, and after a few seconds you'll see a message saying a game has been found. From here, the game will load real time. If your computer is fast enough, you can press "F11" in MAME to see the frame rate, and "F10" to tell your computer to remove any CPU throttling to run the emulated platform as fast as possible. For a modern CPU, this can allow things to move a lot faster (2-3 times faster if you've got the right hardware).
Once the file has been loaded, the Sega BASIC BIOS will tell you.
Now type "run", and the title will start.