Native Android Pokémon Showdown client for the AYN Thor dual-screen handheld.
![]() |
![]() |
Includes live Showdown battles, readable two-screen playback, a searchable team library with four move slots per Pokémon, replays, rooms, chat, and account tools.
All physical measurements use metric units.
- Upper display: 1920 × 1080 pixels, 152.4 mm diagonal, 120 Hz.
- Lower display: 1240 × 1080 pixels, 99.6 mm diagonal, 60 Hz.
- Closed enclosure: 150 × 94 × 25.6 mm, approximately 380 g.
The repository AVD uses the two display resolutions and densities from the Thor target. The display sizes are listed by AYN, with the resolution and enclosure dimensions cross-checked against Android Central.
./scripts/setup-android.sh
./scripts/create-ayn-thor-avd.sh
AEMU_SOURCE_ROOT=/path/to/aemu ./scripts/build-ayn-thor-emulator-overlay.sh
./scripts/run-ayn-thor-avd.sh
gradle assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apkThe AYN Thor launcher requires the patched emulator overlay so the 1920 × 1080 upper display is rendered above the 1240 × 1080 lower display. It stops with an actionable message instead of silently using a stock compositor with the wrong physical order. Set AYN_THOR_ALLOW_STOCK_EMULATOR=1 only when diagnosing the Android app without validating the Thor window layout.
Set AYN_THOR_VSYNC_RATE=120 when validating the upper display at its target refresh rate. The guest renders at the Thor's native display sizes and calibrated densities; the host emulator window does not change those guest metrics.
The launcher scales the host preview to approximately the Thor's 150 mm enclosure width by default. Set AYN_THOR_WINDOW_SCALE between 0.1 and 1.0 to adjust the desktop preview without changing the guest display metrics.
The APK uses Android Canvas and WebView, so it does not have separate graphics-backend builds. The AVD launcher defaults to AYN_THOR_GPU_MODE=auto, which lets the emulator select the best available renderer. Use AYN_THOR_GPU_MODE=host to use the host GPU or swiftshader for software rendering.
If this client is useful to you, sponsor the project on GitHub or support it on Ko-fi.
Use vMAJOR.MINOR.PATCH-alpha.N, vMAJOR.MINOR.PATCH-beta.N, or vMAJOR.MINOR.PATCH tags for prereleases and stable releases.
Release APKs use the showdown-<tag>.apk filename.

