8 minute read

Multi-rom carts… I’ve look into one before in a previous post, but that was back in 2018 and a lot has changed in the mean time!

I’ve always wanted to create a multi-rom cart that holds all my favorite games and supports saving for those that require it. In the past I used BennVenn’s multi-rom compiler (no longer listed on the original site, but can be found here) together with the joey-joebags Gen3. The software worked, but it was Windows only (which is not ideal for a MacOS/Linux person), it was clunky, changing the order was a pain and later generating a similar cartridge from scratch again took quite some effort. The 22-in-1 Pokémon cartridge I had back then required a solder bridge to be moved and after flashing some memory seemed to be corrupted as not all games would boot properly, which led to some careful planning and writing games multiple times, hoping at least one copy would boot. The save functionality also didn’t work anymore. All in all, it was a fun experiment, but it was far from perfect.

I was very unaware of all the things that had happened in the community since, but these in particular piqued my interest:

  • FlashCartDB, a collection of flash carts and bootlegs out there, with PCB images and notes.
  • GBFlash, a cart reader/writer that is very fast!
  • FlashGBX, a GUI tool for working with Game Boy (Advance) cartridges, that’s very easy to use and support a ton of cartridges, official and bootleg.
  • 256M_ROM_Builder, a tool for compiling multi-rom files to be flashed to multi-rom carts.

All of this combined should make things so, so much easier and convenient. I took a gamble and ordered a few of the “22-in-1 Pokémon” carts to see if I would be able to reflash them.

One of the cartridges failed to boot and only showed a garbled Nintendo logo. I tried three different consoles, and yes, I did blow into the cartridge too. 😉 After reporting it as broken, I was refunded within a few days.

Broken cartridge

This is what they look like on the inside.

The PCB

After running python 256m_rom_builder.py --title "Super Game Multi" (more about the title later…), this is the resulting layout:

256M ROM Builder v0.8
by Lesserkuma

Setting menu title to: SUPER GAME MULTI

Found 72 ROM(s)

Added 16 ROM(s) that use SRAM to the compilation
Added 56 ROM(s) that do not use SRAM to the compilation

    | Title            | Offset    | Size     | Mapper | Parameters  | SRAM ID
----+------------------+-----------+----------+--------+-------------+---------
  1 | ALLEYWAY         | 0x0008000 | 0x008000 | None   | 01:FF:F0:00 |
  2 | ASTEROIDS        | 0x0020000 | 0x008000 | None   | 04:FF:F0:00 |
  3 | BALLOON KID      | 0x00E0000 | 0x020000 | MBC1   | 1C:FC:F0:00 |
  4 | BATTLE UNIT ZEOT | 0x0100000 | 0x020000 | MBC1   | 20:FC:F0:00 |
  5 | BATTLECITY       | 0x0028000 | 0x008000 | None   | 05:FF:F0:00 |
  6 | BUBBLE GHOST     | 0x0030000 | 0x008000 | None   | 06:FF:F0:00 |
  7 | CASTLEVANIA      | 0x0090000 | 0x010000 | MBC1   | 12:FE:F0:00 |
  8 | CASTLEVANIA II   | 0x0120000 | 0x020000 | MBC1   | 24:FC:F0:00 |
  9 | CONTRA           | 0x0140000 | 0x020000 | MBC1   | 28:FC:F0:00 |
 10 | DUCKTALES        | 0x00A0000 | 0x010000 | MBC1   | 14:FE:F0:00 |
 11 | DUCKTALES 2      | 0x0160000 | 0x020000 | MBC1   | 2C:FC:F0:00 |
----+------------------+-----------+----------+--------+-------------+---------
 12 | DONKEY KONG      | 0x0E00000 | 0x080000 | MBC1   | C0:F0:91:01 | 7
 13 | DOUBLE DRAGON    | 0x0180000 | 0x020000 | MBC1   | 30:FC:F0:00 |
 14 | DOUBLE DRAGON II | 0x01A0000 | 0x020000 | MBC1   | 34:FC:F0:00 |
 15 | DOUBLE DRAGON 3  | 0x01C0000 | 0x020000 | MBC1   | 38:FC:F0:00 |
 16 | DR MARIO         | 0x0038000 | 0x008000 | None   | 07:FF:F0:00 |
 17 | F1 RACE          | 0x0200000 | 0x020000 | MBC2   | 40:FC:90:00 | 1
 18 | GAME AND WATCH   | 0x0400000 | 0x040000 | MBC1   | 80:F8:90:00 | 2
 19 | GEAR WORKS       | 0x01E0000 | 0x020000 | MBC1   | 3C:FC:F0:00 |
 20 | GHOSTBUSTERS II  | 0x0220000 | 0x020000 | MBC1   | 44:FC:F0:00 |
 21 | GRADIUS          | 0x0440000 | 0x040000 | MBC1   | 88:F8:F0:00 |
 22 | GUNS N RIDERS    | 0x0040000 | 0x008000 | None   | 08:FF:F0:00 |
