What good is our shiny new hardware without the fun and excitement that is configuring a new system? In my previous 1440p DIY Retro Handheld - Part 1 (Hardware) post, I recommended getting a Snapdragon 855 or higher device with a 1440p screen for optimal integer scaled retro gaming. This guide will walk you through configuring each emulator for maximum visual quality and minimum input latency. Strap in…this is gonna be a long one.
Assumptions
I’d like to keep this guide as generic as possible while still maintaining consistent results across devices and software versions. As such, the following assumptions are going to be made:
- Device is…
- dedicated to gaming and emulation (no phone, messaging, notifications, etc.)
- running a Snapdragon 855 or better chipset
- in factory reset state
- running Android 10 (preferred) or later
Some emulators can’t access Micro SD on Android 11 right now, so Android 10 is required for full Micro SD use
- used in landscape mode in a telescopic USB-C controller, e.g. GameSir X2 w/D-Pad ($70 on Amazon) or Razer Kishi for Android ($80 on Amazon)
- ROMs are…
- in formats recognized by the emulator to run them (e.g. most emulators can use zipped/compressed ROM files, but Citra needs the uncompressed
.3ds
file) - validated against public data sources like No-Intro and Redump (otherwise emulators/frontends may not recognize them)
- separated into folders by system (
snes
folder for Super Nintendo,gba
folder for Game Boy Advance, etc.)
- in formats recognized by the emulator to run them (e.g. most emulators can use zipped/compressed ROM files, but Citra needs the uncompressed
Please note, if you plan to unlock and/or root your device, make sure to do that BEFORE performing this configuration. That process is likely to force a wipe of your device, so you’ll want it all done prior to continuing. You can find steps for unlocking and rooting the LG G8 and V50 phones I recommended in this XDA Developers forum post.
Contents
System Configuration
Initial Setup
- Run initial device setup
- Skip SIM prompt
- Connect to WiFi
- The phone will say to restart with the SIM, just wait a minute and you will be prompted to skip
- Skip all security for now, can be set up later if desired
- Agree to LG’s required policies only (EULA and Privacy Policy)
LG Phones: If prompted to set up from old device, hit Set Up, then Cancel the Terms of Use for LG apps page. This will get rid of the persistent notification.
Enable Developer Mode
- Enable developer mode
- Open
Settings
- Go to
System > About phone > Software info
- Tap the build number 7 times to activate developer mode
- Go to
System > Developer options
- Check
USB debugging
- Open
Screen Configuration
Locate the resolution option for your device (LG devices it’s Settings > Display > Screen resolution) and ensure it’s set to QHD/1440p mode. A few other things you may want to do here are adjust your color options (Natural, Vivid, etc.) and turn on dark/night mode for the system for some battery savings.
Home App
For ease of use, you’re going to want a home screen that support landscape mode. If your stock home app does, great! If not, a few options I like are ATV Launcher and Microsoft Launcher.
Debloat
This section requires access to a Windows computer.
In order to get the best performance, we want as little installed and running in the background as possible. This step is completely optional, but highly recommended to reclaim some system RAM, especially if you plan to use Egg NS with the GameSir X2 controller.
An easy way I’ve found to clear out the bloat is with a utility called ADB AppControl. I have the paid version, and it’s worked great on the LG G8, LG V50 and my main phone the Samsung Galaxy S21 Ultra. Please review the documentation before removing any applications from your device.
I used the “Check and Debloat” option using the “Maximal” level (anything above “Basic” only available in paid version). This is the list of stock apps I kept, though your list may be vary depending on your needs:
- Calculator (com.google.android.calculator) - Handy utility
- Chrome (com.android.chrome) - The handiest utility
- Google Drive (com.google.android.apps.docs) - Will be used for cloud storage of game saves
- Google Photos (com.google.android.apps.photos) - Used for cloud backup of screenshots (taken with GameSir button or phone button shortcut)
These are LG-specific, but you can optionally leave the following installed/enabled:
- FM Radio (com.lge.fmradio) - Nice to have when using it standalone with physical headphones
- FOTA Update (com.lge.lgfota.permission) - Firmware update service
- Game Launcher (com.lge.gamelauncher) - Allows for setting options while in game, like blocking notifications
- Gaming, a.k.a. Game Tuner (com.lge.gametuner) - Allows adjustment of graphics settings on a per-game basis via Setting > Extensions > Gaming
- HD Audio Recorder (com.lge.hifirecorder) - Convenient if you want to capture some quick notes
After deselecting the apps to keep, use the dropdown in the lower-right and select Uninstall
. The button will change to red with the “Uninstall” text. Click the button and you will be warned about removing system applications. Click Yes
to continue. You will then be prompted if you want to back up the APK files. I suggest doing so by clicking Yes
.
The backup will run first, then the actual uninstall process will execute. Once complete, you will be prompted with the results. I highly suggest a restart after this to make sure everything is still functional. Once that is finished, you may take another pass at disabling other system applications, but be warned you may make critical system software unusable this way. If that happens, just restore the application(s) from the “Deleted” filter in the “Applications” tab. If the error persists, restart the device to ensure any required backgrounds services get started.
- Load up ADB AppControl
- Use the Debloat option, select Maximum
- Review the list and uncheck anything you want to keep
- Select Uninstall from the dropdown, then click the Uninstall button
- Create backups of the applications being uninstalled when prompted
Emulator Configuration
While RetroArch can take care of most of the systems we’re targeting, there are some that will require other emulators for the best experience on Android. I highly suggest purchasing the best-in-class emulators for the more complex systems to emulate. It’s about $25 for all of them, and a great way to support the creators and maintainers, and emulation community as a whole. Here’s a list of what’s what in Android emulation:
Emulator | Systems | Price (USD) | Download Link |
---|---|---|---|
Citra | Nintendo 3DS | $4.99 | Play Store |
Dolphin | Nintendo GameCube & Wii | Free | Play Store APK |
Drastic | Nintendo DS | $4.99 | Play Store |
DuckStation | Sony PlayStation | Free | Play Store |
M64Plus FZ Pro | Nintendo 64 | $3.99 | Play Store |
PPSSPP | Sony PlayStation Portable & PSP Minis | Free | Play Store APK |
PPSSPP Gold | The “supporters” edition, no additional emulation features | $4.99 | Play Store |
Redream | Sega Dreamcast, Atomiswave & Naomi arcade | $5.99 | Play Store |
RetroArch | Everything else, some examples:
|
Free | Play Store APK |
Most people will want to stick with the Play Store versions of the emulators, unless you like living on the bleeding edge then by all means, have fun with the beta/development APK versions.
Citra
Step | Actions |
---|---|
Add ROMs | Select your ROM path on initial app start |
Configure Graphics | Go to Settings > Graphics
|
Configure Screen Layout | Start a game, then:
Single Screen layout is a bit cumbersome to swap using the menu option |
Configure Gamepad | Go to Settings > Gamepad
|
Remove Control Overlay | Start a game, then:
|
Enable FPS Counter | Start a game, then:
|
Dolphin
Step | Actions |
---|---|
Add ROMs | For each ROMs folder (GameCube, Wii):
|
Configure Graphics | Go to Settings > Config > Interface
Settings > Graphics Settings
Settings > Graphics Settings > Enhancements
Settings > Graphics Settings > Hacks
|
Configure Gamepad (GameCube) | Go to Settings > GameCube Input
|
Configure Gamepad (Wii) | Go to Settings > Wii Input
|
Remove Control Overlay | Start a game, then
|
Enable FPS Counter | Go to Settings > Graphics Settings
|
Drastic
Step | Actions |
---|---|
Add ROMs | From the main menu
|
Configure Graphics | Go to Change Options > Video
Change Options > General
|
Configure Screen Layout | Start a game, then
Landscape Aspect layout using 7x scaling, since that is the other layout used when toggling between 1- and 2-screen layouts. |
Configure Gamepad | Go to Change Options > External Controller
|
Remove Control Overlay | Go to Change Options > External Controller
|
Enable FPS Counter | Go to Change Options > General
|
DuckStation
May want to set to 5x with no integer scaling.
Step | Actions |
---|---|
Add ROMs | From the DuckStation interface:
|
Configure Graphics | Go to Settings > Display :
Settings > Enhancements :
Settings > Advanced :
|
Configure BIOS | Go to the DuckStation menu (3 dots), then:
|
Configure Gamepad | Go to Controller Settings (D-Pad icon) > Port 1 :
Controller Settings (D-Pad icon) > Hotkeys
|
Remove Control Overlay | Go to Controller Settings (D-Pad icon) > Settings
|
Enable FPS Counter | Go to Settings > Display :
|
M64Plus FZ Pro
Step | Actions |
---|---|
Add ROMs | From the main screen:
|
Configure Graphics | From the main screen:
|
Configure Screen Layout | N/A |
Configure Gamepad | From the main screen:
|
Remove Control Overlay | From the main screen:
|
Enable FPS Counter | From the main screen:
|
PPSSPP
Step | Actions |
---|---|
Add ROMs | From the Games tab:
Games > Home view |
Configure Graphics | Go to Settings > Graphics :
|
Configure Screen Layout | Go to Settings > Graphics :
|
Configure Gamepad | Go to Settings > Controls :
|
Remove Control Overlay | Go to Settings > Controls
|
Enable FPS Counter | Go to Settings > Graphics :
|
Redream
Step | Actions |
---|---|
Add ROMs | Go to Library :
|
Configure Graphics | Go to Video :
System :
|
Configure Gamepad | Go to Input :
|
Remove Control Overlay | Overlay is automatically hidden when a controller is detected |
Enable FPS Counter | Go to Video :
|
RetroArch
RetroArch is a multiplatform frontend, and the interface is not optimized for Android like all the others. As such, I can’t really condense the configuration into a simple table like the others, so we’ll go into a little more detail to make sure everything is set up properly.
Change Menu Driver
The default menu driver on Android is terrible in my opinion, so we’re going to change that. Perform the following on first boot of RetroArch:
- Launch RetroArch, let the initial APK extraction complete
- Tap the
Gear icon
, then selectDrivers
- Scroll down to
Menu
and change it toozone
(Switch-like) orxmb
(PS3-like) - Tap the
Home icon
, then selectConfiguration File
- Select
Save Current Configuration
- Tap the
Home icon
, then selectQuit RetroArch
- Launch RetroArch again, the interface will now be a little easier to navigate with your controllers
Download Cores
RetroArch is a modular system, and uses modules called cores
to perform the actual emulation. If you downloaded the Play Store version, you’re probably set will all the cores you need. If using the APK version, you’ll want to download the necessary cores for the systems you’re emulating.
- Go to
Main Menu > Online Updater
- Select
Core Downloader
- Download the cores you’ll need for the systems you are running. These are the cores I recommend:
- Arcade (FinalBurn Neo)
- Arcade (MAME 2003-Plus)
- Atari - 2600 (Stella)
- Atari - Lynx (Beetle Lynx)
- Bandai - WonderSwan/Color (Beetle Cygne)
- MSX/SVI/ColecoVision/SG-1000 (blueMSX)
- NEC - PC Engine / SuperGrafx / CD (Beetle PCE)
- Nintendo - Game Boy / Color (SameBoy)
- Nintendo - Game Boy Advance (mGBA)
- Nintendo - NES / Famicom (FCEUmm)
- Nintendo - SNES / SFC (Snes9x - Current)
- Sega - MS/GG (SMS Plus GX)
- Sega - MS/GG/MD/CD (Genesis Plus GX)
- Sega - MS/MD/CD/32X (PicoDrive)
- Sega - Saturn (YabaSanshiro)
- SNK - Neo Geo CD (NeoCD)
- SNK - Neo Geo Pocket / Color (Beetle NeoPop)
- The 3DO Company - 3DO (Opera)
Online Updates
RetroArch doesn’t come with everything in the base package, so you’ll want to run some options from Online Updater
to acquire any missing resources. The databases are required if you’re going to scan a ROM directory to generate a playlist, otherwise RetroArch will not be able to recognize those games or systems.
- Go to
Main Menu > Online Updater
- Run these updates (required):
Update Core Info Files
Update Assets
Update Controller Profiles
Update Databases
- Optionally run these if you use them:
Update Cheats
Update Slang Shaders
You may periodically want to Update Installed Cores
to get performance enhancements and bug fixes for your emulated systems.
Importing ROMs
Step | Actions |
---|---|
Add ROMs | For each ROM folder:
|
Configure Graphics |
|
Configure Screen Layout | N/A |
Configure Gamepad |
|
Remove Control Overlay |
|
Enable FPS Counter |
|
Summary
If set up correctly, your 1440p retro handheld should be set up with optimal image scaling settings. Of course you’re free to change anything here to taste. This is just a good starting point for getting a high quality experience from your Android system. Good luck and have fun gaming!