Source code: github.com/User7142/pocket-adventure-fx – engine and build tool, no game data included.

(Fig. 1: The title screen on the Arduboy FX – 128×64 pixels, 1 bit; the logo comes from your own copy of the game)
After Monkey Island on the STM32F429I-Discovery I wanted to know how far down it goes. The Arduboy FX is a game console the size of a credit card: an 8-bit ATmega32U4 with 2.5 KB of RAM, a 128×64 pixel black-and-white screen, six buttons and a piezo speaker. Running ScummVM on it is impossible. But the first scenes of The Secret of Monkey Island – with the original backgrounds, characters, texts and music – turned out to be possible.
Demonstration
(Video: From the language selection via the lookout, the dock and the SCUMM Bar to the ghost ship and the street, played on the Arduboy FX)
You need your own copy of the game
Graphics, texts and music belong to Lucasfilm Games / Disney. None of it is part of this project. What I wrote is Pocket Adventure FX: a small adventure engine for the Arduboy FX plus a description of the scenes – and that description contains no texts, only references like r38.s203#1 (“first text in script 203 of room 38”).
When you build the game, a converter reads your own copy of the VGA floppy version (DISK01.LEC … DISK04.LEC), takes the backgrounds, characters, music and texts from it and writes everything into one .arduboy package. If you pass an English and a German copy, the game asks for the language at start. The package is for your own Arduboy only.
Hardware
| Console | Arduboy FX |
| CPU | ATmega32U4, 8 bit, 16 MHz |
| Memory | 32 KB flash (29 KB for the program), 2.5 KB RAM, 1 KB EEPROM |
| FX chip | 16 MB SPI flash |
| Display | 1.3 inch OLED, 128×64, black and white |
| Sound | piezo speaker |
Without the FX chip none of this would work: all graphics, texts, scripts and music live there, about 110 KB for this part of the game in two languages. The program itself is 21 KB, and it uses 2 KB of the RAM – half of that is the screen buffer.

(Fig. 2: The lookout point on Mêlée Island – Guybrush introduces himself)
Controls
- D-pad: moves the cursor (it accelerates when you hold it)
- A: executes the sentence – “Walk to” or the selected verb
- B: opens the menu with the nine verbs and the inventory
Dialog options are selected with up/down and A. Long options are shown in full above the list.
What is in it
The first scenes of Part One, “The Three Trials”:
- the intro with the title melody and the conversation with the lookout
- the chapter card “Part One” with its music
- the dock, the SCUMM Bar with the important-looking pirates and the kitchen with the cook – who leaves his kitchen every 30 to 50 seconds, just like in the original
- the ghost ship in the river of lava when you leave the bar for the first time
- the street with the men of low moral fiber, their rat, the citizen of Mêlée and the four doors
- the Voodoo Lady
- the map of Mêlée Island, where you can walk around; only the village and the lookout can be entered
Everything else says “Not included in this version.”

(Fig. 3: The dock – the room is wider than the screen and scrolls with Guybrush)
How it works
First attempt: the original scripts
My first plan was to run the original SCUMM scripts on the Arduboy, like ScummVM does. On the PC this worked – I wrote a small virtual machine that played the intro, the bar and the kitchen from the original bytecode. Then I measured what the Arduboy would need: the interpreter core alone was 30.7 KB of program code. The whole program may have 29 KB, and the game state did not fit into the 2.5 KB of RAM either. So I stopped and went the other way.
Second attempt: a small engine and a translated scene description
The engine on the Arduboy knows only what this part of the game needs: rooms with walk boxes, characters, objects, verbs, an inventory, dialogs and two background routines (the cook, the rat). The scenes are written in a small script language. I read every original script I needed with the disassembler from the first attempt and rewrote it step by step – the same lines, the same conditions, the same timings. A compiler written in Python turns this into data for the FX chip.
Some things needed more than expected:
- Walk boxes: the map of Mêlée has 46 of them. In RAM they would need more than 500 bytes, so the engine reads them from the flash chip whenever it needs one.
- Depth: in the original, every walk box says how big a character is there. Guybrush is stored in eight sizes, and the engine picks the right one – in the street he becomes tiny when he walks towards the back.
- 1-bit graphics: each room has its own settings for the conversion. The ghost ship is dark blue in front of red lava – in grayscale both look the same, so this room uses only the blue channel.
- Music: the songs are AdLib tracks with up to nine voices. The converter picks the melody voice and plays it on the piezo with a timer interrupt.
- Dialogs: the original builds its dialog menus in code. My compiler does the same and calculates how many options can be visible at the same time, so the engine reserves exactly that much RAM.
Testing
Two test setups play the game automatically in both languages: the same engine source compiled for the Mac with a small replacement of the Arduboy libraries, and the real .arduboy package in the Ardens emulator, controlled by reading the emulated RAM. Both compare every line of text with the texts from the original copy.
Source code
The project is called Pocket Adventure FX – a neutral name, because it is an engine and a build tool, not a release of the game: github.com/User7142/pocket-adventure-fx
The engine, the compiler and the tools are licensed under the GPL v3 (or later). Building needs macOS or Linux, Python 3.10 or newer and curl:
./build.sh ~/Games/MONKEY ~/Games/MONKEY-DE
The result is dist/PocketAdventureFX.arduboy for the Arduboy Toolset, a cart editor or the Ardens emulator.
Limits
- Only the first scenes of Part One are included; the forest, the town beyond the street and the three trials are not.
- The screen is 64 pixels high, the original 144. Characters are drawn a little larger than the backgrounds so you can still recognize them.
- Music is one voice on a piezo speaker.
- There is no save game – the cut is short enough to play it in one go.