A modern, high-performance Windows application for managing MAME ROM collections
π₯ Download Latest β’ π Report Bug β’ β Star This Repo
MAME Utility is a powerful Windows desktop application designed to help retro gaming enthusiasts and MAME collectors efficiently manage, organize, and filter their MAME (Multiple Arcade Machine Emulator) collections. Built with modern .NET 10 and WPF, it offers a sleek, responsive interface for processing massive XML databases with ease.
Whether you're curating a custom arcade cabinet setup, organizing ROMs by manufacturer or year, or merging multiple game lists, MAME Utility provides the tools you need with exceptional performance.
| Feature | Description |
|---|---|
| Full Driver List | Generate comprehensive name/description mappings from MAME XML |
| By Manufacturer | Automatically separate ROMs by company (e.g., Capcom.xml, Nintendo.xml, Sega.xml) |
| By Year | Organize games chronologically with 4-digit year validation (1970-2099) |
| By Source File | Group machines by their MAME driver source code file |
| Software Lists | Process and consolidate MAME software list XML directories |
| Feature | Description |
|---|---|
| Parallel Processing | Multi-core CPU utilization for lightning-fast XML parsing |
| Smart Merging | Combine multiple XML lists (Machine & Software formats) with duplicate removal |
| SimpleLauncher Integration | Auto-generates .dat files in MessagePack format for SimpleLauncher compatibility |
| Streaming I/O | Handles multi-gigabyte XML files without memory exhaustion |
| Feature | Description |
|---|---|
| Batch ROM Copying | Copy ZIP files based on filtered XML game lists |
| Image Synchronization | Sync PNG/JPG/JPEG artwork based on XML entries |
| Progress Tracking | Real-time progress bars with percentage and elapsed time |
| Cancellation Support | Safely interrupt long-running operations at any time |
| Feature | Description |
|---|---|
| Modern WPF Interface | Clean, intuitive Windows desktop application |
| Integrated Logging | Built-in log window for debugging and operation history |
| Automatic Updates | Version checker notifies of new releases |
| Bug Reporting | Optional automated crash reporting for stability improvements |
- Operating System: Windows 10 or later (Windows 7/8.1 supported with .NET 10 runtime)
- Runtime: .NET 10.0 Desktop Runtime (x64 or ARM64)
- Input Data: MAME
listxmloutput file (generate with:mame -listxml > mame.xml)
- Go to the Releases page
- Download the latest
MAMEUtility.zipfor your architecture - Extract to your preferred location
- Run
MAMEUtility.exe
- Launch MAME Utility
- Select your desired list type:
- Create MAME Full List - Complete simplified mapping
- Create MAME Manufacturer List - Separate files per manufacturer
- Create MAME Year List - Organized by release year
- Create MAME Source File List - Grouped by driver source
- Create MAME Software List - Process software list XMLs
- Select your MAME
listxmlfile - Choose the output directory
- Click Process and wait for completion
- Click Merge Lists
- Select multiple XML files to merge
- Choose output location
- The utility generates:
- A merged
.xmlfile (deduplicated) - A
.datfile in MessagePack format (for SimpleLauncher)
- A merged
- Click Copy ROMs
- Select your source ROM directory (containing
.zipfiles) - Select destination folder
- Choose the XML list(s) defining which games to copy
- The utility copies only matching ROM files
- Click Copy Images
- Select your source images directory
- Select destination folder
- Choose the XML list(s) for filtering
- Supports:
.png,.jpg,.jpeg
| Component | Technology |
|---|---|
| Framework | .NET 10 (WPF) |
| Language | C# 14 |
| UI Framework | Windows Presentation Foundation (WPF) |
| Serialization | MessagePack for C# |
| Architecture Pattern | Service-based with Service Locator |
MAMEUtility/
βββ Services/ # Business logic services
β βββ MameProcessingService.cs
β βββ LogService.cs
β βββ DialogService.cs
β βββ GitHubVersionService.cs
β βββ BugReportService.cs
βββ Interfaces/ # Service contracts
βββ Models/ # Data models
βββ Converters/ # WPF value converters
βββ CopyRoms.cs # ROM batch operations
βββ CopyImages.cs # Image batch operations
βββ MergeList.cs # XML merging logic
βββ MAMEFull.cs # Full list generation
βββ MAMEManufacturer.cs # Manufacturer filtering
βββ MAMEYear.cs # Year-based filtering
βββ MAMESourcefile.cs # Source file filtering
βββ MAMESoftwareList.cs # Software list processing
This project is licensed under the GNU General Public License v3.0.
See LICENSE.txt for the full license text.
If you find MAME Utility helpful, please consider:
- β Star this repository on GitHub
- π° Donate to support ongoing development
Made with β€οΈ by PureLogicCode


