Fix Mario Kart 8 Crash and SMO Glitching Issues :3

This commit is contained in:
Stossy11 2025-01-07 13:20:13 +11:00
parent 160a58e127
commit 2901f462aa
10 changed files with 28 additions and 137 deletions

View File

@ -24,13 +24,13 @@ namespace ARMeilleure.Native
public static unsafe void Copy(IntPtr dst, IntPtr src, ulong n) { public static unsafe void Copy(IntPtr dst, IntPtr src, ulong n) {
// When NativeAOT is in use, we can toggle per-thread write protection without worrying about breaking .NET code. // When NativeAOT is in use, we can toggle per-thread write protection without worrying about breaking .NET code.
//pthread_jit_write_protect_np(0); // pthread_jit_write_protect_np(0);
var srcSpan = new Span<byte>(src.ToPointer(), (int)n); var srcSpan = new Span<byte>(src.ToPointer(), (int)n);
var dstSpan = new Span<byte>(dst.ToPointer(), (int)n); var dstSpan = new Span<byte>(dst.ToPointer(), (int)n);
srcSpan.CopyTo(dstSpan); srcSpan.CopyTo(dstSpan);
//pthread_jit_write_protect_np(1); // pthread_jit_write_protect_np(1);
// Ensure that the instruction cache for this range is invalidated. // Ensure that the instruction cache for this range is invalidated.
sys_icache_invalidate(dst, (IntPtr)n); sys_icache_invalidate(dst, (IntPtr)n);

View File

@ -91,7 +91,15 @@ namespace ARMeilleure.Translation.Cache
if (OperatingSystem.IsIOS()) if (OperatingSystem.IsIOS())
{ {
Marshal.Copy(code, 0, funcPtr, code.Length); // Marshal.Copy(code, 0, funcPtr, code.Length);
unsafe
{
fixed (byte* codePtr = code)
{
JitSupportDarwinAot.Copy(funcPtr, (IntPtr)codePtr, (ulong)code.Length);
}
}
if (deferProtect) if (deferProtect)
{ {
_deferredRxProtect.Enqueue((funcOffset, code.Length)); _deferredRxProtect.Enqueue((funcOffset, code.Length));

View File

@ -615,7 +615,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = F4QL9A2T88; DEVELOPMENT_TEAM = 95J8WZ4TN8;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
ENABLE_TESTABILITY = NO; ENABLE_TESTABILITY = NO;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
@ -632,6 +632,7 @@
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
); );
GCC_OPTIMIZATION_LEVEL = fast; GCC_OPTIMIZATION_LEVEL = fast;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
@ -796,9 +797,13 @@
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
); );
MARKETING_VERSION = 0.0.8; MARKETING_VERSION = 0.0.8;
PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX1; PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OBJC_BRIDGING_HEADER = "MeloNX/Core/Headers/Ryujinx-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "MeloNX/Core/Headers/Ryujinx-Header.h";
@ -816,7 +821,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = F4QL9A2T88; DEVELOPMENT_TEAM = 95J8WZ4TN8;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
@ -833,6 +838,7 @@
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
); );
GCC_OPTIMIZATION_LEVEL = fast; GCC_OPTIMIZATION_LEVEL = fast;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
@ -997,9 +1003,13 @@
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
); );
MARKETING_VERSION = 0.0.8; MARKETING_VERSION = 0.0.8;
PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX1; PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OBJC_BRIDGING_HEADER = "MeloNX/Core/Headers/Ryujinx-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "MeloNX/Core/Headers/Ryujinx-Header.h";

View File

@ -12,12 +12,12 @@
<key>Ryujinx.xcscheme_^#shared#^_</key> <key>Ryujinx.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>1</integer> <integer>2</integer>
</dict> </dict>
<key>com.Stossy11.MeloNX.RyujinxAg.xcscheme_^#shared#^_</key> <key>com.Stossy11.MeloNX.RyujinxAg.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>2</integer> <integer>1</integer>
</dict> </dict>
</dict> </dict>
<key>SuppressBuildableAutocreation</key> <key>SuppressBuildableAutocreation</key>

View File

