🎮 RETRO GAMING ON THE GO

Turn your uConsole into a
retro gaming handheld.

NES to PSP — full RetroArch setup, per-system core configs, input mapping for the built-in keyboard, performance tuning, and standalone emulators. Everything you need to play on the 5" screen.

30 min readUpdated Mar 2026CM4 & CM5Free guide
Section 1
1

What you can emulate.

Impact

The uConsole is a surprisingly capable emulation machine. The CM4's BCM2711 (quad Cortex-A72 @ 1.5 GHz) handles everything up to PS1 perfectly and most N64/PSP titles playably. The CM5 pushes that further with its faster cores. Here's what to expect.

The 5" 720×1280 display (rotated to 1280×720 landscape) is actually ideal for retro gaming — the pixel density makes even low-resolution systems look sharp, and CRT shaders look beautiful at this size.

SYSTEM COMPATIBILITY — CM4 vs CM5
SystemCoreCM4CM5Notes
NES / FamicomFCEUmm★★★★★ Perfect★★★★★ Perfect100% full speed, all titles
SNES / SFCSnes9x★★★★★ Perfect★★★★★ Perfect100% full speed, all titles
Game Boy / ColorGambatte★★★★★ Perfect★★★★★ PerfectPixel-perfect on 5" screen
Game Boy AdvancemGBA★★★★★ Perfect★★★★★ PerfectPerfect, great screen fit
Sega Genesis / MDGenesis Plus GX★★★★★ Perfect★★★★★ PerfectIncludes 32X, Sega CD
PlayStation 1PCSX-ReARMed★★★★☆ Great★★★★★ Perfect95%+ games full speed on CM4
Nintendo 64Mupen64Plus-Next★★★☆☆ Playable★★★★☆ GreatMany titles need per-game tweaks
PSPPPSSPP★★★☆☆ Playable★★★★☆ Great2D games great, 3D varies by title
Nintendo DSDeSmuME★★★☆☆ Playable★★★★☆ GreatSingle-screen mode recommended
Arcade (CPS1/2/3)FinalBurn Neo★★★★★ Perfect★★★★★ PerfectStreet Fighter, Marvel vs Capcom
Sega DreamcastFlycast★★☆☆☆ Slow★★★☆☆ PlayableSome 2D titles ok, 3D struggles

Best bang for your buck: 8-bit and 16-bit systems (NES, SNES, Genesis, GBA) run flawlessly and look incredible on the 5" screen. PS1 is the sweet spot for "most impressive system that runs perfectly."

Section 2
2

Installing RetroArch & cores.

One frontend to rule them all

easy
Impact

RetroArch is a single application that bundles dozens of emulator "cores" behind one unified interface. It handles input mapping, save states, shaders, screenshot capture, and more — all in one place. It's the easiest way to set up emulation on the uConsole.

Step 1: Update your system

terminal — update packages
sudo apt update && sudo apt upgrade -y

Step 2: Install RetroArch

The Debian/Bookworm repos include RetroArch. Install it along with the core set:

terminal — install RetroArch + cores
# Install RetroArch + common cores
sudo apt install -y retroarch \
  libretro-snes9x \
  libretro-mgba \
  libretro-nestopia \
  libretro-gambatte \
  libretro-genesis-plus-gx \
  libretro-pcsx-rearmed \
  libretro-desmume \
  libretro-fbneo

For N64 and additional cores not in the repos, use RetroArch's built-in core downloader:

RetroArch — install additional cores
# Launch RetroArch
retroarch

# Then navigate:
# Main Menu → Online Updater → Core Downloader
# Install these cores:
#   - Mupen64Plus-Next (N64)
#   - PPSSPP (PSP)
#   - FCEUmm (NES — alternative to Nestopia)
#   - Flycast (Dreamcast)

Step 3: Verify installation

terminal — check installed cores
# List installed cores (apt-installed)
ls /usr/lib/libretro/

# You should see files like:
# snes9x_libretro.so
# mgba_libretro.so
# pcsx_rearmed_libretro.so
# genesis_plus_gx_libretro.so

# Cores from the downloader go here:
ls ~/.config/retroarch/cores/

⚠ Note: If you get dependency errors on Bookworm, try adding the armhf architecture: sudo dpkg --add-architecture armhf && sudo apt update. Some emulator cores require 32-bit libraries.

Section 3
3

Display config for the 5" screen.

Resolution, shaders, and aspect ratio tuning

moderate
Impact

The uConsole's 720×1280 display (1280×720 in landscape) is a great match for retro gaming, but you need to configure RetroArch to use it properly. Out of the box, the defaults might give you a stretched or oddly-positioned image.

