GitHub

Fox Red Labs / Builds / Arcade

Retro games on a TI LaunchPad

A Game Boy game, Arduboy games, 2048, Minesweeper, CHIP-8 and a ZX Spectrum, each on a screen wired or plugged onto a LaunchPad.

MediumWiring needed

2048 on a 3.5 inch touch screen: swipe to play. An MSPM0 G3519 runs the game and reads the panel.

Parts and steps

Which version

You need

  1. Fetch the game.TERMINAL

    Download the two freely licensed test ROMs and check their hashes.

    bash ports/peanut-gb/fetch_roms.sh

    You should see: ports/peanut-gb/roms/ holds Tobu Tobu Girl and dmg-acid2.

  2. Build the 160 MHz image.TERMINAL

    Build the Educational BoosterPack app with the Game Boy emulator at 160 MHz, drawing every second frame.

    cd portability/boosterpacks/edumkii APP=gameboy EDU_CLK160=1 GB_FLAGS=-DPGB_FRAME_SKIP EDU_TAG=skip ./build.sh mspm33c321a

    You should see: The script prints the build folder and the .out image.

  3. Plug the BoosterPack on and flash.TERMINAL

    Stack the Educational BoosterPack on the LaunchPad. Copy mspm33c321a/MSPM33C321A_<probe serial>.ccxml to mspm33c321a/MSPM33C321A_<serial>.ccxml with your probe serial in place of <probe serial> (xdsdfu -e lists it), then flash the .out the build printed.

    Replace <serial>, <build folder> and <image> before you run this.

    /Applications/ti/ccs2101/ccs/ccs_base/DebugServer/bin/DSLite flash -c mspm33c321a/MSPM33C321A_<serial>.ccxml -e -f -v <build folder>/<image>.out
    A frame of Tobu Tobu Girl drawn by the same emulator code on a Mac

    You should see: The logos run first; the Tobu Tobu Girl title appears after about 28 seconds. A and B together press Start, A starts the game.

Or hand it to a coding assistant

Paste this in a terminal. It hands off to an AI assistant.

git clone --depth 1 --filter=blob:none https://github.com/Fox-Red-Labs/fox-red-labs.git && cd fox-red-labs ./start.sh mspm33c321a arcade --assistant claude

It runs the steps above and reports what it saw.

Not Claude Code? Copy this prompt instead.
Clone https://github.com/Fox-Red-Labs/fox-red-labs and read mspm33c321a/AGENTS.md first. Then run Retro games on a TI LaunchPad on my LP-MSPM33C321A, following docs/builds/arcade.md. Tell me when to plug in a board and what you saw at each step.

If something goes wrong

It stops on a hash mismatchDelete roms/ and run it again; do not use a file it refused.
The SDK is not foundInstall it as mac-setup/README.md says and run the line again.
DSLite reports Device Connection Error ... low power modeReset the probe with xds110reset -s <serial> -a toggle -d 200 (it sits beside xdsdfu) and flash again.

Every fix for this board: the FAQ.

What to build next

Every build. The code for all of them is in the GitHub repository.

Evidence and limitsA Game Boy game plays at console speed on an MSPM33 C321A screen; 2048, CHIP-8 and a ZX Spectrum run on an MSPM0 G3519 touch panel. Ran on 2 boards. Results, sources, timing and limits.

Game Boy: Tobu Tobu Girl on the BoosterPack screen

Expected result: The BoosterPack screen shows Tobu Tobu Girl running at the console's speed.

What this shows

  • A Game Boy emulator keeps console speed on a Cortex-M33 at 160 MHz with a 128 by 128 screen: 0 late frames in 8,167.
  • The 160 by 144 picture is scaled to 128 by 128 by a lookup table while the next line renders and the rows stream out by DMA.
What this does not establish, and limits

What this does not establish

  • Nobody has played it by hand: the buttons were driven by script on the Mac and the stick and buttons were not judged by a person on the board.
  • The screen shows every second frame, about 30 a second.

Limits to keep in mind

  • Aspect ratio: the Game Boy picture is 160 by 144 (10 to 9); the screen shows it at 128 by 128, so it is 20 percent narrower and 11 percent shorter. The true ratio is not kept.
  • Joystick up was not checked by hand on the board, so the direction mapping is unconfirmed.
  • No sound, no saved games.

Sources

Versions, sizes and timing

