diff --git a/src/MeloNX/MeloNX.xcodeproj/project.pbxproj b/src/MeloNX/MeloNX.xcodeproj/project.pbxproj index 88baa5f12..45c5e50da 100644 --- a/src/MeloNX/MeloNX.xcodeproj/project.pbxproj +++ b/src/MeloNX/MeloNX.xcodeproj/project.pbxproj @@ -580,6 +580,12 @@ "$(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; PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX; @@ -694,6 +700,12 @@ "$(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; PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX; 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 5a41cbf60..bb8063d83 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/Core/Swift/Controller/VirtualController.swift b/src/MeloNX/MeloNX/Core/Swift/Controller/VirtualController.swift index e55b51eab..66b580191 100644 --- a/src/MeloNX/MeloNX/Core/Swift/Controller/VirtualController.swift +++ b/src/MeloNX/MeloNX/Core/Swift/Controller/VirtualController.swift @@ -14,33 +14,27 @@ public var controllerCallback: (() -> Void)? var VirtualController: GCVirtualController! func showVirtualController() { let config = GCVirtualController.Configuration() - if UserDefaults.standard.bool(forKey: "RyuDemoControls") { - config.elements = [ - GCInputLeftThumbstick, - GCInputButtonA, - GCInputButtonB, - GCInputButtonX, - GCInputButtonY, - // GCInputRightThumbstick, - GCInputRightTrigger, - GCInputLeftTrigger, - GCInputLeftShoulder, - GCInputRightShoulder - ] - } else { - config.elements = [ - GCInputLeftThumbstick, - GCInputButtonA, - GCInputButtonB, - GCInputButtonX, - GCInputButtonY, - GCInputRightThumbstick, - GCInputRightTrigger, - GCInputLeftTrigger, - GCInputLeftShoulder, - GCInputRightShoulder - ] + + var controllere = [ + GCInputLeftThumbstick, + GCInputButtonA, + GCInputButtonB, + GCInputButtonX, + GCInputButtonY, + // GCInputRightThumbstick, + GCInputRightTrigger, + GCInputLeftTrigger, + GCInputLeftShoulder, + GCInputRightShoulder + ] + + if !UserDefaults.standard.bool(forKey: "RyuDemoControls") { + + controllere.append(GCInputRightThumbstick) } + + config.elements = Set(controllere) + VirtualController = GCVirtualController(configuration: config) VirtualController.connect { err in print("controller connect: \(String(describing: err))") diff --git a/src/MeloNX/MeloNX/Core/Swift/Display/DisplayVisible.swift b/src/MeloNX/MeloNX/Core/Swift/Display/DisplayVisible.swift index ef423ef42..b7e870165 100644 --- a/src/MeloNX/MeloNX/Core/Swift/Display/DisplayVisible.swift +++ b/src/MeloNX/MeloNX/Core/Swift/Display/DisplayVisible.swift @@ -20,7 +20,7 @@ extension UIWindow { self.wdb_makeKeyAndVisible() theWindow = self if #available(iOS 15.0, *) { - reconnectVirtualController() + // reconnectVirtualController() } diff --git a/src/MeloNX/MeloNX/Core/Swift/Ryujinx.swift b/src/MeloNX/MeloNX/Core/Swift/Ryujinx.swift index 6f032f814..3bfa8d386 100644 --- a/src/MeloNX/MeloNX/Core/Swift/Ryujinx.swift +++ b/src/MeloNX/MeloNX/Core/Swift/Ryujinx.swift @@ -99,7 +99,7 @@ class Ryujinx { isRunning = true // Start The Emulation on the main thread - DispatchQueue.main.async { + RunLoop.current.perform { do { let args = self.buildCommandLineArgs(from: config) @@ -147,27 +147,22 @@ class Ryujinx { // Fixes the Stubs.DispatchLoop Crash args.append(contentsOf: ["--memory-manager-mode", config.memoryManagerMode]) - if config.fullscreen { - args.append(contentsOf: ["--exclusive-fullscreen", String(config.fullscreen)]) - args.append(contentsOf: ["--exclusive-fullscreen-width", "1280"]) - args.append(contentsOf: ["--exclusive-fullscreen-height", "720"]) - } + args.append(contentsOf: ["--exclusive-fullscreen", String(config.fullscreen)]) + args.append(contentsOf: ["--exclusive-fullscreen-width", "1280"]) + args.append(contentsOf: ["--exclusive-fullscreen-height", "720"]) - if config.resscale != 1 { - args.append(contentsOf: ["--resolution-scale", String(config.resscale)]) - } if config.nintendoinput { - args.append("--correct-ons-controller") - } - if config.enableInternet { - args.append("--enable-internet-connection") + args.append("--correct-controller") } // Adding default args directly into additionalArgs if config.disableVSync { - args.append("--disable-vsync") + // args.append("--disable-vsync") } + + args.append("--disable-vsync") + if config.disableShaderCache { args.append("--disable-shader-cache") } diff --git a/src/MeloNX/MeloNX/Views/ContentView.swift b/src/MeloNX/MeloNX/Views/ContentView.swift index 1bc9ddd06..e1d7b1f48 100644 --- a/src/MeloNX/MeloNX/Views/ContentView.swift +++ b/src/MeloNX/MeloNX/Views/ContentView.swift @@ -37,8 +37,8 @@ struct ContentView: View { _config = State(initialValue: defaultConfig) let defaultSettings: [MoltenVKSettings] = [ - // MoltenVKSettings(string: "MVK_CONFIG_MAX_ACTIVE_METAL_COMMAND_BUFFERS_PER_QUEUE", value: "2048"), - MoltenVKSettings(string: "MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS", value: "1"), + // MoltenVKSettings(string: "MVK_CONFIG_MAX_ACTIVE_METAL_COMMAND_BUFFERS_PER_QUEUE", value: "512"), + MoltenVKSettings(string: "MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS", value: "0"), MoltenVKSettings(string: "MVK_CONFIG_RESUME_LOST_DEVICE", value: "1") ] @@ -161,40 +161,17 @@ struct ContentView: View { } private func setupEmulation() { - if isJITEnabled { - virtualController?.disconnect() + virtualController?.disconnect() - controllerCallback = { - DispatchQueue.main.async { - controllersList = Ryujinx.shared.getConnectedControllers() - - print(currentControllers) - start(displayid: 1) - } - } - - - showVirtualController() - } else { - showAlert(title: "JIT Not Enabled", message: "JIT is Required for Emulation. Please use a JIT enabler to Enable JIT", showOk: true) { pressedok in - if pressedok, !ignoreJIT { - game = nil - } else if pressedok, ignoreJIT { - virtualController?.disconnect() - controllerCallback = { - DispatchQueue.main.async { - controllersList = Ryujinx.shared.getConnectedControllers() - - print(currentControllers) - start(displayid: 1) - } - } - - - showVirtualController() - } + controllerCallback = { + DispatchQueue.main.async { + + start(displayid: 1) } } + + + showVirtualController() } private func refreshControllersList() { diff --git a/src/Ryujinx.Graphics.Vulkan/HardwareCapabilities.cs b/src/Ryujinx.Graphics.Vulkan/HardwareCapabilities.cs index c421a662a..693a31d63 100644 --- a/src/Ryujinx.Graphics.Vulkan/HardwareCapabilities.cs +++ b/src/Ryujinx.Graphics.Vulkan/HardwareCapabilities.cs @@ -103,11 +103,7 @@ namespace Ryujinx.Graphics.Vulkan SupportsShaderStencilExport = supportsShaderStencilExport; SupportsShaderStorageImageMultisample = supportsShaderStorageImageMultisample; SupportsConditionalRendering = supportsConditionalRendering; - if (OperatingSystem.IsIOS()) { - SupportsExtendedDynamicState = (OperatingSystem.IsOSPlatformVersionAtLeast("iOS", 17) ? supportsExtendedDynamicState : false); - } else { - SupportsExtendedDynamicState = supportsExtendedDynamicState; - } + SupportsExtendedDynamicState = supportsExtendedDynamicState; SupportsMultiView = supportsMultiView; SupportsNullDescriptors = (OperatingSystem.IsIOS() ? false : supportsNullDescriptors); SupportsPushDescriptors = supportsPushDescriptors; diff --git a/src/Ryujinx.Headless.SDL2/Options.cs b/src/Ryujinx.Headless.SDL2/Options.cs index 37521a57e..3d7ffabdf 100644 --- a/src/Ryujinx.Headless.SDL2/Options.cs +++ b/src/Ryujinx.Headless.SDL2/Options.cs @@ -31,7 +31,7 @@ namespace Ryujinx.Headless.SDL2 // Input - [Option("correct-ons-controller", Required = false, Default = false, HelpText = "Makes the on-screen controller (iOS) buttons correspond to what they show.")] + [Option("correct-controller", Required = false, Default = false, HelpText = "Makes the on-screen controller (iOS) buttons correspond to what they show.")] public bool OnScreenCorrespond { get; set; } [Option("input-profile-1", Required = false, HelpText = "Set the input profile in use for Player 1.")] diff --git a/src/Ryujinx.Headless.SDL2/Program.cs b/src/Ryujinx.Headless.SDL2/Program.cs index 42732c6c3..906094fea 100644 --- a/src/Ryujinx.Headless.SDL2/Program.cs +++ b/src/Ryujinx.Headless.SDL2/Program.cs @@ -143,7 +143,10 @@ namespace Ryujinx.Headless.SDL2 { List gamepads = new List(); IGamepad gamepad; - _inputManager = new InputManager(new SDL2KeyboardDriver(), new SDL2GamepadDriver()); + if (_inputManager == null) + { + _inputManager = new InputManager(new SDL2KeyboardDriver(), new SDL2GamepadDriver()); + } // Collect gamepads from the keyboard driver foreach (string id in _inputManager.KeyboardDriver.GamepadsIds) @@ -417,7 +420,10 @@ namespace Ryujinx.Headless.SDL2 _accountManager = new AccountManager(_libHacHorizonManager.RyujinxClient, option.UserProfile); _userChannelPersistence = new UserChannelPersistence(); - _inputManager = new InputManager(new SDL2KeyboardDriver(), new SDL2GamepadDriver()); + if (_inputManager == null) + { + _inputManager = new InputManager(new SDL2KeyboardDriver(), new SDL2GamepadDriver()); + } GraphicsConfig.EnableShaderCache = true;