Skip to content

Releases: purelogiccode/SimpleLauncher

release5.6.1

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 11 Aug 05:59

Update Check Fallback (Secondary Server)

  • Fallback when GitHub is unreachable — If the GitHub API cannot be reached (offline, rate-limited, blocked), the update check now falls back to the secondary server (assets.purelogiccode.com) using its version.txt file and hosted release packages.
  • Full update support on fallback — The fallback path resolves both the release package and the updater package, so the update window and automatic update work exactly as when GitHub is reachable.
  • Updater download fallback — If downloading the release from the primary source fails, the Updater retries from the secondary server automatically (progress bar resets between attempts).

Launch Fixes

  • List-view right-click "Launch Game" — Right-clicking a game in the list view and choosing "Launch Game" now launches with the emulator selected in the UI (falling back to the system's first configured emulator). Previously this path always failed with "SelectedEmulatorName is null or empty".

Language Launch Argument

  • --language startup argument — Launch SimpleLauncher with a specific language, e.g. SimpleLauncher.exe --language es. Supported codes load at startup; unsupported codes fall back to English without error.

Localization Fixes

  • Spanish & Turkish resourcesstrings.es.xaml and strings.tr.xaml are now embedded as pack resources and load correctly (bugs 64899-64904).

Updater UI

  • White log text and progress bar — The Updater window's log text and progress bar foreground are now white for a cleaner look.

Full Changelog: release5.6.0...release5.6.1

release5.6.0

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 09 Aug 19:06

Parameter Resolver API

  • "Suggest" buttons — Added to the Edit System window for every emulator parameter field.
  • AI-powered suggestions — An AI-powered API suggests the best emulator parameters based on the system configuration.
  • Confirmation before applying — Shows a dialog with the suggested parameter and an explanation before applying it.
  • Explanation: prefix handling — If the AI response starts with "Explanation:", that text is treated as the explanation and is no longer inserted into the emulator parameter field.
  • Loading overlay — Added a loading overlay to AI parameter resolution.
  • URL normalization — The AI parameter resolver URL is normalized (trailing slash) and uses a fixed 60-second timeout.

Image Matching Improvements

  • Annotation stripping — New EnableAnnotationStripping option strips region tags, revision numbers, and other annotations from filenames for better cover image matching.

Game File Watcher

  • New GameFileWatcherService — Monitors ROM system folders for external file changes (create, delete, rename) and automatically refreshes the game list when changes are detected.
  • Debouncing (500ms) — Avoids rapid re-scans during batch file operations like archive extraction.
  • Automatic start/stop — Watching starts and stops automatically when switching between systems.

7za Fallback Extraction

  • Automatic fallback to 7za — When SharpCompress fails to extract .7z files, the application now automatically retries using the bundled 7za.exe (or 7za_arm64.exe on ARM64).
  • Bundled binaries — Added 7za binaries to tools/SevenZip/ and tools/BatchConvertIsoToXiso/, plus 7za.exe / 7za_arm64.exe to BatchConvertToRVZ and BatchConvertToCHD for fallback extraction/conversion.

Batch File Path Validation

  • Pre-execution validation — Batch files are now validated before execution to detect referenced paths that do not exist.
  • Warning dialog — Shows a dialog listing the missing paths with the option to continue or cancel.
  • Direct execution — Batch files are now executed with UseShellExecute instead of cmd.exe /c for better compatibility.

OneDrive Error Handling

  • Specific OneDrive guidance — When a game file fails to launch and its path contains "OneDrive", the error message now provides specific instructions about syncing and downloading the file.
  • Localized message — Added the localized oneDriveIssue string across all supported languages.

Invalid Folder Character Validation

  • Path character validation — System folder and image folder paths are now validated for invalid path characters before attempting directory creation.
  • Clear error message — Shows a message listing the invalid characters found.

CHD Support

  • Kega Fusion — Added CHD support for the Kega Fusion emulator.
  • Exit code reporting — CHD mount failures now include the process exit code in error messages for easier debugging.
  • Dokan check — Added a Dokan installation check before CHD mount operations.
  • ARM64 support — CHD images are now mounted using the architecture-specific CHDMounter binary (CHDMounter.exe on x64, CHDMounter_arm64.exe on ARM64), enabling CHD mounting on Windows ARM64. The tool now ships with a README.

PCSX2 Improvements

  • Permission error detection — PCSX2 configuration injection now detects file permission errors and shows a user-friendly notification instead of crashing.
  • Portable mode — PCSX2 configuration injection now resolves the config file correctly when PCSX2 runs in portable mode.

History Database Format Migration

  • MessagePack format — Migrated history.xml to history.dat (MessagePack binary format) for faster loading and smaller file size.
  • Backward compatibility — Falls back to history.xml if history.dat is not found.

Global Search Enhancements

  • Results count — Shows the number of matching results in the global search window.
  • AND/OR operators — Supports boolean operators for more flexible search queries.
  • Improved loading state — Better visual feedback during search operations.

Debug Logger Improvements

  • Buffered logging — Debug log messages are now buffered for better performance.

Download Reliability

  • Automatic retry — Downloads now automatically retry with exponential backoff on failure.
  • Read-only file handling — Extraction now handles read-only files gracefully.

Startup Robustness

  • Fallback logger — If Serilog initialization fails, the app now falls back to debug output instead of crashing at startup.
  • Initialization order — The service provider is built only after the temp-folder check, and startup cleanup (trash + temp files) is more resilient.
  • Timeout handling — Added timeouts for the silent update check and usage statistics calls so they can no longer hang indefinitely.

F8 Hotkey Warning

  • Hotkey in use detection — When the F8 global hotkey cannot be registered because another program is already using it, Simple Launcher now shows a clear warning dialog and disables the screenshot functionality instead of failing silently. Localized in all supported languages.

RetroAchievements

  • Improved system matcher — Updated the RetroAchievements system matcher for better game matching.

Credential Protection

  • Encrypted RetroAchievements credentials — RA credentials are now encrypted using Windows Credential Manager.
  • Nested settings structure — Emulator configuration now uses a nested settings structure for better organization.

UI/UX Improvements

  • Cancel buttons — Added cancel buttons to the SetGamepadDeadZone, Debug, SetLinks, and EditSystem dialogs.
  • Tooltips — Added tooltips for data grids, preview images, and viewer windows.
  • Dead zone revert confirmation — Added a confirmation message box when reverting dead zone settings.
  • Game list refresh — The game list now automatically refreshes when deleting a file that no longer exists on disk.
  • Emergency overlay release — Added an emergency overlay release button to GlobalStatsWindow.

Debug Window Improvements

  • Restored initialization — The Debug Window opens correctly again: its constructor (lost during the Serilog/DI refactor) was restored, and the window now applies the current app theme on open.
  • Styling & closing behavior — Improved Debug Window styling, log text color, and closing/exception behavior.
  • -debug command-line flag — Launching SimpleLauncher with the -debug argument now opens the Debug Window alongside the main window.
  • parameters.md path fix — The parameters guide is now resolved relative to the application folder instead of the current working directory. Previously, launching the app from another working directory (shortcuts, scripts, IDE) made parameters.md appear "missing" and triggered a modal reinstall dialog that froze the app and the Debug Window.

Path Handling

  • Quote trimming — Surrounding quotes are now automatically trimmed from paths.

Structured Logging

  • Serilog — All logging now flows through Serilog (ILogger), and the custom ILogErrors abstraction was removed. The Debug Window receives log entries through a dedicated Serilog sink, a rolling daily file sink (7 days retained) is written to the local app data folder, and bug report sinks were added to all projects (including the tools and Updater).

Game List & UI

  • Async system manager loading — System managers load asynchronously, preventing UI blocking at startup.
  • Embedded images fix — Corrected pack URI paths for embedded images and icons.
  • Minimize-to-tray handling — Improved minimize-to-tray behavior via proper window state change handling.

Dependency Injection Refactoring

  • Massive DI migration — Replaced static service dependencies with dependency injection throughout the entire application.
  • Constructor injection — All services, ViewModels, and windows now use constructor injection.
  • MessageBoxLibrary.cs removed — Replaced with IMessageBoxLibraryService.
  • DebugLogger replaced — Static DebugLogger was replaced with the IDebugLogger interface.
  • ContextMenuFunctions replaced — Static ContextMenuFunctions was replaced with the IContextMenuFunctions interface.

MVVM Refactoring

  • Refactored all configuration windows to the MVVM pattern.
  • Refactored the RetroAchievements window to MVVM.
  • Added ViewModels for multiple windows, including SupportWindow.
  • Introduced the IWindowContext abstraction to decouple the game launcher from MainWindow.

Removed Tool

  • GameCoverScraper removed — The Game Cover Scraper tool has been removed from the Tools menu, along with all its bundled binaries and resources. Use Find Rom Cover or Retro Game Cover Downloader instead.

Other Improvements

  • Emulator documentation — Updated parameters.md (e.g., new CPCEC download link).
  • Code quality — The codebase now compiles with nullable reference types enabled.

Dependency Updates

  • SharpCompress 0.48.1 → 0.50.4
  • Tomlyn 2.4.0 → 2.6.0
  • YamlDotNet updated to latest version
  • MessagePack 3.1.6 → 3.1.8
  • Microsoft.Data.Sqlite 10.0.8 → 10.0.10
  • Microsoft.Extensions.* 10.0.8 → 10.0.10
  • Microsoft.Extensions.Http.Resilience 10.6.0 → 10.8.0
  • Microsoft.CodeAnalysis.NetAnalyzers 10.0.300 → 10.0.302
  • Microsoft.NET.Test.Sdk 18.5.1 → 18.6.0
  • SourceGear.sqlite3 updated to 3.53.4
  • Added Moq 4.20.72 (new, for unit testing)
  • Added Serilog 4.4.0 with Serilog.Sinks.Async 2.1.0, Serilog.Sinks.Debug 3.0.0, and Serilog.Sinks.File 7.0.0 (new)
  • Added Meziantou.Analyzer 3.0.139 (new)

Full Changelog: https://github.com/drpetersonfernandes/SimpleLa...

Read more

release5.5.0

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 26 May 03:44

New System Support

  • Commander Genius — Added support for the Commander Keen engine recreation, including an intelligent launch strategy that:
    • Automatically parses the cgenius.cfg config to resolve the data/games directory.
    • Handles ${HOME} and ${BIN} variable expansion in config paths.
    • Extracts ZIP/7z/RAR archives and automatically locates Keen game data files (.CK1.CK6).
    • Flattens nested folder structures and cleans up temp files after launch.
    • Includes dedicated system image and setup documentation.

Improved DOSBox Support

  • Full DOSBox launch strategy with intelligent game file detection — automatically finds .conf, .bat, .exe, and .com files inside archives or folders.
  • ISO and CHD support for DOSBox — Mounts ISO files to scan for executables, then generates a DOSBox config with native imgmount commands. CHD files are mounted via CHDMounter and launched via DOSBox cdrom mount.
  • DOSBox file selection dialog — When multiple game files are found, presents a clean selection window with file names and relative paths.
  • "Group Files by Folder" extended to DOSBox — Now works with DOSBox-based emulators (DOSBox, DOSBox-X, DOSBox Staging, dosbox-pure).
  • -conf %ROM% auto-injection — Automatically inserts the -conf flag when launching via DOSBox if not already present.

UI/UX Improvements

  • New minimize-to-tray function — Allow Simple Launcher to remain open in the tray.
  • System context menu — Right-click on system buttons now shows Edit and Delete actions, passing the pre-selected system name.
  • Markdown rendering enhancements — Improved Markdown styling with proper headings, code blocks, tables, lists, blockquotes, and horizontal rules in release notes and help content.

New Parameter Placeholder

  • %NAME% — Resolves to the ROM filename without path or extension. Useful for emulators that expect just the game name (e.g., Commander Genius dir="games/%NAME%").

Improved Error Handling

  • Batch file error reporting — Batch file failures now show a detailed error dialog with the option to open the error log. Batch file contents are also logged on failure for easier debugging.
  • Batch file working directory validation — Validates that the working directory exists before executing batch files.
  • Unicode normalization for file paths — Files created on macOS (NFD) can now be found on Windows (NFC) by trying multiple Unicode normalization forms, preventing "file not found" errors.
  • Access denied handling for Updater — The updater now handles Win32 access denied errors gracefully with a user-friendly message and download page redirect.
  • COMException rendering detection — Detects WPF render thread failures (UCEERR_RENDERTHREADFAILURE) caused by GPU driver issues or per-pixel transparency.

HTTP Resilience

  • Replaced custom retry logic with Polly resilience handler — HTTP downloads now use Microsoft.Extensions.Http.Resilience with exponential backoff and jitter (5 retry attempts, 2-second base delay).

Single Instance Improvements

  • Improved single-instance behavior — Launching a second instance now restores the existing window instead of showing an error message. Uses named events for cross-process signaling with a fallback to window enumeration.

Sound Service

  • Replaced Windows MediaPlayer with NAudio 2.3.0 — Sound playback no longer requires UI thread dispatcher invocations, improving reliability and eliminating thread-affinity issues.
  • Registered IPlaySoundEffects interface — Added proper DI registration for sound effects service.

MVVM Migration to CommunityToolkit.Mvvm

  • Migrated all ViewModels from custom ViewModelBase and RelayCommand infrastructure to CommunityToolkit.Mvvm 8.4.2.
  • Created dedicated ViewModels for AboutWindow (AboutViewModel), ImageViewer (ImageViewerViewModel), SetFuzzyMatching (SetFuzzyMatchingViewModel), DebugWindow, and GlobalStatsWindow.
  • Added unit tests for DebugViewModel, GameVerificationViewModel, and GlobalStatsViewModel.

Service Extraction from MainWindow

  • LoadingOverlayService — Extracted loading overlay management with operation counting (SetLoadingState, EmergencyRelease).
  • StartupInitializationService — Consolidated startup logic (first-run wizard, MS Store scanning, game loading).
  • GameListUIService — Extracted UI state management (grid/list mode, game button image cleanup, pagination).
  • ThemeMenuService — Extracted theme switching logic (base themes + accent colors).
  • LanguageMenuService — Extracted language switching with checkmark management.

Code Refactoring

  • Injected ILogErrors via constructor/parameter — Replaced ServiceProvider resolution with proper constructor and parameter injection across favorites page, global search, context menu services, game button factory, and mount services.
  • Standardized emulator detection checks — Unified null-conditional access pattern for emulator detection checks (Azahar, Citra, DuckStation, Geolith, MAME, Ootake, Raine, RetroArch, Sameboy, Xemu).

Dokan Driver Validation

  • New DokanValidation class — Uses P/Invoke directly against dokan2.dll to check if Dokan is installed before any mount operation.
  • Provides clear error messages when Dokan is missing for ZIP/CHD mounts.
  • Dokan localization — Added localized strings for Dokan driver not found dialog with option to open download page.

Dependency Updates

  • CommunityToolkit.Mvvm 8.4.2 (new)
  • NAudio 2.3.0 (new, replaces Windows MediaPlayer)
  • Microsoft.Extensions.Http.Resilience 10.6.0 (new, Polly resilience handler)
  • MessagePack 3.1.4 → 3.1.6
  • YamlDotNet 17.1.0 → 18.0.0
  • SharpCompress0.48.1
  • Tomlyn 2.3.2 → 2.4.0
  • Microsoft.Data.Sqlite 10.0.7 → 10.0.8
  • Microsoft.Extensions.* 10.0.7 → 10.0.8
  • Microsoft.CodeAnalysis.NetAnalyzers 10.0.203 → 10.0.300

Full Changelog: release5.4.0...release5.5.0

release5.4.0

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 11 May 01:02

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 DokanService into 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, and Required files are missing patterns.
  • 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 RomHistoryLoader service from RomHistoryWindow for 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, and RomHistoryLoader.
  • Added ServiceProviderMock helper for mocking App.ServiceProvider in 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

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 25 Apr 04:37
  • Improved support for .bat files.
  • 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, PathHelper resolution methods, and .bat file validation.

Full Changelog: release5.3.2...release5.3.3

release5.3.2

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 24 Apr 06:02

🔄 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 LocalAppData fallback 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 BatchConvertToCHD and RomValidator tool binaries
  • Added timeout messaging for image downloads and USB path guidance

Full Changelog: release5.3.1...release5.3.2

release5.3.1

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 18 Apr 05:15

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

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 16 Apr 05:16

🚀 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 CHDMounter and SimpleZipDrive processes 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.md with 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, and playhistory.dat with 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:

===================================

Full Changelog: release5.2.0...release5.3.0

release5.2.0

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 28 Mar 06:09

🚀 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 CHDMounter for Xemu, Xenia, RPCS3, and Cxbx-Reloaded. Instead of converting large .chd files 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.xml and system.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 .pbp files to .cue/.bin on 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 -L core 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\Xenia locations.

🔍 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 SharpCompress to v0.47.3 and Tomlyn to v1.0.0.
  • Library Migration: Replaced SharpZipLib and SevenZipSharp with SharpCompress to 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

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 15 Feb 00:10

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.