OpenROM v3.0.0 — Universal Retro Gaming Toolkit
OpenROM is a free, open-source, fully offline desktop toolkit for working
with retro game ROM and disc images. No accounts, no telemetry, no internet
required — everything runs locally on your machine.
✨ What's New in v3.0.0
🎮 Dreamcast Support
- DCP Patch Applier — Apply Dreamcast patch files (.dcp) directly from
the GUI or CLI, with full xdelta3 delta-patch support - IP.BIN Editor — Read and modify Dreamcast boot sectors: game title,
region flags (Japan / USA / Europe), VGA mode, and Shift-JIS encoding
support for Japanese titles - GDI Track Inspector — Load and inspect GDI disc image track structure
in a clean data table
🗂️ ROM Renamer
- Match and rename ROM files against No-Intro and Redump DAT files
- CRC32-based matching with batch folder support
- Streaming XML parser for large DAT files (hundreds of MB) without RAM spikes
🪄 New Format Support
- NKit (.nkit.iso) — Nintendo GameCube / Wii disc images
- WUD / WUX — Wii U disc images
- SSP — Sega Saturn Patcher format support in the ROM Patcher
🛠️ Tools Additions
- CUE Sheet Editor — Create and edit CUE sheets for multi-track disc images
- Queue Manager — Manage and reorder conversion jobs before running them
- Compression Preview — Preview output size estimates before compressing
🐛 Bug Fixes
- Fixed CHD conversion using
cdlz(CD-only codec) for DVD-based disc
images (PS2, GameCube, Wii, Xbox) — now correctly usescreatedvdwith
appropriate codecs - Fixed Saturn and Sega CD ISOs being routed to
createdvdinstead of
createcd - Fixed
save_configsilently discarding I/O errors — now returns status
and logs warnings - Fixed
SyntaxErroron Python 3.12+ caused by invalid escape sequence
in docstring (\O) - Fixed race condition between
convert_batch()andstop()causing the
Stop button to be ignored between jobs - Fixed
_stop_flagin Compressor not being thread-safe — replaced with
threading.Event - Fixed broken DAT files being silently skipped during ROM Renamer scan —
now surfaces warnings - Fixed dead code in GB/GBC header detection branch
🔒 Security
- Zip Slip fix — DCP patch files are now validated against path
traversal attacks before extraction - Bundled Linux/macOS binaries now ship with correct executable permissions
(+x) — fixesPermission deniederrors on fresh installs
⚡ Performance
- ROM Renamer DAT loading now uses streaming
iterparse()— no more RAM
spikes with large No-Intro / Redump XML files - Sector mode detection in CUE generator now inspects actual sector headers
instead of relying on file size alone
🌍 Localization
6 languages supported: English, Arabic, Spanish, French, Japanese,
Portuguese — including the new Dreamcast screen
📦 Downloads
| Platform | File |
|---|---|
| 🪟 Windows (Installer) | OpenROM-v3.0.0-Setup.exe |
| 🪟 Windows (Portable) | OpenROM-v3.0.0_Windows_Portable.zip |
| 🐧 Linux x86_64 | OpenROM-v3.0.0_Linux_x86_64.zip |
| 🐧 Linux ARM64 | OpenROM-v3.0.0_Linux_arm64.zip |
| 🍎 macOS Apple Silicon | OpenROM-v3.0.0_macOS_arm64.zip |
| 🍎 macOS Intel | OpenROM-v3.0.0_macOS_x86_64.zip |
SHA256 checksums are listed under each asset below.
🔧 CLI Quick Reference
# Detect ROM format
openrom-core --detect game.iso
# Convert to CHD
openrom-core --input game.iso --format CHD
# Batch convert folder
openrom-core --folder /roms/ --format CHD --compression Max
# Apply DCP patch
openrom-core --dcp patch.dcp --disc-dir /disc/ --output /out/
# Read IP.BIN
openrom-core --read-ipbin IP.BIN
# Edit IP.BIN
openrom-core --write-ipbin IP.BIN --region-free --set-vga
# List supported formats
openrom-core --list-formats📋 Supported Formats
| System | Input | Output |
|---|---|---|
| PS1 / Dreamcast / Saturn / Sega CD | BIN/CUE, CHD | CHD (createcd) |
| PS2 / GameCube / Wii / Xbox | ISO, CHD | CHD (createdvd), CSO, RVZ, XISO |
| PSP | ISO | CSO |
| GameCube / Wii | NKit, WUD, WUX | ISO, RVZ |
| Wii U | WUD, WUX | — |
| Universal | ZIP, 7Z | ZIP, 7Z |
Patch formats: IPS, IPS32, UPS, BPS, PPF, APS, EBP, DPS, xdelta3, SSP, DCP
OpenROM is licensed under GPL v3.
Built with Python + Flutter by M5 Dev 🇪🇬