Daphne / Hypseus Singe: The Complete LaserDisc Arcade Guide
The definitive engineering manual for LaserDisc arcade preservation. Covers the dual-engine architecture (Daphne hardware emulation + Singe Lua simulation), framefile protocol, VLDP seeking mechanics, lightgun integration, and frontend orchestration for Dragon's Lair, Space Ace, and the full LaserDisc catalog.
Overview: The Dual-Engine LaserDisc Platform
LaserDisc arcade games represent one of the most mechanically complex preservation challenges in retro gaming. Daphne, created by Matt Ownby, was the foundational emulator. Hypseus Singe is the modern SDL2-based fork by DirtBagXon that enables native execution across Windows, macOS, Linux, and ARM single-board computers.
Hypseus Singe is a dual-engine binary: the Daphne engine emulates original arcade hardware ROMs (Dragon's Lair, Space Ace, Cliff Hanger), while the Singe engine simulates fan-made games via Lua scripting (Mad Dog McCree, ActionMax library) without requiring original ROM dumps.
Beginning: File Architecture, Framefiles, and CLI Basics
For Daphne engine titles, two strictly separated components are required: the ROM archive (.zip) in the roms/ directory, and the media directory named identically with a .daphne extension (e.g., dle21.zip → dle21.daphne/). Key file types: .m2v (raw MPEG-2 video stream), .ogg (Ogg Vorbis audio tracks), .txt framefile (frame offset manifest for the VLDP), .dat (binary cache, must be deleted after asset migration).
The framefile's first line defines where the VLDP searches for .m2v and .ogg files. Use relative paths (../lair.daphne/) for portability. The dle21.txt framefile can point to ../lair.daphne/ allowing Dragon's Lair Enhancement v2.1 to share base game video assets without duplication.
Minimum valid CLI: hypseus <game_type> vldp -framefile <path>. Both game type string and -framefile are mandatory. Key game type strings: lair/lair_f/lair_e (Dragon's Lair), ace/ace_a/ace91 (Space Ace), cliff/cliffalt (Cliff Hanger), cobra/cobram3 (Cobra Command), lair2 (Dragon's Lair 2), singe (all Lua-based Singe games).
Singe .zlua ROMs (v2.11.2+) package entire Lua logic frameworks into a single .zip archive. Use -usealt/-altscript to specify which internal .singe startup file to execute for multi-game archives.
Intermediate: VLDP Tuning, Display, Audio, Scoreboards, and Input APIs
VLDP Seeking: -seek_frames_per_ms 30.0 for 29.97fps discs, 20.0 for 23.976fps. Set to 0 for instant transitions. -latency <ms> injects delay before search initialization, critical for Dragon's Lair F2 ROM timing bugs.
Display: -force_aspect_ratio enforces 4:3. -linear_scale applies bilinear filtering. -scanlines simulates CRT phosphor. -vertical_stretch 24 removes Cliff Hanger letterboxing. -horizontal_stretch adjusts horizontal baked-in bars.
Audio: -sound_buffer 2048 default (increase to 4096 for stability). -volume_nonvldp controls logic board audio. -volume_vldp controls LaserDisc optical audio independently.
Scoreboards: -useoverlaysb 1 or 2 for software overlay. -usbscoreboard COM 4 9600 for physical USB LED boards. -use_annunciator for Space Ace physical annunciator boards. -enable_leds for keyboard LED flashing.
Input APIs: Legacy hypinput.ini uses raw SDL2 joystick axis telemetry with +1 button offset. GameController API requires gamecontrollerdb.txt in Hypseus home directory, hypinput_gamepad.ini configuration, AND -gamepad launch argument. Without -gamepad, the file is silently ignored.
Cliff Hanger anomaly: KEY_BUTTON2 acts as both in-game Foot action AND master Start button. No dedicated Start button existed on original hardware.
Cabinet Killer Traps
12 critical failure points: (1) Mismatched .daphne folder and ROM name, (2) Framefile line 1 wrong directory, (3) Stale .dat cache after asset migration, (4) Case sensitivity on Linux/Raspberry Pi, (5) Omitting -gamepad flag with hypinput_gamepad.ini, (6) Cliff Hanger Start button mapping, (7) Sinden border clipped by TV overscan, (8) Forgetting -framefile in CLI string, (9) Absolute paths in framefiles on shared builds, (10) EGL window surface crash on ARM SBCs, (11) Audio device locked by another process, (12) Skipping gamecontrollerdb.txt placement.
Advanced: Lightgun Emulation, Frontend Integration, and Diagnostics
Sinden Lightgun: -sinden <width> <color> manages absolute input API and visual border generation. Width 1-10 auto-scales. Colors: (w)hite, (r)ed, (g)reen, (b)lue, (x)black. Pair with -nocrosshair for iron-sights-only experience. Display overscan clips tracking border and breaks calibration.
Borf Launcher: Premier Windows/macOS management utility by Widge. Abstracts CLI parameters into checkboxes/dropdowns, generates .bat files for LaunchBox/BigBox integration. Polls DirtBagXon GitHub for engine updates.
Batocera: Hypseus natively integrated. batocera.conf manages emulator behavior. RetroPie: Install via RetroPie-Setup script. Use symlinks (sudo ln -s) to share ROM and framefile directories without duplicating video assets.
Diagnostics: hypseus.log captures exact VLDP parsing failures, GPU initialization errors, and audio thread locks. Delete all .dat files after any asset migration. ARM SBC EGL crash fix: append -texturestream. Audio device lock fix: increase -sound_buffer to 4096.
FAQ
Daphne vs Hypseus Singe? Daphne is the original emulator. Hypseus Singe is the modern SDL2 fork with Singe Lua support, ARM compatibility, and active development. Always use Hypseus for new builds.
What is the Singe engine? Lua-based scripting framework for fan-made LaserDisc games without original ROM dumps. Runs Mad Dog McCree, ActionMax library, American Laser Games catalog.
Game fails to boot with no error? Check: .daphne folder name matches ROM .zip exactly, framefile line 1 points to correct directory, all .m2v/.ogg filenames match framefile strings. Inspect hypseus.log.
Dragon's Lair Enhancement v2.1 without duplicating assets? Set dle21.txt framefile line 1 to ../lair.daphne/ (relative path to base game media directory).
-seek_frames_per_ms purpose? Simulates mechanical LaserDisc player seeking latency. 30.0 for 29.97fps, 20.0 for 23.976fps, 0 for instant transitions.
Add to LaunchBox? Use Borf Launcher to configure per-title options and generate .bat files that LaunchBox executes directly.
Sinden lightgun stops working? Display overscan or zoom clipping the tracking border. Disable all overscan and ensure full white border visible at all four edges.
Hypseus on Batocera or RetroPie? Batocera: natively integrated via batocera.conf. RetroPie: install via RetroPie-Setup script, use symlinks to share video assets.