Core display settings

~/.config/retroarch/retroarch.cfg — display settings
# ─── Video Driver ───
# Use GL for best compatibility on the uConsole
video_driver = "gl"

# ─── Resolution ───
# Match the uConsole's native landscape resolution
video_fullscreen_x = "1280"
video_fullscreen_y = "720"
video_fullscreen = "true"

# ─── Aspect Ratio ───
# Keep original aspect ratio — no stretching
aspect_ratio_index = "22"
# 22 = "Core Provided" — each system uses its native ratio
# NES/SNES = 4:3, GBA = 3:2, etc.

# ─── VSync ───
# Enable for tear-free, disable if you need more performance
video_vsync = "true"

# ─── Smooth Scaling ───
# Bilinear filtering — false for pixel-perfect, true for smoothed
video_smooth = "false"

# ─── Integer Scaling ───
# Keeps pixels crisp by only scaling to integer multiples
video_scale_integer = "true"

Recommended shader presets

Shaders add CRT scanlines, LCD grids, or other effects that make retro games look authentic. Download shaders through RetroArch's Online Updater first.

RECOMMENDED SHADERS BY SYSTEM
SystemShaderPerf HitLook
NES / SNES / Genesiscrt-pi~2%Subtle CRT scanlines, great for 5"
GBA / GBClcd3x~1%LCD pixel grid — authentic handheld feel
PS1 / N64crt-pi~5%Smooths 3D, adds CRT warmth
PSPnone0%PSP games look great raw at 1x
All (if struggling)none0%Integer scaling alone looks clean
RetroArch — apply shader preset
# In RetroArch:
# Quick Menu → Shaders → Load Shader Preset
# Navigate to:
#   shaders_glsl/crt/crt-pi.glslp  (for CRT effect)
#   shaders_glsl/handheld/lcd3x.glslp  (for LCD grid)

# To auto-load for a specific core:
# Quick Menu → Shaders → Save → Save Core Preset

Tip: At the uConsole's screen size, even the simplest shader makes a noticeable difference. crt-pi was designed specifically for low-powered ARM devices and runs with almost zero performance cost.

Section 4
4

Controller & input setup.

Map the built-in keyboard + add external gamepads

moderate
Impact

The uConsole's keyboard is functional for gaming but needs custom mapping. The tiny QWERTY layout plus trackball can work as a gamepad. For serious sessions, a USB or Bluetooth controller is recommended.

Recommended keyboard mapping

KEYBOARD → GAMEPAD MAPPING
KeyGamepad ButtonUse
W / A / S / DD-PadMovement
JB / CrossPrimary action
KA / CircleSecondary action
UY / SquareTertiary action
IX / TriangleQuaternary action
QL1 / L ShoulderLeft bumper
ER1 / R ShoulderRight bumper
TabSelectSelect / Back
ReturnStartStart / Pause
TrackballRight AnalogCamera (N64, PSP)
F1RetroArch menu
~/.config/retroarch/retroarch.cfg — input bindings
# ─── uConsole Keyboard Bindings ───
input_player1_up = "w"
input_player1_left = "a"
input_player1_down = "s"
input_player1_right = "d"
input_player1_b = "j"
input_player1_a = "k"
input_player1_y = "u"
input_player1_x = "i"
input_player1_l = "q"
input_player1_r = "e"
input_player1_select = "tab"
input_player1_start = "return"

# ─── RetroArch Hotkeys ───
input_menu_toggle = "f1"
input_save_state = "f2"
input_load_state = "f4"
input_state_slot_increase = "f7"
input_state_slot_decrease = "f6"
input_toggle_fast_forward = "space"
input_rewind = "r"
input_exit_emulator = "escape"

USB & Bluetooth gamepads

RetroArch auto-detects most controllers. The best options:

A.

8BitDo SN30 Pro+ — Best overall. USB-C and Bluetooth. RetroArch auto-maps it. Compact enough to pair with the uConsole.

B.

Xbox Core Controller — USB or Bluetooth. Excellent support. Larger but great for extended sessions.

C.

PS4/PS5 DualSense — Pair via bluetoothctl. See our Bluetooth guide for pairing help.

terminal — pair Bluetooth controller
# Start the Bluetooth service
sudo systemctl enable bluetooth
sudo systemctl start bluetooth

# Open the pairing tool
bluetoothctl

# Inside bluetoothctl:
power on
agent on
scan on
# Put your controller in pairing mode, then:
pair XX:XX:XX:XX:XX:XX
trust XX:XX:XX:XX:XX:XX
connect XX:XX:XX:XX:XX:XX
exit
Section 5
5

