Reading/writing to a 32 pin EEPROM /w Duemilanove

I am attempting to construct a Gameboy cartridge reader/writer for homebrew development. I plan on using the Duemilanove because I'm a student, so I'm strapped for cash, because I would like to use it for future projects, and because it's a nice, flexible development platform. I've taken a logic design course, I am fluent in C/C++, I'm familiar with assembly, and though I haven't done much circuit design, my work in a robotics lab has made me quite handy with a soldering iron, and I've got some basic electronics know-how.

Flash cartridges are normal Gameboy cartridges whose ROMs have been refitted with EEPROMs. They can be written to via the 32 pins on the cartridge itself. My plan is to salvage a Gameboy cartridge slot, rig up 8 daisy-chained shift registers to that, and then interface those using the Duemilanove's IO. The Duemilanove will essentially be a serial-parallel/parallel-serial interface between my computer and the EEPROM in the gameboy cartridge.

I want to do this so that I can write software for the Gameboy and so that I can finally make good use of my copy of LSDJ (music software for the Gameboy). I could use a schematic from some site, but I don't trust the old designs that are out there, and I figure that this will be a valuable learning experience and a fun summer project.

What I'm asking for from you guys is whether this is a feasible project and will it work? Despite my claim to taking a course in logic design, I really haven't spent much time working with shift registers, especially using them to multiplex I/O, but if it can be done, I am confident that it won't be too hard to figure out.

Thanks. :]

From what I understand, the cartridge is mostly just a fancy interface. It's got some address pins, some R/W pins, a R/W toggle, power, ground, clock, and one or two other miscellaneous pins. It only has two chips other than the ROM. One is a memory controller, and the other is a watch-battery powered save game RAM.

All of this stuff is fairly well documented. I just hope it's as easy as it sounds. The most challenging part will probably be modifying the cartridges. Thanks for the reassurance.

To simplify your wiring (and, quite possibly, code), check out the MCP23008 and MCP23017 to interface to the data and address busses.


Thanks a ton. These will make my life a whole lot easier. Found out the hard way that shift registers with serial and parallel I/O are basically non-existant.

One thing is bugging me. I’m going to need an I2C interface for each of these, right? Does the Wire library support using multiple I2C devices at the same time? Am I going to be able to configure the Arduino to use two of these simultaneously?

:edit: Nevermind, some Googling answered my question. Never worked with I2C before. This is pretty boss. :/edit: