DIY Coprocessors For The Game Boy Color

Back in the olden days, when video games still came on cartridges, the engineers and programmers making these carts had a lot of options. One of the most inventive, brilliant, and interesting cartridges to come out of the 90s was Star Fox for the Super Nintendo. Star Fox featured a coprocessor chip, the Super FX, that was effectively a GPU used to draw polygons in the frame buffer. Without this, Star Fox wouldn’t be 3D, Yoshi’s Island wouldn’t be as cute, and there wouldn’t be an always-on processor in your computer with the potential to spy on everything you do.

gameboy-coprocessor-cartridgeThe Super FX chip, the Capcom-developed Cx4 coprocessor, and the Nintendo DSP all lived in a cartridge, but the technology to put a better computer in a cartridge never made it to Nintendo’s handheld devices. Cheap, powerful microcontrollers are everywhere now, and it’s not that hard to make a board with card edge connectors, leading [Anders] to build a Super FX for the Game Boy Color.

Game Boy cartridges are simple — just a memory controller and some memory is all you need. Drop in a microcontroller, and you have a Game Boy coprocessor. This cartridge features the MBC1 memory bank controller, 512kB of Flash, and 8KB SRAM. These are fairly standard parts, but there’s one last trick up the sleeve of this board: a KE04 from NXP, an ARM Cortex-M0+ microcontroller running at 48MHz . This microcontroller is, effectively, the GPU for the Game Boy.

This ARM-powered coprocessor is able to convert the framebuffer into tiles in just 2ms, giving the system plenty of time for image processing and rendering. Due to the limitations of the Game Boy, the best resolution offered by this coprocessor is either 160×96 or 128×128 pixels, short of the complete 160×144 pixel display in the Game Boy Color.

Even though [Anders] is still working on programming this thing to show off the power of his Game Boy coprocessor, he has a few demos to show off. The most impressive is a Wolfenstein-like clone. That’s extremely impressive and categorically impossible on a stock Game Boy Color.

32 thoughts on “DIY Coprocessors For The Game Boy Color

  1. That’s super cool. Now you just need to replace the arm0 with an ESP and use it as a streaming device for PC games. If you do the video conversion to 160×96 on the computer you could probably get some respectable response times.

  2. Re-write the tiles buffer every few lines and you can get the full 160×144 pixels. With some more wizardry you could re-write the colours palette every line and get a lot more colours on the screen at once too.

    1. I think the article is either incomplete, or misinformed. The GBC is capable of producing 512 on screen “background” tiles. There are 2, 384 title VRAM banks. If you use an HBlank DMA you can load 144 tiles to VRAM during active display. The limitation could just be how much VBlank time you have to cram a single bank worth of tiles into ram.

  3. Yis Yis more of dis.

    I get the feeling that this is sorta trivial on a game gear, beyond getting it crammed in the cart, due to being able to address the display with composite signal direct… but not sure how you’d get control inputs through.

  4. Very cool project. I’ve been thinking to do something similar for the MSX-1/2 computers I’ve still have laying around. Would by nice to interface a PIC32 200 Mhz mcu with a 3.6Mhz Z80 :). Emulating an FM-PAC and SCC and some ROM while being able to interface with a PC over serial. Or replacing the video memory with dual access SRAM and writing to video memory using DMA on a PIC32. That would enable it to play video streamed over USB :)

    1. An Arm cart has been done. Harmony and Melody. These ate mainly used just to emulate every type of bankswitched ROM and the Pitfall 2 SFX but thrre are some more advanced uses as well. A faster ARM and the more you can do.

  5. This is really cool, because nobody ever hacks native interfaces and instead just replace everything with proto boards and stuff.

    Have fun writing a game that implements it and is on par mechanically and visually with one of the mentioned. See you in some years.

      1. Yeah but design and media for a game that is marketable takes a lot of time. Hardware throughput isn’t even half the battle. Starfox was coded by and modeled by a small army of talented people using a large budget, and it still took years time.

        1. I speak as someone who has fought the battle as a single developer; making models, textures, animations, audio etc..

          Coding is actually the easy&fun part.

          All that said this hack is cool to me because of how he uses native bus and protocols. You rarely see this.

        2. That’s due to the limits of developments tools of the time. I’ve worked on small teams doing 3D games in a weekend. Not quite a finished product, but then this kind of hack isn’t meant for commercial success. It’s just a fun thing that people do as a hobby.

          1. Absolutely! My full time job is programming games, so I don’t intend to invest in the time to make a proper commercial game also in my spare time.
            This is purely for fun and learning (and quite a bit of nostalgia) :)

  6. Well I was googling to see if anybody’s ever added a modern coprocessor to the Megadrive, I wondered if you could add a cortex m0 to a cartridge.
    Wasn’t thinking 3D though, I was thinking
    Super fancy 2D FX
    2D physics modelling
    A water manipulation game with fluid dynamics
    Particles, lots of particles
    Scary smart enemies
    Have the Motorola do blast processing (lots of colours but no CPU time left) and the game run on the cortex.
    WiFi multiplayer?

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.