Per-system setup & recommended cores.

Optimal settings for each console

moderate
Impact

Each system has its own best-performing core and optimal settings. Here's the recommended configuration for each on the uConsole.

NES / Famicom

easyCore: FCEUmm

FCEUmm is the recommended NES core — fast, accurate, and has the best mapper support. Full speed on both CM4 and CM5 with zero configuration.

RetroArch — NES core options
# Set default core for .nes files:
# Settings → Directory → Core Info
# Then: Quick Menu → Set Core Association → FCEUmm

# Recommended core options (Quick Menu → Core Options):
#   Region: Auto
#   Turbo Enable: On (for speedrunning)
#   Palette: Composite Direct (authentic colors)

SNES / Super Famicom

easyCore: Snes9x

Snes9x is lighter than bsnes and runs every commercial SNES game at full speed. Use Snes9x over bsnes for the extra performance headroom on the uConsole.

RetroArch — SNES core options
# Recommended core options:
#   SuperFX Overclock: 100% (increase to 200% if
#     Star Fox / Yoshi's Island run slow)
#   Hires Blending: Merge (for transparency effects)
#   Lightgun Mode: Touchscreen (for Super Scope games)

Game Boy Advance

easyCore: mGBA

mGBA is the gold standard — fast, accurate, and supports Game Boy and Game Boy Color too. The uConsole screen is almost the perfect size for GBA games.

RetroArch — GBA core options
# Recommended core options:
#   Solar Sensor Level: 0 (increase for Boktai games)
#   Allow Opposing Directions: Off
#   Use BIOS if Available: On (put gba_bios.bin in system/)
#   Color Correction: Game Boy Advance
#   Interframe Blending: Smart (fixes GBA transparency tricks)

PlayStation 1

moderateCore: PCSX-ReARMed

PCSX-ReARMed is optimized for ARM processors, making it the best PS1 core for the uConsole. Runs 95%+ of games at full speed on CM4 and essentially everything on CM5.

BIOS required: Place scph1001.bin in your RetroArch system directory for best compatibility.

RetroArch — PS1 core options
# Recommended core options:
#   Use BIOS: On (much better compatibility)
#   NEON Enhanced Resolution: 1x (keep at 1x on CM4)
#   Frameskip Type: Auto
#   Frameskip Threshold: 95%
#   Threaded Rendering: On
#   Speed Hack: On (helps with demanding games)
#   Analog Mode: DualShock (for analog stick support)
#
# CM5 users: try 2x resolution for sharper 3D

Nintendo 64

advancedCore: Mupen64Plus-Next

N64 is the most demanding "playable" system on CM4. Mupen64Plus-Next with GLideN64 gives the best speed/compat balance. Mario 64, Ocarina of Time, and Mario Kart 64 all run well with tuning.

RetroArch — N64 core options (CM4 optimized)
# Recommended core options:
#   GFX Plugin: GLideN64
#   RSP Plugin: HLE (faster than LLE)
#   Resolution: 320x240 (native — don't upscale on CM4)
#   Framebuffer Emulation: On
#   Texture Filter: None (saves CPU)
#   Threaded Renderer: On
#   VI Output Mode: Non-filtered (fastest)
#   CPU Core: Dynamic Recompiler
#
# CM5: try 640x480 for a much sharper image

# Per-game tips for tricky titles:
# GoldenEye — frameskip 1, disable expansion pak
# Perfect Dark — needs CM5 for playable speeds
# Conker — native resolution, frameskip 1

PlayStation Portable (PSP)

advancedCore: PPSSPP

PSP is demanding but many popular titles are playable. 2D games and visual novels run great. 3D-heavy titles like God of War need the CM5 or standalone PPSSPP (Section 8).

RetroArch — PSP core options (CM4)
# Recommended core options:
#   Internal Resolution: 1x PSP (480x272) on CM4, 2x on CM5
#   Frame Skipping: 1 (for 3D games on CM4)
#   Auto Frameskip: On
#   Backend: OpenGL
#   Texture Scaling: Off on CM4, 2x on CM5
#   Hardware Transform: On
#   Software Skinning: On
#   Vertex Cache: On
#   I/O Threading: On

# Games that run great on CM4:
# - Persona 3 Portable, Final Fantasy Tactics
# - Patapon, LocoRoco, Lumines
# - Monster Hunter (with frameskip 1)

Pro tip: Save per-game overrides for N64 and PSP. In RetroArch: Quick Menu → Overrides → Save Game Override. Fine-tune per title without affecting other games.

Section 6
6

Performance optimization.

Squeeze every frame out of the hardware

moderate
Impact

