No description
Find a file
2025-10-20 14:13:03 +03:00
.github/workflows Added Frontend build process to CI workflow (#17) 2025-01-19 00:55:04 +03:00
arch Initial version 2021-03-13 23:37:15 +01:00
frontend Added styling/labels to the edit macro form fields 2025-09-11 18:09:57 +02:00
include update precompiled FS 2025-09-17 18:07:00 +03:00
makefsdata include makefsdata tool 2023-08-29 16:55:21 +03:00
src fix wrong amount of bits transmitted in master mode 2025-10-20 14:13:03 +03:00
.editorconfig Added Frontend build process to CI workflow (#17) 2025-01-19 00:55:04 +03:00
.gitignore Add option to apply a forced exposure value, fix overlay scrolling 2025-02-20 20:10:59 +03:00
.gitmodules update to the latest Pico SDK/LWIP/TinyUSB; remove submodules; use PIO instead of SPI 2023-03-11 01:13:29 +03:00
CMakeLists.txt integrate remote control 2025-09-01 18:54:17 +03:00
device.jpg Add schematics and additional pictures, reconfigure for using SPI0 which is faster and more reliable. 2022-08-19 19:04:06 +03:00
LICENSE Initial version 2021-03-13 23:37:15 +01:00
PCB.png Add files via upload 2024-03-18 18:37:11 +01:00
Pi_Zero_shield.jpg Add files via upload 2024-04-04 18:46:07 +02:00
Pi_Zero_shield_remote.jpg add missing picture 2025-09-17 18:06:37 +03:00
pico_sdk_import.cmake update to the latest Pico SDK/LWIP/TinyUSB; remove submodules; use PIO instead of SPI 2023-03-11 01:13:29 +03:00
README.md Update README.md 2025-09-17 17:13:43 +02:00
regen-fsdata.sh improve the linkcable master transmission 2025-09-01 20:04:48 +03:00
schematics.png Remote controller mode using new "click" endpoint 2025-09-06 22:18:38 +03:00
screenshot.png Add schematics and additional pictures, reconfigure for using SPI0 which is faster and more reliable. 2022-08-19 19:04:06 +03:00
usage.png convert to png 2022-08-19 19:18:47 +03:00

Pico GameBoy printer

Based on the original webserver for the PI Pico repo: https://github.com/maxnet/pico-webserver

Webserver example that came with TinyUSB slightly modified to run on a Raspberry Pi Pico. Lets the Pico pretend to be a USB Ethernet device. Runs the webinterface at http://192.168.7.1/

Special thanks to Raphael-Boichot, please check this repo: https://github.com/Raphael-Boichot/The-Arduino-SD-Game-Boy-Printer

Schematics

You will need a Raspberry Pi, 1/2 of the game boy link cable and a four-channel 5v to 3.3v level shifter. Connect parts as shown:
Schematic using a Raspberry Pi Pico

This is the example of the ready-to-use device:
Example of a ready-to-use device

As finding which is SIN and SOUT is sometimes tricky as signals are crossed within the serial cable, you can also make your own PCB with a Pi Zero and a GBC/GBA serial socket following the guide here. The PCBs come in two flavors: one simple and small with only one pushbutton for shutter or a larger version featuring a full remote control for Photo!

Simple PCB with a single pushbutton (small)

assembled PCB

Full remote control version (large)

assembled PCB

Build dependencies

On Debian:

sudo apt install git build-essential cmake gcc-arm-none-eabi

Your Linux distribution does need to provide a recent CMake (3.13+). If not, compile CMake from source first.

On OSX:

brew install cmake doxygen 
brew tap ArmMbed/homebrew-formulae
brew install arm-none-eabi-gcc
  • Install the Pi Pico SDK and make sure to add the location to your path.

On Windows:

Windows is not a friendly system to compile the pico sdk. Unless you want to loose your precious time, use the following method:

sudo apt update && sudo apt full-upgrade
  • Install the pico SDK by following the "Quick Pico Setup" You can use the installation script written for Raspberry Pi, it works. Your computer may require a boot at this step.
  • Continue installation like below.

Build instructions

git clone --depth 1 https://github.com/untoxa/pico-gb-printer
cd pico-gb-printer
git submodule update --init
mkdir -p build
cd build
cmake ..
make

Copy the resulting pico_gb_printer.uf2 file to the Pi Pico mass storage device manually. Webserver will be available at http://192.168.7.1/

Developing the Frontend

Frontend code development requires node.js (>=20)

  • Navigate to the frontend folder.
  • run npm install to install all dependencies
  • run npm run dev to start a local dev server on 127.0.0.1:3000. The server also does proxy the /status.json and /download endpoints from a Pico which must be connected to the same machine.
  • run npm run build to build the static files (html/css/js). Files will be built to ./fs
  • When building the rom file locally, also run ./regen-fsdata.sh