A ROM editor for The Legend of Zelda: A Link to the Past.
Built in C++23 with ImGui, includes a built-in SNES emulator, the Asar 65816 assembler, and a CLI tool (z3ed) for scripted ROM operations. Runs on Windows, macOS, and Linux. There's also an experimental WASM build for browsers.
- Overworld Editor - Edit 160 overworld maps, tiles, entrances, exits
- Dungeon Editor - Edit 296 dungeon rooms, objects, sprites, palettes
- Graphics Editor - View and edit 223 graphics sheets, tilesets
- Palette Editor - Modify color palettes with live preview
- Message Editor - Edit in-game text and dialogue
- Sprite Editor - View sprite graphics and animations
- Music Editor - (Experimental) View and edit SPC700 music data
- Built-in Emulator - Test changes without leaving the editor
- CLI (z3ed) - Script ROM operations, integrate with AI agents (Ollama or cloud APIs)
- Desktop app (yaze) - Full GUI editor + emulator. See
docs/public/build/quick-reference.md. - CLI (z3ed) - Scriptable ROM editing and AI workflows. See
docs/public/usage/z3ed-cli.md. - Web/WASM preview - Browser-based editor with a subset of features. See
docs/public/usage/web-app.md.
- A legally obtained ALttP ROM (US or JP)
- CMake 3.25+, C++23 compiler (Clang 16+, GCC 13+, or MSVC 2022+)
- For AI features: Ollama running locally or a cloud API key (Gemini/OpenAI/Anthropic)
v0.6.2 is the current release. See CHANGELOG.md for details.
| Component | Status | Notes |
|---|---|---|
| Overworld Editor | Beta | 160 maps, undo/redo, copy/paste; tile16 palette issues, sprite workflow incomplete |
| Dungeon Editor | Beta | 296 rooms, entity drag-drop, ROM safety; 12+ unknown object types, visual discrepancies |
| Graphics Editor | Beta | Sheet editing, undo/redo |
| Palette Editor | Beta | Live preview; JSON import/export not implemented |
| Message Editor | Stable | Text editing, bundle import/export |
| Assembly Editor | Beta | Symbol navigation, Asar integration; project file editor incomplete |
| Sprite Editor | Beta | Viewing works, editing limited |
| Music Editor | Beta | Playback and editing, no clipboard ops |
| Screen Editor | WIP | Core operations unimplemented |
| Memory Editor | WIP | Hex viewing only, search unimplemented |
| Emulator | Beta | Functional, save-state UI incomplete |
See docs/public/reference/feature-coverage-report.md
for cross-app status, persistence notes, and test coverage.
# Clone
git clone --recursive https://github.com/scawful/yaze.git
cd yaze
# Build (macOS, AI-enabled editor + CLI)
cmake --preset mac-ai
cmake --build build_ai --target yaze z3ed --parallel 8
# Run
./scripts/yaze zelda3.sfcPresets: mac-dbg, mac-rel, lin-dbg, lin-rel, win-dbg, win-rel
For AI features, use *-ai presets (mac-ai, win-ai) which enable
Ollama/Gemini/OpenAI/Anthropic integration.
See docs/public/build/quick-reference.md for full build instructions.
# GUI editor
./scripts/yaze zelda3.sfc
# CLI - ROM info
./scripts/z3ed rom-info --rom=zelda3.sfc
# CLI - List dungeon sprites
./scripts/z3ed dungeon-list-sprites --room=1 --rom=zelda3.sfc
# CLI - Interactive TUI
./scripts/z3ed --tui
# Web version (experimental)
# https://scawful.github.io/yaze/# Fast local loop (quick labeled suites)
./scripts/test_fast.sh --quick
# Stable suites (label-filtered)
ctest --test-dir build_ai -C Debug -L unit
ctest --test-dir build_ai -C Debug -L integration
# Preset-based runs (see CMakePresets.json testPresets)
ctest --preset mac-ai-unit
ctest --preset mac-ai-quick-unit
ctest --preset mac-ai-quick-integrationSome tests require a ROM. Set YAZE_TEST_ROM_VANILLA or
YAZE_TEST_ROM_VANILLA_PATH (and optionally YAZE_TEST_ROM_EXPANDED or
YAZE_TEST_ROM_EXPANDED_PATH).
Web app smoke checks: load src/web/tests/wasm_debug_api_tests.js in the
browser console and run await window.runWasmDebugApiTests().
- User docs:
docs/public/ - Developer docs:
docs/internal/ - API reference:
doxygen Doxyfilegenerates tobuild/docs/
See CONTRIBUTING.md. Discussion on Oracle of Secrets Discord.
GPL v3. See LICENSE.

