Pipe Dream

One tool for building Super Mario World hacks. Free, open source, and on every desktop you actually use.

MIT licensed Windows · macOS · Linux Lunar Magic compatible

In development

The Level editor: level $105 on Layer 1 with a sky background of clouds and
                blue hills, and the FG tile picker down the left side. The Map16 editor: the 16x16 tile map for level $105 with the 8x8 graphics
                picker down the left side. The Graphics editor: GFX014 zoomed to 1500% with pixel tools along the top
                and the loaded FG, BG and sprite files listed on the left. The Animations editor: a global 32x8 slot with four frames and a live preview.

Download Pipe Dream

Windows installer Linux executable

No packaged macOS build yet.

One tool instead of six

Building a SMW hack today means stitching together a level editor, a block inserter, a sprite inserter, a music patcher, an ASM runner, an assembler, and a build script to keep them in the right order. Every one of them has its own folders, its own config, and its own way to break your ROM at 2am.

Pipe Dream's goal is to be the one program that does all of it. The level editor is here today and the rest is being built into the same tool: same window, same project, same undo history. See the roadmap for where that's heading.

Works with the hacks you already have

ROMs already edited in Lunar Magic open, edit and save without conversion, and without breaking when you go back to LM afterwards. Pipe Dream understands the way LM lays out a ROM and leaves its work intact, so a hack in progress never has to pick a side. Use both, in either order, on the same ROM.

It edits the ROM the way the game reads it: real pointer tables, level headers, object streams and Map16 pages. Not a wrapper, not a patch format.

Share the project, not the ROM

Your work saves to a .pdp project file: plain JSON describing every edit relative to a pinned base ROM. It contains no ROM data at all.

Actually shareable

Hand a collaborator the .pdp. If they have the same base, they open your project and see exactly what you see. No ROM changes hands.

Fits in git

It's text. Commit it, branch it, diff it, review a level change in a pull request like any other file.

Your ROM stays intact

The base ROM is read, never written. Builds are outputs, so a bad session costs you a rebuild, not your hack.

Gentler on the way in

Most people who want to make a Mario level quit somewhere between the fifth download and the first hex offset. Pipe Dream tries to move that wall:

What works today

Level editing

Objects and sprites on a live canvas: place, drag, rubber-band select, undo. Rendered through the real object engine, so what you see is what loads.

Map16 & graphics

Map16 pages with tile properties (acts-like, palette, priority, flips), ExGFX import, a GFX browser, palette grids, background picker.

Exits & entrances

Main entrance, secondary entrances, vanilla and LM secondary exits, listed and edited instead of hand-poked in hex.

BPS patches

Apply and write BPS, so a finished build ships as a patch the way the community expects.

Cross-platform

One codebase, no platform-specific editor code. Windows and Linux builds come out of CI on every commit; macOS builds from the same source.

Scriptable

The same executable runs headless for batch jobs and CI: render, diff, self-check, and creating or building projects.

Roadmap

Planned. Most of these replace a tool you currently download and run by hand.

Feature parity with Lunar Magic

instead of keeping LM open

Everything LM edits, edited here: the overworld, title screen and credits it still owns, plus the smaller tools you switch back for. Pipe Dream already reads and writes LM's own structures; parity is where you can stop switching.

Block manager

instead of GPS

Install a custom block and get all of it: the code, its Map16 entry, its acts-like setting. No folders to fill, no inserter to re-run.

Sprite manager

instead of PIXI

Install custom sprites and place them like vanilla ones. Their config, table entries and per-level assignment are handled for you.

UberASM manager

instead of UberASMTool

Attach custom ASM to a level, a gamemode, or the whole game, from the level you're looking at rather than a text file you maintain. Plus a clear view of which levels have code on them.

Music manager

instead of AddmusicK

Install songs and pick a level's music by name instead of by number. See sample group space before you run out of it.

Background manager

instead of the ExGFX shuffle

Install a background and get its ExGFX, palette and Map16 pages set up together. One choice instead of a checklist.

Updates that install themselves

instead of re-downloading

Pipe Dream checks for a new release, downloads it, and replaces itself. Your projects and config stay put.

Shareable custom base ROMs

instead of passing ROMs around

Package a prepared base (patches, ASM, resources) for someone else to build against. A .pdp already pins its base; this shares it.

No timelines, and these land one at a time. If one of them is what you're waiting on, say so on the issue tracker.

Install

No toolchain, no compiling. Windows gets a per-user installer needing no admin rights, and CI proves it works by installing it, running a self-check from the installed binary and uninstalling again. Linux gets a single self-contained executable: chmod +x and run. Either way it carries its own .NET runtime, so there's nothing to install alongside it, and the editor can update itself from then on.

Take the file for your platform from the latest release: the PipeDream-Setup installer for Windows, or PipeDream-linux-x64 for Linux.

Every commit also gets built and tested on both platforms, so if you want something newer than the last release, the build workflow has one, though those artifacts need a GitHub login and expire after 90 days, which is why the release above is the better link.

You supply your own copy of Super Mario World. Pipe Dream ships no game data.

Status

Pipe Dream is in very early development. The latest release is v0.4.1, so treat it accordingly: try it on a copy of a hack rather than the hack. The core loop works: open a ROM, edit a level, save something the game runs. Expect sharp edges, keep backups of any ROM you point it at, and file what breaks. Overworld, title screen and credits editing aren't built yet; they're on the roadmap.

It's MIT licensed and the whole thing is on GitHub. Bug reports from people who got stuck in the first ten minutes are the most useful kind. Come say hi and ask questions on the Discord.