Documentation
About Save States & Backup Memory:
The app stores the main autosave state with backup memory and manual save states in the root save folder (Options -> File Paths -> Saves). When additional autosave slots are created, they're stored in a sub-folder with the content's name. For example, given some content named Game.zip, a possible save layout is as follows (file extensions will vary based on emulator):
Game.sta <- state for main autosave slot
Game.sav <- backup memory for main autosave slot
Game.*.sta <- manual save states
Game/saves/My save slot/auto-00.sta <- state for user created autosave slot
Game/saves/My save slot/auto.sav <- backup memory for user created autosave slot
About Common Options:
Video
Frame Rate: The output frame rate during emulation, audio will be re-clocked to this rate
Set screen's reported rate: Use the refresh rate of the display supplied by the OS to avoid judder, if the difference between the screen and emulated system's rate is too great then the system's rate is selected instead (see below)
Set emulated system's rate: Use the original frame rate of the system, ideal for emulating at the exact speed of original hardware but will cause judder if it doesn't match the display's refresh rate, also useful when using VRR or no vsync
Detect screen's rate and set: Run a frame rate test and use the result as the frame rate, useful if your device reports the wrong refresh rate
GPU Copy Mode: Affects how the emulated video is copied to the GPU, leave on auto unless you're trying to diagnose video issues, not all devices support all modes
System Memory: Copy from system memory using glTexSubImage2D
OpenGL PBO: Similar to above but use a pixel buffer object instead to avoid extra copying in the OpenGL driver
Hardware Buffer: (Android-only) Use shared CPU/GPU memory to avoid OpenGL driver overhead
Display Color Format: Color depth of the app's final output framebuffer, if using an sRGB format then filtering is performed with gamma correction
Render Color Format: Color depth of the emulated system's framebuffer
Effect Color Format: Color depth of any intermediate shader effects
Image Buffers: Number of client side framebuffers, using 1 enables syncing the GPU between frames to prevent running a frame ahead and offers the least input lag
Reduce Compositor Lag: (Android-only) Use the ANDROID_presentation_time EGL extension to prevent the display server from buffering more than one frame and reduce input lag
Force Max Screen Refresh Rate: (Android-only) Switch to the highest supported refresh rate instead of letting the OS decide, useful if the system runs at a frame rate in between the rates supported by the device (ex. running WonderSwan @ 75Hz on a device that supports 60Hz and 90Hz)
External Screen: (Android-only) The behavior when a physical or virtual screen is connected (USB to HDMI cable, screen capture software, etc.), OS Managed usually mirrors the screen exactly while Emu Content will use it as an independent screen and show only the emulated video.
Sound
Buffer Size In Frames: Set the approximate amount of video frames worth of audio to buffer. Lower values reduce audio latency but increase the chance of audio skipping when frames drop. Not all devices can reliably handle low buffer sizes so you may need to experiment with different values.
System
Autosave Launch Mode: How to handle autosave when opening content
Load: Use the state & backup memory from the main slot
Load (No State): Same as above but skip loading the state and only load backup memory, the state is still accessible via Load Autosave State
Ask: Start on the No Save slot and show the autosave slot menu
Autosave Timer: How many minutes of emulation before the autosave state and backup memory are written to disk
Performance Mode: (Android-only) When on Sustained mode, ask the OS to limit the max CPU clock rate for possibly reduced heat and battery usage at the cost of performance
GUI
Title Back Navigation: Places a back shortcut icon in the top left of the title bar
Default Menu: Which menu to open when pausing emulation
Dim OS Navigation: (Android-only) Dims the navigation bar (aka "Lights Out Mode")
Hide OS Navigation: (Android-only) Hides the navigation bar on devices that allow it
On-screen Input Setup: Fine-tune virtual controls, a preview image is shown in the background
Button Size: physical size of a single face button (A, B, etc.) which is also used to calculate the size of other elements via a multiplier
Button Spacing: physical size of the gap between the face buttons. Increasing spacing makes it easier to push 2 buttons at once with your thumb since the gap area contains a bounding box that triggers both buttons.
Button Stagger: horizontal/vertical multipliers used when arranging face buttons. A value of 0 arranges buttons in an even grid while 1 gives a diamond shape similar to a SNES controller.
H & V Overlap: extends the horizontal/vertical bounding box for face buttons by (Button Spacing + Button Size * Overlap), "Gap-only" adds just Button Spacing.
Show Bounding Boxes: shows exact screen areas used for detecting input, the d-pad is color coded: white = single direction, green = diagonal, red = deadzone
Blend Amount: control translucency, a higher percentage makes the controls more solid (not shown in the preview)
Key/Gamepad Input Setup: Includes configuration settings for key-based input devices supported by the app & OS
Auto-detect Device To Setup: Lets you quickly jump to an input device's sub-menu by pushing any key on it
Delete Saved Device Settings: Deletes any per-device data stored in the config file. This includes anything you've changed in the device's sub-menu except for the custom key profiles
[Device Names]: This is a list at the bottom of the menu showing all input devices available, selecting a device goes to its specific sub-menu with the following options
Player: The player the device represents. To use one device with multiple players, such as two people playing on a single keyboard, select "Multiple" to reveal additional key categories.
Profile: Select from one of the built-in or custom key profiles
Set [name of key category]: Assign keys to various in-game actions and emulated inputs for the current profile. Profiles are shared between devices so if you have 2 of the same controller, you only need to assign the keys once and switch the player/profile option in the 2nd controller's menu. If you have a controller that's split into multiple devices by the OS (ex. some Android gaming handhelds where the d-pad & buttons are 2 separate devices), use a single custom profile for both devices to keep their keys linked together.
iCade Mode: If the device uses the iCade protocol as listed on the device documentation, enable this to recognize input from it
Handle Unbound Keys: If on, don't pass any unassigned key presses to the OS in case they trigger unwanted functions