diff --git a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/ls.xcuserdatad/UserInterfaceState.xcuserstate b/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/ls.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 000000000..f3138f841 Binary files /dev/null and b/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/ls.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/src/MeloNX/MeloNX/Core/JIT/AskForJIT.swift b/src/MeloNX/MeloNX/Core/JIT/AskForJIT.swift new file mode 100644 index 000000000..8603ef6d6 --- /dev/null +++ b/src/MeloNX/MeloNX/Core/JIT/AskForJIT.swift @@ -0,0 +1,25 @@ +// +// AskForJIT.swift +// Pomelo +// +// Created by Stossy11 on 9/10/2024. +// Copyright © 2024 Stossy11. All rights reserved. +// + +import Foundation +import UIKit + +func askForJIT() { + // Check if TrollStore exists by checking the presence of the directory + let urlScheme = "apple-magnifier://enable-jit?bundle-id=\(Bundle.main.bundleIdentifier!)" + if let launchURL = URL(string: urlScheme) { + if UIApplication.shared.canOpenURL(launchURL) { + // Open the URL to enable JIT + UIApplication.shared.open(launchURL, options: [:], completionHandler: nil) + + return + } + } + + return +} diff --git a/src/MeloNX/MeloNX/Core/DetectJIT/utils.h b/src/MeloNX/MeloNX/Core/JIT/utils.h similarity index 100% rename from src/MeloNX/MeloNX/Core/DetectJIT/utils.h rename to src/MeloNX/MeloNX/Core/JIT/utils.h diff --git a/src/MeloNX/MeloNX/Core/DetectJIT/utils.m b/src/MeloNX/MeloNX/Core/JIT/utils.m similarity index 99% rename from src/MeloNX/MeloNX/Core/DetectJIT/utils.m rename to src/MeloNX/MeloNX/Core/JIT/utils.m index 664ad43f1..de9f31fd6 100644 --- a/src/MeloNX/MeloNX/Core/DetectJIT/utils.m +++ b/src/MeloNX/MeloNX/Core/JIT/utils.m @@ -26,7 +26,7 @@ BOOL getEntitlementValue(NSString *key) return value != nil && [(__bridge id)value boolValue]; } -BOOL isJITEnabled(void) +BOOL isJITEnabled(void) { if (getEntitlementValue(@"dynamic-codesigning")) { diff --git a/src/MeloNX/MeloNX/Views/ContentView.swift b/src/MeloNX/MeloNX/Views/ContentView.swift index 5942f3cb9..9365efe5c 100644 --- a/src/MeloNX/MeloNX/Views/ContentView.swift +++ b/src/MeloNX/MeloNX/Views/ContentView.swift @@ -28,6 +28,7 @@ struct ContentView: View { @State private var currentControllers: [Controller] = [] @State private var config: Ryujinx.Configuration @State private var settings: [MoltenVKSettings] + @AppStorage("useTrollStore") var useTrollStore: Bool = false @State private var isVirtualControllerActive: Bool = false @AppStorage("isVirtualController") var isVCA: Bool = true @State var onscreencontroller: Controller = Controller(id: "", name: "") @@ -77,12 +78,16 @@ struct ContentView: View { quits = false } } + } - + // MARK: - View Components private var emulationView: some View { - ZStack {} + ZStack { + + } .onAppear { + setupEmulation() } } @@ -91,6 +96,14 @@ struct ContentView: View { MainTabView(startemu: $game, config: $config, MVKconfig: $settings, controllersList: $controllersList, currentControllers: $currentControllers, onscreencontroller: $onscreencontroller) .onAppear() { refreshControllersList() + + + let isJIT = UserDefaults.standard.bool(forKey: "JIT-ENABLED") + + if !isJIT, useTrollStore { + askForJIT() + } + } } diff --git a/src/MeloNX/MeloNX/Views/SettingsView/SettingsView.swift b/src/MeloNX/MeloNX/Views/SettingsView/SettingsView.swift index 43b32858b..95fc7a3cb 100644 --- a/src/MeloNX/MeloNX/Views/SettingsView/SettingsView.swift +++ b/src/MeloNX/MeloNX/Views/SettingsView/SettingsView.swift @@ -15,6 +15,7 @@ struct SettingsView: View { @Binding var currentControllers: [Controller] @Binding var onscreencontroller: Controller + @AppStorage("useTrollStore") var useTrollStore: Bool = false @AppStorage("ignoreJIT") var ignoreJIT: Bool = false @@ -59,7 +60,11 @@ struct SettingsView: View { labelWithIcon("Disable Docked Mode", iconName: "dock.rectangle") } .tint(.blue) - + Toggle(isOn: $useTrollStore) { + labelWithIcon("Trollstore", iconName: "stroller") + } + .tint(.blue) + VStack(alignment: .leading, spacing: 10) { HStack { labelWithIcon("Resolution Scale", iconName: "magnifyingglass")