Getting started
- Unzip the contents of the download.
- Run
Level Editor.exe. - In the BUILD tab, choose the included
.asmproject file andlevels.txt. - Open or drag-and-drop an
.mlmfile onto the canvas to begin editing. - When finished, click ⬆ Inject Level and then 🔨 Convert + Compile ROM.
lemmings.sms is written to the same folder as your .asm file.
System requirements
OS: Windows 10 or later (64-bit)
Disk space: about 200 MB
RAM: 512 MB or more
Installation: none required
What it does
Draw and edit SMS Lemmings levels, manage brushes, load reference PNGs, inject data into a project, and compile a testable ROM without external tooling.
Tools & shortcuts
| Key | Tool |
|---|---|
B | Draw |
E | Erase |
F | Flood fill |
S | Select |
T | Trap placement |
D | Deselect active brush |
R | Toggle reference image visibility |
Drawing
| Action | Effect |
|---|---|
| Left-click / drag | Draw with active tile or brush |
| Right-click | Erase with any tool |
Delete / Backspace | Erase current selection |
Escape | Cancel paste mode |
File, edit & view
| Shortcut | Action |
|---|---|
Ctrl+O | Open MLM file |
Ctrl+E | Export MLM file |
Ctrl+I | Load custom tileset image |
Ctrl+S | Open sessions menu |
F12 | Revert map to last saved state |
Ctrl+Z | Undo |
Ctrl+Y / Ctrl+Shift+Z | Redo |
Ctrl+C | Copy selection |
Ctrl+V | Paste |
Ctrl+B | Save selection as a new brush |
Ctrl+Shift+B | Overwrite selected brush |
+ / = | Zoom in |
- | Zoom out |
Ctrl+Alt+Scroll | Zoom with mouse wheel |
Alt+Drag | Reposition reference image |
Level data
Level properties are managed from the LEVEL tab in the right panel and can be imported or exported as .ini files.
| Field | Notes |
|---|---|
| Name | Level name shown in-game |
| Rating | Fun / Tricky / Taxing / Mayhem / Extra 1–4 |
| Level Number | 1–30 within the chosen rating |
| Tileset | Selected map tileset |
| Fall Distance | 0–255, active only for Extra 1–4 |
| Music | Track override 1–17, or 0 for the default rating track |
| Trap Type / X / Y | Trap placement, active only for Extra 1–4 |
Tileset IDs
| ID | Tileset |
|---|---|
| 0 | Grass |
| 1 | Sand 1 |
| 2 | Fire |
| 3 | Ice |
| 4 | Brick |
| 5 | Unused |
| 6 | Sand 2 |
| 7 | Sega |
Brushes
Brushes are reusable tile patterns saved per tileset.
- Choose the Select tool with
S. - Drag a rectangle over the map.
- Press
Ctrl+Bto save a new brush, orCtrl+Shift+Bto overwrite the selected one. - Click a brush in the left panel, then draw as normal.
Brushes live in %AppData%\Roaming\MLM Editor\brushes\ and can be shared as .json brush packs.
Reference image
Load any PNG as a reference overlay with the 📁 Load button in the left panel.
The overlay starts at 100% scale, can be moved with Alt+Drag, and toggled on or off any time with R.
Tilesets
Select built-in tilesets from the toolbar dropdown, or press Ctrl+I to load a custom PNG tileset from disk for editing reference.
To replace a built-in tileset, swap the matching PNG inside the tilesets/ folder and rebuild the application.
Build pipeline
The BUILD tab includes a fully self-contained compile flow, so no separate Python setup or external tools are needed.
| Button | Action |
|---|---|
| ⬆ Inject Level | Writes the current map and level data into the selected project |
| 🔨 Convert + Compile ROM | Regenerates level data, patches the ASM, assembles, and links |
wla-z80 and wlalink) and runs them automatically.
Current limitations
- Custom tilesets are supported in the editor as external PNG references, but not yet in-game.
- Maps support up to 4 entrances and 3 exits.
- Trap settings and custom fall distance only apply to Extra 1–4 levels.
- Tiles in the far-left column can sometimes clip in-game, so leaving that column empty is recommended.