Documentation
Everything Tandem does, and how.
Setting up on your handheld, laying out your games, adding emulators, bringing over your data from other frontends, and building Tandem yourself.
Start
Playing
Controller referenceEvery button Tandem uses, on every screen. Tandem is built to be used entirely with a controller; touch works everywhere too (see Touch). A/B and X/Y can be swapped in Settings › Controls › Buttons; this page uses the default (Xbox-style positions, A confirms).Resume and ShizukuTandem can bring a running game back instead of starting it over. This needs Shizuku; without it, games start fresh as in most frontends.
Make it yours
ThemesHow to change Tandem's look: themes, home layouts, the icon grid, theme packs, wallpapers, and sounds and music. Everything here is in the Themes app on the home grid and in Settings › Look & feel and Settings › Home & layout, and applies instantly with a short cross-fade.WidgetsWidgets are small live cards: your free storage, the battery, a clock, play stats, what's running and more. They sit in a row on the home screen (under Continue playing) and on the bottom screen whenever nothing is highlighted.Android appsYour other apps live in the dock, the All apps drawer (the last dock tile), search results, widgets and, on the icon grid, as tiles of their own. They behave the same everywhere: they open on the screen you chose, and Y on any of them opens the same menu.
Library
Your libraryHow Tandem finds games, where it gets artwork, what the collections are made of, and where it keeps what it knows about each game.Systems and emulatorsWhich systems Tandem knows, which emulators it starts, and how to add your own by editing platforms.json: no rebuild or app update, just change a file and rescan.Importing from Cocoon and ES-DESwitching to Tandem shouldn't cost you the titles, descriptions, favorites and play time you built up somewhere else. Tandem reads the gamelist.xml files ES-DE writes and Cocoon exports, and merges them into its own library.Privacy and scrapingYour library and play history stay on your handheld. Tandem has no analytics, telemetry, ads or account of its own, and goes online only for features you start: scraping artwork and details, RetroAchievements if you sign in, and the Discord status if you connect it.
Device
Reference
Building from sourceBuild the Tandem APK with Nix or with a plain JDK and Android SDK, and install it on a device.ArchitectureKotlin and Jetpack Compose, one main activity, no DI framework, and no network unless a feature the user turns on needs it. Paths below are relative to app/src/main/java/io/github/zahakj/tandem/.ContributingThanks for wanting to help with Tandem. Bug reports, emulator configs, documentation fixes, translations and code are all welcome, and you don't need to be an Android developer for most of them.ReleasingHow a Tandem release is cut: the signing key, the four repository secrets the release workflow needs, the steps for each version, and the F-Droid listing. This is the maintainer's runbook.