Pipe Dream
One tool for building Super Mario World hacks. Free, open source, and on every desktop you actually use.
In development
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:
- Nothing to assemble first. One install, one window. No tool chain to wire up before you can place a block.
- Guided first run. It walks you through pointing at your base ROM and making a project, and recovers on its own when a base goes missing.
- Plain language, not raw bytes. Level settings, exits and tile properties are named fields. You shouldn't need a hex table to change the music.
- Undo everywhere. Real edit history, so poking at something you don't understand yet is how you learn instead of how you lose an afternoon.
- Safe by construction. Because projects never write your base ROM, experimenting has no downside.
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 openEverything 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 GPSInstall 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 PIXIInstall custom sprites and place them like vanilla ones. Their config, table entries and per-level assignment are handled for you.
UberASM manager
instead of UberASMToolAttach 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 AddmusicKInstall 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 shuffleInstall 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-downloadingPipe 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 aroundPackage 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.