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.
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
MainWindow to 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.xml load, edit, and delete operations into the SystemManager class.
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)
Major Overhaul: Microsoft Windows Game Scanning & Enhanced Error Handling
Introduces a major overhaul of Microsoft Windows Game scanning, significantly enhancing error handling, and refining the user interface.
Key Changes
1. Game Scanning Refactoring & Expansion
The monolithic GameScannerService was broken down into modular, platform-specific classes:
ScanSteamGames
ScanEpicGames
ScanGogGames
ScanMicrosoftStoreGames
ScanAmazonGames
ScanBattleNetGames
ScanHumbleGames
ScanItchioGames
ScanRockstarGames
ScanUplayGames
This adds support for new platforms and improves existing scanning logic with:
- Better filtering
- DLC detection
- Executable identification
- Icon extraction heuristics
2. API-based Artwork Download
A new API integration (GameImageClient) was added to download game artwork for Microsoft Windows Games, with robust fallback mechanisms to local icon extraction if the API fails.
3. Enhanced Error Handling & Robustness
- Long path support: Implemented
? prefix for reliable file and directory operations across services
- Download and extraction error handling: Including retry logic, disk space checks, user cancellation management, and a new
ShowExtractionFailedMessageBoxAsync for manual intervention
- Game launching error handling: Refined in
GameLauncher, adding .URL validation, protocol checks, and a new ShowCustomMessageBox for detailed notifications
- UIPI exceptions: Gracefully handled in
GamePadController with refined error logging
4. UI/UX Improvements
- Introduced a new global
RetroAchievementsWindow for user profiles and unlocks
- Automated first-run game scanning for Microsoft Windows games
- Updated menu structures, replacing dynamic headers with static strings for consistency
- Added a new SupportOptionWindow for AI-based troubleshooting and developer contact
5. Binary & Dependency Updates
Updated various external tools:
- RetroGameCoverDownloader
- GameCoverScraper
- BatchConvertToCHD
6. Code Cleanup & Localization
- Cleaned up unused code
- Updated localization strings across all supported languages