Releases: drpetersonfernandes/SimpleLauncher
release5.4.0
New Parameter Placeholder
- Added
%ROMSYSTEMFOLDER%placeholder that resolves to the specific system folder containing the ROM being launched.
RetroAchievements Integration
- Improve the hashing of GameCube and Wii games with better support for RVZ, WBFS, GCZ, CISO, and WIA file formats.
- Significantly expanded system name aliases for better matching (Nintendo N64, SEGA MEGA-CD, ARCADE - MAME, Nintendo - Game Boy Advance, and many more).
Dokan Installation Check
- Integrated
DokanServiceinto the Updater that detects missing Dokan library and offers to download and install it after updates (x64/ARM64 support). - Enhanced CHD/ZIP mount error messages with specific Dokan exit code reasons (STATUS_DLL_NOT_FOUND, STATUS_ORDINAL_NOT_FOUND).
Enhanced Error Handling & Robustness
- New RetroArch special characters in path detection (shows a clear message about mkdir permission denied).
- MAME corrupted INI auto-restore from bundled sample when unknown option warnings are detected.
- MAME error detection expanded to catch
mame64,WRONG LENGTH, andRequired files are missingpatterns. - Protocol handler errors now show a localized message box instead of throwing an exception.
- Guard against directory disappearance races during file enumeration.
Code Refactoring
- Extracted
RomHistoryLoaderservice fromRomHistoryWindowfor cleaner separation of concerns.
System Image Handling
- Fix a bug while loading System image preview in the Edit System Window.
Unit Tests
- New test suites for
MameManager(corrupted/XML/empty dat files),RetroAchievementsManager, andRomHistoryLoader. - Added
ServiceProviderMockhelper for mockingApp.ServiceProviderin unit tests. - Added test for XAML string key regex extraction.
- Added auto-sorting tests for detecting and fixing alphabetical ordering issues in resource files.
Dependency Updates
- SharpCompress 0.47.4 → 0.48.0
- YamlDotNet 17.0.1 → 17.1.0
- Microsoft.NET.Test.Sdk 18.4.0 → 18.5.1
Full Changelog: release5.3.3...release5.4.0
release5.3.3
- Improved support for
.batfiles. - Fixed handling of placeholders during path validation.
- Fixed an edge case in the path containment check where an exact match between the resolved path and base folder was incorrectly rejected.
- Added required resource files for PSX packaging, including icons, images, a game information database, and encryption keys.
- Added comprehensive unit tests for ZIP path traversal validation, temporary directory cleanup,
PathHelperresolution methods, and.batfile validation.
Full Changelog: release5.3.2...release5.3.3
release5.3.2
🔄 Updater Overhaul
- Completely refactored the auto-updater with a clean service-oriented architecture (
UpdateService,GitHubService,DownloadService,ZipService) - Added real-time download progress bar and status text during updates
- Added global exception handling and graceful fallback to manual download
🌍 Localization & Translation
- Added more localized tooltips across the main interface
🎨 UI/UX Improvements
- System image selection with live preview and validation in the system editor
🛡️ Reliability & Robustness
- Added
LocalAppDatafallback for data files - Enhanced emulator path validation and UAC cancel handling
- Improved path validation with long path support and mismatch detection
- Explicit TLS 1.2/1.3 support and enhanced HTTP error logging
🧪 Testing
- Added comprehensive unit test suite for core services
📚 Documentation & Tools
- Standardized emulator paths and added official download links in
parameters.md - Updated
BatchConvertToCHDandRomValidatortool binaries - Added timeout messaging for image downloads and USB path guidance
Full Changelog: release5.3.1...release5.3.2
release5.3.1
This release focuses on bug fixes, performance improvements, memory leak prevention, and enhanced async/await handling throughout the application.
🔧 Bug Fixes
Network & HTTP Improvements
- Fixed HTTP Request Timeouts - Added 15-second timeouts to all HTTP requests (bug reports, stats, support requests) to prevent indefinite hangs when network issues occur
- Added Operation Cancellation Handling - HTTP requests now handle timeout exceptions gracefully without crashing
Microsoft Store Game Scanning
- Fixed JSON Parsing Issues - Added sanitization for JSON control characters that could cause crashes when parsing game data with special characters
- Fixed Directory Creation - Ensured destination directories exist before saving extracted icons
Thread Safety & UI Stability
- Fixed Thread Safety Issues - Wrapped UI updates in dispatcher invocations in MainWindow to prevent cross-thread access exceptions
- Fixed String Comparison Issues - Implemented case-insensitive string comparisons throughout the application for system names, file names, and emulator matching
Memory Management
- Fixed Memory Leaks - Added proper image source clearing to prevent BitmapImage reference leaks when clearing game grids
- Fixed Async Cleanup - Replaced synchronous cleanup methods with async versions to prevent blocking
- Fixed Event Handler Leaks - Properly unsubscribe event handlers when closing windows
✨ Improvements
RetroArch Integration
- Enhanced RetroArch Validation - Changed parameter validation from "must start with -L" to "must contain -L" for more flexible core configuration
- Localization Updates - Updated RetroArch parameter error messages in all 16 supported languages
Blastem Emulator
- Improved Blastem Error Handling - Added comprehensive error handling for Blastem configuration injection with specific exception types (FileNotFound, UnauthorizedAccess, IOException)
Batch File Execution
- Better Batch File Error Reporting - Batch file failures now create proper exceptions for better debugging
Async/Await Refactoring
- Removed ConfigureAwait(false) - Removed
.ConfigureAwait(false)from await calls across the application (LogErrorsService, EasyModeManager, DownloadManager, UpdateChecker, SystemManager, ContextMenuFunctions, App) - Proper Dispatcher Invokes - Added proper dispatcher invocations for UI updates in async methods
Security
- Path Traversal Prevention - Added validation to ensure resolved paths stay within intended base folders
📦 Tools & Dependencies
- Updated BatchConvertToRVZ and RomValidator binaries
📚 Documentation
- Fixed Tsugaru emulator platform documentation (PC-9800 series → FM Towns)
🏗️ Technical Improvements
Code Quality
- Enhanced exception handling throughout async operations
- Improved null checks and defensive programming
- Better logging for debugging purposes
- Added proper disposal of resources (mutex, cancellation tokens)
Performance
- Thread-safe loading state management with locks
- Atomic operations for cancellation token source replacement
- Optimized file deletion with async retry logic
Full Changelog: release5.3.0...release5.3.1
release5.3.0
🚀 Universal CHD Support & Enhanced RetroAchievements!
💿 CHD Support for Everyone!
We've massively expanded CHD support to emulators that lack native CHD format support. Simple Launcher now grants these emulators full CHD capability by leveraging our built-in CHDMounter tool. When you launch a CHD, it automatically mounts as a virtual drive in the background, allowing these emulators to run your compressed library seamlessly!
Newly Supported Emulators:
| Emulator | CHD Support |
|---|---|
| RPCS3 | Working since version 5.2 |
| Xemu | Working since version 5.2 |
| Xenia | Working since version 5.2 |
| Cxbx-Reloaded | Working since version 5.2 |
| Mednafen | NEW - Working |
| PCSX-Redux | NEW - Working |
| 4DO | NEW - Working |
| Gens | NEW - Working |
| Blastem | NEW - Working |
| Yabause | NEW - Working |
| Mesen | NEW - Working |
| FinalBurn Neo | NEW - Working |
| FinalBurn Alpha | NEW - Working |
| Raine | NEW - Working |
| CD-i Emulator ¹ | NEW - Working |
| Tsugaru | NEW - Working |
¹ This emulator has official CHD support that doesn't work properly - Simple Launcher fixes that for you!
🏆 RetroAchievements: Welcome to the Wii & More!
Achievement hunters, rejoice! We've overhauled our RetroAchievements integration:
- Nintendo Wii Support: Full support for the Wii, which recently received official RetroAchievements support
- Expanded System Aliases: Better matching for NEC PC-FX, SNES MSU1, and many more systems
🎨 Your Launcher, Your Style
New customization options put you in control:
- New Themes: Beautiful Midnight (Deep Blue) theme and High Contrast mode for better accessibility
- Adaptive Mode: Automatically syncs with your Windows Light/Dark mode settings
- Filename Preferences: "Clean Up" filenames in Grid View (removing tags like
[!]or(USA)) or hide filenames entirely for a pure, box-art-focused look - Font Size Control: Customize filename and machine name font sizes in game buttons
- Separate Thumbnail Sizes: Independent zoom controls for system selection and game view
🛡️ Smarter & Safer
- Elevation Detection: Detects games requiring Administrator privileges and notifies you immediately
- Safety Mechanisms: Automatically kills lingering
CHDMounterandSimpleZipDriveprocesses when closing games or the launcher - no more "ghost" virtual drives! - Startup Validation: Detects if running from a temporary folder (like inside a ZIP) and prompts you to extract it first
📚 Documentation & Help Improvements
- Enhanced Parameters Guide: Enhanced
parameters.mdwith official emulator download links and comprehensive parameter documentation - Markdown-Based Help: Migrated help system from XML to Markdown format for better readability
🔧 Technical Improvements
- API-Based Scanning: Microsoft Store game detection now uses a dynamic API for lighter, more accurate results
- Secure Connections: All metadata and image downloads now use TLS 1.2/1.3
- Resilient Saving: Improved file lock handling during saves for
settings.xml,system.xml,favorites.dat, andplayhistory.datwith retry logic and exponential backoff - Enhanced Error Handling: Better exception handling throughout the app with specific error types and improved logging
- Play Time Tracking: Refactored play time storage from strings to seconds for better accuracy
- Better Accessibility: Added automation properties to images and access keys to menu items
===================================
Prerequisites:
- Install Dokan from GitHub for on-the-fly file mounting.
- Ensure you have the .NET 10 Runtime installed.
===================================
Full Changelog: release5.2.0...release5.3.0
release5.2.0
🚀 Breaking the "Impossible": CHD Support for Xbox, Xbox 360, and PS3 is Here!
Today marks a major milestone for the retro gaming community. Support for CHD (Compressed Hunks of Data) files on original Xbox, Xbox 360, and PlayStation 3 has been a long-awaited and heavily requested feature—Xemu users in particular have been vocal about it—but native support never materialized.
Until now.
With the latest update to Simple Launcher, you can now launch your games directly from CHD files for Xemu, Xenia, RPCS3, and Cxbx-Reloaded.
📋 Prerequisite: Dokan Library Required
To mount CHD files as virtual drives, you must install the Dokan library on your system. Dokan is a user-mode filesystem driver for Windows that enables the virtual drive mounting functionality.
Download and install Dokan from: https://github.com/dokan-dev/dokany/releases
Simple Launcher will not mount CHD files without Dokan installed.
🛠️ How It Works
- The virtual drive system is built around Dokan. I wrote the tool that provides a wrapper layer around Dokan that handles mounting the virtual drive and parsing the file tree inside the CHD image, enabling seamless CHD integration with the supported emulators.
- Perhaps the most significant achievement is that I did all of this without touching a single line of the emulators' source code. Simple Launcher acts as the "brain," handling the heavy lifting externally so you can use standard, official emulator builds.
📦 What This Means for You
- Massive Space Savings: Stop wasting hundreds of gigabytes on uncompressed ISOs. CHD offers incredible compression without losing data.
- Instant Play: No more waiting for slow "CHD to ISO" conversions in temporary folders. The mounting is nearly instantaneous.
🎮 Supported Emulators
- Xemu (Original Xbox) - The long-awaited community request!
- Xenia (Xbox 360)
- RPCS3 (PlayStation 3)
- Cxbx-Reloaded (Original Xbox)
This refactor wasn't just a code update; I am thrilled to put this power into your hands.
Download the latest version now and reclaim your hard drive space!
🚀 Major Features & Refactoring
- CHD Virtual Mounting: Refactored the launcher to use
CHDMounterfor Xemu, Xenia, RPCS3, and Cxbx-Reloaded. Instead of converting large.chdfiles to.iso(which was slow and consumed disk space), the app now mounts them as virtual drives and automatically locates the necessary boot files (e.g.,EBOOT.BIN,default.xex, ,default.xbe,image.iso). - Atomic File Saving: Implemented atomic write operations for
settings.xmlandsystem.xml. The app now saves to a temporary file before replacing the original, significantly reducing the risk of configuration corruption during crashes or power loss. - Enhanced ZIP Security: Added "Zip Slip" (path traversal) validation to all extraction and mounting services to prevent malicious archives from writing files outside of intended directories.
- PBP Support for Mednafen: Added a new strategy to convert
.pbpfiles to.cue/.binon the fly specifically for the Mednafen emulator.
🎨 UI & UX Enhancements
- Global Tooltip System: Added descriptive tooltips to almost every UI element across the application, including the Main Window, Edit System, and Settings windows.
- Centralized Styling: Refactored XAML resources to centralize styles and brushes in
App.xaml, ensuring a more consistent look and feel across all windows. - Improved Loading States: Replaced direct flag manipulation with atomic lifecycle methods for UI updates, preventing race conditions during system scans and game loading.
🕹️ Emulator Compatibility & Logic
- RetroAchievements Filtering: The RetroAchievements icon and context menu items are now intelligently restricted to supported systems. Systems like PS3, Xbox 360, and Switch are now filtered out of the hashing logic.
- RetroArch Validation: Added early validation for RetroArch parameters. The app now warns users if the
-Lcore parameter is missing before attempting to launch. - MAME Error Handling: Improved detection for MAME-specific errors (ROM set mismatches, unknown systems, or missing images) with user-friendly dialogs and links to compatibility guides.
- Xenia Configuration: Extended the Xenia config handler to support both portable and standard
Documents\Xenialocations.
🔍 Game Scanning & Metadata
- Microsoft Store Improvements:
- Significantly expanded the app exclusion filter to hide system utilities and non-game apps.
- Added EFS encryption fallback for copying game logos.
- Improved icon extraction logic to prioritize high-resolution assets.
- Recursive Search Control: Added a "Disable Recursive Search" option to system configurations, allowing users to limit scans to top-level directories.
- Robust Image Downloading: Added retry logic and a 15-second timeout to the game image API service to handle intermittent network issues.
🛠️ Maintenance & Build
- Dependency Updates: Updated
SharpCompressto v0.47.3 andTomlynto v1.0.0. - Library Migration: Replaced
SharpZipLibandSevenZipSharpwithSharpCompressto simplify the codebase and remove the dependency on external 7z DLLs. - Long Path Support: Improved path handling across the service layer using the
\\?\prefix to support file paths exceeding 260 characters.
release5.1.0
Created logic to convert CHD files to ISO on the fly for the "Xemu" and "Xenia" emulators, since both emulators do not natively support CHD files.
- This allows users to store their Xbox and Xbox 360 ISOs in CHD format and convert them back to ISO on the fly when launching games.
- 'Simple Launcher' includes a bundled tool called "BatchConvertToXiso" that can convert original REDUMP Xbox ISOs to emulator-ready optimized XISO files. This tool removes unneeded files and optimizes the XISO file for emulators.
- 'Simple Launcher' also includes a bundled tool called "BatchConvertToCHD" that can convert ISO files to CHD format.
- Using both tools, you can significantly reduce the size of your Xbox and Xbox 360 game library. In my tests, I achieved a size reduction of approximately 30% over the optimized XISO files.
- 'Simple Launcher' will convert files back to ISO format on the fly when you launch games.
Created a launch handler for the Ootake emulator, a PC Engine emulator, and for SameBoy, a Game Boy emulator.
- It will force the extraction of compressed files, since both emulators do not natively support compressed files. This will prevent launch failures.
Created logic to convert CHD files to CUE/BIN on the fly for the Mednafen emulator and the 4DO emulator.
- Both emulators do not natively support CHD files. This will prevent launch failures.
Fixed MAME emulator handler to properly inject ROM paths into the emulator configuration file.
- From now on, you no longer need to provide the '-rompath' parameter to run MAME, as the logic will automatically inject the ROM paths from the 'System Folder' into the MAME configuration file. This will prevent launch failures.
Improved logic for generating aliases for Microsoft Windows games, which will enhance game detection.
release5.0.0
Refactored GameLauncher Architecture
- Replaced the monolithic conditional structure with a flexible, strategy-based pattern that dramatically improves extensibility for new emulators and platforms.
- Created emulator-specific configuration handlers (e.g.,
AresConfigHandler,XeniaConfigHandler,RaineConfigHandler) that manage pre-launch configuration dialogs and dynamically modify emulator settings files. - Implemented launch strategy pattern (e.g.,
ChdToCueStrategy,XisoMountStrategy,ZipMountStrategy,DefaultLaunchStrategy) to handle diverse launch scenarios—including ISO mounting, archive extraction, format conversion, and direct execution—with clean, maintainable code. - Integrated format conversion services for CHD-to-CUE/BIN, CHD-to-ISO, and RVZ-to-ISO transformations, expanding compatibility across emulators. For example, it can convert a CHD file to CUE/BIN on the fly if the emulator does not support CHD.
Configuration Injection Service
- Built a centralized service that programmatically injects settings into emulator configuration files.
- Supports 20+ emulators: Ares, Azahar, Blastem, Cemu, Daphne, Dolphin, DuckStation, Flycast, MAME, Mednafen, Mesen, PCSX2, Raine, Redream, RetroArch, RPCS3, Sega Model 2, Stella, Supermodel, Xenia, and Yumir.
- Xenia integration mirrors Xenia Manager's internal configuration injection functionality.
Enhanced RetroAchievements Integration
- Automatically injects RetroAchievements credentials into PCSX2, DuckStation, PPSSPP, Dolphin, Flycast, BizHawk, and RetroArch.
- Added RetroAchievements filter in
MainWindowto quickly identify and display probable supported titles. - Refined game hashing algorithms across multiple systems for accurate achievement tracking.
UI Enhancements
- Unified UI busy-state handling throughout the application to provide consistent blocking behavior and progress feedback across all major windows (MainWindow, Favorites, Search, etc.).
Code Quality Improvements
- Enhanced error handling for XML corruption.
- Fixed potential deadlocks in play history updates.
- Centralized
system.xmlload, edit, and delete operations into theSystemManagerclass.
release4.9.1
- Package Updates: Several Microsoft-related NuGet packages (Data.Sqlite, Extensions, CodeAnalysis) were updated to their latest patch versions (e.g., from
10.0.1to10.0.2). - Long Path Support: Enhanced file and directory existence checks in
GameLauncher.csandPathHelper.csby explicitly handling the long-path prefix (\\?\). This ensures compatibility across different drive types (local, network, removable) and paths exceeding 260 characters. - Shortcut Validation:
- Refined
.URLfile launching to only validate protocol handlers (likesteam://) if the target is a true URI. This prevents drive letters (e.g.,C:\) from being incorrectly identified as protocols. - Improved error logging for shortcuts by preventing the app from attempting to read binary content from
.LNKfiles during an exception.
- Refined
- Thread Safety: Added lock mechanisms in
DownloadManager.csaround theCancellationTokenSource. This ensures that starting, canceling, and disposing of downloads is thread-safe. - Enhanced Logging
- Microsoft Store Filtering: Significantly expanded the exclusion list in
ScanMicrosoftStoreGames.cs. - Tool Updates: Updated several external tools bundled with the launcher, including
BatchConvertToCHD,chdman,GameCoverScraper(arm64/x64),SimpleZipDrive, andBatchConvertIsoToXiso.
release4.9.0
🎮 RetroAchievements Enhancements
- Emulator Auto-Configuration: Streamlined setup process with automatic configuration for retroarch
- UI Localization: Comprehensive localization support across all RetroAchievements interfaces
- Messaging: Enhanced error and success feedback for better user experience
🏪 Microsoft Store Game Scanning
- User Verification Window: New interface for confirming detected games
🛡️ Error Handling & Robustness
- Win32Exception Handling: Improved support for application control policies
- PowerShell Restrictions: Better handling of execution policy limitations
- File Lock Management: User-friendly prompts for locked file scenarios
- Download Resilience: Enhanced retry mechanisms for download and extraction operations
🌍 Localization & UI Improvements
- Full Localization: Extended support across multiple windows:
- GlobalStatsWindow
- RetroAchievementsForAGameWindow
- FavoritesWindow
- FilterMenu
- Dynamic Resources: Refactored UI text to use dynamic resource binding
- Consistent Styling: Updated button styles in EasyModeWindow
⚡ Performance & Thread Safety
- Cancellation Tokens: Integrated across asynchronous operations for better responsiveness
- Thread Safety: Added explicit locks to critical sections (SettingsManager, search results)