A native macOS utility for converting and patching game disc images and ROMs. MacMan wraps a collection of well-known open-source CLI tools (chdman, dolphin-tool, maxcso, xdelta3, flips, ecm, wit, JWUDTool, NKit) behind a clean SwiftUI interface, with batch input, drag-and-drop, live logs, and one-click installation for missing tools.
If you have a folder of PS1, PSP, GameCube, Wii, Wii U, or Saturn games sitting in heavy formats and want them compressed, converted, patched, or identified — this app is for you.
- CHD compression and extraction (PS1 · PS2 · Dreamcast · Saturn · Sega CD)
- RVZ / GCZ / WIA conversion using Dolphin's tools (GameCube · Wii)
- NKit lossless preservation conversion (GameCube · Wii)
- WBFS / ISO / CISO / WDF conversion with FAT32 splitting (Wii)
- CSO / ZSO compression and decompression (PSP)
- ECM compression for PS1 BIN images
- Wii U WUD/WUX operations: compress, decompress, extract, decrypt
- ROM patching with XDelta, IPS, and BPS
- ROM verification with CRC32 / MD5 / SHA-1 and No-Intro / Redump DAT matching
- Tool Status view to install, build, download, or uninstall every helper tool
- macOS 14 or later
- Xcode 15 or later (to build from source)
- Homebrew (for installing helper tools — MacMan invokes
brewon your behalf when you click Install) - Java (for Wii U mode) and Mono (for NKit mode) only if you use those modes
git clone <this-repo>
cd MacMan
open MacMan.xcodeproj
# Cmd+R in Xcodedocs/architecture.md— module layout, design decisions, and method signaturesdocs/log.md— full development changelog
Use the sidebar to switch between modes.
Compress disc images into CHD format or extract CHD archives back into a usable disc image. CHD is the ideal preservation format for optical-disc games — small, lossless, and supported by most emulators.
Compress to CHD accepts: .cue (recommended for BIN/CUE sets), .bin, .img, .iso, .gdi.
Extract from CHD accepts: .chd.
- Choose
To CHDorFrom CHDusing the mode selector. - Drag and drop one or more supported files into the drop zone.
- Optionally choose an output folder.
- Click the action button.
When extracting, choose Bin/Cue if you need the original track layout, or ISO for a single-track image.
Convert GameCube and Wii disc images using Dolphin's dolphin-tool. RVZ is Dolphin's modern compressed format and is the best choice for everyday use; GCZ is the legacy format supported by older emulators; WIA is widely supported.
Supported inputs: .iso, .gcm, .gcz, .rvz, .wia, .wbfs.
- Drag one or more supported source files into the drop zone.
- Choose the target format (RVZ / GCZ / WIA).
- If using RVZ, choose compression type (zstd / lzma / lzma2) and level.
- Click
Convert.
Convert GameCube/Wii disc images to and from the NKit lossless preservation format. NKit removes redundant data so files compress smaller while remaining bit-perfect after recovery — preferred by archivists.
- Convert to NKit — ISO/GCM → NKit format
- Recover to ISO — NKit → original ISO/GCM
- Verify — check an image against the NKit redump database
- Mono must be installed:
brew install mono NKit.exemust be placed in~/Library/Application Support/MacMan/bin/. Download it from the NKit releases page.
- Choose a mode (Convert / Recover / Verify).
- Drop one or more ISO/GCM files into the drop zone.
- Click the action button.
NKit writes output files alongside the input.
Convert GameCube/Wii disc images between ISO, WBFS, CISO, and WDF formats using wit (Wiimms ISO Tools). Use this when preparing games for Wii loaders that read from SD card or USB — and toggle Split for FAT32 if your destination drive is FAT32 (required for any file larger than 4 GiB).
Supported inputs: .iso, .wbfs, .ciso, .wdf.
- Drop one or more disc images into the drop zone.
- Choose the target format (ISO, WBFS, CISO, WDF).
- Toggle
Split for FAT32if needed. - Click
Convert.
Compress PSP ISO files to CSO/ZSO, or decompress them back to ISO. CSO and ZSO are the standard compressed formats for PSP custom firmware and emulators.
Supported inputs: .iso when compressing; .cso / .zso when decompressing.
- Toggle
Decompressdepending on your goal. - Drag files into the drop zone.
- If compressing, choose a compression level (1–9; default 9).
- Click
CompressorDecompress.
Compress and decompress PS1 BIN images using ECM (Error Code Modeler). ECM strips redundant error-correction data from BIN tracks, producing smaller archives that can be reconstructed losslessly. Often used in old archives downloaded from preservation sites.
- Compress:
.bin,.img,.iso - Decompress:
.ecm
- Toggle the
Decompressswitch depending on your goal. - Drop one or more files into the drop zone.
- Click
CompressorDecompress.
Operate on Wii U disc images (WUD/WUX) using JWUDTool. Supports the full range of Wii U dump operations from compression through decryption.
- Compress — WUD → WUX
- Decompress — WUX → WUD
- Extract All / Content / Ticket / Hashes — pull files out of a disc image
- Decrypt Partition — decrypt game partition to disk
- Verify — verify disc image integrity
- Java must be installed and available on PATH.
JWUDTool.jarmust be placed in~/Library/Application Support/MacMan/bin/(MacMan can download it for you from Tool Status).- Optional:
common.keyandgame.keyfiles for decryption operations.
- Select an operation from the mode picker.
- Drag the source WUD or WUX file into the drop zone.
- For decryption, provide key files using the key selectors.
- Optionally choose an output folder.
- Click the action button.
Apply XDelta, IPS, or BPS patches to ROM files. MacMan auto-detects the patch format from the file extension and routes it to the right tool — XDelta uses xdelta3; IPS and BPS use flips (Floating IPS).
- ROM formats:
.bin,.iso,.sfc,.smc,.gba,.nds,.z64,.n64 - Patch formats:
.xdelta,.xdelta3,.patch(XDelta),.ips,.bps
- Select the ROM file.
- Select the patch file.
- Confirm the detected patch format.
- Choose an output file location (optional — auto-generated if omitted).
- Click
Apply Patch.
Compute CRC32, MD5, and SHA-1 hashes for any file and optionally identify it against a No-Intro or Redump DAT XML database. Useful for checking whether a ROM you have matches a clean preservation dump.
- Drop one or more files into the drop zone (any file type accepted).
- Optionally click
Load DAT…and select a No-Intro or Redump DAT XML file. - Click
Verify.
For each file, MacMan displays the three hashes. If a DAT is loaded, the result also shows a match (green check) or a no-match indicator (orange).
DAT files can be downloaded from No-Intro or Redump — they are XML files listing every known ROM with its hashes.
The Tool Status view shows which helper binaries are installed and available. If a tool is missing, MacMan offers one of:
- Brew Install — installs via Homebrew
- Build & Install — clones the source repository and compiles locally into
~/Library/Application Support/MacMan/bin - Open Download Page — for tools that require manual download (Dolphin, NKit)
- Download JAR — direct download for Java tools (JWUDTool)
- Uninstall — removes a locally built or downloaded tool
- For BIN/CUE → CHD, always choose the
.cuefile rather than.binalone. - For CHD extraction, choose
Bin/Cuewhen you need the original track layout, orISOfor a single disc image. - Use the output folder selector to keep converted files organized.
- For preservation archiving, prefer NKit (GameCube/Wii) and CHD (everything else) — both are lossless and well-supported.
- If a conversion fails, check the log output inside the current view.
- Make sure the required tool is installed via the Tool Status page.
- If you need
.cue+.binfrom a CHD, use the CHD extractor and chooseBin/Cue. - For Wii U operations, ensure Java is installed (
java -versionin Terminal) and thatJWUDTool.jaris in~/Library/Application Support/MacMan/bin/. - For NKit operations, ensure Mono is installed (
mono --versionin Terminal) and thatNKit.exeis in~/Library/Application Support/MacMan/bin/.
flips and wit are built from source by MacMan, and the upstream Makefiles occasionally change. If Build & Install fails in Tool Status, install them manually and place the binary in ~/Library/Application Support/MacMan/bin/ — MacMan picks it up on the next refresh.
flips (IPS/BPS patcher):
brew install flips
# or build from source:
git clone https://github.com/Alcaro/Flips
cd Flips
make TARGET=cli
cp flips ~/Library/Application\ Support/MacMan/bin/wit (Wiimms ISO Tools):
# Download a prebuilt binary from https://wit.wiimm.de/download.html
# or build from source:
git clone https://github.com/Wiimm/wiimms-iso-tools
cd wiimms-iso-tools/project
make
cp bin/wit ~/Library/Application\ Support/MacMan/bin/After copying the binary, return to MacMan and the Tool Status view will reflect the install on the next refresh (or relaunch the app).