Image275 kB of flash for the 256 kB game plus emulator, 32.4 kB of RAM at the first imagethe data (CSV)
Speed stepstable scaler, DMA rows, frame skip, 160 MHz: 2.85 million instructions a frame down to 0.59 millionthe data (CSV)

Evidence

  • The 160 MHz frame-skip image ran 8,167 emulated frames with 0 finishing late, paced to the console's 59.7 frames a second; the screen got about 30 a second. README notes
  • The first image, at 32 MHz with the averaging scaler, ran at 6.7 frames a second; the steps that raised it are in the README. the data (CSV)

Other boards

What the status words mean

Works ran here and did what it shouldCould work some of it ran; real porting effort is left; hover for whatNot for this chip the chip or its vendor software cannot; hover for why

Arduboy games: Snake on the BoosterPack screen

Expected result: Snake runs on the BoosterPack screen.

What this shows

  • Arduboy2-style games link unchanged against a 700-line layer: 5.5 to 9.6 kB of flash and 3.3 to 3.8 kB of RAM each.
What this does not establish, and limits

What this does not establish

  • Nobody has steered it by hand: the stick and buzzer were not read by a person. TileWorld and Crate Confusion link and run on the Mac; they were not drawn on the board.

Limits to keep in mind

  • Aspect ratio: the Arduboy screen is 128 by 64 (2 to 1) and the layer doubles it to 128 by 128, so the picture is stretched to twice the height. The true ratio is not kept.
  • Joystick up was not checked by hand on the board. The EDUMKII stick rests off center; the layer learns the center from the first samples.
  • No sound.

Sources

Versions, sizes and timing

Snake on the M3320.7 kB of flash, 6.8 kB of RAM, 32.9 frames a second at 32 MHzthe data (CSV)

Evidence

  • Snake ran on the MSPM33 C321A with the Educational BoosterPack at 32.9 frames a second (min over frames after the second); the bench camera saw it drawn. the data (CSV)
  • Three games (Snake, TileWorld, Crate Confusion) build unchanged and answer scripted stick and button input on the Mac; the frame PNGs were looked at by eye. README notes

Other boards

What the status words mean

Works ran here and did what it shouldCould work some of it ran; real porting effort is left; hover for whatNot for this chip the chip or its vendor software cannot; hover for why

2048 and Minesweeper on a 3.5 inch touch panel

Expected result: The panel shows the launcher with two buttons. 2048 takes swipes and Minesweeper takes taps.

What this shows

  • Two games fit in 9.9 kB of flash and 3.5 kB of RAM beside a gesture layer. They port to another board by writing eight small functions.
What this does not establish, and limits

What this does not establish

  • Minesweeper by finger was not judged by a person; its timing is from scripted taps.

Limits to keep in mind

  • Aspect ratio: both games draw 1 to 1 on the 320 by 480 panel in portrait; there is no source picture to stretch. There is no stick: the games take touch only, so the joystick-up check does not apply.
  • The 40 MHz SPI used is above the panel's rating of about 15 MHz; at 20 MHz a swipe redraw takes 61.6 ms.

Sources

Versions, sizes and timing

Size9.7 kB of flash and 3,472 of RAMthe data (CSV)
Redraws at 40 MHz SPI2048 swipe 32.6 ms mean; Minesweeper one-cell tap 1.09 msthe data (CSV)

Evidence

  • 2048 was played on the Waveshare panel with working touch; a scripted swipe takes 32.6 ms of redraw at 40 MHz SPI. the data (CSV)
  • 215 host checks pass on the gestures, the 2048 rules and the Minesweeper rules. README notes

Other boards

What the status words mean

Works ran here and did what it shouldCould work some of it ran; real porting effort is left; hover for whatNot for this chip the chip or its vendor software cannot; hover for why

CHIP-8 on the touch panel

Expected result: The panel shows the Corax+ test screen with its check marks, a ROM bar and a 4 by 4 key pad.

What this shows

  • The interpreter runs 526k CHIP-8 instructions a second flat out at 80 MHz, 751 times a typical 700-a-second game pace.
What this does not establish, and limits

What this does not establish

  • The touch key pad was not tapped by a person; the keypad test ROM waits for that.
  • Sound: the timer runs and nothing plays.

