PLCC replaces Game Boy cartridge ROM

[Gerry] sent us pictures and a few details on replacing the Game Boy cartridge chip with a flash chip. For the prototype he used a PLCC and a little wire porn to interface a flash chip with the cartridge’s PCB while still having access to it for programming. In retrospect he plans to use a 32-pin ZIF socket on the next version to make things easier. It does work and he’s had some success loading his own code and getting it to run. There are other cartridge hacks that let you load code onto a cartridge but if you have the knowhow and the parts this makes for a fun weekend project. We’ve posted the rest of the photos that [Gerry] sent us after the break.

Update: Gerry is working on a video and a pinout. We’ll post info once we get a hold of it.

I recently stumbled upon my old Game Boy and have been dying to learn more about interfacing with the ROM. Over the past few months I have been studying as many cartridge mods as possible to try and learn more! This is SUCH a cool project, thanks so much for posting it!

Home made flash carts have been done many, many times but I must admit it doesn’t make this one any less impressive. However, if I’m not mistaken, that’s an MBC1 cartridge… I don’t understand why he wouldn’t just do this with an MBC5 cart instead and get the extra functionality and compatibility. Unless this was all he had lying around of course.

Anyway, good work. Hoping to see more Game Boy-related stuff on Hackaday in the near future.

Some cartridges use the correct form-factor already I think. Saves some wiring.
You just can’t choose the bank controller, but this isn’t for pirating anyways. right?
For coolness, wires are ok though.

Or buy one of the chinese flash carts that support all the different mappers (or at least patch roms)…

@All

I’ve done this with a GB cart.. I’ve done this with a NeoGeo MVS cart too. You soon get pissed off with pulling EPROMS, progging it, putting it back in the cart, seeing that it doesn’t work, change code, pull rom,.. For GB/GBA/DS work the nocash emu/debuggers are the way to go until you really need to test on real hardware.

You don’t need a steady hand to solder like that.
You don’t need a fine soldering tip either.
A decent iron with a medium size tip and a rosin flux pen is all you need for a job like that, maybe a jewelers loupe to check your work. The key is to let the flux, pads and solder mask do the work for you..

It’s perfectly possible to solder TQFP100 and similar packages by hand with a cheap iron if you think about what you’re doing.

Would it be possible to connect up, say, an arduino rather than a flash chip and generate the code on the fly? GB and GBC use original z80s I think, so it should be possible, but the timing could be a bitch and you’d need to write pretty tight code to guarantee that you don’t screw it up.

OMG I did this exact same hack a few years ago, I even build a cartridge burner, so I wouldn’t have to swap chips – cause it was a PITA, I ended up with my PLCC socket was actually flush with the cart case, right above the rom area… I never managed to get it to burn right, and eventually took it apart and replaced the original Metroid II rom back in – (it still worked :P to my delight!)

@ENKI-[] – IT IS possible to do what you ask, BUT you’d have to poll in 16 address bits and the r/w lines and access whatever memory you have attached to the arduino, the arduino is a 16mhz device, and the GB is 4mhz – there just aren’t enough clock cycles to get it in under the wire (pun intended) – as in before the gameboy would expect it to be there. – look into FPGA rom emulators, I’ve seen lots of projects out there for them, if you’re still interested

Glad you are all liking the Hack I completed.
Except for my Messy Wiring work. :)

In Response to George Johnson’s Comment:
“And you don’t need a ZIF socket, just use a chip puller on the one you already have.”

That was actually my intention with this design. However, the reason I mentioned using a ZIF socket as opposed to the PLCC; was due to the amount of wear and tear that was occurring with the PLCC socket. PLCC sockets were usually used for BIOS chips and are only meant for periodic changes. Now in contrast, the number of times a user will be re-programming their flash chip when trying different games is much higher. This is the same reason why Universal Programmers are equipped with ZIF sockets.
Or shall I say “Zero Insertion Force” sockets.
To me it just makes the chip change and re-programming much faster overall.
But Hey! That’s just me. :)