diff --git a/Cores/DSDeltaCore b/Cores/DSDeltaCore index 1054482..6c84366 160000 --- a/Cores/DSDeltaCore +++ b/Cores/DSDeltaCore @@ -1 +1 @@ -Subproject commit 1054482de95f60de78c48b01af3c04fb4eca9168 +Subproject commit 6c84366b3a76045782905293c9616e33f5da1a35 diff --git a/Cores/DeltaCore b/Cores/DeltaCore index 81362dd..cdd384d 160000 --- a/Cores/DeltaCore +++ b/Cores/DeltaCore @@ -1 +1 @@ -Subproject commit 81362dd5def310f4dd908513574c7e2fd10c7d75 +Subproject commit cdd384dbacd5033183bbc3697c9738e3fb0b1d07 diff --git a/Cores/GBADeltaCore b/Cores/GBADeltaCore index c07950a..8ea36df 160000 --- a/Cores/GBADeltaCore +++ b/Cores/GBADeltaCore @@ -1 +1 @@ -Subproject commit c07950a584ed3153b90349059629db85b1c330ac +Subproject commit 8ea36dff87bc1f787765de45fa8ccbcc1256a0e3 diff --git a/Cores/GBCDeltaCore b/Cores/GBCDeltaCore index 338a3b3..81f8ffb 160000 --- a/Cores/GBCDeltaCore +++ b/Cores/GBCDeltaCore @@ -1 +1 @@ -Subproject commit 338a3b32c01413999e390c681dc336fdcdff1ca1 +Subproject commit 81f8ffba56823637706689fb5c6bc634ee4d9b32 diff --git a/Cores/GPGXDeltaCore b/Cores/GPGXDeltaCore index aed3050..18c5958 160000 --- a/Cores/GPGXDeltaCore +++ b/Cores/GPGXDeltaCore @@ -1 +1 @@ -Subproject commit aed30506c77096c3e854c9a38fe9cc893e9480a1 +Subproject commit 18c595887a12ef23e0d54c63f83c91c99e7f4827 diff --git a/Cores/MelonDSDeltaCore b/Cores/MelonDSDeltaCore index 16f7998..3d61116 160000 --- a/Cores/MelonDSDeltaCore +++ b/Cores/MelonDSDeltaCore @@ -1 +1 @@ -Subproject commit 16f79982e468137c3bfe11a2dbff97423a5ce128 +Subproject commit 3d61116876fe174dcbcf60d3baadd2a0a8818de4 diff --git a/Cores/N64DeltaCore b/Cores/N64DeltaCore index c581c6f..c8816c5 160000 --- a/Cores/N64DeltaCore +++ b/Cores/N64DeltaCore @@ -1 +1 @@ -Subproject commit c581c6f51efd61dc5891fac22dbada7df347c003 +Subproject commit c8816c51f82210a9c4cc62b1a7c53fa21bc705ee diff --git a/Cores/NESDeltaCore b/Cores/NESDeltaCore index e5221a0..bc3e017 160000 --- a/Cores/NESDeltaCore +++ b/Cores/NESDeltaCore @@ -1 +1 @@ -Subproject commit e5221a06ff2ff830bf60302ef0678fe5e554a925 +Subproject commit bc3e0178caa29b4c1e8872133dd00aa55cc9da2a diff --git a/Cores/SNESDeltaCore b/Cores/SNESDeltaCore index 2ef4c12..d571729 160000 --- a/Cores/SNESDeltaCore +++ b/Cores/SNESDeltaCore @@ -1 +1 @@ -Subproject commit 2ef4c123b43565688f7b7d3aa5099559b633f7ba +Subproject commit d5717291325578f64d519822aeb2be81217c67f3 diff --git a/Delta.xcodeproj/project.pbxproj b/Delta.xcodeproj/project.pbxproj index 12e4f37..e751885 100644 --- a/Delta.xcodeproj/project.pbxproj +++ b/Delta.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 52; + objectVersion = 54; objects = { /* Begin PBXAggregateTarget section */ @@ -33,6 +33,13 @@ /* Begin PBXBuildFile section */ 1FA4ABA79AB72914FE414A61 /* libPods-Delta.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DC866E433B3BA9AE18ABA1EC /* libPods-Delta.a */; }; + 87343D7B985519A5890A61C6 /* libPods-DeltaPreviews.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E3E5A45AB20C8A87754453B /* libPods-DeltaPreviews.a */; }; + AC1AE30A2A69BD3A00956EB9 /* AlternateAppIcons.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC1AE3092A69BD3A00956EB9 /* AlternateAppIcons.swift */; }; + AC1AE30C2A6A068F00956EB9 /* Bundle+AppIconImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC1AE30B2A6A068F00956EB9 /* Bundle+AppIconImage.swift */; }; + AC1C991029F8B8C30020E6E4 /* ToastNotificationOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC1C990F29F8B8C30020E6E4 /* ToastNotificationOptions.swift */; }; + AC1C992729F9F1CF0020E6E4 /* GameViewController+ExperimentalToasts.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC1C992629F9F1CF0020E6E4 /* GameViewController+ExperimentalToasts.swift */; }; + ACF7E30D29F73D03000FE071 /* GameScreenshots.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACF7E30C29F73D03000FE071 /* GameScreenshots.swift */; }; + ACF7E30F29F743A3000FE071 /* PHPhotoLibrary+Authorization.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACF7E30E29F743A3000FE071 /* PHPhotoLibrary+Authorization.swift */; }; BF00BEA625B758AA00C8607D /* SystemBIOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF00BEA525B758AA00C8607D /* SystemBIOS.swift */; }; BF02D5DA1DDEBB3000A5E131 /* openvgdb.sqlite in Resources */ = {isa = PBXBuildFile; fileRef = BF02D5D91DDEBB3000A5E131 /* openvgdb.sqlite */; }; BF04E6FF1DB8625C000F35D3 /* ControllerSkinsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF04E6FE1DB8625C000F35D3 /* ControllerSkinsViewController.swift */; }; @@ -155,7 +162,6 @@ BFFA4C091E8A24D600D87934 /* GameTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFFA4C081E8A24D600D87934 /* GameTableViewCell.swift */; }; BFFA71DD1AAC406100EE9DD1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFFA71DC1AAC406100EE9DD1 /* AppDelegate.swift */; }; BFFA71E21AAC406100EE9DD1 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BFFA71E01AAC406100EE9DD1 /* Main.storyboard */; }; - BFFBD3D9224A0756002EFC79 /* URL+ExtendedAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFFBD3D8224A0756002EFC79 /* URL+ExtendedAttributes.swift */; }; BFFC461E1D59823500AF2CC6 /* GamesPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFFC461B1D59823500AF2CC6 /* GamesPresentationController.swift */; }; BFFC461F1D59823500AF2CC6 /* GamesStoryboardSegue.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFFC461C1D59823500AF2CC6 /* GamesStoryboardSegue.swift */; }; BFFC46201D59823500AF2CC6 /* InitialGamesStoryboardSegue.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFFC461D1D59823500AF2CC6 /* InitialGamesStoryboardSegue.swift */; }; @@ -165,19 +171,60 @@ BFFDF03723E3BB2600931B96 /* libSnes9x.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BFFDF03623E3BB2600931B96 /* libSnes9x.a */; }; BFFDF03F23E3C28A00931B96 /* libGambatte.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BFFDF03D23E3C0F000931B96 /* libGambatte.a */; }; BFFDF04623E3D3A600931B96 /* libMupen64Plus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BFFDF04523E3D3A600931B96 /* libMupen64Plus.a */; }; + D5011C48281B6E8B00A0760B /* CharacterSet+Filename.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5011C47281B6E8B00A0760B /* CharacterSet+Filename.swift */; }; + D510BC752A5CA9F500450CC0 /* Delta6ToDelta7.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = D510BC742A5CA9F500450CC0 /* Delta6ToDelta7.xcmappingmodel */; }; + D5147EC82A817B4A00D6CD64 /* ReviewSaveStatesOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5147EC72A817B4A00D6CD64 /* ReviewSaveStatesOptions.swift */; }; + D517F6BA29E730DA000D14D0 /* SettingsName.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5A9C01929DDFBDD00A8D610 /* SettingsName.swift */; }; + D517F6BE29E7535F000D14D0 /* Collection+Optionals.swift in Sources */ = {isa = PBXBuildFile; fileRef = D517F6BD29E7535F000D14D0 /* Collection+Optionals.swift */; }; + D51CB7A129EDC01400B59678 /* libDeltaFeatures.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D5D7C1F129E60DFF00663793 /* libDeltaFeatures.a */; }; + D51CB7A629EDC15900B59678 /* ExperimentalFeatures.swift in Sources */ = {isa = PBXBuildFile; fileRef = D51CB7A529EDC15900B59678 /* ExperimentalFeatures.swift */; }; D524F4A1273DE9A100D500B2 /* AltKit in Frameworks */ = {isa = PBXBuildFile; productRef = D524F4A0273DE9A100D500B2 /* AltKit */; }; D524F4A3273DE9C000D500B2 /* ProcessInfo+JIT.swift in Sources */ = {isa = PBXBuildFile; fileRef = D524F4A2273DE9C000D500B2 /* ProcessInfo+JIT.swift */; }; D524F4A5273DEBB400D500B2 /* ServerManager+Delta.swift in Sources */ = {isa = PBXBuildFile; fileRef = D524F4A4273DEBB400D500B2 /* ServerManager+Delta.swift */; }; - D5011C48281B6E8B00A0760B /* CharacterSet+Filename.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5011C47281B6E8B00A0760B /* CharacterSet+Filename.swift */; }; D53415A5298C782A00FD67B1 /* ContributorsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D53415A4298C782A00FD67B1 /* ContributorsView.swift */; }; D53415A7298C78BC00FD67B1 /* Contributors.plist in Resources */ = {isa = PBXBuildFile; fileRef = D53415A6298C78BC00FD67B1 /* Contributors.plist */; }; + D539103229E88B6C0006B350 /* DeltaPreviews.h in Headers */ = {isa = PBXBuildFile; fileRef = D539103129E88B6C0006B350 /* DeltaPreviews.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D539104029E88BC40006B350 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D539103F29E88BC40006B350 /* ContentView.swift */; }; + D54A4BB329E4D27E004C7D57 /* FeatureDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D54A4BB229E4D27E004C7D57 /* FeatureDetailView.swift */; }; + D54F710229E89DCB009C069A /* SettingsUserInfoKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = D54F710129E89DCB009C069A /* SettingsUserInfoKey.swift */; }; + D54F710429E89DFC009C069A /* NotificationName+Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D54F710329E89DFC009C069A /* NotificationName+Settings.swift */; }; + D55C468F29E761C000EA6DE9 /* AnyFeature.swift in Sources */ = {isa = PBXBuildFile; fileRef = D55C468E29E761C000EA6DE9 /* AnyFeature.swift */; }; + D55C469129E7631000EA6DE9 /* AnyOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = D55C469029E7631000EA6DE9 /* AnyOption.swift */; }; + D560BD8629EDC45600289847 /* ExternalDisplaySceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D560BD8529EDC45600289847 /* ExternalDisplaySceneDelegate.swift */; }; + D57D795629F300E100BB2CF8 /* CustomTintColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5A817AF29DF4E6E00904AFE /* CustomTintColor.swift */; }; + D57D795F29F315F700BB2CF8 /* FeatureDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D54A4BB229E4D27E004C7D57 /* FeatureDetailView.swift */; }; + D57D796029F315F700BB2CF8 /* ExperimentalFeaturesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5A9C00229DDED6D00A8D610 /* ExperimentalFeaturesView.swift */; }; D5864970297734280081477E /* CheatMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = D586496F297734280081477E /* CheatMetadata.swift */; }; D586497229774ABD0081477E /* CheatBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = D586497129774ABD0081477E /* CheatBase.swift */; }; D5864978297756CE0081477E /* CheatBaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5864977297756CE0081477E /* CheatBaseView.swift */; }; + D5A817B329DF6C6C00904AFE /* ExperimentalFeatures.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5A817B229DF6C6C00904AFE /* ExperimentalFeatures.swift */; }; D5A98CE2284EF14B00E023E5 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5A98CE1284EF14B00E023E5 /* SceneDelegate.swift */; }; + D5A9C00329DDED6D00A8D610 /* ExperimentalFeaturesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5A9C00229DDED6D00A8D610 /* ExperimentalFeaturesView.swift */; }; + D5A9C01D29DE058C00A8D610 /* VariableFastForward.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5A9C01C29DE058C00A8D610 /* VariableFastForward.swift */; }; D5AAF27729884F8600F21ACF /* CheatDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5AAF27629884F8600F21ACF /* CheatDevice.swift */; }; + D5ADD12229F33FBF00CE0560 /* Features.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5ADD12129F33FBF00CE0560 /* Features.swift */; }; + D5CDCCEE2A859DC200E22131 /* SyncValidationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5CDCCEC2A859B2B00E22131 /* SyncValidationError.swift */; }; + D5CDCCEF2A859E5300E22131 /* OSLog+Delta.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5CDCCC32A85765900E22131 /* OSLog+Delta.swift */; }; + D5CDCCF02A859E5500E22131 /* UserDefaults+Delta.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5CDCCEA2A8593FC00E22131 /* UserDefaults+Delta.swift */; }; + D5CDCCF12A859E7500E22131 /* ReviewSaveStatesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5A1375A2A7D8F2600AB1372 /* ReviewSaveStatesViewController.swift */; }; + D5CDCCF22A859E7500E22131 /* RepairDatabaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5A137442A7D814000AB1372 /* RepairDatabaseViewController.swift */; }; + D5CDCCF32A859E7500E22131 /* GamePickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5A137662A7DB37200AB1372 /* GamePickerViewController.swift */; }; + D5D78AE529F9BC3700E064F0 /* DSAirPlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5D78AE429F9BC3700E064F0 /* DSAirPlay.swift */; }; + D5D78AE729F9D40A00E064F0 /* EnvironmentValues+FeatureOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5D78AE629F9D40A00E064F0 /* EnvironmentValues+FeatureOption.swift */; }; D5D797E6298D946200738869 /* Contributor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5D797E5298D946200738869 /* Contributor.swift */; }; D5D797E9298DCC7300738869 /* cheatbase.zip in Resources */ = {isa = PBXBuildFile; fileRef = D5D797E7298DC9E200738869 /* cheatbase.zip */; }; + D5D7C1F929E60EA500663793 /* UserDefaults+OptionValues.swift in Sources */ = {isa = PBXBuildFile; fileRef = D58F39C829E0A702008B4100 /* UserDefaults+OptionValues.swift */; }; + D5D7C1FA29E60EDE00663793 /* libDeltaFeatures.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D5D7C1F129E60DFF00663793 /* libDeltaFeatures.a */; }; + D5D7C1FD29E60EEF00663793 /* OptionalProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = D532B8BC29E5EDAD009EE27C /* OptionalProtocol.swift */; }; + D5D7C20129E60F2000663793 /* LocalizedOptionValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5D7C1E829E5FCDE00663793 /* LocalizedOptionValue.swift */; }; + D5D7C20229E60F2000663793 /* OptionValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5D7C1E629E5F90200663793 /* OptionValue.swift */; }; + D5D7C20329E60F2000663793 /* Option.swift in Sources */ = {isa = PBXBuildFile; fileRef = D58F39C529E0A473008B4100 /* Option.swift */; }; + D5D7C20429E60F2000663793 /* Feature.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5A9BFFD29DDECF100A8D610 /* Feature.swift */; }; + D5D7C20629E60F6100663793 /* OptionPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D592D6FE29E48FFB008D218A /* OptionPickerView.swift */; }; + D5D7C20829E616CF00663793 /* FeatureContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5D7C20729E616CF00663793 /* FeatureContainer.swift */; }; + D5D7C20A29E61FA600663793 /* OptionToggleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5D7C20929E61FA600663793 /* OptionToggleView.swift */; }; + D5D7C20C29E624CB00663793 /* DisplayInlineKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5D7C20B29E624CB00663793 /* DisplayInlineKey.swift */; }; + D5DF06E029F326E6009E577C /* AirPlaySkins.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5DF06DE29F326E6009E577C /* AirPlaySkins.swift */; }; D5F82FB82981D3AC00B229AF /* LegacySearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5F82FB72981D3AC00B229AF /* LegacySearchBar.swift */; }; /* End PBXBuildFile section */ @@ -189,6 +236,13 @@ remoteGlobalIDString = BF6E70B925D2187800E41CD1; remoteInfo = Systems; }; + D5D7C1FB29E60EDE00663793 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFFA71CF1AAC406100EE9DD1 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D5D7C1F029E60DFF00663793; + remoteInfo = DeltaFeatures; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -203,11 +257,29 @@ name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; }; + D5D7C1EF29E60DFF00663793 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ 22506DA00971C4300AF90A35 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7E3E5A45AB20C8A87754453B /* libPods-DeltaPreviews.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DeltaPreviews.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 8ECE6641DE30D01EA30FE7F6 /* Pods-DeltaPreviews.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeltaPreviews.release.xcconfig"; path = "Pods/Target Support Files/Pods-DeltaPreviews/Pods-DeltaPreviews.release.xcconfig"; sourceTree = ""; }; + A01281C7023C0041B25963BE /* Pods-DeltaPreviews.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeltaPreviews.debug.xcconfig"; path = "Pods/Target Support Files/Pods-DeltaPreviews/Pods-DeltaPreviews.debug.xcconfig"; sourceTree = ""; }; A19FF50F55441BC2B2248241 /* Pods-Delta.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Delta.release.xcconfig"; path = "Pods/Target Support Files/Pods-Delta/Pods-Delta.release.xcconfig"; sourceTree = ""; }; + AC1AE3092A69BD3A00956EB9 /* AlternateAppIcons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlternateAppIcons.swift; sourceTree = ""; }; + AC1AE30B2A6A068F00956EB9 /* Bundle+AppIconImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Bundle+AppIconImage.swift"; sourceTree = ""; }; + AC1C990F29F8B8C30020E6E4 /* ToastNotificationOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToastNotificationOptions.swift; sourceTree = ""; }; + AC1C992629F9F1CF0020E6E4 /* GameViewController+ExperimentalToasts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "GameViewController+ExperimentalToasts.swift"; sourceTree = ""; }; + ACF7E30C29F73D03000FE071 /* GameScreenshots.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameScreenshots.swift; sourceTree = ""; }; + ACF7E30E29F743A3000FE071 /* PHPhotoLibrary+Authorization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PHPhotoLibrary+Authorization.swift"; sourceTree = ""; }; BF00BEA525B758AA00C8607D /* SystemBIOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SystemBIOS.swift; sourceTree = ""; }; BF02D5D91DDEBB3000A5E131 /* openvgdb.sqlite */ = {isa = PBXFileReference; lastKnownFileType = file; path = openvgdb.sqlite; sourceTree = ""; }; BF0418131D01E93400E85BCF /* GBADeltaCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GBADeltaCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -361,7 +433,6 @@ BFFA71DB1AAC406100EE9DD1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; BFFA71DC1AAC406100EE9DD1 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; BFFA71E11AAC406100EE9DD1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - BFFBD3D8224A0756002EFC79 /* URL+ExtendedAttributes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URL+ExtendedAttributes.swift"; sourceTree = ""; }; BFFC461B1D59823500AF2CC6 /* GamesPresentationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GamesPresentationController.swift; sourceTree = ""; }; BFFC461C1D59823500AF2CC6 /* GamesStoryboardSegue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GamesStoryboardSegue.swift; sourceTree = ""; }; BFFC461D1D59823500AF2CC6 /* InitialGamesStoryboardSegue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InitialGamesStoryboardSegue.swift; sourceTree = ""; }; @@ -372,18 +443,58 @@ BFFDF03D23E3C0F000931B96 /* libGambatte.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libGambatte.a; sourceTree = BUILT_PRODUCTS_DIR; }; BFFDF04523E3D3A600931B96 /* libMupen64Plus.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libMupen64Plus.a; sourceTree = BUILT_PRODUCTS_DIR; }; C786AF1D2DDB6223BE2063CC /* Pods-Delta.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Delta.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Delta/Pods-Delta.debug.xcconfig"; sourceTree = ""; }; + D5011C47281B6E8B00A0760B /* CharacterSet+Filename.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CharacterSet+Filename.swift"; sourceTree = ""; }; + D510BC742A5CA9F500450CC0 /* Delta6ToDelta7.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = Delta6ToDelta7.xcmappingmodel; sourceTree = ""; }; + D5147EC72A817B4A00D6CD64 /* ReviewSaveStatesOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewSaveStatesOptions.swift; sourceTree = ""; }; + D517F6BD29E7535F000D14D0 /* Collection+Optionals.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Collection+Optionals.swift"; sourceTree = ""; }; + D51CB7A529EDC15900B59678 /* ExperimentalFeatures.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExperimentalFeatures.swift; sourceTree = ""; }; D524F4A2273DE9C000D500B2 /* ProcessInfo+JIT.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ProcessInfo+JIT.swift"; sourceTree = ""; }; D524F4A4273DEBB400D500B2 /* ServerManager+Delta.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ServerManager+Delta.swift"; sourceTree = ""; }; - D5011C47281B6E8B00A0760B /* CharacterSet+Filename.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CharacterSet+Filename.swift"; sourceTree = ""; }; + D532B8BC29E5EDAD009EE27C /* OptionalProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptionalProtocol.swift; sourceTree = ""; }; D53415A4298C782A00FD67B1 /* ContributorsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContributorsView.swift; sourceTree = ""; }; D53415A6298C78BC00FD67B1 /* Contributors.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Contributors.plist; sourceTree = ""; }; + D539102F29E88B6B0006B350 /* DeltaPreviews.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DeltaPreviews.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D539103129E88B6C0006B350 /* DeltaPreviews.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DeltaPreviews.h; sourceTree = ""; }; + D539103F29E88BC40006B350 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + D54A4BB229E4D27E004C7D57 /* FeatureDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeatureDetailView.swift; sourceTree = ""; }; + D54F710129E89DCB009C069A /* SettingsUserInfoKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsUserInfoKey.swift; sourceTree = ""; }; + D54F710329E89DFC009C069A /* NotificationName+Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationName+Settings.swift"; sourceTree = ""; }; + D554C3822A58D89700E93359 /* Delta 7.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Delta 7.xcdatamodel"; sourceTree = ""; }; + D55C468E29E761C000EA6DE9 /* AnyFeature.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyFeature.swift; sourceTree = ""; }; + D55C469029E7631000EA6DE9 /* AnyOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyOption.swift; sourceTree = ""; }; + D560BD8529EDC45600289847 /* ExternalDisplaySceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalDisplaySceneDelegate.swift; sourceTree = ""; }; D586496F297734280081477E /* CheatMetadata.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheatMetadata.swift; sourceTree = ""; }; D586497129774ABD0081477E /* CheatBase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheatBase.swift; sourceTree = ""; }; D5864977297756CE0081477E /* CheatBaseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheatBaseView.swift; sourceTree = ""; }; + D58F39C529E0A473008B4100 /* Option.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Option.swift; sourceTree = ""; }; + D58F39C829E0A702008B4100 /* UserDefaults+OptionValues.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDefaults+OptionValues.swift"; sourceTree = ""; }; + D592D6FE29E48FFB008D218A /* OptionPickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptionPickerView.swift; sourceTree = ""; }; + D5A137442A7D814000AB1372 /* RepairDatabaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RepairDatabaseViewController.swift; sourceTree = ""; }; + D5A1375A2A7D8F2600AB1372 /* ReviewSaveStatesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewSaveStatesViewController.swift; sourceTree = ""; }; + D5A137662A7DB37200AB1372 /* GamePickerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GamePickerViewController.swift; sourceTree = ""; }; + D5A817AF29DF4E6E00904AFE /* CustomTintColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomTintColor.swift; sourceTree = ""; }; + D5A817B229DF6C6C00904AFE /* ExperimentalFeatures.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExperimentalFeatures.swift; sourceTree = ""; }; D5A98CE1284EF14B00E023E5 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + D5A9BFFD29DDECF100A8D610 /* Feature.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Feature.swift; sourceTree = ""; }; + D5A9C00229DDED6D00A8D610 /* ExperimentalFeaturesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExperimentalFeaturesView.swift; sourceTree = ""; }; + D5A9C01929DDFBDD00A8D610 /* SettingsName.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsName.swift; sourceTree = ""; }; + D5A9C01C29DE058C00A8D610 /* VariableFastForward.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VariableFastForward.swift; sourceTree = ""; }; D5AAF27629884F8600F21ACF /* CheatDevice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheatDevice.swift; sourceTree = ""; }; + D5ADD12129F33FBF00CE0560 /* Features.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Features.swift; sourceTree = ""; }; + D5CDCCC32A85765900E22131 /* OSLog+Delta.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OSLog+Delta.swift"; sourceTree = ""; }; + D5CDCCEA2A8593FC00E22131 /* UserDefaults+Delta.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDefaults+Delta.swift"; sourceTree = ""; }; + D5CDCCEC2A859B2B00E22131 /* SyncValidationError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncValidationError.swift; sourceTree = ""; }; + D5D78AE429F9BC3700E064F0 /* DSAirPlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DSAirPlay.swift; sourceTree = ""; }; + D5D78AE629F9D40A00E064F0 /* EnvironmentValues+FeatureOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EnvironmentValues+FeatureOption.swift"; sourceTree = ""; }; D5D797E5298D946200738869 /* Contributor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Contributor.swift; sourceTree = ""; }; D5D797E7298DC9E200738869 /* cheatbase.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = cheatbase.zip; sourceTree = ""; }; + D5D7C1E629E5F90200663793 /* OptionValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptionValue.swift; sourceTree = ""; }; + D5D7C1E829E5FCDE00663793 /* LocalizedOptionValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizedOptionValue.swift; sourceTree = ""; }; + D5D7C1F129E60DFF00663793 /* libDeltaFeatures.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libDeltaFeatures.a; sourceTree = BUILT_PRODUCTS_DIR; }; + D5D7C20729E616CF00663793 /* FeatureContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeatureContainer.swift; sourceTree = ""; }; + D5D7C20929E61FA600663793 /* OptionToggleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptionToggleView.swift; sourceTree = ""; }; + D5D7C20B29E624CB00663793 /* DisplayInlineKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DisplayInlineKey.swift; sourceTree = ""; }; + D5DF06DE29F326E6009E577C /* AirPlaySkins.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AirPlaySkins.swift; sourceTree = ""; }; D5F82FB72981D3AC00B229AF /* LegacySearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacySearchBar.swift; sourceTree = ""; }; DC866E433B3BA9AE18ABA1EC /* libPods-Delta.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Delta.a"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -398,6 +509,7 @@ BF69FBA223E375A20051BEEA /* libVBA-M.a in Frameworks */, BFFDF04623E3D3A600931B96 /* libMupen64Plus.a in Frameworks */, BFDCA1E6244EBAA900B8FBDB /* liblibDeSmuME.a in Frameworks */, + D5D7C1FA29E60EDE00663793 /* libDeltaFeatures.a in Frameworks */, BFCADF1E25D22FE2008D78FB /* Systems.framework in Frameworks */, BF69FBC923E3A8380051BEEA /* libNestopia.a in Frameworks */, D524F4A1273DE9A100D500B2 /* AltKit in Frameworks */, @@ -407,6 +519,22 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D539102C29E88B6B0006B350 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D51CB7A129EDC01400B59678 /* libDeltaFeatures.a in Frameworks */, + 87343D7B985519A5890A61C6 /* libPods-DeltaPreviews.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D5D7C1EE29E60DFF00663793 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -427,13 +555,17 @@ BF6424841F5CBDC900D6AB44 /* UIView+ParentViewController.swift */, BFC3627F21ADE2BA00EF2BE6 /* UIAlertController+Error.swift */, BF1F45AC21AF57BA00EF9895 /* HarmonyMetadataKey+Keys.swift */, - BFFBD3D8224A0756002EFC79 /* URL+ExtendedAttributes.swift */, BF647A6922FB8FCE0061D76D /* Bundle+SwizzleBundleID.swift */, BFD1EF3F2336BD8800D197CF /* UIDevice+Processor.swift */, BFE56E1823EB7BE00014FECD /* UIImage+SymbolFallback.swift */, D524F4A2273DE9C000D500B2 /* ProcessInfo+JIT.swift */, D524F4A4273DEBB400D500B2 /* ServerManager+Delta.swift */, D5011C47281B6E8B00A0760B /* CharacterSet+Filename.swift */, + ACF7E30E29F743A3000FE071 /* PHPhotoLibrary+Authorization.swift */, + AC1C992629F9F1CF0020E6E4 /* GameViewController+ExperimentalToasts.swift */, + D5CDCCC32A85765900E22131 /* OSLog+Delta.swift */, + D5CDCCEA2A8593FC00E22131 /* UserDefaults+Delta.swift */, + AC1AE30B2A6A068F00956EB9 /* Bundle+AppIconImage.swift */, ); path = Extensions; sourceTree = ""; @@ -546,6 +678,7 @@ BF5942711E09BC690051894B /* Model */, BF95E2751E49763D0030E7AD /* OpenVGDB */, D586496E297734060081477E /* Cheats */, + D5CDCCE92A858DB900E22131 /* Repair */, ); path = Database; sourceTree = ""; @@ -734,6 +867,7 @@ BFC134E01AAD82460087AD7B /* SNESDeltaCore.framework */, 22506DA00971C4300AF90A35 /* Pods.framework */, DC866E433B3BA9AE18ABA1EC /* libPods-Delta.a */, + 7E3E5A45AB20C8A87754453B /* libPods-DeltaPreviews.a */, ); name = Frameworks; sourceTree = ""; @@ -750,6 +884,8 @@ BF11734E1DA32CEC00047DF8 /* Controllers */, BF1DAD5B1D9F574900E752A7 /* Controller Skins */, BF48F74C219A16C100BC2FC1 /* Syncing */, + D5D78AE329F9BC0200E064F0 /* Features */, + D5A9BFFF29DDECF500A8D610 /* Experimental Features */, D5D797E4298D944C00738869 /* Contributors */, ); path = Settings; @@ -759,6 +895,7 @@ isa = PBXGroup; children = ( BFAB9F7C219A43380080EC7D /* SyncManager.swift */, + D5CDCCEC2A859B2B00E22131 /* SyncValidationError.swift */, BF1F45A321AF274D00EF9895 /* SyncResultViewController.swift */, BF1F45AA21AF4B5800EF9895 /* SyncResultsViewController.storyboard */, ); @@ -815,6 +952,7 @@ BF3D6C502202865F0083E05A /* Delta2ToDelta3.xcmappingmodel */, BF3D6C52220286750083E05A /* Delta3ToDelta4.xcmappingmodel */, BFDCA1E8244F7E1000B8FBDB /* Delta5ToDelta6.xcmappingmodel */, + D510BC742A5CA9F500450CC0 /* Delta6ToDelta7.xcmappingmodel */, BFEF24F11F7DD4BE00454C62 /* Policies */, ); path = Migrations; @@ -833,6 +971,8 @@ isa = PBXGroup; children = ( BFFA71D91AAC406100EE9DD1 /* Delta */, + D539103029E88B6C0006B350 /* DeltaPreviews */, + D5D7C1F229E60E0000663793 /* DeltaFeatures */, BF9F4FCD1AAD7B25004C9500 /* Frameworks */, BFEC732F1AAECCBD00650035 /* Resources */, BFFA71D81AAC406100EE9DD1 /* Products */, @@ -844,6 +984,8 @@ isa = PBXGroup; children = ( BFFA71D71AAC406100EE9DD1 /* Delta.app */, + D5D7C1F129E60DFF00663793 /* libDeltaFeatures.a */, + D539102F29E88B6B0006B350 /* DeltaPreviews.framework */, ); name = Products; sourceTree = ""; @@ -852,8 +994,8 @@ isa = PBXGroup; children = ( BFFA71DC1AAC406100EE9DD1 /* AppDelegate.swift */, - D5A98CE1284EF14B00E023E5 /* SceneDelegate.swift */, BFFA71E01AAC406100EE9DD1 /* Main.storyboard */, + D502F82129EF05F800ACCDA1 /* Scenes */, BFFC46211D59848000AF2CC6 /* Launch */, BF46894D1AAC469800A2586D /* Game Selection */, BFFB709D1AF99ACA00DE56FE /* Emulation */, @@ -864,6 +1006,7 @@ BF59428C1E09BCE50051894B /* Importing */, BF930FFB1EB6D6EC00E8DBA0 /* Systems */, BF525EE61FF5F355004AA849 /* Deep Linking */, + D57D795C29F30B1400BB2CF8 /* Experimental Features */, BF5942571E09BB5D0051894B /* Components */, BF696B7E1D9B2AE6009639E0 /* Theming */, BF090CEE1B490C1A00DCAB45 /* Extensions */, @@ -913,6 +1056,55 @@ path = Launch; sourceTree = ""; }; + D502F82129EF05F800ACCDA1 /* Scenes */ = { + isa = PBXGroup; + children = ( + D5A98CE1284EF14B00E023E5 /* SceneDelegate.swift */, + D560BD8529EDC45600289847 /* ExternalDisplaySceneDelegate.swift */, + ); + path = Scenes; + sourceTree = ""; + }; + D517F6BB29E737F5000D14D0 /* Types */ = { + isa = PBXGroup; + children = ( + D5A9C01929DDFBDD00A8D610 /* SettingsName.swift */, + D54F710129E89DCB009C069A /* SettingsUserInfoKey.swift */, + D5D7C1E629E5F90200663793 /* OptionValue.swift */, + D5D7C1E829E5FCDE00663793 /* LocalizedOptionValue.swift */, + D5D7C20B29E624CB00663793 /* DisplayInlineKey.swift */, + ); + path = Types; + sourceTree = ""; + }; + D539103029E88B6C0006B350 /* DeltaPreviews */ = { + isa = PBXGroup; + children = ( + D539103129E88B6C0006B350 /* DeltaPreviews.h */, + D539103F29E88BC40006B350 /* ContentView.swift */, + D57D795829F3054800BB2CF8 /* Experimental Features */, + ); + path = DeltaPreviews; + sourceTree = ""; + }; + D57D795829F3054800BB2CF8 /* Experimental Features */ = { + isa = PBXGroup; + children = ( + D51CB7A529EDC15900B59678 /* ExperimentalFeatures.swift */, + D5A817AF29DF4E6E00904AFE /* CustomTintColor.swift */, + ); + path = "Experimental Features"; + sourceTree = ""; + }; + D57D795C29F30B1400BB2CF8 /* Experimental Features */ = { + isa = PBXGroup; + children = ( + D5A817B229DF6C6C00904AFE /* ExperimentalFeatures.swift */, + D58F39CB29E0A9C8008B4100 /* Features */, + ); + path = "Experimental Features"; + sourceTree = ""; + }; D586496E297734060081477E /* Cheats */ = { isa = PBXGroup; children = ( @@ -925,6 +1117,47 @@ path = Cheats; sourceTree = ""; }; + D58F39CB29E0A9C8008B4100 /* Features */ = { + isa = PBXGroup; + children = ( + D5A9C01C29DE058C00A8D610 /* VariableFastForward.swift */, + D5DF06DE29F326E6009E577C /* AirPlaySkins.swift */, + ACF7E30C29F73D03000FE071 /* GameScreenshots.swift */, + AC1C990F29F8B8C30020E6E4 /* ToastNotificationOptions.swift */, + D5147EC72A817B4A00D6CD64 /* ReviewSaveStatesOptions.swift */, + AC1AE3092A69BD3A00956EB9 /* AlternateAppIcons.swift */, + ); + path = Features; + sourceTree = ""; + }; + D5A9BFFF29DDECF500A8D610 /* Experimental Features */ = { + isa = PBXGroup; + children = ( + D5A9C00229DDED6D00A8D610 /* ExperimentalFeaturesView.swift */, + D54A4BB229E4D27E004C7D57 /* FeatureDetailView.swift */, + ); + path = "Experimental Features"; + sourceTree = ""; + }; + D5CDCCE92A858DB900E22131 /* Repair */ = { + isa = PBXGroup; + children = ( + D5A137442A7D814000AB1372 /* RepairDatabaseViewController.swift */, + D5A1375A2A7D8F2600AB1372 /* ReviewSaveStatesViewController.swift */, + D5A137662A7DB37200AB1372 /* GamePickerViewController.swift */, + ); + path = Repair; + sourceTree = ""; + }; + D5D78AE329F9BC0200E064F0 /* Features */ = { + isa = PBXGroup; + children = ( + D5ADD12129F33FBF00CE0560 /* Features.swift */, + D5D78AE429F9BC3700E064F0 /* DSAirPlay.swift */, + ); + path = Features; + sourceTree = ""; + }; D5D797E4298D944C00738869 /* Contributors */ = { isa = PBXGroup; children = ( @@ -934,17 +1167,74 @@ path = Contributors; sourceTree = ""; }; + D5D7C1F229E60E0000663793 /* DeltaFeatures */ = { + isa = PBXGroup; + children = ( + D5A9BFFD29DDECF100A8D610 /* Feature.swift */, + D58F39C529E0A473008B4100 /* Option.swift */, + D5D7C20529E60F4A00663793 /* Views */, + D517F6BB29E737F5000D14D0 /* Types */, + D5D7C1FE29E60EF700663793 /* Protocols */, + D5D7C1F829E60E8600663793 /* Extensions */, + ); + path = DeltaFeatures; + sourceTree = ""; + }; + D5D7C1F829E60E8600663793 /* Extensions */ = { + isa = PBXGroup; + children = ( + D58F39C829E0A702008B4100 /* UserDefaults+OptionValues.swift */, + D517F6BD29E7535F000D14D0 /* Collection+Optionals.swift */, + D54F710329E89DFC009C069A /* NotificationName+Settings.swift */, + D5D78AE629F9D40A00E064F0 /* EnvironmentValues+FeatureOption.swift */, + ); + path = Extensions; + sourceTree = ""; + }; + D5D7C1FE29E60EF700663793 /* Protocols */ = { + isa = PBXGroup; + children = ( + D55C468E29E761C000EA6DE9 /* AnyFeature.swift */, + D55C469029E7631000EA6DE9 /* AnyOption.swift */, + D5D7C20729E616CF00663793 /* FeatureContainer.swift */, + D532B8BC29E5EDAD009EE27C /* OptionalProtocol.swift */, + ); + path = Protocols; + sourceTree = ""; + }; + D5D7C20529E60F4A00663793 /* Views */ = { + isa = PBXGroup; + children = ( + D592D6FE29E48FFB008D218A /* OptionPickerView.swift */, + D5D7C20929E61FA600663793 /* OptionToggleView.swift */, + ); + path = Views; + sourceTree = ""; + }; FD1E8AE87FA2DB8793F7B937 /* Pods */ = { isa = PBXGroup; children = ( C786AF1D2DDB6223BE2063CC /* Pods-Delta.debug.xcconfig */, A19FF50F55441BC2B2248241 /* Pods-Delta.release.xcconfig */, + A01281C7023C0041B25963BE /* Pods-DeltaPreviews.debug.xcconfig */, + 8ECE6641DE30D01EA30FE7F6 /* Pods-DeltaPreviews.release.xcconfig */, ); name = Pods; sourceTree = ""; }; /* End PBXGroup section */ +/* Begin PBXHeadersBuildPhase section */ + D539102A29E88B6B0006B350 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D539103229E88B6C0006B350 /* DeltaPreviews.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + /* Begin PBXNativeTarget section */ BFFA71D61AAC406100EE9DD1 /* Delta */ = { isa = PBXNativeTarget; @@ -954,7 +1244,6 @@ BFFA71D31AAC406100EE9DD1 /* Sources */, BFFA71D41AAC406100EE9DD1 /* Frameworks */, BFFA71D51AAC406100EE9DD1 /* Resources */, - BF6BF3281EB897F6008E83CD /* Fabric */, 0E0279E4F38215820BB0C9A0 /* [CP] Copy Pods Resources */, BF08DC3325CE07C3007A9CF4 /* Embed Frameworks */, ); @@ -962,6 +1251,7 @@ ); dependencies = ( BFEBE58325D3388F00222319 /* PBXTargetDependency */, + D5D7C1FC29E60EDE00663793 /* PBXTargetDependency */, ); name = Delta; packageProductDependencies = ( @@ -971,6 +1261,43 @@ productReference = BFFA71D71AAC406100EE9DD1 /* Delta.app */; productType = "com.apple.product-type.application"; }; + D539102E29E88B6B0006B350 /* DeltaPreviews */ = { + isa = PBXNativeTarget; + buildConfigurationList = D539103729E88B6C0006B350 /* Build configuration list for PBXNativeTarget "DeltaPreviews" */; + buildPhases = ( + 92EDD9C0CE3127182B2AF907 /* [CP] Check Pods Manifest.lock */, + D539102A29E88B6B0006B350 /* Headers */, + D539102B29E88B6B0006B350 /* Sources */, + D539102C29E88B6B0006B350 /* Frameworks */, + D539102D29E88B6B0006B350 /* Resources */, + CA9C6F6BA1C90E8127A301EC /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DeltaPreviews; + productName = DeltaPreviews; + productReference = D539102F29E88B6B0006B350 /* DeltaPreviews.framework */; + productType = "com.apple.product-type.framework"; + }; + D5D7C1F029E60DFF00663793 /* DeltaFeatures */ = { + isa = PBXNativeTarget; + buildConfigurationList = D5D7C1F529E60E0000663793 /* Build configuration list for PBXNativeTarget "DeltaFeatures" */; + buildPhases = ( + D5D7C1ED29E60DFF00663793 /* Sources */, + D5D7C1EE29E60DFF00663793 /* Frameworks */, + D5D7C1EF29E60DFF00663793 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DeltaFeatures; + productName = DeltaFeatures; + productReference = D5D7C1F129E60DFF00663793 /* libDeltaFeatures.a */; + productType = "com.apple.product-type.library.static"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -994,7 +1321,6 @@ }; BFFA71D61AAC406100EE9DD1 = { CreatedOnToolsVersion = 6.3; - DevelopmentTeam = 6XVY5G3U44; LastSwiftMigration = 1020; ProvisioningStyle = Automatic; SystemCapabilities = { @@ -1003,6 +1329,12 @@ }; }; }; + D539102E29E88B6B0006B350 = { + CreatedOnToolsVersion = 14.3; + }; + D5D7C1F029E60DFF00663793 = { + CreatedOnToolsVersion = 14.2; + }; }; }; buildConfigurationList = BFFA71D21AAC406100EE9DD1 /* Build configuration list for PBXProject "Delta" */; @@ -1025,6 +1357,8 @@ BFFA71D61AAC406100EE9DD1 /* Delta */, BF14D8941DE7A512002CA1BE /* mogenerator */, BF6E70B925D2187800E41CD1 /* Systems */, + D539102E29E88B6B0006B350 /* DeltaPreviews */, + D5D7C1F029E60DFF00663793 /* DeltaFeatures */, ); }; /* End PBXProject section */ @@ -1050,6 +1384,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D539102D29E88B6B0006B350 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -1066,6 +1407,7 @@ "${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore/GBCDeltaCore.bundle", "${PODS_ROOT}/GoogleSignIn/Resources/GoogleSignIn.bundle", "${PODS_ROOT}/../External/Harmony/Harmony/Model/Core Data/Harmony.xcdatamodeld", + "${PODS_ROOT}/../External/Harmony/Harmony/Model/Core Data/Migrations/Harmony2ToHarmony3.xcmappingmodel", "${PODS_ROOT}/../External/Harmony/Harmony/Model/Core Data/Migrations/HarmonyToHarmony2.xcmappingmodel", "${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore/melonDS.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore/Mupen64Plus.bundle", @@ -1082,6 +1424,7 @@ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GBCDeltaCore.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleSignIn.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Harmony.momd", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Harmony2ToHarmony3.cdm", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/HarmonyToHarmony2.cdm", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/melonDS.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Mupen64Plus.bundle", @@ -1095,6 +1438,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Delta/Pods-Delta-resources.sh\"\n"; showEnvVarsInLog = 0; }; + 92EDD9C0CE3127182B2AF907 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-DeltaPreviews-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; BF14D8981DE7A519002CA1BE /* mogenerator */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1107,21 +1472,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/usr/local/bin/mogenerator -m \"Delta/Database/Model/Delta.xcdatamodeld\" --human-dir \"Delta/Database/Model/Human\" --machine-dir \"Delta/Database/Model/Machine\" --swift --template-var scalarsWhenNonOptional=true --template-path \"Delta/Database/Model/mogenerator/templates\""; - }; - BF6BF3281EB897F6008E83CD /* Fabric */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = Fabric; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Fabric/run\" d542629b4f6625cfd5564d27318550321272076d 333118df9345dcec21e4ba0bb7fa8f6c67c4eb41734374e24f6c71a8dcd5c870"; + shellScript = "/opt/homebrew/bin/mogenerator -m \"Delta/Database/Model/Delta.xcdatamodeld\" --human-dir \"Delta/Database/Model/Human\" --machine-dir \"Delta/Database/Model/Machine\" --swift --template-var scalarsWhenNonOptional=true --template-path \"Delta/Database/Model/mogenerator/templates\"\n"; }; BF6E70BD25D2187F00E41CD1 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -1140,6 +1491,28 @@ shellPath = /bin/sh; shellScript = "# Manually build Systems.framework to prevent conflicts between Cocoapods' and SwiftPM's DeltaCore.\n\ncd $SRCROOT/Systems\n./build.sh\n"; }; + CA9C6F6BA1C90E8127A301EC /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-DeltaPreviews/Pods-DeltaPreviews-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.bundle", + "${PODS_ROOT}/../External/Roxas/Roxas/RSTCollectionViewCell.xib", + "${PODS_ROOT}/../External/Roxas/Roxas/RSTPlaceholderView.xib", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/DeltaCore.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSTCollectionViewCell.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSTPlaceholderView.nib", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DeltaPreviews/Pods-DeltaPreviews-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; DBD91E7D7EC2729786B4C5B1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1173,13 +1546,16 @@ BFF6452E1F7CC5060056533E /* GameControllerInputMappingTransformer.swift in Sources */, BF59427C1E09BC830051894B /* Cheat.swift in Sources */, BFBAB2E31EB685A2004E0B0E /* DeltaCoreProtocol+Delta.swift in Sources */, + D5CDCCF22A859E7500E22131 /* RepairDatabaseViewController.swift in Sources */, BF3540081C5DAFAD00C1184C /* PauseTransitionCoordinator.swift in Sources */, BF525EEA1FF6CD12004AA849 /* DeepLink.swift in Sources */, + AC1C991029F8B8C30020E6E4 /* ToastNotificationOptions.swift in Sources */, BF8A334621A4926F00A42FD4 /* GameSyncStatusViewController.swift in Sources */, BF59427E1E09BC830051894B /* Game.swift in Sources */, D5011C48281B6E8B00A0760B /* CharacterSet+Filename.swift in Sources */, BFE593CC21F3F8C2003412A6 /* _GameSave.swift in Sources */, BF63A1A321A4AAAE00EE8F61 /* RecordSyncStatusViewController.swift in Sources */, + D5147EC82A817B4A00D6CD64 /* ReviewSaveStatesOptions.swift in Sources */, BFAA1FED1B8AA4FA00495943 /* Settings.swift in Sources */, BFA0D1271D3AE1F600565894 /* GameViewController.swift in Sources */, BF59428A1E09BC8B0051894B /* _SaveState.swift in Sources */, @@ -1188,6 +1564,7 @@ BF59428E1E09BCFB0051894B /* ImportController.swift in Sources */, BF13A7581D5D2FD9000BB055 /* EmulatorCore+Cheats.swift in Sources */, BF48F74E219A16DA00BC2FC1 /* SyncingServicesViewController.swift in Sources */, + D5A9C01D29DE058C00A8D610 /* VariableFastForward.swift in Sources */, BFE593CA21F3F8B7003412A6 /* GameSave.swift in Sources */, BF63A1B521A4B76E00EE8F61 /* RecordVersionsViewController.swift in Sources */, BF6424831F5B8F3F00D6AB44 /* ListMenuViewController.swift in Sources */, @@ -1195,13 +1572,19 @@ BF6BF3131EB7E47F008E83CD /* ImportOption.swift in Sources */, BFEE943D23F2180200CDA07D /* Delta4ToDelta5.xcmappingmodel in Sources */, BF31878B1D489AAA00BD020D /* CheatValidator.swift in Sources */, + D560BD8629EDC45600289847 /* ExternalDisplaySceneDelegate.swift in Sources */, BFFC46201D59823500AF2CC6 /* InitialGamesStoryboardSegue.swift in Sources */, + D5CDCCF02A859E5500E22131 /* UserDefaults+Delta.swift in Sources */, BF15AF841F54B43B009B6AAB /* ActionInput.swift in Sources */, + D5D78AE529F9BC3700E064F0 /* DSAirPlay.swift in Sources */, BF4828841F9027B600028B97 /* Delta.xcdatamodeld in Sources */, + D510BC752A5CA9F500450CC0 /* Delta6ToDelta7.xcmappingmodel in Sources */, BF5942951E09BD1A0051894B /* NSManagedObjectContext+Conveniences.swift in Sources */, BFC3628021ADE2BA00EF2BE6 /* UIAlertController+Error.swift in Sources */, BF353FF91C5D870B00C1184C /* MenuItem.swift in Sources */, + D5DF06E029F326E6009E577C /* AirPlaySkins.swift in Sources */, D5D797E6298D946200738869 /* Contributor.swift in Sources */, + D5ADD12229F33FBF00CE0560 /* Features.swift in Sources */, BFDB3418219E4B1700595A62 /* SyncStatusViewController.swift in Sources */, BF18B61F1E2985F900F70067 /* UIAlertController+Importing.swift in Sources */, D586497229774ABD0081477E /* CheatBase.swift in Sources */, @@ -1231,40 +1614,50 @@ BF34FA071CF0F510006624C7 /* EditCheatViewController.swift in Sources */, BF1F45A421AF274D00EF9895 /* SyncResultViewController.swift in Sources */, BF3D6C53220286750083E05A /* Delta3ToDelta4.xcmappingmodel in Sources */, + D5CDCCF12A859E7500E22131 /* ReviewSaveStatesViewController.swift in Sources */, BF5942881E09BC8B0051894B /* _Game.swift in Sources */, BF56450D220239B800A8EA26 /* GameControllerInputMappingMigrationPolicy.swift in Sources */, BF95E2771E4977BF0030E7AD /* GameMetadata.swift in Sources */, BFFC461F1D59823500AF2CC6 /* GamesStoryboardSegue.swift in Sources */, BF2B98E61C97E32F00F6D57D /* SaveStatesCollectionHeaderView.swift in Sources */, BFC9B7391CEFCD34008629BB /* CheatsViewController.swift in Sources */, + D5CDCCF32A859E7500E22131 /* GamePickerViewController.swift in Sources */, D5864978297756CE0081477E /* CheatBaseView.swift in Sources */, BF353FFF1C5DA3C500C1184C /* PausePresentationController.swift in Sources */, BFFC464C1D5998D600AF2CC6 /* CheatTableViewCell.swift in Sources */, BF5942941E09BD1A0051894B /* NSManagedObject+Conveniences.swift in Sources */, + D5A9C00329DDED6D00A8D610 /* ExperimentalFeaturesView.swift in Sources */, BF1F45BF21AF676F00EF9895 /* Box.swift in Sources */, BF7AE80A1C2E8C7600B1B5BC /* UIColor+Delta.swift in Sources */, + ACF7E30F29F743A3000FE071 /* PHPhotoLibrary+Authorization.swift in Sources */, + ACF7E30D29F73D03000FE071 /* GameScreenshots.swift in Sources */, BF797A2D1C2D339F00F1A000 /* UILabel+FontSize.swift in Sources */, BF80E1D21F13117000847008 /* ControllerInputsViewController.swift in Sources */, BF5942641E09BBB10051894B /* LoadControllerSkinImageOperation.swift in Sources */, D5A98CE2284EF14B00E023E5 /* SceneDelegate.swift in Sources */, BFE56E1923EB7BE00014FECD /* UIImage+SymbolFallback.swift in Sources */, + AC1C992729F9F1CF0020E6E4 /* GameViewController+ExperimentalToasts.swift in Sources */, BF6EE5E91F7C5F860051AD6C /* _GameControllerInputMapping.swift in Sources */, BF5942871E09BC8B0051894B /* _ControllerSkin.swift in Sources */, BF95E2791E4982A10030E7AD /* GamesDatabaseBrowserViewController.swift in Sources */, D524F4A3273DE9C000D500B2 /* ProcessInfo+JIT.swift in Sources */, BFDCA1E9244F7E1000B8FBDB /* Delta5ToDelta6.xcmappingmodel in Sources */, + AC1AE30A2A69BD3A00956EB9 /* AlternateAppIcons.swift in Sources */, + D5A817B329DF6C6C00904AFE /* ExperimentalFeatures.swift in Sources */, BFD097211D3A01B8005A44C2 /* SaveStatesViewController.swift in Sources */, + AC1AE30C2A6A068F00956EB9 /* Bundle+AppIconImage.swift in Sources */, BF6EE5EB1F7C5F8F0051AD6C /* GameControllerInputMapping.swift in Sources */, BF8A333421A484A000A42FD4 /* BadgedTableViewCell.swift in Sources */, D5F82FB82981D3AC00B229AF /* LegacySearchBar.swift in Sources */, + D54A4BB329E4D27E004C7D57 /* FeatureDetailView.swift in Sources */, BF3540021C5DA3D500C1184C /* PauseStoryboardSegue.swift in Sources */, BF107EC41BF413F000E0C32C /* GamesViewController.swift in Sources */, BF3D6C512202865F0083E05A /* Delta2ToDelta3.xcmappingmodel in Sources */, BF59426F1E09BC5D0051894B /* DatabaseManager.swift in Sources */, + D5CDCCEF2A859E5300E22131 /* OSLog+Delta.swift in Sources */, BF4828861F9028F500028B97 /* System.swift in Sources */, BF13A7561D5D29B0000BB055 /* PreviewGameViewController.swift in Sources */, BF6866171DCAC8B900BF2D06 /* ControllerSkin+Configuring.swift in Sources */, - BFFBD3D9224A0756002EFC79 /* URL+ExtendedAttributes.swift in Sources */, BF713C0822499ED4004A1A2B /* PreviousHarmony.xcdatamodeld in Sources */, BF59427D1E09BC830051894B /* ControllerSkin.swift in Sources */, BFAB9F7D219A43380080EC7D /* SyncManager.swift in Sources */, @@ -1278,6 +1671,7 @@ BF8CA9361F5F651900499FDD /* PopoverMenuController.swift in Sources */, BFEF24F31F7DD4FD00454C62 /* SaveStateMigrationPolicy.swift in Sources */, BF5942931E09BD1A0051894B /* NSFetchedResultsController+Conveniences.m in Sources */, + D5CDCCEE2A859DC200E22131 /* SyncValidationError.swift in Sources */, BF4828881F90290F00028B97 /* Action.swift in Sources */, BF6BF3271EB87EB8008E83CD /* PhotoLibraryImportOption.swift in Sources */, BF5942661E09BBB10051894B /* LoadImageURLOperation.swift in Sources */, @@ -1290,6 +1684,42 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D539102B29E88B6B0006B350 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D539104029E88BC40006B350 /* ContentView.swift in Sources */, + D57D795629F300E100BB2CF8 /* CustomTintColor.swift in Sources */, + D57D795F29F315F700BB2CF8 /* FeatureDetailView.swift in Sources */, + D51CB7A629EDC15900B59678 /* ExperimentalFeatures.swift in Sources */, + D57D796029F315F700BB2CF8 /* ExperimentalFeaturesView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D5D7C1ED29E60DFF00663793 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D5D7C20829E616CF00663793 /* FeatureContainer.swift in Sources */, + D517F6BA29E730DA000D14D0 /* SettingsName.swift in Sources */, + D5D7C20429E60F2000663793 /* Feature.swift in Sources */, + D55C469129E7631000EA6DE9 /* AnyOption.swift in Sources */, + D5D7C1FD29E60EEF00663793 /* OptionalProtocol.swift in Sources */, + D5D7C20C29E624CB00663793 /* DisplayInlineKey.swift in Sources */, + D5D7C20A29E61FA600663793 /* OptionToggleView.swift in Sources */, + D55C468F29E761C000EA6DE9 /* AnyFeature.swift in Sources */, + D5D7C20129E60F2000663793 /* LocalizedOptionValue.swift in Sources */, + D54F710429E89DFC009C069A /* NotificationName+Settings.swift in Sources */, + D517F6BE29E7535F000D14D0 /* Collection+Optionals.swift in Sources */, + D54F710229E89DCB009C069A /* SettingsUserInfoKey.swift in Sources */, + D5D7C20629E60F6100663793 /* OptionPickerView.swift in Sources */, + D5D7C20329E60F2000663793 /* Option.swift in Sources */, + D5D78AE729F9D40A00E064F0 /* EnvironmentValues+FeatureOption.swift in Sources */, + D5D7C20229E60F2000663793 /* OptionValue.swift in Sources */, + D5D7C1F929E60EA500663793 /* UserDefaults+OptionValues.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -1298,6 +1728,11 @@ target = BF6E70B925D2187800E41CD1 /* Systems */; targetProxy = BFEBE58225D3388F00222319 /* PBXContainerItemProxy */; }; + D5D7C1FC29E60EDE00663793 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = D5D7C1F029E60DFF00663793 /* DeltaFeatures */; + targetProxy = D5D7C1FB29E60EDE00663793 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -1421,7 +1856,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.2; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "-DGLES_SILENCE_DEPRECATION"; @@ -1474,7 +1909,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.2; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_CFLAGS = "-DGLES_SILENCE_DEPRECATION"; OTHER_SWIFT_FLAGS = "-Xfrontend -debug-time-function-bodies"; @@ -1492,16 +1927,24 @@ baseConfigurationReference = C786AF1D2DDB6223BE2063CC /* Pods-Delta.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CLANG_ENABLE_MODULES = YES; CLANG_MODULES_AUTOLINK = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 61; - DEVELOPMENT_TEAM = ""; + CURRENT_PROJECT_VERSION = 74; + DEVELOPMENT_TEAM = 6XVY5G3U44; INFOPLIST_FILE = "Delta/Supporting Files/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 1.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.5b4; + OTHER_LDFLAGS = ( + "-ld64", + "$(inherited)", + ); OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" -DDEBUG"; PRODUCT_BUNDLE_IDENTIFIER = com.rileytestut.Delta; PROVISIONING_PROFILE = ""; @@ -1522,16 +1965,24 @@ baseConfigurationReference = A19FF50F55441BC2B2248241 /* Pods-Delta.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CLANG_ENABLE_MODULES = YES; CLANG_MODULES_AUTOLINK = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 61; - DEVELOPMENT_TEAM = ""; + CURRENT_PROJECT_VERSION = 74; + DEVELOPMENT_TEAM = 6XVY5G3U44; INFOPLIST_FILE = "Delta/Supporting Files/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 1.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.5b4; + OTHER_LDFLAGS = ( + "-ld64", + "$(inherited)", + ); OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" -DIMPACTOR"; PRODUCT_BUNDLE_IDENTIFIER = com.rileytestut.Delta; PROVISIONING_PROFILE = ""; @@ -1547,6 +1998,148 @@ }; name = Release; }; + D539103829E88B6C0006B350 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A01281C7023C0041B25963BE /* Pods-DeltaPreviews.debug.xcconfig */; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2023 Riley Testut. All rights reserved."; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20"; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.rileytestut.DeltaPreviews; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + D539103929E88B6C0006B350 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8ECE6641DE30D01EA30FE7F6 /* Pods-DeltaPreviews.release.xcconfig */; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2023 Riley Testut. All rights reserved."; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20"; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.rileytestut.DeltaPreviews; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + D5D7C1F629E60E0000663793 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = 6XVY5G3U44; + GCC_C_LANGUAGE_STANDARD = gnu11; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + D5D7C1F729E60E0000663793 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 6XVY5G3U44; + GCC_C_LANGUAGE_STANDARD = gnu11; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -1586,6 +2179,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + D539103729E88B6C0006B350 /* Build configuration list for PBXNativeTarget "DeltaPreviews" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D539103829E88B6C0006B350 /* Debug */, + D539103929E88B6C0006B350 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + D5D7C1F529E60E0000663793 /* Build configuration list for PBXNativeTarget "DeltaFeatures" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D5D7C1F629E60E0000663793 /* Debug */, + D5D7C1F729E60E0000663793 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ @@ -1611,6 +2222,7 @@ BF4828811F9027B600028B97 /* Delta.xcdatamodeld */ = { isa = XCVersionGroup; children = ( + D554C3822A58D89700E93359 /* Delta 7.xcdatamodel */, BFDCA1E7244F7DB100B8FBDB /* Delta 6.xcdatamodel */, BFE4275223EDF75300E6B417 /* Delta 5.xcdatamodel */, BF0758DE2202827C005110F2 /* Delta 4.xcdatamodel */, @@ -1618,7 +2230,7 @@ BF4828821F9027B600028B97 /* Delta 2.xcdatamodel */, BF4828831F9027B600028B97 /* Delta.xcdatamodel */, ); - currentVersion = BFDCA1E7244F7DB100B8FBDB /* Delta 6.xcdatamodel */; + currentVersion = D554C3822A58D89700E93359 /* Delta 7.xcdatamodel */; path = Delta.xcdatamodeld; sourceTree = ""; versionGroupType = wrapper.xcdatamodel; diff --git a/Delta.xcodeproj/xcshareddata/xcschemes/DeltaFeatures.xcscheme b/Delta.xcodeproj/xcshareddata/xcschemes/DeltaFeatures.xcscheme new file mode 100644 index 0000000..3f8dc88 --- /dev/null +++ b/Delta.xcodeproj/xcshareddata/xcschemes/DeltaFeatures.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Delta.xcodeproj/xcshareddata/xcschemes/DeltaPreviews.xcscheme b/Delta.xcodeproj/xcshareddata/xcschemes/DeltaPreviews.xcscheme new file mode 100644 index 0000000..ea06507 --- /dev/null +++ b/Delta.xcodeproj/xcshareddata/xcschemes/DeltaPreviews.xcscheme @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Delta.xcodeproj/xcshareddata/xcschemes/mogenerator.xcscheme b/Delta.xcodeproj/xcshareddata/xcschemes/mogenerator.xcscheme new file mode 100644 index 0000000..d3ca219 --- /dev/null +++ b/Delta.xcodeproj/xcshareddata/xcschemes/mogenerator.xcscheme @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Delta.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Delta.xcworkspace/xcshareddata/swiftpm/Package.resolved index ae2a51d..015974c 100644 --- a/Delta.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Delta.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -14,8 +14,8 @@ "package": "DeltaCore", "repositoryURL": "https://github.com/rileytestut/DeltaCore.git", "state": { - "branch": "main", - "revision": "27a574a46238817084f80d811b3e6c2884d9cdc0", + "branch": "ios14", + "revision": "cdd384dbacd5033183bbc3697c9738e3fb0b1d07", "version": null } }, diff --git a/Delta/AppDelegate.swift b/Delta/AppDelegate.swift index c4f7169..dfd9fee 100644 --- a/Delta/AppDelegate.swift +++ b/Delta/AppDelegate.swift @@ -12,9 +12,6 @@ import DeltaCore import Harmony import AltKit -import Fabric -import Crashlytics - private extension CFNotificationName { static let altstoreRequestAppState: CFNotificationName = CFNotificationName("com.altstore.RequestAppState.com.rileytestut.Delta" as CFString) @@ -40,25 +37,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate Settings.registerDefaults() self.registerCores() - - #if DEBUG - - // Must go AFTER registering cores, or else NESDeltaCore may not work correctly when not connected to debugger 🤷‍♂️ - Fabric.with([Crashlytics.self]) - - #else - - // Fabric doesn't allow us to change what value it uses for the bundle identifier. - // Normally this wouldn't be an issue, except AltStore creates a unique bundle identifier per user. - // Rather than have every copy of Delta be listed separately in Fabric, we temporarily swizzle Bundle.infoDictionary - // to return a constant identifier while Fabric is starting up. This way, Fabric will now group - // all copies of Delta under the bundle identifier "com.rileytestut.Delta.AltStore". - Bundle.swizzleBundleID { - Fabric.with([Crashlytics.self]) - } - - #endif - self.configureAppearance() // Controllers @@ -121,7 +99,17 @@ extension AppDelegate { // Called when a new scene session is being created. // Use this method to select a configuration to create the new scene with. - return UISceneConfiguration(name: "Main", sessionRole: connectingSceneSession.role) + + if connectingSceneSession.role == .windowExternalDisplay + { + // External Display + return UISceneConfiguration(name: "External Display", sessionRole: connectingSceneSession.role) + } + else + { + // Default Scene + return UISceneConfiguration(name: "Main", sessionRole: connectingSceneSession.role) + } } func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) diff --git a/Delta/Base.lproj/Settings.storyboard b/Delta/Base.lproj/Settings.storyboard index ded0fc2..3f986ce 100644 --- a/Delta/Base.lproj/Settings.storyboard +++ b/Delta/Base.lproj/Settings.storyboard @@ -1,9 +1,9 @@ - + - + @@ -14,13 +14,12 @@ - - + + - - + + @@ -710,7 +730,7 @@ - + @@ -796,16 +816,15 @@ - + - - + - + - + - + - + @@ -869,7 +888,7 @@ - + @@ -892,7 +911,7 @@ - + @@ -940,20 +959,19 @@ - + - - + - + - + @@ -975,7 +993,7 @@ - + @@ -991,7 +1009,7 @@ - + @@ -1052,8 +1070,8 @@ - - + + @@ -1063,7 +1081,7 @@ - + @@ -1141,22 +1159,21 @@ - + - - + - + - + @@ -1177,14 +1194,14 @@ - + - + - + - + + @@ -1287,20 +1305,19 @@ - + - - + - + - + - + + @@ -1355,20 +1373,19 @@ - + - - + - +