Remastering Techniques

What is the Sega SC-3000 Tape Restoration Project?

Aerobat Part B, original tape waveformNote background noise and variation in amplitude

The Sega SC-3000 was launched in 1983 by Sega in Japan and was
distributed in several overseas countries. But its biggest success outside of Japan
was in New Zealand and Australia where a good local community of user groups
and developers supported the platform with locally produced software on tape and disk.

The SC-3000 Tape Restoration project has two purposes:

Restore classic Sega SC-3000 Tapes and Disks and make them freely available for use on original hardware and emulators

Document the process of restoring the software
There are a lot of subtly different tricks used to handle the different autoload and copy protection built into
the tape / disk software.

Aerobat Part B program name original waveformNote background noise and variation in amplitude

We have a large stash of old original audio recordings of
Sega SC-3000 tape software. Some of this audio is heavily degraded, but
with a bit of maniuplation it can be made to load on a real SC-3000 or an
emulator like MESS.

Unfortunately this software has never been widely distributed, largely due
to the large size and condition of the audio recordings. (You do the math - one minute
of 16-bit 44.1KHz mono audio takes up about 5MB of disk space).

The original 16-bit 44KHz audio is full of distortions and random
noise, so it does not compress very well (perhaps 5% max). And you don't
really want to use MP3 type formats for use with emulators. Check out the images to the right to see what we mean.
You can see background noise even during 'silence', and there are amplitude and frequency variations
right throughout the recording.

Aerobat Part B MESS waveformNote no background noise or variation in amplitude

However, if you load the original audio into an emulator like MESS you can
create a perfect waveform copy using a tool like SegaWAVWriter or the MESS
tape recording emulation.

That is HIGHLY compressible. Like 50:1 to 100:1 compression.

eg. the 16-bit 44KHz audio for Bastow Manor is about 31.7MB in size.
But if you compress it with WinRAR, that drops to 421KB. That is
a compression ratio of 75:1.

We've always wanted to clean up and release the old Sega tape software. That is actually what
led to the development of the SC-3000 Multicart. And that is
a truly awesome way to experience tape software as it should be - with instant loading
on original hardware.

Unfortunately this is a very time consuming hobby. And real life is very busy.
So I'm going to try to do say 1-2 releases a month for the 2015. And I'll try to document some of the
more interesting techniques used in the game copy-protection / loader techniques along the way.

What is the Sega SC-3000 Bitstream .bit tape format?

Back around 2009, Francesco, one of the founders of Sega SC-3000 Survivors came up
with a simple tape format called Bitstream for representing recorded Sega SC-3000
tapes for playback and possible use in emulators. sc-3000.com has a very cool Flash based Bitstream tape player
that will play these files back via your computer's headphone jack so you can load them on a real SC-3000.

Some time between 2012 and 2015, support for the Bitstream format has been added to MESS.
v0160 of MESS will load SC-3000 tapes in the .bit Bitstream format. So by default that
becomes the standard SC-3000 tape format and we will generate .bit files as well as remastered .wav files.

The bitstream format is VERY simple, because 99% of Sega audio recordings are very simple.
All of the available commercial software used the Basic IIIB ROM tape routines, or at least parts of them.
So the format only has to be able to represent three states ie. SILENCE, BIT VALUE = ONE, BIT VALUE = ZERO because
the BasicIIIB ROM treats a single 1200Hz cycle as a zero, two 2400Hz cycles as a one, and anything
else is effectively silence or bad data.