----+------------------+-----------+----------+--------+-------------+---------
 23 | HAL WRESTLING    | 0x0240000 | 0x020000 | MBC1   | 48:FC:F0:00 |
 24 | KID DRACULA      | 0x0480000 | 0x040000 | MBC1   | 90:F8:F0:00 |
 25 | KIRBY DREAM LAND | 0x04C0000 | 0x040000 | MBC1   | 98:F8:F0:00 |
 26 | KIRBY 2          | 0x1000000 | 0x080000 | MBC1   | 00:F0:92:10 | 8
 27 | KIRBY PINBALL    | 0x0600000 | 0x040000 | MBC2   | C0:F8:90:00 | 3
 28 | LUCKY LUKE       | 0x0500000 | 0x040000 | MBC1   | A0:F8:F0:00 |
 29 | MARIO PICROSS    | 0x0800000 | 0x040000 | MBC1   | 00:F8:91:01 | 4
 30 | MEGA MAN         | 0x0540000 | 0x040000 | MBC1   | A8:F8:F0:00 |
 31 | MEGA MAN II      | 0x0580000 | 0x040000 | MBC1   | B0:F8:F0:00 |
 32 | MEGA MAN III     | 0x05C0000 | 0x040000 | MBC1   | B8:F8:F0:00 |
 33 | MEGA MAN IV      | 0x0780000 | 0x080000 | MBC1   | F0:F0:F0:00 |
----+------------------+-----------+----------+--------+-------------+---------
 34 | MEGA MAN V DX    | 0x0900000 | 0x100000 | MBC5   | 20:E0:F1:01 |
 35 | METROID II       | 0x0A00000 | 0x040000 | MBC1   | 40:F8:91:01 | 5
 36 | MOLE MANIA       | 0x1200000 | 0x080000 | MBC1   | 40:F0:92:10 | 9
 37 | MOLE MANIA DX    | 0x1A00000 | 0x100000 | MBC5   | 40:E0:93:11 | 13
 38 | MOTOCROSS MANIAC | 0x0048000 | 0x008000 | None   | 09:FF:F0:00 |
 39 | QIX              | 0x00B0000 | 0x010000 | MBC1   | 16:FE:F0:00 |
 40 | RTYPE            | 0x0260000 | 0x020000 | MBC1   | 4C:FC:F0:00 |
 41 | ROBOCOP 2        | 0x0280000 | 0x020000 | MBC1   | 50:FC:F0:00 |
 42 | ROBOCOP          | 0x02A0000 | 0x020000 | MBC1   | 54:FC:F0:00 |
 43 | SENSIBLE SOCCER  | 0x02C0000 | 0x020000 | MBC1   | 58:FC:F0:00 |
 44 | SNOW BROTHERS    | 0x02E0000 | 0x020000 | MBC1   | 5C:FC:F0:00 |
----+------------------+-----------+----------+--------+-------------+---------
 45 | SUPER MARIO LAND | 0x00C0000 | 0x010000 | MBC1   | 18:FE:F0:00 |
 46 | MARIO LAND 2     | 0x1400000 | 0x080000 | MBC1   | 80:F0:92:10 | 10
 47 | SUPER RC PRO AM  | 0x0300000 | 0x020000 | MBC1   | 60:FC:F0:00 |
 48 | TENNIS           | 0x0050000 | 0x008000 | None   | 0A:FF:F0:00 |
 49 | TETRIS DX        | 0x1600000 | 0x080000 | MBC1   | C0:F0:92:10 | 11
 50 | TETRIS           | 0x0058000 | 0x008000 | None   | 0B:FF:F0:00 |
 51 | TRAX             | 0x0320000 | 0x020000 | MBC1   | 64:FC:F0:00 |
 52 | TRIP WORLD       | 0x0640000 | 0x040000 | MBC1   | C8:F8:F0:00 |
 53 | TEKKAMAN BLADE   | 0x0340000 | 0x020000 | MBC1   | 68:FC:F0:00 |
 54 | TMNT             | 0x0360000 | 0x020000 | MBC1   | 6C:FC:F0:00 |
 55 | TMNT II          | 0x0680000 | 0x040000 | MBC1   | D0:F8:F0:00 |
