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, PkgTool) 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
- PS4 PKG building from GP4 projects and unpacking PKGs back into GP4 projects
- 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
- 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
- Rosetta 2 (for PS4 PKG mode on Apple Silicon) —
softwareupdate --install-rosetta --agree-to-license
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.
Build PS4 packages from GP4 projects and unpack existing packages back into editable projects, using PkgTool from LibOrbisPkg. A GP4 is an XML project file listing which files go into a package and where; a PKG is the installable package itself.
- GP4 → PKG — packs the files a GP4 project references into a fake PKG. The output is named after the project's content ID.
- PKG → GP4 — extracts a PKG into loose files plus a
Project.gp4, ready to edit and rebuild.
PkgTool.Corein~/Library/Application Support/MacMan/bin/(MacMan downloads it for you from Tool Status).- Rosetta 2 on Apple Silicon — upstream only publishes an x86_64 build. MacMan warns you if it is missing.
- For GP4 → PKG, the files the project references must still be where it points. MacMan rewrites Windows-style backslash paths automatically, so projects authored on Windows build without editing.
- A passcode is only needed when unpacking retail PKGs; fake PKGs need none.
- Pick a direction with the
Directionpicker. - Drop
.gp4files (build) or.pkgfiles (unpack) into the drop zone. - Optionally choose an output folder, and a passcode when unpacking.
- Click
Build PKGorUnpack.
Unpacking writes the package's full uncompressed contents to disk, and rebuilding writes another copy — budget roughly twice the game's size in free space.
Note that the first conversion after downloading is slower — PkgTool unpacks itself into a temporary directory on first launch.
Many PKGs store their filesystem compressed. LibOrbisPkg can read that compression but does not write it, so a package rebuilt from an unpacked project is stored uncompressed — same contents and content ID, larger file. This is expected, not a failed conversion.
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/. - For PS4 PKG operations on Apple Silicon, install Rosetta 2 with
softwareupdate --install-rosetta --agree-to-license— PkgTool has no arm64 build and cannot start without it.
flips and wit are built from source by MacMan, and the upstream projects occasionally change in ways that break the build. If Build & Install fails in Tool Status, install the tool yourself and drop the binary into ~/Library/Application Support/MacMan/bin/:
- flips (IPS/BPS patcher) —
brew install flips - wit (Wiimms ISO Tools) — download a prebuilt binary from wit.wiimm.de
After copying the binary, return to MacMan and the Tool Status view will reflect the install on the next refresh (or relaunch the app).