Ver
v0.1.6
Downloads
000089
Packs
04

GBA Duo: Play on the top screen. Your game's stats, guides and more on the bottom one.

What it is?

Play your favorite GBA, GBC and GB games on dual-screen Android handhelds, with a live companion on the second screen. Build your own game-stats, guides, and more.

Android 11+ · arm64 · GPL v3 · No ads, no accounts, never online

Press start
Features

Two screens. One game.

The game runs on the screen you open GBA Duo on. The other screen becomes a companion that reads your game's memory as you play and shows what matters.

Bottom screen

The companion

  • A pack per game

    Pick a companion pack for each game, or import one from a .zip. Every game remembers its own.

  • Live

    The pack's Lua script reads the game's memory several times a second, so the screen follows along as you play.

  • Touch

    Tap through tabs, buttons and pages. The controller keeps driving the game whichever screen has focus.

  • Pages that open themselves

    A pack can switch pages when something happens in the game, like a battle page that opens when a battle starts.

Top screen

The player

  • Save states

    9 slots per game, each showing when it was saved.

  • In-game saves

    Kept per game, right next to its save states.

  • Fast-forward

    Hold R2 for 2x, 3x or 4x, picked in the menu.

  • Shaders

    Off, GBA Color, LCD Grid, Scanlines and Scale2x.

  • Swap A/B

    Flip A and B if they feel the wrong way round.

Press L2 or BACK in a game for the menu.

Ready to play

Companion packs

  • Pokémon FireRed (US)

    Party, bag pockets, trainer card, and a battle page with both Pokémon's live stats

  • Harvest Moon: Friends of Mineral Town (EU/US)

    Gold, date and time, stamina, held tool and rucksack, affection, Harvest Sprites' work

  • The Legend of Zelda: The Minish Cap

    Hearts, items, world map with your spot, kinstone fusions, and each dungeon’s keys and progress

  • Metroid Fusion

    Energy and tanks, missiles, power bombs, every ability upgrade, and sector completion with maps

For tinkerers

Make your own pack

A pack is just a folder of plain files. If you can write a little CSS and Lua, you can build one for your favorite game.

  • my-pack/
  • manifest.jsonid, name, which games
  • layout.jsonboxes, text, bars, tabs, pages
  • style.cssreal CSS: flex, grid, fonts
  • main.luaupdate() reads game memory
What's new

Fresh from the cartridge

Straight from GitHub releases. Install a new APK over the old one and your saves stay put.

Latest

v0.1.6

  • Open games from your launcher. Frontends such as Cocoon, ES-DE and Daijisho, and file managers ("Open with"), can start a game in GBADuo directly. Picking another game replaces the one that's running.
    • For Cocoon, GBADuo needs to be in its player catalog. For now you can import a custom platform with GBADuo as the player.
  • Settings page. The library's gear button opens Settings:
    • ROM folders (add or remove the folders GBADuo scans), which replaces the folder buttons on the library screen;
    • About.
  • Fixed: opening a ROM from a file manager could start the game again when the screen was recreated.

Earlier releases

v0.1.5
  • Play on either screen. Open GBADuo on the second screen and the game plays there, with the companion on the main screen.
  • The controller stays on the game when it's on the second screen. Before, button presses went to the main screen and Android could show "app isn't responding".
  • Zipped ROMs. .zip files holding a GBA/GBC/GB ROM show up in the library and play directly. A zipped game shares saves and its companion pack with the unzipped copy.
  • Fixed: a crash when the companion screen opened.
  • macOS ._ files next to ROMs no longer show up in the library.
  • Uses less memory while playing.
View on GitHub
v0.1.4
  • New launcher icon.
View on GitHub
v0.1.3
  • Lua can switch companion pages. A pack's update() can return a ui entry (set / navigate / back), so the game itself can change pages — e.g. open a battle page when a battle starts and go back when it ends. See docs-packs/companion-pages.md ("Changing pages from update()").
  • Fix: tab strip squashed by tall tab content. When a tab's content was taller than the screen, the tab pills lost most of their height and their labels got cut off. Tabs and pages now also fill their space, so a scrollable list inside a tab always has a bounded height.
View on GitHub
v0.1.2
  • Companion screen's overflow: auto/overflow: scroll is now actually scrollable (previously only clipped content, with no way to reach the rest). Verified on real hardware.
  • Pokemon FireRed companion pack: Bag tab item lists (Items/Key Items/Poke Balls/TM-HM/Berries) now scroll when inventory overflows the screen.
View on GitHub
v0.1.1
  • New launcher icon (replaces the placeholder plus-shape icon) — adaptive icon with gradient console mark on a yellow-orange background
View on GitHub
All releases
Support

Free. No ads. No catch.

GBA Duo is completely free and open source under the GPL v3. No accounts, no paywalls, no “pro” version. If it made your handheld a little better, you can say thanks with a coffee.

Support on Ko-fi

Totally optional. Every tip goes back into the project.