CoinOPS — The Plug-and-Play King

The most famous "all-in-one" frontend experience in the arcade emulation world. CoinOPS is designed to look, sound, and feel like a high-energy arcade the second you turn it on. If LaunchBox is for the "Ultimate Customizer," CoinOPS is for the "Instant Gratification" builder who wants a complete, museum-grade arcade environment without spending weeks on configuration.

Powered by the RetroFE engine — a cross-platform C++17 framework — CoinOPS abstracts the extreme complexity of multi-system emulation behind a unified, cinematic interface. Every game is pre-configured. The buttons work, the artwork is there, and the Attract Mode is perfectly timed.

The RetroFE Engine

CoinOPS originated as a monolithic executable designed specifically for the original Microsoft Xbox hardware. As the project migrated to modern PC architectures, it adopted the highly modular RetroFE engine — a cross-platform C++17 framework that allows for granular resource management, multi-monitor support, and high-definition asset rendering capable of simulating authentic CRT visual fidelity.

The RetroFE engine does not use a traditional Windows registry installation. It is fully portable and relies entirely on relative directory pathing. The launchers.windows directory contains .conf files that pass execution arguments to each emulator. A resilient relative path like executable = emulators/mame/mame64.exe means the entire build can be moved to any drive letter without breaking.

The global_settings.conf File

The master configuration file that controls the entire rendering pipeline. Key variables:

  • fullscreen = yes — Bypasses Windows DWM for reduced input latency and no OS notification interruptions
  • horizontal = 1920 / vertical = 1080 — Explicit pixel dimensions prevent scaling artifacts. Do not rely on stretch alone.
  • fps = 60 / fpsIdle = 30 — Critical thermal optimization — halves GPU rendering when no input detected, preventing hardware degradation during attract mode
  • minimize_on_focus_loss = yes — Mitigates the audio focus-loss bug where menu video audio continues looping after launching a game

Build Variants Compared

The modern CoinOPS ecosystem spans multiple distinct build profiles, each engineered for a specific hardware target and use case. Attempting to force a massive "Collections" build onto a low-power living room PC will result in thermal throttling, VRAM depletion, and systemic crashes. Match your build to your hardware.

BuildFocusTarget HardwareKey Characteristics
CoinOPS Next 2Unified InterfaceMid-Range PCIconic horizontal "orb" category wheel. Highly stable, standardized entry point. Best for first-time CoinOPS users.
CollectionsMaximum LibraryHigh-End PC (16GB+ RAM)Massive curated library spanning hundreds of systems. Requires significant VRAM and RAM. Not for low-power machines.
RA2EArcade PurityLow-Power Bartop672 curated arcade titles only. Locked-down arcade control maps. Vertical cabinet optimized. Minimal VRAM footprint.
Legends 3Portable / Steam DeckSteam Deck / HandheldOptimized for handheld form factor. Reduced asset resolution. Touch-friendly navigation.
EVO 2026Next-Gen 4KHigh-End PC (RTX 30/40 Series)4K-native assets. Advanced shader pipeline. Highest visual fidelity available in any CoinOPS release.

The ABC Setup Workflow

The key difference from other frontends: CoinOPS is designed to work immediately — but only if you follow the foundational rules of the RetroFE engine.

Phase A: Foundation and The Root Rule

You MUST extract CoinOPS to the root of a drive (e.g., D:CoinOPS or C:CoinOPS). Placing CoinOPS inside deeply nested folders like C:Program Files, C:Users[Name]Desktop, or C:Downloads will invoke Windows UAC interventions. Because the front-end constantly executes child processes (emulators), writes save states, and updates high-score databases, Windows Defender will flag these actions as suspicious, causing "Folder Access Denied" errors or silent application termination. Additionally, the Windows API limits file paths to 256 characters — deeply nested CoinOPS directories guarantee that artwork and ROM files will exceed this limit and fail to load.

After extraction, look inside your CoinOPS directory for a folder called "- Advanced Configs" or "All In One Runtimes". Run the Install ALL.bat script to silently install all required Visual C++ Redistributables (2005–2022) and DirectX 9 packages.

Phase B: Controller Initialization

CoinOPS is aggressively optimized for XInput (the Xbox 360 controller protocol). XInput understands analog triggers as independent axes and has a standardized button layout, allowing the front-end to function without manual configuration.

If you are using Zero Delay USB encoders, I-PAC control boards, or generic arcade fighting sticks (all DirectInput), use X360CE to "wrap" your arcade controls so Windows sees them as an Xbox controller.

