Compile Flags

Compile-time feature flags defined in include/def.hpp via #define. These cannot be changed at runtime.

Feature Flags

FlagDefaultDescription
_DEMO FALSE Enable demo mode — limited content, no save/load
_EGAMES FALSE Enable eGames retail version behavior
_SE FALSE eGames Special Edition variant
_INTRO FALSE Show intro images at startup
_CD FALSE Require the game CD to be present (WM_PHASE_INSERT / WM_PHASE_TESTCD)
_BYE !_EGAMES Show exit/goodbye image (similar to _INTRO)
_LEGACY FALSE Keep broken/quirky legacy code from the decompilation for accuracy. When TRUE, restores original bugs.
_DREAM TRUE Allow Dream-mode blocks when loading levels. Current default enables Dream mode.
_BASS FALSE Use the BASS audio library instead of the DirectSound/MCI path. FALSE = DirectSound/MCI (default). TRUE = BASS + BASSMIDI.
ℹ️
_LEGACY and _DREAM
_DREAM=TRUE is the current default to support Dream-mode levels. _LEGACY=TRUE restores original bugs and quirks from the binary — useful for accuracy testing but not recommended for normal use.

Security Power-Up States (SEC_*)

Active security/power-up states for the player character. Defined as an enum in include/def.hpp. The current active state is tracked in the player's SEC field.

EnumValueDescription
SEC_SHIELD1Shield active — player is temporarily invulnerable
SEC_POWER2Power-up lollipop active — speed or power boost
SEC_CLOUD3Cloud invisibility active — player is invisible to enemies
SEC_HIDE4Hidden state active — related to cloud invisibility

Changing Flags

To change a flag, edit include/def.hpp directly and rebuild:

// Example: enable BASS audio
#define _BASS TRUE

// Example: enable legacy mode
#define _LEGACY TRUE