These optimizations can be the difference between "choppy" and "perfectly playable" for N64 and PSP. Apply them all for maximum performance.

CPU governor — lock to performance mode

terminal — set performance governor
# Set performance governor (all cores)
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

# Verify
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# Should output: performance

# Make persistent — add to /etc/rc.local before "exit 0":
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo performance > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
echo performance > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
echo performance > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor

Overclocking for emulation

Overclocking to 1800 MHz gives ~20% more performance that directly translates to better emulation frame rates:

uConsole Overclocking Guide

Safe & aggressive profiles, thermal management, step-by-step.

RetroArch performance settings

~/.config/retroarch/retroarch.cfg — performance
# ─── Threading ───
video_threaded = "true"

# ─── Audio ───
audio_latency = "64"
audio_driver = "alsa"

# ─── Rewind (disable to save CPU) ───
rewind_enable = "false"

# ─── Run-Ahead (reduces input lag — only for 8/16-bit) ───
# run_ahead_enabled = "true"
# run_ahead_frames = "1"

System-level tweaks

terminal — free up resources for gaming
# Close unnecessary services
sudo systemctl stop cups avahi-daemon ModemManager

# Kill compositors
killall picom compton 2>/dev/null

# Increase GPU memory (CM4 — add to /boot/config.txt)
gpu_mem=256

# Disable Bluetooth if not using BT controller
sudo systemctl stop bluetooth
sudo rfkill block bluetooth
PERFORMANCE GAINS SUMMARY — CM4
OptimizationFPS GainEffortTradeoff
Performance governor+5-10%EasyHigher idle power draw
Overclock to 1800 MHz+15-20%ModerateMore heat, less battery
Threaded video+10-15%EasySlight input lag increase
gpu_mem=256+5-10%EasyLess system RAM
Kill background services+5%EasyNo printing/discovery
Disable shaders+2-5%EasyRaw pixels only
All combined+40-50%Worth it for N64/PSP
Section 7
7

ROM management & BIOS files.

Organize your library the right way

easy
Impact

A well-organized ROM directory makes scanning and browsing your library easy. RetroArch can auto-detect games and download thumbnails when files are properly structured.

Recommended directory structure

terminal — create ROM directory structure
mkdir -p ~/roms/{nes,snes,gba,gbc,genesis,psx,n64,psp,ds,arcade}

# Set RetroArch to scan:
# Settings → Directory → File Browser → ~/roms

# Structure:
# ~/roms/
# ├── nes/          ← .nes, .zip
# ├── snes/         ← .sfc, .smc, .zip
# ├── gba/          ← .gba, .zip
# ├── gbc/          ← .gbc, .gb, .zip
# ├── genesis/      ← .md, .gen, .zip
# ├── psx/          ← .bin/.cue, .chd, .pbp
# ├── n64/          ← .n64, .z64, .v64
# ├── psp/          ← .iso, .cso
# ├── ds/           ← .nds
# └── arcade/       ← .zip (FBNeo romset names)

BIOS files

Some systems need BIOS files for accurate emulation. You must source these yourself. Place them in RetroArch's system directory:

terminal — BIOS directory
mkdir -p ~/.config/retroarch/system

# Verify path in RetroArch:
# Settings → Directory → System/BIOS
REQUIRED BIOS FILES
SystemFilenameRequired?Notes
GBAgba_bios.binOptionalBetter startup accuracy
PS1scph1001.binRecommendedUS BIOS — best compat
PS1scph5500.binOptionalJapan BIOS
PS1scph5502.binOptionalEurope BIOS
NDSbios7.bin, bios9.binOptionalMore accurate with
Arcadeneogeo.zipRequiredFor Neo Geo in FBNeo
Sega CDbios_CD_U.binRequiredRegion-specific

PS1: convert BIN/CUE to CHD

CHD compresses multi-file BIN/CUE into a single file — 40-60% smaller, faster loading, no pairing issues:

terminal — convert to CHD
sudo apt install -y mame-tools
chdman createcd -i game.cue -o game.chd

⚠ Legal note: Only use ROMs and BIOS files you have legally obtained. Dumping your own cartridges and discs is the legal approach.

Section 8
8

Standalone emulators.

PPSSPP & Duckstation — when RetroArch cores aren't enough

advanced
Impact

Standalone emulators can run 10-20% faster than RetroArch cores. They get more frequent updates and system-specific optimizations. The tradeoff is managing separate apps.

PPSSPP Standalone (PSP)

Standalone PPSSPP runs 15-20% faster than the RetroArch core with better per-game settings and a nicer game browser UI.

terminal — install PPSSPP
# From Debian repos (quick)
sudo apt install -y ppsspp

