Chapter 01

About Ultra Loader

What Ultra Loader is, what it runs, its overall purpose, and the concept of native execution.

Ultra Loader is, at its core, a native launcher for modern arcade games. This is a very important distinction. Ultra Loader was not built to emulate in the standard emulator sense. It was built to run modern arcade games in their native environment, as if they were built for the machine, in a clean and optimized setting, as if sitting in their original home cabinet. This distinction alone separates Ultra Loader from mostly everything that has come before it.

Launchers like TeknoParrot devise mechanisms to play many of these games at the surface level, giving the game what it needs to run through modified profiles and tactics that mostly do work, but Ultra Loader's premise is not to do this. The loader does things the hard way. To get some of these modern arcade games to run, the gap had to be bridged function by function, all to keep to the concept of native arcade execution.

At the bare minimum, Ultra Loader takes a game written for a specific arcade board, Taito Type X, Sega Lindbergh, Namco ES3, and so on, and gets it running on an ordinary PC, supplying the pieces of the cabinet that are missing: the I/O board, the coin mechanism, the dongle or key chip, the display mode, and the controls.

What is not easy is the concept of native emulation for games not designed for ordinary PCs. Sega Lindbergh was built to run in Linux, and getting it to run properly in Windows has been a long standing challenge. Natively executing Linux ELFs in Windows is no simple task, but it has been done, through a lot of painstaking work over many nights. This was also the key to unlocking other games that run only on Linux. Thus it was possible to keep to the original premise of native execution, even for boards that do not work natively in Windows or on common PC hardware. Prior to this, all that existed were pseudo hacks and compatibility layers. Now all that is needed is time and community dev work on fine tuning per game code in the board modules.

Ultra Loader also handles the concept that some games need special bypasses to make them believe they are talking to their parent servers that unfortunately no longer exist. The accompanying software had to be studied, reverse engineered, and code inserted to make the game behave as if it is still connected. The common term for this is "spoofing."

For the PC based arcade boards, many of the games are normal Windows executables, and Ultra Loader runs them directly, injecting a small hook that stands in for the hardware the game expects to find. This is, for all intents and purposes, Native Execution. For older non PC based boards, it hosts a core instead, but both paths are driven from the same window and the same settings.

On Gatekeeping

No one should have the sole authority to gatekeep games from the public. Only a game developer should have that right. It is their game. These games were developed for arcades, where people can play them with a coin. What has been happening with the community over the last ten years has not been good. People have been profiting off of and gatekeeping games they did not create. The community was ready for a change, and this is it. Ultra Loader will be free, and will always be available to the community. No one will be charged to play a game. The only thing preventing a popular game from being played will be the speed at which it can be brought up natively in its custom arcade environment.

The amazing work of predecessors like the folks who developed JConfig and the many devs on Emuline and other sites has been invaluable to the community. While Ultra Loader did not take from JConfig or any other source (all firmware modules were built from scratch), it is because of their separate work that this project had the confidence to begin. It is truly time for a brand new day.

Chapter 02

Ultra Loader's Three Mechanisms

The three interlocking pieces that make every game run.

PieceWhat it is
The loader itself The program you interact with: ultra loader.exe. It picks a game, works out which board that game belongs to, applies your settings as environment variables, and hands off to a module.
A custom game firmware module One DLL per arcade board, installed under %LOCALAPPDATA%\Ultra Loader\modules\. It launches the game suspended, injects the board's hook, and waits. Each board owns its own module and its own hook source, so work on one board cannot disturb another.
A custom arcade hook (packed with the firmware) A DLL injected into the running game. It answers the game's requests for JVS I/O, DirectInput, DirectSound, Direct3D, and the dongle, essentially all of the hardware that isn't there.

The Ultra "Omni" Input Services

There are five "Omni" services that run inside the loader and publish a single, shared picture of what the player is doing. Every game's hook reads from that same shared block, which is why one controller setup applies everywhere rather than having to be repeated per game. This is the solution to per game setups.

Each service comes with a smart auto calibration setup that handles mostly all controllers, gamepads, and other HID compliant USB or Bluetooth gameplay devices, built specifically to help users simply get into the game and play. No more complicated setups. No more annoying workarounds for controllers, racing wheels, or lightguns. Mostly all hardware will be recognized and will work, even clone controllers.

ServiceHandles
Ultra Omni PlayAll Gamepads, Xinput and DirectInput, up to ten slots.
Ultra Omni SteerFlight sticks and HOTAS setups, including throttle and rudder.
Ultra Omni WheelRacing wheels, pedals and shifters, with full force feedback.
Ultra Omni TrackLightguns, plus the full aiming and calibration that goes with them.
Ultra Omni BridgeKeyboards and mice. Many games only work with peripherals.

Anything you set in the main window is a global default. Anything a board module sets is a board default, but it gives way to an explicit setting from the main window. If a game behaves differently from what the main window says, a board default override is usually the reason. A quick look at ultra.log should show it.

Chapter 03

Installation and Folder Layout

Where everything lives in the main folder and on the backend.

PathWhat it holds
ultra loader.exe The loader itself. Self contained.
art\, fonts\ Splash art and the fonts used by the boot console. Ultra Loader bundles the fonts and all supported game logos in a .pak file, installable from the main UI menu. You may also source your own logos. Label them correctly per game and copy them into art\ by system. Example: Ultra Loader/art/Namco ES3/Mario_Kart_GP_DX.png
ultra.ini Sits in the same folder as ultra loader.exe. Contains your settings. Chapter 14 lists every key.
ultra.log Also sits in the same folder. Shows what happened on the last run. This is the first thing to read when something does not work.
%LOCALAPPDATA%\Ultra Loader\modules\ Installed board modules, one folder each, plus their signatures and hooks.
%LOCALAPPDATA%\Ultra Loader\gamedata\ Per game saved data the loader keeps out of the game folder.

Your game dumps are never written to, or modified, ever. Ultra Loader treats game folders as read only source material wherever it can. Where a game genuinely must be modified (such as a language switch in its own config), the original is copied alongside as <file>.ultra lang bak before the first edit, and the change is always reversible.

Chapter 04

Quick Start

