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..7c6a2360d7 100644 --- a/PVLibrary/PVLibrary/Resources/systems.plist +++ b/PVLibrary/PVLibrary/Resources/systems.plist @@ -3364,6 +3364,21 @@ + PVBIOSNames + + + Description + Magnox Odyssey2 BIOS + MD5 + 562d5ebf9e030a40d6fabfc2f33139fd + Name + o2rom.bin + Size + 1024 + + + PVRequiresBIOS + PVManufacturer Magnavox PVSystemName @@ -3379,7 +3394,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