From 7da6a5d8a51dc0472d8cfb4e3de3eb3f73ef2b08 Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Tue, 30 Apr 2019 15:10:07 -0700 Subject: [PATCH 1/5] =?UTF-8?q?Fixes=20issue=20where=20cheats=20don?= =?UTF-8?q?=E2=80=99t=20wrap=20onto=20next=20line=20correctly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Delta/Pause Menu/Cheats/CheatTextView.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Delta/Pause Menu/Cheats/CheatTextView.swift b/Delta/Pause Menu/Cheats/CheatTextView.swift index 918b9d8..d545c9c 100644 --- a/Delta/Pause Menu/Cheats/CheatTextView.swift +++ b/Delta/Pause Menu/Cheats/CheatTextView.swift @@ -50,7 +50,9 @@ extension CheatTextView let characterWidth = ("A" as NSString).size(withAttributes: [.font: font]).width let width = characterWidth * CGFloat(format.format.count) - self.textContainer.size = CGSize(width: width, height: 0) + + let adjustedInset = (self.bounds.width - self.textContainerInset.left) - width + self.textContainerInset.right = adjustedInset } } } From da0ec57856f1a0b9d9e0cb535ec3e6c41db299e8 Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Tue, 30 Apr 2019 15:34:22 -0700 Subject: [PATCH 2/5] Improves reliability when previewing games/save states --- Cores/DeltaCore | 2 +- Delta/Game Selection/GameCollectionViewController.swift | 2 ++ Delta/Pause Menu/Save States/SaveStatesViewController.swift | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Cores/DeltaCore b/Cores/DeltaCore index f4d13cc..97e51f6 160000 --- a/Cores/DeltaCore +++ b/Cores/DeltaCore @@ -1 +1 @@ -Subproject commit f4d13cc258575034f60ebcc4b1387c8b04f71238 +Subproject commit 97e51f6ea5935d3ce2d15be796b189bcc70dbbb3 diff --git a/Delta/Game Selection/GameCollectionViewController.swift b/Delta/Game Selection/GameCollectionViewController.swift index 62286f4..6586b19 100644 --- a/Delta/Game Selection/GameCollectionViewController.swift +++ b/Delta/Game Selection/GameCollectionViewController.swift @@ -705,6 +705,8 @@ extension GameCollectionViewController: UIViewControllerPreviewingDelegate let gameViewController = viewControllerToCommit as! PreviewGameViewController let game = gameViewController.game as! Game + gameViewController.pauseEmulation() + let indexPath = self.dataSource.fetchedResultsController.indexPath(forObject: game)! let fileURL = FileManager.default.uniqueTemporaryURL() diff --git a/Delta/Pause Menu/Save States/SaveStatesViewController.swift b/Delta/Pause Menu/Save States/SaveStatesViewController.swift index c432073..6d84722 100644 --- a/Delta/Pause Menu/Save States/SaveStatesViewController.swift +++ b/Delta/Pause Menu/Save States/SaveStatesViewController.swift @@ -596,7 +596,7 @@ extension SaveStatesViewController: UIViewControllerPreviewingDelegate func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) { let gameViewController = viewControllerToCommit as! PreviewGameViewController - gameViewController.emulatorCore?.pause() + gameViewController.pauseEmulation() let fileURL = FileManager.default.uniqueTemporaryURL() if let saveState = gameViewController.emulatorCore?.saveSaveState(to: fileURL) From 9b28d42814f6f21349900f03b888b31291a2d8da Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Tue, 30 Apr 2019 15:42:30 -0700 Subject: [PATCH 3/5] Updates input + video logic to support revised DeltaCore API - Continuous inputs - OpenGLES-based rendering - Thumbsticks in controller skins --- Cores/DeltaCore | 2 +- Cores/GBADeltaCore | 2 +- Cores/GBCDeltaCore | 2 +- Cores/NESDeltaCore | 2 +- Cores/SNESDeltaCore | 2 +- Delta/Base.lproj/Settings.storyboard | 2 +- .../Database/Model/Human/ControllerSkin.swift | 5 ++ Delta/Emulation/GameViewController.swift | 50 +++++++++++-------- .../ControllerInputsViewController.swift | 36 ++++++------- 9 files changed, 58 insertions(+), 45 deletions(-) diff --git a/Cores/DeltaCore b/Cores/DeltaCore index 97e51f6..3373709 160000 --- a/Cores/DeltaCore +++ b/Cores/DeltaCore @@ -1 +1 @@ -Subproject commit 97e51f6ea5935d3ce2d15be796b189bcc70dbbb3 +Subproject commit 3373709956dc2be70563582ba7e308677bb964fa diff --git a/Cores/GBADeltaCore b/Cores/GBADeltaCore index acbcf2b..6c763da 160000 --- a/Cores/GBADeltaCore +++ b/Cores/GBADeltaCore @@ -1 +1 @@ -Subproject commit acbcf2baf8f01302f2a7c6e60783b887160aa163 +Subproject commit 6c763da1513fbe762edbca2cf33cec556ce9536e diff --git a/Cores/GBCDeltaCore b/Cores/GBCDeltaCore index c8084ce..4dcb34a 160000 --- a/Cores/GBCDeltaCore +++ b/Cores/GBCDeltaCore @@ -1 +1 @@ -Subproject commit c8084cee111501c0daffd113f5892050d7738519 +Subproject commit 4dcb34a47e71b81a099bff4dc0ebd28c217ef85b diff --git a/Cores/NESDeltaCore b/Cores/NESDeltaCore index 7ed452b..4dc0f28 160000 --- a/Cores/NESDeltaCore +++ b/Cores/NESDeltaCore @@ -1 +1 @@ -Subproject commit 7ed452b7dff25a68cd503610bee1f3e36216a871 +Subproject commit 4dc0f283116aadf6397c88c1f7fdabcac32367a6 diff --git a/Cores/SNESDeltaCore b/Cores/SNESDeltaCore index d794f67..dc0ec5b 160000 --- a/Cores/SNESDeltaCore +++ b/Cores/SNESDeltaCore @@ -1 +1 @@ -Subproject commit d794f67cdba072f8a9977fb76e8ccaaac09946c0 +Subproject commit dc0ec5b74c0e47e0e35912dfd63dd70f2a3d932e diff --git a/Delta/Base.lproj/Settings.storyboard b/Delta/Base.lproj/Settings.storyboard index a2b7c9f..1174492 100644 --- a/Delta/Base.lproj/Settings.storyboard +++ b/Delta/Base.lproj/Settings.storyboard @@ -372,7 +372,7 @@ - + diff --git a/Delta/Database/Model/Human/ControllerSkin.swift b/Delta/Database/Model/Human/ControllerSkin.swift index 6bd7b4d..c63d2cd 100644 --- a/Delta/Database/Model/Human/ControllerSkin.swift +++ b/Delta/Database/Model/Human/ControllerSkin.swift @@ -66,6 +66,11 @@ extension ControllerSkin: ControllerSkinProtocol return self.controllerSkin?.image(for: traits, preferredSize: preferredSize) } + public func thumbstick(for item: DeltaCore.ControllerSkin.Item, traits: DeltaCore.ControllerSkin.Traits, preferredSize: DeltaCore.ControllerSkin.Size) -> (UIImage, CGSize)? + { + return self.controllerSkin?.thumbstick(for: item, traits: traits, preferredSize: preferredSize) + } + public func inputs(for traits: DeltaCore.ControllerSkin.Traits, at point: CGPoint) -> [Input]? { return self.controllerSkin?.inputs(for: traits, at: point) diff --git a/Delta/Emulation/GameViewController.swift b/Delta/Emulation/GameViewController.swift index 18c3aba..19fdd5d 100644 --- a/Delta/Emulation/GameViewController.swift +++ b/Delta/Emulation/GameViewController.swift @@ -114,9 +114,7 @@ class GameViewController: DeltaCore.GameViewController } private var _isLoadingSaveState = false - - private var context = CIContext(options: [.workingColorSpace: NSNull()]) - + // Sustain Buttons private var isSelectingSustainedButtons = false private var sustainInputsMapping: SustainInputsMapping? @@ -124,6 +122,7 @@ class GameViewController: DeltaCore.GameViewController private var sustainButtonsContentView: UIView! private var sustainButtonsBlurView: UIVisualEffectView! private var sustainButtonsBackgroundView: RSTPlaceholderView! + private var inputsToSustain = [AnyInput: Double]() private var isGyroActive = false private var presentedGyroAlert = false @@ -168,9 +167,9 @@ class GameViewController: DeltaCore.GameViewController } // MARK: - GameControllerReceiver - - override func gameController(_ gameController: GameController, didActivate input: Input) + override func gameController(_ gameController: GameController, didActivate input: Input, value: Double) { - super.gameController(gameController, didActivate: input) + super.gameController(gameController, didActivate: input, value: value) if self.isSelectingSustainedButtons { @@ -178,7 +177,7 @@ class GameViewController: DeltaCore.GameViewController if input != StandardGameControllerInput.menu { - gameController.sustain(input) + self.inputsToSustain[AnyInput(input)] = value } } else if self.emulatorCore?.state == .running @@ -198,15 +197,23 @@ class GameViewController: DeltaCore.GameViewController { super.gameController(gameController, didDeactivate: input) - guard !self.isSelectingSustainedButtons else { return } - - guard let actionInput = ActionInput(input: input) else { return } - - switch actionInput + if self.isSelectingSustainedButtons { - case .quickSave: break - case .quickLoad: break - case .fastForward: self.performFastForwardAction(activate: false) + if input.isContinuous + { + self.inputsToSustain[AnyInput(input)] = nil + } + } + else + { + guard let actionInput = ActionInput(input: input) else { return } + + switch actionInput + { + case .quickSave: break + case .quickLoad: break + case .fastForward: self.performFastForwardAction(activate: false) + } } } } @@ -320,7 +327,7 @@ extension GameViewController pauseViewController.sustainButtonsItem?.isSelected = gameController.sustainedInputs.count > 0 pauseViewController.sustainButtonsItem?.action = { [unowned self, unowned pauseViewController] item in - for input in gameController.sustainedInputs + for input in gameController.sustainedInputs.keys { gameController.unsustain(input) } @@ -650,10 +657,7 @@ extension GameViewController: SaveStatesViewControllerDelegate self.emulatorCore?.saveSaveState(to: saveState.fileURL) } - if - let outputImage = self.gameView.outputImage, - let quartzImage = self.context.createCGImage(outputImage, from: outputImage.extent), - let data = UIImage(cgImage: quartzImage).pngData() + if let snapshot = self.gameView.snapshot(), let data = snapshot.pngData() { do { @@ -803,10 +807,10 @@ private extension GameViewController self.updateControllers() self.sustainInputsMapping = nil - // Reactivate all sustained inputs, since they will now be mapped to game inputs. - for input in gameController.sustainedInputs + // Activate all sustained inputs, since they will now be mapped to game inputs. + for (input, value) in self.inputsToSustain { - gameController.activate(input) + gameController.sustain(input, value: value) } let blurEffect = self.sustainButtonsBlurView.effect @@ -818,6 +822,8 @@ private extension GameViewController self.sustainButtonsContentView.isHidden = true self.sustainButtonsBlurView.effect = blurEffect } + + self.inputsToSustain = [:] } } diff --git a/Delta/Settings/Controllers/ControllerInputsViewController.swift b/Delta/Settings/Controllers/ControllerInputsViewController.swift index c7bc2ba..b4a8cb3 100644 --- a/Delta/Settings/Controllers/ControllerInputsViewController.swift +++ b/Delta/Settings/Controllers/ControllerInputsViewController.swift @@ -123,6 +123,7 @@ private extension ControllerInputsViewController // Update controller view's controller skin. self.gameViewController.controllerView.controllerSkin = DeltaCore.ControllerSkin.standardControllerSkin(for: self.system.gameType) + self.gameViewController.view.setNeedsUpdateConstraints() // Fetch input mapping if it hasn't already been fetched. if let gameController = self.gameController, let playerIndex = gameController.playerIndex, self.inputMappings[self.system] == nil @@ -417,31 +418,32 @@ private extension ControllerInputsViewController { case .standard: itemFrame = item.frame case let .directional(up, down, left, right): + let frame = (item.kind == .thumbstick) ? item.extendedFrame : item.frame switch input.stringValue { case up.stringValue: - itemFrame = CGRect(x: item.frame.minX + item.frame.width / 3, - y: item.frame.minY, - width: item.frame.width / 3, - height: item.frame.height / 3) + itemFrame = CGRect(x: frame.minX + frame.width / 3, + y: frame.minY, + width: frame.width / 3, + height: frame.height / 3) case down.stringValue: - itemFrame = CGRect(x: item.frame.minX + item.frame.width / 3, - y: item.frame.minY + (item.frame.height / 3) * 2, - width: item.frame.width / 3, - height: item.frame.height / 3) + itemFrame = CGRect(x: frame.minX + frame.width / 3, + y: frame.minY + (frame.height / 3) * 2, + width: frame.width / 3, + height: frame.height / 3) case left.stringValue: - itemFrame = CGRect(x: item.frame.minX, - y: item.frame.minY + (item.frame.height / 3), - width: item.frame.width / 3, - height: item.frame.height / 3) + itemFrame = CGRect(x: frame.minX, + y: frame.minY + (frame.height / 3), + width: frame.width / 3, + height: frame.height / 3) case right.stringValue: - itemFrame = CGRect(x: item.frame.minX + (item.frame.width / 3) * 2, - y: item.frame.minY + (item.frame.height / 3), - width: item.frame.width / 3, - height: item.frame.height / 3) + itemFrame = CGRect(x: frame.minX + (frame.width / 3) * 2, + y: frame.minY + (frame.height / 3), + width: frame.width / 3, + height: frame.height / 3) default: itemFrame = nil } @@ -478,7 +480,7 @@ private extension ControllerInputsViewController extension ControllerInputsViewController: GameControllerReceiver { - func gameController(_ gameController: GameController, didActivate controllerInput: DeltaCore.Input) + func gameController(_ gameController: GameController, didActivate controllerInput: DeltaCore.Input, value: Double) { guard self.isViewLoaded else { return } From 0046bfaf46d97d772faea0c6aeeef278a58ff0ca Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Fri, 21 Jun 2019 12:07:30 -0700 Subject: [PATCH 4/5] Adds support for N64 games --- .gitmodules | 5 +- Cores/N64DeltaCore | 1 + Delta.xcodeproj/project.pbxproj | 19 +++++++ Delta.xcworkspace/contents.xcworkspacedata | 3 ++ Delta/Base.lproj/Settings.storyboard | 27 ++++++++-- .../Extensions/DeltaCoreProtocol+Delta.swift | 1 + Delta/Settings/Settings.swift | 1 + Delta/Supporting Files/Info.plist | 54 +++++++++++++++---- Delta/Systems/System.swift | 9 ++++ 9 files changed, 104 insertions(+), 16 deletions(-) create mode 160000 Cores/N64DeltaCore diff --git a/.gitmodules b/.gitmodules index 9131605..098475f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -18,4 +18,7 @@ url = https://github.com/rileytestut/Harmony.git [submodule "Cores/NESDeltaCore"] path = Cores/NESDeltaCore - url = git@github.com:rileytestut/NESDeltaCore.git \ No newline at end of file + url = git@github.com:rileytestut/NESDeltaCore.git +[submodule "Cores/N64DeltaCore"] + path = Cores/N64DeltaCore + url = git@github.com:rileytestut/N64DeltaCore.git diff --git a/Cores/N64DeltaCore b/Cores/N64DeltaCore new file mode 160000 index 0000000..0246be2 --- /dev/null +++ b/Cores/N64DeltaCore @@ -0,0 +1 @@ +Subproject commit 0246be2de6dc282397703ce2190ee7f3ed4cc9fc diff --git a/Delta.xcodeproj/project.pbxproj b/Delta.xcodeproj/project.pbxproj index 5bbdf2d..35204c8 100644 --- a/Delta.xcodeproj/project.pbxproj +++ b/Delta.xcodeproj/project.pbxproj @@ -107,6 +107,7 @@ BF71CF871FE90006001F1613 /* AppIconShortcutsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF71CF861FE90006001F1613 /* AppIconShortcutsViewController.swift */; }; BF71CF8A1FE904B1001F1613 /* GameTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BF71CF891FE904B1001F1613 /* GameTableViewCell.xib */; }; BF797A2D1C2D339F00F1A000 /* UILabel+FontSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF797A2C1C2D339F00F1A000 /* UILabel+FontSize.swift */; }; + BF79966E224C076C009B094F /* N64DeltaCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BF79966C224C075A009B094F /* N64DeltaCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; BF7AE8081C2E858400B1B5BC /* GridMenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7AE8041C2E858400B1B5BC /* GridMenuViewController.swift */; }; BF7AE80A1C2E8C7600B1B5BC /* UIColor+Delta.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7AE8091C2E8C7600B1B5BC /* UIColor+Delta.swift */; }; BF80E1D21F13117000847008 /* ControllerInputsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF616A121F08184A0077F8B2 /* ControllerInputsViewController.swift */; }; @@ -127,6 +128,11 @@ BFAA1FED1B8AA4FA00495943 /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFAA1FEC1B8AA4FA00495943 /* Settings.swift */; }; BFAB9F7D219A43380080EC7D /* SyncManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFAB9F7C219A43380080EC7D /* SyncManager.swift */; }; BFAB9F88219A4B670080EC7D /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = BFAB9F87219A4B670080EC7D /* GoogleService-Info.plist */; }; + BFB3593A2278FD0000CFD920 /* N64DeltaCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF79966C224C075A009B094F /* N64DeltaCore.framework */; }; + BFB359432278FD7E00CFD920 /* N64DeltaCore_Video.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BFB359412278FD6700CFD920 /* N64DeltaCore_Video.framework */; }; + BFB359442278FD7E00CFD920 /* N64DeltaCore_Video.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BFB359412278FD6700CFD920 /* N64DeltaCore_Video.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + BFB359452278FD8100CFD920 /* N64DeltaCore_RSP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BFB359422278FD6800CFD920 /* N64DeltaCore_RSP.framework */; }; + BFB359462278FD8100CFD920 /* N64DeltaCore_RSP.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BFB359422278FD6800CFD920 /* N64DeltaCore_RSP.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; BFBAB2E31EB685A2004E0B0E /* DeltaCoreProtocol+Delta.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFBAB2E21EB685A2004E0B0E /* DeltaCoreProtocol+Delta.swift */; }; BFC3628021ADE2BA00EF2BE6 /* UIAlertController+Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFC3627F21ADE2BA00EF2BE6 /* UIAlertController+Error.swift */; }; BFC6F7B81F435BC500221B96 /* Input+Display.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFC6F7B71F435BC500221B96 /* Input+Display.swift */; }; @@ -171,11 +177,14 @@ BF9F4FD01AAD7B87004C9500 /* DeltaCore.framework in Embed Frameworks */, BFDE2CD2222DF36A008038E0 /* SwiftyDropbox.framework in Embed Frameworks */, BF48F75C219A1F8A00BC2FC1 /* Harmony_Drive.framework in Embed Frameworks */, + BF79966E224C076C009B094F /* N64DeltaCore.framework in Embed Frameworks */, BF48F756219A1EF000BC2FC1 /* Harmony.framework in Embed Frameworks */, + BFB359462278FD8100CFD920 /* N64DeltaCore_RSP.framework in Embed Frameworks */, BFF0742D1E9DC17500ACDF4A /* GBCDeltaCore.framework in Embed Frameworks */, BFEC732E1AAECC4A00650035 /* Roxas.framework in Embed Frameworks */, BF0418151D01E93400E85BCF /* GBADeltaCore.framework in Embed Frameworks */, BFDE2CD4222DF36A008038E0 /* Alamofire.framework in Embed Frameworks */, + BFB359442278FD7E00CFD920 /* N64DeltaCore_Video.framework in Embed Frameworks */, BF144C652238511400C387E1 /* Harmony_Dropbox.framework in Embed Frameworks */, BF98C9832204D9AB006B95AC /* NESDeltaCore.framework in Embed Frameworks */, BF99C6951D0A9AA600BA92BC /* SNESDeltaCore.framework in Embed Frameworks */, @@ -283,6 +292,7 @@ BF71CF861FE90006001F1613 /* AppIconShortcutsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppIconShortcutsViewController.swift; sourceTree = ""; }; BF71CF891FE904B1001F1613 /* GameTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GameTableViewCell.xib; sourceTree = ""; }; BF797A2C1C2D339F00F1A000 /* UILabel+FontSize.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UILabel+FontSize.swift"; sourceTree = ""; }; + BF79966C224C075A009B094F /* N64DeltaCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = N64DeltaCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; BF7AE8041C2E858400B1B5BC /* GridMenuViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GridMenuViewController.swift; sourceTree = ""; }; BF7AE8091C2E8C7600B1B5BC /* UIColor+Delta.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+Delta.swift"; sourceTree = ""; }; BF8A333321A484A000A42FD4 /* BadgedTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BadgedTableViewCell.swift; sourceTree = ""; }; @@ -297,6 +307,8 @@ BFAA1FEC1B8AA4FA00495943 /* Settings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = ""; }; BFAB9F7C219A43380080EC7D /* SyncManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncManager.swift; sourceTree = ""; }; BFAB9F87219A4B670080EC7D /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; + BFB359412278FD6700CFD920 /* N64DeltaCore_Video.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = N64DeltaCore_Video.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BFB359422278FD6800CFD920 /* N64DeltaCore_RSP.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = N64DeltaCore_RSP.framework; sourceTree = BUILT_PRODUCTS_DIR; }; BFBAB2E21EB685A2004E0B0E /* DeltaCoreProtocol+Delta.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DeltaCoreProtocol+Delta.swift"; sourceTree = ""; }; BFC134E01AAD82460087AD7B /* SNESDeltaCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SNESDeltaCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; BFC3627F21ADE2BA00EF2BE6 /* UIAlertController+Error.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIAlertController+Error.swift"; sourceTree = ""; }; @@ -335,12 +347,15 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + BFB3593A2278FD0000CFD920 /* N64DeltaCore.framework in Frameworks */, BF9F4FCF1AAD7B87004C9500 /* DeltaCore.framework in Frameworks */, BFEC732D1AAECC4A00650035 /* Roxas.framework in Frameworks */, BFDE2CD3222DF36A008038E0 /* Alamofire.framework in Frameworks */, BF48F75B219A1F8A00BC2FC1 /* Harmony_Drive.framework in Frameworks */, + BFB359452278FD8100CFD920 /* N64DeltaCore_RSP.framework in Frameworks */, BF99C6941D0A9AA600BA92BC /* SNESDeltaCore.framework in Frameworks */, BF98C9822204D9AB006B95AC /* NESDeltaCore.framework in Frameworks */, + BFB359432278FD7E00CFD920 /* N64DeltaCore_Video.framework in Frameworks */, BF0418141D01E93400E85BCF /* GBADeltaCore.framework in Frameworks */, BF072010219A3A9D00F05DA4 /* ZIPFoundation.framework in Frameworks */, BFDE2CD1222DF36A008038E0 /* SwiftyDropbox.framework in Frameworks */, @@ -638,6 +653,9 @@ BF9F4FCD1AAD7B25004C9500 /* Frameworks */ = { isa = PBXGroup; children = ( + BFB359412278FD6700CFD920 /* N64DeltaCore_Video.framework */, + BFB359422278FD6800CFD920 /* N64DeltaCore_RSP.framework */, + BF79966C224C075A009B094F /* N64DeltaCore.framework */, BFDE2CC6222DF345008038E0 /* Harmony_Dropbox.framework */, BFDE2CC8222DF345008038E0 /* SwiftyDropbox.framework */, BFDE2CC7222DF345008038E0 /* Alamofire.framework */, @@ -856,6 +874,7 @@ BFFA71CF1AAC406100EE9DD1 /* Project object */ = { isa = PBXProject; attributes = { + DefaultBuildSystemTypeForWorkspace = Original; LastSwiftUpdateCheck = 0700; LastUpgradeCheck = 1010; ORGANIZATIONNAME = "Riley Testut"; diff --git a/Delta.xcworkspace/contents.xcworkspacedata b/Delta.xcworkspace/contents.xcworkspacedata index ef2ca04..1098b3f 100644 --- a/Delta.xcworkspace/contents.xcworkspacedata +++ b/Delta.xcworkspace/contents.xcworkspacedata @@ -19,6 +19,9 @@ + + diff --git a/Delta/Base.lproj/Settings.storyboard b/Delta/Base.lproj/Settings.storyboard index 1174492..feb9568 100644 --- a/Delta/Base.lproj/Settings.storyboard +++ b/Delta/Base.lproj/Settings.storyboard @@ -18,7 +18,7 @@