Running the Game
Runtime Requirements
- Game asset files —
gamefiles/DATA,gamefiles/IMAGE08,gamefiles/IMAGE16,gamefiles/SOUNDmust 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
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.
| Key | Values | Description |
|---|---|---|
FullScreen | 0 / 1 | Windowed (0) or fullscreen (1) |
TrueColorBack | 8 / 16 | Color depth for background images |
TrueColorDecor | 8 / 16 | Color depth for decor images |
MouseType | 1–9 | Mouse cursor type (1=graphic, 2=Win, 3=Win+pos) |
SpeedRate | 1–2 | Game speed multiplier |
Timer | 10–1000 | Timer 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
| Problem | Likely Cause | Solution |
|---|---|---|
| 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 |