An open-source RP2040-based flash cart for the Mega Duck aka Cougar Boy. The RP2040 acts as the ROM chip of the cart.
In order to load a game onto the cartridge, you first have a "convert" a ROM to a UF2 file.
You can use the online patcher tool to patch in a ROM into the ROM-less base UF2 firmware. You can find the latest ROM-less base UF2 firmware in the releases tab. Use this as the UF2 file and any Mega Duck ROM in the ROM file (max. ROM file size is 131072 bytes).
Requirements:
- Python
- CMake
- RP2040 C SDK installed and paths set up
Steps:
- Use the bin2c.py script to convert a ROM file to a C-array. Usage:
bin2c.py ROMFILE rom.h
. Place the genereatedrom.h
file in the root of code directory, beside main.c. - Run
make
in the code directory. - Connect the Raspberry Pi Pico to the computer while holding down the BOOTSEL button.
- Drag and drop the newly generated .uf2 file onto the Pico.
You can also find a basic multi ROM FW in this repo with 10 slots by default. It uses the Mega Duck cart menu by bbbbbr. All slots have a fixed size of 131072 bytes.
A pre-compiled base FW UF2 file for the 10 slot multi ROM FW with the cart menu can be find in the releases tab. Use the online patcher tool to insert ROMs and set labels in the menu.
Reference | Value | Links |
---|---|---|
U2, U3, U4, U5 | TXB0108PWR | LCSC |
U6 | Raspberry Pi Pico | |
Q1 | N-Channel MOSFET (SOT-23) | LCSC |
R1 | 1 kOhm resistor (0805) | LCSC |
R2 | 470 kOhm resistor (0805) | LCSC |
The PCB can be ordered using the Gerber files. A width of 1.2 mm should be chosen with ENIG surface.
A 3D printable shell for the cart can be found in the folder "shell".
Use the files and/or schematics to build your own board at your own risk. This board works fine for me, but it's a simple hobby project, so there is no liability for errors in the schematics and/or board files. Use at your own risk.