MC10 Supercart

After doing the game carts for the MC-10, I wanted to do an even better one.
This cart board plugs into the expansion slot as well, and adds the following to the MC-10;

1) 512K of SRAM
2) 512K of FLASH memory
3) A YM2149 programmable sound generator
4) Two joystick/game controller ports

Eagle view
Eagle view of Supercart PCB

The additional memory is bankable in 16K chunks to any of the following four 16K segments of the MC6803’s 64K address space;

Segment 00 = $0000-$3FFF
Segment 01 = $4000-$7FFF
Segment 02 = $8000-$BFFF
Segment 03 = $C000-$FFFF

This is achieved through four 8-bit registers (one per segment) where the value for a specific 16K bank of RAM or FLASH is to be mapped to the 64K address space.  These, as well as a number of other features, are implemented in the CPLD which lies at the heart of this design (Xilinx XC9572XL).

20160823_192906
Assembled prototype, top view
20160823_192652
Assembled prototype, bottom view

The YM2149 is a classic sound chip, used in the Atari ST and other machines of the 8-bit era.  Based on the General Instruments AY-3-8910, this is a slightly improved version by Yamaha.

For the output, I decided to keep it simple on this one, mixing all three channels from the chip into a single-transistor amp circuit for identical mono output on both channels of the stereo line-out jack.

The YM chip is clocked by a 2MHz oscillator, and the SEL pin on the chip is controlled by the CPLD, allowing a programmer to toggle between 2MHz and 1MHz as the clock used to generate the sound frequencies if desired.

The game controller ports are connected to the YM2149’s two IO ports, making the state of the ports easy to read through it’s register system.  In addition, one select line per DB9 port is controlled by the CPLD, adding support for Sega gamepads.

These select lines may be toggled at will by the programmer, allowing control of timing for reading not only 3-button, but 6-button gamepads as well.

I’m writing firmware for the card that will include things like a music player, that can be used to play specially prepared versions of songs composed for other platforms, like the ST, Spectrum, CPC, etc…  These “register dump” files are fairly easy to obtain over the internet, and I’ve come up with a conversion processes to make them usable on the board, and loadable over an Emcee server (serial) connection.

Here is an early bit of test code playing this type of music file…

Supercart playing music on the MC10

Emcee server, by Darren Atkinson, is an excellent way to give your MC10 additional and virtually unlimited storage (over a serial connection).  I’m making heavy use of it with the firmware for this board, and it will allow for a library of songs that can be browsed and played, easy firmware updates, etc.

Right now (Oct 2016) I’m still working on the first revision firmware, but it’s coming along. You can see how the menu system will work for browsing files on Emcee server (using the keyboard or a gamepad as the input device) in a couple of these videos.

Supercart menus, in development

Music player, with level bars, in development

20160823_193756.jpg
Assembled board, with chips installed

 

 

 

 

Leave a Reply