GBScribe for Game Boy Advance

website gba game homebrew printer
Share
GBScribe video demonstration on my YouTube channel

Introducing GBScribe, a word processor and drawing tool for the Game Boy Advance! I designed this program to take advantage of the Game Boy Printer in the same way that people print out Word documents and drawings on standard inkjet printers. GBScribe allows you to type text documents and draw pictures. You can print them directly to the Game Boy Printer and even save your work for later.

Download the program and its source code at KyberCritter/GBScribe on GitHub.

Background

I’ve been toying around with my retro gaming hardware a lot this year, but I decided it was finally time that I enter the world of homebrew software. I started with my favorite handheld system of all time, the Nintendo Game Boy Advance. My main GBA is a heavily-customized ABG-001 unit, the original wide model. I added a translucent crimson shell with white buttons and accents to represent my alama mater, The University of Alabama. The screen is IPS, and I installed several other mods under the hood.

My custom translucent crimson Game Boy Advance showing the GAME BOY boot screen
My custom translucent crimson Game Boy Advance showing the GAME BOY boot screen

I also own the Game Boy Printer for the original Game Boy and Game Boy Color. It’s a 4-shade monocolor thermal printer that connects to a Game Boy via Link Cable, essentially a tiny receipt printer. Over 100 games can use the Game Boy Printer, including the Game Boy Camera and Pokemon Yellow Version. This includes printings Game Boy Camera photos straight from the handheld. Many Pokemon games let players print out images of their Pokemon, their statistics, their Pokedex progress, and more.

My Game Boy Printer with a roll of thermal paper loaded
My Game Boy Printer with a roll of thermal paper loaded
The hardware required to run GBScribe: a bundled Link Cable, the Game Boy Printer, an EZ-Flash flash cartridge, and a Game Boy Advance
The hardware required to run GBScribe: a bundled Link Cable, the Game Boy Printer, an EZ-Flash flash cartridge, and a Game Boy Advance

But how did I load a custom program onto my GBA? I used a flash cartridge, specifically an EZ-Flash Omega Definitive Edition. This is an unofficial GBA cartridge with a MicroSD card slot that allows me to run homebrew programs on real hardware.

EZ-Flash Omega Definitive Edition flash cartridge with box and microSD card reader
EZ-Flash Omega Definitive Edition flash cartridge with box and microSD card reader

The Problem

Although the GBA natively supports original Game Boy and Game Boy Color cartridges and some accessories, my flash cartridge does not. It runs Game Boy (Color) games through emulation and doesn’t allow use of the Link Cable or any other serial port accessories. So how will I print out my work? I’ll use AI to create a new software protocol so my GBA-native program can use unsupported accessories!

The Solution

Several other Game Boy enthusiasts before me documented Link Cable communication and Game Boy Printer functionality. You can find them in the References section of this post. Thanks to their efforts, modern developers can use the Game Boy Printer with their homebrew software.

I used coding-focused LLMs to develop the app. They iterated on the program in mGBA, a Game Boy Advance emulator. This allowed me to test the program without loading it onto my MicroSD card every time I needed to tweak the program. However, mGBA doesn’t provide Game Boy Printer emulation, so I had to perform all printer tests on real hardware.

All in all, the project took only a handful of hours. Within two hours of finishing the planning documents, the first functional version of the program was ready. I extended its functionality and improved the interface for the next two days.

After that, I spun the printing functions into their own library, AdvancePrint.

GBScribe Features

GBScribe title screen with the logo, the tagline "Write, Draw, Print", and a "Press Start" prompt
GBScribe title screen with the logo, the tagline "Write, Draw, Print", and a "Press Start" prompt

Word Processing

GBScribe word processing mode showing a text document and the on-screen QWERTY keyboard
GBScribe word processing mode showing a text document and the on-screen QWERTY keyboard

In word processing mode, you can write a full document with an on-screen QWERTY keyboard. The page is rendered at the same width 160-pixel width that it prints at. The keyboard has four layers (lowercase, uppercase, symbols, and shapes), including ASCII, arrows, shapes, and box-drawing characters. By default, text wraps at the end of a word. You can change it to wrap mid-word. A single document holds up to 16,000 characters.

Drawing

GBScribe drawing mode showing a pixel drawing of a Game Boy next to the drawing tools
GBScribe drawing mode showing a pixel drawing of a Game Boy next to the drawing tools

You can draw on a 160x144 pixel canvas, the size of a printed page. Tools include a pencil, eraser, lines, rectangles, and a stamp library (hearts, stars, smileys, houses, trees, and check marks). Drawing is limited to 4 shades, like the original Game Boy and the Game Boy Printer. You can change the colors used for these shades, but this doesn’t affect the drawing.

Printing

A Game Boy Advance printing a test page to the Game Boy Printer
A Game Boy Advance printing a test page to the Game Boy Printer

You can print almost anything you see in GBScribe.

  • Text documents
  • Drawings
  • Test pages from classic books
  • The author’s contact card, complete with a scannable QR Code

Save Your Work

There are eight save slots, each containing either a document or a drawing. You can also load your saved files straight from the title screen to pick up where you left off. You can save your work whether you run the program from a flash cartridge or a custom single-program cartridge with flash memory. The program automatically detects the appropriate save method. Please note that only the flash cartridge save method has been tested.

Easter Eggs

I’ve included some secrets in GBScribe. Let me know if you find any!

The Game Boy Printer printing GBScribe's contact card with a scannable QR Code while the Game Boy Advance shows the contact information screen
The Game Boy Printer printing GBScribe's contact card with a scannable QR Code while the Game Boy Advance shows the contact information screen

Acknowledgements and References

GBScribe is free software, licensed under the MIT License — see LICENSE.md.

Not affiliated with, endorsed by, or sponsored by Nintendo. The use of brand names and trademarks in this document are for informational purposes only.

  1. Game Boy Printer on Wikipedia
  2. Game Boy Printer on Bulbapedia
  3. GBATEK by Martin Korth
  4. gba-link-connection by afska
  5. Game Boy Printer on Pan Docs
  6. In Depth: The Game Boy Printer by Shonumi
  7. Raphael-Boichot/PC-to-Game-Boy-Printer-interface on GitHub by Raphael Boichot