Note - this means that the Bitstream format is suitable for playback only, not for recording in MESS.
The actual Sega SC-3000 hardware can read / write far more precisely than using 1200Hz / 2400Hz tones,
so this tape format can't represent everything a real SC-3000 can do like using different tape encoding
schemes (eg. Michael Hadrup's Load / Save / Verify extensions), or sampling 1-bit digital audio.
But that's ok, because in practice there aren't any significant examples of that on the SC-3000, and you
can still use a WAV file if you have something with a different encoding scheme.

Bitstream v1.0

This is Francesco's original Bitstream format and it is supported by MESS v0160 and later.

It is a binary file where each byte is used to represent a single data bit or 1 / 1200th second of silence:

' ' ie. ASCII space character (0x20 hex)
This denotes 1 / 1200th of a second of SILENCE (ie. 833us)

'0' ie. ASCII number zero character (0x30 hex)
This denotes a square wave cycle 1 / 1200th of a second wide (ie. 833us)
It represents a single data bit of value ZERO

'1' ie. ASCII number one character (0x31 hex)
This denotes two square wave cycles each 1 / 2400th of a second wide (ie. 833us total)
It represents a single data bit of value ONE

No other characters are allowed
(so it doesn't matter if this is a text or binary file)

Here is an example for the following simple Hello World Basic program:

That has 1 second of silence at the start and the end. Remember, a space char is 1/1200th of a second of silence, a '0' char is a single 1200Hz tone, and a '1' is two 2400Hz tones.

You can try loading it in Sega Basic IIIB with MESS v0160, or just look at it in a Hex Editor to see the content. You can also view it with a text editor, but everything appears on a single line
so you will have to scroll waaaaaay over to the right to see anything.

Acknowledgements

The tape restoration project has been many many years in the making, and has
built on the work of a lot of individuals.

We'd like to thank:

Aaron a.k.a. Holmes for spending countless hours collecting and archiving
audio recordings, documentation, original hardware and software, and tape covers over
the past 20 years.

Kerrjnr for the excellent SegaWAVWriter utility

Francesco for building sc-3000.com, kicking off the Bitstream format, and providing inspiration and passion

The crew at smspower.org for keeping the Sega 8-bit flame going and providing
resources, help, and encouragement. Maxim, Bock, and Charles McDonald provided a lot of valuable insight early in the Multicart Project

Cheers,
Nick

SC-3000 Survivors Tape Restoration Project

Disclaimer

Titles released by the SC-3000 Survivors tape restoration project may contain
copyrighted material. We do not hold any rights to any of this material.
The purpose of the tape restoration project is to preserve old and forgotten
software for the Sega SC-3000. If we don't, then these titles will likely
disappear forever.

So drop your pitchforks, fire up the 1980s sweetest home computer, and enjoy :)

In some ways, Bastow Manor is an odd choice for the first release from the
tape restoration project as I've never played it. You can thank Tycho from the SMS Power forums for that
for pestering me to make the Softgold software available :) But is was also a good choice as it uses
one of the simpler remastering techniques - using the MESS tape emulation
to record a clean copy of the audio.

The Secret of Bastow Manor is a text / graphic adventure. This genre was
popular back in the early days of home computers as they were easy to write
and (if done well) surprisingly addictive. They can also be mind numbingly
frustrating :)

Cassette cover text

Old man Bastow has disappeared, or so the story goes, leaving rumours of his
great wealth hidden somewhere in the Manor.

The baying of the hounds from behind the walls brings to mind tales of
wandering ghosts and hidden traps.

Can you find the Treasure, solve the mystery.

...... and live!

Overview

Some common commands:

G: List all obvious exits from current room

I: Inventory - list all items in pack

L: Look for anything interesting in current room

To move North, South, East, or West you just type the first letter.
eg. to go North, type N

Use two word commands like GET LOOK GO CLIMB etc.

eg. GET BOOK

Loading Instructions

Bastow Manor has 5 parts. They were originally recorded in sequence on a
single-tape, but we have broken these out into 5 seperate WAV files for you.
These will work on an original Sega SC-3000 or in an emulator like MESS.

Type LOAD and press CR.

Part 1 is an auto loader. As soon as it loads, type RUN.

You can then immediately load Part 2.

Whenever the program is ready to load the next part you will be prompted
to press play on the tape and load the next section. It is written this
way to allow a reasonably large game to fit onto a 16K Basic IIIA cart.

Note - you can NOT load the parts out of sequence due to copy protection /
code hiding to stop you from listing the basic program.

HACK!

Well... you kind of can actually if you use this little hack :) Only do this
out of interest. If you want to play the game I suggest you do it normally as above.

Load any one of Parts 2-5 using the LOAD command. After it has loaded type:

