|
DevelopmentSega Master System / Mark III / Game Gear |
Home - Forums - Games - Scans - Maps - Cheats - Credits |
Get the software here:
It consists of two command line utilities; SMSREAD.EXE and SMSWRITE.EXE; plus a text file detailing the command line options for these. Extract the zip file into a directory on your hard drive.
Boot your PC and go into CMOS setup, usually achieved by pressing DELETE during the Power On Self Test. Find the options relating to the parallel port - ensure that the port address is set to 378 and that the protocol is set to Bidirectional, ECP or EPP. (SPP will not work.) These options should be set correctly by default, but it's best to check and make sure.
On older PCs (386 and 486), the above options may be set physically via jumpers on the parallel or I/O card. Older non-IBM clone cards may support the SPP (Standard Parallel Port) protocol only, and therefore cannot be used with the SMSReader. The only solution is to find another card, one which does support bidirectional operation.
SMSREAD is the utility provided for reading cartridges. You should see the SMSCMD.TXT file for full details of its features; however, here are some instructions to get you started.
Assuming the SMSReader is connected to the parallel port (it should be connected directly, by the way, not daisy-chained through a scanner or similar device) and the AC adaptor is plugged in, we can begin.
If you're running in a Windows environment, shut down all unnecessary programs (including screen savers) and bring up a DOS prompt.
cd
to the directory containing the SMSReader software,
and type, for example:
smsread -c128 alexkidd.sms
In this example, the software will read a 128k (One Megabit) cartridge
and save it to the file alexkidd.sms
. Other settings for
different cartridge sizes are self-explanatory; for example -c512
,
-c256
, -c800
, -c32
. The full range of acceptable
values is given in the SMSCMD.TXT file.
Long filenames containing spaces should be enclosed in double quotes, i.e.
smsread -c512 "Land Of Illusion Starring Mickey Mouse.sms"
If you wish to read a saved game file from battery backed RAM (as found
in Phantasy Star for example), use the -cs
switch, as follows:
smsread -cs phanstar.sav
Note that you should insert or remove a cartridge only when prompted to do so by the software.
If you run into problems, and removing and re-inserting the cartridge doesn't help, try increasing the delay using the
-s
switch. The default is 4; the delay will increase by a factor of five for
each increment in the input value. The maximum is 9. For example:
smsread -s6 -c128 alexkidd.sms
will increase the delay by a factor of twenty-five over the default value. Once you've found a reliable setting, use it each time you start SMSREAD or SMSWRITE.
If you don't specify a cartridge type using the -c
switch,
SMSREAD will start in Auto mode and will attempt to auto-detect the cartridge
size. It doesn't always work (sometimes producing an overdump), so you should always specify the cartridge size with -c
if you know it, but it
guesses the correct size about 90% of the time.
Auto Mode should only be used for Sega Master System and Game Gear cartridges.
If you have any SG1000 or SC3000 cartridges, the type should be specified
manually using the -c
switch.
By default, SMSREAD will verify the cartridge twice. Following the first read cycle, the cartridge is read twice more and compared with the original data. If any differences are found, the process will fail.
You can change the number of verify cycles using the -v
switch;
the maximum value is 5. -v0
will disable verification (not
recommended!) and -v5
will verify the cartridge five times.
All European and US Sega Master System games, and most Japanese Master System/Mark III games, have a ROM checksum stored in the header area. By default, SMSREAD will compare the read data against the stored checksum and will warn you if they do not match. Along with the Verify routine, this is an additional (and very important) safeguard against read errors.
Using the -k
switch allows you to specify the behaviour
of SMSREAD with respect to ROM checksums. -k0
will disable
the checksum routine, and should only be used when reading Game Gear or
SG/SC cartridges, as these do not have a stored checksum. -k1
(the default) will allow checksum calculation and will warn you if the
sum does not match, but still allows the ROM to be written to disk. -k2
,
on the other hand, will terminate the program with an error if the checksum
is wrong.
The final switch of any great value is the -p
switch,
which allows you to specify a parallel port address other than the 0x378
default. -p378
, -p278
and -p3BC
are the only values recognised.
This is not terribly useful, but the -m
switch lets
you specify the cartridge mapper type to be used: -m0
(no
mapper), -m1
(slot 2 only mapper) or -m2
(dual slot mapper). It's not very useful because SMSREAD by default chooses
the most appropriate type based on the cartridge size. Occasionally however, you may have to specify -m1
for cartridges of 256k or higher.
SMSWRITE is invoked in exactly the same way as SMSREAD, and shares many of its command line switches. Its function is to write saved game files back to battery backed RAM, or to write ROM files to cartridges which have been specially modified with battery backup and SRAM, as described in a later section. Examples:
smswrite -cs phanstar.sav
writes the saved game file phanstar.sav
to a cartridge
with battery backed RAM for saved games.
smswrite -c32 teddyboy.sms
writes the ROM file teddyboy.sms
to a modified cartridge
with 32KBytes of battery backed SRAM.
smswrite -c256 bombraid.sms
writes the ROM file bombraid.sms
to a modified cartridge
with 256KBytes of battery backed SRAM.
If you do not specify a cartridge size using the -c
switch, SMSWRITE will choose the most appropriate size based on the size
of the ROM file.
The -m
, -p
and -s
switches
have exactly the same functions in SMSWRITE as they do for SMSREAD. Here
are some other features and issues with SMSWRITE that are worth noting.
The current version of SMSWRITE (version 0.3 at the time of writing) does not handle zipped files. Unzip any ROMs you have before writing them to cartridge.
Some ROMs available on the Internet have 512 byte Super Magic Drive (SMD) headers attached to them. (This is not the same as the ROM header area which stores the checksum and other data.) SMSWRITE will automatically strip SMD headers before writing to cartridge.
Other ROMs have 64 byte footers attached to them. SMSWRITE simply ignores these - they will not be written.
SMSWRITE in its present form does not have any way of recognising or dealing with overdumped ROMs. I recommend you use SMSFIX.EXE or a similar utility to fix any overdumps you may have.
These features are set using the -k
switch.
Three things are required for a ROM to be playable on a real US or European Sega Master System/Master System II, all found within the header area at 0x7FF0 - 0x7FFF hex. Firstly, the text string TMR SEGA must be present. Secondly, the ROM checksum must be present and correct. Finally, the country code stored at 0x7FFF must be set to 4, which denotes a US or European SMS game.
Why would there be a problem with this? Firstly, many/most Japanese SMS and Mark III games have a country code of 3, and some are missing the TMR SEGA string and/or a checksum. (SG1000 and SC3000 ROMs do not have a header at all.) Any of these will cause the game to fail on a US/European SMS.
Also, many ROMs that are floating round the Internet are actually bad dumps. While these may be playable, the checksum will be wrong, and this too will prevent the game from starting.
The solution is to patch the ROM with the correct checksum, country
code data and TMR SEGA string. This is the default behaviour of SMSWRITE,
and is set using -k2
. It should make all Japanese SMS/Mark
III ROMs playable on a US or European SMS. SG1000 and SC3000 ROMs will
also work; be warned, though, that the header information may overwrite
game data.
Note that only the ROM data written to cartridge will be patched; the source file will remain intact. 'SMSWRITE does not alter your ROMs stored on disk in any way, shape or form.' I don't condone ROM vandalisation!
Using the -k1
setting will warn you if anything in the
header is likely to cause problems, but the ROM itself will not be patched.
Using the -k0
setting will cause SMSWRITE to simply
ignore the header information. You can use this setting if you're going
to be playing the ROMs on a Mega Drive/Genesis (with Power Base Converter), because that system isn't fussy about the headers.
By default, SMSWRITE will read back what it has written in order to
check that no write errors have occurred. You can disable this process
using -v0
.
Hopefully your SMSReader is fully working, and you're happily reading (and possibly writing) cartridges with it. If you're unlucky, though, you may be having one or two problems. The next section (and the FAQ) may help you deal with them...
< Using the SMSReader Software | SMSReader | Troubleshooting >