Getting one game running, and knowing whether it worked.

  1. Browse to your game collection and select a game. Use the game selector in the main window and choose the actual game executable (game.exe), not a launcher bat script or a shortcut. Make sure the matching Ultra Firmware files are copied into the firmware folder.
  2. Let it identify the board. Ultra Loader reads the path and the executable from the firmware to decide which board the game belongs to, and says so in the log as [PREFLIGHT]. It can never guess wrong, as the firmware file contains the game's board information. This is done in the background.
  3. Check or modify your display settings. Most arcade games were written for a fixed resolution. See Chapter 6 for what the game upscaler does, and when to leave it alone for best results.
  4. Launch the game. The Ultra Loader blue init screen appears first, then the game's boot console, then the game should load.

Reading the Log

When a game does not behave, ultra.log answers most questions on its own. These are the lines worth knowing:

Log LineMeaning
[PREFLIGHT] auto detected system: XThe board Ultra Loader decided on. If this is wrong, nothing after it will be right.
[SIGCHECK] X: signature OKThe module passed its signature check and is allowed to load.
[DISPATCH] X > ...dllThe module that actually ran.
[FALLBACK] N candidate module(s)The first choice module could not load, so others were tried.
game exited with code 0A clean exit.
game exited with code 32212254770xC0000005: an access violation. The game crashed; it did not quit.

Chapter 05

The Main UI Window

Choosing a game, and the main window buttons.

OptionWhat it does
Browse...Pick the game file to launch.
Game LibraryOpen the Game Library: a visual grid of your games' artwork. Double click a tile to launch it.
Scan folder for gamesScan a folder for supported games and pick from the list.
Save & LaunchSave all settings and launch the selected game now. If that game has an Ultra Firmware container, the settings it carries are applied over yours just before launch, so a value the container pins stays pinned no matter what you set here. Your own ultra.ini is not rewritten. The override lives only in the running game. Containers are only consulted for the native PC arcade boards.
SaveSave all settings to ultra.ini without launching the game.
CancelDiscard changes and close. Warning: this will exit the loader.
ExitClose Ultra Loader without launching anything. Settings you have not saved will be discarded. Make sure you hit Save first if you want them to persist.

Chapter 06

Display and Rendering Options

Resolution, upscaling, frame pacing and the screen itself. Every control in the DISPLAY section.

Arcade games are fixed resolution in a way PC games are not: many ask for exactly 640x480 and will not negotiate. To render fullscreen or at a higher resolution, the games must be forced. The options here work specifically for that, either by asking the game for a larger buffer where it can cope, or by stretching what it produces to fill your screen.

If a game renders black, start here

The upscaler and sharpening run as an extra pass over the game's own output. On some titles and some drivers that pass produces a stable black screen while the game itself runs perfectly: audio, inputs, and logic are all correct, but no pixels. If that happens, turn the upscaler off and set sharpening to zero before suspecting anything else.

OptionWhat it does
Output resolutionOutput (window/back buffer) resolution. The game renders at its native size and is upscaled to this. 4K looks best with FSR.
Display modeWindowed = resizable window. Borderless = full screen window (best for alt tab). Fullscreen is acted on by only two boards, Namco ES3 (D3D11) and Taito Type X2, where it gives the same borderless window. On every other board it leaves the game's own display request alone.
UpscalerHow the image is scaled to the window. Bilinear = plain. CAS = contrast adaptive sharpen. FSR = AMD FidelityFX (EASU+RCAS), the sharpest.
Display fitStretch fills the screen (may distort). Pillarbox keeps the 4:3 profile. Zoom fills and crops. Fit to Screen scales with no cutoff. The Lindbergh OpenGL path gets your exact choice. Injected D3D8/D3D9 hooks are only told keep or fill.
SharpnessUpscaler sharpness, 0 100. Affects CAS and FSR's RCAS pass. Higher = crisper edges. Too high = ringing.
FXAAFXAA post anti aliasing: smooths jagged edges cheaply. A light blur is normal.
Screen rotationRotate the whole display: 90/180/270. Use 270 (TATE) for vertical monitor cabs. Pair with Ultra Omni Track's Swap X/Y for lightgun games.
FPS capFrame rate cap. 0 = uncapped. Set to your refresh rate (e.g. 60) to save power and reduce tearing when V Sync is off.
GL driverWhich OpenGL driver arcade PC titles use. Native = your GPU vendor's driver (fastest). Mesa options are portable software or hardware accelerated alternatives. Picking one downloads a small graphics pack the first time.
Frame genFrame Generation for planned retro cores (PS3, Supermodel, Flycast, MAME, ...). Inserts blended in between frames so a 30/60fps game runs at 60/90/120/180/240fps. Costs approximately one sim frame of latency. 2x is a safe universal pick.
V Sync (cap to refresh)Synchronize presentation to the monitor refresh to remove tearing. Adds up to one frame of latency.
Mute splash soundSilence the Ultra Loader boot jingle. The splash screen still shows.
Hide console windowHide the diagnostic console window while a game runs. Default is on. Turn off to watch the boot log.
Easy Config (auto per title)Auto applies a known good preset (resolution, skips, fixes) for each recognized title on launch.
UI fontTypeface for this settings UI. Custom arcade fonts ship in the fonts\ folder. Consolas and Segoe UI are built in.
Always show menu on launchOn = always open this menu at launch. Off = boot straight into the remembered game. Hold CTRL on launch to return to the main window.
Turn off all tooltipsSuppress every hover tooltip in this window. Turn it on if the little help balloons get in your way; turn it off to get them back. Takes effect immediately.
ThemeColor theme for the loader UI. Switches live so you can preview each one.
Cabinet Mode: Boot directly to gameCabinet/attract mode: ALWAYS launch the saved game and never show the menu. Hold SHIFT while the loader starts to override and open this menu (escape hatch). Useful for dedicated cabinets running one title.

Boot Mode Reference

Always Show MenuBoot Straight to GameThis boots to
ONOFFMenu (main UI window)
ONONGame (SHIFT brings back menu)
OFFONGame (SHIFT brings back menu)
OFFOFFGame (SHIFT brings back menu)*

* If both are off and no game has ever been run, the loader overrides and shows the menu until a game is selected or Cabinet Mode is ticked.

Chapter 07

Audio Settings

The AUDIO section. Simple, straightforward, cool, and normal.

OptionWhat it does
Volume (0 100)Master volume, 0 100. Controls the main game audio. You may also change in game audio in the game's service menu or settings for more fine grained control.
Pause audio during pause menuSilence game audio while the in game pause menu is open. Only the Lindbergh runtime acts on this. Every other board leaves the audio pause callback unset. The pause menu's Audio page shows the same switch as "Pause in Menu," and its Save Settings rewrites that one line in ultra.ini.

Chapter 08

Game Settings