POKE &H8160,&H01 (then press CR)

You can then list the basic program and run it. The code hiding works by
putting a binary zero in front of the basic program. The initial loader in part 1
actually copies some machine code to the top of memory that calls the Basic IIIB
load routines, then copies all of the Basic program one byte lower and adjusts
the end of Basic pointer at $8162 so it is runnable. So you don't need to do
any of this to play the game

Note - I don't know for sure if this will let you play the game correctly
out of sequence. In particular I'm not certain if the game stores inventory
between loading the sub-parts of the game. But it illustrates one technique for stopping
people from easily listing the Basic program to cheat :)

Cassette Inlay Text

Mission Objective:

Penetrate 5000 Microns of the enemy's vortex field. Reach command centre and
destroy it. How far can you penetrate?

Important points of play:

Enemy defences will try to eliminate you as you penetrate deeper into the field.
You must keep an eye on your energy banks at all time. If your energy banks
should become depleted then you will lose control of your craft. If however they
are at a very low level, then your craft will become unstable and very hard
to pilot. To recharge your energy banks you must destroy the enemy fuel depots.
You will start the game with 1 ship and a shield level of 3. You will receive an
extra shield at every 10,000 points. The game ends when your energy banks are
depleted or when you have no shields left. Each time you are hit your shield
level will drop by 1. When your shield level reaches zero your craft will be
destroyed. Running into the vortex field will destroy your craft and end the game.

How to play:
Use the joystick to control your craft's direction and firing. OR use the
keyboard controls:

It has simple copy protection built into the filename though. There is a hidden binary zero in
the tape filename. So if you resave it without that hidden character, then Part 1 of The House
loader will display a copyright statement instead of executing the loader.

Fun Fact:
This is a classic case of embedding machine code inside DATA statements
in a Basic program. But because the initial Basic program is relatively
slow to run, it takes 45 seconds or so to read the DATA statements and
store the machine code at an address higher in memory. These are then
available for use by part 2 when the second half of the game has loaded.

Cassette Inlay Text

Grandstand-Sega

The House

Graphic adventure game: Time is running out.

You've got to find the crucifix and hunt down Vanessa the Vampire then kill her
(before she or the Purple People eaters kill you!).

Overview

Note - you will need a joystick to play this game.

This was Michael Howard's first major game for the Sega SC-3000 (the other being Help!).

Michael Howard was employed whilst studying at Auckland University by Grandstand Leisure Ltd as
their Sega specialist doing programming work and providing tech support. He also
wrote a number of articles and programs for Sega Computer Magazine, and wrote
the books "Teach yourself Basic Games Programming" and "More than 50 Programs
for the Sega SC-3000!!"

The House gameplay is pretty simple. Move 'Siddy Superspook' through the rooms of the house
picking up gold, fighting Purple People Eaters, and trying to find the Crucifix before you
find Vanessa ze Vampire.

(See inside the zip file for full instructions.)

You can see his distinctive sense of humour throughout the game, as well as
(it must be said), his lack of spelling and grammar checking :)

As a side note, The House and Help were copied on the most god-awful high speed tape
duplication machine by Grandstand Leisure Ltd. Consequently you would have to try
about 10 to 15 times to get the tapes to load. I still have nightmares about that.

Finally, I'd just like to say this is one of the most awesome SC-3000 title screens :)
I love the witch and the ghost.

It has simple copy protection built into the filename though. There is a hidden character in
the tape filename. So if you resave it without that hidden character, then Part 1 of the Help
loader will display a copyright statement and reboot the system instead of executing the loader.

Fun Fact:
This is a classic case of embedding machine code inside DATA statements
in a Basic program. But because the initial Basic program is relatively
slow to run, it takes 45 seconds or so to read the DATA statements and
store the machine code at an address higher in memory. These are then
available for use by part 2 when the second half of the game has loaded.

Cassette Inlay Text

Grandstand-Sega

Help

On a routine geological survey, you are abducted by a gang of purple people
eaters, and sentenced to a journey through the crazy crypt.

If you can walk from one end of the crypt to the other and not die, you are
set free!

An exciting, crazy family game that will keep you going for hours.

