Skip to content

Releases: Rodrigo-Matsuura/MoonWiiVCInjector

Release v1.1.0

Choose a tag to compare

@Rodrigo-Matsuura Rodrigo-Matsuura released this 02 Sep 19:30

Full Changelog: v1.0.0...1.1.0

🚀 Moon WiiVC Injector v1.1.0

🌟 Highlights

  • True Standalone Single-File Executable: Both Windows and Linux builds are now distributed as a single standalone executable (~51 MB). All native C++ libraries (SkiaSharp, HarfBuzz, Angle) and databases (GameTDB) are packed directly inside the binary. No external DLLs or Resources/ folder required.
  • Native In-Process NKit Engine: The NKit conversion engine was modernized and integrated directly into the solution (NKit.csproj). Disc images in .nkit.iso and .nkit.gcz formats are now processed in-memory with real-time UI progress, completely eliminating ConvertToISO.exe and Wine overhead on Linux.
  • External Tools Replaced by Pure C#:
    • C2wPatcher.cs: Native AES-128-CBC and hardware-accelerated SHA-1 replacing c2w_patcher (no keys written to disk).
    • DolPatcher.cs: Native in-memory byte patching replacing GetExtTypePatcher.exe and wii-vmc.exe.
    • BtsndConverter.cs: Native PCM 16-bit 48kHz audio resampler and BTSND container generator replacing wav2btsnd.exe and SoX.
    • BaseIsoTemplate.cs: Embedded GameCube template disc structures and Nintendont forwarders directly as C# resources.
  • Modernized Asset Downloader (cucholix/wiivc-bis): Switched to the active wiivc-bis repository with smart cross-regional fallback matching (PAL/US/JP) for icons, TV banners, DRC/GamePad banners, logos, and boot sounds.
  • Linear & Real-Time Progress Bar: Re-calibrated 0% - 100% progress tracking with live MB and percentage indicators during heavy NFS encryption (Nfs2Iso2Nfs).
  • Pre-Flight Environment Checks (ValidatePrerequisites): Added early detection for Java (required by JNUSTool/NUSPacker) and WIT/Wine before conversion begins, with platform-specific install hints.
  • Centralized Versioning: Added Directory.Build.props as the single source of truth for solution versions, with the window title dynamically reflecting the compiled assembly version.
  • Dependency Updates & C# 13: Updated Avalonia UI to 12.1.2, CommunityToolkit.Mvvm to 8.4.2, purged hundreds of lines of legacy dead code, and achieved a clean build with 0 warnings (-warnaserror).

Release v1.0.0

Choose a tag to compare

@Rodrigo-Matsuura Rodrigo-Matsuura released this 01 Sep 19:40
dce9ac3

What's Changed

New Contributors

Full Changelog: v4.0.0...1.0.0

🚀 Moon WiiVC Injector - v1.0.0 (Stable Release)

This release marks the stable milestone of the modernized .NET 9 and Avalonia UI rewrite. It introduces a clean MVVM architecture, build cancellation support, native drag-and-drop capabilities, a dedicated real-time logs viewer, low-level memory optimizations, and numerous reliability improvements.


🌟 Highlights & New Features

🛑 1. Safe Build Cancellation

  • Implemented full CancellationTokenSource support across the injection pipeline (BuildEngine).
  • Users can safely cancel in-progress conversions at any time with automatic cleanup of temporary files and external processes.

📂 2. Native Drag-and-Drop Support

  • Added intuitive drag-and-drop functionality: drop game disk images (ISO, WBFS, GC), banner artwork, icons, or audio files directly into the application window.

📋 3. Dedicated Real-Time Logs Tab

  • Added a dedicated in-app Logs tab to monitor the conversion process in real time (Nfs2Iso2Nfs, wit, auxiliary tool output).
  • Introduced a centralized AppLogger service with automatic conversion.log file generation.

🏗️ Architecture & Refactoring

🧱 Full MVVM Pattern with CommunityToolkit.Mvvm

  • Refactored the entire codebase away from monolithic code-behind files into a decoupled Model-View-ViewModel (MVVM) architecture.
  • Introduced dedicated ViewModels:
    • MainViewModel: Manages injection modes, game paths, remote art retrieval, and build triggers.
    • SdCardViewModel: Controls the Nintendont SD card preparation workflow and assets downloader.
    • SettingsViewModel: Handles user preferences and persistent default paths.
    • ViewModelBase: Unified observable foundation.
  • Leveraged modern XAML data bindings and reactive commands ([RelayCommand], [ObservableProperty]).

💬 Decoupled Dialog Architecture (IDialogService)

  • Implemented IDialogService and AvaloniaDialogService to abstract message boxes, folder pickers, and prompt dialogs away from business logic.

📜 File-Scoped Namespaces

  • Modernized all C# source files using C# 10+/13 file-scoped namespaces, streamlining indentation and improving code readability.

⚡ Performance & Memory Efficiency

🧠 Zero-Allocation Buffer Pooling (ArrayPool<byte>)

  • Refactored Nfs2Iso2Nfs byte-buffer allocations to use ArrayPool<byte>.Shared.Rent/Return, drastically reducing Garbage Collection (GC) pressure when processing multi-gigabyte ISOs and NFS archives.

🔍 Optimized Database Lookups & Strings

  • Enhanced GameTdb database parsing with StringComparison.OrdinalIgnoreCase for fast O(1) dictionary queries.
  • Replaced redundant network downloads with lightweight HTTP HEAD checks (HttpMethod.Head) for remote icon/banner verification.

