Merge branch 'feature/n64' into develop
This commit is contained in:
commit
c62a079de9
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -19,3 +19,6 @@
|
|||||||
[submodule "Cores/NESDeltaCore"]
|
[submodule "Cores/NESDeltaCore"]
|
||||||
path = Cores/NESDeltaCore
|
path = Cores/NESDeltaCore
|
||||||
url = git@github.com:rileytestut/NESDeltaCore.git
|
url = git@github.com:rileytestut/NESDeltaCore.git
|
||||||
|
[submodule "Cores/N64DeltaCore"]
|
||||||
|
path = Cores/N64DeltaCore
|
||||||
|
url = git@github.com:rileytestut/N64DeltaCore.git
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
Subproject commit f4d13cc258575034f60ebcc4b1387c8b04f71238
|
Subproject commit 3373709956dc2be70563582ba7e308677bb964fa
|
||||||
@ -1 +1 @@
|
|||||||
Subproject commit acbcf2baf8f01302f2a7c6e60783b887160aa163
|
Subproject commit 6c763da1513fbe762edbca2cf33cec556ce9536e
|
||||||
@ -1 +1 @@
|
|||||||
Subproject commit c8084cee111501c0daffd113f5892050d7738519
|
Subproject commit 4dcb34a47e71b81a099bff4dc0ebd28c217ef85b
|
||||||
1
Cores/N64DeltaCore
Submodule
1
Cores/N64DeltaCore
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 0246be2de6dc282397703ce2190ee7f3ed4cc9fc
|
||||||
@ -1 +1 @@
|
|||||||
Subproject commit 7ed452b7dff25a68cd503610bee1f3e36216a871
|
Subproject commit 4dc0f283116aadf6397c88c1f7fdabcac32367a6
|
||||||
@ -1 +1 @@
|
|||||||
Subproject commit d794f67cdba072f8a9977fb76e8ccaaac09946c0
|
Subproject commit dc0ec5b74c0e47e0e35912dfd63dd70f2a3d932e
|
||||||
@ -107,6 +107,7 @@
|
|||||||
BF71CF871FE90006001F1613 /* AppIconShortcutsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF71CF861FE90006001F1613 /* AppIconShortcutsViewController.swift */; };
|
BF71CF871FE90006001F1613 /* AppIconShortcutsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF71CF861FE90006001F1613 /* AppIconShortcutsViewController.swift */; };
|
||||||
BF71CF8A1FE904B1001F1613 /* GameTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BF71CF891FE904B1001F1613 /* GameTableViewCell.xib */; };
|
BF71CF8A1FE904B1001F1613 /* GameTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BF71CF891FE904B1001F1613 /* GameTableViewCell.xib */; };
|
||||||
BF797A2D1C2D339F00F1A000 /* UILabel+FontSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF797A2C1C2D339F00F1A000 /* UILabel+FontSize.swift */; };
|
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 */; };
|
BF7AE8081C2E858400B1B5BC /* GridMenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7AE8041C2E858400B1B5BC /* GridMenuViewController.swift */; };
|
||||||
BF7AE80A1C2E8C7600B1B5BC /* UIColor+Delta.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7AE8091C2E8C7600B1B5BC /* UIColor+Delta.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 */; };
|
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 */; };
|
BFAA1FED1B8AA4FA00495943 /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFAA1FEC1B8AA4FA00495943 /* Settings.swift */; };
|
||||||
BFAB9F7D219A43380080EC7D /* SyncManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFAB9F7C219A43380080EC7D /* SyncManager.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 */; };
|
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 */; };
|
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 */; };
|
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 */; };
|
BFC6F7B81F435BC500221B96 /* Input+Display.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFC6F7B71F435BC500221B96 /* Input+Display.swift */; };
|
||||||
@ -171,11 +177,14 @@
|
|||||||
BF9F4FD01AAD7B87004C9500 /* DeltaCore.framework in Embed Frameworks */,
|
BF9F4FD01AAD7B87004C9500 /* DeltaCore.framework in Embed Frameworks */,
|
||||||
BFDE2CD2222DF36A008038E0 /* SwiftyDropbox.framework in Embed Frameworks */,
|
BFDE2CD2222DF36A008038E0 /* SwiftyDropbox.framework in Embed Frameworks */,
|
||||||
BF48F75C219A1F8A00BC2FC1 /* Harmony_Drive.framework in Embed Frameworks */,
|
BF48F75C219A1F8A00BC2FC1 /* Harmony_Drive.framework in Embed Frameworks */,
|
||||||
|
BF79966E224C076C009B094F /* N64DeltaCore.framework in Embed Frameworks */,
|
||||||
BF48F756219A1EF000BC2FC1 /* Harmony.framework in Embed Frameworks */,
|
BF48F756219A1EF000BC2FC1 /* Harmony.framework in Embed Frameworks */,
|
||||||
|
BFB359462278FD8100CFD920 /* N64DeltaCore_RSP.framework in Embed Frameworks */,
|
||||||
BFF0742D1E9DC17500ACDF4A /* GBCDeltaCore.framework in Embed Frameworks */,
|
BFF0742D1E9DC17500ACDF4A /* GBCDeltaCore.framework in Embed Frameworks */,
|
||||||
BFEC732E1AAECC4A00650035 /* Roxas.framework in Embed Frameworks */,
|
BFEC732E1AAECC4A00650035 /* Roxas.framework in Embed Frameworks */,
|
||||||
BF0418151D01E93400E85BCF /* GBADeltaCore.framework in Embed Frameworks */,
|
BF0418151D01E93400E85BCF /* GBADeltaCore.framework in Embed Frameworks */,
|
||||||
BFDE2CD4222DF36A008038E0 /* Alamofire.framework in Embed Frameworks */,
|
BFDE2CD4222DF36A008038E0 /* Alamofire.framework in Embed Frameworks */,
|
||||||
|
BFB359442278FD7E00CFD920 /* N64DeltaCore_Video.framework in Embed Frameworks */,
|
||||||
BF144C652238511400C387E1 /* Harmony_Dropbox.framework in Embed Frameworks */,
|
BF144C652238511400C387E1 /* Harmony_Dropbox.framework in Embed Frameworks */,
|
||||||
BF98C9832204D9AB006B95AC /* NESDeltaCore.framework in Embed Frameworks */,
|
BF98C9832204D9AB006B95AC /* NESDeltaCore.framework in Embed Frameworks */,
|
||||||
BF99C6951D0A9AA600BA92BC /* SNESDeltaCore.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 = "<group>"; };
|
BF71CF861FE90006001F1613 /* AppIconShortcutsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppIconShortcutsViewController.swift; sourceTree = "<group>"; };
|
||||||
BF71CF891FE904B1001F1613 /* GameTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GameTableViewCell.xib; sourceTree = "<group>"; };
|
BF71CF891FE904B1001F1613 /* GameTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GameTableViewCell.xib; sourceTree = "<group>"; };
|
||||||
BF797A2C1C2D339F00F1A000 /* UILabel+FontSize.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UILabel+FontSize.swift"; sourceTree = "<group>"; };
|
BF797A2C1C2D339F00F1A000 /* UILabel+FontSize.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UILabel+FontSize.swift"; sourceTree = "<group>"; };
|
||||||
|
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 = "<group>"; };
|
BF7AE8041C2E858400B1B5BC /* GridMenuViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GridMenuViewController.swift; sourceTree = "<group>"; };
|
||||||
BF7AE8091C2E8C7600B1B5BC /* UIColor+Delta.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+Delta.swift"; sourceTree = "<group>"; };
|
BF7AE8091C2E8C7600B1B5BC /* UIColor+Delta.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+Delta.swift"; sourceTree = "<group>"; };
|
||||||
BF8A333321A484A000A42FD4 /* BadgedTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BadgedTableViewCell.swift; sourceTree = "<group>"; };
|
BF8A333321A484A000A42FD4 /* BadgedTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BadgedTableViewCell.swift; sourceTree = "<group>"; };
|
||||||
@ -297,6 +307,8 @@
|
|||||||
BFAA1FEC1B8AA4FA00495943 /* Settings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = "<group>"; };
|
BFAA1FEC1B8AA4FA00495943 /* Settings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = "<group>"; };
|
||||||
BFAB9F7C219A43380080EC7D /* SyncManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncManager.swift; sourceTree = "<group>"; };
|
BFAB9F7C219A43380080EC7D /* SyncManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncManager.swift; sourceTree = "<group>"; };
|
||||||
BFAB9F87219A4B670080EC7D /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
|
BFAB9F87219A4B670080EC7D /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||||
|
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 = "<group>"; };
|
BFBAB2E21EB685A2004E0B0E /* DeltaCoreProtocol+Delta.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DeltaCoreProtocol+Delta.swift"; sourceTree = "<group>"; };
|
||||||
BFC134E01AAD82460087AD7B /* SNESDeltaCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SNESDeltaCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
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 = "<group>"; };
|
BFC3627F21ADE2BA00EF2BE6 /* UIAlertController+Error.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIAlertController+Error.swift"; sourceTree = "<group>"; };
|
||||||
@ -335,12 +347,15 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
BFB3593A2278FD0000CFD920 /* N64DeltaCore.framework in Frameworks */,
|
||||||
BF9F4FCF1AAD7B87004C9500 /* DeltaCore.framework in Frameworks */,
|
BF9F4FCF1AAD7B87004C9500 /* DeltaCore.framework in Frameworks */,
|
||||||
BFEC732D1AAECC4A00650035 /* Roxas.framework in Frameworks */,
|
BFEC732D1AAECC4A00650035 /* Roxas.framework in Frameworks */,
|
||||||
BFDE2CD3222DF36A008038E0 /* Alamofire.framework in Frameworks */,
|
BFDE2CD3222DF36A008038E0 /* Alamofire.framework in Frameworks */,
|
||||||
BF48F75B219A1F8A00BC2FC1 /* Harmony_Drive.framework in Frameworks */,
|
BF48F75B219A1F8A00BC2FC1 /* Harmony_Drive.framework in Frameworks */,
|
||||||
|
BFB359452278FD8100CFD920 /* N64DeltaCore_RSP.framework in Frameworks */,
|
||||||
BF99C6941D0A9AA600BA92BC /* SNESDeltaCore.framework in Frameworks */,
|
BF99C6941D0A9AA600BA92BC /* SNESDeltaCore.framework in Frameworks */,
|
||||||
BF98C9822204D9AB006B95AC /* NESDeltaCore.framework in Frameworks */,
|
BF98C9822204D9AB006B95AC /* NESDeltaCore.framework in Frameworks */,
|
||||||
|
BFB359432278FD7E00CFD920 /* N64DeltaCore_Video.framework in Frameworks */,
|
||||||
BF0418141D01E93400E85BCF /* GBADeltaCore.framework in Frameworks */,
|
BF0418141D01E93400E85BCF /* GBADeltaCore.framework in Frameworks */,
|
||||||
BF072010219A3A9D00F05DA4 /* ZIPFoundation.framework in Frameworks */,
|
BF072010219A3A9D00F05DA4 /* ZIPFoundation.framework in Frameworks */,
|
||||||
BFDE2CD1222DF36A008038E0 /* SwiftyDropbox.framework in Frameworks */,
|
BFDE2CD1222DF36A008038E0 /* SwiftyDropbox.framework in Frameworks */,
|
||||||
@ -638,6 +653,9 @@
|
|||||||
BF9F4FCD1AAD7B25004C9500 /* Frameworks */ = {
|
BF9F4FCD1AAD7B25004C9500 /* Frameworks */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
BFB359412278FD6700CFD920 /* N64DeltaCore_Video.framework */,
|
||||||
|
BFB359422278FD6800CFD920 /* N64DeltaCore_RSP.framework */,
|
||||||
|
BF79966C224C075A009B094F /* N64DeltaCore.framework */,
|
||||||
BFDE2CC6222DF345008038E0 /* Harmony_Dropbox.framework */,
|
BFDE2CC6222DF345008038E0 /* Harmony_Dropbox.framework */,
|
||||||
BFDE2CC8222DF345008038E0 /* SwiftyDropbox.framework */,
|
BFDE2CC8222DF345008038E0 /* SwiftyDropbox.framework */,
|
||||||
BFDE2CC7222DF345008038E0 /* Alamofire.framework */,
|
BFDE2CC7222DF345008038E0 /* Alamofire.framework */,
|
||||||
@ -856,6 +874,7 @@
|
|||||||
BFFA71CF1AAC406100EE9DD1 /* Project object */ = {
|
BFFA71CF1AAC406100EE9DD1 /* Project object */ = {
|
||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
|
DefaultBuildSystemTypeForWorkspace = Original;
|
||||||
LastSwiftUpdateCheck = 0700;
|
LastSwiftUpdateCheck = 0700;
|
||||||
LastUpgradeCheck = 1010;
|
LastUpgradeCheck = 1010;
|
||||||
ORGANIZATIONNAME = "Riley Testut";
|
ORGANIZATIONNAME = "Riley Testut";
|
||||||
@ -872,7 +891,7 @@
|
|||||||
ProvisioningStyle = Automatic;
|
ProvisioningStyle = Automatic;
|
||||||
SystemCapabilities = {
|
SystemCapabilities = {
|
||||||
com.apple.iCloud = {
|
com.apple.iCloud = {
|
||||||
enabled = 1;
|
enabled = 0;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -1276,7 +1295,6 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = "Delta/Supporting Files/Delta.entitlements";
|
|
||||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
@ -1297,7 +1315,6 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = "Delta/Supporting Files/Delta.entitlements";
|
|
||||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
|||||||
3
Delta.xcworkspace/contents.xcworkspacedata
generated
3
Delta.xcworkspace/contents.xcworkspacedata
generated
@ -19,6 +19,9 @@
|
|||||||
<FileRef
|
<FileRef
|
||||||
location = "group:Cores/GBADeltaCore/GBADeltaCore.xcodeproj">
|
location = "group:Cores/GBADeltaCore/GBADeltaCore.xcodeproj">
|
||||||
</FileRef>
|
</FileRef>
|
||||||
|
<FileRef
|
||||||
|
location = "group:Cores/N64DeltaCore/N64DeltaCore.xcodeproj">
|
||||||
|
</FileRef>
|
||||||
<FileRef
|
<FileRef
|
||||||
location = "group:External/Harmony/Harmony.xcodeproj">
|
location = "group:External/Harmony/Harmony.xcodeproj">
|
||||||
</FileRef>
|
</FileRef>
|
||||||
|
|||||||
@ -18,7 +18,7 @@
|
|||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<label key="tableFooterView" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Delta 0.6.0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Str-BY-agW">
|
<label key="tableFooterView" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Delta 0.6.0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Str-BY-agW">
|
||||||
<rect key="frame" x="0.0" y="861" width="375" height="44"/>
|
<rect key="frame" x="0.0" y="905" width="375" height="44"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
<color key="textColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
@ -195,12 +195,29 @@
|
|||||||
</subviews>
|
</subviews>
|
||||||
</tableViewCellContentView>
|
</tableViewCellContentView>
|
||||||
</tableViewCell>
|
</tableViewCell>
|
||||||
|
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="Cell" textLabel="vV9-Fk-zd5" style="IBUITableViewCellStyleDefault" id="Dfy-MJ-39n">
|
||||||
|
<rect key="frame" x="0.0" y="463.5" width="375" height="44"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Dfy-MJ-39n" id="dgi-73-brN">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="341" height="43.5"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="System Name" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="vV9-Fk-zd5">
|
||||||
|
<rect key="frame" x="16" y="0.0" width="324" height="43.5"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
|
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
</tableViewCellContentView>
|
||||||
|
</tableViewCell>
|
||||||
</cells>
|
</cells>
|
||||||
</tableViewSection>
|
</tableViewSection>
|
||||||
<tableViewSection headerTitle="Controller Opacity" footerTitle="Determines how translucent the controller appears, if supported by the controller skin." id="SwK-m9-8gt">
|
<tableViewSection headerTitle="Controller Opacity" footerTitle="Determines how translucent the controller appears, if supported by the controller skin." id="SwK-m9-8gt">
|
||||||
<cells>
|
<cells>
|
||||||
<tableViewCell contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="Xxk-vo-eu4">
|
<tableViewCell contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="Xxk-vo-eu4">
|
||||||
<rect key="frame" x="0.0" y="527" width="375" height="44"/>
|
<rect key="frame" x="0.0" y="571" width="375" height="44"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" tableViewCell="Xxk-vo-eu4" id="vxt-Ex-b4b">
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" tableViewCell="Xxk-vo-eu4" id="vxt-Ex-b4b">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||||
@ -241,7 +258,7 @@
|
|||||||
<tableViewSection headerTitle="Delta Sync" id="y6U-7a-bnX" userLabel="Syncing">
|
<tableViewSection headerTitle="Delta Sync" id="y6U-7a-bnX" userLabel="Syncing">
|
||||||
<cells>
|
<cells>
|
||||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="DetailCell" textLabel="4U1-fe-PIb" detailTextLabel="kLY-5g-v8n" style="IBUITableViewCellStyleValue1" id="bwW-PG-BcV">
|
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="DetailCell" textLabel="4U1-fe-PIb" detailTextLabel="kLY-5g-v8n" style="IBUITableViewCellStyleValue1" id="bwW-PG-BcV">
|
||||||
<rect key="frame" x="0.0" y="655" width="375" height="44"/>
|
<rect key="frame" x="0.0" y="699" width="375" height="44"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="bwW-PG-BcV" id="RNA-99-evH">
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="bwW-PG-BcV" id="RNA-99-evH">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="349" height="43.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="349" height="43.5"/>
|
||||||
@ -268,7 +285,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</tableViewCell>
|
</tableViewCell>
|
||||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="BadgeCell" textLabel="1u0-gh-zP7" style="IBUITableViewCellStyleDefault" id="JPg-6O-DRe" customClass="BadgedTableViewCell" customModule="Delta" customModuleProvider="target">
|
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="BadgeCell" textLabel="1u0-gh-zP7" style="IBUITableViewCellStyleDefault" id="JPg-6O-DRe" customClass="BadgedTableViewCell" customModule="Delta" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="699" width="375" height="44"/>
|
<rect key="frame" x="0.0" y="743" width="375" height="44"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="JPg-6O-DRe" id="zcZ-QR-Nno">
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="JPg-6O-DRe" id="zcZ-QR-Nno">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="349" height="43.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="349" height="43.5"/>
|
||||||
@ -292,7 +309,7 @@
|
|||||||
<tableViewSection headerTitle="3D Touch" id="fdp-8c-oOc">
|
<tableViewSection headerTitle="3D Touch" id="fdp-8c-oOc">
|
||||||
<cells>
|
<cells>
|
||||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="Cell" textLabel="c5i-qG-ir9" style="IBUITableViewCellStyleDefault" id="SSL-t4-QZj">
|
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="Cell" textLabel="c5i-qG-ir9" style="IBUITableViewCellStyleDefault" id="SSL-t4-QZj">
|
||||||
<rect key="frame" x="0.0" y="799" width="375" height="44"/>
|
<rect key="frame" x="0.0" y="843" width="375" height="44"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="SSL-t4-QZj" id="hQB-Iy-bzy">
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="SSL-t4-QZj" id="hQB-Iy-bzy">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="349" height="43.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="349" height="43.5"/>
|
||||||
@ -372,7 +389,7 @@
|
|||||||
<gestureRecognizers/>
|
<gestureRecognizers/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="KkE-ji-6Y8" firstAttribute="centerY" secondItem="cPg-qa-ERT" secondAttribute="centerY" placeholder="YES" id="4wi-cL-aCQ"/>
|
<constraint firstItem="KkE-ji-6Y8" firstAttribute="centerY" secondItem="cPg-qa-ERT" secondAttribute="centerY" placeholder="YES" id="4wi-cL-aCQ"/>
|
||||||
<constraint firstItem="Z6c-bc-h6l" firstAttribute="top" secondItem="6Wl-el-X30" secondAttribute="bottom" id="Bmp-yB-Yf1"/>
|
<constraint firstAttribute="bottom" secondItem="6Wl-el-X30" secondAttribute="bottom" id="Bmp-yB-Yf1"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="KkE-ji-6Y8" secondAttribute="trailing" id="Jeb-8K-VYw"/>
|
<constraint firstAttribute="trailing" secondItem="KkE-ji-6Y8" secondAttribute="trailing" id="Jeb-8K-VYw"/>
|
||||||
<constraint firstItem="6Wl-el-X30" firstAttribute="top" secondItem="cH1-gu-g2u" secondAttribute="bottom" id="TD2-bx-DJC"/>
|
<constraint firstItem="6Wl-el-X30" firstAttribute="top" secondItem="cH1-gu-g2u" secondAttribute="bottom" id="TD2-bx-DJC"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="6Wl-el-X30" secondAttribute="trailing" id="Xph-DL-tBk"/>
|
<constraint firstAttribute="trailing" secondItem="6Wl-el-X30" secondAttribute="trailing" id="Xph-DL-tBk"/>
|
||||||
|
|||||||
@ -66,6 +66,11 @@ extension ControllerSkin: ControllerSkinProtocol
|
|||||||
return self.controllerSkin?.image(for: traits, preferredSize: preferredSize)
|
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]?
|
public func inputs(for traits: DeltaCore.ControllerSkin.Traits, at point: CGPoint) -> [Input]?
|
||||||
{
|
{
|
||||||
return self.controllerSkin?.inputs(for: traits, at: point)
|
return self.controllerSkin?.inputs(for: traits, at: point)
|
||||||
|
|||||||
@ -115,8 +115,6 @@ class GameViewController: DeltaCore.GameViewController
|
|||||||
|
|
||||||
private var _isLoadingSaveState = false
|
private var _isLoadingSaveState = false
|
||||||
|
|
||||||
private var context = CIContext(options: [.workingColorSpace: NSNull()])
|
|
||||||
|
|
||||||
// Sustain Buttons
|
// Sustain Buttons
|
||||||
private var isSelectingSustainedButtons = false
|
private var isSelectingSustainedButtons = false
|
||||||
private var sustainInputsMapping: SustainInputsMapping?
|
private var sustainInputsMapping: SustainInputsMapping?
|
||||||
@ -124,6 +122,7 @@ class GameViewController: DeltaCore.GameViewController
|
|||||||
private var sustainButtonsContentView: UIView!
|
private var sustainButtonsContentView: UIView!
|
||||||
private var sustainButtonsBlurView: UIVisualEffectView!
|
private var sustainButtonsBlurView: UIVisualEffectView!
|
||||||
private var sustainButtonsBackgroundView: RSTPlaceholderView!
|
private var sustainButtonsBackgroundView: RSTPlaceholderView!
|
||||||
|
private var inputsToSustain = [AnyInput: Double]()
|
||||||
|
|
||||||
private var isGyroActive = false
|
private var isGyroActive = false
|
||||||
private var presentedGyroAlert = false
|
private var presentedGyroAlert = false
|
||||||
@ -168,9 +167,9 @@ class GameViewController: DeltaCore.GameViewController
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - GameControllerReceiver -
|
// 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
|
if self.isSelectingSustainedButtons
|
||||||
{
|
{
|
||||||
@ -178,7 +177,7 @@ class GameViewController: DeltaCore.GameViewController
|
|||||||
|
|
||||||
if input != StandardGameControllerInput.menu
|
if input != StandardGameControllerInput.menu
|
||||||
{
|
{
|
||||||
gameController.sustain(input)
|
self.inputsToSustain[AnyInput(input)] = value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if self.emulatorCore?.state == .running
|
else if self.emulatorCore?.state == .running
|
||||||
@ -198,8 +197,15 @@ class GameViewController: DeltaCore.GameViewController
|
|||||||
{
|
{
|
||||||
super.gameController(gameController, didDeactivate: input)
|
super.gameController(gameController, didDeactivate: input)
|
||||||
|
|
||||||
guard !self.isSelectingSustainedButtons else { return }
|
if self.isSelectingSustainedButtons
|
||||||
|
{
|
||||||
|
if input.isContinuous
|
||||||
|
{
|
||||||
|
self.inputsToSustain[AnyInput(input)] = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
guard let actionInput = ActionInput(input: input) else { return }
|
guard let actionInput = ActionInput(input: input) else { return }
|
||||||
|
|
||||||
switch actionInput
|
switch actionInput
|
||||||
@ -209,6 +215,7 @@ class GameViewController: DeltaCore.GameViewController
|
|||||||
case .fastForward: self.performFastForwardAction(activate: false)
|
case .fastForward: self.performFastForwardAction(activate: false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -320,7 +327,7 @@ extension GameViewController
|
|||||||
pauseViewController.sustainButtonsItem?.isSelected = gameController.sustainedInputs.count > 0
|
pauseViewController.sustainButtonsItem?.isSelected = gameController.sustainedInputs.count > 0
|
||||||
pauseViewController.sustainButtonsItem?.action = { [unowned self, unowned pauseViewController] item in
|
pauseViewController.sustainButtonsItem?.action = { [unowned self, unowned pauseViewController] item in
|
||||||
|
|
||||||
for input in gameController.sustainedInputs
|
for input in gameController.sustainedInputs.keys
|
||||||
{
|
{
|
||||||
gameController.unsustain(input)
|
gameController.unsustain(input)
|
||||||
}
|
}
|
||||||
@ -650,10 +657,7 @@ extension GameViewController: SaveStatesViewControllerDelegate
|
|||||||
self.emulatorCore?.saveSaveState(to: saveState.fileURL)
|
self.emulatorCore?.saveSaveState(to: saveState.fileURL)
|
||||||
}
|
}
|
||||||
|
|
||||||
if
|
if let snapshot = self.gameView.snapshot(), let data = snapshot.pngData()
|
||||||
let outputImage = self.gameView.outputImage,
|
|
||||||
let quartzImage = self.context.createCGImage(outputImage, from: outputImage.extent),
|
|
||||||
let data = UIImage(cgImage: quartzImage).pngData()
|
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@ -803,10 +807,10 @@ private extension GameViewController
|
|||||||
self.updateControllers()
|
self.updateControllers()
|
||||||
self.sustainInputsMapping = nil
|
self.sustainInputsMapping = nil
|
||||||
|
|
||||||
// Reactivate all sustained inputs, since they will now be mapped to game inputs.
|
// Activate all sustained inputs, since they will now be mapped to game inputs.
|
||||||
for input in gameController.sustainedInputs
|
for (input, value) in self.inputsToSustain
|
||||||
{
|
{
|
||||||
gameController.activate(input)
|
gameController.sustain(input, value: value)
|
||||||
}
|
}
|
||||||
|
|
||||||
let blurEffect = self.sustainButtonsBlurView.effect
|
let blurEffect = self.sustainButtonsBlurView.effect
|
||||||
@ -818,6 +822,8 @@ private extension GameViewController
|
|||||||
self.sustainButtonsContentView.isHidden = true
|
self.sustainButtonsContentView.isHidden = true
|
||||||
self.sustainButtonsBlurView.effect = blurEffect
|
self.sustainButtonsBlurView.effect = blurEffect
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.inputsToSustain = [:]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -19,6 +19,7 @@ extension DeltaCoreProtocol
|
|||||||
case .snes: return 1...4
|
case .snes: return 1...4
|
||||||
case .gbc: return 1...4
|
case .gbc: return 1...4
|
||||||
case .gba: return 1...3
|
case .gba: return 1...3
|
||||||
|
case .n64: return 1...3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -705,6 +705,8 @@ extension GameCollectionViewController: UIViewControllerPreviewingDelegate
|
|||||||
let gameViewController = viewControllerToCommit as! PreviewGameViewController
|
let gameViewController = viewControllerToCommit as! PreviewGameViewController
|
||||||
let game = gameViewController.game as! Game
|
let game = gameViewController.game as! Game
|
||||||
|
|
||||||
|
gameViewController.pauseEmulation()
|
||||||
|
|
||||||
let indexPath = self.dataSource.fetchedResultsController.indexPath(forObject: game)!
|
let indexPath = self.dataSource.fetchedResultsController.indexPath(forObject: game)!
|
||||||
|
|
||||||
let fileURL = FileManager.default.uniqueTemporaryURL()
|
let fileURL = FileManager.default.uniqueTemporaryURL()
|
||||||
|
|||||||
@ -50,7 +50,9 @@ extension CheatTextView
|
|||||||
let characterWidth = ("A" as NSString).size(withAttributes: [.font: font]).width
|
let characterWidth = ("A" as NSString).size(withAttributes: [.font: font]).width
|
||||||
|
|
||||||
let width = characterWidth * CGFloat(format.format.count)
|
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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -596,7 +596,7 @@ extension SaveStatesViewController: UIViewControllerPreviewingDelegate
|
|||||||
func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController)
|
func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController)
|
||||||
{
|
{
|
||||||
let gameViewController = viewControllerToCommit as! PreviewGameViewController
|
let gameViewController = viewControllerToCommit as! PreviewGameViewController
|
||||||
gameViewController.emulatorCore?.pause()
|
gameViewController.pauseEmulation()
|
||||||
|
|
||||||
let fileURL = FileManager.default.uniqueTemporaryURL()
|
let fileURL = FileManager.default.uniqueTemporaryURL()
|
||||||
if let saveState = gameViewController.emulatorCore?.saveSaveState(to: fileURL)
|
if let saveState = gameViewController.emulatorCore?.saveSaveState(to: fileURL)
|
||||||
|
|||||||
@ -123,6 +123,7 @@ private extension ControllerInputsViewController
|
|||||||
|
|
||||||
// Update controller view's controller skin.
|
// Update controller view's controller skin.
|
||||||
self.gameViewController.controllerView.controllerSkin = DeltaCore.ControllerSkin.standardControllerSkin(for: self.system.gameType)
|
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.
|
// Fetch input mapping if it hasn't already been fetched.
|
||||||
if let gameController = self.gameController, let playerIndex = gameController.playerIndex, self.inputMappings[self.system] == nil
|
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 .standard: itemFrame = item.frame
|
||||||
case let .directional(up, down, left, right):
|
case let .directional(up, down, left, right):
|
||||||
|
let frame = (item.kind == .thumbstick) ? item.extendedFrame : item.frame
|
||||||
|
|
||||||
switch input.stringValue
|
switch input.stringValue
|
||||||
{
|
{
|
||||||
case up.stringValue:
|
case up.stringValue:
|
||||||
itemFrame = CGRect(x: item.frame.minX + item.frame.width / 3,
|
itemFrame = CGRect(x: frame.minX + frame.width / 3,
|
||||||
y: item.frame.minY,
|
y: frame.minY,
|
||||||
width: item.frame.width / 3,
|
width: frame.width / 3,
|
||||||
height: item.frame.height / 3)
|
height: frame.height / 3)
|
||||||
case down.stringValue:
|
case down.stringValue:
|
||||||
itemFrame = CGRect(x: item.frame.minX + item.frame.width / 3,
|
itemFrame = CGRect(x: frame.minX + frame.width / 3,
|
||||||
y: item.frame.minY + (item.frame.height / 3) * 2,
|
y: frame.minY + (frame.height / 3) * 2,
|
||||||
width: item.frame.width / 3,
|
width: frame.width / 3,
|
||||||
height: item.frame.height / 3)
|
height: frame.height / 3)
|
||||||
|
|
||||||
case left.stringValue:
|
case left.stringValue:
|
||||||
itemFrame = CGRect(x: item.frame.minX,
|
itemFrame = CGRect(x: frame.minX,
|
||||||
y: item.frame.minY + (item.frame.height / 3),
|
y: frame.minY + (frame.height / 3),
|
||||||
width: item.frame.width / 3,
|
width: frame.width / 3,
|
||||||
height: item.frame.height / 3)
|
height: frame.height / 3)
|
||||||
|
|
||||||
case right.stringValue:
|
case right.stringValue:
|
||||||
itemFrame = CGRect(x: item.frame.minX + (item.frame.width / 3) * 2,
|
itemFrame = CGRect(x: frame.minX + (frame.width / 3) * 2,
|
||||||
y: item.frame.minY + (item.frame.height / 3),
|
y: frame.minY + (frame.height / 3),
|
||||||
width: item.frame.width / 3,
|
width: frame.width / 3,
|
||||||
height: item.frame.height / 3)
|
height: frame.height / 3)
|
||||||
|
|
||||||
default: itemFrame = nil
|
default: itemFrame = nil
|
||||||
}
|
}
|
||||||
@ -478,7 +480,7 @@ private extension ControllerInputsViewController
|
|||||||
|
|
||||||
extension ControllerInputsViewController: GameControllerReceiver
|
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 }
|
guard self.isViewLoaded else { return }
|
||||||
|
|
||||||
|
|||||||
@ -205,6 +205,7 @@ private extension Settings
|
|||||||
case .snes: systemName = "snes"
|
case .snes: systemName = "snes"
|
||||||
case .gbc: systemName = "gbc"
|
case .gbc: systemName = "gbc"
|
||||||
case .gba: systemName = "gba"
|
case .gba: systemName = "gba"
|
||||||
|
case .n64: systemName = "n64"
|
||||||
}
|
}
|
||||||
|
|
||||||
let orientation: String
|
let orientation: String
|
||||||
|
|||||||
@ -1,18 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict/>
|
||||||
<key>com.apple.developer.icloud-container-identifiers</key>
|
|
||||||
<array>
|
|
||||||
<string>iCloud.$(CFBundleIdentifier)</string>
|
|
||||||
</array>
|
|
||||||
<key>com.apple.developer.icloud-services</key>
|
|
||||||
<array>
|
|
||||||
<string>CloudDocuments</string>
|
|
||||||
</array>
|
|
||||||
<key>com.apple.developer.ubiquity-container-identifiers</key>
|
|
||||||
<array>
|
|
||||||
<string>iCloud.$(CFBundleIdentifier)</string>
|
|
||||||
</array>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
@ -88,6 +88,20 @@
|
|||||||
<string>com.rileytestut.delta.game.nes</string>
|
<string>com.rileytestut.delta.game.nes</string>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleTypeIconFiles</key>
|
||||||
|
<array/>
|
||||||
|
<key>CFBundleTypeName</key>
|
||||||
|
<string>N64 Game</string>
|
||||||
|
<key>CFBundleTypeRole</key>
|
||||||
|
<string>Viewer</string>
|
||||||
|
<key>LSHandlerRank</key>
|
||||||
|
<string>Owner</string>
|
||||||
|
<key>LSItemContentTypes</key>
|
||||||
|
<array>
|
||||||
|
<string>com.rileytestut.delta.game.n64</string>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>$(EXECUTABLE_NAME)</string>
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
@ -100,7 +114,7 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>0.7.1</string>
|
<string>0.8</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleURLTypes</key>
|
<key>CFBundleURLTypes</key>
|
||||||
@ -114,16 +128,16 @@
|
|||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>CFBundleURLName</key>
|
||||||
|
<string></string>
|
||||||
<key>CFBundleURLSchemes</key>
|
<key>CFBundleURLSchemes</key>
|
||||||
<array>
|
<array>
|
||||||
<string>db-f5btgysf9ma9bb6</string>
|
<string>db-f5btgysf9ma9bb6</string>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleURLName</key>
|
|
||||||
<string></string>
|
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>7</string>
|
<string>9</string>
|
||||||
<key>Fabric</key>
|
<key>Fabric</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>APIKey</key>
|
<key>APIKey</key>
|
||||||
@ -138,6 +152,11 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>LSApplicationQueriesSchemes</key>
|
||||||
|
<array>
|
||||||
|
<string>dbapi-8-emm</string>
|
||||||
|
<string>dbapi-2</string>
|
||||||
|
</array>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>LSSupportsOpeningDocumentsInPlace</key>
|
<key>LSSupportsOpeningDocumentsInPlace</key>
|
||||||
@ -158,7 +177,9 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>NSPhotoLibraryUsageDescription</key>
|
<key>NSPhotoLibraryUsageDescription</key>
|
||||||
<string>Press "OK" to allow Delta to use images from your Photo Library as game artwork.</string>
|
<string>Press "OK" to allow Delta to use images from your Photo Library as game artwork.</string>
|
||||||
|
<key>UIBackgroundModes</key>
|
||||||
|
<array/>
|
||||||
<key>UIFileSharingEnabled</key>
|
<key>UIFileSharingEnabled</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>UILaunchStoryboardName</key>
|
<key>UILaunchStoryboardName</key>
|
||||||
@ -279,11 +300,24 @@
|
|||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
<dict>
|
||||||
<key>LSApplicationQueriesSchemes</key>
|
<key>UTTypeConformsTo</key>
|
||||||
<array>
|
<array>
|
||||||
<string>dbapi-8-emm</string>
|
<string>com.rileytestut.delta.game</string>
|
||||||
<string>dbapi-2</string>
|
</array>
|
||||||
|
<key>UTTypeDescription</key>
|
||||||
|
<string>N64 Game</string>
|
||||||
|
<key>UTTypeIdentifier</key>
|
||||||
|
<string>com.rileytestut.delta.game.n64</string>
|
||||||
|
<key>UTTypeTagSpecification</key>
|
||||||
|
<dict>
|
||||||
|
<key>public.filename-extension</key>
|
||||||
|
<array>
|
||||||
|
<string>n64</string>
|
||||||
|
<string>z64</string>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
@ -12,11 +12,13 @@ import SNESDeltaCore
|
|||||||
import GBADeltaCore
|
import GBADeltaCore
|
||||||
import GBCDeltaCore
|
import GBCDeltaCore
|
||||||
import NESDeltaCore
|
import NESDeltaCore
|
||||||
|
import N64DeltaCore
|
||||||
|
|
||||||
enum System: CaseIterable
|
enum System: CaseIterable
|
||||||
{
|
{
|
||||||
case nes
|
case nes
|
||||||
case snes
|
case snes
|
||||||
|
case n64
|
||||||
case gbc
|
case gbc
|
||||||
case gba
|
case gba
|
||||||
}
|
}
|
||||||
@ -28,6 +30,7 @@ extension System
|
|||||||
{
|
{
|
||||||
case .nes: return NSLocalizedString("Nintendo", comment: "")
|
case .nes: return NSLocalizedString("Nintendo", comment: "")
|
||||||
case .snes: return NSLocalizedString("Super Nintendo", comment: "")
|
case .snes: return NSLocalizedString("Super Nintendo", comment: "")
|
||||||
|
case .n64: return NSLocalizedString("Nintendo 64", comment: "")
|
||||||
case .gbc: return NSLocalizedString("Game Boy Color", comment: "")
|
case .gbc: return NSLocalizedString("Game Boy Color", comment: "")
|
||||||
case .gba: return NSLocalizedString("Game Boy Advance", comment: "")
|
case .gba: return NSLocalizedString("Game Boy Advance", comment: "")
|
||||||
}
|
}
|
||||||
@ -38,6 +41,7 @@ extension System
|
|||||||
{
|
{
|
||||||
case .nes: return NSLocalizedString("NES", comment: "")
|
case .nes: return NSLocalizedString("NES", comment: "")
|
||||||
case .snes: return NSLocalizedString("SNES", comment: "")
|
case .snes: return NSLocalizedString("SNES", comment: "")
|
||||||
|
case .n64: return NSLocalizedString("N64", comment: "")
|
||||||
case .gbc: return NSLocalizedString("GBC", comment: "")
|
case .gbc: return NSLocalizedString("GBC", comment: "")
|
||||||
case .gba: return NSLocalizedString("GBA", comment: "")
|
case .gba: return NSLocalizedString("GBA", comment: "")
|
||||||
}
|
}
|
||||||
@ -48,6 +52,7 @@ extension System
|
|||||||
{
|
{
|
||||||
case .nes: return 1985
|
case .nes: return 1985
|
||||||
case .snes: return 1990
|
case .snes: return 1990
|
||||||
|
case .n64: return 1996
|
||||||
case .gbc: return 1998
|
case .gbc: return 1998
|
||||||
case .gba: return 2001
|
case .gba: return 2001
|
||||||
}
|
}
|
||||||
@ -61,6 +66,7 @@ extension System
|
|||||||
{
|
{
|
||||||
case .nes: return NES.core
|
case .nes: return NES.core
|
||||||
case .snes: return SNES.core
|
case .snes: return SNES.core
|
||||||
|
case .n64: return N64.core
|
||||||
case .gbc: return GBC.core
|
case .gbc: return GBC.core
|
||||||
case .gba: return GBA.core
|
case .gba: return GBA.core
|
||||||
}
|
}
|
||||||
@ -71,6 +77,7 @@ extension System
|
|||||||
{
|
{
|
||||||
case .nes: return .nes
|
case .nes: return .nes
|
||||||
case .snes: return .snes
|
case .snes: return .snes
|
||||||
|
case .n64: return .n64
|
||||||
case .gbc: return .gbc
|
case .gbc: return .gbc
|
||||||
case .gba: return .gba
|
case .gba: return .gba
|
||||||
}
|
}
|
||||||
@ -82,6 +89,7 @@ extension System
|
|||||||
{
|
{
|
||||||
case GameType.nes: self = .nes
|
case GameType.nes: self = .nes
|
||||||
case GameType.snes: self = .snes
|
case GameType.snes: self = .snes
|
||||||
|
case GameType.n64: self = .n64
|
||||||
case GameType.gbc: self = .gbc
|
case GameType.gbc: self = .gbc
|
||||||
case GameType.gba: self = .gba
|
case GameType.gba: self = .gba
|
||||||
default: return nil
|
default: return nil
|
||||||
@ -97,6 +105,7 @@ extension GameType
|
|||||||
{
|
{
|
||||||
case "nes": self = .nes
|
case "nes": self = .nes
|
||||||
case "smc", "sfc", "fig": self = .snes
|
case "smc", "sfc", "fig": self = .snes
|
||||||
|
case "n64", "z64": self = .n64
|
||||||
case "gbc", "gb": self = .gbc
|
case "gbc", "gb": self = .gbc
|
||||||
case "gba": self = .gba
|
case "gba": self = .gba
|
||||||
default: return nil
|
default: return nil
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user