How the Game Boy Printer Works: Heat, Paper and a Conversation in Hex
Open a Game Boy Printer and you will look in vain for an ink cartridge. There is no ribbon, no toner and no nozzle. What it has instead is a row of tiny heaters, a roll of paper that darkens when it gets warm, and a surprisingly strict set of rules for what the Game Boy is allowed to say to it.
This is part two of our series on the printer. Part one looked at the machine itself and its place in 1998. Here we open the lid and follow a picture from the Game Boy's screen, down the link cable, onto a sticker.

A row of 160 heaters
The print head is a single line of 160 heating elements, and the number is no accident. The Game Boy's screen is 160 pixels wide, and the printer was designed to put exactly that screen on paper. One pixel on the display is one dot on the print, so a photograph from the Game Boy Camera comes out at the same proportions it had on the screen.
Each element is switched on for a fraction of a second while the paper moves past. The longer it stays on, the darker the dot. That is how the printer reproduces the Game Boy's four shades of grey without any grey ink: a dark pixel simply gets more heat than a light one.
The same trick explains a quirk every owner eventually meets. A heater that fails leaves the same thin white line down every print from then on. On a photo it hides in the picture. On text or a barcode it cuts straight through.
The paper
The printer paper (MGB-009) is thermal paper with a self-adhesive back, so every print could double as a sticker. Nintendo sold it in several colours, and the collection holds white, yellow and blue rolls from Japan.
Game Boy Printer Paper - Yellow Game Boy Printer Paper - Blue Game Boy Printer Paper - White
Thermal paper has one weakness: the coating that darkens on purpose also darkens by accident. Heat, light and time slowly turn old rolls grey, and printed stickers left in bright light fade. A drawer is kinder to them than a fridge door.
The Game Boy Printer protocol
The printer hangs on the link cable, in the place where a second Game Boy would normally sit. The Game Boy drives the clock, which means both sides exchange one byte at the same moment: every time the Game Boy sends a byte, it receives one back. The printer can only speak when it is spoken to.
Everything travels in packets. Each one opens with the same two magic bytes, so the printer knows a message is starting, and ends with two empty bytes on which the printer gives its answer. The layout below follows Pan Docs, the technical reference maintained by the Game Boy development community.
Part | Bytes | Game Boy sends | Printer answers |
|---|---|---|---|
Magic | 2 | 88, 33 | 00 |
Command | 1 | see next table | 00 |
Compression | 1 | 0 or 1 | 00 |
Data length | 2 | low byte, high byte | 00 |
Data | 0 to 640 | the payload | 00 |
Checksum | 2 | low byte, high byte | 00 |
Reply 1 | 1 | 00 | 81 (device ID) |
Reply 2 | 1 | 00 | status byte |
The checksum is simply the sum of every byte from the command onwards. The printer adds them up too, and if its sum differs from the one it received, a bit got lost on the way and it says so instead of printing rubbish.
Four commands
The whole vocabulary fits on a sticker. Four commands cover everything the Game Boy Camera, Pokémon and every other supported game ever asked of the printer.
Code | Command | Data | What it does |
|---|---|---|---|
01 | Initialise | none | Clears the printer's picture memory |
04 | Data | up to 640 bytes | One strip of picture, 160 by 16 dots |
02 | 4 bytes | Prints what has been sent so far | |
0F | Status | none | Asks how the printer is doing |
The picture data is not a bitmap in the modern sense. It uses the Game Boy's own tile format: blocks of 8 by 8 pixels, two bits per pixel, exactly as they sit in the console's video memory. That is why a game can send its screen to the printer almost without converting it. A strip of 160 by 16 dots makes 640 bytes, and 640 bytes is the most a single data packet may carry.
The print command carries four bytes of settings, and each one hides a small story.
Byte | Meaning | Usual value |
|---|---|---|
1 | Number of sheets. 0 means feed only, no printing | 1 |
2 | Margins: upper four bits before, lower four bits after | 13 |
3 | Palette: which of the four greys each colour becomes | E4 |
4 | Exposure: how hot the head runs, about -25% to +25% | 40 |
Eight flags in one byte
Every answer ends with a status byte, and each of its eight bits is a flag. Games rarely show more than a short error message, which is a pity, because the byte says rather precisely what went wrong.
Bit | Flag | What it means |
|---|---|---|
0 | Checksum error | A byte was corrupted on the cable |
1 | Printing | The head is burning paper right now |
2 | Image data full | The picture memory is full |
3 | Unprocessed data | Data waiting, ready to print |
4 | Packet error | A packet arrived in the wrong shape |
5 | Paper jam | The motor turns, but the roller reports no movement |
6 | Other error | Everything else |
7 | Low battery | The six AA cells are running out |
The last one is the flag worth knowing. A printer on tired batteries still prints, only paler, and an owner who never sees the flag blames the paper.
A print job, step by step
Put together, printing a Game Boy Camera photo looks like this. The Game Boy wakes the printer with Initialise and checks that the answer starts with 81, the printer's calling card. Then it sends the picture as a series of data packets, sixteen rows at a time. A full screen of 144 rows takes nine of them. Most software closes the transfer with an empty data packet, sends Print with its four settings, and then keeps asking for the status until the Printing flag drops.
The printer has 8 KiB of memory for the picture, so a job is always a strip of limited height. Longer prints are simply several jobs in a row with the margins set to zero, so the pieces join without a gap.
Small details worth knowing
The protocol has a compression flag, and the documentation describes a simple run-length scheme. The Game Boy Camera, the printer's most famous partner, never uses it. The printer also expects each packet to arrive in one go: a pause of about 100 milliseconds and it resets and forgets what it had.
The sheets byte is a little misleading. It does not count pages, because a roll has no pages. It counts how often the printer repeats what is in its memory, and zero turns the whole command into a simple paper feed.
Why this matters today
Because the language is so small and so well documented, the printer has outlived its games. The status flags make it possible to check a second-hand printer before wasting paper on it, and homebrew developers still write new software for it. The collection's own work on a label-making cartridge, the subject of part four, rests entirely on the tables above.
If you want to see where it all began, our earlier piece on the Game Boy Camera and Printer tells the story of the pocket photo lab. Part three of this series looks at the games that could print, and at which of them still work on an original DMG-01.
Testing a printer with the GB Test Lab
All of this protocol knowledge has a very practical payoff. Because the printer announces its condition in those status flags, you do not have to sacrifice a roll of paper just to find out whether a second-hand unit still works. The museum's own diagnostic cartridge, the GB Test Lab, includes a dedicated PRINTER test that does exactly this: it opens a conversation with the printer, reads back the status byte, fires all 160 heater elements in a dot check and runs an exposure ladder, so you can confirm a printer is connected, alive and heating evenly before you ever trust it with a photo. If you want to see everything it checks, and how a Game Boy can test its own accessories, read about the GB Test Lab cartridge.
The Full Series
Part 1: Nintendo's Sticker Machine of 1998 · Part 2: How the Game Boy Printer Works (you are here) · Part 3: Games That Print









Comments