Supaplex Level format
From Just Solve the File Format Problem
The freeware DOS puzzle game Supaplex has a file called "levels.dat" which contains all the levels for the game.
Contents |
Format details
This is a very simple, uncompressed format where each level is stored sequentially and takes up 1536 bytes each.
The original levels.dat distributed with the game is 170496 bytes in size (111 levels).
Level
Offsets are relative to the beginning of each level.
Offset | Length | Contents | Details |
---|---|---|---|
0 | 1440 | Tile data | 60x24 in size, one byte per tile. |
1440 | 4 | Unknown | Unused |
1444 | 1 | Gravity | 0 = off, 1 = on. |
1445 | 1 | Unknown | Used by the SpeedFix-version as a version indicator. In the original version it's always 0x20. |
1446 | 23 | Title | Always 23 characters, no null-termination, normally padded with spaces. |
1469 | 1 | Freeze zonks | 0 = off, 2 = on. |
1470 | 1 | Infotrons needed | The minimum number of infotrons needed to be able to clear the level. 0 = all of them. |
1471 | 1 | Gravity port count | Maximum of 10 ports. |
1472 | 60 | Gravity ports | 10 ports, 6 bytes each. Count up to the value specified in "gravity port count" and ignore the rest. See "Gravity port" section for more information. |
1532 | 4 | Unknown | Used by the SpeedFix-version to store important demo information. Unused in the original version. |
Gravity ports
Offset | Length | Contents | Details |
---|---|---|---|
0 | 2 | Coordinates | Formula: 2 * (x + y * 60). Stored as a 16-bit big-endian unsigned integer. |
2 | 1 | Gravity | 0 = off, 1 = on. |
3 | 1 | Freeze zonks | 0 = off, 2 = on. |
4 | 1 | Freeze enemies | 0 = off, 1 = on. |
5 | 1 | Unknown | Unused |
Tiles
Hex | Name | Description |
---|---|---|
00 | Empty | |
01 | Base | |
02 | Zonk | Falls down. If standing on other zonks, infotrons or RAM chips it'll fall over to the side if possible. |
03 | Murphy | Defines the player start. |
04 | Infotron | |
05 | RAM chip - Chip | |
06 | Wall | |
07 | Exit | |
08 | Floppy - Orange | Falls and explodes if it hits something. |
09 | Port - Right | |
0A | Port - Down | |
0B | Port - Left | |
0C | Port - Up | |
0D | Gravity port - Right | |
0E | Gravity port - Down | |
0F | Gravity port - Left | |
10 | Gravity port - Up | |
11 | Snik snak | Enemy that follows the left edge in it's moving direction. |
12 | Floppy - Yellow | Explodes when player touches a terminal. |
13 | Terminal | Touching it causes yellow floppies to explode. |
14 | Floppy - Red | Can be picked up and placed. Explodes a short while after having been placed. |
15 | Port - Two-way vertical | |
16 | Port - Two-way horizontal | |
17 | Port - 4-way | |
18 | Electron | Enemy that follows the left edge in it's moving direction. Generates infotrons when killed. |
19 | Bug | Periodically sparks. Kills player if walking over when sparking. |
1A | RAM chip - Left | |
1B | RAM chip - Right | |
1C | Hardware (decoration) | |
1D | Hardware (decoration) | |
1E | Hardware (decoration) | |
1F | Hardware (decoration) | |
20 | Hardware (decoration) | |
21 | Hardware (decoration) | |
22 | Hardware (decoration) | |
23 | Hardware (decoration) | |
24 | Hardware (decoration) | |
25 | Hardware (decoration) | |
26 | RAM chip - Top | |
27 | RAM chip - Bottom |