Configuration

config.def

The game reads a plain-text configuration file at startup. The path read by ReadConfig() in src/blupi.cpp is data/config.def (relative to the working directory).

ℹ️
On case-insensitive filesystems (Windows, macOS), data/config.def and DATA/config.def are the same. On Linux (case-sensitive), the path must match exactly. The game assets live in gamefiles/DATA/ — ensure you run the executable from the repository root.

Configuration Keys

Keys are parsed by ReadConfig() in src/blupi.cpp. All keys are optional except under _CD=TRUE builds which require CD-Rom.

KeyValues / RangeDescription
FullScreen0 / 1Run in fullscreen (1) or windowed (0)
TrueColor8 / 16Set both back and decor color depth at once (shorthand)
TrueColorBack8 / 16Color depth for background images (8=palette, 16=truecolor)
TrueColorDecor8 / 16Color depth for decor overlay images (overrides TrueColor)
MouseType1–9Mouse cursor type: 1=MOUSETYPEGRA, 2=MOUSETYPEWIN, 3=MOUSETYPEWINPOS
SpeedRate1–2Game speed multiplier (1=normal, 2=fast)
Timer10–1000Timer tick interval in milliseconds (default ~50ms = 20 fps)
Benchmark0–100000Benchmark score; values above 3099 force TrueColor on
CDAudio0 / 1Enable CD audio playback (legacy)
CD-Rompath stringCD-ROM drive path (only used when _CD=TRUE)
⚠️
The key Speed does not exist — the correct key is SpeedRate. Earlier documentation incorrectly listed it as "Speed".

Compile-Time Configuration

Additional configuration is done at compile time via #define flags in include/def.hpp. These cannot be changed at runtime.

See Compile Flags Reference for the full list.

Save Game Slots

The game supports up to 6 save game slots (MAXSAVE=6). Each slot stores a complete DescSave struct (~56KB) containing the full game state. Save files are stored in gamefiles/DATA/.

On the WebAssembly build, save data is stored in the browser's IndexedDB via Emscripten IDBFS, mounted at /save.

Gamer Profiles

The game supports named player profiles (gamers). Up to MAXGAMER=8 gamer profiles can be created. Profiles are managed through these game phases:

  • WM_PHASE_GAMER — gamer selection screen
  • WM_PHASE_NAMEGAMER — create/name a new gamer
  • WM_PHASE_CLEARGAMER — clear/delete a gamer profile