Allison’s Bootleg Cart
🎇🎇 PLEASE NOTE: This project is currently in pre-release. All the information is online, but there will likely be compatibility-breaking changes to both hardware and software in the next few weeks or months. 🎇🎇
Allison’s Bootleg Cart (ABC) is a flash cart for the Game Boy (DMG, Pocket, Color and backwards-compatible GBAs). Using a cartridge flasher like GBxCart, you can copy ROMs from your computer to the cart and play them on your handheld. The project started out as an excuse for me to learn RP2040 PIO programming and to learn more about Game Boy internals, but I think the design I came up with is pretty okay and I want to share it with others. So here we are!
Oh btw I’m Allison. Thank you for your interest in my project!

If you want to get a little bit deeper into the technical nitty-gritty, I wrote a detailed explanation of how Game Boy cartridges work which includes information and strategies about designing your own Game Boy cartridge from scratch.
Vital information
Please note that the USB port on the cartridge is only for updating cartridge firmware. You cannot upload ROMs to the cart using the USB port! You’ll need to use a cartridge flasher like GBxCart to do that.
I am currently selling a handful of (unpopulated) PCBs at-cost in my Ko-fi shop.
The components of ABC are split across three code repositories:
- abc-pcb: KiCad source files for the ABC PCB
- abc-firmware: C source code for ABC firmware
- abc-multicart-launcher: assembly code for ABC multicart launcher
The firmware and multicart launcher repositories have pre-built binaries, and the PCB repository has exported fabrication files that you can send off to your favorite PCB fabricator (PCBWay, JLCPCB, etc.). The PCB repository also has a bill of materials and links to pre-made shopping lists for components.
Here are the steps you’ll need to follow to build a cart from scratch:
- Get a PCB fabricated with the files from the PCB repository;
- Order the necessary components (from DigiKey or Mouser, but note that Mouser does not carry the necessary coin cell battery retainer);
- Solder the components to the board;
- Upload the desired firmware from the firmware repository to the cart (over USB);
- Flash a ROM to the cart with a cart flasher like GBxCart. (If you’re not using the multicart firmware, use FlashGBX’s “Generic WR/AAA/AA” profile.)
- Enjoy!
As an aid to placing components, I exported an interactive BOM from KiCad (using the excellent InteractiveHtmlBom plugin).
You’ll also probably want an aftermarket cartridge shell to put the PCB in (like one of these or one of these), and a CR2025 coin cell battery to power the on-cartridge RAM.
If you want to use ABC’s multicart functionality, you need to use the ABC multicart firmware, and then flash the multicart launcher ROM to the cart. (See the multicart launcher repository for further information).
⚠️ Note that building the ABC from scratch is probably not a good beginner project, as it involves soldering small SMD components in fairly tight spaces.
Why ABC?
There are lots of other flash carts out there for the Game Boy, and honestly there’s not much to recommend mine over any other, from a practical perspective. But there are a few things about ABC that make it stand out:
- All of the components are available off-the-shelf—you don’t need to harvest chips from existing carts! Additionally, the components are all 3.3v-compatible, which (hopefully) makes the cart design future-proof against the rising prices (and discontinuations) of 5v parts. (All 3.3v components are safely powered with an on-board switching power regulator, and the interface between the cart and the Game Boy is mediated by level shifters.)
- The cartridge uses real parallel flash memory for ROM storage and real parallel SRAM. I know it’s more convenient to store ROMs on (e.g.) a MicroSD card, but using parallel flash and SRAM directly means that there are fewer compatibility problems that result from timing issues, and there are no weird tricks or buttons to push to retain your saves.
- Another benefit of not using MicroSD is low power use. In my testing, the ABC uses just 10%–15% more power than a stock cartridge, and I think that number could go even lower with a few tweaks to the firmware. Lower cartridge power use means more battery life.
- The on-board microcontroller (an RP2040) is able to emulate multiple MBC chips. You don’t need to have separate carts for each MBC! Making the cart compatible with a particular MBC is as easy as updating the firmware.
- The firmware is written in a (relatively) hobbyist-friendly and hackable programming language (C), and can be updated easily over USB. No specialist knowledge or programming hardware is required.
- You can use ABC for a single ROM, or you can use ABC’s multicart configuration, which makes it possible to store and launch up to eight different ROMs on the same cartridge.
- ABC’s PCB design and firmware both have copyleft licenses, and are designed to be extremely hackable. If you’ve ever wanted to make a Game Boy cart with weird external sensors or strange outputs or off-board processing, I think ABC is a great place to start.
I’ve successfully tested ABC with the original Game Boy (DMG), the Game Boy Pocket, the Game Boy Color, and both Game Boy Advance models. Compatibility with other handhelds (e.g. Analogue Pocket, FPGBC, etc.) is currently unconfirmed, since I don’t own any of them.
ABC supports up to 8MB of flash storage and 256KB of SRAM, and this is the recommended configuration. (You can use chips with less capacity, but the multicart functionality will be compromised.)
MBC support
MBC stands for “memory bank controller.” The MBC is the chip on a Game Boy cart that allows it to access more than 32KB of memory, and also sometimes provides access to specialty hardware included on the cartridge (such as a real-time clock or accelerometer). There were many different MBCs in use during the Game Boy’s heyday, and each type of MBC has a distinct software interface and distinct functionality. The microcontroller on ABC “emulates” the functionality of a number of MBC varieties in software.
Currently, there are firmware builds to support the following MBCs:
- MBC1 (including ROMs 1MB or larger with RAM bank switching)
- MBC2
- MBC3 (note however that RTC is not supported)
- MBC5 (ROMs up to 4MB in the default configuration, up to 8MB with a simple hardware mod)
Games with no MBC (e.g., Tetris) are also supported.
Questions and answers
Some QTIAWBFAs (questions that I anticipate will be frequently asked):
This thing has a USB-C port, so I’ll definitely be able to upload ROMs over USB, right?
Nope! The USB-C port is only for updating the cart’s firmware. (In the current cart design, the microprocessor is only connected to three of the sixteen lines of the address bus, and consequently it’s not possible to update the onboard parallel flash chip programmatically with the microprocessor.) You’ll need a cartridge flasher to get ROMs onto the cart. I used insideGadgets’ GBxCart during design and development and it’s the cart flasher that I recommend.
Why are you using the old, busted RP2040 chip when RPi has blessed us with the new RP2350 hotness?
I started the PCB design in 2022, long before the RP2350 was announced. The RP2040 remains widely available, and very inexpensive, and works just fine for ABC. (I am working on a new flash cart design centered on the RP2350B, which has many more GPIOs and opens up a number of interesting possibilities.)
Can I use this cart for Pokémon?
First generation games (Red, Blue, Yellow) are fully supported. Second generation games (Gold, Silver, Crystal) are not, since they require a working real-time clock, which this cart does not have.
Can I use this cart to play Kirby Tilt n’ Tumble?
There isn’t an accelerometer on the cart, and there is no software support for MBC7 currently. So, no, you can’t. (I do think it would be technically feasible to add an accelerometer and code for MBC7 support, though. Feel free to send me a patch.)
What about Net de Get: Minigame @ 100??
Come on, man.
Acknowledgements
Game Boy hackers are lucky to live in a world where we have documents like Pan Docs and Game Boy: Complete Technical Reference. If I have seen far, it is by standing on the shoulders of gekkio.
Thanks also to the folks on the Modded Gameboy Gameboy Club Discord server who gave encouragement and talked me through a bunch of problems, and in particular BucketMouse for this and other great technical documentation about Game Boy cartridges.
InsideGadgets’ GBxCart RW was an invaluable tool during the development process, and this series of blog posts provided vital information I needed to find my footing.
I spent a lot of time with this document describing Game Boy memory timings.
License
Please check the individual repositories (firmware, hardware, multicart launcher) for details about how each component is licensed.
The contents of this website are published under the CC BY-NC-SA license. Use of the contents of this website as part of a dataset to train a machine learning model is allowed, under the terms of this license. (For example, a model that includes this website as part of its dataset must explicitly credit me among its contributors, and must be distributed under the same license as the website itself. Also, any model making use of this website in its data set must not be used for commercial purposes.)