Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/create-draft-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,7 @@ jobs:

- name: Download dinput and winmm
run: |
curl -L https://github.com/SRMM-Studio/srmm-distrib/raw/refs/heads/main/Native/dinput8.dll -o $RUNNER_TEMP/external/dinput8.dll
curl -L https://github.com/SRMM-Studio/srmm-distrib/raw/refs/heads/main/Native/winmm.lj -o $RUNNER_TEMP/external/winmm.lj
curl -L https://github.com/SRMM-Studio/srmm-distrib/raw/refs/heads/main/Native/version.dll -o $RUNNER_TEMP/external/version.dll

- name: Install .NET SDK
uses: actions/setup-dotnet@v5
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ $ ./ShinRyuModManager-CE --cli
```

# Building
Clone the repository, then open the solution file (.sln) in Visual Studio. You can then `dotnet publish` the `ShinRyuModManager-CE` project.
Clone the repository, then open the solution file (.slnx) in Visual Studio. You can then `dotnet publish` the `ShinRyuModManager-CE` project.

# Differences/Known Issues
Given this is a port, and a cross-platform one at that, there are likely going to be differences between this version and the original.
Expand Down
3 changes: 1 addition & 2 deletions Scripts/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@ FRAMEWORK="net10.0"
DOWNLOAD_REPO="SRMM-Studio/ShinRyuModManager"

FILES_TO_COPY=(
"dinput8.dll"
"winmm.lj"
"version.dll"
"YakuzaParless.asi"
)

Expand Down
41 changes: 2 additions & 39 deletions ShinRyuModManager-CE/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -199,43 +199,6 @@ internal static List<ModInfo> PreRun(Profile? profile = null) {
}

Log.Information("Active Profile: {Profile}", profile?.GetDescription() ?? ActiveProfile.GetDescription());

if (File.Exists(Constants.DINPUT8DLL) && File.Exists(Constants.WINMMLJ)) {
// TODO: Maybe move this to a separate "Game patches" file
// Virtua Fighter eSports crashes when used with dinput8.dll as the ASI loader
if (GamePath.CurrentGame == Game.Eve && File.Exists(Constants.DINPUT8DLL)) {
if (File.Exists(Constants.VERSIONDLL)) {
Log.Warning($"Game specific patch: Deleting {Constants.DINPUT8DLL} because {Constants.VERSIONDLL} exists...");

// Remove dinput8.dll
File.Delete(Constants.DINPUT8DLL);
} else {
Log.Warning($"Game specific patch: Renaming {Constants.DINPUT8DLL} to {Constants.VERSIONDLL}...");

// Rename dinput8.dll to version.dll to prevent the game from crashing
File.Move(Constants.DINPUT8DLL, Constants.VERSIONDLL);
}
} else if (GamePath.CurrentGame is >= Game.YakuzaKiwami2 and not Game.LikeADragonGaiden) {
// Lost Judgment (and Judgment post update 1) does not like Ultimate ASI Loader, so instead we use a custom build of DllSpoofer (https://github.com/Kazurin-775/DllSpoofer)
if (File.Exists(Constants.DINPUT8DLL)) {
Log.Warning($"Game specific patch: Deleting {Constants.DINPUT8DLL} because it causes crashes with Judgment games...");

// Remove dinput8.dll
File.Delete(Constants.DINPUT8DLL);
}

if (!File.Exists(Constants.WINMMDLL)) {
if (File.Exists(Constants.WINMMLJ)) {
Log.Warning($"Game specific patch: Enabling {Constants.WINMMDLL} by renaming {Constants.WINMMLJ} to fix Judgment games crashes...");

// Rename dinput8.dll to version.dll to prevent the game from crashing
File.Move(Constants.WINMMLJ, Constants.WINMMDLL);
} else {
Log.Error($"WARNING: {Constants.WINMMLJ} was not found. Judgment games will NOT load mods without this file. Please redownload Shin Ryu Mod Manager.");
}
}
}
}

// Read ini (again) to check if we should try importing the old load order file
_iniData = IniParser.ReadFile(Constants.INI);
Expand Down Expand Up @@ -403,7 +366,7 @@ internal static async Task RunGeneration(List<ModInfo> mods) {
private static void PostRun() {
// Check if the ASI loader is not in the directory (possibly due to incorrect zip extraction)
if (MissingDll()) {
Log.Warning($"Warning: \"{Constants.DINPUT8DLL}\" is missing from this directory. Shin Ryu Mod Manager will NOT function properly without this file");
Log.Warning($"Warning: \"{Constants.VERSIONDLL}\" is missing from this directory. Shin Ryu Mod Manager will NOT function properly without this file");
}

// Check if the ASI is not in the directory
Expand Down Expand Up @@ -442,7 +405,7 @@ private static List<ModInfo> ScanMods(ProfileMask activeProfiles = ProfileMask.A
}

internal static bool MissingDll() {
return !(File.Exists(Constants.DINPUT8DLL) || File.Exists(Constants.VERSIONDLL) || File.Exists(Constants.WINMMDLL));
return File.Exists(Constants.VERSIONDLL);
}

internal static bool MissingAsi() {
Expand Down
2 changes: 1 addition & 1 deletion ShinRyuModManager-CE/ShinRyuModManager-CE.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>

<!-- Versioning -->
<AssemblyVersion>1.4.7</AssemblyVersion>
<AssemblyVersion>1.4.8</AssemblyVersion>
<VersionPrefix>$(AssemblyVersion)</VersionPrefix>
<AssemblyTitle>ShinRyuModManager-CE</AssemblyTitle>
<Company>SRMM Studio</Company>
Expand Down
8 changes: 7 additions & 1 deletion ShinRyuModManager-CE/UserInterface/Assets/changelog.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
> ### **%{color:gold} Version 1.4.7 %** ###
> ### **%{color:gold} Version 1.4.8 %** ###
* Implemented changes from SRMM 4.8.1 (Fixed mods not loading for Kiwami 3)
* Delete `winmm.dll` and `dinput8.dll` from your game directory

---

> ### **%{color:orange} Version 1.4.7 %** ###
* Fixed launching Kiwami 3 from in app

---
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ private async Task RunPreInitAsync() {

if (Program.LogLevel <= LogEventLevel.Warning) {
if (Program.MissingDll()) {
_ = await MessageBoxWindow.Show(this, "Warning", $"{Constants.DINPUT8DLL} is missing from this directory. Mods will NOT be applied without this file.");
_ = await MessageBoxWindow.Show(this, "Warning", $"{Constants.VERSIONDLL} is missing from this directory. Mods will NOT be applied without this file.");
}

if (Program.MissingAsi()) {
Expand Down
3 changes: 0 additions & 3 deletions Utils/Constants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,7 @@ public static class Constants {
public const string MOD_LIST = "ModList.ml";
public const string MLO = "YakuzaParless.mlo";
public const string ASI = "YakuzaParless.asi";
public const string DINPUT8DLL = "dinput8.dll";
public const string VERSIONDLL = "version.dll";
public const string WINMMDLL = "winmm.dll";
public const string WINMMLJ = "winmm.lj";
public const string PARLESS_NAME = ".parless paths";
public const string EXTERNAL_MODS = "_externalMods";
public const string VORTEX_MANAGED_FILE = "__folder_managed_by_vortex";
Expand Down
Loading