# Or build from source (latest, recommended)
sudo apt install -y build-essential cmake git \
  libsdl2-dev libvulkan-dev libgl-dev
git clone --recurse-submodules https://github.com/hrydgard/ppsspp.git
cd ppsspp && mkdir build && cd build
cmake -DUSING_EGL=ON -DUSING_GLES2=ON ..
make -j$(nproc)

# Run:
./PPSSPPSDL /path/to/game.iso
PPSSPP — recommended settings
# Graphics:
#   Backend: OpenGL
#   Resolution: 1x PSP (CM4) / 2x (CM5)
#   Frame Skipping: Auto, Max 1
#   Hardware Transform: On
#   Vertex Cache: On
#   Lazy Texture Caching: On

# System:
#   I/O Threading: On
#   Fast Memory: On
#   Multithreaded: On

Duckstation (PS1)

More accurate than PCSX-ReARMed with PGXP geometry correction (fixes 3D wobble) and true color rendering. Heavier on CPU — best suited for CM5.

terminal — install Duckstation
# Download ARM64 AppImage
wget https://github.com/stenzek/duckstation/releases/latest/download/DuckStation-aarch64.AppImage
chmod +x DuckStation-aarch64.AppImage
./DuckStation-aarch64.AppImage

# First run setup:
# 1. Set BIOS path: Settings → BIOS → ~/.config/retroarch/system
# 2. Add game directory: Settings → Game List → Add
# 3. Configure controller mapping
Duckstation — recommended settings
# Graphics:
#   Renderer: OpenGL
#   Internal Resolution: 1x (CM4) / 2x (CM5)
#   PGXP Geometry Correction: On (fixes 3D wobble)
#   True Color: On (removes PS1 color banding)
#   Texture Filtering: Nearest (authentic look)

# Advanced:
#   Enable Recompiler: On
#   Recompiler Fast Memory: On
RETROARCH CORE vs STANDALONE
FeatureRetroArchStandalone
PerformanceGood10-20% better
Unified interfaceYes — one appSeparate apps
Save statesRA-managedPer-app
Shader supportRA shadersBuilt-in
UpdatesSlowerMore frequent
Best for8/16-bit, PS1PSP, PS1 (CM5)

Our recommendation: Use RetroArch for everything except PSP. Standalone PPSSPP gives noticeably better performance for 3D games. On CM5, Duckstation is also worth trying for PS1.

Section 9
9

Troubleshooting.

Common issues and how to fix them

easy

Black screen when launching RetroArch

Video driver mismatch. Set it to GL:

fix
# Edit ~/.config/retroarch/retroarch.cfg
video_driver = "gl"
# Or in GUI: Settings → Drivers → Video → gl

No audio or crackling sound

Audio latency too low or wrong driver:

fix
# In retroarch.cfg:
audio_driver = "alsa"
audio_latency = "128"  # increase to 256 if still crackling

Games running too slow

Check in order:

  • 1.Set CPU governor to performance
  • 2.Enable video_threaded = "true"
  • 3.Disable shaders
  • 4.Use lighter core (Snes9x over bsnes)
  • 5.Overclock your CM4
  • 6.Close background apps and services

Screen rotation is wrong

fix
# In retroarch.cfg:
video_rotation = "0"
# 0=normal, 1=90°, 2=180°, 3=270°

# If using X11:
xrandr --output DSI-1 --rotate right

N64 games crash or have glitches

  • Switch between GLideN64 and Rice GFX plugins
  • Disable Framebuffer Emulation for speed
  • Try Parallel-N64 core as alternative
  • Save per-game overrides for problem titles

Bluetooth controller has input lag

fix — reduce BT latency
# Edit /etc/bluetooth/main.conf:
[LE]
MinConnectionInterval=6
MaxConnectionInterval=9
ConnectionLatency=0

sudo systemctl restart bluetooth
# Or use USB if your controller supports it
Skip the Manual Setup

Get the Toolkit with RetroArch
pre-configured and ready to play.

The Pocket Forge Toolkit includes RetroArch with optimized per-system core settings, keyboard mappings, display config, performance governor, shader presets, and the directory structure. Flash the SD card and start playing in 15 minutes.

RetroArch configuredAll cores installedKeyboard mappedShaders includedPerformance tuned
Stay Updated

More guides are coming.

We're writing guides on QMK keyboard firmware, portable pentesting, SDR radio, and more. Join the waitlist to get notified — plus early access to new tools.

>

Also check out our Overclocking Guide and Battery Life Guide

Your email is stored securely and used only for Pocket Forge updates. Unsubscribe anytime.