Per title behavior: free play, language, attract mode and save states.

OptionWhat it does
Skip attract movieSkip the attract/intro movie middleware so games boot straight to playable. Useful for some Lindbergh titles and other boards.
Skip audio initializationSkip sound hardware init. A troubleshooting switch for titles that crash in audio setup.
Skip JVS I/O enumerationSkip JVS I/O enumeration. Only for titles that hang when probing for arcade I/O you don't have. Leave this off normally.
Free Play (no coins needed)Enable the game's native Free Play so no coins are needed to start. Many people enjoy this feature, but some games won't work with it.
Snapshots / save statesEnable in session save states so you can roll back to any earlier moment in play. Requires a relaunch and a small performance cost. The loader is doing top level memory control in games that do not support it. The feature works but use at your own discretion.
English (If game supports it)Use the game's own English text if it ships it. Two reversible methods: flip its language/region config switch, or load its English asset folder. Nothing is translated and no game files are modified. Any config the loader does change is kept alongside as .ultra lang bak. If you use an English patch or mod, turn this option OFF.
Enable audioMaster audio enable for the running game. Check this first if you experience no sound across all your games.
Boot to console system menuBoot the console's built in system menu instead of the selected game. Available for PS3 (XMB), PS2 (Browser), Dreamcast (BIOS menu), Chihiro (test menu), Vita (LiveArea), Xbox 360 (NXE). Requires the matching BIOS/firmware to be installed.
Enable credit injectorUniversal Insert Coin: press a hotkey (or click the on screen pill) to add a credit to a game. Works for arcade titles across every supported system. Free Play, when turned on, silently disables the injector.
Configure...Open the Credit Injector sub panel: choose the insert coin hotkey, credits per coin, and whether to show the on screen COIN pill.

Chapter 09

Controllers and Firmware

Why the controls were designed this way, and what per game Ultra Firmware (.ufw) does.

For Ultra Loader, there are three distinct device software layers that decide what happens when you press a button, and each owns its own role. The Omni input services in the loader decide which devices exist, how they present, and what state they are in. That work is the same for every game and every board, which is why it lives in the loader and is configured universally.

Each game possesses a custom built firmware "profile" or container. That container decides what each control means on that game's cabinet: which JVS switch bit a button drives, which analog channel a pedal feeds, and the calibration window the game's own saved settings expect. That map travels inside the signed, protected firmware container, so it belongs to that game alone and no other game can see it.

The actual system board module is the translator between the two. It takes the container's map and renders it onto the JVS wire the game reads. Where the container has an opinion, the container always wins, and this governs the whole input sequence.

The reason this approach was necessary: one game reads its buttons at the JVS positions that normal convention expects, and the next one puts START on the eighth switch and VIEW on the seventh, with steering on analog channel two rather than channel zero. This is exactly what causes all the problems in other launchers. Trying to build a universal hook that satisfies every game ends up satisfying none of them. Controls fail, setups break, and it becomes the same hot mess of game by game workarounds the community has already endured for years. The only clean answer is to ship what each game wants for itself, inside its own firmware, so that every game is right about itself and no other game is affected.

In addition, no dump ever gets written to, ever. The arcade dump must stay clean, and all contents and areas for modification are read from a cache provided by the game's own custom firmware. This also ensures that two titles on the same board can never conflict over controls. All games coexist within the loader, each one taking only from what the Omni services provide for it.

For all games, the TEST menu will always be L3 on gamepads and the SERVICE menu will always be R3. Credits/coins insert as the SELECT button. These are enforced standards across all arcade games in the loader.

Firmware Container Structure

Each game firmware package comes in the form of a top and bottom layer. The bottom layer is read only and boots the game. The top layer is the play/tinker/dev area, enabled only once per session in the loader and never graduated to the bottom layer. Once dev improvements are made, all firmware packages need to be properly signed before the loader will accept them again. See Chapter 13 for more on the signing system.

Configure Controls Dialog

OptionWhat it does
Configure ControlsOpen Controller Configuration: launchers for all five Ultra Omni panels.
View ControlsShow the control map/button layout for the selected game. The first time you open it the loader probes the game's executable for its real button names (a second or three, not a hang). If the probe finds nothing, you get Ultra Loader's hand written layout for that title instead.
Install Game ArtsInstall game arts/system logos (.pak). A pack is unpacked into art\<system>\ rather than copied in whole. You are asked Replace or Merge first. Case and punctuation are ignored when matching, but the name is cut at the first dot. Keep dots out of filenames.
Add System BIOS FilesPick a folder of BIOS files. Recognized files are sorted into the right module folders. PS3UPDAT.PUP is auto unpacked and copied into dev_flash automatically. PS Vita firmware uses different keys and cannot be unpacked this way.
View FirmwareOpen the Ultra Firmware container for the selected game: its board, identity, signature, contents, and whether it is clean or carries an unblessed test layer (shown as EDITED). Browse Firmware reaches any other .ufw on disk.
Install FirmwareInstall Ultra Firmware containers: pick one or more .ufw files, not a DLL. Each one is signature checked before anything is copied. Accepted ones are filed under firmware\<board>\ next to the loader. Restart the loader to pick them up.
Uninstall FirmwareShows the firmware you have installed, then opens the firmware folder in Explorer so you can remove a container by deleting its .ufw file. The board module travels inside the container, so there is no separate module left behind. Keep a copy before removing.
Uninstall BIOS FilesDelete BIOS and console firmware files from the installed system folders. You are shown every file and its size before anything is deleted. Only files on the loader's known BIOS list are touched.
Enable gamepad inputMaster switch for Ultra Omni Play gamepad input. This also covers arcade sticks and zero delay USB encoders, which enumerate as generic HID gamepads and are detected automatically.
Ultra Omni Play »Open the Ultra Omni Play panel: up to 10 gamepads, per slot dead zone/curve/rumble test, and auto detect for Xbox, PlayStation, Switch Pro, Steam, 8BitDo, Hori, Qanba, Razer, MadCatz, PDP, Power A, and Logitech controllers. Brook, Xin Mo, and generic zero delay encoder boards are also recognized by VID/PID and work plug and play.
Enable lightgun inputMaster switch for Ultra Omni Track lightgun input.
Ultra Omni Track »Open the full Ultra Omni Track lightgun panel: per gun brands, 1 8 players, calibration, TATE, off screen reload, and one click Auto Config.
Enable wheel inputMaster switch for Ultra Omni Wheel racing input.
Ultra Omni Wheel »Open the Ultra Omni Wheel panel: up to 4 racing wheels, per slot settings, FFB test buttons, and auto detect for Logitech, Thrustmaster, Fanatec, Moza, and Simagic racing wheels.
Enable flight stick inputMaster switch for Ultra Omni Steer flight stick input.
Ultra Omni Steer »Open the Ultra Omni Steer panel: up to 4 flight sticks/HOTAS setups, HOTAS pairing, per slot settings, FFB, and auto detect for Thrustmaster, Logitech, Saitek, VKB, Virpil, CH, WinWing, Honeycomb, Turtle Beach, Microsoft, and PXN flight sticks.
Enable Keyboard BridgeFor native PC arcade dumps that only read raw keyboard/mouse inputs.
Ultra Omni Bridge »Open the Ultra Omni Bridge panel: cursor source, dead zone, sensitivity, P1/P2 click button mapping, and START/COIN/SERVICE/TEST key taps. Safe to leave on. It does nothing when no gamepad/lightgun is present.

