It’s free, open source under the GPLv3, and ready to download right now:
https://github.com/DerekPascarella/UniversalDreamcastPatcher

Just over six years ago, I set out on a mission. I wanted to write an application that would make it as easy as humanly possible to create, distribute, and apply patches for Dreamcast GD-ROM rips (this means almost none of what’s to follow in this article has to do with CDI releases). The result was Universal Dreamcast Patcher.
I’ll be honest with you. For most of its life, it didn’t really live up to that name.
The original tool couldn’t gracefully accept any GD-ROM rip format as input, it couldn’t output to whatever format you actually needed, and it ran on Windows and nowhere else. If I’m being completely candid, the code underneath was rough. It leaned on a small pile of external helper utilities and held the whole thing together with the software equivalent of duct tape and good intentions.
That all changes with the 2.0.0 release, a top-to-bottom rewrite, along with the updates that have followed since.
Why a Dedicated Patcher Even Matters
You might reasonably ask why Dreamcast patches need a special application at all. Isn’t it enough for a developer to just say, “Hey, grab this specific GD-ROM rip and apply this xdelta patch to its data track”?
That approach works fine. But if you ask me, it leaves so much on the table.
The Dreamcast scene has splintered into several disc image formats, and which one you use depends on how you intend to play the game: your optical drive emulator (ODE), your software emulator (e.g., FlyCast, Demul), or simply personal preference. There’s TOSEC-style GDI (supported by literally everything), Redump-style CUE/BIN (supported by the MODE ODE and some software emulators), and evevn the compressed CHD format (supported by some software emulators). A patch built against one of these formats could never traditionally apply to another, since the underlying data itself is entirely different.
Universal Dreamcast Patcher does away with that problem entirely.
It doesn’t matter which of the three formats you prefer or are required to use. TOSEC GDI, Redump CUE/BIN, or compressed CHD can all serve as the source image, and the very same patch applies to any of them. On top of that, you choose what format the patched result comes out in, and it can be any of the three, completely independent of what you started with. Feed it a GDI and get a CHD. Feed it a CHD and get a CUE/BIN set. The tool handles the conversion on its own.

On top of that, Universal Dreamcast Patcher makes it super simple for patch authors to create and distribute their patches. This might be the feature I’m proudest of, mostly because of how little it asks of the patch author. To produce a fully distributable patch, you do exactly two things: supply the original, unmodified disc image, and supply your modified one. That’s it!
The application diffs each and every file across both disc images, adds in any new files added by the patch, and then packages the result, producing a single distributable patch file. Behind the scenes it uses xdelta3 for the binary diff to keep file sizes small (and to ensure no direct distribution of whole, copyrighted material), and you can optionally bake IP.BIN tweaks (region-free, VGA, a custom game name) right into the patch so they’re applied automatically on the user’s end.
The patch is delivered in my own DCP format (which is really just a ZIP file with a different file extension), designed specifically for Universal Dreamcast Patcher.
What’s New in v2.0.0 and Beyond
The 2.0.0 release was no simple feature bump. I finally said “Enough!” and rewrote the entire thing from scratch. Below describes the fruits of my 128-bit labors…
Format support across the board
Every core function now speaks all three formats fluently, for both input and output:
- TOSEC-style GDI
- Redump-style CUE/BIN
- Compressed CHD
No matter which function you’re using, you’re never locked into a single format.
Single and batch disc image conversion
Need to convert one image? Need to convert an entire library? The built-in converter handles batch jobs across all three formats. In order to guarantee byte-for-byte perfect conversions (e.g., a Redump CUE/BIN converted to TOSEC GDI will have checksums matching the original TOSEC dump), Universal Dreamcast Patcher ships with embedded TOSEC and Redump DAT databases for validation, and you can supply your own external Logiqx XML DAT files if you should so desire.
A full-featured IP.BIN editor
The IP.BIN bootsector holds all the metadata that defines a Dreamcast disc, and the rewrite includes a complete editor for it (the one area of the tool that also supports CDIs), organized into three sections:
- Identification: product number, version, release date, maker name, game title, and boot filename (great for customizing homebrew/indie IDs for use with virtual VMU devices).
- Disc & Region: media type (GD-ROM or CD-ROM), disc numbering for multi-disc games, and region flags for Japan, USA, and Europe.
- Peripherals: Windows CE support, VGA box compatibility, controller requirements, and optional devices like the VMU, light gun, keyboard, and mouse (note that it’s not useful to modify most of these properties, but at least now you can do it easily).
It works directly on a disc image or on a standalone IP.BIN file, so you can make a game region-free, force VGA compatibility, or rename a title in seconds.
IMPORTANT NOTE: Forcing VGA support is something ODEs and emulators already do, but patching a disc image directly still has some utility. For VGA patches that require more than a single flip of a switch, see https://consolemods.org/wiki/Dreamcast:List_of_VGA_Games_and_Patches.
Byte-identical output 100% of the time
A common complaint with traditional GD-ROM rip extract/rebuild workflows has been that the checksum for a rebuilt disc image changes each and every time. This is due to dynamic metadata (e.g., timestamps) encoded in the ISO filesystem. By popular demand, I decided to eliminate this silly issue once and for all, and now no matter what OS you’re using, the same patch file applied against the same game will produce an identical patched disc image for everyone, all the time, no matter what.
This is very important for all those DAT people out there, haha.
Cross-platform, no helper utilities
The old version was Windows-only and dependent on a grab-bag of helper utilities. The new one is built on .NET 8 with the Avalonia 11 UI framework, runs natively on Windows, Linux, and macOS (arm64 and x64), and implements every disc operation natively, with no external tools required. Under the hood it leans on DiscUtilsGD for ISO9660/GD-ROM filesystem work (with some modifications from me to ensure byte-identical output every time) and libchdr/libchdw (both written by me based on MAME and chman source code) for CHD compression and decompression. There’s also a built-in auto-updater, so users can easily ensure they’re running the latest and greatest version of the tool.

Be the first to comment