A .yazeproj bundle is a directory-based project format that packages a ROM, project configuration, code snapshots, backups, and build output into a single portable unit. Bundles work across macOS, iOS, Windows, and Linux and are the recommended way to organize ROM hacking projects in YAZE.
| File / Directory | Required | Purpose |
|---|---|---|
project.yaze | Yes | Main project config; stores editor settings, feature flags, labels, and paths |
rom | Yes | The ROM binary. No file extension; referenced by project.yaze |
manifest.json | No | Bundle metadata (created by iOS export; ignored on desktop if absent) |
project/ | No | Code/asset snapshot directory |
backups/ | No | Timestamped backup copies created by the autosave system |
output/ | No | Build artifacts from patching or assembly workflows |
File > Open ROM / Project and select the .yazeproj directory. The welcome screen also accepts bundles via the file picker or drag-and-drop..yazeproj bundle (requires the app to be registered as a handler, which the DMG installer configures)../yaze --rom_file=MyProject.yazeproj/rom to open the ROM directly, or launch via the GUI and use the file dialog.iCloud Drive > Yaze > Projects and tap the .yazeproj bundle. iCloud sync downloads the bundle contents on demand.File > Import to copy a bundle from another location into the app's managed iCloud container.File > Open ROM / Project and navigate to the .yazeproj folder. Select the folder itself (not a file inside it)..yazeproj directories as opaque bundles. Navigate into the folder and double-click project.yaze if your shell association is configured, or use the GUI file dialog.File > Open ROM / Project and select the .yazeproj directory.--rom_file= pointing to the bundle's rom file.Some file pickers (particularly on Windows and older Linux desktop environments) may not display directories as selectable items. In that case, navigate inside the .yazeproj folder and select the project.yaze file. YAZE and the iOS open service both resolve the bundle root by walking up from project.yaze to the enclosing .yazeproj directory.
The z3ed CLI operates on ROM files. Point --rom at the bundle's rom file:
The CLI does not require project.yaze or manifest.json; it reads the ROM binary directly.
Validate a bundle's structure, config parsing, path portability, and ROM accessibility:
Exit code 0 means no failures (warnings are allowed). Exit code 1 means at least one check failed.
To verify the ROM file's SHA1 hash against manifest.json (if present in the bundle):
If no manifest.json or no rom_sha1 field exists, the hash check is reported as a warning (not a failure). Hash comparison is case-insensitive and ignores surrounding whitespace.
Share bundles as .zip archives for cross-platform transfer (Windows, macOS, Linux):
The unpack command enforces path traversal safety — entries with .. or absolute paths are rejected.
If the archive does not contain a valid .yazeproj bundle, the output directory is automatically cleaned up (exit 1). To preserve extracted files for debugging, pass --keep-partial-output.
To preview an archive without extracting files, use --dry-run:
This validates entry names (path traversal safety), reports files_counted, and verifies bundle structure — without writing anything to disk. A dry-run bundle is considered valid only when:
.yazeprojproject.yaze exists at the rootUse File > Save Project As and choose a .yazeproj path. YAZE creates the directory structure, copies the current ROM into rom, and writes project.yaze with your editor settings.
Use the export function in the toolbar. The iOS app creates a .yazeproj bundle containing the current ROM, settings snapshot, and a manifest.json with creation metadata. The bundle is placed in iCloud Drive for sync.
| Extension | Format | Notes |
|---|---|---|
.yazeproj | Bundle directory | Preferred for new projects |
.yaze | Single project file | Standalone config (no bundled ROM) |
.zsproj | ZScream project | Import-compatible; converted to .yaze on open |
.sfc / .smc | ROM file | Direct ROM open (no project metadata) |