Chapter 10

The Omni Input Services (In Detail)

Gamepads, wheels, flight sticks, and lightguns, all configured once, applied to every game.

Each service has a master switch plus per slot settings. The per slot settings are the same for each slot; they are listed once per service below with the slot number written as N.

Ultra Omni Play (Gamepad)

OptionWhat it does
Enable Ultra Omni PlayMaster switch. Routes every connected gamepad (Xinput slots 0 3 and DirectInput slots 4 9, up to 10 players) into the running game.
Auto detect pads (zero setup)Reads each pad's USB VID/PID, identifies the brand (Xbox / PlayStation / Switch Pro / 8BitDo / Hori / Qanba / Razer / MadCatz / PDP / Power A / Logitech / Brook / Xin Mo / generic HID), and picks sensible dead zone + curve + rumble defaults per slot. Zero delay USB encoder boards, Sanwa and Seimitsu arcade sticks, and Brook fighting boards are all included in this detection pass.
Universal gamepad supportAccept ALL gamepad families at once: Xinput, DirectInput, generic HID pads, arcade sticks, zero delay encoders, and all major brands. Leave on for plug and play. Disabling this restricts input to Xinput slots 0 3 only.
Rumble / force feedbackGlobal rumble/force feedback gate. On = the service sends motor effects to any pad that supports them. Off = every pad is silent.
Intelligent stick auto calibrationContinuously corrects stick drift and center point offset. Turn this off only for new controllers and/or premium pads that already calibrate onboard.
Trigger threshold (1 100%)How far an analog trigger must be pulled before it registers as a digital press. Lower = hair trigger, higher = firm pull.

Per slot settings (one row per slot): Enable slot · Brand/status · Dead zone % (0 50) · Response curve % (50 200) · Rumble on/off · Rumble test

Ultra Omni Steer (Flight Stick)

OptionWhat it does
Enable Ultra Omni SteerMaster switch. Feeds roll/pitch/yaw/throttle + trigger + cabinet buttons into every flight aware system (Lindbergh JVS for After Burner Climax, Type X flight cabs, libretro flight cores).
Auto detect sticks + HOTAS pairingReads each stick's USB VID/PID, identifies the brand (Thrustmaster / Logitech / Saitek / VKB / Virpil / CH / WinWing / Honeycomb / Turtle Beach / Microsoft / PXN), and pairs HOTAS splits (stick + throttle + rudder) into one logical slot.
Enable force feedback (FFB)Global FFB gate for FFB capable sticks. Off = every stick is silent.

Per slot settings: Enable slot · Brand/status · Dead zone % · Sensitivity % · Response curve % · Invert X · Invert Y · Invert Z · Throttle reverse · FFB test

Ultra Omni Wheel (Racing Wheel)

OptionWhat it does
Enable Ultra Omni WheelMaster switch. Feeds wheel steer + pedals + shift + cabinet buttons into every wheel aware system (Type X/X2 JVS, Sega Europa R/RingEdge, libretro racing cores).
Auto detect wheels (zero setup)Reads each wheel's USB VID/PID + HID product string, identifies the brand (Logitech G29/G920/G923/DFGT, Thrustmaster T300/T500/T150, Fanatec CSL/CSW/DD, Moza, Simagic) and loads its calibration.
Enable force feedback (FFB)Send road feel + rumble to wheels that support FFB. Turn off for a quiet wheel or when a broken driver keeps engaging the motor at zero speed.

Per slot settings: Enable slot · Dead zone % · Sensitivity % · Response curve % · Invert · Brand/status

Ultra Omni Track (Lightgun)

OptionWhat it does
Enable Ultra Omni TrackMaster switch. Feeds gun aim + buttons into the running game. When off, the loader falls back to pad/keyboard.
Horizontal sensitivityHorizontal aim gain, 10 300%. 100% = exact 1:1 tracking. Applied around screen center so it never shifts your zero.
Vertical sensitivityVertical aim gain, 10 300%. 100% = exact 1:1 tracking.
X calibration offsetHorizontal trim, 50..+50. Negative shifts aim left, positive shifts right. Fixes a constant left/right bias.
Y calibration offsetVertical trim, 50..+50. Negative shifts aim up, positive shifts down.
Mirror horizontal axis (invert X)Flip aim left/right. Use for mirror mounted cabs or a gun whose camera is upside down on the X axis.
Mirror vertical axis (invert Y)Flip aim up/down. Use if up and down are reversed (common on some IR mounts).
Swap X / Y axes (TATE mode)Transpose the aim axes for portrait/rotated (TATE) cabinets so the gun still tracks correctly after the screen is turned 90 degrees.
Off screen auto reloadThe classic arcade reload: pull the trigger while pointing off screen to reload. Turn off if a game uses a dedicated reload button instead. Right click always reloads regardless.
Auto detect gun & load its profileZero setup: on launch, reads each connected device's USB VID/PID + product name, matches the gun maker, and auto loads its profile (recoil, border, button map).
Aim border (thin white, auto fit)Draws Ultra Omni Track's own thin white border around the screen edge. This completely replaces Sinden's thick border for camera guns. You no longer need Sinden's buggy border software. Also harmless for IR guns.
Px sizeAim border thickness, 1 40 px. Auto scales to your screen resolution.
Select Gun HardwareSelect your lightgun manufacturer profile so Ultra Loader applies the correct settings. Profiles for almost every lightgun manufacturer are included.
Auto Config (smart setup)Detects your attached pointing devices, turns on the lightgun, creates one player per device set to auto detect, and restores sane aim defaults. Each gun gets its own distinct ID.

