
Gbtty
maxfierke/gbtty
gbtty: what if your game boy was also a VT100-compatible 20x18 ANSI terminal?

gbtty: what if your game boy was also a VT100-compatible 20x18 ANSI terminal?
Gbtty rp2354a is an open-source printed circuit board by maxfierke, from the maxfierke/gbtty repository on GitHub, published under the Apache-2.0 licence. It is a 2-layer board of 53.5 × 26 mm with 37 parts on 66 nets, routed with 329 tracks and 48 vias.
It is built around the RP2354A, ABM8-272-T3 and SM03B-SRSS-TB. Its parts include 18 capacitors, 9 resistors, 3 ICs, 3 connectors and 1 switch. It belongs with the retro computing and games boards and the RP2350 boards of this library.
gbtty (pronounced: gib-bit-EE / "gibbity") is a Game Boy (Color) hardware and software project to turn the Game Boy into an ANSI-compatible terminal.
The primary goal of this project is funsies. I wanted to work on a side project where I could use Rust, play around with an RP2040, and do something related to my current hyperfixation: the Game Boy.
Secondary goals include providing a useful-enough implementation of an ANSI terminal, at least to be VT100-compatible to the extent that matters for modern purposes.
Some stretch goals include supporting a broad set of ANSI escape codes, such as text/background color on the Game Boy Color, some support for scrollback, and perhaps even some support for some TUI elements depending on how wild I decide to get with this.
I am not planning on turning this into an interactive terminal accepting input to be passed back to the host. The only possible way to make this work would be using some sort of on-screen keyboard control, and I am simply not masochistic enough to use that.
The software side of things is mostly working for basic printing and support for cursor movement, cursor reporting, and a few other CSI sequences. It's currently setup to compile and run on the Waveshare RP2040-Zero and configured to run on this pico-gb-printer board as I happened to have a couple of these, but should be configurable to run on other similar boards by remapping the GPIOs & swapping the BSP crate.
The hardware is still a work in-progress. The pcb/ has a few different v1.0
designs that still need to be tested. The design is more-or-less the same as
other USB-to-link-cable boards out there, but I'm eventually trying to get it as
close as I can to the footprint of a USB-to-UART adapter.
The firmware of the link adapter (contents of the root & src/ directory) is
licensed under either the Apache License Version 2.0 or
The MIT License
The PCB (contents of pcb/) is licensed under
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International. Commercial uses are strictly prohibited.
The terminal emulator ROM itself (contents of the gb/ directory) is derived
from orangeglo's Better Button Test, which is licensed under the GNU General
Public License Version 3, so the same license applies.
Game Boy™ is a trademark of Nintendo of America Inc.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 10 | 100nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C2, C3, C4, C5, C6, C7, C9, C11, C15, C17 |
| 4 | 4.7uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C1, C8, C10, C14 |
| 2 | 100 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R8, R9 |
| 2 | 10uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C12, C13 |
| 2 | 15pF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C16, C18 |
| 2 | 1k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R6, R7 |
| 2 | 27 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R4, R5 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1, R2 |
| 1 | 3.3uF | RP2350_60QFN_minimal:L_pol_2016 | L1 |
| 1 | 33 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R3 |
| 1 | 3V3 | TestPoint:TestPoint_Pad_D1.0mm | TP1 |
| 1 | ABM8-272-T3 | ABM8-272-T3:XTAL_ABM8-272-T3 | Y1 |
| 1 | ADG3304 | ADG3304BRUZ_REEL7:RU_14_ADI | U2 |
| 1 | GameBoy_LinkPort | Gekkio_Connector:GameBoy_LinkPort_MGB_Horizontal | J2 |
| 1 | NCP1117-3.3_SOT223 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U1 |
| 1 | RP2354A | Package_DFN_QFN:QFN-60-1EP_7x7mm_P0.4mm_EP3.4x3.4mm | U3 |
| 1 | SM03B-SRSS-TB | Connector_JST:JST_SH_BM03B-SRSS-TB_1x03-1MP_P1.00mm_Vertical | J3 |
| 1 | SW_Push | Button_Switch_SMD:SW_SPST_TL3305A | SW1 |
| 1 | USB_C_Receptacle_USB2.0_16P | Connector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal | J1 |

maxfierke/gbtty
gbtty: what if your game boy was also a VT100-compatible 20x18 ANSI terminal?
SK-Electronics-Consulting/electronics-widgets
Small, Custom Tools for Electronics

sequoia-hope/rp2350-motor-controller
An RP2350 based brushless motor controller


ROAR-QUTRC/perseus-v3
The code base for the QUT Robotics Club ROAR teams rover Perseus starting 2026


empriselab/mote
A low cost, high confidence mobile robot optimized for education.


ErichZimmer/OpenSync
An open source synchronizer for velocimetry of fluids.
It measures 53.5 × 26 mm and has 2 copper layers, 1.6 mm thick.
37 parts, built around the RP2354A, ABM8-272-T3 and SM03B-SRSS-TB. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the maxfierke/gbtty repository on GitHub, at the commit this page was made from: the board is pcb/gbtty_rp2354a.kicad_pcb and its schematic pcb/gbtty.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the Apache-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).