Phase C: First Boot and Attract Mode

Run CoinOPS.exe from the root of your CoinOPS directory. Use your joystick to scroll and your "A" button to launch a game. By default, CoinOPS starts its cinematic Attract Mode after 30 seconds of inactivity — cycling through game videos and artwork.

Controller Input System

The DirectInput vs XInput Problem

When a user maps a multi-player DirectInput control panel, Windows assigns arbitrary USB Device IDs based on the chronological order of connection. In systems using multiple identical Zero Delay encoders (a common scenario in budget 2-player or 4-player cabinets), this creates a critical mapping conflict where Player 1 and Player 2 inputs spontaneously swap upon system reboot. MAME reads these device IDs dynamically — if Windows enumerates the Player 2 controller first on boot, MAME assigns it to Player 1, rendering the physical cabinet layout useless.

The fix: Use X360CE to wrap DirectInput devices as XInput. This forces a consistent device enumeration order and eliminates the Player 1/2 swap issue. Place the x360ce.exe and generated xinput1_3.dll in the same directory as coinops.exe.

Control Locking

CoinOPS implements a "Control Locking" mechanism that overwrites any in-game MAME control remapping on every frontend launch. This is a deliberate design decision to maintain a consistent, kiosk-grade experience. To bypass Control Locking for a specific game, navigate to the Advanced Configs folder and run the "Unlock Controls" batch file. This temporarily disables the overwrite mechanism, allowing your custom MAME mappings to persist.

Display and Shaders

CoinOPS ships with a pre-configured CRT shader pipeline that simulates the phosphor glow, scanline structure, and barrel distortion of authentic arcade monitors. The shader system is powered by RetroArch's GLSL and Cg shader formats.

The audio focus-loss bug: when minimize_on_focus_loss is not set to yes, the menu video audio continues looping after launching a game. This creates a jarring audio overlap. The fix is to set minimize_on_focus_loss = yes in global_settings.conf.

For systems struggling with input latency while using heavy shaders, manually edit the shader .glsl or .cg files. Adjusting #define CURVATURE 0.0 flattens the screen, removing the mathematical overhead of barrel distortion while retaining the scanline aesthetic.

Collections and Media Architecture

The include.txt / exclude.txt System

The RetroFE engine governs visibility through a strict boolean logic system using plaintext files located within each collection's directory (e.g., collections/Arcade/). When the engine boots, it does not blindly display every file inside the roms/ folder.

When list.includeMissingItems = false is set, the engine scans the ROM directory, cross-references discovered filenames against include.txt (rendering only exact string matches on the UI wheel), and filters out any strings present in exclude.txt.

Adding a new game requires two steps: (1) place the .zip file in the correct roms/ folder, and (2) manually type the exact filename (without extension) into include.txt. If the filename in include.txt doesn't exactly match the ROM filename, the game will not appear in the menu.

String Matching — The Law of Media Presentation

The fundamental law governing CoinOPS media presentation is string matching. The engine dynamically links a ROM file to its corresponding artwork based entirely on identical filenames. Example: ROM sf2ce.zip must have logo at collections/Arcade/medium_artwork/logo/sf2ce.png and video sf2ce.mp4. All three filenames must match exactly — including case sensitivity on Linux builds.

meta.db — Relational Sorting Architecture

The engine utilizes a SQLite database (meta.db) to execute complex relational sorting. Variables like metadata.type = Nintendo GameCube within a launcher file query the database, retrieving release years, player counts, and genre tags. This metadata is then injected dynamically into the XML layout, allowing for complex filtering directly from the GUI — for example, "Show only 2-player Fighting games released between 1992 and 1996."

Final Verdict

The CoinOPS ecosystem, powered by the robust architecture of RetroFE, stands as an unparalleled platform for arcade preservation, curation, and exhibition. CoinOPS is the perfect "Secondary Build" — if you have a guest room or a commercial space where you don't want people messing with settings, a locked-down CoinOPS build is the safest and most visually impressive choice.

The Five Rules — Quick Reference

  1. Root Rule: Always extract to the root of a drive (D:CoinOPS). Never use nested folders.
  2. Run the Runtimes: Execute Install ALL.bat before first launch to satisfy all DLL dependencies.
  3. Match Build to Hardware: Use EVO 2026 for high-end 4K PCs, RA2E for low-power bartops, Legends 3 for Steam Deck.
  4. String Matching is Law: ROM filename, artwork filename, and video filename must all match exactly.
  5. Set fpsIdle = 30: Prevents GPU thermal damage during extended attract mode operation.