Address | Data |
0x00 | Should always be 0x03. A value of 0x00 identifies a 2KB level. A
value of 0x01 or 0x02 identifies an older version of the level format;
these have slightly different ordering (or don't support certain
features) in the header. A value of 0x04 or higher identifies a variable-size level. |
0x01 | Music track number to use 0, 253, 254 and 255 have special effects: 0 - Uses the standard music rotation (or random music in NeoCustLemmix) 253 - Uses the standard rotation but doesn't play special music on gimmick/frenzy levels 254 - Uses Frenzy music 255 - Uses Gimmick music |
0x02 0x03 | Number of lemmings Maximum is 65535, but recommended maximum is ~500 |
0x04 0x05 | Save requirement |
0x06 0x07 | Time limit in seconds Setting this to more than 5999 (99:59) results in infinite time |
0x08 | Release rate (1 to 99) |
0x09 | Options flags. This is a bitwise value: Bit 0 - Ignored, should generally be set to on Bit 1 - Enable autosteel Bit 2 - Ignore the level's steel Bit 3 - Use simple autosteel formula Bit 4 - Turns oddtabling on Bit 5 - Ignored, should generally be set to on Bit 6 - Ignored, should generally be set to on Bit 7 - One-way inversion (see terrain section for info) |
0x0A | Graphic set number If this is set to 255, then the graphic set name is used alone. This is considered deprecated, and should be set to 255 with a graphic set name used instead. |
0x0B | VGASPEC number; 0 means none, and otherwise this is decrease by 1 (eg: a value of 1 = VGASPEC0) If this is set to 255, then the graphic set name is used alone. This is considered deprecated, and should be set to 255 with a VGASPEC name used instead. |
0x0C 0x0D | Horizontal screen start position |
0x0E 0x0F | Vertical screen start position |
0x10 to 0x1F | Skill counts, including skills not used in the level The order is: Walker, Climber, Swimmer, Floater, Glider, Mechanic, Bomber, Stoner, Blocker, Platformer, Builder, Stacker, Basher, Miner, Digger, Cloner |
0x20 0x21 0x22 0x23 | Gimmick flags, see below for list |
0x24 0x25 | Skillset flags. This is read bitwise; the order is the same as skill counts but in reverse; ie Bit0 = Cloner, Bit1 = Digger, etc If more than 8 skills are enabled, only the first 8 (in the order listed in skill counts) are used. |
0x26 0x27 | Referred level's rank (0x26) and level number (0x27), this is used for: - Oddtabling: If oddtable is enabled in the options flags, level layout is copied from the target level - Rickroll gimmick: Sets the target level to use for bait-and-switch - Secret levels: If the level is a secret level, it sets the level which is proceeded to afterwards
These values are 0-based, ie: 00 03 would refer to Fun 4 in Orig |
0x28 0x29 | Level
width. This is a signed value and is offset by 1584, so a value of 0 =
width of 1584, a value of 16 = width of 1600, value of-1264 = width of
320. Range (of size, not of this value) is from 320 to 34351. |
0x2A 0x2B | Level height. Like the width, this is an offset, from 160. Range (of size, not of this value) is from 160 to 32927. |
0x2C 0x2D | VGASPEC image X position. This is a signed value. |
0x2E 0x2F | VGASPEC image Y position. This is a signed value. |
0x30 ~ 0x3F | Level author name. This is plain text and should be padded with spaces (0x20). |
0x40 ~ 0x5F | Level name. This is plain text and should be padded with spaces (0x20). |
0x60 ~ 0x6F | Graphic
set name. This is plain text and should be padded with spaces (0x20), it is not case sensitive. If "[name].dat" exists, it's used and treated as a new-format graphic set. Otherwise, "g_[name].dat" and "v_[name].dat" are used instead, being treated as old-format graphic sets. |
0x70 ~ 0x7F | VGASPEC
name. This works the same way as the graphic set name, except with the
files checked for using an "x_[name].dat" pattern regardless of whether
they're new or old format (it will be autodetected which one they are). |
0x80 ~ 0x9F | Window
ordering. Each byte should have Bit7 turned on or else it is ignored.
The remaining bits of the byte are the object index number of the
window. If a byte's Bit7 is off or the object it refers to is not a
window, it is ignored. If all of them are off (or invalid) then
standard window ordering is used, which is simply each window in order
by it's object ID. Note that if one byte is off/invalid, it does not
stop the next byte from being used if it is fine. |
0xA0 ~ 0xBF | These bytes are unused and are guaranteed to remain unused; you can use them for whatever purpose you like. |
0xC0 | Object data. 128 slots, 8 bytes per object |
0x4C0 | Terrain data. 1000 slots, 8 bytes per terrain piece |
0x2400 | Steel data. 128 slots, 8 bytes per piece |