From a372911f82fa1e7ab4eacd4303cddd1133608319 Mon Sep 17 00:00:00 2001 From: Bella <65065992+Bentheminernz@users.noreply.github.com> Date: Mon, 10 Feb 2025 16:49:14 +1300 Subject: [PATCH] Enhance UI and configuration for game selection and background processing --- src/MeloNX/MeloNX.xcodeproj/project.pbxproj | 20 ++++- .../UserInterfaceState.xcuserstate | Bin 29397 -> 49941 bytes .../xcschemes/MeloNX - Release.xcscheme | 78 ++++++++++++++++++ .../xcschemes/xcschememanagement.plist | 7 +- src/MeloNX/MeloNX/App/Views/ContentView.swift | 13 ++- .../App/Views/SettingsView/SettingsView.swift | 52 +++++------- src/MeloNX/MeloNX/Info.plist | 5 ++ src/MeloNX/MeloNX/MeloNXApp.swift | 21 +---- 8 files changed, 139 insertions(+), 57 deletions(-) create mode 100644 src/MeloNX/MeloNX.xcodeproj/xcshareddata/xcschemes/MeloNX - Release.xcscheme diff --git a/src/MeloNX/MeloNX.xcodeproj/project.pbxproj b/src/MeloNX/MeloNX.xcodeproj/project.pbxproj index f95210535..84fa65299 100644 --- a/src/MeloNX/MeloNX.xcodeproj/project.pbxproj +++ b/src/MeloNX/MeloNX.xcodeproj/project.pbxproj @@ -618,7 +618,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = ""; - DEVELOPMENT_TEAM = 95J8WZ4TN8; + DEVELOPMENT_TEAM = 4TD3JXVDW7; ENABLE_PREVIEWS = YES; ENABLE_TESTABILITY = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -634,6 +634,8 @@ "$(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", ); GCC_OPTIMIZATION_LEVEL = fast; GENERATE_INFOPLIST_FILE = YES; @@ -677,9 +679,13 @@ "$(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; + PRODUCT_BUNDLE_IDENTIFIER = xyz.belladev.MeloNX; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OBJC_BRIDGING_HEADER = "MeloNX/App/Core/Headers/Ryujinx-Header.h"; @@ -697,7 +703,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = ""; - DEVELOPMENT_TEAM = 95J8WZ4TN8; + DEVELOPMENT_TEAM = 4TD3JXVDW7; ENABLE_PREVIEWS = YES; ENABLE_TESTABILITY = YES; FRAMEWORK_SEARCH_PATHS = ( @@ -713,6 +719,8 @@ "$(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", ); GCC_OPTIMIZATION_LEVEL = fast; GENERATE_INFOPLIST_FILE = YES; @@ -756,9 +764,13 @@ "$(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; + PRODUCT_BUNDLE_IDENTIFIER = xyz.belladev.MeloNX; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OBJC_BRIDGING_HEADER = "MeloNX/App/Core/Headers/Ryujinx-Header.h"; diff --git a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/benlawrence.xcuserdatad/UserInterfaceState.xcuserstate b/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/benlawrence.xcuserdatad/UserInterfaceState.xcuserstate index d95c76d6512f8a9579497e23d38ec26472381107..7351432d8eab3d455020e207abedb540b2d0ff6a 100644 GIT binary patch literal 49941 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ɠg!a;T68ArOw*a6GfQW_&O)8VI!kp< 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 delta 16489 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 diff --git a/src/MeloNX/MeloNX.xcodeproj/xcshareddata/xcschemes/MeloNX - Release.xcscheme b/src/MeloNX/MeloNX.xcodeproj/xcshareddata/xcschemes/MeloNX - Release.xcscheme new file mode 100644 index 000000000..951dac0dc --- /dev/null +++ b/src/MeloNX/MeloNX.xcodeproj/xcshareddata/xcschemes/MeloNX - Release.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/MeloNX/MeloNX.xcodeproj/xcuserdata/benlawrence.xcuserdatad/xcschemes/xcschememanagement.plist b/src/MeloNX/MeloNX.xcodeproj/xcuserdata/benlawrence.xcuserdatad/xcschemes/xcschememanagement.plist index 1b8118340..af2d3e04d 100644 --- a/src/MeloNX/MeloNX.xcodeproj/xcuserdata/benlawrence.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/src/MeloNX/MeloNX.xcodeproj/xcuserdata/benlawrence.xcuserdatad/xcschemes/xcschememanagement.plist @@ -4,6 +4,11 @@ SchemeUserState + MeloNX - Release.xcscheme_^#shared#^_ + + orderHint + 1 + MeloNX.xcscheme_^#shared#^_ orderHint @@ -12,7 +17,7 @@ Ryujinx.xcscheme_^#shared#^_ orderHint - 1 + 3 com.Stossy11.MeloNX.RyujinxAg.xcscheme_^#shared#^_ diff --git a/src/MeloNX/MeloNX/App/Views/ContentView.swift b/src/MeloNX/MeloNX/App/Views/ContentView.swift index 3e9ba4f5d..eec6d7b56 100644 --- a/src/MeloNX/MeloNX/App/Views/ContentView.swift +++ b/src/MeloNX/MeloNX/App/Views/ContentView.swift @@ -232,9 +232,16 @@ struct ContentView: View { } Air.play(AnyView( - Text("Select Game") - .font(.system(size: 100)) - + VStack { + Image(systemName: "gamecontroller") + .font(.system(size: 300)) + .foregroundColor(.gray) + .padding(.bottom, 10) + + Text("Select Game") + .font(.system(size: 150)) + .bold() + } )) let isJIT = UserDefaults.standard.bool(forKey: "JIT-ENABLED") diff --git a/src/MeloNX/MeloNX/App/Views/SettingsView/SettingsView.swift b/src/MeloNX/MeloNX/App/Views/SettingsView/SettingsView.swift index 1e1985753..0e4744e73 100644 --- a/src/MeloNX/MeloNX/App/Views/SettingsView/SettingsView.swift +++ b/src/MeloNX/MeloNX/App/Views/SettingsView/SettingsView.swift @@ -48,8 +48,6 @@ struct SettingsView: View { var body: some View { iOSNav { List { - - // Graphics & Performance Section { Picker(selection: $config.aspectRatio) { @@ -80,8 +78,6 @@ struct SettingsView: View { labelWithIcon("Macro HLE", iconName: "gearshape") }.tint(.blue) - - VStack(alignment: .leading, spacing: 10) { HStack { labelWithIcon("Resolution Scale", iconName: "magnifyingglass") @@ -205,7 +201,6 @@ struct SettingsView: View { ForEach(currentControllers) { controller in - var customBinding: Binding { Binding( get: { currentControllers.contains(controller) }, @@ -327,35 +322,32 @@ struct SettingsView: View { } - Section { - - - Toggle(isOn: $config.expandRam) { - labelWithIcon("Expand Guest Ram (6GB)", iconName: "exclamationmark.bubble") - } - .tint(.red) + Section { + Toggle(isOn: $config.expandRam) { + labelWithIcon("Expand Guest Ram (6GB)", iconName: "exclamationmark.bubble") + } + .tint(.red) - Toggle(isOn: $config.ignoreMissingServices) { - labelWithIcon("Ignore Missing Services", iconName: "waveform.path") + Toggle(isOn: $config.ignoreMissingServices) { + labelWithIcon("Ignore Missing Services", iconName: "waveform.path") + } + .tint(.red) + } header: { + Text("Hacks") + .font(.title3.weight(.semibold)) + .textCase(nil) + .headerProminence(.increased) } - .tint(.red) - } header: { - Text("Hacks") - .font(.title3.weight(.semibold)) - .textCase(nil) - .headerProminence(.increased) - } // Other Settings Section { - Toggle(isOn: $ssb) { labelWithIcon("Screenshot Button", iconName: "square.and.arrow.up") } .tint(.blue) Toggle(isOn: $useTrollStore) { - labelWithIcon("TrollStore", iconName: "troll.svg") + labelWithIcon("TrollStore JIT", iconName: "troll.svg") } .tint(.blue) @@ -368,21 +360,18 @@ struct SettingsView: View { labelWithIcon("Trace Logs", iconName: "waveform.path") } .tint(.blue) - - } header: { Text("Miscellaneous Options") .font(.title3.weight(.semibold)) .textCase(nil) .headerProminence(.increased) } footer: { - Text("Enable trace and debug logs for troubleshooting, enable Screenshotting without distractions and Enable automatic TrollStore JIT.") + Text("Enable trace and debug logs for advanced troubleshooting (Note: This degrades performance),\nEnable Screenshot Button for better screenshots\nand Enable TrollStore for automatic TrollStore JIT.") } // Advanced Section { DisclosureGroup { - Toggle(isOn: $mVKPreFillBuffer) { labelWithIcon("MVK: Pre-Fill Metal Command Buffers", iconName: "gearshape") }.tint(.blue) @@ -392,9 +381,12 @@ struct SettingsView: View { Spacer() Text("\(String(Int(getpagesize())))") .foregroundColor(.secondary) - } + Toggle(isOn: $config.dfsIntegrityChecks) { + labelWithIcon("Disable FS Integrity Checks", iconName: "checkmark.shield") + }.tint(.blue) + TextField("Additional Arguments", text: Binding( get: { config.additionalArgs.joined(separator: " ") @@ -417,7 +409,6 @@ struct SettingsView: View { .font(.body) } - } label: { Text("Advanced Options") } @@ -429,7 +420,6 @@ struct SettingsView: View { } footer: { Text("For advanced users. See page size or add custom arguments for experimental features. (Please don't touch this if you don't know what you're doing)") } - } .searchable(text: $searchText, placement: .navigationBarDrawer(displayMode: .always)) .navigationTitle("Settings") @@ -542,8 +532,6 @@ struct SVGView: UIViewRepresentable { svgName.removeLast(4) } - - let svgLayer = UIView(SVGNamed: svgName) { svgLayer in svgLayer.fillColor = UIColor(color).cgColor // Apply the provided color svgLayer.resizeToFit(hammock.frame) diff --git a/src/MeloNX/MeloNX/Info.plist b/src/MeloNX/MeloNX/Info.plist index d23c87fd9..74e5ca954 100644 --- a/src/MeloNX/MeloNX/Info.plist +++ b/src/MeloNX/MeloNX/Info.plist @@ -4,6 +4,11 @@ MeloID 83f67a0a96bd8628a150d7853e360db5bae64e7769524fae399c4b8e7e6aff17 + UIBackgroundModes + + processing + fetch + UIFileSharingEnabled UTExportedTypeDeclarations diff --git a/src/MeloNX/MeloNX/MeloNXApp.swift b/src/MeloNX/MeloNX/MeloNXApp.swift index 665bf9e4c..cc72ac72c 100644 --- a/src/MeloNX/MeloNX/MeloNXApp.swift +++ b/src/MeloNX/MeloNX/MeloNXApp.swift @@ -9,14 +9,10 @@ import SwiftUI import UIKit import CryptoKit - - @main struct MeloNXApp: App { - @State var showed = false - var body: some Scene { WindowGroup { ZStack { @@ -37,7 +33,11 @@ struct MeloNXApp: App { } } .onAppear { + #if RELEASE initR() + #else + showed = true + #endif } .frame(maxWidth: .infinity, maxHeight: .infinity) .background(Color.black.opacity(1)) @@ -69,19 +69,13 @@ struct MeloNXApp: App { } } } - } - } else { showDMCAAlert() } - } - } - } - } @@ -175,7 +169,6 @@ func drmcheck(completion: @escaping (Bool) -> Void) { } else { completion(false) } - } */ @@ -187,8 +180,6 @@ func InitializeRyujinx(completion: @escaping (Bool) -> Void) { return } - - if (detectRoms(path: path) != value) { completion(false) } @@ -209,7 +200,6 @@ func InitializeRyujinx(completion: @escaping (Bool) -> Void) { completion(false) } - guard let httpResponse = response as? HTTPURLResponse else { completion(false) return @@ -231,8 +221,6 @@ func detectRoms(path string: String) -> String { return romHash.compactMap { String(format: "%02x", $0) }.joined() } - - func addFolders(_ folderPath: String) -> String? { let fileManager = FileManager.default if let data = Data(base64Encoded: folderPath), @@ -243,7 +231,6 @@ func addFolders(_ folderPath: String) -> String? { } extension String { - func print() { Swift.print(self) }