diff --git a/src/ARMeilleure/Translation/Cache/JitCache.cs b/src/ARMeilleure/Translation/Cache/JitCache.cs
index 1845f199d..486e860a3 100644
--- a/src/ARMeilleure/Translation/Cache/JitCache.cs
+++ b/src/ARMeilleure/Translation/Cache/JitCache.cs
@@ -15,7 +15,7 @@ namespace ARMeilleure.Translation.Cache
static partial class JitCache
{
private static readonly int _pageSize = (int)MemoryBlock.GetPageSize();
- private static readonly int _pageMask = _pageSize - 2;
+ private static readonly int _pageMask = _pageSize - 8;
private const int CodeAlignment = 4; // Bytes.
private const int CacheSize = 2047 * 1024 * 1024;
diff --git a/src/MeloNX/MeloNX.xcodeproj/project.pbxproj b/src/MeloNX/MeloNX.xcodeproj/project.pbxproj
index 21717bbdf..ac89abc3d 100644
--- a/src/MeloNX/MeloNX.xcodeproj/project.pbxproj
+++ b/src/MeloNX/MeloNX.xcodeproj/project.pbxproj
@@ -90,6 +90,9 @@
5650564D2D2A75B300C8BB1E /* PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet */ = {
isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet;
attributesByRelativePath = {
+ "Dependencies/Dynamic Libraries/Ryujinx.Headless.SDL2.dylib" = (
+ CodeSignOnCopy,
+ );
"Dependencies/Dynamic Libraries/SoftwareKeyboard.framework" = (
CodeSignOnCopy,
RemoveHeadersOnCopy,
@@ -149,6 +152,7 @@
"Dependencies/Dynamic Libraries/libavcodec.dylib",
"Dependencies/Dynamic Libraries/libavutil.dylib",
"Dependencies/Dynamic Libraries/libMoltenVK.dylib",
+ "Dependencies/Dynamic Libraries/Ryujinx.Headless.SDL2.dylib",
"Dependencies/Dynamic Libraries/SoftwareKeyboard.framework",
Dependencies/XCFrameworks/libavcodec.xcframework,
Dependencies/XCFrameworks/libavfilter.xcframework,
diff --git a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/stossy11.xcuserdatad/UserInterfaceState.xcuserstate b/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/stossy11.xcuserdatad/UserInterfaceState.xcuserstate
index ff54f4ed2..cc7354a9f 100644
Binary files a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/stossy11.xcuserdatad/UserInterfaceState.xcuserstate and b/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/stossy11.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/src/MeloNX/MeloNX.xcodeproj/xcuserdata/stossy11.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/src/MeloNX/MeloNX.xcodeproj/xcuserdata/stossy11.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
index bf8cccbc8..70244900a 100644
--- a/src/MeloNX/MeloNX.xcodeproj/xcuserdata/stossy11.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
+++ b/src/MeloNX/MeloNX.xcodeproj/xcuserdata/stossy11.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -36,5 +36,21 @@
landmarkType = "7">
+
+
+
+
diff --git a/src/MeloNX/MeloNX.xcodeproj/xcuserdata/stossy11.xcuserdatad/xcschemes/xcschememanagement.plist b/src/MeloNX/MeloNX.xcodeproj/xcuserdata/stossy11.xcuserdatad/xcschemes/xcschememanagement.plist
index 8ff6cf524..62375ba69 100644
--- a/src/MeloNX/MeloNX.xcodeproj/xcuserdata/stossy11.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/src/MeloNX/MeloNX.xcodeproj/xcuserdata/stossy11.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -12,12 +12,12 @@
Ryujinx.xcscheme_^#shared#^_
orderHint
- 2
+ 1
com.Stossy11.MeloNX.RyujinxAg.xcscheme_^#shared#^_
orderHint
- 1
+ 2
SuppressBuildableAutocreation
diff --git a/src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift b/src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift
index 204afd17f..31e01b6f1 100644
--- a/src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift
+++ b/src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift
@@ -97,7 +97,7 @@ class Ryujinx {
isRunning = true
- RunLoop.current.perform {
+ DispatchQueue.main.async {
let url = URL(string: config.gamepath)!
do {
@@ -152,10 +152,11 @@ class Ryujinx {
args.append(contentsOf: ["--memory-manager-mode", config.memoryManagerMode])
- args.append(contentsOf: ["--exclusive-fullscreen", String(true)])
- args.append(contentsOf: ["--exclusive-fullscreen-width", "\(Int(UIScreen.main.bounds.width))"])
- args.append(contentsOf: ["--exclusive-fullscreen-height", "\(Int(UIScreen.main.bounds.height))"])
+ // args.append(contentsOf: ["--exclusive-fullscreen", String(true)])
+ // args.append(contentsOf: ["--exclusive-fullscreen-width", "\(Int(UIScreen.main.bounds.width))"])
+ // args.append(contentsOf: ["--exclusive-fullscreen-height", "\(Int(UIScreen.main.bounds.height))"])
// We don't need this. Ryujinx should handle it fine :3
+ // this also causes crashes in some games :3
if config.fullscreen {
args.append(contentsOf: ["--aspect-ratio", "Stretched"])
@@ -167,7 +168,7 @@ class Ryujinx {
}
- args.append("--disable-vsync")
+ // args.append("--disable-vsync")
if config.resscale != 1.0 {
diff --git a/src/MeloNX/MeloNX/App/Views/ContentView.swift b/src/MeloNX/MeloNX/App/Views/ContentView.swift
index b6603d4c5..d78eef9fd 100644
--- a/src/MeloNX/MeloNX/App/Views/ContentView.swift
+++ b/src/MeloNX/MeloNX/App/Views/ContentView.swift
@@ -48,8 +48,11 @@ struct ContentView: View {
_config = State(initialValue: defaultConfig)
let defaultSettings: [MoltenVKSettings] = [
- MoltenVKSettings(string: "MVK_CONFIG_USE_METAL_PRIVATE_API", value: "1"),
- MoltenVKSettings(string: "MVK_CONFIG_RESUME_LOST_DEVICE", value: "1")
+ // MoltenVKSettings(string: "MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS", value: "1"),
+ // MoltenVKSettings(string: "MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS", value: "2"),
+ // MoltenVKSettings(string: "MVK_USE_METAL_PRIVATE_API", value: "0"),
+ // MoltenVKSettings(string: "MVK_CONFIG_RESUME_LOST_DEVICE", value: "1"),
+ // MoltenVKSettings(string: "MVK_CONFIG_USE_METAL_PRIVATE_API", value: "0")
]
_settings = State(initialValue: defaultSettings)
@@ -61,7 +64,7 @@ struct ContentView: View {
// MARK: - Body
var body: some View {
- if let game, quits == false {
+ if game != nil, quits == false {
if isLoading {
emulationView
.onAppear() {
@@ -80,7 +83,7 @@ struct ContentView: View {
}
.onAppear() {
- isAnimating = false
+ isAnimating = false
}
}
} else {
@@ -259,15 +262,11 @@ struct ContentView: View {
config.gamepath = game.fileURL.path
config.inputids = Array(Set(currentControllers.map(\.id)))
- var setting: MoltenVKSettings
- if game.titleName.lowercased() != "super mario odyssey" {
- setting = (MoltenVKSettings(string: "MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS", value: "0"))
- } else {
- setting = (MoltenVKSettings(string: "MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS", value: "1"))
+ if game.titleName.lowercased() == "super mario odyssey" {
+ let setting = MoltenVKSettings(string: "MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS", value: "1")
+ setenv(setting.string, setting.value, 1)
}
- setenv(setting.string, setting.value, 1)
-
if config.inputids.isEmpty {
diff --git a/src/MeloNX/MeloNX/App/Views/SettingsView/SettingsView.swift b/src/MeloNX/MeloNX/App/Views/SettingsView/SettingsView.swift
index 838f227fc..aea9adb64 100644
--- a/src/MeloNX/MeloNX/App/Views/SettingsView/SettingsView.swift
+++ b/src/MeloNX/MeloNX/App/Views/SettingsView/SettingsView.swift
@@ -39,6 +39,7 @@ struct SettingsView: View {
return memoryManagerModes.filter { $0.1.localizedCaseInsensitiveContains(searchText) }
}
+
var body: some View {
iOSNav {
List {
@@ -65,6 +66,8 @@ struct SettingsView: View {
labelWithIcon("Docked Mode", iconName: "dock.rectangle")
}
.tint(.blue)
+
+
VStack(alignment: .leading, spacing: 10) {
HStack {
diff --git a/src/MeloNX/MeloNX/MeloNX.entitlements b/src/MeloNX/MeloNX/MeloNX.entitlements
index caa3d5839..99f471672 100644
--- a/src/MeloNX/MeloNX/MeloNX.entitlements
+++ b/src/MeloNX/MeloNX/MeloNX.entitlements
@@ -2,8 +2,6 @@
- com.apple.developer.kernel.extended-virtual-addressing
-
com.apple.developer.kernel.increased-memory-limit
diff --git a/src/Ryujinx.Graphics.Vulkan/MoltenVK/MVKInitialization.cs b/src/Ryujinx.Graphics.Vulkan/MoltenVK/MVKInitialization.cs
index 7395291dd..fadfc66dd 100644
--- a/src/Ryujinx.Graphics.Vulkan/MoltenVK/MVKInitialization.cs
+++ b/src/Ryujinx.Graphics.Vulkan/MoltenVK/MVKInitialization.cs
@@ -24,7 +24,7 @@ namespace Ryujinx.Graphics.Vulkan.MoltenVK
config.UseMetalArgumentBuffers = true;
config.SemaphoreSupportStyle = MVKVkSemaphoreSupportStyle.MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_SINGLE_QUEUE;
- // config.SynchronousQueueSubmits = false;
+ config.SynchronousQueueSubmits = false;
config.ResumeLostDevice = true;