Limits to keep in mind

  • Aspect ratio: the 64 by 32 screen is drawn at 5 times in both directions (320 by 160), so the 2 to 1 shape is kept. There is no stick; the key pad is touch, so the joystick-up check does not apply.
  • The check read is the frame buffer, not the screen: a camera cannot tell a check mark from a cross at its resolution.

Sources

Versions, sizes and timing

Size13.5 kB of flash and 10,652 of RAMthe data (CSV)
Full redraw14.2 ms for 51,200 pixels at 40 MHz SPIthe data (CSV)

Evidence

  • The board's frame buffer equals the host interpreter's screen for 5 of 5 test ROMs read through OpenOCD; the host screens match the suite's pictures by eye. the data (CSV)

Other boards

What the status words mean

Works ran here and did what it shouldCould work some of it ran; real porting effort is left; hover for whatNot for this chip the chip or its vendor software cannot; hover for why

ZX Spectrum 48K with BASIC and a touch keyboard

Expected result: The panel shows the Spectrum screen at 256 by 192 with a keyboard below. With a ROM you supply, the BASIC prompt appears.

What this shows

  • The machine runs at 19.4 percent of a real Spectrum at the BASIC prompt with the Z80 core copied into SRAM, 19.0 percent with the screen drawn.
What this does not establish, and limits

What this does not establish

  • Nobody has typed on the touch keyboard: that check waits for a person.
  • The 16 kB system ROM is copyrighted; you supply it. Without one the build runs a ROM-less test program with no Sinclair code.

Limits to keep in mind

  • Aspect ratio: the 256 by 192 screen is drawn 1 to 1, so the 4 to 3 shape is kept. There is no stick; keys are touch, so the joystick-up check does not apply.
  • Speed is a fifth of a real machine, and code in flash runs slower: 15.9 percent.

Sources

Versions, sizes and timing

Size62.5 kB of flash and 62,489 of RAM (the 48 kB Spectrum RAM included)the data (CSV)
Speed19.4 percent of a real Spectrum at the BASIC prompt, core in SRAMthe data (CSV)

Evidence

  • The board's screen memory equals the host machine's after 400 frames, for the ROM-less image and for OpenSE BASIC (2 of 2). the data (CSV)

Other boards

What the status words mean

Works ran here and did what it shouldCould work some of it ran; real porting effort is left; hover for whatNot for this chip the chip or its vendor software cannot; hover for why

Result grid

Project
LP-MSPM0G3507MSPM0G3507 chip
LP-MSPM0L1306MSPM0L1306 chip
LP-EM-CC2340R5CC2340R52 chip
LAUNCHXL-F2800137TMS320F2800137 chip
Retro games on a TI LaunchPad
LP-MSPM0G3507Not for this chip128 kB of flash against the 256 kB Game Boy game; the emulator alone leaves 0.7 kB of RAM Peanut-GB Game Boy emulator on MSPM0 and MSPM33 LaunchPad kits
LP-MSPM0L1306
LP-EM-CC2340R5
LAUNCHXL-F2800137

Works ran here and did what it shouldShould work it builds; only naming, packaging or build glue is in the way; hover for whichCould work some of it ran; real porting effort is left; hover for whatNot for this chip the chip or its vendor software cannot; hover for why

Experiments (1)

StatusWhat was triedResult
WorksCan the AM62L run SNES and PlayStation emulation at full speed on HDMI?
TMDS62LEVM (AM62L evaluation module), 2026-11-01
With no X server, no container and no OpenGL, a 300-line libretro frontend that draws straight onto the HDMI connector through DRM/KMS runs Snes9x 2005 at a locked 60 fps at every HDMI mode up to 1920x1080 (core 2.5...

Source files

Code brought from elsewhere

This project uses code that was written for other chips or tools. Each links to how to get it running.

Start with your code, and the prompt to port your own

Get the code and tell us how it wentThe clone command, the board folder with its AGENTS.md, reports from others, and the three report forms.

Get the code

Clone the repository and open the board's folder below. AGENTS.md is a plain text file of notes for AI coding assistants, and llms.txt at the root indexes the site for one.

git clone https://github.com/Fox-Red-Labs/fox-red-labs.git

Code is BSD-3-Clause, writing is CC BY 4.0; third-party folders keep their own licenses.

Built it? Tell us

Built this, or got stuck? Report it on GitHub with a few short answers. Your report shows here in your words, marked as yours. A failure that repeats on the bench gets its fix here.