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
- Click **"Open ROM"** or drag and drop your Zelda 3 ROM file onto the page
- The ROM is stored locally in your browser using IndexedDB - it never leaves your computer
- 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
- Use Chrome or Edge - Fastest WebAssembly implementation
- Close other tabs - Free up browser memory
- Desktop/laptop recommended - Better than mobile for complex editing
- 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:
- Click **"Start Collaboration"** in the toolbar
- Share the session URL with collaborators
- 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:
- Visit the site once while online
- Service worker caches the application
- Disconnect from internet
- 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