{"id":16133405,"url":"https://github.com/isacben/picoboy-dev","last_synced_at":"2025-10-08T19:04:14.944Z","repository":{"id":143580698,"uuid":"615875029","full_name":"isacben/picoboy-dev","owner":"isacben","description":"Development of a handheld console for PICO-8 games that runs with a Raspberry Pi Zero.","archived":false,"fork":false,"pushed_at":"2024-01-02T02:38:22.000Z","size":133,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-12T21:32:28.076Z","etag":null,"topics":["game-development","gamedev","handheld-devices","pico-8","pico8","retrogaming"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/isacben.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-18T23:31:52.000Z","updated_at":"2024-11-12T23:05:34.000Z","dependencies_parsed_at":"2024-01-02T03:42:21.839Z","dependency_job_id":null,"html_url":"https://github.com/isacben/picoboy-dev","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isacben%2Fpicoboy-dev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isacben%2Fpicoboy-dev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isacben%2Fpicoboy-dev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isacben%2Fpicoboy-dev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/isacben","download_url":"https://codeload.github.com/isacben/picoboy-dev/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247502009,"owners_count":20949174,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["game-development","gamedev","handheld-devices","pico-8","pico8","retrogaming"],"created_at":"2024-10-09T22:44:34.376Z","updated_at":"2025-10-08T19:04:09.911Z","avatar_url":"https://github.com/isacben.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# picoboy\n\nDevelopment repository of a handheld console for PICO-8 games that runs with a Raspberry Pi Zero.\n\nThis project is ongoing. An MVP is not available yet.\n\nThe picoboy will be available here: https://github.com/isacben/picoboy\n\n## TODO list\n\n### Pre-study\n\n- [x] Define requirements (actually, limitations) for an MVP on a PCB\n- [x] Prototype of a game pad using a breadboard.\n- [x] Look for a power supply board and a battery.\n- [x] Look for an audio amplifier board and a speaker.\n- [x] Learn about displays.\n- [ ] ~~Look for a perf board and buttons for the game pad.~~\n- [ ] ~~Design an enclosure?~~\n\n### General\n\n- [ ] Test Raspberry Pi GPIOs voltage: should be 3.3V.\n- [x] Test PICO-8 on the Raspberry Pi.\n- [ ] ~~Test PICO-8 on the RG35XX~~.\n- [ ] Prototype a display using an Adafruit TFT display.\n- [x] Learn about Eagle CAD\n\n### For the MVP\n\n- [x] Order a Game Boy Color shell.\n- [x] Look for a display that fits on a Game Boy Color shell.\n- [ ] Design a PCB based on the Gaboze Pocail (see [Similar projects](#similar-projects))\n- [x] List MVP components\n- [x] Order display\n- [x] Order RPi Zero W and charger\n- [ ] Order audio amp plus components (~~speaker~~, headphones jack, volume wheel, capacitors \u0026 resistors)\n- [ ] Order PCB\n\n## Requirements and limitations for PCB version (MVP)\n\n- PCB that fits in a Gam Boy Color or Pocket shell\n- Holes for RPi headers\n- Power the device by powering directly the RPi (no battery)\n- Connect a display to the PCB\n- Display connector on the PCB?\n- Buttons directly on the PCB (Retrogram from Adafruit will be needed)\n- Amplifier on the PCB with through holes components or the Adafruit PAM8302\n- Volume wheel and headphone jack\n- 8 ohms speaker\n- Power switch?\n- USB (mini?) connector to plug the chord on the PCB and a connection to the RPi\n- Game Boy Color shell with no modifications (hopefully)\n\n## Hardware Prototype\n\n- [x] Install Raspberry PI OS\n- [x] Configure Raspberry PI to boot to console \n- [x] Install PICO-O8 \n- [ ] Solder the 50 pin connector to the LCD screen adaptor\n- [ ] Solder headers for the LCD screen adaptor\n- [ ] Test LCD screen with the Raspberry Pi 3 A+\n- [ ] Test buttons\n\n## MVP Bill Of Materials (BOM)\n\n| Part | Product | Estimated Price |\n| --- | --- | --- |\n| Raspberry Pi Zero 2 W | [Adafruit](https://www.adafruit.com/product/5291) | $15.00 |\n| Raspberry Pi charger | [Adafruit](https://www.adafruit.com/product/1995) | $8.25 |\n| Display | [Adafruit](https://www.adafruit.com/product/1774) | $14.95 |\n| RPi headers | ? | $0.00 |\n| Audio amplifier | [Adafruit PAM8302](https://www.adafruit.com/product/2130) | $3.95 |\n| Volume wheel | ? | $0.00 |\n| Headphone jack | ? | $0.00 |\n| 100uf capacitor (headphones) | ? | $0.00 |\n| 100K ohms resistor (headphones) | ? | $0.00 |\n| 8 ohms speaker | [Handheld Legend](https://handheldlegend.com/products/game-boy-color-pocket-clear-speaker-funnyplaying?_pos=1\u0026_sid=534442f70\u0026_ss=r) | $3.99 |\n| Game Boy Pocket Shell | [Handheld Legend](https://handheldlegend.com/products/game-boy-pocket-replacement-shell-housing?_pos=1\u0026_sid=d40894297\u0026_ss=r) | $7.99\n| Game Boy Pocket Silicone Membranes | [Handheld Legend](https://handheldlegend.com/products/game-boy-pocket-silicone-button-pads?_pos=1\u0026_sid=6641bb0e7\u0026_ss=r) | $2.79 |\n| Game Boy Color Shell | [Amazon](https://www.amazon.com/dp/B09HH5B6PB) | $20.66 |\n\n## MVP details\n\n### Audio Amplifier\n\nThe amplifier can consist of a circuit similar to the one present on the Gaboze-Pocaio, using the LM4875M/NOPB. The circuit is basically the example documented in the data sheet.\n\nThe LM4875M/NOPB provides a way to disconnect the speaker when headphones are detected.\n\nThe circuit itself includes the following components:\n\n| Component | Description | Reference part | Value |\n| --- | --- | --- | --- |\n| R17 | Potentiometer | | ? | 27 kOmhs |\n| R18 | Resistor | [ERJ-PA3J151V](https://www.digikey.com/en/products/detail/panasonic-electronic-components/ERJ-PA3J151V/5035990) | 150 Ohms |\n| R19 | Resistor | [ERJ-PA3J104V](https://www.digikey.com/en/products/detail/panasonic-electronic-components/ERJ-PA3J104V/5035972) | 100 kOhms |\n| C7 | Capacitor | [CL10C221JB8NNNC](https://www.digikey.com/en/products/detail/samsung-electro-mechanics/CL10C221JB8NNNC/3886706?s=N4IgTCBcDaIMIBkCMAGOYxIFICEAcAckXCALoC%2BQA) | 220pF |\n| C8 | Capacitor | [CL10A105KP8NNC](https://www.digikey.com/en/products/detail/samsung-electro-mechanics/CL10A105KP8NNNC/3886840) | 1uF |\n| C9 | Capacitor | [CL10A105KP8NNC](https://www.digikey.com/en/products/detail/samsung-electro-mechanics/CL10A105KP8NNNC/3886840) | 1uF |\n| C10 | Capacitor | [6TPH100MAEA](https://www.digikey.com/en/products/detail/panasonic-electronic-components/6TPH100MAEA/5371997) | 100uF |\n| J1 | Audio Jack | [SJ1-3525NG-GR](https://www.digikey.com/en/products/detail/cui-devices/SJ1-3525NG-GR/2295990) | - |\n| J2 | Speaker | [SKU PRT-09914 - example](https://www.digikey.ca/en/products/detail/mallory-sonalert-products-inc/PSR-20F08S-JQ/2071438) | 8 Ohms |\n\n### Headphones jack\n\nThe following diagram shows how to connect the [SJ1-3525NG-GR](https://www.digikey.com/en/products/detail/cui-devices/SJ1-3525NG-GR/2295990) audio jack to the [LM4875M](https://www.digikey.com/en/products/detail/texas-instruments/lm4875m-nopb/1871687). Some of my notes are in Spanish.\n\n![Audio jack connection](images/audio-jack-connection.jpg?raw=true \"Audio jack connection\")\n\nThe diagram shows the audio jack pins (1 to 5) and what should be connected to each pin:\n\n* Pins `4` and `5` are connected to pin `3 of the amplifier` (LM4875M), which is the HP-Sense headphone control pin. This control pin deactivates the speaker when the headphones are connected (the switches are open).\n* And pins `2` and `3` are connected to `pin 5 of the amplifier` (the output), which is the audio source (audio signal).\n\n|PIN| SJ1-3525NG  | LM4875M |\n| - | ----------- | ------- |\n| 1 | sleeve      | GND     |\n| 2 | tip         | 5       |\n| 3 | ring        | 5       |\n| 4 | tip switch  | 3       |\n| 5 | ring switch | 3       |\n\n### Speaker\n\n*TODO*\n\n### Volume wheel\n\n*TODO*\n\n### Display\n\nPossible displays, based on the Game Boy Pocket shell window size:\n\n- Maybe the best option, although I would need to modify the GBP shell and the display would not cover the entire window (in the Game Boy Color, the display does cover the shell's window): https://www.adafruit.com/product/1774\n- Maybe this one for the Game Boy Color shell: https://www.adafruit.com/product/4278\n- https://www.digikey.com/en/products/detail/displaytech/DT024CTFT/6650296\n- https://www.digikey.com/en/products/detail/newhaven-display-intl/NHD-2-4-240320CF-CSXV-F/6193108\n- https://www.digikey.com/en/products/detail/displaytech/DT024DTFT/6650298\n- https://www.digikey.com/en/products/detail/focus-lcds/E22RA-FW280-N/12182136\n- https://www.digikey.com/en/products/detail/focus-lcds/E22RB-FW1180-N/12182167\n- https://www.digikey.com/en/products/detail/focus-lcds/E24GA-I-CW1000-N/16602032\n- https://www.digikey.com/en/products/detail/dlc-display-co-ltd/DLC0240AAM06CB-2/13624834\n- Only option? https://4dsystems.com.au/mwdownloads/download/link/id/777/\n\nGame Boy measurements: \n\nhttps://www.nintendo.co.uk/Support/Game-Boy-Pocket-Color/Product-information/Technical-data/Technical-data-619585.html\n\nThis is a common screen for the Game Boy Color:\n\n```\nLCD-39575-003/111\nSize: 3.2”\nResulotion: 480X360\nType of Screen: LCD\nType of Flex Ribbon Connector: Clip\n```\n\nIn the end, I will use the Game Boy Color shell, because there is more room for modern displays. The Pocket requires displays that are not available anymore.\n\nThe best screen for the Game Boy Color is Adafruit's https://www.adafruit.com/product/1774\n\n### Game Boy Pocket Shell\n\nScreen area measurements:\n\n| Area | Width | Height |\n| --- | --- | --- |\n| Display area (with screen protection frame)| 4.9cm (49mm) | 4.4cm (44mm) |\n| Screen holder | 5.7cm (57mm) | 5.8cm (58mm) |\n| Max screen size | 5.9cm (59mm) | 6.5cm (65mm) |\n\n### Game Boy Color Shell\n\n| Area | Width | Height |\n| --- | --- | --- |\n| Display area (with screen protection frame)| 4.4cm (44mm) | 4cm (40mm) |\n| Screen holder | 5.6cm (56mm) | 5cm (50mm) |\n| Max screen size | 5.9cm (59mm) | 7.1cm (71mm) |\n\n## RetroPi\n\nTo configure wifi see the following links:\n\n- https://funconsumertech.com/retropie-wi-fi-setup-an-illustrated-step-by-step-guide/\n- https://retropie.org.uk/docs/Wifi/\n\nConfigure SSH:\n\nhttps://retropie.org.uk/docs/SSH/\n\n1. Boot to RetroPie\n2. Enter shell by pressing Ctrl + F4\n3. cd /boot\n4. sudo touch ssh\n5. sudo reboot now\n\nInteresting way to connect the RPi to a PCB: pogo pins\n\nhttps://www.adafruit.com/product/5382\n\n## Buttons\n\n### Buttons location on the PCB for the Game Boy Pocket (will not use)\n\nGrid is configured to 0.5mm (Alt 0.125mm)\n\n| Button | X | Y | Angle |\n| --- | --- | --- | --- |\n| UP | 12.2 | 44.4 | 270 |\n| DOWN | 12.2 | 29.4 | 90 |\n| LEFT | 4.7 | 36.9 | 0 |\n| RIGHT | 19.7 | 36.9 | 180 |\n| A | 62.47 | 38.7 | 180 |\n| B | 48.42 | 34.21 | 180 |\n| START | 40.655 | 16.01 | 0 |\n| SELECT | 29.055 | 16.01 | 0 |\n\n### Connection with the Raspberry Pi \n\nTo create a virtual keyboard using the GPIOs of the Raspberry Pi, I am using Adafruit's Retrogame software:\n\nhttps://github.com/adafruit/Adafruit-Retrogame\n\nNote this repository is in maintenance mode.\n\nThis is a tutorial on how to install Retrogame:\n\nhttps://learn.adafruit.com/retro-gaming-with-raspberry-pi/adding-controls-software\n\n## Display\n\nIn the end, I will use Adafruit's https://www.adafruit.com/product/1774\n\nBut this was my investigation:\n\nA good idea might be to use a capacitive touch screen, such as the Waveshare 3.5inch DPI LCD:\n\n- [See on Amazon](https://www.amazon.com/Waveshare-3-5inch-Capacitive-LCD-DPI/dp/B08TBF5PHH/ref=sr_1_1?crid=NSXCFL0ML9MO\u0026keywords=3.5inch+DPI+LCD\u0026qid=1679185510\u0026s=electronics\u0026sprefix=3.5inch+dpi+lcd%2Celectronics%2C309\u0026sr=1-1)\n- [See on waveshare](https://www.waveshare.com/3.5inch-DPI-LCD.htm)\n\nDPI displays seem to be more appropriate, since this type of displays have a faster refreshing rate (compared to the SPI displays). Also, the capacitive screen would be useful to use PICO-8 Splore to look for games.\n\nThere is selection table at the bottom of this link:\n\nhttps://www.waveshare.com/product/3.5inch-RPi-LCD-B.htm\n\nThis display connects on top of the Raspberry Pi as a hat, which make the handheld device too thick:\n\n![Display on top of the Raspberry Pi](images/3.5inch-dpi-lcd-5.jpg?raw=true \"3.5 inch DPI LCD\")\n\nThis is a tutorial on how to connect and configure a display similar to the one mentioned above:\n\nhttps://www.youtube.com/watch?v=vCAGzLGTUk4\u0026t=11s\n\nThere is also a 4 inch square display, which would be perfect for PICO-8, but it might be too big. It is also more expensive:\n\nhttps://www.waveshare.com/4inch-DPI-LCD-C.htm\n\nAnother option is to use something like the Adafruit PiTFT Plus 320x240 2.8\" TFT + Capacitive Touchscreen. The HAT uses the high speed SPI interface on the Pi. This will require a tool called fbcp (framebuffer copy). See Pocket PiGRRL:\n\nhttps://www.adafruit.com/product/2423\n\nThe Adafruit PiTFT 2.2\" HAT Mini Kit - 320x240 2.2\" TFT - No Touch could also be a good option:\n\nhttps://www.adafruit.com/product/2315\n\n## Power\n\n\u003e For the MVP, I might not install a power booster nor a battery!\n\nFor the MVP, this wall power supply can be enough:\n\nhttps://www.adafruit.com/product/1995\n\nSince the battery will provide 3.7V only, we will need a circuit that can boost the battery voltage up to 5V and 1A (for a Raspberry Pi Zero, at least).\n\nWe also need to charge (constant current and constant voltage) and a protection circuit (over discharge and short circuit).\n\nThi video shows how to use the following components:\n\nhttps://www.youtube.com/watch?v=VczNDDkFiAI\n\ntp4056 \nMT3608\n3.7V lithium battery\nswitch: https://www.adafruit.com/product/805\n\nInteresting videos:\n\n- Power for your electronic projects (does not talk about battery charging): https://www.youtube.com/watch?v=IT19dg73nKU\n- DIY LiPo Charge/Protect/5V Boost Circuit: https://www.youtube.com/watch?v=Fj0XuYiE7HU\n- How to design a battery charger circuit: https://www.youtube.com/watch?v=XBKOkvwgwNw\n\n## Audio\n\nThe easiest option is to use the Adafruit PAM8302:\n\nhttps://www.adafruit.com/product/2130\n\nThis is the wiring tutorial:\n\nhttps://learn.adafruit.com/pocket-pigrrl/pam8302\n\nAnother option is to make a circuit using the LM4875M/NOPB:\n\nhttps://www.digikey.com/en/products/detail/texas-instruments/LM4875M-NOPB/1871687\n\nThis looks pretty simple, and it is implemented in the Gaboze-Pocaio as well!\n\n## Enclosure\n\nIdeas for enclosures:\n\n- Wooden box: https://www.youtube.com/watch?v=iPKIugXvlM4\n\n## Similar projects\n\n- PICO-8 handheld: https://www.youtube.com/watch?v=R3GZflUXv0g\n- Pocket PiGRRL: https://learn.adafruit.com/pocket-pigrrl/overview\n- PiGRRL Zero: https://learn.adafruit.com/pigrrl-zero/overview\n- Game Boy Zero: https://www.youtube.com/watch?v=XzYMWNiUN_M\u0026t=229s\n- Easier Game Boy Zero with parts and diagrams: https://www.youtube.com/watch?v=KfKn2JdnxF0\n- TurtlePi: https://www.youtube.com/watch?v=BnAuwz3R98o\n- Just a controller: https://www.youtube.com/watch?v=1k49VVNHvtU\n- No battery: https://www.youtube.com/watch?v=IP3QVGmd_90 and https://www.youtube.com/watch?v=VYeIR5n5Few\n- A PCB like the one I am imagining: https://www.youtube.com/watch?v=pEI89ICLwIE and the GitHub repo: https://github.com/Gaboze-Pocaio/Round-2 and https://github.com/32teeth?tab=repositories\n- Retro-esp32: https://github.com/retro-esp32/RetroESP32-Hardware\n- SAMEBOY (pretty cool project, but no open sourced): https://www.youtube.com/watch?v=S-_VMUlxPx4 and https://www.youtube.com/watch?v=WAgPQLskKko.\n- SAMEBOY idea for the display: https://youtu.be/CCwOafAE-Js?t=698\n- CircuitPython Deshipu projects: https://hackaday.io/project/186921-game-22\n- PiOCKET Tiny: https://hackaday.io/project/21553-pi0cket-tiny and https://www.youtube.com/watch?v=xnwMN_q6XjE\n\n## Other resources\n\n- Getting started with Eagle Part 1 (Autodesk) - https://www.youtube.com/watch?v=j79RRCUsD2c\n- Getting started with Eagle Part 2 (Autodesk) - https://www.youtube.com/watch?v=rboxHQR4OCQ\n- Inspecting parts in Eagle (Adafruit): https://www.youtube.com/watch?v=VfyzJXDpCm8\n- Eagle cross-reference LABELS: https://electronics.stackexchange.com/questions/334798/what-do-decimal-alphanumeric-suffixes-after-a-slash-mean-in-a-schematic-cross-re\n- Copy the PCB outline: https://community.element14.com/products/eagle/f/forum/8069/eagle---how-to-copy-between-board-files\n- Copy a component from another library in Eagle: https://www.youtube.com/watch?v=lFzv7pSWjh8\n- Create a custom library in Eagle: https://www.youtube.com/watch?v=FWbGdwL3-OU\n- Circle board with flat sides: https://www.youtube.com/watch?v=-vxEbdl68Ro\n- Game Boy shells scans: https://www.reddit.com/r/Gameboy/comments/sn3k7u/attention_gameboy_modders_and_tinkerers/\n- Game Color digital camera patent: https://patents.google.com/patent/US7972216B2/en?q=(gameboy+color)\u0026oq=gameboy+color\n- Electronic Product Development MASTERCLASS: https://www.youtube.com/watch?v=LxtdV_6XW6A\n- LCD connection types: https://focuslcds.com/LCD-Connection-Types#:~:text=Flexible%20printed%20circuit%20(FPC)%20and,laptops%20and%20mobile%20phone%20displays\n- How to solder SMD components: https://www.youtube.com/watch?v=J4L76E1xaME\n- Understanding Audio Jack Switches and Schematics: https://www.cuidevices.com/blog/understanding-audio-jack-switches-and-schematics\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisacben%2Fpicoboy-dev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisacben%2Fpicoboy-dev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisacben%2Fpicoboy-dev/lists"}