Awesome
picoDuck
An open-source RP2040-based flash cart for the Mega Duck aka Cougar Boy. The RP2040 acts as the ROM chip of the cart.
Software Side
In order to load a game onto the cartridge, you first have a "convert" a ROM to a UF2 file.
Using the Online Patcher
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).
Building a FW from Scratch
Requirements:
- Python
- CMake
- RP2040 C SDK installed and paths set up
Single ROM
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.
Hardware Side
BOM
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 |
PCB
The PCB can be ordered using the Gerber files. A width of 1.2 mm should be chosen with ENIG surface.
Shell
A 3D printable shell for the cart can be found in the folder "shell".
Disclaimer
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.