Overview

Help is an unusual combination of general knowledge, fast reactions, arithmetic,
memory, geography, and luck.

This was Michael Howard's second (and final) major game for the Sega SC-3000.

Michael Howard was employed whilst studying at Auckland University by Grandstand Leisure Ltd as
their Sega specialist doing programming work and providing tech support. He also
wrote a number of articles and programs for Sega Computer Magazine, and wrote
the books "Teach yourself Basic Games Programming" and "More than 50 Programs
for the Sega SC-3000!!"

Help is an unrelated sequel to The House. The only real link is his use of
Purple People Eaters (PPEs). You may get eaten by one occasionally.

You can see his distinctive sense of humour throughout the game, as well as
(it must be said), his lack of spelling and grammar checking :) The title screen
is suitably funky, and he uses simple little sprites and a lot of text mode
in this game.

It actually quite playable for a simple game, and it is very hard to get
through to the other side of the crazy crypt. The Grandstand tapes were also
duplicated on a high speed tape duplication machine, and the audio quality was
terrible. So it would usually take about a dozen attempts to get this tape
to load. If you were lucky.

Every step you take through the crazy crypt gives you a chance of running
into some of the weird and dangerous inhabitants of the crypt. Here are
some of the residents you may meet.

Merlin the Cat
If you manage to move 6 steps without meeting anyone, Merlin sends you
back to the beginning.
(Note - Michael Howard's cat was named Merlin)

Mr Shaw the Crazy Chemist (multi-choice)
I'll give you the name of an element
What's it's chemical symbol?

Maths Mad Nick
What is the answer to the following sum?
You only have 10 seconds to answer
(you have to add up a sum of approximately 6 to 8 numbers)

Bill the Bookworm (multi-choice)
I'll name a famous book and you tell me who wrote it

Charlie the Crusher
Guess his chosen letter
or get squashed (By a size 13 boot!)
(This one is luck - you have several chances to guess the letter
before an animated boot drops down to squash you.)

Revenge of the Purple People Eaters (luck - 33% chance of dying)
Behind one of the doors is a PPE
Choose the right one and get chomped!

Mary the Manic Memory Tester (memory)
Memorize her word to pacify her
Or else!!
(A random collection of letters appears on
screen for a couple of seconds. You must
memorize and repeat them.)

The Egotistical Gorilla
Tell him his name or he will rip you to bits!!
(His name displays somewhere on the screen for a fraction
of a second. You must type it in.)

A volley of poisoned arrows (luck)
sit tight and hope that none of them hit you!
(A little picture of you sits in the middle of the
screen as poisoned arrows rain down. If you are lucky
they miss you).

Annie-with-the-Atlas (multi-choice Geography)
I'll name a country & you tell me
what the capital city is

Ross the Racey Driver
Drive his Anglia through the flags without hitting any

This one is crazy hard and it always used to kill me as a kid.
Use up / down cursor keys and the car drives from right to left on the screen.
So look towards the left of the screen to see what is coming.
Actually... I'm not certain that this one doesn't reverse direction occasionally.
Anyway - good luck :)

Cassette Inlay Text

AN AMAZING ARCADE GRAPHIC
ADVENTURE STRETCHING YOU AND YOUR
SEGA TO ITS LIMITS. YOU PLAY THE
ROLE OF MIGHTY THOR WHOS MISSION
IS TO DELVE DEEP BENEATH THE
MYSTICAL PYRAMID, DOWN INTO THE
MIRKY DUNGEONS UNDER CAIRO WHERE
YOU MUST RETRIEVE TUTANKHAMINS
MAGIC STAFF. WHILST SEARCHING THE
CATACOMBS YOU WILL DO BATTLE WITH
GHOULS, VAMPIRES, SWORDSMEN,
DRAGONS, DIRE WOLVES, DARK
WARRIORS AND ASSASSINS (TO NAME A
FEW !). WARD THEM OFF WITH MAGIC
SWORDS, MAGIC SHIELDS, POTIONS
AND NUMEROUS OTHER SPELLS

Overview

