Reprogrammable Genesis Cartridge

Why

I bought a genesis game console with a few games. I got tired of playing Sonic and MicroMachines so I decided to build a reprogrammable cartridge. Many things can be done with such a cartridge:

- Development:
You can develop your own applications or games and try them on real hardware instead of using an emulator. If you'd like to get into genesis development, I think the genesis technical documentation available at zophar is a good starting point.

- Music:
You can listen to genesis music (.gym) on a real genesis. There is a rom named Flavio's GYM Player which needs to have a .GYM file appended to it. Once loaded, the rom plays the gym file.
Here it is:
Flavio's GYM Player V1.0 (PD).zip

You can download .gym music from zophar's genesis music archive.

- Using demos and public domain roms:
Demos are usually animations and presentations with special effects and music made by one person or a group of person to demonstrate their abilities.

There are a few genesis demos available on these pages:
http://www.gameasylum.com/demoscene.html
http://www.zophar.net/roms/genesis.html
And I host a few files here:
Flavio's Color Bar Screen (PD).zip
Flavio's DMA Test (PD).zip
Flavio's GYM Player V1.0 (PD).zip
Flavio's Raster Effects Test (PD).zip

- Using commercial game roms:
Yes, it's possible to download real games roms and use them with this cartridge. Unfortunately, it's illegal. Some people say that if you erase the rom within 24 hours, it's legal to use them. (I dont know if it's true, I am not a lawyer). Since many of those games are not sold anymore and have been 'abandonned' by the company owning the copyright, they may be considered as abandonware. (And even then, I'm not sure if it's legal)

IMPORTANT:Do not contact me asking for roms or where to get them.




Pictures

Here are a few pictures of the first version which supports games up to 512K by using 2 AT49F002 256K flash chips:



Here are a few pictures of the second version, which supports games up to 1024K (1Meg) by using 2 AT49F040 512K flash chips. This new version can also hold 2 games of 512K each. Each time the console's reset switch is pressed, the current game is changed. A jumper selects between the 1x1024K and 2x512K mode.




Olin made this slightly more compact version of my design. The gerber files for manufacturing are available on github: https://github.com/ole00/genesis_flash_cart_8mbit




Schematic

Here's the second version schematic. I used two AT49F040 512K flash chips. The cartridge can hold a game of 1024K (1Meg) or 2 512K games. When 512K games are used, we can alternate between them by pressing the reset switch on the genesis:
schematic thumnail
Here is a pdf version: genesis_8mbit_cart.pdf

I Used 2 flash chips because the Genesis data bus is 16 bits wide. One chip is for bits 0 to 7 and the other is for bits 8 to 15.

The first version which used AT49F002 flash chips did not have the 74ls90 to alternate between banks. The A18 signal was simply not connected since the flash chips addressing stops at A17.

AT49F002 256K flash datasheet: doc1017.pdf
AT49F040 512K flash datasheet: doc0998.pdf


Parts suggestion (digikey.com):
.1uf capacitors: BC1148CT-ND
470uF capacitor: P5141-ND
74HCT90: ? (non stock)
AT49F040: ? (non stock)
0 ohm resistors: Use wires
10k resistor: 10.0KXBK-ND
32 pin dip socket: 3M5470-ND
Jumpers: S1212E-13-ND (has 13 pins, cut it in pieces)



Printed circuit boards

I used a software named PCB to create the layout. PCB is available at pcb.sourceforge.net and works on Unix like systems. If you're not on unix, just use the gerber files.
Here are the source files:
Second version (1024K): cart_8mbit.pcb
First version (512K): cart_512k.pcb

Here are the gerber files:
cart_8mbit_gerbers.zip
Warning: There are some small mistakes on the 512K version. Take note of the wires on the picture. The 1024K version on the pictures had mistakes too but I have corrected them in the source file.



Programming

To program the flashs, I use an old universal programmer from xeltek. You can buy an universal programmer from ebay for approximately 50$ US. You may also build your own programmer since the flash datasheet explain how to program them.

My universal programmer only accepts dip chip packages. It can program other types of package with an adaptor. I was not able to find flash chips bigger than 512K with a dip package. I could have soldered bigger flashes on my pcb but I would have had to build an adapter to program the cart.



Tools

smd2bin

Genesis roms ususally comes in .smd (Super Magic Drive) format. You cannot simply program them in the flash chips, they must be converted to raw binary first.

I coded a simple command line tool to convert .smd files to .bin which works under Linux. (It's normal C, it should compile fine on windows):

smd2bin.tar.gz Source code and make file.
smd2bin.c Source code.
smd2bin.exe 32 bit windows executable.

Usage is simple. To convert mmachine.smd to mmachine.bin:
$ ./smd2bin mmachine.smd mmachine.bin
File has 32 16K blocks
Wrote 524288 Bytes (512 Kb)
		
I used the information from smdform.txt to code this tool.

bin2hilo

The genesis data bus is 16 bits wide. I use two 8 bit flash chips so we must split the of 16 bits words contained in the .bin into high and low bytes.

I coded a simple command line tool to do this (It's normal C, it should compile fine on windows):

bin2hilo.tar.gz Source code and make file.
bin2hilo.c Source code.
bin2hilo.exe 32 bit windows executable.
$ ./bin2hilo movie_trailer_demo.bin movie_trailer_demo_h.bin movie_trailer_demo_l.bin
wrote 2 245760 Bytes (240 Kb) files
		
You can now program your flash or eeprom chips with those two new files.

The software you use to program your flash and eeprom chips may have an option to load even and odd bytes separately. If it has, you dont need bin2hilo.


References

AT49F002 256K flash datasheet: doc1017.pdf
AT49F040 512K flash datasheet: doc0998.pdf

Information on the genesis cartridges (signals and explainations):
genhw.txt

Information on the .smd file format:
smdform.txt

For genesis development, there is information on those sites:
http://cgfm2.emuviews.com/gen.php
http://www.zophar.net/tech/genesis.html




Disclaimer

I cannot be held responsible for any damages that could occur to you or your equipment while following the procedures present on this page. Also, I GIVE ABSOLUTELY NO WARRANTY on the correctness and usability of the informations on this page. Please note, however, that the procedures above have worked in my case without any damages or problems.

Now you cannot say that I did not warn you :)