An emulator for the LeapFrog Leapster
leapemu emulates the LeapFrog Leapster handheld: its cartridges, the L-MAX titles, and the Leapster 2's games and downloadable games, which run on the original Leapster's BaseROM. (The Leapster 2 itself, with its own BaseROM, SD card and storage, is not emulated.) It is written from scratch in C++20, for x86-64 and 64-bit ARM, with a GUI and a command-line frontend.
- Compatibility: the 62 retail cartridges tested reach gameplay, as do 6 prototypes and the 13 Leapster 2 downloadable games tested (compatibility list).
- Accuracy: CPU timing calibrated against footage of real hardware; all eight sound voices, including the LFC speech codec; the touch screen, with automatic calibration; the console's own settings and save memory.
- Save states, rewind, fast forward, frame stepping (forwards and back), and input movies with rerecording (TAS). Emulation is deterministic: a movie replays the same with the same ROMs and its recorded emulation settings.
- A game list with compatibility ratings (yours or leapemu's).
- Keyboard and gamepad, every key rebindable; on a gamepad, the right stick moves a stylus cursor.
- Display filters (pixel-perfect, smooth, MMPX for pixel art, an LCD look), plus an optional redraw at any resolution of Flash content and of the Cars races' road, and an experimental frame interpolation (how they work).
- ROM tools: a game's Flash movies, speech, music, sounds, bitmaps and fonts, played, viewed and exported; a hex view with switchable patches (ROM tools).
- Homebrew: a small SDK, and unsigned cartridges run (homebrew).
- Download a release: for Windows, the
.zip; for Linux (x86-64 or arm64), the.tar.gz, which runs from where it is extracted (on Arch Linux, the release'sPKGBUILDpackages it:makepkg -sinext to the archive). Or build leapemu (below). - Dump your own BaseROM (the console's system ROM, often called the BIOS) and
cartridges. leapemu does not provide or link to any.
.binimages,.ziparchives and.wav-wrapped dumps all load. The tested BaseROM is Leapster Universal v1.5 (155-10072-a, CRCaf05e5a0); others are listed in docs/usage.md. - Run
leapemu. Choose the BaseROM when it asks, then add the folder with your games, or open a single ROM with File > Load ROM (orleapemu GAME.zip).
Settings are under Tools > Settings; the full guide to the GUI is docs/usage.md.
cmake -S . -B build
cmake --build build
ctest --test-dir buildThis needs CMake 3.24 or newer and a C++20 compiler. The GUI uses SDL3 (the system's, or fetched) and Dear ImGui (fetched), so the first configure needs network access. Options, 64-bit ARM, installing and the source layout are in docs/building.md.
| Leapster | Keyboard | Gamepad |
|---|---|---|
| D-pad | Arrow keys, WASD | D-pad, left stick |
| A / B | X or Space / Z | South / East |
| Hint, Home, Pause | C, Backspace, Enter | West, Back, Start |
| Stylus | left mouse button | right stick + right trigger |
| leapemu | Key, gamepad |
|---|---|
| Pause / reset / stop | Ctrl+P / Ctrl+R / Ctrl+W |
| Fast forward | hold Tab (Shift+Tab: on / off); right bumper |
| Rewind | hold `; left bumper |
| Frame back / frame advance | , / . |
| Quick load / save; slots 1–4 | F1 / Shift+F1; F2–F5 / Shift+F2–F5 |
| Fullscreen, screenshot, mute | F11, F12, Ctrl+M |
| Settings | Ctrl+, |
Every key and gamepad button can be changed in Tools > Settings > Controls and Shortcuts.
| Document | What it covers |
|---|---|
| Using leapemu | The GUI (menus, settings, game list, controls, display, saves) and the command line |
| Compatibility | How far each game plays |
| Tool-assisted play | Input movies, rerecording, counters; how save states, rewind and determinism work |
| ROM tools | A game's assets, hex view and patches |
| Leapster 2 downloadable games | How leapemu runs the games sold as downloads for the Leapster 2, and the Leapster 2 system services it provides for them |
| Display enhancements | Redraw at any resolution and frame interpolation, and how the games' own drawing is captured (tile planes, the Cars races, the Flash player) |
| Building and development | Build options, other platforms, release builds, the source map, how correctness is checked |
| Hardware, timing, JIT, speech | How the Leapster and the emulator work |
| Homebrew, cartridge ↔ BaseROM interface, open BaseROM | Writing your own cartridges, and early research towards an open BaseROM |
| Roadmap and open questions | What's next, and what is not known yet |
Game reports and changes are welcome: see CONTRIBUTING.md. Never attach or link to ROM or BaseROM images.
leapemu builds on public research, most of all the Leapster drivers in MAME (David Haywood) and in toadster172's MAME fork (Alice Shelton), the ROM-format work of the LeapFrog-Tools and Leapster-Tools projects, and Nathan Farlow's LFC speech decoder. The full list is in docs/credits.md.
leapemu is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See LICENSE, and THIRD-PARTY.md for the licenses of the software it includes.
It contains no LeapFrog software: BaseROM and cartridge images are yours to provide.