Per slot settings: Enable player slot · Assigned gun (Auto detect or specific brand profile)

Ultra Omni Bridge (Gamepad to Keyboard/Mouse)

OptionWhat it does
Enable Keyboard BridgeMaster switch. When on, a connected gamepad or lightgun drives synthetic mouse cursor moves, clicks, and key taps for games that only read raw OS keyboard/mouse input. Safe to leave on. It does nothing when no gamepad/lightgun is present.
Drive cursor from gamepad stickWhen no lightgun is present, lets a connected gamepad's analog stick move the synthetic cursor instead.
Aim with right stick (default: left stick)Which analog stick moves the synthetic cursor. Off = left stick (default). On = right stick.
Stick deadzone (0 50%)Ignores tiny stick movement around center before it moves the cursor.
Cursor sensitivity (10 300%)Stick to cursor speed multiplier. 100% = normal speed.
Player 2's trigger is RIGHT mouse buttonPlayer 1's trigger is always left click. This picks which physical button P2's trigger maps to. On by default.

Chapter 11

Credits and Coins

Free play, the on screen coin pill, and automatic coin and credit insertion.

Most arcade games expect a coin mechanism. Ultra Loader can supply one in three ways: by switching the game into its own free play mode, by giving you a coin button, or by inserting credits automatically when the game boots.

Hotkey & Base Coin

OptionWhat it does
Insert coin hotkeyThe keyboard key that drops a coin while a game is running. The loader watches for this key globally so it works even though the game owns the keyboard. Be sure to pick a key the game itself does not use.
Credits per coin (1 9)How many credits one coin is worth. Some games require 2 or more coins to get 1 credit (Pokken Tournament, for example). This mirrors the cabinet operator setting. For most games, leave it at 1.
Player (which slot receives)Which player slot the coin is credited to, P1 through P4. On a two player cabinet each side has its own coin slot, and some games will only start the side that was paid for.
JVS pulse duration (ms)How long the simulated coin switch is held closed, in milliseconds (range 30 200). A real coin mechanism holds the switch for roughly 60ms (the default). Raise if a game misses coins. Lower if one press registers as two.

Auto Insert on Game Boot

OptionWhat it does
Automatically insert credits when a game startsDrops credits automatically as soon as the game boots, so you never see the insert coin screen. Similar to free play, but does not disable the insert coin mechanism. Super convenient for testing.
How many credits (1 9)How many credits to insert automatically at boot. Only used when automatic insertion is switched on.

On Screen Coin Pill

OptionWhat it does
Show clickable COIN pill during gameplayDraw a small clickable COIN button on top of the running game, so you can add credits with the mouse instead of the hotkey. Useful on a desktop. Turn it off on a real cabinet.
Pill positionWhich corner the COIN pill sits in: bottom right (default), bottom left, top right, or top left. Move it if it covers something the game draws in that corner.
Show live credit count inside the pillPrint the current credit count inside the pill so you can see at a glance how many credits the game has banked.
Play cabinet coin drop sound on insertPlay a coin drop sound when a credit is inserted, the way a real cabinet clunks. Cosmetic only. It does not change what the game receives.

Chapter 12

Boards and Systems

Every arcade board Ultra Loader supports, and what each one needs.

Ultra Loader identifies the board from the game's path and executable, then loads the matching firmware container. Board keywords are matched against the game's path, using the longest and most specific name first. The loader also recognizes games by the firmware container's internal header, so even if you label a game wrong, it will still find it. That said, label your game folders accurately so that your art/icons display correctly.

Module IDBoard (use these names)I/OGraphics
sega_lindberghSega LindberghJVSGeForce 7
taito_typexTaito Type XJVSGeForce
taito_typex2Taito Type X2JVSRadeon
taito_typex3Taito Type X3JVSGPU
taito_typex4Taito Type X4JVSGPU
taito_typezeroTaito Type X ZeroJVSGPU
taito_typexplusTaito Type X+JVSGPU
taito_nesicaTaito NESiCAxLiveUSBGPU
taito_nesica2Taito NESiCAxLive2USBGPU
sega_ringedgeSega RingEdgeJVSGPU
sega_ringwideSega RingWideJVSGPU
sega_ringedge2Sega RingEdge 2JVSGPU
sega_nuSega NuUSBGPU
sega_nu2Sega Nu 2USBGPU
sega_nucSega Nu SXUSBGPU
sega_allsSega ALLSUSBGPU
sega_alls_uxSega ALLS UXUSBGPU
sega_europarSega Europa RJVSGPU
namco_n2Namco System N2JVSGPU
namco_es1Namco System ES1JVSGPU
namco_es2Namco System ES2JVSGPU
namco_es2plusNamco System ES2+JVSGPU
namco_es3Namco System ES3JVSGPU
namco_es4Namco System ES4JVSGPU
namco_bna1Namco System BNA1JVSGPU
konami_pcKonami Arcade PCI/OGPU
konami_bemaniKonami Bemani PCACIOGPU
konami_pythonKonami PYTHONJVSPS2 GS
cave_pcCave Arcade PCCOMGPU
exa_arcadiaexA ArcadiaJVSGPU
unico_pcUNICO Arcade PCJVSGPU
rawthrills_pcRaw Thrills Arcade PCJVSGPU
rawthrills_g5Raw Thrills g5LPT/FTDIOpenGL
wahlap_wpcWahlap WPCJVSGPU
andamiro_pcplusAndamiro PC+JVSGPU
global_vrGlobal VR SystemJVSGPU
igs_pcIGS Arcade PCJVSGPU
incredible_technologiesIncredible Technologies PCJVSGPU
play_mechanixPlay MechanixJVSGPU
examu_exboardExamu eX BoardJVSGPU
generic_pcArcade PCI/OGPU

Chapter 13

Firmware Signing and Protection

The most important chapter of this entire manual. Please read this to understand what was done and why.

Given the problem of gatekeeping and profiteering by certain individuals using these modern arcade games against the community, along with the development potential of this software, it became clear that some form of protection was needed against this happening again. This was not merely to prevent gatekeeping and profiteering, but also very importantly, to protect the community.

Malware exists, and many ill intentioned people use it constantly. The types of software that launch arcade games usually live on the edge of what most operating systems would report as exploits and viruses. With the rise of AI and other tools available to bad actors, the risk is ever more prevalent. As such, a firmware signing system was developed for all games, permanently locked against the loader.

