Re: Sega Multigame - input needed!

From: Clay Cowgill <clay_at_supra.com>
Date: Mon Oct 13 1997 - 18:52:28 EDT

>I wouldn't mind having the sound card selected directly as in option #1,
>but I would like a different selection for the Zektor sound board since
>if it's populated properly is not the same sound card as Eliminator. If
>this causes you to run out of bits, then maybe a third option:
[...]

No biggie there. We can do:

0001 = USB
0010 = Eliminator
0100 = Space Fury
1000 = Zektor

Unless anyone doesn't like this and has a good reason to change it...

>I would also like a unique code for each game (I thought I read you were
>doing that but now I can't find it), I don't have a StarTrek control
>panel, so I'd like to use this output for to select a control panel that
>will probably be remapped using a PIC.

Exactly. Actually, why don't I just bring out the Bank select lines to a
header? I'll just standardize that the position of the games in banks
won't ever change. Instant "ID" code. :-)

>Also (since I don't have a Star Trek control panel) actual ROM images
>would be preferred, possibly with David's patches to run SC free, though
>I'm such a nerd I might even program up a selectable GAL to emulate the
>different SC's and use this same output to run them (or would that
>scramble your background code?)

Ehhhhh... Asking for trouble there, but this is what I do:

Each Sega CPU board has a PROM that maps 2K chunks of memory (in this
really bizarre non-contiguous way I might add). The PROM enables and
disables the bus before it gets to the G-80 backplane. Since I need all
memory on the daughtercard, I replace that PROM with one of my own
mapping...

There is a "CPU" EPROM (2K) that is normally on the CPU card (self test
code and whatnot). On a stock G-80 system this is accessed directly and
not through the decoder PROM. I remove this EPROM and put the code on the
daughtercard.

Each game on the daughtercard is given a 64K bank to make decoding easier.
This is mapped as follows:

0000-BFFF (CPU EPROM + all game EPROMs = 48K)
C000-C7FF (reserved 2K)
C800-CFFF (SRAM on CPU board 2K)
D000-DFFF (downloadable SRAM on USB 4K)
E000-EFFF (VRAM on vector generator boards 4K)
F000-F7FF (Menu system 2K)
F800-FFFF (reserved 2K)

Each 64K game "image" has a copy of the menu system at F000-F7FF. All
games have their NMI vector changed to point to F000. The menu system runs
when NMI is asserted. Choosing a game from a menu writes the bank and
sound decode values to latch 1 and then jumps to 0000 (reset vector).
Since the menu system is the same across all banks you can bank-switch the
entire 64K memory space without clobbering yourself.

The games are patched to avoid security chip stuff; remap controls to a
"Star Trek" control panel (if applicable); and fix the NMI vectors to point
to the menu. The control re-mapping gets a little weird sometimes since I
need to be sure that the mux for port 0xFC (spinner/buttons) is pointing at
the buttons. (In Space Fury I changed the reset vector to some unused
memory around 0x4000 and set the 0xFC port selector up there and just JP
back to the main code afterwards. I think I figured out how to fix
Eliminator's control stuff too, but I haven't tried it yet...)

-Clay

Clayton N. Cowgill Engineering Manager
_______________________________________________________________________
/\ Diamond Multimedia Systems, Inc. clay@supra.com
\/ Communications Division http://www.supra.com/
Received on Mon Oct 13 14:53:06 1997

This archive was generated by hypermail 2.1.8 : Fri Aug 01 2003 - 00:32:38 EDT