1151 lines
43 KiB
Plaintext
1151 lines
43 KiB
Plaintext
|
|
Sega Programming FAQ February 5, 1994, Third Edition
|
|
|
|
=============================================================
|
|
|
|
This FAQ (Frequently Asked Questions) is about how to program
|
|
the Sega Genesis and Mega Drive Video Games Systems.
|
|
|
|
This file IS Public Domain, and can be used by all, HOWEVER
|
|
if you want to use this in a Data Base, or put it up on Gopher,
|
|
etc el then you MUST get my permission. You may copy and post
|
|
this file elsewhere without my permission.
|
|
|
|
If you want to add anything, especially game code or
|
|
information on the hardware please E-mail me. My E-mail
|
|
and real address are below and at the end of this FAQ.
|
|
|
|
Disclaimer : In no way I am indorsing any products, systems,
|
|
etc. What I am doing is providing the information that I
|
|
have found throughout internet and other network systems and
|
|
reporting them here, with out reverse engineering. All
|
|
information is reported as is- I will not accept any
|
|
responsibility if you fry your system trying something out.
|
|
|
|
All copyrights are owned by their respective owners, no
|
|
infringements intended.
|
|
|
|
Henry Rieke
|
|
<U6c16@Wvnvm.Wvnet.Edu>
|
|
|
|
US Mail:
|
|
|
|
Henry Rieke
|
|
Attn: Sega FAQ
|
|
161 Poplar Dr
|
|
Morgantown, Wv 26505-2340
|
|
|
|
=============================================================
|
|
|
|
0.1 Changes, Updates and Coming Soon
|
|
|
|
1) I've changed the part on the hardware description to be
|
|
smaller and easier to understand. If you still want the
|
|
whole file on the Sega Hardware internals then I suggest
|
|
that you get the file called Hardware.Txt by FTP from
|
|
Ftp.spd.louisville.edu under the directory pub\sega
|
|
|
|
2) This FAQ has a home now (yea!) at Ftp.spd.louisville.edu
|
|
(pub\sega) and it can also be found at Busop.cit.wayne.edu
|
|
(pub\megadev\incoming) and soon coming to WWW graphic database
|
|
in England (more on that later!).
|
|
|
|
3) I am going to be writing letters soon to all the companies
|
|
on the list (See Chapter 3.0, Companies) asking for more
|
|
information concerning their products, and details. I will also
|
|
be enquiring to Sega about CD programming and Saturn information.
|
|
|
|
=============================================================
|
|
|
|
1.0 Questions
|
|
|
|
Q) What are the differences between Mega Drive and Genesis?
|
|
What are the differences between Mega CD and Sega CD?
|
|
|
|
A) Physically, on the outside, the only difference is the
|
|
plastic case, the cartridge shape is slightly different on
|
|
the American version, smaller in size. On the inside there
|
|
are four jumpers labeled J1 though J4. J1 and J2 is the
|
|
language switch, between English and Japanese, J3 and J4
|
|
select the output between PAL and NTSC. You can build a
|
|
switch that can allow you to select between these options.
|
|
The diagram is included in this document (Chapter 5.0,
|
|
called "Language Switch"). The reason for the language
|
|
switch is to keep people from getting the game before it
|
|
is officially released elsewhere in the world. The newer
|
|
Sega Machines do not have the jumpers, and hence you can
|
|
not build a switch (as of yet).
|
|
|
|
The difference between Mega CD and Sega CD are internal.
|
|
In side the machine there is a ROM BIOS chip which is changed
|
|
for different markets. Sega has a version of the BIOS which
|
|
will play any system's games, but this is for Game developing.
|
|
There is a device called Pro-CDX which will allow you to by-pass
|
|
the lockout.
|
|
|
|
Q) Where to find files on the Sega Genesis/Mega Drive
|
|
hardware?
|
|
|
|
A) You can find the files on the Sega hardware from one of
|
|
the following FTP sites. A brief section describing memory
|
|
and cartridge ROMs are included in this FAQ. The author
|
|
Rick McTeague, is from Louisville and the most current copy
|
|
can be found there first.
|
|
|
|
FTP Ftp.spd.louisville.edu
|
|
Pub\sega\hardware.txt
|
|
|
|
FTP Busop.cit.wayne.edu
|
|
Pub\megadev\incoming\hardware.txt
|
|
There are also many other files here as well as a few
|
|
68000 ASM.
|
|
|
|
Q) What does it take to program the Genesis?
|
|
|
|
A) Development kits can be bought from many companies, a list
|
|
is included in the section called "Companies". These kits
|
|
require an IBM or Amiga computer to compile the code,
|
|
which is usually assembly, but can be in C as long as it
|
|
can be compiled into binary. SEGA's own kit is extremely
|
|
expensive and they are rumored to have slow response time
|
|
to answer questions. The price of the kits cost from $1000
|
|
to $4000.
|
|
|
|
Q) Is IBM or Amiga the only two platforms for game
|
|
development?
|
|
|
|
A) As far as I know, yes. The Apple MacIntosh might have
|
|
something, but I have not heard anything on this. There is
|
|
a system for the Apple IIgs, called Sluggo from Parsons
|
|
Engineering. As for the Mac, if you know, please pass it
|
|
on. It is rumored that Electronic Arts uses a priority
|
|
system on the MacIntosh for porting the games.
|
|
|
|
Q) How do I program the SEGA CD Rom?
|
|
|
|
A) I have no idea on programming this device, if you do have
|
|
some information please pass it along to me so I can
|
|
include it in the next update.
|
|
|
|
Q) What is Saturn, and how do I program that?
|
|
|
|
A) Saturn is Sega's next generation game machine, which
|
|
is based on Sega's S-1 arcade Machine's motherboard.
|
|
Rumor has it that it will allow programming in C as
|
|
well as Assembly.
|
|
There is good news and bad news as well.
|
|
Good news, Microsoft will be writing the OS.
|
|
Bad new, Microsoft will be writing the OS.
|
|
|
|
Q) What else is there on Internet?
|
|
|
|
A) Well there is the Sega Programming forum, which you can
|
|
join by subscribing to it with this command:
|
|
Send a message to Listserv@Busop.Cit.Wayne.Edu with the
|
|
first line reading SUBSCRIBE MEGADEV
|
|
To unsubscribe, do the same above, except the first line
|
|
should read UNSUBSCRIBE MEGADEV
|
|
|
|
There is also Rec.Games.Video.Programmer and
|
|
Rec.Games.Video.Sega where you can ask your questions.
|
|
|
|
There are also files on how to use the old SEGA 3D glasses
|
|
with your IBM compatible computer which can be found all
|
|
over the place (including the above FTP sites).
|
|
|
|
=============================================================
|
|
|
|
2.0 Hardware : This is the inner workings of the Sega system
|
|
ROM and Memory. For a better understanding Sega Hardware I
|
|
suggest reading Hardware.txt. An up-to-date version of this
|
|
file can be gotten by anonymous ftp from Ftp.spd.louisville.edu,
|
|
in the file "Pub/sega/Hardware.txt".
|
|
|
|
Genesis - this information comes from Rick McTeague.
|
|
|
|
Please send corrections or comments to:
|
|
|
|
Rick McTeague
|
|
Sysrick@starbase.spd.louisville.edu
|
|
|
|
Disclaimers:
|
|
|
|
The following information was extracted without the use of
|
|
official information from Sega Enterprises, Ltd. I therefore
|
|
offer no warranty on the correctness of this information.
|
|
Use it at your own risk.
|
|
|
|
This information was gathered as a personal project, and is
|
|
not the responsibility of my employer.
|
|
|
|
Different versions of the Genesis exist, so I won't suggest
|
|
that any of this information is right for anybody's Genesis
|
|
but my own.
|
|
|
|
Sega, Genesis, Sonic the Hedgehog, and Ecco the Dolphin are
|
|
trademarks of Sega Enterprises, Ltd. Other trademarks are the
|
|
property of their respective companies.
|
|
|
|
|
|
The Cartridge ROM
|
|
-----------------
|
|
|
|
As others on the net have observed, a standard Genesis
|
|
cartridge is nothing more than a small printed circuit board
|
|
with a ROM on it. There are some cartridges which have
|
|
battery-backed RAM for saving high scores, configurations,
|
|
etc., but I haven't seen these, so I don't know about them.
|
|
If you know of a particular cartridge that has RAM, let me
|
|
know so I can go rent one and take it apart (shhhh!) to see
|
|
what's in it.
|
|
|
|
A cartridge contains a word-wide (16 bit) ROM with up to 2
|
|
Meg words (4 Mbytes). This is based on the signal !C_CE, which
|
|
is used as the cartridge ROM's chip enable on the cartridges
|
|
I've looked at, and which is active at addresses $000000-$3fffff.
|
|
|
|
It may be possible to have more than 4 Mbyte cartridges; if
|
|
so, either they ignore the !C_CE line and do their own
|
|
address decoding, or there's a register somewhere in the
|
|
Genesis which changes the default address decoding scheme for
|
|
!_CE.
|
|
|
|
Note that cartridges are advertised as being "8 Meg"; as far
|
|
as I know, is 8 Meg _bits_, not bytes. 1 Mbyte is still
|
|
pretty impressive for a game machine.
|
|
|
|
SONIC uses a 40-pin 256Kx16 (512Kx8) ROM in word mode.
|
|
|
|
Ecco the Dolphin uses a 42-pin 512Kx16 (1024Kx8) ROM in word
|
|
mode. This one confused me because I'd never seen a 42-pin
|
|
DIP before, so I thought it was 40 pins. No wonder the
|
|
signals didn't look right...
|
|
|
|
Putting together a little bit of information from a Sharp
|
|
data sheet for a 512 Kword ROM with a bit of conjecture based
|
|
on the Sonic and Ecco cartridges, this is what I can come up
|
|
with for pinouts:
|
|
|
|
Sonic Ecco
|
|
(256 Kword) (512 Kword)
|
|
|
|
----u----
|
|
----u---- A18 1=| |=42 VCC?
|
|
A17 1=| |=40 A 8 A17 2=| |=41 A 8
|
|
A 7 2=| |=39 A 9 A 7 3=| |=40 A 9
|
|
A 6 3=| |=38 A10 A 6 4=| |=39 A10
|
|
A 5 4=| |=37 A11 A 5 5=| |=38 A11
|
|
A 4 5=| |=36 A12 A 4 6=| |=37 A12
|
|
A 3 6=| |=35 A13 A 3 7=| |=36 A13
|
|
A 2 7=| |=34 A14 A 2 8=| |=35 A14
|
|
A 1 8=| |=33 A15 A 1 9=| |=34 A15
|
|
A 0 9=| |=32 A16 A 0 10=| |=33 A16
|
|
!CE 10=| |=31 !BYTE !CE 11=| |=32 !BYTE
|
|
GND 11=| |=30 GND GND 12=| |=31 GND
|
|
!OE 12=| |=29 D15 !OE 13=| |=30 D15
|
|
D 0 13=| |=28 D 7 D 0 14=| |=29 D 7
|
|
D 8 14=| |=27 D14 D 8 15=| |=28 D14
|
|
D 1 15=| |=26 D 6 D 1 16=| |=27 D 6
|
|
D 9 16=| |=25 D13 D 9 17=| |=26 D13
|
|
D 2 17=| |=24 D 5 D 2 18=| |=25 D 5
|
|
D10 18=| |=23 D12 D10 19=| |=24 D12
|
|
D 3 19=| |=22 D 4 D 3 20=| |=23 D 4
|
|
D11 20=| |=21 VCC D11 21=| |=22 VCC
|
|
--------- ---------
|
|
|
|
Note that the address line numbering is different than that
|
|
of the 68000; line A0 of the ROM is really connected to the
|
|
68000's A1. This is because of the way the 68000 handles
|
|
even/odd byte addressing using !UDS and !LDS.
|
|
|
|
The !BYTE line is held high. This puts the ROM chip into
|
|
"word" mode, where data is accessed 16 bits at a time.
|
|
|
|
The convenient correspondence between ROM and 68000 data and
|
|
address lines (ROM D0 = 68K D0, ROM D1 = 68K D1, etc..., and
|
|
ROM A0 = 68K A1, ROM A1 = 68K A2, etc...) may not exist in
|
|
all cartridge designs. This is sometimes difficult to
|
|
visualize, but keep in mind that the ROM doesn't care whether
|
|
its D0 is really D0, or if its A3 is really A3, etc. As long
|
|
as each data line is used as the same D## line for both
|
|
programming and reading, and each address line is used as the
|
|
same A## for both programming and reading, the ROM will
|
|
function properly and the 68000 will see the right
|
|
instructions. Think about it...
|
|
|
|
Why bring this up? If you remove the ROM from the cartridge
|
|
PCB and try to read it with a EPROM programmer, there may be
|
|
situations where you won't see valid 68000 instructions, or
|
|
things won't be in the right place... Assuming your
|
|
programmer isn't messed up, this would be because the address
|
|
and data lines on the ROM aren't assigned the way you'd
|
|
expect.
|
|
|
|
Why would someone make a cartridge like this? To make your
|
|
life difficult, if you're wanting to hack their ROMs, or to
|
|
make their life easy, by making the cartridge PCB easier to
|
|
design.
|
|
|
|
The easiest way to avoid this potential problem is to build
|
|
an adapter from your programmer's EPROM socket to an edge
|
|
card connector into which you plug the cartridge. This is a
|
|
bit safer, too, so you don't have to remove the ROM from the
|
|
cartridge (or even open it up).
|
|
|
|
The Memory Map
|
|
--------------
|
|
|
|
$000000 $3fffff Cartridge ROM, when enabled by cartridge
|
|
control register and !CART_IN.
|
|
|
|
$000000 $0007ff Internal OS ROM, when enabled by cartridge
|
|
control register and !CART_IN.
|
|
|
|
$ff0000 $ffffff 64Kbytes scratchpad RAM
|
|
Partially decoded; RAM actually appears repeated between
|
|
$e00000 through $ffffff.
|
|
|
|
$a14101 cartridge control register
|
|
bit 0 = 0: cartridge disabled, OS ROM enabled
|
|
bit 0 = 1: cartridge enabled, OS ROM disabled
|
|
|
|
$a00000 $a????? Unknown. Audio? Controller I/O?
|
|
|
|
$c00000 $c????? Video display controller registers
|
|
|
|
The OS puts the top of its stack at $ffff00, and defines a
|
|
"user stack pointer" at $000000 (building down through the
|
|
top of RAM memory).
|
|
|
|
The Z80 processor is used for sound and has 8Kbytes of RAM.
|
|
I don't know anything about how the Z80 does its work, as I
|
|
haven't looked.
|
|
|
|
Acknowledgements
|
|
----------------
|
|
Thanks to:
|
|
|
|
dt93tn@pt.hk-r.se (Tore Nestenius) for info on older Genesis
|
|
systems.
|
|
|
|
lewism@rpi.edu (Michael Lewis) for info on the Sony CXA1145
|
|
and Samsung KM6264 chips.
|
|
|
|
crs@crs-sys.uucp (Chris Gregors) for posting a version of the
|
|
Genesis cartridge port pinouts.
|
|
|
|
merlyn@digibd.com (Brian Westley) for Game Genie information
|
|
and decoder program.
|
|
|
|
------------------------------------------------------------
|
|
|
|
2.2 Joystick - 3 button version - Could some please post a 6
|
|
button version?
|
|
|
|
By: nhowland@matt.ksu.ksu.edu (Neal Howland) for information
|
|
on the Joystick port.
|
|
|
|
First some background info: The chip inside the controller
|
|
is a 74HC157. This is a high-speed cmos quad 2-line to
|
|
1-line multiplexer. Basically how this works is there are two
|
|
inputs ( A and B ) for every output ( Y ). There are four
|
|
groups like this. There is one select signal for the whole
|
|
chip. When the select signal is low, the output ( Y ) is the
|
|
same as input A. When the select signal is high, the output
|
|
Y is the same as input B. The pinout for the chip is as
|
|
follows:
|
|
|
|
Pin 1 - SelectPin 16 - Vcc (+5V)
|
|
Pin 2 - 1APin 15 - G (? must be low)
|
|
Pin 3 - 1BPin 14 - 4A
|
|
Pin 4 - 1YPin 13 - 4B
|
|
Pin 5 - 2APin 12 - 4Y
|
|
Pin 6 - 2BPin 11 - 3A
|
|
Pin 7 - 2YPin 10 - 3B
|
|
Pin 8 - GndPin 9 - 3Y
|
|
|
|
|
|
All the controls are done with switches. Up is a switch,
|
|
Down is a switch, etc. Now, I will be referring to the output
|
|
of these switches later on. What I mean is that the output is
|
|
usually high, that is when the switch isn't pressed.
|
|
|
|
When the button is pushed, the output goes low. This is
|
|
accomplished by connecting the output to +5V through a 10k
|
|
resistor. The button is then attached between the output and
|
|
ground. It looks like this:
|
|
|
|
+5V -----/\/\/------+--------- Output
|
|
10k |
|
|
|
|
|
/ |
|
|
Ground -----/ -------+
|
|
button
|
|
(normally open)
|
|
|
|
For all of those who could actually decipher the above
|
|
schematic, congratulations!
|
|
|
|
|
|
I will now run down what lines from the plug are connected to
|
|
what. The line numbers are determined as follows, looking
|
|
straight at the plug on the front of the Genesis the numbers
|
|
are:
|
|
|
|
1 2 3 4 5
|
|
6 7 8 9
|
|
|
|
(For those of you who buy a joystick cable from radio shack
|
|
the pin #'s to wire colors are as follows: 1-white 2-blue
|
|
3-green 4-brown 5-yellow 6-orange 7-red 8-black 9-gray )
|
|
|
|
anyway, line connections:
|
|
|
|
Line 1 - Up output These are the only two direct
|
|
Line 2 - Down output connections
|
|
|
|
Line 3 - Pin 4 of the chip output 1Y
|
|
Line 4 - Pin 7 of the chip output 2Y
|
|
|
|
Line 5 - This line carries in +5V. It is connected to the
|
|
+5V bus line.
|
|
|
|
Line 6 - Pin 9 of the chip output 3Y
|
|
line 7 - Pin 1 of the chip this carries in a select signal
|
|
from the Genesis. This is a signal which varies
|
|
rapidly and controls which input goes through the
|
|
output.
|
|
|
|
Line 8 - Ground This is connected to the Ground bus line.
|
|
Line 9 - Pin 12 of the chip output 4Y
|
|
|
|
Now for the chips pin connections:
|
|
|
|
Pin 1 - Line 7 (select)
|
|
Pin 2 - Ground (1A) Don't ask me why they do this. Maybe
|
|
Pin 3 - Left (1B) future expansion
|
|
Pin 4 - Line 3 (1Y)
|
|
Pin 5 - Ground (2A) Again, possibly future expansion
|
|
Pin 6 - Right (2B)
|
|
Pin 7 - Line 4 (2Y)
|
|
Pin 8 - Ground (GND)
|
|
Pin 9 - Line 6 (3Y)
|
|
Pin 10 - Button B (3B)
|
|
Pin 11 - Button A (3A)
|
|
Pin 12 - Line 9 (4Y)
|
|
Pin 13 - Button C (4B)
|
|
Pin 14 - Start (4A)
|
|
Pin 15 - Ground (G) This must be connected to ground
|
|
Pin 16 - +5V (Vcc) Power source for the chip
|
|
|
|
Anyway that's all the info needed to build your own joystick.
|
|
|
|
Now as an added bonus, additional information!
|
|
|
|
A simple source for a joystick cable is the Radio Shack
|
|
joystick extension cable. It is around $5 and is 10 ft. long.
|
|
Just snip off the connector that won't plug into the Genesis,
|
|
strip the wires back, and use the color pinout list I gave
|
|
above.
|
|
|
|
I went to my local arcade game repair company today and
|
|
purchased the supplies I needed. They were much cheaper than
|
|
I expected. Things you would need to buy from them would be:
|
|
|
|
an 8-way joystick this ran me $15
|
|
3 buttons $2.50 apiece
|
|
|
|
I only bought three buttons because I am going to use a Radio
|
|
Shack push button switch for my start button. You can purchase
|
|
4 arcade game buttons if you wish.
|
|
|
|
Interesting ideas for extras on the joystick:
|
|
|
|
1. Autofire can be achieved with a simple 555 timer circuit.
|
|
|
|
For anyone wanting a challenge it should be possible to
|
|
build a digital autofire using a divide-by-n counter with the
|
|
select signal as clock input.
|
|
|
|
2. Slow down mode is just autofire for the start button.
|
|
|
|
=============================================================
|
|
|
|
3.0 Companies - these companies produce the hardware that is
|
|
required to write games for the Genesis. The original
|
|
document came from: Scott Golby <sgolby@st.nepean.uws.edu.au>
|
|
|
|
Hi Everyone,
|
|
|
|
Here is the current list of info I have about the Sega.
|
|
|
|
I have had about 10 replies so far asking to pass my
|
|
info on. If people want I will pass their EMail address on
|
|
to everyone else so we can work as a group. Drop me a line
|
|
if you want to be added to the 'group' list.
|
|
|
|
***** <----- Five astrict like this means info from
|
|
different people
|
|
|
|
Sega Genesis Developer Resources
|
|
|
|
Dan Chang April 18, 1993
|
|
|
|
Sega of America Inc
|
|
Consumer Products Division
|
|
125 Shoreway Road
|
|
San Carlos, California, 94070
|
|
Tel : (415) 802-4400
|
|
Fax : (415) 802-4458
|
|
|
|
Products : Detailed SEGA Genesis technical information. GEMS
|
|
SEGA music development package.
|
|
Solution : Music and Sound effects package for the Sega. SOA
|
|
can provide detailed information on programming the Genesis;
|
|
however they will want to know more about your company first.
|
|
|
|
|
|
Western Technologies, Inc.
|
|
12057 Jefferson Blvd
|
|
Culver City, California, 90230
|
|
Tel : (310) 821-7880
|
|
Fax : (310) 306-1739
|
|
|
|
Products : SegaDev Card. PC-Hosted Genesis development
|
|
hardware, which includes SEGADEV.EXE, a Windows-hosted
|
|
source-level debugger, and SEGALOAD.EXE, a PC_hosted 68000
|
|
object code downloader.
|
|
Solutions : SEGA Genesis Hardware, WT recommends Sierra
|
|
Systems 68000 Assembler.
|
|
|
|
|
|
Sierra Systems
|
|
6728 Evergreen Ave
|
|
Oakland California 94611
|
|
Tel : (510) 339-8200 or (800) 776 4888
|
|
Fax : (510) 339 3844
|
|
|
|
Products : PC-hosted Sierra C cross-compiler, which included
|
|
68000 C compiler, assembler, linker.
|
|
|
|
Motorola, Literature Dist
|
|
|
|
This entry basically has a list of 68000 reference and
|
|
programming books.
|
|
|
|
|
|
Echidna
|
|
1101 W Stevens Ave, Suite 232
|
|
Santa Ana California 92707
|
|
Tel : (714) 545-2662
|
|
Fax : (714) 545-3705
|
|
|
|
Products : tUME - the Universal Map Editor. PC-Hosted tool to
|
|
edit tile-maps.
|
|
Solutions : Saves time in designing game maps and placing
|
|
level information. Downloads maps to Western Techs SegaDev
|
|
card.
|
|
|
|
|
|
Cross Products Limited
|
|
23 The Calls
|
|
Leeds LS2 7EH, England
|
|
Tel 0532 429814
|
|
Fax 0532 426163 (dial 011 44 532 426163 from USA)
|
|
|
|
Product : SNASM68K : PC-Hosted SEGA Genesis development
|
|
system, which includes a 68000 assembler, linker, debugger.
|
|
|
|
|
|
Parsons Engineering
|
|
imhurst Ave
|
|
Covina California 91724
|
|
Tel (818) 966 5538
|
|
|
|
Products : PC/Apple IIgs hosted Sluggo Genesis development
|
|
hardware.
|
|
|
|
|
|
Advantech
|
|
1333 E.9400 South, Suite 160
|
|
Sandy Utah, 84092
|
|
Tel : (801) 572-5410
|
|
Fax : (810) 572-5674
|
|
|
|
Products : blank SEGA Genesis cartridge PC boards, blank
|
|
EPROMS.
|
|
|
|
*****
|
|
Genesis Development System Frequently Asked Questions
|
|
|
|
Q) What is the Genesis Development System?
|
|
|
|
A) The GDS is a cross development system that lets you develop
|
|
games and other software to run on the Sega Genesis. The
|
|
system consists of a 4 inch by 8 inch printed circuit board
|
|
that plugs in the cartridge slot of the Genesis, and has a
|
|
cable going to the parallel port of the host computer. A
|
|
complete software set is included consisting of an
|
|
integrated editor/assembler, a stand alone assembler, a
|
|
symbolic debugger, a music and sound effect editor, a
|
|
utility to break standard 16 color IFF images into tiles to
|
|
be downloaded to the Sega, and other files.
|
|
|
|
Q) Does it come with any source files?
|
|
|
|
A) You get source to the music editor, source to a Z80 program
|
|
to run on the genesis to interpret the music files, source
|
|
to a demo program that plays music and has sprites bouncing
|
|
around behind the Sega logo, source to the download
|
|
utilities. Complete source is provided on communicating
|
|
between the host machine and the Genesis.
|
|
|
|
Q) How much memory does it have on the board?
|
|
|
|
A) It comes with 1.25 megabytes of memory. 1 meg is intended
|
|
for program development and .25 megs is intended for
|
|
variable storage for the debugger and scratch memory.
|
|
|
|
Q) Can you program CD games with it?
|
|
|
|
A) No, unless you were to write an emulator for the CD rom
|
|
that could send data over the normal cable from the host
|
|
machine.
|
|
|
|
Q) Does it include technical specifications for the Genesis?
|
|
|
|
A) Yes, it comes with descriptions of the memory map, graphics
|
|
registers, the Z80's functions, reading the joysticks,
|
|
sprites, scrolling, tiles, the DMA copier, the audio chips-
|
|
in short everything required to program the genesis. Also
|
|
provided is a working demo with source.
|
|
|
|
Q) Is this proprietary information stolen from Sega?
|
|
|
|
A) No, the information on the Genesis came from reverse
|
|
engineering it, completely independent of Sega. There are
|
|
no copyright violations in the purchase or sale of this
|
|
development system, nor is there anything illegal about any
|
|
use of it.
|
|
|
|
Q) How does it work?
|
|
|
|
A) The board has ROMs on it which contain the monitor and
|
|
debugger that runs on the Genesis. When the Genesis is
|
|
reset, the ROMs take over and wait for commands to come
|
|
from the host machine-commands like download bytes, send
|
|
bytes back, set up registers, define a symbol, or enter the
|
|
interactive debugger. When in the interactive debugger the
|
|
host machine acts as a terminal, and characters are sent
|
|
over the cable. Full 68000 debugging is possible, including
|
|
disassembly, single step, register view and modify,
|
|
breakpoints, expression evaluation, memory view, modify,
|
|
search and copy, symbol definition, memory compare. There
|
|
is also a z80 disassembler built in.
|
|
|
|
Q) How does the editor work?
|
|
|
|
A) From within the Amiga version of the editor through single
|
|
keys you can assemble your file, move the cursor to errors,
|
|
enter the debugger on the Genesis (editor becomes
|
|
terminal), download code and data, download code only (for
|
|
faster development). The IBM PC version of the editor
|
|
provides none of these features. Instead they are invoked
|
|
from commands at the CLI.
|
|
|
|
Q) What about the assembler?
|
|
|
|
A) The assembler is a full macro 68000 assembler, and includes
|
|
the full 8080 and parts of the Z80 instruction set. It
|
|
generates symbol table information that can be downloaded
|
|
to the Genesis to allow for symbolic debugging. It is quite
|
|
fast-on a standard Amiga about 40,000 lines/minute, on a
|
|
68030 at 33 Mhz it runs at about 220,000 lines/minute. On a
|
|
66 Mhz DX2 the assembler is about 550,000 lines/minute.
|
|
|
|
Q) Can I program in C?
|
|
|
|
A) If you have a C compiler that can generate a binary, you
|
|
can download it to the Genesis. This system is geared
|
|
towards assembly language development, where it really
|
|
shines. In the future if there is sufficient demand a C
|
|
compiler will be included.
|
|
|
|
Q) How do I make artwork? Is there a sprite editor?
|
|
|
|
A) Originally I planned on including a simple graphic editor,
|
|
but I found that no one used it-instead they used Dpaint.
|
|
The best way is to use dpaint to create graphics in lo-res
|
|
16 color mode, then to use the utility I provide to convert
|
|
them to raw data to be sent to the Sega. Animation can be
|
|
done within Dpaint. Unfortunately there is no editor for
|
|
manipulating giant figures made out of sprites, but in
|
|
principle it would be possible to do. So probably you will
|
|
use dpaint or some other painting program to create the
|
|
artwork.
|
|
|
|
A) Can you backup existing cartridges like the game backup
|
|
systems?
|
|
|
|
Q) No-this system is intended for game development. However if
|
|
you were able to obtain ROM images, they can be downloaded
|
|
just like original code, and they would run on the system,
|
|
keeping in mind the 1.25 megabyte memory limit to the
|
|
board. When running a ROM under the system, you can tinker
|
|
with memory, modify gameplay, add lives, etc. You can do
|
|
all the normal debugging functions, like single step,
|
|
breakpoints, etc, to see how the program is working. Making
|
|
a cartridge reader requires some hardware expertise, but is
|
|
fairly straightforward.
|
|
|
|
Q) How fast are downloads?
|
|
|
|
A) Data is transferred a little over 30K/second unless the host
|
|
machine is old or slow. That rate is valid for an
|
|
accelerated Amiga or a 486, and probably a 386 as well.
|
|
There is also a 120K/second transfer capability but there
|
|
is no error checking in this mode. Future versions of the
|
|
board will have standard rates of 110K/second on a fast PC
|
|
and about 100K/second on a fast Amiga.
|
|
|
|
Q) What host machines is this available on?
|
|
|
|
A) Currently the complete system is available on the Amiga and
|
|
on the IBM PC.
|
|
|
|
Q) Why should I buy your system and not go through Sega?
|
|
|
|
A) If you can get Sega to listen to you and you can afford to
|
|
pay $$$$$ for their system, then there isn't much advantage
|
|
to buying from me. It's been my experience that Sega is
|
|
very hard to deal with, and unless you're a big company
|
|
they will ignore you. If you buy this system, you don't
|
|
need to sign away your future, you don't need to sign any
|
|
non-disclosures. You immediately have the ability to create
|
|
software for the Genesis. If you create a game, you can
|
|
then sell it outright or attempt to publish it yourself-
|
|
never having to pay Sega a dime, as they provided you with
|
|
nothing and you have no agreement with them. This system
|
|
gives you options. Moreover it may be a better system to
|
|
develop on that the one Sega provides, but I don't know for
|
|
sure as I've never seen theirs-I've just heard rumors.
|
|
|
|
Q) How long has this system been available?
|
|
|
|
A) It first became available in April 1991.
|
|
|
|
Q) How many have already been sold?
|
|
|
|
A) I've sold around 20 units so far, although I've done no
|
|
advertising other than leave a brochure at the 1991 Game
|
|
Developer's conference. I haven't really been serious about
|
|
marketing it in the last two years. Recently I've posted
|
|
some articles on internet and this has resulted in sales of
|
|
5 units to three separate groups.
|
|
|
|
Q) How much does it cost?
|
|
|
|
A) The cost is $1000.
|
|
|
|
Q) Will it be ported to other platforms?
|
|
|
|
A) There are no plans to port the software to any other
|
|
platforms.
|
|
|
|
Q) What about technical support? How about software upgrades?
|
|
|
|
A) You can send me email and I will answer questions and help
|
|
solve your problems. If I'm home you can call me.
|
|
Concerning software support: I want you to be happy with
|
|
this. If you want some program written, and it seems like a
|
|
good idea, chances are I'll do it for free and include it
|
|
with the system. Currently if the software seems sparse
|
|
it's because no one has complained so I guess I include
|
|
enough. There's no point in writing software if it isn't
|
|
going to be used. In any case software upgrades are free
|
|
unless it's some major upgrade like including a C compiler-
|
|
I don't believe in selling something for hundreds of
|
|
dollars then nickel and diming you on upgrades. EPROM
|
|
upgrades are free if you send back your originals.
|
|
|
|
Q) Do we need to pay you any royalty on games developed with
|
|
the system?
|
|
|
|
A) No. Once you bought the system you can do anything you want
|
|
with it-except copy it and sell it yourself...
|
|
|
|
Q) Are there future systems in the works? Possibly with more
|
|
memory?
|
|
|
|
A) Eventually a new version of the circuit board will be
|
|
finished. This will offer 18 megabits of RAM standard for
|
|
the same price as the current board. Some time after that
|
|
there will likely be a special 32 meg option. The 32
|
|
meg version will cost about $1150-$1200.
|
|
|
|
Q) If I buy one of the boards and a newer version of the
|
|
hardware becomes available later, can I upgrade?
|
|
|
|
A) Yes. To upgrade to a future version of the hardware you
|
|
would send back the old board along with enough money to
|
|
pay for manufacture of the new board. To determine the cost
|
|
of manufacture, figure a base price of $30 to cover the
|
|
printed circuit board and sockets and connectors, plus $15
|
|
for the inexpensive logic chips, plus the following amounts
|
|
for memory:
|
|
8 megabits -> 16 megabits = $100 for memory upgrade
|
|
8 megabits -> 32 megabits = $200 for memory upgrade
|
|
16 megabits-> 32 megabits = $100 for memory upgrade (you
|
|
re-use old chips)
|
|
Note that at this time the 16 and 32 megabit versions are
|
|
not completed. The current version of the board uses
|
|
obsolete RAM chips that cannot be used on the future
|
|
versions. The new 16 and 32 megabit versions will use
|
|
smaller, more dense, cheaper RAM chips which can be moved
|
|
from one board to another.
|
|
|
|
Q) How can I contact you?
|
|
|
|
A) Send me mail, email or call.
|
|
818-584-0357
|
|
INTERNET: dash@netcom.com
|
|
David Ashley
|
|
395 Sierra Madre Villa
|
|
Pasadena, CA 91107
|
|
USA
|
|
|
|
*****
|
|
|
|
The person you want to talk to at Sega of America is Stuart
|
|
Kosoy, at (415)802-4407.
|
|
|
|
*****
|
|
|
|
=============================================================
|
|
|
|
4.0 Code samples. The following code was graciously given to
|
|
me by David Ashley, inventor of the GDS. We all owe him a big
|
|
Thanks!
|
|
|
|
Here's sample code for reading the joystick:
|
|
------------
|
|
;jsinit must be called to set up the joystick, otherwise
|
|
;reading back will have errors. This need only be called
|
|
;once.
|
|
jsinit: moveq #$40,d0
|
|
move.b d0,$a10009
|
|
move.b d0,$a1000b
|
|
move.b d0,$a1000d
|
|
rts
|
|
;The following two routines can be used for reading from the
|
|
;joystick ports.
|
|
;porta and portb return a byte in d0. 0 bits mean button is
|
|
;not down, 1 mean button is down.
|
|
;The order is:
|
|
;76543210
|
|
;SACBRLDU
|
|
;meaning Start, A, C, B, Right, Left, Down, Up
|
|
porta: move.b #$40,$a10003
|
|
nop
|
|
nop
|
|
move.b $a10003,d1
|
|
andi.b #$3f,d1
|
|
move.b #$00,$a10003
|
|
nop
|
|
nop
|
|
move.b $a10003,d0
|
|
andi.b #$30,d0
|
|
lsl.b #2,d0
|
|
or.b d1,d0
|
|
not.b d0
|
|
rts
|
|
portb: move.b #$40,$a10005
|
|
nop
|
|
nop
|
|
move.b $a10005,d1
|
|
andi.b #$3f,d1
|
|
move.b #$00,$a10005
|
|
nop
|
|
nop
|
|
move.b $a10005,d0
|
|
andi.b #$30,d0
|
|
lsl.b #2,d0
|
|
or.b d1,d0
|
|
not.b d0
|
|
rts
|
|
-----------------------
|
|
Graphics code is another matter. Since I sell a development
|
|
system, and one of the features is I provide technical info
|
|
on the Genesis hardware, it would sort of be a conflict of
|
|
interest for me to give things away :^).
|
|
-------------------
|
|
|
|
=============================================================
|
|
|
|
5.0 Language Switch, from Rec.Games.Video FAQ
|
|
|
|
How to make a language switch (Genesis/MD).
|
|
|
|
On a Genesis/MD, there are jumpers labelled JP1, JP2, JP4,
|
|
and JP3. The Genesis has a capacitor on JP1 and a trace on
|
|
JP2; the Mega Drive has a capacitor on JP2 and a trace on
|
|
JP1. The bottom ends of JP1 and JP2 are connected together.
|
|
So if you cut the trace and the top end of the capacitor, and
|
|
install a DPDT switch between them which reconnects them
|
|
either unchanged or swapped left to right, you have a
|
|
language switch. You'll need some wire, a soldering iron,
|
|
solder, and a DPDT switch.
|
|
|
|
Some machines have an open circuit instead of the capacitor.
|
|
Also, I've been told that even if there is a capacitor, you
|
|
can throw it out and leave an open circuit. Either way, the
|
|
switch is a lot simpler, requiring a SPDT switch and less
|
|
wire and solder.
|
|
|
|
Several people have told me that you could just cut both JP1
|
|
and JP2 and put a SPST switch on JP1. This is even simpler,
|
|
but I'm not sure it really works, as opposed to putting your
|
|
machine in an intermediate state that only sort-of works.
|
|
|
|
The redesigned Genesis 2 machines don't appear to have either
|
|
the capacitor or circuit. Nobody yet knows how to make the
|
|
language switch for one, though there are language switch
|
|
cartridges you can buy to act as one.
|
|
|
|
IF YOUR MACHINE HAS NO CAPACITOR (or if you want to cross
|
|
your fingers and throw away your capacitor) and is not a
|
|
Genesis 2:
|
|
|
|
Cut JP2. The trace might be covered with paint and hard to
|
|
see. (If you started with a Mega Drive, JP2 is open and you
|
|
have to cut JP1 instead.) If you aren't sure which end I mean
|
|
by "bottom", just check the back of the board to see which
|
|
end is connected together.
|
|
|
|
Original state of machine: After cutting:
|
|
|
|
JP2 top JP1 top JP2 top JP1 top
|
|
| | | |
|
|
| | | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| | | |
|
|
\ / \ /
|
|
\_______/ \_______/
|
|
bottom of both bottom of both
|
|
|
|
Add a SPDT switch which can be in one of two positions:
|
|
._ _ _ _ _ _ _ _ _ _ _ _
|
|
. .
|
|
. . _ _ _ _ _ _ _ _ _ _
|
|
. . . .
|
|
JP2 top JP1 top . .
|
|
| | . .
|
|
| | _________
|
|
| o o |
|
|
| \ |
|
|
| \ |
|
|
\___o___/
|
|
| | .
|
|
\ / .
|
|
\_______/ - - - - - - - - - - - -
|
|
bottom of both
|
|
|
|
._ _ _ _ _ _ _ _ _ _ _ _
|
|
. .
|
|
. . _ _ _ _ _ _ _ _ _ _
|
|
. . . .
|
|
JP2 top JP1 top . .
|
|
| | . .
|
|
| | _________
|
|
| o o |
|
|
| / |
|
|
| / |
|
|
\___o___/
|
|
| | .
|
|
\ / .
|
|
\_______/ - - - - - - - - - - - -
|
|
bottom of both
|
|
-------------------------------------------------------------
|
|
|
|
IF YOUR MACHINE DOES HAVE THE CAPACITOR:
|
|
|
|
Cut both sides. (Note: if you started with a Japanese Mega
|
|
Drive the capacitor will be on the side labelled X instead)
|
|
|
|
Original state of machine: After cutting:
|
|
|
|
JP2 top JP1 top JP2 top JP1 top
|
|
| | | |
|
|
| | | |
|
|
| |
|
|
| |
|
|
| | |
|
|
X | ### X | ###
|
|
| ### | ###
|
|
| ### | ###
|
|
\ / \ /
|
|
\_______/ \_______/
|
|
bottom of both
|
|
|
|
add switch which can be in one of two positions:
|
|
|
|
JP2 top JP1 top
|
|
(Connect 2 to 2
|
|
| |
|
|
and 1 to 1)
|
|
| |
|
|
2 1 2 1 1 2
|
|
______________
|
|
_ _ _ _ _ _ _ _ _ _ | o o o o |
|
|
| ` | \ \ |
|
|
X | ###` ` | \ \ |
|
|
| ### ` ` \____o__o____/
|
|
| ### ` ` ' '
|
|
\ / ` `- - - - -' '
|
|
\_______/ ` _ _ _ _ _ _ _ _ '
|
|
bottom of both
|
|
|
|
JP2 top JP1 top
|
|
(Connect 2 to 2
|
|
| |
|
|
and 1 to 1)
|
|
| |
|
|
2 1 2 1 1 2
|
|
______________
|
|
_ _ _ _ _ _ _ _ _ _ | o o o o |
|
|
| ` | / / |
|
|
X | ###` ` | / / |
|
|
| ### ` ` \____o__o____/
|
|
| ### ` ` ' '
|
|
\ / ` `- - - - -' '
|
|
\_______/ ` _ _ _ _ _ _ _ _ '
|
|
bottom of both
|
|
|
|
|
|
50/60 hertz switch.
|
|
|
|
You can build a 50/60 hertz switch on a Genesis/Mega Drive
|
|
like a language switch, but using jumpers JP3 and JP4. The
|
|
standard setting is 50 in PAL areas such as Europe, and 60 in
|
|
NTSC areas like the US and Japan. In the 60 hertz mode, the
|
|
game is faster and the screen taller; however, not all TVs
|
|
and monitors in Europe can display this mode.
|
|
|
|
|
|
Some American/Japanese games are protected to keep Europeans
|
|
from playing them; this protection checks the 50/60 hertz
|
|
setting. You can usually get around it by installing the
|
|
switch and switching when starting the game, then switching
|
|
back afterwards.
|
|
|
|
Many European games are simple ports of American or Japanese
|
|
games and are not redesigned for 50 hertz, so work faster and
|
|
with "better" screen proportions if played at 60 hertz.
|
|
|
|
|
|
Genesis/Mega Drive dual version (language switch) list:
|
|
|
|
Bonanza Brothers: Game plays in Japanese. (Maybe. There
|
|
seems to be more than one version floating around.)
|
|
Columns: Game plays in Japanese.
|
|
*Cyberball: Japanese version has a modem option.
|
|
Dragon's Fury: Works only with language set to English.
|
|
The original, Devil's Crush MD, works either way.
|
|
Dynamite Duke: Harder on the Mega Drive.
|
|
Elemental Master: Harder on the Mega Drive.
|
|
Fatal Labyrinth: Game plays in Japanese.
|
|
Fire Shark: Different title screen with Kanji.
|
|
Flicky: Characters have Japanese names and instructions
|
|
are in Japanese.
|
|
Forgotten Worlds: Game plays in Japanese.
|
|
Gaiares: only mentions the Japanese licensee on the title
|
|
screen, and has Japanese text; you can also select
|
|
Japanese text from the option screen.
|
|
Ghostbusters: Game plays in Japanese.
|
|
Ghouls and Ghosts: Different title screen with Kanji. To
|
|
see it on a Genesis, select the last music and sound (26
|
|
and 56) from the options screen, then press lower left;
|
|
A, B, or C; and Start all at the same time. (I never
|
|
tried this, but Gamepro magazine claimed it works.) The
|
|
game shows some other Japanese text, and when you die
|
|
during a boss you start out earlier.
|
|
Insector X: Title screen refers to company as Hot-B, not
|
|
Sage's Creation. The MD version shoots more slowly. The
|
|
ending text is still English.
|
|
*Marvel Land: The Japanese version says "for Mega Drive"
|
|
or "for Genesis" but the language stays Japanese. (What
|
|
does an English version do?)
|
|
Monaco GP: Game plays in Japanese (also an option on the
|
|
option screen).
|
|
Mystic Defender: This game is actually the anime-based
|
|
Kujaku-Ou (Peacock King) 2 game. In Japanese mode, the
|
|
opening text is replaced by a graphics screen (never
|
|
seen in the US version) with Japanese. The levels have
|
|
names, the main character wears a white robe, the
|
|
lightning magic effect is different, and the character
|
|
is named Kujaku in the ending (which is still English).
|
|
Outrun: The attract mode lacks sound, the startup screen
|
|
says "push" (not "press") start button, and "(C) Sega
|
|
1986, 1991" is printed in reverse order. The default
|
|
options are KM/H and a different button selection (but
|
|
can still be changed on the option screen).
|
|
Quackshot: Game plays in Japanese.
|
|
Raiden Trad: The "licensed to Sega" line is absent on
|
|
both title screens, and the second title screen includes
|
|
only the Japanese part instead of the non-Japanese part
|
|
of the first one.
|
|
Revenge of Shinobi: Title changes to Super Shinobi;
|
|
credits show at the end.
|
|
Rolling Thunder II: The Japanese version only works on a
|
|
Japanese setting. The US version works either way (and
|
|
isn't bilingual).
|
|
Sonic the Hedgehog II: Tails is renamed to "Miles".
|
|
Streets of Rage: Title screen changes to Bare Knuckle,
|
|
and all text is in Japanese, including the introduction.
|
|
The clock resets when you encounter the bosses.
|
|
Streets of Rage II: Turns to Bare Knuckle II, and renames
|
|
Skate to Sammy --_if_ you change the setting sometime
|
|
after turning the machine on (to skip the lockout).
|
|
Thunder Force II: Title screen has "MD" on it, and
|
|
company name is "Tecnosoft".
|
|
Thunder Force III: company's name is spelled "Tecnosoft".
|
|
*Thunder Storm FX (CD): Turns to Cobra Command in US mode.
|
|
Truxton: Japanese title is Tatsujin.
|
|
Twin Hawk: Different title screen with Kanji.
|
|
*Wrestle War: The wrestler is blond on a Genesis and
|
|
black-haired on a MD.
|
|
|
|
* Information from testing a Japanese game
|
|
|
|
=============================================================
|
|
|
|
I hope to get more information and expand this document.
|
|
Please E-Mail me for a copy or to add information to this
|
|
list. Again My E-Mail address is
|
|
|
|
U6c16@Wvnvm.Wvnet.Edu
|
|
|
|
SnailMail:
|
|
|
|
Henry Rieke
|
|
Attn: Sega FAQ
|
|
161 Poplar Dr
|
|
Morgantown, Wv 26505-2340
|
|
|
|
A Very Special Thanks to:
|
|
|
|
David Ashley <dash@netcom.com>
|
|
|
|
Special Thanks to :
|
|
|
|
Scott Golby <sgolby@st.nepean.uws.edu.au>
|
|
|
|
Rick McTeague <sysrick@starbase.spd.louisville.edu>
|
|
|
|
Neal Howland <nhowland@matt.ksu.ksu.edu>
|
|
|
|
|