Every game's firmware is signed, and the loader verifies that signature before it will load the game. The check is fully enforced. Any module that has been edited or tampered with, even in the slightest way, will be refused, and the log will show a [SIGCHECK] error with the reason.

The per-board system modules are source available: anyone can read, build, and improve them, and every improvement raises compatibility for all games on that board. The per-game firmware is closed source and is distributed only through the loader, released when a game is confirmed working; you can still tune a game through its unsigned top layer while the signed core stays locked. A rebuilt module must be re signed before it will load a game again, which prevents random, unsigned modules from being loaded.

Community Signing Process

Over time, a few trustworthy community members (selected by community recommendation) will be provided with the signing keygen, giving them full authority to verify, build, and re sign modules for the general public. For now, all improved firmware runs upstream through the project, where it is tested, signed, and then released back to the public.

Chapter 14

Ultra.ini Reference (The Settings File)

Every key the loader reads and writes, in the order it stores them.

Settings are saved to ultra.ini beside the loader. You can edit it by hand while the loader is closed. It is rewritten atomically on save, so a crash cannot leave a half written file.

KeyDefault
[display]
width1920
height1080
display_mode1
aspect3
vsync1
fps_cap60
rotate0
upscaler2
sharpness50
antialias1
anisotropy1
cutscene_fill1
framegen0
[loader]
show_splash1
mute_splash_sound0
hide_console1
easy_config1
boot_to_menu1
boot_to_game0
boot_console_menu0
skip_movie1
skip_jvs0
skip_audio0
freeplay0
snapshots0
force_english0
allnet1
allnet_elevate1
disable_tooltips0
[credit_injector]
credit_injector_enable0
credit_injector_hotkey45
credit_injector_credits_per_coin1
credit_injector_show_button1
credit_injector_auto_insert0
credit_injector_auto_insert_count1
credit_injector_player0
credit_injector_hold_ms60
credit_injector_pill_position0
credit_injector_show_count1
credit_injector_sound_feedback1
[vita]
vita_homebrew_mode1
vita_verbose_missing_modules1
[audio]
audio_enable1
audio_volume50
pause_game_audio1
menu_sounds1
[controllers]
rumble1
deadzone12
gun_cabinet0
stick_sensitivity100
stick_curve0
stick_smooth40
stick_invert_x0
stick_invert_y0
trigger_threshold25
autocal1
analog_cal1
lightgun_enable1
lightgun_x_sens100
lightgun_y_sens100
lightgun_x_offset0
lightgun_y_offset0
lightgun_invert_x0
lightgun_invert_y0
lightgun_swap_xy0
lightgun_offscreen_reload1
lightgun_brands256
lightgun_players1
lightgun_assign0,0,0,0,0,0,0,0
lightgun_auto_profile1
lightgun_border0
lightgun_border_thickness3
lightgun_show_experimental0
universal_gamepad1
[wheel]
wheel_enable0
wheel_auto_profile1
wheel_ffb_enable1
wheel_players1
wheel_deadzone8,8,8,8
wheel_sensitivity100,100,100,100
wheel_curve100,100,100,100
wheel_invert_steer0,0,0,0
[flight]
flight_enable0
flight_auto_profile1
flight_ffb_enable1
flight_players1
flight_deadzone6,6,6,6
flight_sensitivity100,100,100,100
flight_curve100,100,100,100
flight_invert_x0,0,0,0
flight_invert_y0,0,0,0
flight_invert_z0,0,0,0
flight_throttle_deadzone4,4,4,4
flight_throttle_curve100,100,100,100
flight_throttle_reverse0,0,0,0
[play]
play_enable1
play_auto_profile1
play_players1
play_deadzone10,10,...
play_curve100,100,...
play_rumble1,1,...
[bridge]
bridge_enable0
bridge_gamepad_source1
bridge_stick_right0
bridge_deadzone15
bridge_sensitivity100
bridge_p2_button_right1
bridge_vk_start49
bridge_vk_coin53
bridge_vk_service0
bridge_vk_test0
[game]
game_path(last launched game)
library_path(empty)
library_compact_console_tiles0
font_nameSegoe UI
theme_nameGrey
gl_driver(empty)

Chapter 15

Environment Variables (For the Devs)

Overriding any setting from outside, for scripting and for testing.

Every setting reaches the game as an environment variable, and an explicit variable set before launch wins over both the saved settings and any board default. This is the supported way to script the loader or to test one change without disturbing your configuration.

The loader itself publishes or reads the 150+ variables below. Individual board hooks add many more. Those are documented in each board's own source code and are not user settings.