🛠️ Tool Execution & System Enhancements

  • Dynamic Java JAR & Wine Execution: BuildEngine now dynamically discovers local .jar files prior to resolving system binaries or Wine wrappers, improving cross-platform compatibility.
  • Robust File Operations (FileUtil): Added safe deletion and retry mechanisms to prevent locked-file exceptions during temporary workspace cleanup.
  • Updated Tool Resources: Refreshed internal TOOLDIR.zip assets.

Release v1.0.0-beta

Release v1.0.0-beta Pre-release
Pre-release

Choose a tag to compare

@Rodrigo-Matsuura Rodrigo-Matsuura released this 16 Jun 15:48

Release Notes

A major overhaul of the Moon WiiVC Injector! This release marks a significant milestone by completely rewriting the user interface, upgrading the backend runtime, and paving the way for native cross-platform support.

What's New

🚀 Cross-Platform UI Migration (Avalonia UI & .NET 9)

  • Linux, macOS & Windows Support: Fully migrated the graphical interface from Windows Forms (WinForms) to Avalonia UI, enabling a hardware-accelerated, native user experience across multiple operating systems.
  • Modern Cross-Platform Settings: Replaced legacy registry/WinForms settings with a clean, JSON-based configuration store that works seamlessly across systems.
  • Custom Desktop Dialogs: Built native Avalonia prompt, settings, and dialog windows (MessageBoxWindow, PromptWindow, SettingsWindow) for a modern look and feel.

⚙️ Core Enhancements & Modernization

  • Decoupled Architecture: Extracted all packing, compilation, and game injection operations from the UI classes into a dedicated, robust BuildEngine.
  • Upgraded Hashing & Rendering APIs:
    • Adopted .NET 9's static MD5.HashData methods for faster integrity checks.
    • Updated SkiaSharp rendering pipelines to leverage modern SKSamplingOptions.
  • Improved NFS Logic: Optimized stream allocations, updated header generation, and added support for EGGS headers in Nfs2Iso2Nfs.cs.
  • Better Asynchronous I/O: Refactored multiple legacy synchronous file reading/writing routines to use modern asynchronous equivalents.

🐧 Linux & Tooling Optimizations

  • Native c2w_patcher Support: Implemented logic to set Unix file permissions and launch native binaries instead of relying strictly on Wine.
  • Streamlined Tool Launching: Added smart runtime detection to fallback gracefully on native tools (wit, sox) if installed in the host environment.
  • Bundled Resources: Updated the embedded TOOLDIR.zip structure, optimized extraction routines, and updated the bundled wiitdb.txt database for better game detection.

🛠️ Other Improvements

  • Styling Improvements: Refined layout and margins for a consistent light-themed desktop style.
  • Repository Cleanup: Relocated the GNU GPL v3 license to the repository root and removed all stale Windows Forms project files.

Release v4.0.0

Choose a tag to compare

@Rodrigo-Matsuura Rodrigo-Matsuura released this 19 May 16:43

We are proud to present version 4.0.0.0 of TeconMoon's WiiVC Injector!
This release brings a complete structural overhaul to eliminate years of technical debt, introduce ultra-fast in-memory caching, modernize network connectivity, and add support for new compressed formats.


🛠 What has changed since the original base?

📦 1. Support for New Image Formats

  • NKIT & NASOS: Full native support for reading and converting compressed files in the .nkit.iso and .iso.dec / .dec formats, eliminating the need for manual decompression by the user.

⚡ 2. Database Performance Optimization (wiitdb)

  • Instant O(1) Lookups: We completely rewrote the query engine of the GameTdb.cs class. The wiitdb.txt database file (334 KB) is now processed only once in a static constructor.
  • In-Memory Cache: Searches by IDs and Names now use static in-memory Dictionary objects, replacing the previous slow and repetitive sequential disk I/O operations (O(N)).

🌐 3. High-Performance Network Connectivity (HttpClient)

  • Goodbye WebClient/HttpWebRequest: All network logic in the application has been modernized to use the native and robust HttpClient API.
  • Singleton HttpClient: We created a single shared static HTTP client (Program.Client) used across the entire application. This prevents socket exhaustion, optimizes bandwidth usage, and speeds up automatic downloads of covers and Nintendont dependencies.
  • Lightweight Connection Check: Internet connectivity checks have been centralized and now use lightweight header requests (HttpMethod.Head).

🔒 4. Security & Flexibility (No Admin Rights Required)

  • No More Windows Registry Keys: We migrated the storage of critical Wii U encryption keys (Common Key, Title Key, and Ancast Key) from the global Windows Registry to the application's internal User Settings (Settings).
  • Zero Elevated Privileges: The program now works perfectly without needing to run "As Administrator," making it significantly safer and more portable.

🧼 5. Dead Code Cleanup & Clean Build (Zero Warnings)

  • 0 Warnings, 0 Errors: We eliminated all C# compiler warnings (including the notorious CS0169 and CS0414). All obsolete fields and variables left over from previous refactors have been removed.
  • Structural Refactor of LaunchProgram: We decoupled external executable initialization from screen global variables by passing process hiding flags directly as parameters.
  • Path Safety: We standardized and cleaned up temporary directory management using robust Path.Combine calls instead of manual string concatenation.

🐧 6. Simplified Cross-Platform Builds

  • Linux/Mono Friendly Support: We disabled automatic ClickOnce manifest generation in the .csproj, resolving the classic Mono/MSBuild bug that prevented direct builds on Linux.

💾 Download Information

The attached executable is fully portable and self-contained (all dependency .dll libraries are embedded directly into the .exe itself).

  • Requirements: Windows 7 SP1 or newer with .NET Framework 4.8 installed (or Linux running through Wine).