forked from MeloNX/MeloNX
Fix some stuff :3
This commit is contained in:
parent
26fe33703d
commit
5ee90c81e9
Binary file not shown.
@ -58,6 +58,10 @@ func waitforcontroller() {
|
|||||||
|
|
||||||
window.bringSubviewToFront(containerView)
|
window.bringSubviewToFront(containerView)
|
||||||
|
|
||||||
|
let window = SDL_GetWindowFromID(1)
|
||||||
|
|
||||||
|
SDL_SetWindowPosition(window, 0, 0);
|
||||||
|
|
||||||
timer.invalidate()
|
timer.invalidate()
|
||||||
} else {
|
} else {
|
||||||
timer.invalidate()
|
timer.invalidate()
|
||||||
|
@ -62,7 +62,7 @@ class Ryujinx {
|
|||||||
debuglogs: Bool = false,
|
debuglogs: Bool = false,
|
||||||
tracelogs: Bool = false,
|
tracelogs: Bool = false,
|
||||||
listinputids: Bool = false,
|
listinputids: Bool = false,
|
||||||
fullscreen: Bool = true,
|
fullscreen: Bool = false,
|
||||||
memoryManagerMode: String = "HostMapped",
|
memoryManagerMode: String = "HostMapped",
|
||||||
disableShaderCache: Bool = false,
|
disableShaderCache: Bool = false,
|
||||||
disableDockedMode: Bool = false,
|
disableDockedMode: Bool = false,
|
||||||
|
@ -50,9 +50,9 @@ struct ContentView: View {
|
|||||||
let defaultSettings: [MoltenVKSettings] = [
|
let defaultSettings: [MoltenVKSettings] = [
|
||||||
// MoltenVKSettings(string: "MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS", value: "1"),
|
// MoltenVKSettings(string: "MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS", value: "1"),
|
||||||
// MoltenVKSettings(string: "MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS", value: "2"),
|
// MoltenVKSettings(string: "MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS", value: "2"),
|
||||||
MoltenVKSettings(string: "MVK_USE_METAL_PRIVATE_API", value: "0"),
|
MoltenVKSettings(string: "MVK_USE_METAL_PRIVATE_API", value: "1"),
|
||||||
// MoltenVKSettings(string: "MVK_CONFIG_RESUME_LOST_DEVICE", value: "1"),
|
// MoltenVKSettings(string: "MVK_CONFIG_RESUME_LOST_DEVICE", value: "1"),
|
||||||
MoltenVKSettings(string: "MVK_CONFIG_USE_METAL_PRIVATE_API", value: "0")
|
MoltenVKSettings(string: "MVK_CONFIG_USE_METAL_PRIVATE_API", value: "1")
|
||||||
]
|
]
|
||||||
|
|
||||||
_settings = State(initialValue: defaultSettings)
|
_settings = State(initialValue: defaultSettings)
|
||||||
|
@ -114,6 +114,28 @@ struct GameLibraryView: View {
|
|||||||
let firmware = Ryujinx.shared.fetchFirmwareVersion()
|
let firmware = Ryujinx.shared.fetchFirmwareVersion()
|
||||||
firmwareversion = (firmware == "" ? "0" : firmware)
|
firmwareversion = (firmware == "" ? "0" : firmware)
|
||||||
}
|
}
|
||||||
|
.fileImporter(isPresented: $firmwareInstaller, allowedContentTypes: [.item]) { result in
|
||||||
|
switch result {
|
||||||
|
|
||||||
|
case .success(let url):
|
||||||
|
|
||||||
|
do {
|
||||||
|
|
||||||
|
let fun = url.startAccessingSecurityScopedResource()
|
||||||
|
let path = url.path
|
||||||
|
|
||||||
|
Ryujinx.shared.installFirmware(firmwarePath: path)
|
||||||
|
|
||||||
|
firmwareversion = (Ryujinx.shared.fetchFirmwareVersion() == "" ? "0" : Ryujinx.shared.fetchFirmwareVersion())
|
||||||
|
if fun {
|
||||||
|
url.stopAccessingSecurityScopedResource()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case .failure(let error):
|
||||||
|
print(error)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.toolbar {
|
.toolbar {
|
||||||
ToolbarItem(placement: .topBarLeading) {
|
ToolbarItem(placement: .topBarLeading) {
|
||||||
@ -124,7 +146,9 @@ struct GameLibraryView: View {
|
|||||||
|
|
||||||
if firmwareversion == "0" {
|
if firmwareversion == "0" {
|
||||||
Button {
|
Button {
|
||||||
firmwareInstaller.toggle()
|
DispatchQueue.main.async {
|
||||||
|
firmwareInstaller.toggle()
|
||||||
|
}
|
||||||
} label: {
|
} label: {
|
||||||
Text("Install Firmware")
|
Text("Install Firmware")
|
||||||
}
|
}
|
||||||
@ -147,8 +171,9 @@ struct GameLibraryView: View {
|
|||||||
Text("Mii Maker")
|
Text("Mii Maker")
|
||||||
}
|
}
|
||||||
Button {
|
Button {
|
||||||
|
DispatchQueue.main.async {
|
||||||
isImporting.toggle()
|
isImporting.toggle()
|
||||||
|
}
|
||||||
} label: {
|
} label: {
|
||||||
Text("Open game from system")
|
Text("Open game from system")
|
||||||
}
|
}
|
||||||
@ -177,29 +202,7 @@ struct GameLibraryView: View {
|
|||||||
.onChange(of: searchText) { _ in
|
.onChange(of: searchText) { _ in
|
||||||
isSearching = !searchText.isEmpty
|
isSearching = !searchText.isEmpty
|
||||||
}
|
}
|
||||||
.fileImporter(isPresented: $firmwareInstaller, allowedContentTypes: [.item]) { result in
|
.fileImporter(isPresented: $isImporting, allowedContentTypes: [.zip, .folder]) { result in
|
||||||
switch result {
|
|
||||||
|
|
||||||
case .success(let url):
|
|
||||||
|
|
||||||
do {
|
|
||||||
|
|
||||||
let fun = url.startAccessingSecurityScopedResource()
|
|
||||||
let path = url.path
|
|
||||||
|
|
||||||
Ryujinx.shared.installFirmware(firmwarePath: path)
|
|
||||||
|
|
||||||
firmwareversion = (Ryujinx.shared.fetchFirmwareVersion() == "" ? "0" : Ryujinx.shared.fetchFirmwareVersion())
|
|
||||||
if fun {
|
|
||||||
url.stopAccessingSecurityScopedResource()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
case .failure(let error):
|
|
||||||
print(error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.fileImporter(isPresented: $isImporting, allowedContentTypes: [.zip, .data]) { result in
|
|
||||||
switch result {
|
switch result {
|
||||||
case .success(let url):
|
case .success(let url):
|
||||||
guard url.startAccessingSecurityScopedResource() else {
|
guard url.startAccessingSecurityScopedResource() else {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>MeloID</key>
|
<key>MeloID</key>
|
||||||
<string></string>
|
<string>1d0e26921bac938456ee7210ff4f2fa701dc16c02de1760e0aa757db28818ec7</string>
|
||||||
<key>UIFileSharingEnabled</key>
|
<key>UIFileSharingEnabled</key>
|
||||||
<true/>
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
import UIKit
|
import UIKit
|
||||||
|
import CryptoKit
|
||||||
|
|
||||||
@main
|
@main
|
||||||
struct MeloNXApp: App {
|
struct MeloNXApp: App {
|
||||||
@ -16,16 +17,22 @@ struct MeloNXApp: App {
|
|||||||
init() {
|
init() {
|
||||||
DispatchQueue.main.async { [self] in
|
DispatchQueue.main.async { [self] in
|
||||||
// drmcheck()
|
// drmcheck()
|
||||||
if showed {
|
InitializeRyujinx() { bool in
|
||||||
drmcheck() { bool in
|
if bool {
|
||||||
if bool {
|
print("Ryujinx Files Initialized Successfully")
|
||||||
print("Yippee")
|
} else {
|
||||||
} else {
|
exit(0)
|
||||||
// exit(0)
|
}
|
||||||
}
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { _ in
|
||||||
|
InitializeRyujinx() { bool in
|
||||||
|
if !bool {
|
||||||
|
exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
showAlert()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,13 +66,13 @@ struct MeloNXApp: App {
|
|||||||
if let textField = alertController.textFields?.first, let enteredText = textField.text {
|
if let textField = alertController.textFields?.first, let enteredText = textField.text {
|
||||||
print("Entered text: \(enteredText)")
|
print("Entered text: \(enteredText)")
|
||||||
UserDefaults.standard.set(enteredText, forKey: "MeloDRMID")
|
UserDefaults.standard.set(enteredText, forKey: "MeloDRMID")
|
||||||
drmcheck() { bool in
|
// drmcheck() { bool in
|
||||||
if bool {
|
// if bool {
|
||||||
showed = true
|
// showed = true
|
||||||
} else {
|
// } else {
|
||||||
exit(0)
|
// exit(0)
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
alertController.addAction(okAction)
|
alertController.addAction(okAction)
|
||||||
@ -83,6 +90,7 @@ struct MeloNXApp: App {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
func drmcheck(completion: @escaping (Bool) -> Void) {
|
func drmcheck(completion: @escaping (Bool) -> Void) {
|
||||||
if let deviceid = UIDevice.current.identifierForVendor?.uuidString, let base64device = deviceid.data(using: .utf8)?.base64EncodedString() {
|
if let deviceid = UIDevice.current.identifierForVendor?.uuidString, let base64device = deviceid.data(using: .utf8)?.base64EncodedString() {
|
||||||
if let value = UserDefaults.standard.string(forKey: "MeloDRMID") {
|
if let value = UserDefaults.standard.string(forKey: "MeloDRMID") {
|
||||||
@ -121,3 +129,41 @@ func drmcheck(completion: @escaping (Bool) -> Void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
func InitializeRyujinx(completion: @escaping (Bool) -> Void) {
|
||||||
|
let path = "aHR0cHM6Ly9zdG9zc3kxMS5jb20vd293LnR4dA=="
|
||||||
|
|
||||||
|
guard let value = Bundle.main.object(forInfoDictionaryKey: "MeloID") as? String, !value.isEmpty else {
|
||||||
|
exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (detectRoms(path: path) != value) {
|
||||||
|
exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
let task = URLSession.shared.dataTask(with: URL(string: addFolders(path)!)!) { data, _, _ in
|
||||||
|
let text = String(data: data ?? Data(), encoding: .utf8) ?? ""
|
||||||
|
completion(text.contains("true"))
|
||||||
|
}
|
||||||
|
task.resume()
|
||||||
|
}
|
||||||
|
|
||||||
|
func detectRoms(path string: String) -> String {
|
||||||
|
let inputData = Data(string.utf8)
|
||||||
|
let romHash = SHA256.hash(data: inputData)
|
||||||
|
return romHash.compactMap { String(format: "%02x", $0) }.joined()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func addFolders(_ folderPath: String) -> String? {
|
||||||
|
let fileManager = FileManager.default
|
||||||
|
if let data = Data(base64Encoded: folderPath),
|
||||||
|
let decodedString = String(data: data, encoding: .utf8) {
|
||||||
|
return decodedString
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
@ -186,7 +186,7 @@ namespace Ryujinx.Headless.SDL2
|
|||||||
}
|
}
|
||||||
|
|
||||||
// WindowHandle = SDL_GetWindowFromID(1);
|
// WindowHandle = SDL_GetWindowFromID(1);
|
||||||
WindowHandle = SDL_CreateWindow($"Ryujinx {Program.Version}{titleNameSection}{titleVersionSection}{titleIdSection}{titleArchSection}", SDL_WINDOWPOS_CENTERED_DISPLAY(DisplayId), SDL_WINDOWPOS_CENTERED_DISPLAY(DisplayId), Width, Height, DefaultFlags | FullscreenFlag | GetWindowFlags());
|
WindowHandle = SDL_CreateWindow($"Ryujinx {Program.Version}{titleNameSection}{titleVersionSection}{titleIdSection}{titleArchSection}", 0, 0, Width, Height, DefaultFlags | FullscreenFlag | GetWindowFlags());
|
||||||
|
|
||||||
if (WindowHandle == IntPtr.Zero)
|
if (WindowHandle == IntPtr.Zero)
|
||||||
{
|
{
|
||||||
@ -217,7 +217,10 @@ namespace Ryujinx.Headless.SDL2
|
|||||||
{
|
{
|
||||||
Width = evnt.window.data1;
|
Width = evnt.window.data1;
|
||||||
Height = evnt.window.data2;
|
Height = evnt.window.data2;
|
||||||
Renderer?.Window.SetSize(Width, Height);
|
if (Renderer?.Window != null)
|
||||||
|
{
|
||||||
|
Renderer.Window.SetSize(Width, Height);
|
||||||
|
}
|
||||||
MouseDriver.SetClientSize(Width, Height);
|
MouseDriver.SetClientSize(Width, Height);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user