OpenROM Banner

โฌก OpenROM

Universal Retro Gaming Toolkit โ€” by M5 Dev

Security Policy Ask DeepWiki

--- > ๐ŸŽฎ Meet **ROMeo** โ€” OpenROM's official mascot. Your friendly pixel-art cartridge companion for all things ROM. OpenROM is a free, open-source **Universal Retro Gaming Toolkit** โ€” one app to replace every fragmented ROM tool out there. Convert, patch, compress, clean, and manage your ROM collection with a modern **Flutter desktop UI**, real-time terminal logging, smart platform detection, and a full headless CLI for automation โ€” with optional online features that are always opt-in. --- ## โฌ‡๏ธ Download | Platform | GitHub Release | SourceForge Mirror | |----------|---------------|-------------------| | ๐ŸชŸ Windows (Installer) | [OpenROM-Windows-Setup.exe](https://github.com/M5Devs/OpenROM/releases/latest) | [Mirror](https://sourceforge.net/projects/openrom/files/latest/download) | | ๐ŸชŸ Windows (Portable) | [OpenROM_Windows_Portable.zip](https://github.com/M5Devs/OpenROM/releases/latest) | [Mirror](https://sourceforge.net/projects/openrom/files/latest/download) | | ๐Ÿง Linux x86_64 | [OpenROM_Linux_x86_64.zip](https://github.com/M5Devs/OpenROM/releases/latest) | [Mirror](https://sourceforge.net/projects/openrom/files/latest/download) | | ๐Ÿง Linux ARM64 | [OpenROM_Linux_arm64.zip](https://github.com/M5Devs/OpenROM/releases/latest) | [Mirror](https://sourceforge.net/projects/openrom/files/latest/download) | | ๐ŸŽ macOS Apple Silicon | [OpenROM_macOS_arm64.zip](https://github.com/M5Devs/OpenROM/releases/latest) | [Mirror](https://sourceforge.net/projects/openrom/files/latest/download) | | ๐ŸŽ macOS Intel | [OpenROM_macOS_x86_64.zip](https://github.com/M5Devs/OpenROM/releases/latest) | [Mirror](https://sourceforge.net/projects/openrom/files/latest/download) | | ๐Ÿค– Android | ๐Ÿšง Coming soon via Termux | โ€” | Each release includes the **Flutter GUI** (`OpenROM`) and the **headless CLI** (`openrom-core`). ๐Ÿ“– **Guides & Docs:** [Official Wiki](https://github.com/M5Devs/OpenROM/wiki) โ€” setup, Steam Deck, Termux, FAQs. --- ## ๐ŸŽฎ Features ### ๐Ÿ” ROM Conversion - **20+ conversion paths** โ€” ISO, BIN, CUE, GDI, IMG, ECM, CHD, CSO, ZSO, XISO, RVZ, WIA, WBFS, GCZ and more. - **Smart Platform Detection** โ€” Magic byte detection for PS1, PS2, PSP, Xbox, GameCube, Wii, Dreamcast, Saturn, Sega CD โ€” not size guessing. - **Real CHD Header Parsing** โ€” Reads actual CHD v4/v5 headers to determine CD vs DVD type accurately. - **Correct CHD Codec Routing** โ€” `createcd` for PS1/Dreamcast/Saturn/Sega CD, `createdvd` for PS2/GameCube/Wii/Xbox โ€” never mixed up. - **Auto CUE Generation** โ€” Generates CUE sheets for standalone BIN files with correct track mode detection (MODE1/MODE2/AUDIO) via sector header inspection. - **Integrity Verification** โ€” Post-conversion CHD integrity check via `chdman verify`. ### ๐Ÿฉน ROM Patching - **11 patch formats** โ€” IPS, IPS32, UPS, BPS, PPF, APS, EBP, DPS, xdelta3, **SSP (Sega Saturn)**, **DCP (Dreamcast)**. - **Auto format detection** โ€” Drop a patch file and OpenROM detects the format automatically. - **Checksum verification** โ€” CRC32 integrity checks before and after patching with a detailed report. - **Ignore checksum mode** โ€” Force-apply patches even on modified ROMs. ### ๐ŸŽฎ Dreamcast Tools - **DCP Patch Applier** โ€” Apply Dreamcast `.dcp` patch files with full xdelta3 delta-patch support. Compatible with Universal Dreamcast Patcher patch files. - **IP.BIN Editor** โ€” Read and modify the Dreamcast boot sector: game title, region flags (Japan / USA / Europe / Region Free), VGA mode toggle, and full Shift-JIS encoding support for Japanese game titles. - **GDI Track Inspector** โ€” Load and inspect GDI disc image track structure โ€” track number, LBA offset, type (Audio/Data), sector size, and filename. ### ๐Ÿ—œ๏ธ Compression & Extraction - **ZIP support** โ€” Compress ROMs or entire folders with fast / normal / ultra presets. - **Smart skip** โ€” Already-compressed formats (CHD, CSO, RVZ, 7Zโ€ฆ) are automatically skipped. - **Batch extraction** โ€” Extract ZIP archives with progress tracking. - **Delete source option** โ€” Auto-clean source files after successful compression. ### ๐Ÿงน ROM Header Removal - **Copier header detection and removal** for NES (iNES), SNES (SMC), Game Boy / GBC โ€” with confidence rating (certain / likely). - **Double-strip protection** โ€” SNES internal header validation prevents stripping clean ROMs twice. - **Auto backup** โ€” Original ROM backed up as `.bak` before any modification. Existing backups are never overwritten. - **Non-destructive** โ€” Output written to a separate file; source untouched by default. ### ๐Ÿ—‚๏ธ Collection Utilities - **M3U Playlist Generator** โ€” Auto-generate M3U playlists for multi-disc games (PS1, Saturn, etc.). - **BIN Merger** โ€” Merge multi-track BIN files into a single BIN + CUE, with correct INDEX 00 pregap handling. - **CUE Sheet Editor** โ€” Open, edit, and save `.cue` files directly inside OpenROM. - **Batch Processing** โ€” Drop a whole folder, process everything at once. ### ๐Ÿท๏ธ ROM Renamer - **No-Intro + Redump DAT support** โ€” Import any DAT file from datomatic.no-intro.org or redump.org. - **CRC32 matching** โ€” Identifies ROMs by hash, not filename. - **Dry run mode** โ€” Preview renames before applying. - **DAT library** โ€” Import multiple DATs and OpenROM stores them locally for reuse. - **Event-based XML parser** โ€” Parses DAT metadata without building a full DOM tree; a streaming file decoder is planned for extremely large DAT files. - **100% offline** โ€” No network requests, no API keys. ### ๐Ÿ“Š Queue & Preview - **Queue Manager** โ€” Drag to reorder conversion jobs before running. Clear completed jobs with one click. - **Compression Preview** โ€” See estimated output size before converting, based on format and compression level. ### ๐Ÿ–ฅ๏ธ UI & Workflow - **Gaming Dashboard UI** โ€” Flutter-powered dark interface inspired by PS5/Xbox aesthetics, with ROM cards, platform badges, and real-time progress. - **Themeable** โ€” Swap between built-in themes (Gaming Dashboard, Cyberpunk, Terminal, Minimal) or create your own via JSON. - **Real-time Terminal Log** โ€” Live process output with timestamps, slides up during conversion. - **Drag & Drop** โ€” Native drag and drop for files and folders. - **Full Headless CLI** โ€” `openrom-core` for scripting, automation, and Flutter IPC. - **6 Languages** โ€” English, Arabic, Spanish, French, Japanese, Portuguese. - **Privacy-first** โ€” No telemetry, no analytics, no accounts. Optional online features (update checks, RetroAchievements) are opt-in and clearly disclosed. ### ๐ŸŒ Online Features (Optional) - **Auto-update check** โ€” Checks GitHub on startup for a newer version. Disabled by default, enable in Settings. - **RetroAchievements hash check** โ€” Verifies if your ROM is supported before converting. Requires a free retroachievements.org account. Disabled by default. - All online features are opt-in. No data is ever collected without explicit user consent. --- ## ๐Ÿ” Conversion Matrix | Input | Output | Tool | Notes | |-------|--------|------|-------| | ISO | CHD | chdman | `createcd` for PS1/Dreamcast/Saturn/Sega CD, `createdvd` for PS2/GC/Wii/Xbox | | ISO | CSO | maxcso | PSP / PS2 | | ISO | ECM | ecm | | | ISO | XISO | extract-xiso | Xbox | | ISO | RVZ | nodtool | GameCube / Wii | | BIN | CHD | chdman | Auto CUE if missing | | BIN | ECM | ecm | | | CUE | CHD | chdman | | | GDI | CHD | chdman | Dreamcast | | IMG | CHD | chdman | | | CHD | ISO | chdman | | | CHD | BIN/CUE | chdman | | | CSO | ISO | maxcso | | | ZSO | ISO | maxcso | | | ECM | ISO / BIN | unecm | Auto-detects output format | | XISO | Files | extract-xiso | Extracts to folder | | RVZ | ISO | nodtool | GameCube / Wii | | WIA | ISO | nodtool | GameCube / Wii | | WBFS | ISO | nodtool | Wii | | GCZ | ISO | nodtool | GameCube / Wii | | NKit | ISO | nkit | GameCube / Wii | | WUD | ISO, WUA | nkit | Wii U | | WUX | ISO, WUA | nkit | Wii U (compressed) | | WUA | ISO, WUD | nkit | Wii U (ZArchive) | | ISO | NKit | nkit | GameCube / Wii | --- ## ๐Ÿฉน Supported Patch Formats | Format | Systems | |--------|---------| | IPS / IPS32 | NES, SNES, GBA, and most retro systems | | UPS | Universal โ€” any ROM | | BPS | Universal โ€” any ROM | | PPF | PS1 / PS2 disc patches | | APS (GBA) | Game Boy Advance | | APS (N64) | Nintendo 64 | | EBP | EarthBound / SNES | | DPS | DOS / PC | | xdelta3 / VCDIFF | Large ROMs, disc images, PS2, PSP | | SSP (Sega Saturn Patcher) | Sega Saturn disc patches | | DCP (Dreamcast Patch Container) | Sega Dreamcast disc patches | --- ## ๐Ÿ’ป CLI Usage ```bash # Detect file format and platform openrom-core --detect game.iso # Convert a single file openrom-core --input game.iso --format CHD # Batch convert a folder openrom-core --folder /roms/ --format CHD --compression Max # Convert with verification openrom-core --input game.iso --format CHD --verify # Apply a patch # Apply a Dreamcast DCP patch openrom-core --dcp patch.dcp --disc-dir /disc/ --output /out/ # Generic ROM patching (IPS, BPS, UPS, etc.) is supported via the OpenROM GUI # Read IP.BIN fields openrom-core --read-ipbin IP.BIN # Edit IP.BIN โ€” region free + enable VGA openrom-core --write-ipbin IP.BIN --region-free --set-vga # Edit IP.BIN โ€” set custom title openrom-core --write-ipbin IP.BIN --set-title "MY GAME" # Inspect GDI track structure openrom-core --read-gdi disc.gdi # Compress to ZIP openrom-core --compress game.iso --format zip --level ultra # Remove ROM header openrom-core --remove-header game.smc # Generate M3U for multi-disc game openrom-core --m3u /roms/Metal\ Gear\ Solid/ # Verify a CHD openrom-core --input game.chd --verify-only # JSON output (for scripting / Flutter IPC) openrom-core --json --detect game.iso ``` --- ## ๐ŸŽจ Themes OpenROM ships with 4 built-in themes and supports fully custom themes via JSON files in the `themes/` folder: | Theme | Description | |-------|-------------| | `default.json` | Gaming Dashboard โ€” dark navy, red accent | | `cyberpunk.json` | Neon on black | | `terminal.json` | Green on black, monospace | | `minimal.json` | Clean light mode | Create your own theme by copying any JSON file and editing the color values. --- ## ๐Ÿ› ๏ธ Bundled Tools All tools are open source and verifiable. See [SECURITY.md](SECURITY.md) for SHA256 checksums. | Tool | Purpose | License | |------|---------|---------| | **chdman** | CHD conversion (MAME) | GPL v2 | | **maxcso** | CSO/ZSO compression | ISC | | **ecm / unecm** | ECM compression | GPL v2 | | **extract-xiso** | Xbox ISO extraction | GPL v2 | | **nodtool** | GameCube / Wii formats | MIT | | **xdelta3** | xdelta/VCDIFF patching | Apache 2.0 | | **nkit / nkds** | NKit GameCube/Wii/WiiU conversion | MIT | | **saturn-patcher** | Sega Saturn SSP patch applier | GPL v3 | | **xgdtool** | Xbox Game Disc (XGD) tooling | GPL v3 | --- ## ๐Ÿš€ Building from Source ### Requirements - Dart SDK 3.0+ - Flutter SDK (stable channel) ### Run Flutter UI from source ```bash git clone https://github.com/M5Devs/OpenROM cd OpenROM # Build Dart core CLI cd core dart pub get dart compile exe bin/openrom.dart -o ../openrom-core # Run Flutter UI cd gui flutter pub get flutter run -d windows # or linux / macos ``` ### Build release packages ```bash # Windows build_windows.bat # Linux ./build_linux.sh # macOS ./build_mac.sh ``` --- ## ๐Ÿ—บ๏ธ Roadmap - [x] Flutter UI rewrite (v2.5.0) - [x] Magic byte platform detection - [x] CHD header parsing - [x] Theme system - [x] ROM Patcher โ€” IPS, BPS, UPS, xdelta3, PPF, SSP and more (v2.5.0) - [x] ZIP / 7Z compression & extraction - [x] ROM header removal โ€” NES, SNES, GB/GBC - [x] M3U playlist generator - [x] NKit / WUD / WUX support (v2.8.0) - [x] SSP Sega Saturn Patcher (v2.8.0) - [x] Linux ARM64 builds (v2.8.0) - [x] CUE Sheet Editor (v2.9.0) - [x] Queue Manager + Compression Preview (v2.9.0) - [x] ROM Renamer โ€” No-Intro + Redump DAT support (v3.0.0) - [x] Dreamcast DCP Patch Applier (v3.0.0) - [x] IP.BIN Editor โ€” region, VGA, Shift-JIS (v3.0.0) - [x] GDI Track Inspector (v3.0.0) - [x] DCP Patch Builder ๐Ÿ”จ - [x] maxcso ARM64 build - [x] RetroAchievements hash verification (v3.8.0) --- ## ๐Ÿค Contributing Contributions are welcome! Read [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on bug reports, feature requests, and pull requests. --- ## ๐Ÿ“„ License OpenROM is licensed under the **GNU General Public License v3.0 (GPL v3)** โ€” a free, copyleft license approved by the Open Source Initiative. | | | |---|---| | โœ… | Free to use personally and commercially | | โœ… | Free to study, modify, and distribute | | โœ… | Forks must remain open source under GPL v3 | | โœ… | Listed on Flathub, Linux distros, and OSI-compliant repos | See [LICENSE](LICENSE) for the full license text.