Running the Game

Runtime Requirements

  • Game asset filesgamefiles/DATA, gamefiles/IMAGE08, gamefiles/IMAGE16, gamefiles/SOUND must be present
  • Working directory — the executable must be run from the project root so that relative paths to gamefiles/ resolve correctly
  • On Windows with native DirectX: DirectX runtime libraries
  • On all platforms via FreeDirect: SDL3, SDL3_image, SDL3_mixer (bundled by default)

Desktop (Linux / macOS / Windows)

# Run from the project root directory
./build/bin/SPEEDY_BLUPI_WINDOWS        # Linux/macOS
build\bin\SPEEDY_BLUPI_WINDOWS.exe      # Windows
⚠️
Working Directory
The game opens assets using paths like gamefiles/DATA/config.def. If you run the executable from inside build/bin/, these paths will fail. Always run from the project root.

Web (Emscripten)

# Start a local HTTP server and open the game in a browser
emrun cmake-build-web/bin/SPEEDY_BLUPI_WINDOWS.html

The web build preloads all game assets into the virtual filesystem at compile time. Save data is automatically stored in the browser's IndexedDB.

Android

# Install and launch via ADB
adb install -r android/app/build/outputs/apk/debug/app-debug.apk
adb shell am start -n org.openeggbert.freeeggbert/.FreeEggbertActivity

Configuration File

The game reads and writes a configuration file at gamefiles/DATA/config.def. This is a plain-text file. If it is missing or malformed, the game may fail to start.

Keys parsed by ReadConfig() in src/blupi.cpp. See Configuration for full details.

KeyValuesDescription
FullScreen0 / 1Windowed (0) or fullscreen (1)
TrueColorBack8 / 16Color depth for background images
TrueColorDecor8 / 16Color depth for decor images
MouseType1–9Mouse cursor type (1=graphic, 2=Win, 3=Win+pos)
SpeedRate1–2Game speed multiplier
Timer10–1000Timer tick interval (ms, default ~50)

Display Mode

The game runs at a fixed resolution of 640×480 pixels. On the FreeDirect/SDL3 backend, the window can be resized, and the game image will be letterboxed to preserve the original aspect ratio.

On Android and widescreen displays, Free Direct uses SDL_LOGICAL_PRESENTATION_LETTERBOX, which automatically adds black bars on the sides or top/bottom. The game image is never stretched.

Audio at Runtime

The game loads sound effects and music from gamefiles/SOUND/. If this directory is missing or empty, the game will run without audio (or may crash — needs verification).

The default audio backend is the DirectSound/MCI path (_BASS=FALSE). The BASS library alternative can be enabled at compile time. See Audio System for details.

Common Runtime Issues

ProblemLikely CauseSolution
Game exits immediately Missing gamefiles/DATA/config.def or asset directories Ensure all asset directories are present under gamefiles/
Black screen / no rendering CPixmap::Create() initialization failure Known decompilation artifact; check build logs. See Known Issues
No audio Missing SOUND directory or audio backend issue Verify gamefiles/SOUND/ exists with .blp files
Network features unavailable DirectPlay initialization fails silently Expected; game falls back to single-player. See Network System