Share multiple ROM patches as one weave
Package multiple patches, their order, and expected ROM checksums into one download.
See What a weave is for background, or try the guided Weave Patches tour with homebrew files.
Choose what to include
Leave Include ROM in weave clear for a patch-only release. The archive contains the recipe, patches, and expected ROM checksums. Each user supplies the matching ROM.
Select Include ROM in weave only for a ROM you can redistribute, such as your own homebrew. Packaging does not grant redistribution rights.
Choose ZIP for broad compatibility, or 7z. This selects the recipe archive format, not the recipient’s patched ROM container.
Build the patch recipe
- Open Weave.
- Add the clean ROM and every patch. Add supported ROM cheats through Add cheats to the patch order when needed.
- Put the patches in execution order. Drag a numbered handle, click it to choose a position, or focus it and use the arrow keys.
- Open each patch's three-dot Patch actions menu → Edit details. Add a readable name and any description, version, and author users need.
- Open Checks → Add check for a known input or output CRC32, MD5, SHA-1, or byte count. Input checks describe the expected bytes. Embedded output checks verify the standalone result, not a combined stack whose earlier patches changed the source. Never guess values.
Set each patch's input selector to the state its checks describe:
- Keep Automatic to let the checks select the state. It then shows the detected state, such as Original ROM (detected).
- Choose Original ROM when the patch was made from the clean ROM.
- Choose Previous patch's result when the patch was made from the result above it.
- Choose Output of a named patch for a dependency. Keep that patch enabled and ordered before its dependent patch.
For discs, select the required track. Keep accumulated execution to continue that track's chain. Test optional switches after reopening the exported weave.
Keep an explicit input and its target on the same track. Cross-track recipes require the CLI; the browser rejects them before applying.
To include a disc ROM, add an archive containing the disc sheet and every track. A loose CUE or GDI sheet cannot package its track files.
Leave each required patch On. Turn a genuine add-on Off to make it optional and off by default.
Built-in checks, such as BPS checksums, cannot be edited. Add only values from the author or your tested Original and Modified files.
Reorder only when the patch supports that input state. Test optional combinations as described below, including dependencies.
Each enabled ROM cheat becomes a separate patch at its chosen position. Recipients can toggle each cheat independently. Original patches keep their metadata and optional switches.
Cheat patches record the resolved ROM writes. Compare codes resolve against the enabled changes above them during export. Test optional combinations after reopening the archive.
Turn on weave output and download it
- In the main Weave output step, enter the expected output name. It is also used to name the downloaded archive.
- Choose .zip or .7z in its format selector.
- Open Options and leave Include ROM in weave clear for a patch-only release.
- Select Share weave and wait for the checks and download.
- Save the archive. The control becomes Download ZIP weave or Download 7z weave for another copy.
Expand the secondary Download this ROM step to test the recipe. Its name and compression settings are shared with Weave: 7z selects a 7z weave; other Apply formats select ZIP. Recheck the Weave format before sharing.
On Apply, expand Download the weave. On Create, this appears in Patches & cheats mode.
For one patch instead, expand Download a combined patch on Apply or Weave.
Checksums verify content; a filename mismatch alone does not block Apply.
Weave creation runs preceding enabled changes when resolving ROM cheats. Download the patched ROM separately.
Files are read locally. Patch-only weaves contain ROM checksums, not ROM bytes.
Test the finished download
Test the actual archive you will publish:
- Open a fresh Apply page.
- Add the downloaded weave archive.
- For a patch-only weave, add a fresh copy of the documented Original.
- Confirm the displayed patch order, names, required switches, and optional switches match the release.
- Run APPLY & DOWNLOAD.
- Compare the result checksum with your intended Modified file.
- Launch the result in the emulator or hardware you support.
- Repeat for every optional combination you promise works.
Test rejection too: add a harmless wrong sample file and confirm the weave requests the matching ROM instead of producing output.
Compare the same checksum algorithm on both files. Playing tests only the paths you exercise, not every patch combination.
Publish a useful release
Follow the release-notes checklist. Also include the weave archive's checksum and a link to Open a weave.
Explain what the download changes on its release page; do not rely on the recipe alone.
For updates, rebuild from the same clean Original and new patches, update their details, and retest the archive from a fresh page.
Open a hosted weave
Share a link that preloads the public weave:
https://rom-weaver.com/weave-patches?weave=https%3A%2F%2Fexample.com%2Frelease.zip
Weave links open Weave, including links that start on the Apply route. Recipients add their matching ROM, review the recipe, expand Download this ROM, and choose APPLY & DOWNLOAD. Opening the link does not apply patches automatically.
Use the copyable Apply-button examples for HTML and Markdown release pages.
The host must allow CORS. ROMs stay local. Relative patch URLs resolve against the recipe URL.
See webapp integration for URL parameters, hosting headers, and errors, or the CLI weave guide for scripted creation.