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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

KaaiKYV@Zu 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 eKE1Xr? 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")