A modern open-source Android emulator built around mGBA, focused on a polished Game Boy Advance experience.
Download latest release · Changelog · Troubleshooting · Contributing
Retra is an open-source Android retro emulator built around the mGBA core, with feature development primarily focused on Game Boy Advance gameplay.
It combines emulation with a mobile-first interface, persistent game data, customizable controls, backup and restore tools, save states, cheats, artwork, display customization, and local or remote GBA link features.
Important
Retra does not include commercial ROMs, BIOS files, or copyrighted game assets. Use only content you are legally permitted to use.
- GB, GBC, and GBA emulation through the mGBA integration.
- Fast-forward and slow-motion speed controls.
- Adaptive 60/90/120 Hz interface presentation while keeping emulation timing independent from display refresh rate.
- BIOS support, ROM patches, cheats, statistics, and per-ROM configuration.
- Optional GLSL shaders and gameplay Color Style presets.
- Battery saves, save states, and automatic resume.
- Persistent ROM identity based on SHA-256 content hashes.
- Compatible saves and metadata can reconnect after a ROM is moved, renamed, removed, or re-imported.
- Portable Create Backup and Restore Backup using
.retrafiles. - Android Auto Backup/device transfer support.
- Reinstall continuity through Android's Keep app data flow.
- Screen Editor with independent portrait and landscape layouts.
- Draggable and resizable on-screen controls.
- Emulator-screen resizing and edge-aware layout editing.
- Controller opacity controls.
- Automatic artwork with persistent manual cover and background overrides.
- Lightweight gameplay color presets: Classic, Vivid, Warm, and Muted.
- GBA Local Link on one Android device.
- Wi-Fi Remote Link between supported devices.
- Bluetooth Remote Link between supported Android devices.
- Google Drive sync with conflict-safe behavior.
- Android Storage Access Framework folder fallback.
- Automatic GitHub Releases update checks.
- Manual Check for updates action in About.
- Modular Android architecture.
- Release validation, regression tests, lint checks, and CI quality gates.
The latest stable APK and release notes are available from:
Current stable release: Retra v1.0.2
| Item | Current status |
|---|---|
| Version | v1.0.2 |
| Release channel | Stable |
| Minimum Android | API 26 / Android 8.0+ |
| License | Mozilla Public License 2.0 |
| Maintainer | Zense |
| Emulator core | mGBA |
| Version | Summary |
|---|---|
| v1.0.0 | Official release |
| v1.0.1 | Added Create Backup and Restore Backup |
| v1.0.2 | Added in-app update checking and Android reinstall-recovery hardening |
Public release numbering follows Semantic Versioning. Earlier project work is organized in docs/DEVELOPMENT_HISTORY.md.
Retra includes lightweight gameplay color presets that affect only the rendered game image. The Retra interface itself remains unchanged.
Available presets: Classic · Vivid · Warm · Muted
Retra v1.0.2 supports normal GBA Link Cable-style multiplayer through:
- Local Link on one Android device.
- Wi-Fi Remote Link between supported devices.
- Bluetooth Remote Link between supported Android devices.
Remote Link includes connection health metrics, heartbeat/timeouts, state-hash validation, jitter-aware input delay, host-authoritative recovery, bounded recovery retries, and deterministic input reseeding.
- GBA Single-Pak / Multiboot
- GBA Wireless Adapter / RFU emulation
Retra separates replaceable ROM files from persistent user data.
ROM content -> SHA-256 -> permanent romId
|
+-- Saves
+-- Save states
+-- Cheats
+-- Layouts
+-- Covers/backgrounds
+-- Categories/favourites
+-- Statistics
Structured ROM metadata is stored with Room, application-wide settings use Preferences DataStore, and save commits use verified temporary files, per-ROM locking, and rotating backups.
Import recovery uses a durable journal so interrupted imports can be recovered safely.
For the full storage design, see docs/PERSISTENT_STORAGE_ARCHITECTURE.md.
- Android Studio with the Android SDK required by the Gradle project.
- The JDK/toolchain required by the included Android Gradle Plugin.
- Android NDK r28.
- CMake 3.22.1.
- The exact locked mGBA source revision used by Retra.
Retra is pinned to mGBA commit:
543a197582c30364584d773a974d7f991892fa43
The revision is recorded in third_party/mgba.lock.
python3 tools/prepare_mgba.pyThis prepares third_party/mgba/ at the exact locked commit.
CMake also accepts the legacy sibling ../mgba/ location or an explicit RETRA_MGBA_SOURCE_DIR, but verifies that the source matches the clean locked revision before configuring the native build.
versionName = 1.0.2
versionCode = 449
minSdk = 26
versionCode 449 upgrades cleanly over v1.0.1 (448) and v1.0.0 (447).
- Clone or extract the Retra repository.
- Run
python3 tools/prepare_mgba.py. - Open the repository root in Android Studio.
- Allow Gradle to sync and install the requested SDK, NDK, and CMake components.
- Build and run on an Android device.
Windows
gradlew.bat :app:compileDebugKotlin :app:testDebugUnitTest :app:lintDebugmacOS / Linux
./gradlew :app:compileDebugKotlin :app:testDebugUnitTest :app:lintDebugA full APK/AAB build requires the exact mGBA revision recorded in third_party/mgba.lock. CMake rejects a different or dirty tracked checkout.
Retra/
├─ app/ Android application
│ └─ src/main/
│ ├─ assets/retra/ WebView UI modules, styles, and branding
│ ├─ cpp/ Native mGBA bridge and native build config
│ └─ java/.../emulator/ Android controllers, repositories, and runtime
├─ docs/ Release, architecture, and engineering docs
│ └─ history/ Archived implementation/build notes
├─ tests/ Dependency-light regression tests
├─ third_party/ Preferred project-local mGBA location
├─ tools/ Release validation scripts
├─ CHANGELOG.md Public release and development history
├─ TROUBLESHOOTING.md User troubleshooting and bug-reporting guide
├─ CONTRIBUTING.md Contribution guide
├─ SECURITY.md Security policy
├─ THIRD_PARTY_NOTICES.md Third-party licensing notices
└─ LICENSE MPL-2.0
See docs/README.md for the documentation index.
Run the dependency-light release gate before publishing changes:
python3 tools/release_gate.pyIt validates JavaScript syntax, regression tests, release structure, and release metadata that do not require the Android SDK/NDK or mGBA.
For Android-specific validation, also run the Gradle compile/test/lint tasks above.
Before publishing an APK/AAB, complete the physical-device checks in:
CHANGELOG.md— public release and development history.TROUBLESHOOTING.md— installation, ROM loading, performance, audio, controls, saves, backups, BIOS, multiplayer, sync, and crash-reporting help.CONTRIBUTING.md— contribution requirements.SECURITY.md— vulnerability reporting and security boundaries.docs/DEVELOPMENT_HISTORY.md— organized pre-v1.0 development history.docs/PERSISTENT_STORAGE_ARCHITECTURE.md— persistent storage design.
Retra source code is released under the Mozilla Public License 2.0 (MPL-2.0). See LICENSE.
Retra integrates with the separately maintained mGBA emulator core. mGBA is not owned by Retra and retains its own copyright and MPL-2.0 notices.
See THIRD_PARTY_NOTICES.md and the license files included with the exact mGBA revision used for your build.
ROMs, BIOS files, game artwork, trademarks, and game content are not distributed with Retra and remain the property of their respective rights holders.
Retra · Android retro emulation powered by mGBA
