From: davsmith@nic.cerf.net (David Smith)
Newsgroups: rec.games.video
Subject: Re: SNES development systems
Date: 5 Oct 92 21:56:59 GMT
Organization: CERFnet

In article <kennehra.717879187@craft.camp.clarkson.edu> kennehra@craft.camp.clarkson.edu (Rich"TheMan"Kennehan) writes:
>SOME THINGS THAT YOU ABSOLUTELY NEED TO KNOW IN ORDER TO PROGRAM THE
>SNES:
>
>1) A very good working knowledge of both 8086 assembler (IBM) and
>   Apple IIGS assembler 
Why 8086?  I thought the SNES just had a 65816 in it.  Are you thinking
of what you're going to need to code in the PC for support?

>2) Courses in electronics, circuit design, VSLI.  you need to know how
>   to solder, use multimeters, oscilloscopes, logic analyzers.
>   (oscilloscopes cost about $500.00)

Oscilliscopes are not very useful for digital circuit analysis.  Go rent
a logic analyzer from ElectroRents


>3) A "game bit" to unscrew your nintendo games.  You can buy these
>   special screwdrivers mail order for about $10 a piece.  I forget the
>   place.

Use a hammer :-)

>4) You'll need to know how to design expansion cards for your ibm.
>   Think about it, you'll probably need a doctorate in computer 
>   engineering to do that.
Or a few months as a technician at some place that manufactures them. :-)
Woz never got a doctorate in computer engineering!

You're making it much too complicated.  All you need to do is download software
into a SNES for the hardware end.  I'm sure they use ROMs which are standard
so figuring out the interface from the SNES to the cartridge should be
straightforward.  The simplest device to build, then, would be a ROM emulator
that has RAMs on it and hooks into your PC via the parallel port.  It'll
be a little slow to download, but what the hey.  You can build a little
debugging tool inside the SNES in software - I would go dig out those
old Apple II+ manuals and take a look at the monitor ROM there.  Sweet,
simple and actually somewhat useful.

The real trick is not your hardware support but your software support.
You gotta know register locations, etc.  You could try to reverse
engineer it with a logic analyzer but that sounds like much pain.  I'm
sure that the little buses inside the SNES are quite busy while it's
running so trying to run through a bus trace and get anything useful
out will be very hard.  You'll also need a compiler that outputs 65816
unless you feel like generating several meg of assembly code.  Blech.
Sounds like an Apple IIGS would be an ideal development system.  Might
be more fun to take apart an SNES and make it into a IIGS card with its
own video output.  Then you can do your work on the IIGS and your games
will run on the IGS's 65816 and use the video RAM and accelerators on
your SNES card.

>Sooo there you are.  I know the task seems nearly impossible, but if
>you're really really serious about programming SNES games, I suggest
>you change your major to computer engineering (if you're not one
>already)  I'm a computer science major myself.  I'd go computer 
>engineering, but I'd have to spend 2 more years in college. (I'm a
>senior now)  Thanks for reading.

If you're a senior now and you want to be a _GOOD_ software engineer,
I'd sugest you learn more about hardware engineering.  You don't have
to know how to build a computer from scratch but knowing what's really
going on down there will allow you to make better use of the hardware.
And, if you're working for a systems manufacturer, you'll need to know
lots about hardware so you can fix it when the hardware boys are stumped :-)

-- 
David L. Smith
smithd@discos.com or davsmith@nic.cerf.net
Newsgroups: rec.games.video