Supaplex Level format
From Just Solve the File Format Problem
(Difference between revisions)
Dan Tobias (Talk | contribs) |
Hamhock666 (Talk | contribs) m (added extension dat) |
||
| Line 3: | Line 3: | ||
|subcat=Game data files | |subcat=Game data files | ||
|released=1991 | |released=1991 | ||
| + | |extensions={{ext|dat}} | ||
}} | }} | ||
Latest revision as of 06:36, 11 August 2016
The freeware DOS puzzle game Supaplex has a file called "levels.dat" which contains all the levels for the game.
Contents |
[edit] 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).
[edit] 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. |
[edit] 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 |
[edit] 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 |