diff --git a/src/MeloNX/MeloNX.xcodeproj/project.pbxproj b/src/MeloNX/MeloNX.xcodeproj/project.pbxproj index 2e4cc96e4..87259d840 100644 --- a/src/MeloNX/MeloNX.xcodeproj/project.pbxproj +++ b/src/MeloNX/MeloNX.xcodeproj/project.pbxproj @@ -75,7 +75,6 @@ Dependencies/XCFrameworks/libavutil.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); Dependencies/XCFrameworks/libswresample.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); Dependencies/XCFrameworks/libswscale.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); - Dependencies/XCFrameworks/libteakra.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; buildPhase = 4E80AA092CD6FAA800029585 /* Embed Libraries */; membershipExceptions = ( @@ -90,7 +89,6 @@ Dependencies/XCFrameworks/libSPIRV.xcframework, Dependencies/XCFrameworks/libswresample.xcframework, Dependencies/XCFrameworks/libswscale.xcframework, - Dependencies/XCFrameworks/libteakra.xcframework, Dependencies/XCFrameworks/MoltenVK.xcframework, Dependencies/XCFrameworks/SDL2.xcframework, ); @@ -496,7 +494,7 @@ INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportsDocumentBrowser = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -572,7 +570,7 @@ INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportsDocumentBrowser = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", 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 9181853cb..aacb701c6 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 fc23cc2ae..6b8d9f62c 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 @@ -23,7 +23,13 @@ + consoleCommand = "process handle SIGUSR1 -s false -n false"> + + + + @@ -45,30 +51,5 @@ landmarkType = "7"> - - - - - - - - - - diff --git a/src/MeloNX/MeloNX/Core/Swift/Ryujinx.swift b/src/MeloNX/MeloNX/Core/Swift/Ryujinx.swift index a910e8949..9dcf13849 100644 --- a/src/MeloNX/MeloNX/Core/Swift/Ryujinx.swift +++ b/src/MeloNX/MeloNX/Core/Swift/Ryujinx.swift @@ -15,6 +15,20 @@ struct Controller: Identifiable, Hashable { let name: String } +struct iOSNav: View { + @ViewBuilder var content: () -> Content + + var body: some View { + if #available(iOS 16, *) { + NavigationStack(root: content) + } else { + NavigationView(content: content) + .navigationViewStyle(StackNavigationViewStyle()) + .navigationViewStyle(.stack) + } + } +} + class Ryujinx { private var isRunning = false @@ -40,7 +54,7 @@ class Ryujinx { tracelogs: Bool = false, listinputids: Bool = false, fullscreen: Bool = false, - hostMappedMemory: Bool = false, + hostMappedMemory: Bool = true, disableVSync: Bool = true, disableShaderCache: Bool = false, disableDockedMode: Bool = true, diff --git a/src/MeloNX/MeloNX/Views/ContentView.swift b/src/MeloNX/MeloNX/Views/ContentView.swift index 86612fda9..a2ca4e171 100644 --- a/src/MeloNX/MeloNX/Views/ContentView.swift +++ b/src/MeloNX/MeloNX/Views/ContentView.swift @@ -11,7 +11,8 @@ import GameController struct MoltenVKSettings: Codable, Hashable { let string: String - var value: String + var bool: Bool? + var value: String? } struct ContentView: View { @@ -22,11 +23,11 @@ struct ContentView: View { @State var currentControllers: [Controller] = [] @State var config: Ryujinx.Configuration = Ryujinx.Configuration(gamepath: "") - @State private var settings: [MoltenVKSettings] = [ - MoltenVKSettings(string: "MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS", value: "0"), - MoltenVKSettings(string: "MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS", value: "0"), + @State var settings: [MoltenVKSettings] = [ + // MoltenVKSettings(string: "MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS", value: ""), + // MoltenVKSettings(string: "MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS", value: "1"), MoltenVKSettings(string: "MVK_CONFIG_MAX_ACTIVE_METAL_COMMAND_BUFFERS_PER_QUEUE", value: "1024"), - MoltenVKSettings(string: "MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS", value: "0"), + MoltenVKSettings(string: "MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS", value: "1"), MoltenVKSettings(string: "MVK_CONFIG_RESUME_LOST_DEVICE", value: "1") ] @@ -58,7 +59,7 @@ struct ContentView: View { } var body: some View { - NavigationStack { + iOSNav { if let game { ZStack { @@ -80,7 +81,7 @@ struct ContentView: View { List { Section("Settings") { NavigationLink { - SettingsView(config: $config) + SettingsView(config: $config, MoltenVKSettings: $settings) } label: { Text("Config") } @@ -146,7 +147,7 @@ struct ContentView: View { let physicalMemory = ProcessInfo.processInfo.physicalMemory let totalMemoryInGB = Double(physicalMemory) / (1024 * 1024 * 1024) - let mem = totalMemoryInGB - 1 + let mem = totalMemoryInGB print(mem) // Allocate memory let pointer = UnsafeMutableRawPointer.allocate(byteCount: Int(mem), alignment: MemoryLayout.alignment) diff --git a/src/MeloNX/MeloNX/Views/SettingsView/SettingsView.swift b/src/MeloNX/MeloNX/Views/SettingsView/SettingsView.swift index 23f8291e7..038be1bf9 100644 --- a/src/MeloNX/MeloNX/Views/SettingsView/SettingsView.swift +++ b/src/MeloNX/MeloNX/Views/SettingsView/SettingsView.swift @@ -9,39 +9,41 @@ import SwiftUI struct SettingsView: View { @Binding var config: Ryujinx.Configuration + @Binding var MoltenVKSettings: [MoltenVKSettings] var body: some View { Form { - - Section(header: Text("Graphics and Performance")) { - Toggle("Fullscreen", isOn: $config.fullscreen) - Toggle("Disable V-Sync", isOn: $config.disableVSync) - Toggle("Disable Shader Cache", isOn: $config.disableShaderCache) - Toggle("Enable Texture Recompression", isOn: $config.enableTextureRecompression) - } - - Section(header: Text("Input Settings")) { - Toggle("List Input IDs", isOn: $config.listinputids) - Toggle("Host Mapped Memory", isOn: $config.hostMappedMemory) - Toggle("Disable Docked Mode", isOn: $config.disableDockedMode) - } - - Section(header: Text("Logging Settings")) { - Toggle("Enable Debug Logs", isOn: $config.debuglogs) - Toggle("Enable Trace Logs", isOn: $config.tracelogs) - } - - Section(header: Text("Game Settings")) { - //TextField("Game Path", text: $config.gamepath) + Section(header: Text("Ryujinx")) { + Section(header: Text("Graphics and Performance")) { + Toggle("Fullscreen", isOn: $config.fullscreen) + Toggle("Disable V-Sync", isOn: $config.disableVSync) + Toggle("Disable Shader Cache", isOn: $config.disableShaderCache) + Toggle("Enable Texture Recompression", isOn: $config.enableTextureRecompression) + } - TextField("Additional Arguments", text: Binding( - get: { - config.additionalArgs.joined(separator: ", ") - }, - set: { newValue in - config.additionalArgs = newValue.split(separator: ",").map { String($0).trimmingCharacters(in: .whitespaces) } - } - )) + Section(header: Text("Input Settings")) { + Toggle("List Input IDs", isOn: $config.listinputids) + Toggle("Host Mapped Memory", isOn: $config.hostMappedMemory) + Toggle("Disable Docked Mode", isOn: $config.disableDockedMode) + } + + Section(header: Text("Logging Settings")) { + Toggle("Enable Debug Logs", isOn: $config.debuglogs) + Toggle("Enable Trace Logs", isOn: $config.tracelogs) + } + + Section(header: Text("Game Settings")) { + //TextField("Game Path", text: $config.gamepath) + + TextField("Additional Arguments", text: Binding( + get: { + config.additionalArgs.joined(separator: ", ") + }, + set: { newValue in + config.additionalArgs = newValue.split(separator: ",").map { String($0).trimmingCharacters(in: .whitespaces) } + } + )) + } } } .onAppear {