yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
Web App Guide (Preview)

YAZE is available as a preview web application that runs in your browser. The web port is under active development - expect bugs and incomplete features.

⚠️ Preview Status: The web app is experimental. For production ROM hacking, use the desktop build.

Quick Start

Try it Now

Visit your deployed instance to access the web version. The application is served via GitHub Pages or custom deployment.

Loading a ROM

  1. Click **"Open ROM"** or drag and drop your Zelda 3 ROM file onto the page
  2. The ROM is stored locally in your browser using IndexedDB - it never leaves your computer
  3. Start editing using a subset of the desktop interface

Saving Your Work

  • Auto-save: Changes are automatically saved to browser storage (when working)
  • Download ROM: Click the download button to save your modified ROM to disk
  • Backup recommended: Download frequently; browser storage can be cleared

Feature Status

The web version is in preview with varying editor support:

Feature Status Notes
ROM Loading ✅ Working Drag & drop, file picker
Overworld Editor ⚡ Preview Basic tile editing, incomplete features
Dungeon Editor ⚡ Preview Room viewing, editing incomplete
Palette Editor ⚡ Preview Basic palette viewing/editing
Graphics Editor ⚡ Preview Tile viewing, editing incomplete
Sprite Editor ⚡ Preview Limited functionality
Message Editor ⚡ Preview Text viewing, editing incomplete
Hex Editor ✅ Working Direct ROM editing
Asar Patching ⚡ Preview Basic assembly patching
Emulator ❌ Not Available Use desktop build
Real-time Collaboration ⚡ Experimental Requires server setup
Audio Playback ⚡ Experimental Limited SPC700 support

Legend: ✅ Working | ⚡ Preview/Incomplete | ❌ Not Available

Browser Requirements

Recommended Browsers

  • Chrome/Edge 90+ (best performance)
  • Firefox 88+
  • Safari 15.4+ (macOS/iOS)

Required Features

The web app requires modern browser features:

  • WebAssembly: Core application runtime
  • SharedArrayBuffer: Multi-threading support (requires HTTPS or localhost)
  • IndexedDB: Local ROM and project storage
  • File System Access API: Better file handling (Chrome/Edge)

Mobile Support

Tablets: Full support on iPad and Android tablets ⚠️ Phones: Limited - interface designed for larger screens

Performance Tips

For Best Performance

  1. Use Chrome or Edge - Fastest WebAssembly implementation
  2. Close other tabs - Free up browser memory
  3. Desktop/laptop recommended - Better than mobile for complex editing
  4. Stable internet - Only needed for initial load; works offline after

Troubleshooting Slow Performance

  • Clear browser cache and reload
  • Disable browser extensions temporarily
  • Check browser console for errors (F12)
  • Use the debug build for better error messages (see Development section)

Storage & Privacy

What's Stored Locally

  • ROM files (IndexedDB)
  • Project settings and preferences
  • Auto-save data
  • Recent file history

Privacy Guarantee

  • All data stays in your browser - ROMs and edits never uploaded to servers
  • No tracking - No analytics or user data collection
  • No login required - No accounts or personal information needed

Clearing Data

// Open browser console (F12) and run:
localStorage.clear();
sessionStorage.clear();
// Then reload the page

Or use your browser's "Clear browsing data" feature.

Keyboard Shortcuts

The web app supports desktop keyboard shortcuts:

Shortcut Action
Ctrl/Cmd + O Open ROM
Ctrl/Cmd + S Save/Download ROM
Ctrl/Cmd + Z Undo
Ctrl/Cmd + Y Redo
**`** (backtick) Toggle terminal
Esc Close panels/dialogs
Tab Cycle through editors

Note: Some shortcuts may conflict with browser defaults. Use the menu bar as an alternative.

Advanced Features

Terminal Access

Press **`** (backtick) to open the integrated terminal:

# List all dungeons
z3ed dungeon list --rom current
# Get overworld info
z3ed overworld info --map 0
# Apply a patch
z3ed asar my_patch.asm

Collaboration (Experimental)

When enabled, multiple users can edit the same ROM simultaneously:

  1. Click **"Start Collaboration"** in the toolbar
  2. Share the session URL with collaborators
  3. See real-time cursors and changes from other users

Note: Requires a collaboration server to be deployed. See deployment docs for setup.

Developer Tools

Open browser console (F12) for debugging:

// Check if WASM module is ready
window.yazeDebug.isReady()
// Get ROM status
window.yazeDebug.rom.getStatus()
// Get current editor state
window.yaze.editor.getActiveEditor()
// Read ROM data
window.yaze.data.getRoomTiles(roomId)

See docs/internal/wasm-yazeDebug-api-reference.md for full API documentation.

Known Limitations

Not Yet Supported

  • Emulator: No built-in emulator in web version (use desktop)
  • Custom plugins: Plugin system requires desktop build
  • Large file export: Browser limits on file size (typically 2GB+)

Browser-Specific Issues

  • Safari: Slower performance, some SharedArrayBuffer limitations
  • Firefox: Clipboard access may require permissions
  • Mobile Chrome: Touch controls under development

Offline Usage

After first load, the web app works offline:

  1. Visit the site once while online
  2. Service worker caches the application
  3. Disconnect from internet
  4. App continues to function normally

Note: Initial load requires internet; updates require reconnection.

Building from Source

To build and deploy your own instance:

# Build the web app
./scripts/build-wasm.sh
# Serve locally for testing
./scripts/serve-wasm.sh
# Deploy dist/ folder to your web server
# Artifacts are in build-wasm/dist/

See docs/internal/agents/wasm-development-guide.md for detailed build instructions.

Deployment

GitHub Pages (Automated)

Pushes to master automatically build and deploy via GitHub Actions:

# See .github/workflows/web-build.yml

Custom Server

Requirements:

  • Static file server (nginx, Apache, etc.)
  • HTTPS enabled (required for SharedArrayBuffer)
  • Proper CORS headers

Minimal nginx config:

server {
listen 443 ssl http2;
server_name yaze.yourdomain.com;
root /var/www/yaze;
# Required for SharedArrayBuffer
add_header Cross-Origin-Opener-Policy same-origin;
add_header Cross-Origin-Embedder-Policy require-corp;
# Cache WASM files
location ~* \.(wasm|js)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}

Getting Help

Comparison: Web vs Desktop

Feature Web (Preview) Desktop (Stable)
Installation None required Download & install
Platforms Modern browsers Windows, macOS, Linux
Performance Moderate Excellent
Editor Completeness Preview/Incomplete Full-featured
Emulator
Plugins
Stability Experimental Production-ready
Updates Automatic Manual download
Offline After first load Always
Collaboration Experimental Via server
Mobile Tablets (limited) No

Recommendation:

  • For serious ROM hacking: Use the desktop build
  • For quick previews or demos: Web app is suitable
  • For learning/exploration: Either works, but desktop is more complete