VariableReferenced in
ULTRA_AAd3d8_sharpen.c, d3d8_sharpen.h, d3d8_throttle.c
ULTRA_ALLNET_NETIDallnet_setup.c
ULTRA_ALLNET_SERIALallnet_setup.c
ULTRA_ANISOglx_emu.c
ULTRA_ART_TRACEsettings.c
ULTRA_ASPECTd3d8_throttle.c, d3d9_throttle.c, d3d9_throttle_examu.c
ULTRA_AUDIO_VOLaudio_engine.c
ULTRA_AUTOCALomni_client.h, main.c, settings.c
ULTRA_BOOT_AUDIOlindbergh_main.c, main.c
ULTRA_BOOT_CONSOLE_Hboot_console.h
ULTRA_BOOT_CONSOLE_MENUmain.c
ULTRA_BOOT_GPUlindbergh_main.c, main.c
ULTRA_BOOT_IOlindbergh_main.c, main.c
ULTRA_BOOT_SYSTEMlindbergh_main.c, inject_main.c
ULTRA_BOOT_TITLElindbergh_main.c, inject_main.c
ULTRA_BOOT_XMBmain.c
ULTRA_BORDERLESSd3d9_throttle_pcplus.c, d3d8_throttle.c, d3d9_throttle.c
ULTRA_BRIDGE_DEADZONEhook_dllmain_unico.c, omni_client.h
ULTRA_BRIDGE_ENABLEhook_dllmain_pcplus.c, omni_bridge.c, hook_dllmain.c
ULTRA_BRIDGE_GAMEPADhook_dllmain_unico.c, omni_client.h
ULTRA_BRIDGE_P2_RIGHThook_dllmain_unico.c, omni_client.h
ULTRA_BRIDGE_SENShook_dllmain_unico.c, omni_client.h
ULTRA_BRIDGE_STICK_RIGHThook_dllmain_unico.c, omni_client.h
ULTRA_BRIDGE_VK_COINomni_client.h, main.c
ULTRA_BRIDGE_VK_SERVICEomni_client.h, main.c
ULTRA_BRIDGE_VK_STARThook_dllmain_unico.c, omni_client.h
ULTRA_BRIDGE_VK_TESTomni_client.h, main.c
ULTRA_CAP_GL_PRESENTlindbergh_module.c, ultra_module.h
ULTRA_CAS_SHARPglx_emu.c
ULTRA_CATALOG_Hultra_catalog.h
ULTRA_CI_PULSEcredit_injector_service.c
ULTRA_CI_PULSE_SLOTcredit_injector_service.c, main.c
ULTRA_CURRENT_ABI_VERSIONsign_module.c, module_manifest.h, module_sig_verify.c
ULTRA_CUT_FILLglx_emu.c
ULTRA_DISP_MODEglx_emu.c
ULTRA_DI_AXIS_di_range.h, omniplay_service.c, omniwheel_service.c
ULTRA_DI_AXIS_RXdi_range.h, di_range.c, omniwheel_service.c
ULTRA_DI_AXIS_RYdi_range.h, di_range.c
ULTRA_DI_AXIS_RZdi_range.h, di_range.c, omniplay_service.c
ULTRA_DI_AXIS_SLIDERdi_range.h, di_range.c
ULTRA_DI_AXIS_Xdi_range.h, di_range.c, omniwheel_service.c
ULTRA_DI_AXIS_Ydi_range.h, di_range.c, omniwheel_service.c
ULTRA_DI_AXIS_Zdi_range.h, di_range.c, omniplay_service.c
ULTRA_FLIGHT_AUTO_PROFILEomni_client.h, main.c, settings.c
ULTRA_FLIGHT_ENABLEnamco_es3_main.c, omni_client.h, main.c
ULTRA_FLIGHT_FFBomni_client.h, main.c, settings.c
ULTRA_FLIGHT_PLAYERSmain.c, omnisteer_service.c
ULTRA_FORCE_TIMESCALEultra_tracer.c
ULTRA_FPS_CAPandamiro_pcplus_main.c, d3d9_throttle_pcplus.c, cave_pc_main.c
ULTRA_FREEPLAYftdi_shim.h
ULTRA_FSR_SHARPglx_emu.c
ULTRA_FULLSCREENd3d11_throttle_es3.c, d3d9_throttle.c, settings.c
ULTRA_GAMEDATAjvs_serial_hook_adr.c, jvs_serial_hook_pcplus.c, jvs_serial_hook.c
ULTRA_GAME_CALjvs_input.c
ULTRA_GL_DRIVERglx_emu.c, libgl_stub.c, lindbergh_main.c
ULTRA_HASH_BYTESsign_module.c, verify_module.c, module_manifest.h
ULTRA_HOST_FULLSCREENmain.c
ULTRA_HOST_HEIGHTmain.c
ULTRA_HOST_WIDTHmain.c
ULTRA_INPUT_PUMPultra_input_pump.h, main.c, ultra_input_pump.c
ULTRA_IO_ANALOGhook_dllmain_pcplus.c, ultra_io_shared_pcplus.h, hook_dllmain.c
ULTRA_IO_ANALOG_OWNEDultra_io_shared.h
ULTRA_IO_COINShook_dllmain_pcplus.c, ultra_io_shared_pcplus.h, hook_dllmain.c
ULTRA_IO_DIAGultra_io_publish.c
ULTRA_IO_ENVVARhook_dllmain_pcplus.c, ultra_io_shared_pcplus.h, hook_dllmain.c
ULTRA_IO_FLAG_HOOK_ATTACHEDhook_dllmain_pcplus.c, ultra_io_shared_pcplus.h, hook_dllmain.c
ULTRA_IO_FLAG_LOADER_ALIVEultra_io_shared_pcplus.h, input_src_gun.c, typex2_gun.c
ULTRA_IO_MAGIChook_dllmain_pcplus.c, ultra_io_shared_pcplus.h, hook_dllmain.c
ULTRA_IO_PLAYERShook_dllmain_pcplus.c, ultra_io_shared_pcplus.h, hook_dllmain.c
ULTRA_IO_PUBLISHultra_io_publish.h, ultra_io_publish.c
ULTRA_IO_SHMhook_dllmain_pcplus.c, ultra_io_shared_pcplus.h, hook_dllmain.c
ULTRA_IO_VERSIONultra_io_shared_pcplus.h, ultra_io_shared.h
ULTRA_ISHM_PADSultra_input_shm.h, ultra_input_pump.c, ultra_transport.c
ULTRA_ISHM_STICKSultra_input_shm.h, ultra_input_pump.c, ultra_transport.c
ULTRA_ISHM_WHEELSultra_input_shm.h, ultra_input_pump.c, ultra_transport.c
ULTRA_JVS_LOGd3d9_throttle_pcplus.c, hook_dllmain_pcplus.c, jvs_serial_hook_pcplus.c
ULTRA_LIGHTGUN_ENABLElindbergh_main.c, hook_dllmain_generic.c
ULTRA_LIGHTGUN_XOFFlindbergh_main.c, omni_client.h
ULTRA_LIGHTGUN_XSENSlindbergh_main.c, omni_client.h
ULTRA_LIGHTGUN_YOFFlindbergh_main.c, omni_client.h
ULTRA_LIGHTGUN_YSENSlindbergh_main.c, omni_client.h
ULTRA_LIGHTGUN_OSMOUSEmain.c
ULTRA_LOADER_LOGultra_io_publish.c
ULTRA_LOGOresource_loader.h, settings.c
ULTRA_MAX_TRUSTED_KEYStrusted_keys.h
ULTRA_MODEL2_COREmain.c
ULTRA_MODULEcave_pc_main.c, examu_exboard_main.c, lindbergh_main.c
ULTRA_MODULE_FALLBACKmain.c
ULTRA_MODULE_ID_MAXsign_module.c, verify_module.c, module_manifest.h
ULTRA_MUTE_SPLASHmain.c, settings.c, splash.c
ULTRA_NAMCO_ENGLISHjvs_serial_hook_es3.c, settings.c
ULTRA_NO_LOGFILEmain.c
ULTRA_NO_SPLASHlindbergh_main.c, inject_main.c
ULTRA_OV_AUTOCLOSEpause_menu_service.c
ULTRA_OV_PAGEpause_menu_service.c
ULTRA_OV_SHOTpause_menu_service.c
ULTRA_PADomni_client.h, main.c, settings.c
ULTRA_PARALLEL_LOADmain.c
ULTRA_PAUSE_AUDIOsettings.c
ULTRA_PLAY_AUTO_PROFILEomni_client.h, main.c, settings.c
ULTRA_PLAY_ENABLEomni_client.h, main.c, settings.c
ULTRA_PLAY_PLAYERSmain.c, omniplay_service.c
ULTRA_PRESENT_FILTERglx_emu.c
ULTRA_PRESENT_HZsettings.h, main.c, settings.c
ULTRA_PS3_FW_INSTALLERsettings.c
ULTRA_RESd3d9_throttle_pcplus.c, d3d8_throttle.c, d3d9_throttle.c
ULTRA_RES_Hd3d9_throttle_pcplus.c, d3d8_throttle.c, d3d9_throttle.c
ULTRA_RES_Wd3d9_throttle_pcplus.c, d3d8_throttle.c, d3d9_throttle.c
ULTRA_ROTATEboard_profile.c, d3d8_throttle.c, d3d9_throttle.c
ULTRA_RUMBLEomni_client.h, main.c, settings.c
ULTRA_SCENE_SCALElindbergh_main.c, maintrace.c
ULTRA_SEGA_CONTENT_DIRtruecrypt_bypass.c, truecrypt_bypass_nu2.c
ULTRA_SHARPENd3d8_sharpen.c, d3d8_sharpen.h, d3d8_throttle.c
ULTRA_SIG_FORMAT_VERSIONsign_module.c, verify_module.c, module_manifest.h
ULTRA_SIG_MAGICsign_module.c, verify_module.c, module_manifest.h
ULTRA_SKIP_AUDIOpatcher.c, segaapi_stub.c
ULTRA_SKIP_JVSpatcher.c
ULTRA_SKIP_MOVIEpatcher.c
ULTRA_SM_FRAMEGENmain.c, settings.c
ULTRA_SM_SHARPENsettings.c
ULTRA_SM_SHARPNESSsettings.c
ULTRA_STICKomni_client.h, main.c, settings.c
ULTRA_STICK_DIR_OFFultra_io_publish.c
ULTRA_STICK_DIR_ONultra_io_publish.c
ULTRA_TOUCHhook_dllmain_typex3.c, ultra_touch.h, ultra_touch.c
ULTRA_TOUCH_BTNultra_touch.h, ultra_touch.c
ULTRA_TOUCH_CURSORultra_touch.c
ULTRA_TOUCH_DEADZONEultra_touch.c
ULTRA_TOUCH_HZultra_touch.h, ultra_touch.c
ULTRA_TOUCH_LOGultra_touch.h, ultra_tracer.c
ULTRA_TOUCH_LXultra_touch.c
ULTRA_TOUCH_LYultra_touch.c
ULTRA_TOUCH_MOUSEultra_touch.c
ULTRA_TOUCH_PADultra_touch.c
ULTRA_TOUCH_PAD_POINTERultra_touch.c
ULTRA_TOUCH_RXultra_touch.c
ULTRA_TOUCH_RYultra_touch.c
ULTRA_TOUCH_SLIDEultra_touch.c
ULTRA_TOUCH_SPEEDultra_touch.c
ULTRA_TRACEhook_dllmain_adr.c, hook_dllmain.c, hook_dllmain_examu.c
ULTRA_TRACE_ERRTABultra_tracer.h, ultra_tracer.c
ULTRA_TRACE_LOGultra_tracer.h, ultra_touch.c, ultra_tracer.c
ULTRA_TRACE_MAXEXCultra_tracer.h, ultra_tracer.c
ULTRA_TRACE_VERBOSEultra_tracer.h, ultra_tracer.c
ULTRA_TRIGGER_THRESHOLDomni_client.h, main.c, settings.c
ULTRA_UNIVERSAL_GAMEPADomni_client.h, main.c, settings.c
ULTRA_VITA_FW_REPORTvita_firmware_check.h, main.c
ULTRA_VITA_HOMEBREW_MODEmain.c
ULTRA_VITA_VERBOSE_MISSING_MODULESmain.c
ULTRA_VSYNCsettings.c
ULTRA_WHEELomni_client.h, main.c, settings.c
ULTRA_WHEEL_AUTO_PROFILEomni_client.h, main.c, settings.c
ULTRA_WHEEL_ENABLEomni_client.h, main.c, settings.c
ULTRA_WHEEL_FFBomni_client.h, main.c, settings.c
ULTRA_WHEEL_PLAYERSmain.c, omniwheel_service.c
ULTRA_WINDOWEDd3d9_throttle_pcplus.c, d3d8_throttle.c, d3d9_throttle.c

