Supported formats
This is the authoritative support matrix for everything rom-weaver reads and writes. It covers every patch format the tool can apply and create, every container and format-specific compressed ROM or disc image it can probe, extract, and build, and the codecs available at create time. It also lists the checksum, trim, and header capabilities that surround them.
Legend
Every support table uses these three marks. Each mark has its own shape and colour, so the tables still read without colour vision.
| Mark | Meaning |
|---|---|
| ✅ | Supported. |
| ⚠️ | Partly supported. The limit appears beside the mark or in a numbered note. |
| ❌ | Not supported. |
Patch formats
Every supported Apply entry also supports probe/parse, except DCP. DCP uses a specialized Dreamcast apply workflow rather than the general single-file parser.
| Format | Aliases | Extensions | Apply | Create |
|---|---|---|---|---|
| IPS | none | .ips |
✅ | ✅ |
| IPS32 | none | .ips32 |
✅ | ✅ |
| SOLID | solidpatch, solid-patch |
.solid |
✅ | ✅ |
| BPS | none | .bps |
✅ | ✅ |
| UPS | none | .ups |
✅ | ✅ |
| VCDIFF | vcdiff |
.vcdiff |
✅ | ✅ |
| xdelta | xdelta3 |
.xdelta, .delta, .dat |
✅ | ✅ |
| GDIFF | gdiff |
.gdiff, .gdf |
✅ | ✅ |
| HDiffPatch/HPatchZ | hdiffpatch, hdiff, hpatch, hpatchz |
.hdiff, .hpatchz |
⚠️ 1 | ❌ |
| APS (N64) | none | .aps |
✅ | ✅ |
| APSGBA | aps-gba |
.apsgba |
✅ | ✅ |
| RUP | none | .rup |
✅ | ✅ |
| PPF | none | .ppf |
✅ | ✅ |
| PAT | ffp, fireflower |
.pat, .ffp |
✅ | ✅ |
| EBP | none | .ebp |
✅ | ✅ |
| BDF/BSDIFF40 | bdf, bsdiff, bsdiff40 |
.bdf, .bsdiff, .bsdiff40 |
✅ | ✅ |
| BSP | bspatch |
.bsp, .bspatch |
✅ | ❌ |
| MOD | pmsr |
.mod, .pmsr |
✅ | ✅ |
| DLDI | none | .dldi |
✅ | ✅ |
| DPS | none | .dps |
✅ | ✅ |
| DCP | none | .dcp |
⚠️ 2 | ❌ |
1 Single-file
.hdiffand.hpatchzpatches are supported. Directory patches (HDIFF19) are not supported.2 DCP requires a Dreamcast
.cueor.gdiinput and must be applied alone. Byte-level patch flags do not apply to this filesystem rebuild.
NINJA1 headers can be detected but not applied. PDS is unsupported.
Container and compression formats
For everyday extract, convert, and compress steps, see Extract, convert, and compress archives.
| Format | Aliases | Extensions | Probe | Extract | Create |
|---|---|---|---|---|---|
| ZIP | none | .zip |
✅ | ✅ | ✅ |
| ZIPX | none | .zipx |
✅ | ✅ | ❌ |
| 7z | 7zip |
.7z |
✅ | ✅ | ✅ |
| RAR | none | .rar |
✅ | ✅ | ❌ |
| TAR | none | .tar |
✅ | ✅ | ❌ |
| TAR.GZ | tgz |
.tar.gz, .tgz |
✅ | ✅ | ❌ |
| TAR.BZ2 | tbz2 |
.tar.bz2, .tbz2 |
✅ | ✅ | ❌ |
| TAR.XZ | txz |
.tar.xz, .txz |
✅ | ✅ | ❌ |
| Gzip | gzip |
.gz |
✅ | ✅ | ❌ |
| Bzip2 | bzip2 |
.bz2 |
✅ | ✅ | ❌ |
| XZ | lzma, lzma2 |
.xz |
✅ | ✅ | ❌ |
| Zstandard | zstd, zstandard |
.zst |
✅ | ✅ | ❌ |
| CSO | ciso |
.cso, .ciso |
✅ | ✅ | ❌ |
| PBP | none | .pbp |
✅ | ✅ | ❌ |
| CHD | chd-cd, chd-gd, chd-dvd, chd-raw, chd-hd, chd-av, chd-ld |
.chd |
✅ | ✅ 2 | ✅ 2 |
| GCZ | none | .gcz |
✅ | ✅ | ❌ |
| WIA | none | .wia |
✅ | ✅ | ❌ |
| TGC | none | .tgc |
✅ | ✅ | ❌ |
| NFS | none | .nfs |
✅ | ✅ | ❌ |
| WBFS | none | .wbfs |
✅ | ✅ | ❌ |
| RVZ | none | .rvz |
✅ | ✅ | ✅ |
| Z3DS | 3ds |
.z3ds, .zcci, .zcxi, .zcia, .z3dsx |
✅ | ✅ | ✅ |
| XISO | none | .xiso, .xiso.iso |
❌ | ⚠️ 1 | ❌ |
1 XISO extraction rebuilds the detected XDVDFS filesystem as a normalized ISO. Detailed
probereports and XISO creation are not supported.2 CHD parent and differential support exists in the Rust container API. The native CLI does not expose it.
extract --split-binaffects CD images only.
Create-time codecs
| Output | Supported --codec values |
|---|---|
| ZIP | store, deflate, zstd |
| 7z | lzma2 |
| RVZ | zstd |
| Z3DS | zstd |
| CHD | store, zlib, zstd, lzma, huff, flac, cdlz, cdzl, cdzs, cdfl, avhuff |
huffman aliases huff; avhu aliases avhuff. CHD accepts repeated codec options for MAME-style codec lists.
Compression levels use these codec-aware profiles:
minvery-lowlowmediumhighvery-highmax
An explicit codec:level value overrides the global profile.
Checksum support
Supported algorithms are crc32, md5, sha1, sha256, blake3, crc32c, crc16, and adler32.
Checksums can target source bytes, selected container payloads, or byte ranges (--start/--length). Known header and byte-order compatibility transforms appear as checksum_variants, including raw, headerless, repaired-header, and N64 byte orders. --no-trim-fix disables automatic trim-boundary variants.
Trim support
trim supports:
- NDS-family ROMs (
.nds,.dsi,.srl) - GBA ROMs (
.gba) - 3DS images (
.3ds) - XISO images (
.xiso,.xiso.iso, and probed XDVDFS.isofiles) - RVZ scrub candidates detected by the format recommendation
--in-place rewrites the source file; --output or --extension write the trimmed copy elsewhere instead, and -n/--dry-run reports what would change without writing anything.
--revert pads a trimmed file back out, and works for NDS, GBA, and 3DS. XISO and RVZ scrub cannot be reverted. It also answers to --untrim and --restore.
--revert-marker (also --reversible) embeds a small footer so a later revert reproduces the original padding exactly rather than guessing at it; see the footer format.
Header detection and repair
Probe, checksum, and patch apply recognize headers for A78, LNX, NES/FDS, SNES copier and SMC variants, PCE copier formats, Game Boy/GBA, Mega Drive, SMS/Game Gear, all N64 byte orders, NDS, Neo Geo Pocket, and MSX.
patch apply --repair-checksum can repair SNES, NES, Game Boy/GBA, Mega Drive, SMS/Game Gear, N64, Atari 7800/Lynx, PCE/TurboGrafx-16, Virtual Boy, Neo Geo Pocket, MSX, and NDS compatibility fields. It validates but does not rewrite FDS, Atari Jaguar, ColecoVision, Watara Supervision, or Intellivision headers.
For format specifications and upstream implementations, see references.md.
Browser emulator support
The Test page supports these platforms:
- Atari 7800
- Atari Lynx
- Nintendo Entertainment System
- Nintendo Famicom Disk System
- Nintendo Game Boy
- Nintendo Game Boy Color
- Nintendo Game Boy Advance
- Nintendo 64
- Nintendo DS
- Super Nintendo Entertainment System
- Sega Game Gear
- Sega Master System
- Sega Mega Drive or Genesis
- Sega Saturn
- Sony PlayStation
- Sony PSP
rom-weaver does not bundle EmulatorJS cores for these platforms:
- Nintendo GameCube
- Nintendo Wii
- Nintendo 3DS
- Sega CD
- Sega Dreamcast
- Sony PlayStation 2
- NEC PC Engine
- NEC PC Engine CD
- SNK Neo Geo Pocket
Load and test a ROM covers the browser controls. Patch and container support do not imply emulator support.