rom-weaver

Create and share a patch bundle in the browser

A rom-weaver bundle packages an ordered patch recipe into one download. It helps users choose the right ROM, apply patches in the right order, and get the same result you tested.

New to bundles? What a bundle is covers what one contains and when it is worth making, and the guided Bundle tour builds one from the homebrew practice files.

Choose what to include

Use Bundle + patches for a normal public release. It includes the recipe and patches. It records checksums for the expected ROM but does not include that ROM. Each user supplies their own legal copy.

Use Bundle + ROM + patches only for homebrew, your own backups, public domain material, or another ROM you are allowed to redistribute. A convenient button does not grant permission to share copyrighted game data.

Choose ZIP unless your audience specifically wants 7z. Browsers and operating systems open ZIP easily. ZIP and 7z contain the same recipe information.

Build the patch recipe

  1. Open Apply.
  2. Add the clean ROM and every patch.
  3. Put the patches in execution order. Drag a numbered handle, click it to choose a position, or focus it and use the arrow keys. Patch 2 receives patch 1's output, not the clean ROM.
  4. Open each patch's three-dot Patch actions menu and choose Edit details. Add a readable name and, when useful, a description, version, and author. People see this information when they open the bundle.
  5. Open Checks on each patch. Use Add check to record a known CRC32, MD5, SHA-1, or byte count for the input or output. Input checks describe the bytes the patch expects. Output checks describe the bytes it creates. Do not guess a value just to fill the form.
  6. For a multi-patch recipe, review the input basis beside the checks. Choose base ROM when the patch was made for the clean ROM. Choose previous output when it was made for the result of the patch above it. Leave auto selected when rom-weaver already identifies the right basis.
  7. Decide which patches are required. Leave a required patch On. Turn a genuine add-on Off before creating the bundle to save it as optional and off by default. A person opening the bundle can turn it on.

Checks from formats such as BPS may already appear and cannot be edited. Add only checks you know are correct, such as values from the patch author or from the Original and Modified files you tested.

Order is part of the recipe. Move a card only when you know the patch was authored for that state. Test every optional combination you tell users is supported, especially when a later patch depends on an earlier one.

Turn on bundle output and download it

In 0x04 Apply:

  1. Set the output filename and format users should receive after patching.
  2. Open Options.
  3. Find Bundle. It starts at Hide bundle creation. Turn bundle output on by choosing Bundle + patches (.zip) for a normal public release.
  4. Confirm or edit Expected ROM name. A different supplied filename warns without blocking the weave; checksum and size requirements stay strict. Clear the field to omit the name check.
  5. Choose Create ZIP Bundle.
  6. Wait while rom-weaver calculates checksums and checks the recipe.
  7. When the button changes to Download ZIP Bundle, choose it and save the archive.
Cropped Apply output card with Bundle plus patches ZIP selected and the Create ZIP Bundle control in the light theme Cropped Apply output card with Bundle plus patches ZIP selected and the Create ZIP Bundle control in the dark theme
Bundle creation packages the staged recipe without applying the patches.

Bundle creation does not apply the patches. It packages the recipe you have staged. APPLY & DOWNLOAD remains available separately when you also want to build the patched output.

Your ROM and patches are read locally. A patch-only bundle carries the ROM's checksums, not its bytes.

Test the finished download

Test the archive you will publish, not only the loose files used to make it:

  1. Open a fresh Apply page.
  2. Add the downloaded bundle archive.
  3. For a patch-only bundle, add a fresh copy of the documented Original.
  4. Confirm the displayed patch order, names, required switches, and optional switches match the release.
  5. Run APPLY & DOWNLOAD.
  6. Compare the result checksum with your intended Modified file.
  7. Launch the result in the emulator or hardware you support.
  8. Repeat for every optional combination you promise works.

Also test the failure path. Add a harmless wrong sample file and make sure the bundle clearly asks for the matching ROM rather than silently producing an output.

Compare the same checksum algorithm on both files to check reconstruction. Playing the result tests the paths you exercise; it does not establish that every patch combination works.

Publish a useful release

Follow the release-notes checklist. Also include the bundle archive's checksum and a link to Open a bundle.

Do not rely on the recipe as the only human explanation. Someone should be able to read the release page and understand what the download changes before opening it.

For an update, rebuild the recipe from the same clean Original and the new patch files. Update the patch details and test the new archive from a fresh page.

Open a hosted bundle in Apply

You can give users a link that preloads a public bundle:

https://rom-weaver.com/apply?bundle=https://example.com/release.zip

The bundle host must permit cross-origin browser downloads with CORS. The user's ROM still stays local. Relative patch URLs inside a remote recipe are resolved against the recipe URL.

The webapp integration guide covers multiple URL parameters, same-origin files, hosting headers, and error handling. For scripted bundle creation, use the CLI bundle guide.