Home
/
Reference
/
Data Structures
Data Structures
Key data structures defined in include/decor.hpp.
These are the primary data containers for world state, level files, network packets, and save games.
Cellule
A single world grid cell. The world is a 100×100 grid of these.
typedef struct {
short icon; // sprite index into the background/decor sheet
} Cellule;
Used in DescSave::decor[100][100] and
DescSave::bigDecor[100][100] as raw short values.
MoveObject
Tracks one of up to 200 (MAXMOVEOBJECT) simultaneously active
moving game objects: enemies, bombs, vehicles, collectibles, and visual effects.
Managed by CDecor in src/decmove.cpp.
Field Type Description
typeshort Object type (TYPE_* constant)
stepAdvanceshort Steps taken when advancing (moving toward end)
stepRecedeshort Steps taken when receding (moving toward start)
timeStopStartshort Time spent stopped at start position
timeStopEndshort Time spent stopped at end position
unknown1short Unknown field (decompilation artifact)
posStartPOINT Starting position (world coordinates)
posEndPOINT Target/end position
posCurrentPOINT Current interpolated position
stepshort Current animation step index
timeshort Timer for current motion/dwell phase
phaseshort Current motion phase (advance, stop, recede)
channelshort Sprite render channel (CH*)
iconshort Sprite icon index within the channel spritesheet
unknown2short Unknown field (decompilation artifact)
DescFile
Level file header, stored at the beginning of each worldNNN.blp file.
Contains per-level settings that do not change during gameplay.
Field Type Description
majRevshort File format major revision
minRevshort File format minor revision
posDecorPOINT Initial camera/scroll position
dimDecorPOINT World dimensions (usually 100×100)
worldshort World/chapter number
musicshort Background music track (0–9)
regionshort Visual region/theme (selects decor spritesheet 0–31)
blupiPos[4]POINT[4] Player start positions (up to 4 players)
blupiDir[4]int[4] Player start facing directions
name[100]char[100] Level name string (null-terminated)
DescSave
Complete serialized game state (~56KB). Written to save game slots by
src/decio.cpp. Also called DescLevel in some older references.
Format Header
Field Type Description
lgint Total struct size in bytes
majRevint Save format major revision
minRevint Save format minor revision
World Grid
Field Type Description
decor[100][100]short Main terrain grid (icon indices)
bigDecor[100][100]short Background decor layer (icon indices)
balleTraj[100][13]char Glue ball trajectory data
moveTraj[100][13]char Moving object trajectory data
moveObject[200]MoveObject All active moving objects
World State
Field Type Description
posDecorPOINT Current camera position
dimDecorPOINT World dimensions
phaseint Current game phase
termint Terminal/end-of-level flag
musicint Current music track index
regionint Current visual region
timeint Game timer
missionTitle[100]char Current mission/level name
Crate Management
Field Type Description
nbRankCaisseint Number of ranked crate entries
rankCaisse[200]int[200] Crate ordering/ranking array
nbLinkCaisseint Number of crate links
linkCaisse[200]int[200] Crate link targets array
Player Position and Motion
Field Type Description
blupiPosPOINT Current player position in world pixels
blupiValidPosPOINT Last known safe/valid position
blupiActionint Current animation/action code (ACTION_*)
blupiDirint Facing direction
blupiPhaseint Current animation frame phase
blupiVitessePOINT Current velocity (pixels per tick)
blupiIconint Current primary sprite icon index
blupiSecint Secondary sprite icon index (shield, power-up overlay)
blupiChannelint Current sprite channel (CH*)
blupiVectorPOINT Movement vector for current action
blupiTransportint Vehicle mode: 0=none, 1=helicopter, 2=jeep, 3=tank
blupiStartPos[4]POINT[4] Respawn positions for up to 4 players
blupiStartDir[4]int[4] Respawn facing directions
Player State Flags
Field Type Description
blupiFocusBOOL Player has input focus (accepts damage)
blupiAirBOOL Player is airborne
blupiHelicoBOOL In helicopter
blupiOverBOOL In hovercraft
blupiJeepBOOL In jeep
blupiTankBOOL In tank
blupiSkateBOOL On skateboard
blupiNageBOOL Swimming in deep water
blupiSurfBOOL Swimming at water surface
blupiVentBOOL Being blown by wind
blupiSuspendBOOL Hanging from bar
blupiJumpAieBOOL Jump-hurt state active
blupiShieldBOOL Shield power-up active
blupiPowerBOOL Lollipop power active
blupiCloudBOOL Cloud invisibility active
blupiHideBOOL Hidden state active
blupiInvertBOOL Controls inverted
blupiBalloonBOOL In balloon
blupiEcraseBOOL Being crushed
blupiRestartBOOL Restart pending
blupiFrontBOOL Player rendered in front of objects
Player Inventory and Timers
Field Type Description
blupiBulletint Glue shots remaining (BIRDLIME cheat gives 10)
blupiCleint Key bitmask: bit 0=red, bit 1=green, bit 2=blue (CLE_* flags)
blupiPersoint Personal bombs remaining (TENBOMBS cheat gives 10)
blupiDynamiteint Dynamite sticks carried
blupiNoBarreint Bar-hanging timer
blupiTimeShieldint Shield remaining ticks (ROUNDSHIELD gives 100)
blupiTimeFireint Fire attack cooldown timer
blupiTimeNoAscint Elevator-skip timer
blupiTimeOufint Ouf reaction timer
blupiActionOufint Ouf reaction action
blupiFifoNbint FIFO position queue size
blupiFifoPos[10]POINT[10] FIFO position queue (path following)
blupiPosHelicoPOINT Helicopter position (for vehicle camera tracking)
blupiPosMagicPOINT Magic/shield effect origin position
Vehicle State
Field Type Description
bHelicoMarchBOOL Helicopter is moving
bHelicoStopBOOL Helicopter is stopped/hovering
bJeepMarchBOOL Jeep is moving
bJeepStopBOOL Jeep is stopped
Level State
Field Type Description
doors[200]char Door state array (open/closed per door index)
nbViesint Remaining lives
nbTresorint Treasures collected so far
totalTresorint Total treasures in the level
goalPhaseint Current goal/objective phase
scrollPointPOINT Current scroll position
scrollAddPOINT Scroll velocity
jaugeHide[2]BOOL Gauge visibility per slot (JAUGE_AIR=0, JAUGE_POWER=1)
jaugeType[2]BOOL Gauge type per slot
jaugeLevel[2]BOOL Gauge level per slot
blupiLevelint Player level
bFoundCleBOOL Key has been found this level
bPrivateBOOL Private/custom level flag
missionint Current mission/level number
bCheatDoorsBOOL Cheat: all doors open (OPENDOORS)
bSuperBlupiBOOL Cheat: invincible player (MEGABLUPI)
bDrawSecretBOOL Cheat: show hidden objects (SHOWSECRET)
bJoystickBOOL Joystick mode flag
Voyage / Travel System
Field Type Description
voyageIconint Icon index for travel animation
voyageChannelint Channel for travel animation
voyagePhaseint Current phase in the travel sequence
voyageTotalint Total steps in the travel sequence
voyageStartPOINT Travel start position
voyageEndPOINT Travel end position
Decor Animation
Field Type Description
decorActionint Active decor tile animation action
decorPhaseint Decor animation phase
Unknown / Decompilation Artifacts
Field Type Description
idklolint Unknown field (decompilation artifact — name from source)
d8f8int Unknown field (decompilation artifact — hex address name)
NetPacket
Network synchronization packet sent by each player every game tick.
Contains input state, player position, animation, and up to 5 game events.
Field Type Description
sizechar Packet size in bytes
typechar Packet type (PK_*)
keyPressshort Current key input bitmask (KEY_*)
timeint Simulation time (game tick)
blupiPosX/Yshort Player position
blupiIconshort Current sprite icon
blupiSecshort Secondary icon
blupiChannelchar Sprite channel
blupiTransportchar Vehicle transport mode
unk12char Unknown field (decompilation artifact)
nbMessageschar Number of messages in this packet (max 5)
messages[5]NetMessage[5] Piggy-backed game events
NetMessage
A compact game event, up to 5 of which can be embedded in a NetPacket.
Field Type Description
typechar Message type (MESS_* constant)
data1char First data byte
data2short Second data word
data3short Third data word
data4short Fourth data word