Citra MMJ Ayn Thor Setup Guide – Best Settings for Odin & Thor Handhelds
Complete Citra MMJ setup guide for Ayn Thor, Odin, and Odin 2 handhelds. Best settings, optimal resolution, controller mapping, and performance tips for the Ayn gaming lineup.
The Ayn Thor and Ayn Odin are dedicated Android gaming handhelds that have become popular choices for emulation enthusiasts. With their Snapdragon 845 / 8 Gen 1 chipsets and native controller hardware, they are excellent platforms for Citra MMJ. This guide covers the complete Citra MMJ Ayn Thor setup — from installation to optimal settings for 60 FPS gameplay.
Ayn Handheld Lineup Overview
| Device | Chipset | RAM | Citra MMJ Performance |
|---|---|---|---|
| Ayn Odin | Snapdragon 845 | 6/8 GB | Excellent — 2×–3× resolution |
| Ayn Odin 2 | Snapdragon 8 Gen 2 | 16 GB | Outstanding — 4× resolution, stable 60 FPS |
| Ayn Thor | Snapdragon 870 | 6/8 GB | Very good — 2×–3× resolution |
| Ayn Odin Lite | Snapdragon 845 | 4 GB | Good — 2× resolution |
Step 1: Install Citra MMJ on Ayn Devices
- Open the browser on your Ayn device and navigate to the Citra MMJ GitHub releases page.
- Download the latest stable ARM64 APK.
- When prompted about “Install from unknown sources,” tap Allow — this is required for any APK installed outside the Play Store on the Ayn OS.
- Once installed, launch Citra MMJ and grant All Files Access permission when prompted.
Step 2: Best Citra MMJ Settings for Ayn Thor / Odin
Graphics Settings
| Setting | Ayn Thor / Odin | Ayn Odin 2 |
|---|---|---|
| Graphics API | Vulkan | Vulkan |
| Internal Resolution | 3× (1920×1440) | 4× (2560×1920) |
| Async Shaders | Enabled | Enabled |
| Post Processing | None | None |
| Texture Filter | None or xBRZ-Freescale | Anime4K / xBRZ |
Performance Settings
| Setting | Value |
|---|---|
| CPU JIT | Enabled |
| New 3DS Mode | Enabled |
| Speed Limit | 100% |
| Frame Skip | Disabled |
| Audio Backend | OpenSL ES |
| Audio Latency | Medium |
Step 3: Controller Mapping for Ayn Devices
The Ayn Thor and Odin have built-in physical controllers that are automatically detected by Android as a standard gamepad. Citra MMJ will recognise them natively.
Default mapping (works out of the box):
- Left stick → 3DS Circle Pad
- Right stick → 3DS C-Stick (New 3DS only)
- A/B/X/Y → 3DS A/B/X/Y (note: layouts may be swapped — remap if needed)
- L/R triggers → 3DS L/R buttons
- ZL/ZR → 3DS ZL/ZR (New 3DS)
- Start/Select → 3DS Start/Select
To remap: In Citra MMJ, go to Settings → Controls → Map Gamepad. Press each physical button to assign it to the corresponding 3DS button.
Step 4: Enable 60 FPS for Pokémon and Popular Titles
The Ayn Odin 2 can achieve locked 60 FPS in most 3DS titles. The Thor handles 60 FPS comfortably in less demanding games.
To apply a 60 FPS cheat, long-press the game → Properties → Cheats → Add Cheat. See our full cheat codes guide for game-specific codes.
Step 5: Dual Screen Layout Optimisation
The Ayn devices have wide screens that work well with the dual-screen layout.
- In Citra MMJ, go to Settings → Layout.
- Set Screen Layout to Side by Side for the most natural 3DS feel on the Ayn’s wide display.
- Adjust the Screen Gap slider to add a small separator between the two screens.
- The physical controller buttons serve as the touchscreen alternative for most games.
Performance Expectations
Ayn Thor / Odin (Snapdragon 845–870):
- Pokémon X/Y, ORAS: 60 FPS with cheat code, 2×–3× resolution
- Mario Kart 7: 60 FPS stable, 3× resolution
- Fire Emblem Fates: 40–60 FPS depending on map complexity
- Monster Hunter Stories: 30–45 FPS (CPU-heavy title)
Ayn Odin 2 (Snapdragon 8 Gen 2):
- Virtually all 3DS titles: 60 FPS at 4× resolution with Vulkan
- Most demanding titles (Smash Bros. 3DS): 45–60 FPS
Common Issues on Ayn Devices
Screen stays black after launch: Switch from Vulkan to OpenGL ES in graphics settings, then switch back. This forces a graphics context refresh.
Buttons not responding correctly: Go to Settings → Controls and manually remap the controller. The Ayn devices occasionally use non-standard Android gamepad key codes.
Audio crackling: Lower audio latency to High (counter-intuitively, this increases the buffer size and reduces underruns). Alternatively, switch to SDL2 audio backend.
Game stutters on first load: This is shader compilation — enable Async Shader Compilation and let the game run for a few minutes. Subsequent runs will be stutter-free once shaders are cached.
For full settings documentation, visit our Best Settings guide.