Updates
-
Added new Application Updater
- Automatically check for updates on startup (can be set ON/OFF in the Settings)
- "Check for Updates" button in the Settings for manual checking
- Shows a dialog with "Download" and "Later" buttons if an update is found
-
Added a Native Menu
- Platform-native application menu for macOS and supported Linux desktops
- Mirrors all sidebar navigation categories and items
-
Added a Tray Icon
- System tray icon with Show / Exit context menu
- Automatically minimizes to the system tray when launching a ROM with RetroArch (configurable)
- Automatically restores when the emulator process exits
- Tray icon appears only while the window is minimized to the tray
-
Added a new Big Picture Mode
- Transforms the ROM Browser into a fullscreen, controller-friendly experience inspired by Steam's Big Picture
- It displays your ROM collection as large visual cards with color-coded system banners, making it ideal for couch gaming with a keyboard or game controller
- There are two ways to enter Big Picture Mode:
- From the ROM Browser : Click the Big Picture Mode button in the toolbar. If you already have a folder scanned, the current ROM list is carried over so you don't have to rescan
- On startup : Enable Start in Big Picture Mode automatically in the Settings view and configure a ROM folder. The application will launch directly into Big Picture Mode
-
Added a new SDL2 Gamepad Mapping Tool
- Create custom SDL2 controller mappings for unrecognized or unmapped game controllers. Accessible from the Settings view under Controller Profiles → Open Gamepad Tool.
- Step-by-step mapping wizard for all 21 standard SDL2 game controller elements (face buttons, D-pad, triggers, stick axes)
- Save custom mappings permanently or copy to clipboard
- Manage and delete saved custom mappings
- Mappings are automatically applied at startup in Big Picture Mode
-
Added a new "GoodTools" Identifier utility
- Identifies GoodTools labelling conventions from ROM filenames.
- Decode each code tag to its meaning (e.g.,
[!]= Verified Good Dump,(U)= USA) - Single ROM or batch directory processing
- Also surfaces identified codes directly in the ROM Browser
-
Add a new ROM hosting & sharing feature to the ROM Browser
- Supports two modes: directory hosting (all ROM files) and selected files hosting (specific ROMs)
- Provides a styled HTML directory listing page for browsing
- Supports HTTP range requests for resumable downloads
- Handles concurrent connections via async I/O
- Includes path-traversal protection to prevent accessing files outside the shared scope
- Detects LAN IP addresses for easy sharing
- Falls back to localhost binding if wildcard binding requires elevated permissions
-
Added a new Discord Rich Presence functionality
- Can be toggled ON/OFF in the Settings
-
Added full support for 11 new retro gaming systems across all available functions
| System | Extensions | Header Parsing | Security Analysis | Dump Verification | Cheat Codes | Header Fixing |
|---|---|---|---|---|---|---|
| Atari 800 / XL / XE | .atr, .xex, .car, .cas
| ✔ | ✔ | ✔ | — | — |
| Fairchild Channel F | .chf
| ✔ | ✔ | ✔ | — | — |
| Memotech MTX | .mtx, .run
| ✔ | ✔ | ✔ | — | — |
| NEC PC-88 | .d88, .t88
| ✔ | ✔ | ✔ | — | — |
| Nintendo 64DD | .ndd
| ✔ | ✔ | ✔ | — | — |
| Nintendo DS | .nds
| ✔ | ✔ | ✔ | ✔ | ✔ |
| Nintendo 3DS | .3ds, .cia
| ✔ | ✔ | ✔ | ✔ | ✔ |
| Philips CD-i | .iso, .cue
| ✔ | ✔ | ✔ | — | — |
| SNK Neo Geo | .neo
| ✔ | ✔ | ✔ | ✔ | — |
| SNK Neo Geo CD | .iso, .cue
| ✔ | ✔ | ✔ | — | — |
| Tiger Game Com | .tgc
| ✔ | ✔ | ✔ | — | — |
- Updated Cheat Codes & Header Fixing Support
| System | Header Parsing | Security Analysis | Dump Verification | Cheat Codes | Header Fixing |
|---|---|---|---|---|---|
| Intellivision | ✔ | ✔ | ✔ | — | ✔ |
| Sega Saturn | ✔ | ✔ | ✔ | ✔ | — |
| Sega Dreamcast | ✔ | ✔ | ✔ | ✔ | — |
- Added a new Search function in the ROM Browser
- Type in the Search box to filter ROMs by name, system, or file size
- Search results combine with the system filter for fine-grained browsing
- Added a new ROM Browser Context Menu
- Right-click on a selected ROM in the list to access a context menu with quick actions:
| Action | Description |
|---|---|
| 🎮 Launch with RetroArch | Launches the selected ROM in RetroArch with the appropriate core |
| 📋 Copy To... | Copies the selected ROM(s) to a destination folder |
| 📁 Move To... | Moves the selected ROM(s) to a destination folder |
| 📤 Send To Remote... | Opens the Send to Remote dialog for the selected ROM(s) |
| 🔄 Convert Format | Available for N64, SNES, and NES ROMs — opens the format converter |
| ✂️ Trim ROM | Available for systems with trimmable ROMs (NES, SNES, N64, Game Boy, GBA) |
| 📄 Export Header | Exports the ROM header to a text file for systems with parseable headers |
| ✅ Verify ROM | Guides you to the DAT Verifier or Dump Verifier for ROM verification |
| 🗑️ Delete | Deletes the selected ROM(s) from disk |
-
Updated Cloud Storage Support for sending ROMs
- Now also supports Google Drive, Dropbox & OneDrive
-
Updated MAME Arcade Rebuilder & Auditor
- The MAME Arcade Rebuilder had no way to choose between split, merged, or non-merged rebuild modes & Auditors only searched top-level directories
- Added :
- Split: only non-merged ROMs per machine (existing default behavior)
- NonMerged: includes all ROMs ignoring merge attribute — each ZIP is self-contained
- Merged: builds only parent ZIPs, aggregating unique clone ROMs via name-based deduplication
- Added recursive directory search options in Rebuilder & Auditor
-
Updated Duplicate Finder
- Added 'Delete Duplicates' option that deletes all copies except the first in each group, with per-file error handling and progress reporting
- Two-step confirmation: shows file count and estimated space savings before committing
- Post-deletion summary with freed bytes
- Added 'Delete Duplicates' option that deletes all copies except the first in each group, with per-file error handling and progress reporting
-
Dump Verifier Improvements
- Added header validation checks for 7 more systems:
- SMS/Game Gear: TMR SEGA header checksum validation
- Atari 7800: ATARI7800 signature check
- Atari Lynx: LYNX header presence check
- Sega 32X: SEGA identifier check
- MSX: AB cartridge signature check
- Virtual Boy: Title presence check
- PC Engine: Copier header warning
- Added header validation checks for 7 more systems:
-
Security Analyzer Improvements
- Added checksum/header protection reporting for 4 more systems:
- Sega 32X internal checksum
- Virtual Boy header integrity
- Atari Lynx LYNX header
- Atari 7800 ATARI7800 signature
- Added checksum/header protection reporting for 4 more systems:
Fixes
-
Application Icon fixed on Linux & macOS
-
Critical ROM-Breaking bugs fixed in the "Header Fixer" utility
- N64 CRC algorithm — The CIC-NUS-6102 checksum was fundamentally broken: it was missing the critical rotate-left (ROL) operation on each data word, had wrong variable assignments in the accumulator loop, and produced incorrect final CRC values from wrong XOR combinations. Any ROM "fixed" by this code would have had its CRC corrupted.
- ColecoVision — Bytes 0x0A–0x0F were being zeroed as "reserved", but these are RST interrupt vectors (RST 10h, RST 18h, RST 20h). Games that used these interrupts would crash after being "fixed". Now the fixer is validation-only since the ColecoVision header has no reserved bytes to clean.
- Atari Lynx — Bytes 10–63 were being zeroed, destroying the cart name (bytes 10–41), manufacturer name (42–57), and rotation flag (58). Now only the actual spare bytes 59–63 are cleaned.
- Intellivision — Bytes 0x08–0x0F were being zeroed, but these contain program segment data in Intellivision ROMs (which use 16-bit words with variable header layouts). Now validation-only.
- NES — Bytes 8–15 were all being zeroed, which destroyed valid iNES 1.0 data: PRG-RAM size (byte 8), TV system/PAL flag (byte 9), and additional flags (byte 10). Now only the true zero-padding bytes 11–15 are cleaned.
- SNES checksum — Didn't handle non-power-of-2 ROM sizes (3 MB, 6 MB, 1.5 MB). The SNES hardware mirrors the excess portion to fill the next power-of-2 boundary, and the checksum must account for this mirroring. Games like Tales of Phantasia and Star Ocean (6 MB) would get incorrect checksums.
- Neo Geo Pocket — Was zeroing bytes 0x30-0x3F which are executable ROM code, not reserved bytes. The NGP header is only 48 bytes (0x00-0x2F); the actual reserved area is 0x24-0x2F. Now only zeroes the real reserved bytes, preserving all program code.
- PC Engine / TurboGrafx-16 — Was zeroing the 512-byte copier header in place, leaving a ROM with 512 null bytes still prepended. Emulators detect the copier header by file size (size % 8192 == 512), so they'd still try to parse it but find invalid/null data. Now properly strips the copier header entirely, producing a clean ROM.
- Atari Jaguar — Was zeroing bytes 0x440-0x47F which contain GPU/DSP initialization code and boot stub data. There are no well-defined reserved bytes in this area. Changed to validation-only.
- Watara Supervision — Was zeroing bytes 0x10-0x1F without documented justification. The Supervision header format is poorly documented and these bytes may contain bank-switching configuration or other functional data. Changed to validation-only.
- SMS/Game Gear — The FixSmsChecksumAsync method only summed bytes from 0x0000 to headerOffset - 1 (typically 0x7FEF when the TMR SEGA header is at 0x7FF0). This meant that for ROMs larger than 32KB — which includes most Game Gear ROMs and many SMS ROMs — all the banked ROM data beyond the header was completely ignored in the checksum calculation.
-
RetroArch Launcher Fixes
- macOS .app bundle not recognized (Browse button rejected .app files)
- There's unfortunately still an existing bug that prevents using a custom RetroArch.app path, to fix :
- Open the file /Users/YOURUSERNAME/Library/Application Support/RetroMultiTools/settings.json
- Find the "RetroArchPath" entry and add your custom RetroArch.app path between "" like "/Users/svengdk/Downloads/RetroArch.app/Contents/MacOS/RetroArch"
- Restart RetroMultiTools
- Settings path validation
- Core Downloader used wrong directory on macOS & Linux Flatpak
- No PATH-based fallback detection
-
Mame Set Rebuilder: Unhandled InvalidDataException in BuildZipFile
- When a source ZIP archive is corrupt, ZipFile.OpenRead() throws InvalidDataException. This was not caught, leaving a partially-written output ZIP file on disk and propagating as an unhandled exception that would crash the operation. Added a catch block with the same file-cleanup pattern used for IOException and UnauthorizedAccessException.
-
DAT Filter: Fixed a bug in 1G1R (One Game, One ROM) variant selection where games with no language metadata got the best possible score (0) instead of a penalty score, causing incorrect game variant selection.
-
ROM Trimmer: Fixed an edge case where a file containing only padding bytes (all 0x00/0xFF) would produce a zero-byte output file. Now returns the original file size unchanged when all bytes are padding.
-
ROM Renamer: Added missing ROM extensions that were supported by the ROM Inspector and other tools but were skipped by the ROM Renamer
-
ROM Organizer: Added an optional IProgress parameter to OrganizeBySystem() for progress reporting during large collection organization.
-
Split ROM Assembler — On case-sensitive file systems (Linux ext4), searching for .part1 would fail if the file was actually .Part1.
-
Split ROM Assembler — If the output path matched one of the input part files, FileMode.Create would truncate the part file before reading it, causing data corruption. Now validates that the output path doesn't overlap with any input part.