Dungeons Beneath Cairo is another classic example of 1980s NZ development.
Who didn't want to play a bit of D & D, rack up some XP, and slay some monsters
back in 1984?

Give the game a chance. Despite its simple looks, it will give you a good hour
or two of game play to beat it even when you know what you are doing.

From memory, the best tactic I had as a kid was to avoid fighting just about
everything from level 8 or 10 downward because the tougher monsters would kick your ass :)

Note - you will need a joystick to play this game.

Remastering Technique 1: Using MESS tape emulation to record

The MESS emulator has excellent emulation of the Sega SC-3000 tape hardware, and it is surprisingly good at accurately
loading even quite badly damaged audio. Often original audio recordings can be loaded with no modification or just a 1 KHz High Pass
filter passed over the audio (use Wavepad or Audacity for cleaning up your source recordings).

MESS also lets you create a new tape image, type SAVE in Sega Basic, then start recording to get a perfect audio copy of the data.

"Well, how easy!", I hear you say. End of the lesson. Not quite :)

MESS Tape Play / Record options (Devices menu)

Many SC-3000 tape titles have multi-part loaders with custom load routines, or they have copy protection built in that uses hidden characters
in the tape file names which you can't easily reproduce with the SAVE command. But here is a trick that works for all tape software that
uses the full Sega Basic Load routine (ie. the full program name header followed by tape data). It just so happens that Bastow Manor uses
this technique, so it is easy to remaster this software with MESS. This technique won't work with something like Sir Roderick's Quest.

Use MESS to run Sega SC-3000 emulation with the BasicIIIB Rom
Note, I use MESS v0136 with the MessUI. This should work with current versions of MESS, but the MessUI is now a seperate project so you
have to find and download that seperately.
In your SC-3000 properties, tick Display->Run in a Window, Miscellaneous -> Use New UI

Unmount your saved tape (see MESSUI Devices menu). You now have an exact clean copy of the program you just loaded, including the exact file name with any hidden special characters.

This technique works for

ALL single-load tapes

Any multi-load tapes that use a full basic header / data block for subsequent loads. The easiest way to recognize these is if you hear the beep for
Loading start followed by beep beep for Loading End. You can then manually LOAD / SAVE the blocks.

You need more advanced techniques for remastering multi-part games that just load arbitrary blocks of data (like the Michael Boyd games).
I will cover some of those next month. But the above technique will let you do a lot of your tapes if you want to.

Dungeons Beneath Cairo has a two part loader. The first SC-3000 loader always uses the standard Basic IIIB tape format, but it has a hidden character
inside the first filename which is checked when loading the second half of the tape. So I used MESS and Technique #1 above to remaster the first half.

Andy Flexman had used a partial loader for for Part II, so I used Andrew Kerr's Awesome SegaWavWriter v2.1 to create the audio for that.
The second part of the loader expects a standard Basic IIIB data block without the filename header field on the front. So I just had to take the binary for
the second part of the audio, stick a dummy filename header on it, create the audio, then remove the header block and splice it onto the remastered Part I with an audio editor.

If you're interested, this is how the Dungeons Beneath Cairo program code / copy protection works.

Dungeons Beneath Cairo Part I obscured Basic program listing

Andy had used a fairly standard code hiding technique. The start of the program (part I) when listed only shows a description rather than any program code.

DBC Memory Dump of start of Basic program listing

Here is a memory dump. At $99E1, Andy had embedded $00 which stops the rest of the program from being listed. Type POKE &H99E1, &H25 then you can list the program.

DBC listing the hidden Basic program line 1220

Then line 1220 is responsible for copying the second part loader to high memory. But that is also hidden because it has three $15 characters embedded at the end
($15 is something like clear line - I can't remember exactly what, but it wipes the listed line from the screen). You can list it like so:

POKE &H9D17,&H20
POKE &H9D18,&H20
POKE &H9D19,&H20
LIST 1220

This is the machine code that line 1220 copies to $FFC0 which loads part II from tape. You can see how it looks for a specific hidden byte from the filename
in part I (that is still in memory because we skipped the header load when loading part II). But because we used that little basic script above part I will
have the correct file name, so everything is good :)