From 2fbe6eb9daf783b9ad1e85ae37d1aa8dcffa8442 Mon Sep 17 00:00:00 2001 From: Catsoftware Date: Fri, 20 Dec 2024 18:44:35 +0000 Subject: [PATCH] Add Trollstore JIT --- .../UserInterfaceState.xcuserstate | Bin 0 -> 21587 bytes src/MeloNX/MeloNX/Core/JIT/AskForJIT.swift | 25 ++++++++++++++++++ .../MeloNX/Core/{DetectJIT => JIT}/utils.h | 0 .../MeloNX/Core/{DetectJIT => JIT}/utils.m | 2 +- src/MeloNX/MeloNX/Views/ContentView.swift | 17 ++++++++++-- .../Views/SettingsView/SettingsView.swift | 7 ++++- 6 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/ls.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 src/MeloNX/MeloNX/Core/JIT/AskForJIT.swift rename src/MeloNX/MeloNX/Core/{DetectJIT => JIT}/utils.h (100%) rename src/MeloNX/MeloNX/Core/{DetectJIT => JIT}/utils.m (99%) 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 0000000000000000000000000000000000000000..f3138f8411742fd3d03cf4c0e26f56b3d1d895fe GIT binary patch literal 21587 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 l+}61rce~)u>dx&h;jZkiZ*8b-S70|0Z=IX?gZ literal 0 HcmV?d00001 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")