Chapter 16

Troubleshooting

The failures that come up the most, and what each one usually means.

SymptomCause and fix
Game starts, then exits with code 3221225477 That is 0xC0000005, an access violation. This is a crash, not a quit. Check [PREFLIGHT] first: a game running under the wrong board is the most common cause, because a board hook may carry per game code that is meaningless against another executable.
Game runs perfectly but has no controls at all Before adjusting any mapping, confirm the game's input path exists. A missing dependency DLL, or an input API the hook does not intercept (a game using DirectInput 7 where the hook only handles DirectInput 8), produces exactly this: everything else correct, no input.
Game renders black but audio is heard and game logic runs Turn OFF the upscaler and set sharpening to 0. That post process pass is the usual cause for Taito Type X and Type X2 hardware. Also try turning off the "use English if supported" setting. Some games may panic if asked for English they don't have.
Game window is small in a corner The game asked for a fixed backbuffer smaller than the window. Enable the upscaler, or set the output resolution explicitly.
remote LoadLibraryA timed out (wait=0x102) Injection was blocked, almost always by antivirus behavior shielding. Writing a DLL and injecting it is the same thing a virus or dropper does. Add an exception for the Ultra Loader folder and the game folder to your antivirus.
[SIGCHECK] refuses a module The module does not match its signature. If you rebuilt or edited a module, you must send it to a designated signer to get it re signed before it can be loaded again.
A board module is reported as not installed or refuses to load The loader will fall back to another module, which may run the wrong board's code. Install the correct module rather than relying on the fallback. Also make sure your arcade system folders are labelled correctly. Even a misspelling of "Sega RingEdge" as "Sega Ringege" can cause the loader not to find the right module.
Game reports itself OFFLINE Expected for titles with network authentication when the network files are absent from the dump. Most such games are fully playable offline.