diff --git a/Cores/O2EM b/Cores/O2EM
index e09e5971c7..5fa886b902 160000
--- a/Cores/O2EM
+++ b/Cores/O2EM
@@ -1 +1 @@
-Subproject commit e09e5971c7db17e17a9d2bc40ecd59d0e81146f5
+Subproject commit 5fa886b9022fcea1c0c6485efff6da959d64b480
diff --git a/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration+Frameworks.swift b/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration+Frameworks.swift
index 1fef403c82..3c95169f72 100644
--- a/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration+Frameworks.swift
+++ b/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration+Frameworks.swift
@@ -97,7 +97,7 @@ public extension PVEmulatorConfiguration {
}
class func setPropertiesTo(pvSystem: PVSystem, fromSystemPlistEntry system: SytemPlistEntry) {
- pvSystem.openvgDatabaseID = Int(system.PVDatabaseID)!
+ pvSystem.openvgDatabaseID = Int(system.PVDatabaseID) ?? -1
pvSystem.requiresBIOS = system.PVRequiresBIOS ?? false
pvSystem.manufacturer = system.PVManufacturer
pvSystem.bit = Int(system.PVBit) ?? 0
diff --git a/PVLibrary/PVLibrary/Resources/systems.plist b/PVLibrary/PVLibrary/Resources/systems.plist
index 220a847ccd..00e9b7e2c3 100644
--- a/PVLibrary/PVLibrary/Resources/systems.plist
+++ b/PVLibrary/PVLibrary/Resources/systems.plist
@@ -3379,7 +3379,7 @@
PVSystemIdentifier
com.provenance.odyssey2
PVDatabaseID
-
+ -1
PVSupportedExtensions
bin
diff --git a/Provenance.xcodeproj/project.pbxproj b/Provenance.xcodeproj/project.pbxproj
index 8992b62c03..9b2b816a79 100644
--- a/Provenance.xcodeproj/project.pbxproj
+++ b/Provenance.xcodeproj/project.pbxproj
@@ -145,9 +145,6 @@
B3054372272026E800F5257D /* PVPSPControllerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3054370272026E800F5257D /* PVPSPControllerViewController.swift */; };
B306E0CF2769F2C2001DC52E /* PVOdyssey2ControllerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B306E0CE2769F2C2001DC52E /* PVOdyssey2ControllerViewController.swift */; };
B306E0D02769F2C2001DC52E /* PVOdyssey2ControllerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B306E0CE2769F2C2001DC52E /* PVOdyssey2ControllerViewController.swift */; };
- B306E0F72769F6D9001DC52E /* PVO2EM.h in Headers */ = {isa = PBXBuildFile; fileRef = B306E0F62769F6D9001DC52E /* PVO2EM.h */; settings = {ATTRIBUTES = (Public, ); }; };
- B306E0FA2769F6D9001DC52E /* PVO2EM.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B306E0F42769F6D9001DC52E /* PVO2EM.framework */; };
- B306E0FB2769F6D9001DC52E /* PVO2EM.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B306E0F42769F6D9001DC52E /* PVO2EM.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
B31117B0218EB3A900C495A2 /* PVEmulatorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A164EB217BC03E800FAC391 /* PVEmulatorViewController.swift */; };
B31117B1218EB3AA00C495A2 /* PVEmulatorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A164EB217BC03E800FAC391 /* PVEmulatorViewController.swift */; };
B31117B3218EB3AE00C495A2 /* PVButtonGroupOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3F64ED1205CD20800C273C7 /* PVButtonGroupOverlayView.swift */; };
@@ -481,13 +478,6 @@
remoteGlobalIDString = 1A3D409317B2DCE4004DFFFC;
remoteInfo = Provenance;
};
- B306E0F82769F6D9001DC52E /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 1A3D408C17B2DCE4004DFFFC /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = B306E0F32769F6D9001DC52E;
- remoteInfo = PVO2EM;
- };
B36FE830218EAAD200F858F3 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 1A3D408C17B2DCE4004DFFFC /* Project object */;
@@ -578,7 +568,6 @@
dstSubfolderSpec = 10;
files = (
55546DF2257D6CA800616332 /* PVTGBDual.framework in Embed Frameworks */,
- B306E0FB2769F6D9001DC52E /* PVO2EM.framework in Embed Frameworks */,
B3CB85C01E9BFB07009155A6 /* PVPokeMini.framework in Embed Frameworks */,
B316B4E521926D7400693472 /* PVReicast.framework in Embed Frameworks */,
B324C6202192057E009F4EDC /* PVFCEU.framework in Embed Frameworks */,
@@ -724,8 +713,8 @@
B305436D2720237400F5257D /* PVPPSSPP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVPPSSPP.framework; sourceTree = BUILT_PRODUCTS_DIR; };
B3054370272026E800F5257D /* PVPSPControllerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PVPSPControllerViewController.swift; sourceTree = ""; };
B306E0CE2769F2C2001DC52E /* PVOdyssey2ControllerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PVOdyssey2ControllerViewController.swift; sourceTree = ""; };
- B306E0F42769F6D9001DC52E /* PVO2EM.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVO2EM.framework; sourceTree = BUILT_PRODUCTS_DIR; };
B306E0F62769F6D9001DC52E /* PVO2EM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVO2EM.h; sourceTree = ""; };
+ B306E1412769FE65001DC52E /* PVO2EM.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVO2EM.framework; sourceTree = BUILT_PRODUCTS_DIR; };
B309C7A42717C49F00279529 /* PVFlycast.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVFlycast.framework; sourceTree = BUILT_PRODUCTS_DIR; };
B309C7A72717C4B500279529 /* PVFlycast.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVFlycast.framework; sourceTree = BUILT_PRODUCTS_DIR; };
B30C6E20271D823F0025DD88 /* PVPPSSPP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVPPSSPP.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -1005,7 +994,6 @@
B336B91926B3A21800960A81 /* QuickTableViewController in Frameworks */,
B312805E274C60EC00550720 /* SteamController in Frameworks */,
B3C9D5E71DEAA7E80068D057 /* PVStella.framework in Frameworks */,
- B306E0FA2769F6D9001DC52E /* PVO2EM.framework in Frameworks */,
1A3D409C17B2DCE4004DFFFC /* CoreGraphics.framework in Frameworks */,
B3DB1EF127683D8600806B43 /* AltKit in Frameworks */,
);
@@ -1071,13 +1059,6 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
- B306E0F12769F6D9001DC52E /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
B3E21D68203211BE009939D3 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -1177,7 +1158,6 @@
1AD481B41BA350A400FDA50A /* Provenance.app */,
BE9FDCB71C210B9E0046DF0E /* TopShelf.appex */,
B3E21D6B203211BE009939D3 /* Spotlight.appex */,
- B306E0F42769F6D9001DC52E /* PVO2EM.framework */,
);
name = Products;
sourceTree = "";
@@ -1185,6 +1165,7 @@
1A3D409617B2DCE4004DFFFC /* Frameworks */ = {
isa = PBXGroup;
children = (
+ B306E1412769FE65001DC52E /* PVO2EM.framework */,
B3D54EF42768306200476241 /* SwiftUI.framework */,
B3D54EF62768308100476241 /* SwiftUI.framework */,
B33625FB26EDF88200DC41EA /* Metal.framework */,
@@ -1815,17 +1796,6 @@
};
/* End PBXGroup section */
-/* Begin PBXHeadersBuildPhase section */
- B306E0EF2769F6D9001DC52E /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- B306E0F72769F6D9001DC52E /* PVO2EM.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
/* Begin PBXNativeTarget section */
1A3D409317B2DCE4004DFFFC /* Provenance */ = {
isa = PBXNativeTarget;
@@ -1844,7 +1814,6 @@
B383226426ED9F080029D12F /* PBXTargetDependency */,
B3B29D462156183D00903290 /* PBXTargetDependency */,
B36FE831218EAAD200F858F3 /* PBXTargetDependency */,
- B306E0F92769F6D9001DC52E /* PBXTargetDependency */,
);
name = Provenance;
packageProductDependencies = (
@@ -1908,24 +1877,6 @@
productReference = 1AD9AA351ACC988F00EC87A0 /* Provenance Tests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
- B306E0F32769F6D9001DC52E /* PVO2EM */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = B306E0FC2769F6D9001DC52E /* Build configuration list for PBXNativeTarget "PVO2EM" */;
- buildPhases = (
- B306E0EF2769F6D9001DC52E /* Headers */,
- B306E0F02769F6D9001DC52E /* Sources */,
- B306E0F12769F6D9001DC52E /* Frameworks */,
- B306E0F22769F6D9001DC52E /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = PVO2EM;
- productName = PVO2EM;
- productReference = B306E0F42769F6D9001DC52E /* PVO2EM.framework */;
- productType = "com.apple.product-type.framework";
- };
B3E21D6A203211BE009939D3 /* Spotlight */ = {
isa = PBXNativeTarget;
buildConfigurationList = B3E21D73203211BE009939D3 /* Build configuration list for PBXNativeTarget "Spotlight" */;
@@ -2019,9 +1970,6 @@
LastSwiftMigration = 1000;
TestTargetID = 1A3D409317B2DCE4004DFFFC;
};
- B306E0F32769F6D9001DC52E = {
- CreatedOnToolsVersion = 13.0;
- };
B383225D26ED9C530029D12F = {
CreatedOnToolsVersion = 13.0;
};
@@ -2081,7 +2029,6 @@
B3B29D3F2156177100903290 /* Create Version files */,
B3B29D4D21561F0600903290 /* Setup Code-Signing */,
B383225D26ED9C530029D12F /* Check Git Submodules */,
- B306E0F32769F6D9001DC52E /* PVO2EM */,
);
};
/* End PBXProject section */
@@ -2137,13 +2084,6 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
- B306E0F22769F6D9001DC52E /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
@@ -2586,13 +2526,6 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
- B306E0F02769F6D9001DC52E /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
B3E21D67203211BE009939D3 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -2619,11 +2552,6 @@
target = 1A3D409317B2DCE4004DFFFC /* Provenance */;
targetProxy = 1AD9AA511ACC9FA800EC87A0 /* PBXContainerItemProxy */;
};
- B306E0F92769F6D9001DC52E /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = B306E0F32769F6D9001DC52E /* PVO2EM */;
- targetProxy = B306E0F82769F6D9001DC52E /* PBXContainerItemProxy */;
- };
B36FE831218EAAD200F858F3 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
platformFilter = ios;
@@ -3216,146 +3144,6 @@
};
name = Release;
};
- B306E0FD2769F6D9001DC52E /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_ENABLE_OBJC_WEAK = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 1;
- DEBUG_INFORMATION_FORMAT = dwarf;
- DEFINES_MODULE = YES;
- DEVELOPMENT_TEAM = S32Z3HMYVQ;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- GCC_C_LANGUAGE_STANDARD = gnu11;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GENERATE_INFOPLIST_FILE = YES;
- INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Provenance Emu. All rights reserved.";
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 15.0;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- "@loader_path/Frameworks",
- );
- MARKETING_VERSION = 1.0;
- MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
- MTL_FAST_MATH = YES;
- PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVO2EM";
- PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
- SKIP_INSTALL = YES;
- SWIFT_EMIT_LOC_STRINGS = YES;
- TARGETED_DEVICE_FAMILY = "1,2";
- VERSION_INFO_PREFIX = "";
- };
- name = Debug;
- };
- B306E0FE2769F6D9001DC52E /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_ENABLE_OBJC_WEAK = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_STYLE = Automatic;
- COPY_PHASE_STRIP = NO;
- CURRENT_PROJECT_VERSION = 1;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- DEFINES_MODULE = YES;
- DEVELOPMENT_TEAM = S32Z3HMYVQ;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- ENABLE_NS_ASSERTIONS = NO;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GENERATE_INFOPLIST_FILE = YES;
- INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Provenance Emu. All rights reserved.";
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 15.0;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- "@loader_path/Frameworks",
- );
- MARKETING_VERSION = 1.0;
- MTL_ENABLE_DEBUG_INFO = NO;
- MTL_FAST_MATH = YES;
- PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVO2EM";
- PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
- SKIP_INSTALL = YES;
- SWIFT_EMIT_LOC_STRINGS = YES;
- TARGETED_DEVICE_FAMILY = "1,2";
- VERSION_INFO_PREFIX = "";
- };
- name = Release;
- };
- B306E0FF2769F6D9001DC52E /* Archive */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_ENABLE_OBJC_WEAK = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_IDENTITY = "Apple Development";
- CODE_SIGN_STYLE = Automatic;
- COPY_PHASE_STRIP = NO;
- CURRENT_PROJECT_VERSION = 1;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- DEFINES_MODULE = YES;
- DEVELOPMENT_TEAM = S32Z3HMYVQ;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- ENABLE_NS_ASSERTIONS = NO;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GENERATE_INFOPLIST_FILE = YES;
- INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Provenance Emu. All rights reserved.";
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 15.0;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- "@loader_path/Frameworks",
- );
- MARKETING_VERSION = 1.0;
- MTL_ENABLE_DEBUG_INFO = NO;
- MTL_FAST_MATH = YES;
- PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVO2EM";
- PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
- SKIP_INSTALL = YES;
- SWIFT_EMIT_LOC_STRINGS = YES;
- TARGETED_DEVICE_FAMILY = "1,2";
- VERSION_INFO_PREFIX = "";
- };
- name = Archive;
- };
B3721CEB21912B7400433E4C /* Archive */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -3938,16 +3726,6 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- B306E0FC2769F6D9001DC52E /* Build configuration list for PBXNativeTarget "PVO2EM" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- B306E0FD2769F6D9001DC52E /* Debug */,
- B306E0FE2769F6D9001DC52E /* Release */,
- B306E0FF2769F6D9001DC52E /* Archive */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
B383225E26ED9C530029D12F /* Build configuration list for PBXAggregateTarget "Check Git Submodules" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/Provenance/Controller/Systems/PVOdyssey2ControllerViewController.swift b/Provenance/Controller/Systems/PVOdyssey2ControllerViewController.swift
index 5e47bf6d3a..0ff9db0678 100644
--- a/Provenance/Controller/Systems/PVOdyssey2ControllerViewController.swift
+++ b/Provenance/Controller/Systems/PVOdyssey2ControllerViewController.swift
@@ -9,7 +9,7 @@
import PVSupport
private extension JSButton {
- var buttonTag: POdyssey2Button {
+ var buttonTag: PVOdyssey2Button {
get {
return PVOdyssey2Button(rawValue: tag)!
}
@@ -19,7 +19,7 @@ private extension JSButton {
}
}
-final class PVOdyssey2ControllerViewController: PVControllerViewController {
+final class PVOdyssey2ControllerViewController: PVControllerViewController {
override func layoutViews() {
buttonGroup?.subviews.forEach {
guard let button = $0 as? JSButton, let title = button.titleLabel?.text else {
@@ -83,18 +83,18 @@ final class PVOdyssey2ControllerViewController: PVControllerViewController