@ -44,7 +44,6 @@ struct ContentView: View {
_config = State(initialValue: defaultConfig) _config = State(initialValue: defaultConfig)
let defaultSettings: [MoltenVKSettings] = [ let defaultSettings: [MoltenVKSettings] = [
MoltenVKSettings(string: "MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS", value: "2"),
MoltenVKSettings(string: "MVK_CONFIG_USE_METAL_PRIVATE_API", value: "1"), MoltenVKSettings(string: "MVK_CONFIG_USE_METAL_PRIVATE_API", value: "1"),
MoltenVKSettings(string: "MVK_CONFIG_RESUME_LOST_DEVICE", value: "1") MoltenVKSettings(string: "MVK_CONFIG_RESUME_LOST_DEVICE", value: "1")
] ]

View File

@ -1,25 +0,0 @@
//
// DeviceMemory.swift
// MeloNX
//
// Created by Tech Guy on 12/31/24.
//
import SwiftUI
import Foundation
import UIKit
enum DeviceMemory {
/// Check if device has 8GB or more RAM
static var has8GBOrMore: Bool {
#if targetEnvironment(simulator)
return ProcessInfo.processInfo.physicalMemory >= 7 * 1024 * 1024 * 1024 // 8GB in bytes
#else
return ProcessInfo.processInfo.physicalMemory >= 7 * 1024 * 1024 * 1024 // 8GB in bytes
#endif
}
/// Get total RAM in GB (rounded)
static var totalRAM: Int {
Int(ProcessInfo.processInfo.physicalMemory / 1024 / 1024 / 1024) + 1
}
}

View File

@ -1,95 +0,0 @@
//
// InfoView.swift
// MeloNX
//
// Created by Tech Guy on 12/31/24.
//
import SwiftUI
struct InfoView: View {
@AppStorage("entitlementExists") private var entitlementExists: Bool = false
@AppStorage("increaseddebugmem") private var increaseddebugmem: Bool = false
@AppStorage("extended-virtual-addressing") private var extended: Bool = false
@State var gd = false
let infoDictionary = Bundle.main.infoDictionary
var body: some View {
ScrollView {
VStack {
Text("Welcome to MeloNX!")
.font(.largeTitle)
Divider()
Text("Entitlements:")
.font(.title)
.font(Font.headline.weight(.bold))
Spacer()
.frame(height: 10)
Group {
Text("Required:")
.font(.title2)
.foregroundColor(.red)
.font(Font.headline.weight(.bold))
Spacer()
.frame(height: 10)
Text("Increased Memory Limit: \(String(describing: entitlementExists))")
Spacer()
.frame(height: 10)
}
Group {
Spacer()
.frame(height: 10)
Text("Reccomended (paid):")
.font(.title2)
.font(Font.headline.weight(.bold))
Spacer()
.frame(height: 10)
Text("Increased Debugging Memory Limit: \(String(describing: increaseddebugmem))")
.padding()
Text("Extended Virtual Addressing: \(String(describing: extended))")
}
Divider()
Text("Memory:")
.font(.title)
.font(Font.headline.weight(.bold))
Spacer()
.frame(height: 10)
Group {
Text("Current:")
.font(.title2)
.foregroundColor(.blue)
.font(Font.headline.weight(.bold))
Spacer()
.frame(height: 10)
Text(String(DeviceMemory.totalRAM) + "GB")
Spacer()
.frame(height: 10)
}
}
.padding()
HStack {
Text("Version: \(getAppVersion())")
.foregroundColor(.white)
.font(.system(size: 12))
.onTapGesture {
gd.toggle()
}
if getAppVersion() == "2.2", gd {
Text("Geometry Dash????? ;)")
.foregroundStyle(.secondary)
.font(.system(size: 5))
}
}
}
}
func getAppVersion() -> String {
guard let version = infoDictionary?["CFBundleShortVersionString"] as? String else {
return "Unknown"
}
return version
}
}

View File

@ -298,10 +298,6 @@ struct SettingsView: View {
} label: { } label: {
Text("Advanced Options") Text("Advanced Options")
} }
NavigationLink(destination: InfoView()) {
Text("About")
}
} header: { } header: {
Text("Advanced") Text("Advanced")
.font(.title3.weight(.semibold)) .font(.title3.weight(.semibold))

View File

@ -24,9 +24,7 @@ namespace Ryujinx.Graphics.Vulkan.MoltenVK
config.UseMetalArgumentBuffers = true; config.UseMetalArgumentBuffers = true;
config.SemaphoreSupportStyle = MVKVkSemaphoreSupportStyle.MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_SINGLE_QUEUE; config.SemaphoreSupportStyle = MVKVkSemaphoreSupportStyle.MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_SINGLE_QUEUE;
config.SynchronousQueueSubmits = false; // config.SynchronousQueueSubmits = false;
config.MaxActiveMetalCommandBuffersPerQueue = 192;
config.ResumeLostDevice = true; config.ResumeLostDevice = true;