----+------------------+-----------+----------+--------+-------------+---------
 56 | TMNT III         | 0x0380000 | 0x020000 | MBC1   | 70:FC:F0:00 |
 57 | WARIO BLAST      | 0x06C0000 | 0x040000 | MBC1   | D8:F8:F0:00 |
 58 | WARIO LAND       | 0x1800000 | 0x080000 | MBC1   | 00:F0:93:11 | 12
 59 | WARIO LAND II    | 0x1C00000 | 0x100000 | MBC3   | 80:E0:93:11 | 14
 60 | YOSHI            | 0x00D0000 | 0x010000 | MBC1   | 1A:FE:F0:00 |
 61 | YOSHIS COOKIE    | 0x03A0000 | 0x020000 | MBC1   | 74:FC:F0:00 |
 62 | LINKS AWAKENING  | 0x1E00000 | 0x100000 | MBC5   | C0:E0:93:11 | 15
 63 | ZEN              | 0x03C0000 | 0x020000 | MBC1   | 78:FC:F0:00 |
 64 | 2048             | 0x0060000 | 0x008000 | None   | 0C:FF:F0:00 |
 65 | BIG2SMALL        | 0x0010000 | 0x010000 | MBC5   | 02:FE:90:00 | 0
 66 | CHROMATIC TETRIS | 0x0C00000 | 0x040000 | MBC5   | 80:F8:91:01 | 6
----+------------------+-----------+----------+--------+-------------+---------
 67 | DMG TEST PROG    | 0x0068000 | 0x008000 | None   | 0D:FF:F0:00 |
 68 | OUTRUN           | 0x0880000 | 0x080000 | MBC5   | 10:F0:F1:01 |
 69 | RETROID          | 0x0700000 | 0x040000 | MBC1   | E0:F8:F0:00 |
 70 | STOPWATCH        | 0x0070000 | 0x008000 | MBC5   | 0E:FF:F0:00 |
 71 | TREX             | 0x0078000 | 0x008000 | None   | 0F:FF:F0:00 |
 72 | TRAVELBIRD       | 0x0080000 | 0x008000 | None   | 10:FF:F0:00 |

Used space: 15.84 MB
Build date: 2026-02-01 14:33:28
ROM code: 42B2

Compilation ROM saved to “256MROMSET_42B2.gbc”

Press ENTER to exit.

My plan was to create a multi cart with all my favorite games, games that I still want to play, ones that are considered good and also homebrew. I needed to have a label that would show different game types and be generic so that I wouldn’t have to change it if I decide to add more games. I also wanted it to be in a somewhat 90’s Japanese style, a bit bootleggy, but still high quality. ChatGPT did a great job here!

My custom label

The title Super Game Multi is obviously very broken, but since it added to the bootleg feel of it I decided to stick with it!

Anyway, I now also have a GBFlash which I ordered off AliExpress, but it wasn’t entirely clear if I could flash the multi rom created with 256M_ROM_Builder to the cartridge with FlashGBX and a GBFlash.

The README.md doesn’t list GBFlash, nor the specific bootleg cartridge. There is also an issue that doesn’t bode well. I gave it a try and it works without any issue. I created an issue to let the creator know.

Flashing the cartridge

BTW: The store I ordered the GBFlash from has since disappeared and there seem to be quite some bootlegs out there that won’t operate at full speed or maybe don’t support the latest firmware, but mine works absolutely fine. I’m not sure what the current status is.

I printed the label using my incredibly old Polaroid Pogo that still works and is actually perfect for these kind of applications. The colours are already in the paper, so the print is kind of laminated and it won’t smudge.

The final product

I now have all my favourite games on a single cartridge, exactly how I wanted it. All I can say is that I’m very pleased with the result!