NeoLemmix 10KB Level Format

AddressData
0x00Should 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.
0x01Music 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
0x08Release rate (1 to 99)
0x09Options 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)
0x0AGraphic 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.
0x0BVGASPEC 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 0x1FSkill 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 ~ 0x3FLevel author name. This is plain text and should be padded with spaces (0x20).
0x40 ~ 0x5FLevel name. This is plain text and should be padded with spaces (0x20).
0x60 ~ 0x6FGraphic 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 ~ 0x7FVGASPEC 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 ~ 0x9FWindow 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 ~ 0xBFThese bytes are unused and are guaranteed to remain unused; you can use them for whatever purpose you like.
0xC0Object data. 128 slots, 8 bytes per object
0x4C0Terrain data. 1000 slots, 8 bytes per terrain piece
0x2400Steel data. 128 slots, 8 bytes per piece

Object data format
AddressData
0x00
0x01
X coordinate. This is a signed value.
0x02
0x03
Y coordinate. This is a signed value.
0x04Piece ID
0x05S Value. 0 to 15; the high 4 bits are ignored. The effect of this depends on the object type
0x06L Value. 0 to 255. The effect of this depends on the object type
0x07Flags. This is a bitwise value:
Bit0 - No overwrite
Bit1 - Only on terrain
Bit2 - Upside-down
Bit3 - Left-facing
Bit4 - Fake
Bit5 - Invisible
Bit6 - Flip horizontal
Bit7 - If this bit is off, the entry is ignored

Terrain data format
AddressData
0x00
0x01
X coordinate. This is a signed value
0x02
0x03
Y coordinate. This is a signed value
0x04Piece ID
0x05Flags. This is a bitwise value:
Bit0 - No overwrite
Bit1 - Eraser
Bit2 - Upside-down
Bit3 - Flip horizontal
Bit4 - Don't Apply One-Ways - see below
Bit5 - Unused; should be left off
Bit6 - Unused; should be left off
Bit7 - If this bit is off, the entry is ignored
0x06
0x07
Unused, leave them as 00
About the "Don't Apply One-Ways" flag; if this is on, one-way walls will not be applied to the terrain piece. If (in the header's options flags byte) the "One Way Inversion" bit is set, then this bit acts in reverse - one-way walls will only be applied to terrain pieces with Bit4 of the flags set. Note that this is inverted compared to how the NeoLemmix Editor describes them, for backwards compatibility reasons (in the format) against user-friendly explanations (in the editor).

Steel data format
AddressData
0x00
0x01
X coordinate. This is a signed value
0x02
0x03
Y coordinate. This is a signed value
0x04Width. The value stored here is 1 less than the actual width; eg: a value of 255 equates to a width of 256 pixels
0x05Height. The same offset by 1 applies here as with the width
0x06Bit7 - If this bit is off, the entry is ignored
The remainder of the byte is the type of area; which actually does not always represent steel.
    0 - Steel
    1 - Negative steel (cancels steel areas)
    2 - One-way left
    3 - One-way right
    4 - One-way down
    5 - Nothing (exists for technical reasons)
Note that it is recommended to use the proper objects for one-ways rather than these areas; the option exists for Cheapo importing purposes. They also will not function in graphic sets that don't include the respective type of one-way wall object. Generally, the only ones that should be used in most cases are Steel and Negative Steel.
0x07Unused, leave it as 00



Gimmick Flags Values
BitGimmick(s)
Bit0SuperLemming
Bit1Frenzy
Bit2Reverse Skill Counts
Bit3Karoshi
Bit4Unalterable Terrain
Bit5Skill Count Overflow
Bit6No Gravity
Bit7Hardworkers
Bit8Backwards Walkers
Bit9Lazy Lemmings
Bit10Exhaustion
Bit11Non-Fatal Bombers
Bit12Invincible Lemmings
Bit13One Skill Per Lemming
Bit14Steel Inversion
Bit15Solid Bottom Of Level
Bit16Non-Permanent Skills
Bit17Disobedience
Bit18Nuclear Bombers
Bit19Turnaround On Skill Assignment
Bit20Countdown Other Skills
Bit21Assign To All Lemmings
Bit22Horizontal Wrap
Bit23Vertical Wrap
Bit24Rising Water*
Bit25Clock Gimmick*
Bit26Zombies*
Bit27Classic Zombies (reverts some behaviours of zombies to how they initially worked)
Bit28Deadly Level Sides
Bit29(unused)
Bit30Cheapo mode (changes some mechanics to be more Cheapo-like)
Bit31Bait-and-Switch*

 * Those marked with a * also require setting things elsewhere.