diff --git a/.gitignore b/.gitignore index 2ac34f9252..5d6fdfbc05 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,4 @@ report.xml /Cores/PPSSPP/cmake/lib/Debug/libnative.a /Cores/PPSSPP/cmake/lib/Debug/libSPIRV.a Cores/PPSSPP/cmake/lib/ +/CodeSigning.xcconfig diff --git a/.gitmodules b/.gitmodules index c0e8ccce17..e5391e3793 100644 --- a/.gitmodules +++ b/.gitmodules @@ -43,9 +43,6 @@ [submodule "Cores/DuckStation/duckstation"] path = Cores/DuckStation/duckstation url = https://github.com/stenzek/duckstation.git -[submodule "Cores/Flycast/flycast"] - path = Cores/Desmume2015/flycast - url = https://github.com/flyinghead/flycast.git [submodule "Cores/Desmume2015/desmume2015"] path = Cores/Desmume2015/desmume2015 url = https://github.com/libretro/desmume2015.git @@ -64,3 +61,18 @@ [submodule "Cores/4DO"] path = Cores/4DO url = https://github.com/Provenance-Emu/4DO-Core.git +[submodule "Cores/mGBA/mGBA-Core"] + path = Cores/mGBA/mGBA-Core + url = https://github.com/Provenance-Emu/mGBA-Core.git +[submodule "Cores/snesticle/SNESticle"] + path = Cores/snesticle/SNESticle + url = https://github.com/Provenance-Emu/SNESticle.git +[submodule "Cores/sm64ex/sm64ex-ios"] + path = Cores/sm64ex/sm64ex-ios + url = https://github.com/Provenance-Emu/sm64ex-ios.git +[submodule "Cores/ProSystem/ProSystem1_3"] + path = Cores/ProSystem/ProSystem1_3 + url = https://github.com/Provenance-Emu/ProSystem1_3.git +[submodule "Cores/FinalBurnNeo/FBNeo"] + path = Cores/FinalBurnNeo/FBNeo + url = https://github.com/Provenance-Emu/FBNeo.git diff --git a/Build-iOS.xcconfig b/Build-iOS.xcconfig new file mode 100644 index 0000000000..7816cc9a11 --- /dev/null +++ b/Build-iOS.xcconfig @@ -0,0 +1 @@ +#include "Build.xcconfig" diff --git a/Build-tvOS.xcconfig b/Build-tvOS.xcconfig new file mode 100644 index 0000000000..7816cc9a11 --- /dev/null +++ b/Build-tvOS.xcconfig @@ -0,0 +1 @@ +#include "Build.xcconfig" diff --git a/Build-watchOS.xcconfig b/Build-watchOS.xcconfig new file mode 100644 index 0000000000..7816cc9a11 --- /dev/null +++ b/Build-watchOS.xcconfig @@ -0,0 +1 @@ +#include "Build.xcconfig" diff --git a/Build.xcconfig b/Build.xcconfig new file mode 100644 index 0000000000..8785bc5cb0 --- /dev/null +++ b/Build.xcconfig @@ -0,0 +1,56 @@ +// Configuration settings file format documentation can be found at: +// https://help.apple.com/xcode/#/dev745c5c974 + +MARKETING_VERSION = 2.1.0 +CURRENT_PROJECT_VERSION = 2780 + +// Vars to be overwritten by `CodeSigning.xcconfig` if exists +DEVELOPMENT_TEAM = S32Z3HMYVQ +ORG_IDENTIFIER = org.provenance-emu + +// Codesigning settings defined optionally, see `CodeSigning.xcconfig.example` +#include? "CodeSigning.xcconfig" + +ORG_PREFIX = $(ORG_IDENTIFIER) + +PRODUCT_NAME = Provenance +//PRODUCT_NAME[configuration=Debug] = Prov Debug + +PRODUCT_BUNDLE_IDENTIFIER = $(ORG_PREFIX).$(PROJECT_NAME:lower) +//PRODUCT_BUNDLE_IDENTIFIER[configuration=Debug] = $(ORG_PREFIX).$(PROJECT_NAME:lower)-debug + +APP_GROUP_IDENTIFIER = group.$(ORG_PREFIX).$(PROJECT_NAME:lower) +ICLOUD_CONTAINER_IDENTIFIER = iCloud.$(ORG_PREFIX).$(PROJECT_NAME:lower) + + +// CODE_SIGN_ENTITLEMENTS = $(TARGET_NAME)/$(TARGET_NAME)$(ENTITLEMENTS_TYPE).entitlements + + +// Entitlements based off of CodeSigning settings +IOS_CODE_SIGN_ENTITLEMENTS_YES = Provenance/Provenance.entitlements +IOS_CODE_SIGN_ENTITLEMENTS_NO = +//IOS_CODE_SIGN_ENTITLEMENTS = $(IOS_CODE_SIGN_ENTITLEMENTS_$(DEVELOPER_ACCOUNT_PAID:default=NO)) + +TVOS_CODE_SIGN_ENTITLEMENTS_YES = ProvenanceTV/Provenance.entitlements +TVOS_CODE_SIGN_ENTITLEMENTS_NO = +//TVOS_CODE_SIGN_ENTITLEMENTS = $(TVOS_CODE_SIGN_ENTITLEMENTS_$(DEVELOPER_ACCOUNT_PAID:default=NO)) + +TOPSHELF_PRODUCT_BUNDLE_IDENTIFIER = $(ORG_PREFIX).$(PROJECT_NAME:lower).topshelf +SPOTLIGHT_PRODUCT_BUNDLE_IDENTIFIER = $(ORG_PREFIX).$(PROJECT_NAME:lower).spotlight + +WATCH_PRODUCT_BUNDLE_IDENTIFIER = $(ORG_PREFIX).$(PROJECT_NAME:lower)-watch +WATCH_APP_PRODUCT_BUNDLE_IDENTIFIER = $(WATCH_PRODUCT_BUNDLE_IDENTIFIER).watchkitapp +WATCH_APP_EXTENSION_PRODUCT_BUNDLE_IDENTIFIER = $(WATCH_APP_PRODUCT_BUNDLE_IDENTIFIER).watchkitextension + +PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER = $(ORG_PREFIX).$(PROJECT_NAME:lower).PVSupport +PVLIBRARY_PRODUCT_BUNDLE_IDENTIFIER = $(ORG_PREFIX).$(PROJECT_NAME:lower).PVLibrary + +// MAC_CODE_SIGN_ENTITLEMENTS_YES = Platform/macOS/macOS.entitlements +// MAC_CODE_SIGN_ENTITLEMENTS_NO = Platform/macOS/macOS-unsigned.entitlements +// MAC_CODE_SIGN_ENTITLEMENTS = $(MAC_CODE_SIGN_ENTITLEMENTS_$(DEVELOPER_ACCOUNT_VM_ACCESS:default=NO)) + +// Fixes XCode 13.2.1 issues +OTHER_LDFLAGS = $(inherited) -Wl,-weak-lswift_Concurrency -Wl,-rpath,/usr/lib/swift -ObjC + +//OTHER_LDFLAGS = $(inherited) +ENABLE_BITCODE = NO diff --git a/CHANGELOG.md b/CHANGELOG.md index 76573469ca..0e514f5783 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,98 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.1.0] - 2022-02-14 + +Special thanks to contributors on this release; +👉 @mrjschulte +👉 @ToddLa +👉 @ac90b671 +👉 @nenge123 +👉 @david.nicolson +👉 @davidmuzi +👉 @amoorecodes + +### Added + +- Controllers: + - On Screen Joystick Controls for N64 and PSX + - APIs for keyboard, mouse, rumble, on-screen joystick. (coming in future release) + - Apple TV: Support new Siri remote (MicroGamepad and DirectionalGamepad) +- Code Signing is now managed with an XCConfig file. See `CodeSigning.xcconfig.example` for instructions. (Only applies to developers/xcode source installs) +- Enumeration type menu options UI +- FPS debug label now includes total CPU and Memory usage. +- GameBoy Advanced cheat code support +- Jaguar options exposed +- Long press a ROM for quick access to Core Options +- Mednafen + - many more sub-core options added + - SNESFaust 1 frame render ahead option (on by default. VERY SNAPPY!) +- Metal Shaders (CRT, LCD, etc.) +- N64: + - mupen/gliden/rice options exposed + - Dual Shock 4 touchpad as pause + - option for Dual Joysticks on DualShock4 as dual controllers (allows Goldeneye dual controller joystick layout from 1 physical dualshock) +- Native Metal renderer option [WIP/Buggy] +- per-game option overrides +- radio selection options +- Sega Saturn Mutli-CD support +- Swift UI/UIKit optional code paths at app start (SwiftUI currernly empty, for easier development in future) +- VirtualBoy side by side mode (for 3D tv's with Side by Side mode. Google Cardboard coming later) +- XCode will present a warning message if it detects a device build but CodeSigning.xcconfig isn't setup. +- Localizations (Only Partially translated WIP) + - NSLocalizedString for most strings in main app source + - Chinese Simplified by @nenge123 + - Spanish + - Russian by @amoorecodes + - Dutch by @mrjschulte + - Portuguese (Brazil) by Stéfano Santos + +### Improved + +- Mupen: + - wrapper code organized, refactored + - faster controller polling, various other code speedup tweaks. + - mupen llvm optimization flags improved (was incorrectly -O2, now -Os) +- On-Screen Controls + - N64 layout improved + - PSX layout improved +- Branch prediction compiler hints for tight loops, possibly faster. +- Catalyst: All cores build now for Intel and M1. +- check if file exists before attempt to delete, reduces superfluous throws trapping in the debugger +- Converted more app code from ObjC to Swift +- Dark Mode UI always on, fixes some color issues +- Fix some excessive thread blocks +- Hide/Show systems chevron location tweaks +- If multiple cores support a system, cores are listed in recommended order. +- Improved logo/header bar for iOS & tvOS +- Jaguar button layout tweaks +- Mark various ObjC classes `objc_direct_members`. Should improve Swift to ObjC calls bypassing dynamic dispatch for function pointers (in theory) +- Replace all spinlocks with atomic operations for better thread performance +- replaced some sloppy force unwraps with proper nil checks and logging +- Shaders are copied to Documents at load and read from thereafter. This allows locally editing / developing shaders without rebuilding. + +### Fixed + +- Conflicts better detected +- tvOS top buttons sometimes couldn't be selected +- Faster compile times (improved header imports, compiler flags) +- Fixed some improper retain cycles in ObjC blocks +- Fixed rare audio engine nil reference race condition crash +- Cheat entry UI fixes + +### Updated + +- N64: + - Swap left and right triggers to L:Start R:Z Button from other way around prior + - mupen cxd4 plugin to latest upstream version + - mupen rsp-hle plugin to latest upstream version +- Updated Swift Packages (RxRealm, Realm, Cocoalumberjack) +- Improved tvOS UI (top buttons, search, icons, more consistent styling) + +### Removed + +- Removed SteamController support (no one used it and the code caused too many compilations, plus steam controllers are kind of trash, sorry.) + ## [2.0.4] - 2021-12-24 ### Fixed @@ -43,7 +135,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - #1621 GBC palette options crashed gambatte -- #1414 smarter expecptions in PVSystem +- #1414 smarter exceptions in PVSystem - #1645 PCE Audio setting tweaks to match real hardware - #1637 Cheats label name cut off fixed - #1649 two PCE module audio related setting tweaks that enable Provenance's PCE Audio output to match much closer to the measured MDFourier output of a real system, as tested with @artemio from the MDFourier project. @@ -78,7 +170,7 @@ Localization, start basic support Remove base localization - Fix GL_SILENCE_DEPRECATION=1 - Fix PS2 stealing PS1 bios -- Fix gamecub stealing n64 roms +- Fix gamecube stealing n64 roms - add nintendo DS enums - Replace QuickTableViewController SPM with source - PicoDrive fix naming diff --git a/CodeSigning.xcconfig.sample b/CodeSigning.xcconfig.sample new file mode 100644 index 0000000000..3133e24a9e --- /dev/null +++ b/CodeSigning.xcconfig.sample @@ -0,0 +1,39 @@ +// Your Team ID. +// If you have a paid Apple Developer account, you can find your Team ID at +// https://developer.apple.com/account/#/membership +DEVELOPMENT_TEAM = XYZ0123456 + +// Prefix of unique bundle IDs registered to you in Apple Developer Portal. +// You need to register: +// - com.myuniquename.provenance +// - com.myuniquename.provenance.spotlight +// - com.myuniquename.provenance.topshelf +ORG_IDENTIFIER = com.myuniquename + +// Set to YES if you have a valid paid Apple Developer account +DEVELOPER_ACCOUNT_PAID = NO + +// Name of the iOS development signing certificate, you probably do not need +// to change this. +CODE_SIGN_IDENTITY_IOS = Apple Development + +// Name of the iOS development signing certificate, you probably do not need +// to change this. +CODE_SIGN_IDENTITY_TVOS = Apple Development + +// The values below are specific to macOS development. If you do not define +// these keys, the build will default to ad-hoc signing. You will need to +// follow `Documentation/MacDevelopment.md` to disable library verification and +// remove unsupported entitlements. + +// Name of the macOS development signing certificate. Comment out this line to +// use ad-hoc signing. +CODE_SIGN_IDENTITY_MAC = Apple Development + +// Create a Mac provisioning profile for com.myuniquename.UTM with the +// Hypervisor entitlements and get its UUID. If you do not have access to these +// entitlements, comment out the line and delete the following entitlements +// - com.apple.vm.device-access +// from the following file +// - Provenance/macOS.entitlements +PROVISIONING_PROFILE_SPECIFIER_MAC = 00000000-1111-2222-3333-444444444444 diff --git a/Cores/Atari800/Atari800Core/Source/ATR800GameCore.h b/Cores/Atari800/Atari800Core/Source/ATR800GameCore.h index 298f95dec5..42e6fa1ed0 100644 --- a/Cores/Atari800/Atari800Core/Source/ATR800GameCore.h +++ b/Cores/Atari800/Atari800Core/Source/ATR800GameCore.h @@ -31,6 +31,6 @@ @class OERingBuffer; -__attribute__((visibility("default"))) +PVCORE @interface ATR800GameCore : PVEmulatorCore @end diff --git a/Cores/Atari800/Atari800Core/Source/ATR800GameCore.m b/Cores/Atari800/Atari800Core/Source/ATR800GameCore.m index 5babd684bd..065fcd147d 100644 --- a/Cores/Atari800/Atari800Core/Source/ATR800GameCore.m +++ b/Cores/Atari800/Atari800Core/Source/ATR800GameCore.m @@ -816,6 +816,27 @@ int UI_SelectCartType(int k) } } + if([[_currentCore systemIdentifier] isEqualToString:@"com.provenance.atari8bit"]) + { + // TODO: improve detection using MD5 lookup + switch (k) + { + case 2: return CARTRIDGE_STD_2; + case 4: return CARTRIDGE_STD_4; + case 8: return CARTRIDGE_STD_8; + case 16: return CARTRIDGE_STD_16; + case 32: return CARTRIDGE_XEGS_32; + case 40: return CARTRIDGE_BBSB_40; + case 64: return CARTRIDGE_XEGS_07_64; + case 128: return CARTRIDGE_XEGS_128; + case 256: return CARTRIDGE_XEGS_256; + case 512: return CARTRIDGE_XEGS_512; + case 1024: return CARTRIDGE_ATMAX_1024; + default: + return CARTRIDGE_NONE; + } + } + if([[_currentCore systemIdentifier] isEqualToString:@"com.provenance.5200"]) { NSArray *One_Chip_16KB = @[@"a47fcb4eedab9418ea098bb431a407aa", // A.E. (Proto) diff --git a/Cores/Atari800/PVAtari800.xcodeproj/project.pbxproj b/Cores/Atari800/PVAtari800.xcodeproj/project.pbxproj index 5f000e4bcd..f15a6d54b6 100644 --- a/Cores/Atari800/PVAtari800.xcodeproj/project.pbxproj +++ b/Cores/Atari800/PVAtari800.xcodeproj/project.pbxproj @@ -237,7 +237,7 @@ B36DE7841D6AB44D002EE3ED /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; B36DE7991D6AD049002EE3ED /* libedit.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libedit.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/usr/lib/libedit.tbd; sourceTree = DEVELOPER_DIR; }; B38526A72108264D00434945 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3D73D331E9EAF1C0023925B /* PVAtari800.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVAtari800.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3D73D331E9EAF1C0023925B /* PVAtari800-tvOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "PVAtari800-tvOS.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -281,7 +281,7 @@ isa = PBXGroup; children = ( B36DE7481D6AB19C002EE3ED /* PVAtari800.framework */, - B3D73D331E9EAF1C0023925B /* PVAtari800.framework */, + B3D73D331E9EAF1C0023925B /* PVAtari800-tvOS.framework */, ); name = Products; sourceTree = ""; @@ -319,101 +319,101 @@ 026953E91431737E003A07D4 /* atari800 */ = { isa = PBXGroup; children = ( - 9491E464198C11A10075135C /* act */, - 94DEA012171918D200073397 /* emuos.c */, + 026953E214317379003A07D4 /* afile.c */, + 0269541814317864003A07D4 /* antic.c */, + 9491E45C1989B1CA0075135C /* artifact.c */, + 026953E514317379003A07D4 /* atari.c */, + 026953F414317689003A07D4 /* binload.c */, + 026953EB14317649003A07D4 /* cartridge.c */, + 026953ED14317649003A07D4 /* cassette.c */, + 0269542B14317A53003A07D4 /* cfg.c */, + 0269544C14318515003A07D4 /* colours_external.c */, + 0269544E14318515003A07D4 /* colours_ntsc.c */, + 0269545014318515003A07D4 /* colours_pal.c */, + 0269545214318515003A07D4 /* colours.c */, + 0269543F14317B21003A07D4 /* compfile.c */, + 0269541B1431793F003A07D4 /* cpu.c */, 94DEA00F171918A200073397 /* crc32.c */, - 94DEA010171918A200073397 /* crc32.h */, + 9491E460198B0A8C0075135C /* cycle_map.c */, + 0269541E1431797A003A07D4 /* devices.c */, + 94DEA012171918D200073397 /* emuos.c */, + 02695421143179A2003A07D4 /* esc.c */, + 026953F7143176AE003A07D4 /* gtia.c */, + 02695425143179E9003A07D4 /* ide.c */, 94DEA0091719186E00073397 /* img_tape.c */, - 94DEA00A1719186E00073397 /* img_tape.h */, + 02E763C61431958E008050EA /* input.c */, + 02695412143177EF003A07D4 /* log.c */, + 026953F9143176AE003A07D4 /* memory.c */, + 0269543714317AC8003A07D4 /* monitor.c */, + 0269543C14317B11003A07D4 /* mzpokeysnd.c */, + 0269543114317A76003A07D4 /* pbi_bb.c */, + 0269542E14317A63003A07D4 /* pbi_mio.c */, + 0269543414317AAF003A07D4 /* pbi_scsi.c */, + 026953FD143176E6003A07D4 /* pbi.c */, + 0269542814317A43003A07D4 /* pia.c */, + 02695400143176F4003A07D4 /* pokey.c */, + 02695402143176F4003A07D4 /* pokeysnd.c */, + 0269544214317B42003A07D4 /* remez.c */, + 0269540F143177DF003A07D4 /* rtime.c */, + 02695449143184CD003A07D4 /* screen.c */, + 026954061431770E003A07D4 /* sio.c */, + 0269540C1431775C003A07D4 /* sndsave.c */, + 02669C741435806A0002A11B /* sound_oss.c */, + 9491E45A1989AF050075135C /* sound.c */, + 02E763AF143194CF008050EA /* statesav.c */, 94DEA00B1719186E00073397 /* sysrom.c */, - 94DEA00C1719186F00073397 /* sysrom.h */, - 026953EA143175F0003A07D4 /* config.h */, - 0269541814317864003A07D4 /* antic.c */, - 0269541914317864003A07D4 /* antic.h */, - 9491E45C1989B1CA0075135C /* artifact.c */, - 9491E45D1989B1CA0075135C /* artifact.h */, - 026953E214317379003A07D4 /* afile.c */, + 02E763C014319545008050EA /* ui_basic.c */, + 02E763C214319545008050EA /* ui.c */, + 026954091431771D003A07D4 /* util.c */, 026953E314317379003A07D4 /* afile.h */, 026953E414317379003A07D4 /* akey.h */, - 026953E514317379003A07D4 /* atari.c */, + 0269541914317864003A07D4 /* antic.h */, + 9491E45D1989B1CA0075135C /* artifact.h */, 026953E614317379003A07D4 /* atari.h */, - 026953F414317689003A07D4 /* binload.c */, 026953F514317689003A07D4 /* binload.h */, - 026953EB14317649003A07D4 /* cartridge.c */, 026953EC14317649003A07D4 /* cartridge.h */, - 026953ED14317649003A07D4 /* cassette.c */, 026953EE14317649003A07D4 /* cassette.h */, - 0269542B14317A53003A07D4 /* cfg.c */, 0269542C14317A53003A07D4 /* cfg.h */, - 0269544C14318515003A07D4 /* colours_external.c */, 0269544D14318515003A07D4 /* colours_external.h */, - 0269544E14318515003A07D4 /* colours_ntsc.c */, 0269544F14318515003A07D4 /* colours_ntsc.h */, - 0269545014318515003A07D4 /* colours_pal.c */, 0269545114318515003A07D4 /* colours_pal.h */, - 0269545214318515003A07D4 /* colours.c */, 0269545314318515003A07D4 /* colours.h */, - 0269543F14317B21003A07D4 /* compfile.c */, 0269544014317B21003A07D4 /* compfile.h */, - 0269541B1431793F003A07D4 /* cpu.c */, + 026953EA143175F0003A07D4 /* config.h */, 0269541C1431793F003A07D4 /* cpu.h */, - 9491E460198B0A8C0075135C /* cycle_map.c */, + 94DEA010171918A200073397 /* crc32.h */, 9491E461198B0A8C0075135C /* cycle_map.h */, - 0269541E1431797A003A07D4 /* devices.c */, 0269541F1431797A003A07D4 /* devices.h */, 02252B371437A377001F3BF4 /* emuos.h */, - 02695421143179A2003A07D4 /* esc.c */, 02695422143179A2003A07D4 /* esc.h */, - 026953F7143176AE003A07D4 /* gtia.c */, 026953F8143176AE003A07D4 /* gtia.h */, 02695424143179E9003A07D4 /* ide_internal.h */, - 02695425143179E9003A07D4 /* ide.c */, 02695426143179E9003A07D4 /* ide.h */, - 02E763C61431958E008050EA /* input.c */, + 94DEA00A1719186E00073397 /* img_tape.h */, 02E763C71431958E008050EA /* input.h */, - 02695412143177EF003A07D4 /* log.c */, 02695413143177EF003A07D4 /* log.h */, - 026953F9143176AE003A07D4 /* memory.c */, 026953FA143176AE003A07D4 /* memory.h */, - 0269543714317AC8003A07D4 /* monitor.c */, 0269543814317AC8003A07D4 /* monitor.h */, - 0269543C14317B11003A07D4 /* mzpokeysnd.c */, 0269543D14317B11003A07D4 /* mzpokeysnd.h */, - 026954061431770E003A07D4 /* sio.c */, - 026954071431770E003A07D4 /* sio.h */, - 02E763AF143194CF008050EA /* statesav.c */, - 02E763B0143194CF008050EA /* statesav.h */, - 026953FD143176E6003A07D4 /* pbi.c */, - 026953FE143176E6003A07D4 /* pbi.h */, - 0269543414317AAF003A07D4 /* pbi_scsi.c */, - 0269543514317AAF003A07D4 /* pbi_scsi.h */, - 0269543114317A76003A07D4 /* pbi_bb.c */, 0269543214317A76003A07D4 /* pbi_bb.h */, - 0269542E14317A63003A07D4 /* pbi_mio.c */, 0269542F14317A63003A07D4 /* pbi_mio.h */, - 0269542814317A43003A07D4 /* pia.c */, + 0269543514317AAF003A07D4 /* pbi_scsi.h */, + 026953FE143176E6003A07D4 /* pbi.h */, 0269542914317A43003A07D4 /* pia.h */, - 02695400143176F4003A07D4 /* pokey.c */, 02695401143176F4003A07D4 /* pokey.h */, - 02695402143176F4003A07D4 /* pokeysnd.c */, 02695403143176F4003A07D4 /* pokeysnd.h */, - 0269544214317B42003A07D4 /* remez.c */, 0269544314317B42003A07D4 /* remez.h */, - 0269540C1431775C003A07D4 /* sndsave.c */, - 0269540D1431775C003A07D4 /* sndsave.h */, - 02695449143184CD003A07D4 /* screen.c */, + 02695410143177DF003A07D4 /* rtime.h */, 0269544A143184CD003A07D4 /* screen.h */, - 02669C741435806A0002A11B /* sound_oss.c */, - 9491E45A1989AF050075135C /* sound.c */, + 026954071431770E003A07D4 /* sio.h */, + 0269540D1431775C003A07D4 /* sndsave.h */, 02669C751435806A0002A11B /* sound.h */, - 0269540F143177DF003A07D4 /* rtime.c */, - 02695410143177DF003A07D4 /* rtime.h */, - 02E763C014319545008050EA /* ui_basic.c */, + 02E763B0143194CF008050EA /* statesav.h */, + 94DEA00C1719186F00073397 /* sysrom.h */, 02E763C114319545008050EA /* ui_basic.h */, - 02E763C214319545008050EA /* ui.c */, 02E763C314319545008050EA /* ui.h */, - 026954091431771D003A07D4 /* util.c */, 0269540A1431771D003A07D4 /* util.h */, + 9491E464198C11A10075135C /* act */, ); name = atari800; sourceTree = ""; @@ -510,7 +510,7 @@ ); name = "PVAtari800-tvOS"; productName = PVAtari800; - productReference = B3D73D331E9EAF1C0023925B /* PVAtari800.framework */; + productReference = B3D73D331E9EAF1C0023925B /* PVAtari800-tvOS.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -912,7 +912,8 @@ ); MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVAtari800"; - PRODUCT_NAME = PVAtari800; + PRODUCT_MODULE_NAME = PVAtari800; + PRODUCT_NAME = "PVAtari800-tvOS"; SDKROOT = appletvos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = 3; @@ -1036,7 +1037,8 @@ ); MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVAtari800"; - PRODUCT_NAME = PVAtari800; + PRODUCT_MODULE_NAME = PVAtari800; + PRODUCT_NAME = "PVAtari800-tvOS"; SDKROOT = appletvos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = 3; @@ -1076,7 +1078,8 @@ ); MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVAtari800"; - PRODUCT_NAME = PVAtari800; + PRODUCT_MODULE_NAME = PVAtari800; + PRODUCT_NAME = "PVAtari800-tvOS"; SDKROOT = appletvos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = 3; diff --git a/Cores/Atari800/PVAtari800.xcodeproj/xcshareddata/xcschemes/PVAtari800 tvOS.xcscheme b/Cores/Atari800/PVAtari800.xcodeproj/xcshareddata/xcschemes/PVAtari800 tvOS.xcscheme index 63a5cf561f..0ea186e15c 100644 --- a/Cores/Atari800/PVAtari800.xcodeproj/xcshareddata/xcschemes/PVAtari800 tvOS.xcscheme +++ b/Cores/Atari800/PVAtari800.xcodeproj/xcshareddata/xcschemes/PVAtari800 tvOS.xcscheme @@ -15,7 +15,7 @@ @@ -58,7 +58,7 @@ @@ -74,7 +74,7 @@ diff --git a/Cores/Atari800/PVAtari800/Core.plist b/Cores/Atari800/PVAtari800/Core.plist index c97140682e..8701ed01d2 100644 --- a/Cores/Atari800/PVAtari800/Core.plist +++ b/Cores/Atari800/PVAtari800/Core.plist @@ -9,6 +9,7 @@ PVSupportedSystems com.provenance.5200 + com.provenance.8bit PVProjectName Atari 800 diff --git a/Cores/CrabEMU b/Cores/CrabEMU index e4b0792e89..1554524745 160000 --- a/Cores/CrabEMU +++ b/Cores/CrabEMU @@ -1 +1 @@ -Subproject commit e4b0792e89fbe48ddce04d4eee5b8f993e7f5d29 +Subproject commit 155452474595765aae8fd68221f591f484a5173c diff --git a/Cores/Dolphin/PVDolphin.xcodeproj/project.pbxproj b/Cores/Dolphin/PVDolphin.xcodeproj/project.pbxproj index 05ac1d9c7d..38cebbb1a4 100644 --- a/Cores/Dolphin/PVDolphin.xcodeproj/project.pbxproj +++ b/Cores/Dolphin/PVDolphin.xcodeproj/project.pbxproj @@ -53,6 +53,23 @@ B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + B3B2546727842AD600F97E55 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3B2546227842AD600F97E55 /* DolphiniOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B945A3702362908500B21680; + remoteInfo = DolphiniOS; + }; + B3B2546927842AD600F97E55 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3B2546227842AD600F97E55 /* DolphiniOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B97DDCDA2666035A0083896C; + remoteInfo = DolphinATV; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXCopyFilesBuildPhase section */ B30178D1207C901D0051B93D /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; @@ -14715,6 +14732,7 @@ B3A320472720A06C00F338F6 /* DolHost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DolHost.h; sourceTree = ""; }; B3A320482720A06D00F338F6 /* DolHost.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DolHost.mm; sourceTree = ""; }; B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B2546227842AD600F97E55 /* DolphiniOS.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = DolphiniOS.xcodeproj; sourceTree = ""; }; B3C7621020783162009950E4 /* PVDolphin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVDolphin.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C7621320783162009950E4 /* PVDolphin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVDolphin.h; sourceTree = ""; }; B3C7621420783162009950E4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -17812,6 +17830,7 @@ B316C2AC26E5C6720077FE46 /* DolphinATV */, B316C2BB26E5C6720077FE46 /* DolphiniOS */, B316C44A26E5C6730077FE46 /* DolphiniOS.xcworkspace */, + B3B2546227842AD600F97E55 /* DolphiniOS.xcodeproj */, B316C44B26E5C6730077FE46 /* Common */, B316C4AC26E5C6740077FE46 /* Podfile */, B316C4AD26E5C6740077FE46 /* .bartycrouch.toml */, @@ -38331,6 +38350,15 @@ path = Core; sourceTree = ""; }; + B3B2546327842AD600F97E55 /* Products */ = { + isa = PBXGroup; + children = ( + B3B2546827842AD600F97E55 /* DolphiniOS.app */, + B3B2546A27842AD600F97E55 /* DolphinATV.app */, + ); + name = Products; + sourceTree = ""; + }; B3C7620620783162009950E4 = { isa = PBXGroup; children = ( @@ -38537,6 +38565,12 @@ mainGroup = B3C7620620783162009950E4; productRefGroup = B3C7621120783162009950E4 /* Products */; projectDirPath = ""; + projectReferences = ( + { + ProductGroup = B3B2546327842AD600F97E55 /* Products */; + ProjectRef = B3B2546227842AD600F97E55 /* DolphiniOS.xcodeproj */; + }, + ); projectRoot = ""; targets = ( B3C7620F20783162009950E4 /* PVDolphin-iOS */, @@ -38547,6 +38581,23 @@ }; /* End PBXProject section */ +/* Begin PBXReferenceProxy section */ + B3B2546827842AD600F97E55 /* DolphiniOS.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = DolphiniOS.app; + remoteRef = B3B2546727842AD600F97E55 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B3B2546A27842AD600F97E55 /* DolphinATV.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = DolphinATV.app; + remoteRef = B3B2546927842AD600F97E55 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + /* Begin PBXResourcesBuildPhase section */ B3447EDF218BEDD200557ACE /* Resources */ = { isa = PBXResourcesBuildPhase; diff --git a/Cores/DuckStation/Config.xcconfig b/Cores/DuckStation/Config.xcconfig index 13f1a00d6f..b19226c659 100644 --- a/Cores/DuckStation/Config.xcconfig +++ b/Cores/DuckStation/Config.xcconfig @@ -6,16 +6,18 @@ // // +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) GL_SILENCE_DEPRECATION=1 + // Arm 32bit EXCLUDED_SOURCE_FILE_NAMES[sdk=iphoneos*][arch=armv7] = $(inherited) cpu_recompiler_code_generator_x64.cpp cpu_recompiler_code_generator_aarch64.cpp *arch64.cpp *arch64.cc xxh_x86dispatch.c EXCLUDED_SOURCE_FILE_NAMES[sdk=iphoneos*][arch=armv7s] = $(inherited) cpu_recompiler_code_generator_x64.cpp cpu_recompiler_code_generator_aarch64.cpp *arch64.cpp *arch64.cc*arch64.cpp *arch64.cc xxh_x86dispatch.c EXCLUDED_SOURCE_FILE_NAMES[sdk=iphoneos*][arch=armv6] = $(inherited) cpu_recompiler_code_generator_x64.cpp cpu_recompiler_code_generator_aarch64.cpp *arch64.cpp *arch64.cc xxh_x86dispatch.c -EXCLUDED_SOURCE_FILE_NAMES[sdk=iphoneos*][arch=arm64] = $(inherited) cpu_recompiler_code_generator_x64.cpp cpu_recompiler_code_generator_aarch32.cpp *arch32.cpp *arch32.cc xxh_x86dispatch.c +EXCLUDED_SOURCE_FILE_NAMES[arch=arm64] = $(inherited) cpu_recompiler_code_generator_x64.cpp cpu_recompiler_code_generator_aarch32.cpp *arch32.cpp *arch32.cc xxh_x86dispatch.c EXCLUDED_SOURCE_FILE_NAMES[sdk=iphonesimulator*] = $(inherited) cpu_recompiler_code_generator_aarch32.cpp cpu_recompiler_code_generator_aarch64.cpp instrument-aarch64.cpp // tv OS -//OTHER_CFLAGS[sdk=appletvos*] = $(inherited) -DDRC_SH2 -D_USE_CZ80 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) -DVIXL_INCLUDE_TARGET_A64 //OTHER_CFLAGS[sdk=appletvsimulator*] = $(inherited) -D_USE_CZ80 OTHER_CFLAGS[sdk=iphoneos*][arch=armv7] = $(inherited) -DVIXL_INCLUDE_TARGET_A32 diff --git a/Cores/DuckStation/PVDuckStation.xcodeproj/project.pbxproj b/Cores/DuckStation/PVDuckStation.xcodeproj/project.pbxproj index 2731560e6c..42c65563f1 100644 --- a/Cores/DuckStation/PVDuckStation.xcodeproj/project.pbxproj +++ b/Cores/DuckStation/PVDuckStation.xcodeproj/project.pbxproj @@ -380,15 +380,18 @@ B304F56626BE57B300A4F549 /* cd_xa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA9A26BE55D30096A354 /* cd_xa.cpp */; }; B304F56726BE57B300A4F549 /* cue_parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA9226BE55D30096A354 /* cue_parser.cpp */; }; B304F56826BE57B300A4F549 /* wav_writer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA5C26BE55D30096A354 /* wav_writer.cpp */; }; + B30A200A278FC9FF009E08C9 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30A2009278FC9FF009E08C9 /* OpenGL.framework */; platformFilter = maccatalyst; settings = {ATTRIBUTES = (Weak, ); }; }; B3203C1026DB126F00B016C6 /* thread_pool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAFF26BE55D30096A354 /* thread_pool.cpp */; }; B324C64021920EB9009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C63F21920EB9009F4EDC /* PVSupport.framework */; }; + B3375ECE278EA4B8004B0DC0 /* xxh_x86dispatch.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A88326BE55D10096A354 /* xxh_x86dispatch.c */; }; + B36455E9278E809800B6E87A /* xxh_x86dispatch.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A88326BE55D10096A354 /* xxh_x86dispatch.c */; }; B36DE7831D6AB43A002EE3ED /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B36DE7821D6AB43A002EE3ED /* libz.tbd */; }; B36DE7851D6AB44D002EE3ED /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B36DE7841D6AB44D002EE3ED /* Foundation.framework */; }; B36DE79A1D6AD049002EE3ED /* libedit.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B36DE7991D6AD049002EE3ED /* libedit.tbd */; }; B38526A82108264D00434945 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B38526A72108264D00434945 /* PVSupport.framework */; }; B3C2906126DDD28C003CB9D4 /* OpenGLHostDisplay.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3D527C326DDCCC300991E84 /* OpenGLHostDisplay.mm */; }; B3C2906226DDD28D003CB9D4 /* OpenGLHostDisplay.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3D527C326DDCCC300991E84 /* OpenGLHostDisplay.mm */; }; - B3C2907126DDD854003CB9D4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C2907026DDD854003CB9D4 /* OpenGLES.framework */; platformFilter = ios; }; + B3C2907126DDD854003CB9D4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C2907026DDD854003CB9D4 /* OpenGLES.framework */; platformFilter = ios; settings = {ATTRIBUTES = (Weak, ); }; }; B3C2907326DDD85D003CB9D4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C2907226DDD85D003CB9D4 /* OpenGLES.framework */; }; B3C290B326DDDB36003CB9D4 /* shadergen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A97F26BE55D20096A354 /* shadergen.cpp */; }; B3C290B426DDDC06003CB9D4 /* cd_image_chd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAE726BE55D30096A354 /* cd_image_chd.cpp */; }; @@ -505,10 +508,8 @@ B3C2924026DEFED8003CB9D4 /* stb_image_write.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7FB26BE55D00096A354 /* stb_image_write.c */; }; B3C2924126DEFEE6003CB9D4 /* libstb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C2923426DEFECD003CB9D4 /* libstb.a */; }; B3C2924426DEFF58003CB9D4 /* LzmaEnc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A8B926BE55D10096A354 /* LzmaEnc.c */; }; - B3C2924626DEFFD8003CB9D4 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C2924526DEFFD8003CB9D4 /* GLKit.framework */; platformFilter = ios; }; - B3C2924B26DEFFE8003CB9D4 /* MetalPerformanceShadersGraph.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C2924726DEFFE7003CB9D4 /* MetalPerformanceShadersGraph.framework */; }; + B3C2924626DEFFD8003CB9D4 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C2924526DEFFD8003CB9D4 /* GLKit.framework */; platformFilter = ios; settings = {ATTRIBUTES = (Weak, ); }; }; B3C2924C26DEFFE8003CB9D4 /* MetalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C2924826DEFFE7003CB9D4 /* MetalKit.framework */; }; - B3C2924D26DEFFE8003CB9D4 /* MetalPerformanceShaders.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C2924926DEFFE8003CB9D4 /* MetalPerformanceShaders.framework */; }; B3C2924E26DEFFE8003CB9D4 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C2924A26DEFFE8003CB9D4 /* Metal.framework */; }; B3C2925026DF00AC003CB9D4 /* gpu_hw_shadergen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A99326BE55D20096A354 /* gpu_hw_shadergen.cpp */; }; B3C2925126DF00C0003CB9D4 /* gpu_hw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A97426BE55D20096A354 /* gpu_hw.cpp */; }; @@ -575,7 +576,6 @@ B3C292D126DF0561003CB9D4 /* stream_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAD526BE55D30096A354 /* stream_buffer.cpp */; }; B3C292D226DF0561003CB9D4 /* shader_cache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAC026BE55D30096A354 /* shader_cache.cpp */; }; B3C292D326DF0561003CB9D4 /* texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAC326BE55D30096A354 /* texture.cpp */; }; - B3C292D526DF0696003CB9D4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C2907026DDD854003CB9D4 /* OpenGLES.framework */; }; B3C292EF26DF0C31003CB9D4 /* cubeb_resampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5E426BE55CE0096A354 /* cubeb_resampler.cpp */; }; B3C292F126DF0C31003CB9D4 /* cubeb_strings.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5CE26BE55CE0096A354 /* cubeb_strings.c */; }; B3C292F226DF0C31003CB9D4 /* cubeb_mixer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5E326BE55CE0096A354 /* cubeb_mixer.cpp */; }; @@ -1186,6 +1186,7 @@ B30172C0274A33C600B0E695 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.2.sdk/System/Library/Frameworks/Metal.framework; sourceTree = DEVELOPER_DIR; }; B30172C1274A33C600B0E695 /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.2.sdk/System/Library/Frameworks/MetalKit.framework; sourceTree = DEVELOPER_DIR; }; B30172C2274A33C600B0E695 /* MetalPerformanceShaders.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalPerformanceShaders.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.2.sdk/System/Library/Frameworks/MetalPerformanceShaders.framework; sourceTree = DEVELOPER_DIR; }; + B30A2009278FC9FF009E08C9 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; B3203C2226DB19CC00B016C6 /* Config.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; }; B324C63F21920EB9009F4EDC /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B36DE7481D6AB19C002EE3ED /* PVDuckStation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVDuckStation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -3262,10 +3263,10 @@ B3C2919D26DEECB8003CB9D4 /* libminizip.a in Frameworks */, B36DE7851D6AB44D002EE3ED /* Foundation.framework in Frameworks */, B3C2927C26DF02B5003CB9D4 /* libvulkan-loader.a in Frameworks */, + B30A200A278FC9FF009E08C9 /* OpenGL.framework in Frameworks */, B3C2920426DEF8B6003CB9D4 /* libtinyxml.a in Frameworks */, B36DE7831D6AB43A002EE3ED /* libz.tbd in Frameworks */, B3C2919726DEECB8003CB9D4 /* libchdr.a in Frameworks */, - B3C2924D26DEFFE8003CB9D4 /* MetalPerformanceShaders.framework in Frameworks */, B3C2924626DEFFD8003CB9D4 /* GLKit.framework in Frameworks */, B3C2924E26DEFFE8003CB9D4 /* Metal.framework in Frameworks */, B3C291A326DEECB8003CB9D4 /* libSimpleINI.a in Frameworks */, @@ -3277,7 +3278,6 @@ B3D8AD4D26BE55E20096A354 /* libduckstation.a in Frameworks */, B3D0140B26DF155800860FF9 /* UIKit.framework in Frameworks */, B3C2931D26DF0D9E003CB9D4 /* libdxxhash.a in Frameworks */, - B3C2924B26DEFFE8003CB9D4 /* MetalPerformanceShadersGraph.framework in Frameworks */, B3C2924126DEFEE6003CB9D4 /* libstb.a in Frameworks */, B3C2907126DDD854003CB9D4 /* OpenGLES.framework in Frameworks */, ); @@ -3440,7 +3440,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B3C292D526DF0696003CB9D4 /* OpenGLES.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3505,6 +3504,7 @@ 02695363143169EB003A07D4 /* Frameworks */ = { isa = PBXGroup; children = ( + B30A2009278FC9FF009E08C9 /* OpenGL.framework */, B30172C0274A33C600B0E695 /* Metal.framework */, B30172C1274A33C600B0E695 /* MetalKit.framework */, B30172C2274A33C600B0E695 /* MetalPerformanceShaders.framework */, @@ -7507,6 +7507,7 @@ B3C292E426DF0BDC003CB9D4 /* cubeb */, B3C292FE26DF0C9E003CB9D4 /* glad */, B3C2931026DF0D83003CB9D4 /* dxxhash */, + B301727C274A336600B0E695 /* dxxhash-tvOS */, B30170D3274A335500B0E695 /* duckstation-tvOS */, B3017151274A335900B0E695 /* FLAC-tvOS */, B301716D274A335900B0E695 /* chdr-tvOS */, @@ -7523,7 +7524,6 @@ B3017226274A336300B0E695 /* glslangd-tvOS */, B3017263274A336400B0E695 /* cubeb-tvOS */, B3017272274A336500B0E695 /* glad-tvOS */, - B301727C274A336600B0E695 /* dxxhash-tvOS */, ); }; /* End PBXProject section */ @@ -7937,6 +7937,7 @@ buildActionMask = 2147483647; files = ( B301727E274A336600B0E695 /* xxhash.c in Sources */, + B3375ECE278EA4B8004B0DC0 /* xxh_x86dispatch.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -8223,6 +8224,7 @@ buildActionMask = 2147483647; files = ( B3C2931C26DF0D8F003CB9D4 /* xxhash.c in Sources */, + B36455E9278E809800B6E87A /* xxh_x86dispatch.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -8571,6 +8573,7 @@ GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", + "GL_SILENCE_DEPRECATION=1", ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; @@ -8627,6 +8630,10 @@ GCC_ENABLE_OBJC_EXCEPTIONS = YES; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "GL_SILENCE_DEPRECATION=1", + "$(inherited)", + ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -8663,7 +8670,6 @@ CODE_SIGN_STYLE = Automatic; DEAD_CODE_STRIPPING = NO; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -8686,7 +8692,6 @@ "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", "\"$(SRCROOT)/duckstation/dep/xbyak\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -8697,7 +8702,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; @@ -8717,7 +8722,6 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEAD_CODE_STRIPPING = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -8740,7 +8744,6 @@ "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", "\"$(SRCROOT)/duckstation/dep/xbyak\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -8751,7 +8754,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Release; @@ -8772,7 +8775,6 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEAD_CODE_STRIPPING = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -8795,7 +8797,6 @@ "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", "\"$(SRCROOT)/duckstation/dep/xbyak\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -8806,7 +8807,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -8824,7 +8825,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "PACKAGE_VERSION=\\\"1.3.2\\\"", @@ -8844,7 +8844,6 @@ "\"$(SRCROOT)/duckstation/dep/libFLAC/include/FLAC\"", "\"$(SRCROOT)/duckstation/dep/libFLAC/src/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -8857,7 +8856,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; @@ -8873,7 +8872,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "PACKAGE_VERSION=\\\"1.3.2\\\"", @@ -8893,7 +8891,6 @@ "\"$(SRCROOT)/duckstation/dep/libFLAC/include/FLAC\"", "\"$(SRCROOT)/duckstation/dep/libFLAC/src/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -8906,7 +8903,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Release; @@ -8924,7 +8921,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -8934,7 +8930,6 @@ "\"$(SRCROOT)/duckstation/dep/libFLAC/include/FLAC\"", "\"$(SRCROOT)/duckstation/dep/libFLAC/src/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -8947,7 +8942,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -8965,7 +8960,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -8980,14 +8974,13 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; @@ -9003,7 +8996,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9018,14 +9010,13 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Release; @@ -9043,7 +9034,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9058,14 +9048,13 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -9082,7 +9071,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9090,14 +9078,13 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/minizip/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; @@ -9113,7 +9100,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9121,14 +9107,13 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/minizip/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Release; @@ -9146,7 +9131,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9154,14 +9138,13 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/minizip/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -9178,7 +9161,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9194,7 +9176,6 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/libsamplerate/src\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_CFLAGS = "-DHAVE_CONFIG_H"; @@ -9202,7 +9183,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; @@ -9218,7 +9199,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9234,7 +9214,6 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/libsamplerate/src\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = "-DHAVE_CONFIG_H"; @@ -9242,7 +9221,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Release; @@ -9260,7 +9239,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9276,7 +9254,6 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/libsamplerate/src\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = "-DHAVE_CONFIG_H"; @@ -9284,7 +9261,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -9301,7 +9278,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "HAVE_CONFIG_H=1", @@ -9309,14 +9285,13 @@ ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; @@ -9332,7 +9307,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "HAVE_CONFIG_H=1", @@ -9340,14 +9314,13 @@ ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Release; @@ -9365,7 +9338,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "HAVE_CONFIG_H=1", @@ -9373,14 +9345,13 @@ ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -9397,7 +9368,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9412,14 +9382,13 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/zlib/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; @@ -9435,7 +9404,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9450,14 +9418,13 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/zlib/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Release; @@ -9474,7 +9441,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9489,14 +9455,13 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/zlib/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -9513,7 +9478,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9522,7 +9486,6 @@ "\"$(SRCROOT)/duckstation/dep/vixl/include\"", "\"$(SRCROOT)/duckstation/dep/vixl/include/vixl\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -9533,7 +9496,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; @@ -9549,7 +9512,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9558,7 +9520,6 @@ "\"$(SRCROOT)/duckstation/dep/vixl/include\"", "\"$(SRCROOT)/duckstation/dep/vixl/include/vixl\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -9569,7 +9530,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Release; @@ -9586,7 +9547,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9595,7 +9555,6 @@ "\"$(SRCROOT)/duckstation/dep/vixl/include\"", "\"$(SRCROOT)/duckstation/dep/vixl/include/vixl\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -9606,7 +9565,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -9623,12 +9582,10 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_CFLAGS = "-D_7ZIP_ST"; @@ -9636,7 +9593,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; }; name = Debug; @@ -9653,12 +9610,10 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = "-D_7ZIP_ST"; @@ -9666,7 +9621,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; VALIDATE_PRODUCT = YES; }; @@ -9684,12 +9639,10 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = "-D_7ZIP_ST"; @@ -9697,7 +9650,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; VALIDATE_PRODUCT = YES; }; @@ -9715,18 +9668,16 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; @@ -9742,18 +9693,16 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Release; @@ -9770,18 +9719,16 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -9798,18 +9745,16 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; @@ -9825,18 +9770,16 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Release; @@ -9853,18 +9796,16 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -9881,18 +9822,16 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; @@ -9908,18 +9847,16 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Release; @@ -9936,18 +9873,16 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -9964,7 +9899,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9972,14 +9906,13 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/vulkan-loader/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; @@ -9995,7 +9928,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -10003,14 +9935,13 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/vulkan-loader/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Release; @@ -10027,7 +9958,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -10035,14 +9965,13 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/vulkan-loader/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -10059,7 +9988,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -10068,14 +9996,13 @@ "\"$(SRCROOT)/duckstation/dep/glslang\"", "\"$(SRCROOT)/duckstation/dep/glslang/glslang/Include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; @@ -10091,7 +10018,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -10100,14 +10026,13 @@ "\"$(SRCROOT)/duckstation/dep/glslang\"", "\"$(SRCROOT)/duckstation/dep/glslang/glslang/Include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Release; @@ -10124,7 +10049,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -10133,14 +10057,13 @@ "\"$(SRCROOT)/duckstation/dep/glslang\"", "\"$(SRCROOT)/duckstation/dep/glslang/glslang/Include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -10157,7 +10080,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "RANDOM_PREFIX=speex", @@ -10174,14 +10096,13 @@ "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", "\"$(SRCROOT)/duckstation/dep/cubeb/src\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; @@ -10197,7 +10118,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "RANDOM_PREFIX=speex", @@ -10213,14 +10133,13 @@ "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", "\"$(SRCROOT)/duckstation/dep/cubeb/src\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Release; @@ -10237,7 +10156,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "RANDOM_PREFIX=speex", @@ -10253,14 +10171,13 @@ "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", "\"$(SRCROOT)/duckstation/dep/cubeb/src\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -10277,7 +10194,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -10285,14 +10201,13 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/glad/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; @@ -10308,7 +10223,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -10316,14 +10230,13 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/glad/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Release; @@ -10340,7 +10253,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -10348,14 +10260,13 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/glad/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -10372,18 +10283,16 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; @@ -10399,18 +10308,16 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Release; @@ -10427,18 +10334,16 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 3; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -10478,6 +10383,10 @@ GCC_ENABLE_OBJC_EXCEPTIONS = YES; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "GL_SILENCE_DEPRECATION=1", + "$(inherited)", + ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -10533,6 +10442,7 @@ INFOPLIST_FILE = "$(SRCROOT)/PVDuckStation/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -10543,6 +10453,7 @@ PRODUCT_NAME = PVDuckStation; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SUPPORTS_MACCATALYST = NO; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -10629,6 +10540,7 @@ INFOPLIST_FILE = "$(SRCROOT)/PVDuckStation/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -10639,6 +10551,7 @@ PRODUCT_NAME = PVDuckStation; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SUPPORTS_MACCATALYST = NO; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -10681,6 +10594,7 @@ INFOPLIST_FILE = "$(SRCROOT)/PVDuckStation/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -10691,6 +10605,7 @@ PRODUCT_NAME = PVDuckStation; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SUPPORTS_MACCATALYST = NO; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -10711,7 +10626,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "PACKAGE_VERSION=\\\"1.3.2\\\"", @@ -10731,7 +10645,6 @@ "\"$(SRCROOT)/duckstation/dep/libFLAC/include/FLAC\"", "\"$(SRCROOT)/duckstation/dep/libFLAC/src/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -10759,7 +10672,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "PACKAGE_VERSION=\\\"1.3.2\\\"", @@ -10779,7 +10691,6 @@ "\"$(SRCROOT)/duckstation/dep/libFLAC/include/FLAC\"", "\"$(SRCROOT)/duckstation/dep/libFLAC/src/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -10809,7 +10720,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -10819,7 +10729,6 @@ "\"$(SRCROOT)/duckstation/dep/libFLAC/include/FLAC\"", "\"$(SRCROOT)/duckstation/dep/libFLAC/src/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -10849,7 +10758,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -10864,7 +10772,6 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -10886,7 +10793,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -10901,7 +10807,6 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -10925,7 +10830,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -10940,7 +10844,6 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -10963,7 +10866,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -10971,7 +10873,6 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/minizip/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -10993,7 +10894,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11001,7 +10901,6 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/minizip/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11025,7 +10924,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11033,7 +10931,6 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/minizip/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11056,7 +10953,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "HAVE_CONFIG_H=1", @@ -11064,7 +10960,6 @@ ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11086,7 +10981,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "HAVE_CONFIG_H=1", @@ -11094,7 +10988,6 @@ ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11118,7 +11011,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "HAVE_CONFIG_H=1", @@ -11126,7 +11018,6 @@ ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11149,7 +11040,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11164,7 +11054,6 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/zlib/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11186,7 +11075,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11201,7 +11089,6 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/zlib/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11224,7 +11111,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11239,7 +11125,6 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/zlib/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11262,7 +11147,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11271,7 +11155,6 @@ "\"$(SRCROOT)/duckstation/dep/vixl/include\"", "\"$(SRCROOT)/duckstation/dep/vixl/include/vixl\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -11297,7 +11180,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11306,7 +11188,6 @@ "\"$(SRCROOT)/duckstation/dep/vixl/include\"", "\"$(SRCROOT)/duckstation/dep/vixl/include/vixl\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -11333,7 +11214,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11342,7 +11222,6 @@ "\"$(SRCROOT)/duckstation/dep/vixl/include\"", "\"$(SRCROOT)/duckstation/dep/vixl/include/vixl\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -11369,7 +11248,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11385,7 +11263,6 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/libsamplerate/src\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_CFLAGS = "-DHAVE_CONFIG_H"; @@ -11408,7 +11285,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11424,7 +11300,6 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/libsamplerate/src\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = "-DHAVE_CONFIG_H"; @@ -11449,7 +11324,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11465,7 +11339,6 @@ "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", "\"$(SRCROOT)/duckstation/dep/libsamplerate/src\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = "-DHAVE_CONFIG_H"; @@ -11489,12 +11362,10 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_CFLAGS = "-D_7ZIP_ST"; @@ -11518,12 +11389,10 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = "-D_7ZIP_ST"; @@ -11548,12 +11417,10 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = "-D_7ZIP_ST"; @@ -11578,11 +11445,9 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11604,11 +11469,9 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11631,11 +11494,9 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11658,11 +11519,9 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11684,11 +11543,9 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11711,11 +11568,9 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11738,11 +11593,9 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11764,11 +11617,9 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11791,11 +11642,9 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11818,7 +11667,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11826,7 +11674,6 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/vulkan-loader/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11848,7 +11695,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11856,7 +11702,6 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/vulkan-loader/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11879,7 +11724,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11887,7 +11731,6 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/vulkan-loader/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11910,7 +11753,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11919,7 +11761,6 @@ "\"$(SRCROOT)/duckstation/dep/glslang\"", "\"$(SRCROOT)/duckstation/dep/glslang/glslang/Include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11941,7 +11782,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11950,7 +11790,6 @@ "\"$(SRCROOT)/duckstation/dep/glslang\"", "\"$(SRCROOT)/duckstation/dep/glslang/glslang/Include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -11973,7 +11812,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -11982,7 +11820,6 @@ "\"$(SRCROOT)/duckstation/dep/glslang\"", "\"$(SRCROOT)/duckstation/dep/glslang/glslang/Include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -12005,7 +11842,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -12013,7 +11849,6 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/rapidjson/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -12035,7 +11870,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -12043,7 +11877,6 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/rapidjson/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -12066,7 +11899,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -12074,7 +11906,6 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/rapidjson/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -12097,7 +11928,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "RANDOM_PREFIX=speex", @@ -12114,7 +11944,6 @@ "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", "\"$(SRCROOT)/duckstation/dep/cubeb/src\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -12136,7 +11965,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "RANDOM_PREFIX=speex", @@ -12152,7 +11980,6 @@ "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", "\"$(SRCROOT)/duckstation/dep/cubeb/src\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -12175,7 +12002,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "RANDOM_PREFIX=speex", @@ -12191,7 +12017,6 @@ "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", "\"$(SRCROOT)/duckstation/dep/cubeb/src\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -12214,7 +12039,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -12222,7 +12046,6 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/glad/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -12244,7 +12067,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -12252,7 +12074,6 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/glad/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -12275,7 +12096,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -12283,7 +12103,6 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/glad/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -12306,11 +12125,9 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -12332,11 +12149,9 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -12359,11 +12174,9 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -12474,7 +12287,6 @@ CODE_SIGN_STYLE = Automatic; DEAD_CODE_STRIPPING = NO; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -12527,7 +12339,6 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEAD_CODE_STRIPPING = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -12581,7 +12392,6 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEAD_CODE_STRIPPING = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( diff --git a/Cores/DuckStation/PVDuckStation/Source/OpenGLHostDisplay.mm b/Cores/DuckStation/PVDuckStation/Source/OpenGLHostDisplay.mm index b191919b7c..df3d6478cc 100644 --- a/Cores/DuckStation/PVDuckStation/Source/OpenGLHostDisplay.mm +++ b/Cores/DuckStation/PVDuckStation/Source/OpenGLHostDisplay.mm @@ -37,6 +37,17 @@ #include #include +#include + +#if !TARGET_OS_MACCATALYST +#import +//#import +//#import +#import +#else +#import +#endif + #define OE_CORE_LOG OS_LOG_DEFAULT namespace OpenEmu { @@ -108,7 +119,7 @@ HostDisplay::RenderAPI OpenGLHostDisplay::GetRenderAPI() const { - return RenderAPI::OpenGL; + return RenderAPI::OpenGLES; } void* OpenGLHostDisplay::GetRenderDevice() const diff --git a/Cores/DuckStation/PVDuckStation/Source/PVDuckStation.mm b/Cores/DuckStation/PVDuckStation/Source/PVDuckStation.mm index 0a4661a10c..ddac34bb0f 100644 --- a/Cores/DuckStation/PVDuckStation/Source/PVDuckStation.mm +++ b/Cores/DuckStation/PVDuckStation/Source/PVDuckStation.mm @@ -29,8 +29,14 @@ #import //#import //#import +#if !TARGET_OS_MACCATALYST +#import #import #import +#import +#else +#import +#endif #define TickCount DuckTickCount #include "core/types.h" @@ -205,6 +211,10 @@ @implementation PVDuckStationCore { NSString *saveStatePath; bool isInitialized; NSUInteger _maxDiscs; + + dispatch_semaphore_t mupenWaitToBeginFrameSemaphore; + dispatch_semaphore_t coreWaitToEndFrameSemaphore; + @package NSMutableDictionary *_displayModes; } @@ -219,6 +229,10 @@ + (void)initialize { - (instancetype)init { if (self = [super init]) { _current = self; + + mupenWaitToBeginFrameSemaphore = dispatch_semaphore_create(0); + coreWaitToEndFrameSemaphore = dispatch_semaphore_create(0); + // Log::SetFilterLevel(LOGLEVEL_TRACE); Log::RegisterCallback(OELogFunc, NULL); g_settings.gpu_renderer = GPURenderer::HardwareOpenGL; @@ -355,10 +369,27 @@ - (BOOL)rendersToOpenGL { return YES; } -- (BOOL)isDoubleBuffered { - return YES; +//- (BOOL)isDoubleBuffered { +// return YES; +//} + + +- (dispatch_time_t)frameTime { + float frameTime = 1.0/[self frameInterval]; + __block BOOL expired = NO; + dispatch_time_t killTime = dispatch_time(DISPATCH_TIME_NOW, frameTime * NSEC_PER_SEC); + return killTime; +} + + +- (void)videoInterrupt +{ + dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); + + dispatch_semaphore_wait(mupenWaitToBeginFrameSemaphore, [self frameTime]); } + - (void)swapBuffers { [self.renderDelegate didRenderFrameOnAlternateThread]; } @@ -545,9 +576,27 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError **)error { } bootPath = [path copy]; +#if !TARGET_OS_MACCATALYST + EAGLContext* context = [self bestContext]; +#endif + return true; } +#if !TARGET_OS_MACCATALYST +-(EAGLContext*)bestContext { + EAGLContext* context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; + self.glesVersion = GLESVersion3; + if (context == nil) + { + context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; + self.glesVersion = GLESVersion2; + } + + return context; +} +#endif + - (void)loadStateFromFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block { if (!isInitialized) { @@ -953,22 +1002,92 @@ - (CGSize)bufferSize { return (CGSize){ 640, 480 }; } +- (void)startEmulation +{ + if(!self.isRunning) + { + [super startEmulation]; + [NSThread detachNewThreadSelector:@selector(runDuckstationEmuThread) toTarget:self withObject:nil]; + } +} + + +- (void)runDuckstationEmuThread +{ + @autoreleasepool + { + if (!isInitialized){ + auto params = std::make_shared(bootPath.fileSystemRepresentation); + duckInterface->Initialize(); + isInitialized = duckInterface->BootSystem(params); + if (saveStatePath) { + duckInterface->LoadState(saveStatePath.fileSystemRepresentation); + saveStatePath = nil; + } + } + [self.renderDelegate startRenderingOnAlternateThread]; + //#error either this, or emuThread + do { + System::RunFrames(); +// if (!skip) { + duckInterface->Render(); +// } + }while(!shouldStop); +// System::RunFrame(); +// +// if (!skip) { +// duckInterface->Render(); +// } +// if(CoreDoCommand(M64CMD_EXECUTE, 0, NULL) != M64ERR_SUCCESS) { +// ELOG(@"Core execture did not exit correctly"); +// } else { +// ILOG(@"Core finished executing main"); +// } +// +// if(CoreDetachPlugin(M64PLUGIN_GFX) != M64ERR_SUCCESS) { +// ELOG(@"Failed to detach GFX plugin"); +// } else { +// ILOG(@"Detached GFX plugin"); +// } +// +// if(CoreDetachPlugin(M64PLUGIN_RSP) != M64ERR_SUCCESS) { +// ELOG(@"Failed to detach RSP plugin"); +// } else { +// ILOG(@"Detached RSP plugin"); +// } +// +// [self pluginsUnload]; + +// if(CoreDoCommand(M64CMD_ROM_CLOSE, 0, NULL) != M64ERR_SUCCESS) { +// ELOG(@"Failed to close ROM"); +// } else { +// ILOG(@"ROM closed"); +// } + + // Unlock rendering thread + dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); + + [super stopEmulation]; + +// if(CoreShutdown() != M64ERR_SUCCESS) { +// ELOG(@"Core shutdown failed"); +// }else { +// ILOG(@"Core shutdown successfully"); +// } + } +} + + - (void)executeFrameSkippingFrame:(BOOL)skip { - if (!isInitialized){ - auto params = std::make_shared(bootPath.fileSystemRepresentation); - duckInterface->Initialize(); - isInitialized = duckInterface->BootSystem(params); - if (saveStatePath) { - duckInterface->LoadState(saveStatePath.fileSystemRepresentation); - saveStatePath = nil; - } - } - - System::RunFrame(); - - if (!skip) { - duckInterface->Render(); - } + dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); + + dispatch_semaphore_wait(coreWaitToEndFrameSemaphore, [self frameTime]); +//#error either this, or emuThread +// System::RunFrame(); +// +// if (!skip) { +// duckInterface->Render(); +// } } - (void)executeFrame { @@ -1386,7 +1505,7 @@ - (void)changeDisplayWithMode:(NSString *)displayMode { std::string OpenEmuHostInterface::GetShaderCacheBasePath() const { - GET_CURRENT_OR_RETURN([NSHomeDirectory() stringByAppendingPathComponent:@"ShaderCache.nobackup"].fileSystemRepresentation); + GET_CURRENT_OR_RETURN([current.BIOSPath stringByAppendingPathComponent:@"ShaderCache.nobackup"].fileSystemRepresentation); NSString *path = [current.BIOSPath stringByAppendingPathComponent:@"ShaderCache.nobackup"]; if (![[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:NULL]) { [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:NULL]; diff --git a/Cores/DuckStation/duckstation b/Cores/DuckStation/duckstation index eb6525d950..0774910d26 160000 --- a/Cores/DuckStation/duckstation +++ b/Cores/DuckStation/duckstation @@ -1 +1 @@ -Subproject commit eb6525d950494163fdd3f3f521148c8a46282f9a +Subproject commit 0774910d26e7dbf1f8f846f842b1d9f43724b24a diff --git a/Cores/FCEU/PVFCEUEmulatorCore.mm b/Cores/FCEU/PVFCEUEmulatorCore.mm index c75e82e26c..225719345f 100644 --- a/Cores/FCEU/PVFCEUEmulatorCore.mm +++ b/Cores/FCEU/PVFCEUEmulatorCore.mm @@ -50,6 +50,9 @@ #pragma clang diagnostic push #pragma clang diagnostic error "-Wall" +#define WIDTH 256 +#define HEIGHT 240 + extern uint8 *XBuf; static uint32_t palette[256]; @@ -73,7 +76,11 @@ - (id)init { if((self = [super init])) { - videoBuffer = (uint32_t *)malloc(256 * 240 * 4); + soundBuffer = nil; + pXBuf = nil; + soundSize = 0; + + videoBuffer = (uint32_t *)malloc(WIDTH * HEIGHT * 4); currentDisc = 1; } @@ -176,9 +183,9 @@ - (void)executeFrameSkippingFrame:(BOOL)skip FCEUI_Emulate(&pXBuf, &soundBuffer, &soundSize, 0); pXBuf = XBuf; - for (unsigned y = 0; y < 240; y++) - for (unsigned x = 0; x < 256; x++, pXBuf++) - videoBuffer[y * 256 + x] = palette[*pXBuf]; + for (unsigned y = 0; y < HEIGHT; y++) + for (unsigned x = 0; x < WIDTH; x++, pXBuf++) + videoBuffer[y * WIDTH + x] = palette[*pXBuf]; for (int i = 0; i < soundSize; i++) soundBuffer[i] = (soundBuffer[i] << 16) | (soundBuffer[i] & 0xffff); @@ -213,7 +220,7 @@ - (const void *)videoBuffer - (CGRect)screenRect { - return CGRectMake(0, 0, 256, 240); + return CGRectMake(0, 0, WIDTH, HEIGHT); } - (CGSize)aspectSize @@ -223,7 +230,7 @@ - (CGSize)aspectSize - (CGSize)bufferSize { - return CGSizeMake(256, 240); + return CGSizeMake(WIDTH, HEIGHT); } - (GLenum)pixelFormat diff --git a/Cores/FinalBurnNeo/Core.plist b/Cores/FinalBurnNeo/Core.plist new file mode 100644 index 0000000000..51f150cda1 --- /dev/null +++ b/Cores/FinalBurnNeo/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.core.fbneo + PVPrincipleClass + PVFBNeoCore + PVSupportedSystems + + com.provenance.neogeo + + PVProjectName + Final Burn Neo + PVProjectURL + https://neo-source.com + PVProjectVersion + 1.0.0.2 + + diff --git a/Cores/FinalBurnNeo/FBNeo b/Cores/FinalBurnNeo/FBNeo new file mode 160000 index 0000000000..71101fbd16 --- /dev/null +++ b/Cores/FinalBurnNeo/FBNeo @@ -0,0 +1 @@ +Subproject commit 71101fbd16455207d2c40cdc91ce8b91853ec4cf diff --git a/PVSupport/PVSupport-iOS copy-Info.plist b/Cores/FinalBurnNeo/Info.plist similarity index 88% rename from PVSupport/PVSupport-iOS copy-Info.plist rename to Cores/FinalBurnNeo/Info.plist index ca23c84f4c..f3e7e2cf5b 100644 --- a/PVSupport/PVSupport-iOS copy-Info.plist +++ b/Cores/FinalBurnNeo/Info.plist @@ -15,9 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - $(MARKETING_VERSION) - CFBundleSignature - ???? + 1.60 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/Cores/FinalBurnNeo/PVFBNeo-Prefix.pch b/Cores/FinalBurnNeo/PVFBNeo-Prefix.pch new file mode 100644 index 0000000000..b5ffd7806e --- /dev/null +++ b/Cores/FinalBurnNeo/PVFBNeo-Prefix.pch @@ -0,0 +1,10 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/Cores/FinalBurnNeo/PVFBNeo.h b/Cores/FinalBurnNeo/PVFBNeo.h new file mode 100644 index 0000000000..6aeea9bbfd --- /dev/null +++ b/Cores/FinalBurnNeo/PVFBNeo.h @@ -0,0 +1,19 @@ +// +// PVFBNeo.h +// PVFBNeo +// +// Created by Joseph Mattiello on 01/28/22. +// Copyright © 2022 Provenance-EMU. All rights reserved. +// + +#import + +//! Project version number for PVFBNeo. +FOUNDATION_EXPORT double PVFBNeoVersionNumber; + +//! Project version string for PVFBNeo. +FOUNDATION_EXPORT const unsigned char PVFBNeoVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import + diff --git a/Cores/Gambatte/GB/CoreOptions.swift b/Cores/Gambatte/GB/CoreOptions.swift index d2b8dc3ac3..63285f8516 100644 --- a/Cores/Gambatte/GB/CoreOptions.swift +++ b/Cores/Gambatte/GB/CoreOptions.swift @@ -33,7 +33,7 @@ extension PVGBEmulatorCore: CoreOptional { public static var options: [CoreOption] = { var options = [CoreOption]() - let videoGroup = CoreOption.group(display: CoreOptionValueDisplay(title: "Video", + let videoGroup = CoreOption.group(.init(title: "Video", description: "Change the way Gambatte renders games."), subOptions: [paletteOption]) @@ -60,14 +60,12 @@ extension PVGBEmulatorCore: CoreOptional { "GameBoy Color - Grayscale" ]) - static var paletteOption: CoreOption = { - let palletteOption = CoreOption.multi(display: - CoreOptionValueDisplay( - title: "GameBoy (non color) Palette", - description: "The drawing palette to use"), - values: paletteValues) - return palletteOption - }() + static var paletteOption: CoreOption = { + .multi(.init( + title: "GameBoy (non color) Palette", + description: "The drawing palette to use"), + values: paletteValues) + }() } @objc extension PVGBEmulatorCore { @@ -80,8 +78,10 @@ extension PVGBEmulatorCore: CoreOptional { return case .string(let sstring): index = PVGBEmulatorCore.paletteValues.firstIndex(where: { $0.title.lowercased() == sstring }) ?? 0 - case .number(let nSNumber): - index = nSNumber.intValue + case .int(let numbert): + index = numbert + case .float(let numbert): + index = Int(numbert.rounded(.towardZero)) case .notFound: ELOG("Not found") return diff --git a/Cores/Genesis-Plus-GX/PVGenesis.xcodeproj/project.pbxproj b/Cores/Genesis-Plus-GX/PVGenesis.xcodeproj/project.pbxproj index fbe0b5067b..f8df0322f3 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis.xcodeproj/project.pbxproj +++ b/Cores/Genesis-Plus-GX/PVGenesis.xcodeproj/project.pbxproj @@ -9,6 +9,8 @@ /* Begin PBXBuildFile section */ B324C63421920D5C009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C63321920D5C009F4EDC /* PVSupport.framework */; }; B324C63621920D6D009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C63521920D6D009F4EDC /* PVSupport.framework */; }; + B326758327B1C5BB0033C5D1 /* GenesisOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B326758227B1C5BB0033C5D1 /* GenesisOptions.swift */; }; + B326758427B1C5BB0033C5D1 /* GenesisOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B326758227B1C5BB0033C5D1 /* GenesisOptions.swift */; }; B3547B572058589900CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B562058589900CFF7D8 /* Core.plist */; }; B3547B582058589900CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B562058589900CFF7D8 /* Core.plist */; }; B37302D41DE7DB1B00D0B366 /* gamepad.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7AC17F752600031B1C9 /* gamepad.c */; }; @@ -278,6 +280,7 @@ 1ACEA8D817F75B8A0031B1C9 /* osd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osd.h; sourceTree = ""; }; B324C63321920D5C009F4EDC /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B324C63521920D6D009F4EDC /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B326758227B1C5BB0033C5D1 /* GenesisOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GenesisOptions.swift; sourceTree = ""; }; B3547B562058589900CFF7D8 /* Core.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; B3A9F41F1DE7EB67008450F5 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; B3E432041DE6917700D3C91E /* PVGenesis.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVGenesis.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -397,6 +400,7 @@ 1ACEA6E717F752600031B1C9 /* genplusgx_source */, 1ACEA85A17F752610031B1C9 /* libretro */, 1ACEA8D117F75B8A0031B1C9 /* other */, + B326758227B1C5BB0033C5D1 /* GenesisOptions.swift */, ); path = GenesisCore; sourceTree = ""; @@ -713,10 +717,12 @@ TargetAttributes = { B3E432031DE6917700D3C91E = { CreatedOnToolsVersion = 8.1; + LastSwiftMigration = 1320; ProvisioningStyle = Manual; }; B3E432111DE6919B00D3C91E = { CreatedOnToolsVersion = 8.1; + LastSwiftMigration = 1320; }; }; }; @@ -794,6 +800,7 @@ B37302EC1DE7DB1B00D0B366 /* gfx.c in Sources */, B37302EE1DE7DB1B00D0B366 /* state.c in Sources */, B37302EF1DE7DB1B00D0B366 /* terebi_oekaki.c in Sources */, + B326758327B1C5BB0033C5D1 /* GenesisOptions.swift in Sources */, B37302F01DE7DB1B00D0B366 /* activator.c in Sources */, B37302F11DE7DB1B00D0B366 /* md_cart.c in Sources */, B37302F21DE7DB1B00D0B366 /* s68kcpu.c in Sources */, @@ -854,6 +861,7 @@ C66E094A2586D39E00EA6170 /* opll.c in Sources */, B373031D1DE7DB1B00D0B366 /* gfx.c in Sources */, B373031F1DE7DB1B00D0B366 /* state.c in Sources */, + B326758427B1C5BB0033C5D1 /* GenesisOptions.swift in Sources */, B37303201DE7DB1B00D0B366 /* terebi_oekaki.c in Sources */, B37303211DE7DB1B00D0B366 /* activator.c in Sources */, B37303221DE7DB1B00D0B366 /* md_cart.c in Sources */, @@ -1042,6 +1050,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_MODULES = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; @@ -1091,6 +1100,7 @@ PRODUCT_NAME = PVGenesis; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,6"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1101,6 +1111,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_MODULES = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; @@ -1150,6 +1161,7 @@ PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 3; TVOS_DEPLOYMENT_TARGET = 12.1; VERSIONING_SYSTEM = "apple-generic"; @@ -1161,6 +1173,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_MODULES = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; @@ -1202,6 +1215,8 @@ PRODUCT_NAME = PVGenesis; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,6"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1212,6 +1227,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_MODULES = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; @@ -1261,6 +1277,7 @@ PRODUCT_NAME = PVGenesis; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,6"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1271,6 +1288,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_MODULES = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; @@ -1312,6 +1330,8 @@ PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 3; TVOS_DEPLOYMENT_TARGET = 12.1; VERSIONING_SYSTEM = "apple-generic"; @@ -1323,6 +1343,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_MODULES = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; @@ -1372,6 +1393,7 @@ PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 3; TVOS_DEPLOYMENT_TARGET = 12.1; VERSIONING_SYSTEM = "apple-generic"; diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/GenesisOptions.swift b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/GenesisOptions.swift new file mode 100644 index 0000000000..e78ab467d2 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/GenesisOptions.swift @@ -0,0 +1,200 @@ +// +// GenesisOptions.swift +// PVGenesis +// +// Created by Joseph Mattiello on 2/7/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation +import PVSupport + +extension PVGenesisEmulatorCore: CoreOptional { + + enum Options { + enum System { + static let noSpriteLimit: CoreOption = + .bool(.init( + title: "No sprite limit.", + description: "Allow more sprites on screen per scanline than original hardware. May cause glitching in some games, reduce sprite flicker in others.", + requiresRestart: true), + defaultValue: false) + + static var allOptions: [CoreOption] = [noSpriteLimit] + } + + enum Input { + static var allOptions: [CoreOption] = [] + } + + enum Video { + static let gg_extra: CoreOption = + .bool(.init( + title: "GameGear extra space.", + description: "Show extended Game Gear screen (256x192).", + requiresRestart: true), + defaultValue: true) + + static let overscan: CoreOption = + .enumeration(.init( + title: "Video Overscan", + description: "", + requiresRestart: true), + values:[ + .init(title: "None", description: "No borders", value: 0), + .init(title: "Vertical", description: "Vertical borders only", value: 1), + .init(title: "Horizontal", description: "horizontal borders only", value: 2), + .init(title: "Full", description: "Full borders", value: 3), + ], + defaultValue: 0) + + static var allOptions: [CoreOption] = [overscan, gg_extra] + } + + enum Sound { + static let hq_fm: CoreOption = + .bool(.init( + title: "HQ FM", + description: "High-quality FM resampling (slower)", + requiresRestart: true), + defaultValue: true) + + static let hq_pqg: CoreOption = + .bool(.init( + title: "HQ PSG", + description: "High-quality PSG resampling (slower)", + requiresRestart: true), + defaultValue: true) + + static let filter: CoreOption = + .bool(.init( + title: "Audio Filtering", + description: "Apply a low-pass filter", + requiresRestart: true), + defaultValue: true) + + + static let ym2413: CoreOption = + .enumeration(.init( + title: "YM2413 chip", + description: "FM sound used in the FM Sound Unit add-on to the Sega Mark III and later.", + requiresRestart: true), + values:[ + .init(title: "Off", description: "", value: 0), + .init(title: "On", description: "", value: 1), + .init(title: "Auto", description: "", value: 2), + ], + defaultValue: 2) + + static let ym2612: CoreOption = + .enumeration(.init( + title: "YM2612 chip", + description: "The Yamaha YM2612 is a six-channel FM synthesizer. Originally only in JPN models.", + requiresRestart: true), + values:[ + .init(title: "Discrete", description: "", value: 0), + .init(title: "Integrated", description: "", value: 1), + .init(title: "Enhanced", description: "", value: 2), + ], + defaultValue: 0) + + // static var filter_range: CoreOption = { +// .enumeration(.init( +// title: "Video Overscan", +// description: "If 1st player controller has dual joysticks, use the right joystick as player 2. For games, such as GoldenEye, that support using 2 N64 controllers for single player input.", +// requiresRestart: true), +// values:[ +// .init(title: "Original", description: "", value: 0), +// .init(title: "Model1 VA2 US", description: "55%", value: 1), +// ]) +// }() + + static var allOptions: [CoreOption] = [hq_fm, hq_pqg, filter, ym2413, ym2612] + } + } + + public static var options: [CoreOption] { + var options = [CoreOption]() + + // MARK: -- System + let systemOptions: CoreOption = .group(.init(title: "System", + description: nil), + subOptions: Options.System.allOptions) + + + // MARK: -- Sound + let soundOptions: CoreOption = .group(.init(title: "Sound", + description: nil), + subOptions: Options.Sound.allOptions) + + // MARK: -- Video + let videoOptions: CoreOption = .group(.init(title: "Video", + description: nil), + subOptions: Options.Video.allOptions) + + + // MARK: -- Input + let inputOptions: CoreOption = .group(.init(title: "Input", + description: nil), + subOptions: Options.Input.allOptions) + + + options.append(contentsOf: [systemOptions, videoOptions, soundOptions, inputOptions]) + return options + } +} + +@objc +extension PVGenesisEmulatorCore { + // TODO: move these generall accessors somewhere global, maybe use dynamicC + @objc + static public func bool(forOption option: String) -> Bool { + return storedValueForOption(Bool.self, option) ?? false + } + + @objc + static public func int(forOption option: String) -> Int { + let value = storedValueForOption(Int.self, option) + return value ?? 0 + } + + @objc + static public func float(forOption option: String) -> Float { + let value = storedValueForOption(Float.self, option) + return value ?? 0 + } + + @objc + static public func string(forOption option: String) -> String? { + let value = storedValueForOption(String.self, option) + return value + } + + public static var hq_fm: Bool { valueForOption(Options.Sound.hq_fm).asBool } + public static var hq_psg: Bool { valueForOption(Options.Sound.hq_fm).asBool } + public static var filter: Int { valueForOption(Options.Sound.hq_fm).asInt! } + public static var ym2413: Int { valueForOption(Options.Sound.ym2413).asInt! } + public static var ym2612: Int { valueForOption(Options.Sound.ym2612).asInt! } + + public static var no_sprite_limit: Bool { valueForOption(Options.System.noSpriteLimit).asBool } + + public static var gg_extra: Bool { valueForOption(Options.Video.gg_extra).asBool } + public static var overscan: Int { valueForOption(Options.Video.overscan).asInt! } +} + +//@objc public extension PVGenesisEmulatorCore { +// @objc var dualJoystickOption: Bool { PVGenesisEmulatorCore.valueForOption(PVGenesisEmulatorCore.dualJoystickOption).asBool } +// +// @objc var controllerPak1Option: Int { PVGenesisEmulatorCore.valueForOption(PVGenesisEmulatorCore.controllerPak1).asInt ?? 1 } +// @objc var controllerPak2Option: Int { PVGenesisEmulatorCore.valueForOption(PVGenesisEmulatorCore.controllerPak2).asInt ?? 1 } +// @objc var controllerPak3Option: Int { PVGenesisEmulatorCore.valueForOption(PVGenesisEmulatorCore.controllerPak3).asInt ?? 1 } +// @objc var controllerPak4Option: Int { PVGenesisEmulatorCore.valueForOption(PVGenesisEmulatorCore.controllerPak4).asInt ?? 1 } +// +// func parseOptions() { +// self.dualJoystick = dualJoystickOption +// self.setMode(controllerPak1Option, forController: 0) +// self.setMode(controllerPak2Option, forController: 1) +// self.setMode(controllerPak3Option, forController: 2) +// self.setMode(controllerPak4Option, forController: 3) +// } +//} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/PVGenesisEmulatorCore.m b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/PVGenesisEmulatorCore.m index 37393e7907..df9aaba3ca 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/PVGenesisEmulatorCore.m +++ b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/PVGenesisEmulatorCore.m @@ -8,6 +8,8 @@ #import "PVGenesisEmulatorCore.h" @import PVSupport; +#import + //#import //#import //#import @@ -25,12 +27,215 @@ #endif -#include "shared.h" #include "libretro.h" + +#include "shared.h" #include "state.h" #include "genesis.h" #include "md_ntsc.h" #include "sms_ntsc.h" +#include "osd.h" +//#include "config.h" + + +char GG_ROM[256]; +char AR_ROM[256]; +char SK_ROM[256]; +char SK_UPMEM[256]; +char MD_BIOS[256]; +char GG_BIOS[256]; +char MS_BIOS_EU[256]; +char MS_BIOS_JP[256]; +char MS_BIOS_US[256]; +char CD_BIOS_EU[256]; +char CD_BIOS_US[256]; +char CD_BIOS_JP[256]; +char CD_BRAM_JP[256]; +char CD_BRAM_US[256]; +char CD_BRAM_EU[256]; +char CART_BRAM[256]; + +#undef CHUNKSIZE +#define CHUNKSIZE (0x10000) + +static uint32_t brm_crc[2]; +static uint8_t brm_format[0x40] = +{ + 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x00,0x00,0x00,0x00,0x40, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x53,0x45,0x47,0x41,0x5f,0x43,0x44,0x5f,0x52,0x4f,0x4d,0x00,0x01,0x00,0x00,0x00, + 0x52,0x41,0x4d,0x5f,0x43,0x41,0x52,0x54,0x52,0x49,0x44,0x47,0x45,0x5f,0x5f,0x5f +}; + +static void bram_load(void) +{ + FILE *fp; + + /* automatically load internal backup RAM */ + switch (region_code) + { + case REGION_JAPAN_NTSC: + fp = fopen(CD_BRAM_JP, "rb"); + break; + case REGION_EUROPE: + fp = fopen(CD_BRAM_EU, "rb"); + break; + case REGION_USA: + fp = fopen(CD_BRAM_US, "rb"); + break; + default: + return; + } + + if (fp != NULL) + { + fread(scd.bram, 0x2000, 1, fp); + fclose(fp); + + /* update CRC */ + brm_crc[0] = crc32(0, scd.bram, 0x2000); + } + else + { + /* force internal backup RAM format (does not use previous region backup RAM) */ + scd.bram[0x1fff] = 0; + } + + /* check if internal backup RAM is correctly formatted */ + if (memcmp(scd.bram + 0x2000 - 0x20, brm_format + 0x20, 0x20)) + { + /* clear internal backup RAM */ + memset(scd.bram, 0x00, 0x2000 - 0x40); + + /* internal Backup RAM size fields */ + brm_format[0x10] = brm_format[0x12] = brm_format[0x14] = brm_format[0x16] = 0x00; + brm_format[0x11] = brm_format[0x13] = brm_format[0x15] = brm_format[0x17] = (sizeof(scd.bram) / 64) - 3; + + /* format internal backup RAM */ + memcpy(scd.bram + 0x2000 - 0x40, brm_format, 0x40); + + /* clear CRC to force file saving (in case previous region backup RAM was also formatted) */ + brm_crc[0] = 0; + } + + /* automatically load cartridge backup RAM (if enabled) */ + if (scd.cartridge.id) + { + fp = fopen(CART_BRAM, "rb"); + if (fp != NULL) + { + int filesize = scd.cartridge.mask + 1; + int done = 0; + + /* Read into buffer (2k blocks) */ + while (filesize > CHUNKSIZE) + { + fread(scd.cartridge.area + done, CHUNKSIZE, 1, fp); + done += CHUNKSIZE; + filesize -= CHUNKSIZE; + } + + /* Read remaining bytes */ + if (filesize) + { + fread(scd.cartridge.area + done, filesize, 1, fp); + } + + /* close file */ + fclose(fp); + + /* update CRC */ + brm_crc[1] = crc32(0, scd.cartridge.area, scd.cartridge.mask + 1); + } + + /* check if cartridge backup RAM is correctly formatted */ + if (memcmp(scd.cartridge.area + scd.cartridge.mask + 1 - 0x20, brm_format + 0x20, 0x20)) + { + /* clear cartridge backup RAM */ + memset(scd.cartridge.area, 0x00, scd.cartridge.mask + 1); + + /* Cartridge Backup RAM size fields */ + brm_format[0x10] = brm_format[0x12] = brm_format[0x14] = brm_format[0x16] = (((scd.cartridge.mask + 1) / 64) - 3) >> 8; + brm_format[0x11] = brm_format[0x13] = brm_format[0x15] = brm_format[0x17] = (((scd.cartridge.mask + 1) / 64) - 3) & 0xff; + + /* format cartridge backup RAM */ + memcpy(scd.cartridge.area + scd.cartridge.mask + 1 - 0x40, brm_format, 0x40); + } + } +} + +static void bram_save(void) +{ + FILE *fp; + + /* verify that internal backup RAM has been modified */ + if (crc32(0, scd.bram, 0x2000) != brm_crc[0]) + { + /* check if it is correctly formatted before saving */ + if (!memcmp(scd.bram + 0x2000 - 0x20, brm_format + 0x20, 0x20)) + { + switch (region_code) + { + case REGION_JAPAN_NTSC: + fp = fopen(CD_BRAM_JP, "wb"); + break; + case REGION_EUROPE: + fp = fopen(CD_BRAM_EU, "wb"); + break; + case REGION_USA: + fp = fopen(CD_BRAM_US, "wb"); + break; + default: + return; + } + if (fp != NULL) + { + fwrite(scd.bram, 0x2000, 1, fp); + fclose(fp); + + /* update CRC */ + brm_crc[0] = crc32(0, scd.bram, 0x2000); + } + } + } + + /* verify that cartridge backup RAM has been modified */ + if (scd.cartridge.id && (crc32(0, scd.cartridge.area, scd.cartridge.mask + 1) != brm_crc[1])) + { + /* check if it is correctly formatted before saving */ + if (!memcmp(scd.cartridge.area + scd.cartridge.mask + 1 - 0x20, brm_format + 0x20, 0x20)) + { + fp = fopen(CART_BRAM, "wb"); + if (fp != NULL) + { + int filesize = scd.cartridge.mask + 1; + int done = 0; + + /* Write to file (2k blocks) */ + while (filesize > CHUNKSIZE) + { + fwrite(scd.cartridge.area + done, CHUNKSIZE, 1, fp); + done += CHUNKSIZE; + filesize -= CHUNKSIZE; + } + + /* Write remaining bytes */ + if (filesize) + { + fwrite(scd.cartridge.area + done, filesize, 1, fp); + } + + /* Close file */ + fclose(fp); + + /* update CRC */ + brm_crc[1] = crc32(0, scd.cartridge.area, scd.cartridge.mask + 1); + } + } + } +} + + @interface PVGenesisEmulatorCore () { @@ -302,11 +507,19 @@ - (BOOL)loadFileAtPath:(NSString*)path error:(NSError**)error info.data = data; info.size = size; info.meta = meta; + + /* input options */ + input.system[0] = SYSTEM_GAMEPAD; + input.system[1] = SYSTEM_GAMEPAD; + for (int i=0; i #import +#import #define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; @interface MednafenGameCore (MultiDisc) + (NSDictionary*_Nonnull)multiDiscPSXGames; ++ (NSDictionary*_Nonnull)sbiRequiredGames; @end @interface MednafenGameCore (MultiTap) @@ -117,6 +119,8 @@ @interface MednafenGameCore () output video latency by 1 frame. Enabling will increase CPU usage, // and may cause video glitches(such as "jerkiness") in some oddball games, but most commercially-released games should be fine. @@ -196,16 +221,19 @@ static void mednafen_init(MednafenGameCore* current) // MDFNI_SetSetting("snes_faust.special", "nn2x"); + // MARK: Sega Saturn Settings + Mednafen::MDFNI_SetSetting("ss.region_default", "na"); // Used if region autodetection fails or is disabled. + - - // NES Settings + // MARK: NES Settings Mednafen::MDFNI_SetSettingUI("nes.clipsides", 1); // Clip left+right 8 pixel columns. 0 default Mednafen::MDFNI_SetSettingB("nes.correct_aspect", true); // Correct the aspect ratio. 0 default - // PSX Settings - Mednafen::MDFNI_SetSettingB("psx.h_overscan", true); // Show horizontal overscan area. 1 default + // MARK: PSX Settings + BOOL psx_h_overscan = current.psx_h_overscan; + Mednafen::MDFNI_SetSettingB("psx.h_overscan", psx_h_overscan); // Show horizontal overscan area. 1 default Mednafen::MDFNI_SetSetting("psx.region_default", "na"); // Set default region to North America if auto detect fails, default: jp Mednafen::MDFNI_SetSettingB("psx.input.analog_mode_ct", false); // Enable Analog mode toggle @@ -233,7 +261,7 @@ static void mednafen_init(MednafenGameCore* current) ((1 << PSXMap[PVPSXButtonL1]) | (1 << PSXMap[PVPSXButtonR1]) | (1 << PSXMap[PVPSXButtonCircle])); Mednafen::MDFNI_SetSettingUI("psx.input.analog_mode_ct.compare", amct); - // PCE Settings + // MARK: PCE Settings // MDFNI_SetSetting("pce.disable_softreset", "1"); // PCE: To prevent soft resets due to accidentally hitting RUN and SEL at the same time. // MDFNI_SetSetting("pce.adpcmextraprec", "1"); // PCE: Enabling this option causes the MSM5205 ADPCM predictor to be outputted with full precision of 12-bits, // // rather than only outputting 10-bits of precision(as an actual MSM5205 does). @@ -245,25 +273,29 @@ static void mednafen_init(MednafenGameCore* current) Mednafen::MDFNI_SetSetting("pce.resamp_rate_error", "0.0000001"); // PCE: Sound output rate tolerance. Lower values correspond to better matching of the output rate of the resampler to the actual desired output rate, at the expense of increased RAM usage and poorer CPU cache utilization. default 0.0000009 Mednafen::MDFNI_SetSetting("pce.cdpsgvolume", "62"); // PCE: PSG volume when playing a CD game. Setting this volume control too high may cause sample clipping. default 100 - // PCE_Fast settings + // MARK: PCE_Fast settings Mednafen::MDFNI_SetSetting("pce_fast.cdspeed", "4"); // PCE: CD-ROM data transfer speed multiplier. Default is 1 // MDFNI_SetSetting("pce_fast.disable_softreset", "1"); // PCE: To prevent soft resets due to accidentally hitting RUN and SEL at the same time Mednafen::MDFNI_SetSetting("pce_fast.slstart", "0"); // PCE: First rendered scanline Mednafen::MDFNI_SetSetting("pce_fast.slend", "239"); // PCE: Last rendered scanline - // PC-FX Settings + // MARK: PC-FX Settings Mednafen::MDFNI_SetSetting("pcfx.cdspeed", "8"); // PCFX: Emulated CD-ROM speed. Setting the value higher than 2, the default, will decrease loading times in most games by some degree. // MDFNI_SetSetting("pcfx.input.port1.multitap", "1"); // PCFX: EXPERIMENTAL emulation of the unreleased multitap. Enables ports 3 4 5. Mednafen::MDFNI_SetSetting("pcfx.nospritelimit", "1"); // PCFX: Remove 16-sprites-per-scanline hardware limit. Mednafen::MDFNI_SetSetting("pcfx.slstart", "4"); // PCFX: First rendered scanline 4 default Mednafen::MDFNI_SetSetting("pcfx.slend", "235"); // PCFX: Last rendered scanline 235 default, 239max Mednafen::MDFNI_SetSetting("cheats", "1"); // + + // MARK: HUD // Enable FPS -// Mednafen::MDFNI_SetSetting("fps.autoenable", "1"); +#if DEBUG + Mednafen::MDFNI_SetSetting("fps.autoenable", "1"); +#endif // NSString *cfgPath = [[current BIOSPath] stringByAppendingPathComponent:@"mednafen-export.cfg"]; -// MDFN_SaveSettings(cfgPath.UTF8String); +// Mednafen::MDFN_SaveSettings(cfgPath.UTF8String); } - (id)init { @@ -367,6 +399,7 @@ - (id)init { } cheatList = [[NSMutableDictionary alloc] init]; + [self parseOptions]; return self; } @@ -450,6 +483,7 @@ static void emulation_run(BOOL skipFrame) { - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { + [self parseOptions]; [[NSFileManager defaultManager] createDirectoryAtPath:[self batterySavesPath] withIntermediateDirectories:YES attributes:nil error:NULL]; if([[self systemIdentifier] isEqualToString:@"com.provenance.lynx"]) @@ -621,6 +655,7 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error frontBufferSurf = new Mednafen::MDFN_Surface(NULL, game->fb_width, game->fb_height, game->fb_width, pix_fmt); masterClock = game->MasterClock >> 32; + BOOL multiDiscGame = NO; if (self.systemType == MednaSystemPCE) { @@ -640,6 +675,19 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error game->SetInput(0, "gamepad", (uint8_t *)inputBuffer[0]); game->SetInput(1, "gamepad", (uint8_t *)inputBuffer[1]); } + else if (self.systemType == MednaSystemSS) { + BOOL hasM3u = [path.pathExtension.lowercaseString isEqualToString:@"m3u"]; + if (hasM3u) { + multiDiscGame = YES; + + // TODO: Make this real + // https://gamicus.fandom.com/wiki/List_of_Saturn_video_games_with_multiple_discs + self.maxDiscs = 4; + } + + game->SetInput(0, "gamepad", (uint8_t *)inputBuffer[0]); + game->SetInput(1, "gamepad", (uint8_t *)inputBuffer[1]); + } else if (self.systemType == MednaSystemPSX) { for(unsigned i = 0; i < multiTapPlayerCount; i++) { @@ -654,7 +702,6 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error } // Multi-Disc check - BOOL multiDiscGame = NO; NSNumber *discCount = [MednafenGameCore multiDiscPSXGames][self.romSerial]; if (discCount) { self.maxDiscs = [discCount intValue]; @@ -695,48 +742,108 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error // } // } // } + // PSX: Check if SBI file is required + if ([MednafenGameCore sbiRequiredGames][self.romSerial]) + { + _isSBIRequired = YES; + } - if (multiDiscGame && ![path.pathExtension.lowercaseString isEqualToString:@"m3u"]) { - NSString *m3uPath = [path.stringByDeletingPathExtension stringByAppendingPathExtension:@"m3u"]; - NSRange rangeOfDocuments = [m3uPath rangeOfString:@"/Documents/" options:NSCaseInsensitiveSearch]; - if (rangeOfDocuments.location != NSNotFound) { - m3uPath = [m3uPath substringFromIndex:rangeOfDocuments.location + 11]; - } + // Handle required SBI files for games + // TODO: Handle SBI Games +// if(_isSBIRequired && _allCueSheetFiles.count && ([path.pathExtension.lowercaseString isEqualToString:@"cue"] || [path.pathExtension.lowercaseString isEqualToString:@"m3u"])) +// { +// NSURL *romPath = [NSURL fileURLWithPath:path.stringByDeletingLastPathComponent]; +// +// BOOL missingFileStatus = NO; +// NSUInteger missingFileCount = 0; +// NSMutableString *missingFilesList = [NSMutableString string]; +// +// // Build a path to SBI file and check if it exists +// for(NSString *cueSheetFile in _allCueSheetFiles) +// { +// NSString *extensionlessFilename = cueSheetFile.stringByDeletingPathExtension; +// NSURL *sbiFile = [romPath URLByAppendingPathComponent:[extensionlessFilename stringByAppendingPathExtension:@"sbi"]]; +// +// // Check if the required SBI files exist +// if(![sbiFile checkResourceIsReachableAndReturnError:nil]) +// { +// missingFileStatus = YES; +// missingFileCount++; +// [missingFilesList appendString:[NSString stringWithFormat:@"\"%@\"\n\n", extensionlessFilename]]; +// } +// } +// // Alert the user of missing SBI files that are required for the game +// if(missingFileStatus) +// { +// NSError *outErr = [NSError errorWithDomain:OEGameCoreErrorDomain code:OEGameCoreCouldNotLoadROMError userInfo:@{ +// NSLocalizedDescriptionKey : missingFileCount > 1 ? @"Required SBI files missing." : @"Required SBI file missing.", +// NSLocalizedRecoverySuggestionErrorKey : missingFileCount > 1 ? [NSString stringWithFormat:@"To run this game you need SBI files for the discs:\n\n%@Drag and drop the required files onto the game library window and try again.\n\nFor more information, visit:\nhttps://github.com/OpenEmu/OpenEmu/wiki/User-guide:-CD-based-games#q-i-have-a-sbi-file", missingFilesList] : [NSString stringWithFormat:@"To run this game you need a SBI file for the disc:\n\n%@Drag and drop the required file onto the game library window and try again.\n\nFor more information, visit:\nhttps://github.com/OpenEmu/OpenEmu/wiki/User-guide:-CD-based-games#q-i-have-a-sbi-file", missingFilesList], +// }]; +// +// *error = outErr; +// +// return NO; +// } +// } + } + else + { + game->SetInput(0, "gamepad", (uint8_t *)inputBuffer[0]); + game->SetInput(1, "gamepad", (uint8_t *)inputBuffer[0]); + } + + if (multiDiscGame && ![path.pathExtension.lowercaseString isEqualToString:@"m3u"]) { + NSString *m3uPath = [path.stringByDeletingPathExtension stringByAppendingPathExtension:@"m3u"]; + NSRange rangeOfDocuments = [m3uPath rangeOfString:@"/Documents/" options:NSCaseInsensitiveSearch]; + if (rangeOfDocuments.location != NSNotFound) { + m3uPath = [m3uPath substringFromIndex:rangeOfDocuments.location + 11]; + } - if (error) { - NSString *message = [NSString stringWithFormat:@"This game requires multiple discs and must be loaded using a m3u file with all %lu discs.\n\nTo enable disc switching and ensure save files load across discs, it cannot be loaded as a single disc.\n\nPlease install a .m3u file with the filename %@.\nSee https://bitly.com/provm3u", self.maxDiscs, m3uPath]; + if (error) { + NSString *message = [NSString stringWithFormat:@"This game requires multiple discs and must be loaded using a m3u file with all %lu discs.\n\nTo enable disc switching and ensure save files load across discs, it cannot be loaded as a single disc.\n\nPlease install a .m3u file with the filename %@.\nSee https://bitly.com/provm3u", self.maxDiscs, m3uPath]; - NSDictionary *userInfo = @{ - NSLocalizedDescriptionKey: @"Failed to load game.", - NSLocalizedFailureReasonErrorKey: @"Missing required m3u file.", - NSLocalizedRecoverySuggestionErrorKey: message - }; + NSDictionary *userInfo = @{ + NSLocalizedDescriptionKey: @"Failed to load game.", + NSLocalizedFailureReasonErrorKey: @"Missing required m3u file.", + NSLocalizedRecoverySuggestionErrorKey: message + }; - NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain - code:PVEmulatorCoreErrorCodeMissingM3U - userInfo:userInfo]; + NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain + code:PVEmulatorCoreErrorCodeMissingM3U + userInfo:userInfo]; - *error = newError; - } - return NO; - } - - if (self.maxDiscs > 1) { - // Parse number of discs in m3u - NSString *m3uString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; - NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@".cue|.ccd" options:NSRegularExpressionCaseInsensitive error:nil]; - NSUInteger numberOfMatches = [regex numberOfMatchesInString:m3uString options:0 range:NSMakeRange(0, [m3uString length])]; - - NSLog(@"Loaded m3u containing %lu cue sheets or ccd",numberOfMatches); + *error = newError; } + return NO; } - else - { - game->SetInput(0, "gamepad", (uint8_t *)inputBuffer[0]); - game->SetInput(1, "gamepad", (uint8_t *)inputBuffer[0]); + + if (self.maxDiscs > 1) { + // Parse number of discs in m3u + NSString *m3uString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; + NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@".cue|.ccd" options:NSRegularExpressionCaseInsensitive error:nil]; + NSUInteger numberOfMatches = [regex numberOfMatchesInString:m3uString options:0 range:NSMakeRange(0, [m3uString length])]; + + ILOG(@"Loaded m3u containing %lu cue sheets or ccd",numberOfMatches); } +// BOOL success = Mednafen::MDFNI_SetMedia(0, 2, 0, 0); // Disc selection API +// if (!success) { +// NSString *message = [NSString stringWithFormat:@"MDFNI_SetMedia returned 0. Check your m3u or other file paths."]; +// +// NSDictionary *userInfo = @{ +// NSLocalizedDescriptionKey: @"Failed to load game.", +// NSLocalizedFailureReasonErrorKey: @"MDFNI_SetMedia returned 0", +// NSLocalizedRecoverySuggestionErrorKey: message +// }; +// +// NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain +// code:PVEmulatorCoreErrorCodeMissingM3U +// userInfo:userInfo]; +// +// *error = newError; +// return NO; +// } emulation_run(NO); @@ -981,6 +1088,10 @@ - (void)swapBuffers frontBufferSurf = tempSurf; } +- (BOOL)rendersToOpenGL { + return self.video_opengl; +} + #pragma mark - Audio static size_t update_audio_batch(const int16_t *data, size_t frames) @@ -998,6 +1109,7 @@ - (double)audioSampleRate - (NSUInteger)channelCount { + if(game == nil) { return 2; } return game->soundchan; } diff --git a/Cores/Mednafen/MednafenGameCore.swift b/Cores/Mednafen/MednafenGameCore.swift index fab9992c4b..3712c2d98f 100644 --- a/Cores/Mednafen/MednafenGameCore.swift +++ b/Cores/Mednafen/MednafenGameCore.swift @@ -79,37 +79,156 @@ extension MednafenGameCore: GameWithCheat { extension MednafenGameCore: CoreOptional { public static var options: [CoreOption] = { var options = [CoreOption]() + + let videoGroup:CoreOption = .group(.init(title: "Video", + description: "Video options for all Mednafen cores."), + subOptions: [video_blit_timesync, video_fs, video_openglOption]) + - let fastGroup = CoreOption.group(display: CoreOptionValueDisplay(title: "Fast Cores", - description: "Alternative versions of cores that trade accuracy for speed"), - subOptions: [pceFastOption, snesFastOption]) + options.append(videoGroup) + + let fastGroup:CoreOption = .group(.init(title: "Fast Cores", + description: "Alternative versions of cores that trade accuracy for speed"), + subOptions: [pceFastOption, snesFastOption]) options.append(fastGroup) + + let snesFaustGroup:CoreOption = .group(.init(title: "SNES Faust", + description: ""), + subOptions: [snesFastSpexOption]) + + + options.append(snesFaustGroup) + + let psxGroup:CoreOption = .group(.init(title: "PlayStation", + description: ""), + subOptions: [psx_h_overscan]) + + + options.append(psxGroup) + + var vbOptions = [vb_instant_display_hack, vb_sidebyside] + vbOptions.append(.range(.init( + title: "Side-by-side separation", + description: "How many pixels (to VB scale) to seperate left and right images.", + requiresRestart: true), range: .init(defaultValue: 0, min: 0, max: 100), + defaultValue: 0)) + + + let vbGroup:CoreOption = .group(.init(title: "VirtualBoy", + description: ""), + subOptions: vbOptions) + + + options.append(vbGroup) return options }() - + + static var video_blit_timesync: CoreOption = { + .bool(.init( + title: "Enable time synchronization(waiting) for frame blitting", + description: "Disable to reduce latency, at the cost of potentially increased video \"juddering\", with the maximum reduction in latency being about 1 video frame's time. Will work best with emulated systems that are not very computationally expensive to emulate, combined with running on a relatively fast CPU.", + requiresRestart: true), + defaultValue: true) + }() + + static var video_fs: CoreOption = { + .bool(.init( + title: "Fullscreen", + description: "Enable fullscreen mode. May effect performance and scaling.", + requiresRestart: true), + defaultValue: false) + }() + + static var video_openglOption: CoreOption = { + .bool(.init( + title: "Use OpenGL", + description: "Experimental OpenGL mode.", + requiresRestart: true), + defaultValue: false) + }() static var pceFastOption: CoreOption = { - let pceFastOption = CoreOption.bool(display: .init( + .bool(.init( title: "PCE Fast", description: "Use a faster but possibly buggy PCEngine version.", requiresRestart: true), defaultValue: false) - return pceFastOption }() static var snesFastOption: CoreOption = { - let snesFastOption = CoreOption.bool(display: .init( + .bool(.init( title: "SNES Fast", description: "Use faster but maybe more buggy SNES core (default)", requiresRestart: true), defaultValue: true) - return snesFastOption + }() + + static var snesFastSpexOption: CoreOption = { + .bool(.init( + title: "1-frame speculative execution", + description: "Hack to reduce input->output video latency by 1 frame. Enabling will increase CPU usage, and may cause video glitches(such as \"jerkiness\") in some oddball games, but most commercially-released games should be fine.", + requiresRestart: true), defaultValue: false) + }() + + static var psx_h_overscan: CoreOption = { + .bool(.init( + title: "Overscan", + description: "Show horizontal overscan area.", + requiresRestart: true), defaultValue: true) + }() + + static var vb_instant_display_hack: CoreOption = { + .bool(.init( + title: "Display latency reduction hack", + description: "Reduces latency in games by displaying the framebuffer 20ms earlier. This hack has some potential of causing graphical glitches, so it is disabled by default.", + requiresRestart: true), defaultValue: false) + }() + + static var vb_sidebyside: CoreOption = { + .bool(.init( + title: "Side by side mode", + description: "The left-eye image is displayed on the left, and the right-eye image is displayed on the right.", + requiresRestart: true), defaultValue: false) }() } @objc public extension MednafenGameCore { + @objc(video_blit_timesync) var video_blit_timesync: Bool { MednafenGameCore.valueForOption(MednafenGameCore.video_blit_timesync).asBool } + @objc(video_fs) var video_fs: Bool { MednafenGameCore.valueForOption(MednafenGameCore.video_fs).asBool } + @objc(mednafen_pceFast) var mednafen_pceFast: Bool { MednafenGameCore.valueForOption(MednafenGameCore.pceFastOption).asBool } @objc(mednafen_snesFast) var mednafen_snesFast: Bool { MednafenGameCore.valueForOption(MednafenGameCore.snesFastOption).asBool } + + @objc(mednafen_snesFast_spex) var mednafen_snesFast_spex: Bool { MednafenGameCore.valueForOption(MednafenGameCore.snesFastSpexOption).asBool } + + @objc(psx_h_overscan) var psx_h_overscan: Bool { MednafenGameCore.valueForOption(MednafenGameCore.psx_h_overscan).asBool } + + @objc(vb_instant_display_hack) var vb_instant_display_hack: Bool { MednafenGameCore.valueForOption(MednafenGameCore.vb_instant_display_hack).asBool } + + @objc(vb_sidebyside) var vb_sidebyside: Bool { MednafenGameCore.valueForOption(MednafenGameCore.vb_sidebyside).asBool } + + static func bool(forOption option: String) -> Bool { + return storedValueForOption(Bool.self, option) ?? false + } + + static func int(forOption option: String) -> Int { + let value = storedValueForOption(Int.self, option) + return value ?? 0 + } + + static func float(forOption option: String) -> Float { + let value = storedValueForOption(Float.self, option) + return value ?? 0 + } + + static func string(forOption option: String) -> String? { + let value = storedValueForOption(String.self, option) + return value + } + + func parseOptions() { + self.video_opengl = MednafenGameCore.valueForOption(MednafenGameCore.video_openglOption).asBool; + } } diff --git a/Cores/Mednafen/MednafenMultiTap.m b/Cores/Mednafen/MednafenMultiTap.m index dd5696299a..2129183d63 100644 --- a/Cores/Mednafen/MednafenMultiTap.m +++ b/Cores/Mednafen/MednafenMultiTap.m @@ -773,7 +773,221 @@ @implementation MednafenGameCore (MultiTap) return arr; } ++ (NSDictionary*_Nonnull)sbiRequiredGames { + static NSDictionary* dict = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ -@end - +// PlayStation SBI required games (LibCrypt) + NSDictionary *sbiRequiredGames = + @{ + @"SLES-01226" : @1, // Actua Ice Hockey 2 (Europe) + @"SLES-02563" : @1, // Anstoss - Premier Manager (Germany) + @"SCES-01564" : @1, // Ape Escape (Europe) + @"SCES-02028" : @1, // Ape Escape (France) + @"SCES-02029" : @1, // Ape Escape (Germany) + @"SCES-02030" : @1, // Ape Escape (Italy) + @"SCES-02031" : @1, // Ape Escape - La Invasión de los Monos (Spain) + @"SLES-03324" : @1, // Astérix - Mega Madness (Europe) (En,Fr,De,Es,It,Nl) + @"SCES-02366" : @1, // Barbie - Aventure Equestre (France) + @"SCES-02365" : @1, // Barbie - Race & Ride (Europe) + @"SCES-02367" : @1, // Barbie - Race & Ride (Germany) + @"SCES-02368" : @1, // Barbie - Race & Ride (Italy) + @"SCES-02369" : @1, // Barbie - Race & Ride (Spain) + @"SCES-02488" : @1, // Barbie - Sports Extrême (France) + @"SCES-02489" : @1, // Barbie - Super Sport (Germany) + @"SCES-02487" : @1, // Barbie - Super Sports (Europe) + @"SCES-02490" : @1, // Barbie - Super Sports (Italy) + @"SCES-02491" : @1, // Barbie - Super Sports (Spain) + @"SLES-02977" : @1, // BDFL Manager 2001 (Germany) + @"SLES-03605" : @1, // BDFL Manager 2002 (Germany) + @"SLES-02293" : @1, // Canal+ Premier Manager (Europe) (Fr,Es,It) + @"SCES-02834" : @1, // Crash Bash (Europe) (En,Fr,De,Es,It) + @"SCES-02105" : @1, // CTR - Crash Team Racing (Europe) (En,Fr,De,Es,It,Nl) (EDC) / (No EDC) + @"SLES-02207" : @1, // Dino Crisis (Europe) + @"SLES-02208" : @1, // Dino Crisis (France) + @"SLES-02209" : @1, // Dino Crisis (Germany) + @"SLES-02210" : @1, // Dino Crisis (Italy) + @"SLES-02211" : @1, // Dino Crisis (Spain) + @"SCES-02004" : @1, // Disney Fais Ton Histoire! - Mulan (France) + @"SCES-02006" : @1, // Disney Libro Animato Creativo - Mulan (Italy) + @"SCES-01516" : @1, // Disney Tarzan (France) + @"SCES-01519" : @1, // Disney Tarzan (Spain) + @"SLES-03191" : @1, // Disney's 102 Dalmatians - Puppies to the Rescue (Europe) (Fr,De,Es,It,Nl) + @"SLES-03189" : @1, // Disney's 102 Dalmatians - Puppies to the Rescue (Europe) + @"SCES-02007" : @1, // Disney's Aventura Interactiva - Mulan (Spain) + @"SCES-01695" : @1, // Disney's Story Studio - Mulan (Europe) + @"SCES-01431" : @1, // Disney's Tarzan (Europe) + @"SCES-02185" : @1, // Disney's Tarzan (Netherlands) + @"SCES-02182" : @1, // Disney's Tarzan (Sweden) + @"SCES-02264" : @1, // Disney's Verhalenstudio - Mulan (Netherlands) + @"SCES-02005" : @1, // Disneys Interaktive Abenteuer - Mulan (Germany) + @"SCES-01517" : @1, // Disneys Tarzan (Germany) + @"SCES-01518" : @1, // Disneys Tarzan (Italy) + @"SLES-02538" : @1, // EA Sports Superbike 2000 (Europe) (En,Fr,De,Es,It,Sv) + @"SLES-01715" : @1, // Eagle One - Harrier Attack (Europe) (En,Fr,De,Es,It) + @"SCES-01704" : @1, // Esto es Futbol (Spain) + @"SLES-03061" : @1, // F.A. Premier League Football Manager 2001, The (Europe) + @"SLES-02722" : @1, // F1 2000 (Europe) (En,Fr,De,Nl) + @"SLES-02724" : @1, // F1 2000 (Italy) + @"SLES-02965" : @1, // Final Fantasy IX (Europe) (Disc 1) + @"SLES-12965" : @1, // Final Fantasy IX (Europe) (Disc 2) + @"SLES-22965" : @1, // Final Fantasy IX (Europe) (Disc 3) + @"SLES-32965" : @1, // Final Fantasy IX (Europe) (Disc 4) + @"SLES-02966" : @1, // Final Fantasy IX (France) (Disc 1) + @"SLES-12966" : @1, // Final Fantasy IX (France) (Disc 2) + @"SLES-22966" : @1, // Final Fantasy IX (France) (Disc 3) + @"SLES-32966" : @1, // Final Fantasy IX (France) (Disc 4) + @"SLES-02967" : @1, // Final Fantasy IX (Germany) (Disc 1) + @"SLES-12967" : @1, // Final Fantasy IX (Germany) (Disc 2) + @"SLES-22967" : @1, // Final Fantasy IX (Germany) (Disc 3) + @"SLES-32967" : @1, // Final Fantasy IX (Germany) (Disc 4) + @"SLES-02968" : @1, // Final Fantasy IX (Italy) (Disc 1) + @"SLES-12968" : @1, // Final Fantasy IX (Italy) (Disc 2) + @"SLES-22968" : @1, // Final Fantasy IX (Italy) (Disc 3) + @"SLES-32968" : @1, // Final Fantasy IX (Italy) (Disc 4) + @"SLES-02969" : @1, // Final Fantasy IX (Spain) (Disc 1) + @"SLES-12969" : @1, // Final Fantasy IX (Spain) (Disc 2) + @"SLES-22969" : @1, // Final Fantasy IX (Spain) (Disc 3) + @"SLES-32969" : @1, // Final Fantasy IX (Spain) (Disc 4) + @"SLES-02080" : @1, // Final Fantasy VIII (Europe, Australia) (Disc 1) + @"SLES-12080" : @1, // Final Fantasy VIII (Europe, Australia) (Disc 2) + @"SLES-22080" : @1, // Final Fantasy VIII (Europe, Australia) (Disc 3) + @"SLES-32080" : @1, // Final Fantasy VIII (Europe, Australia) (Disc 4) + @"SLES-02081" : @1, // Final Fantasy VIII (France) (Disc 1) + @"SLES-12081" : @1, // Final Fantasy VIII (France) (Disc 2) + @"SLES-22081" : @1, // Final Fantasy VIII (France) (Disc 3) + @"SLES-32081" : @1, // Final Fantasy VIII (France) (Disc 4) + @"SLES-02082" : @1, // Final Fantasy VIII (Germany) (Disc 1) + @"SLES-12082" : @1, // Final Fantasy VIII (Germany) (Disc 2) + @"SLES-22082" : @1, // Final Fantasy VIII (Germany) (Disc 3) + @"SLES-32082" : @1, // Final Fantasy VIII (Germany) (Disc 4) + @"SLES-02083" : @1, // Final Fantasy VIII (Italy) (Disc 1) + @"SLES-12083" : @1, // Final Fantasy VIII (Italy) (Disc 2) + @"SLES-22083" : @1, // Final Fantasy VIII (Italy) (Disc 3) + @"SLES-32083" : @1, // Final Fantasy VIII (Italy) (Disc 4) + @"SLES-02084" : @1, // Final Fantasy VIII (Spain) (Disc 1) + @"SLES-12084" : @1, // Final Fantasy VIII (Spain) (Disc 2) + @"SLES-22084" : @1, // Final Fantasy VIII (Spain) (Disc 3) + @"SLES-32084" : @1, // Final Fantasy VIII (Spain) (Disc 4) + @"SLES-02978" : @1, // Football Manager Campionato 2001 (Italy) + @"SCES-02222" : @1, // Formula One 99 (Europe) (En,Es,Fi) + @"SCES-01979" : @1, // Formula One 99 (Europe) (En,Fr,De,It) + @"SLES-02767" : @1, // Frontschweine (Germany) + @"SCES-01702" : @1, // Fussball Live (Germany) + @"SLES-03062" : @1, // Fussball Manager 2001 (Germany) + @"SLES-02328" : @1, // Galerians (Europe) (Disc 1) + @"SLES-12328" : @1, // Galerians (Europe) (Disc 2) + @"SLES-22328" : @1, // Galerians (Europe) (Disc 3) + @"SLES-02329" : @1, // Galerians (France) (Disc 1) + @"SLES-12329" : @1, // Galerians (France) (Disc 2) + @"SLES-22329" : @1, // Galerians (France) (Disc 3) + @"SLES-02330" : @1, // Galerians (Germany) (Disc 1) + @"SLES-12330" : @1, // Galerians (Germany) (Disc 2) + @"SLES-22330" : @1, // Galerians (Germany) (Disc 3) + @"SLES-01241" : @1, // Gekido - Urban Fighters (Europe) (En,Fr,De,Es,It) + @"SLES-01041" : @1, // Hogs of War (Europe) + @"SLES-03489" : @1, // Italian Job, The (Europe) + @"SLES-03626" : @1, // Italian Job, The (Europe) (Fr,De,Es) + @"SCES-01444" : @1, // Jackie Chan Stuntmaster (Europe) + @"SLES-01362" : @1, // Le Mans 24 Hours (Europe) (En,Fr,De,Es,It,Pt) + @"SLES-01301" : @1, // Legacy of Kain - Soul Reaver (Europe) + @"SLES-02024" : @1, // Legacy of Kain - Soul Reaver (France) + @"SLES-02025" : @1, // Legacy of Kain - Soul Reaver (Germany) + @"SLES-02027" : @1, // Legacy of Kain - Soul Reaver (Italy) + @"SLES-02026" : @1, // Legacy of Kain - Soul Reaver (Spain) + @"SLES-02766" : @1, // Les Cochons de Guerre (France) + @"SLES-02975" : @1, // LMA Manager 2001 (Europe) + @"SLES-03603" : @1, // LMA Manager 2002 (Europe) + @"SLES-03530" : @1, // Lucky Luke - Western Fever (Europe) (En,Fr,De,Es,It,Nl) + @"SCES-00311" : @1, // MediEvil (Europe) + @"SCES-01492" : @1, // MediEvil (France) + @"SCES-01493" : @1, // MediEvil (Germany) + @"SCES-01494" : @1, // MediEvil (Italy) + @"SCES-01495" : @1, // MediEvil (Spain) + @"SCES-02544" : @1, // MediEvil 2 (Europe) (En,Fr,De) + @"SCES-02545" : @1, // MediEvil 2 (Europe) (Es,It,Pt) + @"SCES-02546" : @1, // MediEvil 2 (Russia) + @"SLES-03519" : @1, // Men in Black - The Series - Crashdown (Europe) + @"SLES-03520" : @1, // Men in Black - The Series - Crashdown (France) + @"SLES-03521" : @1, // Men in Black - The Series - Crashdown (Germany) + @"SLES-03522" : @1, // Men in Black - The Series - Crashdown (Italy) + @"SLES-03523" : @1, // Men in Black - The Series - Crashdown (Spain) + @"SLES-01545" : @1, // Michelin Rally Masters - Race of Champions (Europe) (En,De,Sv) + @"SLES-02395" : @1, // Michelin Rally Masters - Race of Champions (Europe) (Fr,Es,It) + @"SLES-02839" : @1, // Mike Tyson Boxing (Europe) (En,Fr,De,Es,It) + @"SLES-01906" : @1, // Mission - Impossible (Europe) (En,Fr,De,Es,It) + @"SLES-02830" : @1, // MoHo (Europe) (En,Fr,De,Es,It) + @"SCES-01701" : @1, // Monde des Bleus, Le - Le jeu officiel de l'équipe de France (France) + @"SLES-02086" : @1, // N-Gen Racing (Europe) (En,Fr,De,Es,It) + @"SLES-02689" : @1, // Need for Speed - Porsche 2000 (Europe) (En,De,Sv) + @"SLES-02700" : @1, // Need for Speed - Porsche 2000 (Europe) (Fr,Es,It) + @"SLES-02558" : @1, // Parasite Eve II (Europe) (Disc 1) + @"SLES-12558" : @1, // Parasite Eve II (Europe) (Disc 2) + @"SLES-02559" : @1, // Parasite Eve II (France) (Disc 1) + @"SLES-12559" : @1, // Parasite Eve II (France) (Disc 2) + @"SLES-02560" : @1, // Parasite Eve II (Germany) (Disc 1) + @"SLES-12560" : @1, // Parasite Eve II (Germany) (Disc 2) + @"SLES-02562" : @1, // Parasite Eve II (Italy) (Disc 1) + @"SLES-12562" : @1, // Parasite Eve II (Italy) (Disc 2) + @"SLES-02561" : @1, // Parasite Eve II (Spain) (Disc 1) + @"SLES-12561" : @1, // Parasite Eve II (Spain) (Disc 2) + @"SLES-02061" : @1, // PGA European Tour Golf (Europe) (En,De) + @"SLES-02292" : @1, // Premier Manager 2000 (Europe) + @"SLES-00017" : @1, // Prince Naseem Boxing (Europe) (En,Fr,De,Es,It) + @"SLES-01943" : @1, // Radikal Bikers (Europe) (En,Fr,De,Es,It) + @"SLES-02824" : @1, // RC Revenge (Europe) (En,Fr,De,Es) + @"SLES-02529" : @1, // Resident Evil 3 - Nemesis (Europe) + @"SLES-02530" : @1, // Resident Evil 3 - Nemesis (France) + @"SLES-02531" : @1, // Resident Evil 3 - Nemesis (Germany) + @"SLES-02698" : @1, // Resident Evil 3 - Nemesis (Ireland) + @"SLES-02533" : @1, // Resident Evil 3 - Nemesis (Italy) + @"SLES-02532" : @1, // Resident Evil 3 - Nemesis (Spain) + @"SLES-00995" : @1, // Ronaldo V-Football (Europe) (En,Fr,Nl,Sv) + @"SLES-02681" : @1, // Ronaldo V-Football (Europe) (De,Es,It,Pt) + @"SLES-02112" : @1, // SaGa Frontier 2 (Europe) + @"SLES-02113" : @1, // SaGa Frontier 2 (France) + @"SLES-02118" : @1, // SaGa Frontier 2 (Germany) + @"SLES-02763" : @1, // SnoCross Championship Racing (Europe) (En,Fr,De,Es,It) + @"SCES-02290" : @1, // Space Debris (Europe) + @"SCES-02430" : @1, // Space Debris (France) + @"SCES-02431" : @1, // Space Debris (Germany) + @"SCES-02432" : @1, // Space Debris (Italy) + @"SCES-01763" : @1, // Speed Freaks (Europe) + @"SCES-02835" : @1, // Spyro - Year of the Dragon (Europe) (En,Fr,De,Es,It) (v1.0) / (v1.1) + @"SCES-02104" : @1, // Spyro 2 - Gateway to Glimmer (Europe) (En,Fr,De,Es,It) + @"SLES-02857" : @1, // Sydney 2000 (Europe) + @"SLES-02858" : @1, // Sydney 2000 (France) + @"SLES-02859" : @1, // Sydney 2000 (Germany) + @"SLES-02861" : @1, // Sydney 2000 (Spain) + @"SLES-03245" : @1, // TechnoMage - De Terugkeer der Eeuwigheid (Netherlands) + @"SLES-02831" : @1, // TechnoMage - Die Rückkehr der Ewigkeit (Germany) + @"SLES-03242" : @1, // TechnoMage - En Quête de L'Eternité (France) + @"SLES-03241" : @1, // TechnoMage - Return of Eternity (Europe) + @"SLES-02688" : @1, // Theme Park World (Europe) (En,Fr,De,Es,It,Nl,Sv) + @"SCES-01882" : @1, // This Is Football (Europe) (Fr,Nl) + @"SCES-01700" : @1, // This Is Football (Europe) + @"SCES-01703" : @1, // This Is Football (Italy) + @"SLES-02572" : @1, // TOCA World Touring Cars (Europe) (En,Fr,De) + @"SLES-02573" : @1, // TOCA World Touring Cars (Europe) (Es,It) + @"SLES-02704" : @1, // UEFA Euro 2000 (Europe) + @"SLES-02705" : @1, // UEFA Euro 2000 (France) + @"SLES-02706" : @1, // UEFA Euro 2000 (Germany) + @"SLES-02707" : @1, // UEFA Euro 2000 (Italy) + @"SLES-01733" : @1, // UEFA Striker (Europe) (En,Fr,De,Es,It,Nl) + @"SLES-02071" : @1, // Urban Chaos (Europe) (En,Es,It) + @"SLES-02355" : @1, // Urban Chaos (Germany) + @"SLES-01907" : @1, // V-Rally - Championship Edition 2 (Europe) (En,Fr,De) + @"SLES-02754" : @1, // Vagrant Story (Europe) + @"SLES-02755" : @1, // Vagrant Story (France) + @"SLES-02756" : @1, // Vagrant Story (Germany) + @"SLES-02733" : @1, // Walt Disney World Quest - Magical Racing Tour (Europe) (En,Fr,De,Es,It,Nl,Sv,No,Da) + @"SCES-01909" : @1, // Wip3out (Europe) (En,Fr,De,Es,It) + }; + dict = sbiRequiredGames; + }); + + return dict; +} +@end diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/project.pbxproj b/Cores/Mednafen/PVMednafen.xcodeproj/project.pbxproj index d363254e72..d78454a133 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/project.pbxproj +++ b/Cores/Mednafen/PVMednafen.xcodeproj/project.pbxproj @@ -607,7 +607,6 @@ B32CF1D1219240770058E2E7 /* libneogeopocket-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B32CF17821923F520058E2E7 /* libneogeopocket-tvOS.a */; }; B32CF1D2219240770058E2E7 /* libpce-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B32CF19F21923F790058E2E7 /* libpce-tvOS.a */; }; B32CF1D3219240770058E2E7 /* libpcefast-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B32CF1B121923F7F0058E2E7 /* libpcefast-tvOS.a */; }; - B32CF1D4219240770058E2E7 /* libsegamastersystem-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B32CF1C421923F850058E2E7 /* libsegamastersystem-tvOS.a */; }; B32CF1D5219240770058E2E7 /* libvirtualboy-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B32CF15521923F330058E2E7 /* libvirtualboy-tvOS.a */; }; B32CF1D6219241EE0058E2E7 /* libhwvideo-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C34C21919C1C009F4EDC /* libhwvideo-tvOS.a */; }; B32CF1D7219241EE0058E2E7 /* libmednafen-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C42A21919D73009F4EDC /* libmednafen-tvOS.a */; }; @@ -913,7 +912,6 @@ B3335282207B02EB0036A448 /* libpce-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33351CB207B01860036A448 /* libpce-iOS.a */; }; B3335283207B02EB0036A448 /* libpcefast-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33351D8207B01970036A448 /* libpcefast-iOS.a */; }; B3335284207B02EB0036A448 /* libpcfx-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33351FC207B020C0036A448 /* libpcfx-iOS.a */; }; - B3335285207B02EB0036A448 /* libsegamastersystem-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33351E5207B01C60036A448 /* libsegamastersystem-iOS.a */; }; B3335286207B02F70036A448 /* c65c02.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAC0020736EE80097D86F /* c65c02.cpp */; }; B3335287207B02F70036A448 /* cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAC0120736EE80097D86F /* cart.cpp */; }; B3335288207B02F70036A448 /* memmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABEA20736EE80097D86F /* memmap.cpp */; }; @@ -1063,6 +1061,10 @@ B35D6689218185710005A992 /* v810_fp_ops.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE0020736EE90097D86F /* v810_fp_ops.cpp */; }; B35D6691218185A60005A992 /* libhwcpu-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B35D6690218185710005A992 /* libhwcpu-tvOS.a */; }; B36CBFED2039819100728482 /* PVMednafen.h in Headers */ = {isa = PBXBuildFile; fileRef = B340E4641E08887700AD0E8B /* PVMednafen.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B393F252277C0C1C0097F71C /* m68k.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADEB20736EE90097D86F /* m68k.cpp */; }; + B393F260277C0C4E0097F71C /* m68k.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADEB20736EE90097D86F /* m68k.cpp */; }; + B393F261277C109C0097F71C /* libhwcpu-m68k-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B393F251277C0BF70097F71C /* libhwcpu-m68k-iOS.a */; }; + B393F262277C10A40097F71C /* libhwcpu-m68k-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B393F25F277C0C340097F71C /* libhwcpu-m68k-tvOS.a */; }; B3AAB425207379230097D86F /* stubs.mm in Sources */ = {isa = PBXBuildFile; fileRef = 94454E3B17852E61006C057B /* stubs.mm */; }; B3AAB43D2073820C0097D86F /* MednafenGameCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 824088350FFDDCF400F0FE7D /* MednafenGameCore.mm */; }; B3AAB43F2073820C0097D86F /* MednafenMultiDisc.m in Sources */ = {isa = PBXBuildFile; fileRef = B3CF44B72039B64A005BEB14 /* MednafenMultiDisc.m */; }; @@ -1241,7 +1243,6 @@ C6E1B64C25AAA042007C3CF1 /* rom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1E720736EEA0097D86F /* rom.cpp */; }; C6E1B64F25AAA24A007C3CF1 /* DSPUtility.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2CC24880BF3000A3922 /* DSPUtility.cpp */; }; C6E1B65125AAA24A007C3CF1 /* SwiftResampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2CD24880BF3000A3922 /* SwiftResampler.cpp */; }; - C6E1B65225AAA3EA007C3CF1 /* m68k.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADEB20736EE90097D86F /* m68k.cpp */; }; C6E1B66F25AAC1B1007C3CF1 /* scu_dsp_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB17B20736EEA0097D86F /* scu_dsp_misc.cpp */; }; C6E1B67025AAC1B1007C3CF1 /* scu_dsp_jmp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB18020736EEA0097D86F /* scu_dsp_jmp.cpp */; }; C6E1B67125AAC1B1007C3CF1 /* 3dpad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB18920736EEA0097D86F /* 3dpad.cpp */; }; @@ -1275,7 +1276,6 @@ C6E1B68D25AAC1B2007C3CF1 /* cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB21520736EEB0097D86F /* cart.cpp */; }; C6E1B68E25AAC1B2007C3CF1 /* vdp1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB21620736EEB0097D86F /* vdp1.cpp */; }; C6E1B68F25AAC1B2007C3CF1 /* scu_dsp_gen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB21820736EEB0097D86F /* scu_dsp_gen.cpp */; }; - C6E1B69225AAC1FC007C3CF1 /* m68k.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADEB20736EE90097D86F /* m68k.cpp */; }; C6E1B69325AAC243007C3CF1 /* DSPUtility.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2CC24880BF3000A3922 /* DSPUtility.cpp */; }; C6E1B69425AAC243007C3CF1 /* SwiftResampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2CD24880BF3000A3922 /* SwiftResampler.cpp */; }; C6E1B69525AAC5A3007C3CF1 /* libsaturn-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C6E1B66E25AAC123007C3CF1 /* libsaturn-iOS.a */; }; @@ -1457,6 +1457,13 @@ remoteGlobalIDString = B324C5E02191AD13009F4EDC; remoteInfo = "wonderswan-tvOS"; }; + B31737FD2783F8AF002D3ACD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 089C1669FE841209C02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B393F245277C0BF70097F71C; + remoteInfo = "hwcpu-m68k-iOS"; + }; B34AB5872106DF8400C45F09 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 089C1669FE841209C02AAC07 /* Project object */; @@ -1646,6 +1653,13 @@ remoteGlobalIDString = B35D6684218185710005A992; remoteInfo = "hwcpu-tvOS"; }; + B36C7D5227AE10F600715677 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 089C1669FE841209C02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B393F253277C0C340097F71C; + remoteInfo = "hwcpu-m68k-tvOS"; + }; C6E1B64925AA9DC1007C3CF1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 089C1669FE841209C02AAC07 /* Project object */; @@ -2138,6 +2152,24 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + B393F24C277C0BF70097F71C /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B393F25A277C0C340097F71C /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; B3FBDEF6207FF0E300E661D1 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -2314,6 +2346,8 @@ B34CB0EC2274BA81009134B4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; B3547B5F205858EF00CFF7D8 /* Core.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; B35D6690218185710005A992 /* libhwcpu-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libhwcpu-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B393F251277C0BF70097F71C /* libhwcpu-m68k-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libhwcpu-m68k-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B393F25F277C0C340097F71C /* libhwcpu-m68k-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libhwcpu-m68k-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B3A74C8C20522B86001D3D2E /* MednafenGameCore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MednafenGameCore.swift; sourceTree = ""; }; B3AA9D6A20736B030097D86F /* README.PORTING */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.PORTING; sourceTree = ""; }; B3AA9D6B20736B030097D86F /* acinclude.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = acinclude.m4; sourceTree = ""; }; @@ -4297,6 +4331,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B393F261277C109C0097F71C /* libhwcpu-m68k-iOS.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4391,7 +4426,6 @@ B3335282207B02EB0036A448 /* libpce-iOS.a in Frameworks */, B3335283207B02EB0036A448 /* libpcefast-iOS.a in Frameworks */, B3335284207B02EB0036A448 /* libpcfx-iOS.a in Frameworks */, - B3335285207B02EB0036A448 /* libsegamastersystem-iOS.a in Frameworks */, B333519F207B01230036A448 /* libgb-iOS.a in Frameworks */, B33350AE207B00080036A448 /* libnes-iOS.a in Frameworks */, B333509C207AFF3F0036A448 /* libvirtualboy-iOS.a in Frameworks */, @@ -4417,7 +4451,6 @@ B32CF1D1219240770058E2E7 /* libneogeopocket-tvOS.a in Frameworks */, B32CF1D2219240770058E2E7 /* libpce-tvOS.a in Frameworks */, B32CF1D3219240770058E2E7 /* libpcefast-tvOS.a in Frameworks */, - B32CF1D4219240770058E2E7 /* libsegamastersystem-tvOS.a in Frameworks */, B32CF1D5219240770058E2E7 /* libvirtualboy-tvOS.a in Frameworks */, B32CF14721923F030058E2E7 /* libhwaudio-tvOS.a in Frameworks */, B324C62521920724009F4EDC /* libgba-tvOS.a in Frameworks */, @@ -4442,6 +4475,21 @@ runOnlyForDeploymentPostprocessing = 0; }; B35D668B218185710005A992 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B393F262277C10A40097F71C /* libhwcpu-m68k-tvOS.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B393F24B277C0BF70097F71C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B393F259277C0C340097F71C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -4613,6 +4661,8 @@ B32CF1CE219240270058E2E7 /* libhwmisc-tvOS.a */, C6E1B62825AA9C15007C3CF1 /* libsaturn-tvOS.a */, C6E1B66E25AAC123007C3CF1 /* libsaturn-iOS.a */, + B393F251277C0BF70097F71C /* libhwcpu-m68k-iOS.a */, + B393F25F277C0C340097F71C /* libhwcpu-m68k-tvOS.a */, ); name = Products; sourceTree = ""; @@ -8332,6 +8382,7 @@ buildRules = ( ); dependencies = ( + B31737FE2783F8AF002D3ACD /* PBXTargetDependency */, ); name = "hwcpu-iOS"; productName = hwcpu; @@ -8593,12 +8644,47 @@ buildRules = ( ); dependencies = ( + B36C7D5327AE10F600715677 /* PBXTargetDependency */, ); name = "hwcpu-tvOS"; productName = hwcpu; productReference = B35D6690218185710005A992 /* libhwcpu-tvOS.a */; productType = "com.apple.product-type.library.static"; }; + B393F245277C0BF70097F71C /* hwcpu-m68k-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B393F24D277C0BF70097F71C /* Build configuration list for PBXNativeTarget "hwcpu-m68k-iOS" */; + buildPhases = ( + B393F246277C0BF70097F71C /* Sources */, + B393F24B277C0BF70097F71C /* Frameworks */, + B393F24C277C0BF70097F71C /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "hwcpu-m68k-iOS"; + productName = hwcpu; + productReference = B393F251277C0BF70097F71C /* libhwcpu-m68k-iOS.a */; + productType = "com.apple.product-type.library.static"; + }; + B393F253277C0C340097F71C /* hwcpu-m68k-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B393F25B277C0C340097F71C /* Build configuration list for PBXNativeTarget "hwcpu-m68k-tvOS" */; + buildPhases = ( + B393F254277C0C340097F71C /* Sources */, + B393F259277C0C340097F71C /* Frameworks */, + B393F25A277C0C340097F71C /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "hwcpu-m68k-tvOS"; + productName = hwcpu; + productReference = B393F25F277C0C340097F71C /* libhwcpu-m68k-tvOS.a */; + productType = "com.apple.product-type.library.static"; + }; B3FBDEF7207FF0E300E661D1 /* snes-iOS */ = { isa = PBXNativeTarget; buildConfigurationList = B3FBDF00207FF0E400E661D1 /* Build configuration list for PBXNativeTarget "snes-iOS" */; @@ -8843,6 +8929,8 @@ B324C34421919C1C009F4EDC /* hwvideo-tvOS */, B33352C0207B06730036A448 /* hwcpu-iOS */, B35D6684218185710005A992 /* hwcpu-tvOS */, + B393F245277C0BF70097F71C /* hwcpu-m68k-iOS */, + B393F253277C0C340097F71C /* hwcpu-m68k-tvOS */, B33352CD207B067F0036A448 /* hwmisc-iOS */, B32CF1C5219240270058E2E7 /* hwmisc-tvOS */, B333546E207B1B500036A448 /* cdrom-iOS */, @@ -10044,7 +10132,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C6E1B69225AAC1FC007C3CF1 /* m68k.cpp in Sources */, B33352E8207B07C20036A448 /* z80_ops.cpp in Sources */, B33352E0207B06D70036A448 /* v810_cpu.cpp in Sources */, B33352E9207B07FD0036A448 /* z80.cpp in Sources */, @@ -10259,7 +10346,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C6E1B65225AAA3EA007C3CF1 /* m68k.cpp in Sources */, B35D6686218185710005A992 /* z80_ops.cpp in Sources */, B35D6687218185710005A992 /* v810_cpu.cpp in Sources */, B35D6688218185710005A992 /* z80.cpp in Sources */, @@ -10267,6 +10353,22 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + B393F246277C0BF70097F71C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B393F252277C0C1C0097F71C /* m68k.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B393F254277C0C340097F71C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B393F260277C0C4E0097F71C /* m68k.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; B3FBDEF4207FF0E300E661D1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -10627,6 +10729,11 @@ target = B324C5E02191AD13009F4EDC /* wonderswan-tvOS */; targetProxy = 11389FC8248D4F6B0089CBFF /* PBXContainerItemProxy */; }; + B31737FE2783F8AF002D3ACD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B393F245277C0BF70097F71C /* hwcpu-m68k-iOS */; + targetProxy = B31737FD2783F8AF002D3ACD /* PBXContainerItemProxy */; + }; B34AB5882106DF8400C45F09 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = B333502C207AFBA30036A448 /* psx-iOS */; @@ -10762,6 +10869,11 @@ target = B35D6684218185710005A992 /* hwcpu-tvOS */; targetProxy = B35D6692218185FF0005A992 /* PBXContainerItemProxy */; }; + B36C7D5327AE10F600715677 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B393F253277C0C340097F71C /* hwcpu-m68k-tvOS */; + targetProxy = B36C7D5227AE10F600715677 /* PBXContainerItemProxy */; + }; C6E1B64A25AA9DC1007C3CF1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = C6E1B5A925AA9C15007C3CF1 /* saturn-tvOS */; @@ -10948,7 +11060,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 2; + GCC_OPTIMIZATION_LEVEL = s; GCC_PREPROCESSOR_DEFINITIONS = ( WANT_GB_EMU, WANT_GBA_EMU, @@ -11597,7 +11709,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 2; + GCC_OPTIMIZATION_LEVEL = s; GCC_PREPROCESSOR_DEFINITIONS = ( WANT_GB_EMU, WANT_GBA_EMU, @@ -16321,6 +16433,188 @@ }; name = Release; }; + B393F24E277C0BF70097F71C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + 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; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; + TARGETED_DEVICE_FAMILY = "1,2,6"; + }; + name = Debug; + }; + B393F24F277C0BF70097F71C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + 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; + ENABLE_NS_ASSERTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 1; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; + TARGETED_DEVICE_FAMILY = "1,2,6"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B393F250277C0BF70097F71C /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + 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; + ENABLE_NS_ASSERTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 1; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; + TARGETED_DEVICE_FAMILY = "1,2,6"; + VALIDATE_PRODUCT = YES; + }; + name = Archive; + }; + B393F25C277C0C340097F71C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + 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; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Debug; + }; + B393F25D277C0C340097F71C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + 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; + ENABLE_NS_ASSERTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 1; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; + TARGETED_DEVICE_FAMILY = 3; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B393F25E277C0C340097F71C /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + 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; + ENABLE_NS_ASSERTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 1; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; + TARGETED_DEVICE_FAMILY = 3; + VALIDATE_PRODUCT = YES; + }; + name = Archive; + }; B3FBDEFE207FF0E300E661D1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -17236,6 +17530,26 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + B393F24D277C0BF70097F71C /* Build configuration list for PBXNativeTarget "hwcpu-m68k-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B393F24E277C0BF70097F71C /* Debug */, + B393F24F277C0BF70097F71C /* Release */, + B393F250277C0BF70097F71C /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B393F25B277C0C340097F71C /* Build configuration list for PBXNativeTarget "hwcpu-m68k-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B393F25C277C0C340097F71C /* Debug */, + B393F25D277C0C340097F71C /* Release */, + B393F25E277C0C340097F71C /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; B3FBDF00207FF0E400E661D1 /* Build configuration list for PBXNativeTarget "snes-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Cores/Mupen64Plus/Compatibility/SDL/SDL_opengles2.h b/Cores/Mupen64Plus/Compatibility/SDL/SDL_opengles2.h index 082527855d..0fdf894ba9 100644 --- a/Cores/Mupen64Plus/Compatibility/SDL/SDL_opengles2.h +++ b/Cores/Mupen64Plus/Compatibility/SDL/SDL_opengles2.h @@ -28,14 +28,15 @@ //#ifdef __IPHONEOS__ #include -#if !TARGET_OS_MACCATALYST -//#import -#include -#include -//#import -#else + +#if TARGET_OS_MACCATALYST +#include +#include #include #include +#else +#include +#include #endif //#else //#include diff --git a/Cores/Mupen64Plus/Compatibility/main.m b/Cores/Mupen64Plus/Compatibility/main.m index 0abed689f6..db93669bf6 100644 --- a/Cores/Mupen64Plus/Compatibility/main.m +++ b/Cores/Mupen64Plus/Compatibility/main.m @@ -36,16 +36,19 @@ void new_vi(void) struct r4300_core* r4300 = &g_dev.r4300; - if (g_gs_vi_counter < 60) - { + if (g_gs_vi_counter < 60) { if (g_gs_vi_counter == 0) cheat_apply_cheats(&g_cheat_ctx, r4300, ENTRY_BOOT); g_gs_vi_counter++; - } - else - { + } else { cheat_apply_cheats(&g_cheat_ctx, r4300, ENTRY_VI); } + + // TODO: Maybe fix speed/pause here? +// apply_speed_limiter(); +// main_check_inputs(); + +// pause_loop(); [current videoInterrupt]; } diff --git a/Cores/Mupen64Plus/Config.xcconfig b/Cores/Mupen64Plus/Config.xcconfig index 70391db3eb..ca7444d93a 100644 --- a/Cores/Mupen64Plus/Config.xcconfig +++ b/Cores/Mupen64Plus/Config.xcconfig @@ -10,6 +10,12 @@ GCC_PREPROCESSOR_DEFINITIONS[arch=*] = $(inherited) MUPENPLUSAPI=1 TXFILTER_LIB=1 GL_SILENCE_DEPRECATION=1 OTHER_CFLAGS[arch=*] = $(inherited) -DGCC -pthread -fPIC -D__unix__ -DVFP_HARD=1 -DNO_ASM -DMUPENPLUSAPI=1 -DTXFILTER_LIB=1 -DM64P_PLUGIN_PROTOTYPES=1 -DPROVENANCE +//GCC_PREPROCESSOR_DEFINITIONS[arch=arm64] = $(inherited) NEW_DYNAREC=3 DYNAREC=3 +//GCC_PREPROCESSOR_DEFINITIONS[arch=armv7s] = $(inherited) NEW_DYNAREC=3 +//GCC_PREPROCESSOR_DEFINITIONS[arch=armv7] = $(inherited) NEW_DYNAREC=3 +GCC_PREPROCESSOR_DEFINITIONS[arch=x86_64] = $(inherited) NO_ASM=0 +//GCC_PREPROCESSOR_DEFINITIONS[arch=x86_64] = $(inherited) NEW_DYNAREC=2 NO_ASM=0 + // MacOS Catalyst GCC_PREPROCESSOR_DEFINITIONS[sdk=macosx*] = $(inherited) OS_MAC_OS_X=1 SDL_VIDEO_OPENGL=1 OTHER_CFLAGS[sdk=macosx*] = $(inherited) -fno-strict-aliasing -fvisibility=hidden -DGCC -pthread -fPIC -D__unix__ -D__VEC4_OPT -D__NEON_OPT -DX86_ASM @@ -17,7 +23,7 @@ EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*] = $(inherited) 3DMathNeon.cpp gSPNeon.cp // iPhone GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) OS_IOS GLESX USE_GLES=1 NEON=1 SDL_VIDEO_OPENGL_ES2=1 -OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) -DOS_IOS -mfpu=neon +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) -DOS_IOS -mfpu=neon -D__VEC4_OPT -D__NEON_OPT // Simulator GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) OS_IOS GLESX USE_GLES=1 NEON=1 SDL_VIDEO_OPENGL_ES2=1 @@ -25,7 +31,7 @@ OTHER_CFLAGS[sdk=iphonesimulator*] = $(inherited) -DOS_IOS // tvOS Device GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) OS_IOS GLESX USE_GLES=1 NEON=1 SDL_VIDEO_OPENGL_ES2=1 -OTHER_CFLAGS[sdk=appletvos*] = $(inherited) -DOS_IOS -mfpu=neon +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) -DOS_IOS -mfpu=neon -D__VEC4_OPT // tvOS Simulator GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) OS_IOS GLESX USE_GLES=1 NEON=1 SDL_VIDEO_OPENGL_ES2=1 diff --git a/Cores/Mupen64Plus/MupenGameCore+Audio.swift b/Cores/Mupen64Plus/MupenGameCore+Audio.swift new file mode 100644 index 0000000000..031dc38f71 --- /dev/null +++ b/Cores/Mupen64Plus/MupenGameCore+Audio.swift @@ -0,0 +1,17 @@ +// +// MupenGameCore+Audio.swift +// PVMupen64Plus +// +// Created by Joseph Mattiello on 1/24/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation +import PVSupport + +@objc +public extension MupenGameCore { + override var channelCount: UInt { 2 } + override var audioSampleRate: Double { self.mupenSampleRate } + override var frameInterval: TimeInterval { isNTSC ? 60 : 50 } +} diff --git a/Cores/Mupen64Plus/MupenGameCore+Cheats.h b/Cores/Mupen64Plus/MupenGameCore+Cheats.h new file mode 100644 index 0000000000..efd7ef8248 --- /dev/null +++ b/Cores/Mupen64Plus/MupenGameCore+Cheats.h @@ -0,0 +1,17 @@ +// +// MupenGameCore+Controls.h +// MupenGameCore +// +// Created by Joseph Mattiello on 1/26/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MupenGameCore (Cheats) +- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled; +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/Mupen64Plus/MupenGameCore+Cheats.m b/Cores/Mupen64Plus/MupenGameCore+Cheats.m new file mode 100644 index 0000000000..28cf178383 --- /dev/null +++ b/Cores/Mupen64Plus/MupenGameCore+Cheats.m @@ -0,0 +1,67 @@ + +//#import "MupenGameCore.h" +#import + +#import "api/config.h" +#import "api/m64p_common.h" +#import "api/m64p_config.h" +#import "api/m64p_frontend.h" +#import "api/m64p_vidext.h" +#import "api/callbacks.h" +#import "osal/dynamiclib.h" +#import "Plugins/Core/src/main/version.h" +#import "Plugins/Core/src/plugin/plugin.h" + +@implementation MupenGameCore (Cheats) + +- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +// Need to fix ambigious main.h inclusion +// // Sanitize +// code = [code stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; +// +// // Remove any spaces +// code = [code stringByReplacingOccurrencesOfString:@" " withString:@""]; +// +// NSString *singleCode; +// NSArray *multipleCodes = [code componentsSeparatedByString:@"+"]; +// m64p_cheat_code *gsCode = (m64p_cheat_code*) calloc([multipleCodes count], sizeof(m64p_cheat_code)); +// int codeCounter = 0; +// +// for (singleCode in multipleCodes) +// { +// if ([singleCode length] == 12) // GameShark +// { +// // GameShark N64 format: XXXXXXXX YYYY +// NSString *address = [singleCode substringWithRange:NSMakeRange(0, 8)]; +// NSString *value = [singleCode substringWithRange:NSMakeRange(8, 4)]; +// +// // Convert GS hex to int +// unsigned int outAddress, outValue; +// NSScanner* scanAddress = [NSScanner scannerWithString:address]; +// NSScanner* scanValue = [NSScanner scannerWithString:value]; +// [scanAddress scanHexInt:&outAddress]; +// [scanValue scanHexInt:&outValue]; +// +// gsCode[codeCounter].address = outAddress; +// gsCode[codeCounter].value = outValue; +// codeCounter++; +// } +// } +// +// // Update address directly if code needs GS button pressed +// if ((gsCode[0].address & 0xFF000000) == 0x88000000 || (gsCode[0].address & 0xFF000000) == 0xA8000000) +// { +// *(unsigned char *)((g_rdram + ((gsCode[0].address & 0xFFFFFF)^S8))) = (unsigned char)gsCode[0].value; // Update 8-bit address +// } +// else if ((gsCode[0].address & 0xFF000000) == 0x89000000 || (gsCode[0].address & 0xFF000000) == 0xA9000000) +// { +// *(unsigned short *)((g_rdram + ((gsCode[0].address & 0xFFFFFF)^S16))) = (unsigned short)gsCode[0].value; // Update 16-bit address +// } +// // Else add code as normal +// else +// { +// enabled ? CoreAddCheat([code UTF8String], gsCode, codeCounter+1) : CoreCheatEnabled([code UTF8String], 0); +// } +} + +@end diff --git a/Cores/Mupen64Plus/MupenGameCore+Controls.h b/Cores/Mupen64Plus/MupenGameCore+Controls.h new file mode 100644 index 0000000000..159d04cdc0 --- /dev/null +++ b/Cores/Mupen64Plus/MupenGameCore+Controls.h @@ -0,0 +1,34 @@ +// +// MupenGameCore+Controls.h +// MupenGameCore +// +// Created by Joseph Mattiello on 1/26/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import +#import "Plugins/Core/src/plugin/plugin.h" + +NS_ASSUME_NONNULL_BEGIN + +void MupenInitiateControllers (CONTROL_INFO ControlInfo); +void MupenGetKeys(int Control, BUTTONS *Keys); +void MupenControllerCommand(int Control, unsigned char *Command); + +@interface MupenGameCore (Controls) + +- (void)initControllBuffers; +- (void)pollControllers; + +#pragma mark - Control + +- (void)didPushN64Button:(enum PVN64Button)button forPlayer:(NSInteger)player; +- (void)didReleaseN64Button:(enum PVN64Button)button forPlayer:(NSInteger)player; +- (void)didMoveN64JoystickDirection:(enum PVN64Button)button withValue:(CGFloat)value forPlayer:(NSInteger)player; +- (void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player; + +- (void)didPush:(NSInteger)button forPlayer:(NSInteger)player; +- (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player; +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/Mupen64Plus/MupenGameCore+Controls.m b/Cores/Mupen64Plus/MupenGameCore+Controls.m new file mode 100644 index 0000000000..dbc9cceec3 --- /dev/null +++ b/Cores/Mupen64Plus/MupenGameCore+Controls.m @@ -0,0 +1,384 @@ + +#import "MupenGameCore+Controls.h" +#import + +#import "api/config.h" +#import "api/m64p_common.h" +#import "api/m64p_config.h" +#import "api/m64p_frontend.h" +#import "api/m64p_vidext.h" +#import "api/callbacks.h" +#import "osal/dynamiclib.h" +#import "Plugins/Core/src/main/version.h" +#import "Plugins/Core/src/plugin/plugin.h" +//#import "rom.h" +//#import "savestates.h" +//#import "memory.h" +//#import "mupen64plus-core/src/main/main.h" +@import Dispatch; +@import PVSupport; +#if TARGET_OS_MACCATALYST +@import OpenGL.GL3; +@import GLUT; +#else +@import OpenGLES.ES3; +@import GLKit; +#endif + +#import + +void MupenGetKeys(int Control, BUTTONS *Keys) { + GET_CURRENT_AND_RETURN(); + + if (Control == 0) { + [current pollControllers]; + } + + Keys->U_DPAD = current->padData[Control][PVN64ButtonDPadUp]; + Keys->D_DPAD = current->padData[Control][PVN64ButtonDPadDown]; + Keys->L_DPAD = current->padData[Control][PVN64ButtonDPadLeft]; + Keys->R_DPAD = current->padData[Control][PVN64ButtonDPadRight]; + + Keys->START_BUTTON = current->padData[Control][PVN64ButtonStart]; + + Keys->Z_TRIG = current->padData[Control][PVN64ButtonZ]; + + Keys->B_BUTTON = current->padData[Control][PVN64ButtonB]; + Keys->A_BUTTON = current->padData[Control][PVN64ButtonA]; + + Keys->L_CBUTTON = current->padData[Control][PVN64ButtonCLeft]; + Keys->R_CBUTTON = current->padData[Control][PVN64ButtonCRight]; + Keys->D_CBUTTON = current->padData[Control][PVN64ButtonCDown]; + Keys->U_CBUTTON = current->padData[Control][PVN64ButtonCUp]; + + Keys->L_TRIG = current->padData[Control][PVN64ButtonL]; + Keys->R_TRIG = current->padData[Control][PVN64ButtonR]; + + Keys->X_AXIS = current->xAxis[Control]; + Keys->Y_AXIS = current->yAxis[Control]; +} + +void MupenInitiateControllers (CONTROL_INFO ControlInfo) { + GET_CURRENT_OR_RETURN(); + + bool p2Present = current.controller2 != nil || current.dualJoystick; + + ControlInfo.Controls[0].Present = 1; + ControlInfo.Controls[0].Plugin = current->controllerMode[0]; + ControlInfo.Controls[1].Present = p2Present; + ControlInfo.Controls[1].Plugin = current->controllerMode[1]; + ControlInfo.Controls[2].Present = current.controller3 != nil; + ControlInfo.Controls[2].Plugin = current->controllerMode[2]; + ControlInfo.Controls[3].Present = current.controller4 != nil || (current.controller3 != nil && current.dualJoystick); + ControlInfo.Controls[3].Plugin = current->controllerMode[3]; +} + +/****************************************************************** + Function: ControllerCommand + Purpose: To process the raw data that has just been sent to a + specific controller. + input: - Controller Number (0 to 3) and -1 signalling end of + processing the pif ram. + - Pointer of data to be processed. + output: none + note: This function is only needed if the DLL is allowing raw + data, or the plugin is set to raw + the data that is being processed looks like this: + initilize controller: 01 03 00 FF FF FF + read controller: 01 04 01 FF FF FF FF + *******************************************************************/ +void MupenControllerCommand(int Control, unsigned char *Command) { + // Some stuff from n-rage plugin +#define RD_GETSTATUS 0x00 // get status +#define RD_READKEYS 0x01 // read button values +#define RD_READPAK 0x02 // read from controllerpack +#define RD_WRITEPAK 0x03 // write to controllerpack +#define RD_RESETCONTROLLER 0xff // reset controller +#define RD_READEEPROM 0x04 // read eeprom +#define RD_WRITEEPROM 0x05 // write eeprom + +#define PAK_IO_RUMBLE 0xC000 // the address where rumble-commands are sent to + + GET_CURRENT_OR_RETURN(); + + unsigned char *Data = &Command[5]; + + if (Control == -1) + return; + + switch (Command[2]) + { + case RD_GETSTATUS: + break; + case RD_READKEYS: + break; + case RD_READPAK: { +// if (controller[Control].control->Plugin == PLUGIN_RAW) +// { + unsigned int dwAddress = (Command[3] << 8) + (Command[4] & 0xE0); + + if(( dwAddress >= 0x8000 ) && ( dwAddress < 0x9000 ) ) + memset( Data, 0x80, 32 ); + else + memset( Data, 0x00, 32 ); + + Data[32] = DataCRC( Data, 32 ); +// } + break; + } + case RD_WRITEPAK: { +// if (controller[Control].control->Plugin == PLUGIN_RAW) +// { + unsigned int dwAddress = (Command[3] << 8) + (Command[4] & 0xE0); +// Data[32] = DataCRC( Data, 32 ); +// + if ((dwAddress == PAK_IO_RUMBLE) )//&& (rumble.set_rumble_state)) + { + if (*Data) + { + [current rumble]; +// AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); +// rumble.set_rumble_state(Control, RETRO_RUMBLE_WEAK, 0xFFFF); +// rumble.set_rumble_state(Control, RETRO_RUMBLE_STRONG, 0xFFFF); + } + else + { +// rumble.set_rumble_state(Control, RETRO_RUMBLE_WEAK, 0); +// rumble.set_rumble_state(Control, RETRO_RUMBLE_STRONG, 0); + } + } +// } + + break; + } + case RD_RESETCONTROLLER: + break; + case RD_READEEPROM: + break; + case RD_WRITEEPROM: + break; + } +} + + +//NSString *MupenControlNames[] = { +// @"N64_DPadU", @"N64_DPadD", @"N64_DPadL", @"N64_DPadR", +// @"N64_CU", @"N64_CD", @"N64_CL", @"N64_CR", +// @"N64_B", @"N64_A", @"N64_R", @"N64_L", @"N64_Z", @"N64_Start" +//}; // FIXME: missing: joypad X, joypad Y, mempak switch, rumble switch + +#define N64_ANALOG_MAX 80 + +@implementation MupenGameCore (Controls) + +-(void)setMode:(NSInteger)mode forController:(NSInteger)controller { + NSAssert(controller < 4, @"Out of index"); + self->controllerMode[controller] = mode; +} + +- (void)pollController:(GCController* _Nullable)controller forIndex:(NSInteger)playerIndex { + if (!controller) { + return; + } + if (LIKELY(controller.extendedGamepad)) { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCDualSenseGamepad *dualSense = [gamepad isKindOfClass:[GCDualSenseGamepad class]] ? gamepad : nil; + + GCControllerDirectionPad *dpad = [gamepad dpad]; + + BOOL dualModeOverrides = self.dualJoystick && (playerIndex == 0 || playerIndex == 2); + + // Left Joystick → Joystick + xAxis[playerIndex] = gamepad.leftThumbstick.xAxis.value * N64_ANALOG_MAX; + yAxis[playerIndex] = gamepad.leftThumbstick.yAxis.value * N64_ANALOG_MAX; + + // MFi-D-Pad → D-Pad + padData[playerIndex][PVN64ButtonDPadUp] = dpad.up.isPressed; + padData[playerIndex][PVN64ButtonDPadDown] = dpad.down.isPressed; + padData[playerIndex][PVN64ButtonDPadLeft] = dpad.left.isPressed; + padData[playerIndex][PVN64ButtonDPadRight] = dpad.right.isPressed; + + if(dualModeOverrides) { + // MFi-R2 → P2.Z + padData[playerIndex+1][PVN64ButtonZ] = gamepad.rightTrigger.isPressed; + + // MFi-L2 → P1.Z + padData[playerIndex][PVN64ButtonZ] = gamepad.leftTrigger.isPressed; + + if (dualSense) { + padData[playerIndex][PVN64ButtonStart] = dualSense.touchpadButton.touched; + } + } else { + if (dualSense) { + // DualShock-TouchPad → Start + padData[playerIndex][PVN64ButtonStart] = dualSense.touchpadButton.touched; + // DualShock-Either Trigger → Z + padData[playerIndex][PVN64ButtonZ] = gamepad.leftTrigger.isPressed || gamepad.rightTrigger.isPressed; + } else { + // MFi-L2 → Start + padData[playerIndex][PVN64ButtonStart] = gamepad.leftTrigger.isPressed; + + // MFi-R2 → Z + padData[playerIndex][PVN64ButtonZ] = gamepad.rightTrigger.isPressed; + } + } + + // If MFi-L2 is not pressed… MFi-L1 → L + if (!gamepad.rightShoulder.isPressed) { + padData[playerIndex][PVN64ButtonL] = gamepad.leftShoulder.isPressed; + } + + // If MFi-L1 is not pressed… MFi-R1 → R + if (!gamepad.leftShoulder.isPressed) { + padData[playerIndex][PVN64ButtonR] = gamepad.rightShoulder.isPressed; + } + // If not C-Mode… MFi-X,A → A,B MFi-Y,B → C←,C↓ + if (!(gamepad.leftShoulder.isPressed && gamepad.rightShoulder.isPressed)) { + padData[playerIndex][PVN64ButtonA] = gamepad.buttonA.isPressed; + padData[playerIndex][PVN64ButtonB] = gamepad.buttonX.isPressed; + padData[playerIndex][PVN64ButtonCLeft] = gamepad.buttonY.isPressed; + padData[playerIndex][PVN64ButtonCDown] = gamepad.buttonB.isPressed; + } + + //C-Mode: MFi-X,Y,A,B -> C←,C↑,C↓,C→ + if (gamepad.leftShoulder.isPressed && gamepad.rightShoulder.isPressed) { + padData[playerIndex][PVN64ButtonCLeft] = gamepad.buttonX.isPressed; + padData[playerIndex][PVN64ButtonCUp] = gamepad.buttonY.isPressed; + padData[playerIndex][PVN64ButtonCDown] = gamepad.buttonA.isPressed; + padData[playerIndex][PVN64ButtonCRight] = gamepad.buttonB.isPressed; + } + + // Right Joystick → C Buttons + if(dualModeOverrides) { + xAxis[playerIndex+1] = gamepad.rightThumbstick.xAxis.value * N64_ANALOG_MAX; + yAxis[playerIndex+1] = gamepad.rightThumbstick.yAxis.value * N64_ANALOG_MAX; + } else { + float rightJoystickDeadZone = 0.45; + if (!(gamepad.leftShoulder.isPressed && gamepad.rightShoulder.isPressed) && !(gamepad.buttonY.isPressed || gamepad.buttonB.isPressed)) { + padData[playerIndex][PVN64ButtonCUp] = gamepad.rightThumbstick.up.value > rightJoystickDeadZone; + padData[playerIndex][PVN64ButtonCDown] = gamepad.rightThumbstick.down.value > rightJoystickDeadZone; + padData[playerIndex][PVN64ButtonCLeft] = gamepad.rightThumbstick.left.value > rightJoystickDeadZone; + padData[playerIndex][PVN64ButtonCRight] = gamepad.rightThumbstick.right.value > rightJoystickDeadZone; + } + } + } else if ([controller gamepad]) { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + if (!gamepad.rightShoulder.isPressed) { + // Default + xAxis[playerIndex] = (dpad.left.value > 0.5 ? -N64_ANALOG_MAX : 0) + (dpad.right.value > 0.5 ? N64_ANALOG_MAX : 0); + yAxis[playerIndex] = (dpad.down.value > 0.5 ? -N64_ANALOG_MAX : 0) + (dpad.up.value > 0.5 ? N64_ANALOG_MAX : 0); + + padData[playerIndex][PVN64ButtonA] = gamepad.buttonA.isPressed; + padData[playerIndex][PVN64ButtonB] = gamepad.buttonX.isPressed; + + padData[playerIndex][PVN64ButtonCLeft] = gamepad.buttonY.isPressed; + padData[playerIndex][PVN64ButtonCDown] = gamepad.buttonB.isPressed; + } else { + // Alt-Mode + padData[playerIndex][PVN64ButtonDPadUp] = dpad.up.isPressed; + padData[playerIndex][PVN64ButtonDPadDown] = dpad.down.isPressed; + padData[playerIndex][PVN64ButtonDPadLeft] = dpad.left.isPressed; + padData[playerIndex][PVN64ButtonDPadRight] = dpad.right.isPressed; + + padData[playerIndex][PVN64ButtonCLeft] = gamepad.buttonX.isPressed; + padData[playerIndex][PVN64ButtonCUp] = gamepad.buttonY.isPressed; + padData[playerIndex][PVN64ButtonCDown] = gamepad.buttonA.isPressed; + padData[playerIndex][PVN64ButtonCRight] = gamepad.buttonB.isPressed; + } + + padData[playerIndex][PVN64ButtonZ] = gamepad.leftShoulder.isPressed; + padData[playerIndex][PVN64ButtonR] = gamepad.rightShoulder.isPressed; + + } +#if TARGET_OS_TV + else if ([controller microGamepad]) { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + xAxis[playerIndex] = (dpad.left.value > 0.5 ? -N64_ANALOG_MAX : 0) + (dpad.right.value > 0.5 ? N64_ANALOG_MAX : 0); + yAxis[playerIndex] = (dpad.down.value > 0.5 ? -N64_ANALOG_MAX : 0) + (dpad.up.value > 0.5 ? N64_ANALOG_MAX : 0); + + padData[playerIndex][PVN64ButtonB] = gamepad.buttonA.isPressed; + padData[playerIndex][PVN64ButtonA] = gamepad.buttonX.isPressed; + } +#endif +} + +- (void)pollControllers { +#define USE_CAPTURE 1 +#define USE_QUEUE 1 + +#if USE_CAPTURE +#define controllerForNum(num) [self.controller##num capture] +#else +#define controllerForNum(num) self.controller##num +#endif + +#if USE_QUEUE + // const NSOperationQueue *queue = [NSOperationQueue currentQueue]; + [_inputQueue cancelAllOperations]; + NSMutableArray* ops = [NSMutableArray arrayWithCapacity:4]; + #define CHECK_CONTROLLER(num) \ + if(self.controller##num) [ops addObject:[NSBlockOperation blockOperationWithBlock:^{[self pollController:controllerForNum(num) forIndex:(num - 1)];}]] + + CHECK_CONTROLLER(1); + CHECK_CONTROLLER(2); + CHECK_CONTROLLER(3); + CHECK_CONTROLLER(4); + + [_inputQueue addOperations:ops waitUntilFinished:NO]; +#else +#define CHECK_CONTROLLER(num) if(self.controller##num) [self pollController:controllerForNum(num) forIndex:(num - 1)] + + CHECK_CONTROLLER(1); + CHECK_CONTROLLER(2); + CHECK_CONTROLLER(3); + CHECK_CONTROLLER(4); +#endif +#undef CHECK_CONTROLLER +#undef controllerForNum +} + +- (void)didMoveN64JoystickDirection:(PVN64Button)button withValue:(CGFloat)value forPlayer:(NSUInteger)player { + if (self.dualJoystickOption && player == 0) { + player = 1; + } + switch (button) { + case PVN64ButtonAnalogUp: + NSLog(@"Up: %f", round(value * N64_ANALOG_MAX)); + yAxis[player] = round(value * N64_ANALOG_MAX); + break; + case PVN64ButtonAnalogDown: + NSLog(@"Down: %f", value * -N64_ANALOG_MAX); + yAxis[player] = value * -N64_ANALOG_MAX; + break; + case PVN64ButtonAnalogLeft: + xAxis[player] = value * -N64_ANALOG_MAX; + break; + case PVN64ButtonAnalogRight: + xAxis[player] = value * N64_ANALOG_MAX; + break; + default: + break; + } +} + +- (void)didPushN64Button:(PVN64Button)button forPlayer:(NSUInteger)player { + padData[player][button] = 1; +} + +- (void)didReleaseN64Button:(PVN64Button)button forPlayer:(NSUInteger)player { + padData[player][button] = 0; +} + +@end + +@implementation MupenGameCore (Rumble) + +- (BOOL)supportsRumble { + return YES; +} + +@end diff --git a/Cores/Mupen64Plus/MupenGameCore+Mupen.h b/Cores/Mupen64Plus/MupenGameCore+Mupen.h new file mode 100644 index 0000000000..4767b57004 --- /dev/null +++ b/Cores/Mupen64Plus/MupenGameCore+Mupen.h @@ -0,0 +1,54 @@ +// +// MupenGameCore+Mupen.h +// MupenGameCore +// +// Created by Joseph Mattiello on 1/26/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import +@import Foundation; + +#import "api/config.h" +#import "api/m64p_common.h" +#import "api/m64p_config.h" +#import "api/m64p_frontend.h" +#import "api/m64p_vidext.h" +#import "api/callbacks.h" +#import "osal/dynamiclib.h" +#import "Plugins/Core/src/main/version.h" +#import "Plugins/Core/src/plugin/plugin.h" + +#define WIDTH 640 +#define HEIGHT 480 +#define WIDTHf 640.0f +#define HEIGHTf 480.0f + + +#if TARGET_OS_TV +#define RESIZE_TO_FULLSCREEN TRUE +#else +#define RESIZE_TO_FULLSCREEN [PVSettingsModel.shared nativeScaleEnabled] +#endif + +#import +#define N64_ANALOG_MAX 80 + +NS_ASSUME_NONNULL_BEGIN + +void MupenAudioSampleRateChanged(int SystemType); +void MupenAudioLenChanged(); +void SetIsNTSC(); +int MupenOpenAudio(AUDIO_INFO info); +void MupenSetAudioSpeed(int percent); +void ConfigureAll(NSString *romFolder); +void ConfigureCore(NSString *romFolder); +void ConfigureVideoGeneral(); +void ConfigureGLideN64(NSString *romFolder); +void ConfigureRICE(); + +@interface MupenGameCore (Mupen) +- (void)OE_addHandlerForType:(m64p_core_param)paramType usingBlock:(BOOL(^)(m64p_core_param paramType, int newValue))block; +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/Mupen64Plus/MupenGameCore+Mupen.m b/Cores/Mupen64Plus/MupenGameCore+Mupen.m new file mode 100644 index 0000000000..9d587ce321 --- /dev/null +++ b/Cores/Mupen64Plus/MupenGameCore+Mupen.m @@ -0,0 +1,358 @@ +#import "MupenGameCore+Mupen.h" +#import "MupenGameCore+Controls.h" +#import + +@import UIKit.UIWindow; + +#import "api/config.h" +#import "api/m64p_common.h" +#import "api/m64p_config.h" +#import "api/m64p_frontend.h" +#import "api/m64p_vidext.h" +#import "api/callbacks.h" +#import "osal/dynamiclib.h" +#import "Plugins/Core/src/main/version.h" +#import "Plugins/Core/src/plugin/plugin.h" + +AUDIO_INFO AudioInfo; + +unsigned char DataCRC( unsigned char *Data, int iLenght ) +{ + unsigned char Remainder = Data[0]; + + int iByte = 1; + unsigned char bBit = 0; + + while( iByte <= iLenght ) { + int HighBit = ((Remainder & 0x80) != 0); + Remainder = Remainder << 1; + + Remainder += ( iByte < iLenght && Data[iByte] & (0x80 >> bBit )) ? 1 : 0; + + Remainder ^= (HighBit) ? 0x85 : 0; + + bBit++; + iByte += bBit/8; + bBit %= 8; + } + + return Remainder; +} + +void MupenAudioSampleRateChanged(int SystemType) +{ + GET_CURRENT_AND_RETURN(); + + float currentRate = current.mupenSampleRate; + + switch (SystemType) { + default: + case SYSTEM_NTSC: + current.mupenSampleRate = 48681812 / (*AudioInfo.AI_DACRATE_REG + 1); + break; + case SYSTEM_MPAL: + current.mupenSampleRate = 48628316 / (*AudioInfo.AI_DACRATE_REG + 1); + break; + case SYSTEM_PAL: + current.mupenSampleRate = 49656530 / (*AudioInfo.AI_DACRATE_REG + 1); + break; + } + + [[current audioDelegate] audioSampleRateDidChange]; + ILOG(@"Mupen rate changed %f -> %f\n", currentRate, current.mupenSampleRate); +} + +void MupenAudioLenChanged() +{ + GET_CURRENT_AND_RETURN(); + + const int LenReg = *AudioInfo.AI_LEN_REG; + uint8_t *ptr = (uint8_t*)(AudioInfo.RDRAM + (*AudioInfo.AI_DRAM_ADDR_REG & 0xFFFFFF)); + + // Swap channels + for (uint32_t i = 0; i < LenReg; i += 4) { + ptr[i] ^= ptr[i + 2]; + ptr[i + 2] ^= ptr[i]; + ptr[i] ^= ptr[i + 2]; + ptr[i + 1] ^= ptr[i + 3]; + ptr[i + 3] ^= ptr[i + 1]; + ptr[i + 1] ^= ptr[i + 3]; + } + + [[current ringBufferAtIndex:0] write:ptr maxLength:LenReg]; +} + +void SetIsNTSC() +{ + GET_CURRENT_AND_RETURN(); + + extern m64p_rom_header ROM_HEADER; + switch (ROM_HEADER.Country_code&0xFF) + { + case 0x44: + case 0x46: + case 0x49: + case 0x50: + case 0x53: + case 0x55: + case 0x58: + case 0x59: + current.isNTSC = NO; + break; + case 0x37: + case 0x41: + case 0x45: + case 0x4a: + current.isNTSC = YES; + break; + } +} + +int MupenOpenAudio(AUDIO_INFO info) { + AudioInfo = info; + + SetIsNTSC(); + + ILOG(@"called"); + + return M64ERR_SUCCESS; +} + +void MupenSetAudioSpeed(int percent) { + // do we need this? + ILOG(@"value: %i", percent); +} + +void ConfigureAll(NSString *romFolder) { + ConfigureCore(romFolder); + ConfigureVideoGeneral(); + ConfigureGLideN64(romFolder); + ConfigureRICE(); +} + +void ConfigureCore(NSString *romFolder) { + GET_CURRENT_AND_RETURN(); + + // TODO: Proper path + NSBundle *coreBundle = [NSBundle mainBundle]; + const char *dataPath; + dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; + + /** Core Config **/ + m64p_handle config; + ConfigOpenSection("Core", &config); + + // set SRAM path + ConfigSetParameter(config, "SaveSRAMPath", M64TYPE_STRING, current.batterySavesPath.fileSystemRepresentation); + // set data path + ConfigSetParameter(config, "SharedDataPath", M64TYPE_STRING, romFolder.fileSystemRepresentation); + + // Use Pure Interpreter if 0, Cached Interpreter if 1, or Dynamic Recompiler if 2 or more" + int emulator = [MupenGameCore intForOption:@"CPU Mode"]; + printf("emulator %i", emulator); + ConfigSetParameter(config, "R4300Emulator", M64TYPE_INT, &emulator); + + ConfigSaveSection("Core"); + /** End Core Config **/ +} + +void ConfigureVideoGeneral() { + /** Begin General Video Config **/ + m64p_handle general; + ConfigOpenSection("Video-General", &general); + + // Use fullscreen mode + int useFullscreen = 1; + ConfigSetParameter(general, "Fullscreen", M64TYPE_BOOL, &useFullscreen); + + int screenWidth = WIDTH; + int screenHeight = HEIGHT; + if(RESIZE_TO_FULLSCREEN) { + CGSize size = UIApplication.sharedApplication.keyWindow.bounds.size; + float widthScale = floor(size.height / WIDTHf); + float heightScale = floor(size.height / HEIGHTf); + float scale = MAX(MIN(widthScale, heightScale), 1); + screenWidth = scale * WIDTHf; + screenHeight = scale * HEIGHTf; + } + + // Screen width + ConfigSetParameter(general, "ScreenWidth", M64TYPE_INT, &screenWidth); + + // Screen height + ConfigSetParameter(general, "ScreenHeight", M64TYPE_INT, &screenHeight); + + + DLOG(@"Setting size to (%i,%i)", screenWidth, screenHeight); + + ConfigSaveSection("Video-General"); + /** End General Video Config **/ +} + +void ConfigureGLideN64(NSString *romFolder) { + /** Begin GLideN64 Config **/ + m64p_handle gliden64; + ConfigOpenSection("Video-GLideN64", &gliden64); + + // 0 = stretch, 1 = 4:3, 2 = 16:9, 3 = adjust + int aspectRatio = [MupenGameCore intForOption:@"Aspect Ratio"]; + +// if(RESIZE_TO_FULLSCREEN) { +// #if TARGET_OS_TV +// aspectRatio = 1; +// #else +// aspectRatio = 3; +// #endif +// } + + ConfigSetParameter(gliden64, "AspectRatio", M64TYPE_INT, &aspectRatio); + + // Per-pixel lighting + int enableHWLighting = MupenGameCore.perPixelLighting ? 1 : 0; + ConfigSetParameter(gliden64, "EnableHWLighting", M64TYPE_BOOL, &enableHWLighting); + + // HiRez & texture options + // txHiresEnable, "Use high-resolution texture packs if available." + int txHiresEnable = [MupenGameCore boolForOption:@"Enable HiRes Texture packs"]; + ConfigSetParameter(gliden64, "txHiresEnable", M64TYPE_BOOL, &txHiresEnable); + + // Path to folder with hi-res texture packs. + ConfigSetParameter(gliden64, "txPath", M64TYPE_STRING, [romFolder stringByAppendingPathComponent:@"/"].fileSystemRepresentation); + // Path to folder where plugin saves texture cache files. + ConfigSetParameter(gliden64, "txCachePath", M64TYPE_STRING, [romFolder stringByAppendingPathComponent:@"/cache/"].fileSystemRepresentation); + // Path to folder where plugin saves dumped textures. + ConfigSetParameter(gliden64, "txDumpPath", M64TYPE_STRING, [romFolder stringByAppendingPathComponent:@"/texture_dump/"].fileSystemRepresentation); + +// if(RESIZE_TO_FULLSCREEN) { + // "txFilterMode", + // "Texture filter (0=none, 1=Smooth filtering 1, 2=Smooth filtering 2, 3=Smooth filtering 3, 4=Smooth filtering 4, 5=Sharp filtering 1, 6=Sharp filtering 2)" + int txFilterMode = [MupenGameCore intForOption:@"Texture Filter Mode"]; + ConfigSetParameter(gliden64, "txFilterMode", M64TYPE_INT, &txFilterMode); + + // "txEnhancementMode", config.textureFilter.txEnhancementMode, + // "Texture Enhancement (0=none, 1=store as is, 2=X2, 3=X2SAI, 4=HQ2X, 5=HQ2XS, 6=LQ2X, 7=LQ2XS, 8=HQ4X, 9=2xBRZ, 10=3xBRZ, 11=4xBRZ, 12=5xBRZ), 13=6xBRZ" + int txEnhancementMode = [MupenGameCore intForOption:@"Texture Enhancement Mode"]; + ConfigSetParameter(gliden64, "txEnhancementMode", M64TYPE_INT, &txEnhancementMode); + + // "txCacheCompression", config.textureFilter.txCacheCompression, "Zip textures cache." + int txCacheCompression = [MupenGameCore boolForOption:@"Compress texture cache"]; + ConfigSetParameter(gliden64, "txCacheCompression", M64TYPE_BOOL, &txCacheCompression); + + // "txSaveCache", config.textureFilter.txSaveCache, + // "Save texture cache to hard disk." + int txSaveCache = [MupenGameCore boolForOption:@"Save texture cache"]; + ConfigSetParameter(gliden64, "txSaveCache", M64TYPE_BOOL, &txSaveCache); + + // Warning, anything other than 0 crashes shader compilation + // "MultiSampling", config.video.multisampling, "Enable/Disable MultiSampling (0=off, 2,4,8,16=quality)" + int MultiSampling = [MupenGameCore intForOption:@"Multi Sampling"]; + ConfigSetParameter(gliden64, "MultiSampling", M64TYPE_INT, &MultiSampling); +// } + + + //#Gamma correction settings +// res = ConfigSetDefaultBool(g_configVideoGliden64, "ForceGammaCorrection", config.gammaCorrection.force, "Force gamma correction."); +// assert(res == M64ERR_SUCCESS); +// res = ConfigSetDefaultFloat(g_configVideoGliden64, "GammaCorrectionLevel", config.gammaCorrection.level, "Gamma correction level."); +// assert(res == M64ERR_SUCCESS); + + /* + "txCacheSize", config.textureFilter.txCacheSize/ gc_uMegabyte, "Size of filtered textures cache in megabytes." + */ + int txDump = [MupenGameCore boolForOption:@"Texture Dump"]; + ConfigSetParameter(gliden64, "txDump", M64TYPE_BOOL, &txDump); + + int txFilterIgnoreBG = [MupenGameCore boolForOption:@"Ignore BG Textures"]; + ConfigSetParameter(gliden64, "txFilterIgnoreBG", M64TYPE_BOOL, &txFilterIgnoreBG); + + + int txForce16bpp = [MupenGameCore boolForOption:@"Force 16bpp textures"]; + ConfigSetParameter(gliden64, "txForce16bpp", M64TYPE_BOOL, &txForce16bpp); + + + // "txHresAltCRC", config.textureFilter.txHresAltCRC, "Use alternative method of paletted textures CRC calculation." + int txHresAltCRC = [MupenGameCore boolForOption:@"HiRes Alt CRC"]; + ConfigSetParameter(gliden64, "txHresAltCRC", M64TYPE_BOOL, &txHresAltCRC); + + + // "txHiresFullAlphaChannel", "Allow to use alpha channel of high-res texture fully." + int txHiresFullAlphaChannel = [MupenGameCore boolForOption:@"HiRes Full Alpha"];; + ConfigSetParameter(gliden64, "txHiresFullAlphaChannel", M64TYPE_BOOL, &txHiresFullAlphaChannel); + + // Draw on-screen display if True, otherwise don't draw OSD + int osd = [MupenGameCore boolForOption:@"Debug OSD"]; + ConfigSetParameter(gliden64, "OnScreenDisplay", M64TYPE_BOOL, &osd); + ConfigSetParameter(gliden64, "ShowFPS", M64TYPE_BOOL, &osd); // Show FPS counter. + ConfigSetParameter(gliden64, "ShowVIS", M64TYPE_BOOL, &osd); // Show VI/S counter. + ConfigSetParameter(gliden64, "ShowPercent", M64TYPE_BOOL, &osd); // Show percent counter. + ConfigSetParameter(gliden64, "ShowInternalResolution", M64TYPE_BOOL, &osd); // Show internal resolution. + ConfigSetParameter(gliden64, "ShowRenderingResolution", M64TYPE_BOOL, &osd); // Show rendering resolution. + + ConfigSaveSection("Video-GLideN64"); + /** End GLideN64 Config **/ +} + +void ConfigureRICE() { + /** RICE CONFIG **/ + m64p_handle rice; + ConfigOpenSection("Video-Rice", &rice); + + // Use a faster algorithm to speed up texture loading and CRC computation + int fastTextureLoading = [MupenGameCore boolForOption:@"Fast Texture Loading"]; + + ConfigSetParameter(rice, "FastTextureLoading", M64TYPE_BOOL, &fastTextureLoading); + + // Enable this option to have better render-to-texture quality + int doubleSizeForSmallTextureBuffer = [MupenGameCore boolForOption:@"DoubleSizeForSmallTxtrBuf"]; + ConfigSetParameter(rice, "DoubleSizeForSmallTxtrBuf", M64TYPE_BOOL, &doubleSizeForSmallTextureBuffer); + + // N64 Texture Memory Full Emulation (may fix some games, may break others) + int fullTEMEmulation = [MupenGameCore boolForOption:@"FullTMEMEmulation"]; + ConfigSetParameter(rice, "FullTMEMEmulation", M64TYPE_BOOL, &fullTEMEmulation); + + // Use fullscreen mode if True, or windowed mode if False + int fullscreen = 1; + ConfigSetParameter(rice, "Fullscreen", M64TYPE_BOOL, &fullscreen); + + // If this option is enabled, the plugin will skip every other frame + // Breaks some games in my testing -jm + int skipFrame = [MupenGameCore boolForOption:@"SkipFrame"]; + ConfigSetParameter(rice, "SkipFrame", M64TYPE_BOOL, &skipFrame); + + // Enable hi-resolution texture file loading + int hiResTextures = [MupenGameCore boolForOption:@"LoadHiResTextures"]; + ConfigSetParameter(rice, "LoadHiResTextures", M64TYPE_BOOL, &hiResTextures); + + // Use Mipmapping? 0=no, 1=nearest, 2=bilinear, 3=trilinear + int mipmapping = 0; + ConfigSetParameter(rice, "Mipmapping", M64TYPE_INT, &mipmapping); + + // Enable/Disable Anisotropic Filtering for Mipmapping (0=no filtering, 2-16=quality). + // This is uneffective if Mipmapping is 0. If the given value is to high to be supported by your graphic card, the value will be the highest value your graphic card can support. Better result with Trilinear filtering + int anisotropicFiltering = 16; + ConfigSetParameter(rice, "AnisotropicFiltering", M64TYPE_INT, &anisotropicFiltering); + + // Enable, Disable or Force fog generation (0=Disable, 1=Enable n64 choose, 2=Force Fog) + int fogMethod = 1; + ConfigSetParameter(rice, "FogMethod", M64TYPE_INT, &fogMethod); + + // Color bit depth to use for textures (0=default, 1=32 bits, 2=16 bits) + // 16 bit breaks some games like GoldenEye + int textureQuality = 1; + ConfigSetParameter(rice, "TextureQuality", M64TYPE_INT, &textureQuality); + + // Enable/Disable MultiSampling (0=off, 2,4,8,16=quality) + int multiSampling = RESIZE_TO_FULLSCREEN ? 4 : 0; + ConfigSetParameter(rice, "MultiSampling", M64TYPE_INT, &multiSampling); + + // Color bit depth for rendering window (0=32 bits, 1=16 bits) + int colorQuality = 0; + ConfigSetParameter(rice, "ColorQuality", M64TYPE_INT, &colorQuality); + + /** End RICE CONFIG **/ + ConfigSaveSection("Video-Rice"); +} + +@implementation MupenGameCore (Mupen) + +@end diff --git a/Cores/Mupen64Plus/MupenGameCore+Saves.h b/Cores/Mupen64Plus/MupenGameCore+Saves.h new file mode 100644 index 0000000000..b6a7671311 --- /dev/null +++ b/Cores/Mupen64Plus/MupenGameCore+Saves.h @@ -0,0 +1,21 @@ +// +// MupenGameCore+Controls.h +// MupenGameCore +// +// Created by Joseph Mattiello on 1/26/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MupenGameCore (Saves) +- (BOOL)saveStateToFileAtPath:(NSString *)fileName error:(NSError**)error; +- (void)saveStateToFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block; +- (BOOL)loadStateFromFileAtPath:(NSString *)fileName error:(NSError**)error; +- (void)loadStateFromFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/Mupen64Plus/MupenGameCore+Saves.m b/Cores/Mupen64Plus/MupenGameCore+Saves.m new file mode 100644 index 0000000000..4b94c37e5f --- /dev/null +++ b/Cores/Mupen64Plus/MupenGameCore+Saves.m @@ -0,0 +1,146 @@ + +//#import "MupenGameCore.h" +#import +#import "MupenGameCore+Mupen.h" + +#import "api/config.h" +#import "api/m64p_common.h" +#import "api/m64p_config.h" +#import "api/m64p_frontend.h" +#import "api/m64p_vidext.h" +#import "api/callbacks.h" +#import "osal/dynamiclib.h" +#import "Plugins/Core/src/main/version.h" +#import "Plugins/Core/src/plugin/plugin.h" + +@implementation MupenGameCore (Saves) + +- (BOOL)saveStateToFileAtPath:(NSString *)fileName error:(NSError**)error { + NSAssert(NO, @"Shouldn't be here since we overwrite the async call"); +} + +- (void)saveStateToFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block +{ + __block BOOL wasPaused = [self isEmulationPaused]; + [self OE_addHandlerForType:M64CORE_STATE_SAVECOMPLETE usingBlock: + ^ BOOL (m64p_core_param paramType, int newValue) + { + [self setPauseEmulation:wasPaused]; + NSAssert(paramType == M64CORE_STATE_SAVECOMPLETE, @"This block should only be called for save completion!"); + if(newValue == 0) + { + + if (block) { + NSError *error = [NSError errorWithDomain:@"org.openemu.GameCore.ErrorDomain" + code:-5 + userInfo:@{ + NSLocalizedDescriptionKey : @"Mupen Could not save the current state.", + NSFilePathErrorKey : fileName + }]; + + dispatch_async(dispatch_get_main_queue(), ^{ + block(YES, nil); + }); + + } + return NO; + } + + if (block) { + dispatch_async(dispatch_get_main_queue(), ^{ + block(YES, nil); + }); + } + return NO; + }]; + + BOOL (^scheduleSaveState)(void) = + ^ BOOL { + if(CoreDoCommand(M64CMD_STATE_SAVE, 1, (void *)[fileName fileSystemRepresentation]) == M64ERR_SUCCESS) + { + // Mupen needs to run for a bit for the state saving to take place. + [self setPauseEmulation:NO]; + return YES; + } + + return NO; + }; + + if(scheduleSaveState()) return; + + [self OE_addHandlerForType:M64CORE_EMU_STATE usingBlock: + ^ BOOL (m64p_core_param paramType, int newValue) + { + NSAssert(paramType == M64CORE_EMU_STATE, @"This block should only be called for load completion!"); + if(newValue != M64EMU_RUNNING && newValue != M64EMU_PAUSED) + return YES; + + return !scheduleSaveState(); + }]; + + [super saveStateToFileAtPath:fileName completionHandler:block]; +} + + +- (BOOL)loadStateFromFileAtPath:(NSString *)fileName error:(NSError**)error { + NSAssert(NO, @"Shouldn't be here since we overwrite the async call"); +} + +- (void)loadStateFromFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block +{ + __block BOOL wasPaused = [self isEmulationPaused]; + [self OE_addHandlerForType:M64CORE_STATE_LOADCOMPLETE usingBlock: + ^ BOOL (m64p_core_param paramType, int newValue) + { + NSAssert(paramType == M64CORE_STATE_LOADCOMPLETE, @"This block should only be called for load completion!"); + + [self setPauseEmulation:wasPaused]; + if(newValue == 0) + { + dispatch_async(dispatch_get_main_queue(), ^{ + NSError *error = [NSError errorWithDomain:@"org.openemu.GameCore.ErrorDomain" + code:-3 + userInfo:@{ + NSLocalizedDescriptionKey : @"Mupen Could not load the save state", + NSLocalizedRecoverySuggestionErrorKey : @"The loaded file is probably corrupted.", + NSFilePathErrorKey : fileName + }]; + block(NO, error); + }); + return NO; + } + + dispatch_async(dispatch_get_main_queue(), ^{ + block(YES, nil); + }); + + return NO; + }]; + + BOOL (^scheduleLoadState)(void) = + ^ BOOL { + if(CoreDoCommand(M64CMD_STATE_LOAD, 1, (void *)[fileName fileSystemRepresentation]) == M64ERR_SUCCESS) + { + // Mupen needs to run for a bit for the state loading to take place. + [self setPauseEmulation:NO]; + return YES; + } + + return NO; + }; + + if(scheduleLoadState()) return; + + [self OE_addHandlerForType:M64CORE_EMU_STATE usingBlock: + ^ BOOL (m64p_core_param paramType, int newValue) + { + NSAssert(paramType == M64CORE_EMU_STATE, @"This block should only be called for load completion!"); + if(newValue != M64EMU_RUNNING && newValue != M64EMU_PAUSED) + return YES; + + return !scheduleLoadState(); + }]; +} + + +@end diff --git a/Cores/Mupen64Plus/MupenGameCore+Video.swift b/Cores/Mupen64Plus/MupenGameCore+Video.swift new file mode 100644 index 0000000000..16430e1172 --- /dev/null +++ b/Cores/Mupen64Plus/MupenGameCore+Video.swift @@ -0,0 +1,30 @@ +// +// MupenGameCore+Audio.swift +// PVMupen64Plus +// +// Created by Joseph Mattiello on 1/24/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation +import PVSupport + +#if targetEnvironment(macCatalyst) +import OpenGL +import GLUT +#else +import OpenGLES.ES3 +#endif + +@objc +public extension MupenGameCore { + override var rendersToOpenGL: Bool { true } + override var pixelType: GLenum { UInt32(GL_UNSIGNED_BYTE) } + override var pixelFormat: GLenum { UInt32(GL_BGRA) } + override var internalPixelFormat: GLenum { UInt32(GL_RGBA) } + override var videoBuffer: UnsafeRawPointer? { nil } + + override var bufferSize: CGSize { .init(width: 1024, height: 512) } + override var screenRect: CGRect { .init(x: 0, y: 0, width: Int(videoWidth), height: Int(videoHeight)) } + override var aspectSize: CGSize { .init(width: Int(videoWidth), height: Int(videoHeight)) } +} diff --git a/Cores/Mupen64Plus/MupenGameCore.h b/Cores/Mupen64Plus/MupenGameCore.h index 36f1e5ab6f..455d3cabe4 100644 --- a/Cores/Mupen64Plus/MupenGameCore.h +++ b/Cores/Mupen64Plus/MupenGameCore.h @@ -35,25 +35,28 @@ __attribute__((visibility("default"))) @interface MupenGameCore : PVEmulatorCore { //@private + @public uint8_t padData[4][PVN64ButtonCount]; int8_t xAxis[4]; int8_t yAxis[4]; -// int videoWidth; -// int videoHeight; -// int videoBitDepth; - int videoDepthBitDepth; // eh - float sampleRate; - - BOOL isNTSC; + int controllerMode[4]; + NSOperationQueue *_inputQueue; } @property (nonatomic, assign) int videoWidth; @property (nonatomic, assign) int videoHeight; @property (nonatomic, assign) int videoBitDepth; +@property (nonatomic, assign) double mupenSampleRate; +@property (nonatomic, assign) int videoDepthBitDepth; +@property (nonatomic, assign) BOOL isNTSC; +@property (nonatomic, assign) BOOL dualJoystick; + - (void) videoInterrupt; - (void) swapBuffers; + +- (void)setMode:(NSInteger)mode forController:(NSInteger)controller; @end extern __weak MupenGameCore *_current; diff --git a/Cores/Mupen64Plus/MupenGameCore.m b/Cores/Mupen64Plus/MupenGameCore.m index 5b420b7e89..87cf7b7ce4 100644 --- a/Cores/Mupen64Plus/MupenGameCore.m +++ b/Cores/Mupen64Plus/MupenGameCore.m @@ -30,6 +30,10 @@ //#import "MupenGameCore.h" #import +#import "MupenGameCore+Controls.h" +#import "MupenGameCore+Cheats.h" +#import "MupenGameCore+Mupen.h" + #import "api/config.h" #import "api/m64p_common.h" #import "api/m64p_config.h" @@ -53,28 +57,6 @@ @import GLKit; #endif -#define WIDTH 640 -#define HEIGHT 480 -#define WIDTHf 640.0f -#define HEIGHTf 480.0f - - -#if TARGET_OS_TV -#define RESIZE_TO_FULLSCREEN TRUE -#else -#define RESIZE_TO_FULLSCREEN [PVSettingsModel.shared nativeScaleEnabled] -#endif - -#import - -NSString *MupenControlNames[] = { - @"N64_DPadU", @"N64_DPadD", @"N64_DPadL", @"N64_DPadR", - @"N64_CU", @"N64_CD", @"N64_CL", @"N64_CR", - @"N64_B", @"N64_A", @"N64_R", @"N64_L", @"N64_Z", @"N64_Start" -}; // FIXME: missing: joypad X, joypad Y, mempak switch, rumble switch - -#define N64_ANALOG_MAX 80 - #if TARGET_OS_MAC @interface MupenGameCore () #else @@ -120,7 +102,7 @@ static void MupenStateCallback(void *context, m64p_core_param paramType, int new @implementation MupenGameCore { NSData *romData; - + dispatch_semaphore_t mupenWaitToBeginFrameSemaphore; dispatch_semaphore_t coreWaitToEndFrameSemaphore; @@ -152,25 +134,33 @@ - (instancetype)init _videoHeight = HEIGHT; } +// controllerMode = {PLUGIN_MEMPAK, PLUGIN_MEMPAK, PLUGIN_MEMPAK, PLUGIN_MEMPAK}; + _videoBitDepth = 32; // ignored - videoDepthBitDepth = 0; // TODO + _videoDepthBitDepth = 0; // TODO - sampleRate = 33600; + _mupenSampleRate = 33600; - isNTSC = YES; + _isNTSC = YES; _callbackQueue = dispatch_queue_create("org.openemu.MupenGameCore.CallbackHandlerQueue", DISPATCH_QUEUE_SERIAL); _callbackHandlers = [[NSMutableDictionary alloc] init]; + + _inputQueue = [[NSOperationQueue alloc] init]; + _inputQueue.name = @"mupen.input"; + _inputQueue.qualityOfService = NSOperationQueuePriorityHigh; + _inputQueue.maxConcurrentOperationCount = 4; } _current = self; return self; } -- (void)dealloc -{ +- (void)dealloc { SetStateCallback(NULL, NULL); SetDebugCallback(NULL, NULL); + [_inputQueue cancelAllOperations]; + [self pluginsUnload]; [self detachCoreLib]; @@ -246,585 +236,6 @@ - (void)OE_didReceiveStateChangeForParamType:(m64p_core_param)paramType value:(i return dlopen(info.dli_fname, RTLD_LAZY | RTLD_GLOBAL); } -static void MupenGetKeys(int Control, BUTTONS *Keys) -{ - GET_CURRENT_AND_RETURN(); - - [current pollControllers]; - - Keys->R_DPAD = current->padData[Control][PVN64ButtonDPadRight]; - Keys->L_DPAD = current->padData[Control][PVN64ButtonDPadLeft]; - Keys->D_DPAD = current->padData[Control][PVN64ButtonDPadDown]; - Keys->U_DPAD = current->padData[Control][PVN64ButtonDPadUp]; - Keys->START_BUTTON = current->padData[Control][PVN64ButtonStart]; - Keys->Z_TRIG = current->padData[Control][PVN64ButtonZ]; - Keys->B_BUTTON = current->padData[Control][PVN64ButtonB]; - Keys->A_BUTTON = current->padData[Control][PVN64ButtonA]; - Keys->R_CBUTTON = current->padData[Control][PVN64ButtonCRight]; - Keys->L_CBUTTON = current->padData[Control][PVN64ButtonCLeft]; - Keys->D_CBUTTON = current->padData[Control][PVN64ButtonCDown]; - Keys->U_CBUTTON = current->padData[Control][PVN64ButtonCUp]; - Keys->R_TRIG = current->padData[Control][PVN64ButtonR]; - Keys->L_TRIG = current->padData[Control][PVN64ButtonL]; - Keys->X_AXIS = current->xAxis[Control]; - Keys->Y_AXIS = current->yAxis[Control]; -} - -static void MupenInitiateControllers (CONTROL_INFO ControlInfo) -{ - GET_CURRENT_OR_RETURN(); - - ControlInfo.Controls[0].Present = 1; - ControlInfo.Controls[0].Plugin = PLUGIN_RAW; - ControlInfo.Controls[1].Present = current.controller2 != nil; - ControlInfo.Controls[1].Plugin = PLUGIN_MEMPAK; - ControlInfo.Controls[2].Present = current.controller3 != nil; - ControlInfo.Controls[2].Plugin = PLUGIN_MEMPAK; - ControlInfo.Controls[3].Present = current.controller4 != nil; - ControlInfo.Controls[3].Plugin = PLUGIN_MEMPAK; -} - -static unsigned char DataCRC( unsigned char *Data, int iLenght ) -{ - unsigned char Remainder = Data[0]; - - int iByte = 1; - unsigned char bBit = 0; - - while( iByte <= iLenght ) - { - int HighBit = ((Remainder & 0x80) != 0); - Remainder = Remainder << 1; - - Remainder += ( iByte < iLenght && Data[iByte] & (0x80 >> bBit )) ? 1 : 0; - - Remainder ^= (HighBit) ? 0x85 : 0; - - bBit++; - iByte += bBit/8; - bBit %= 8; - } - - return Remainder; -} - -/****************************************************************** - Function: ControllerCommand - Purpose: To process the raw data that has just been sent to a - specific controller. - input: - Controller Number (0 to 3) and -1 signalling end of - processing the pif ram. - - Pointer of data to be processed. - output: none - note: This function is only needed if the DLL is allowing raw - data, or the plugin is set to raw - the data that is being processed looks like this: - initilize controller: 01 03 00 FF FF FF - read controller: 01 04 01 FF FF FF FF - *******************************************************************/ -static void MupenControllerCommand(int Control, unsigned char *Command) -{ - // Some stuff from n-rage plugin -#define RD_GETSTATUS 0x00 // get status -#define RD_READKEYS 0x01 // read button values -#define RD_READPAK 0x02 // read from controllerpack -#define RD_WRITEPAK 0x03 // write to controllerpack -#define RD_RESETCONTROLLER 0xff // reset controller -#define RD_READEEPROM 0x04 // read eeprom -#define RD_WRITEEPROM 0x05 // write eeprom - -#define PAK_IO_RUMBLE 0xC000 // the address where rumble-commands are sent to - - GET_CURRENT_OR_RETURN(); - - unsigned char *Data = &Command[5]; - - if (Control == -1) - return; - - switch (Command[2]) - { - case RD_GETSTATUS: - break; - case RD_READKEYS: - break; - case RD_READPAK: { -// if (controller[Control].control->Plugin == PLUGIN_RAW) -// { - unsigned int dwAddress = (Command[3] << 8) + (Command[4] & 0xE0); - - if(( dwAddress >= 0x8000 ) && ( dwAddress < 0x9000 ) ) - memset( Data, 0x80, 32 ); - else - memset( Data, 0x00, 32 ); - - Data[32] = DataCRC( Data, 32 ); -// } - break; - } - case RD_WRITEPAK: { -// if (controller[Control].control->Plugin == PLUGIN_RAW) -// { - unsigned int dwAddress = (Command[3] << 8) + (Command[4] & 0xE0); -// Data[32] = DataCRC( Data, 32 ); -// - if ((dwAddress == PAK_IO_RUMBLE) )//&& (rumble.set_rumble_state)) - { - if (*Data) - { - [current rumble]; -// AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); -// rumble.set_rumble_state(Control, RETRO_RUMBLE_WEAK, 0xFFFF); -// rumble.set_rumble_state(Control, RETRO_RUMBLE_STRONG, 0xFFFF); - } - else - { -// rumble.set_rumble_state(Control, RETRO_RUMBLE_WEAK, 0); -// rumble.set_rumble_state(Control, RETRO_RUMBLE_STRONG, 0); - } - } -// } - - break; - } - case RD_RESETCONTROLLER: - break; - case RD_READEEPROM: - break; - case RD_WRITEEPROM: - break; - } -} - -- (void)pollControllers -{ - for (NSInteger playerIndex = 0; playerIndex < 4; playerIndex++) - { - GCController *controller = nil; - - if (self.controller1 && playerIndex == 0) - { - controller = self.controller1; - } - else if (self.controller2 && playerIndex == 1) - { - controller = self.controller2; - } - else if (self.controller3 && playerIndex == 2) - { - controller = self.controller3; - } - else if (self.controller4 && playerIndex == 3) - { - controller = self.controller4; - } - - if ([controller extendedGamepad]) - { - GCExtendedGamepad *gamepad = [controller extendedGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - - // Left Joystick → Joystick - xAxis[playerIndex] = gamepad.leftThumbstick.xAxis.value * N64_ANALOG_MAX; - yAxis[playerIndex] = gamepad.leftThumbstick.yAxis.value * N64_ANALOG_MAX; - - // MFi-D-Pad → D-Pad - padData[playerIndex][PVN64ButtonDPadUp] = dpad.up.isPressed; - padData[playerIndex][PVN64ButtonDPadDown] = dpad.down.isPressed; - padData[playerIndex][PVN64ButtonDPadLeft] = dpad.left.isPressed; - padData[playerIndex][PVN64ButtonDPadRight] = dpad.right.isPressed; - - // MFi-R2 → Start - padData[playerIndex][PVN64ButtonStart] = gamepad.rightTrigger.isPressed; - - // MFi-L2 → Z - padData[playerIndex][PVN64ButtonZ] = gamepad.leftTrigger.isPressed; - - // If MFi-L2 is not pressed… MFi-L1 → L - if (!gamepad.rightShoulder.isPressed) { - padData[playerIndex][PVN64ButtonL] = gamepad.leftShoulder.isPressed; - } - - // If MFi-L1 is not pressed… MFi-R1 → R - if (!gamepad.leftShoulder.isPressed) { - padData[playerIndex][PVN64ButtonR] = gamepad.rightShoulder.isPressed; - } - // If not C-Mode… MFi-X,A → A,B MFi-Y,B → C←,C↓ - if (!(gamepad.leftShoulder.isPressed && gamepad.rightShoulder.isPressed)) { - padData[playerIndex][PVN64ButtonA] = gamepad.buttonA.isPressed; - padData[playerIndex][PVN64ButtonB] = gamepad.buttonX.isPressed; - padData[playerIndex][PVN64ButtonCLeft] = gamepad.buttonY.isPressed; - padData[playerIndex][PVN64ButtonCDown] = gamepad.buttonB.isPressed; - } - - //C-Mode: MFi-X,Y,A,B -> C←,C↑,C↓,C→ - if (gamepad.leftShoulder.isPressed && gamepad.rightShoulder.isPressed) { - padData[playerIndex][PVN64ButtonCLeft] = gamepad.buttonX.isPressed; - padData[playerIndex][PVN64ButtonCUp] = gamepad.buttonY.isPressed; - padData[playerIndex][PVN64ButtonCDown] = gamepad.buttonA.isPressed; - padData[playerIndex][PVN64ButtonCRight] = gamepad.buttonB.isPressed; - } - - // Right Joystick → C Buttons - float rightJoystickDeadZone = 0.45; - if (!(gamepad.leftShoulder.isPressed && gamepad.rightShoulder.isPressed) && !(gamepad.buttonY.isPressed || gamepad.buttonB.isPressed)) { - padData[playerIndex][PVN64ButtonCUp] = gamepad.rightThumbstick.up.value > rightJoystickDeadZone; - padData[playerIndex][PVN64ButtonCDown] = gamepad.rightThumbstick.down.value > rightJoystickDeadZone; - padData[playerIndex][PVN64ButtonCLeft] = gamepad.rightThumbstick.left.value > rightJoystickDeadZone; - padData[playerIndex][PVN64ButtonCRight] = gamepad.rightThumbstick.right.value > rightJoystickDeadZone; - } - - } else if ([controller gamepad]) { - GCGamepad *gamepad = [controller gamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - - if (!gamepad.rightShoulder.isPressed) { - // Default - xAxis[playerIndex] = (dpad.left.value > 0.5 ? -N64_ANALOG_MAX : 0) + (dpad.right.value > 0.5 ? N64_ANALOG_MAX : 0); - yAxis[playerIndex] = (dpad.down.value > 0.5 ? -N64_ANALOG_MAX : 0) + (dpad.up.value > 0.5 ? N64_ANALOG_MAX : 0); - - padData[playerIndex][PVN64ButtonA] = gamepad.buttonA.isPressed; - padData[playerIndex][PVN64ButtonB] = gamepad.buttonX.isPressed; - - padData[playerIndex][PVN64ButtonCLeft] = gamepad.buttonY.isPressed; - padData[playerIndex][PVN64ButtonCDown] = gamepad.buttonB.isPressed; - } else { - // Alt-Mode - padData[playerIndex][PVN64ButtonDPadUp] = dpad.up.isPressed; - padData[playerIndex][PVN64ButtonDPadDown] = dpad.down.isPressed; - padData[playerIndex][PVN64ButtonDPadLeft] = dpad.left.isPressed; - padData[playerIndex][PVN64ButtonDPadRight] = dpad.right.isPressed; - - padData[playerIndex][PVN64ButtonCLeft] = gamepad.buttonX.isPressed; - padData[playerIndex][PVN64ButtonCUp] = gamepad.buttonY.isPressed; - padData[playerIndex][PVN64ButtonCDown] = gamepad.buttonA.isPressed; - padData[playerIndex][PVN64ButtonCRight] = gamepad.buttonB.isPressed; - } - - padData[playerIndex][PVN64ButtonZ] = gamepad.leftShoulder.isPressed; - padData[playerIndex][PVN64ButtonR] = gamepad.rightShoulder.isPressed; - - } -#if TARGET_OS_TV - else if ([controller microGamepad]) { - GCMicroGamepad *gamepad = [controller microGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - - xAxis[playerIndex] = (dpad.left.value > 0.5 ? -N64_ANALOG_MAX : 0) + (dpad.right.value > 0.5 ? N64_ANALOG_MAX : 0); - yAxis[playerIndex] = (dpad.down.value > 0.5 ? -N64_ANALOG_MAX : 0) + (dpad.up.value > 0.5 ? N64_ANALOG_MAX : 0); - - padData[playerIndex][PVN64ButtonB] = gamepad.buttonA.isPressed; - padData[playerIndex][PVN64ButtonA] = gamepad.buttonX.isPressed; - } -#endif - } -} - -static AUDIO_INFO AudioInfo; - -static void MupenAudioSampleRateChanged(int SystemType) -{ - GET_CURRENT_AND_RETURN(); - - float currentRate = current->sampleRate; - - switch (SystemType) - { - default: - case SYSTEM_NTSC: - current->sampleRate = 48681812 / (*AudioInfo.AI_DACRATE_REG + 1); - break; - case SYSTEM_PAL: - current->sampleRate = 49656530 / (*AudioInfo.AI_DACRATE_REG + 1); - break; - } - - [[current audioDelegate] audioSampleRateDidChange]; - ILOG(@"Mupen rate changed %f -> %f\n", currentRate, current->sampleRate); -} - -static void MupenAudioLenChanged() -{ - GET_CURRENT_AND_RETURN(); - - int LenReg = *AudioInfo.AI_LEN_REG; - uint8_t *ptr = (uint8_t*)(AudioInfo.RDRAM + (*AudioInfo.AI_DRAM_ADDR_REG & 0xFFFFFF)); - - // Swap channels - for (uint32_t i = 0; i < LenReg; i += 4) - { - ptr[i] ^= ptr[i + 2]; - ptr[i + 2] ^= ptr[i]; - ptr[i] ^= ptr[i + 2]; - ptr[i + 1] ^= ptr[i + 3]; - ptr[i + 3] ^= ptr[i + 1]; - ptr[i + 1] ^= ptr[i + 3]; - } - - [[current ringBufferAtIndex:0] write:ptr maxLength:LenReg]; -} - -static void SetIsNTSC() -{ - GET_CURRENT_AND_RETURN(); - - extern m64p_rom_header ROM_HEADER; - switch (ROM_HEADER.Country_code&0xFF) - { - case 0x44: - case 0x46: - case 0x49: - case 0x50: - case 0x53: - case 0x55: - case 0x58: - case 0x59: - current->isNTSC = NO; - break; - case 0x37: - case 0x41: - case 0x45: - case 0x4a: - current->isNTSC = YES; - break; - } -} - -static int MupenOpenAudio(AUDIO_INFO info) -{ - AudioInfo = info; - - SetIsNTSC(); - - return M64ERR_SUCCESS; -} - -static void MupenSetAudioSpeed(int percent) -{ - // do we need this? -} - -static void ConfigureAll(NSString *romFolder) { - ConfigureCore(romFolder); - ConfigureVideoGeneral(); - ConfigureGLideN64(romFolder); - ConfigureRICE(); -} - -static void ConfigureCore(NSString *romFolder) { - GET_CURRENT_AND_RETURN(); - - // TODO: Proper path - NSBundle *coreBundle = [NSBundle mainBundle]; - const char *dataPath; - dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; - - /** Core Config **/ - m64p_handle config; - ConfigOpenSection("Core", &config); - - // set SRAM path - ConfigSetParameter(config, "SaveSRAMPath", M64TYPE_STRING, current.batterySavesPath.fileSystemRepresentation); - // set data path - ConfigSetParameter(config, "SharedDataPath", M64TYPE_STRING, romFolder.fileSystemRepresentation); - - // Use Pure Interpreter if 0, Cached Interpreter if 1, or Dynamic Recompiler if 2 or more" - int emulator = 1; - ConfigSetParameter(config, "R4300Emulator", M64TYPE_INT, &emulator); - - ConfigSaveSection("Core"); - /** End Core Config **/ -} - -static void ConfigureVideoGeneral() { - /** Begin General Video Config **/ - m64p_handle general; - ConfigOpenSection("Video-General", &general); - - // Use fullscreen mode - int useFullscreen = 1; - ConfigSetParameter(general, "Fullscreen", M64TYPE_BOOL, &useFullscreen); - - int screenWidth = WIDTH; - int screenHeight = HEIGHT; - if(RESIZE_TO_FULLSCREEN) { - CGSize size = UIApplication.sharedApplication.keyWindow.bounds.size; - float widthScale = floor(size.height / WIDTHf); - float heightScale = floor(size.height / HEIGHTf); - float scale = MAX(MIN(widthScale, heightScale), 1); - screenWidth = scale * WIDTHf; - screenHeight = scale * HEIGHTf; - } - - // Screen width - ConfigSetParameter(general, "ScreenWidth", M64TYPE_INT, &screenWidth); - - // Screen height - ConfigSetParameter(general, "ScreenHeight", M64TYPE_INT, &screenHeight); - - - DLOG(@"Setting size to (%i,%i)", screenWidth, screenHeight); - - ConfigSaveSection("Video-General"); - /** End General Video Config **/ -} - -static void ConfigureGLideN64(NSString *romFolder) { - /** Begin GLideN64 Config **/ - m64p_handle gliden64; - ConfigOpenSection("Video-GLideN64", &gliden64); - - // 0 = stretch, 1 = 4:3, 2 = 16:9, 3 = adjust - int aspectRatio = 1; - - if(RESIZE_TO_FULLSCREEN) { - #if TARGET_OS_TV - aspectRatio = 1; - #else - aspectRatio = 3; - #endif - } - - ConfigSetParameter(gliden64, "AspectRatio", M64TYPE_INT, &aspectRatio); - - // Per-pixel lighting - int enableHWLighting = MupenGameCore.perPixelLighting ? 1 : 0; - ConfigSetParameter(gliden64, "EnableHWLighting", M64TYPE_BOOL, &enableHWLighting); - - // HiRez & texture options - // txHiresEnable, "Use high-resolution texture packs if available." - int txHiresEnable = 1; //RESIZE_TO_FULLSCREEN ? 1 : 0; - ConfigSetParameter(gliden64, "txHiresEnable", M64TYPE_BOOL, &txHiresEnable); - - // Path to folder with hi-res texture packs. - ConfigSetParameter(gliden64, "txPath", M64TYPE_STRING, [romFolder stringByAppendingPathComponent:@"/"].fileSystemRepresentation); - // Path to folder where plugin saves texture cache files. - ConfigSetParameter(gliden64, "txCachePath", M64TYPE_STRING, [romFolder stringByAppendingPathComponent:@"/cache/"].fileSystemRepresentation); - // Path to folder where plugin saves dumped textures. - ConfigSetParameter(gliden64, "txDumpPath", M64TYPE_STRING, [romFolder stringByAppendingPathComponent:@"/texture_dump/"].fileSystemRepresentation); - - if(RESIZE_TO_FULLSCREEN) { - // "txFilterMode", - // "Texture filter (0=none, 1=Smooth filtering 1, 2=Smooth filtering 2, 3=Smooth filtering 3, 4=Smooth filtering 4, 5=Sharp filtering 1, 6=Sharp filtering 2)" - int txFilterMode = 6; - ConfigSetParameter(gliden64, "txFilterMode", M64TYPE_INT, &txFilterMode); - - // "txEnhancementMode", config.textureFilter.txEnhancementMode, - // "Texture Enhancement (0=none, 1=store as is, 2=X2, 3=X2SAI, 4=HQ2X, 5=HQ2XS, 6=LQ2X, 7=LQ2XS, 8=HQ4X, 9=2xBRZ, 10=3xBRZ, 11=4xBRZ, 12=5xBRZ), 13=6xBRZ" - int txEnhancementMode = 11; - ConfigSetParameter(gliden64, "txEnhancementMode", M64TYPE_INT, &txEnhancementMode); - - // "txCacheCompression", config.textureFilter.txCacheCompression, "Zip textures cache." - int txCacheCompression = 0; - ConfigSetParameter(gliden64, "txCacheCompression", M64TYPE_BOOL, &txCacheCompression); - - // "txSaveCache", config.textureFilter.txSaveCache, - // "Save texture cache to hard disk." - int txSaveCache = 1; - ConfigSetParameter(gliden64, "txSaveCache", M64TYPE_BOOL, &txSaveCache); - - // Warning, anything other than 0 crashes shader compilation - // "MultiSampling", config.video.multisampling, "Enable/Disable MultiSampling (0=off, 2,4,8,16=quality)" - int MultiSampling = 0; - ConfigSetParameter(gliden64, "MultiSampling", M64TYPE_INT, &MultiSampling); - } - - - //#Gamma correction settings -// res = ConfigSetDefaultBool(g_configVideoGliden64, "ForceGammaCorrection", config.gammaCorrection.force, "Force gamma correction."); -// assert(res == M64ERR_SUCCESS); -// res = ConfigSetDefaultFloat(g_configVideoGliden64, "GammaCorrectionLevel", config.gammaCorrection.level, "Gamma correction level."); -// assert(res == M64ERR_SUCCESS); - - /* - "txDeposterize", config.textureFilter.txDeposterize, "Deposterize texture before enhancement." - "txFilterIgnoreBG", config.textureFilter.txFilterIgnoreBG, "Don't filter background textures." - "txCacheSize", config.textureFilter.txCacheSize/ gc_uMegabyte, "Size of filtered textures cache in megabytes." - "txDump", config.textureFilter.txDump, "Enable dump of loaded N64 textures." - "txForce16bpp", config.textureFilter.txForce16bpp, "Force use 16bit texture formats for HD textures." - */ - - // "txHresAltCRC", config.textureFilter.txHresAltCRC, "Use alternative method of paletted textures CRC calculation." - int txHresAltCRC = 0; - ConfigSetParameter(gliden64, "txHresAltCRC", M64TYPE_BOOL, &txHresAltCRC); - - - // "txHiresFullAlphaChannel", "Allow to use alpha channel of high-res texture fully." - int txHiresFullAlphaChannel = 1; - ConfigSetParameter(gliden64, "txHiresFullAlphaChannel", M64TYPE_BOOL, &txHiresFullAlphaChannel); - - // Draw on-screen display if True, otherwise don't draw OSD - int osd = 0; - ConfigSetParameter(gliden64, "OnScreenDisplay", M64TYPE_BOOL, &osd); - ConfigSetParameter(gliden64, "ShowFPS", M64TYPE_BOOL, &osd); // Show FPS counter. - ConfigSetParameter(gliden64, "ShowVIS", M64TYPE_BOOL, &osd); // Show VI/S counter. - ConfigSetParameter(gliden64, "ShowPercent", M64TYPE_BOOL, &osd); // Show percent counter. - ConfigSetParameter(gliden64, "ShowInternalResolution", M64TYPE_BOOL, &osd); // Show internal resolution. - ConfigSetParameter(gliden64, "ShowRenderingResolution", M64TYPE_BOOL, &osd); // Show rendering resolution. - - ConfigSaveSection("Video-GLideN64"); - /** End GLideN64 Config **/ -} - -static void ConfigureRICE() { - /** RICE CONFIG **/ - m64p_handle rice; - ConfigOpenSection("Video-Rice", &rice); - - // Use a faster algorithm to speed up texture loading and CRC computation - int fastTextureLoading = 0; - ConfigSetParameter(rice, "FastTextureLoading", M64TYPE_BOOL, &fastTextureLoading); - - // Enable this option to have better render-to-texture quality - int doubleSizeForSmallTextureBuffer = 0; - ConfigSetParameter(rice, "DoubleSizeForSmallTxtrBuf", M64TYPE_BOOL, &doubleSizeForSmallTextureBuffer); - - // N64 Texture Memory Full Emulation (may fix some games, may break others) - int fullTEMEmulation = 0; - ConfigSetParameter(rice, "FullTMEMEmulation", M64TYPE_BOOL, &fullTEMEmulation); - - // Use fullscreen mode if True, or windowed mode if False - int fullscreen = 1; - ConfigSetParameter(rice, "Fullscreen", M64TYPE_BOOL, &fullscreen); - - // If this option is enabled, the plugin will skip every other frame - // Breaks some games in my testing -jm - int skipFrame = 0; - ConfigSetParameter(rice, "SkipFrame", M64TYPE_BOOL, &skipFrame); - - // Enable hi-resolution texture file loading - int hiResTextures = 1; - ConfigSetParameter(rice, "LoadHiResTextures", M64TYPE_BOOL, &hiResTextures); - - // Use Mipmapping? 0=no, 1=nearest, 2=bilinear, 3=trilinear - int mipmapping = 0; - ConfigSetParameter(rice, "Mipmapping", M64TYPE_INT, &mipmapping); - - // Enable/Disable Anisotropic Filtering for Mipmapping (0=no filtering, 2-16=quality). - // This is uneffective if Mipmapping is 0. If the given value is to high to be supported by your graphic card, the value will be the highest value your graphic card can support. Better result with Trilinear filtering - int anisotropicFiltering = 16; - ConfigSetParameter(rice, "AnisotropicFiltering", M64TYPE_INT, &anisotropicFiltering); - - // Enable, Disable or Force fog generation (0=Disable, 1=Enable n64 choose, 2=Force Fog) - int fogMethod = 0; - ConfigSetParameter(rice, "FogMethod", M64TYPE_INT, &fogMethod); - - // Color bit depth to use for textures (0=default, 1=32 bits, 2=16 bits) - // 16 bit breaks some games like GoldenEye - int textureQuality = 0; - ConfigSetParameter(rice, "TextureQuality", M64TYPE_INT, &textureQuality); - - // Enable/Disable MultiSampling (0=off, 2,4,8,16=quality) - int multiSampling = RESIZE_TO_FULLSCREEN ? 4 : 0; - ConfigSetParameter(rice, "MultiSampling", M64TYPE_INT, &multiSampling); - - // Color bit depth for rendering window (0=32 bits, 1=16 bits) - int colorQuality = 0; - ConfigSetParameter(rice, "ColorQuality", M64TYPE_INT, &colorQuality); - - /** End RICE CONFIG **/ - ConfigSaveSection("Video-Rice"); -} - (void)copyIniFiles:(NSString*)romFolder { NSBundle *coreBundle = [NSBundle mainBundle]; @@ -914,6 +325,8 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { } } } + + [self parseOptions]; // Create hires folder placement [self createHiResFolder:romFolder]; @@ -1130,6 +543,10 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { // Setup configs ConfigureAll(romFolder); +#ifdef DEBUG + NSString *defaults = [[NSUserDefaults standardUserDefaults].dictionaryRepresentation debugDescription]; + DLOG(@"defaults: \n%@", defaults); +#endif return YES; } @@ -1147,17 +564,16 @@ -(EAGLContext*)bestContext { } #endif -- (void)startEmulation -{ - if(!self.isRunning) - { +- (void)startEmulation { + [self parseOptions]; + + if(!self.isRunning) { [super startEmulation]; [NSThread detachNewThreadSelector:@selector(runMupenEmuThread) toTarget:self withObject:nil]; } } -- (void)runMupenEmuThread -{ +- (void)runMupenEmuThread { @autoreleasepool { [self.renderDelegate startRenderingOnAlternateThread]; @@ -1200,8 +616,7 @@ - (void)runMupenEmuThread } } -- (m64p_error)pluginsUnload -{ +- (m64p_error)pluginsUnload { // shutdown and unload frameworks for plugins typedef m64p_error (*ptr_PluginShutdown)(void); @@ -1242,35 +657,33 @@ - (dispatch_time_t)frameTime { return killTime; } -- (void)videoInterrupt -{ - - +- (void)videoInterrupt { dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); dispatch_semaphore_wait(mupenWaitToBeginFrameSemaphore, [self frameTime]); } -- (void)swapBuffers -{ +- (void)swapBuffers { [self.renderDelegate didRenderFrameOnAlternateThread]; } -- (void)executeFrameSkippingFrame:(BOOL)skip -{ +- (void)executeFrameSkippingFrame:(BOOL)skip { dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); dispatch_semaphore_wait(coreWaitToEndFrameSemaphore, [self frameTime]); } -- (void)executeFrame -{ +- (void)executeFrame { [self executeFrameSkippingFrame:NO]; } - (void)setPauseEmulation:(BOOL)flag { [super setPauseEmulation:flag]; + [self parseOptions]; +// TODO: Fix pause +// CoreDoCommand(M64CMD_PAUSE, flag, NULL); + if (flag) { dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); @@ -1280,8 +693,9 @@ - (void)setPauseEmulation:(BOOL)flag } } -- (void)stopEmulation -{ +- (void)stopEmulation { + [_inputQueue cancelAllOperations]; + CoreDoCommand(M64CMD_STOP, 0, NULL); dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); @@ -1292,8 +706,7 @@ - (void)stopEmulation [super stopEmulation]; } -- (void)resetEmulation -{ +- (void)resetEmulation { // FIXME: do we want/need soft reset? It doesn’t seem to work well with sending M64CMD_RESET alone // FIXME: (astrange) should this method worry about this instance’s dispatch semaphores? CoreDoCommand(M64CMD_RESET, 1 /* hard reset */, NULL); @@ -1303,146 +716,6 @@ - (void)resetEmulation [self.frontBufferCondition unlock]; } -- (BOOL)saveStateToFileAtPath:(NSString *)fileName error:(NSError**)error { - NSAssert(NO, @"Shouldn't be here since we overwrite the async call"); -} - -- (void)saveStateToFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block -{ - __block BOOL wasPaused = [self isEmulationPaused]; - [self OE_addHandlerForType:M64CORE_STATE_SAVECOMPLETE usingBlock: - ^ BOOL (m64p_core_param paramType, int newValue) - { - [self setPauseEmulation:wasPaused]; - NSAssert(paramType == M64CORE_STATE_SAVECOMPLETE, @"This block should only be called for save completion!"); - if(newValue == 0) - { - - if (block) { - NSError *error = [NSError errorWithDomain:@"org.openemu.GameCore.ErrorDomain" - code:-5 - userInfo:@{ - NSLocalizedDescriptionKey : @"Mupen Could not save the current state.", - NSFilePathErrorKey : fileName - }]; - - dispatch_async(dispatch_get_main_queue(), ^{ - block(YES, nil); - }); - - } - return NO; - } - - if (block) { - dispatch_async(dispatch_get_main_queue(), ^{ - block(YES, nil); - }); - } - return NO; - }]; - - BOOL (^scheduleSaveState)(void) = - ^ BOOL { - if(CoreDoCommand(M64CMD_STATE_SAVE, 1, (void *)[fileName fileSystemRepresentation]) == M64ERR_SUCCESS) - { - // Mupen needs to run for a bit for the state saving to take place. - [self setPauseEmulation:NO]; - return YES; - } - - return NO; - }; - - if(scheduleSaveState()) return; - - [self OE_addHandlerForType:M64CORE_EMU_STATE usingBlock: - ^ BOOL (m64p_core_param paramType, int newValue) - { - NSAssert(paramType == M64CORE_EMU_STATE, @"This block should only be called for load completion!"); - if(newValue != M64EMU_RUNNING && newValue != M64EMU_PAUSED) - return YES; - - return !scheduleSaveState(); - }]; -} - - -- (BOOL)loadStateFromFileAtPath:(NSString *)fileName error:(NSError**)error { - NSAssert(NO, @"Shouldn't be here since we overwrite the async call"); -} - -- (void)loadStateFromFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block -{ - __block BOOL wasPaused = [self isEmulationPaused]; - [self OE_addHandlerForType:M64CORE_STATE_LOADCOMPLETE usingBlock: - ^ BOOL (m64p_core_param paramType, int newValue) - { - NSAssert(paramType == M64CORE_STATE_LOADCOMPLETE, @"This block should only be called for load completion!"); - - [self setPauseEmulation:wasPaused]; - if(newValue == 0) - { - dispatch_async(dispatch_get_main_queue(), ^{ - NSError *error = [NSError errorWithDomain:@"org.openemu.GameCore.ErrorDomain" - code:-3 - userInfo:@{ - NSLocalizedDescriptionKey : @"Mupen Could not load the save state", - NSLocalizedRecoverySuggestionErrorKey : @"The loaded file is probably corrupted.", - NSFilePathErrorKey : fileName - }]; - block(NO, error); - }); - return NO; - } - - dispatch_async(dispatch_get_main_queue(), ^{ - block(YES, nil); - }); - - return NO; - }]; - - BOOL (^scheduleLoadState)(void) = - ^ BOOL { - if(CoreDoCommand(M64CMD_STATE_LOAD, 1, (void *)[fileName fileSystemRepresentation]) == M64ERR_SUCCESS) - { - // Mupen needs to run for a bit for the state loading to take place. - [self setPauseEmulation:NO]; - return YES; - } - - return NO; - }; - - if(scheduleLoadState()) return; - - [self OE_addHandlerForType:M64CORE_EMU_STATE usingBlock: - ^ BOOL (m64p_core_param paramType, int newValue) - { - NSAssert(paramType == M64CORE_EMU_STATE, @"This block should only be called for load completion!"); - if(newValue != M64EMU_RUNNING && newValue != M64EMU_PAUSED) - return YES; - - return !scheduleLoadState(); - }]; -} - -- (CGSize)bufferSize -{ - return CGSizeMake(1024, 512); -} - -- (CGRect)screenRect -{ - return CGRectMake(0, 0, _videoWidth, _videoHeight); -} - -- (CGSize)aspectSize -{ - return CGSizeMake(_videoWidth, _videoHeight); -} - - (void) tryToResizeVideoTo:(CGSize)size { DLOG(@"Calling set video mode size to (%f,%f)", screenWidth, screenHeight); @@ -1452,142 +725,4 @@ - (void) tryToResizeVideoTo:(CGSize)size { } } -- (BOOL)rendersToOpenGL -{ - return YES; -} - -//- (BOOL)isDoubleBuffered { -// return YES; -//} - -- (const void *)videoBuffer -{ - return NULL; -} - -- (GLenum)pixelFormat -{ - return GL_BGRA; -} - -- (GLenum)pixelType -{ - return GL_UNSIGNED_BYTE; -} - -- (GLenum)internalPixelFormat -{ - return GL_RGBA; -} - -#pragma mark Mupen Audio - -- (NSTimeInterval)frameInterval -{ - // Mupen uses 60 but it's probably wrong - return isNTSC ? 60 : 50; -} - -- (NSUInteger)channelCount -{ - return 2; -} - -- (double)audioSampleRate -{ - return sampleRate; -} - -- (void)didMoveN64JoystickDirection:(PVN64Button)button withValue:(CGFloat)value forPlayer:(NSUInteger)player -{ - switch (button) - { - case PVN64ButtonAnalogUp: - yAxis[player] = value * N64_ANALOG_MAX; - break; - case PVN64ButtonAnalogDown: - yAxis[player] = value * -N64_ANALOG_MAX; - break; - case PVN64ButtonAnalogLeft: - xAxis[player] = value * -N64_ANALOG_MAX; - break; - case PVN64ButtonAnalogRight: - xAxis[player] = value * N64_ANALOG_MAX; - break; - default: - break; - } -} - -- (void)didPushN64Button:(PVN64Button)button forPlayer:(NSUInteger)player -{ - padData[player][button] = 1; -} - -- (void)didReleaseN64Button:(PVN64Button)button forPlayer:(NSUInteger)player -{ - padData[player][button] = 0; -} - -- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled -{ -// Need to fix ambigious main.h inclusion -// // Sanitize -// code = [code stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; -// -// // Remove any spaces -// code = [code stringByReplacingOccurrencesOfString:@" " withString:@""]; -// -// NSString *singleCode; -// NSArray *multipleCodes = [code componentsSeparatedByString:@"+"]; -// m64p_cheat_code *gsCode = (m64p_cheat_code*) calloc([multipleCodes count], sizeof(m64p_cheat_code)); -// int codeCounter = 0; -// -// for (singleCode in multipleCodes) -// { -// if ([singleCode length] == 12) // GameShark -// { -// // GameShark N64 format: XXXXXXXX YYYY -// NSString *address = [singleCode substringWithRange:NSMakeRange(0, 8)]; -// NSString *value = [singleCode substringWithRange:NSMakeRange(8, 4)]; -// -// // Convert GS hex to int -// unsigned int outAddress, outValue; -// NSScanner* scanAddress = [NSScanner scannerWithString:address]; -// NSScanner* scanValue = [NSScanner scannerWithString:value]; -// [scanAddress scanHexInt:&outAddress]; -// [scanValue scanHexInt:&outValue]; -// -// gsCode[codeCounter].address = outAddress; -// gsCode[codeCounter].value = outValue; -// codeCounter++; -// } -// } -// -// // Update address directly if code needs GS button pressed -// if ((gsCode[0].address & 0xFF000000) == 0x88000000 || (gsCode[0].address & 0xFF000000) == 0xA8000000) -// { -// *(unsigned char *)((g_rdram + ((gsCode[0].address & 0xFFFFFF)^S8))) = (unsigned char)gsCode[0].value; // Update 8-bit address -// } -// else if ((gsCode[0].address & 0xFF000000) == 0x89000000 || (gsCode[0].address & 0xFF000000) == 0xA9000000) -// { -// *(unsigned short *)((g_rdram + ((gsCode[0].address & 0xFFFFFF)^S16))) = (unsigned short)gsCode[0].value; // Update 16-bit address -// } -// // Else add code as normal -// else -// { -// enabled ? CoreAddCheat([code UTF8String], gsCode, codeCounter+1) : CoreCheatEnabled([code UTF8String], 0); -// } -} - - -@end - -@implementation MupenGameCore (Rumble) - -- (BOOL)supportsRumble { - return TRUE; -} - @end diff --git a/Cores/Mupen64Plus/MupenOptions.swift b/Cores/Mupen64Plus/MupenOptions.swift index 43599eb9fd..71c25754d6 100644 --- a/Cores/Mupen64Plus/MupenOptions.swift +++ b/Cores/Mupen64Plus/MupenOptions.swift @@ -1,55 +1,346 @@ -// -// MupenOptions.swift -// PVMupen64Plus -// -// Created by Joseph Mattiello on 4/11/18. -// Copyright © 2018 Provenance. All rights reserved. -// + // + // MupenOptions.swift + // PVMupen64Plus + // + // Created by Joseph Mattiello on 4/11/18. + // Copyright © 2018 Provenance. All rights reserved. + // import Foundation import PVSupport extension MupenGameCore: CoreOptional { -// public func valueForOption(_ option: CoreOption) -> T where T : Decodable, T : Encodable { -// -// } - - public static var options: [CoreOption] { - var options = [CoreOption]() - - let glidenOption = CoreOption.multi(display: CoreOptionValueDisplay(title: "GFX Plugin", - description: "GlideN64 is newer but slower. Try Rice for older devices."), - values: [ - CoreOptionMultiValue(title: "GlideN64", description: "Newer, GLES3 GFX Driver"), - CoreOptionMultiValue(title: "Rice Video", description: "Older, faster, less feature rich GFX Driver.") - ]) - - let rspOptions = CoreOption.multi(display: CoreOptionValueDisplay(title: "RSP Plugin", - description: nil), - values: [ - CoreOptionMultiValue(title: "RSPHLE", description: "Faster, default RSP"), - CoreOptionMultiValue(title: "CXD4", description: "Slower. More features for some games, breaks others.") - ]) - let plugins = CoreOption.group(display: CoreOptionValueDisplay(title: "Plugins", description: nil), subOptions: [glidenOption, rspOptions]) - - let hwLighting = CoreOption.bool(display: CoreOptionValueDisplay(title: "HW Lighting", description: "Per-pixel lighting"), defaultValue: false) - let videoOptions = CoreOption.group(display: CoreOptionValueDisplay(title: "Video"), subOptions: [hwLighting]) - options.append(contentsOf: [plugins, videoOptions]) - return options + // public func valueForOption(_ option: CoreOption) -> T where T : Decodable, T : Encodable { + // + // } + + // MARK: Dual-Joystick + // Use Pure Interpreter if 0, Cached Interpreter if 1, or Dynamic Recompiler if 2 or more + static var dualJoystickOption: CoreOption = { + .bool(.init( + title: "Dual joystick on first player", + description: "If 1st player controller has dual joysticks, use the right joystick as player 2. For games, such as GoldenEye, that support using 2 N64 controllers for single player input.", + requiresRestart: false)) + }() + + static func controllerPakOption(forController index: Int) -> CoreOption { + /* + #define PLUGIN_NONE 1 + #define PLUGIN_MEMPAK 2 + #define PLUGIN_RUMBLE_PAK 3 /* not implemented for non raw data */ + #define PLUGIN_TRANSFER_PAK 4 /* not implemented for non raw data */ + #define PLUGIN_RAW 5 /* the controller plugin is passed in raw data */ + */ + let defaultValue = index <= 1 ? 2 : 5 + return .enumeration(.init(title: "Controller Pak \(index)", + description: nil, + requiresRestart: true), + values:[ + .init(title: "None", description: "", value: 1), + .init(title: "Memory Pak", description: "", value: 2), +// .init(title: "Rumble Pak, description: "", value: 3), +// .init(title: "Transer Pak", description: "", value: 4), + .init(title: "Raw Data", description: "Used for Rumble or Transer Pak", value: 5), + ], + defaultValue: defaultValue) } + + static var controllerPak1: CoreOption = controllerPakOption(forController: 1) + static var controllerPak2: CoreOption = controllerPakOption(forController: 2) + static var controllerPak3: CoreOption = controllerPakOption(forController: 3) + static var controllerPak4: CoreOption = controllerPakOption(forController: 4) + + public static var options: [CoreOption] { + var options = [CoreOption]() + + // MARK: -- Plugins + + let videoPluginOption = CoreOption.multi(.init(title: "GFX Plugin", + description: "GlideN64 is newer but slower. Try Rice for older devices."), values: [ + .init(title: "GlideN64", description: "Newer, GLES3 GFX Driver"), + .init(title: "Rice Video", description: "Older, faster, less feature rich GFX Driver.")]) + + let rspOptions = CoreOption.multi(.init(title: "RSP Plugin", description: nil), values: [ + .init(title: "RSPHLE", description: "Faster, default RSP"), + .init(title: "CXD4", description: "Slower. More features for some games, breaks others.")]) + + let pluginsGroup = CoreOption.group(.init(title: "Plugins", description: nil), + subOptions: [videoPluginOption, rspOptions]) + + // MARK: -- Controls + let controlOptions: [CoreOption] = [dualJoystickOption, controllerPak1, controllerPak2, controllerPak3, controllerPak4] + let controlGroup:CoreOption = .group(.init(title: "Controls", description: ""), + subOptions: controlOptions) + + // MARK: -- Core + var coreOptions = [CoreOption]() + + // MARK: R4300Emulator + // Use Pure Interpreter if 0, Cached Interpreter if 1, or Dynamic Recompiler if 2 or more + coreOptions.append(.enumeration(.init(title: "CPU Mode", + description: nil, + requiresRestart: true), + values:[ + .init(title: "Pure Interpreter", description: "Slowest", value: 0), + .init(title: "Cached Interpreter", description: "Default", value: 1), + .init(title: "Dynamic Recompiler", description: "Fastest but bequires JIT or will crash", value: 2)], + defaultValue: 1)) + + let coreGroup:CoreOption = .group(.init(title: "Mupen Core", description: "Global options for Mupen"), + subOptions: coreOptions) + + // MARK: -- GLideN64 + var glidenOptions = [CoreOption]() + +#warning("Maybe make an enum type for core options?") + // MARK: AspectRatio + // 0 = stretch, 1 = 4:3, 2 = 16:9, 3 = adjust + glidenOptions.append(.enumeration(.init(title: "Aspect Ratio", + description: nil, + requiresRestart: true), + values:[ + .init(title: "Stretch", description: "Slowest", value: 0), + .init(title: "4:3", description: "Default", value: 1), + .init(title: "16:9", description: "Fastest but bequires JIT or will crash", value: 2), + .init(title: "Adjust", description: "Default", value: 3)], + defaultValue: 3)) + + + // MARK: EnableHWLighting + glidenOptions.append(.bool(.init(title: "Hardware Lighting", description: "Per-pixel lighting", requiresRestart: true), defaultValue: true)) + // MARK: fullscreenRefresh + + // MARK: MultiSampling + // "Enable/Disable MultiSampling (0=off, 2,4,8,16=quality + // WARNING: anything other than 0 crashes shader compilation + glidenOptions.append(.enumeration(.init(title: "Multi Sampling", + description: "Anything other than Off will probably crash. You've been warned.", + requiresRestart: true), + values:[ + .init(title: "Off", description: "", value: 0), + .init(title: "2x", description: "", value: 2), + .init(title: "4x", description: "", value: 4), + .init(title: "8x", description: "", value: 8), + .init(title: "16x", description: "", value: 16)])) + + // MARK: ForceGammaCorrection + glidenOptions.append(.bool(.init(title: "Force Gamma Correction", description: nil, requiresRestart: true), defaultValue: false)) + + // MARK: gammaCorrection + glidenOptions.append(.rangef(.init(title: "Gamma Correction", description: "Stength of gamma correction", requiresRestart: true), range: CoreOptionRange(defaultValue: 0.5, min: 0, max: 1), defaultValue: 0.5)) + + // MARK: --- Textures + + // MARK: txSaveCache + glidenOptions.append(.bool(.init(title: "Save texture cache", description: "Save textures to cache for faster loading later", requiresRestart: true), defaultValue: true)) + + // MARK: txCacheCompression + glidenOptions.append(.bool(.init(title: "Compress texture cache", description: "Compress Texture Cache", requiresRestart: true), defaultValue: true)) + + // MARK: txEnhancementMode + // 0=none, 1=store as is, 2=X2, 3=X2SAI, 4=HQ2X, 5=HQ2XS, 6=LQ2X, 7=LQ2XS, 8=HQ4X, 9=2xBRZ, 10=3xBRZ, 11=4xBRZ, 12=5xBRZ), 13=6xBRZ + glidenOptions.append(.enumeration(.init(title: "Texture Enhancement Mode", + description: nil, + requiresRestart: true), + values:[ + .init(title: "None", description: "", value: 0), + .init(title: "Store as-is", description: "", value: 1), + .init(title: "X2", description: "", value: 2), + .init(title: "X2SAI", description: "", value: 3), + .init(title: "HQ2X", description: "", value: 4), + .init(title: "HQ2XS", description: "", value: 5), + .init(title: "LQ2X", description: "", value: 6), + .init(title: "LQXS", description: "", value: 7), + .init(title: "HQ4X", description: "", value: 8), + .init(title: "2xBRZ", description: "", value: 9), + .init(title: "3xBZ", description: "", value: 10), + .init(title: "4xBRZ", description: "", value: 11), + .init(title: "5xBRZ", description: "", value: 12), + .init(title: "6xBRZ", description: "", value: 13), + ], + defaultValue: 0)) + + // MARK: txFilterMode + // Texture filter (0=none, 1=Smooth filtering 1, 2=Smooth filtering 2, 3=Smooth filtering 3, 4=Smooth filtering 4, 5=Sharp filtering 1, 6=Sharp filtering 2) + glidenOptions.append(.enumeration(.init(title: "Texture Filter Mode", + description: nil, + requiresRestart: true), + values:[ + .init(title: "None", description: "", value: 0), + .init(title: "Smooth 1", description: "", value: 1), + .init(title: "Smooth 2", description: "", value: 2), + .init(title: "Smooth 3", description: "", value: 3), + .init(title: "Smooth 4", description: "", value: 4), + .init(title: "Sharp 1", description: "", value: 5), + .init(title: "Sharp 2", description: "", value: 6), + ])) + + + + // MARK: txFilterIgnoreBG + // "Don't filter background textures." + glidenOptions.append(.bool(.init(title: "Ignore BG Textures", description: "Don't filter background textures.", requiresRestart: true), defaultValue: false)) + + // MARK: txCacheSize + // MARK: txDump + // "Enable dump of loaded N64 textures. + glidenOptions.append(.bool(.init(title: "Texture Dump", description: "Enable dump of loaded N64 textures.", requiresRestart: true), defaultValue: false)) + + // MARK: txForce16bpp + // "Force use 16bit texture formats for HD textures." + glidenOptions.append(.bool(.init(title: "Force 16bpp textures", description: "Force use 16bit texture formats for HD textures.", requiresRestart: true), defaultValue: false)) + + // MARK: ---- HiRes + // MARK: txHiresEnable + glidenOptions.append(.bool(.init(title: "Enable HiRes Texture packs", description: "These must be installed seperately. Refer to our WIKI for HD textures.", requiresRestart: true), defaultValue: true)) + + // MARK: txHresAltCRC + // "Use alternative method of paletted textures CRC calculation." + glidenOptions.append(.bool(.init(title: "HiRes Alt CRC", description: "Use alternative method of paletted textures CRC calculation.", requiresRestart: true), defaultValue: false)) + + // MARK: txHiresFullAlphaChannel + // "Allow to use alpha channel of high-res texture fully." + glidenOptions.append(.bool(.init(title: "HiRes Full Alpha", description: "Allow to use alpha channel of high-res texture fully.", requiresRestart: true), defaultValue: true)) + + // MARK: --- DEBUG + // MARK: OSD + // Draw on-screen display if True, otherwise don't draw OSD + glidenOptions.append(.bool(.init(title: "Debug OSD", description: "Draw on-screen display if True, otherwise don't draw OSD", requiresRestart: true), defaultValue: false)) + + // MARK: --- Bloom + glidenOptions.append(.bool(.init(title: "Bloom filter", description: nil, requiresRestart: true), defaultValue: false)) + // TODO: Add another sub-group, auto disable if off (maybe more work than worth) + + // [bloomFilter] + // enable=0 + // thresholdLevel=4 + // blendMode=0 + // blurAmount=10 + // blurStrength=20 + + let glidenGroup:CoreOption = .group(.init(title: "GLideN64", description: "Options specific to the GLideN64 video plugin"), + subOptions: glidenOptions) + + // MARK: -- RICE + var riceOptions = [CoreOption]() + + riceOptions.append(.bool(.init(title: "Fast Texture Loading", description: "Use a faster algorithm to speed up texture loading and CRC computation", requiresRestart: true), defaultValue: false)) + + riceOptions.append(.bool(.init(title: "DoubleSizeForSmallTxtrBuf", description: "Enable this option to have better render-to-texture quality", requiresRestart: true), defaultValue: true)) + + riceOptions.append(.bool(.init(title: "FullTMEMEmulation", description: "N64 Texture Memory Full Emulation (may fix some games, may break others)", requiresRestart: true), defaultValue: false)) + + riceOptions.append(.bool(.init(title: "SkipFrame", description: "If this option is enabled, the plugin will skip every other frame. Breaks some games in my testing ", requiresRestart: true), defaultValue: false)) + + riceOptions.append(.bool(.init(title: "LoadHiResTextures", description: "Enable hi-resolution texture file loading", requiresRestart: true), defaultValue: true)) + + /* + + // Use fullscreen mode if True, or windowed mode if False + int fullscreen = 1; + ConfigSetParameter(rice, "Fullscreen", M64TYPE_BOOL, &fullscreen); + + // Use Mipmapping? 0=no, 1=nearest, 2=bilinear, 3=trilinear + int mipmapping = 0; + ConfigSetParameter(rice, "Mipmapping", M64TYPE_INT, &mipmapping); + + // Enable/Disable Anisotropic Filtering for Mipmapping (0=no filtering, 2-16=quality). + // This is uneffective if Mipmapping is 0. If the given value is to high to be supported by your graphic card, the value will be the highest value your graphic card can support. Better result with Trilinear filtering + int anisotropicFiltering = 16; + ConfigSetParameter(rice, "AnisotropicFiltering", M64TYPE_INT, &anisotropicFiltering); + + // Enable, Disable or Force fog generation (0=Disable, 1=Enable n64 choose, 2=Force Fog) + int fogMethod = 0; + ConfigSetParameter(rice, "FogMethod", M64TYPE_INT, &fogMethod); + + // Color bit depth to use for textures (0=default, 1=32 bits, 2=16 bits) + // 16 bit breaks some games like GoldenEye + int textureQuality = 0; + ConfigSetParameter(rice, "TextureQuality", M64TYPE_INT, &textureQuality); + + // Enable/Disable MultiSampling (0=off, 2,4,8,16=quality) + int multiSampling = RESIZE_TO_FULLSCREEN ? 4 : 0; + ConfigSetParameter(rice, "MultiSampling", M64TYPE_INT, &multiSampling); + + // Color bit depth for rendering window (0=32 bits, 1=16 bits) + int colorQuality = 0; + ConfigSetParameter(rice, "ColorQuality", M64TYPE_INT, &colorQuality); + */ + // MARK: ColorQuality + // 0 = 32 bits, 1 = 16 bits + riceOptions.append(.multi(.init(title: "Color Quality", + description: "Color bit depth for rendering window", + requiresRestart: true), + values:[ + .init(title: "32 Bits", description: ""), + .init(title: "16 Bits", description: "")])) + + let riceGroup:CoreOption = .group(.init(title: "RICE", description: "Options specific to the RICE video plugin"), + subOptions: riceOptions) + + + + // MARK: -- Video (Globa) + // let videoGroup = CoreOption.group(.init(title: "Video"), + // subOptions: [glidenGroup, riceGroup]) + + options.append(contentsOf: [coreGroup, pluginsGroup, controlGroup, /*videoGroup,*/ glidenGroup, riceGroup]) + return options + } } @objc extension MupenGameCore { - public static var useRice: Bool { - return valueForOption(String.self, "GFX Plugin") == "Rice Video" - } + // TODO: move these generall accessors somewhere global, maybe use dynamicC + @objc + static public func bool(forOption option: String) -> Bool { + return storedValueForOption(Bool.self, option) ?? false + } - public static var useCXD4: Bool { - return valueForOption(String.self, "RSP Plugin") == "CXD4" - } + @objc + static public func int(forOption option: String) -> Int { + let value = storedValueForOption(Int.self, option) + return value ?? 0 + } + + @objc + static public func float(forOption option: String) -> Float { + let value = storedValueForOption(Float.self, option) + return value ?? 0 + } + + @objc + static public func string(forOption option: String) -> String? { + let value = storedValueForOption(String.self, option) + return value + } + + public static var useRice: Bool { + return storedValueForOption(String.self, "GFX Plugin") == "Rice Video" + } + + public static var useCXD4: Bool { + return storedValueForOption(String.self, "RSP Plugin") == "CXD4" + } + + public static var perPixelLighting: Bool { + return storedValueForOption(Bool.self, "Hardware Lighting") ?? false + } +} + +@objc public extension MupenGameCore { + @objc var dualJoystickOption: Bool { MupenGameCore.valueForOption(MupenGameCore.dualJoystickOption).asBool } + + @objc var controllerPak1Option: Int { MupenGameCore.valueForOption(MupenGameCore.controllerPak1).asInt ?? 1 } + @objc var controllerPak2Option: Int { MupenGameCore.valueForOption(MupenGameCore.controllerPak2).asInt ?? 1 } + @objc var controllerPak3Option: Int { MupenGameCore.valueForOption(MupenGameCore.controllerPak3).asInt ?? 1 } + @objc var controllerPak4Option: Int { MupenGameCore.valueForOption(MupenGameCore.controllerPak4).asInt ?? 1 } - public static var perPixelLighting: Bool { - return valueForOption(Bool.self, "HW Lighting") ?? false + func parseOptions() { + self.dualJoystick = dualJoystickOption + self.setMode(controllerPak1Option, forController: 0) + self.setMode(controllerPak2Option, forController: 1) + self.setMode(controllerPak3Option, forController: 2) + self.setMode(controllerPak4Option, forController: 3) } } diff --git a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/project.pbxproj b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/project.pbxproj index 3b625435a2..6b92fb002a 100644 --- a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/project.pbxproj +++ b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/project.pbxproj @@ -60,6 +60,10 @@ B35B31CF206CA72A00AEAF88 /* xxhash.c in Sources */ = {isa = PBXBuildFile; fileRef = DFB6032F2038AE7B001E70F1 /* xxhash.c */; }; B369B0DF21A3D7F90064EDCA /* MupenOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35E6C3B207EE3750040709A /* MupenOptions.swift */; }; B369B0E021A3D7FB0064EDCA /* MupenOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35E6C3B207EE3750040709A /* MupenOptions.swift */; }; + B36EF42F279C5284005C7ED4 /* r4300_core.h in Headers */ = {isa = PBXBuildFile; fileRef = B3055A712072FEE9001212D2 /* r4300_core.h */; }; + B36EF430279C5286005C7ED4 /* r4300_core.h in Headers */ = {isa = PBXBuildFile; fileRef = B3055A712072FEE9001212D2 /* r4300_core.h */; }; + B36EF438279C55A4005C7ED4 /* asm_defines.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A092072FEE9001212D2 /* asm_defines.c */; }; + B36EF439279C55A4005C7ED4 /* asm_defines.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A092072FEE9001212D2 /* asm_defines.c */; }; B37263B326EA161100E95488 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B37263A326EA0D6700E95488 /* libz.tbd */; }; B37263B426EA163600E95488 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B37263A326EA0D6700E95488 /* libz.tbd */; }; B37263B526EA164900E95488 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B37263A326EA0D6700E95488 /* libz.tbd */; }; @@ -97,6 +101,26 @@ B3962AEC26FBD89A00FAEFC0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3962AEB26FBD89A00FAEFC0 /* OpenGL.framework */; platformFilter = maccatalyst; }; B3962AED26FBD8A500FAEFC0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3962AEB26FBD89A00FAEFC0 /* OpenGL.framework */; platformFilter = maccatalyst; }; B3962AEE26FBD8F100FAEFC0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3962AEB26FBD89A00FAEFC0 /* OpenGL.framework */; platformFilter = maccatalyst; }; + B3963E61279E835300B00117 /* MupenGameCore+Audio.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3963E60279E835300B00117 /* MupenGameCore+Audio.swift */; }; + B3963E62279E835300B00117 /* MupenGameCore+Audio.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3963E60279E835300B00117 /* MupenGameCore+Audio.swift */; }; + B3963E64279E867100B00117 /* MupenGameCore+Video.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3963E63279E866B00B00117 /* MupenGameCore+Video.swift */; }; + B3963E65279E867100B00117 /* MupenGameCore+Video.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3963E63279E866B00B00117 /* MupenGameCore+Video.swift */; }; + B39C29D127A120790078D028 /* MupenGameCore+Controls.m in Sources */ = {isa = PBXBuildFile; fileRef = B39C29D027A120780078D028 /* MupenGameCore+Controls.m */; }; + B39C29D227A120790078D028 /* MupenGameCore+Controls.m in Sources */ = {isa = PBXBuildFile; fileRef = B39C29D027A120780078D028 /* MupenGameCore+Controls.m */; }; + B39C29D427A121160078D028 /* MupenGameCore+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = B39C29D327A121150078D028 /* MupenGameCore+Controls.h */; }; + B39C29D527A121160078D028 /* MupenGameCore+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = B39C29D327A121150078D028 /* MupenGameCore+Controls.h */; }; + B39C29D827A12D100078D028 /* MupenGameCore+Cheats.h in Headers */ = {isa = PBXBuildFile; fileRef = B39C29D627A12D0F0078D028 /* MupenGameCore+Cheats.h */; }; + B39C29D927A12D100078D028 /* MupenGameCore+Cheats.h in Headers */ = {isa = PBXBuildFile; fileRef = B39C29D627A12D0F0078D028 /* MupenGameCore+Cheats.h */; }; + B39C29DA27A12D100078D028 /* MupenGameCore+Cheats.m in Sources */ = {isa = PBXBuildFile; fileRef = B39C29D727A12D0F0078D028 /* MupenGameCore+Cheats.m */; }; + B39C29DB27A12D100078D028 /* MupenGameCore+Cheats.m in Sources */ = {isa = PBXBuildFile; fileRef = B39C29D727A12D0F0078D028 /* MupenGameCore+Cheats.m */; }; + B39C29DE27A12DA30078D028 /* MupenGameCore+Saves.h in Headers */ = {isa = PBXBuildFile; fileRef = B39C29DC27A12DA20078D028 /* MupenGameCore+Saves.h */; }; + B39C29DF27A12DA30078D028 /* MupenGameCore+Saves.h in Headers */ = {isa = PBXBuildFile; fileRef = B39C29DC27A12DA20078D028 /* MupenGameCore+Saves.h */; }; + B39C29E027A12DA30078D028 /* MupenGameCore+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B39C29DD27A12DA30078D028 /* MupenGameCore+Saves.m */; }; + B39C29E127A12DA30078D028 /* MupenGameCore+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B39C29DD27A12DA30078D028 /* MupenGameCore+Saves.m */; }; + B39C29E427A12E6A0078D028 /* MupenGameCore+Mupen.h in Headers */ = {isa = PBXBuildFile; fileRef = B39C29E227A12E690078D028 /* MupenGameCore+Mupen.h */; }; + B39C29E527A12E6A0078D028 /* MupenGameCore+Mupen.h in Headers */ = {isa = PBXBuildFile; fileRef = B39C29E227A12E690078D028 /* MupenGameCore+Mupen.h */; }; + B39C29E627A12E6A0078D028 /* MupenGameCore+Mupen.m in Sources */ = {isa = PBXBuildFile; fileRef = B39C29E327A12E6A0078D028 /* MupenGameCore+Mupen.m */; }; + B39C29E727A12E6A0078D028 /* MupenGameCore+Mupen.m in Sources */ = {isa = PBXBuildFile; fileRef = B39C29E327A12E6A0078D028 /* MupenGameCore+Mupen.m */; }; B39E8CB62053B53100380DCD /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B39E8CB52053B53100380DCD /* Core.plist */; }; B3A302F22073F2D4008C1955 /* RiceVideoLinux.ini in Resources */ = {isa = PBXBuildFile; fileRef = B3A302912073F2AA008C1955 /* RiceVideoLinux.ini */; }; B3A302F32073F2F2008C1955 /* osal_dynamiclib_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = B3A302C12073F2AA008C1955 /* osal_dynamiclib_unix.c */; }; @@ -509,6 +533,16 @@ B3C3F47021A9CBFB00EFB09C /* glsl_FXAA.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F46D21A9CBFB00EFB09C /* glsl_FXAA.h */; }; B3C3F47121A9CBFB00EFB09C /* glsl_FXAA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F46E21A9CBFB00EFB09C /* glsl_FXAA.cpp */; }; B3C3F47221A9CBFB00EFB09C /* glsl_FXAA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F46E21A9CBFB00EFB09C /* glsl_FXAA.cpp */; }; + B3C83E1727960C0F0020824C /* mupencheat.txt in Resources */ = {isa = PBXBuildFile; fileRef = B30559E22072FEE9001212D2 /* mupencheat.txt */; }; + B3C83E1827960C100020824C /* mupencheat.txt in Resources */ = {isa = PBXBuildFile; fileRef = B30559E22072FEE9001212D2 /* mupencheat.txt */; }; + B3C83E1B279617760020824C /* assem_arm.h in Headers */ = {isa = PBXBuildFile; fileRef = B3055A852072FEE9001212D2 /* assem_arm.h */; }; + B3C83E1C279617780020824C /* assem_arm.h in Headers */ = {isa = PBXBuildFile; fileRef = B3055A852072FEE9001212D2 /* assem_arm.h */; }; + B3C83E1D2796177C0020824C /* assem_x86.h in Headers */ = {isa = PBXBuildFile; fileRef = B3055A812072FEE9001212D2 /* assem_x86.h */; }; + B3C83E1F2796177E0020824C /* assem_x86.h in Headers */ = {isa = PBXBuildFile; fileRef = B3055A812072FEE9001212D2 /* assem_x86.h */; }; + B3C83E21279618AD0020824C /* hvqm.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C83E20279618A30020824C /* hvqm.c */; }; + B3C83E22279618AD0020824C /* hvqm.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C83E20279618A30020824C /* hvqm.c */; }; + B3C83E23279619400020824C /* ucodes.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AE1F2820733D3500AD06D4 /* ucodes.h */; }; + B3C83E24279619420020824C /* ucodes.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AE1F2820733D3500AD06D4 /* ucodes.h */; }; B3CB4B21206E54D20074706B /* Log_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3CB4B20206E54D10074706B /* Log_ios.mm */; }; B3CB4B22206E54D20074706B /* Log_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3CB4B20206E54D10074706B /* Log_ios.mm */; }; B3EA447C206E10C700E608F6 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3EA447B206E10C700E608F6 /* OpenGLES.framework */; platformFilter = ios; }; @@ -1022,6 +1056,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + B31737FF2783F925002D3ACD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 089C1669FE841209C02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3303E4B1DED23C600896D96; + remoteInfo = "png-iOS"; + }; B34AB5FF2106DFFE00C45F09 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 089C1669FE841209C02AAC07 /* Project object */; @@ -1478,6 +1519,12 @@ B34CB0ED2274BA8C009134B4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; B35B31CB206CA65900AEAF88 /* CRC_OPT_NEON.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CRC_OPT_NEON.cpp; sourceTree = ""; }; B35E6C3B207EE3750040709A /* MupenOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MupenOptions.swift; sourceTree = ""; }; + B36EF440279C5AB1005C7ED4 /* assem_arm64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assem_arm64.h; sourceTree = ""; }; + B36EF441279C5AB1005C7ED4 /* linkage_arm64.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = linkage_arm64.S; sourceTree = ""; }; + B36EF442279C5AB1005C7ED4 /* assem_arm64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = assem_arm64.c; sourceTree = ""; }; + B36EF444279C5AB1005C7ED4 /* linkage_x64.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = linkage_x64.asm; sourceTree = ""; }; + B36EF445279C5AB1005C7ED4 /* assem_x64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assem_x64.h; sourceTree = ""; }; + B36EF446279C5AB1005C7ED4 /* assem_x64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = assem_x64.c; sourceTree = ""; }; B37263A326EA0D6700E95488 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.0.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; B37263B626EA164E00E95488 /* libdl.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libdl.tbd; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.0.sdk/usr/lib/libdl.tbd; sourceTree = DEVELOPER_DIR; }; B37EFEF01C72E63300857158 /* PVMupen64PlusVideoRice.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVMupen64PlusVideoRice.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1490,6 +1537,16 @@ B380101320854EAA00FA03B8 /* TxDbg_ios.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TxDbg_ios.mm; sourceTree = ""; }; B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; }; B3962AEB26FBD89A00FAEFC0 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; + B3963E60279E835300B00117 /* MupenGameCore+Audio.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MupenGameCore+Audio.swift"; sourceTree = ""; }; + B3963E63279E866B00B00117 /* MupenGameCore+Video.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "MupenGameCore+Video.swift"; sourceTree = ""; }; + B39C29D027A120780078D028 /* MupenGameCore+Controls.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MupenGameCore+Controls.m"; sourceTree = ""; }; + B39C29D327A121150078D028 /* MupenGameCore+Controls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MupenGameCore+Controls.h"; sourceTree = ""; }; + B39C29D627A12D0F0078D028 /* MupenGameCore+Cheats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MupenGameCore+Cheats.h"; sourceTree = ""; }; + B39C29D727A12D0F0078D028 /* MupenGameCore+Cheats.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MupenGameCore+Cheats.m"; sourceTree = ""; }; + B39C29DC27A12DA20078D028 /* MupenGameCore+Saves.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MupenGameCore+Saves.h"; sourceTree = ""; }; + B39C29DD27A12DA30078D028 /* MupenGameCore+Saves.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MupenGameCore+Saves.m"; sourceTree = ""; }; + B39C29E227A12E690078D028 /* MupenGameCore+Mupen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MupenGameCore+Mupen.h"; sourceTree = ""; }; + B39C29E327A12E6A0078D028 /* MupenGameCore+Mupen.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MupenGameCore+Mupen.m"; sourceTree = ""; }; B39E8CB52053B53100380DCD /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; B3A302852073F2AA008C1955 /* INSTALL */ = {isa = PBXFileReference; lastKnownFileType = text; path = INSTALL; sourceTree = ""; }; B3A302862073F2AA008C1955 /* LICENSES */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSES; sourceTree = ""; }; @@ -1726,6 +1783,7 @@ B3C3F40821A9CBAA00EFB09C /* F3DBETA.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = F3DBETA.cpp; sourceTree = ""; }; B3C3F46D21A9CBFB00EFB09C /* glsl_FXAA.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glsl_FXAA.h; sourceTree = ""; }; B3C3F46E21A9CBFB00EFB09C /* glsl_FXAA.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_FXAA.cpp; sourceTree = ""; }; + B3C83E20279618A30020824C /* hvqm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hvqm.c; sourceTree = ""; }; B3CB4B20206E54D10074706B /* Log_ios.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Log_ios.mm; sourceTree = ""; }; B3EA447B206E10C700E608F6 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; B3EA4488206E372400E608F6 /* TextDrawerStub.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextDrawerStub.cpp; sourceTree = ""; }; @@ -2352,7 +2410,17 @@ children = ( 3D208F801182B00300BEAA42 /* MupenGameCore.h */, 3D208F811182B00300BEAA42 /* MupenGameCore.m */, + B39C29E227A12E690078D028 /* MupenGameCore+Mupen.h */, + B39C29E327A12E6A0078D028 /* MupenGameCore+Mupen.m */, + B39C29D327A121150078D028 /* MupenGameCore+Controls.h */, + B39C29D027A120780078D028 /* MupenGameCore+Controls.m */, + B39C29D627A12D0F0078D028 /* MupenGameCore+Cheats.h */, + B39C29D727A12D0F0078D028 /* MupenGameCore+Cheats.m */, + B39C29DC27A12DA20078D028 /* MupenGameCore+Saves.h */, + B39C29DD27A12DA30078D028 /* MupenGameCore+Saves.m */, B35E6C3B207EE3750040709A /* MupenOptions.swift */, + B3963E63279E866B00B00117 /* MupenGameCore+Video.swift */, + B3963E60279E835300B00117 /* MupenGameCore+Audio.swift */, ); name = Classes; sourceTree = ""; @@ -2916,6 +2984,8 @@ B3055A7B2072FEE9001212D2 /* new_dynarec */ = { isa = PBXGroup; children = ( + B36EF43F279C5AB1005C7ED4 /* arm64 */, + B36EF443279C5AB1005C7ED4 /* x64 */, B3055A7C2072FEE9001212D2 /* new_dynarec.h */, B3055A7D2072FEE9001212D2 /* new_dynarec.c */, B3055A7E2072FEE9001212D2 /* x86 */, @@ -3113,6 +3183,26 @@ path = PVRSPCXD4; sourceTree = ""; }; + B36EF43F279C5AB1005C7ED4 /* arm64 */ = { + isa = PBXGroup; + children = ( + B36EF440279C5AB1005C7ED4 /* assem_arm64.h */, + B36EF441279C5AB1005C7ED4 /* linkage_arm64.S */, + B36EF442279C5AB1005C7ED4 /* assem_arm64.c */, + ); + path = arm64; + sourceTree = ""; + }; + B36EF443279C5AB1005C7ED4 /* x64 */ = { + isa = PBXGroup; + children = ( + B36EF444279C5AB1005C7ED4 /* linkage_x64.asm */, + B36EF445279C5AB1005C7ED4 /* assem_x64.h */, + B36EF446279C5AB1005C7ED4 /* assem_x64.c */, + ); + path = x64; + sourceTree = ""; + }; B37EFEF11C72E63300857158 /* PVMupen64PlusVideoRice */ = { isa = PBXGroup; children = ( @@ -3422,6 +3512,7 @@ B3AE1F2920733D3500AD06D4 /* audio.c */, B3AE1F1E20733D3500AD06D4 /* cicx105.c */, B3AE1F1620733D3500AD06D4 /* hle.c */, + B3C83E20279618A30020824C /* hvqm.c */, B3AE1F1120733D3500AD06D4 /* jpeg.c */, B3AE1F1220733D3500AD06D4 /* memory.c */, B3AE1F2720733D3500AD06D4 /* mp3.c */, @@ -4403,8 +4494,15 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + B39C29DE27A12DA30078D028 /* MupenGameCore+Saves.h in Headers */, + B39C29D827A12D100078D028 /* MupenGameCore+Cheats.h in Headers */, + B36EF42F279C5284005C7ED4 /* r4300_core.h in Headers */, + B39C29E427A12E6A0078D028 /* MupenGameCore+Mupen.h in Headers */, B3B3B8581DECE9E100602746 /* MupenGameCore.h in Headers */, + B3C83E1B279617760020824C /* assem_arm.h in Headers */, + B39C29D427A121160078D028 /* MupenGameCore+Controls.h in Headers */, B3B3B8A01DED04CE00602746 /* PVMupen64Plus.h in Headers */, + B3C83E1D2796177C0020824C /* assem_x86.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4413,6 +4511,7 @@ buildActionMask = 2147483647; files = ( B3B3B8641DECEA9100602746 /* PVMupen64PlusRspHLE.h in Headers */, + B3C83E23279619400020824C /* ucodes.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4420,8 +4519,15 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + B39C29DF27A12DA30078D028 /* MupenGameCore+Saves.h in Headers */, + B39C29D927A12D100078D028 /* MupenGameCore+Cheats.h in Headers */, + B36EF430279C5286005C7ED4 /* r4300_core.h in Headers */, + B39C29E527A12E6A0078D028 /* MupenGameCore+Mupen.h in Headers */, B3B3B9001DED130B00602746 /* MupenGameCore.h in Headers */, + B3C83E1C279617780020824C /* assem_arm.h in Headers */, + B39C29D527A121160078D028 /* MupenGameCore+Controls.h in Headers */, B3B3B9021DED130B00602746 /* PVMupen64Plus.h in Headers */, + B3C83E1F2796177E0020824C /* assem_x86.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4438,6 +4544,7 @@ buildActionMask = 2147483647; files = ( B3B3B94E1DED13A200602746 /* PVMupen64PlusRspHLE.h in Headers */, + B3C83E24279619420020824C /* ucodes.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4966,6 +5073,7 @@ buildRules = ( ); dependencies = ( + B31738002783F925002D3ACD /* PBXTargetDependency */, ); name = "glidenhq-iOS"; productName = glidenhq; @@ -5233,6 +5341,7 @@ files = ( B316B4E9219275A800693472 /* GLideN64.custom.ini in Resources */, B316B4EB219275A800693472 /* RiceVideoLinux.ini in Resources */, + B3C83E1727960C0F0020824C /* mupencheat.txt in Resources */, B3AF47E321072BCB002211EE /* mupen64plus.ini in Resources */, B39E8CB62053B53100380DCD /* Core.plist in Resources */, B316B4EA219275A800693472 /* GLideN64.ini in Resources */, @@ -5252,6 +5361,7 @@ files = ( B316B4EC219275A900693472 /* GLideN64.custom.ini in Resources */, B316B4EE219275A900693472 /* RiceVideoLinux.ini in Resources */, + B3C83E1827960C100020824C /* mupencheat.txt in Resources */, B3AF47E421072BCC002211EE /* mupen64plus.ini in Resources */, B3547B462058531200CFF7D8 /* Core.plist in Resources */, B316B4ED219275A900693472 /* GLideN64.ini in Resources */, @@ -5389,6 +5499,7 @@ buildActionMask = 2147483647; files = ( B3AE1DC7207312BB00AD06D4 /* screenshot.m in Sources */, + B3963E61279E835300B00117 /* MupenGameCore+Audio.swift in Sources */, B3AE1DC1207311E900AD06D4 /* vidext.m in Sources */, B3AE1D8B207311E900AD06D4 /* eventloop.m in Sources */, B3AE1DC8207312E000AD06D4 /* main.m in Sources */, @@ -5408,6 +5519,7 @@ B3AE1DA2207311E900AD06D4 /* af_rtc.c in Sources */, B3AE1D93207311E900AD06D4 /* memory.c in Sources */, B3AE1D9A207311E900AD06D4 /* interrupt.c in Sources */, + B39C29E627A12E6A0078D028 /* MupenGameCore+Mupen.m in Sources */, B3AE1DB5207311E900AD06D4 /* cic.c in Sources */, B3AE1DBE207311E900AD06D4 /* plugin.c in Sources */, B3AE1D82207311E900AD06D4 /* device.c in Sources */, @@ -5427,13 +5539,17 @@ B3AE1DBC207311E900AD06D4 /* rsp_core.c in Sources */, B3AE1D9F207311E900AD06D4 /* eeprom.c in Sources */, B3AE1DD520732E5200AD06D4 /* unzip.c in Sources */, + B39C29D127A120790078D028 /* MupenGameCore+Controls.m in Sources */, B3AE1DB8207311E900AD06D4 /* rumblepak.c in Sources */, + B39C29DA27A12D100078D028 /* MupenGameCore+Cheats.m in Sources */, B3AE1DA7207311E900AD06D4 /* input_plugin_compat.c in Sources */, + B36EF438279C55A4005C7ED4 /* asm_defines.c in Sources */, B3AE1D84207311E900AD06D4 /* dynamiclib_unix.c in Sources */, B3AE1DAE207311E900AD06D4 /* sram.c in Sources */, B3AE1DD720732E5200AD06D4 /* ioapi.c in Sources */, B3AE1D94207311E900AD06D4 /* files_macos.c in Sources */, B3AE1D83207311E900AD06D4 /* savestates.c in Sources */, + B3963E64279E867100B00117 /* MupenGameCore+Video.swift in Sources */, B3AE1DAB207311E900AD06D4 /* dummy_input.c in Sources */, B3AE1D81207311E900AD06D4 /* bootrom_hle.c in Sources */, B3AE1DBF207311E900AD06D4 /* ri_controller.c in Sources */, @@ -5451,6 +5567,7 @@ B3AE1DB1207311E900AD06D4 /* debugger.c in Sources */, B3AE1DCC207317BE00AD06D4 /* idec.c in Sources */, B3AE1DAA207311E900AD06D4 /* sdl_key_converter.c in Sources */, + B39C29E027A12DA30078D028 /* MupenGameCore+Saves.m in Sources */, B3AE1D7D207311E900AD06D4 /* cp1.c in Sources */, B3AE1DC6207311E900AD06D4 /* transferpak.c in Sources */, B3AE1DB7207311E900AD06D4 /* clock_ctime_plus_delta.c in Sources */, @@ -5538,6 +5655,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + B3C83E21279618AD0020824C /* hvqm.c in Sources */, B3AE1F4420733D6000AD06D4 /* alist_audio.c in Sources */, B3AE1F4520733D6000AD06D4 /* alist_naudio.c in Sources */, B3AE1F4620733D6000AD06D4 /* alist_nead.c in Sources */, @@ -5560,6 +5678,7 @@ buildActionMask = 2147483647; files = ( B3AE1E022073378600AD06D4 /* ioapi.c in Sources */, + B3963E62279E835300B00117 /* MupenGameCore+Audio.swift in Sources */, B3AE1DED2073378600AD06D4 /* plugin.c in Sources */, B3AE1DDE2073378600AD06D4 /* md5.c in Sources */, B3AE1E1B2073378600AD06D4 /* game_controller.c in Sources */, @@ -5579,6 +5698,7 @@ B3AE1E0A2073378600AD06D4 /* gb_cart.c in Sources */, B3AE1DFE2073378600AD06D4 /* rumblepak.c in Sources */, B3AE1E082073378600AD06D4 /* cheat.c in Sources */, + B39C29E727A12E6A0078D028 /* MupenGameCore+Mupen.m in Sources */, B3AE1E072073378600AD06D4 /* ri_controller.c in Sources */, B3AE1E0C2073378600AD06D4 /* cart_rom.c in Sources */, B3AE1E0D2073378600AD06D4 /* tlb.c in Sources */, @@ -5598,12 +5718,16 @@ B3AE1E012073378600AD06D4 /* sram.c in Sources */, B3AE1E1D2073378600AD06D4 /* dummy_video.c in Sources */, B3AE1DFB2073378600AD06D4 /* rsp_core.c in Sources */, + B39C29D227A120790078D028 /* MupenGameCore+Controls.m in Sources */, B3AE1DDB2073378600AD06D4 /* main.m in Sources */, + B39C29DB27A12D100078D028 /* MupenGameCore+Cheats.m in Sources */, B3AE1DF12073378600AD06D4 /* ai_controller.c in Sources */, B3AE1E062073378600AD06D4 /* bootrom_hle.c in Sources */, B3AE1E0E2073378600AD06D4 /* mi_controller.c in Sources */, B3AE1E152073378600AD06D4 /* sdl_key_converter.c in Sources */, B3AE1DEE2073378600AD06D4 /* device.c in Sources */, + B36EF439279C55A4005C7ED4 /* asm_defines.c in Sources */, + B3963E65279E867100B00117 /* MupenGameCore+Video.swift in Sources */, B3AE1E0B2073378600AD06D4 /* mbc3_rtc.c in Sources */, B3AE1DDA2073378600AD06D4 /* eventloop.m in Sources */, B3AE1DE52073378600AD06D4 /* common.c in Sources */, @@ -5622,6 +5746,7 @@ B3AE1E122073378600AD06D4 /* pif.c in Sources */, B3AE1DF92073378600AD06D4 /* dummy_audio.c in Sources */, B3AE1DEA2073378600AD06D4 /* memory.c in Sources */, + B39C29E127A12DA30078D028 /* MupenGameCore+Saves.m in Sources */, B3AE1DF62073378600AD06D4 /* rom.c in Sources */, B3AE1E102073378600AD06D4 /* pi_controller.c in Sources */, B3AE1DEB2073378600AD06D4 /* interrupt.c in Sources */, @@ -5682,6 +5807,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + B3C83E22279618AD0020824C /* hvqm.c in Sources */, B3AE1F5220733D6700AD06D4 /* alist_audio.c in Sources */, B3AE1F5320733D6700AD06D4 /* alist_naudio.c in Sources */, B3AE1F5420733D6700AD06D4 /* alist_nead.c in Sources */, @@ -5940,6 +6066,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + B31738002783F925002D3ACD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3303E4B1DED23C600896D96 /* png-iOS */; + targetProxy = B31737FF2783F925002D3ACD /* PBXContainerItemProxy */; + }; B34AB6002106DFFE00C45F09 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = B3800FF4208522DC00FA03B8 /* glidenhq-iOS */; @@ -7011,6 +7142,7 @@ "$(inherited)", "\"$(SRCROOT)/png\"", ); + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_ENABLE_DEBUG_INFO = NO; OTHER_CFLAGS = ( "-ffast-math", @@ -7035,7 +7167,6 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; TARGETED_DEVICE_FAMILY = "1,2,6"; VALIDATE_PRODUCT = YES; }; @@ -7086,12 +7217,12 @@ "\"$(SRCROOT)/Plugins/Video/gliden64/src/windows\"", "\"$(SRCROOT)/Plugins/Video/gliden64/src/xxHash\"", ); + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; TARGETED_DEVICE_FAMILY = "1,2,6"; VALIDATE_PRODUCT = YES; }; @@ -7236,6 +7367,7 @@ "$(inherited)", "\"$(SRCROOT)/png\"", ); + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_ENABLE_DEBUG_INFO = YES; OTHER_CFLAGS = ( "-ffast-math", @@ -7260,7 +7392,6 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Debug; @@ -7313,7 +7444,6 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; TARGETED_DEVICE_FAMILY = "1,2,6"; VALIDATE_PRODUCT = YES; }; @@ -7830,12 +7960,12 @@ "\"$(SRCROOT)/Plugins/Video/gliden64/src/windows\"", "\"$(SRCROOT)/Plugins/Video/gliden64/src/xxHash\"", ); + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Debug; @@ -7890,7 +8020,6 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; TARGETED_DEVICE_FAMILY = "1,2,6"; VALIDATE_PRODUCT = YES; }; diff --git a/Cores/Mupen64Plus/Plugins/Core b/Cores/Mupen64Plus/Plugins/Core index d134510c82..294c9436cd 160000 --- a/Cores/Mupen64Plus/Plugins/Core +++ b/Cores/Mupen64Plus/Plugins/Core @@ -1 +1 @@ -Subproject commit d134510c8273c0c331d2ba55e9ae7fa1de8b7c42 +Subproject commit 294c9436cd6169a884f3b541bd22a9e1759f2b69 diff --git a/Cores/Mupen64Plus/Plugins/rsp/cxd4 b/Cores/Mupen64Plus/Plugins/rsp/cxd4 index 62244037ce..11edb7a785 160000 --- a/Cores/Mupen64Plus/Plugins/rsp/cxd4 +++ b/Cores/Mupen64Plus/Plugins/rsp/cxd4 @@ -1 +1 @@ -Subproject commit 62244037ce5c04451760a5195da30823995196b9 +Subproject commit 11edb7a785621d507968898a100420072076d71d diff --git a/Cores/Mupen64Plus/Plugins/rsp/hle b/Cores/Mupen64Plus/Plugins/rsp/hle index 1233981129..4bac3aeb98 160000 --- a/Cores/Mupen64Plus/Plugins/rsp/hle +++ b/Cores/Mupen64Plus/Plugins/rsp/hle @@ -1 +1 @@ -Subproject commit 12339811299155b66bc0a944457e83ea49f30b6f +Subproject commit 4bac3aeb98aff2d89095c59ec105aad721a16167 diff --git a/Cores/O2EM b/Cores/O2EM index 6c1b8cab56..75ac739b37 160000 --- a/Cores/O2EM +++ b/Cores/O2EM @@ -1 +1 @@ -Subproject commit 6c1b8cab5623ac52147b3350fc6c77fb213b792a +Subproject commit 75ac739b374b31800ab53c7d5fa53c4538dffd80 diff --git a/Cores/PPSSPP/PVPPSSPP.xcodeproj/project.pbxproj b/Cores/PPSSPP/PVPPSSPP.xcodeproj/project.pbxproj index f9b4753a16..45a871e63d 100644 --- a/Cores/PPSSPP/PVPPSSPP.xcodeproj/project.pbxproj +++ b/Cores/PPSSPP/PVPPSSPP.xcodeproj/project.pbxproj @@ -117,6 +117,8 @@ B30C6E54271D90080025DD88 /* libxbrz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E12271D792B0025DD88 /* libxbrz.a */; }; B30C6E57271D90F10025DD88 /* NativeApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CC4D25E178C7EC00094E987 /* NativeApp.cpp */; }; B30C6E59271D92700025DD88 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E58271D92700025DD88 /* CoreMedia.framework */; }; + B36455B9278E7E3D00B6E87A /* PVLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B36455B8278E7E3D00B6E87A /* PVLibrary.framework */; }; + B36455BA278E7E3D00B6E87A /* PVLibrary.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B36455B8278E7E3D00B6E87A /* PVLibrary.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B38C49DD201DBCC3006761ED /* PPSSPPGameCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8CAFC1251785B6F700647A96 /* PPSSPPGameCore.mm */; }; B38C4A0B201DBD75006761ED /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B38C4A0A201DBD75006761ED /* OpenGLES.framework */; }; B38C4A0D201DBD7E006761ED /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B38C4A0C201DBD7E006761ED /* libz.tbd */; }; @@ -408,6 +410,17 @@ name = "Embed Libraries"; runOnlyForDeploymentPostprocessing = 0; }; + B36455BB278E7E3E00B6E87A /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + B36455BA278E7E3D00B6E87A /* PVLibrary.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ @@ -460,6 +473,7 @@ B30C6E55271D90A90025DD88 /* libMoltenVK.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libMoltenVK.dylib; sourceTree = ""; }; B30C6E58271D92700025DD88 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/CoreMedia.framework; sourceTree = DEVELOPER_DIR; }; B30C6E5A271D92800025DD88 /* AVFAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFAudio.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/AVFAudio.framework; sourceTree = DEVELOPER_DIR; }; + B36455B8278E7E3D00B6E87A /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B38C49D5201DBC8C006761ED /* PVPPSSPP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVPPSSPP.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B38C4A0A201DBD75006761ED /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.2.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; }; B38C4A0C201DBD7E006761ED /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.2.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; @@ -571,6 +585,7 @@ B38C4A0F201DBD8D006761ED /* CoreVideo.framework in Frameworks */, B38C4A0D201DBD7E006761ED /* libz.tbd in Frameworks */, B30C6E3B271D8C280025DD88 /* UIKit.framework in Frameworks */, + B36455B9278E7E3D00B6E87A /* PVLibrary.framework in Frameworks */, B30C6E45271D8C700025DD88 /* GameController.framework in Frameworks */, B30C6E17271D79E60025DD88 /* libcityhash.a in Frameworks */, B30C6E1D271D79E60025DD88 /* libsnappy.a in Frameworks */, @@ -737,6 +752,7 @@ B38C49FB201DBD67006761ED /* Frameworks */ = { isa = PBXGroup; children = ( + B36455B8278E7E3D00B6E87A /* PVLibrary.framework */, B305431F272022C800F5257D /* libavcodec.a */, B3054320272022C800F5257D /* libavdevice.a */, B3054322272022C800F5257D /* libavformat.a */, @@ -821,6 +837,7 @@ B38C49D1201DBC8C006761ED /* Frameworks */, B38C49D2201DBC8C006761ED /* Headers */, B38C49D3201DBC8C006761ED /* Resources */, + B36455BB278E7E3E00B6E87A /* Embed Frameworks */, ); buildRules = ( ); @@ -1356,7 +1373,6 @@ GCC_WARN_UNUSED_VARIABLE = YES; INFOPLIST_FILE = "$(SRCROOT)/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1428,7 +1444,6 @@ GCC_WARN_UNUSED_VARIABLE = YES; INFOPLIST_FILE = "$(SRCROOT)/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1506,7 +1521,6 @@ GCC_WARN_UNUSED_VARIABLE = YES; INFOPLIST_FILE = "$(SRCROOT)/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1578,7 +1592,6 @@ GCC_WARN_UNUSED_VARIABLE = YES; INFOPLIST_FILE = "$(SRCROOT)/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/Cores/PPSSPP/cmake/PPSSPP.xcodeproj/project.pbxproj b/Cores/PPSSPP/cmake/PPSSPP.xcodeproj/project.pbxproj index a1e6e56bf9..bbcacbbc25 100644 --- a/Cores/PPSSPP/cmake/PPSSPP.xcodeproj/project.pbxproj +++ b/Cores/PPSSPP/cmake/PPSSPP.xcodeproj/project.pbxproj @@ -8272,7 +8272,7 @@ Base, ); mainGroup = 708FC5E019574B56839721A6; - projectDirPath = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp; + projectDirPath = ./../ppsspp; projectRoot = ""; targets = ( D38D17A114BC46FBB4338E00 /* ALL_BUILD */, @@ -8347,7 +8347,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/ctest --force-new-ctest-process -C $CONFIGURATION$EFFECTIVE_PLATFORM_NAME\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/ctest --force-new-ctest-process -C $CONFIGURATION$EFFECTIVE_PLATFORM_NAME\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/ctest --force-new-ctest-process -C $CONFIGURATION$EFFECTIVE_PLATFORM_NAME\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/ctest --force-new-ctest-process -C $CONFIGURATION$EFFECTIVE_PLATFORM_NAME\nfi\n"; + shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd ./cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/ctest --force-new-ctest-process -C $CONFIGURATION$EFFECTIVE_PLATFORM_NAME\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd ./cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/ctest --force-new-ctest-process -C $CONFIGURATION$EFFECTIVE_PLATFORM_NAME\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd ./cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/ctest --force-new-ctest-process -C $CONFIGURATION$EFFECTIVE_PLATFORM_NAME\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd ./cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/ctest --force-new-ctest-process -C $CONFIGURATION$EFFECTIVE_PLATFORM_NAME\nfi\n"; showEnvVarsInLog = 0; }; 054F3E9BFEE32297E949C451 /* CMake PostBuild Rules */ = { @@ -8361,7 +8361,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/libretro\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -E cmake_symlink_library /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/ppsspp_libretro.dylib /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/ppsspp_libretro.dylib /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/ppsspp_libretro.dylib\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/libretro\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -E cmake_symlink_library /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/ppsspp_libretro.dylib /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/ppsspp_libretro.dylib /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/ppsspp_libretro.dylib\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/libretro\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -E cmake_symlink_library /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/ppsspp_libretro.dylib /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/ppsspp_libretro.dylib /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/ppsspp_libretro.dylib\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/libretro\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -E cmake_symlink_library /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/ppsspp_libretro.dylib /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/ppsspp_libretro.dylib /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/ppsspp_libretro.dylib\nfi\n"; + shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd ./cmake/libretro\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -E cmake_symlink_library ./cmake/lib/Debug/ppsspp_libretro.dylib ./cmake/lib/Debug/ppsspp_libretro.dylib ./cmake/lib/Debug/ppsspp_libretro.dylib\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd ./cmake/libretro\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -E cmake_symlink_library ./cmake/lib/Release/ppsspp_libretro.dylib ./cmake/lib/Release/ppsspp_libretro.dylib ./cmake/lib/Release/ppsspp_libretro.dylib\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd ./cmake/libretro\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -E cmake_symlink_library ./cmake/lib/MinSizeRel/ppsspp_libretro.dylib ./cmake/lib/MinSizeRel/ppsspp_libretro.dylib ./cmake/lib/MinSizeRel/ppsspp_libretro.dylib\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd ./cmake/libretro\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -E cmake_symlink_library ./cmake/lib/RelWithDebInfo/ppsspp_libretro.dylib ./cmake/lib/RelWithDebInfo/ppsspp_libretro.dylib ./cmake/lib/RelWithDebInfo/ppsspp_libretro.dylib\nfi\n"; showEnvVarsInLog = 0; }; 12D523F39537EC74D6C6DF53 /* Generate CMakeFiles/ZERO_CHECK */ = { @@ -8374,11 +8374,11 @@ ); name = "Generate CMakeFiles/ZERO_CHECK"; outputPaths = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/CMakeFiles/ZERO_CHECK, + ./cmake/CMakeFiles/ZERO_CHECK, ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n make -f /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/CMakeScripts/ReRunCMake.make\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n make -f /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/CMakeScripts/ReRunCMake.make\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n make -f /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/CMakeScripts/ReRunCMake.make\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n make -f /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/CMakeScripts/ReRunCMake.make\nfi\n"; + shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd ./cmake\n make -f ./cmake/CMakeScripts/ReRunCMake.make\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd ./cmake\n make -f ./cmake/CMakeScripts/ReRunCMake.make\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd ./cmake\n make -f ./cmake/CMakeScripts/ReRunCMake.make\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd ./cmake\n make -f ./cmake/CMakeScripts/ReRunCMake.make\nfi\n"; showEnvVarsInLog = 0; }; 14A6E9A1A8B117DEDAAB4C2B /* CMake PostBuild Rules */ = { @@ -8392,7 +8392,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n mkdir -p \"/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/Debug${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\n tar -c -C /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake --exclude .DS_Store --exclude .git assets *.png | tar -x -C \"/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/Debug${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\n /bin/bash /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ios/macbundle.sh \"/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/Debug${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n mkdir -p \"/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/Release${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\n tar -c -C /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake --exclude .DS_Store --exclude .git assets *.png | tar -x -C \"/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/Release${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\n /bin/bash /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ios/macbundle.sh \"/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/Release${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n mkdir -p \"/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\n tar -c -C /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake --exclude .DS_Store --exclude .git assets *.png | tar -x -C \"/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\n /bin/bash /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ios/macbundle.sh \"/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n mkdir -p \"/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\n tar -c -C /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake --exclude .DS_Store --exclude .git assets *.png | tar -x -C \"/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\n /bin/bash /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ios/macbundle.sh \"/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\nfi\n"; + shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd ./cmake\n mkdir -p \"./cmake/Debug${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\n tar -c -C ./cmake --exclude .DS_Store --exclude .git assets *.png | tar -x -C \"./cmake/Debug${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\n /bin/bash ./ppsspp/ios/macbundle.sh \"./cmake/Debug${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd ./cmake\n mkdir -p \"./cmake/Release${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\n tar -c -C ./cmake --exclude .DS_Store --exclude .git assets *.png | tar -x -C \"./cmake/Release${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\n /bin/bash ./ppsspp/ios/macbundle.sh \"./cmake/Release${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd ./cmake\n mkdir -p \"./cmake/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\n tar -c -C ./cmake --exclude .DS_Store --exclude .git assets *.png | tar -x -C \"./cmake/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\n /bin/bash ./ppsspp/ios/macbundle.sh \"./cmake/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd ./cmake\n mkdir -p \"./cmake/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\n tar -c -C ./cmake --exclude .DS_Store --exclude .git assets *.png | tar -x -C \"./cmake/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\n /bin/bash ./ppsspp/ios/macbundle.sh \"./cmake/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/PPSSPP.app\"\nfi\n"; showEnvVarsInLog = 0; }; 50A3832F6140EF8A4D0D07EB /* Generate something_that_never_exists */ = { @@ -8404,11 +8404,11 @@ ); name = "Generate something_that_never_exists"; outputPaths = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/something_that_never_exists, + ./cmake/something_that_never_exists, ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -DSOURCE_DIR=/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp -P /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/git-version.cmake\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -DSOURCE_DIR=/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp -P /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/git-version.cmake\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -DSOURCE_DIR=/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp -P /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/git-version.cmake\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -DSOURCE_DIR=/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp -P /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/git-version.cmake\nfi\n"; + shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd ./cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -DSOURCE_DIR=./ppsspp -P ./ppsspp/git-version.cmake\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd ./cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -DSOURCE_DIR=./ppsspp -P ./ppsspp/git-version.cmake\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd ./cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -DSOURCE_DIR=./ppsspp -P ./ppsspp/git-version.cmake\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd ./cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -DSOURCE_DIR=./ppsspp -P ./ppsspp/git-version.cmake\nfi\n"; showEnvVarsInLog = 0; }; 7C99B899A69F07D396EB43DE /* Generate CMakeFiles/GitVersion */ = { @@ -8418,15 +8418,15 @@ files = ( ); inputPaths = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/something_that_never_exists, + ./cmake/something_that_never_exists, ); name = "Generate CMakeFiles/GitVersion"; outputPaths = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/CMakeFiles/GitVersion, + ./cmake/CMakeFiles/GitVersion, ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\nfi\n"; + shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd ./cmake\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd ./cmake\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd ./cmake\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd ./cmake\nfi\n"; showEnvVarsInLog = 0; }; 85DAF2A820A61549808D7878 /* CMake PostBuild Rules */ = { @@ -8440,7 +8440,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -E cmake_symlink_library /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libzstd.1.5.0.dylib /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libzstd.1.dylib /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libzstd.dylib\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -E cmake_symlink_library /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libzstd.1.5.0.dylib /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libzstd.1.dylib /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libzstd.dylib\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -E cmake_symlink_library /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libzstd.1.5.0.dylib /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libzstd.1.dylib /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libzstd.dylib\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -E cmake_symlink_library /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libzstd.1.5.0.dylib /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libzstd.1.dylib /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libzstd.dylib\nfi\n"; + shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd ./cmake/ext/zstd/build/cmake/lib\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -E cmake_symlink_library ./cmake/lib/Debug/libzstd.1.5.0.dylib ./cmake/lib/Debug/libzstd.1.dylib ./cmake/lib/Debug/libzstd.dylib\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd ./cmake/ext/zstd/build/cmake/lib\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -E cmake_symlink_library ./cmake/lib/Release/libzstd.1.5.0.dylib ./cmake/lib/Release/libzstd.1.dylib ./cmake/lib/Release/libzstd.dylib\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd ./cmake/ext/zstd/build/cmake/lib\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -E cmake_symlink_library ./cmake/lib/MinSizeRel/libzstd.1.5.0.dylib ./cmake/lib/MinSizeRel/libzstd.1.dylib ./cmake/lib/MinSizeRel/libzstd.dylib\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd ./cmake/ext/zstd/build/cmake/lib\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -E cmake_symlink_library ./cmake/lib/RelWithDebInfo/libzstd.1.5.0.dylib ./cmake/lib/RelWithDebInfo/libzstd.1.dylib ./cmake/lib/RelWithDebInfo/libzstd.dylib\nfi\n"; showEnvVarsInLog = 0; }; 87355504C17B810545A4E1E6 /* Generate ext/zstd/build/cmake/CMakeFiles/clean-all */ = { @@ -8453,11 +8453,11 @@ ); name = "Generate ext/zstd/build/cmake/CMakeFiles/clean-all"; outputPaths = ( - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/CMakeFiles/clean-all", + "./cmake/ext/zstd/build/cmake/CMakeFiles/clean-all", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake\n /usr/bin/xcodebuild clean\n rm -rf /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake\n /usr/bin/xcodebuild clean\n rm -rf /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake\n /usr/bin/xcodebuild clean\n rm -rf /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake\n /usr/bin/xcodebuild clean\n rm -rf /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/\nfi\n"; + shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd ./cmake/ext/zstd/build/cmake\n /usr/bin/xcodebuild clean\n rm -rf ./cmake/\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd ./cmake/ext/zstd/build/cmake\n /usr/bin/xcodebuild clean\n rm -rf ./cmake/\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd ./cmake/ext/zstd/build/cmake\n /usr/bin/xcodebuild clean\n rm -rf ./cmake/\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd ./cmake/ext/zstd/build/cmake\n /usr/bin/xcodebuild clean\n rm -rf ./cmake/\nfi\n"; showEnvVarsInLog = 0; }; 90AD142A46F4AD4980F2DAF4 /* Generate CMakeFiles/ALL_BUILD */ = { @@ -8470,11 +8470,11 @@ ); name = "Generate CMakeFiles/ALL_BUILD"; outputPaths = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/CMakeFiles/ALL_BUILD, + ./cmake/CMakeFiles/ALL_BUILD, ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n echo Build\\ all\\ projects\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n echo Build\\ all\\ projects\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n echo Build\\ all\\ projects\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n echo Build\\ all\\ projects\nfi\n"; + shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd ./cmake\n echo Build\\ all\\ projects\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd ./cmake\n echo Build\\ all\\ projects\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd ./cmake\n echo Build\\ all\\ projects\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd ./cmake\n echo Build\\ all\\ projects\nfi\n"; showEnvVarsInLog = 0; }; 93426DA6A4AC2C2AC9CE883C /* CMake PostBuild Rules */ = { @@ -8488,7 +8488,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -DBUILD_TYPE=$CONFIGURATION -DEFFECTIVE_PLATFORM_NAME=$EFFECTIVE_PLATFORM_NAME -P cmake_install.cmake\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -DBUILD_TYPE=$CONFIGURATION -DEFFECTIVE_PLATFORM_NAME=$EFFECTIVE_PLATFORM_NAME -P cmake_install.cmake\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -DBUILD_TYPE=$CONFIGURATION -DEFFECTIVE_PLATFORM_NAME=$EFFECTIVE_PLATFORM_NAME -P cmake_install.cmake\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -DBUILD_TYPE=$CONFIGURATION -DEFFECTIVE_PLATFORM_NAME=$EFFECTIVE_PLATFORM_NAME -P cmake_install.cmake\nfi\n"; + shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd ./cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -DBUILD_TYPE=$CONFIGURATION -DEFFECTIVE_PLATFORM_NAME=$EFFECTIVE_PLATFORM_NAME -P cmake_install.cmake\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd ./cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -DBUILD_TYPE=$CONFIGURATION -DEFFECTIVE_PLATFORM_NAME=$EFFECTIVE_PLATFORM_NAME -P cmake_install.cmake\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd ./cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -DBUILD_TYPE=$CONFIGURATION -DEFFECTIVE_PLATFORM_NAME=$EFFECTIVE_PLATFORM_NAME -P cmake_install.cmake\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd ./cmake\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -DBUILD_TYPE=$CONFIGURATION -DEFFECTIVE_PLATFORM_NAME=$EFFECTIVE_PLATFORM_NAME -P cmake_install.cmake\nfi\n"; showEnvVarsInLog = 0; }; C4EFCBBC8AAB2ECF3A9F097C /* Generate ext/zstd/build/cmake/lib/CMakeFiles/uninstall */ = { @@ -8501,11 +8501,11 @@ ); name = "Generate ext/zstd/build/cmake/lib/CMakeFiles/uninstall"; outputPaths = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib/CMakeFiles/uninstall, + ./cmake/ext/zstd/build/cmake/lib/CMakeFiles/uninstall, ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -P /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib/cmake_uninstall.cmake\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -P /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib/cmake_uninstall.cmake\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -P /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib/cmake_uninstall.cmake\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -P /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib/cmake_uninstall.cmake\nfi\n"; + shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd ./cmake/ext/zstd/build/cmake/lib\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -P ./cmake/ext/zstd/build/cmake/lib/cmake_uninstall.cmake\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd ./cmake/ext/zstd/build/cmake/lib\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -P ./cmake/ext/zstd/build/cmake/lib/cmake_uninstall.cmake\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd ./cmake/ext/zstd/build/cmake/lib\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -P ./cmake/ext/zstd/build/cmake/lib/cmake_uninstall.cmake\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd ./cmake/ext/zstd/build/cmake/lib\n /opt/homebrew/Cellar/cmake/3.21.3_1/bin/cmake -P ./cmake/ext/zstd/build/cmake/lib/cmake_uninstall.cmake\nfi\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -10423,7 +10423,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -10445,10 +10445,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -10471,7 +10471,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-core"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10486,7 +10486,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; DYLIB_COMPATIBILITY_VERSION = ""; DYLIB_CURRENT_VERSION = ""; EXECUTABLE_PREFIX = ""; @@ -10510,24 +10510,24 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/libretro/libretro, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/libretro/libretro, + ./ppsspp/ext/snappy/., + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, + ./ppsspp/ext/glslang/SPIRV/.., + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = "@rpath"; @@ -10549,14 +10549,14 @@ "-dynamiclib", "-Wl,-headerpad_max_install_names", "-Wl,-Bsymbolic", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libCore.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libnative.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libCommon.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libsnappy.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/liblibzip.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libpng17.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libgason.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libudis86.a, + ./cmake/lib/Debug/libCore.a, + ./cmake/lib/Debug/libnative.a, + ./cmake/lib/Debug/libCommon.a, + ./cmake/lib/Debug/libsnappy.a, + ./cmake/lib/Debug/liblibzip.a, + ./cmake/lib/Debug/libpng17.a, + ./cmake/lib/Debug/libgason.a, + ./cmake/lib/Debug/libudis86.a, "-framework", Foundation, "-framework", @@ -10584,37 +10584,37 @@ "-weak_framework", GameController, "-liconv", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libkirk.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libcityhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libsfmt19937.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libxbrz.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libxxhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libglslang.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libSPIRV.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libMachineIndependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libOGLCompiler.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libOSDependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libGenericCodeGen.a, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libspirv-cross-glsl.a", - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libspirv-cross-core.a", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libarmips.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libzstd.a, + ./cmake/lib/Debug/libkirk.a, + ./cmake/lib/Debug/libcityhash.a, + ./cmake/lib/Debug/libsfmt19937.a, + ./cmake/lib/Debug/libxbrz.a, + ./cmake/lib/Debug/libxxhash.a, + ./cmake/lib/Debug/libglslang.a, + ./cmake/lib/Debug/libSPIRV.a, + ./cmake/lib/Debug/libMachineIndependent.a, + ./cmake/lib/Debug/libOGLCompiler.a, + ./cmake/lib/Debug/libOSDependent.a, + ./cmake/lib/Debug/libGenericCodeGen.a, + "./cmake/lib/Debug/libspirv-cross-glsl.a", + "./cmake/lib/Debug/libspirv-cross-core.a", + ./cmake/lib/Debug/libarmips.a, + ./cmake/lib/Debug/libzstd.a, "-framework", OpenGLES, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavformat.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswresample.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswscale.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavutil.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavformat.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswresample.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswscale.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavutil.a, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = ppsspp_libretro; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/libretro; + SYMROOT = ./cmake/libretro; SYSTEM_HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/include, + ./ppsspp/ffmpeg/ios/universal/include, "$(inherited)", ); USE_HEADERMAP = NO; @@ -10631,7 +10631,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -10654,11 +10654,11 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, "$(inherited)", ); INSTALL_PATH = ""; @@ -10690,7 +10690,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = glslang; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang; + SYMROOT = ./cmake/ext/glslang/glslang; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10725,20 +10725,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/zstreamtest.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/zstreamtest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -10763,13 +10763,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libzstd.a, + ./cmake/lib/Debug/libzstd.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = zstreamtest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10783,7 +10783,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -10803,9 +10803,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -10827,7 +10827,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = udis86; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/udis86; + SYMROOT = ./cmake/ext/udis86; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10850,7 +10850,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "clean-all"; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake; + SYMROOT = ./cmake/ext/zstd/build/cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10885,20 +10885,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/datagen.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/datagen.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -10923,13 +10923,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libzstd.a, + ./cmake/lib/RelWithDebInfo/libzstd.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = datagen; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10944,7 +10944,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -10965,18 +10965,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -10998,7 +10998,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = xbrz; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -11012,7 +11012,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; DYLIB_COMPATIBILITY_VERSION = 1.0.0; DYLIB_CURRENT_VERSION = 1.5.0; EXECUTABLE_PREFIX = lib; @@ -11038,13 +11038,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, + ./cmake/ext/zstd/build/cmake/lib, + ./ppsspp/ext/zstd/build/cmake/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, "$(inherited)", ); INSTALL_PATH = ""; @@ -11081,7 +11081,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = zstd.1.5.0; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib; + SYMROOT = ./cmake/ext/zstd/build/cmake/lib; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -11096,7 +11096,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -11117,18 +11117,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -11150,7 +11150,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = xbrz; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -11165,7 +11165,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -11186,19 +11186,19 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., "$(inherited)", ); INSTALL_PATH = ""; @@ -11230,7 +11230,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = native; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -11265,13 +11265,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/armips/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/armips/., "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips/CMakeFiles/armipstests.dir/Info.plist; + INFOPLIST_FILE = ./cmake/ext/armips/CMakeFiles/armipstests.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -11290,13 +11290,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libarmips.a, + ./cmake/lib/Debug/libarmips.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = armipstests; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips; + SYMROOT = ./cmake/ext/armips; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -11311,7 +11311,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -11331,10 +11331,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/armips/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/armips/., "$(inherited)", ); INSTALL_PATH = ""; @@ -11359,7 +11359,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = armips; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips; + SYMROOT = ./cmake/ext/armips; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -11373,7 +11373,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -11394,18 +11394,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -11427,7 +11427,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = sfmt19937; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -11462,20 +11462,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/paramgrill.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/paramgrill.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -11500,14 +11500,14 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libzstd.a, + ./cmake/lib/RelWithDebInfo/libzstd.a, "-lm", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = paramgrill; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -11545,26 +11545,26 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/CMakeFiles/PPSSPP.dir/Info.plist; + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, + ./ppsspp/ext/glslang/SPIRV/.., + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/CMakeFiles/PPSSPP.dir/Info.plist; INSTALL_PATH = ""; IPHONEOS_DEPLOYMENT_TARGET = 8.0; ONLY_ACTIVE_ARCH = NO; @@ -11582,15 +11582,15 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libCore.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libCommon.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libnative.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libCommon.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libsnappy.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/liblibzip.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libpng17.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libgason.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libudis86.a, + ./cmake/lib/MinSizeRel/libCore.a, + ./cmake/lib/MinSizeRel/libCommon.a, + ./cmake/lib/MinSizeRel/libnative.a, + ./cmake/lib/MinSizeRel/libCommon.a, + ./cmake/lib/MinSizeRel/libsnappy.a, + ./cmake/lib/MinSizeRel/liblibzip.a, + ./cmake/lib/MinSizeRel/libpng17.a, + ./cmake/lib/MinSizeRel/libgason.a, + ./cmake/lib/MinSizeRel/libudis86.a, "-framework", Foundation, "-framework", @@ -11618,37 +11618,37 @@ "-weak_framework", GameController, "-liconv", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libkirk.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libcityhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libsfmt19937.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libxbrz.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libxxhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libglslang.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libSPIRV.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libMachineIndependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libOGLCompiler.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libOSDependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libGenericCodeGen.a, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libspirv-cross-glsl.a", - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libspirv-cross-core.a", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libarmips.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libzstd.a, + ./cmake/lib/MinSizeRel/libkirk.a, + ./cmake/lib/MinSizeRel/libcityhash.a, + ./cmake/lib/MinSizeRel/libsfmt19937.a, + ./cmake/lib/MinSizeRel/libxbrz.a, + ./cmake/lib/MinSizeRel/libxxhash.a, + ./cmake/lib/MinSizeRel/libglslang.a, + ./cmake/lib/MinSizeRel/libSPIRV.a, + ./cmake/lib/MinSizeRel/libMachineIndependent.a, + ./cmake/lib/MinSizeRel/libOGLCompiler.a, + ./cmake/lib/MinSizeRel/libOSDependent.a, + ./cmake/lib/MinSizeRel/libGenericCodeGen.a, + "./cmake/lib/MinSizeRel/libspirv-cross-glsl.a", + "./cmake/lib/MinSizeRel/libspirv-cross-core.a", + ./cmake/lib/MinSizeRel/libarmips.a, + ./cmake/lib/MinSizeRel/libzstd.a, "-framework", OpenGLES, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavformat.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswresample.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswscale.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavutil.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavformat.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswresample.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswscale.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavutil.a, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = PPSSPP; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; SYSTEM_HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/include, + ./ppsspp/ffmpeg/ios/universal/include, "$(inherited)", ); TARGETED_DEVICE_FAMILY = iPhone/iPad; @@ -11666,7 +11666,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -11688,10 +11688,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -11714,7 +11714,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-hlsl"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -11749,20 +11749,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/zstreamtest.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/zstreamtest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -11788,13 +11788,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libzstd.a, + ./cmake/lib/Release/libzstd.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = zstreamtest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -11809,7 +11809,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -11832,9 +11832,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -11866,7 +11866,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = GenericCodeGen; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang; + SYMROOT = ./cmake/ext/glslang/glslang; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -11880,7 +11880,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -11901,18 +11901,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -11934,7 +11934,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = sfmt19937; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -11948,7 +11948,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -11969,18 +11969,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -12002,7 +12002,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = png17; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -12039,24 +12039,24 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ffmpeg/ios/universal/include, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, + ./ppsspp/ext/glslang/SPIRV/.., + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -12093,7 +12093,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -12116,11 +12116,11 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, "$(inherited)", ); INSTALL_PATH = ""; @@ -12153,7 +12153,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = glslang; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang; + SYMROOT = ./cmake/ext/glslang/glslang; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -12168,14 +12168,14 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang/CMakeFiles/MachineIndependent.dir/MinSizeRel/cmake_pch.hxx; + GCC_PREFIX_HEADER = ./cmake/ext/glslang/glslang/CMakeFiles/MachineIndependent.dir/MinSizeRel/cmake_pch.hxx; GCC_PREPROCESSOR_DEFINITIONS = ( "'CMAKE_INTDIR=\"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\"'", "'GL_ETC1_RGB8_OES=0'", @@ -12193,10 +12193,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./cmake/include, "$(inherited)", ); INSTALL_PATH = ""; @@ -12229,7 +12229,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = MachineIndependent; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang; + SYMROOT = ./cmake/ext/glslang/glslang; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -12264,26 +12264,26 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/CMakeFiles/PPSSPPHeadless.dir/Info.plist; + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, + ./ppsspp/ext/glslang/SPIRV/.., + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/CMakeFiles/PPSSPPHeadless.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -12300,17 +12300,17 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/UIKit, + ./cmake/UIKit, "-framework", QuartzCore, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libCore.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libnative.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libCommon.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libsnappy.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/liblibzip.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libpng17.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libgason.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libudis86.a, + ./cmake/lib/RelWithDebInfo/libCore.a, + ./cmake/lib/RelWithDebInfo/libnative.a, + ./cmake/lib/RelWithDebInfo/libCommon.a, + ./cmake/lib/RelWithDebInfo/libsnappy.a, + ./cmake/lib/RelWithDebInfo/liblibzip.a, + ./cmake/lib/RelWithDebInfo/libpng17.a, + ./cmake/lib/RelWithDebInfo/libgason.a, + ./cmake/lib/RelWithDebInfo/libudis86.a, "-framework", Foundation, "-framework", @@ -12338,37 +12338,37 @@ "-weak_framework", GameController, "-liconv", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libkirk.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libcityhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libsfmt19937.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libxbrz.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libxxhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libglslang.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libSPIRV.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libMachineIndependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libOGLCompiler.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libOSDependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libGenericCodeGen.a, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libspirv-cross-glsl.a", - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libspirv-cross-core.a", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libarmips.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libzstd.a, + ./cmake/lib/RelWithDebInfo/libkirk.a, + ./cmake/lib/RelWithDebInfo/libcityhash.a, + ./cmake/lib/RelWithDebInfo/libsfmt19937.a, + ./cmake/lib/RelWithDebInfo/libxbrz.a, + ./cmake/lib/RelWithDebInfo/libxxhash.a, + ./cmake/lib/RelWithDebInfo/libglslang.a, + ./cmake/lib/RelWithDebInfo/libSPIRV.a, + ./cmake/lib/RelWithDebInfo/libMachineIndependent.a, + ./cmake/lib/RelWithDebInfo/libOGLCompiler.a, + ./cmake/lib/RelWithDebInfo/libOSDependent.a, + ./cmake/lib/RelWithDebInfo/libGenericCodeGen.a, + "./cmake/lib/RelWithDebInfo/libspirv-cross-glsl.a", + "./cmake/lib/RelWithDebInfo/libspirv-cross-core.a", + ./cmake/lib/RelWithDebInfo/libarmips.a, + ./cmake/lib/RelWithDebInfo/libzstd.a, "-framework", OpenGLES, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavformat.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswresample.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswscale.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavutil.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavformat.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswresample.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswscale.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavutil.a, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = PPSSPPHeadless; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; SYSTEM_HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/include, + ./ppsspp/ffmpeg/ios/universal/include, "$(inherited)", ); USE_HEADERMAP = NO; @@ -12385,7 +12385,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -12408,9 +12408,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -12443,7 +12443,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = OSDependent; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang/OSDependent/Unix; + SYMROOT = ./cmake/ext/glslang/glslang/OSDependent/Unix; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -12458,7 +12458,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -12480,10 +12480,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -12506,7 +12506,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-glsl"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -12521,7 +12521,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -12542,18 +12542,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -12574,7 +12574,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = cityhash; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -12609,20 +12609,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/datagen.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/datagen.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -12647,13 +12647,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libzstd.a, + ./cmake/lib/Release/libzstd.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = datagen; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -12676,7 +12676,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = install; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -12691,7 +12691,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -12712,18 +12712,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -12745,7 +12745,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = gason; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -12779,13 +12779,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/armips/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/armips/., "$(inherited)", ); - INFOPLIST_FILE = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips/CMakeFiles/armips-bin.dir/Info.plist"; + INFOPLIST_FILE = "./cmake/ext/armips/CMakeFiles/armips-bin.dir/Info.plist"; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -12804,13 +12804,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libarmips.a, + ./cmake/lib/Debug/libarmips.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = armips; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips; + SYMROOT = ./cmake/ext/armips; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -12825,7 +12825,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -12846,18 +12846,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -12879,7 +12879,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = xbrz; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -12894,7 +12894,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -12917,9 +12917,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -12952,7 +12952,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = OGLCompiler; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/OGLCompilersDLL; + SYMROOT = ./cmake/ext/glslang/OGLCompilersDLL; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -12987,20 +12987,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/fullbench.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/fullbench.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -13026,13 +13026,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libzstd.a, + ./cmake/lib/MinSizeRel/libzstd.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = fullbench; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -13047,7 +13047,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -13069,10 +13069,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -13095,7 +13095,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-cpp"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -13109,7 +13109,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -13132,13 +13132,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, + ./cmake/ext/zstd/build/cmake/lib, + ./ppsspp/ext/zstd/build/cmake/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, "$(inherited)", ); INSTALL_PATH = ""; @@ -13169,7 +13169,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = zstd; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib; + SYMROOT = ./cmake/ext/zstd/build/cmake/lib; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -13192,7 +13192,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "clean-all"; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake; + SYMROOT = ./cmake/ext/zstd/build/cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -13215,7 +13215,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = install; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -13250,20 +13250,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/fuzzer.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/fuzzer.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -13289,13 +13289,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libzstd.a, + ./cmake/lib/Release/libzstd.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = fuzzer; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -13310,7 +13310,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -13332,10 +13332,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -13357,7 +13357,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-core"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -13371,7 +13371,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -13392,18 +13392,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -13424,7 +13424,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = sfmt19937; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -13438,7 +13438,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -13458,9 +13458,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -13482,7 +13482,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = udis86; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/udis86; + SYMROOT = ./cmake/ext/udis86; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -13497,7 +13497,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -13517,10 +13517,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/snappy/., "$(inherited)", ); INSTALL_PATH = ""; @@ -13542,7 +13542,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = snappy; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/snappy; + SYMROOT = ./cmake/ext/snappy; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -13557,7 +13557,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -13578,18 +13578,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -13611,7 +13611,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = gason; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -13626,7 +13626,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -13649,9 +13649,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -13683,7 +13683,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = OGLCompiler; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/OGLCompilersDLL; + SYMROOT = ./cmake/ext/glslang/OGLCompilersDLL; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -13697,7 +13697,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -13718,18 +13718,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -13751,7 +13751,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = kirk; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -13766,7 +13766,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -13789,9 +13789,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -13823,7 +13823,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = OSDependent; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang/OSDependent/Unix; + SYMROOT = ./cmake/ext/glslang/glslang/OSDependent/Unix; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -13846,7 +13846,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = RUN_TESTS; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -13861,7 +13861,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -13882,19 +13882,19 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., "$(inherited)", ); INSTALL_PATH = ""; @@ -13928,7 +13928,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Common; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -13963,20 +13963,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/fuzzer.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/fuzzer.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -14002,13 +14002,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libzstd.a, + ./cmake/lib/MinSizeRel/libzstd.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = fuzzer; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -14043,20 +14043,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/fuzzer.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/fuzzer.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -14082,13 +14082,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libzstd.a, + ./cmake/lib/RelWithDebInfo/libzstd.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = fuzzer; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -14103,7 +14103,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -14124,18 +14124,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -14157,7 +14157,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = gason; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -14192,20 +14192,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/zstreamtest.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/zstreamtest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -14231,13 +14231,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libzstd.a, + ./cmake/lib/RelWithDebInfo/libzstd.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = zstreamtest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -14271,13 +14271,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/armips/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/armips/., "$(inherited)", ); - INFOPLIST_FILE = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips/CMakeFiles/armips-bin.dir/Info.plist"; + INFOPLIST_FILE = "./cmake/ext/armips/CMakeFiles/armips-bin.dir/Info.plist"; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -14297,13 +14297,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libarmips.a, + ./cmake/lib/MinSizeRel/libarmips.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = armips; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips; + SYMROOT = ./cmake/ext/armips; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -14318,14 +14318,14 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang/CMakeFiles/MachineIndependent.dir/Debug/cmake_pch.hxx; + GCC_PREFIX_HEADER = ./cmake/ext/glslang/glslang/CMakeFiles/MachineIndependent.dir/Debug/cmake_pch.hxx; GCC_PREPROCESSOR_DEFINITIONS = ( "'CMAKE_INTDIR=\"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\"'", "'GL_ETC1_RGB8_OES=0'", @@ -14343,10 +14343,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./cmake/include, "$(inherited)", ); INSTALL_PATH = ""; @@ -14378,7 +14378,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = MachineIndependent; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang; + SYMROOT = ./cmake/ext/glslang/glslang; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -14392,7 +14392,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -14412,9 +14412,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -14435,7 +14435,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = udis86; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/udis86; + SYMROOT = ./cmake/ext/udis86; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -14450,7 +14450,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -14472,10 +14472,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -14498,7 +14498,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-hlsl"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -14512,7 +14512,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -14533,18 +14533,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -14565,7 +14565,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = xxhash; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -14580,7 +14580,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -14601,19 +14601,19 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., "$(inherited)", ); INSTALL_PATH = ""; @@ -14647,7 +14647,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = native; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -14682,20 +14682,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/paramgrill.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/paramgrill.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -14719,14 +14719,14 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libzstd.a, + ./cmake/lib/Debug/libzstd.a, "-lm", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = paramgrill; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -14741,7 +14741,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -14762,18 +14762,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -14795,7 +14795,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = cityhash; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -14818,7 +14818,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = ZERO_CHECK; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -14836,7 +14836,7 @@ CODE_SIGN_IDENTITY = ""; IPHONEOS_DEPLOYMENT_TARGET = 6.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/build; + SYMROOT = ./cmake/build; }; name = RelWithDebInfo; }; @@ -14849,7 +14849,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -14870,19 +14870,19 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., "$(inherited)", ); INSTALL_PATH = ""; @@ -14916,7 +14916,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = native; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -14951,20 +14951,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/datagen.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/datagen.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -14989,13 +14989,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libzstd.a, + ./cmake/lib/MinSizeRel/libzstd.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = datagen; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -15010,7 +15010,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -15032,10 +15032,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -15058,7 +15058,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-glsl"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -15073,7 +15073,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -15095,10 +15095,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -15120,7 +15120,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-glsl"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -15143,7 +15143,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = GitVersion; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -15158,7 +15158,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -15181,11 +15181,11 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/glslang/SPIRV/.., + ./cmake/include, "$(inherited)", ); INSTALL_PATH = ""; @@ -15217,7 +15217,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = SPIRV; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/SPIRV; + SYMROOT = ./cmake/ext/glslang/SPIRV; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -15232,7 +15232,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -15252,10 +15252,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/snappy/., "$(inherited)", ); INSTALL_PATH = ""; @@ -15276,7 +15276,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = snappy; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/snappy; + SYMROOT = ./cmake/ext/snappy; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -15311,20 +15311,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/fullbench.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/fullbench.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -15349,13 +15349,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libzstd.a, + ./cmake/lib/Debug/libzstd.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = fullbench; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -15369,7 +15369,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; DYLIB_COMPATIBILITY_VERSION = 1.0.0; DYLIB_CURRENT_VERSION = 1.5.0; EXECUTABLE_PREFIX = lib; @@ -15395,13 +15395,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, + ./cmake/ext/zstd/build/cmake/lib, + ./ppsspp/ext/zstd/build/cmake/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, "$(inherited)", ); INSTALL_PATH = ""; @@ -15437,7 +15437,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = zstd.1.5.0; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib; + SYMROOT = ./cmake/ext/zstd/build/cmake/lib; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -15452,7 +15452,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -15475,9 +15475,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -15510,7 +15510,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = OGLCompiler; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/OGLCompilersDLL; + SYMROOT = ./cmake/ext/glslang/OGLCompilersDLL; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -15524,7 +15524,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; DYLIB_COMPATIBILITY_VERSION = 1.0.0; DYLIB_CURRENT_VERSION = 1.5.0; EXECUTABLE_PREFIX = lib; @@ -15550,13 +15550,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, + ./cmake/ext/zstd/build/cmake/lib, + ./ppsspp/ext/zstd/build/cmake/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, "$(inherited)", ); INSTALL_PATH = ""; @@ -15593,7 +15593,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = zstd.1.5.0; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib; + SYMROOT = ./cmake/ext/zstd/build/cmake/lib; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -15608,7 +15608,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -15631,9 +15631,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -15665,7 +15665,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = HLSL; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/hlsl; + SYMROOT = ./cmake/ext/glslang/hlsl; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -15683,7 +15683,7 @@ CODE_SIGN_IDENTITY = ""; IPHONEOS_DEPLOYMENT_TARGET = 6.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/build; + SYMROOT = ./cmake/build; }; name = Release; }; @@ -15704,7 +15704,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = uninstall; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib; + SYMROOT = ./cmake/ext/zstd/build/cmake/lib; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -15739,20 +15739,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/fullbench.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/fullbench.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -15778,13 +15778,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libzstd.a, + ./cmake/lib/Release/libzstd.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = fullbench; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -15807,7 +15807,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = GitVersion; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -15822,7 +15822,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -15844,10 +15844,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -15869,7 +15869,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-msl"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -15884,7 +15884,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -15907,11 +15907,11 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/glslang/SPIRV/.., + ./cmake/include, "$(inherited)", ); INSTALL_PATH = ""; @@ -15944,7 +15944,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = SPIRV; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/SPIRV; + SYMROOT = ./cmake/ext/glslang/SPIRV; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -15958,7 +15958,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; DYLIB_COMPATIBILITY_VERSION = 1.0.0; DYLIB_CURRENT_VERSION = 1.5.0; EXECUTABLE_PREFIX = lib; @@ -15984,13 +15984,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, + ./cmake/ext/zstd/build/cmake/lib, + ./ppsspp/ext/zstd/build/cmake/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, "$(inherited)", ); INSTALL_PATH = ""; @@ -16027,7 +16027,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = zstd.1.5.0; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib; + SYMROOT = ./cmake/ext/zstd/build/cmake/lib; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -16042,14 +16042,14 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang/CMakeFiles/MachineIndependent.dir/RelWithDebInfo/cmake_pch.hxx; + GCC_PREFIX_HEADER = ./cmake/ext/glslang/glslang/CMakeFiles/MachineIndependent.dir/RelWithDebInfo/cmake_pch.hxx; GCC_PREPROCESSOR_DEFINITIONS = ( "'CMAKE_INTDIR=\"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\"'", "'GL_ETC1_RGB8_OES=0'", @@ -16067,10 +16067,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./cmake/include, "$(inherited)", ); INSTALL_PATH = ""; @@ -16103,7 +16103,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = MachineIndependent; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang; + SYMROOT = ./cmake/ext/glslang/glslang; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -16118,7 +16118,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -16140,10 +16140,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -16166,7 +16166,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-core"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -16189,7 +16189,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = ALL_BUILD; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -16227,26 +16227,26 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/CMakeFiles/PPSSPP.dir/Info.plist; + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, + ./ppsspp/ext/glslang/SPIRV/.., + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/CMakeFiles/PPSSPP.dir/Info.plist; INSTALL_PATH = ""; IPHONEOS_DEPLOYMENT_TARGET = 8.0; ONLY_ACTIVE_ARCH = NO; @@ -16263,15 +16263,15 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libCore.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libCommon.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libnative.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libCommon.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libsnappy.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/liblibzip.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libpng17.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libgason.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libudis86.a, + ./cmake/lib/Debug/libCore.a, + ./cmake/lib/Debug/libCommon.a, + ./cmake/lib/Debug/libnative.a, + ./cmake/lib/Debug/libCommon.a, + ./cmake/lib/Debug/libsnappy.a, + ./cmake/lib/Debug/liblibzip.a, + ./cmake/lib/Debug/libpng17.a, + ./cmake/lib/Debug/libgason.a, + ./cmake/lib/Debug/libudis86.a, "-framework", Foundation, "-framework", @@ -16299,37 +16299,37 @@ "-weak_framework", GameController, "-liconv", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libkirk.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libcityhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libsfmt19937.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libxbrz.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libxxhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libglslang.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libSPIRV.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libMachineIndependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libOGLCompiler.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libOSDependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libGenericCodeGen.a, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libspirv-cross-glsl.a", - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libspirv-cross-core.a", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libarmips.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libzstd.a, + ./cmake/lib/Debug/libkirk.a, + ./cmake/lib/Debug/libcityhash.a, + ./cmake/lib/Debug/libsfmt19937.a, + ./cmake/lib/Debug/libxbrz.a, + ./cmake/lib/Debug/libxxhash.a, + ./cmake/lib/Debug/libglslang.a, + ./cmake/lib/Debug/libSPIRV.a, + ./cmake/lib/Debug/libMachineIndependent.a, + ./cmake/lib/Debug/libOGLCompiler.a, + ./cmake/lib/Debug/libOSDependent.a, + ./cmake/lib/Debug/libGenericCodeGen.a, + "./cmake/lib/Debug/libspirv-cross-glsl.a", + "./cmake/lib/Debug/libspirv-cross-core.a", + ./cmake/lib/Debug/libarmips.a, + ./cmake/lib/Debug/libzstd.a, "-framework", OpenGLES, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavformat.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswresample.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswscale.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavutil.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavformat.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswresample.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswscale.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavutil.a, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = PPSSPP; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; SYSTEM_HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/include, + ./ppsspp/ffmpeg/ios/universal/include, "$(inherited)", ); TARGETED_DEVICE_FAMILY = iPhone/iPad; @@ -16347,7 +16347,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -16370,9 +16370,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -16405,7 +16405,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = HLSL; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/hlsl; + SYMROOT = ./cmake/ext/glslang/hlsl; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -16420,7 +16420,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; DYLIB_COMPATIBILITY_VERSION = ""; DYLIB_CURRENT_VERSION = ""; EXECUTABLE_PREFIX = ""; @@ -16444,24 +16444,24 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/libretro/libretro, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/libretro/libretro, + ./ppsspp/ext/snappy/., + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, + ./ppsspp/ext/glslang/SPIRV/.., + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = "@rpath"; @@ -16484,14 +16484,14 @@ "-dynamiclib", "-Wl,-headerpad_max_install_names", "-Wl,-Bsymbolic", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libCore.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libnative.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libCommon.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libsnappy.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/liblibzip.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libpng17.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libgason.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libudis86.a, + ./cmake/lib/Release/libCore.a, + ./cmake/lib/Release/libnative.a, + ./cmake/lib/Release/libCommon.a, + ./cmake/lib/Release/libsnappy.a, + ./cmake/lib/Release/liblibzip.a, + ./cmake/lib/Release/libpng17.a, + ./cmake/lib/Release/libgason.a, + ./cmake/lib/Release/libudis86.a, "-framework", Foundation, "-framework", @@ -16519,37 +16519,37 @@ "-weak_framework", GameController, "-liconv", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libkirk.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libcityhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libsfmt19937.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libxbrz.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libxxhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libglslang.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libSPIRV.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libMachineIndependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libOGLCompiler.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libOSDependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libGenericCodeGen.a, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libspirv-cross-glsl.a", - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libspirv-cross-core.a", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libarmips.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libzstd.a, + ./cmake/lib/Release/libkirk.a, + ./cmake/lib/Release/libcityhash.a, + ./cmake/lib/Release/libsfmt19937.a, + ./cmake/lib/Release/libxbrz.a, + ./cmake/lib/Release/libxxhash.a, + ./cmake/lib/Release/libglslang.a, + ./cmake/lib/Release/libSPIRV.a, + ./cmake/lib/Release/libMachineIndependent.a, + ./cmake/lib/Release/libOGLCompiler.a, + ./cmake/lib/Release/libOSDependent.a, + ./cmake/lib/Release/libGenericCodeGen.a, + "./cmake/lib/Release/libspirv-cross-glsl.a", + "./cmake/lib/Release/libspirv-cross-core.a", + ./cmake/lib/Release/libarmips.a, + ./cmake/lib/Release/libzstd.a, "-framework", OpenGLES, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavformat.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswresample.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswscale.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavutil.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavformat.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswresample.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswscale.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavutil.a, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = ppsspp_libretro; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/libretro; + SYMROOT = ./cmake/libretro; SYSTEM_HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/include, + ./ppsspp/ffmpeg/ios/universal/include, "$(inherited)", ); USE_HEADERMAP = NO; @@ -16574,7 +16574,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = RUN_TESTS; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -16589,7 +16589,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -16612,9 +16612,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -16647,7 +16647,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = OSDependent; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang/OSDependent/Unix; + SYMROOT = ./cmake/ext/glslang/glslang/OSDependent/Unix; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -16662,7 +16662,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -16684,10 +16684,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -16710,7 +16710,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-cpp"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -16725,7 +16725,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -16745,10 +16745,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/armips/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/armips/., "$(inherited)", ); INSTALL_PATH = ""; @@ -16773,7 +16773,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = armips; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips; + SYMROOT = ./cmake/ext/armips; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -16788,7 +16788,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -16811,9 +16811,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -16846,7 +16846,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = GenericCodeGen; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang; + SYMROOT = ./cmake/ext/glslang/glslang; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -16861,7 +16861,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -16881,10 +16881,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/armips/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/armips/., "$(inherited)", ); INSTALL_PATH = ""; @@ -16908,7 +16908,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = armips; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips; + SYMROOT = ./cmake/ext/armips; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -16926,7 +16926,7 @@ CODE_SIGN_IDENTITY = ""; IPHONEOS_DEPLOYMENT_TARGET = 6.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/build; + SYMROOT = ./cmake/build; }; name = Debug; }; @@ -16938,7 +16938,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -16959,18 +16959,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -16992,7 +16992,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = libzip; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -17006,7 +17006,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -17027,18 +17027,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -17059,7 +17059,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = kirk; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -17094,20 +17094,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/paramgrill.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/paramgrill.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -17132,14 +17132,14 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libzstd.a, + ./cmake/lib/Release/libzstd.a, "-lm", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = paramgrill; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -17154,7 +17154,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -17177,11 +17177,11 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, "$(inherited)", ); INSTALL_PATH = ""; @@ -17214,7 +17214,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = glslang; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang; + SYMROOT = ./cmake/ext/glslang/glslang; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -17252,26 +17252,26 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/CMakeFiles/PPSSPP.dir/Info.plist; + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, + ./ppsspp/ext/glslang/SPIRV/.., + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/CMakeFiles/PPSSPP.dir/Info.plist; INSTALL_PATH = ""; IPHONEOS_DEPLOYMENT_TARGET = 8.0; ONLY_ACTIVE_ARCH = NO; @@ -17289,15 +17289,15 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libCore.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libCommon.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libnative.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libCommon.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libsnappy.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/liblibzip.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libpng17.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libgason.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libudis86.a, + ./cmake/lib/Release/libCore.a, + ./cmake/lib/Release/libCommon.a, + ./cmake/lib/Release/libnative.a, + ./cmake/lib/Release/libCommon.a, + ./cmake/lib/Release/libsnappy.a, + ./cmake/lib/Release/liblibzip.a, + ./cmake/lib/Release/libpng17.a, + ./cmake/lib/Release/libgason.a, + ./cmake/lib/Release/libudis86.a, "-framework", Foundation, "-framework", @@ -17325,37 +17325,37 @@ "-weak_framework", GameController, "-liconv", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libkirk.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libcityhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libsfmt19937.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libxbrz.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libxxhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libglslang.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libSPIRV.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libMachineIndependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libOGLCompiler.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libOSDependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libGenericCodeGen.a, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libspirv-cross-glsl.a", - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libspirv-cross-core.a", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libarmips.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libzstd.a, + ./cmake/lib/Release/libkirk.a, + ./cmake/lib/Release/libcityhash.a, + ./cmake/lib/Release/libsfmt19937.a, + ./cmake/lib/Release/libxbrz.a, + ./cmake/lib/Release/libxxhash.a, + ./cmake/lib/Release/libglslang.a, + ./cmake/lib/Release/libSPIRV.a, + ./cmake/lib/Release/libMachineIndependent.a, + ./cmake/lib/Release/libOGLCompiler.a, + ./cmake/lib/Release/libOSDependent.a, + ./cmake/lib/Release/libGenericCodeGen.a, + "./cmake/lib/Release/libspirv-cross-glsl.a", + "./cmake/lib/Release/libspirv-cross-core.a", + ./cmake/lib/Release/libarmips.a, + ./cmake/lib/Release/libzstd.a, "-framework", OpenGLES, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavformat.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswresample.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswscale.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavutil.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavformat.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswresample.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswscale.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavutil.a, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = PPSSPP; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; SYSTEM_HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/include, + ./ppsspp/ffmpeg/ios/universal/include, "$(inherited)", ); TARGETED_DEVICE_FAMILY = iPhone/iPad; @@ -17373,7 +17373,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -17393,10 +17393,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/snappy/., "$(inherited)", ); INSTALL_PATH = ""; @@ -17418,7 +17418,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = snappy; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/snappy; + SYMROOT = ./cmake/ext/snappy; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -17433,7 +17433,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -17455,10 +17455,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -17481,7 +17481,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-core"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -17504,7 +17504,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = uninstall; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib; + SYMROOT = ./cmake/ext/zstd/build/cmake/lib; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -17527,7 +17527,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = install; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -17541,7 +17541,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -17562,18 +17562,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -17594,7 +17594,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = png17; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -17609,7 +17609,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -17631,10 +17631,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -17657,7 +17657,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-hlsl"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -17672,7 +17672,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -17695,9 +17695,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -17730,7 +17730,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = GenericCodeGen; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang; + SYMROOT = ./cmake/ext/glslang/glslang; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -17744,7 +17744,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -17765,18 +17765,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -17798,7 +17798,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = kirk; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -17833,20 +17833,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/fuzzer.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/fuzzer.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -17871,13 +17871,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libzstd.a, + ./cmake/lib/Debug/libzstd.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = fuzzer; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -17892,7 +17892,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; DYLIB_COMPATIBILITY_VERSION = ""; DYLIB_CURRENT_VERSION = ""; EXECUTABLE_PREFIX = ""; @@ -17916,24 +17916,24 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/libretro/libretro, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/libretro/libretro, + ./ppsspp/ext/snappy/., + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, + ./ppsspp/ext/glslang/SPIRV/.., + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = "@rpath"; @@ -17956,14 +17956,14 @@ "-dynamiclib", "-Wl,-headerpad_max_install_names", "-Wl,-Bsymbolic", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libCore.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libnative.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libCommon.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libsnappy.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/liblibzip.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libpng17.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libgason.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libudis86.a, + ./cmake/lib/MinSizeRel/libCore.a, + ./cmake/lib/MinSizeRel/libnative.a, + ./cmake/lib/MinSizeRel/libCommon.a, + ./cmake/lib/MinSizeRel/libsnappy.a, + ./cmake/lib/MinSizeRel/liblibzip.a, + ./cmake/lib/MinSizeRel/libpng17.a, + ./cmake/lib/MinSizeRel/libgason.a, + ./cmake/lib/MinSizeRel/libudis86.a, "-framework", Foundation, "-framework", @@ -17991,37 +17991,37 @@ "-weak_framework", GameController, "-liconv", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libkirk.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libcityhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libsfmt19937.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libxbrz.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libxxhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libglslang.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libSPIRV.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libMachineIndependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libOGLCompiler.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libOSDependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libGenericCodeGen.a, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libspirv-cross-glsl.a", - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libspirv-cross-core.a", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libarmips.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libzstd.a, + ./cmake/lib/MinSizeRel/libkirk.a, + ./cmake/lib/MinSizeRel/libcityhash.a, + ./cmake/lib/MinSizeRel/libsfmt19937.a, + ./cmake/lib/MinSizeRel/libxbrz.a, + ./cmake/lib/MinSizeRel/libxxhash.a, + ./cmake/lib/MinSizeRel/libglslang.a, + ./cmake/lib/MinSizeRel/libSPIRV.a, + ./cmake/lib/MinSizeRel/libMachineIndependent.a, + ./cmake/lib/MinSizeRel/libOGLCompiler.a, + ./cmake/lib/MinSizeRel/libOSDependent.a, + ./cmake/lib/MinSizeRel/libGenericCodeGen.a, + "./cmake/lib/MinSizeRel/libspirv-cross-glsl.a", + "./cmake/lib/MinSizeRel/libspirv-cross-core.a", + ./cmake/lib/MinSizeRel/libarmips.a, + ./cmake/lib/MinSizeRel/libzstd.a, "-framework", OpenGLES, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavformat.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswresample.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswscale.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavutil.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavformat.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswresample.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswscale.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavutil.a, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = ppsspp_libretro; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/libretro; + SYMROOT = ./cmake/libretro; SYSTEM_HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/include, + ./ppsspp/ffmpeg/ios/universal/include, "$(inherited)", ); USE_HEADERMAP = NO; @@ -18046,7 +18046,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = RUN_TESTS; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -18069,7 +18069,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "clean-all"; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake; + SYMROOT = ./cmake/ext/zstd/build/cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -18092,7 +18092,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = uninstall; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib; + SYMROOT = ./cmake/ext/zstd/build/cmake/lib; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -18107,7 +18107,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -18127,10 +18127,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/snappy/., "$(inherited)", ); INSTALL_PATH = ""; @@ -18152,7 +18152,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = snappy; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/snappy; + SYMROOT = ./cmake/ext/snappy; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -18167,7 +18167,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -18188,18 +18188,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -18221,7 +18221,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = cityhash; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -18258,24 +18258,24 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ffmpeg/ios/universal/include, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, + ./ppsspp/ext/glslang/SPIRV/.., + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -18311,7 +18311,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -18332,18 +18332,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -18365,7 +18365,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = kirk; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -18380,7 +18380,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -18403,9 +18403,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -18438,7 +18438,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = HLSL; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/hlsl; + SYMROOT = ./cmake/ext/glslang/hlsl; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -18461,7 +18461,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = ALL_BUILD; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -18476,7 +18476,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -18498,10 +18498,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -18524,7 +18524,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-cpp"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -18547,7 +18547,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = RUN_TESTS; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -18561,7 +18561,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -18582,18 +18582,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -18615,7 +18615,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = xxhash; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -18629,7 +18629,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -18652,13 +18652,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, + ./cmake/ext/zstd/build/cmake/lib, + ./ppsspp/ext/zstd/build/cmake/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, "$(inherited)", ); INSTALL_PATH = ""; @@ -18689,7 +18689,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = zstd; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib; + SYMROOT = ./cmake/ext/zstd/build/cmake/lib; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -18704,7 +18704,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -18727,11 +18727,11 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, "$(inherited)", ); INSTALL_PATH = ""; @@ -18764,7 +18764,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = glslang; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang; + SYMROOT = ./cmake/ext/glslang/glslang; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -18799,20 +18799,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/datagen.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/datagen.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -18836,13 +18836,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libzstd.a, + ./cmake/lib/Debug/libzstd.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = datagen; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -18857,7 +18857,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -18878,18 +18878,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -18910,7 +18910,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = xbrz; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -18924,7 +18924,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -18945,18 +18945,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -18978,7 +18978,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = libzip; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -19001,7 +19001,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = ZERO_CHECK; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -19016,7 +19016,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -19038,10 +19038,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -19064,7 +19064,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-glsl"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -19099,13 +19099,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/armips/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/armips/., "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips/CMakeFiles/armipstests.dir/Info.plist; + INFOPLIST_FILE = ./cmake/ext/armips/CMakeFiles/armipstests.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -19125,13 +19125,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libarmips.a, + ./cmake/lib/Release/libarmips.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = armipstests; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips; + SYMROOT = ./cmake/ext/armips; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -19168,24 +19168,24 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ffmpeg/ios/universal/include, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, + ./ppsspp/ext/glslang/SPIRV/.., + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -19229,7 +19229,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "clean-all"; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake; + SYMROOT = ./cmake/ext/zstd/build/cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -19264,20 +19264,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/paramgrill.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/paramgrill.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -19302,14 +19302,14 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libzstd.a, + ./cmake/lib/MinSizeRel/libzstd.a, "-lm", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = paramgrill; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -19323,7 +19323,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -19344,18 +19344,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -19377,7 +19377,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = libzip; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -19391,7 +19391,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -19412,18 +19412,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -19445,7 +19445,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = png17; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -19459,7 +19459,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -19480,18 +19480,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -19513,7 +19513,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = sfmt19937; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -19536,7 +19536,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = ALL_BUILD; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -19571,26 +19571,26 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/CMakeFiles/PPSSPPHeadless.dir/Info.plist; + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, + ./ppsspp/ext/glslang/SPIRV/.., + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/CMakeFiles/PPSSPPHeadless.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -19606,17 +19606,17 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/UIKit, + ./cmake/UIKit, "-framework", QuartzCore, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libCore.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libnative.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libCommon.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libsnappy.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/liblibzip.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libpng17.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libgason.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libudis86.a, + ./cmake/lib/Debug/libCore.a, + ./cmake/lib/Debug/libnative.a, + ./cmake/lib/Debug/libCommon.a, + ./cmake/lib/Debug/libsnappy.a, + ./cmake/lib/Debug/liblibzip.a, + ./cmake/lib/Debug/libpng17.a, + ./cmake/lib/Debug/libgason.a, + ./cmake/lib/Debug/libudis86.a, "-framework", Foundation, "-framework", @@ -19644,37 +19644,37 @@ "-weak_framework", GameController, "-liconv", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libkirk.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libcityhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libsfmt19937.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libxbrz.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libxxhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libglslang.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libSPIRV.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libMachineIndependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libOGLCompiler.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libOSDependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libGenericCodeGen.a, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libspirv-cross-glsl.a", - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libspirv-cross-core.a", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libarmips.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug/libzstd.a, + ./cmake/lib/Debug/libkirk.a, + ./cmake/lib/Debug/libcityhash.a, + ./cmake/lib/Debug/libsfmt19937.a, + ./cmake/lib/Debug/libxbrz.a, + ./cmake/lib/Debug/libxxhash.a, + ./cmake/lib/Debug/libglslang.a, + ./cmake/lib/Debug/libSPIRV.a, + ./cmake/lib/Debug/libMachineIndependent.a, + ./cmake/lib/Debug/libOGLCompiler.a, + ./cmake/lib/Debug/libOSDependent.a, + ./cmake/lib/Debug/libGenericCodeGen.a, + "./cmake/lib/Debug/libspirv-cross-glsl.a", + "./cmake/lib/Debug/libspirv-cross-core.a", + ./cmake/lib/Debug/libarmips.a, + ./cmake/lib/Debug/libzstd.a, "-framework", OpenGLES, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavformat.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswresample.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswscale.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavutil.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavformat.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswresample.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswscale.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavutil.a, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = PPSSPPHeadless; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; SYSTEM_HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/include, + ./ppsspp/ffmpeg/ios/universal/include, "$(inherited)", ); USE_HEADERMAP = NO; @@ -19711,13 +19711,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/armips/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/armips/., "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips/CMakeFiles/armipstests.dir/Info.plist; + INFOPLIST_FILE = ./cmake/ext/armips/CMakeFiles/armipstests.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -19737,13 +19737,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libarmips.a, + ./cmake/lib/RelWithDebInfo/libarmips.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = armipstests; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips; + SYMROOT = ./cmake/ext/armips; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -19758,7 +19758,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -19779,19 +19779,19 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., "$(inherited)", ); INSTALL_PATH = ""; @@ -19825,7 +19825,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = native; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -19860,20 +19860,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/zstreamtest.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/zstreamtest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -19899,13 +19899,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libzstd.a, + ./cmake/lib/MinSizeRel/libzstd.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = zstreamtest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -19919,7 +19919,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -19940,18 +19940,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -19973,7 +19973,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = png17; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -19988,7 +19988,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -20011,9 +20011,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -20046,7 +20046,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = GenericCodeGen; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang; + SYMROOT = ./cmake/ext/glslang/glslang; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -20061,7 +20061,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -20082,19 +20082,19 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., "$(inherited)", ); INSTALL_PATH = ""; @@ -20128,7 +20128,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Common; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -20142,7 +20142,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -20163,18 +20163,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -20196,7 +20196,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = xxhash; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -20214,7 +20214,7 @@ CODE_SIGN_IDENTITY = ""; IPHONEOS_DEPLOYMENT_TARGET = 6.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/build; + SYMROOT = ./cmake/build; }; name = MinSizeRel; }; @@ -20227,7 +20227,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -20250,11 +20250,11 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/glslang/SPIRV/.., + ./cmake/include, "$(inherited)", ); INSTALL_PATH = ""; @@ -20287,7 +20287,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = SPIRV; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/SPIRV; + SYMROOT = ./cmake/ext/glslang/SPIRV; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -20301,7 +20301,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -20322,18 +20322,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -20355,7 +20355,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = xxhash; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -20370,7 +20370,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -20392,10 +20392,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -20418,7 +20418,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-msl"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -20453,20 +20453,20 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../tests, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../programs, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/compress, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests/CMakeFiles/fullbench.dir/Info.plist; + ./cmake/ext/zstd/build/cmake/tests, + ./ppsspp/ext/zstd/build/cmake/tests, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../tests, + ./ppsspp/ext/zstd/build/cmake/../../programs, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, + ./ppsspp/ext/zstd/build/cmake/../../lib/compress, + ./ppsspp/ext/zstd/build/cmake/../../lib/dictBuilder, + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/ext/zstd/build/cmake/tests/CMakeFiles/fullbench.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -20492,13 +20492,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libzstd.a, + ./cmake/lib/RelWithDebInfo/libzstd.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = fullbench; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/tests; + SYMROOT = ./cmake/ext/zstd/build/cmake/tests; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -20533,13 +20533,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/armips/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/armips/., "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips/CMakeFiles/armipstests.dir/Info.plist; + INFOPLIST_FILE = ./cmake/ext/armips/CMakeFiles/armipstests.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -20559,13 +20559,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libarmips.a, + ./cmake/lib/MinSizeRel/libarmips.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = armipstests; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips; + SYMROOT = ./cmake/ext/armips; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -20580,7 +20580,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -20603,9 +20603,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -20638,7 +20638,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = HLSL; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/hlsl; + SYMROOT = ./cmake/ext/glslang/hlsl; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -20653,7 +20653,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -20676,9 +20676,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -20711,7 +20711,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = OSDependent; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang/OSDependent/Unix; + SYMROOT = ./cmake/ext/glslang/glslang/OSDependent/Unix; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -20726,7 +20726,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; DYLIB_COMPATIBILITY_VERSION = ""; DYLIB_CURRENT_VERSION = ""; EXECUTABLE_PREFIX = ""; @@ -20750,24 +20750,24 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/libretro/libretro, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/libretro/libretro, + ./ppsspp/ext/snappy/., + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, + ./ppsspp/ext/glslang/SPIRV/.., + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = "@rpath"; @@ -20790,14 +20790,14 @@ "-dynamiclib", "-Wl,-headerpad_max_install_names", "-Wl,-Bsymbolic", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libCore.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libnative.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libCommon.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libsnappy.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/liblibzip.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libpng17.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libgason.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libudis86.a, + ./cmake/lib/RelWithDebInfo/libCore.a, + ./cmake/lib/RelWithDebInfo/libnative.a, + ./cmake/lib/RelWithDebInfo/libCommon.a, + ./cmake/lib/RelWithDebInfo/libsnappy.a, + ./cmake/lib/RelWithDebInfo/liblibzip.a, + ./cmake/lib/RelWithDebInfo/libpng17.a, + ./cmake/lib/RelWithDebInfo/libgason.a, + ./cmake/lib/RelWithDebInfo/libudis86.a, "-framework", Foundation, "-framework", @@ -20825,37 +20825,37 @@ "-weak_framework", GameController, "-liconv", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libkirk.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libcityhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libsfmt19937.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libxbrz.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libxxhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libglslang.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libSPIRV.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libMachineIndependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libOGLCompiler.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libOSDependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libGenericCodeGen.a, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libspirv-cross-glsl.a", - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libspirv-cross-core.a", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libarmips.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libzstd.a, + ./cmake/lib/RelWithDebInfo/libkirk.a, + ./cmake/lib/RelWithDebInfo/libcityhash.a, + ./cmake/lib/RelWithDebInfo/libsfmt19937.a, + ./cmake/lib/RelWithDebInfo/libxbrz.a, + ./cmake/lib/RelWithDebInfo/libxxhash.a, + ./cmake/lib/RelWithDebInfo/libglslang.a, + ./cmake/lib/RelWithDebInfo/libSPIRV.a, + ./cmake/lib/RelWithDebInfo/libMachineIndependent.a, + ./cmake/lib/RelWithDebInfo/libOGLCompiler.a, + ./cmake/lib/RelWithDebInfo/libOSDependent.a, + ./cmake/lib/RelWithDebInfo/libGenericCodeGen.a, + "./cmake/lib/RelWithDebInfo/libspirv-cross-glsl.a", + "./cmake/lib/RelWithDebInfo/libspirv-cross-core.a", + ./cmake/lib/RelWithDebInfo/libarmips.a, + ./cmake/lib/RelWithDebInfo/libzstd.a, "-framework", OpenGLES, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavformat.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswresample.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswscale.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavutil.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavformat.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswresample.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswscale.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavutil.a, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = ppsspp_libretro; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/libretro; + SYMROOT = ./cmake/libretro; SYSTEM_HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/include, + ./ppsspp/ffmpeg/ios/universal/include, "$(inherited)", ); USE_HEADERMAP = NO; @@ -20871,7 +20871,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -20892,18 +20892,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -20924,7 +20924,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = libzip; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -20947,7 +20947,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = GitVersion; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -20962,7 +20962,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -20984,10 +20984,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -21010,7 +21010,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-msl"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -21024,7 +21024,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -21047,13 +21047,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, + ./cmake/ext/zstd/build/cmake/lib, + ./ppsspp/ext/zstd/build/cmake/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, "$(inherited)", ); INSTALL_PATH = ""; @@ -21083,7 +21083,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = zstd; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib; + SYMROOT = ./cmake/ext/zstd/build/cmake/lib; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -21097,7 +21097,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -21120,13 +21120,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/build/cmake/../../lib/common, + ./cmake/ext/zstd/build/cmake/lib, + ./ppsspp/ext/zstd/build/cmake/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/zstd/build/cmake/../../lib, + ./ppsspp/ext/zstd/build/cmake/../../lib/common, "$(inherited)", ); INSTALL_PATH = ""; @@ -21157,7 +21157,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = zstd; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib; + SYMROOT = ./cmake/ext/zstd/build/cmake/lib; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -21191,13 +21191,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/armips/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/armips/., "$(inherited)", ); - INFOPLIST_FILE = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips/CMakeFiles/armips-bin.dir/Info.plist"; + INFOPLIST_FILE = "./cmake/ext/armips/CMakeFiles/armips-bin.dir/Info.plist"; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -21217,13 +21217,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libarmips.a, + ./cmake/lib/Release/libarmips.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = armips; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips; + SYMROOT = ./cmake/ext/armips; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -21238,7 +21238,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -21258,10 +21258,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/armips/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/armips/., "$(inherited)", ); INSTALL_PATH = ""; @@ -21286,7 +21286,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = armips; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips; + SYMROOT = ./cmake/ext/armips; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -21301,7 +21301,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -21322,18 +21322,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -21355,7 +21355,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = cityhash; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -21370,7 +21370,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -21392,10 +21392,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -21417,7 +21417,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-hlsl"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -21432,14 +21432,14 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang/CMakeFiles/MachineIndependent.dir/Release/cmake_pch.hxx; + GCC_PREFIX_HEADER = ./cmake/ext/glslang/glslang/CMakeFiles/MachineIndependent.dir/Release/cmake_pch.hxx; GCC_PREPROCESSOR_DEFINITIONS = ( "'CMAKE_INTDIR=\"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\"'", "'GL_ETC1_RGB8_OES=0'", @@ -21457,10 +21457,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./cmake/include, "$(inherited)", ); INSTALL_PATH = ""; @@ -21493,7 +21493,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = MachineIndependent; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/glslang; + SYMROOT = ./cmake/ext/glslang/glslang; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -21530,24 +21530,24 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ffmpeg/ios/universal/include, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, + ./ppsspp/ext/glslang/SPIRV/.., + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -21592,7 +21592,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = ZERO_CHECK; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -21627,26 +21627,26 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/CMakeFiles/PPSSPPHeadless.dir/Info.plist; + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, + ./ppsspp/ext/glslang/SPIRV/.., + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/CMakeFiles/PPSSPPHeadless.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -21663,17 +21663,17 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/UIKit, + ./cmake/UIKit, "-framework", QuartzCore, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libCore.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libnative.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libCommon.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libsnappy.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/liblibzip.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libpng17.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libgason.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libudis86.a, + ./cmake/lib/Release/libCore.a, + ./cmake/lib/Release/libnative.a, + ./cmake/lib/Release/libCommon.a, + ./cmake/lib/Release/libsnappy.a, + ./cmake/lib/Release/liblibzip.a, + ./cmake/lib/Release/libpng17.a, + ./cmake/lib/Release/libgason.a, + ./cmake/lib/Release/libudis86.a, "-framework", Foundation, "-framework", @@ -21701,37 +21701,37 @@ "-weak_framework", GameController, "-liconv", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libkirk.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libcityhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libsfmt19937.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libxbrz.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libxxhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libglslang.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libSPIRV.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libMachineIndependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libOGLCompiler.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libOSDependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libGenericCodeGen.a, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libspirv-cross-glsl.a", - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libspirv-cross-core.a", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libarmips.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release/libzstd.a, + ./cmake/lib/Release/libkirk.a, + ./cmake/lib/Release/libcityhash.a, + ./cmake/lib/Release/libsfmt19937.a, + ./cmake/lib/Release/libxbrz.a, + ./cmake/lib/Release/libxxhash.a, + ./cmake/lib/Release/libglslang.a, + ./cmake/lib/Release/libSPIRV.a, + ./cmake/lib/Release/libMachineIndependent.a, + ./cmake/lib/Release/libOGLCompiler.a, + ./cmake/lib/Release/libOSDependent.a, + ./cmake/lib/Release/libGenericCodeGen.a, + "./cmake/lib/Release/libspirv-cross-glsl.a", + "./cmake/lib/Release/libspirv-cross-core.a", + ./cmake/lib/Release/libarmips.a, + ./cmake/lib/Release/libzstd.a, "-framework", OpenGLES, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavformat.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswresample.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswscale.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavutil.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavformat.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswresample.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswscale.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavutil.a, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = PPSSPPHeadless; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; SYSTEM_HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/include, + ./ppsspp/ffmpeg/ios/universal/include, "$(inherited)", ); USE_HEADERMAP = NO; @@ -21747,7 +21747,7 @@ arm64, ); COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -21767,9 +21767,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -21791,7 +21791,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = udis86; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/udis86; + SYMROOT = ./cmake/ext/udis86; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -21814,7 +21814,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = ZERO_CHECK; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -21837,7 +21837,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = install; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -21852,7 +21852,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Release; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Release; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -21874,10 +21874,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -21900,7 +21900,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-msl"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -21915,7 +21915,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -21938,11 +21938,11 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/glslang/SPIRV/.., + ./cmake/include, "$(inherited)", ); INSTALL_PATH = ""; @@ -21975,7 +21975,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = SPIRV; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/SPIRV; + SYMROOT = ./cmake/ext/glslang/SPIRV; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -21990,7 +21990,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo; + CONFIGURATION_BUILD_DIR = ./cmake/lib/RelWithDebInfo; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -22011,19 +22011,19 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., "$(inherited)", ); INSTALL_PATH = ""; @@ -22057,7 +22057,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Common; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -22091,13 +22091,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/armips/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/ext/armips/., "$(inherited)", ); - INFOPLIST_FILE = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips/CMakeFiles/armips-bin.dir/Info.plist"; + INFOPLIST_FILE = "./cmake/ext/armips/CMakeFiles/armips-bin.dir/Info.plist"; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -22117,13 +22117,13 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libarmips.a, + ./cmake/lib/RelWithDebInfo/libarmips.a, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = armips; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/armips; + SYMROOT = ./cmake/ext/armips; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -22146,7 +22146,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = uninstall; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/zstd/build/cmake/lib; + SYMROOT = ./cmake/ext/zstd/build/cmake/lib; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -22161,7 +22161,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -22183,10 +22183,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", "$(inherited)", ); INSTALL_PATH = ""; @@ -22208,7 +22208,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "spirv-cross-cpp"; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/SPIRV-Cross-build"; + SYMROOT = "./cmake/ext/SPIRV-Cross-build"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -22231,7 +22231,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = ALL_BUILD; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -22246,7 +22246,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -22267,19 +22267,19 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., "$(inherited)", ); INSTALL_PATH = ""; @@ -22311,7 +22311,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Common; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -22326,7 +22326,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel; + CONFIGURATION_BUILD_DIR = ./cmake/lib/MinSizeRel; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; @@ -22349,9 +22349,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, "$(inherited)", ); INSTALL_PATH = ""; @@ -22384,7 +22384,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = OGLCompiler; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/ext/glslang/OGLCompilersDLL; + SYMROOT = ./cmake/ext/glslang/OGLCompilersDLL; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -22422,26 +22422,26 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/CMakeFiles/PPSSPP.dir/Info.plist; + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, + ./ppsspp/ext/glslang/SPIRV/.., + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/CMakeFiles/PPSSPP.dir/Info.plist; INSTALL_PATH = ""; IPHONEOS_DEPLOYMENT_TARGET = 8.0; ONLY_ACTIVE_ARCH = NO; @@ -22459,15 +22459,15 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libCore.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libCommon.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libnative.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libCommon.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libsnappy.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/liblibzip.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libpng17.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libgason.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libudis86.a, + ./cmake/lib/RelWithDebInfo/libCore.a, + ./cmake/lib/RelWithDebInfo/libCommon.a, + ./cmake/lib/RelWithDebInfo/libnative.a, + ./cmake/lib/RelWithDebInfo/libCommon.a, + ./cmake/lib/RelWithDebInfo/libsnappy.a, + ./cmake/lib/RelWithDebInfo/liblibzip.a, + ./cmake/lib/RelWithDebInfo/libpng17.a, + ./cmake/lib/RelWithDebInfo/libgason.a, + ./cmake/lib/RelWithDebInfo/libudis86.a, "-framework", Foundation, "-framework", @@ -22495,37 +22495,37 @@ "-weak_framework", GameController, "-liconv", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libkirk.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libcityhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libsfmt19937.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libxbrz.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libxxhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libglslang.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libSPIRV.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libMachineIndependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libOGLCompiler.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libOSDependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libGenericCodeGen.a, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libspirv-cross-glsl.a", - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libspirv-cross-core.a", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libarmips.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/RelWithDebInfo/libzstd.a, + ./cmake/lib/RelWithDebInfo/libkirk.a, + ./cmake/lib/RelWithDebInfo/libcityhash.a, + ./cmake/lib/RelWithDebInfo/libsfmt19937.a, + ./cmake/lib/RelWithDebInfo/libxbrz.a, + ./cmake/lib/RelWithDebInfo/libxxhash.a, + ./cmake/lib/RelWithDebInfo/libglslang.a, + ./cmake/lib/RelWithDebInfo/libSPIRV.a, + ./cmake/lib/RelWithDebInfo/libMachineIndependent.a, + ./cmake/lib/RelWithDebInfo/libOGLCompiler.a, + ./cmake/lib/RelWithDebInfo/libOSDependent.a, + ./cmake/lib/RelWithDebInfo/libGenericCodeGen.a, + "./cmake/lib/RelWithDebInfo/libspirv-cross-glsl.a", + "./cmake/lib/RelWithDebInfo/libspirv-cross-core.a", + ./cmake/lib/RelWithDebInfo/libarmips.a, + ./cmake/lib/RelWithDebInfo/libzstd.a, "-framework", OpenGLES, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavformat.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswresample.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswscale.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavutil.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavformat.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswresample.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswscale.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavutil.a, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = PPSSPP; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; SYSTEM_HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/include, + ./ppsspp/ffmpeg/ios/universal/include, "$(inherited)", ); TARGETED_DEVICE_FAMILY = iPhone/iPad; @@ -22563,26 +22563,26 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/snappy/., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/glslang/.., - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/include, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang/SPIRV/.., - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", - "$(inherited)", - ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/CMakeFiles/PPSSPPHeadless.dir/Info.plist; + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, + ./ppsspp/ext/snappy/., + ./ppsspp/ext/glslang/glslang/.., + ./cmake/include, + ./ppsspp/ext/glslang/SPIRV/.., + "./ppsspp/ext/SPIRV-Cross-build/../SPIRV-Cross", + "$(inherited)", + ); + INFOPLIST_FILE = ./cmake/CMakeFiles/PPSSPPHeadless.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -22599,17 +22599,17 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/UIKit, + ./cmake/UIKit, "-framework", QuartzCore, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libCore.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libnative.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libCommon.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libsnappy.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/liblibzip.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libpng17.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libgason.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libudis86.a, + ./cmake/lib/MinSizeRel/libCore.a, + ./cmake/lib/MinSizeRel/libnative.a, + ./cmake/lib/MinSizeRel/libCommon.a, + ./cmake/lib/MinSizeRel/libsnappy.a, + ./cmake/lib/MinSizeRel/liblibzip.a, + ./cmake/lib/MinSizeRel/libpng17.a, + ./cmake/lib/MinSizeRel/libgason.a, + ./cmake/lib/MinSizeRel/libudis86.a, "-framework", Foundation, "-framework", @@ -22637,37 +22637,37 @@ "-weak_framework", GameController, "-liconv", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libkirk.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libcityhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libsfmt19937.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libxbrz.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libxxhash.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libglslang.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libSPIRV.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libMachineIndependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libOGLCompiler.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libOSDependent.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libGenericCodeGen.a, - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libspirv-cross-glsl.a", - "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libspirv-cross-core.a", - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libarmips.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/MinSizeRel/libzstd.a, + ./cmake/lib/MinSizeRel/libkirk.a, + ./cmake/lib/MinSizeRel/libcityhash.a, + ./cmake/lib/MinSizeRel/libsfmt19937.a, + ./cmake/lib/MinSizeRel/libxbrz.a, + ./cmake/lib/MinSizeRel/libxxhash.a, + ./cmake/lib/MinSizeRel/libglslang.a, + ./cmake/lib/MinSizeRel/libSPIRV.a, + ./cmake/lib/MinSizeRel/libMachineIndependent.a, + ./cmake/lib/MinSizeRel/libOGLCompiler.a, + ./cmake/lib/MinSizeRel/libOSDependent.a, + ./cmake/lib/MinSizeRel/libGenericCodeGen.a, + "./cmake/lib/MinSizeRel/libspirv-cross-glsl.a", + "./cmake/lib/MinSizeRel/libspirv-cross-core.a", + ./cmake/lib/MinSizeRel/libarmips.a, + ./cmake/lib/MinSizeRel/libzstd.a, "-framework", OpenGLES, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavformat.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswresample.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libswscale.a, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/lib/libavutil.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavformat.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavcodec.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswresample.a, + ./ppsspp/ffmpeg/ios/universal/lib/libswscale.a, + ./ppsspp/ffmpeg/ios/universal/lib/libavutil.a, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = PPSSPPHeadless; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; SYSTEM_HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ffmpeg/ios/universal/include, + ./ppsspp/ffmpeg/ios/universal/include, "$(inherited)", ); USE_HEADERMAP = NO; @@ -22692,7 +22692,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = GitVersion; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -22707,7 +22707,7 @@ ); CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake/lib/Debug; + CONFIGURATION_BUILD_DIR = ./cmake/lib/Debug; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -22728,18 +22728,18 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glslang, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/glew, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/Common, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/cityhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libzip, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libpng17, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/libkirk, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/sfmt19937, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xbrz, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/xxhash, - /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/ppsspp/ext/zstd/lib, + ./ppsspp/ext/glslang, + ./ppsspp/ext/glew, + ./ppsspp, + ./ppsspp/Common, + ./ppsspp/ext/cityhash, + ./ppsspp/ext/libzip, + ./ppsspp/ext/libpng17, + ./ppsspp/ext/libkirk, + ./ppsspp/ext/sfmt19937, + ./ppsspp/ext/xbrz, + ./ppsspp/ext/xxhash, + ./ppsspp/ext/zstd/lib, "$(inherited)", ); INSTALL_PATH = ""; @@ -22760,7 +22760,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = gason; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Provenance/Cores/PPSSPP/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; diff --git a/Cores/PPSSPP/cmake/assets/debugger b/Cores/PPSSPP/cmake/assets/debugger deleted file mode 160000 index 36ad6b19b2..0000000000 --- a/Cores/PPSSPP/cmake/assets/debugger +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 36ad6b19b22de2075a01a4f0c765e3ef514dc38f diff --git a/Cores/PicoDrive/PVPicoDrive.xcodeproj/project.pbxproj b/Cores/PicoDrive/PVPicoDrive.xcodeproj/project.pbxproj index d625ed34cc..d2e422ad4e 100644 --- a/Cores/PicoDrive/PVPicoDrive.xcodeproj/project.pbxproj +++ b/Cores/PicoDrive/PVPicoDrive.xcodeproj/project.pbxproj @@ -2148,7 +2148,6 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -2196,7 +2195,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -2244,7 +2242,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -2293,7 +2290,6 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -2342,7 +2338,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -2391,7 +2386,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; diff --git a/Cores/Play/BuildFlags.xcconfig b/Cores/Play/BuildFlags.xcconfig index d65c3ee78f..2276b48662 100644 --- a/Cores/Play/BuildFlags.xcconfig +++ b/Cores/Play/BuildFlags.xcconfig @@ -7,8 +7,8 @@ // // All -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) -OTHER_CFLAGS = $(inherited) +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) CMAKE_INTDIR="$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)" _IOP_EMULATE_MODULES=1 DISABLE_LOGGING=1 HAS_AMAZON_S3=0 PLAY_VERSION="1.3-2331-g0b8742f68" +OTHER_CFLAGS = $(inherited) -frtti // Device GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 diff --git a/Cores/Play/PVPlayCore.xcodeproj/project.pbxproj b/Cores/Play/PVPlayCore.xcodeproj/project.pbxproj index e8b3d30d95..d48ebcff7c 100644 --- a/Cores/Play/PVPlayCore.xcodeproj/project.pbxproj +++ b/Cores/Play/PVPlayCore.xcodeproj/project.pbxproj @@ -29,17 +29,16 @@ B3135BA126E4CC620047F338 /* PVPlay.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVPlay.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3135BA226E4CC650047F338 /* PVPlay.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVPlay.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3135BA326E4CD080047F338 /* PVPlayCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVPlayCore.mm */; }; - B3135BA426E4CD500047F338 /* PVPlayCore+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAA218BC59D00557ACE /* PVPlayCore+Saves.m */; }; - B3135BA526E4CD500047F338 /* PVPlayCore+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAA218BC59D00557ACE /* PVPlayCore+Saves.m */; }; - B3135BA626E4CD5A0047F338 /* PVPlayCore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVPlayCore+Video.m */; }; - B3135BA726E4CD5A0047F338 /* PVPlayCore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVPlayCore+Video.m */; }; - B3135BA826E4CD600047F338 /* PVPlayCore+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVPlayCore+Audio.m */; }; - B3135BA926E4CD600047F338 /* PVPlayCore+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVPlayCore+Audio.m */; }; + B3135BA426E4CD500047F338 /* PVPlayCore+Saves.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAA218BC59D00557ACE /* PVPlayCore+Saves.mm */; }; + B3135BA526E4CD500047F338 /* PVPlayCore+Saves.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAA218BC59D00557ACE /* PVPlayCore+Saves.mm */; }; + B3135BA626E4CD5A0047F338 /* PVPlayCore+Video.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVPlayCore+Video.mm */; }; + B3135BA726E4CD5A0047F338 /* PVPlayCore+Video.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVPlayCore+Video.mm */; }; + B3135BA826E4CD600047F338 /* PVPlayCore+Audio.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVPlayCore+Audio.mm */; }; + B3135BA926E4CD600047F338 /* PVPlayCore+Audio.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVPlayCore+Audio.mm */; }; B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C31B2191964F009F4EDC /* AVFoundation.framework */; }; B33350262078619C0036A448 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; - B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; @@ -47,6 +46,25 @@ B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; B3447EE2218BEDD200557ACE /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; + B351223A27843318001C4B83 /* PVPlay.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EA0218B881000557ACE /* PVPlay.mm */; }; + B351223B27843319001C4B83 /* PVPlay.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EA0218B881000557ACE /* PVPlay.mm */; }; + B3512240278433E4001C4B83 /* libFramework.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B4C26E4C6860047F338 /* libFramework.a */; }; + B351224227843430001C4B83 /* libFramework_Amazon.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B4E26E4C6860047F338 /* libFramework_Amazon.a */; }; + B351224327843430001C4B83 /* libFramework_Http.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B5026E4C6860047F338 /* libFramework_Http.a */; }; + B351224427843430001C4B83 /* libFramework_OpenAl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B5226E4C6860047F338 /* libFramework_OpenAl.a */; }; + B351224527843430001C4B83 /* libFramework_OpenGl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B5426E4C6860047F338 /* libFramework_OpenGl.a */; }; + B3512246278434B9001C4B83 /* libCodeGen.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B4826E4C6860047F338 /* libCodeGen.a */; }; + B3512247278434D7001C4B83 /* libchdr-static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B6626E4C6860047F338 /* libchdr-static.a */; }; + B3512248278434D7001C4B83 /* liblzma.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B6C26E4C6860047F338 /* liblzma.a */; }; + B3512249278434D7001C4B83 /* libSDWebImage_Static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B5E26E4C6860047F338 /* libSDWebImage_Static.a */; }; + B3512262278435B1001C4B83 /* decompress.c in Sources */ = {isa = PBXBuildFile; fileRef = B35122572784355F001C4B83 /* decompress.c */; }; + B3512263278435B1001C4B83 /* blocksort.c in Sources */ = {isa = PBXBuildFile; fileRef = B35122502784355E001C4B83 /* blocksort.c */; }; + B3512264278435B1001C4B83 /* huffman.c in Sources */ = {isa = PBXBuildFile; fileRef = B35122532784355E001C4B83 /* huffman.c */; }; + B3512265278435B1001C4B83 /* crctable.c in Sources */ = {isa = PBXBuildFile; fileRef = B35122562784355F001C4B83 /* crctable.c */; }; + B3512266278435B1001C4B83 /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = B35122512784355E001C4B83 /* compress.c */; }; + B3512267278435B1001C4B83 /* randtable.c in Sources */ = {isa = PBXBuildFile; fileRef = B35122522784355E001C4B83 /* randtable.c */; }; + B3512268278435B1001C4B83 /* bzlib.c in Sources */ = {isa = PBXBuildFile; fileRef = B351224B27843535001C4B83 /* bzlib.c */; }; + B3512269278435B1001C4B83 /* bzip2.c in Sources */ = {isa = PBXBuildFile; fileRef = B351224F2784355E001C4B83 /* bzip2.c */; }; B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; }; B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; @@ -290,6 +308,13 @@ remoteGlobalIDString = 180B5733882C4138BCCC205A; remoteInfo = zlib; }; + B3B2546B27842B7B00F97E55 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B30178D2207C901D0051B93D; + remoteInfo = "play-iOS"; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -1498,14 +1523,26 @@ B3447E97218B809300557ACE /* PVPlayCore+Controls.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVPlayCore+Controls.mm"; sourceTree = ""; }; B3447EA0218B881000557ACE /* PVPlay.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVPlay.mm; sourceTree = ""; }; B3447EA9218BC59D00557ACE /* PVPlayCore+Saves.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVPlayCore+Saves.h"; sourceTree = ""; }; - B3447EAA218BC59D00557ACE /* PVPlayCore+Saves.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVPlayCore+Saves.m"; sourceTree = ""; }; + B3447EAA218BC59D00557ACE /* PVPlayCore+Saves.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVPlayCore+Saves.mm"; sourceTree = ""; }; B3447EAD218BC5C500557ACE /* PVPlayCore+Video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVPlayCore+Video.h"; sourceTree = ""; }; - B3447EAE218BC5C500557ACE /* PVPlayCore+Video.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVPlayCore+Video.m"; sourceTree = ""; }; + B3447EAE218BC5C500557ACE /* PVPlayCore+Video.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVPlayCore+Video.mm"; sourceTree = ""; }; B3447EB1218BC69700557ACE /* PVPlayCore+Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVPlayCore+Audio.h"; sourceTree = ""; }; - B3447EB2218BC69700557ACE /* PVPlayCore+Audio.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVPlayCore+Audio.m"; sourceTree = ""; }; + B3447EB2218BC69700557ACE /* PVPlayCore+Audio.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVPlayCore+Audio.mm"; sourceTree = ""; }; B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; B3447EE6218BEDD200557ACE /* PVPlay.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVPlay.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3447F91218BEE3F00557ACE /* libplay-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libplay-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B351224B27843535001C4B83 /* bzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bzlib.c; path = "Play-/deps/Dependencies/bzip2-1.0.6/bzlib.c"; sourceTree = ""; }; + B351224D2784355E001C4B83 /* mk251.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = mk251.c; path = "Play-/deps/Dependencies/bzip2-1.0.6/mk251.c"; sourceTree = ""; }; + B351224E2784355E001C4B83 /* unzcrash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = unzcrash.c; path = "Play-/deps/Dependencies/bzip2-1.0.6/unzcrash.c"; sourceTree = ""; }; + B351224F2784355E001C4B83 /* bzip2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bzip2.c; path = "Play-/deps/Dependencies/bzip2-1.0.6/bzip2.c"; sourceTree = ""; }; + B35122502784355E001C4B83 /* blocksort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = blocksort.c; path = "Play-/deps/Dependencies/bzip2-1.0.6/blocksort.c"; sourceTree = ""; }; + B35122512784355E001C4B83 /* compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = compress.c; path = "Play-/deps/Dependencies/bzip2-1.0.6/compress.c"; sourceTree = ""; }; + B35122522784355E001C4B83 /* randtable.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = randtable.c; path = "Play-/deps/Dependencies/bzip2-1.0.6/randtable.c"; sourceTree = ""; }; + B35122532784355E001C4B83 /* huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = huffman.c; path = "Play-/deps/Dependencies/bzip2-1.0.6/huffman.c"; sourceTree = ""; }; + B35122542784355F001C4B83 /* bzip2recover.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bzip2recover.c; path = "Play-/deps/Dependencies/bzip2-1.0.6/bzip2recover.c"; sourceTree = ""; }; + B35122552784355F001C4B83 /* bzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bzlib.c; path = "Play-/deps/Dependencies/bzip2-1.0.6/bzlib.c"; sourceTree = ""; }; + B35122562784355F001C4B83 /* crctable.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = crctable.c; path = "Play-/deps/Dependencies/bzip2-1.0.6/crctable.c"; sourceTree = ""; }; + B35122572784355F001C4B83 /* decompress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = decompress.c; path = "Play-/deps/Dependencies/bzip2-1.0.6/decompress.c"; sourceTree = ""; }; B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; @@ -1569,13 +1606,21 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B3512247278434D7001C4B83 /* libchdr-static.a in Frameworks */, + B3512248278434D7001C4B83 /* liblzma.a in Frameworks */, + B3512249278434D7001C4B83 /* libSDWebImage_Static.a in Frameworks */, + B3512246278434B9001C4B83 /* libCodeGen.a in Frameworks */, + B351224227843430001C4B83 /* libFramework_Amazon.a in Frameworks */, + B351224327843430001C4B83 /* libFramework_Http.a in Frameworks */, + B351224427843430001C4B83 /* libFramework_OpenAl.a in Frameworks */, + B351224527843430001C4B83 /* libFramework_OpenGl.a in Frameworks */, + B3512240278433E4001C4B83 /* libFramework.a in Frameworks */, B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, B301797F207C909E0051B93D /* libplay-iOS.a in Frameworks */, - B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, @@ -3730,11 +3775,11 @@ B3C76223207833DE009950E4 /* PVPlayCore.h */, B3C76224207833DE009950E4 /* PVPlayCore.mm */, B3447EB1218BC69700557ACE /* PVPlayCore+Audio.h */, - B3447EB2218BC69700557ACE /* PVPlayCore+Audio.m */, + B3447EB2218BC69700557ACE /* PVPlayCore+Audio.mm */, B3447EAD218BC5C500557ACE /* PVPlayCore+Video.h */, - B3447EAE218BC5C500557ACE /* PVPlayCore+Video.m */, + B3447EAE218BC5C500557ACE /* PVPlayCore+Video.mm */, B3447EA9218BC59D00557ACE /* PVPlayCore+Saves.h */, - B3447EAA218BC59D00557ACE /* PVPlayCore+Saves.m */, + B3447EAA218BC59D00557ACE /* PVPlayCore+Saves.mm */, B3447E96218B809200557ACE /* PVPlayCore+Controls.h */, B3447E97218B809300557ACE /* PVPlayCore+Controls.mm */, ); @@ -3744,6 +3789,18 @@ B3C7620620783162009950E4 = { isa = PBXGroup; children = ( + B351224B27843535001C4B83 /* bzlib.c */, + B35122502784355E001C4B83 /* blocksort.c */, + B351224F2784355E001C4B83 /* bzip2.c */, + B35122542784355F001C4B83 /* bzip2recover.c */, + B35122552784355F001C4B83 /* bzlib.c */, + B35122512784355E001C4B83 /* compress.c */, + B35122562784355F001C4B83 /* crctable.c */, + B35122572784355F001C4B83 /* decompress.c */, + B35122532784355E001C4B83 /* huffman.c */, + B351224D2784355E001C4B83 /* mk251.c */, + B35122522784355E001C4B83 /* randtable.c */, + B351224E2784355E001C4B83 /* unzcrash.c */, B3135B2A26E4C6850047F338 /* Play.xcodeproj */, B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, B313544F26E4C4920047F338 /* Play- */, @@ -3905,6 +3962,7 @@ buildRules = ( ); dependencies = ( + B3B2546C27842B7B00F97E55 /* PBXTargetDependency */, ); name = "PVPlay-iOS"; productName = PVReicast; @@ -4157,6 +4215,14 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + B3512262278435B1001C4B83 /* decompress.c in Sources */, + B3512264278435B1001C4B83 /* huffman.c in Sources */, + B3512263278435B1001C4B83 /* blocksort.c in Sources */, + B3512268278435B1001C4B83 /* bzlib.c in Sources */, + B3512267278435B1001C4B83 /* randtable.c in Sources */, + B3512265278435B1001C4B83 /* crctable.c in Sources */, + B3512266278435B1001C4B83 /* compress.c in Sources */, + B3512269278435B1001C4B83 /* bzip2.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4164,11 +4230,12 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B3135BA626E4CD5A0047F338 /* PVPlayCore+Video.m in Sources */, - B3135BA426E4CD500047F338 /* PVPlayCore+Saves.m in Sources */, + B3135BA626E4CD5A0047F338 /* PVPlayCore+Video.mm in Sources */, + B3135BA426E4CD500047F338 /* PVPlayCore+Saves.mm in Sources */, B3135BA326E4CD080047F338 /* PVPlayCore.mm in Sources */, + B351223B27843319001C4B83 /* PVPlay.mm in Sources */, B3135B8626E4C9DB0047F338 /* GSH_OpenGLiOS.cpp in Sources */, - B3135BA826E4CD600047F338 /* PVPlayCore+Audio.m in Sources */, + B3135BA826E4CD600047F338 /* PVPlayCore+Audio.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4183,10 +4250,11 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B3135BA726E4CD5A0047F338 /* PVPlayCore+Video.m in Sources */, - B3135BA526E4CD500047F338 /* PVPlayCore+Saves.m in Sources */, + B3135BA726E4CD5A0047F338 /* PVPlayCore+Video.mm in Sources */, + B3135BA526E4CD500047F338 /* PVPlayCore+Saves.mm in Sources */, + B351223A27843318001C4B83 /* PVPlay.mm in Sources */, B3135B9B26E4CAD40047F338 /* PVPlayCore.mm in Sources */, - B3135BA926E4CD600047F338 /* PVPlayCore+Audio.m in Sources */, + B3135BA926E4CD600047F338 /* PVPlayCore+Audio.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4243,6 +4311,11 @@ name = zlib; targetProxy = B3135B9926E4CA1A0047F338 /* PBXContainerItemProxy */; }; + B3B2546C27842B7B00F97E55 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B30178D2207C901D0051B93D /* play-iOS */; + targetProxy = B3B2546B27842B7B00F97E55 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -4395,6 +4468,7 @@ B324C5022191A2A2009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -4402,13 +4476,16 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "\"$(SRCROOT)/Play-/deps/Framework/include\"", "\"$(SRCROOT)/Play-/Source/ui_ios\"", "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/CodeGen/include\"", + "\"$(SRCROOT)/Play-/Source\"", ); INFOPLIST_FILE = "$(SRCROOT)/PVPlay/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4773,6 +4850,7 @@ B3C7621920783162009950E4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -4780,13 +4858,16 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "\"$(SRCROOT)/Play-/deps/Framework/include\"", "\"$(SRCROOT)/Play-/Source/ui_ios\"", "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/CodeGen/include\"", + "\"$(SRCROOT)/Play-/Source\"", ); INFOPLIST_FILE = "$(SRCROOT)/PVPlay/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4807,6 +4888,7 @@ B3C7621A20783162009950E4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -4814,13 +4896,16 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "\"$(SRCROOT)/Play-/deps/Framework/include\"", "\"$(SRCROOT)/Play-/Source/ui_ios\"", "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/CodeGen/include\"", + "\"$(SRCROOT)/Play-/Source\"", ); INFOPLIST_FILE = "$(SRCROOT)/PVPlay/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; diff --git a/Cores/Play/PVPlayCore/Core/PVPlayCore+Audio.m b/Cores/Play/PVPlayCore/Core/PVPlayCore+Audio.m deleted file mode 100644 index 156a99ed8c..0000000000 --- a/Cores/Play/PVPlayCore/Core/PVPlayCore+Audio.m +++ /dev/null @@ -1,25 +0,0 @@ -// -// PVPlayCore+Audio.m -// PVPlay -// -// Created by Joseph Mattiello on 11/1/18. -// Copyright © 2021 Provenance. All rights reserved. -// - -#import "PVPlayCore+Audio.h" - -@implementation PVPlayCore (Audio) - -- (NSTimeInterval)frameInterval { - return isNTSC ? 60 : 50; -} - -- (NSUInteger)channelCount { - return 2; -} - -- (double)audioSampleRate { - return sampleRate; -} - -@end diff --git a/Cores/Play/PVPlayCore/Core/PVPlayCore+Audio.mm b/Cores/Play/PVPlayCore/Core/PVPlayCore+Audio.mm new file mode 100644 index 0000000000..5cb67f3c19 --- /dev/null +++ b/Cores/Play/PVPlayCore/Core/PVPlayCore+Audio.mm @@ -0,0 +1,61 @@ +// +// PVPlayCore+Audio.m +// PVPlay +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import "PVPlayCore+Audio.h" + +@implementation PVPlayCore (Audio) + +- (NSTimeInterval)frameInterval { + return isNTSC ? 60 : 50; +} + +- (NSUInteger)channelCount { + return 2; +} + +- (double)audioSampleRate { + return sampleRate; +} + +@end + +#pragma mark - Sound callbacks + +//void CSH_OpenEmu::Reset() +//{ +// +//} +// +//bool CSH_OpenEmu::HasFreeBuffers() +//{ +// return true; +//} +// +//void CSH_OpenEmu::RecycleBuffers() +//{ +// +//} +// +//void CSH_OpenEmu::Write(int16 *audio, unsigned int sampleCount, unsigned int sampleRate) +//{ +// GET_CURRENT_OR_RETURN(); +// +// OERingBuffer *rb = [current audioBufferAtIndex:0]; +// [rb write:audio maxLength:sampleCount*2]; +//} +// +//static CSoundHandler *SoundHandlerFactory() +//{ +// OESetThreadRealtime(1. / (1 * 60), .007, .03); +// return new CSH_OpenEmu(); +//} +// +//CSoundHandler::FactoryFunction CSH_OpenEmu::GetFactoryFunction() +//{ +// return SoundHandlerFactory; +//} diff --git a/Cores/Play/PVPlayCore/Core/PVPlayCore+Controls.mm b/Cores/Play/PVPlayCore/Core/PVPlayCore+Controls.mm index 49030ed878..269321a6a0 100644 --- a/Cores/Play/PVPlayCore/Core/PVPlayCore+Controls.mm +++ b/Cores/Play/PVPlayCore/Core/PVPlayCore+Controls.mm @@ -186,3 +186,107 @@ - (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player { } @end + +#pragma mark - Pad callbacks + +void CPH_OpenEmu::Update(uint8* ram) +{ + GET_CURRENT_OR_RETURN(); + + for(auto listenerIterator(std::begin(m_listeners)); + listenerIterator != std::end(m_listeners); listenerIterator++) + { + auto* listener(*listenerIterator); + + for(unsigned int i = 0; i < PS2::CControllerInfo::MAX_BUTTONS; i++) + { + const auto& binding = current->_bindings[i]; + if(!binding) continue; + uint32 value = binding->GetValue(); + auto currentButtonId = static_cast(i); + if(PS2::CControllerInfo::IsAxis(currentButtonId)) + { + listener->SetAxisState(0, currentButtonId, value & 0xFF, ram); + } + else + { + listener->SetButtonState(0, currentButtonId, value != 0, ram); + } + } + } + +} + +static CPadHandler *PadHandlerFactory() +{ + return new CPH_OpenEmu(); +} + +CPadHandler::FactoryFunction CPH_OpenEmu::GetFactoryFunction() +{ + return PadHandlerFactory; +} + +#pragma mark - + +//CSimpleBinding::CSimpleBinding(OEPS2Button keyCode) +//: m_keyCode(keyCode) +//, m_state(0) +//{ +// +//} +// +//CSimpleBinding::~CSimpleBinding() = default; +// +//void CSimpleBinding::ProcessEvent(OEPS2Button keyCode, uint32 state) +//{ +// if(keyCode != m_keyCode) return; +// m_state = state; +//} +// +//uint32 CSimpleBinding::GetValue() const +//{ +// return m_state; +//} + +#pragma mark - + +CSimulatedAxisBinding::CSimulatedAxisBinding(OEPS2Button negativeKeyCode, OEPS2Button positiveKeyCode) +: m_negativeKeyCode(negativeKeyCode) +, m_positiveKeyCode(positiveKeyCode) +, m_negativeState(0) +, m_positiveState(0) +{ + +} + +CSimulatedAxisBinding::~CSimulatedAxisBinding() = default; + +void CSimulatedAxisBinding::ProcessEvent(OEPS2Button keyCode, uint32 state) +{ + if(keyCode == m_negativeKeyCode) + { + m_negativeState = state; + } + + if(keyCode == m_positiveKeyCode) + { + m_positiveState = state; + } +} + +uint32 CSimulatedAxisBinding::GetValue() const +{ + uint32 value = 0x7F; + + if(m_negativeState) + { + value -= m_negativeState; + } else + if(m_positiveState) + { + value += m_positiveState; + } + + return value; +} diff --git a/Cores/Play/PVPlayCore/Core/PVPlayCore+Saves.m b/Cores/Play/PVPlayCore/Core/PVPlayCore+Saves.mm similarity index 65% rename from Cores/Play/PVPlayCore/Core/PVPlayCore+Saves.m rename to Cores/Play/PVPlayCore/Core/PVPlayCore+Saves.mm index 05bfb29d20..f1fee5224c 100644 --- a/Cores/Play/PVPlayCore/Core/PVPlayCore+Saves.m +++ b/Cores/Play/PVPlayCore/Core/PVPlayCore+Saves.mm @@ -23,7 +23,10 @@ - (BOOL)saveStateToFileAtPath:(NSString *)fileName { } - (void)saveStateToFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block { - block(NO, nil); +// const fs::path fsName(fileName.fileSystemRepresentation); +// auto success = _ps2VM.SaveState(fsName); +// success.wait(); +// block(success.get(), nil); } - (BOOL)loadStateFromFileAtPath:(NSString *)fileName { @@ -31,7 +34,11 @@ - (BOOL)loadStateFromFileAtPath:(NSString *)fileName { } - (void)loadStateFromFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block { - block(NO, nil); +// //FIXME: load save state at launch fails. +// const fs::path fsName(fileName.fileSystemRepresentation); +// auto success = _ps2VM.LoadState(fsName); +// success.wait(); +// block(success.get(), nil) } @end diff --git a/Cores/Play/PVPlayCore/Core/PVPlayCore+Video.m b/Cores/Play/PVPlayCore/Core/PVPlayCore+Video.mm similarity index 60% rename from Cores/Play/PVPlayCore/Core/PVPlayCore+Video.m rename to Cores/Play/PVPlayCore/Core/PVPlayCore+Video.mm index fc01bfbbaa..8d3c470a23 100644 --- a/Cores/Play/PVPlayCore/Core/PVPlayCore+Video.m +++ b/Cores/Play/PVPlayCore/Core/PVPlayCore+Video.mm @@ -13,10 +13,19 @@ #import #import +//#import "PS2VM.h" +//#import "gs/GSH_OpenGL/GSH_OpenGL.h" +//#import "PadHandler.h" +//#import "SoundHandler.h" +//#import "PS2VM_Preferences.h" +//#import "AppConfig.h" +//#import "StdStream.h" + @implementation PVPlayCore (Video) # pragma mark - Methods + - (void)videoInterrupt { //dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); @@ -40,7 +49,7 @@ - (void)executeFrame { # pragma mark - Properties - (CGSize)bufferSize { - return CGSizeMake(1024, 512); + return CGSizeMake(640, 480); } - (CGRect)screenRect { @@ -80,3 +89,39 @@ - (GLenum)depthFormat { return GL_DEPTH_COMPONENT24; } @end + +#pragma mark - Graphics callbacks + +//static CGSHandler *GSHandlerFactory() +//{ +// return new CGSH_OpenEmu(); +//} +// +//CGSHandler::FactoryFunction CGSH_OpenEmu::GetFactoryFunction() +//{ +// return GSHandlerFactory; +//} +// +//void CGSH_OpenEmu::InitializeImpl() +//{ +// GET_CURRENT_OR_RETURN(); +// +// [current.renderDelegate willRenderFrameOnAlternateThread]; +// CGSH_OpenGL::InitializeImpl(); +// +// this->m_presentFramebuffer = [current.renderDelegate.presentationFramebuffer intValue]; +// +// glClearColor(0,0,0,0); +// glClear(GL_COLOR_BUFFER_BIT); +//} +// +//void CGSH_OpenEmu::PresentBackbuffer() +//{ +// GET_CURRENT_OR_RETURN(); +// +// [current.renderDelegate didRenderFrameOnAlternateThread]; +// +// // Start the next one. +// [current.renderDelegate willRenderFrameOnAlternateThread]; +//} + diff --git a/Cores/Play/PVPlayCore/Core/PVPlayCore.mm b/Cores/Play/PVPlayCore/Core/PVPlayCore.mm index c0451caa1b..4a0281fe1f 100644 --- a/Cores/Play/PVPlayCore/Core/PVPlayCore.mm +++ b/Cores/Play/PVPlayCore/Core/PVPlayCore.mm @@ -15,11 +15,97 @@ #import #import +#import "PS2VM.h" +#import "gs/GSH_OpenGL/GSH_OpenGL.h" +#import "PadHandler.h" +#import "SoundHandler.h" +#import "PS2VM_Preferences.h" +#import "AppConfig.h" +#import "StdStream.h" + +__weak PVPlayCore *_current = nil; + +class CGSH_OpenEmu : public CGSH_OpenGL +{ +public: + static FactoryFunction GetFactoryFunction(); + virtual void InitializeImpl(); +protected: + virtual void PresentBackbuffer(); +}; + +class CSH_OpenEmu : public CSoundHandler +{ +public: + CSH_OpenEmu() {}; + virtual ~CSH_OpenEmu() {}; + virtual void Reset(); + virtual void Write(int16*, unsigned int, unsigned int); + virtual bool HasFreeBuffers(); + virtual void RecycleBuffers(); + + static FactoryFunction GetFactoryFunction(); +}; + +class CPH_OpenEmu : public CPadHandler +{ +public: + CPH_OpenEmu() {}; + virtual ~CPH_OpenEmu() {}; + void Update(uint8*); + + static FactoryFunction GetFactoryFunction(); +}; + +class CBinding +{ +public: + virtual ~CBinding() {} + + virtual void ProcessEvent(PVPS2Button, uint32) = 0; + + virtual uint32 GetValue() const = 0; +}; + +typedef std::shared_ptr BindingPtr; + +class CSimpleBinding : public CBinding +{ +public: + CSimpleBinding(PVPS2Button); + virtual ~CSimpleBinding(); + + virtual void ProcessEvent(PVPS2Button, uint32); + + virtual uint32 GetValue() const; + +private: + PVPS2Button m_keyCode; + uint32 m_state; +}; + +class CSimulatedAxisBinding : public CBinding +{ +public: + CSimulatedAxisBinding(PVPS2Button, PVPS2Button); + virtual ~CSimulatedAxisBinding(); + + virtual void ProcessEvent(PVPS2Button, uint32); + + virtual uint32 GetValue() const; + +private: + PVPS2Button m_negativeKeyCode; + PVPS2Button m_positiveKeyCode; + + uint32 m_negativeState; + uint32 m_positiveState; +}; + -__weak PVPlayCore *_current = 0; #pragma mark - Private -@interface PVPlayCore() { +@interface PVPlayCore() { } @@ -28,6 +114,13 @@ @interface PVPlayCore() { #pragma mark - PVPlayCore Begin @implementation PVPlayCore +{ + @public + // ivars + CPS2VM _ps2VM; + NSString *_romPath; + BindingPtr _bindings[PS2::CControllerInfo::MAX_BUTTONS]; +} - (instancetype)init { if (self = [super init]) { @@ -58,8 +151,6 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; const char *dataPath; - [self initControllBuffers]; - // TODO: Proper path NSString *configPath = self.saveStatesPath; dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; @@ -75,67 +166,93 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { attributes:nil error:NULL]; + _romPath = [path copy]; + return YES; } #pragma mark - Running - (void)startEmulation { - if(!self.isRunning) { - [super startEmulation]; -// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; - } -} + [self setupEmulation]; + [super startEmulation]; + [self.frontBufferCondition lock]; + while (!shouldStop && self.isFrontBufferReady) [self.frontBufferCondition wait]; + [self.frontBufferCondition unlock]; -- (void)runReicastEmuThread { - @autoreleasepool - { -// [self reicastMain]; +} - // Core returns +- (void)setupEmulation +{ + _current = self; - // Unlock rendering thread -// dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); + CAppConfig::GetInstance().SetPreferencePath(PREF_PS2_CDROM0_PATH, [_romPath fileSystemRepresentation]); + NSFileManager *fm = [NSFileManager defaultManager]; + NSString *mcd0 = [self.batterySavesPath stringByAppendingPathComponent:@"mcd0"]; + NSString *mcd1 = [self.batterySavesPath stringByAppendingPathComponent:@"mcd1"]; + NSString *hdd = [self.batterySavesPath stringByAppendingPathComponent:@"hdd"]; - [super stopEmulation]; + if (![fm fileExistsAtPath:mcd0]) { + [fm createDirectoryAtPath:mcd0 withIntermediateDirectories:YES attributes:nil error:NULL]; + } + if (![fm fileExistsAtPath:mcd1]) { + [fm createDirectoryAtPath:mcd1 withIntermediateDirectories:YES attributes:nil error:NULL]; } + if (![fm fileExistsAtPath:hdd]) { + [fm createDirectoryAtPath:hdd withIntermediateDirectories:YES attributes:nil error:NULL]; + } + CAppConfig::GetInstance().SetPreferencePath(PREF_PS2_MC0_DIRECTORY, mcd0.fileSystemRepresentation); + CAppConfig::GetInstance().SetPreferencePath(PREF_PS2_MC1_DIRECTORY, mcd1.fileSystemRepresentation); + CAppConfig::GetInstance().SetPreferencePath(PREF_PS2_HOST_DIRECTORY, hdd.fileSystemRepresentation); + CAppConfig::GetInstance().SetPreferencePath(PREF_PS2_ROM0_DIRECTORY, self.BIOSPath.fileSystemRepresentation); + CAppConfig::GetInstance().SetPreferenceInteger(PREF_CGSHANDLER_PRESENTATION_MODE, CGSHandler::PRESENTATION_MODE_FIT); + CAppConfig::GetInstance().Save(); + + _ps2VM.Initialize(); +// +// _bindings[PS2::CControllerInfo::START] = std::make_shared(PVPS2ButtonStart); +// _bindings[PS2::CControllerInfo::SELECT] = std::make_shared(PVPS2ButtonSelect); +// _bindings[PS2::CControllerInfo::DPAD_LEFT] = std::make_shared(PVPS2ButtonLeft); +// _bindings[PS2::CControllerInfo::DPAD_RIGHT] = std::make_shared(PVPS2ButtonRight); +// _bindings[PS2::CControllerInfo::DPAD_UP] = std::make_shared(PVPS2ButtonUp); +// _bindings[PS2::CControllerInfo::DPAD_DOWN] = std::make_shared(PVPS2ButtonDown); +// _bindings[PS2::CControllerInfo::SQUARE] = std::make_shared(PVPS2ButtonSquare); +// _bindings[PS2::CControllerInfo::CROSS] = std::make_shared(PVPS2ButtonCross); +// _bindings[PS2::CControllerInfo::TRIANGLE] = std::make_shared(PVPS2ButtonTriangle); +// _bindings[PS2::CControllerInfo::CIRCLE] = std::make_shared(PVPS2ButtonCircle); +// _bindings[PS2::CControllerInfo::L1] = std::make_shared(PVPS2ButtonL1); +// _bindings[PS2::CControllerInfo::L2] = std::make_shared(PVPS2ButtonL2); +// _bindings[PS2::CControllerInfo::L3] = std::make_shared(PVPS2ButtonL3); +// _bindings[PS2::CControllerInfo::R1] = std::make_shared(PVPS2ButtonR1); +// _bindings[PS2::CControllerInfo::R2] = std::make_shared(PVPS2ButtonR2); +// _bindings[PS2::CControllerInfo::R3] = std::make_shared(PVPS2ButtonR3); +// _bindings[PS2::CControllerInfo::ANALOG_LEFT_X] = std::make_shared(PVPS2LeftAnalogLeft,PVPS2LeftAnalogRight); +// _bindings[PS2::CControllerInfo::ANALOG_LEFT_Y] = std::make_shared(PVPS2LeftAnalogUp,PVPS2LeftAnalogDown); +// _bindings[PS2::CControllerInfo::ANALOG_RIGHT_X] = std::make_shared(PVPS2RightAnalogLeft,PVPS2RightAnalogRight); +// _bindings[PS2::CControllerInfo::ANALOG_RIGHT_Y] = std::make_shared(PVPS2RightAnalogUp,PVPS2RightAnalogDown); + + // TODO: In Debug disable dynarec? } + - (void)setPauseEmulation:(BOOL)flag { - [super setPauseEmulation:flag]; + if (flag) { + _ps2VM.Pause(); + } else { + _ps2VM.Resume(); + } - if (flag) - { -// dc_stop(); -// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); - [self.frontBufferCondition lock]; - [self.frontBufferCondition signal]; - [self.frontBufferCondition unlock]; - } else { -// dc_run(); - } + [super setPauseEmulation:flag]; } - (void)stopEmulation { -// has_init = false; - - // TODO: Call reicast stop command here -// dc_term(); - self->shouldStop = YES; -// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); -// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); - [self.frontBufferCondition lock]; - [self.frontBufferCondition signal]; - [self.frontBufferCondition unlock]; - + _ps2VM.Pause(); + _ps2VM.Destroy(); [super stopEmulation]; } - (void)resetEmulation { - // TODO: Call reicast reset command here -// plugins_Reset(true); -// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); - [self.frontBufferCondition lock]; - [self.frontBufferCondition signal]; - [self.frontBufferCondition unlock]; + _ps2VM.Pause(); + _ps2VM.Reset(); + _ps2VM.Resume(); } @end diff --git a/Cores/Play/PVPlayCore/PVPlay.mm b/Cores/Play/PVPlayCore/PVPlay.mm index 3588ef2367..372db27452 100644 --- a/Cores/Play/PVPlayCore/PVPlay.mm +++ b/Cores/Play/PVPlayCore/PVPlay.mm @@ -9,3 +9,104 @@ #import "PVPlayCore.h" #import "PVPlayCore+Controls.h" #import "PVPlayCore+Video.h" + +#include "PathUtils.h" +#include "Utf8.h" + +using namespace Framework; + +fs::path PathUtils::GetRoamingDataPath() +{ + __strong __typeof__(_current) current = _current; + if (current == nil) { + NSURL *url = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil]; + std::string directory = [url fileSystemRepresentation]; + return fs::path(directory); + } + NSString *path = current.batterySavesPath; + return fs::path(path.fileSystemRepresentation); +} + +fs::path PathUtils::GetAppResourcesPath() +{ + NSBundle* bundle = [NSBundle bundleForClass:[PVPlayCore class]]; + NSURL* bundleURL = [bundle resourceURL]; + return fs::path([bundleURL fileSystemRepresentation]); +} + +fs::path PathUtils::GetPersonalDataPath() +{ + return GetRoamingDataPath(); +} + +fs::path PathUtils::GetCachePath() +{ + NSURL* url = [[NSFileManager defaultManager] URLForDirectory:NSCachesDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil]; + std::string directory = [url fileSystemRepresentation]; + return fs::path(directory); +} + +void PathUtils::EnsurePathExists(const fs::path& path) +{ + typedef fs::path PathType; + PathType buildPath; + for(PathType::iterator pathIterator(path.begin()); + pathIterator != path.end(); pathIterator++) + { + buildPath /= (*pathIterator); + std::error_code existsErrorCode; + bool exists = fs::exists(buildPath, existsErrorCode); + if(existsErrorCode) + { + if(existsErrorCode.value() == ENOENT) + { + exists = false; + } + else + { + throw std::runtime_error("Couldn't ensure that path exists."); + } + } + if(!exists) + { + fs::create_directory(buildPath); + } + } +} + +//////////////////////////////////////////// +//NativeString <-> Path Function Utils +//////////////////////////////////////////// + +template +static std::string GetNativeStringFromPathInternal(const StringType&); + +template <> +std::string GetNativeStringFromPathInternal(const std::string& str) +{ + return str; +} + +template +static StringType GetPathFromNativeStringInternal(const std::string&); + +template <> +std::string GetPathFromNativeStringInternal(const std::string& str) +{ + return str; +} + +//////////////////////////////////////////// +//NativeString <-> Path Function Implementations +//////////////////////////////////////////// + +std::string PathUtils::GetNativeStringFromPath(const fs::path& path) +{ + return GetNativeStringFromPathInternal(path.native()); +} + +fs::path PathUtils::GetPathFromNativeString(const std::string& str) +{ + auto cvtStr = GetPathFromNativeStringInternal(str); + return fs::path(cvtStr); +} diff --git a/Cores/Play/cmake/Play.xcodeproj/project.pbxproj b/Cores/Play/cmake/Play.xcodeproj/project.pbxproj index addd3cbcdd..5b4a3717e1 100644 --- a/Cores/Play/cmake/Play.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Play.xcodeproj/project.pbxproj @@ -4440,7 +4440,7 @@ Base, ); mainGroup = 4CB0540758734232B095E0B9; - projectDirPath = "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-"; + projectDirPath = "./../Play-"; projectRoot = ""; targets = ( 6B9C69E5DB214681B2A5C976 /* ALL_BUILD */, @@ -4511,7 +4511,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake\n /usr/local/Cellar/cmake/3.21.1/bin/ctest --force-new-ctest-process -C $CONFIGURATION$EFFECTIVE_PLATFORM_NAME\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake\n /usr/local/Cellar/cmake/3.21.1/bin/ctest --force-new-ctest-process -C $CONFIGURATION$EFFECTIVE_PLATFORM_NAME\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake\n /usr/local/Cellar/cmake/3.21.1/bin/ctest --force-new-ctest-process -C $CONFIGURATION$EFFECTIVE_PLATFORM_NAME\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake\n /usr/local/Cellar/cmake/3.21.1/bin/ctest --force-new-ctest-process -C $CONFIGURATION$EFFECTIVE_PLATFORM_NAME\nfi\n"; + shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd ./cmake\n /usr/local/Cellar/cmake/3.21.1/bin/ctest --force-new-ctest-process -C $CONFIGURATION$EFFECTIVE_PLATFORM_NAME\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd ./cmake\n /usr/local/Cellar/cmake/3.21.1/bin/ctest --force-new-ctest-process -C $CONFIGURATION$EFFECTIVE_PLATFORM_NAME\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd ./cmake\n /usr/local/Cellar/cmake/3.21.1/bin/ctest --force-new-ctest-process -C $CONFIGURATION$EFFECTIVE_PLATFORM_NAME\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd ./cmake\n /usr/local/Cellar/cmake/3.21.1/bin/ctest --force-new-ctest-process -C $CONFIGURATION$EFFECTIVE_PLATFORM_NAME\nfi\n"; showEnvVarsInLog = 0; }; 93426DA6A4AC2C2AC9CE883C /* CMake PostBuild Rules */ = { @@ -4525,7 +4525,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake\n /usr/local/Cellar/cmake/3.21.1/bin/cmake -DBUILD_TYPE=$CONFIGURATION -DEFFECTIVE_PLATFORM_NAME=$EFFECTIVE_PLATFORM_NAME -P cmake_install.cmake\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake\n /usr/local/Cellar/cmake/3.21.1/bin/cmake -DBUILD_TYPE=$CONFIGURATION -DEFFECTIVE_PLATFORM_NAME=$EFFECTIVE_PLATFORM_NAME -P cmake_install.cmake\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake\n /usr/local/Cellar/cmake/3.21.1/bin/cmake -DBUILD_TYPE=$CONFIGURATION -DEFFECTIVE_PLATFORM_NAME=$EFFECTIVE_PLATFORM_NAME -P cmake_install.cmake\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake\n /usr/local/Cellar/cmake/3.21.1/bin/cmake -DBUILD_TYPE=$CONFIGURATION -DEFFECTIVE_PLATFORM_NAME=$EFFECTIVE_PLATFORM_NAME -P cmake_install.cmake\nfi\n"; + shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd ./cmake\n /usr/local/Cellar/cmake/3.21.1/bin/cmake -DBUILD_TYPE=$CONFIGURATION -DEFFECTIVE_PLATFORM_NAME=$EFFECTIVE_PLATFORM_NAME -P cmake_install.cmake\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd ./cmake\n /usr/local/Cellar/cmake/3.21.1/bin/cmake -DBUILD_TYPE=$CONFIGURATION -DEFFECTIVE_PLATFORM_NAME=$EFFECTIVE_PLATFORM_NAME -P cmake_install.cmake\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd ./cmake\n /usr/local/Cellar/cmake/3.21.1/bin/cmake -DBUILD_TYPE=$CONFIGURATION -DEFFECTIVE_PLATFORM_NAME=$EFFECTIVE_PLATFORM_NAME -P cmake_install.cmake\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd ./cmake\n /usr/local/Cellar/cmake/3.21.1/bin/cmake -DBUILD_TYPE=$CONFIGURATION -DEFFECTIVE_PLATFORM_NAME=$EFFECTIVE_PLATFORM_NAME -P cmake_install.cmake\nfi\n"; showEnvVarsInLog = 0; }; 9723A2F29E4258623825FC61 /* Generate CMakeFiles/ZERO_CHECK */ = { @@ -4538,11 +4538,11 @@ ); name = "Generate CMakeFiles/ZERO_CHECK"; outputPaths = ( - /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/CMakeFiles/ZERO_CHECK, + ./cmake/CMakeFiles/ZERO_CHECK, ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake\n make -f /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/CMakeScripts/ReRunCMake.make\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake\n make -f /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/CMakeScripts/ReRunCMake.make\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake\n make -f /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/CMakeScripts/ReRunCMake.make\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake\n make -f /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/CMakeScripts/ReRunCMake.make\nfi\n"; + shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd ./cmake\n make -f ./cmake/CMakeScripts/ReRunCMake.make\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd ./cmake\n make -f ./cmake/CMakeScripts/ReRunCMake.make\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd ./cmake\n make -f ./cmake/CMakeScripts/ReRunCMake.make\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd ./cmake\n make -f ./cmake/CMakeScripts/ReRunCMake.make\nfi\n"; showEnvVarsInLog = 0; }; A18BB1BA8F8AEED904EB781A /* Generate CMakeFiles/ALL_BUILD */ = { @@ -4555,11 +4555,11 @@ ); name = "Generate CMakeFiles/ALL_BUILD"; outputPaths = ( - /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/CMakeFiles/ALL_BUILD, + ./cmake/CMakeFiles/ALL_BUILD, ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake\n echo Build\\ all\\ projects\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake\n echo Build\\ all\\ projects\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake\n echo Build\\ all\\ projects\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake\n echo Build\\ all\\ projects\nfi\n"; + shellScript = "set -e\nif test \"$CONFIGURATION\" = \"Debug\"; then :\n cd ./cmake\n echo Build\\ all\\ projects\nfi\nif test \"$CONFIGURATION\" = \"Release\"; then :\n cd ./cmake\n echo Build\\ all\\ projects\nfi\nif test \"$CONFIGURATION\" = \"MinSizeRel\"; then :\n cd ./cmake\n echo Build\\ all\\ projects\nfi\nif test \"$CONFIGURATION\" = \"RelWithDebInfo\"; then :\n cd ./cmake\n echo Build\\ all\\ projects\nfi\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -5851,13 +5851,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenGl/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenGl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -5873,7 +5873,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework_OpenGl; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl; + SYMROOT = ./cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -5889,7 +5889,7 @@ CODE_SIGN_IDENTITY = ""; IPHONEOS_DEPLOYMENT_TARGET = 11.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/build; + SYMROOT = ./cmake/build; }; name = MinSizeRel; }; @@ -5911,13 +5911,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/CMakeFiles/CodeGenTestSuite.dir/Info.plist; + INFOPLIST_FILE = ./cmake/Source/ui_ios/Source/CodeGen/CMakeFiles/CodeGenTestSuite.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -5928,12 +5928,12 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/CodeGen/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, @@ -5942,7 +5942,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = CodeGenTestSuite; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen; + SYMROOT = ./cmake/Source/ui_ios/Source/CodeGen; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -5966,7 +5966,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/deps/lzma-19.00/include", + "$(SRCROOT)/deps/libchdr/deps/lzma-19.00/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -5982,7 +5982,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = lzma; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00"; + SYMROOT = "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6010,23 +6010,23 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenGl/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenAl/../../include", + "$(SRCROOT)/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenGl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenAl/../../include", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/System/Library/Frameworks/OpenAL.framework/Headers, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/build_cmake/iCade-iOS/../../iCade-iOS", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/build_cmake/SDWebImage/../../SDWebImage", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkSqlite/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/nlohmann_json/single_include", + "$(SRCROOT)/deps/Dependencies/build_cmake/iCade-iOS/../../iCade-iOS", + "$(SRCROOT)/deps/Dependencies/build_cmake/SDWebImage/../../SDWebImage", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkSqlite/../../include", + "$(SRCROOT)/deps/Dependencies/nlohmann_json/single_include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/CMakeFiles/Play.dir/Info.plist; + INFOPLIST_FILE = ./cmake/Source/ui_ios/CMakeFiles/Play.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -6059,34 +6059,34 @@ QuartzCore, "-framework", ImageIO, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libgsh_opengl.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libsh_openal.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/iCade-iOS/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libiCade_Static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SDWebImage/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libSDWebImage_Static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libui_shared.a", + "./cmake/Source/ui_ios/gs/GSH_OpenGL/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libgsh_opengl.a", + "./cmake/Source/ui_ios/Source/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/SH_OpenAL/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libsh_openal.a", + "./cmake/Source/ui_ios/iCade-iOS/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libiCade_Static.a", + "./cmake/Source/ui_ios/SDWebImage/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libSDWebImage_Static.a", + "./cmake/Source/ui_ios/ui_shared/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libui_shared.a", "-ObjC", "-lsqlite3", "-framework", OpenAL, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libgsh_opengl.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_OpenGl.a", + "./cmake/Source/ui_ios/gs/GSH_OpenGL/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libgsh_opengl.a", + "./cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_OpenGl.a", "-framework", OpenGLES, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_OpenAl.a", + "./cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_OpenAl.a", "-framework", OpenAL, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libzlib.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libsqlite3.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, @@ -6095,7 +6095,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Play; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios; + SYMROOT = ./cmake/Source/ui_ios; TARGETED_DEVICE_FAMILY = "1,2"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; @@ -6120,9 +6120,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -6142,7 +6142,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework_Http; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp; + SYMROOT = ./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6166,8 +6166,8 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -6186,7 +6186,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework; + SYMROOT = ./cmake/Source/ui_ios/Source/Framework; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6214,15 +6214,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenGl/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenAl/../../include", + "$(SRCROOT)/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenGl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenAl/../../include", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/System/Library/Frameworks/OpenAL.framework/Headers, "$(inherited)", ); @@ -6239,7 +6239,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = sh_openal; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL; + SYMROOT = ./cmake/Source/ui_ios/SH_OpenAL; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6267,13 +6267,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenGl/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenGl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -6289,7 +6289,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework_OpenGl; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl; + SYMROOT = ./cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6312,7 +6312,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/build_cmake/SDWebImage/../../SDWebImage", + "$(SRCROOT)/deps/Dependencies/build_cmake/SDWebImage/../../SDWebImage", "$(inherited)", ); INSTALL_PATH = ""; @@ -6331,7 +6331,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = SDWebImage_Static; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SDWebImage; + SYMROOT = ./cmake/Source/ui_ios/SDWebImage; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6358,15 +6358,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/GsAreaTest/CMakeFiles/GsAreaTest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/GsAreaTest/CMakeFiles/GsAreaTest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -6377,25 +6377,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = GsAreaTest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/GsAreaTest; + SYMROOT = ./cmake/tools/GsAreaTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6418,7 +6418,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = install; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6441,7 +6441,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/deps/zlib-1.2.11", + "$(SRCROOT)/deps/libchdr/deps/zlib-1.2.11", "$(inherited)", ); INSTALL_PATH = ""; @@ -6456,7 +6456,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = zlib; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11"; + SYMROOT = "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6479,7 +6479,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/build_cmake/SDWebImage/../../SDWebImage", + "$(SRCROOT)/deps/Dependencies/build_cmake/SDWebImage/../../SDWebImage", "$(inherited)", ); INSTALL_PATH = ""; @@ -6498,7 +6498,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = SDWebImage_Static; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SDWebImage; + SYMROOT = ./cmake/Source/ui_ios/SDWebImage; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6521,7 +6521,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/deps/zlib-1.2.11", + "$(SRCROOT)/deps/libchdr/deps/zlib-1.2.11", "$(inherited)", ); INSTALL_PATH = ""; @@ -6537,7 +6537,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = zlib; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11"; + SYMROOT = "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6564,15 +6564,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/VuTest/CMakeFiles/VuTest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/VuTest/CMakeFiles/VuTest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -6583,25 +6583,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = VuTest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/VuTest; + SYMROOT = ./cmake/tools/VuTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6625,9 +6625,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -6650,7 +6650,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework_Http; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp; + SYMROOT = ./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6674,13 +6674,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/CMakeFiles/CodeGenTestSuite.dir/Info.plist; + INFOPLIST_FILE = ./cmake/Source/ui_ios/Source/CodeGen/CMakeFiles/CodeGenTestSuite.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -6692,12 +6692,12 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/Debug${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/CodeGen/Debug${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, @@ -6706,7 +6706,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = CodeGenTestSuite; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen; + SYMROOT = ./cmake/Source/ui_ios/Source/CodeGen; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6745,7 +6745,7 @@ CODE_SIGN_IDENTITY = ""; IPHONEOS_DEPLOYMENT_TARGET = 11.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/build; + SYMROOT = ./cmake/build; }; name = Release; }; @@ -6767,10 +6767,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", "$(inherited)", ); INSTALL_PATH = ""; @@ -6788,7 +6788,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = CodeGen; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen; + SYMROOT = ./cmake/Source/ui_ios/Source/CodeGen; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6815,15 +6815,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/SpuTest/CMakeFiles/SpuTest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/SpuTest/CMakeFiles/SpuTest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -6835,25 +6835,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Release${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/Release${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/Release${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/Release${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/Release${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Release${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Release${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/Release${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Release${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Release${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = SpuTest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/SpuTest; + SYMROOT = ./cmake/tools/SpuTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6880,15 +6880,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/SpuTest/CMakeFiles/SpuTest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/SpuTest/CMakeFiles/SpuTest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -6899,25 +6899,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Debug${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/Debug${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/Debug${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/Debug${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/Debug${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Debug${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Debug${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/Debug${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Debug${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Debug${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = SpuTest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/SpuTest; + SYMROOT = ./cmake/tools/SpuTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6941,9 +6941,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -6961,7 +6961,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework_Amazon; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon; + SYMROOT = ./cmake/Source/ui_ios/Source/FrameworkAmazon; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -6988,15 +6988,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/SpuTest/CMakeFiles/SpuTest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/SpuTest/CMakeFiles/SpuTest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -7007,25 +7007,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = SpuTest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/SpuTest; + SYMROOT = ./cmake/tools/SpuTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7052,15 +7052,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/ui_shared/..", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkSqlite/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/nlohmann_json/single_include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source/ui_shared/..", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkSqlite/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Dependencies/nlohmann_json/single_include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -7076,7 +7076,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = ui_shared; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared; + SYMROOT = ./cmake/Source/ui_ios/ui_shared; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7100,9 +7100,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -7121,7 +7121,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework_Amazon; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon; + SYMROOT = ./cmake/Source/ui_ios/Source/FrameworkAmazon; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7145,8 +7145,8 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -7164,7 +7164,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework; + SYMROOT = ./cmake/Source/ui_ios/Source/Framework; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7188,10 +7188,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", "$(inherited)", ); INSTALL_PATH = ""; @@ -7207,7 +7207,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = CodeGen; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen; + SYMROOT = ./cmake/Source/ui_ios/Source/CodeGen; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7234,15 +7234,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/GsAreaTest/CMakeFiles/GsAreaTest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/GsAreaTest/CMakeFiles/GsAreaTest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -7254,25 +7254,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Release${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/Release${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/Release${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/Release${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/Release${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Release${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Release${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/Release${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Release${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Release${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = GsAreaTest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/GsAreaTest; + SYMROOT = ./cmake/tools/GsAreaTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7295,7 +7295,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/build_cmake/iCade-iOS/../../iCade-iOS", + "$(SRCROOT)/deps/Dependencies/build_cmake/iCade-iOS/../../iCade-iOS", "$(inherited)", ); INSTALL_PATH = ""; @@ -7313,7 +7313,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = iCade_Static; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/iCade-iOS"; + SYMROOT = "./cmake/Source/ui_ios/iCade-iOS"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7363,15 +7363,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/McServTest/CMakeFiles/McServTest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/McServTest/CMakeFiles/McServTest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -7382,25 +7382,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = McServTest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/McServTest; + SYMROOT = ./cmake/tools/McServTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7427,15 +7427,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/ui_shared/..", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkSqlite/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/nlohmann_json/single_include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source/ui_shared/..", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkSqlite/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Dependencies/nlohmann_json/single_include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -7452,7 +7452,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = ui_shared; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared; + SYMROOT = ./cmake/Source/ui_ios/ui_shared; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7475,12 +7475,12 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/lzma", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/zlib", - /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/include, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/deps/lzma-19.00/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/deps/zlib-1.2.11", + "$(SRCROOT)/deps/libchdr/lzma", + "$(SRCROOT)/deps/libchdr/zlib", + ./cmake/Source/ui_ios/Source/libchdr/include, + "$(SRCROOT)/deps/libchdr/include", + "$(SRCROOT)/deps/libchdr/deps/lzma-19.00/include", + "$(SRCROOT)/deps/libchdr/deps/zlib-1.2.11", "$(inherited)", ); INSTALL_PATH = ""; @@ -7496,7 +7496,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "chdr-static"; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr; + SYMROOT = ./cmake/Source/ui_ios/Source/libchdr; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7519,7 +7519,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/build_cmake/SDWebImage/../../SDWebImage", + "$(SRCROOT)/deps/Dependencies/build_cmake/SDWebImage/../../SDWebImage", "$(inherited)", ); INSTALL_PATH = ""; @@ -7537,7 +7537,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = SDWebImage_Static; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SDWebImage; + SYMROOT = ./cmake/Source/ui_ios/SDWebImage; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7564,15 +7564,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/AutoTest/CMakeFiles/autotest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/AutoTest/CMakeFiles/autotest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -7584,25 +7584,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Release${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/Release${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/Release${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/Release${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/Release${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Release${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Release${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/Release${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Release${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Release${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = autotest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/AutoTest; + SYMROOT = ./cmake/tools/AutoTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7626,9 +7626,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -7648,7 +7648,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework_Http; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp; + SYMROOT = ./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7671,7 +7671,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/build_cmake/iCade-iOS/../../iCade-iOS", + "$(SRCROOT)/deps/Dependencies/build_cmake/iCade-iOS/../../iCade-iOS", "$(inherited)", ); INSTALL_PATH = ""; @@ -7689,7 +7689,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = iCade_Static; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/iCade-iOS"; + SYMROOT = "./cmake/Source/ui_ios/iCade-iOS"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7716,15 +7716,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/VuTest/CMakeFiles/VuTest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/VuTest/CMakeFiles/VuTest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -7735,25 +7735,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = VuTest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/VuTest; + SYMROOT = ./cmake/tools/VuTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7776,7 +7776,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = install; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7804,14 +7804,14 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenGl/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenGl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -7827,7 +7827,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = gsh_opengl; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL; + SYMROOT = ./cmake/Source/ui_ios/gs/GSH_OpenGL; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7851,7 +7851,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenAl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenAl/../../include", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/System/Library/Frameworks/OpenAL.framework/Headers, "$(inherited)", ); @@ -7871,7 +7871,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework_OpenAl; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl; + SYMROOT = ./cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7898,14 +7898,14 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/../deps/Framework/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/../deps/CodeGen/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/Source/../deps/Framework/include", + "$(SRCROOT)/Source/../deps/CodeGen/include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -7922,7 +7922,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = PlayCore; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source; + SYMROOT = ./cmake/Source/ui_ios/Source; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7945,7 +7945,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/build_cmake/iCade-iOS/../../iCade-iOS", + "$(SRCROOT)/deps/Dependencies/build_cmake/iCade-iOS/../../iCade-iOS", "$(inherited)", ); INSTALL_PATH = ""; @@ -7962,7 +7962,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = iCade_Static; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/iCade-iOS"; + SYMROOT = "./cmake/Source/ui_ios/iCade-iOS"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -7985,7 +7985,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/deps/zlib-1.2.11", + "$(SRCROOT)/deps/libchdr/deps/zlib-1.2.11", "$(inherited)", ); INSTALL_PATH = ""; @@ -8001,7 +8001,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = zlib; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11"; + SYMROOT = "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -8024,7 +8024,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/deps/zlib-1.2.11", + "$(SRCROOT)/deps/libchdr/deps/zlib-1.2.11", "$(inherited)", ); INSTALL_PATH = ""; @@ -8040,7 +8040,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = zlib; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11"; + SYMROOT = "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -8056,7 +8056,7 @@ CODE_SIGN_IDENTITY = ""; IPHONEOS_DEPLOYMENT_TARGET = 11.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/build; + SYMROOT = ./cmake/build; }; name = Debug; }; @@ -8077,7 +8077,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = ZERO_CHECK; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -8101,7 +8101,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenAl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenAl/../../include", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/System/Library/Frameworks/OpenAL.framework/Headers, "$(inherited)", ); @@ -8122,7 +8122,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework_OpenAl; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl; + SYMROOT = ./cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -8145,7 +8145,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = RUN_TESTS; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -8168,12 +8168,12 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/lzma", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/zlib", - /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/include, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/deps/lzma-19.00/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/deps/zlib-1.2.11", + "$(SRCROOT)/deps/libchdr/lzma", + "$(SRCROOT)/deps/libchdr/zlib", + ./cmake/Source/ui_ios/Source/libchdr/include, + "$(SRCROOT)/deps/libchdr/include", + "$(SRCROOT)/deps/libchdr/deps/lzma-19.00/include", + "$(SRCROOT)/deps/libchdr/deps/zlib-1.2.11", "$(inherited)", ); INSTALL_PATH = ""; @@ -8189,7 +8189,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "chdr-static"; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr; + SYMROOT = ./cmake/Source/ui_ios/Source/libchdr; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -8217,13 +8217,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenGl/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenGl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -8239,7 +8239,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework_OpenGl; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl; + SYMROOT = ./cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -8262,7 +8262,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/build_cmake/SDWebImage/../../SDWebImage", + "$(SRCROOT)/deps/Dependencies/build_cmake/SDWebImage/../../SDWebImage", "$(inherited)", ); INSTALL_PATH = ""; @@ -8281,7 +8281,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = SDWebImage_Static; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SDWebImage; + SYMROOT = ./cmake/Source/ui_ios/SDWebImage; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -8305,7 +8305,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/deps/lzma-19.00/include", + "$(SRCROOT)/deps/libchdr/deps/lzma-19.00/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -8321,7 +8321,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = lzma; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00"; + SYMROOT = "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -8349,23 +8349,23 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenGl/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenAl/../../include", + "$(SRCROOT)/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenGl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenAl/../../include", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/System/Library/Frameworks/OpenAL.framework/Headers, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/build_cmake/iCade-iOS/../../iCade-iOS", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/build_cmake/SDWebImage/../../SDWebImage", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkSqlite/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/nlohmann_json/single_include", + "$(SRCROOT)/deps/Dependencies/build_cmake/iCade-iOS/../../iCade-iOS", + "$(SRCROOT)/deps/Dependencies/build_cmake/SDWebImage/../../SDWebImage", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkSqlite/../../include", + "$(SRCROOT)/deps/Dependencies/nlohmann_json/single_include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/CMakeFiles/Play.dir/Info.plist; + INFOPLIST_FILE = ./cmake/Source/ui_ios/CMakeFiles/Play.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -8399,34 +8399,34 @@ QuartzCore, "-framework", ImageIO, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/Release${EFFECTIVE_PLATFORM_NAME}/libgsh_opengl.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Release${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/Release${EFFECTIVE_PLATFORM_NAME}/libsh_openal.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/iCade-iOS/Release${EFFECTIVE_PLATFORM_NAME}/libiCade_Static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SDWebImage/Release${EFFECTIVE_PLATFORM_NAME}/libSDWebImage_Static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared/Release${EFFECTIVE_PLATFORM_NAME}/libui_shared.a", + "./cmake/Source/ui_ios/gs/GSH_OpenGL/Release${EFFECTIVE_PLATFORM_NAME}/libgsh_opengl.a", + "./cmake/Source/ui_ios/Source/Release${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/SH_OpenAL/Release${EFFECTIVE_PLATFORM_NAME}/libsh_openal.a", + "./cmake/Source/ui_ios/iCade-iOS/Release${EFFECTIVE_PLATFORM_NAME}/libiCade_Static.a", + "./cmake/Source/ui_ios/SDWebImage/Release${EFFECTIVE_PLATFORM_NAME}/libSDWebImage_Static.a", + "./cmake/Source/ui_ios/ui_shared/Release${EFFECTIVE_PLATFORM_NAME}/libui_shared.a", "-ObjC", "-lsqlite3", "-framework", OpenAL, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/Release${EFFECTIVE_PLATFORM_NAME}/libgsh_opengl.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_OpenGl.a", + "./cmake/Source/ui_ios/gs/GSH_OpenGL/Release${EFFECTIVE_PLATFORM_NAME}/libgsh_opengl.a", + "./cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_OpenGl.a", "-framework", OpenGLES, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_OpenAl.a", + "./cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_OpenAl.a", "-framework", OpenAL, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Release${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/Release${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/Release${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/Release${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/Release${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Release${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Release${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/Release${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Release${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Release${EFFECTIVE_PLATFORM_NAME}/libzlib.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libsqlite3.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, @@ -8435,7 +8435,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Play; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios; + SYMROOT = ./cmake/Source/ui_ios; TARGETED_DEVICE_FAMILY = "1,2"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; @@ -8463,15 +8463,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/McServTest/CMakeFiles/McServTest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/McServTest/CMakeFiles/McServTest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -8482,25 +8482,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = McServTest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/McServTest; + SYMROOT = ./cmake/tools/McServTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -8523,12 +8523,12 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/lzma", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/zlib", - /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/include, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/deps/lzma-19.00/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/deps/zlib-1.2.11", + "$(SRCROOT)/deps/libchdr/lzma", + "$(SRCROOT)/deps/libchdr/zlib", + ./cmake/Source/ui_ios/Source/libchdr/include, + "$(SRCROOT)/deps/libchdr/include", + "$(SRCROOT)/deps/libchdr/deps/lzma-19.00/include", + "$(SRCROOT)/deps/libchdr/deps/zlib-1.2.11", "$(inherited)", ); INSTALL_PATH = ""; @@ -8544,7 +8544,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "chdr-static"; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr; + SYMROOT = ./cmake/Source/ui_ios/Source/libchdr; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -8560,7 +8560,7 @@ CODE_SIGN_IDENTITY = ""; IPHONEOS_DEPLOYMENT_TARGET = 11.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/build; + SYMROOT = ./cmake/build; }; name = RelWithDebInfo; }; @@ -8585,15 +8585,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/GsAreaTest/CMakeFiles/GsAreaTest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/GsAreaTest/CMakeFiles/GsAreaTest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -8604,25 +8604,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Debug${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/Debug${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/Debug${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/Debug${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/Debug${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Debug${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Debug${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/Debug${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Debug${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Debug${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = GsAreaTest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/GsAreaTest; + SYMROOT = ./cmake/tools/GsAreaTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -8650,15 +8650,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenGl/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenAl/../../include", + "$(SRCROOT)/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenGl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenAl/../../include", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/System/Library/Frameworks/OpenAL.framework/Headers, "$(inherited)", ); @@ -8675,7 +8675,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = sh_openal; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL; + SYMROOT = ./cmake/Source/ui_ios/SH_OpenAL; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -8702,15 +8702,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/VuTest/CMakeFiles/VuTest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/VuTest/CMakeFiles/VuTest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -8722,25 +8722,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Release${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/Release${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/Release${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/Release${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/Release${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Release${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Release${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/Release${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Release${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Release${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = VuTest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/VuTest; + SYMROOT = ./cmake/tools/VuTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -8767,15 +8767,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/ui_shared/..", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkSqlite/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/nlohmann_json/single_include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source/ui_shared/..", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkSqlite/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Dependencies/nlohmann_json/single_include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -8791,7 +8791,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = ui_shared; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared; + SYMROOT = ./cmake/Source/ui_ios/ui_shared; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -8814,7 +8814,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/build_cmake/iCade-iOS/../../iCade-iOS", + "$(SRCROOT)/deps/Dependencies/build_cmake/iCade-iOS/../../iCade-iOS", "$(inherited)", ); INSTALL_PATH = ""; @@ -8832,7 +8832,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = iCade_Static; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/iCade-iOS"; + SYMROOT = "./cmake/Source/ui_ios/iCade-iOS"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -8860,23 +8860,23 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenGl/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenAl/../../include", + "$(SRCROOT)/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenGl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenAl/../../include", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/System/Library/Frameworks/OpenAL.framework/Headers, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/build_cmake/iCade-iOS/../../iCade-iOS", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/build_cmake/SDWebImage/../../SDWebImage", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkSqlite/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/nlohmann_json/single_include", + "$(SRCROOT)/deps/Dependencies/build_cmake/iCade-iOS/../../iCade-iOS", + "$(SRCROOT)/deps/Dependencies/build_cmake/SDWebImage/../../SDWebImage", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkSqlite/../../include", + "$(SRCROOT)/deps/Dependencies/nlohmann_json/single_include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/CMakeFiles/Play.dir/Info.plist; + INFOPLIST_FILE = ./cmake/Source/ui_ios/CMakeFiles/Play.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -8909,34 +8909,34 @@ QuartzCore, "-framework", ImageIO, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libgsh_opengl.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libsh_openal.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/iCade-iOS/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libiCade_Static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SDWebImage/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libSDWebImage_Static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libui_shared.a", + "./cmake/Source/ui_ios/gs/GSH_OpenGL/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libgsh_opengl.a", + "./cmake/Source/ui_ios/Source/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/SH_OpenAL/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libsh_openal.a", + "./cmake/Source/ui_ios/iCade-iOS/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libiCade_Static.a", + "./cmake/Source/ui_ios/SDWebImage/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libSDWebImage_Static.a", + "./cmake/Source/ui_ios/ui_shared/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libui_shared.a", "-ObjC", "-lsqlite3", "-framework", OpenAL, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libgsh_opengl.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_OpenGl.a", + "./cmake/Source/ui_ios/gs/GSH_OpenGL/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libgsh_opengl.a", + "./cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_OpenGl.a", "-framework", OpenGLES, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_OpenAl.a", + "./cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_OpenAl.a", "-framework", OpenAL, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libzlib.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libsqlite3.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, @@ -8945,7 +8945,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Play; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios; + SYMROOT = ./cmake/Source/ui_ios; TARGETED_DEVICE_FAMILY = "1,2"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; @@ -8970,8 +8970,8 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -8991,7 +8991,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework; + SYMROOT = ./cmake/Source/ui_ios/Source/Framework; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9014,7 +9014,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = RUN_TESTS; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9042,13 +9042,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenGl/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenGl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -9065,7 +9065,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework_OpenGl; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl; + SYMROOT = ./cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9089,10 +9089,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", "$(inherited)", ); INSTALL_PATH = ""; @@ -9108,7 +9108,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = CodeGen; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen; + SYMROOT = ./cmake/Source/ui_ios/Source/CodeGen; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9132,7 +9132,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/deps/lzma-19.00/include", + "$(SRCROOT)/deps/libchdr/deps/lzma-19.00/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -9148,7 +9148,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = lzma; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00"; + SYMROOT = "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9175,15 +9175,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/VuTest/CMakeFiles/VuTest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/VuTest/CMakeFiles/VuTest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -9194,25 +9194,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Debug${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/Debug${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/Debug${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/Debug${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/Debug${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Debug${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Debug${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/Debug${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Debug${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Debug${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = VuTest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/VuTest; + SYMROOT = ./cmake/tools/VuTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9236,13 +9236,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/CMakeFiles/CodeGenTestSuite.dir/Info.plist; + INFOPLIST_FILE = ./cmake/Source/ui_ios/Source/CodeGen/CMakeFiles/CodeGenTestSuite.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -9255,12 +9255,12 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/Release${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/CodeGen/Release${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, @@ -9269,7 +9269,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = CodeGenTestSuite; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen; + SYMROOT = ./cmake/Source/ui_ios/Source/CodeGen; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9297,14 +9297,14 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenGl/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenGl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -9321,7 +9321,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = gsh_opengl; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL; + SYMROOT = ./cmake/Source/ui_ios/gs/GSH_OpenGL; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9345,7 +9345,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenAl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenAl/../../include", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/System/Library/Frameworks/OpenAL.framework/Headers, "$(inherited)", ); @@ -9364,7 +9364,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework_OpenAl; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl; + SYMROOT = ./cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9387,7 +9387,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = RUN_TESTS; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9414,15 +9414,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/ui_shared/..", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkSqlite/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/nlohmann_json/single_include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source/ui_shared/..", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkSqlite/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Dependencies/nlohmann_json/single_include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -9438,7 +9438,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = ui_shared; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared; + SYMROOT = ./cmake/Source/ui_ios/ui_shared; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9465,15 +9465,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/AutoTest/CMakeFiles/autotest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/AutoTest/CMakeFiles/autotest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -9484,25 +9484,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Debug${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/Debug${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/Debug${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/Debug${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/Debug${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Debug${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Debug${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/Debug${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Debug${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Debug${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = autotest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/AutoTest; + SYMROOT = ./cmake/tools/AutoTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9526,10 +9526,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", "$(inherited)", ); INSTALL_PATH = ""; @@ -9546,7 +9546,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = CodeGen; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen; + SYMROOT = ./cmake/Source/ui_ios/Source/CodeGen; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9573,15 +9573,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/AutoTest/CMakeFiles/autotest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/AutoTest/CMakeFiles/autotest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -9592,25 +9592,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/MinSizeRel${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = autotest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/AutoTest; + SYMROOT = ./cmake/tools/AutoTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9634,9 +9634,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -9658,7 +9658,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework_Http; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp; + SYMROOT = ./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9685,15 +9685,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/SpuTest/CMakeFiles/SpuTest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/SpuTest/CMakeFiles/SpuTest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -9704,25 +9704,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = SpuTest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/SpuTest; + SYMROOT = ./cmake/tools/SpuTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9746,7 +9746,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenAl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenAl/../../include", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/System/Library/Frameworks/OpenAL.framework/Headers, "$(inherited)", ); @@ -9765,7 +9765,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework_OpenAl; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl; + SYMROOT = ./cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9793,23 +9793,23 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenGl/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenAl/../../include", + "$(SRCROOT)/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenGl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenAl/../../include", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/System/Library/Frameworks/OpenAL.framework/Headers, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/build_cmake/iCade-iOS/../../iCade-iOS", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/build_cmake/SDWebImage/../../SDWebImage", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkSqlite/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/nlohmann_json/single_include", + "$(SRCROOT)/deps/Dependencies/build_cmake/iCade-iOS/../../iCade-iOS", + "$(SRCROOT)/deps/Dependencies/build_cmake/SDWebImage/../../SDWebImage", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkSqlite/../../include", + "$(SRCROOT)/deps/Dependencies/nlohmann_json/single_include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/CMakeFiles/Play.dir/Info.plist; + INFOPLIST_FILE = ./cmake/Source/ui_ios/CMakeFiles/Play.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -9841,34 +9841,34 @@ QuartzCore, "-framework", ImageIO, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/Debug${EFFECTIVE_PLATFORM_NAME}/libgsh_opengl.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Debug${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/Debug${EFFECTIVE_PLATFORM_NAME}/libsh_openal.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/iCade-iOS/Debug${EFFECTIVE_PLATFORM_NAME}/libiCade_Static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SDWebImage/Debug${EFFECTIVE_PLATFORM_NAME}/libSDWebImage_Static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared/Debug${EFFECTIVE_PLATFORM_NAME}/libui_shared.a", + "./cmake/Source/ui_ios/gs/GSH_OpenGL/Debug${EFFECTIVE_PLATFORM_NAME}/libgsh_opengl.a", + "./cmake/Source/ui_ios/Source/Debug${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/SH_OpenAL/Debug${EFFECTIVE_PLATFORM_NAME}/libsh_openal.a", + "./cmake/Source/ui_ios/iCade-iOS/Debug${EFFECTIVE_PLATFORM_NAME}/libiCade_Static.a", + "./cmake/Source/ui_ios/SDWebImage/Debug${EFFECTIVE_PLATFORM_NAME}/libSDWebImage_Static.a", + "./cmake/Source/ui_ios/ui_shared/Debug${EFFECTIVE_PLATFORM_NAME}/libui_shared.a", "-ObjC", "-lsqlite3", "-framework", OpenAL, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/Debug${EFFECTIVE_PLATFORM_NAME}/libgsh_opengl.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_OpenGl.a", + "./cmake/Source/ui_ios/gs/GSH_OpenGL/Debug${EFFECTIVE_PLATFORM_NAME}/libgsh_opengl.a", + "./cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_OpenGl.a", "-framework", OpenGLES, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_OpenAl.a", + "./cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_OpenAl.a", "-framework", OpenAL, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Debug${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/Debug${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/Debug${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/Debug${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/Debug${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Debug${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Debug${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/Debug${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Debug${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Debug${EFFECTIVE_PLATFORM_NAME}/libzlib.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libsqlite3.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, @@ -9877,7 +9877,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Play; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios; + SYMROOT = ./cmake/Source/ui_ios; TARGETED_DEVICE_FAMILY = "1,2"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; @@ -9902,13 +9902,13 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/CMakeFiles/CodeGenTestSuite.dir/Info.plist; + INFOPLIST_FILE = ./cmake/Source/ui_ios/Source/CodeGen/CMakeFiles/CodeGenTestSuite.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -9919,12 +9919,12 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/CodeGen/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, @@ -9933,7 +9933,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = CodeGenTestSuite; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen; + SYMROOT = ./cmake/Source/ui_ios/Source/CodeGen; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -9961,15 +9961,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenGl/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenAl/../../include", + "$(SRCROOT)/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenGl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenAl/../../include", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/System/Library/Frameworks/OpenAL.framework/Headers, "$(inherited)", ); @@ -9987,7 +9987,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = sh_openal; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL; + SYMROOT = ./cmake/Source/ui_ios/SH_OpenAL; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10015,15 +10015,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenGl/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenAl/../../include", + "$(SRCROOT)/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenGl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenAl/../../include", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/System/Library/Frameworks/OpenAL.framework/Headers, "$(inherited)", ); @@ -10040,7 +10040,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = sh_openal; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL; + SYMROOT = ./cmake/Source/ui_ios/SH_OpenAL; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10067,15 +10067,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/McServTest/CMakeFiles/McServTest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/McServTest/CMakeFiles/McServTest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -10086,25 +10086,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Debug${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/Debug${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/Debug${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/Debug${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/Debug${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/Debug${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Debug${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Debug${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/Debug${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Debug${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Debug${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = McServTest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/McServTest; + SYMROOT = ./cmake/tools/McServTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10128,9 +10128,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -10150,7 +10150,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework_Amazon; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon; + SYMROOT = ./cmake/Source/ui_ios/Source/FrameworkAmazon; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10177,15 +10177,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/GsAreaTest/CMakeFiles/GsAreaTest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/GsAreaTest/CMakeFiles/GsAreaTest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -10196,25 +10196,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = GsAreaTest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/GsAreaTest; + SYMROOT = ./cmake/tools/GsAreaTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10238,8 +10238,8 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -10257,7 +10257,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework; + SYMROOT = ./cmake/Source/ui_ios/Source/Framework; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10280,7 +10280,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = install; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10303,7 +10303,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = ZERO_CHECK; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10330,14 +10330,14 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/../deps/Framework/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/../deps/CodeGen/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/Source/../deps/Framework/include", + "$(SRCROOT)/Source/../deps/CodeGen/include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -10354,7 +10354,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = PlayCore; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source; + SYMROOT = ./cmake/Source/ui_ios/Source; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10381,14 +10381,14 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/../deps/Framework/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/../deps/CodeGen/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/Source/../deps/Framework/include", + "$(SRCROOT)/Source/../deps/CodeGen/include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -10406,7 +10406,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = PlayCore; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source; + SYMROOT = ./cmake/Source/ui_ios/Source; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10434,14 +10434,14 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenGl/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenGl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -10457,7 +10457,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = gsh_opengl; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL; + SYMROOT = ./cmake/Source/ui_ios/gs/GSH_OpenGL; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10484,15 +10484,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/AutoTest/CMakeFiles/autotest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/AutoTest/CMakeFiles/autotest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -10503,25 +10503,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/RelWithDebInfo${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = autotest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/AutoTest; + SYMROOT = ./cmake/tools/AutoTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10544,7 +10544,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = install; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10572,14 +10572,14 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkOpenGl/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source/gs/GSH_OpenGL/Source/gs/GSH_OpenGL", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkOpenGl/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -10595,7 +10595,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = gsh_opengl; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL; + SYMROOT = ./cmake/Source/ui_ios/gs/GSH_OpenGL; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10618,7 +10618,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = RUN_TESTS; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10642,7 +10642,7 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/deps/lzma-19.00/include", + "$(SRCROOT)/deps/libchdr/deps/lzma-19.00/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -10657,7 +10657,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = lzma; SECTORDER_FLAGS = ""; - SYMROOT = "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00"; + SYMROOT = "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00"; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10684,14 +10684,14 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/../deps/Framework/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source/../deps/CodeGen/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/Source/../deps/Framework/include", + "$(SRCROOT)/Source/../deps/CodeGen/include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -10708,7 +10708,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = PlayCore; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source; + SYMROOT = ./cmake/Source/ui_ios/Source; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10732,9 +10732,9 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", "$(inherited)", ); INSTALL_PATH = ""; @@ -10752,7 +10752,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = Framework_Amazon; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon; + SYMROOT = ./cmake/Source/ui_ios/Source/FrameworkAmazon; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10775,7 +10775,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = ZERO_CHECK; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10798,12 +10798,12 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/lzma", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/zlib", - /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/include, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/deps/lzma-19.00/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/deps/zlib-1.2.11", + "$(SRCROOT)/deps/libchdr/lzma", + "$(SRCROOT)/deps/libchdr/zlib", + ./cmake/Source/ui_ios/Source/libchdr/include, + "$(SRCROOT)/deps/libchdr/include", + "$(SRCROOT)/deps/libchdr/deps/lzma-19.00/include", + "$(SRCROOT)/deps/libchdr/deps/zlib-1.2.11", "$(inherited)", ); INSTALL_PATH = ""; @@ -10818,7 +10818,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = "chdr-static"; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr; + SYMROOT = ./cmake/Source/ui_ios/Source/libchdr; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10841,7 +10841,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = ZERO_CHECK; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake; + SYMROOT = ./cmake; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; @@ -10868,15 +10868,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/Source", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/Framework/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Dependencies/ghc_filesystem/include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/Framework/build_cmake/FrameworkHttp/../../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/CodeGen/build_cmake/../include", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/Play-/deps/libchdr/include", + "$(SRCROOT)/Source", + "$(SRCROOT)/deps/Framework/build_cmake/Framework/../../include", + "$(SRCROOT)/deps/Dependencies/ghc_filesystem/include", + "$(SRCROOT)/deps/Framework/build_cmake/FrameworkHttp/../../include", + "$(SRCROOT)/deps/CodeGen/build_cmake/../include", + "$(SRCROOT)/deps/libchdr/include", "$(inherited)", ); - INFOPLIST_FILE = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/McServTest/CMakeFiles/McServTest.dir/Info.plist; + INFOPLIST_FILE = ./cmake/tools/McServTest/CMakeFiles/McServTest.dir/Info.plist; INSTALL_PATH = ""; ONLY_ACTIVE_ARCH = NO; OTHER_CPLUSPLUSFLAGS = ( @@ -10888,25 +10888,25 @@ ); OTHER_LDFLAGS = ( "-Wl,-headerpad_max_install_names", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Release${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/Release${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", + "./cmake/Source/ui_ios/Source/Release${EFFECTIVE_PLATFORM_NAME}/libPlayCore.a", + "./cmake/Source/ui_ios/Source/CodeGen/Release${EFFECTIVE_PLATFORM_NAME}/libCodeGen.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Amazon.a", + "./cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Release${EFFECTIVE_PLATFORM_NAME}/libFramework_Http.a", + "./cmake/Source/ui_ios/Source/Framework/Release${EFFECTIVE_PLATFORM_NAME}/libFramework.a", /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, "-framework", Foundation, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libbz2.tbd, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/lib/libz.tbd, - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/Release${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Release${EFFECTIVE_PLATFORM_NAME}/liblzma.a", - "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Release${EFFECTIVE_PLATFORM_NAME}/libzlib.a", + "./cmake/Source/ui_ios/Source/libchdr/Release${EFFECTIVE_PLATFORM_NAME}/libchdr-static.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/lzma-19.00/Release${EFFECTIVE_PLATFORM_NAME}/liblzma.a", + "./cmake/Source/ui_ios/Source/libchdr/deps/zlib-1.2.11/Release${EFFECTIVE_PLATFORM_NAME}/libzlib.a", "$(inherited)", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = McServTest; SECTORDER_FLAGS = ""; - SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/McServTest; + SYMROOT = ./cmake/tools/McServTest; USE_HEADERMAP = NO; WARNING_CFLAGS = "$(inherited)"; }; diff --git a/Cores/PokeMini/PVPokeMini-iOS copy-Info.plist b/Cores/PokeMini/PVPokeMini-iOS copy-Info.plist new file mode 100644 index 0000000000..fbe1e6b314 --- /dev/null +++ b/Cores/PokeMini/PVPokeMini-iOS copy-Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/PokeMini/PVPokeMini.xcodeproj/project.pbxproj b/Cores/PokeMini/PVPokeMini.xcodeproj/project.pbxproj index ca07832e15..2ce4e22a5e 100644 --- a/Cores/PokeMini/PVPokeMini.xcodeproj/project.pbxproj +++ b/Cores/PokeMini/PVPokeMini.xcodeproj/project.pbxproj @@ -7,6 +7,85 @@ objects = { /* Begin PBXBuildFile section */ + B311B16927A52EE600D1DE41 /* PokeMini_Font12.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0A21A91A8D006CDA0F /* PokeMini_Font12.h */; }; + B311B16A27A52EE600D1DE41 /* PokeMini_BG3.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0021A91A8C006CDA0F /* PokeMini_BG3.h */; }; + B311B16B27A52EE600D1DE41 /* MinxIO.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6A21A919F1006CDA0F /* MinxIO.h */; }; + B311B16C27A52EE600D1DE41 /* Joystick.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6421A919F1006CDA0F /* Joystick.h */; }; + B311B16D27A52EE600D1DE41 /* CommandLine.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8121A919F1006CDA0F /* CommandLine.h */; }; + B311B16E27A52EE600D1DE41 /* PokeMini_BG2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0221A91A8C006CDA0F /* PokeMini_BG2.h */; }; + B311B16F27A52EE600D1DE41 /* MinxPRC.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B5E21A919F1006CDA0F /* MinxPRC.h */; }; + B311B17027A52EE600D1DE41 /* IOMap.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6C21A919F1006CDA0F /* IOMap.h */; }; + B311B17127A52EE600D1DE41 /* MinxCPU_noBranch.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6721A919F1006CDA0F /* MinxCPU_noBranch.h */; }; + B311B17227A52EE600D1DE41 /* Video_x5.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6921A919F1006CDA0F /* Video_x5.h */; }; + B311B17327A52EE600D1DE41 /* Endianess.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8B21A919F1006CDA0F /* Endianess.h */; }; + B311B17427A52EE600D1DE41 /* MinxTimers.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7521A919F1006CDA0F /* MinxTimers.h */; }; + B311B17527A52EE600D1DE41 /* Video_x2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6021A919F1006CDA0F /* Video_x2.h */; }; + B311B17627A52EE600D1DE41 /* Missing.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7221A919F1006CDA0F /* Missing.h */; }; + B311B17727A52EE600D1DE41 /* Keyboard.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7621A919F1006CDA0F /* Keyboard.h */; }; + B311B17827A52EE600D1DE41 /* MinxIRQ.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8821A919F1006CDA0F /* MinxIRQ.h */; }; + B311B17927A52EE600D1DE41 /* PokeMini_Icons12.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0121A91A8C006CDA0F /* PokeMini_Icons12.h */; }; + B311B17A27A52EE600D1DE41 /* Video_x1.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6E21A919F1006CDA0F /* Video_x1.h */; }; + B311B17B27A52EE600D1DE41 /* MinxColorPRC.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6521A919F1006CDA0F /* MinxColorPRC.h */; }; + B311B17C27A52EE600D1DE41 /* Video.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7A21A919F1006CDA0F /* Video.h */; }; + B311B17D27A52EE600D1DE41 /* Hardware.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8221A919F1006CDA0F /* Hardware.h */; }; + B311B17E27A52EE600D1DE41 /* PokeMini_BG4.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0921A91A8D006CDA0F /* PokeMini_BG4.h */; }; + B311B17F27A52EE600D1DE41 /* Video_x3.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8C21A919F1006CDA0F /* Video_x3.h */; }; + B311B18027A52EE600D1DE41 /* MinxCPU.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8521A919F1006CDA0F /* MinxCPU.h */; }; + B311B18127A52EE600D1DE41 /* PokeMini_Version.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7121A919F1006CDA0F /* PokeMini_Version.h */; }; + B311B18227A52EE600D1DE41 /* PokeMini_BG5.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532BFE21A91A8B006CDA0F /* PokeMini_BG5.h */; }; + B311B18327A52EE600D1DE41 /* PokeMini_ColorPal.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0D21A91A8D006CDA0F /* PokeMini_ColorPal.h */; }; + B311B18427A52EE600D1DE41 /* Video_x4.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7B21A919F1006CDA0F /* Video_x4.h */; }; + B311B18527A52EE600D1DE41 /* Video_x6.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B5A21A919F1006CDA0F /* Video_x6.h */; }; + B311B18627A52EE600D1DE41 /* UI.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B5B21A919F1006CDA0F /* UI.h */; }; + B311B18727A52EE600D1DE41 /* PMCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8421A919F1006CDA0F /* PMCommon.h */; }; + B311B18827A52EE600D1DE41 /* MinxLCD.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B5721A919F1006CDA0F /* MinxLCD.h */; }; + B311B18927A52EE600D1DE41 /* PVPokeMini.h in Headers */ = {isa = PBXBuildFile; fileRef = B3CB854B1E9BECBF009155A6 /* PVPokeMini.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B311B18A27A52EE600D1DE41 /* PokeMini.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6821A919F1006CDA0F /* PokeMini.h */; }; + B311B18B27A52EE600D1DE41 /* Multicart.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7321A919F1006CDA0F /* Multicart.h */; }; + B311B18C27A52EE600D1DE41 /* PVPokeMiniEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 081A45971B95604700565444 /* PVPokeMiniEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B311B18D27A52EE600D1DE41 /* PokeMini_BG6.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532BFF21A91A8B006CDA0F /* PokeMini_BG6.h */; }; + B311B18E27A52EE600D1DE41 /* MinxAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8621A919F1006CDA0F /* MinxAudio.h */; }; + B311B19027A52EE600D1DE41 /* Missing.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5821A919F1006CDA0F /* Missing.c */; }; + B311B19127A52EE600D1DE41 /* PokeMini.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8D21A919F1006CDA0F /* PokeMini.c */; }; + B311B19227A52EE600D1DE41 /* PMCommon.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6D21A919F1006CDA0F /* PMCommon.c */; }; + B311B19327A52EE600D1DE41 /* PokeMini_ColorPal.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0821A91A8D006CDA0F /* PokeMini_ColorPal.c */; }; + B311B19427A52EE600D1DE41 /* Video_x1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8721A919F1006CDA0F /* Video_x1.c */; }; + B311B19527A52EE600D1DE41 /* PokeMini_Icons12.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0C21A91A8D006CDA0F /* PokeMini_Icons12.c */; }; + B311B19627A52EE600D1DE41 /* PokeMini_BG6.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0B21A91A8D006CDA0F /* PokeMini_BG6.c */; }; + B311B19727A52EE600D1DE41 /* PokeMini_BG5.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0621A91A8C006CDA0F /* PokeMini_BG5.c */; }; + B311B19827A52EE600D1DE41 /* PVPokeMiniEmulatorCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 081A45981B95604700565444 /* PVPokeMiniEmulatorCore.m */; }; + B311B19927A52EE600D1DE41 /* MinxCPU_CE.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7821A919F1006CDA0F /* MinxCPU_CE.c */; }; + B311B19A27A52EE600D1DE41 /* NoUI.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C3221A91C25006CDA0F /* NoUI.c */; }; + B311B19B27A52EE600D1DE41 /* MinxLCD.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7421A919F1006CDA0F /* MinxLCD.c */; }; + B311B19C27A52EE600D1DE41 /* MinxCPU_CF.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8321A919F1006CDA0F /* MinxCPU_CF.c */; }; + B311B19D27A52EE600D1DE41 /* Video.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5D21A919F1006CDA0F /* Video.c */; }; + B311B19E27A52EE600D1DE41 /* Video_x4.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5C21A919F1006CDA0F /* Video_x4.c */; }; + B311B19F27A52EE600D1DE41 /* Video_x6.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7E21A919F1006CDA0F /* Video_x6.c */; }; + B311B1A027A52EE600D1DE41 /* MinxCPU.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7021A919F1006CDA0F /* MinxCPU.c */; }; + B311B1A127A52EE600D1DE41 /* PokeMini_Font12.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0721A91A8C006CDA0F /* PokeMini_Font12.c */; }; + B311B1A227A52EE600D1DE41 /* Hardware.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6121A919F1006CDA0F /* Hardware.c */; }; + B311B1A327A52EE600D1DE41 /* Video_x2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7721A919F1006CDA0F /* Video_x2.c */; }; + B311B1A427A52EE600D1DE41 /* MinxTimers.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5621A919F1006CDA0F /* MinxTimers.c */; }; + B311B1A527A52EE600D1DE41 /* MinxAudio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6F21A919F1006CDA0F /* MinxAudio.c */; }; + B311B1A627A52EE600D1DE41 /* PokeMini_BG3.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0421A91A8C006CDA0F /* PokeMini_BG3.c */; }; + B311B1A727A52EE600D1DE41 /* MinxPRC.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7921A919F1006CDA0F /* MinxPRC.c */; }; + B311B1A827A52EE600D1DE41 /* Multicart.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5921A919F1006CDA0F /* Multicart.c */; }; + B311B1A927A52EE600D1DE41 /* Video_x3.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6621A919F1006CDA0F /* Video_x3.c */; }; + B311B1AA27A52EE600D1DE41 /* PokeMini_BG2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0321A91A8C006CDA0F /* PokeMini_BG2.c */; }; + B311B1AB27A52EE600D1DE41 /* MinxIRQ.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6B21A919F1006CDA0F /* MinxIRQ.c */; }; + B311B1AC27A52EE600D1DE41 /* CommandLine.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6321A919F1006CDA0F /* CommandLine.c */; }; + B311B1AD27A52EE600D1DE41 /* MinxCPU_XX.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7D21A919F1006CDA0F /* MinxCPU_XX.c */; }; + B311B1AE27A52EE600D1DE41 /* freebios.c in Sources */ = {isa = PBXBuildFile; fileRef = 081A46191B95660100565444 /* freebios.c */; }; + B311B1AF27A52EE600D1DE41 /* MinxIO.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8921A919F1006CDA0F /* MinxIO.c */; }; + B311B1B027A52EE600D1DE41 /* MinxCPU_SP.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6221A919F1006CDA0F /* MinxCPU_SP.c */; }; + B311B1B127A52EE600D1DE41 /* MinxColorPRC.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7F21A919F1006CDA0F /* MinxColorPRC.c */; }; + B311B1B227A52EE600D1DE41 /* Video_x5.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8A21A919F1006CDA0F /* Video_x5.c */; }; + B311B1B327A52EE600D1DE41 /* PokeMini_BG4.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0521A91A8C006CDA0F /* PokeMini_BG4.c */; }; + B311B1B427A52EE600D1DE41 /* Joystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8021A919F1006CDA0F /* Joystick.c */; }; + B311B1B627A52EE600D1DE41 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B34AB5632106D5EB00C45F09 /* PVSupport.framework */; }; + B311B1B727A52EE600D1DE41 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3CB85C91E9C1BB0009155A6 /* AudioToolbox.framework */; }; + B311B1B827A52EE600D1DE41 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3CB85AA1E9BF16B009155A6 /* OpenGLES.framework */; platformFilter = ios; }; + B311B1BA27A52EE600D1DE41 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B682058593700CFF7D8 /* Core.plist */; }; B34AB5642106D5EB00C45F09 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B34AB5632106D5EB00C45F09 /* PVSupport.framework */; }; B34AB5662106D5F700C45F09 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B34AB5652106D5F700C45F09 /* PVSupport.framework */; }; B3532B8E21A919F1006CDA0F /* MinxTimers.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5621A919F1006CDA0F /* MinxTimers.c */; }; @@ -173,6 +252,8 @@ 081A45981B95604700565444 /* PVPokeMiniEmulatorCore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PVPokeMiniEmulatorCore.m; path = PokeMini/PVPokeMiniEmulatorCore.m; sourceTree = SOURCE_ROOT; }; 081A46191B95660100565444 /* freebios.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = freebios.c; sourceTree = ""; }; 081A461A1B95660100565444 /* freebios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = freebios.h; sourceTree = ""; }; + B311B1BF27A52EE600D1DE41 /* PVPokeMini.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVPokeMini.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B311B1C027A52EE800D1DE41 /* PVPokeMini-iOS copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "PVPokeMini-iOS copy-Info.plist"; path = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PokeMini/PVPokeMini-iOS copy-Info.plist"; sourceTree = ""; }; B34AB5632106D5EB00C45F09 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B34AB5652106D5F700C45F09 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3532B5621A919F1006CDA0F /* MinxTimers.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MinxTimers.c; sourceTree = ""; }; @@ -261,6 +342,16 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + B311B1B527A52EE600D1DE41 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B311B1B627A52EE600D1DE41 /* PVSupport.framework in Frameworks */, + B311B1B727A52EE600D1DE41 /* AudioToolbox.framework in Frameworks */, + B311B1B827A52EE600D1DE41 /* OpenGLES.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; B3CB85451E9BECBF009155A6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -293,6 +384,7 @@ B3CB854A1E9BECBF009155A6 /* PVPokeMini Supporting Files */, 081A45F71B9563EF00565444 /* Frameworks */, 081A458D1B955FA800565444 /* Products */, + B311B1C027A52EE800D1DE41 /* PVPokeMini-iOS copy-Info.plist */, ); sourceTree = ""; }; @@ -301,6 +393,7 @@ children = ( B3CB85491E9BECBF009155A6 /* PVPokeMini.framework */, B3CB85561E9BECCF009155A6 /* PVPokeMini.framework */, + B311B1BF27A52EE600D1DE41 /* PVPokeMini.framework */, ); name = Products; sourceTree = ""; @@ -443,6 +536,51 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + B311B16827A52EE600D1DE41 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B311B16927A52EE600D1DE41 /* PokeMini_Font12.h in Headers */, + B311B16A27A52EE600D1DE41 /* PokeMini_BG3.h in Headers */, + B311B16B27A52EE600D1DE41 /* MinxIO.h in Headers */, + B311B16C27A52EE600D1DE41 /* Joystick.h in Headers */, + B311B16D27A52EE600D1DE41 /* CommandLine.h in Headers */, + B311B16E27A52EE600D1DE41 /* PokeMini_BG2.h in Headers */, + B311B16F27A52EE600D1DE41 /* MinxPRC.h in Headers */, + B311B17027A52EE600D1DE41 /* IOMap.h in Headers */, + B311B17127A52EE600D1DE41 /* MinxCPU_noBranch.h in Headers */, + B311B17227A52EE600D1DE41 /* Video_x5.h in Headers */, + B311B17327A52EE600D1DE41 /* Endianess.h in Headers */, + B311B17427A52EE600D1DE41 /* MinxTimers.h in Headers */, + B311B17527A52EE600D1DE41 /* Video_x2.h in Headers */, + B311B17627A52EE600D1DE41 /* Missing.h in Headers */, + B311B17727A52EE600D1DE41 /* Keyboard.h in Headers */, + B311B17827A52EE600D1DE41 /* MinxIRQ.h in Headers */, + B311B17927A52EE600D1DE41 /* PokeMini_Icons12.h in Headers */, + B311B17A27A52EE600D1DE41 /* Video_x1.h in Headers */, + B311B17B27A52EE600D1DE41 /* MinxColorPRC.h in Headers */, + B311B17C27A52EE600D1DE41 /* Video.h in Headers */, + B311B17D27A52EE600D1DE41 /* Hardware.h in Headers */, + B311B17E27A52EE600D1DE41 /* PokeMini_BG4.h in Headers */, + B311B17F27A52EE600D1DE41 /* Video_x3.h in Headers */, + B311B18027A52EE600D1DE41 /* MinxCPU.h in Headers */, + B311B18127A52EE600D1DE41 /* PokeMini_Version.h in Headers */, + B311B18227A52EE600D1DE41 /* PokeMini_BG5.h in Headers */, + B311B18327A52EE600D1DE41 /* PokeMini_ColorPal.h in Headers */, + B311B18427A52EE600D1DE41 /* Video_x4.h in Headers */, + B311B18527A52EE600D1DE41 /* Video_x6.h in Headers */, + B311B18627A52EE600D1DE41 /* UI.h in Headers */, + B311B18727A52EE600D1DE41 /* PMCommon.h in Headers */, + B311B18827A52EE600D1DE41 /* MinxLCD.h in Headers */, + B311B18927A52EE600D1DE41 /* PVPokeMini.h in Headers */, + B311B18A27A52EE600D1DE41 /* PokeMini.h in Headers */, + B311B18B27A52EE600D1DE41 /* Multicart.h in Headers */, + B311B18C27A52EE600D1DE41 /* PVPokeMiniEmulatorCore.h in Headers */, + B311B18D27A52EE600D1DE41 /* PokeMini_BG6.h in Headers */, + B311B18E27A52EE600D1DE41 /* MinxAudio.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; B3CB85461E9BECBF009155A6 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -536,6 +674,24 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + B311B16727A52EE600D1DE41 /* PVPokeMini-watchOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B311B1BB27A52EE600D1DE41 /* Build configuration list for PBXNativeTarget "PVPokeMini-watchOS" */; + buildPhases = ( + B311B16827A52EE600D1DE41 /* Headers */, + B311B18F27A52EE600D1DE41 /* Sources */, + B311B1B527A52EE600D1DE41 /* Frameworks */, + B311B1B927A52EE600D1DE41 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "PVPokeMini-watchOS"; + productName = PVPokeMini; + productReference = B311B1BF27A52EE600D1DE41 /* PVPokeMini.framework */; + productType = "com.apple.product-type.framework"; + }; B3CB85481E9BECBF009155A6 /* PVPokeMini-iOS */ = { isa = PBXNativeTarget; buildConfigurationList = B3CB854E1E9BECBF009155A6 /* Build configuration list for PBXNativeTarget "PVPokeMini-iOS" */; @@ -606,11 +762,20 @@ targets = ( B3CB85481E9BECBF009155A6 /* PVPokeMini-iOS */, B3CB85551E9BECCF009155A6 /* PVPokeMini-tvOS */, + B311B16727A52EE600D1DE41 /* PVPokeMini-watchOS */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + B311B1B927A52EE600D1DE41 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B311B1BA27A52EE600D1DE41 /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; B3CB85471E9BECBF009155A6 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -630,6 +795,50 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + B311B18F27A52EE600D1DE41 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B311B19027A52EE600D1DE41 /* Missing.c in Sources */, + B311B19127A52EE600D1DE41 /* PokeMini.c in Sources */, + B311B19227A52EE600D1DE41 /* PMCommon.c in Sources */, + B311B19327A52EE600D1DE41 /* PokeMini_ColorPal.c in Sources */, + B311B19427A52EE600D1DE41 /* Video_x1.c in Sources */, + B311B19527A52EE600D1DE41 /* PokeMini_Icons12.c in Sources */, + B311B19627A52EE600D1DE41 /* PokeMini_BG6.c in Sources */, + B311B19727A52EE600D1DE41 /* PokeMini_BG5.c in Sources */, + B311B19827A52EE600D1DE41 /* PVPokeMiniEmulatorCore.m in Sources */, + B311B19927A52EE600D1DE41 /* MinxCPU_CE.c in Sources */, + B311B19A27A52EE600D1DE41 /* NoUI.c in Sources */, + B311B19B27A52EE600D1DE41 /* MinxLCD.c in Sources */, + B311B19C27A52EE600D1DE41 /* MinxCPU_CF.c in Sources */, + B311B19D27A52EE600D1DE41 /* Video.c in Sources */, + B311B19E27A52EE600D1DE41 /* Video_x4.c in Sources */, + B311B19F27A52EE600D1DE41 /* Video_x6.c in Sources */, + B311B1A027A52EE600D1DE41 /* MinxCPU.c in Sources */, + B311B1A127A52EE600D1DE41 /* PokeMini_Font12.c in Sources */, + B311B1A227A52EE600D1DE41 /* Hardware.c in Sources */, + B311B1A327A52EE600D1DE41 /* Video_x2.c in Sources */, + B311B1A427A52EE600D1DE41 /* MinxTimers.c in Sources */, + B311B1A527A52EE600D1DE41 /* MinxAudio.c in Sources */, + B311B1A627A52EE600D1DE41 /* PokeMini_BG3.c in Sources */, + B311B1A727A52EE600D1DE41 /* MinxPRC.c in Sources */, + B311B1A827A52EE600D1DE41 /* Multicart.c in Sources */, + B311B1A927A52EE600D1DE41 /* Video_x3.c in Sources */, + B311B1AA27A52EE600D1DE41 /* PokeMini_BG2.c in Sources */, + B311B1AB27A52EE600D1DE41 /* MinxIRQ.c in Sources */, + B311B1AC27A52EE600D1DE41 /* CommandLine.c in Sources */, + B311B1AD27A52EE600D1DE41 /* MinxCPU_XX.c in Sources */, + B311B1AE27A52EE600D1DE41 /* freebios.c in Sources */, + B311B1AF27A52EE600D1DE41 /* MinxIO.c in Sources */, + B311B1B027A52EE600D1DE41 /* MinxCPU_SP.c in Sources */, + B311B1B127A52EE600D1DE41 /* MinxColorPRC.c in Sources */, + B311B1B227A52EE600D1DE41 /* Video_x5.c in Sources */, + B311B1B327A52EE600D1DE41 /* PokeMini_BG4.c in Sources */, + B311B1B427A52EE600D1DE41 /* Joystick.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; B3CB85441E9BECBF009155A6 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -827,6 +1036,145 @@ }; name = Release; }; + B311B1BC27A52EE600D1DE41 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + 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_BITCODE = NO; + ENABLE_TESTABILITY = YES; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "NO_ZIP=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = PVPokeMini/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPokeMini"; + PRODUCT_NAME = PVPokeMini; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2,6"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B311B1BD27A52EE600D1DE41 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = "NO_ZIP=1"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = PVPokeMini/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPokeMini"; + PRODUCT_NAME = PVPokeMini; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2,6"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B311B1BE27A52EE600D1DE41 /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = "NO_ZIP=1"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = PVPokeMini/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPokeMini"; + PRODUCT_NAME = PVPokeMini; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2,6"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; B324C5322191A4D6009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1161,6 +1509,16 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + B311B1BB27A52EE600D1DE41 /* Build configuration list for PBXNativeTarget "PVPokeMini-watchOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B311B1BC27A52EE600D1DE41 /* Debug */, + B311B1BD27A52EE600D1DE41 /* Release */, + B311B1BE27A52EE600D1DE41 /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; B3CB854E1E9BECBF009155A6 /* Build configuration list for PBXNativeTarget "PVPokeMini-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Cores/ProSystem/PVProSystem.xcodeproj/project.pbxproj b/Cores/ProSystem/PVProSystem.xcodeproj/project.pbxproj index 2110662623..c446b38f36 100644 --- a/Cores/ProSystem/PVProSystem.xcodeproj/project.pbxproj +++ b/Cores/ProSystem/PVProSystem.xcodeproj/project.pbxproj @@ -14,6 +14,7 @@ B3411B52276B2FD600D85327 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3411B51276B2FD600D85327 /* Foundation.framework */; }; B3411B54276B2FE200D85327 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3411B53276B2FE200D85327 /* PVSupport.framework */; }; B3547B5A205858B700CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B59205858B600CFF7D8 /* Core.plist */; }; + B36C7D5527AE227300715677 /* PVLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B36C7D5427AE227300715677 /* PVLibrary.framework */; }; B36DE7A31D6B7558002EE3ED /* ProSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = B36DE7A21D6B7558002EE3ED /* ProSystem.h */; settings = {ATTRIBUTES = (Public, ); }; }; B36DE7AE1D6B759C002EE3ED /* ProSystem.dat in Resources */ = {isa = PBXBuildFile; fileRef = 941F59FB17A77CC90005D7EA /* ProSystem.dat */; }; B36DE7C31D6B7621002EE3ED /* ProSystemGameCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 941DFB2615B6425200C6552F /* ProSystemGameCore.mm */; }; @@ -23,6 +24,8 @@ B372639D26EA03B300E95488 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B372639C26EA03A600E95488 /* libz.tbd */; }; B372639E26EA046000E95488 /* Logger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F599B17A6189D0005D7EA /* Logger.cpp */; }; B372639F26EA047B00E95488 /* ProSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = B36DE7A21D6B7558002EE3ED /* ProSystem.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B39DC781279E807B0017E28D /* ProSystem.dat in Resources */ = {isa = PBXBuildFile; fileRef = 941F59FB17A77CC90005D7EA /* ProSystem.dat */; }; + B39DC782279E80870017E28D /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B59205858B600CFF7D8 /* Core.plist */; }; B3CA5B1426E9E3E100687B27 /* Unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 941F599417A6189D0005D7EA /* Unzip.c */; }; B3CA5B1526E9E3E100687B27 /* Cartridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F598517A6189D0005D7EA /* Cartridge.cpp */; }; B3CA5B1626E9E3E100687B27 /* Database.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F598917A6189D0005D7EA /* Database.cpp */; }; @@ -174,6 +177,7 @@ B3411B53276B2FE200D85327 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B34CB0EA2274B16A009134B4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; B3547B59205858B600CFF7D8 /* Core.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Core.plist; path = ProSystem/Core.plist; sourceTree = ""; }; + B36C7D5427AE227300715677 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B36DE7A01D6B7558002EE3ED /* ProSystem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ProSystem.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B36DE7A21D6B7558002EE3ED /* ProSystem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProSystem.h; sourceTree = ""; }; B36DE7A41D6B7558002EE3ED /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -204,6 +208,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B36C7D5527AE227300715677 /* PVLibrary.framework in Frameworks */, B372639D26EA03B300E95488 /* libz.tbd in Frameworks */, B372639526EA039800E95488 /* libprosystem-tvOS.a in Frameworks */, B3411B54276B2FE200D85327 /* PVSupport.framework in Frameworks */, @@ -370,6 +375,7 @@ B324C64121921519009F4EDC /* Frameworks */ = { isa = PBXGroup; children = ( + B36C7D5427AE227300715677 /* PVLibrary.framework */, B3411B53276B2FE200D85327 /* PVSupport.framework */, B3411B4F276B2FC000D85327 /* Foundation.framework */, B3411B51276B2FD600D85327 /* Foundation.framework */, @@ -550,6 +556,8 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + B39DC781279E807B0017E28D /* ProSystem.dat in Resources */, + B39DC782279E80870017E28D /* Core.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1101,7 +1109,6 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -1134,7 +1141,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -1164,7 +1170,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -1195,7 +1200,6 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -1230,7 +1234,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -1262,7 +1265,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; diff --git a/Cores/ProSystem/ProSystem1_3 b/Cores/ProSystem/ProSystem1_3 new file mode 160000 index 0000000000..554a2579da --- /dev/null +++ b/Cores/ProSystem/ProSystem1_3 @@ -0,0 +1 @@ +Subproject commit 554a2579da17ee577a4de82b82da20ae9e8a3ee4 diff --git a/Cores/Stella/PVStella.xcodeproj/project.pbxproj b/Cores/Stella/PVStella.xcodeproj/project.pbxproj index e9f1a73b53..cf7f73aa3a 100644 --- a/Cores/Stella/PVStella.xcodeproj/project.pbxproj +++ b/Cores/Stella/PVStella.xcodeproj/project.pbxproj @@ -1192,7 +1192,6 @@ 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"; @@ -1261,7 +1260,6 @@ 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"; @@ -1325,7 +1323,6 @@ 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"; diff --git a/Cores/TGBDual/PVTGBDual.xcodeproj/project.pbxproj b/Cores/TGBDual/PVTGBDual.xcodeproj/project.pbxproj index 0dd9fd257b..ae41eb8320 100644 --- a/Cores/TGBDual/PVTGBDual.xcodeproj/project.pbxproj +++ b/Cores/TGBDual/PVTGBDual.xcodeproj/project.pbxproj @@ -1117,7 +1117,6 @@ buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -1139,7 +1138,6 @@ buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; MTL_FAST_MATH = YES; @@ -1156,7 +1154,6 @@ buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; MTL_FAST_MATH = YES; @@ -1173,7 +1170,6 @@ buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -1195,7 +1191,6 @@ buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; MTL_FAST_MATH = YES; @@ -1212,7 +1207,6 @@ buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; MTL_FAST_MATH = YES; diff --git a/Cores/TGBDual/PVTGBDualCore/PVTGBDualCore.mm b/Cores/TGBDual/PVTGBDualCore/PVTGBDualCore.mm index 359071a5e4..bd5e125c91 100644 --- a/Cores/TGBDual/PVTGBDualCore/PVTGBDualCore.mm +++ b/Cores/TGBDual/PVTGBDualCore/PVTGBDualCore.mm @@ -50,7 +50,19 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError **)error { //load cart, read bytes, get length NSData* dataObj = [NSData dataWithContentsOfFile:[path stringByStandardizingPath]]; - if(dataObj == nil) return false; + if(dataObj == nil) { + NSDictionary *userInfo = @{ + NSLocalizedDescriptionKey: @"Failed to load game.", + NSLocalizedFailureReasonErrorKey: @"TGBDual failed to load ROM.", + NSLocalizedRecoverySuggestionErrorKey: @"Check that file isn't corrupt and in format TGBDual supports." + }; + + *error = [NSError errorWithDomain:PVEmulatorCoreErrorDomain + code:PVEmulatorCoreErrorCodeCouldNotLoadRom + userInfo:userInfo]; + ELOG(@"dataObj is nil"); + return false; + } size = [dataObj length]; data = (uint8_t*)[dataObj bytes]; const char *meta = NULL; @@ -74,11 +86,20 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError **)error { if(retro_load_game(&info)) { if([self.batterySavesPath length]) { - [[NSFileManager defaultManager] createDirectoryAtPath:self.batterySavesPath withIntermediateDirectories:YES attributes:nil error:NULL]; + NSError *fmError; + [[NSFileManager defaultManager] createDirectoryAtPath:self.batterySavesPath withIntermediateDirectories:YES attributes:nil error:&fmError]; + + if (error) { + ELOG(@"%@", fmError.localizedDescription); + *error = fmError; + } NSString *filePath = [self.batterySavesPath stringByAppendingPathComponent:[self.romName stringByAppendingPathExtension:@"sav"]]; - [self loadSaveFile:filePath forType: RETRO_MEMORY_SAVE_RAM]; + BOOL success = [self loadSaveFile:filePath forType: RETRO_MEMORY_SAVE_RAM]; + if (!success) { + ELOG(@"failed to load battery save: %@", filePath); + } } struct retro_system_av_info info; diff --git a/Cores/VecXGL b/Cores/VecXGL index 2b7661611f..c44ef42761 160000 --- a/Cores/VecXGL +++ b/Cores/VecXGL @@ -1 +1 @@ -Subproject commit 2b7661611fbcfa1c4f5a174c74b986d300bb2760 +Subproject commit c44ef4276172b5cf96632d8863e1fdc3d6970d1b diff --git a/Cores/VirtualJaguar b/Cores/VirtualJaguar index f287ec98bf..6837e5573e 160000 --- a/Cores/VirtualJaguar +++ b/Cores/VirtualJaguar @@ -1 +1 @@ -Subproject commit f287ec98bf7f4689ef18bf27ac6cbcd5ffa8d97d +Subproject commit 6837e5573eed71696788b33963dca6f073c27b62 diff --git a/Cores/VisualBoyAdvance-M/GBA/PVGBAEmulatorCore.mm b/Cores/VisualBoyAdvance-M/GBA/PVGBAEmulatorCore.mm index b7c613970a..e29c145c51 100644 --- a/Cores/VisualBoyAdvance-M/GBA/PVGBAEmulatorCore.mm +++ b/Cores/VisualBoyAdvance-M/GBA/PVGBAEmulatorCore.mm @@ -50,7 +50,7 @@ int emulating = 0; uint32_t pad[PVGBAButtonCount]; -@interface PVGBAEmulatorCore () +@interface PVGBAEmulatorCore () { uint8_t *videoBuffer; int32_t *soundBuffer; @@ -276,7 +276,11 @@ - (GLenum)internalPixelFormat - (double)audioSampleRate { - return soundGetSampleRate(); + double samplerate = soundGetSampleRate(); + if(samplerate < 32768) { + samplerate = 32768; + } + return samplerate; } - (NSUInteger)channelCount @@ -440,9 +444,9 @@ bool systemReadJoypads() #pragma mark - Cheats NSMutableDictionary *cheatList = [[NSMutableDictionary alloc] init]; +extern bool cheatsVerifyCheatCode(const char *code, const char *desc); -- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled -{ +- (BOOL)setCheatWithCode:(NSString *)code type:(NSString *)type enabled:(BOOL)enabled { // Sanitize code = [code stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; @@ -460,6 +464,10 @@ - (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enab cheatsDeleteAll(false); // Old values not restored by default. Dunno if matters much to cheaters NSArray *multipleCodes = [[NSArray alloc] init]; + + // Quick and dirty cheat check + BOOL valid = cheatsVerifyCheatCode(code.UTF8String, nil); + if(!valid) { return NO; } // Apply enabled cheats found in dictionary for (id key in cheatList) @@ -502,6 +510,8 @@ - (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enab } } } + // TODO: Make this a real return + return YES; } # pragma mark - Misc Helper Methods @@ -976,3 +986,9 @@ void systemMessage(int, const char * str, ...) } @end + +@implementation PVGBAEmulatorCore (GameWithCheat) + +-(BOOL)supportsCheatCode { return YES; } + +@end diff --git a/Cores/mGBA/mGBA-Core b/Cores/mGBA/mGBA-Core new file mode 160000 index 0000000000..2cc9e601ce --- /dev/null +++ b/Cores/mGBA/mGBA-Core @@ -0,0 +1 @@ +Subproject commit 2cc9e601ce376aaa4bb8f918d20f67956dbc278c diff --git a/Cores/sm64ex/sm64ex-ios b/Cores/sm64ex/sm64ex-ios new file mode 160000 index 0000000000..5693f7eb24 --- /dev/null +++ b/Cores/sm64ex/sm64ex-ios @@ -0,0 +1 @@ +Subproject commit 5693f7eb244a09f4022df323c7d545b139788760 diff --git a/Cores/snes9x/PVSNES/SNES/PVSNESEmulatorCore.mm b/Cores/snes9x/PVSNES/SNES/PVSNESEmulatorCore.mm index 619b54262f..ed4ba5f727 100644 --- a/Cores/snes9x/PVSNES/SNES/PVSNESEmulatorCore.mm +++ b/Cores/snes9x/PVSNES/SNES/PVSNESEmulatorCore.mm @@ -28,7 +28,9 @@ #import "PVSNESEmulatorCore.h" #import #import -#import +#import + +//#import #if !TARGET_OS_MACCATALYST #import @@ -107,6 +109,7 @@ - (void)dealloc - (void)resetEmulation { + CPU.Flags = 0; S9xSoftReset(); } @@ -133,15 +136,14 @@ - (void)stopEmulation } -- (void)executeFrame -{ +- (void)executeFrame { IPPU.RenderThisFrame = TRUE; S9xMainLoop(); } -- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error -{ +- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { + CPU.Flags = 0; memset(&Settings, 0, sizeof(Settings)); Settings.DontSaveOopsSnapshot = false; @@ -762,74 +764,64 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error #pragma mark Video -- (void)swapBuffers -{ - if (GFX.Screen == (short unsigned int *)videoBufferA) - { +- (void)swapBuffers { + if (GFX.Screen == (short unsigned int *)videoBufferA) { videoBuffer = videoBufferA; GFX.Screen = (short unsigned int *)videoBufferB; - } - else - { + } else { videoBuffer = videoBufferB; GFX.Screen = (short unsigned int *)videoBufferA; } } -- (const void *)videoBuffer -{ +- (const void *)videoBuffer { return videoBuffer; } -- (CGRect)screenRect -{ +- (CGRect)screenRect { return CGRectMake(0, 0, IPPU.RenderedScreenWidth, IPPU.RenderedScreenHeight); } -- (CGSize)aspectSize -{ +- (CGSize)aspectSize { return CGSizeMake(IPPU.RenderedScreenWidth * (8.0/7.0), IPPU.RenderedScreenHeight); } -- (CGSize)bufferSize -{ - return CGSizeMake(MAX_SNES_WIDTH, MAX_SNES_HEIGHT); +- (CGSize)bufferSize { + static dispatch_once_t onceToken; + static CGSize size; + dispatch_once(&onceToken, ^{ + size = CGSizeMake(MAX_SNES_WIDTH, MAX_SNES_HEIGHT); + }); + return size; } -- (GLenum)pixelFormat -{ +- (GLenum)pixelFormat { return GL_RGB; } -- (GLenum)pixelType -{ +- (GLenum)pixelType { return GL_UNSIGNED_SHORT_5_6_5; } -- (GLenum)internalPixelFormat -{ +- (GLenum)internalPixelFormat { return GL_RGB; } -- (NSTimeInterval)frameInterval -{ +- (NSTimeInterval)frameInterval { return Settings.PAL ? 50 : 60; // for more "accuracy" does 50.007 : 60.098806 make a difference? } -- (BOOL)isDoubleBuffered -{ +- (BOOL)isDoubleBuffered { return YES; } #pragma mark Audio -bool8 S9xOpenSoundDevice(void) -{ +bool8 S9xOpenSoundDevice(void) { return true; } -static void FinalizeSamplesAudioCallback(void *) -{ +static void FinalizeSamplesAudioCallback(void *) { __strong PVSNESEmulatorCore *strongCurrent = _current; int samples = S9xGetSampleCount(); @@ -837,33 +829,28 @@ static void FinalizeSamplesAudioCallback(void *) [[strongCurrent ringBufferAtIndex:0] write:strongCurrent->soundBuffer maxLength:samples * 2]; } -- (double)audioSampleRate -{ +- (double)audioSampleRate { return SAMPLERATE; } -- (NSUInteger)channelCount -{ +- (NSUInteger)channelCount { return 2; } #pragma mark Save States -- (BOOL)saveStateToFileAtPath: (NSString *) fileName error:(NSError**)error -{ +- (BOOL)saveStateToFileAtPath: (NSString *) fileName error:(NSError**)error { @synchronized(self) { return S9xFreezeGame([fileName UTF8String]) ? YES : NO; } } -- (BOOL)loadStateFromFileAtPath: (NSString *) fileName error:(NSError**)error -{ +- (BOOL)loadStateFromFileAtPath: (NSString *) fileName error:(NSError**)error { @synchronized(self) { return S9xUnfreezeGame([fileName UTF8String]) ? YES : NO; } } -- (BOOL)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled error:(NSError**)error -{ +- (BOOL)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled error:(NSError**)error { @synchronized(self) { if (enabled) cheatList[code] = @YES; @@ -916,20 +903,16 @@ - (BOOL)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enab #pragma mark - Input -- (void)didPushSNESButton:(PVSNESButton)button forPlayer:(NSInteger)player -{ +- (void)didPushSNESButton:(PVSNESButton)button forPlayer:(NSInteger)player { S9xReportButton((player+1 << 16) | button, true); } -- (void)didReleaseSNESButton:(PVSNESButton)button forPlayer:(NSInteger)player -{ +- (void)didReleaseSNESButton:(PVSNESButton)button forPlayer:(NSInteger)player { S9xReportButton((player+1 << 16) | button, false); } -- (void)mapButtons -{ - for(int player = 1; player <= 8; player++) - { +- (void)mapButtons { + for(int player = 1; player <= 8; player++) { NSUInteger playerMask = player << 16; NSString *playerString = [NSString stringWithFormat:@"Joypad%d ", player]; @@ -942,17 +925,14 @@ - (void)mapButtons } } -- (void)updateControllers -{ +- (void)updateController { GCController *controller = nil; - for (NSInteger player = 1; player <= 2; player++) - { + for (NSInteger player = 1; player <= 2; player++) { NSUInteger playerMask = player << 16; GCController *controller = (player == 1) ? self.controller1 : self.controller2; - if ([controller extendedGamepad]) - { + if ([controller extendedGamepad]) { GCExtendedGamepad *gamepad = [controller extendedGamepad]; GCControllerDirectionPad *dpad = [gamepad dpad]; diff --git a/Cores/snesticle/PVSnesticle.xcodeproj/project.pbxproj b/Cores/snesticle/PVSnesticle.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..a03155d8b1 --- /dev/null +++ b/Cores/snesticle/PVSnesticle.xcodeproj/project.pbxproj @@ -0,0 +1,4201 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B33FADA7279BCA9E0013AAD8 /* snesticle_tvOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FADA6279BCA9E0013AAD8 /* snesticle_tvOS.swift */; }; + B33FADB3279BCAB40013AAD8 /* snesticle_iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FADB2279BCAB40013AAD8 /* snesticle_iOS.swift */; }; + B33FADB8279BCCDC0013AAD8 /* libsnesticle-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33FADB0279BCAB40013AAD8 /* libsnesticle-iOS.a */; }; + B33FADBB279BCCF40013AAD8 /* libsnesticle-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33FADA4279BCA9D0013AAD8 /* libsnesticle-tvOS.a */; }; + B33FB2D0279BCED80013AAD8 /* snspc_c.c in Sources */ = {isa = PBXBuildFile; fileRef = B33FADEA279BCE900013AAD8 /* snspc_c.c */; }; + B33FB2D1279BCED80013AAD8 /* sncpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B33FADE5279BCE900013AAD8 /* sncpu.c */; }; + B33FB2D2279BCED80013AAD8 /* snspc.c in Sources */ = {isa = PBXBuildFile; fileRef = B33FADEF279BCE900013AAD8 /* snspc.c */; }; + B33FB2D3279BCED80013AAD8 /* snspcrom.c in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE0D279BCE900013AAD8 /* snspcrom.c */; }; + B33FB2D4279BCED80013AAD8 /* sndisasm.c in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE10279BCE900013AAD8 /* sndisasm.c */; }; + B33FB2D5279BCED80013AAD8 /* sncpu_c.c in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE06279BCE900013AAD8 /* sncpu_c.c */; }; + B33FB2D6279BCED80013AAD8 /* snspcdisasm.c in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE14279BCE900013AAD8 /* snspcdisasm.c */; }; + B33FB2D7279BCED80013AAD8 /* snspcbrr.c in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE20279BCE900013AAD8 /* snspcbrr.c */; }; + B33FB2D8279BCEF40013AAD8 /* snspcdsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE16279BCE900013AAD8 /* snspcdsp.cpp */; }; + B33FB2D9279BCEF50013AAD8 /* sndma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FADF6279BCE900013AAD8 /* sndma.cpp */; }; + B33FB2DA279BCEF50013AAD8 /* snspcio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE13279BCE900013AAD8 /* snspcio.cpp */; }; + B33FB2DB279BCEF50013AAD8 /* snspcmix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE01279BCE900013AAD8 /* snspcmix.cpp */; }; + B33FB2DC279BCEF50013AAD8 /* snstate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE08279BCE900013AAD8 /* snstate.cpp */; }; + B33FB2DD279BCEF50013AAD8 /* snppuobj.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE12279BCE900013AAD8 /* snppuobj.cpp */; }; + B33FB2DE279BCEF50013AAD8 /* snppurender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FADE9279BCE900013AAD8 /* snppurender.cpp */; }; + B33FB2DF279BCEF50013AAD8 /* snes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE18279BCE900013AAD8 /* snes.cpp */; }; + B33FB2E0279BCEF50013AAD8 /* snesreg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FADFC279BCE900013AAD8 /* snesreg.cpp */; }; + B33FB2E1279BCEF50013AAD8 /* snmemmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FADF7279BCE900013AAD8 /* snmemmap.cpp */; }; + B33FB2E2279BCEF50013AAD8 /* sndsp1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE19279BCE900013AAD8 /* sndsp1.cpp */; }; + B33FB2E3279BCEF50013AAD8 /* snppu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FADED279BCE900013AAD8 /* snppu.cpp */; }; + B33FB2E4279BCEF50013AAD8 /* snppublend_c.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE0F279BCE900013AAD8 /* snppublend_c.cpp */; }; + B33FB2E5279BCEF50013AAD8 /* snppucolor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FADF8279BCE900013AAD8 /* snppucolor.cpp */; }; + B33FB2E6279BCEF50013AAD8 /* snrom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE15279BCE900013AAD8 /* snrom.cpp */; }; + B33FB2E7279BCEF50013AAD8 /* snspctimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FADFD279BCE900013AAD8 /* snspctimer.cpp */; }; + B33FB2E8279BCEF50013AAD8 /* snio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FADE7279BCE900013AAD8 /* snio.cpp */; }; + B33FB2E9279BCEF50013AAD8 /* snppurender8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE09279BCE900013AAD8 /* snppurender8.cpp */; }; + B34AB5842106DEA000C45F09 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B34AB5832106DEA000C45F09 /* PVSupport.framework */; }; + B3547B632058591100CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B622058591000CFF7D8 /* Core.plist */; }; + B3547B642058591100CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B622058591000CFF7D8 /* Core.plist */; }; + B365107E21782E95008FDB7B /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B365107D21782E95008FDB7B /* libz.tbd */; }; + B365108021782E9E008FDB7B /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B365107F21782E9E008FDB7B /* libz.tbd */; }; + B3C9D5361DEA83DE0068D057 /* PVSnesticle.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C9D5341DEA83DE0068D057 /* PVSnesticle.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3C9D54A1DEA841A0068D057 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA91317F75FAF0031B1C9 /* AudioToolbox.framework */; }; + B3C9D54B1DEA84220068D057 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA91117F75FA80031B1C9 /* CoreGraphics.framework */; }; + B3C9D54C1DEA842B0068D057 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA90F17F75FA10031B1C9 /* OpenGLES.framework */; platformFilter = ios; }; + B3C9D54D1DEA84320068D057 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA90D17F75F6E0031B1C9 /* UIKit.framework */; }; + B3C9D54E1DEA843E0068D057 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA8E717F75F350031B1C9 /* Foundation.framework */; }; + B3C9D54F1DEA846B0068D057 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D2E3871D6E7E4A0058544D /* PVSupport.framework */; }; + B3C9D5511DEA847B0068D057 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5501DEA847B0068D057 /* AudioToolbox.framework */; }; + B3C9D5531DEA84830068D057 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5521DEA84830068D057 /* CoreGraphics.framework */; }; + B3C9D5551DEA848A0068D057 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5541DEA848A0068D057 /* OpenGLES.framework */; }; + B3C9D5571DEA84950068D057 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5561DEA84950068D057 /* UIKit.framework */; }; + B3C9D5591DEA849B0068D057 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5581DEA849B0068D057 /* Foundation.framework */; }; + B3C9D5941DEA86B80068D057 /* PVSnesticleOESupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA98F17F760390031B1C9 /* PVSnesticleOESupport.mm */; }; + B3C9D5951DEA86B80068D057 /* PVSnesticleCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA91917F760390031B1C9 /* PVSnesticleCore.mm */; }; + B3C9D5CA1DEA86B80068D057 /* PVSnesticleOESupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA98F17F760390031B1C9 /* PVSnesticleOESupport.mm */; }; + B3C9D5CB1DEA86B80068D057 /* PVSnesticleCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA91917F760390031B1C9 /* PVSnesticleCore.mm */; }; + B3C9D5CE1DEA87930068D057 /* PVSnesticleCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA91817F760390031B1C9 /* PVSnesticleCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3C9D5CF1DEA87A00068D057 /* PVSnesticleCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA91817F760390031B1C9 /* PVSnesticleCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3C9D5D01DEA87A00068D057 /* PVSnesticle.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C9D5341DEA83DE0068D057 /* PVSnesticle.h */; settings = {ATTRIBUTES = (Public, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B33FADB9279BCCDC0013AAD8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1ACEA8DC17F75F350031B1C9 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B33FADAF279BCAB40013AAD8; + remoteInfo = "snesticle-iOS"; + }; + B33FADBC279BCCF40013AAD8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1ACEA8DC17F75F350031B1C9 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B33FADA3279BCA9D0013AAD8; + remoteInfo = "snesticle-tvOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B33FADA2279BCA9D0013AAD8 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B33FADAE279BCAB40013AAD8 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1ACEA8E717F75F350031B1C9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 1ACEA8EB17F75F350031B1C9 /* PVSnesticle-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVSnesticle-Prefix.pch"; sourceTree = ""; }; + 1ACEA90D17F75F6E0031B1C9 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 1ACEA90F17F75FA10031B1C9 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + 1ACEA91117F75FA80031B1C9 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 1ACEA91317F75FAF0031B1C9 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 1ACEA91417F75FAF0031B1C9 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + 1ACEA91817F760390031B1C9 /* PVSnesticleCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVSnesticleCore.h; sourceTree = ""; }; + 1ACEA91917F760390031B1C9 /* PVSnesticleCore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PVSnesticleCore.mm; sourceTree = ""; }; + 1ACEA98F17F760390031B1C9 /* PVSnesticleOESupport.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PVSnesticleOESupport.mm; sourceTree = ""; }; + B33FAD9A279BCA840013AAD8 /* snesticle_iOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = snesticle_iOS.swift; sourceTree = ""; }; + B33FADA4279BCA9D0013AAD8 /* libsnesticle-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsnesticle-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B33FADA6279BCA9E0013AAD8 /* snesticle_tvOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = snesticle_tvOS.swift; sourceTree = ""; }; + B33FADB0279BCAB40013AAD8 /* libsnesticle-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsnesticle-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B33FADB2279BCAB40013AAD8 /* snesticle_iOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = snesticle_iOS.swift; sourceTree = ""; }; + B33FADBF279BCE8F0013AAD8 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B33FADC0279BCE8F0013AAD8 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B33FADC2279BCE8F0013AAD8 /* SNESticle.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = SNESticle.sln; sourceTree = ""; }; + B33FADC3279BCE8F0013AAD8 /* todo.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = todo.txt; sourceTree = ""; }; + B33FADC6279BCE900013AAD8 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B33FADC8279BCE900013AAD8 /* uiNetwork.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uiNetwork.h; sourceTree = ""; }; + B33FADC9279BCE900013AAD8 /* input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input.h; sourceTree = ""; }; + B33FADCA279BCE900013AAD8 /* uiMenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uiMenu.h; sourceTree = ""; }; + B33FADCB279BCE900013AAD8 /* uiBrowser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uiBrowser.h; sourceTree = ""; }; + B33FADCC279BCE900013AAD8 /* input.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = input.cpp; sourceTree = ""; }; + B33FADCD279BCE900013AAD8 /* snppublend_gs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snppublend_gs.h; sourceTree = ""; }; + B33FADCE279BCE900013AAD8 /* memcard.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memcard.cpp; sourceTree = ""; }; + B33FADCF279BCE900013AAD8 /* uiMenu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = uiMenu.cpp; sourceTree = ""; }; + B33FADD0279BCE900013AAD8 /* snmaskop.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snmaskop.h; sourceTree = ""; }; + B33FADD1279BCE900013AAD8 /* version.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = version.cpp; sourceTree = ""; }; + B33FADD2279BCE900013AAD8 /* mainloop.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mainloop.cpp; sourceTree = ""; }; + B33FADD3279BCE900013AAD8 /* titleman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = titleman.c; sourceTree = ""; }; + B33FADD4279BCE900013AAD8 /* uiLog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = uiLog.cpp; sourceTree = ""; }; + B33FADD5279BCE900013AAD8 /* convert_vu1.dsm */ = {isa = PBXFileReference; lastKnownFileType = text; path = convert_vu1.dsm; sourceTree = ""; }; + B33FADD6279BCE900013AAD8 /* snppublend_mm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snppublend_mm.cpp; sourceTree = ""; }; + B33FADD7279BCE900013AAD8 /* ps2reg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ps2reg.h; sourceTree = ""; }; + B33FADD8279BCE900013AAD8 /* sn65816.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sn65816.S; sourceTree = ""; }; + B33FADD9279BCE900013AAD8 /* snmask64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snmask64.cpp; sourceTree = ""; }; + B33FADDA279BCE900013AAD8 /* uiScreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uiScreen.h; sourceTree = ""; }; + B33FADDB279BCE900013AAD8 /* snmask128.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snmask128.cpp; sourceTree = ""; }; + B33FADDC279BCE900013AAD8 /* uiBrowser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = uiBrowser.cpp; sourceTree = ""; }; + B33FADDD279BCE900013AAD8 /* titleman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = titleman.h; sourceTree = ""; }; + B33FADDE279BCE900013AAD8 /* snspc700.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = snspc700.S; sourceTree = ""; }; + B33FADDF279BCE900013AAD8 /* uiNetwork.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = uiNetwork.cpp; sourceTree = ""; }; + B33FADE0279BCE900013AAD8 /* snppublend_mm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snppublend_mm.h; sourceTree = ""; }; + B33FADE1279BCE900013AAD8 /* memcard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memcard.h; sourceTree = ""; }; + B33FADE2279BCE900013AAD8 /* uiLog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uiLog.h; sourceTree = ""; }; + B33FADE3279BCE900013AAD8 /* snppublend_gs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snppublend_gs.cpp; sourceTree = ""; }; + B33FADE5279BCE900013AAD8 /* sncpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sncpu.c; sourceTree = ""; }; + B33FADE6279BCE900013AAD8 /* sndebug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sndebug.h; sourceTree = ""; }; + B33FADE7279BCE900013AAD8 /* snio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snio.cpp; sourceTree = ""; }; + B33FADE8279BCE900013AAD8 /* snspcrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snspcrom.h; sourceTree = ""; }; + B33FADE9279BCE900013AAD8 /* snppurender.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snppurender.cpp; sourceTree = ""; }; + B33FADEA279BCE900013AAD8 /* snspc_c.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snspc_c.c; sourceTree = ""; }; + B33FADEB279BCE900013AAD8 /* snspcmixi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snspcmixi.h; sourceTree = ""; }; + B33FADEC279BCE900013AAD8 /* snmemmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snmemmap.h; sourceTree = ""; }; + B33FADED279BCE900013AAD8 /* snppu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snppu.cpp; sourceTree = ""; }; + B33FADEE279BCE900013AAD8 /* sncpu_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sncpu_c.h; sourceTree = ""; }; + B33FADEF279BCE900013AAD8 /* snspc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snspc.c; sourceTree = ""; }; + B33FADF0279BCE900013AAD8 /* snesreg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snesreg.h; sourceTree = ""; }; + B33FADF1279BCE900013AAD8 /* snspcdefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snspcdefs.h; sourceTree = ""; }; + B33FADF2279BCE900013AAD8 /* snspctimer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snspctimer.h; sourceTree = ""; }; + B33FADF3279BCE900013AAD8 /* sndma.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sndma.h; sourceTree = ""; }; + B33FADF4279BCE900013AAD8 /* snspcdisasm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snspcdisasm.h; sourceTree = ""; }; + B33FADF5279BCE900013AAD8 /* snppublend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snppublend.h; sourceTree = ""; }; + B33FADF6279BCE900013AAD8 /* sndma.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sndma.cpp; sourceTree = ""; }; + B33FADF7279BCE900013AAD8 /* snmemmap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snmemmap.cpp; sourceTree = ""; }; + B33FADF8279BCE900013AAD8 /* snppucolor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snppucolor.cpp; sourceTree = ""; }; + B33FADF9279BCE900013AAD8 /* sndisasm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sndisasm.h; sourceTree = ""; }; + B33FADFA279BCE900013AAD8 /* snppucolor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snppucolor.h; sourceTree = ""; }; + B33FADFB279BCE900013AAD8 /* snio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snio.h; sourceTree = ""; }; + B33FADFC279BCE900013AAD8 /* snesreg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snesreg.cpp; sourceTree = ""; }; + B33FADFD279BCE900013AAD8 /* snspctimer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snspctimer.cpp; sourceTree = ""; }; + B33FADFE279BCE900013AAD8 /* snrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snrom.h; sourceTree = ""; }; + B33FADFF279BCE900013AAD8 /* snspcio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snspcio.h; sourceTree = ""; }; + B33FAE00279BCE900013AAD8 /* snspcbrr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snspcbrr.h; sourceTree = ""; }; + B33FAE01279BCE900013AAD8 /* snspcmix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snspcmix.cpp; sourceTree = ""; }; + B33FAE02279BCE900013AAD8 /* sncpudefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sncpudefs.h; sourceTree = ""; }; + B33FAE03279BCE900013AAD8 /* snspcmix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snspcmix.h; sourceTree = ""; }; + B33FAE04279BCE900013AAD8 /* sndebug.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sndebug.cpp; sourceTree = ""; }; + B33FAE05279BCE900013AAD8 /* snspc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snspc.h; sourceTree = ""; }; + B33FAE06279BCE900013AAD8 /* sncpu_c.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sncpu_c.c; sourceTree = ""; }; + B33FAE07279BCE900013AAD8 /* sndsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sndsp.h; sourceTree = ""; }; + B33FAE08279BCE900013AAD8 /* snstate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snstate.cpp; sourceTree = ""; }; + B33FAE09279BCE900013AAD8 /* snppurender8.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snppurender8.cpp; sourceTree = ""; }; + B33FAE0A279BCE900013AAD8 /* snspc_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snspc_c.h; sourceTree = ""; }; + B33FAE0B279BCE900013AAD8 /* snppurenderi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snppurenderi.h; sourceTree = ""; }; + B33FAE0C279BCE900013AAD8 /* snmask.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snmask.h; sourceTree = ""; }; + B33FAE0D279BCE900013AAD8 /* snspcrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snspcrom.c; sourceTree = ""; }; + B33FAE0E279BCE900013AAD8 /* sncpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sncpu.h; sourceTree = ""; }; + B33FAE0F279BCE900013AAD8 /* snppublend_c.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snppublend_c.cpp; sourceTree = ""; }; + B33FAE10279BCE900013AAD8 /* sndisasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sndisasm.c; sourceTree = ""; }; + B33FAE11279BCE900013AAD8 /* snppu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snppu.h; sourceTree = ""; }; + B33FAE12279BCE900013AAD8 /* snppuobj.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snppuobj.cpp; sourceTree = ""; }; + B33FAE13279BCE900013AAD8 /* snspcio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snspcio.cpp; sourceTree = ""; }; + B33FAE14279BCE900013AAD8 /* snspcdisasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snspcdisasm.c; sourceTree = ""; }; + B33FAE15279BCE900013AAD8 /* snrom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snrom.cpp; sourceTree = ""; }; + B33FAE16279BCE900013AAD8 /* snspcdsp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snspcdsp.cpp; sourceTree = ""; }; + B33FAE17279BCE900013AAD8 /* snstate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snstate.h; sourceTree = ""; }; + B33FAE18279BCE900013AAD8 /* snes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snes.cpp; sourceTree = ""; }; + B33FAE19279BCE900013AAD8 /* sndsp1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sndsp1.cpp; sourceTree = ""; }; + B33FAE1A279BCE900013AAD8 /* sntiming.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sntiming.h; sourceTree = ""; }; + B33FAE1B279BCE900013AAD8 /* sndsp1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sndsp1.h; sourceTree = ""; }; + B33FAE1C279BCE900013AAD8 /* snppublend_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snppublend_c.h; sourceTree = ""; }; + B33FAE1D279BCE900013AAD8 /* snppubg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snppubg.cpp; sourceTree = ""; }; + B33FAE1E279BCE900013AAD8 /* snes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snes.h; sourceTree = ""; }; + B33FAE1F279BCE900013AAD8 /* snppurender.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snppurender.h; sourceTree = ""; }; + B33FAE20279BCE900013AAD8 /* snspcbrr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snspcbrr.c; sourceTree = ""; }; + B33FAE21279BCE900013AAD8 /* snqueue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snqueue.h; sourceTree = ""; }; + B33FAE22279BCE900013AAD8 /* snspcdsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snspcdsp.h; sourceTree = ""; }; + B33FAE24279BCE900013AAD8 /* input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input.h; sourceTree = ""; }; + B33FAE25279BCE900013AAD8 /* input.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = input.cpp; sourceTree = ""; }; + B33FAE26279BCE900013AAD8 /* mainloop.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mainloop.cpp; sourceTree = ""; }; + B33FAE28279BCE900013AAD8 /* snppublend.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snppublend.cpp; sourceTree = ""; }; + B33FAE2A279BCE900013AAD8 /* snesdisasmview.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snesdisasmview.cpp; sourceTree = ""; }; + B33FAE2B279BCE900013AAD8 /* disasmview.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = disasmview.cpp; sourceTree = ""; }; + B33FAE2C279BCE900013AAD8 /* snesdisasmview.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snesdisasmview.h; sourceTree = ""; }; + B33FAE2D279BCE900013AAD8 /* memview.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memview.cpp; sourceTree = ""; }; + B33FAE2E279BCE900013AAD8 /* memview.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memview.h; sourceTree = ""; }; + B33FAE2F279BCE900013AAD8 /* snesmemview.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snesmemview.cpp; sourceTree = ""; }; + B33FAE30279BCE900013AAD8 /* textview.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = textview.cpp; sourceTree = ""; }; + B33FAE31279BCE900013AAD8 /* disasmview.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = disasmview.h; sourceTree = ""; }; + B33FAE32279BCE900013AAD8 /* snesmemview.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snesmemview.h; sourceTree = ""; }; + B33FAE33279BCE900013AAD8 /* textview.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = textview.h; sourceTree = ""; }; + B33FAE34279BCE900013AAD8 /* input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input.h; sourceTree = ""; }; + B33FAE35279BCE900013AAD8 /* mainloop.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mainloop.h; sourceTree = ""; }; + B33FAE36279BCE900013AAD8 /* input.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = input.cpp; sourceTree = ""; }; + B33FAE37279BCE900013AAD8 /* snmaskop.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snmaskop.h; sourceTree = ""; }; + B33FAE38279BCE900013AAD8 /* mainloop.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mainloop.cpp; sourceTree = ""; }; + B33FAE39279BCE900013AAD8 /* snmask.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snmask.cpp; sourceTree = ""; }; + B33FAE3B279BCE900013AAD8 /* icon1.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = icon1.ico; sourceTree = ""; }; + B33FAE3C279BCE900013AAD8 /* gepres.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = gepres.rc; sourceTree = ""; }; + B33FAE3D279BCE900013AAD8 /* resource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = ""; }; + B33FAE3E279BCE900013AAD8 /* gepres.aps */ = {isa = PBXFileReference; lastKnownFileType = file; path = gepres.aps; sourceTree = ""; }; + B33FAE3F279BCE900013AAD8 /* sneswin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sneswin.h; sourceTree = ""; }; + B33FAE40279BCE900013AAD8 /* sneswin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sneswin.cpp; sourceTree = ""; }; + B33FAE42279BCE900013AAD8 /* spcasm_mips.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = spcasm_mips.js; sourceTree = ""; }; + B33FAE43279BCE900013AAD8 /* asm_mips.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = asm_mips.js; sourceTree = ""; }; + B33FAE44279BCE900013AAD8 /* makespc.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = makespc.bat; sourceTree = ""; }; + B33FAE45279BCE900013AAD8 /* spc700_op.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = spc700_op.xml; sourceTree = ""; }; + B33FAE46279BCE900013AAD8 /* pd65816.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = pd65816.xml; sourceTree = ""; }; + B33FAE47279BCE900013AAD8 /* o.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = o.xml; sourceTree = ""; }; + B33FAE48279BCE900013AAD8 /* pdspc700.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = pdspc700.xml; sourceTree = ""; }; + B33FAE49279BCE900013AAD8 /* opspc700_mips.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opspc700_mips.h; sourceTree = ""; }; + B33FAE4A279BCE900013AAD8 /* pd65816.xsl */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = pd65816.xsl; sourceTree = ""; }; + B33FAE4B279BCE900013AAD8 /* makecpu.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = makecpu.bat; sourceTree = ""; }; + B33FAE4C279BCE900013AAD8 /* spcasm_c.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = spcasm_c.js; sourceTree = ""; }; + B33FAE4D279BCE900013AAD8 /* opspc700_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opspc700_c.h; sourceTree = ""; }; + B33FAE4E279BCE900013AAD8 /* asm.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = asm.js; sourceTree = ""; }; + B33FAE4F279BCE900013AAD8 /* asm_c.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = asm_c.js; sourceTree = ""; }; + B33FAE50279BCE900013AAD8 /* xslt.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = xslt.js; sourceTree = ""; }; + B33FAE51279BCE900013AAD8 /* op65816.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = op65816.h; sourceTree = ""; }; + B33FAE52279BCE900013AAD8 /* p.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = p.xml; sourceTree = ""; }; + B33FAE53279BCE900013AAD8 /* spc700_asm.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = spc700_asm.xml; sourceTree = ""; }; + B33FAE54279BCE900013AAD8 /* op65816_mips.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = op65816_mips.h; sourceTree = ""; }; + B33FAE55279BCE900013AAD8 /* pdspc700.xsl */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = pdspc700.xsl; sourceTree = ""; }; + B33FAE58279BCE900013AAD8 /* SNESticle.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = SNESticle.vcproj; sourceTree = ""; }; + B33FAE59279BCE900013AAD8 /* SNESticle.vcproj.vspscc */ = {isa = PBXFileReference; lastKnownFileType = text; path = SNESticle.vcproj.vspscc; sourceTree = ""; }; + B33FAE5B279BCE900013AAD8 /* NETPLAY.IRX */ = {isa = PBXFileReference; lastKnownFileType = file; path = NETPLAY.IRX; sourceTree = ""; }; + B33FAE5C279BCE900013AAD8 /* SNESticle.elf */ = {isa = PBXFileReference; lastKnownFileType = file; path = SNESticle.elf; sourceTree = ""; }; + B33FAE5D279BCE900013AAD8 /* SJPCM.IRX */ = {isa = PBXFileReference; lastKnownFileType = file; path = SJPCM.IRX; sourceTree = ""; }; + B33FAE5E279BCE900013AAD8 /* PS2LINK.IRX */ = {isa = PBXFileReference; lastKnownFileType = file; path = PS2LINK.IRX; sourceTree = ""; }; + B33FAE5F279BCE900013AAD8 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33FAE61279BCE900013AAD8 /* mixbuffer.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = mixbuffer.o; sourceTree = ""; }; + B33FAE62279BCE900013AAD8 /* version.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = version.lst; sourceTree = ""; }; + B33FAE63279BCE900013AAD8 /* main.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = main.o; sourceTree = ""; }; + B33FAE64279BCE900013AAD8 /* sjpcmbuffer.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = sjpcmbuffer.d; sourceTree = ""; }; + B33FAE65279BCE900013AAD8 /* sncpu.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = sncpu.d; sourceTree = ""; }; + B33FAE66279BCE900013AAD8 /* nesdisk.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesdisk.lst; sourceTree = ""; }; + B33FAE67279BCE900013AAD8 /* console.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = console.lst; sourceTree = ""; }; + B33FAE68279BCE900013AAD8 /* emusys.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = emusys.d; sourceTree = ""; }; + B33FAE69279BCE900013AAD8 /* nesio.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesio.lst; sourceTree = ""; }; + B33FAE6A279BCE900013AAD8 /* gpprim.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = gpprim.o; sourceTree = ""; }; + B33FAE6B279BCE900013AAD8 /* snspc_c.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspc_c.d; sourceTree = ""; }; + B33FAE6C279BCE900013AAD8 /* hw.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = hw.lst; sourceTree = ""; }; + B33FAE6D279BCE900013AAD8 /* console.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = console.o; sourceTree = ""; }; + B33FAE6E279BCE900013AAD8 /* snspcrom.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspcrom.o; sourceTree = ""; }; + B33FAE6F279BCE900013AAD8 /* nesmmu.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesmmu.lst; sourceTree = ""; }; + B33FAE70279BCE900013AAD8 /* uiNetwork.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = uiNetwork.o; sourceTree = ""; }; + B33FAE71279BCE900013AAD8 /* snmemmap.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snmemmap.o; sourceTree = ""; }; + B33FAE72279BCE900013AAD8 /* zutil.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = zutil.o; sourceTree = ""; }; + B33FAE73279BCE900013AAD8 /* snspc.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspc.lst; sourceTree = ""; }; + B33FAE74279BCE900013AAD8 /* snspc_c.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspc_c.lst; sourceTree = ""; }; + B33FAE75279BCE900013AAD8 /* prof.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = prof.lst; sourceTree = ""; }; + B33FAE76279BCE900013AAD8 /* profctr.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = profctr.o; sourceTree = ""; }; + B33FAE77279BCE900013AAD8 /* crc32.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = crc32.lst; sourceTree = ""; }; + B33FAE78279BCE900013AAD8 /* nes.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nes.lst; sourceTree = ""; }; + B33FAE79279BCE900013AAD8 /* unzip.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = unzip.lst; sourceTree = ""; }; + B33FAE7A279BCE900013AAD8 /* sncpu_c.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sncpu_c.o; sourceTree = ""; }; + B33FAE7B279BCE900013AAD8 /* snesreg.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snesreg.lst; sourceTree = ""; }; + B33FAE7C279BCE900013AAD8 /* mainloop.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = mainloop.lst; sourceTree = ""; }; + B33FAE7D279BCE900013AAD8 /* uiMenu.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = uiMenu.o; sourceTree = ""; }; + B33FAE7E279BCE900013AAD8 /* poly.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = poly.lst; sourceTree = ""; }; + B33FAE7F279BCE900013AAD8 /* input.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = input.o; sourceTree = ""; }; + B33FAE80279BCE900013AAD8 /* nesmmu.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesmmu.o; sourceTree = ""; }; + B33FAE81279BCE900013AAD8 /* crt0.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = crt0.lst; sourceTree = ""; }; + B33FAE82279BCE900013AAD8 /* font.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = font.lst; sourceTree = ""; }; + B33FAE83279BCE900013AAD8 /* snspc.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspc.d; sourceTree = ""; }; + B33FAE84279BCE900013AAD8 /* mainloop.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = mainloop.o; sourceTree = ""; }; + B33FAE85279BCE900013AAD8 /* uiBrowser.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = uiBrowser.o; sourceTree = ""; }; + B33FAE86279BCE900013AAD8 /* snesreg.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snesreg.o; sourceTree = ""; }; + B33FAE87279BCE900013AAD8 /* emusys.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = emusys.lst; sourceTree = ""; }; + B33FAE88279BCE900013AAD8 /* nesrom.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesrom.lst; sourceTree = ""; }; + B33FAE89279BCE900013AAD8 /* inflate.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = inflate.d; sourceTree = ""; }; + B33FAE8A279BCE900013AAD8 /* snspctimer.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspctimer.o; sourceTree = ""; }; + B33FAE8B279BCE900013AAD8 /* snspctimer.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspctimer.lst; sourceTree = ""; }; + B33FAE8C279BCE900013AAD8 /* sndma.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sndma.o; sourceTree = ""; }; + B33FAE8D279BCE900013AAD8 /* nesstate.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesstate.o; sourceTree = ""; }; + B33FAE8E279BCE900013AAD8 /* inftrees.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = inftrees.o; sourceTree = ""; }; + B33FAE8F279BCE900013AAD8 /* version.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = version.o; sourceTree = ""; }; + B33FAE90279BCE900013AAD8 /* snppublend_gs.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snppublend_gs.o; sourceTree = ""; }; + B33FAE91279BCE900013AAD8 /* snspcdisasm.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspcdisasm.lst; sourceTree = ""; }; + B33FAE92279BCE900013AAD8 /* texture.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = texture.lst; sourceTree = ""; }; + B33FAE93279BCE900013AAD8 /* poly.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = poly.d; sourceTree = ""; }; + B33FAE94279BCE900013AAD8 /* uncompr.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = uncompr.o; sourceTree = ""; }; + B33FAE95279BCE900013AAD8 /* nesrom.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesrom.o; sourceTree = ""; }; + B33FAE96279BCE900013AAD8 /* hw.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = hw.d; sourceTree = ""; }; + B33FAE97279BCE900013AAD8 /* cd.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = cd.o; sourceTree = ""; }; + B33FAE98279BCE900013AAD8 /* SNESticle.elf */ = {isa = PBXFileReference; lastKnownFileType = file; path = SNESticle.elf; sourceTree = ""; }; + B33FAE99279BCE900013AAD8 /* uiLog.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = uiLog.lst; sourceTree = ""; }; + B33FAE9A279BCE900013AAD8 /* snspcdisasm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspcdisasm.o; sourceTree = ""; }; + B33FAE9B279BCE900013AAD8 /* font_04b16b.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = font_04b16b.lst; sourceTree = ""; }; + B33FAE9C279BCE900013AAD8 /* pathext.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pathext.o; sourceTree = ""; }; + B33FAE9D279BCE900013AAD8 /* unzip.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = unzip.d; sourceTree = ""; }; + B33FAE9E279BCE900013AAD8 /* explode.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = explode.d; sourceTree = ""; }; + B33FAE9F279BCE900013AAD8 /* sndisasm.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = sndisasm.lst; sourceTree = ""; }; + B33FAEA0279BCE900013AAD8 /* array.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = array.d; sourceTree = ""; }; + B33FAEA1279BCE900013AAD8 /* snspcmix.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspcmix.lst; sourceTree = ""; }; + B33FAEA2279BCE900013AAD8 /* memspace.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = memspace.o; sourceTree = ""; }; + B33FAEA3279BCE900013AAD8 /* vram.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = vram.o; sourceTree = ""; }; + B33FAEA4279BCE900013AAD8 /* ps2dma.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ps2dma.lst; sourceTree = ""; }; + B33FAEA5279BCE900013AAD8 /* nesdisk.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesdisk.d; sourceTree = ""; }; + B33FAEA6279BCE900013AAD8 /* sn65816.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = sn65816.d; sourceTree = ""; }; + B33FAEA7279BCE900013AAD8 /* nespal.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nespal.d; sourceTree = ""; }; + B33FAEA8279BCE900013AAD8 /* bmpfile.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = bmpfile.lst; sourceTree = ""; }; + B33FAEA9279BCE900013AAD8 /* mcsave_ee.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = mcsave_ee.o; sourceTree = ""; }; + B33FAEAA279BCE900013AAD8 /* pathext.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = pathext.lst; sourceTree = ""; }; + B33FAEAB279BCE900013AAD8 /* gslist.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = gslist.o; sourceTree = ""; }; + B33FAEAC279BCE900013AAD8 /* zutil.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = zutil.lst; sourceTree = ""; }; + B33FAEAD279BCE900013AAD8 /* deflate.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = deflate.d; sourceTree = ""; }; + B33FAEAE279BCE900013AAD8 /* surface.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = surface.o; sourceTree = ""; }; + B33FAEAF279BCE900013AAD8 /* compress.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = compress.d; sourceTree = ""; }; + B33FAEB0279BCE900013AAD8 /* snppu.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snppu.d; sourceTree = ""; }; + B33FAEB1279BCE900013AAD8 /* sndisasm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sndisasm.o; sourceTree = ""; }; + B33FAEB2279BCE900013AAD8 /* infutil.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = infutil.d; sourceTree = ""; }; + B33FAEB3279BCE900013AAD8 /* emumovie.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = emumovie.d; sourceTree = ""; }; + B33FAEB4279BCE900013AAD8 /* sn65816.sp */ = {isa = PBXFileReference; lastKnownFileType = text; path = sn65816.sp; sourceTree = ""; }; + B33FAEB5279BCE900013AAD8 /* snio.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snio.lst; sourceTree = ""; }; + B33FAEB6279BCE900013AAD8 /* inffast.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = inffast.lst; sourceTree = ""; }; + B33FAEB7279BCE900013AAD8 /* gpprim.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = gpprim.lst; sourceTree = ""; }; + B33FAEB8279BCE900013AAD8 /* libxmtap.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = libxmtap.lst; sourceTree = ""; }; + B33FAEB9279BCE900013AAD8 /* memcard.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = memcard.d; sourceTree = ""; }; + B33FAEBA279BCE900013AAD8 /* cdvd_rpc.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = cdvd_rpc.o; sourceTree = ""; }; + B33FAEBB279BCE900013AAD8 /* emumovie.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = emumovie.lst; sourceTree = ""; }; + B33FAEBC279BCE900013AAD8 /* snspcrom.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspcrom.lst; sourceTree = ""; }; + B33FAEBD279BCE900013AAD8 /* exceptions.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = exceptions.lst; sourceTree = ""; }; + B33FAEBE279BCE900013AAD8 /* cd.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = cd.lst; sourceTree = ""; }; + B33FAEBF279BCE900013AAD8 /* snppucolor.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snppucolor.o; sourceTree = ""; }; + B33FAEC0279BCE900013AAD8 /* snppu.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snppu.lst; sourceTree = ""; }; + B33FAEC1279BCE900013AAD8 /* sjpcm_rpc.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sjpcm_rpc.o; sourceTree = ""; }; + B33FAEC2279BCE900013AAD8 /* libxpad.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = libxpad.d; sourceTree = ""; }; + B33FAEC3279BCE900013AAD8 /* bmpfile.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = bmpfile.o; sourceTree = ""; }; + B33FAEC4279BCE900013AAD8 /* snppubg.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snppubg.d; sourceTree = ""; }; + B33FAEC5279BCE900013AAD8 /* nescpu.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nescpu.d; sourceTree = ""; }; + B33FAEC6279BCE900013AAD8 /* snppurender.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snppurender.lst; sourceTree = ""; }; + B33FAEC7279BCE900013AAD8 /* SNESticle.map */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = SNESticle.map; sourceTree = ""; }; + B33FAEC8279BCE900013AAD8 /* file.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = file.o; sourceTree = ""; }; + B33FAEC9279BCE900013AAD8 /* infcodes.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = infcodes.o; sourceTree = ""; }; + B33FAECA279BCE900013AAD8 /* libxmtap.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = libxmtap.d; sourceTree = ""; }; + B33FAECB279BCE900013AAD8 /* inflate.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = inflate.lst; sourceTree = ""; }; + B33FAECC279BCE900013AAD8 /* netplay_ee.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = netplay_ee.lst; sourceTree = ""; }; + B33FAECD279BCE900013AAD8 /* snio.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snio.o; sourceTree = ""; }; + B33FAECE279BCE900013AAD8 /* vram.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = vram.lst; sourceTree = ""; }; + B33FAECF279BCE900013AAD8 /* deflate.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = deflate.lst; sourceTree = ""; }; + B33FAED0279BCE900013AAD8 /* exceptions.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = exceptions.o; sourceTree = ""; }; + B33FAED1279BCE900013AAD8 /* font_04b16b.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = font_04b16b.o; sourceTree = ""; }; + B33FAED2279BCE900013AAD8 /* nesspumix.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesspumix.o; sourceTree = ""; }; + B33FAED3279BCE900013AAD8 /* font.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = font.d; sourceTree = ""; }; + B33FAED4279BCE900013AAD8 /* texture.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = texture.d; sourceTree = ""; }; + B33FAED5279BCE900013AAD8 /* input.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = input.lst; sourceTree = ""; }; + B33FAED6279BCE900013AAD8 /* sncpu_c.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = sncpu_c.lst; sourceTree = ""; }; + B33FAED7279BCE900013AAD8 /* unreduce.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = unreduce.o; sourceTree = ""; }; + B33FAED8279BCE900013AAD8 /* dataio.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = dataio.o; sourceTree = ""; }; + B33FAED9279BCE900013AAD8 /* gs.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = gs.d; sourceTree = ""; }; + B33FAEDA279BCE900013AAD8 /* titleman.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = titleman.d; sourceTree = ""; }; + B33FAEDB279BCE900013AAD8 /* infblock.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = infblock.d; sourceTree = ""; }; + B33FAEDC279BCE900013AAD8 /* trees.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = trees.o; sourceTree = ""; }; + B33FAEDD279BCE900013AAD8 /* snstate.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snstate.d; sourceTree = ""; }; + B33FAEDE279BCE900013AAD8 /* nesspu.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesspu.d; sourceTree = ""; }; + B33FAEDF279BCE900013AAD8 /* memcard.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = memcard.lst; sourceTree = ""; }; + B33FAEE0279BCE900013AAD8 /* ndisasm.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = ndisasm.d; sourceTree = ""; }; + B33FAEE1279BCE900013AAD8 /* pixelformat.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = pixelformat.d; sourceTree = ""; }; + B33FAEE2279BCE900013AAD8 /* infutil.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = infutil.lst; sourceTree = ""; }; + B33FAEE3279BCE900013AAD8 /* nescpu.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nescpu.lst; sourceTree = ""; }; + B33FAEE4279BCE900013AAD8 /* snrom.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snrom.o; sourceTree = ""; }; + B33FAEE5279BCE900013AAD8 /* pixelformat.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = pixelformat.lst; sourceTree = ""; }; + B33FAEE6279BCE900013AAD8 /* snppuobj.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snppuobj.o; sourceTree = ""; }; + B33FAEE7279BCE900013AAD8 /* wavfile.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = wavfile.o; sourceTree = ""; }; + B33FAEE8279BCE900013AAD8 /* inffast.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = inffast.o; sourceTree = ""; }; + B33FAEE9279BCE900013AAD8 /* adler32.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = adler32.o; sourceTree = ""; }; + B33FAEEA279BCE900013AAD8 /* sndma.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = sndma.lst; sourceTree = ""; }; + B33FAEEB279BCE900013AAD8 /* uiMenu.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = uiMenu.lst; sourceTree = ""; }; + B33FAEEC279BCE900013AAD8 /* snmask128.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snmask128.o; sourceTree = ""; }; + B33FAEED279BCE900013AAD8 /* snppurender8.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snppurender8.o; sourceTree = ""; }; + B33FAEEE279BCE900013AAD8 /* snspcio.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspcio.o; sourceTree = ""; }; + B33FAEEF279BCE900013AAD8 /* ncpu_c.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = ncpu_c.o; sourceTree = ""; }; + B33FAEF0279BCE900013AAD8 /* excepHandler.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = excepHandler.d; sourceTree = ""; }; + B33FAEF1279BCE900013AAD8 /* prof.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = prof.d; sourceTree = ""; }; + B33FAEF2279BCE900013AAD8 /* nesio.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesio.o; sourceTree = ""; }; + B33FAEF3279BCE900013AAD8 /* nesppu.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesppu.d; sourceTree = ""; }; + B33FAEF4279BCE900013AAD8 /* inputdevice.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = inputdevice.d; sourceTree = ""; }; + B33FAEF5279BCE900013AAD8 /* infcodes.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = infcodes.lst; sourceTree = ""; }; + B33FAEF6279BCE900013AAD8 /* sn65816.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = sn65816.lst; sourceTree = ""; }; + B33FAEF7279BCE900013AAD8 /* snspcbrr.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspcbrr.o; sourceTree = ""; }; + B33FAEF8279BCE900013AAD8 /* gslist.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = gslist.lst; sourceTree = ""; }; + B33FAEF9279BCE900013AAD8 /* snspcdsp.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspcdsp.d; sourceTree = ""; }; + B33FAEFA279BCE900013AAD8 /* emurom.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = emurom.o; sourceTree = ""; }; + B33FAEFB279BCE900013AAD8 /* emurom.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = emurom.lst; sourceTree = ""; }; + B33FAEFC279BCE900013AAD8 /* adler32.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = adler32.lst; sourceTree = ""; }; + B33FAEFD279BCE900013AAD8 /* gzio.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = gzio.o; sourceTree = ""; }; + B33FAEFE279BCE900013AAD8 /* crt0.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = crt0.d; sourceTree = ""; }; + B33FAEFF279BCE900013AAD8 /* gpfifo.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = gpfifo.d; sourceTree = ""; }; + B33FAF00279BCE900013AAD8 /* trees.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = trees.lst; sourceTree = ""; }; + B33FAF01279BCE900013AAD8 /* snes.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snes.d; sourceTree = ""; }; + B33FAF02279BCE900013AAD8 /* crc32.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = crc32.d; sourceTree = ""; }; + B33FAF03279BCE900013AAD8 /* netplay_ee.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = netplay_ee.d; sourceTree = ""; }; + B33FAF04279BCE900013AAD8 /* snspcmix.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspcmix.o; sourceTree = ""; }; + B33FAF05279BCE900013AAD8 /* unshrink.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = unshrink.d; sourceTree = ""; }; + B33FAF06279BCE900013AAD8 /* rendersurface.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = rendersurface.o; sourceTree = ""; }; + B33FAF07279BCE900013AAD8 /* ps2dma.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = ps2dma.o; sourceTree = ""; }; + B33FAF08279BCE900013AAD8 /* nesppurender.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesppurender.o; sourceTree = ""; }; + B33FAF09279BCE900013AAD8 /* snmemmap.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snmemmap.lst; sourceTree = ""; }; + B33FAF0A279BCE900013AAD8 /* n6502.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = n6502.d; sourceTree = ""; }; + B33FAF0B279BCE900013AAD8 /* snppurender.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snppurender.d; sourceTree = ""; }; + B33FAF0C279BCE900013AAD8 /* uiLog.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = uiLog.d; sourceTree = ""; }; + B33FAF0D279BCE900013AAD8 /* nes.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nes.o; sourceTree = ""; }; + B33FAF0E279BCE900013AAD8 /* proflog.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = proflog.o; sourceTree = ""; }; + B33FAF0F279BCE900013AAD8 /* snppucolor.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snppucolor.lst; sourceTree = ""; }; + B33FAF10279BCE900013AAD8 /* snesreg.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snesreg.d; sourceTree = ""; }; + B33FAF11279BCE900013AAD8 /* uiBrowser.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = uiBrowser.d; sourceTree = ""; }; + B33FAF12279BCE900013AAD8 /* mainloop.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = mainloop.d; sourceTree = ""; }; + B33FAF13279BCE900013AAD8 /* snspc.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspc.o; sourceTree = ""; }; + B33FAF14279BCE900013AAD8 /* surface.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = surface.lst; sourceTree = ""; }; + B33FAF15279BCE900013AAD8 /* gpfifo.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = gpfifo.lst; sourceTree = ""; }; + B33FAF16279BCE900013AAD8 /* snspcdsp.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspcdsp.lst; sourceTree = ""; }; + B33FAF17279BCE900013AAD8 /* snspcbrr.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspcbrr.lst; sourceTree = ""; }; + B33FAF18279BCE900013AAD8 /* memcard_icon.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = memcard_icon.inc; sourceTree = ""; }; + B33FAF19279BCE900013AAD8 /* explode.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = explode.lst; sourceTree = ""; }; + B33FAF1A279BCE900013AAD8 /* uiBrowser.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = uiBrowser.lst; sourceTree = ""; }; + B33FAF1B279BCE900013AAD8 /* sncpu_c.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = sncpu_c.d; sourceTree = ""; }; + B33FAF1C279BCE900013AAD8 /* titleman.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = titleman.lst; sourceTree = ""; }; + B33FAF1D279BCE900013AAD8 /* dataio.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = dataio.lst; sourceTree = ""; }; + B33FAF1E279BCE900013AAD8 /* nesmmu.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesmmu.d; sourceTree = ""; }; + B33FAF1F279BCE900013AAD8 /* input.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = input.d; sourceTree = ""; }; + B33FAF20279BCE900013AAD8 /* sncpu.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = sncpu.lst; sourceTree = ""; }; + B33FAF21279BCE900013AAD8 /* uiMenu.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = uiMenu.d; sourceTree = ""; }; + B33FAF22279BCE900013AAD8 /* n6502.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = n6502.lst; sourceTree = ""; }; + B33FAF23279BCE900013AAD8 /* snes.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snes.lst; sourceTree = ""; }; + B33FAF24279BCE900013AAD8 /* console.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = console.d; sourceTree = ""; }; + B33FAF25279BCE900013AAD8 /* snspcrom.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspcrom.d; sourceTree = ""; }; + B33FAF26279BCE900013AAD8 /* snspc_c.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspc_c.o; sourceTree = ""; }; + B33FAF27279BCE900013AAD8 /* profctr.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = profctr.d; sourceTree = ""; }; + B33FAF28279BCE900013AAD8 /* cdvd_rpc.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = cdvd_rpc.lst; sourceTree = ""; }; + B33FAF29279BCE900013AAD8 /* snmemmap.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snmemmap.d; sourceTree = ""; }; + B33FAF2A279BCE900013AAD8 /* zutil.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = zutil.d; sourceTree = ""; }; + B33FAF2B279BCE900013AAD8 /* uiNetwork.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = uiNetwork.d; sourceTree = ""; }; + B33FAF2C279BCE900013AAD8 /* main.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = main.d; sourceTree = ""; }; + B33FAF2D279BCE900013AAD8 /* sncpu.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sncpu.o; sourceTree = ""; }; + B33FAF2E279BCE900013AAD8 /* sjpcmbuffer.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sjpcmbuffer.o; sourceTree = ""; }; + B33FAF2F279BCE900013AAD8 /* mixbuffer.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = mixbuffer.d; sourceTree = ""; }; + B33FAF30279BCE900013AAD8 /* emusys.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = emusys.o; sourceTree = ""; }; + B33FAF31279BCE900013AAD8 /* gpprim.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = gpprim.d; sourceTree = ""; }; + B33FAF32279BCE900013AAD8 /* uiNetwork.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = uiNetwork.lst; sourceTree = ""; }; + B33FAF33279BCE900013AAD8 /* compress.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = compress.o; sourceTree = ""; }; + B33FAF34279BCE900013AAD8 /* surface.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = surface.d; sourceTree = ""; }; + B33FAF35279BCE900013AAD8 /* deflate.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = deflate.o; sourceTree = ""; }; + B33FAF36279BCE910013AAD8 /* excepHandler.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = excepHandler.lst; sourceTree = ""; }; + B33FAF37279BCE910013AAD8 /* snppubg.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snppubg.lst; sourceTree = ""; }; + B33FAF38279BCE910013AAD8 /* sndisasm.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = sndisasm.d; sourceTree = ""; }; + B33FAF39279BCE910013AAD8 /* unshrink.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = unshrink.lst; sourceTree = ""; }; + B33FAF3A279BCE910013AAD8 /* snppu.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snppu.o; sourceTree = ""; }; + B33FAF3B279BCE910013AAD8 /* mcsave_ee.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = mcsave_ee.d; sourceTree = ""; }; + B33FAF3C279BCE910013AAD8 /* nespal.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nespal.o; sourceTree = ""; }; + B33FAF3D279BCE910013AAD8 /* sn65816.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sn65816.o; sourceTree = ""; }; + B33FAF3E279BCE910013AAD8 /* nesdisk.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesdisk.o; sourceTree = ""; }; + B33FAF3F279BCE910013AAD8 /* exceptions.sp */ = {isa = PBXFileReference; lastKnownFileType = text; path = exceptions.sp; sourceTree = ""; }; + B33FAF40279BCE910013AAD8 /* mcsave_ee.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = mcsave_ee.lst; sourceTree = ""; }; + B33FAF41279BCE910013AAD8 /* vram.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = vram.d; sourceTree = ""; }; + B33FAF42279BCE910013AAD8 /* proflog.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = proflog.lst; sourceTree = ""; }; + B33FAF43279BCE910013AAD8 /* memspace.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = memspace.d; sourceTree = ""; }; + B33FAF44279BCE910013AAD8 /* array.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = array.o; sourceTree = ""; }; + B33FAF45279BCE910013AAD8 /* nesppu.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesppu.lst; sourceTree = ""; }; + B33FAF46279BCE910013AAD8 /* gslist.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = gslist.d; sourceTree = ""; }; + B33FAF47279BCE910013AAD8 /* main.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = main.lst; sourceTree = ""; }; + B33FAF48279BCE910013AAD8 /* rendersurface.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = rendersurface.lst; sourceTree = ""; }; + B33FAF49279BCE910013AAD8 /* mixbuffer.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = mixbuffer.lst; sourceTree = ""; }; + B33FAF4A279BCE910013AAD8 /* snspcdisasm.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspcdisasm.d; sourceTree = ""; }; + B33FAF4B279BCE910013AAD8 /* sjpcm_rpc.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = sjpcm_rpc.lst; sourceTree = ""; }; + B33FAF4C279BCE910013AAD8 /* compress.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = compress.lst; sourceTree = ""; }; + B33FAF4D279BCE910013AAD8 /* nesstate.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesstate.lst; sourceTree = ""; }; + B33FAF4E279BCE910013AAD8 /* snppublend_gs.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snppublend_gs.lst; sourceTree = ""; }; + B33FAF4F279BCE910013AAD8 /* explode.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = explode.o; sourceTree = ""; }; + B33FAF50279BCE910013AAD8 /* unzip.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = unzip.o; sourceTree = ""; }; + B33FAF51279BCE910013AAD8 /* pathext.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = pathext.d; sourceTree = ""; }; + B33FAF52279BCE910013AAD8 /* snppublend_gs.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snppublend_gs.d; sourceTree = ""; }; + B33FAF53279BCE910013AAD8 /* version.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = version.d; sourceTree = ""; }; + B33FAF54279BCE910013AAD8 /* inftrees.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = inftrees.d; sourceTree = ""; }; + B33FAF55279BCE910013AAD8 /* nesstate.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesstate.d; sourceTree = ""; }; + B33FAF56279BCE910013AAD8 /* sndma.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = sndma.d; sourceTree = ""; }; + B33FAF57279BCE910013AAD8 /* snspctimer.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspctimer.d; sourceTree = ""; }; + B33FAF58279BCE910013AAD8 /* inflate.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = inflate.o; sourceTree = ""; }; + B33FAF59279BCE910013AAD8 /* nesrom.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesrom.d; sourceTree = ""; }; + B33FAF5A279BCE910013AAD8 /* hw.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = hw.o; sourceTree = ""; }; + B33FAF5B279BCE910013AAD8 /* cd.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = cd.d; sourceTree = ""; }; + B33FAF5C279BCE910013AAD8 /* inftrees.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = inftrees.lst; sourceTree = ""; }; + B33FAF5D279BCE910013AAD8 /* uncompr.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = uncompr.d; sourceTree = ""; }; + B33FAF5E279BCE910013AAD8 /* poly.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = poly.o; sourceTree = ""; }; + B33FAF5F279BCE910013AAD8 /* texture.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = texture.o; sourceTree = ""; }; + B33FAF60279BCE910013AAD8 /* font.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = font.o; sourceTree = ""; }; + B33FAF61279BCE910013AAD8 /* font_04b16b.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = font_04b16b.d; sourceTree = ""; }; + B33FAF62279BCE910013AAD8 /* nesspumix.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesspumix.d; sourceTree = ""; }; + B33FAF63279BCE910013AAD8 /* snstate.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snstate.o; sourceTree = ""; }; + B33FAF64279BCE910013AAD8 /* trees.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = trees.d; sourceTree = ""; }; + B33FAF65279BCE910013AAD8 /* ncpu_c.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ncpu_c.lst; sourceTree = ""; }; + B33FAF66279BCE910013AAD8 /* infblock.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = infblock.o; sourceTree = ""; }; + B33FAF67279BCE910013AAD8 /* gs.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = gs.o; sourceTree = ""; }; + B33FAF68279BCE910013AAD8 /* titleman.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = titleman.o; sourceTree = ""; }; + B33FAF69279BCE910013AAD8 /* nesspumix.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesspumix.lst; sourceTree = ""; }; + B33FAF6A279BCE910013AAD8 /* dataio.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = dataio.d; sourceTree = ""; }; + B33FAF6B279BCE910013AAD8 /* unreduce.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = unreduce.d; sourceTree = ""; }; + B33FAF6C279BCE910013AAD8 /* snstate.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snstate.lst; sourceTree = ""; }; + B33FAF6D279BCE910013AAD8 /* libxmtap.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = libxmtap.o; sourceTree = ""; }; + B33FAF6E279BCE910013AAD8 /* file.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = file.d; sourceTree = ""; }; + B33FAF6F279BCE910013AAD8 /* infcodes.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = infcodes.d; sourceTree = ""; }; + B33FAF70279BCE910013AAD8 /* libxpad.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = libxpad.lst; sourceTree = ""; }; + B33FAF71279BCE910013AAD8 /* array.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = array.lst; sourceTree = ""; }; + B33FAF72279BCE910013AAD8 /* exceptions.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = exceptions.d; sourceTree = ""; }; + B33FAF73279BCE910013AAD8 /* memspace.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = memspace.lst; sourceTree = ""; }; + B33FAF74279BCE910013AAD8 /* snio.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snio.d; sourceTree = ""; }; + B33FAF75279BCE910013AAD8 /* sjpcm_rpc.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = sjpcm_rpc.d; sourceTree = ""; }; + B33FAF76279BCE910013AAD8 /* nespal.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nespal.lst; sourceTree = ""; }; + B33FAF77279BCE910013AAD8 /* profctr.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = profctr.lst; sourceTree = ""; }; + B33FAF78279BCE910013AAD8 /* inputdevice.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = inputdevice.lst; sourceTree = ""; }; + B33FAF79279BCE910013AAD8 /* file.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = file.lst; sourceTree = ""; }; + B33FAF7A279BCE910013AAD8 /* infblock.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = infblock.lst; sourceTree = ""; }; + B33FAF7B279BCE910013AAD8 /* snppucolor.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snppucolor.d; sourceTree = ""; }; + B33FAF7C279BCE910013AAD8 /* nescpu.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nescpu.o; sourceTree = ""; }; + B33FAF7D279BCE910013AAD8 /* snppurender8.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snppurender8.lst; sourceTree = ""; }; + B33FAF7E279BCE910013AAD8 /* snppubg.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snppubg.o; sourceTree = ""; }; + B33FAF7F279BCE910013AAD8 /* gs.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = gs.lst; sourceTree = ""; }; + B33FAF80279BCE910013AAD8 /* bmpfile.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = bmpfile.d; sourceTree = ""; }; + B33FAF81279BCE910013AAD8 /* libxpad.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = libxpad.o; sourceTree = ""; }; + B33FAF82279BCE910013AAD8 /* emumovie.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = emumovie.o; sourceTree = ""; }; + B33FAF83279BCE910013AAD8 /* infutil.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = infutil.o; sourceTree = ""; }; + B33FAF84279BCE910013AAD8 /* uncompr.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = uncompr.lst; sourceTree = ""; }; + B33FAF85279BCE910013AAD8 /* cdvd_rpc.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = cdvd_rpc.d; sourceTree = ""; }; + B33FAF86279BCE910013AAD8 /* memcard.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = memcard.o; sourceTree = ""; }; + B33FAF87279BCE910013AAD8 /* snspcmix.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspcmix.d; sourceTree = ""; }; + B33FAF88279BCE910013AAD8 /* unshrink.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = unshrink.o; sourceTree = ""; }; + B33FAF89279BCE910013AAD8 /* netplay_ee.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = netplay_ee.o; sourceTree = ""; }; + B33FAF8A279BCE910013AAD8 /* wavfile.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = wavfile.lst; sourceTree = ""; }; + B33FAF8B279BCE910013AAD8 /* crc32.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = crc32.o; sourceTree = ""; }; + B33FAF8C279BCE910013AAD8 /* snes.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snes.o; sourceTree = ""; }; + B33FAF8D279BCE910013AAD8 /* gpfifo.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = gpfifo.o; sourceTree = ""; }; + B33FAF8E279BCE910013AAD8 /* proflog.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = proflog.d; sourceTree = ""; }; + B33FAF8F279BCE910013AAD8 /* nes.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nes.d; sourceTree = ""; }; + B33FAF90279BCE910013AAD8 /* snppurender.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snppurender.o; sourceTree = ""; }; + B33FAF91279BCE910013AAD8 /* n6502.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = n6502.o; sourceTree = ""; }; + B33FAF92279BCE910013AAD8 /* uiLog.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = uiLog.o; sourceTree = ""; }; + B33FAF93279BCE910013AAD8 /* nesppurender.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesppurender.d; sourceTree = ""; }; + B33FAF94279BCE910013AAD8 /* ps2dma.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = ps2dma.d; sourceTree = ""; }; + B33FAF95279BCE910013AAD8 /* rendersurface.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = rendersurface.d; sourceTree = ""; }; + B33FAF96279BCE910013AAD8 /* nesspu.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesspu.lst; sourceTree = ""; }; + B33FAF97279BCE910013AAD8 /* snspcbrr.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspcbrr.d; sourceTree = ""; }; + B33FAF98279BCE910013AAD8 /* inputdevice.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = inputdevice.o; sourceTree = ""; }; + B33FAF99279BCE910013AAD8 /* nesppu.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesppu.o; sourceTree = ""; }; + B33FAF9A279BCE910013AAD8 /* snspcio.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspcio.lst; sourceTree = ""; }; + B33FAF9B279BCE910013AAD8 /* nesppurender.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesppurender.lst; sourceTree = ""; }; + B33FAF9C279BCE910013AAD8 /* nesio.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesio.d; sourceTree = ""; }; + B33FAF9D279BCE910013AAD8 /* crt0.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = crt0.o; sourceTree = ""; }; + B33FAF9E279BCE910013AAD8 /* gzio.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = gzio.d; sourceTree = ""; }; + B33FAF9F279BCE910013AAD8 /* snspcdsp.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspcdsp.o; sourceTree = ""; }; + B33FAFA0279BCE910013AAD8 /* emurom.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = emurom.d; sourceTree = ""; }; + B33FAFA1279BCE910013AAD8 /* snppuobj.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snppuobj.lst; sourceTree = ""; }; + B33FAFA2279BCE910013AAD8 /* adler32.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = adler32.d; sourceTree = ""; }; + B33FAFA3279BCE910013AAD8 /* inffast.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = inffast.d; sourceTree = ""; }; + B33FAFA4279BCE910013AAD8 /* snrom.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snrom.d; sourceTree = ""; }; + B33FAFA5279BCE910013AAD8 /* wavfile.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = wavfile.d; sourceTree = ""; }; + B33FAFA6279BCE910013AAD8 /* snppuobj.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snppuobj.d; sourceTree = ""; }; + B33FAFA7279BCE910013AAD8 /* ncpu_c.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = ncpu_c.d; sourceTree = ""; }; + B33FAFA8279BCE910013AAD8 /* excepHandler.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = excepHandler.o; sourceTree = ""; }; + B33FAFA9279BCE910013AAD8 /* prof.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = prof.o; sourceTree = ""; }; + B33FAFAA279BCE910013AAD8 /* snspcio.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspcio.d; sourceTree = ""; }; + B33FAFAB279BCE910013AAD8 /* unreduce.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = unreduce.lst; sourceTree = ""; }; + B33FAFAC279BCE910013AAD8 /* snppurender8.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snppurender8.d; sourceTree = ""; }; + B33FAFAD279BCE910013AAD8 /* snmask128.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snmask128.d; sourceTree = ""; }; + B33FAFAE279BCE910013AAD8 /* sjpcmbuffer.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = sjpcmbuffer.lst; sourceTree = ""; }; + B33FAFAF279BCE910013AAD8 /* pixelformat.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pixelformat.o; sourceTree = ""; }; + B33FAFB0279BCE910013AAD8 /* ndisasm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = ndisasm.o; sourceTree = ""; }; + B33FAFB1279BCE910013AAD8 /* snmask128.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snmask128.lst; sourceTree = ""; }; + B33FAFB2279BCE910013AAD8 /* snrom.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snrom.lst; sourceTree = ""; }; + B33FAFB3279BCE910013AAD8 /* nesspu.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesspu.o; sourceTree = ""; }; + B33FAFB4279BCE910013AAD8 /* ndisasm.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ndisasm.lst; sourceTree = ""; }; + B33FAFB5279BCE910013AAD8 /* gzio.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = gzio.lst; sourceTree = ""; }; + B33FAFB7279BCE910013AAD8 /* mixbuffer.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = mixbuffer.o; sourceTree = ""; }; + B33FAFB8279BCE910013AAD8 /* version.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = version.lst; sourceTree = ""; }; + B33FAFB9279BCE910013AAD8 /* main.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = main.o; sourceTree = ""; }; + B33FAFBA279BCE910013AAD8 /* sjpcmbuffer.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = sjpcmbuffer.d; sourceTree = ""; }; + B33FAFBB279BCE910013AAD8 /* sncpu.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = sncpu.d; sourceTree = ""; }; + B33FAFBC279BCE910013AAD8 /* nesdisk.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesdisk.lst; sourceTree = ""; }; + B33FAFBD279BCE910013AAD8 /* console.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = console.lst; sourceTree = ""; }; + B33FAFBE279BCE910013AAD8 /* emusys.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = emusys.d; sourceTree = ""; }; + B33FAFBF279BCE910013AAD8 /* nesio.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesio.lst; sourceTree = ""; }; + B33FAFC0279BCE910013AAD8 /* gpprim.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = gpprim.o; sourceTree = ""; }; + B33FAFC1279BCE910013AAD8 /* snspc_c.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspc_c.d; sourceTree = ""; }; + B33FAFC2279BCE910013AAD8 /* hw.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = hw.lst; sourceTree = ""; }; + B33FAFC3279BCE910013AAD8 /* console.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = console.o; sourceTree = ""; }; + B33FAFC4279BCE910013AAD8 /* snspcrom.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspcrom.o; sourceTree = ""; }; + B33FAFC5279BCE910013AAD8 /* nesmmu.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesmmu.lst; sourceTree = ""; }; + B33FAFC6279BCE910013AAD8 /* uiNetwork.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = uiNetwork.o; sourceTree = ""; }; + B33FAFC7279BCE910013AAD8 /* snmemmap.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snmemmap.o; sourceTree = ""; }; + B33FAFC8279BCE910013AAD8 /* zutil.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = zutil.o; sourceTree = ""; }; + B33FAFC9279BCE910013AAD8 /* snspc.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspc.lst; sourceTree = ""; }; + B33FAFCA279BCE910013AAD8 /* snspc_c.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspc_c.lst; sourceTree = ""; }; + B33FAFCB279BCE910013AAD8 /* prof.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = prof.lst; sourceTree = ""; }; + B33FAFCC279BCE910013AAD8 /* profctr.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = profctr.o; sourceTree = ""; }; + B33FAFCD279BCE910013AAD8 /* crc32.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = crc32.lst; sourceTree = ""; }; + B33FAFCE279BCE910013AAD8 /* nes.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nes.lst; sourceTree = ""; }; + B33FAFCF279BCE910013AAD8 /* unzip.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = unzip.lst; sourceTree = ""; }; + B33FAFD0279BCE910013AAD8 /* sncpu_c.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sncpu_c.o; sourceTree = ""; }; + B33FAFD1279BCE910013AAD8 /* snesreg.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snesreg.lst; sourceTree = ""; }; + B33FAFD2279BCE910013AAD8 /* mainloop.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = mainloop.lst; sourceTree = ""; }; + B33FAFD3279BCE910013AAD8 /* uiMenu.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = uiMenu.o; sourceTree = ""; }; + B33FAFD4279BCE910013AAD8 /* poly.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = poly.lst; sourceTree = ""; }; + B33FAFD5279BCE910013AAD8 /* input.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = input.o; sourceTree = ""; }; + B33FAFD6279BCE910013AAD8 /* nesmmu.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesmmu.o; sourceTree = ""; }; + B33FAFD7279BCE910013AAD8 /* crt0.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = crt0.lst; sourceTree = ""; }; + B33FAFD8279BCE910013AAD8 /* font.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = font.lst; sourceTree = ""; }; + B33FAFD9279BCE910013AAD8 /* snspc.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspc.d; sourceTree = ""; }; + B33FAFDA279BCE910013AAD8 /* mainloop.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = mainloop.o; sourceTree = ""; }; + B33FAFDB279BCE910013AAD8 /* uiBrowser.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = uiBrowser.o; sourceTree = ""; }; + B33FAFDC279BCE910013AAD8 /* snesreg.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snesreg.o; sourceTree = ""; }; + B33FAFDD279BCE910013AAD8 /* emusys.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = emusys.lst; sourceTree = ""; }; + B33FAFDE279BCE910013AAD8 /* nesrom.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesrom.lst; sourceTree = ""; }; + B33FAFDF279BCE910013AAD8 /* inflate.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = inflate.d; sourceTree = ""; }; + B33FAFE0279BCE910013AAD8 /* snspctimer.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspctimer.o; sourceTree = ""; }; + B33FAFE1279BCE910013AAD8 /* snspctimer.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspctimer.lst; sourceTree = ""; }; + B33FAFE2279BCE910013AAD8 /* sndma.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sndma.o; sourceTree = ""; }; + B33FAFE3279BCE910013AAD8 /* nesstate.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesstate.o; sourceTree = ""; }; + B33FAFE4279BCE910013AAD8 /* inftrees.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = inftrees.o; sourceTree = ""; }; + B33FAFE5279BCE910013AAD8 /* version.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = version.o; sourceTree = ""; }; + B33FAFE6279BCE910013AAD8 /* snppublend_gs.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snppublend_gs.o; sourceTree = ""; }; + B33FAFE7279BCE910013AAD8 /* snspcdisasm.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspcdisasm.lst; sourceTree = ""; }; + B33FAFE8279BCE910013AAD8 /* texture.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = texture.lst; sourceTree = ""; }; + B33FAFE9279BCE910013AAD8 /* poly.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = poly.d; sourceTree = ""; }; + B33FAFEA279BCE910013AAD8 /* uncompr.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = uncompr.o; sourceTree = ""; }; + B33FAFEB279BCE910013AAD8 /* nesrom.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesrom.o; sourceTree = ""; }; + B33FAFEC279BCE910013AAD8 /* hw.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = hw.d; sourceTree = ""; }; + B33FAFED279BCE910013AAD8 /* cd.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = cd.o; sourceTree = ""; }; + B33FAFEE279BCE910013AAD8 /* SNESticle.elf */ = {isa = PBXFileReference; lastKnownFileType = file; path = SNESticle.elf; sourceTree = ""; }; + B33FAFEF279BCE910013AAD8 /* uiLog.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = uiLog.lst; sourceTree = ""; }; + B33FAFF0279BCE910013AAD8 /* snspcdisasm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspcdisasm.o; sourceTree = ""; }; + B33FAFF1279BCE910013AAD8 /* font_04b16b.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = font_04b16b.lst; sourceTree = ""; }; + B33FAFF2279BCE910013AAD8 /* pathext.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pathext.o; sourceTree = ""; }; + B33FAFF3279BCE910013AAD8 /* unzip.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = unzip.d; sourceTree = ""; }; + B33FAFF4279BCE910013AAD8 /* explode.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = explode.d; sourceTree = ""; }; + B33FAFF5279BCE910013AAD8 /* sndisasm.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = sndisasm.lst; sourceTree = ""; }; + B33FAFF6279BCE910013AAD8 /* array.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = array.d; sourceTree = ""; }; + B33FAFF7279BCE910013AAD8 /* snspcmix.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspcmix.lst; sourceTree = ""; }; + B33FAFF8279BCE910013AAD8 /* memspace.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = memspace.o; sourceTree = ""; }; + B33FAFF9279BCE910013AAD8 /* vram.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = vram.o; sourceTree = ""; }; + B33FAFFA279BCE910013AAD8 /* ps2dma.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ps2dma.lst; sourceTree = ""; }; + B33FAFFB279BCE910013AAD8 /* nesdisk.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesdisk.d; sourceTree = ""; }; + B33FAFFC279BCE910013AAD8 /* sn65816.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = sn65816.d; sourceTree = ""; }; + B33FAFFD279BCE910013AAD8 /* nespal.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nespal.d; sourceTree = ""; }; + B33FAFFE279BCE910013AAD8 /* bmpfile.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = bmpfile.lst; sourceTree = ""; }; + B33FAFFF279BCE910013AAD8 /* mcsave_ee.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = mcsave_ee.o; sourceTree = ""; }; + B33FB000279BCE910013AAD8 /* pathext.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = pathext.lst; sourceTree = ""; }; + B33FB001279BCE910013AAD8 /* gslist.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = gslist.o; sourceTree = ""; }; + B33FB002279BCE910013AAD8 /* zutil.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = zutil.lst; sourceTree = ""; }; + B33FB003279BCE910013AAD8 /* deflate.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = deflate.d; sourceTree = ""; }; + B33FB004279BCE910013AAD8 /* surface.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = surface.o; sourceTree = ""; }; + B33FB005279BCE910013AAD8 /* compress.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = compress.d; sourceTree = ""; }; + B33FB006279BCE910013AAD8 /* snppu.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snppu.d; sourceTree = ""; }; + B33FB007279BCE910013AAD8 /* sndisasm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sndisasm.o; sourceTree = ""; }; + B33FB008279BCE910013AAD8 /* infutil.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = infutil.d; sourceTree = ""; }; + B33FB009279BCE910013AAD8 /* emumovie.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = emumovie.d; sourceTree = ""; }; + B33FB00A279BCE910013AAD8 /* sn65816.sp */ = {isa = PBXFileReference; lastKnownFileType = text; path = sn65816.sp; sourceTree = ""; }; + B33FB00B279BCE910013AAD8 /* snio.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snio.lst; sourceTree = ""; }; + B33FB00C279BCE910013AAD8 /* inffast.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = inffast.lst; sourceTree = ""; }; + B33FB00D279BCE910013AAD8 /* gpprim.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = gpprim.lst; sourceTree = ""; }; + B33FB00E279BCE910013AAD8 /* libxmtap.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = libxmtap.lst; sourceTree = ""; }; + B33FB00F279BCE910013AAD8 /* memcard.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = memcard.d; sourceTree = ""; }; + B33FB010279BCE910013AAD8 /* cdvd_rpc.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = cdvd_rpc.o; sourceTree = ""; }; + B33FB011279BCE910013AAD8 /* emumovie.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = emumovie.lst; sourceTree = ""; }; + B33FB012279BCE910013AAD8 /* snspcrom.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspcrom.lst; sourceTree = ""; }; + B33FB013279BCE910013AAD8 /* exceptions.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = exceptions.lst; sourceTree = ""; }; + B33FB014279BCE910013AAD8 /* cd.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = cd.lst; sourceTree = ""; }; + B33FB015279BCE910013AAD8 /* snppucolor.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snppucolor.o; sourceTree = ""; }; + B33FB016279BCE910013AAD8 /* snppu.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snppu.lst; sourceTree = ""; }; + B33FB017279BCE910013AAD8 /* sjpcm_rpc.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sjpcm_rpc.o; sourceTree = ""; }; + B33FB018279BCE910013AAD8 /* libxpad.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = libxpad.d; sourceTree = ""; }; + B33FB019279BCE910013AAD8 /* bmpfile.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = bmpfile.o; sourceTree = ""; }; + B33FB01A279BCE910013AAD8 /* snppubg.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snppubg.d; sourceTree = ""; }; + B33FB01B279BCE910013AAD8 /* nescpu.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nescpu.d; sourceTree = ""; }; + B33FB01C279BCE910013AAD8 /* snppurender.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snppurender.lst; sourceTree = ""; }; + B33FB01D279BCE910013AAD8 /* SNESticle.map */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = SNESticle.map; sourceTree = ""; }; + B33FB01E279BCE910013AAD8 /* file.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = file.o; sourceTree = ""; }; + B33FB01F279BCE910013AAD8 /* infcodes.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = infcodes.o; sourceTree = ""; }; + B33FB020279BCE910013AAD8 /* libxmtap.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = libxmtap.d; sourceTree = ""; }; + B33FB021279BCE910013AAD8 /* inflate.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = inflate.lst; sourceTree = ""; }; + B33FB022279BCE910013AAD8 /* netplay_ee.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = netplay_ee.lst; sourceTree = ""; }; + B33FB023279BCE910013AAD8 /* snio.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snio.o; sourceTree = ""; }; + B33FB024279BCE910013AAD8 /* vram.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = vram.lst; sourceTree = ""; }; + B33FB025279BCE910013AAD8 /* deflate.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = deflate.lst; sourceTree = ""; }; + B33FB026279BCE910013AAD8 /* exceptions.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = exceptions.o; sourceTree = ""; }; + B33FB027279BCE910013AAD8 /* font_04b16b.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = font_04b16b.o; sourceTree = ""; }; + B33FB028279BCE910013AAD8 /* nesspumix.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesspumix.o; sourceTree = ""; }; + B33FB029279BCE910013AAD8 /* font.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = font.d; sourceTree = ""; }; + B33FB02A279BCE910013AAD8 /* texture.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = texture.d; sourceTree = ""; }; + B33FB02B279BCE910013AAD8 /* input.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = input.lst; sourceTree = ""; }; + B33FB02C279BCE910013AAD8 /* sncpu_c.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = sncpu_c.lst; sourceTree = ""; }; + B33FB02D279BCE910013AAD8 /* unreduce.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = unreduce.o; sourceTree = ""; }; + B33FB02E279BCE910013AAD8 /* dataio.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = dataio.o; sourceTree = ""; }; + B33FB02F279BCE910013AAD8 /* gs.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = gs.d; sourceTree = ""; }; + B33FB030279BCE910013AAD8 /* titleman.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = titleman.d; sourceTree = ""; }; + B33FB031279BCE910013AAD8 /* infblock.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = infblock.d; sourceTree = ""; }; + B33FB032279BCE910013AAD8 /* trees.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = trees.o; sourceTree = ""; }; + B33FB033279BCE910013AAD8 /* snstate.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snstate.d; sourceTree = ""; }; + B33FB034279BCE910013AAD8 /* nesspu.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesspu.d; sourceTree = ""; }; + B33FB035279BCE910013AAD8 /* memcard.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = memcard.lst; sourceTree = ""; }; + B33FB036279BCE910013AAD8 /* ndisasm.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = ndisasm.d; sourceTree = ""; }; + B33FB037279BCE910013AAD8 /* pixelformat.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = pixelformat.d; sourceTree = ""; }; + B33FB038279BCE910013AAD8 /* infutil.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = infutil.lst; sourceTree = ""; }; + B33FB039279BCE910013AAD8 /* nescpu.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nescpu.lst; sourceTree = ""; }; + B33FB03A279BCE910013AAD8 /* snrom.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snrom.o; sourceTree = ""; }; + B33FB03B279BCE910013AAD8 /* pixelformat.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = pixelformat.lst; sourceTree = ""; }; + B33FB03C279BCE910013AAD8 /* snppuobj.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snppuobj.o; sourceTree = ""; }; + B33FB03D279BCE910013AAD8 /* wavfile.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = wavfile.o; sourceTree = ""; }; + B33FB03E279BCE910013AAD8 /* inffast.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = inffast.o; sourceTree = ""; }; + B33FB03F279BCE910013AAD8 /* adler32.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = adler32.o; sourceTree = ""; }; + B33FB040279BCE910013AAD8 /* sndma.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = sndma.lst; sourceTree = ""; }; + B33FB041279BCE910013AAD8 /* uiMenu.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = uiMenu.lst; sourceTree = ""; }; + B33FB042279BCE910013AAD8 /* snmask128.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snmask128.o; sourceTree = ""; }; + B33FB043279BCE910013AAD8 /* snppurender8.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snppurender8.o; sourceTree = ""; }; + B33FB044279BCE910013AAD8 /* snspcio.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspcio.o; sourceTree = ""; }; + B33FB045279BCE910013AAD8 /* ncpu_c.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = ncpu_c.o; sourceTree = ""; }; + B33FB046279BCE910013AAD8 /* excepHandler.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = excepHandler.d; sourceTree = ""; }; + B33FB047279BCE910013AAD8 /* prof.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = prof.d; sourceTree = ""; }; + B33FB048279BCE910013AAD8 /* nesio.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesio.o; sourceTree = ""; }; + B33FB049279BCE910013AAD8 /* nesppu.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesppu.d; sourceTree = ""; }; + B33FB04A279BCE910013AAD8 /* inputdevice.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = inputdevice.d; sourceTree = ""; }; + B33FB04B279BCE910013AAD8 /* infcodes.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = infcodes.lst; sourceTree = ""; }; + B33FB04C279BCE910013AAD8 /* sn65816.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = sn65816.lst; sourceTree = ""; }; + B33FB04D279BCE910013AAD8 /* snspcbrr.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspcbrr.o; sourceTree = ""; }; + B33FB04E279BCE910013AAD8 /* gslist.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = gslist.lst; sourceTree = ""; }; + B33FB04F279BCE910013AAD8 /* snspcdsp.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspcdsp.d; sourceTree = ""; }; + B33FB050279BCE910013AAD8 /* emurom.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = emurom.o; sourceTree = ""; }; + B33FB051279BCE910013AAD8 /* emurom.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = emurom.lst; sourceTree = ""; }; + B33FB052279BCE910013AAD8 /* adler32.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = adler32.lst; sourceTree = ""; }; + B33FB053279BCE910013AAD8 /* gzio.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = gzio.o; sourceTree = ""; }; + B33FB054279BCE910013AAD8 /* crt0.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = crt0.d; sourceTree = ""; }; + B33FB055279BCE910013AAD8 /* gpfifo.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = gpfifo.d; sourceTree = ""; }; + B33FB056279BCE910013AAD8 /* trees.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = trees.lst; sourceTree = ""; }; + B33FB057279BCE910013AAD8 /* snes.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snes.d; sourceTree = ""; }; + B33FB058279BCE910013AAD8 /* crc32.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = crc32.d; sourceTree = ""; }; + B33FB059279BCE910013AAD8 /* netplay_ee.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = netplay_ee.d; sourceTree = ""; }; + B33FB05A279BCE910013AAD8 /* snspcmix.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspcmix.o; sourceTree = ""; }; + B33FB05B279BCE910013AAD8 /* unshrink.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = unshrink.d; sourceTree = ""; }; + B33FB05C279BCE910013AAD8 /* rendersurface.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = rendersurface.o; sourceTree = ""; }; + B33FB05D279BCE910013AAD8 /* ps2dma.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = ps2dma.o; sourceTree = ""; }; + B33FB05E279BCE910013AAD8 /* nesppurender.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesppurender.o; sourceTree = ""; }; + B33FB05F279BCE910013AAD8 /* snmemmap.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snmemmap.lst; sourceTree = ""; }; + B33FB060279BCE910013AAD8 /* n6502.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = n6502.d; sourceTree = ""; }; + B33FB061279BCE910013AAD8 /* snppurender.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snppurender.d; sourceTree = ""; }; + B33FB062279BCE910013AAD8 /* uiLog.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = uiLog.d; sourceTree = ""; }; + B33FB063279BCE910013AAD8 /* nes.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nes.o; sourceTree = ""; }; + B33FB064279BCE910013AAD8 /* proflog.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = proflog.o; sourceTree = ""; }; + B33FB065279BCE910013AAD8 /* snppucolor.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snppucolor.lst; sourceTree = ""; }; + B33FB066279BCE910013AAD8 /* snesreg.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snesreg.d; sourceTree = ""; }; + B33FB067279BCE910013AAD8 /* uiBrowser.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = uiBrowser.d; sourceTree = ""; }; + B33FB068279BCE910013AAD8 /* mainloop.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = mainloop.d; sourceTree = ""; }; + B33FB069279BCE910013AAD8 /* snspc.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspc.o; sourceTree = ""; }; + B33FB06A279BCE910013AAD8 /* surface.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = surface.lst; sourceTree = ""; }; + B33FB06B279BCE910013AAD8 /* gpfifo.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = gpfifo.lst; sourceTree = ""; }; + B33FB06C279BCE910013AAD8 /* snspcdsp.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspcdsp.lst; sourceTree = ""; }; + B33FB06D279BCE910013AAD8 /* snspcbrr.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspcbrr.lst; sourceTree = ""; }; + B33FB06E279BCE910013AAD8 /* memcard_icon.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = memcard_icon.inc; sourceTree = ""; }; + B33FB06F279BCE910013AAD8 /* explode.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = explode.lst; sourceTree = ""; }; + B33FB070279BCE910013AAD8 /* uiBrowser.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = uiBrowser.lst; sourceTree = ""; }; + B33FB071279BCE910013AAD8 /* sncpu_c.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = sncpu_c.d; sourceTree = ""; }; + B33FB072279BCE910013AAD8 /* titleman.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = titleman.lst; sourceTree = ""; }; + B33FB073279BCE910013AAD8 /* dataio.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = dataio.lst; sourceTree = ""; }; + B33FB074279BCE910013AAD8 /* nesmmu.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesmmu.d; sourceTree = ""; }; + B33FB075279BCE910013AAD8 /* input.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = input.d; sourceTree = ""; }; + B33FB076279BCE910013AAD8 /* sncpu.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = sncpu.lst; sourceTree = ""; }; + B33FB077279BCE910013AAD8 /* uiMenu.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = uiMenu.d; sourceTree = ""; }; + B33FB078279BCE910013AAD8 /* n6502.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = n6502.lst; sourceTree = ""; }; + B33FB079279BCE910013AAD8 /* snes.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snes.lst; sourceTree = ""; }; + B33FB07A279BCE910013AAD8 /* console.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = console.d; sourceTree = ""; }; + B33FB07B279BCE910013AAD8 /* snspcrom.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspcrom.d; sourceTree = ""; }; + B33FB07C279BCE910013AAD8 /* snspc_c.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspc_c.o; sourceTree = ""; }; + B33FB07D279BCE910013AAD8 /* profctr.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = profctr.d; sourceTree = ""; }; + B33FB07E279BCE910013AAD8 /* cdvd_rpc.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = cdvd_rpc.lst; sourceTree = ""; }; + B33FB07F279BCE910013AAD8 /* snmemmap.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snmemmap.d; sourceTree = ""; }; + B33FB080279BCE910013AAD8 /* zutil.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = zutil.d; sourceTree = ""; }; + B33FB081279BCE910013AAD8 /* uiNetwork.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = uiNetwork.d; sourceTree = ""; }; + B33FB082279BCE910013AAD8 /* main.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = main.d; sourceTree = ""; }; + B33FB083279BCE910013AAD8 /* sncpu.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sncpu.o; sourceTree = ""; }; + B33FB084279BCE910013AAD8 /* sjpcmbuffer.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sjpcmbuffer.o; sourceTree = ""; }; + B33FB085279BCE910013AAD8 /* mixbuffer.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = mixbuffer.d; sourceTree = ""; }; + B33FB086279BCE910013AAD8 /* emusys.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = emusys.o; sourceTree = ""; }; + B33FB087279BCE910013AAD8 /* gpprim.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = gpprim.d; sourceTree = ""; }; + B33FB088279BCE910013AAD8 /* uiNetwork.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = uiNetwork.lst; sourceTree = ""; }; + B33FB089279BCE910013AAD8 /* compress.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = compress.o; sourceTree = ""; }; + B33FB08A279BCE910013AAD8 /* surface.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = surface.d; sourceTree = ""; }; + B33FB08B279BCE910013AAD8 /* deflate.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = deflate.o; sourceTree = ""; }; + B33FB08C279BCE910013AAD8 /* excepHandler.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = excepHandler.lst; sourceTree = ""; }; + B33FB08D279BCE910013AAD8 /* snppubg.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snppubg.lst; sourceTree = ""; }; + B33FB08E279BCE910013AAD8 /* sndisasm.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = sndisasm.d; sourceTree = ""; }; + B33FB08F279BCE910013AAD8 /* unshrink.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = unshrink.lst; sourceTree = ""; }; + B33FB090279BCE910013AAD8 /* snppu.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snppu.o; sourceTree = ""; }; + B33FB091279BCE910013AAD8 /* mcsave_ee.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = mcsave_ee.d; sourceTree = ""; }; + B33FB092279BCE910013AAD8 /* nespal.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nespal.o; sourceTree = ""; }; + B33FB093279BCE920013AAD8 /* sn65816.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sn65816.o; sourceTree = ""; }; + B33FB094279BCE920013AAD8 /* nesdisk.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesdisk.o; sourceTree = ""; }; + B33FB095279BCE920013AAD8 /* exceptions.sp */ = {isa = PBXFileReference; lastKnownFileType = text; path = exceptions.sp; sourceTree = ""; }; + B33FB096279BCE920013AAD8 /* mcsave_ee.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = mcsave_ee.lst; sourceTree = ""; }; + B33FB097279BCE920013AAD8 /* vram.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = vram.d; sourceTree = ""; }; + B33FB098279BCE920013AAD8 /* proflog.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = proflog.lst; sourceTree = ""; }; + B33FB099279BCE920013AAD8 /* memspace.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = memspace.d; sourceTree = ""; }; + B33FB09A279BCE920013AAD8 /* array.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = array.o; sourceTree = ""; }; + B33FB09B279BCE920013AAD8 /* nesppu.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesppu.lst; sourceTree = ""; }; + B33FB09C279BCE920013AAD8 /* gslist.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = gslist.d; sourceTree = ""; }; + B33FB09D279BCE920013AAD8 /* main.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = main.lst; sourceTree = ""; }; + B33FB09E279BCE920013AAD8 /* rendersurface.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = rendersurface.lst; sourceTree = ""; }; + B33FB09F279BCE920013AAD8 /* mixbuffer.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = mixbuffer.lst; sourceTree = ""; }; + B33FB0A0279BCE920013AAD8 /* snspcdisasm.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspcdisasm.d; sourceTree = ""; }; + B33FB0A1279BCE920013AAD8 /* sjpcm_rpc.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = sjpcm_rpc.lst; sourceTree = ""; }; + B33FB0A2279BCE920013AAD8 /* compress.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = compress.lst; sourceTree = ""; }; + B33FB0A3279BCE920013AAD8 /* nesstate.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesstate.lst; sourceTree = ""; }; + B33FB0A4279BCE920013AAD8 /* snppublend_gs.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snppublend_gs.lst; sourceTree = ""; }; + B33FB0A5279BCE920013AAD8 /* explode.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = explode.o; sourceTree = ""; }; + B33FB0A6279BCE920013AAD8 /* unzip.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = unzip.o; sourceTree = ""; }; + B33FB0A7279BCE920013AAD8 /* pathext.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = pathext.d; sourceTree = ""; }; + B33FB0A8279BCE920013AAD8 /* snppublend_gs.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snppublend_gs.d; sourceTree = ""; }; + B33FB0A9279BCE920013AAD8 /* version.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = version.d; sourceTree = ""; }; + B33FB0AA279BCE920013AAD8 /* inftrees.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = inftrees.d; sourceTree = ""; }; + B33FB0AB279BCE920013AAD8 /* nesstate.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesstate.d; sourceTree = ""; }; + B33FB0AC279BCE920013AAD8 /* sndma.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = sndma.d; sourceTree = ""; }; + B33FB0AD279BCE920013AAD8 /* snspctimer.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspctimer.d; sourceTree = ""; }; + B33FB0AE279BCE920013AAD8 /* inflate.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = inflate.o; sourceTree = ""; }; + B33FB0AF279BCE920013AAD8 /* nesrom.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesrom.d; sourceTree = ""; }; + B33FB0B0279BCE920013AAD8 /* hw.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = hw.o; sourceTree = ""; }; + B33FB0B1279BCE920013AAD8 /* cd.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = cd.d; sourceTree = ""; }; + B33FB0B2279BCE920013AAD8 /* inftrees.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = inftrees.lst; sourceTree = ""; }; + B33FB0B3279BCE920013AAD8 /* uncompr.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = uncompr.d; sourceTree = ""; }; + B33FB0B4279BCE920013AAD8 /* poly.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = poly.o; sourceTree = ""; }; + B33FB0B5279BCE920013AAD8 /* texture.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = texture.o; sourceTree = ""; }; + B33FB0B6279BCE920013AAD8 /* font.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = font.o; sourceTree = ""; }; + B33FB0B7279BCE920013AAD8 /* font_04b16b.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = font_04b16b.d; sourceTree = ""; }; + B33FB0B8279BCE920013AAD8 /* nesspumix.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesspumix.d; sourceTree = ""; }; + B33FB0B9279BCE920013AAD8 /* snstate.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snstate.o; sourceTree = ""; }; + B33FB0BA279BCE920013AAD8 /* trees.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = trees.d; sourceTree = ""; }; + B33FB0BB279BCE920013AAD8 /* ncpu_c.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ncpu_c.lst; sourceTree = ""; }; + B33FB0BC279BCE920013AAD8 /* infblock.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = infblock.o; sourceTree = ""; }; + B33FB0BD279BCE920013AAD8 /* gs.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = gs.o; sourceTree = ""; }; + B33FB0BE279BCE920013AAD8 /* titleman.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = titleman.o; sourceTree = ""; }; + B33FB0BF279BCE920013AAD8 /* nesspumix.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesspumix.lst; sourceTree = ""; }; + B33FB0C0279BCE920013AAD8 /* dataio.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = dataio.d; sourceTree = ""; }; + B33FB0C1279BCE920013AAD8 /* unreduce.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = unreduce.d; sourceTree = ""; }; + B33FB0C2279BCE920013AAD8 /* snstate.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snstate.lst; sourceTree = ""; }; + B33FB0C3279BCE920013AAD8 /* libxmtap.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = libxmtap.o; sourceTree = ""; }; + B33FB0C4279BCE920013AAD8 /* file.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = file.d; sourceTree = ""; }; + B33FB0C5279BCE920013AAD8 /* infcodes.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = infcodes.d; sourceTree = ""; }; + B33FB0C6279BCE920013AAD8 /* libxpad.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = libxpad.lst; sourceTree = ""; }; + B33FB0C7279BCE920013AAD8 /* array.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = array.lst; sourceTree = ""; }; + B33FB0C8279BCE920013AAD8 /* exceptions.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = exceptions.d; sourceTree = ""; }; + B33FB0C9279BCE920013AAD8 /* memspace.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = memspace.lst; sourceTree = ""; }; + B33FB0CA279BCE920013AAD8 /* snio.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snio.d; sourceTree = ""; }; + B33FB0CB279BCE920013AAD8 /* sjpcm_rpc.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = sjpcm_rpc.d; sourceTree = ""; }; + B33FB0CC279BCE920013AAD8 /* nespal.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nespal.lst; sourceTree = ""; }; + B33FB0CD279BCE920013AAD8 /* profctr.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = profctr.lst; sourceTree = ""; }; + B33FB0CE279BCE920013AAD8 /* inputdevice.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = inputdevice.lst; sourceTree = ""; }; + B33FB0CF279BCE920013AAD8 /* file.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = file.lst; sourceTree = ""; }; + B33FB0D0279BCE920013AAD8 /* infblock.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = infblock.lst; sourceTree = ""; }; + B33FB0D1279BCE920013AAD8 /* snppucolor.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snppucolor.d; sourceTree = ""; }; + B33FB0D2279BCE920013AAD8 /* nescpu.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nescpu.o; sourceTree = ""; }; + B33FB0D3279BCE920013AAD8 /* snppurender8.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snppurender8.lst; sourceTree = ""; }; + B33FB0D4279BCE920013AAD8 /* snppubg.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snppubg.o; sourceTree = ""; }; + B33FB0D5279BCE920013AAD8 /* gs.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = gs.lst; sourceTree = ""; }; + B33FB0D6279BCE920013AAD8 /* bmpfile.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = bmpfile.d; sourceTree = ""; }; + B33FB0D7279BCE920013AAD8 /* libxpad.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = libxpad.o; sourceTree = ""; }; + B33FB0D8279BCE920013AAD8 /* emumovie.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = emumovie.o; sourceTree = ""; }; + B33FB0D9279BCE920013AAD8 /* infutil.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = infutil.o; sourceTree = ""; }; + B33FB0DA279BCE920013AAD8 /* uncompr.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = uncompr.lst; sourceTree = ""; }; + B33FB0DB279BCE920013AAD8 /* cdvd_rpc.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = cdvd_rpc.d; sourceTree = ""; }; + B33FB0DC279BCE920013AAD8 /* memcard.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = memcard.o; sourceTree = ""; }; + B33FB0DD279BCE920013AAD8 /* snspcmix.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspcmix.d; sourceTree = ""; }; + B33FB0DE279BCE920013AAD8 /* unshrink.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = unshrink.o; sourceTree = ""; }; + B33FB0DF279BCE920013AAD8 /* netplay_ee.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = netplay_ee.o; sourceTree = ""; }; + B33FB0E0279BCE920013AAD8 /* wavfile.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = wavfile.lst; sourceTree = ""; }; + B33FB0E1279BCE920013AAD8 /* crc32.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = crc32.o; sourceTree = ""; }; + B33FB0E2279BCE920013AAD8 /* snes.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snes.o; sourceTree = ""; }; + B33FB0E3279BCE920013AAD8 /* gpfifo.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = gpfifo.o; sourceTree = ""; }; + B33FB0E4279BCE920013AAD8 /* proflog.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = proflog.d; sourceTree = ""; }; + B33FB0E5279BCE920013AAD8 /* nes.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nes.d; sourceTree = ""; }; + B33FB0E6279BCE920013AAD8 /* snppurender.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snppurender.o; sourceTree = ""; }; + B33FB0E7279BCE920013AAD8 /* n6502.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = n6502.o; sourceTree = ""; }; + B33FB0E8279BCE920013AAD8 /* uiLog.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = uiLog.o; sourceTree = ""; }; + B33FB0E9279BCE920013AAD8 /* nesppurender.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesppurender.d; sourceTree = ""; }; + B33FB0EA279BCE920013AAD8 /* ps2dma.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = ps2dma.d; sourceTree = ""; }; + B33FB0EB279BCE920013AAD8 /* rendersurface.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = rendersurface.d; sourceTree = ""; }; + B33FB0EC279BCE920013AAD8 /* nesspu.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesspu.lst; sourceTree = ""; }; + B33FB0ED279BCE920013AAD8 /* snspcbrr.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspcbrr.d; sourceTree = ""; }; + B33FB0EE279BCE920013AAD8 /* inputdevice.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = inputdevice.o; sourceTree = ""; }; + B33FB0EF279BCE920013AAD8 /* nesppu.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesppu.o; sourceTree = ""; }; + B33FB0F0279BCE920013AAD8 /* snspcio.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snspcio.lst; sourceTree = ""; }; + B33FB0F1279BCE920013AAD8 /* nesppurender.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = nesppurender.lst; sourceTree = ""; }; + B33FB0F2279BCE920013AAD8 /* nesio.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = nesio.d; sourceTree = ""; }; + B33FB0F3279BCE920013AAD8 /* crt0.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = crt0.o; sourceTree = ""; }; + B33FB0F4279BCE920013AAD8 /* gzio.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = gzio.d; sourceTree = ""; }; + B33FB0F5279BCE920013AAD8 /* snspcdsp.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = snspcdsp.o; sourceTree = ""; }; + B33FB0F6279BCE920013AAD8 /* emurom.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = emurom.d; sourceTree = ""; }; + B33FB0F7279BCE920013AAD8 /* snppuobj.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snppuobj.lst; sourceTree = ""; }; + B33FB0F8279BCE920013AAD8 /* adler32.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = adler32.d; sourceTree = ""; }; + B33FB0F9279BCE920013AAD8 /* inffast.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = inffast.d; sourceTree = ""; }; + B33FB0FA279BCE920013AAD8 /* snrom.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snrom.d; sourceTree = ""; }; + B33FB0FB279BCE920013AAD8 /* wavfile.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = wavfile.d; sourceTree = ""; }; + B33FB0FC279BCE920013AAD8 /* snppuobj.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snppuobj.d; sourceTree = ""; }; + B33FB0FD279BCE920013AAD8 /* ncpu_c.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = ncpu_c.d; sourceTree = ""; }; + B33FB0FE279BCE920013AAD8 /* excepHandler.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = excepHandler.o; sourceTree = ""; }; + B33FB0FF279BCE920013AAD8 /* prof.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = prof.o; sourceTree = ""; }; + B33FB100279BCE920013AAD8 /* snspcio.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snspcio.d; sourceTree = ""; }; + B33FB101279BCE920013AAD8 /* unreduce.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = unreduce.lst; sourceTree = ""; }; + B33FB102279BCE920013AAD8 /* snppurender8.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snppurender8.d; sourceTree = ""; }; + B33FB103279BCE920013AAD8 /* snmask128.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = snmask128.d; sourceTree = ""; }; + B33FB104279BCE920013AAD8 /* sjpcmbuffer.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = sjpcmbuffer.lst; sourceTree = ""; }; + B33FB105279BCE920013AAD8 /* pixelformat.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pixelformat.o; sourceTree = ""; }; + B33FB106279BCE920013AAD8 /* ndisasm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = ndisasm.o; sourceTree = ""; }; + B33FB107279BCE920013AAD8 /* snmask128.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snmask128.lst; sourceTree = ""; }; + B33FB108279BCE920013AAD8 /* snrom.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = snrom.lst; sourceTree = ""; }; + B33FB109279BCE920013AAD8 /* nesspu.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = nesspu.o; sourceTree = ""; }; + B33FB10A279BCE920013AAD8 /* ndisasm.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ndisasm.lst; sourceTree = ""; }; + B33FB10B279BCE920013AAD8 /* gzio.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = gzio.lst; sourceTree = ""; }; + B33FB10C279BCE920013AAD8 /* linkfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = linkfile; sourceTree = ""; }; + B33FB10D279BCE920013AAD8 /* PS2IP.IRX */ = {isa = PBXFileReference; lastKnownFileType = file; path = PS2IP.IRX; sourceTree = ""; }; + B33FB10E279BCE920013AAD8 /* TITLE.DB */ = {isa = PBXFileReference; lastKnownFileType = text; path = TITLE.DB; sourceTree = ""; }; + B33FB10F279BCE920013AAD8 /* PS2IPS.IRX */ = {isa = PBXFileReference; lastKnownFileType = file; path = PS2IPS.IRX; sourceTree = ""; }; + B33FB110279BCE920013AAD8 /* MCSAVE.IRX */ = {isa = PBXFileReference; lastKnownFileType = file; path = MCSAVE.IRX; sourceTree = ""; }; + B33FB111279BCE920013AAD8 /* PS2FS.IRX */ = {isa = PBXFileReference; lastKnownFileType = file; path = PS2FS.IRX; sourceTree = ""; }; + B33FB112279BCE920013AAD8 /* PS2SMAP.IRX */ = {isa = PBXFileReference; lastKnownFileType = file; path = PS2SMAP.IRX; sourceTree = ""; }; + B33FB113279BCE920013AAD8 /* CDVD.IRX */ = {isa = PBXFileReference; lastKnownFileType = file; path = CDVD.IRX; sourceTree = ""; }; + B33FB114279BCE920013AAD8 /* SJPCM2.IRX */ = {isa = PBXFileReference; lastKnownFileType = file; path = SJPCM2.IRX; sourceTree = ""; }; + B33FB115279BCE920013AAD8 /* crt0.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = crt0.s; sourceTree = ""; }; + B33FB116279BCE920013AAD8 /* ICON.SYS */ = {isa = PBXFileReference; lastKnownFileType = file; path = ICON.SYS; sourceTree = ""; }; + B33FB118279BCE920013AAD8 /* win32.vcproj.vspscc */ = {isa = PBXFileReference; lastKnownFileType = text; path = win32.vcproj.vspscc; sourceTree = ""; }; + B33FB119279BCE920013AAD8 /* win32.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = win32.vcproj; sourceTree = ""; }; + B33FB11B279BCE920013AAD8 /* snesmemview.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snesmemview.obj; sourceTree = ""; }; + B33FB11C279BCE920013AAD8 /* textview.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = textview.obj; sourceTree = ""; }; + B33FB11D279BCE920013AAD8 /* snesticle.exe */ = {isa = PBXFileReference; lastKnownFileType = file; path = snesticle.exe; sourceTree = ""; }; + B33FB11E279BCE920013AAD8 /* snrom.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snrom.obj; sourceTree = ""; }; + B33FB11F279BCE920013AAD8 /* Spc700.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = Spc700.obj; sourceTree = ""; }; + B33FB120279BCE920013AAD8 /* snppuobj.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snppuobj.obj; sourceTree = ""; }; + B33FB121279BCE920013AAD8 /* snspcio.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snspcio.obj; sourceTree = ""; }; + B33FB122279BCE920013AAD8 /* snmask.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snmask.obj; sourceTree = ""; }; + B33FB123279BCE920013AAD8 /* snppurender8.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snppurender8.obj; sourceTree = ""; }; + B33FB124279BCE920013AAD8 /* win32.pdb */ = {isa = PBXFileReference; lastKnownFileType = file; path = win32.pdb; sourceTree = ""; }; + B33FB125279BCE920013AAD8 /* snppublend_c.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snppublend_c.obj; sourceTree = ""; }; + B33FB126279BCE920013AAD8 /* snesticle.ilk */ = {isa = PBXFileReference; lastKnownFileType = file; path = snesticle.ilk; sourceTree = ""; }; + B33FB127279BCE920013AAD8 /* snstate.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snstate.obj; sourceTree = ""; }; + B33FB128279BCE920013AAD8 /* memview.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = memview.obj; sourceTree = ""; }; + B33FB129279BCE920013AAD8 /* snppubg.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snppubg.obj; sourceTree = ""; }; + B33FB12A279BCE920013AAD8 /* sneswin.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = sneswin.obj; sourceTree = ""; }; + B33FB12B279BCE920013AAD8 /* gepres.res */ = {isa = PBXFileReference; lastKnownFileType = file; path = gepres.res; sourceTree = ""; }; + B33FB12C279BCE920013AAD8 /* Cpuops.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = Cpuops.obj; sourceTree = ""; }; + B33FB12D279BCE920013AAD8 /* snspcbrr.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snspcbrr.obj; sourceTree = ""; }; + B33FB12E279BCE920013AAD8 /* snspcdsp.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snspcdsp.obj; sourceTree = ""; }; + B33FB12F279BCE920013AAD8 /* vc70.pdb */ = {isa = PBXFileReference; lastKnownFileType = file; path = vc70.pdb; sourceTree = ""; }; + B33FB130279BCE920013AAD8 /* snes.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snes.obj; sourceTree = ""; }; + B33FB131279BCE920013AAD8 /* sncpu.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = sncpu.obj; sourceTree = ""; }; + B33FB132279BCE920013AAD8 /* sndsp1.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = sndsp1.obj; sourceTree = ""; }; + B33FB133279BCE920013AAD8 /* snppucolor.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snppucolor.obj; sourceTree = ""; }; + B33FB134279BCE920013AAD8 /* snmemmap.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snmemmap.obj; sourceTree = ""; }; + B33FB135279BCE920013AAD8 /* sndma.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = sndma.obj; sourceTree = ""; }; + B33FB136279BCE920013AAD8 /* vc70.idb */ = {isa = PBXFileReference; lastKnownFileType = file; path = vc70.idb; sourceTree = ""; }; + B33FB137279BCE920013AAD8 /* BuildLog.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = BuildLog.htm; sourceTree = ""; }; + B33FB138279BCE920013AAD8 /* sncpu_c.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = sncpu_c.obj; sourceTree = ""; }; + B33FB139279BCE920013AAD8 /* input.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = input.obj; sourceTree = ""; }; + B33FB13A279BCE920013AAD8 /* snspcrom.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snspcrom.obj; sourceTree = ""; }; + B33FB13B279BCE920013AAD8 /* snio.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snio.obj; sourceTree = ""; }; + B33FB13C279BCE920013AAD8 /* snppurender.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snppurender.obj; sourceTree = ""; }; + B33FB13D279BCE920013AAD8 /* snppu.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snppu.obj; sourceTree = ""; }; + B33FB13E279BCE920013AAD8 /* snspcmix.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snspcmix.obj; sourceTree = ""; }; + B33FB13F279BCE920013AAD8 /* sndebug.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = sndebug.obj; sourceTree = ""; }; + B33FB140279BCE920013AAD8 /* snspcdisasm.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snspcdisasm.obj; sourceTree = ""; }; + B33FB141279BCE920013AAD8 /* snspctimer.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snspctimer.obj; sourceTree = ""; }; + B33FB142279BCE920013AAD8 /* sndisasm.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = sndisasm.obj; sourceTree = ""; }; + B33FB143279BCE920013AAD8 /* mainloop.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = mainloop.obj; sourceTree = ""; }; + B33FB144279BCE920013AAD8 /* snesreg.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snesreg.obj; sourceTree = ""; }; + B33FB145279BCE920013AAD8 /* snspc.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snspc.obj; sourceTree = ""; }; + B33FB146279BCE920013AAD8 /* snspc_c.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snspc_c.obj; sourceTree = ""; }; + B33FB147279BCE920013AAD8 /* SNESticle.vssscc */ = {isa = PBXFileReference; lastKnownFileType = text; path = SNESticle.vssscc; sourceTree = ""; }; + B33FB14D279BCE920013AAD8 /* netplay_ee.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netplay_ee.c; sourceTree = ""; }; + B33FB14E279BCE920013AAD8 /* netplay_ee.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netplay_ee.h; sourceTree = ""; }; + B33FB150279BCE920013AAD8 /* netplay_rpc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netplay_rpc.h; sourceTree = ""; }; + B33FB152279BCE920013AAD8 /* netprint.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netprint.c; sourceTree = ""; }; + B33FB153279BCE920013AAD8 /* netsys.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netsys.c; sourceTree = ""; }; + B33FB154279BCE920013AAD8 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; + B33FB155279BCE920013AAD8 /* netprint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netprint.h; sourceTree = ""; }; + B33FB156279BCE920013AAD8 /* llnetsocket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = llnetsocket.h; sourceTree = ""; }; + B33FB157279BCE920013AAD8 /* netsys.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netsys.h; sourceTree = ""; }; + B33FB158279BCE920013AAD8 /* netplay_iop.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netplay_iop.c; sourceTree = ""; }; + B33FB15A279BCE920013AAD8 /* netsocket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netsocket.h; sourceTree = ""; }; + B33FB15B279BCE920013AAD8 /* netserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netserver.h; sourceTree = ""; }; + B33FB15C279BCE920013AAD8 /* netrelay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netrelay.h; sourceTree = ""; }; + B33FB15D279BCE920013AAD8 /* netqueue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netqueue.c; sourceTree = ""; }; + B33FB15E279BCE920013AAD8 /* netclient.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netclient.c; sourceTree = ""; }; + B33FB15F279BCE920013AAD8 /* netpacket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netpacket.h; sourceTree = ""; }; + B33FB160279BCE920013AAD8 /* netserver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netserver.c; sourceTree = ""; }; + B33FB161279BCE920013AAD8 /* netsocket.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netsocket.c; sourceTree = ""; }; + B33FB162279BCE920013AAD8 /* netplay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netplay.h; sourceTree = ""; }; + B33FB163279BCE920013AAD8 /* netclient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netclient.h; sourceTree = ""; }; + B33FB164279BCE920013AAD8 /* netrelay.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netrelay.c; sourceTree = ""; }; + B33FB165279BCE920013AAD8 /* netqueue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netqueue.h; sourceTree = ""; }; + B33FB166279BCE920013AAD8 /* netpacket.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netpacket.c; sourceTree = ""; }; + B33FB168279BCE920013AAD8 /* netsys.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netsys.c; sourceTree = ""; }; + B33FB169279BCE920013AAD8 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; + B33FB16A279BCE920013AAD8 /* netplaymain.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = netplaymain.cpp; sourceTree = ""; }; + B33FB16B279BCE920013AAD8 /* netprint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netprint.h; sourceTree = ""; }; + B33FB16C279BCE920013AAD8 /* llnetsocket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = llnetsocket.h; sourceTree = ""; }; + B33FB16D279BCE920013AAD8 /* netsys.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netsys.h; sourceTree = ""; }; + B33FB170279BCE920013AAD8 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33FB172279BCE920013AAD8 /* netplay.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = netplay.vcproj; sourceTree = ""; }; + B33FB173279BCE920013AAD8 /* netplay.vsscc */ = {isa = PBXFileReference; lastKnownFileType = text; path = netplay.vsscc; sourceTree = ""; }; + B33FB174279BCE920013AAD8 /* netplay.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = netplay.sln; sourceTree = ""; }; + B33FB175279BCE920013AAD8 /* ReadMe.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = ReadMe.txt; sourceTree = ""; }; + B33FB178279BCE920013AAD8 /* sjpcm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sjpcm.h; sourceTree = ""; }; + B33FB179279BCE920013AAD8 /* sjpcm_rpc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sjpcm_rpc.c; sourceTree = ""; }; + B33FB17A279BCE920013AAD8 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B33FB17B279BCE920013AAD8 /* license.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = license.txt; sourceTree = ""; }; + B33FB17D279BCE920013AAD8 /* sjpcm_irx.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sjpcm_irx.o; sourceTree = ""; }; + B33FB17E279BCE920013AAD8 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33FB17F279BCE920013AAD8 /* sjpcm_new.irx */ = {isa = PBXFileReference; lastKnownFileType = file; path = sjpcm_new.irx; sourceTree = ""; }; + B33FB180279BCE920013AAD8 /* a.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = a.out; sourceTree = ""; }; + B33FB181279BCE920013AAD8 /* sjpcm_irx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sjpcm_irx.c; sourceTree = ""; }; + B33FB182279BCE920013AAD8 /* hw.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = hw.s; sourceTree = ""; }; + B33FB183279BCE920013AAD8 /* hw.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = hw.o; sourceTree = ""; }; + B33FB185279BCE920013AAD8 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33FB187279BCE920013AAD8 /* main.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = main.o; sourceTree = ""; }; + B33FB188279BCE920013AAD8 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33FB189279BCE920013AAD8 /* example.elf */ = {isa = PBXFileReference; lastKnownFileType = file; path = example.elf; sourceTree = ""; }; + B33FB18A279BCE920013AAD8 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B33FB18C279BCE920013AAD8 /* cdvd_rpc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdvd_rpc.h; sourceTree = ""; }; + B33FB18D279BCE920013AAD8 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33FB18E279BCE920013AAD8 /* cdvd_rpc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdvd_rpc.c; sourceTree = ""; }; + B33FB190279BCE920013AAD8 /* libcdvd_ref.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = libcdvd_ref.pdf; sourceTree = ""; }; + B33FB192279BCE920013AAD8 /* cdvd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdvd.h; sourceTree = ""; }; + B33FB194279BCE920013AAD8 /* libcdvd.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libcdvd.a; sourceTree = ""; }; + B33FB195279BCE920013AAD8 /* cdvd.irx */ = {isa = PBXFileReference; lastKnownFileType = file; path = cdvd.irx; sourceTree = ""; }; + B33FB196279BCE920013AAD8 /* license.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = license.txt; sourceTree = ""; }; + B33FB198279BCE920013AAD8 /* cdvd_iop.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdvd_iop.c; sourceTree = ""; }; + B33FB199279BCE920013AAD8 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33FB19A279BCE920013AAD8 /* cdvd_iop.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = cdvd_iop.o; sourceTree = ""; }; + B33FB19B279BCE920013AAD8 /* cdvd_iop.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdvd_iop.h; sourceTree = ""; }; + B33FB19C279BCE920013AAD8 /* iop_cdvdman.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = iop_cdvdman.s; sourceTree = ""; }; + B33FB19D279BCE920013AAD8 /* iop_cdvdman.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = iop_cdvdman.o; sourceTree = ""; }; + B33FB1A0279BCE920013AAD8 /* mcsave_ee.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mcsave_ee.h; sourceTree = ""; }; + B33FB1A1279BCE920013AAD8 /* mcsave_ee.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mcsave_ee.c; sourceTree = ""; }; + B33FB1A3279BCE920013AAD8 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33FB1A4279BCE920013AAD8 /* mcsave_irx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mcsave_irx.c; sourceTree = ""; }; + B33FB1A5279BCE920013AAD8 /* mcsave.irx */ = {isa = PBXFileReference; lastKnownFileType = file; path = mcsave.irx; sourceTree = ""; }; + B33FB1A6279BCE920013AAD8 /* mcsave_irx.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = mcsave_irx.o; sourceTree = ""; }; + B33FB1A9279BCE920013AAD8 /* nerocd.nri */ = {isa = PBXFileReference; lastKnownFileType = file; path = nerocd.nri; sourceTree = ""; }; + B33FB1AA279BCE920013AAD8 /* makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = makefile; sourceTree = ""; }; + B33FB1AB279BCE920013AAD8 /* patchiso */ = {isa = PBXFileReference; lastKnownFileType = text; path = patchiso; sourceTree = ""; }; + B33FB1AC279BCE920013AAD8 /* cdrwin_ps2dvd.fbl */ = {isa = PBXFileReference; lastKnownFileType = file; path = cdrwin_ps2dvd.fbl; sourceTree = ""; }; + B33FB1AD279BCE920013AAD8 /* cdrecord.exe */ = {isa = PBXFileReference; lastKnownFileType = file; path = cdrecord.exe; sourceTree = ""; }; + B33FB1AE279BCE920013AAD8 /* cdrwin_ps2cd.fbl */ = {isa = PBXFileReference; lastKnownFileType = file; path = cdrwin_ps2cd.fbl; sourceTree = ""; }; + B33FB1AF279BCE920013AAD8 /* license.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = license.dat; sourceTree = ""; }; + B33FB1B1279BCE920013AAD8 /* SRAMSAVE.IRX */ = {isa = PBXFileReference; lastKnownFileType = file; path = SRAMSAVE.IRX; sourceTree = ""; }; + B33FB1B2279BCE920013AAD8 /* DUMMY.DAT */ = {isa = PBXFileReference; lastKnownFileType = file; path = DUMMY.DAT; sourceTree = ""; }; + B33FB1B3279BCE920013AAD8 /* SYSTEM.CNF */ = {isa = PBXFileReference; lastKnownFileType = text; path = SYSTEM.CNF; sourceTree = ""; }; + B33FB1B4279BCE920013AAD8 /* SLPS_999.99 */ = {isa = PBXFileReference; lastKnownFileType = file; path = SLPS_999.99; sourceTree = ""; }; + B33FB1B5279BCE920013AAD8 /* CDVD.IRX */ = {isa = PBXFileReference; lastKnownFileType = file; path = CDVD.IRX; sourceTree = ""; }; + B33FB1B6279BCE920013AAD8 /* SJPCM2.IRX */ = {isa = PBXFileReference; lastKnownFileType = file; path = SJPCM2.IRX; sourceTree = ""; }; + B33FB1B8279BCE920013AAD8 /* 04b16b.tga */ = {isa = PBXFileReference; lastKnownFileType = file; path = 04b16b.tga; sourceTree = ""; }; + B33FB1B9279BCE920013AAD8 /* 04b16b.fnt */ = {isa = PBXFileReference; lastKnownFileType = file; path = 04b16b.fnt; sourceTree = ""; }; + B33FB1BA279BCE920013AAD8 /* 04b16b.raw */ = {isa = PBXFileReference; lastKnownFileType = file; path = 04b16b.raw; sourceTree = ""; }; + B33FB1BB279BCE920013AAD8 /* 04b16b.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = 04b16b.bmp; sourceTree = ""; }; + B33FB1BC279BCE920013AAD8 /* font_04b16b.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = font_04b16b.c; sourceTree = ""; }; + B33FB1BD279BCE920013AAD8 /* 04b16b_32.psd */ = {isa = PBXFileReference; lastKnownFileType = file; path = 04b16b_32.psd; sourceTree = ""; }; + B33FB1BF279BCE920013AAD8 /* n64.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = n64.jpg; sourceTree = ""; }; + B33FB1C0279BCE920013AAD8 /* snes1.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = snes1.bmp; sourceTree = ""; }; + B33FB1C1279BCE920013AAD8 /* snesticle_icon.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = snesticle_icon.bmp; sourceTree = ""; }; + B33FB1C2279BCE920013AAD8 /* memcard_icon.icn */ = {isa = PBXFileReference; lastKnownFileType = file; path = memcard_icon.icn; sourceTree = ""; }; + B33FB1C3279BCE920013AAD8 /* nes.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = nes.jpg; sourceTree = ""; }; + B33FB1C4279BCE920013AAD8 /* gamecube.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = gamecube.jpg; sourceTree = ""; }; + B33FB1C5279BCE920013AAD8 /* atari.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = atari.jpg; sourceTree = ""; }; + B33FB1C6279BCE920013AAD8 /* snes1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = snes1.jpg; sourceTree = ""; }; + B33FB1C7279BCE920013AAD8 /* SNESticle.ncb */ = {isa = PBXFileReference; lastKnownFileType = file; path = SNESticle.ncb; sourceTree = ""; }; + B33FB1CB279BCE920013AAD8 /* console.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = console.h; sourceTree = ""; }; + B33FB1CC279BCE920013AAD8 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; + B33FB1CD279BCE920013AAD8 /* vssver.scc */ = {isa = PBXFileReference; lastKnownFileType = file; path = vssver.scc; sourceTree = ""; }; + B33FB1CF279BCE920013AAD8 /* gpprim.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpprim.h; sourceTree = ""; }; + B33FB1D0279BCE920013AAD8 /* console.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = console.h; sourceTree = ""; }; + B33FB1D1279BCE920013AAD8 /* profctr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = profctr.h; sourceTree = ""; }; + B33FB1D2279BCE920013AAD8 /* cd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cd.h; sourceTree = ""; }; + B33FB1D3279BCE920013AAD8 /* vram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vram.h; sourceTree = ""; }; + B33FB1D4279BCE920013AAD8 /* gslist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gslist.h; sourceTree = ""; }; + B33FB1D5279BCE920013AAD8 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; + B33FB1D6279BCE920013AAD8 /* ps2reg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ps2reg.h; sourceTree = ""; }; + B33FB1D7279BCE920013AAD8 /* ps2dma.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ps2dma.h; sourceTree = ""; }; + B33FB1D8279BCE920013AAD8 /* sjpcmbuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sjpcmbuffer.h; sourceTree = ""; }; + B33FB1D9279BCE920013AAD8 /* ps2mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ps2mem.h; sourceTree = ""; }; + B33FB1DA279BCE920013AAD8 /* hw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hw.h; sourceTree = ""; }; + B33FB1DB279BCE920013AAD8 /* poly.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = poly.h; sourceTree = ""; }; + B33FB1DC279BCE920013AAD8 /* font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = font.h; sourceTree = ""; }; + B33FB1DD279BCE920013AAD8 /* texture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = texture.h; sourceTree = ""; }; + B33FB1DE279BCE920013AAD8 /* gs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gs.h; sourceTree = ""; }; + B33FB1DF279BCE920013AAD8 /* libxmtap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libxmtap.h; sourceTree = ""; }; + B33FB1E0279BCE920013AAD8 /* libxpad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libxpad.h; sourceTree = ""; }; + B33FB1E1279BCE920013AAD8 /* vector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector.h; sourceTree = ""; }; + B33FB1E2279BCE920013AAD8 /* gpfifo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpfifo.h; sourceTree = ""; }; + B33FB1E3279BCE920013AAD8 /* excepHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = excepHandler.h; sourceTree = ""; }; + B33FB1E5279BCE920013AAD8 /* mixbuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mixbuffer.h; sourceTree = ""; }; + B33FB1E6279BCE920013AAD8 /* mainloop.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mainloop.h; sourceTree = ""; }; + B33FB1E7279BCE920013AAD8 /* pathext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pathext.h; sourceTree = ""; }; + B33FB1E8279BCE920013AAD8 /* memspace.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memspace.h; sourceTree = ""; }; + B33FB1E9279BCE920013AAD8 /* surface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = surface.h; sourceTree = ""; }; + B33FB1EA279BCE920013AAD8 /* path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = path.h; sourceTree = ""; }; + B33FB1EB279BCE920013AAD8 /* bmpfile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bmpfile.h; sourceTree = ""; }; + B33FB1EC279BCE920013AAD8 /* file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file.h; sourceTree = ""; }; + B33FB1ED279BCE920013AAD8 /* dataio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dataio.h; sourceTree = ""; }; + B33FB1EE279BCE920013AAD8 /* wavfile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wavfile.h; sourceTree = ""; }; + B33FB1EF279BCE920013AAD8 /* emurom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emurom.h; sourceTree = ""; }; + B33FB1F0279BCE920013AAD8 /* proflog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = proflog.h; sourceTree = ""; }; + B33FB1F1279BCE920013AAD8 /* rendersurface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rendersurface.h; sourceTree = ""; }; + B33FB1F2279BCE920013AAD8 /* emuinput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emuinput.h; sourceTree = ""; }; + B33FB1F3279BCE920013AAD8 /* mixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mixer.h; sourceTree = ""; }; + B33FB1F4279BCE920013AAD8 /* emushell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emushell.h; sourceTree = ""; }; + B33FB1F5279BCE920013AAD8 /* palette.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = palette.h; sourceTree = ""; }; + B33FB1F6279BCE920013AAD8 /* vssver.scc */ = {isa = PBXFileReference; lastKnownFileType = file; path = vssver.scc; sourceTree = ""; }; + B33FB1F7279BCE920013AAD8 /* gepdefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gepdefs.h; sourceTree = ""; }; + B33FB1F8279BCE920013AAD8 /* emusys.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emusys.h; sourceTree = ""; }; + B33FB1F9279BCE920013AAD8 /* mixconvert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mixconvert.h; sourceTree = ""; }; + B33FB1FA279BCE920013AAD8 /* emumovie.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emumovie.h; sourceTree = ""; }; + B33FB1FB279BCE920013AAD8 /* inputdevice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inputdevice.h; sourceTree = ""; }; + B33FB1FC279BCE920013AAD8 /* prof.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = prof.h; sourceTree = ""; }; + B33FB1FD279BCE920013AAD8 /* pixelformat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pixelformat.h; sourceTree = ""; }; + B33FB1FF279BCE920013AAD8 /* main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; + B33FB200279BCE920013AAD8 /* console.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = console.h; sourceTree = ""; }; + B33FB201279BCE920013AAD8 /* profctr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = profctr.h; sourceTree = ""; }; + B33FB202279BCE920013AAD8 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; + B33FB203279BCE920013AAD8 /* poly.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = poly.h; sourceTree = ""; }; + B33FB204279BCE920013AAD8 /* font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = font.h; sourceTree = ""; }; + B33FB205279BCE920013AAD8 /* texture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = texture.h; sourceTree = ""; }; + B33FB206279BCE920013AAD8 /* vector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector.h; sourceTree = ""; }; + B33FB208279BCE920013AAD8 /* winconsole.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = winconsole.h; sourceTree = ""; }; + B33FB209279BCE920013AAD8 /* console.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = console.h; sourceTree = ""; }; + B33FB20A279BCE920013AAD8 /* profctr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = profctr.h; sourceTree = ""; }; + B33FB20B279BCE920013AAD8 /* winmain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = winmain.h; sourceTree = ""; }; + B33FB20C279BCE920013AAD8 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; + B33FB20D279BCE920013AAD8 /* inputkeyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inputkeyboard.h; sourceTree = ""; }; + B33FB20E279BCE920013AAD8 /* inputmouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inputmouse.h; sourceTree = ""; }; + B33FB20F279BCE920013AAD8 /* window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = window.h; sourceTree = ""; }; + B33FB210279BCE920013AAD8 /* windsound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = windsound.h; sourceTree = ""; }; + B33FB211279BCE920013AAD8 /* ddsurface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ddsurface.h; sourceTree = ""; }; + B33FB212279BCE920013AAD8 /* vssver.scc */ = {isa = PBXFileReference; lastKnownFileType = file; path = vssver.scc; sourceTree = ""; }; + B33FB213279BCE920013AAD8 /* winddraw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = winddraw.h; sourceTree = ""; }; + B33FB214279BCE920013AAD8 /* inputjoystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inputjoystick.h; sourceTree = ""; }; + B33FB215279BCE920013AAD8 /* dsbuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dsbuffer.h; sourceTree = ""; }; + B33FB216279BCE930013AAD8 /* textoutput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = textoutput.h; sourceTree = ""; }; + B33FB217279BCE930013AAD8 /* winprintf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = winprintf.h; sourceTree = ""; }; + B33FB21A279BCE930013AAD8 /* vssver.scc */ = {isa = PBXFileReference; lastKnownFileType = file; path = vssver.scc; sourceTree = ""; }; + B33FB21B279BCE930013AAD8 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B33FB21D279BCE930013AAD8 /* vramnode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vramnode.c; sourceTree = ""; }; + B33FB21E279BCE930013AAD8 /* r5900_regs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = r5900_regs.h; sourceTree = ""; }; + B33FB21F279BCE930013AAD8 /* console.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = console.cpp; sourceTree = ""; }; + B33FB220279BCE930013AAD8 /* libxpad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libxpad.c; sourceTree = ""; }; + B33FB221279BCE930013AAD8 /* poly.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = poly.cpp; sourceTree = ""; }; + B33FB222279BCE930013AAD8 /* libxmtap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libxmtap.c; sourceTree = ""; }; + B33FB223279BCE930013AAD8 /* exceptions.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = exceptions.S; sourceTree = ""; }; + B33FB224279BCE930013AAD8 /* font.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = font.cpp; sourceTree = ""; }; + B33FB225279BCE930013AAD8 /* gs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gs.c; sourceTree = ""; }; + B33FB226279BCE930013AAD8 /* texture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = texture.cpp; sourceTree = ""; }; + B33FB227279BCE930013AAD8 /* excepHandler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = excepHandler.c; sourceTree = ""; }; + B33FB228279BCE930013AAD8 /* gpfifo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gpfifo.c; sourceTree = ""; }; + B33FB229279BCE930013AAD8 /* file.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = file.cpp; sourceTree = ""; }; + B33FB22A279BCE930013AAD8 /* profctr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = profctr.c; sourceTree = ""; }; + B33FB22B279BCE930013AAD8 /* gpprim.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gpprim.c; sourceTree = ""; }; + B33FB22C279BCE930013AAD8 /* vram.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vram.c; sourceTree = ""; }; + B33FB22D279BCE930013AAD8 /* gslist.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gslist.c; sourceTree = ""; }; + B33FB22E279BCE930013AAD8 /* sjpcmbuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sjpcmbuffer.cpp; sourceTree = ""; }; + B33FB22F279BCE930013AAD8 /* hw.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = hw.s; sourceTree = ""; }; + B33FB230279BCE930013AAD8 /* cd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cd.c; sourceTree = ""; }; + B33FB231279BCE930013AAD8 /* font_04b16b.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = font_04b16b.c; sourceTree = ""; }; + B33FB232279BCE930013AAD8 /* ps2dma.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ps2dma.c; sourceTree = ""; }; + B33FB233279BCE930013AAD8 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B33FB234279BCE930013AAD8 /* rendersurface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rendersurface.cpp; sourceTree = ""; }; + B33FB236279BCE930013AAD8 /* emumovie.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = emumovie.cpp; sourceTree = ""; }; + B33FB237279BCE930013AAD8 /* emushell.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = emushell.cpp; sourceTree = ""; }; + B33FB238279BCE930013AAD8 /* pixelformat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pixelformat.cpp; sourceTree = ""; }; + B33FB239279BCE930013AAD8 /* gzfileio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzfileio.h; sourceTree = ""; }; + B33FB23A279BCE930013AAD8 /* emurom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = emurom.cpp; sourceTree = ""; }; + B33FB23C279BCE930013AAD8 /* explode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = explode.c; sourceTree = ""; }; + B33FB23D279BCE930013AAD8 /* unzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; + B33FB23E279BCE930013AAD8 /* unzipP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unzipP.h; sourceTree = ""; }; + B33FB23F279BCE930013AAD8 /* unshrink.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unshrink.c; sourceTree = ""; }; + B33FB240279BCE930013AAD8 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B33FB241279BCE930013AAD8 /* unz.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unz.h; sourceTree = ""; }; + B33FB242279BCE930013AAD8 /* unzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; + B33FB243279BCE930013AAD8 /* unreduce.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unreduce.c; sourceTree = ""; }; + B33FB244279BCE930013AAD8 /* emusys.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = emusys.cpp; sourceTree = ""; }; + B33FB245279BCE930013AAD8 /* mixconvert.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mixconvert.cpp; sourceTree = ""; }; + B33FB246279BCE930013AAD8 /* prof.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = prof.c; sourceTree = ""; }; + B33FB247279BCE930013AAD8 /* pathext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pathext.cpp; sourceTree = ""; }; + B33FB248279BCE930013AAD8 /* bmpfile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bmpfile.cpp; sourceTree = ""; }; + B33FB24A279BCE930013AAD8 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B33FB24B279BCE930013AAD8 /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B33FB24C279BCE930013AAD8 /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B33FB24D279BCE930013AAD8 /* compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; + B33FB24E279BCE930013AAD8 /* deflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = ""; }; + B33FB24F279BCE930013AAD8 /* infutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infutil.c; sourceTree = ""; }; + B33FB250279BCE930013AAD8 /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B33FB251279BCE930013AAD8 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33FB252279BCE930013AAD8 /* infcodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = infcodes.h; sourceTree = ""; }; + B33FB253279BCE930013AAD8 /* trees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = ""; }; + B33FB254279BCE930013AAD8 /* infblock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infblock.c; sourceTree = ""; }; + B33FB255279BCE930013AAD8 /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B33FB256279BCE930013AAD8 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B33FB257279BCE930013AAD8 /* kos_zlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = kos_zlib.c; sourceTree = ""; }; + B33FB258279BCE930013AAD8 /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B33FB259279BCE930013AAD8 /* deflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = ""; }; + B33FB25A279BCE930013AAD8 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B33FB25B279BCE930013AAD8 /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B33FB25C279BCE930013AAD8 /* uncompr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uncompr.c; sourceTree = ""; }; + B33FB25D279BCE930013AAD8 /* infblock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = infblock.h; sourceTree = ""; }; + B33FB25E279BCE930013AAD8 /* trees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = ""; }; + B33FB25F279BCE930013AAD8 /* infcodes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infcodes.c; sourceTree = ""; }; + B33FB260279BCE930013AAD8 /* infutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = infutil.h; sourceTree = ""; }; + B33FB261279BCE930013AAD8 /* gzio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzio.c; sourceTree = ""; }; + B33FB262279BCE930013AAD8 /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B33FB263279BCE930013AAD8 /* maketree.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = maketree.c; sourceTree = ""; }; + B33FB264279BCE930013AAD8 /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B33FB265279BCE930013AAD8 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B33FB266279BCE930013AAD8 /* memsurface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memsurface.cpp; sourceTree = ""; }; + B33FB267279BCE930013AAD8 /* emucpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emucpu.h; sourceTree = ""; }; + B33FB268279BCE930013AAD8 /* memspace.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memspace.cpp; sourceTree = ""; }; + B33FB269279BCE930013AAD8 /* vssver.scc */ = {isa = PBXFileReference; lastKnownFileType = file; path = vssver.scc; sourceTree = ""; }; + B33FB26A279BCE930013AAD8 /* inputdevice.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inputdevice.cpp; sourceTree = ""; }; + B33FB26B279BCE930013AAD8 /* wavfile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wavfile.cpp; sourceTree = ""; }; + B33FB26C279BCE930013AAD8 /* path.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = path.cpp; sourceTree = ""; }; + B33FB26D279BCE930013AAD8 /* surface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = surface.cpp; sourceTree = ""; }; + B33FB26E279BCE930013AAD8 /* dataio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dataio.cpp; sourceTree = ""; }; + B33FB26F279BCE930013AAD8 /* emuthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emuthread.h; sourceTree = ""; }; + B33FB270279BCE930013AAD8 /* proflog.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = proflog.c; sourceTree = ""; }; + B33FB271279BCE930013AAD8 /* mixbuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mixbuffer.cpp; sourceTree = ""; }; + B33FB272279BCE930013AAD8 /* gzfileio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gzfileio.cpp; sourceTree = ""; }; + B33FB274279BCE930013AAD8 /* console.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = console.cpp; sourceTree = ""; }; + B33FB275279BCE930013AAD8 /* poly.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = poly.cpp; sourceTree = ""; }; + B33FB276279BCE930013AAD8 /* font.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = font.cpp; sourceTree = ""; }; + B33FB277279BCE930013AAD8 /* texture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = texture.cpp; sourceTree = ""; }; + B33FB278279BCE930013AAD8 /* vssver.scc */ = {isa = PBXFileReference; lastKnownFileType = file; path = vssver.scc; sourceTree = ""; }; + B33FB279279BCE930013AAD8 /* file.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = file.cpp; sourceTree = ""; }; + B33FB27A279BCE930013AAD8 /* profctr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = profctr.c; sourceTree = ""; }; + B33FB27B279BCE930013AAD8 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B33FB27C279BCE930013AAD8 /* rendersurface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rendersurface.cpp; sourceTree = ""; }; + B33FB27F279BCE930013AAD8 /* inputmouse.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inputmouse.cpp; sourceTree = ""; }; + B33FB280279BCE930013AAD8 /* inputkeyboard.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inputkeyboard.cpp; sourceTree = ""; }; + B33FB281279BCE930013AAD8 /* inputjoystick.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inputjoystick.cpp; sourceTree = ""; }; + B33FB282279BCE930013AAD8 /* winprintf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = winprintf.cpp; sourceTree = ""; }; + B33FB283279BCE930013AAD8 /* console.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = console.cpp; sourceTree = ""; }; + B33FB284279BCE930013AAD8 /* window.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = window.cpp; sourceTree = ""; }; + B33FB286279BCE930013AAD8 /* winddraw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = winddraw.cpp; sourceTree = ""; }; + B33FB287279BCE930013AAD8 /* ddsurface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ddsurface.cpp; sourceTree = ""; }; + B33FB288279BCE930013AAD8 /* file.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = file.cpp; sourceTree = ""; }; + B33FB289279BCE930013AAD8 /* profctr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = profctr.c; sourceTree = ""; }; + B33FB28A279BCE930013AAD8 /* winmain.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = winmain.cpp; sourceTree = ""; }; + B33FB28C279BCE930013AAD8 /* windsound.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = windsound.cpp; sourceTree = ""; }; + B33FB28D279BCE930013AAD8 /* dsbuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dsbuffer.cpp; sourceTree = ""; }; + B33FB28E279BCE930013AAD8 /* winconsole.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = winconsole.cpp; sourceTree = ""; }; + B33FB28F279BCE930013AAD8 /* textoutput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = textoutput.cpp; sourceTree = ""; }; + B33FB290279BCE930013AAD8 /* rendersurface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rendersurface.cpp; sourceTree = ""; }; + B33FB293279BCE930013AAD8 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33FB295279BCE930013AAD8 /* gepwin32.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gepwin32.vcproj; sourceTree = ""; }; + B33FB296279BCE930013AAD8 /* gepwin32.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = gepwin32.dsp; sourceTree = ""; }; + B33FB297279BCE930013AAD8 /* gepwin32.plg */ = {isa = PBXFileReference; lastKnownFileType = text; path = gepwin32.plg; sourceTree = ""; }; + B33FB299279BCE930013AAD8 /* path.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = path.obj; sourceTree = ""; }; + B33FB29A279BCE930013AAD8 /* unreduce.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = unreduce.obj; sourceTree = ""; }; + B33FB29B279BCE930013AAD8 /* gzio.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = gzio.obj; sourceTree = ""; }; + B33FB29C279BCE930013AAD8 /* dsbuffer.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = dsbuffer.obj; sourceTree = ""; }; + B33FB29D279BCE930013AAD8 /* winddraw.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = winddraw.obj; sourceTree = ""; }; + B33FB29E279BCE930013AAD8 /* wavfile.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = wavfile.obj; sourceTree = ""; }; + B33FB29F279BCE930013AAD8 /* winmain.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = winmain.obj; sourceTree = ""; }; + B33FB2A0279BCE930013AAD8 /* infblock.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = infblock.obj; sourceTree = ""; }; + B33FB2A1279BCE930013AAD8 /* inputdevice.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = inputdevice.obj; sourceTree = ""; }; + B33FB2A2279BCE930013AAD8 /* file.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = file.obj; sourceTree = ""; }; + B33FB2A3279BCE930013AAD8 /* profctr.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = profctr.obj; sourceTree = ""; }; + B33FB2A4279BCE930013AAD8 /* uncompr.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = uncompr.obj; sourceTree = ""; }; + B33FB2A5279BCE930013AAD8 /* windsound.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = windsound.obj; sourceTree = ""; }; + B33FB2A6279BCE930013AAD8 /* memspace.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = memspace.obj; sourceTree = ""; }; + B33FB2A7279BCE930013AAD8 /* compress.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = compress.obj; sourceTree = ""; }; + B33FB2A8279BCE930013AAD8 /* gzfileio.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = gzfileio.obj; sourceTree = ""; }; + B33FB2A9279BCE930013AAD8 /* rendersurface.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = rendersurface.obj; sourceTree = ""; }; + B33FB2AA279BCE930013AAD8 /* mixbuffer.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = mixbuffer.obj; sourceTree = ""; }; + B33FB2AB279BCE930013AAD8 /* inftrees.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = inftrees.obj; sourceTree = ""; }; + B33FB2AC279BCE930013AAD8 /* unshrink.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = unshrink.obj; sourceTree = ""; }; + B33FB2AD279BCE930013AAD8 /* maketree.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = maketree.obj; sourceTree = ""; }; + B33FB2AE279BCE930013AAD8 /* gepwin32.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gepwin32.pch; sourceTree = ""; }; + B33FB2AF279BCE930013AAD8 /* ddsurface.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = ddsurface.obj; sourceTree = ""; }; + B33FB2B0279BCE930013AAD8 /* proflog.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = proflog.obj; sourceTree = ""; }; + B33FB2B1279BCE930013AAD8 /* explode.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = explode.obj; sourceTree = ""; }; + B33FB2B2279BCE930013AAD8 /* surface.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = surface.obj; sourceTree = ""; }; + B33FB2B3279BCE930013AAD8 /* vc70.pdb */ = {isa = PBXFileReference; lastKnownFileType = file; path = vc70.pdb; sourceTree = ""; }; + B33FB2B4279BCE930013AAD8 /* textoutput.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = textoutput.obj; sourceTree = ""; }; + B33FB2B5279BCE930013AAD8 /* dataio.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = dataio.obj; sourceTree = ""; }; + B33FB2B6279BCE930013AAD8 /* emurom.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = emurom.obj; sourceTree = ""; }; + B33FB2B7279BCE930013AAD8 /* adler32.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = adler32.obj; sourceTree = ""; }; + B33FB2B8279BCE930013AAD8 /* winprintf.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = winprintf.obj; sourceTree = ""; }; + B33FB2B9279BCE930013AAD8 /* infcodes.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = infcodes.obj; sourceTree = ""; }; + B33FB2BA279BCE930013AAD8 /* trees.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = trees.obj; sourceTree = ""; }; + B33FB2BB279BCE930013AAD8 /* infutil.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = infutil.obj; sourceTree = ""; }; + B33FB2BC279BCE930013AAD8 /* vc70.idb */ = {isa = PBXFileReference; lastKnownFileType = file; path = vc70.idb; sourceTree = ""; }; + B33FB2BD279BCE930013AAD8 /* pixelformat.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = pixelformat.obj; sourceTree = ""; }; + B33FB2BE279BCE930013AAD8 /* deflate.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = deflate.obj; sourceTree = ""; }; + B33FB2BF279BCE930013AAD8 /* inflate.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = inflate.obj; sourceTree = ""; }; + B33FB2C0279BCE930013AAD8 /* BuildLog.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = BuildLog.htm; sourceTree = ""; }; + B33FB2C1279BCE930013AAD8 /* emumovie.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = emumovie.obj; sourceTree = ""; }; + B33FB2C2279BCE930013AAD8 /* inffast.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = inffast.obj; sourceTree = ""; }; + B33FB2C3279BCE930013AAD8 /* inputmouse.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = inputmouse.obj; sourceTree = ""; }; + B33FB2C4279BCE930013AAD8 /* zutil.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = zutil.obj; sourceTree = ""; }; + B33FB2C5279BCE930013AAD8 /* bmpfile.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = bmpfile.obj; sourceTree = ""; }; + B33FB2C6279BCE930013AAD8 /* mixconvert.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = mixconvert.obj; sourceTree = ""; }; + B33FB2C7279BCE930013AAD8 /* inputkeyboard.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = inputkeyboard.obj; sourceTree = ""; }; + B33FB2C8279BCE930013AAD8 /* inputjoystick.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = inputjoystick.obj; sourceTree = ""; }; + B33FB2C9279BCE930013AAD8 /* unzip.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = unzip.obj; sourceTree = ""; }; + B33FB2CA279BCE930013AAD8 /* crc32.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = crc32.obj; sourceTree = ""; }; + B33FB2CB279BCE930013AAD8 /* gepwin32.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = gepwin32.lib; sourceTree = ""; }; + B33FB2CC279BCE930013AAD8 /* emusys.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = emusys.obj; sourceTree = ""; }; + B33FB2CD279BCE930013AAD8 /* window.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = window.obj; sourceTree = ""; }; + B33FB2CE279BCE930013AAD8 /* console.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = console.obj; sourceTree = ""; }; + B33FB2CF279BCE930013AAD8 /* prof.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = prof.obj; sourceTree = ""; }; + B34AB5672106D60400C45F09 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B34AB5832106DEA000C45F09 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3547B622058591000CFF7D8 /* Core.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B365107D21782E95008FDB7B /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B365107F21782E9E008FDB7B /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; + B3C9D5321DEA83DE0068D057 /* PVSnesticle.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVSnesticle.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C9D5341DEA83DE0068D057 /* PVSnesticle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVSnesticle.h; sourceTree = ""; }; + B3C9D5351DEA83DE0068D057 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3C9D5401DEA83FD0068D057 /* PVSnesticle.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVSnesticle.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C9D5501DEA847B0068D057 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; }; + B3C9D5521DEA84830068D057 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; + B3C9D5541DEA848A0068D057 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; }; + B3C9D5561DEA84950068D057 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + B3C9D5581DEA849B0068D057 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3D2E3851D6E7E3D0058544D /* PVSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PVSupport.framework; path = "../../../Library/Developer/Xcode/DerivedData/Provenance-cqyrqlnsqskspscgaptpbmkqmvze/Build/Products/Debug-iphonesimulator/PVSupport.framework"; sourceTree = ""; }; + B3D2E3871D6E7E4A0058544D /* PVSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PVSupport.framework; path = "../../../Library/Developer/Xcode/DerivedData/Provenance-cqyrqlnsqskspscgaptpbmkqmvze/Build/Products/Debug-appletvsimulator/PVSupport.framework"; sourceTree = ""; }; + CF87D337258AB6CE00838AF8 /* PVSnesticleCore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PVSnesticleCore.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B33FADA1279BCA9D0013AAD8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B33FADAD279BCAB40013AAD8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C9D52E1DEA83DE0068D057 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B365107E21782E95008FDB7B /* libz.tbd in Frameworks */, + B34AB5842106DEA000C45F09 /* PVSupport.framework in Frameworks */, + B33FADB8279BCCDC0013AAD8 /* libsnesticle-iOS.a in Frameworks */, + B3C9D54E1DEA843E0068D057 /* Foundation.framework in Frameworks */, + B3C9D54D1DEA84320068D057 /* UIKit.framework in Frameworks */, + B3C9D54C1DEA842B0068D057 /* OpenGLES.framework in Frameworks */, + B3C9D54B1DEA84220068D057 /* CoreGraphics.framework in Frameworks */, + B3C9D54A1DEA841A0068D057 /* AudioToolbox.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C9D53C1DEA83FD0068D057 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B365108021782E9E008FDB7B /* libz.tbd in Frameworks */, + B3C9D5591DEA849B0068D057 /* Foundation.framework in Frameworks */, + B3C9D5571DEA84950068D057 /* UIKit.framework in Frameworks */, + B3C9D5551DEA848A0068D057 /* OpenGLES.framework in Frameworks */, + B33FADBB279BCCF40013AAD8 /* libsnesticle-tvOS.a in Frameworks */, + B3C9D5531DEA84830068D057 /* CoreGraphics.framework in Frameworks */, + B3C9D5511DEA847B0068D057 /* AudioToolbox.framework in Frameworks */, + B3C9D54F1DEA846B0068D057 /* PVSupport.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1ACEA8DB17F75F350031B1C9 = { + isa = PBXGroup; + children = ( + B33FADBE279BCE8F0013AAD8 /* SNESticle */, + 1ACEA8E917F75F350031B1C9 /* PVSnesticle */, + B3C9D5331DEA83DE0068D057 /* PVSnesticle */, + B33FAD99279BCA840013AAD8 /* snesticle-iOS */, + B33FADA5279BCA9E0013AAD8 /* snesticle-tvOS */, + B33FADB1279BCAB40013AAD8 /* snesticle-iOS */, + 1ACEA8E617F75F350031B1C9 /* Frameworks */, + 1ACEA8E517F75F350031B1C9 /* Products */, + ); + sourceTree = ""; + }; + 1ACEA8E517F75F350031B1C9 /* Products */ = { + isa = PBXGroup; + children = ( + B3C9D5321DEA83DE0068D057 /* PVSnesticle.framework */, + B3C9D5401DEA83FD0068D057 /* PVSnesticle.framework */, + B33FADA4279BCA9D0013AAD8 /* libsnesticle-tvOS.a */, + B33FADB0279BCAB40013AAD8 /* libsnesticle-iOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 1ACEA8E617F75F350031B1C9 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B365107D21782E95008FDB7B /* libz.tbd */, + B365107F21782E9E008FDB7B /* libz.tbd */, + B34AB5832106DEA000C45F09 /* PVSupport.framework */, + B34AB5672106D60400C45F09 /* PVSupport.framework */, + B3C9D5581DEA849B0068D057 /* Foundation.framework */, + B3C9D5561DEA84950068D057 /* UIKit.framework */, + B3C9D5541DEA848A0068D057 /* OpenGLES.framework */, + B3C9D5521DEA84830068D057 /* CoreGraphics.framework */, + B3C9D5501DEA847B0068D057 /* AudioToolbox.framework */, + B3D2E3871D6E7E4A0058544D /* PVSupport.framework */, + B3D2E3851D6E7E3D0058544D /* PVSupport.framework */, + 1ACEA91317F75FAF0031B1C9 /* AudioToolbox.framework */, + 1ACEA91417F75FAF0031B1C9 /* CoreAudio.framework */, + 1ACEA91117F75FA80031B1C9 /* CoreGraphics.framework */, + 1ACEA90F17F75FA10031B1C9 /* OpenGLES.framework */, + 1ACEA90D17F75F6E0031B1C9 /* UIKit.framework */, + 1ACEA8E717F75F350031B1C9 /* Foundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 1ACEA8E917F75F350031B1C9 /* PVSnesticle */ = { + isa = PBXGroup; + children = ( + 1ACEA91717F760390031B1C9 /* Core */, + 1ACEA8EA17F75F350031B1C9 /* Supporting Files */, + ); + path = PVSnesticle; + sourceTree = ""; + }; + 1ACEA8EA17F75F350031B1C9 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 1ACEA8EB17F75F350031B1C9 /* PVSnesticle-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 1ACEA91717F760390031B1C9 /* Core */ = { + isa = PBXGroup; + children = ( + 1ACEA91817F760390031B1C9 /* PVSnesticleCore.h */, + 1ACEA91917F760390031B1C9 /* PVSnesticleCore.mm */, + 1ACEA98F17F760390031B1C9 /* PVSnesticleOESupport.mm */, + CF87D337258AB6CE00838AF8 /* PVSnesticleCore.swift */, + ); + path = Core; + sourceTree = ""; + }; + B33FAD99279BCA840013AAD8 /* snesticle-iOS */ = { + isa = PBXGroup; + children = ( + B33FAD9A279BCA840013AAD8 /* snesticle_iOS.swift */, + ); + path = "snesticle-iOS"; + sourceTree = ""; + }; + B33FADA5279BCA9E0013AAD8 /* snesticle-tvOS */ = { + isa = PBXGroup; + children = ( + B33FADA6279BCA9E0013AAD8 /* snesticle_tvOS.swift */, + ); + path = "snesticle-tvOS"; + sourceTree = ""; + }; + B33FADB1279BCAB40013AAD8 /* snesticle-iOS */ = { + isa = PBXGroup; + children = ( + B33FADB2279BCAB40013AAD8 /* snesticle_iOS.swift */, + ); + path = "snesticle-iOS"; + sourceTree = ""; + }; + B33FADBE279BCE8F0013AAD8 /* SNESticle */ = { + isa = PBXGroup; + children = ( + B33FADBF279BCE8F0013AAD8 /* LICENSE */, + B33FADC0279BCE8F0013AAD8 /* README.md */, + B33FADC1279BCE8F0013AAD8 /* SNESticle */, + B33FB1C8279BCE920013AAD8 /* Gep */, + ); + path = SNESticle; + sourceTree = ""; + }; + B33FADC1279BCE8F0013AAD8 /* SNESticle */ = { + isa = PBXGroup; + children = ( + B33FB1C7279BCE920013AAD8 /* SNESticle.ncb */, + B33FADC2279BCE8F0013AAD8 /* SNESticle.sln */, + B33FADC3279BCE8F0013AAD8 /* todo.txt */, + B33FB147279BCE920013AAD8 /* SNESticle.vssscc */, + B33FB1A7279BCE920013AAD8 /* Data */, + B33FB148279BCE920013AAD8 /* Modules */, + B33FAE56279BCE900013AAD8 /* Project */, + B33FADC4279BCE900013AAD8 /* Source */, + B33FAE41279BCE900013AAD8 /* XML */, + ); + path = SNESticle; + sourceTree = ""; + }; + B33FADC4279BCE900013AAD8 /* Source */ = { + isa = PBXGroup; + children = ( + B33FADE4279BCE900013AAD8 /* common */, + B33FADC5279BCE900013AAD8 /* con32 */, + B33FAE23279BCE900013AAD8 /* dc */, + B33FADC7279BCE900013AAD8 /* ps2 */, + B33FAE27279BCE900013AAD8 /* win32 */, + ); + path = Source; + sourceTree = ""; + }; + B33FADC5279BCE900013AAD8 /* con32 */ = { + isa = PBXGroup; + children = ( + B33FADC6279BCE900013AAD8 /* main.cpp */, + ); + path = con32; + sourceTree = ""; + }; + B33FADC7279BCE900013AAD8 /* ps2 */ = { + isa = PBXGroup; + children = ( + B33FADC8279BCE900013AAD8 /* uiNetwork.h */, + B33FADC9279BCE900013AAD8 /* input.h */, + B33FADCA279BCE900013AAD8 /* uiMenu.h */, + B33FADCB279BCE900013AAD8 /* uiBrowser.h */, + B33FADCC279BCE900013AAD8 /* input.cpp */, + B33FADCD279BCE900013AAD8 /* snppublend_gs.h */, + B33FADCE279BCE900013AAD8 /* memcard.cpp */, + B33FADCF279BCE900013AAD8 /* uiMenu.cpp */, + B33FADD0279BCE900013AAD8 /* snmaskop.h */, + B33FADD1279BCE900013AAD8 /* version.cpp */, + B33FADD2279BCE900013AAD8 /* mainloop.cpp */, + B33FADD3279BCE900013AAD8 /* titleman.c */, + B33FADD4279BCE900013AAD8 /* uiLog.cpp */, + B33FADD5279BCE900013AAD8 /* convert_vu1.dsm */, + B33FADD6279BCE900013AAD8 /* snppublend_mm.cpp */, + B33FADD7279BCE900013AAD8 /* ps2reg.h */, + B33FADD8279BCE900013AAD8 /* sn65816.S */, + B33FADD9279BCE900013AAD8 /* snmask64.cpp */, + B33FADDA279BCE900013AAD8 /* uiScreen.h */, + B33FADDB279BCE900013AAD8 /* snmask128.cpp */, + B33FADDC279BCE900013AAD8 /* uiBrowser.cpp */, + B33FADDD279BCE900013AAD8 /* titleman.h */, + B33FADDE279BCE900013AAD8 /* snspc700.S */, + B33FADDF279BCE900013AAD8 /* uiNetwork.cpp */, + B33FADE0279BCE900013AAD8 /* snppublend_mm.h */, + B33FADE1279BCE900013AAD8 /* memcard.h */, + B33FADE2279BCE900013AAD8 /* uiLog.h */, + B33FADE3279BCE900013AAD8 /* snppublend_gs.cpp */, + ); + path = ps2; + sourceTree = ""; + }; + B33FADE4279BCE900013AAD8 /* common */ = { + isa = PBXGroup; + children = ( + B33FAE06279BCE900013AAD8 /* sncpu_c.c */, + B33FADE5279BCE900013AAD8 /* sncpu.c */, + B33FAE10279BCE900013AAD8 /* sndisasm.c */, + B33FADEA279BCE900013AAD8 /* snspc_c.c */, + B33FADEF279BCE900013AAD8 /* snspc.c */, + B33FAE20279BCE900013AAD8 /* snspcbrr.c */, + B33FAE14279BCE900013AAD8 /* snspcdisasm.c */, + B33FAE0D279BCE900013AAD8 /* snspcrom.c */, + B33FAE04279BCE900013AAD8 /* sndebug.cpp */, + B33FADF6279BCE900013AAD8 /* sndma.cpp */, + B33FAE19279BCE900013AAD8 /* sndsp1.cpp */, + B33FAE18279BCE900013AAD8 /* snes.cpp */, + B33FADFC279BCE900013AAD8 /* snesreg.cpp */, + B33FADE7279BCE900013AAD8 /* snio.cpp */, + B33FADF7279BCE900013AAD8 /* snmemmap.cpp */, + B33FADED279BCE900013AAD8 /* snppu.cpp */, + B33FAE1D279BCE900013AAD8 /* snppubg.cpp */, + B33FAE0F279BCE900013AAD8 /* snppublend_c.cpp */, + B33FADF8279BCE900013AAD8 /* snppucolor.cpp */, + B33FAE12279BCE900013AAD8 /* snppuobj.cpp */, + B33FADE9279BCE900013AAD8 /* snppurender.cpp */, + B33FAE09279BCE900013AAD8 /* snppurender8.cpp */, + B33FAE15279BCE900013AAD8 /* snrom.cpp */, + B33FAE16279BCE900013AAD8 /* snspcdsp.cpp */, + B33FAE13279BCE900013AAD8 /* snspcio.cpp */, + B33FAE01279BCE900013AAD8 /* snspcmix.cpp */, + B33FADFD279BCE900013AAD8 /* snspctimer.cpp */, + B33FAE08279BCE900013AAD8 /* snstate.cpp */, + B33FADEE279BCE900013AAD8 /* sncpu_c.h */, + B33FAE0E279BCE900013AAD8 /* sncpu.h */, + B33FAE02279BCE900013AAD8 /* sncpudefs.h */, + B33FADE6279BCE900013AAD8 /* sndebug.h */, + B33FADF9279BCE900013AAD8 /* sndisasm.h */, + B33FADF3279BCE900013AAD8 /* sndma.h */, + B33FAE07279BCE900013AAD8 /* sndsp.h */, + B33FAE1B279BCE900013AAD8 /* sndsp1.h */, + B33FAE1E279BCE900013AAD8 /* snes.h */, + B33FADF0279BCE900013AAD8 /* snesreg.h */, + B33FADFB279BCE900013AAD8 /* snio.h */, + B33FAE0C279BCE900013AAD8 /* snmask.h */, + B33FADEC279BCE900013AAD8 /* snmemmap.h */, + B33FAE11279BCE900013AAD8 /* snppu.h */, + B33FAE1C279BCE900013AAD8 /* snppublend_c.h */, + B33FADF5279BCE900013AAD8 /* snppublend.h */, + B33FADFA279BCE900013AAD8 /* snppucolor.h */, + B33FAE1F279BCE900013AAD8 /* snppurender.h */, + B33FAE0B279BCE900013AAD8 /* snppurenderi.h */, + B33FAE21279BCE900013AAD8 /* snqueue.h */, + B33FADFE279BCE900013AAD8 /* snrom.h */, + B33FAE0A279BCE900013AAD8 /* snspc_c.h */, + B33FAE05279BCE900013AAD8 /* snspc.h */, + B33FAE00279BCE900013AAD8 /* snspcbrr.h */, + B33FADF1279BCE900013AAD8 /* snspcdefs.h */, + B33FADF4279BCE900013AAD8 /* snspcdisasm.h */, + B33FAE22279BCE900013AAD8 /* snspcdsp.h */, + B33FADFF279BCE900013AAD8 /* snspcio.h */, + B33FAE03279BCE900013AAD8 /* snspcmix.h */, + B33FADEB279BCE900013AAD8 /* snspcmixi.h */, + B33FADE8279BCE900013AAD8 /* snspcrom.h */, + B33FADF2279BCE900013AAD8 /* snspctimer.h */, + B33FAE17279BCE900013AAD8 /* snstate.h */, + B33FAE1A279BCE900013AAD8 /* sntiming.h */, + ); + path = common; + sourceTree = ""; + }; + B33FAE23279BCE900013AAD8 /* dc */ = { + isa = PBXGroup; + children = ( + B33FAE24279BCE900013AAD8 /* input.h */, + B33FAE25279BCE900013AAD8 /* input.cpp */, + B33FAE26279BCE900013AAD8 /* mainloop.cpp */, + ); + path = dc; + sourceTree = ""; + }; + B33FAE27279BCE900013AAD8 /* win32 */ = { + isa = PBXGroup; + children = ( + B33FAE28279BCE900013AAD8 /* snppublend.cpp */, + B33FAE29279BCE900013AAD8 /* Interface */, + B33FAE34279BCE900013AAD8 /* input.h */, + B33FAE35279BCE900013AAD8 /* mainloop.h */, + B33FAE36279BCE900013AAD8 /* input.cpp */, + B33FAE37279BCE900013AAD8 /* snmaskop.h */, + B33FAE38279BCE900013AAD8 /* mainloop.cpp */, + B33FAE39279BCE900013AAD8 /* snmask.cpp */, + B33FAE3A279BCE900013AAD8 /* Resource */, + B33FAE3F279BCE900013AAD8 /* sneswin.h */, + B33FAE40279BCE900013AAD8 /* sneswin.cpp */, + ); + path = win32; + sourceTree = ""; + }; + B33FAE29279BCE900013AAD8 /* Interface */ = { + isa = PBXGroup; + children = ( + B33FAE2A279BCE900013AAD8 /* snesdisasmview.cpp */, + B33FAE2B279BCE900013AAD8 /* disasmview.cpp */, + B33FAE2C279BCE900013AAD8 /* snesdisasmview.h */, + B33FAE2D279BCE900013AAD8 /* memview.cpp */, + B33FAE2E279BCE900013AAD8 /* memview.h */, + B33FAE2F279BCE900013AAD8 /* snesmemview.cpp */, + B33FAE30279BCE900013AAD8 /* textview.cpp */, + B33FAE31279BCE900013AAD8 /* disasmview.h */, + B33FAE32279BCE900013AAD8 /* snesmemview.h */, + B33FAE33279BCE900013AAD8 /* textview.h */, + ); + path = Interface; + sourceTree = ""; + }; + B33FAE3A279BCE900013AAD8 /* Resource */ = { + isa = PBXGroup; + children = ( + B33FAE3B279BCE900013AAD8 /* icon1.ico */, + B33FAE3C279BCE900013AAD8 /* gepres.rc */, + B33FAE3D279BCE900013AAD8 /* resource.h */, + B33FAE3E279BCE900013AAD8 /* gepres.aps */, + ); + path = Resource; + sourceTree = ""; + }; + B33FAE41279BCE900013AAD8 /* XML */ = { + isa = PBXGroup; + children = ( + B33FAE4B279BCE900013AAD8 /* makecpu.bat */, + B33FAE44279BCE900013AAD8 /* makespc.bat */, + B33FAE54279BCE900013AAD8 /* op65816_mips.h */, + B33FAE51279BCE900013AAD8 /* op65816.h */, + B33FAE4D279BCE900013AAD8 /* opspc700_c.h */, + B33FAE49279BCE900013AAD8 /* opspc700_mips.h */, + B33FAE4F279BCE900013AAD8 /* asm_c.js */, + B33FAE43279BCE900013AAD8 /* asm_mips.js */, + B33FAE4E279BCE900013AAD8 /* asm.js */, + B33FAE4C279BCE900013AAD8 /* spcasm_c.js */, + B33FAE42279BCE900013AAD8 /* spcasm_mips.js */, + B33FAE50279BCE900013AAD8 /* xslt.js */, + B33FAE47279BCE900013AAD8 /* o.xml */, + B33FAE52279BCE900013AAD8 /* p.xml */, + B33FAE46279BCE900013AAD8 /* pd65816.xml */, + B33FAE48279BCE900013AAD8 /* pdspc700.xml */, + B33FAE53279BCE900013AAD8 /* spc700_asm.xml */, + B33FAE45279BCE900013AAD8 /* spc700_op.xml */, + B33FAE4A279BCE900013AAD8 /* pd65816.xsl */, + B33FAE55279BCE900013AAD8 /* pdspc700.xsl */, + ); + path = XML; + sourceTree = ""; + }; + B33FAE56279BCE900013AAD8 /* Project */ = { + isa = PBXGroup; + children = ( + B33FAE57279BCE900013AAD8 /* con32 */, + B33FAE5A279BCE900013AAD8 /* ps2 */, + B33FB117279BCE920013AAD8 /* win32 */, + ); + path = Project; + sourceTree = ""; + }; + B33FAE57279BCE900013AAD8 /* con32 */ = { + isa = PBXGroup; + children = ( + B33FAE58279BCE900013AAD8 /* SNESticle.vcproj */, + B33FAE59279BCE900013AAD8 /* SNESticle.vcproj.vspscc */, + ); + path = con32; + sourceTree = ""; + }; + B33FAE5A279BCE900013AAD8 /* ps2 */ = { + isa = PBXGroup; + children = ( + B33FAE5B279BCE900013AAD8 /* NETPLAY.IRX */, + B33FAE5C279BCE900013AAD8 /* SNESticle.elf */, + B33FAE5D279BCE900013AAD8 /* SJPCM.IRX */, + B33FAE5E279BCE900013AAD8 /* PS2LINK.IRX */, + B33FAE5F279BCE900013AAD8 /* Makefile */, + B33FAE60279BCE900013AAD8 /* debug_EE3.2.2-b1 */, + B33FAFB6279BCE910013AAD8 /* release_EE3.2.2-b1 */, + B33FB10C279BCE920013AAD8 /* linkfile */, + B33FB10D279BCE920013AAD8 /* PS2IP.IRX */, + B33FB10E279BCE920013AAD8 /* TITLE.DB */, + B33FB10F279BCE920013AAD8 /* PS2IPS.IRX */, + B33FB110279BCE920013AAD8 /* MCSAVE.IRX */, + B33FB111279BCE920013AAD8 /* PS2FS.IRX */, + B33FB112279BCE920013AAD8 /* PS2SMAP.IRX */, + B33FB113279BCE920013AAD8 /* CDVD.IRX */, + B33FB114279BCE920013AAD8 /* SJPCM2.IRX */, + B33FB115279BCE920013AAD8 /* crt0.s */, + B33FB116279BCE920013AAD8 /* ICON.SYS */, + ); + path = ps2; + sourceTree = ""; + }; + B33FAE60279BCE900013AAD8 /* debug_EE3.2.2-b1 */ = { + isa = PBXGroup; + children = ( + B33FAE61279BCE900013AAD8 /* mixbuffer.o */, + B33FAE62279BCE900013AAD8 /* version.lst */, + B33FAE63279BCE900013AAD8 /* main.o */, + B33FAE64279BCE900013AAD8 /* sjpcmbuffer.d */, + B33FAE65279BCE900013AAD8 /* sncpu.d */, + B33FAE66279BCE900013AAD8 /* nesdisk.lst */, + B33FAE67279BCE900013AAD8 /* console.lst */, + B33FAE68279BCE900013AAD8 /* emusys.d */, + B33FAE69279BCE900013AAD8 /* nesio.lst */, + B33FAE6A279BCE900013AAD8 /* gpprim.o */, + B33FAE6B279BCE900013AAD8 /* snspc_c.d */, + B33FAE6C279BCE900013AAD8 /* hw.lst */, + B33FAE6D279BCE900013AAD8 /* console.o */, + B33FAE6E279BCE900013AAD8 /* snspcrom.o */, + B33FAE6F279BCE900013AAD8 /* nesmmu.lst */, + B33FAE70279BCE900013AAD8 /* uiNetwork.o */, + B33FAE71279BCE900013AAD8 /* snmemmap.o */, + B33FAE72279BCE900013AAD8 /* zutil.o */, + B33FAE73279BCE900013AAD8 /* snspc.lst */, + B33FAE74279BCE900013AAD8 /* snspc_c.lst */, + B33FAE75279BCE900013AAD8 /* prof.lst */, + B33FAE76279BCE900013AAD8 /* profctr.o */, + B33FAE77279BCE900013AAD8 /* crc32.lst */, + B33FAE78279BCE900013AAD8 /* nes.lst */, + B33FAE79279BCE900013AAD8 /* unzip.lst */, + B33FAE7A279BCE900013AAD8 /* sncpu_c.o */, + B33FAE7B279BCE900013AAD8 /* snesreg.lst */, + B33FAE7C279BCE900013AAD8 /* mainloop.lst */, + B33FAE7D279BCE900013AAD8 /* uiMenu.o */, + B33FAE7E279BCE900013AAD8 /* poly.lst */, + B33FAE7F279BCE900013AAD8 /* input.o */, + B33FAE80279BCE900013AAD8 /* nesmmu.o */, + B33FAE81279BCE900013AAD8 /* crt0.lst */, + B33FAE82279BCE900013AAD8 /* font.lst */, + B33FAE83279BCE900013AAD8 /* snspc.d */, + B33FAE84279BCE900013AAD8 /* mainloop.o */, + B33FAE85279BCE900013AAD8 /* uiBrowser.o */, + B33FAE86279BCE900013AAD8 /* snesreg.o */, + B33FAE87279BCE900013AAD8 /* emusys.lst */, + B33FAE88279BCE900013AAD8 /* nesrom.lst */, + B33FAE89279BCE900013AAD8 /* inflate.d */, + B33FAE8A279BCE900013AAD8 /* snspctimer.o */, + B33FAE8B279BCE900013AAD8 /* snspctimer.lst */, + B33FAE8C279BCE900013AAD8 /* sndma.o */, + B33FAE8D279BCE900013AAD8 /* nesstate.o */, + B33FAE8E279BCE900013AAD8 /* inftrees.o */, + B33FAE8F279BCE900013AAD8 /* version.o */, + B33FAE90279BCE900013AAD8 /* snppublend_gs.o */, + B33FAE91279BCE900013AAD8 /* snspcdisasm.lst */, + B33FAE92279BCE900013AAD8 /* texture.lst */, + B33FAE93279BCE900013AAD8 /* poly.d */, + B33FAE94279BCE900013AAD8 /* uncompr.o */, + B33FAE95279BCE900013AAD8 /* nesrom.o */, + B33FAE96279BCE900013AAD8 /* hw.d */, + B33FAE97279BCE900013AAD8 /* cd.o */, + B33FAE98279BCE900013AAD8 /* SNESticle.elf */, + B33FAE99279BCE900013AAD8 /* uiLog.lst */, + B33FAE9A279BCE900013AAD8 /* snspcdisasm.o */, + B33FAE9B279BCE900013AAD8 /* font_04b16b.lst */, + B33FAE9C279BCE900013AAD8 /* pathext.o */, + B33FAE9D279BCE900013AAD8 /* unzip.d */, + B33FAE9E279BCE900013AAD8 /* explode.d */, + B33FAE9F279BCE900013AAD8 /* sndisasm.lst */, + B33FAEA0279BCE900013AAD8 /* array.d */, + B33FAEA1279BCE900013AAD8 /* snspcmix.lst */, + B33FAEA2279BCE900013AAD8 /* memspace.o */, + B33FAEA3279BCE900013AAD8 /* vram.o */, + B33FAEA4279BCE900013AAD8 /* ps2dma.lst */, + B33FAEA5279BCE900013AAD8 /* nesdisk.d */, + B33FAEA6279BCE900013AAD8 /* sn65816.d */, + B33FAEA7279BCE900013AAD8 /* nespal.d */, + B33FAEA8279BCE900013AAD8 /* bmpfile.lst */, + B33FAEA9279BCE900013AAD8 /* mcsave_ee.o */, + B33FAEAA279BCE900013AAD8 /* pathext.lst */, + B33FAEAB279BCE900013AAD8 /* gslist.o */, + B33FAEAC279BCE900013AAD8 /* zutil.lst */, + B33FAEAD279BCE900013AAD8 /* deflate.d */, + B33FAEAE279BCE900013AAD8 /* surface.o */, + B33FAEAF279BCE900013AAD8 /* compress.d */, + B33FAEB0279BCE900013AAD8 /* snppu.d */, + B33FAEB1279BCE900013AAD8 /* sndisasm.o */, + B33FAEB2279BCE900013AAD8 /* infutil.d */, + B33FAEB3279BCE900013AAD8 /* emumovie.d */, + B33FAEB4279BCE900013AAD8 /* sn65816.sp */, + B33FAEB5279BCE900013AAD8 /* snio.lst */, + B33FAEB6279BCE900013AAD8 /* inffast.lst */, + B33FAEB7279BCE900013AAD8 /* gpprim.lst */, + B33FAEB8279BCE900013AAD8 /* libxmtap.lst */, + B33FAEB9279BCE900013AAD8 /* memcard.d */, + B33FAEBA279BCE900013AAD8 /* cdvd_rpc.o */, + B33FAEBB279BCE900013AAD8 /* emumovie.lst */, + B33FAEBC279BCE900013AAD8 /* snspcrom.lst */, + B33FAEBD279BCE900013AAD8 /* exceptions.lst */, + B33FAEBE279BCE900013AAD8 /* cd.lst */, + B33FAEBF279BCE900013AAD8 /* snppucolor.o */, + B33FAEC0279BCE900013AAD8 /* snppu.lst */, + B33FAEC1279BCE900013AAD8 /* sjpcm_rpc.o */, + B33FAEC2279BCE900013AAD8 /* libxpad.d */, + B33FAEC3279BCE900013AAD8 /* bmpfile.o */, + B33FAEC4279BCE900013AAD8 /* snppubg.d */, + B33FAEC5279BCE900013AAD8 /* nescpu.d */, + B33FAEC6279BCE900013AAD8 /* snppurender.lst */, + B33FAEC7279BCE900013AAD8 /* SNESticle.map */, + B33FAEC8279BCE900013AAD8 /* file.o */, + B33FAEC9279BCE900013AAD8 /* infcodes.o */, + B33FAECA279BCE900013AAD8 /* libxmtap.d */, + B33FAECB279BCE900013AAD8 /* inflate.lst */, + B33FAECC279BCE900013AAD8 /* netplay_ee.lst */, + B33FAECD279BCE900013AAD8 /* snio.o */, + B33FAECE279BCE900013AAD8 /* vram.lst */, + B33FAECF279BCE900013AAD8 /* deflate.lst */, + B33FAED0279BCE900013AAD8 /* exceptions.o */, + B33FAED1279BCE900013AAD8 /* font_04b16b.o */, + B33FAED2279BCE900013AAD8 /* nesspumix.o */, + B33FAED3279BCE900013AAD8 /* font.d */, + B33FAED4279BCE900013AAD8 /* texture.d */, + B33FAED5279BCE900013AAD8 /* input.lst */, + B33FAED6279BCE900013AAD8 /* sncpu_c.lst */, + B33FAED7279BCE900013AAD8 /* unreduce.o */, + B33FAED8279BCE900013AAD8 /* dataio.o */, + B33FAED9279BCE900013AAD8 /* gs.d */, + B33FAEDA279BCE900013AAD8 /* titleman.d */, + B33FAEDB279BCE900013AAD8 /* infblock.d */, + B33FAEDC279BCE900013AAD8 /* trees.o */, + B33FAEDD279BCE900013AAD8 /* snstate.d */, + B33FAEDE279BCE900013AAD8 /* nesspu.d */, + B33FAEDF279BCE900013AAD8 /* memcard.lst */, + B33FAEE0279BCE900013AAD8 /* ndisasm.d */, + B33FAEE1279BCE900013AAD8 /* pixelformat.d */, + B33FAEE2279BCE900013AAD8 /* infutil.lst */, + B33FAEE3279BCE900013AAD8 /* nescpu.lst */, + B33FAEE4279BCE900013AAD8 /* snrom.o */, + B33FAEE5279BCE900013AAD8 /* pixelformat.lst */, + B33FAEE6279BCE900013AAD8 /* snppuobj.o */, + B33FAEE7279BCE900013AAD8 /* wavfile.o */, + B33FAEE8279BCE900013AAD8 /* inffast.o */, + B33FAEE9279BCE900013AAD8 /* adler32.o */, + B33FAEEA279BCE900013AAD8 /* sndma.lst */, + B33FAEEB279BCE900013AAD8 /* uiMenu.lst */, + B33FAEEC279BCE900013AAD8 /* snmask128.o */, + B33FAEED279BCE900013AAD8 /* snppurender8.o */, + B33FAEEE279BCE900013AAD8 /* snspcio.o */, + B33FAEEF279BCE900013AAD8 /* ncpu_c.o */, + B33FAEF0279BCE900013AAD8 /* excepHandler.d */, + B33FAEF1279BCE900013AAD8 /* prof.d */, + B33FAEF2279BCE900013AAD8 /* nesio.o */, + B33FAEF3279BCE900013AAD8 /* nesppu.d */, + B33FAEF4279BCE900013AAD8 /* inputdevice.d */, + B33FAEF5279BCE900013AAD8 /* infcodes.lst */, + B33FAEF6279BCE900013AAD8 /* sn65816.lst */, + B33FAEF7279BCE900013AAD8 /* snspcbrr.o */, + B33FAEF8279BCE900013AAD8 /* gslist.lst */, + B33FAEF9279BCE900013AAD8 /* snspcdsp.d */, + B33FAEFA279BCE900013AAD8 /* emurom.o */, + B33FAEFB279BCE900013AAD8 /* emurom.lst */, + B33FAEFC279BCE900013AAD8 /* adler32.lst */, + B33FAEFD279BCE900013AAD8 /* gzio.o */, + B33FAEFE279BCE900013AAD8 /* crt0.d */, + B33FAEFF279BCE900013AAD8 /* gpfifo.d */, + B33FAF00279BCE900013AAD8 /* trees.lst */, + B33FAF01279BCE900013AAD8 /* snes.d */, + B33FAF02279BCE900013AAD8 /* crc32.d */, + B33FAF03279BCE900013AAD8 /* netplay_ee.d */, + B33FAF04279BCE900013AAD8 /* snspcmix.o */, + B33FAF05279BCE900013AAD8 /* unshrink.d */, + B33FAF06279BCE900013AAD8 /* rendersurface.o */, + B33FAF07279BCE900013AAD8 /* ps2dma.o */, + B33FAF08279BCE900013AAD8 /* nesppurender.o */, + B33FAF09279BCE900013AAD8 /* snmemmap.lst */, + B33FAF0A279BCE900013AAD8 /* n6502.d */, + B33FAF0B279BCE900013AAD8 /* snppurender.d */, + B33FAF0C279BCE900013AAD8 /* uiLog.d */, + B33FAF0D279BCE900013AAD8 /* nes.o */, + B33FAF0E279BCE900013AAD8 /* proflog.o */, + B33FAF0F279BCE900013AAD8 /* snppucolor.lst */, + B33FAF10279BCE900013AAD8 /* snesreg.d */, + B33FAF11279BCE900013AAD8 /* uiBrowser.d */, + B33FAF12279BCE900013AAD8 /* mainloop.d */, + B33FAF13279BCE900013AAD8 /* snspc.o */, + B33FAF14279BCE900013AAD8 /* surface.lst */, + B33FAF15279BCE900013AAD8 /* gpfifo.lst */, + B33FAF16279BCE900013AAD8 /* snspcdsp.lst */, + B33FAF17279BCE900013AAD8 /* snspcbrr.lst */, + B33FAF18279BCE900013AAD8 /* memcard_icon.inc */, + B33FAF19279BCE900013AAD8 /* explode.lst */, + B33FAF1A279BCE900013AAD8 /* uiBrowser.lst */, + B33FAF1B279BCE900013AAD8 /* sncpu_c.d */, + B33FAF1C279BCE900013AAD8 /* titleman.lst */, + B33FAF1D279BCE900013AAD8 /* dataio.lst */, + B33FAF1E279BCE900013AAD8 /* nesmmu.d */, + B33FAF1F279BCE900013AAD8 /* input.d */, + B33FAF20279BCE900013AAD8 /* sncpu.lst */, + B33FAF21279BCE900013AAD8 /* uiMenu.d */, + B33FAF22279BCE900013AAD8 /* n6502.lst */, + B33FAF23279BCE900013AAD8 /* snes.lst */, + B33FAF24279BCE900013AAD8 /* console.d */, + B33FAF25279BCE900013AAD8 /* snspcrom.d */, + B33FAF26279BCE900013AAD8 /* snspc_c.o */, + B33FAF27279BCE900013AAD8 /* profctr.d */, + B33FAF28279BCE900013AAD8 /* cdvd_rpc.lst */, + B33FAF29279BCE900013AAD8 /* snmemmap.d */, + B33FAF2A279BCE900013AAD8 /* zutil.d */, + B33FAF2B279BCE900013AAD8 /* uiNetwork.d */, + B33FAF2C279BCE900013AAD8 /* main.d */, + B33FAF2D279BCE900013AAD8 /* sncpu.o */, + B33FAF2E279BCE900013AAD8 /* sjpcmbuffer.o */, + B33FAF2F279BCE900013AAD8 /* mixbuffer.d */, + B33FAF30279BCE900013AAD8 /* emusys.o */, + B33FAF31279BCE900013AAD8 /* gpprim.d */, + B33FAF32279BCE900013AAD8 /* uiNetwork.lst */, + B33FAF33279BCE900013AAD8 /* compress.o */, + B33FAF34279BCE900013AAD8 /* surface.d */, + B33FAF35279BCE900013AAD8 /* deflate.o */, + B33FAF36279BCE910013AAD8 /* excepHandler.lst */, + B33FAF37279BCE910013AAD8 /* snppubg.lst */, + B33FAF38279BCE910013AAD8 /* sndisasm.d */, + B33FAF39279BCE910013AAD8 /* unshrink.lst */, + B33FAF3A279BCE910013AAD8 /* snppu.o */, + B33FAF3B279BCE910013AAD8 /* mcsave_ee.d */, + B33FAF3C279BCE910013AAD8 /* nespal.o */, + B33FAF3D279BCE910013AAD8 /* sn65816.o */, + B33FAF3E279BCE910013AAD8 /* nesdisk.o */, + B33FAF3F279BCE910013AAD8 /* exceptions.sp */, + B33FAF40279BCE910013AAD8 /* mcsave_ee.lst */, + B33FAF41279BCE910013AAD8 /* vram.d */, + B33FAF42279BCE910013AAD8 /* proflog.lst */, + B33FAF43279BCE910013AAD8 /* memspace.d */, + B33FAF44279BCE910013AAD8 /* array.o */, + B33FAF45279BCE910013AAD8 /* nesppu.lst */, + B33FAF46279BCE910013AAD8 /* gslist.d */, + B33FAF47279BCE910013AAD8 /* main.lst */, + B33FAF48279BCE910013AAD8 /* rendersurface.lst */, + B33FAF49279BCE910013AAD8 /* mixbuffer.lst */, + B33FAF4A279BCE910013AAD8 /* snspcdisasm.d */, + B33FAF4B279BCE910013AAD8 /* sjpcm_rpc.lst */, + B33FAF4C279BCE910013AAD8 /* compress.lst */, + B33FAF4D279BCE910013AAD8 /* nesstate.lst */, + B33FAF4E279BCE910013AAD8 /* snppublend_gs.lst */, + B33FAF4F279BCE910013AAD8 /* explode.o */, + B33FAF50279BCE910013AAD8 /* unzip.o */, + B33FAF51279BCE910013AAD8 /* pathext.d */, + B33FAF52279BCE910013AAD8 /* snppublend_gs.d */, + B33FAF53279BCE910013AAD8 /* version.d */, + B33FAF54279BCE910013AAD8 /* inftrees.d */, + B33FAF55279BCE910013AAD8 /* nesstate.d */, + B33FAF56279BCE910013AAD8 /* sndma.d */, + B33FAF57279BCE910013AAD8 /* snspctimer.d */, + B33FAF58279BCE910013AAD8 /* inflate.o */, + B33FAF59279BCE910013AAD8 /* nesrom.d */, + B33FAF5A279BCE910013AAD8 /* hw.o */, + B33FAF5B279BCE910013AAD8 /* cd.d */, + B33FAF5C279BCE910013AAD8 /* inftrees.lst */, + B33FAF5D279BCE910013AAD8 /* uncompr.d */, + B33FAF5E279BCE910013AAD8 /* poly.o */, + B33FAF5F279BCE910013AAD8 /* texture.o */, + B33FAF60279BCE910013AAD8 /* font.o */, + B33FAF61279BCE910013AAD8 /* font_04b16b.d */, + B33FAF62279BCE910013AAD8 /* nesspumix.d */, + B33FAF63279BCE910013AAD8 /* snstate.o */, + B33FAF64279BCE910013AAD8 /* trees.d */, + B33FAF65279BCE910013AAD8 /* ncpu_c.lst */, + B33FAF66279BCE910013AAD8 /* infblock.o */, + B33FAF67279BCE910013AAD8 /* gs.o */, + B33FAF68279BCE910013AAD8 /* titleman.o */, + B33FAF69279BCE910013AAD8 /* nesspumix.lst */, + B33FAF6A279BCE910013AAD8 /* dataio.d */, + B33FAF6B279BCE910013AAD8 /* unreduce.d */, + B33FAF6C279BCE910013AAD8 /* snstate.lst */, + B33FAF6D279BCE910013AAD8 /* libxmtap.o */, + B33FAF6E279BCE910013AAD8 /* file.d */, + B33FAF6F279BCE910013AAD8 /* infcodes.d */, + B33FAF70279BCE910013AAD8 /* libxpad.lst */, + B33FAF71279BCE910013AAD8 /* array.lst */, + B33FAF72279BCE910013AAD8 /* exceptions.d */, + B33FAF73279BCE910013AAD8 /* memspace.lst */, + B33FAF74279BCE910013AAD8 /* snio.d */, + B33FAF75279BCE910013AAD8 /* sjpcm_rpc.d */, + B33FAF76279BCE910013AAD8 /* nespal.lst */, + B33FAF77279BCE910013AAD8 /* profctr.lst */, + B33FAF78279BCE910013AAD8 /* inputdevice.lst */, + B33FAF79279BCE910013AAD8 /* file.lst */, + B33FAF7A279BCE910013AAD8 /* infblock.lst */, + B33FAF7B279BCE910013AAD8 /* snppucolor.d */, + B33FAF7C279BCE910013AAD8 /* nescpu.o */, + B33FAF7D279BCE910013AAD8 /* snppurender8.lst */, + B33FAF7E279BCE910013AAD8 /* snppubg.o */, + B33FAF7F279BCE910013AAD8 /* gs.lst */, + B33FAF80279BCE910013AAD8 /* bmpfile.d */, + B33FAF81279BCE910013AAD8 /* libxpad.o */, + B33FAF82279BCE910013AAD8 /* emumovie.o */, + B33FAF83279BCE910013AAD8 /* infutil.o */, + B33FAF84279BCE910013AAD8 /* uncompr.lst */, + B33FAF85279BCE910013AAD8 /* cdvd_rpc.d */, + B33FAF86279BCE910013AAD8 /* memcard.o */, + B33FAF87279BCE910013AAD8 /* snspcmix.d */, + B33FAF88279BCE910013AAD8 /* unshrink.o */, + B33FAF89279BCE910013AAD8 /* netplay_ee.o */, + B33FAF8A279BCE910013AAD8 /* wavfile.lst */, + B33FAF8B279BCE910013AAD8 /* crc32.o */, + B33FAF8C279BCE910013AAD8 /* snes.o */, + B33FAF8D279BCE910013AAD8 /* gpfifo.o */, + B33FAF8E279BCE910013AAD8 /* proflog.d */, + B33FAF8F279BCE910013AAD8 /* nes.d */, + B33FAF90279BCE910013AAD8 /* snppurender.o */, + B33FAF91279BCE910013AAD8 /* n6502.o */, + B33FAF92279BCE910013AAD8 /* uiLog.o */, + B33FAF93279BCE910013AAD8 /* nesppurender.d */, + B33FAF94279BCE910013AAD8 /* ps2dma.d */, + B33FAF95279BCE910013AAD8 /* rendersurface.d */, + B33FAF96279BCE910013AAD8 /* nesspu.lst */, + B33FAF97279BCE910013AAD8 /* snspcbrr.d */, + B33FAF98279BCE910013AAD8 /* inputdevice.o */, + B33FAF99279BCE910013AAD8 /* nesppu.o */, + B33FAF9A279BCE910013AAD8 /* snspcio.lst */, + B33FAF9B279BCE910013AAD8 /* nesppurender.lst */, + B33FAF9C279BCE910013AAD8 /* nesio.d */, + B33FAF9D279BCE910013AAD8 /* crt0.o */, + B33FAF9E279BCE910013AAD8 /* gzio.d */, + B33FAF9F279BCE910013AAD8 /* snspcdsp.o */, + B33FAFA0279BCE910013AAD8 /* emurom.d */, + B33FAFA1279BCE910013AAD8 /* snppuobj.lst */, + B33FAFA2279BCE910013AAD8 /* adler32.d */, + B33FAFA3279BCE910013AAD8 /* inffast.d */, + B33FAFA4279BCE910013AAD8 /* snrom.d */, + B33FAFA5279BCE910013AAD8 /* wavfile.d */, + B33FAFA6279BCE910013AAD8 /* snppuobj.d */, + B33FAFA7279BCE910013AAD8 /* ncpu_c.d */, + B33FAFA8279BCE910013AAD8 /* excepHandler.o */, + B33FAFA9279BCE910013AAD8 /* prof.o */, + B33FAFAA279BCE910013AAD8 /* snspcio.d */, + B33FAFAB279BCE910013AAD8 /* unreduce.lst */, + B33FAFAC279BCE910013AAD8 /* snppurender8.d */, + B33FAFAD279BCE910013AAD8 /* snmask128.d */, + B33FAFAE279BCE910013AAD8 /* sjpcmbuffer.lst */, + B33FAFAF279BCE910013AAD8 /* pixelformat.o */, + B33FAFB0279BCE910013AAD8 /* ndisasm.o */, + B33FAFB1279BCE910013AAD8 /* snmask128.lst */, + B33FAFB2279BCE910013AAD8 /* snrom.lst */, + B33FAFB3279BCE910013AAD8 /* nesspu.o */, + B33FAFB4279BCE910013AAD8 /* ndisasm.lst */, + B33FAFB5279BCE910013AAD8 /* gzio.lst */, + ); + path = "debug_EE3.2.2-b1"; + sourceTree = ""; + }; + B33FAFB6279BCE910013AAD8 /* release_EE3.2.2-b1 */ = { + isa = PBXGroup; + children = ( + B33FAFB7279BCE910013AAD8 /* mixbuffer.o */, + B33FAFB8279BCE910013AAD8 /* version.lst */, + B33FAFB9279BCE910013AAD8 /* main.o */, + B33FAFBA279BCE910013AAD8 /* sjpcmbuffer.d */, + B33FAFBB279BCE910013AAD8 /* sncpu.d */, + B33FAFBC279BCE910013AAD8 /* nesdisk.lst */, + B33FAFBD279BCE910013AAD8 /* console.lst */, + B33FAFBE279BCE910013AAD8 /* emusys.d */, + B33FAFBF279BCE910013AAD8 /* nesio.lst */, + B33FAFC0279BCE910013AAD8 /* gpprim.o */, + B33FAFC1279BCE910013AAD8 /* snspc_c.d */, + B33FAFC2279BCE910013AAD8 /* hw.lst */, + B33FAFC3279BCE910013AAD8 /* console.o */, + B33FAFC4279BCE910013AAD8 /* snspcrom.o */, + B33FAFC5279BCE910013AAD8 /* nesmmu.lst */, + B33FAFC6279BCE910013AAD8 /* uiNetwork.o */, + B33FAFC7279BCE910013AAD8 /* snmemmap.o */, + B33FAFC8279BCE910013AAD8 /* zutil.o */, + B33FAFC9279BCE910013AAD8 /* snspc.lst */, + B33FAFCA279BCE910013AAD8 /* snspc_c.lst */, + B33FAFCB279BCE910013AAD8 /* prof.lst */, + B33FAFCC279BCE910013AAD8 /* profctr.o */, + B33FAFCD279BCE910013AAD8 /* crc32.lst */, + B33FAFCE279BCE910013AAD8 /* nes.lst */, + B33FAFCF279BCE910013AAD8 /* unzip.lst */, + B33FAFD0279BCE910013AAD8 /* sncpu_c.o */, + B33FAFD1279BCE910013AAD8 /* snesreg.lst */, + B33FAFD2279BCE910013AAD8 /* mainloop.lst */, + B33FAFD3279BCE910013AAD8 /* uiMenu.o */, + B33FAFD4279BCE910013AAD8 /* poly.lst */, + B33FAFD5279BCE910013AAD8 /* input.o */, + B33FAFD6279BCE910013AAD8 /* nesmmu.o */, + B33FAFD7279BCE910013AAD8 /* crt0.lst */, + B33FAFD8279BCE910013AAD8 /* font.lst */, + B33FAFD9279BCE910013AAD8 /* snspc.d */, + B33FAFDA279BCE910013AAD8 /* mainloop.o */, + B33FAFDB279BCE910013AAD8 /* uiBrowser.o */, + B33FAFDC279BCE910013AAD8 /* snesreg.o */, + B33FAFDD279BCE910013AAD8 /* emusys.lst */, + B33FAFDE279BCE910013AAD8 /* nesrom.lst */, + B33FAFDF279BCE910013AAD8 /* inflate.d */, + B33FAFE0279BCE910013AAD8 /* snspctimer.o */, + B33FAFE1279BCE910013AAD8 /* snspctimer.lst */, + B33FAFE2279BCE910013AAD8 /* sndma.o */, + B33FAFE3279BCE910013AAD8 /* nesstate.o */, + B33FAFE4279BCE910013AAD8 /* inftrees.o */, + B33FAFE5279BCE910013AAD8 /* version.o */, + B33FAFE6279BCE910013AAD8 /* snppublend_gs.o */, + B33FAFE7279BCE910013AAD8 /* snspcdisasm.lst */, + B33FAFE8279BCE910013AAD8 /* texture.lst */, + B33FAFE9279BCE910013AAD8 /* poly.d */, + B33FAFEA279BCE910013AAD8 /* uncompr.o */, + B33FAFEB279BCE910013AAD8 /* nesrom.o */, + B33FAFEC279BCE910013AAD8 /* hw.d */, + B33FAFED279BCE910013AAD8 /* cd.o */, + B33FAFEE279BCE910013AAD8 /* SNESticle.elf */, + B33FAFEF279BCE910013AAD8 /* uiLog.lst */, + B33FAFF0279BCE910013AAD8 /* snspcdisasm.o */, + B33FAFF1279BCE910013AAD8 /* font_04b16b.lst */, + B33FAFF2279BCE910013AAD8 /* pathext.o */, + B33FAFF3279BCE910013AAD8 /* unzip.d */, + B33FAFF4279BCE910013AAD8 /* explode.d */, + B33FAFF5279BCE910013AAD8 /* sndisasm.lst */, + B33FAFF6279BCE910013AAD8 /* array.d */, + B33FAFF7279BCE910013AAD8 /* snspcmix.lst */, + B33FAFF8279BCE910013AAD8 /* memspace.o */, + B33FAFF9279BCE910013AAD8 /* vram.o */, + B33FAFFA279BCE910013AAD8 /* ps2dma.lst */, + B33FAFFB279BCE910013AAD8 /* nesdisk.d */, + B33FAFFC279BCE910013AAD8 /* sn65816.d */, + B33FAFFD279BCE910013AAD8 /* nespal.d */, + B33FAFFE279BCE910013AAD8 /* bmpfile.lst */, + B33FAFFF279BCE910013AAD8 /* mcsave_ee.o */, + B33FB000279BCE910013AAD8 /* pathext.lst */, + B33FB001279BCE910013AAD8 /* gslist.o */, + B33FB002279BCE910013AAD8 /* zutil.lst */, + B33FB003279BCE910013AAD8 /* deflate.d */, + B33FB004279BCE910013AAD8 /* surface.o */, + B33FB005279BCE910013AAD8 /* compress.d */, + B33FB006279BCE910013AAD8 /* snppu.d */, + B33FB007279BCE910013AAD8 /* sndisasm.o */, + B33FB008279BCE910013AAD8 /* infutil.d */, + B33FB009279BCE910013AAD8 /* emumovie.d */, + B33FB00A279BCE910013AAD8 /* sn65816.sp */, + B33FB00B279BCE910013AAD8 /* snio.lst */, + B33FB00C279BCE910013AAD8 /* inffast.lst */, + B33FB00D279BCE910013AAD8 /* gpprim.lst */, + B33FB00E279BCE910013AAD8 /* libxmtap.lst */, + B33FB00F279BCE910013AAD8 /* memcard.d */, + B33FB010279BCE910013AAD8 /* cdvd_rpc.o */, + B33FB011279BCE910013AAD8 /* emumovie.lst */, + B33FB012279BCE910013AAD8 /* snspcrom.lst */, + B33FB013279BCE910013AAD8 /* exceptions.lst */, + B33FB014279BCE910013AAD8 /* cd.lst */, + B33FB015279BCE910013AAD8 /* snppucolor.o */, + B33FB016279BCE910013AAD8 /* snppu.lst */, + B33FB017279BCE910013AAD8 /* sjpcm_rpc.o */, + B33FB018279BCE910013AAD8 /* libxpad.d */, + B33FB019279BCE910013AAD8 /* bmpfile.o */, + B33FB01A279BCE910013AAD8 /* snppubg.d */, + B33FB01B279BCE910013AAD8 /* nescpu.d */, + B33FB01C279BCE910013AAD8 /* snppurender.lst */, + B33FB01D279BCE910013AAD8 /* SNESticle.map */, + B33FB01E279BCE910013AAD8 /* file.o */, + B33FB01F279BCE910013AAD8 /* infcodes.o */, + B33FB020279BCE910013AAD8 /* libxmtap.d */, + B33FB021279BCE910013AAD8 /* inflate.lst */, + B33FB022279BCE910013AAD8 /* netplay_ee.lst */, + B33FB023279BCE910013AAD8 /* snio.o */, + B33FB024279BCE910013AAD8 /* vram.lst */, + B33FB025279BCE910013AAD8 /* deflate.lst */, + B33FB026279BCE910013AAD8 /* exceptions.o */, + B33FB027279BCE910013AAD8 /* font_04b16b.o */, + B33FB028279BCE910013AAD8 /* nesspumix.o */, + B33FB029279BCE910013AAD8 /* font.d */, + B33FB02A279BCE910013AAD8 /* texture.d */, + B33FB02B279BCE910013AAD8 /* input.lst */, + B33FB02C279BCE910013AAD8 /* sncpu_c.lst */, + B33FB02D279BCE910013AAD8 /* unreduce.o */, + B33FB02E279BCE910013AAD8 /* dataio.o */, + B33FB02F279BCE910013AAD8 /* gs.d */, + B33FB030279BCE910013AAD8 /* titleman.d */, + B33FB031279BCE910013AAD8 /* infblock.d */, + B33FB032279BCE910013AAD8 /* trees.o */, + B33FB033279BCE910013AAD8 /* snstate.d */, + B33FB034279BCE910013AAD8 /* nesspu.d */, + B33FB035279BCE910013AAD8 /* memcard.lst */, + B33FB036279BCE910013AAD8 /* ndisasm.d */, + B33FB037279BCE910013AAD8 /* pixelformat.d */, + B33FB038279BCE910013AAD8 /* infutil.lst */, + B33FB039279BCE910013AAD8 /* nescpu.lst */, + B33FB03A279BCE910013AAD8 /* snrom.o */, + B33FB03B279BCE910013AAD8 /* pixelformat.lst */, + B33FB03C279BCE910013AAD8 /* snppuobj.o */, + B33FB03D279BCE910013AAD8 /* wavfile.o */, + B33FB03E279BCE910013AAD8 /* inffast.o */, + B33FB03F279BCE910013AAD8 /* adler32.o */, + B33FB040279BCE910013AAD8 /* sndma.lst */, + B33FB041279BCE910013AAD8 /* uiMenu.lst */, + B33FB042279BCE910013AAD8 /* snmask128.o */, + B33FB043279BCE910013AAD8 /* snppurender8.o */, + B33FB044279BCE910013AAD8 /* snspcio.o */, + B33FB045279BCE910013AAD8 /* ncpu_c.o */, + B33FB046279BCE910013AAD8 /* excepHandler.d */, + B33FB047279BCE910013AAD8 /* prof.d */, + B33FB048279BCE910013AAD8 /* nesio.o */, + B33FB049279BCE910013AAD8 /* nesppu.d */, + B33FB04A279BCE910013AAD8 /* inputdevice.d */, + B33FB04B279BCE910013AAD8 /* infcodes.lst */, + B33FB04C279BCE910013AAD8 /* sn65816.lst */, + B33FB04D279BCE910013AAD8 /* snspcbrr.o */, + B33FB04E279BCE910013AAD8 /* gslist.lst */, + B33FB04F279BCE910013AAD8 /* snspcdsp.d */, + B33FB050279BCE910013AAD8 /* emurom.o */, + B33FB051279BCE910013AAD8 /* emurom.lst */, + B33FB052279BCE910013AAD8 /* adler32.lst */, + B33FB053279BCE910013AAD8 /* gzio.o */, + B33FB054279BCE910013AAD8 /* crt0.d */, + B33FB055279BCE910013AAD8 /* gpfifo.d */, + B33FB056279BCE910013AAD8 /* trees.lst */, + B33FB057279BCE910013AAD8 /* snes.d */, + B33FB058279BCE910013AAD8 /* crc32.d */, + B33FB059279BCE910013AAD8 /* netplay_ee.d */, + B33FB05A279BCE910013AAD8 /* snspcmix.o */, + B33FB05B279BCE910013AAD8 /* unshrink.d */, + B33FB05C279BCE910013AAD8 /* rendersurface.o */, + B33FB05D279BCE910013AAD8 /* ps2dma.o */, + B33FB05E279BCE910013AAD8 /* nesppurender.o */, + B33FB05F279BCE910013AAD8 /* snmemmap.lst */, + B33FB060279BCE910013AAD8 /* n6502.d */, + B33FB061279BCE910013AAD8 /* snppurender.d */, + B33FB062279BCE910013AAD8 /* uiLog.d */, + B33FB063279BCE910013AAD8 /* nes.o */, + B33FB064279BCE910013AAD8 /* proflog.o */, + B33FB065279BCE910013AAD8 /* snppucolor.lst */, + B33FB066279BCE910013AAD8 /* snesreg.d */, + B33FB067279BCE910013AAD8 /* uiBrowser.d */, + B33FB068279BCE910013AAD8 /* mainloop.d */, + B33FB069279BCE910013AAD8 /* snspc.o */, + B33FB06A279BCE910013AAD8 /* surface.lst */, + B33FB06B279BCE910013AAD8 /* gpfifo.lst */, + B33FB06C279BCE910013AAD8 /* snspcdsp.lst */, + B33FB06D279BCE910013AAD8 /* snspcbrr.lst */, + B33FB06E279BCE910013AAD8 /* memcard_icon.inc */, + B33FB06F279BCE910013AAD8 /* explode.lst */, + B33FB070279BCE910013AAD8 /* uiBrowser.lst */, + B33FB071279BCE910013AAD8 /* sncpu_c.d */, + B33FB072279BCE910013AAD8 /* titleman.lst */, + B33FB073279BCE910013AAD8 /* dataio.lst */, + B33FB074279BCE910013AAD8 /* nesmmu.d */, + B33FB075279BCE910013AAD8 /* input.d */, + B33FB076279BCE910013AAD8 /* sncpu.lst */, + B33FB077279BCE910013AAD8 /* uiMenu.d */, + B33FB078279BCE910013AAD8 /* n6502.lst */, + B33FB079279BCE910013AAD8 /* snes.lst */, + B33FB07A279BCE910013AAD8 /* console.d */, + B33FB07B279BCE910013AAD8 /* snspcrom.d */, + B33FB07C279BCE910013AAD8 /* snspc_c.o */, + B33FB07D279BCE910013AAD8 /* profctr.d */, + B33FB07E279BCE910013AAD8 /* cdvd_rpc.lst */, + B33FB07F279BCE910013AAD8 /* snmemmap.d */, + B33FB080279BCE910013AAD8 /* zutil.d */, + B33FB081279BCE910013AAD8 /* uiNetwork.d */, + B33FB082279BCE910013AAD8 /* main.d */, + B33FB083279BCE910013AAD8 /* sncpu.o */, + B33FB084279BCE910013AAD8 /* sjpcmbuffer.o */, + B33FB085279BCE910013AAD8 /* mixbuffer.d */, + B33FB086279BCE910013AAD8 /* emusys.o */, + B33FB087279BCE910013AAD8 /* gpprim.d */, + B33FB088279BCE910013AAD8 /* uiNetwork.lst */, + B33FB089279BCE910013AAD8 /* compress.o */, + B33FB08A279BCE910013AAD8 /* surface.d */, + B33FB08B279BCE910013AAD8 /* deflate.o */, + B33FB08C279BCE910013AAD8 /* excepHandler.lst */, + B33FB08D279BCE910013AAD8 /* snppubg.lst */, + B33FB08E279BCE910013AAD8 /* sndisasm.d */, + B33FB08F279BCE910013AAD8 /* unshrink.lst */, + B33FB090279BCE910013AAD8 /* snppu.o */, + B33FB091279BCE910013AAD8 /* mcsave_ee.d */, + B33FB092279BCE910013AAD8 /* nespal.o */, + B33FB093279BCE920013AAD8 /* sn65816.o */, + B33FB094279BCE920013AAD8 /* nesdisk.o */, + B33FB095279BCE920013AAD8 /* exceptions.sp */, + B33FB096279BCE920013AAD8 /* mcsave_ee.lst */, + B33FB097279BCE920013AAD8 /* vram.d */, + B33FB098279BCE920013AAD8 /* proflog.lst */, + B33FB099279BCE920013AAD8 /* memspace.d */, + B33FB09A279BCE920013AAD8 /* array.o */, + B33FB09B279BCE920013AAD8 /* nesppu.lst */, + B33FB09C279BCE920013AAD8 /* gslist.d */, + B33FB09D279BCE920013AAD8 /* main.lst */, + B33FB09E279BCE920013AAD8 /* rendersurface.lst */, + B33FB09F279BCE920013AAD8 /* mixbuffer.lst */, + B33FB0A0279BCE920013AAD8 /* snspcdisasm.d */, + B33FB0A1279BCE920013AAD8 /* sjpcm_rpc.lst */, + B33FB0A2279BCE920013AAD8 /* compress.lst */, + B33FB0A3279BCE920013AAD8 /* nesstate.lst */, + B33FB0A4279BCE920013AAD8 /* snppublend_gs.lst */, + B33FB0A5279BCE920013AAD8 /* explode.o */, + B33FB0A6279BCE920013AAD8 /* unzip.o */, + B33FB0A7279BCE920013AAD8 /* pathext.d */, + B33FB0A8279BCE920013AAD8 /* snppublend_gs.d */, + B33FB0A9279BCE920013AAD8 /* version.d */, + B33FB0AA279BCE920013AAD8 /* inftrees.d */, + B33FB0AB279BCE920013AAD8 /* nesstate.d */, + B33FB0AC279BCE920013AAD8 /* sndma.d */, + B33FB0AD279BCE920013AAD8 /* snspctimer.d */, + B33FB0AE279BCE920013AAD8 /* inflate.o */, + B33FB0AF279BCE920013AAD8 /* nesrom.d */, + B33FB0B0279BCE920013AAD8 /* hw.o */, + B33FB0B1279BCE920013AAD8 /* cd.d */, + B33FB0B2279BCE920013AAD8 /* inftrees.lst */, + B33FB0B3279BCE920013AAD8 /* uncompr.d */, + B33FB0B4279BCE920013AAD8 /* poly.o */, + B33FB0B5279BCE920013AAD8 /* texture.o */, + B33FB0B6279BCE920013AAD8 /* font.o */, + B33FB0B7279BCE920013AAD8 /* font_04b16b.d */, + B33FB0B8279BCE920013AAD8 /* nesspumix.d */, + B33FB0B9279BCE920013AAD8 /* snstate.o */, + B33FB0BA279BCE920013AAD8 /* trees.d */, + B33FB0BB279BCE920013AAD8 /* ncpu_c.lst */, + B33FB0BC279BCE920013AAD8 /* infblock.o */, + B33FB0BD279BCE920013AAD8 /* gs.o */, + B33FB0BE279BCE920013AAD8 /* titleman.o */, + B33FB0BF279BCE920013AAD8 /* nesspumix.lst */, + B33FB0C0279BCE920013AAD8 /* dataio.d */, + B33FB0C1279BCE920013AAD8 /* unreduce.d */, + B33FB0C2279BCE920013AAD8 /* snstate.lst */, + B33FB0C3279BCE920013AAD8 /* libxmtap.o */, + B33FB0C4279BCE920013AAD8 /* file.d */, + B33FB0C5279BCE920013AAD8 /* infcodes.d */, + B33FB0C6279BCE920013AAD8 /* libxpad.lst */, + B33FB0C7279BCE920013AAD8 /* array.lst */, + B33FB0C8279BCE920013AAD8 /* exceptions.d */, + B33FB0C9279BCE920013AAD8 /* memspace.lst */, + B33FB0CA279BCE920013AAD8 /* snio.d */, + B33FB0CB279BCE920013AAD8 /* sjpcm_rpc.d */, + B33FB0CC279BCE920013AAD8 /* nespal.lst */, + B33FB0CD279BCE920013AAD8 /* profctr.lst */, + B33FB0CE279BCE920013AAD8 /* inputdevice.lst */, + B33FB0CF279BCE920013AAD8 /* file.lst */, + B33FB0D0279BCE920013AAD8 /* infblock.lst */, + B33FB0D1279BCE920013AAD8 /* snppucolor.d */, + B33FB0D2279BCE920013AAD8 /* nescpu.o */, + B33FB0D3279BCE920013AAD8 /* snppurender8.lst */, + B33FB0D4279BCE920013AAD8 /* snppubg.o */, + B33FB0D5279BCE920013AAD8 /* gs.lst */, + B33FB0D6279BCE920013AAD8 /* bmpfile.d */, + B33FB0D7279BCE920013AAD8 /* libxpad.o */, + B33FB0D8279BCE920013AAD8 /* emumovie.o */, + B33FB0D9279BCE920013AAD8 /* infutil.o */, + B33FB0DA279BCE920013AAD8 /* uncompr.lst */, + B33FB0DB279BCE920013AAD8 /* cdvd_rpc.d */, + B33FB0DC279BCE920013AAD8 /* memcard.o */, + B33FB0DD279BCE920013AAD8 /* snspcmix.d */, + B33FB0DE279BCE920013AAD8 /* unshrink.o */, + B33FB0DF279BCE920013AAD8 /* netplay_ee.o */, + B33FB0E0279BCE920013AAD8 /* wavfile.lst */, + B33FB0E1279BCE920013AAD8 /* crc32.o */, + B33FB0E2279BCE920013AAD8 /* snes.o */, + B33FB0E3279BCE920013AAD8 /* gpfifo.o */, + B33FB0E4279BCE920013AAD8 /* proflog.d */, + B33FB0E5279BCE920013AAD8 /* nes.d */, + B33FB0E6279BCE920013AAD8 /* snppurender.o */, + B33FB0E7279BCE920013AAD8 /* n6502.o */, + B33FB0E8279BCE920013AAD8 /* uiLog.o */, + B33FB0E9279BCE920013AAD8 /* nesppurender.d */, + B33FB0EA279BCE920013AAD8 /* ps2dma.d */, + B33FB0EB279BCE920013AAD8 /* rendersurface.d */, + B33FB0EC279BCE920013AAD8 /* nesspu.lst */, + B33FB0ED279BCE920013AAD8 /* snspcbrr.d */, + B33FB0EE279BCE920013AAD8 /* inputdevice.o */, + B33FB0EF279BCE920013AAD8 /* nesppu.o */, + B33FB0F0279BCE920013AAD8 /* snspcio.lst */, + B33FB0F1279BCE920013AAD8 /* nesppurender.lst */, + B33FB0F2279BCE920013AAD8 /* nesio.d */, + B33FB0F3279BCE920013AAD8 /* crt0.o */, + B33FB0F4279BCE920013AAD8 /* gzio.d */, + B33FB0F5279BCE920013AAD8 /* snspcdsp.o */, + B33FB0F6279BCE920013AAD8 /* emurom.d */, + B33FB0F7279BCE920013AAD8 /* snppuobj.lst */, + B33FB0F8279BCE920013AAD8 /* adler32.d */, + B33FB0F9279BCE920013AAD8 /* inffast.d */, + B33FB0FA279BCE920013AAD8 /* snrom.d */, + B33FB0FB279BCE920013AAD8 /* wavfile.d */, + B33FB0FC279BCE920013AAD8 /* snppuobj.d */, + B33FB0FD279BCE920013AAD8 /* ncpu_c.d */, + B33FB0FE279BCE920013AAD8 /* excepHandler.o */, + B33FB0FF279BCE920013AAD8 /* prof.o */, + B33FB100279BCE920013AAD8 /* snspcio.d */, + B33FB101279BCE920013AAD8 /* unreduce.lst */, + B33FB102279BCE920013AAD8 /* snppurender8.d */, + B33FB103279BCE920013AAD8 /* snmask128.d */, + B33FB104279BCE920013AAD8 /* sjpcmbuffer.lst */, + B33FB105279BCE920013AAD8 /* pixelformat.o */, + B33FB106279BCE920013AAD8 /* ndisasm.o */, + B33FB107279BCE920013AAD8 /* snmask128.lst */, + B33FB108279BCE920013AAD8 /* snrom.lst */, + B33FB109279BCE920013AAD8 /* nesspu.o */, + B33FB10A279BCE920013AAD8 /* ndisasm.lst */, + B33FB10B279BCE920013AAD8 /* gzio.lst */, + ); + path = "release_EE3.2.2-b1"; + sourceTree = ""; + }; + B33FB117279BCE920013AAD8 /* win32 */ = { + isa = PBXGroup; + children = ( + B33FB118279BCE920013AAD8 /* win32.vcproj.vspscc */, + B33FB119279BCE920013AAD8 /* win32.vcproj */, + B33FB11A279BCE920013AAD8 /* Debug */, + ); + path = win32; + sourceTree = ""; + }; + B33FB11A279BCE920013AAD8 /* Debug */ = { + isa = PBXGroup; + children = ( + B33FB11B279BCE920013AAD8 /* snesmemview.obj */, + B33FB11C279BCE920013AAD8 /* textview.obj */, + B33FB11D279BCE920013AAD8 /* snesticle.exe */, + B33FB11E279BCE920013AAD8 /* snrom.obj */, + B33FB11F279BCE920013AAD8 /* Spc700.obj */, + B33FB120279BCE920013AAD8 /* snppuobj.obj */, + B33FB121279BCE920013AAD8 /* snspcio.obj */, + B33FB122279BCE920013AAD8 /* snmask.obj */, + B33FB123279BCE920013AAD8 /* snppurender8.obj */, + B33FB124279BCE920013AAD8 /* win32.pdb */, + B33FB125279BCE920013AAD8 /* snppublend_c.obj */, + B33FB126279BCE920013AAD8 /* snesticle.ilk */, + B33FB127279BCE920013AAD8 /* snstate.obj */, + B33FB128279BCE920013AAD8 /* memview.obj */, + B33FB129279BCE920013AAD8 /* snppubg.obj */, + B33FB12A279BCE920013AAD8 /* sneswin.obj */, + B33FB12B279BCE920013AAD8 /* gepres.res */, + B33FB12C279BCE920013AAD8 /* Cpuops.obj */, + B33FB12D279BCE920013AAD8 /* snspcbrr.obj */, + B33FB12E279BCE920013AAD8 /* snspcdsp.obj */, + B33FB12F279BCE920013AAD8 /* vc70.pdb */, + B33FB130279BCE920013AAD8 /* snes.obj */, + B33FB131279BCE920013AAD8 /* sncpu.obj */, + B33FB132279BCE920013AAD8 /* sndsp1.obj */, + B33FB133279BCE920013AAD8 /* snppucolor.obj */, + B33FB134279BCE920013AAD8 /* snmemmap.obj */, + B33FB135279BCE920013AAD8 /* sndma.obj */, + B33FB136279BCE920013AAD8 /* vc70.idb */, + B33FB137279BCE920013AAD8 /* BuildLog.htm */, + B33FB138279BCE920013AAD8 /* sncpu_c.obj */, + B33FB139279BCE920013AAD8 /* input.obj */, + B33FB13A279BCE920013AAD8 /* snspcrom.obj */, + B33FB13B279BCE920013AAD8 /* snio.obj */, + B33FB13C279BCE920013AAD8 /* snppurender.obj */, + B33FB13D279BCE920013AAD8 /* snppu.obj */, + B33FB13E279BCE920013AAD8 /* snspcmix.obj */, + B33FB13F279BCE920013AAD8 /* sndebug.obj */, + B33FB140279BCE920013AAD8 /* snspcdisasm.obj */, + B33FB141279BCE920013AAD8 /* snspctimer.obj */, + B33FB142279BCE920013AAD8 /* sndisasm.obj */, + B33FB143279BCE920013AAD8 /* mainloop.obj */, + B33FB144279BCE920013AAD8 /* snesreg.obj */, + B33FB145279BCE920013AAD8 /* snspc.obj */, + B33FB146279BCE920013AAD8 /* snspc_c.obj */, + ); + path = Debug; + sourceTree = ""; + }; + B33FB148279BCE920013AAD8 /* Modules */ = { + isa = PBXGroup; + children = ( + B33FB149279BCE920013AAD8 /* netplay */, + B33FB176279BCE920013AAD8 /* sjpcm */, + B33FB184279BCE920013AAD8 /* libcdvd */, + B33FB19E279BCE920013AAD8 /* mcsave */, + ); + path = Modules; + sourceTree = ""; + }; + B33FB149279BCE920013AAD8 /* netplay */ = { + isa = PBXGroup; + children = ( + B33FB14A279BCE920013AAD8 /* Source */, + B33FB16E279BCE920013AAD8 /* Project */, + ); + path = netplay; + sourceTree = ""; + }; + B33FB14A279BCE920013AAD8 /* Source */ = { + isa = PBXGroup; + children = ( + B33FB14B279BCE920013AAD8 /* ps2 */, + B33FB159279BCE920013AAD8 /* common */, + B33FB167279BCE920013AAD8 /* win32 */, + ); + path = Source; + sourceTree = ""; + }; + B33FB14B279BCE920013AAD8 /* ps2 */ = { + isa = PBXGroup; + children = ( + B33FB14C279BCE920013AAD8 /* ee */, + B33FB14F279BCE920013AAD8 /* common */, + B33FB151279BCE920013AAD8 /* iop */, + ); + path = ps2; + sourceTree = ""; + }; + B33FB14C279BCE920013AAD8 /* ee */ = { + isa = PBXGroup; + children = ( + B33FB14D279BCE920013AAD8 /* netplay_ee.c */, + B33FB14E279BCE920013AAD8 /* netplay_ee.h */, + ); + path = ee; + sourceTree = ""; + }; + B33FB14F279BCE920013AAD8 /* common */ = { + isa = PBXGroup; + children = ( + B33FB150279BCE920013AAD8 /* netplay_rpc.h */, + ); + path = common; + sourceTree = ""; + }; + B33FB151279BCE920013AAD8 /* iop */ = { + isa = PBXGroup; + children = ( + B33FB152279BCE920013AAD8 /* netprint.c */, + B33FB153279BCE920013AAD8 /* netsys.c */, + B33FB154279BCE920013AAD8 /* types.h */, + B33FB155279BCE920013AAD8 /* netprint.h */, + B33FB156279BCE920013AAD8 /* llnetsocket.h */, + B33FB157279BCE920013AAD8 /* netsys.h */, + B33FB158279BCE920013AAD8 /* netplay_iop.c */, + ); + path = iop; + sourceTree = ""; + }; + B33FB159279BCE920013AAD8 /* common */ = { + isa = PBXGroup; + children = ( + B33FB15A279BCE920013AAD8 /* netsocket.h */, + B33FB15B279BCE920013AAD8 /* netserver.h */, + B33FB15C279BCE920013AAD8 /* netrelay.h */, + B33FB15D279BCE920013AAD8 /* netqueue.c */, + B33FB15E279BCE920013AAD8 /* netclient.c */, + B33FB15F279BCE920013AAD8 /* netpacket.h */, + B33FB160279BCE920013AAD8 /* netserver.c */, + B33FB161279BCE920013AAD8 /* netsocket.c */, + B33FB162279BCE920013AAD8 /* netplay.h */, + B33FB163279BCE920013AAD8 /* netclient.h */, + B33FB164279BCE920013AAD8 /* netrelay.c */, + B33FB165279BCE920013AAD8 /* netqueue.h */, + B33FB166279BCE920013AAD8 /* netpacket.c */, + ); + path = common; + sourceTree = ""; + }; + B33FB167279BCE920013AAD8 /* win32 */ = { + isa = PBXGroup; + children = ( + B33FB168279BCE920013AAD8 /* netsys.c */, + B33FB169279BCE920013AAD8 /* types.h */, + B33FB16A279BCE920013AAD8 /* netplaymain.cpp */, + B33FB16B279BCE920013AAD8 /* netprint.h */, + B33FB16C279BCE920013AAD8 /* llnetsocket.h */, + B33FB16D279BCE920013AAD8 /* netsys.h */, + ); + path = win32; + sourceTree = ""; + }; + B33FB16E279BCE920013AAD8 /* Project */ = { + isa = PBXGroup; + children = ( + B33FB16F279BCE920013AAD8 /* ps2 */, + B33FB171279BCE920013AAD8 /* win32 */, + ); + path = Project; + sourceTree = ""; + }; + B33FB16F279BCE920013AAD8 /* ps2 */ = { + isa = PBXGroup; + children = ( + B33FB170279BCE920013AAD8 /* Makefile */, + ); + path = ps2; + sourceTree = ""; + }; + B33FB171279BCE920013AAD8 /* win32 */ = { + isa = PBXGroup; + children = ( + B33FB172279BCE920013AAD8 /* netplay.vcproj */, + B33FB173279BCE920013AAD8 /* netplay.vsscc */, + B33FB174279BCE920013AAD8 /* netplay.sln */, + B33FB175279BCE920013AAD8 /* ReadMe.txt */, + ); + path = win32; + sourceTree = ""; + }; + B33FB176279BCE920013AAD8 /* sjpcm */ = { + isa = PBXGroup; + children = ( + B33FB177279BCE920013AAD8 /* ee */, + B33FB17A279BCE920013AAD8 /* readme.txt */, + B33FB17B279BCE920013AAD8 /* license.txt */, + B33FB17C279BCE920013AAD8 /* iop */, + ); + path = sjpcm; + sourceTree = ""; + }; + B33FB177279BCE920013AAD8 /* ee */ = { + isa = PBXGroup; + children = ( + B33FB178279BCE920013AAD8 /* sjpcm.h */, + B33FB179279BCE920013AAD8 /* sjpcm_rpc.c */, + ); + path = ee; + sourceTree = ""; + }; + B33FB17C279BCE920013AAD8 /* iop */ = { + isa = PBXGroup; + children = ( + B33FB17D279BCE920013AAD8 /* sjpcm_irx.o */, + B33FB17E279BCE920013AAD8 /* Makefile */, + B33FB17F279BCE920013AAD8 /* sjpcm_new.irx */, + B33FB180279BCE920013AAD8 /* a.out */, + B33FB181279BCE920013AAD8 /* sjpcm_irx.c */, + B33FB182279BCE920013AAD8 /* hw.s */, + B33FB183279BCE920013AAD8 /* hw.o */, + ); + path = iop; + sourceTree = ""; + }; + B33FB184279BCE920013AAD8 /* libcdvd */ = { + isa = PBXGroup; + children = ( + B33FB185279BCE920013AAD8 /* Makefile */, + B33FB186279BCE920013AAD8 /* example */, + B33FB18B279BCE920013AAD8 /* ee */, + B33FB18F279BCE920013AAD8 /* docs */, + B33FB191279BCE920013AAD8 /* common */, + B33FB193279BCE920013AAD8 /* lib */, + B33FB196279BCE920013AAD8 /* license.txt */, + B33FB197279BCE920013AAD8 /* iop */, + ); + path = libcdvd; + sourceTree = ""; + }; + B33FB186279BCE920013AAD8 /* example */ = { + isa = PBXGroup; + children = ( + B33FB187279BCE920013AAD8 /* main.o */, + B33FB188279BCE920013AAD8 /* Makefile */, + B33FB189279BCE920013AAD8 /* example.elf */, + B33FB18A279BCE920013AAD8 /* main.c */, + ); + path = example; + sourceTree = ""; + }; + B33FB18B279BCE920013AAD8 /* ee */ = { + isa = PBXGroup; + children = ( + B33FB18C279BCE920013AAD8 /* cdvd_rpc.h */, + B33FB18D279BCE920013AAD8 /* Makefile */, + B33FB18E279BCE920013AAD8 /* cdvd_rpc.c */, + ); + path = ee; + sourceTree = ""; + }; + B33FB18F279BCE920013AAD8 /* docs */ = { + isa = PBXGroup; + children = ( + B33FB190279BCE920013AAD8 /* libcdvd_ref.pdf */, + ); + path = docs; + sourceTree = ""; + }; + B33FB191279BCE920013AAD8 /* common */ = { + isa = PBXGroup; + children = ( + B33FB192279BCE920013AAD8 /* cdvd.h */, + ); + path = common; + sourceTree = ""; + }; + B33FB193279BCE920013AAD8 /* lib */ = { + isa = PBXGroup; + children = ( + B33FB194279BCE920013AAD8 /* libcdvd.a */, + B33FB195279BCE920013AAD8 /* cdvd.irx */, + ); + path = lib; + sourceTree = ""; + }; + B33FB197279BCE920013AAD8 /* iop */ = { + isa = PBXGroup; + children = ( + B33FB198279BCE920013AAD8 /* cdvd_iop.c */, + B33FB199279BCE920013AAD8 /* Makefile */, + B33FB19A279BCE920013AAD8 /* cdvd_iop.o */, + B33FB19B279BCE920013AAD8 /* cdvd_iop.h */, + B33FB19C279BCE920013AAD8 /* iop_cdvdman.s */, + B33FB19D279BCE920013AAD8 /* iop_cdvdman.o */, + ); + path = iop; + sourceTree = ""; + }; + B33FB19E279BCE920013AAD8 /* mcsave */ = { + isa = PBXGroup; + children = ( + B33FB19F279BCE920013AAD8 /* ee */, + B33FB1A2279BCE920013AAD8 /* iop */, + ); + path = mcsave; + sourceTree = ""; + }; + B33FB19F279BCE920013AAD8 /* ee */ = { + isa = PBXGroup; + children = ( + B33FB1A0279BCE920013AAD8 /* mcsave_ee.h */, + B33FB1A1279BCE920013AAD8 /* mcsave_ee.c */, + ); + path = ee; + sourceTree = ""; + }; + B33FB1A2279BCE920013AAD8 /* iop */ = { + isa = PBXGroup; + children = ( + B33FB1A3279BCE920013AAD8 /* Makefile */, + B33FB1A4279BCE920013AAD8 /* mcsave_irx.c */, + B33FB1A5279BCE920013AAD8 /* mcsave.irx */, + B33FB1A6279BCE920013AAD8 /* mcsave_irx.o */, + ); + path = iop; + sourceTree = ""; + }; + B33FB1A7279BCE920013AAD8 /* Data */ = { + isa = PBXGroup; + children = ( + B33FB1A8279BCE920013AAD8 /* ps2 */, + B33FB1B7279BCE920013AAD8 /* font */, + B33FB1BE279BCE920013AAD8 /* icon */, + ); + path = Data; + sourceTree = ""; + }; + B33FB1A8279BCE920013AAD8 /* ps2 */ = { + isa = PBXGroup; + children = ( + B33FB1A9279BCE920013AAD8 /* nerocd.nri */, + B33FB1AA279BCE920013AAD8 /* makefile */, + B33FB1AB279BCE920013AAD8 /* patchiso */, + B33FB1AC279BCE920013AAD8 /* cdrwin_ps2dvd.fbl */, + B33FB1AD279BCE920013AAD8 /* cdrecord.exe */, + B33FB1AE279BCE920013AAD8 /* cdrwin_ps2cd.fbl */, + B33FB1AF279BCE920013AAD8 /* license.dat */, + B33FB1B0279BCE920013AAD8 /* CD */, + ); + path = ps2; + sourceTree = ""; + }; + B33FB1B0279BCE920013AAD8 /* CD */ = { + isa = PBXGroup; + children = ( + B33FB1B1279BCE920013AAD8 /* SRAMSAVE.IRX */, + B33FB1B2279BCE920013AAD8 /* DUMMY.DAT */, + B33FB1B3279BCE920013AAD8 /* SYSTEM.CNF */, + B33FB1B4279BCE920013AAD8 /* SLPS_999.99 */, + B33FB1B5279BCE920013AAD8 /* CDVD.IRX */, + B33FB1B6279BCE920013AAD8 /* SJPCM2.IRX */, + ); + path = CD; + sourceTree = ""; + }; + B33FB1B7279BCE920013AAD8 /* font */ = { + isa = PBXGroup; + children = ( + B33FB1B8279BCE920013AAD8 /* 04b16b.tga */, + B33FB1B9279BCE920013AAD8 /* 04b16b.fnt */, + B33FB1BA279BCE920013AAD8 /* 04b16b.raw */, + B33FB1BB279BCE920013AAD8 /* 04b16b.bmp */, + B33FB1BC279BCE920013AAD8 /* font_04b16b.c */, + B33FB1BD279BCE920013AAD8 /* 04b16b_32.psd */, + ); + path = font; + sourceTree = ""; + }; + B33FB1BE279BCE920013AAD8 /* icon */ = { + isa = PBXGroup; + children = ( + B33FB1BF279BCE920013AAD8 /* n64.jpg */, + B33FB1C0279BCE920013AAD8 /* snes1.bmp */, + B33FB1C1279BCE920013AAD8 /* snesticle_icon.bmp */, + B33FB1C2279BCE920013AAD8 /* memcard_icon.icn */, + B33FB1C3279BCE920013AAD8 /* nes.jpg */, + B33FB1C4279BCE920013AAD8 /* gamecube.jpg */, + B33FB1C5279BCE920013AAD8 /* atari.jpg */, + B33FB1C6279BCE920013AAD8 /* snes1.jpg */, + ); + path = icon; + sourceTree = ""; + }; + B33FB1C8279BCE920013AAD8 /* Gep */ = { + isa = PBXGroup; + children = ( + B33FB1C9279BCE920013AAD8 /* Include */, + B33FB218279BCE930013AAD8 /* Source */, + B33FB291279BCE930013AAD8 /* Project */, + ); + path = Gep; + sourceTree = ""; + }; + B33FB1C9279BCE920013AAD8 /* Include */ = { + isa = PBXGroup; + children = ( + B33FB1CA279BCE920013AAD8 /* con32 */, + B33FB1CE279BCE920013AAD8 /* ps2 */, + B33FB1E4279BCE920013AAD8 /* common */, + B33FB1FE279BCE920013AAD8 /* dc */, + B33FB207279BCE920013AAD8 /* win32 */, + ); + path = Include; + sourceTree = ""; + }; + B33FB1CA279BCE920013AAD8 /* con32 */ = { + isa = PBXGroup; + children = ( + B33FB1CB279BCE920013AAD8 /* console.h */, + B33FB1CC279BCE920013AAD8 /* types.h */, + B33FB1CD279BCE920013AAD8 /* vssver.scc */, + ); + path = con32; + sourceTree = ""; + }; + B33FB1CE279BCE920013AAD8 /* ps2 */ = { + isa = PBXGroup; + children = ( + B33FB1CF279BCE920013AAD8 /* gpprim.h */, + B33FB1D0279BCE920013AAD8 /* console.h */, + B33FB1D1279BCE920013AAD8 /* profctr.h */, + B33FB1D2279BCE920013AAD8 /* cd.h */, + B33FB1D3279BCE920013AAD8 /* vram.h */, + B33FB1D4279BCE920013AAD8 /* gslist.h */, + B33FB1D5279BCE920013AAD8 /* types.h */, + B33FB1D6279BCE920013AAD8 /* ps2reg.h */, + B33FB1D7279BCE920013AAD8 /* ps2dma.h */, + B33FB1D8279BCE920013AAD8 /* sjpcmbuffer.h */, + B33FB1D9279BCE920013AAD8 /* ps2mem.h */, + B33FB1DA279BCE920013AAD8 /* hw.h */, + B33FB1DB279BCE920013AAD8 /* poly.h */, + B33FB1DC279BCE920013AAD8 /* font.h */, + B33FB1DD279BCE920013AAD8 /* texture.h */, + B33FB1DE279BCE920013AAD8 /* gs.h */, + B33FB1DF279BCE920013AAD8 /* libxmtap.h */, + B33FB1E0279BCE920013AAD8 /* libxpad.h */, + B33FB1E1279BCE920013AAD8 /* vector.h */, + B33FB1E2279BCE920013AAD8 /* gpfifo.h */, + B33FB1E3279BCE920013AAD8 /* excepHandler.h */, + ); + path = ps2; + sourceTree = ""; + }; + B33FB1E4279BCE920013AAD8 /* common */ = { + isa = PBXGroup; + children = ( + B33FB1E5279BCE920013AAD8 /* mixbuffer.h */, + B33FB1E6279BCE920013AAD8 /* mainloop.h */, + B33FB1E7279BCE920013AAD8 /* pathext.h */, + B33FB1E8279BCE920013AAD8 /* memspace.h */, + B33FB1E9279BCE920013AAD8 /* surface.h */, + B33FB1EA279BCE920013AAD8 /* path.h */, + B33FB1EB279BCE920013AAD8 /* bmpfile.h */, + B33FB1EC279BCE920013AAD8 /* file.h */, + B33FB1ED279BCE920013AAD8 /* dataio.h */, + B33FB1EE279BCE920013AAD8 /* wavfile.h */, + B33FB1EF279BCE920013AAD8 /* emurom.h */, + B33FB1F0279BCE920013AAD8 /* proflog.h */, + B33FB1F1279BCE920013AAD8 /* rendersurface.h */, + B33FB1F2279BCE920013AAD8 /* emuinput.h */, + B33FB1F3279BCE920013AAD8 /* mixer.h */, + B33FB1F4279BCE920013AAD8 /* emushell.h */, + B33FB1F5279BCE920013AAD8 /* palette.h */, + B33FB1F6279BCE920013AAD8 /* vssver.scc */, + B33FB1F7279BCE920013AAD8 /* gepdefs.h */, + B33FB1F8279BCE920013AAD8 /* emusys.h */, + B33FB1F9279BCE920013AAD8 /* mixconvert.h */, + B33FB1FA279BCE920013AAD8 /* emumovie.h */, + B33FB1FB279BCE920013AAD8 /* inputdevice.h */, + B33FB1FC279BCE920013AAD8 /* prof.h */, + B33FB1FD279BCE920013AAD8 /* pixelformat.h */, + ); + path = common; + sourceTree = ""; + }; + B33FB1FE279BCE920013AAD8 /* dc */ = { + isa = PBXGroup; + children = ( + B33FB1FF279BCE920013AAD8 /* main.h */, + B33FB200279BCE920013AAD8 /* console.h */, + B33FB201279BCE920013AAD8 /* profctr.h */, + B33FB202279BCE920013AAD8 /* types.h */, + B33FB203279BCE920013AAD8 /* poly.h */, + B33FB204279BCE920013AAD8 /* font.h */, + B33FB205279BCE920013AAD8 /* texture.h */, + B33FB206279BCE920013AAD8 /* vector.h */, + ); + path = dc; + sourceTree = ""; + }; + B33FB207279BCE920013AAD8 /* win32 */ = { + isa = PBXGroup; + children = ( + B33FB208279BCE920013AAD8 /* winconsole.h */, + B33FB209279BCE920013AAD8 /* console.h */, + B33FB20A279BCE920013AAD8 /* profctr.h */, + B33FB20B279BCE920013AAD8 /* winmain.h */, + B33FB20C279BCE920013AAD8 /* types.h */, + B33FB20D279BCE920013AAD8 /* inputkeyboard.h */, + B33FB20E279BCE920013AAD8 /* inputmouse.h */, + B33FB20F279BCE920013AAD8 /* window.h */, + B33FB210279BCE920013AAD8 /* windsound.h */, + B33FB211279BCE920013AAD8 /* ddsurface.h */, + B33FB212279BCE920013AAD8 /* vssver.scc */, + B33FB213279BCE920013AAD8 /* winddraw.h */, + B33FB214279BCE920013AAD8 /* inputjoystick.h */, + B33FB215279BCE920013AAD8 /* dsbuffer.h */, + B33FB216279BCE930013AAD8 /* textoutput.h */, + B33FB217279BCE930013AAD8 /* winprintf.h */, + ); + path = win32; + sourceTree = ""; + }; + B33FB218279BCE930013AAD8 /* Source */ = { + isa = PBXGroup; + children = ( + B33FB219279BCE930013AAD8 /* con32 */, + B33FB21C279BCE930013AAD8 /* ps2 */, + B33FB235279BCE930013AAD8 /* common */, + B33FB273279BCE930013AAD8 /* dc */, + B33FB27D279BCE930013AAD8 /* win32 */, + ); + path = Source; + sourceTree = ""; + }; + B33FB219279BCE930013AAD8 /* con32 */ = { + isa = PBXGroup; + children = ( + B33FB21A279BCE930013AAD8 /* vssver.scc */, + B33FB21B279BCE930013AAD8 /* main.cpp */, + ); + path = con32; + sourceTree = ""; + }; + B33FB21C279BCE930013AAD8 /* ps2 */ = { + isa = PBXGroup; + children = ( + B33FB21D279BCE930013AAD8 /* vramnode.c */, + B33FB21E279BCE930013AAD8 /* r5900_regs.h */, + B33FB21F279BCE930013AAD8 /* console.cpp */, + B33FB220279BCE930013AAD8 /* libxpad.c */, + B33FB221279BCE930013AAD8 /* poly.cpp */, + B33FB222279BCE930013AAD8 /* libxmtap.c */, + B33FB223279BCE930013AAD8 /* exceptions.S */, + B33FB224279BCE930013AAD8 /* font.cpp */, + B33FB225279BCE930013AAD8 /* gs.c */, + B33FB226279BCE930013AAD8 /* texture.cpp */, + B33FB227279BCE930013AAD8 /* excepHandler.c */, + B33FB228279BCE930013AAD8 /* gpfifo.c */, + B33FB229279BCE930013AAD8 /* file.cpp */, + B33FB22A279BCE930013AAD8 /* profctr.c */, + B33FB22B279BCE930013AAD8 /* gpprim.c */, + B33FB22C279BCE930013AAD8 /* vram.c */, + B33FB22D279BCE930013AAD8 /* gslist.c */, + B33FB22E279BCE930013AAD8 /* sjpcmbuffer.cpp */, + B33FB22F279BCE930013AAD8 /* hw.s */, + B33FB230279BCE930013AAD8 /* cd.c */, + B33FB231279BCE930013AAD8 /* font_04b16b.c */, + B33FB232279BCE930013AAD8 /* ps2dma.c */, + B33FB233279BCE930013AAD8 /* main.cpp */, + B33FB234279BCE930013AAD8 /* rendersurface.cpp */, + ); + path = ps2; + sourceTree = ""; + }; + B33FB235279BCE930013AAD8 /* common */ = { + isa = PBXGroup; + children = ( + B33FB236279BCE930013AAD8 /* emumovie.cpp */, + B33FB237279BCE930013AAD8 /* emushell.cpp */, + B33FB238279BCE930013AAD8 /* pixelformat.cpp */, + B33FB239279BCE930013AAD8 /* gzfileio.h */, + B33FB23A279BCE930013AAD8 /* emurom.cpp */, + B33FB23B279BCE930013AAD8 /* unzip */, + B33FB244279BCE930013AAD8 /* emusys.cpp */, + B33FB245279BCE930013AAD8 /* mixconvert.cpp */, + B33FB246279BCE930013AAD8 /* prof.c */, + B33FB247279BCE930013AAD8 /* pathext.cpp */, + B33FB248279BCE930013AAD8 /* bmpfile.cpp */, + B33FB249279BCE930013AAD8 /* zlib */, + B33FB266279BCE930013AAD8 /* memsurface.cpp */, + B33FB267279BCE930013AAD8 /* emucpu.h */, + B33FB268279BCE930013AAD8 /* memspace.cpp */, + B33FB269279BCE930013AAD8 /* vssver.scc */, + B33FB26A279BCE930013AAD8 /* inputdevice.cpp */, + B33FB26B279BCE930013AAD8 /* wavfile.cpp */, + B33FB26C279BCE930013AAD8 /* path.cpp */, + B33FB26D279BCE930013AAD8 /* surface.cpp */, + B33FB26E279BCE930013AAD8 /* dataio.cpp */, + B33FB26F279BCE930013AAD8 /* emuthread.h */, + B33FB270279BCE930013AAD8 /* proflog.c */, + B33FB271279BCE930013AAD8 /* mixbuffer.cpp */, + B33FB272279BCE930013AAD8 /* gzfileio.cpp */, + ); + path = common; + sourceTree = ""; + }; + B33FB23B279BCE930013AAD8 /* unzip */ = { + isa = PBXGroup; + children = ( + B33FB23C279BCE930013AAD8 /* explode.c */, + B33FB23D279BCE930013AAD8 /* unzip.c */, + B33FB23E279BCE930013AAD8 /* unzipP.h */, + B33FB23F279BCE930013AAD8 /* unshrink.c */, + B33FB240279BCE930013AAD8 /* zlib.h */, + B33FB241279BCE930013AAD8 /* unz.h */, + B33FB242279BCE930013AAD8 /* unzip.h */, + B33FB243279BCE930013AAD8 /* unreduce.c */, + ); + path = unzip; + sourceTree = ""; + }; + B33FB249279BCE930013AAD8 /* zlib */ = { + isa = PBXGroup; + children = ( + B33FB24A279BCE930013AAD8 /* zutil.h */, + B33FB24B279BCE930013AAD8 /* inftrees.h */, + B33FB24C279BCE930013AAD8 /* inflate.c */, + B33FB24D279BCE930013AAD8 /* compress.c */, + B33FB24E279BCE930013AAD8 /* deflate.c */, + B33FB24F279BCE930013AAD8 /* infutil.c */, + B33FB250279BCE930013AAD8 /* inffixed.h */, + B33FB251279BCE930013AAD8 /* Makefile */, + B33FB252279BCE930013AAD8 /* infcodes.h */, + B33FB253279BCE930013AAD8 /* trees.h */, + B33FB254279BCE930013AAD8 /* infblock.c */, + B33FB255279BCE930013AAD8 /* inffast.h */, + B33FB256279BCE930013AAD8 /* crc32.c */, + B33FB257279BCE930013AAD8 /* kos_zlib.c */, + B33FB258279BCE930013AAD8 /* zutil.c */, + B33FB259279BCE930013AAD8 /* deflate.h */, + B33FB25A279BCE930013AAD8 /* zlib.h */, + B33FB25B279BCE930013AAD8 /* inftrees.c */, + B33FB25C279BCE930013AAD8 /* uncompr.c */, + B33FB25D279BCE930013AAD8 /* infblock.h */, + B33FB25E279BCE930013AAD8 /* trees.c */, + B33FB25F279BCE930013AAD8 /* infcodes.c */, + B33FB260279BCE930013AAD8 /* infutil.h */, + B33FB261279BCE930013AAD8 /* gzio.c */, + B33FB262279BCE930013AAD8 /* inffast.c */, + B33FB263279BCE930013AAD8 /* maketree.c */, + B33FB264279BCE930013AAD8 /* adler32.c */, + B33FB265279BCE930013AAD8 /* zconf.h */, + ); + path = zlib; + sourceTree = ""; + }; + B33FB273279BCE930013AAD8 /* dc */ = { + isa = PBXGroup; + children = ( + B33FB274279BCE930013AAD8 /* console.cpp */, + B33FB275279BCE930013AAD8 /* poly.cpp */, + B33FB276279BCE930013AAD8 /* font.cpp */, + B33FB277279BCE930013AAD8 /* texture.cpp */, + B33FB278279BCE930013AAD8 /* vssver.scc */, + B33FB279279BCE930013AAD8 /* file.cpp */, + B33FB27A279BCE930013AAD8 /* profctr.c */, + B33FB27B279BCE930013AAD8 /* main.cpp */, + B33FB27C279BCE930013AAD8 /* rendersurface.cpp */, + ); + path = dc; + sourceTree = ""; + }; + B33FB27D279BCE930013AAD8 /* win32 */ = { + isa = PBXGroup; + children = ( + B33FB27E279BCE930013AAD8 /* dinput */, + B33FB282279BCE930013AAD8 /* winprintf.cpp */, + B33FB283279BCE930013AAD8 /* console.cpp */, + B33FB284279BCE930013AAD8 /* window.cpp */, + B33FB285279BCE930013AAD8 /* ddraw */, + B33FB288279BCE930013AAD8 /* file.cpp */, + B33FB289279BCE930013AAD8 /* profctr.c */, + B33FB28A279BCE930013AAD8 /* winmain.cpp */, + B33FB28B279BCE930013AAD8 /* dsound */, + B33FB28E279BCE930013AAD8 /* winconsole.cpp */, + B33FB28F279BCE930013AAD8 /* textoutput.cpp */, + B33FB290279BCE930013AAD8 /* rendersurface.cpp */, + ); + path = win32; + sourceTree = ""; + }; + B33FB27E279BCE930013AAD8 /* dinput */ = { + isa = PBXGroup; + children = ( + B33FB27F279BCE930013AAD8 /* inputmouse.cpp */, + B33FB280279BCE930013AAD8 /* inputkeyboard.cpp */, + B33FB281279BCE930013AAD8 /* inputjoystick.cpp */, + ); + path = dinput; + sourceTree = ""; + }; + B33FB285279BCE930013AAD8 /* ddraw */ = { + isa = PBXGroup; + children = ( + B33FB286279BCE930013AAD8 /* winddraw.cpp */, + B33FB287279BCE930013AAD8 /* ddsurface.cpp */, + ); + path = ddraw; + sourceTree = ""; + }; + B33FB28B279BCE930013AAD8 /* dsound */ = { + isa = PBXGroup; + children = ( + B33FB28C279BCE930013AAD8 /* windsound.cpp */, + B33FB28D279BCE930013AAD8 /* dsbuffer.cpp */, + ); + path = dsound; + sourceTree = ""; + }; + B33FB291279BCE930013AAD8 /* Project */ = { + isa = PBXGroup; + children = ( + B33FB292279BCE930013AAD8 /* dc */, + B33FB294279BCE930013AAD8 /* win32 */, + ); + path = Project; + sourceTree = ""; + }; + B33FB292279BCE930013AAD8 /* dc */ = { + isa = PBXGroup; + children = ( + B33FB293279BCE930013AAD8 /* Makefile */, + ); + path = dc; + sourceTree = ""; + }; + B33FB294279BCE930013AAD8 /* win32 */ = { + isa = PBXGroup; + children = ( + B33FB295279BCE930013AAD8 /* gepwin32.vcproj */, + B33FB296279BCE930013AAD8 /* gepwin32.dsp */, + B33FB297279BCE930013AAD8 /* gepwin32.plg */, + B33FB298279BCE930013AAD8 /* Debug */, + ); + path = win32; + sourceTree = ""; + }; + B33FB298279BCE930013AAD8 /* Debug */ = { + isa = PBXGroup; + children = ( + B33FB299279BCE930013AAD8 /* path.obj */, + B33FB29A279BCE930013AAD8 /* unreduce.obj */, + B33FB29B279BCE930013AAD8 /* gzio.obj */, + B33FB29C279BCE930013AAD8 /* dsbuffer.obj */, + B33FB29D279BCE930013AAD8 /* winddraw.obj */, + B33FB29E279BCE930013AAD8 /* wavfile.obj */, + B33FB29F279BCE930013AAD8 /* winmain.obj */, + B33FB2A0279BCE930013AAD8 /* infblock.obj */, + B33FB2A1279BCE930013AAD8 /* inputdevice.obj */, + B33FB2A2279BCE930013AAD8 /* file.obj */, + B33FB2A3279BCE930013AAD8 /* profctr.obj */, + B33FB2A4279BCE930013AAD8 /* uncompr.obj */, + B33FB2A5279BCE930013AAD8 /* windsound.obj */, + B33FB2A6279BCE930013AAD8 /* memspace.obj */, + B33FB2A7279BCE930013AAD8 /* compress.obj */, + B33FB2A8279BCE930013AAD8 /* gzfileio.obj */, + B33FB2A9279BCE930013AAD8 /* rendersurface.obj */, + B33FB2AA279BCE930013AAD8 /* mixbuffer.obj */, + B33FB2AB279BCE930013AAD8 /* inftrees.obj */, + B33FB2AC279BCE930013AAD8 /* unshrink.obj */, + B33FB2AD279BCE930013AAD8 /* maketree.obj */, + B33FB2AE279BCE930013AAD8 /* gepwin32.pch */, + B33FB2AF279BCE930013AAD8 /* ddsurface.obj */, + B33FB2B0279BCE930013AAD8 /* proflog.obj */, + B33FB2B1279BCE930013AAD8 /* explode.obj */, + B33FB2B2279BCE930013AAD8 /* surface.obj */, + B33FB2B3279BCE930013AAD8 /* vc70.pdb */, + B33FB2B4279BCE930013AAD8 /* textoutput.obj */, + B33FB2B5279BCE930013AAD8 /* dataio.obj */, + B33FB2B6279BCE930013AAD8 /* emurom.obj */, + B33FB2B7279BCE930013AAD8 /* adler32.obj */, + B33FB2B8279BCE930013AAD8 /* winprintf.obj */, + B33FB2B9279BCE930013AAD8 /* infcodes.obj */, + B33FB2BA279BCE930013AAD8 /* trees.obj */, + B33FB2BB279BCE930013AAD8 /* infutil.obj */, + B33FB2BC279BCE930013AAD8 /* vc70.idb */, + B33FB2BD279BCE930013AAD8 /* pixelformat.obj */, + B33FB2BE279BCE930013AAD8 /* deflate.obj */, + B33FB2BF279BCE930013AAD8 /* inflate.obj */, + B33FB2C0279BCE930013AAD8 /* BuildLog.htm */, + B33FB2C1279BCE930013AAD8 /* emumovie.obj */, + B33FB2C2279BCE930013AAD8 /* inffast.obj */, + B33FB2C3279BCE930013AAD8 /* inputmouse.obj */, + B33FB2C4279BCE930013AAD8 /* zutil.obj */, + B33FB2C5279BCE930013AAD8 /* bmpfile.obj */, + B33FB2C6279BCE930013AAD8 /* mixconvert.obj */, + B33FB2C7279BCE930013AAD8 /* inputkeyboard.obj */, + B33FB2C8279BCE930013AAD8 /* inputjoystick.obj */, + B33FB2C9279BCE930013AAD8 /* unzip.obj */, + B33FB2CA279BCE930013AAD8 /* crc32.obj */, + B33FB2CB279BCE930013AAD8 /* gepwin32.lib */, + B33FB2CC279BCE930013AAD8 /* emusys.obj */, + B33FB2CD279BCE930013AAD8 /* window.obj */, + B33FB2CE279BCE930013AAD8 /* console.obj */, + B33FB2CF279BCE930013AAD8 /* prof.obj */, + ); + path = Debug; + sourceTree = ""; + }; + B3C9D5331DEA83DE0068D057 /* PVSnesticle */ = { + isa = PBXGroup; + children = ( + B3547B622058591000CFF7D8 /* Core.plist */, + B3C9D5341DEA83DE0068D057 /* PVSnesticle.h */, + B3C9D5351DEA83DE0068D057 /* Info.plist */, + ); + path = PVSnesticle; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C9D52F1DEA83DE0068D057 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B3C9D5361DEA83DE0068D057 /* PVSnesticle.h in Headers */, + B3C9D5CE1DEA87930068D057 /* PVSnesticleCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C9D53D1DEA83FD0068D057 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B3C9D5CF1DEA87A00068D057 /* PVSnesticleCore.h in Headers */, + B3C9D5D01DEA87A00068D057 /* PVSnesticle.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B33FADA3279BCA9D0013AAD8 /* snesticle-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B33FADA8279BCA9E0013AAD8 /* Build configuration list for PBXNativeTarget "snesticle-tvOS" */; + buildPhases = ( + B33FADA0279BCA9D0013AAD8 /* Sources */, + B33FADA1279BCA9D0013AAD8 /* Frameworks */, + B33FADA2279BCA9D0013AAD8 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "snesticle-tvOS"; + productName = "snesticle-tvOS"; + productReference = B33FADA4279BCA9D0013AAD8 /* libsnesticle-tvOS.a */; + productType = "com.apple.product-type.library.static"; + }; + B33FADAF279BCAB40013AAD8 /* snesticle-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B33FADB4279BCAB40013AAD8 /* Build configuration list for PBXNativeTarget "snesticle-iOS" */; + buildPhases = ( + B33FADAC279BCAB40013AAD8 /* Sources */, + B33FADAD279BCAB40013AAD8 /* Frameworks */, + B33FADAE279BCAB40013AAD8 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "snesticle-iOS"; + productName = "snesticle-iOS"; + productReference = B33FADB0279BCAB40013AAD8 /* libsnesticle-iOS.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C9D5311DEA83DE0068D057 /* PVSnesticle-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C9D5371DEA83DE0068D057 /* Build configuration list for PBXNativeTarget "PVSnesticle-iOS" */; + buildPhases = ( + B3C9D52F1DEA83DE0068D057 /* Headers */, + B3C9D52D1DEA83DE0068D057 /* Sources */, + B3C9D52E1DEA83DE0068D057 /* Frameworks */, + B3C9D5301DEA83DE0068D057 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B33FADBA279BCCDC0013AAD8 /* PBXTargetDependency */, + ); + name = "PVSnesticle-iOS"; + productName = PVSNES; + productReference = B3C9D5321DEA83DE0068D057 /* PVSnesticle.framework */; + productType = "com.apple.product-type.framework"; + }; + B3C9D53F1DEA83FD0068D057 /* PVSnesticle-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C9D5451DEA83FE0068D057 /* Build configuration list for PBXNativeTarget "PVSnesticle-tvOS" */; + buildPhases = ( + B3C9D53D1DEA83FD0068D057 /* Headers */, + B3C9D53B1DEA83FD0068D057 /* Sources */, + B3C9D53C1DEA83FD0068D057 /* Frameworks */, + B3C9D53E1DEA83FD0068D057 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B33FADBD279BCCF40013AAD8 /* PBXTargetDependency */, + ); + name = "PVSnesticle-tvOS"; + productName = "PVSNES tvOS"; + productReference = B3C9D5401DEA83FD0068D057 /* PVSnesticle.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 1ACEA8DC17F75F350031B1C9 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastSwiftUpdateCheck = 1320; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B33FADA3279BCA9D0013AAD8 = { + CreatedOnToolsVersion = 13.2.1; + }; + B33FADAF279BCAB40013AAD8 = { + CreatedOnToolsVersion = 13.2.1; + }; + B3C9D5311DEA83DE0068D057 = { + CreatedOnToolsVersion = 8.1; + LastSwiftMigration = 1230; + }; + B3C9D53F1DEA83FD0068D057 = { + CreatedOnToolsVersion = 8.1; + LastSwiftMigration = 1230; + }; + }; + }; + buildConfigurationList = 1ACEA8DF17F75F350031B1C9 /* Build configuration list for PBXProject "PVSnesticle" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 1ACEA8DB17F75F350031B1C9; + productRefGroup = 1ACEA8E517F75F350031B1C9 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C9D5311DEA83DE0068D057 /* PVSnesticle-iOS */, + B3C9D53F1DEA83FD0068D057 /* PVSnesticle-tvOS */, + B33FADAF279BCAB40013AAD8 /* snesticle-iOS */, + B33FADA3279BCA9D0013AAD8 /* snesticle-tvOS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C9D5301DEA83DE0068D057 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3547B632058591100CFF7D8 /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C9D53E1DEA83FD0068D057 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3547B642058591100CFF7D8 /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B33FADA0279BCA9D0013AAD8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B33FADA7279BCA9E0013AAD8 /* snesticle_tvOS.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B33FADAC279BCAB40013AAD8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B33FB2E9279BCEF50013AAD8 /* snppurender8.cpp in Sources */, + B33FB2E1279BCEF50013AAD8 /* snmemmap.cpp in Sources */, + B33FB2E6279BCEF50013AAD8 /* snrom.cpp in Sources */, + B33FB2E5279BCEF50013AAD8 /* snppucolor.cpp in Sources */, + B33FB2D9279BCEF50013AAD8 /* sndma.cpp in Sources */, + B33FB2D1279BCED80013AAD8 /* sncpu.c in Sources */, + B33FB2DC279BCEF50013AAD8 /* snstate.cpp in Sources */, + B33FB2D8279BCEF40013AAD8 /* snspcdsp.cpp in Sources */, + B33FB2DB279BCEF50013AAD8 /* snspcmix.cpp in Sources */, + B33FB2E0279BCEF50013AAD8 /* snesreg.cpp in Sources */, + B33FB2E3279BCEF50013AAD8 /* snppu.cpp in Sources */, + B33FB2D3279BCED80013AAD8 /* snspcrom.c in Sources */, + B33FB2DE279BCEF50013AAD8 /* snppurender.cpp in Sources */, + B33FADB3279BCAB40013AAD8 /* snesticle_iOS.swift in Sources */, + B33FB2DF279BCEF50013AAD8 /* snes.cpp in Sources */, + B33FB2DD279BCEF50013AAD8 /* snppuobj.cpp in Sources */, + B33FB2E2279BCEF50013AAD8 /* sndsp1.cpp in Sources */, + B33FB2D0279BCED80013AAD8 /* snspc_c.c in Sources */, + B33FB2D2279BCED80013AAD8 /* snspc.c in Sources */, + B33FB2DA279BCEF50013AAD8 /* snspcio.cpp in Sources */, + B33FB2D5279BCED80013AAD8 /* sncpu_c.c in Sources */, + B33FB2D6279BCED80013AAD8 /* snspcdisasm.c in Sources */, + B33FB2D4279BCED80013AAD8 /* sndisasm.c in Sources */, + B33FB2E4279BCEF50013AAD8 /* snppublend_c.cpp in Sources */, + B33FB2E7279BCEF50013AAD8 /* snspctimer.cpp in Sources */, + B33FB2E8279BCEF50013AAD8 /* snio.cpp in Sources */, + B33FB2D7279BCED80013AAD8 /* snspcbrr.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C9D52D1DEA83DE0068D057 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3C9D5941DEA86B80068D057 /* PVSnesticleOESupport.mm in Sources */, + B3C9D5951DEA86B80068D057 /* PVSnesticleCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C9D53B1DEA83FD0068D057 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3C9D5CA1DEA86B80068D057 /* PVSnesticleOESupport.mm in Sources */, + B3C9D5CB1DEA86B80068D057 /* PVSnesticleCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B33FADBA279BCCDC0013AAD8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33FADAF279BCAB40013AAD8 /* snesticle-iOS */; + targetProxy = B33FADB9279BCCDC0013AAD8 /* PBXContainerItemProxy */; + }; + B33FADBD279BCCF40013AAD8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33FADA3279BCA9D0013AAD8 /* snesticle-tvOS */; + targetProxy = B33FADBC279BCCF40013AAD8 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 1ACEA90517F75F350031B1C9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/PVSNES/SNES/SNESCore/apu/bapu\"", + "\"$(SRCROOT)/PVSNES/SNES/SNESCore\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = "-D__MACOSX__"; + SDKROOT = iphoneos; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + }; + name = Debug; + }; + 1ACEA90617F75F350031B1C9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = s; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/PVSNES/SNES/SNESCore/apu/bapu\"", + "\"$(SRCROOT)/PVSNES/SNES/SNESCore\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = "-D__MACOSX__"; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + }; + name = Release; + }; + B324C5062191A2CB009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = s; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/PVSNES/SNES/SNESCore/apu/bapu\"", + "\"$(SRCROOT)/PVSNES/SNES/SNESCore\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + OTHER_CFLAGS = "-D__MACOSX__"; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + }; + name = Archive; + }; + B324C5072191A2CB009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "PVSnesticle/PVSnesticle-Prefix.pch"; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = PVSnesticle/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSnesticle"; + PRODUCT_NAME = PVSnesticle; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,6"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5082191A2CB009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "PVSnesticle/PVSnesticle-Prefix.pch"; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = PVSnesticle/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSnesticle"; + PRODUCT_NAME = PVSnesticle; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 12.1; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B33FADA9279BCA9E0013AAD8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 15.2; + }; + name = Debug; + }; + B33FADAA279BCA9E0013AAD8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 15.2; + }; + name = Release; + }; + B33FADAB279BCA9E0013AAD8 /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 15.2; + }; + name = Archive; + }; + B33FADB5279BCAB40013AAD8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + IPHONEOS_DEPLOYMENT_TARGET = 15.2; + 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_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B33FADB6279BCAB40013AAD8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + IPHONEOS_DEPLOYMENT_TARGET = 15.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B33FADB7279BCAB40013AAD8 /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + IPHONEOS_DEPLOYMENT_TARGET = 15.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B3C9D5381DEA83DE0068D057 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + CODE_SIGN_STYLE = Manual; + 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_BITCODE = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "PVSnesticle/PVSnesticle-Prefix.pch"; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = PVSnesticle/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSnesticle"; + PRODUCT_NAME = PVSnesticle; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,6"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C9D5391DEA83DE0068D057 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "PVSnesticle/PVSnesticle-Prefix.pch"; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = PVSnesticle/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSnesticle"; + PRODUCT_NAME = PVSnesticle; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,6"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C9D5461DEA83FE0068D057 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + 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_BITCODE = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "PVSnesticle/PVSnesticle-Prefix.pch"; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = PVSnesticle/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSnesticle"; + PRODUCT_NAME = PVSnesticle; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 12.1; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C9D5471DEA83FE0068D057 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "PVSnesticle/PVSnesticle-Prefix.pch"; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = PVSnesticle/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSnesticle"; + PRODUCT_NAME = PVSnesticle; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 12.1; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1ACEA8DF17F75F350031B1C9 /* Build configuration list for PBXProject "PVSnesticle" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1ACEA90517F75F350031B1C9 /* Debug */, + 1ACEA90617F75F350031B1C9 /* Release */, + B324C5062191A2CB009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B33FADA8279BCA9E0013AAD8 /* Build configuration list for PBXNativeTarget "snesticle-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B33FADA9279BCA9E0013AAD8 /* Debug */, + B33FADAA279BCA9E0013AAD8 /* Release */, + B33FADAB279BCA9E0013AAD8 /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B33FADB4279BCAB40013AAD8 /* Build configuration list for PBXNativeTarget "snesticle-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B33FADB5279BCAB40013AAD8 /* Debug */, + B33FADB6279BCAB40013AAD8 /* Release */, + B33FADB7279BCAB40013AAD8 /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C9D5371DEA83DE0068D057 /* Build configuration list for PBXNativeTarget "PVSnesticle-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C9D5381DEA83DE0068D057 /* Debug */, + B3C9D5391DEA83DE0068D057 /* Release */, + B324C5072191A2CB009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C9D5451DEA83FE0068D057 /* Build configuration list for PBXNativeTarget "PVSnesticle-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C9D5461DEA83FE0068D057 /* Debug */, + B3C9D5471DEA83FE0068D057 /* Release */, + B324C5082191A2CB009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 1ACEA8DC17F75F350031B1C9 /* Project object */; +} diff --git a/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSNES tvOS.xcscheme b/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSNES tvOS.xcscheme new file mode 100644 index 0000000000..4959484b85 --- /dev/null +++ b/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSNES tvOS.xcscheme @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSNES.xcscheme b/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSNES.xcscheme new file mode 100644 index 0000000000..467eec4bbb --- /dev/null +++ b/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSNES.xcscheme @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSnesticle-iOS.xcscheme b/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSnesticle-iOS.xcscheme new file mode 100644 index 0000000000..83f81bb9d8 --- /dev/null +++ b/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSnesticle-iOS.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSnesticle-tvOS.xcscheme b/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSnesticle-tvOS.xcscheme new file mode 100644 index 0000000000..fad929934b --- /dev/null +++ b/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSnesticle-tvOS.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/snesticle/PVSnesticle/Core.plist b/Cores/snesticle/PVSnesticle/Core.plist new file mode 100644 index 0000000000..89a3077c56 --- /dev/null +++ b/Cores/snesticle/PVSnesticle/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.core.snesticle + PVPrincipleClass + PVSnesticleCore + PVSupportedSystems + + com.provenance.snes + + PVProjectName + Snesticle + PVProjectURL + https://github.com/iaddis/SNESticle + PVProjectVersion + 1.0 + + diff --git a/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.h b/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.h new file mode 100644 index 0000000000..483a820bc4 --- /dev/null +++ b/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.h @@ -0,0 +1,14 @@ +#import +#import +#import + +@interface PVSnesticleCore : PVEmulatorCore + +- (void)didPushSNESButton:(PVSNESButton)button forPlayer:(NSInteger)player; +- (void)didReleaseSNESButton:(PVSNESButton)button forPlayer:(NSInteger)player; +- (void)flipBuffers; + +# pragma CheatCodeSupport +- (BOOL)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled error:(NSError**)error; + +@end diff --git a/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.mm b/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.mm new file mode 100644 index 0000000000..12139eb76f --- /dev/null +++ b/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.mm @@ -0,0 +1,228 @@ +#import "PVSnesticleCore.h" +#import +#import +#import + +//#import + +#if !TARGET_OS_MACCATALYST +#import +#import +#import +#import +#else +#import +#import +#endif + +#import +#import +#include + +#define WIDTH 256 +#define HEIGHT 224 +#define SNES_HEIGHT_EXTENDED 239 +#define MAX_SNES_WIDTH (WIDTH * 2) +#define MAX_SNES_HEIGHT (SNES_HEIGHT_EXTENDED * 2) + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER SAMPLERATE / 50 * 4 + +static __weak PVSnesticleCore *_current; + +@interface PVSnesticleCore () { + +@public + UInt16 *soundBuffer; + unsigned char *videoBuffer; + unsigned char *videoBufferA; + unsigned char *videoBufferB; + NSMutableDictionary *cheatList; +} + +@end + +NSString *SNESEmulatorKeys[] = { @"Up", @"Down", @"Left", @"Right", @"A", @"B", @"X", @"Y", @"L", @"R", @"Start", @"Select", nil }; + +@implementation PVSnesticleCore + +- (id)init +{ + if ((self = [super init])) + { + if(soundBuffer) free(soundBuffer); + soundBuffer = (UInt16 *)malloc(SIZESOUNDBUFFER * sizeof(UInt16)); + memset(soundBuffer, 0, SIZESOUNDBUFFER * sizeof(UInt16)); + _current = self; + cheatList = [[NSMutableDictionary alloc] init]; + } + + return self; +} + +- (void)dealloc +{ + free(videoBufferA); + videoBufferA = NULL; + free(videoBufferB); + videoBufferB = NULL; + videoBuffer = NULL; + free(soundBuffer); + soundBuffer = NULL; +} + +#pragma mark Execution + +- (void)resetEmulation +{ +} + +- (void)stopEmulation +{ + [super stopEmulation]; +} + +- (void)executeFrame +{ +} + +- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error +{ + + + if (videoBuffer) + { + free(videoBuffer); + } + + if (videoBufferA) + { + free(videoBufferA); + } + + if (videoBufferB) + { + free(videoBufferB); + } + + videoBuffer = NULL; + + videoBufferA = (unsigned char *)malloc(MAX_SNES_WIDTH * MAX_SNES_HEIGHT * sizeof(uint16_t)); + videoBufferB = (unsigned char *)malloc(MAX_SNES_WIDTH * MAX_SNES_HEIGHT * sizeof(uint16_t)); + + DLOG(@"loading %@", path); + + if(error != NULL) { + NSDictionary *userInfo = @{ + NSLocalizedDescriptionKey: @"Failed to load game.", + NSLocalizedFailureReasonErrorKey: @"Snes9x failed to load ROM.", + NSLocalizedRecoverySuggestionErrorKey: @"Check that file isn't corrupt and in format Snes9x supports." + }; + + NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain + code:PVEmulatorCoreErrorCodeCouldNotLoadRom + userInfo:userInfo]; + + *error = newError; + } + return NO; +} + +#pragma mark Video + +- (void)swapBuffers +{ +} + +- (const void *)videoBuffer +{ + return videoBuffer; +} + +- (CGRect)screenRect +{ + return CGRectMake(0, 0, WIDTH, HEIGHT); +} + +- (CGSize)aspectSize +{ + return CGSizeMake(WIDTH * (8.0/7.0), HEIGHT); +} + +- (CGSize)bufferSize +{ + return CGSizeMake(MAX_SNES_WIDTH, MAX_SNES_HEIGHT); +} + +- (GLenum)pixelFormat +{ + return GL_RGB; +} + +- (GLenum)pixelType +{ + return GL_UNSIGNED_SHORT_5_6_5; +} + +- (GLenum)internalPixelFormat +{ + return GL_RGB; +} + +- (NSTimeInterval)frameInterval +{ + return false ? 50 : 60; // for more "accuracy" does 50.007 : 60.098806 make a difference? +} + +- (BOOL)isDoubleBuffered +{ + return YES; +} + +#pragma mark Audio + +- (double)audioSampleRate +{ + return SAMPLERATE; +} + +- (NSUInteger)channelCount +{ + return 2; +} + +#pragma mark Save States +- (BOOL)saveStateToFileAtPath: (NSString *) fileName error:(NSError**)error +{ + @synchronized(self) { + } +} + +- (BOOL)loadStateFromFileAtPath: (NSString *) fileName error:(NSError**)error +{ + @synchronized(self) { + } +} + +- (BOOL)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled error:(NSError**)error +{ + return false; +} + + +#pragma mark - Input + +- (void)didPushSNESButton:(PVSNESButton)button forPlayer:(NSInteger)player +{ +} + +- (void)didReleaseSNESButton:(PVSNESButton)button forPlayer:(NSInteger)player +{ +} + +- (void)updateControllers +{ + +} + +@end diff --git a/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.swift b/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.swift new file mode 100644 index 0000000000..48878431bc --- /dev/null +++ b/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.swift @@ -0,0 +1,29 @@ +// +// PVSnesticleCore.swift +// PVSNES +// + +import PVSupport +import UIKit + +extension PVSnesticleCore: GameWithCheat { + public func setCheat( + code: String, + type: String, + enabled: Bool + ) -> Bool + { + do { + try self.setCheat(code, setType: type, setEnabled: enabled) + return true + } catch let error { + NSLog("Error setCheat \(error)") + return false + } + } + + public func supportsCheatCode() -> Bool + { + return true + } +} diff --git a/Cores/snesticle/PVSnesticle/Core/PVSnesticleOESupport.mm b/Cores/snesticle/PVSnesticle/Core/PVSnesticleOESupport.mm new file mode 100644 index 0000000000..55fce5f52c --- /dev/null +++ b/Cores/snesticle/PVSnesticle/Core/PVSnesticleOESupport.mm @@ -0,0 +1,29 @@ +/* + Copyright (c) 2009, OpenEmu Team + + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the OpenEmu Team nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#import diff --git a/Cores/snesticle/PVSnesticle/Info.plist b/Cores/snesticle/PVSnesticle/Info.plist new file mode 100644 index 0000000000..f3e7e2cf5b --- /dev/null +++ b/Cores/snesticle/PVSnesticle/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.60 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/snesticle/PVSnesticle/PVSnesticle-Prefix.pch b/Cores/snesticle/PVSnesticle/PVSnesticle-Prefix.pch new file mode 100644 index 0000000000..b5ffd7806e --- /dev/null +++ b/Cores/snesticle/PVSnesticle/PVSnesticle-Prefix.pch @@ -0,0 +1,10 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/Cores/snesticle/PVSnesticle/PVSnesticle.h b/Cores/snesticle/PVSnesticle/PVSnesticle.h new file mode 100644 index 0000000000..e93b182570 --- /dev/null +++ b/Cores/snesticle/PVSnesticle/PVSnesticle.h @@ -0,0 +1,17 @@ +// +// PVSnesticle.h +// PVSnesticle +// +// Created by Joseph Mattiello on 01/22/22. +// + +#import + +//! Project version number for PVSnesticle. +FOUNDATION_EXPORT double PVSnesticleVersionNumber; + +//! Project version string for PVSnesticle. +FOUNDATION_EXPORT const unsigned char PVSnesticleVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/snesticle/SNESticle b/Cores/snesticle/SNESticle new file mode 160000 index 0000000000..9590ebf3bf --- /dev/null +++ b/Cores/snesticle/SNESticle @@ -0,0 +1 @@ +Subproject commit 9590ebf3bf768424ebd6cb018f322e724a7aade3 diff --git a/Cores/snesticle/snesticle-iOS/snesticle_iOS.swift b/Cores/snesticle/snesticle-iOS/snesticle_iOS.swift new file mode 100644 index 0000000000..6d277210f8 --- /dev/null +++ b/Cores/snesticle/snesticle-iOS/snesticle_iOS.swift @@ -0,0 +1,11 @@ +// +// snesticle_iOS.swift +// snesticle-iOS +// +// Created by Joseph Mattiello on 1/22/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +class snesticle_iOS { + +} diff --git a/Cores/snesticle/snesticle-tvOS/snesticle_tvOS.swift b/Cores/snesticle/snesticle-tvOS/snesticle_tvOS.swift new file mode 100644 index 0000000000..5c94297ec5 --- /dev/null +++ b/Cores/snesticle/snesticle-tvOS/snesticle_tvOS.swift @@ -0,0 +1,11 @@ +// +// snesticle_tvOS.swift +// snesticle-tvOS +// +// Created by Joseph Mattiello on 1/22/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +class snesticle_tvOS { + +} diff --git a/PVLibrary/LzmaSDKObjC b/PVLibrary/LzmaSDKObjC index a9f7ddc43e..321c99de4e 160000 --- a/PVLibrary/LzmaSDKObjC +++ b/PVLibrary/LzmaSDKObjC @@ -1 +1 @@ -Subproject commit a9f7ddc43e29e5dd57b77be048a3fc17c78722fa +Subproject commit 321c99de4e16af8a5063386bd6b0d1023b32fe4e diff --git a/PVLibrary/PVLibrary.xcodeproj/project.pbxproj b/PVLibrary/PVLibrary.xcodeproj/project.pbxproj index 2a6fffd003..ce833ac7ce 100644 --- a/PVLibrary/PVLibrary.xcodeproj/project.pbxproj +++ b/PVLibrary/PVLibrary.xcodeproj/project.pbxproj @@ -13,6 +13,9 @@ 1180B3202492A9CB00636C8A /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1180B31F2492A9C200636C8A /* CoreServices.framework */; }; 11AFB2B324867482000A3922 /* PVGameLibrary+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2B224867482000A3922 /* PVGameLibrary+Migration.swift */; }; 11AFB2B424867482000A3922 /* PVGameLibrary+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2B224867482000A3922 /* PVGameLibrary+Migration.swift */; }; + B3014FA227B487EB006AC79B /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = B3014FA127B487EB006AC79B /* RxDataSources */; }; + B3014FA427B487F0006AC79B /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = B3014FA327B487F0006AC79B /* Differentiator */; }; + B3014FA627B487FD006AC79B /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = B3014FA527B487FD006AC79B /* Differentiator */; }; B305EF9F276B50E2003AE510 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B305EF9E276B50DF003AE510 /* SwiftUI.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; B305EFA1276B5112003AE510 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B305EFA0276B5112003AE510 /* SwiftUI.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; B305EFAD276B512D003AE510 /* NSData+Hashing.h in Headers */ = {isa = PBXBuildFile; fileRef = B3579D362106B4D700DDEBD6 /* NSData+Hashing.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -318,6 +321,8 @@ B378228121D41E460077E86F /* PackageResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378227F21D41E460077E86F /* PackageResult.swift */; }; B378228521D41E9B0077E86F /* LibrarySerializerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378228421D41E9B0077E86F /* LibrarySerializerError.swift */; }; B378228621D41E9B0077E86F /* LibrarySerializerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378228421D41E9B0077E86F /* LibrarySerializerError.swift */; }; + B37B4DF027B2292F0068F8D1 /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = B37B4DEF27B2292F0068F8D1 /* Differentiator */; }; + B37B4DF227B2292F0068F8D1 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = B37B4DF127B2292F0068F8D1 /* RxDataSources */; }; B383F3BC219BB29600DB6926 /* iCloudSync.swift in Sources */ = {isa = PBXBuildFile; fileRef = B383F3BB219BB29600DB6926 /* iCloudSync.swift */; }; B383F3BD219BB29600DB6926 /* iCloudSync.swift in Sources */ = {isa = PBXBuildFile; fileRef = B383F3BB219BB29600DB6926 /* iCloudSync.swift */; }; B3A3204127209B4300F338F6 /* ZipArchive in Frameworks */ = {isa = PBXBuildFile; productRef = B3A3204027209B4300F338F6 /* ZipArchive */; }; @@ -628,6 +633,7 @@ CF17109E2585F97000258602 /* PVCheats.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF17109C2585F97000258602 /* PVCheats.swift */; }; CF1710A12585FA3F00258602 /* Cheats.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF1710A02585FA3F00258602 /* Cheats.swift */; }; CF1710A22585FA3F00258602 /* Cheats.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF1710A02585FA3F00258602 /* Cheats.swift */; }; + EF7D4AA527B44FA7002528B7 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = EF7D4AA427B44FA7002528B7 /* RxDataSources */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -678,6 +684,7 @@ B3067F4A2106B5A20091437F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; B3067F732106B9130091437F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; B30E7AEA26E480310051DC6A /* BehaviorRelay+RangeReplaceableCollection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BehaviorRelay+RangeReplaceableCollection.swift"; sourceTree = ""; }; + B317380127841959002D3ACD /* Build.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Build.xcconfig; path = ../Build.xcconfig; sourceTree = ""; }; B324C2EC219192FF009F4EDC /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3274E5D2106BA1200857F52 /* PVEmulatorConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PVEmulatorConfiguration.swift; sourceTree = ""; }; B3274E5E2106BA1200857F52 /* PVAppConstants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PVAppConstants.swift; sourceTree = ""; }; @@ -1083,6 +1090,7 @@ files = ( B305F084276B5229003AE510 /* PVSupport.framework in Frameworks */, B305F070276B512D003AE510 /* SwiftUI.framework in Frameworks */, + B3014FA627B487FD006AC79B /* Differentiator in Frameworks */, B305F071276B512D003AE510 /* SQLite in Frameworks */, B305F072276B512D003AE510 /* RxCocoa in Frameworks */, B305F074276B512D003AE510 /* RxRealm in Frameworks */, @@ -1099,6 +1107,7 @@ buildActionMask = 2147483647; files = ( B3411C39276B498100D85327 /* RealmSwift in Frameworks */, + B37B4DF027B2292F0068F8D1 /* Differentiator in Frameworks */, B305EF9F276B50E2003AE510 /* SwiftUI.framework in Frameworks */, B3411C37276B498100D85327 /* Realm in Frameworks */, B336B90F26B39BCF00960A81 /* SQLite in Frameworks */, @@ -1108,6 +1117,7 @@ B336B8FB26B399B400960A81 /* RxCocoa in Frameworks */, 1180B31E2492A9BB00636C8A /* CoreServices.framework in Frameworks */, B3067F4B2106B5A30091437F /* Foundation.framework in Frameworks */, + B37B4DF227B2292F0068F8D1 /* RxDataSources in Frameworks */, B336B90626B39ABA00960A81 /* RxRealm in Frameworks */, B3A3204127209B4300F338F6 /* ZipArchive in Frameworks */, ); @@ -1121,7 +1131,9 @@ B336B91126B39BDA00960A81 /* SQLite in Frameworks */, B336B90326B39A1200960A81 /* RxCocoa in Frameworks */, B324C2ED219192FF009F4EDC /* PVSupport.framework in Frameworks */, + B3014FA427B487F0006AC79B /* Differentiator in Frameworks */, B336B90C26B39ACB00960A81 /* RxRealm in Frameworks */, + EF7D4AA527B44FA7002528B7 /* RxDataSources in Frameworks */, B3AF6FBF219160C4000FA7F9 /* Foundation.framework in Frameworks */, B336B90126B399E200960A81 /* RxSwift in Frameworks */, 1180B3202492A9CB00636C8A /* CoreServices.framework in Frameworks */, @@ -1266,8 +1278,9 @@ B3579D052106B11D00DDEBD6 = { isa = PBXGroup; children = ( + B317380127841959002D3ACD /* Build.xcconfig */, B3579D112106B11D00DDEBD6 /* PVLibrary */, - B3C04B622107867200E7AF79 /* PVLibraryTests */, + B3C04B622107867200E7AF79 /* Tests */, B3579D102106B11D00DDEBD6 /* Products */, B3067F492106B5A20091437F /* Frameworks */, B305F082276B5152003AE510 /* PVLibrary-tvOS copy-Info.plist */, @@ -1299,8 +1312,6 @@ B3579D232106B4D600DDEBD6 /* Util */, B3AF460A21071CA5002211EE /* LzmaSDKObjC */, B3AF47DB21072AD3002211EE /* Resources */, - 112E7E2E247EF3840050431C /* PVGameLibrary.swift */, - 11AFB2B224867482000A3922 /* PVGameLibrary+Migration.swift */, B3579D122106B11D00DDEBD6 /* PVLibrary.h */, B3579D132106B11D00DDEBD6 /* Info.plist */, ); @@ -1310,6 +1321,8 @@ B3579D1D2106B4D600DDEBD6 /* Database */ = { isa = PBXGroup; children = ( + 112E7E2E247EF3840050431C /* PVGameLibrary.swift */, + 11AFB2B224867482000A3922 /* PVGameLibrary+Migration.swift */, B3579D1E2106B4D600DDEBD6 /* OESQLiteDatabase.h */, B3579D202106B4D600DDEBD6 /* OESQLiteDatabase.m */, ); @@ -1874,13 +1887,13 @@ path = iOS; sourceTree = ""; }; - B3C04B622107867200E7AF79 /* PVLibraryTests */ = { + B3C04B622107867200E7AF79 /* Tests */ = { isa = PBXGroup; children = ( B3C04B632107867200E7AF79 /* PVLibraryTests.swift */, B3C04B652107867200E7AF79 /* Info.plist */, ); - path = PVLibraryTests; + path = Tests; sourceTree = ""; }; /* End PBXGroup section */ @@ -1973,6 +1986,7 @@ B305EFA6276B512D003AE510 /* RxRealm */, B305EFA8276B512D003AE510 /* SQLite */, B305EFAA276B512D003AE510 /* ZipArchive */, + B3014FA527B487FD006AC79B /* Differentiator */, ); productName = PVLibrary; productReference = B305F081276B512D003AE510 /* PVLibrary.framework */; @@ -2000,6 +2014,8 @@ B3A3204027209B4300F338F6 /* ZipArchive */, B3411C36276B498100D85327 /* Realm */, B3411C38276B498100D85327 /* RealmSwift */, + B37B4DEF27B2292F0068F8D1 /* Differentiator */, + B37B4DF127B2292F0068F8D1 /* RxDataSources */, ); productName = PVLibrary; productReference = B3579D0F2106B11D00DDEBD6 /* PVLibrary.framework */; @@ -2025,6 +2041,8 @@ B336B90B26B39ACB00960A81 /* RxRealm */, B336B91026B39BDA00960A81 /* SQLite */, B3128065274C658E00550720 /* ZipArchive */, + EF7D4AA427B44FA7002528B7 /* RxDataSources */, + B3014FA327B487F0006AC79B /* Differentiator */, ); productName = PVLibrary; productReference = B3C04B4421077B3100E7AF79 /* PVLibrary.framework */; @@ -2087,6 +2105,7 @@ B336B90D26B39BCF00960A81 /* XCRemoteSwiftPackageReference "SQLite.swift" */, B3A3203F27209B4300F338F6 /* XCRemoteSwiftPackageReference "ZipArchive" */, B3411C35276B498100D85327 /* XCRemoteSwiftPackageReference "realm-cocoa" */, + B37B4DEE27B2292F0068F8D1 /* XCRemoteSwiftPackageReference "RxDataSources" */, ); productRefGroup = B3579D102106B11D00DDEBD6 /* Products */; projectDirPath = ""; @@ -2721,9 +2740,7 @@ APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2779; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -2745,7 +2762,7 @@ "@loader_path/Frameworks", ); MARKETING_VERSION = 2.0.4; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVLibrary"; + PRODUCT_BUNDLE_IDENTIFIER = "$(PVLIBRARY_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = PVLibrary; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = watchos; @@ -2762,9 +2779,7 @@ CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -2786,7 +2801,7 @@ "@loader_path/Frameworks", ); MARKETING_VERSION = 2.0.4; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVLibrary"; + PRODUCT_BUNDLE_IDENTIFIER = "$(PVLIBRARY_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = PVLibrary; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = watchos; @@ -2803,9 +2818,7 @@ CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -2827,7 +2840,7 @@ "@loader_path/Frameworks", ); MARKETING_VERSION = 2.0.4; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVLibrary"; + PRODUCT_BUNDLE_IDENTIFIER = "$(PVLIBRARY_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = PVLibrary; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = watchos; @@ -2839,6 +2852,7 @@ }; B324C5352191A78D009F4EDC /* Archive */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B317380127841959002D3ACD /* Build.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; @@ -2872,8 +2886,8 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)"; ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -2905,11 +2919,10 @@ BUILD_LIBRARY_FOR_DISTRIBUTION = NO; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = S32Z3HMYVQ; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -2931,7 +2944,7 @@ "@loader_path/Frameworks", ); MARKETING_VERSION = 2.0.4; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVLibrary"; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.pvlibrary.PVLibrary"; PRODUCT_NAME = PVLibrary; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; @@ -2950,9 +2963,7 @@ CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -2974,7 +2985,7 @@ "@loader_path/Frameworks", ); MARKETING_VERSION = 2.0.4; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVLibrary"; + PRODUCT_BUNDLE_IDENTIFIER = "$(PVLIBRARY_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = PVLibrary; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; @@ -2987,7 +2998,6 @@ B324C5382191A78D009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { - DEVELOPMENT_TEAM = ""; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = PVLibraryTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; @@ -3008,6 +3018,7 @@ }; B3579D152106B11D00DDEBD6 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B317380127841959002D3ACD /* Build.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; @@ -3041,8 +3052,8 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)"; ENABLE_BITCODE = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -3075,6 +3086,7 @@ }; B3579D162106B11D00DDEBD6 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B317380127841959002D3ACD /* Build.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; @@ -3108,8 +3120,8 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)"; ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -3142,10 +3154,9 @@ BUILD_LIBRARY_FOR_DISTRIBUTION = NO; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2779; + CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = S32Z3HMYVQ; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -3168,7 +3179,7 @@ "@loader_path/Frameworks", ); MARKETING_VERSION = 2.0.4; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVLibrary"; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.pvlibrary.PVLibrary"; PRODUCT_NAME = PVLibrary; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; @@ -3187,11 +3198,10 @@ BUILD_LIBRARY_FOR_DISTRIBUTION = NO; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = S32Z3HMYVQ; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -3213,7 +3223,7 @@ "@loader_path/Frameworks", ); MARKETING_VERSION = 2.0.4; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVLibrary"; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.pvlibrary.PVLibrary"; PRODUCT_NAME = PVLibrary; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; @@ -3231,9 +3241,7 @@ APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2779; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -3255,7 +3263,7 @@ "@loader_path/Frameworks", ); MARKETING_VERSION = 2.0.4; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVLibrary"; + PRODUCT_BUNDLE_IDENTIFIER = "$(PVLIBRARY_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = PVLibrary; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; @@ -3272,9 +3280,7 @@ CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -3296,7 +3302,7 @@ "@loader_path/Frameworks", ); MARKETING_VERSION = 2.0.4; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVLibrary"; + PRODUCT_BUNDLE_IDENTIFIER = "$(PVLIBRARY_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = PVLibrary; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; @@ -3309,7 +3315,6 @@ B3C04B6A2107867200E7AF79 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - DEVELOPMENT_TEAM = ""; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = PVLibraryTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; @@ -3333,7 +3338,6 @@ B3C04B6B2107867200E7AF79 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - DEVELOPMENT_TEAM = ""; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = PVLibraryTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; @@ -3469,7 +3473,15 @@ repositoryURL = "https://github.com/realm/realm-cocoa.git"; requirement = { kind = exactVersion; - version = 10.19.0; + version = 10.20.2; + }; + }; + B37B4DEE27B2292F0068F8D1 /* XCRemoteSwiftPackageReference "RxDataSources" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/RxSwiftCommunity/RxDataSources.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.0.0; }; }; B3A3203F27209B4300F338F6 /* XCRemoteSwiftPackageReference "ZipArchive" */ = { @@ -3483,6 +3495,21 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + B3014FA127B487EB006AC79B /* RxDataSources */ = { + isa = XCSwiftPackageProductDependency; + package = B37B4DEE27B2292F0068F8D1 /* XCRemoteSwiftPackageReference "RxDataSources" */; + productName = RxDataSources; + }; + B3014FA327B487F0006AC79B /* Differentiator */ = { + isa = XCSwiftPackageProductDependency; + package = B37B4DEE27B2292F0068F8D1 /* XCRemoteSwiftPackageReference "RxDataSources" */; + productName = Differentiator; + }; + B3014FA527B487FD006AC79B /* Differentiator */ = { + isa = XCSwiftPackageProductDependency; + package = B37B4DEE27B2292F0068F8D1 /* XCRemoteSwiftPackageReference "RxDataSources" */; + productName = Differentiator; + }; B305EFA3276B512D003AE510 /* RxSwift */ = { isa = XCSwiftPackageProductDependency; package = B305EFA4276B512D003AE510 /* XCRemoteSwiftPackageReference "RxSwift" */; @@ -3563,11 +3590,26 @@ package = B3411C35276B498100D85327 /* XCRemoteSwiftPackageReference "realm-cocoa" */; productName = RealmSwift; }; + B37B4DEF27B2292F0068F8D1 /* Differentiator */ = { + isa = XCSwiftPackageProductDependency; + package = B37B4DEE27B2292F0068F8D1 /* XCRemoteSwiftPackageReference "RxDataSources" */; + productName = Differentiator; + }; + B37B4DF127B2292F0068F8D1 /* RxDataSources */ = { + isa = XCSwiftPackageProductDependency; + package = B37B4DEE27B2292F0068F8D1 /* XCRemoteSwiftPackageReference "RxDataSources" */; + productName = RxDataSources; + }; B3A3204027209B4300F338F6 /* ZipArchive */ = { isa = XCSwiftPackageProductDependency; package = B3A3203F27209B4300F338F6 /* XCRemoteSwiftPackageReference "ZipArchive" */; productName = ZipArchive; }; + EF7D4AA427B44FA7002528B7 /* RxDataSources */ = { + isa = XCSwiftPackageProductDependency; + package = B37B4DEE27B2292F0068F8D1 /* XCRemoteSwiftPackageReference "RxDataSources" */; + productName = RxDataSources; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = B3579D062106B11D00DDEBD6 /* Project object */; diff --git a/PVLibrary/PVLibrary/Configuration/PVAppConstants.swift b/PVLibrary/PVLibrary/Configuration/PVAppConstants.swift index 0a5b92d8c6..cc1ffbc1fc 100644 --- a/PVLibrary/PVLibrary/Configuration/PVAppConstants.swift +++ b/PVLibrary/PVLibrary/Configuration/PVAppConstants.swift @@ -9,12 +9,12 @@ import Foundation public let PVMaxRecentsShortcutCount: Int = 4 -public let PVAppGroupId = "group.org.provenance-emu.provenance" +public let PVAppGroupId = Bundle.main.infoDictionary?["APP_GROUP_IDENTIFIER"] as? String ?? "group.org.provenance-emu.provenance" public let kInterfaceDidChangeNotification = "kInterfaceDidChangeNotification" public let PVGameControllerKey = "PlayController" public let PVGameMD5Key = "md5" public let PVAppURLKey = "provenance" -public let UbiquityIdentityTokenKey = "org.provenance-emu.provenenace.UbiquityIdentityToken" +public let UbiquityIdentityTokenKey = (Bundle.main.bundleIdentifier ?? "org.provenance-emu.provenance") + ".UbiquityIdentityToken" #if os(tvOS) public let PVThumbnailMaxResolution: Float = 800.0 diff --git a/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration+Frameworks.swift b/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration+Frameworks.swift index 3c95169f72..760434f718 100644 --- a/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration+Frameworks.swift +++ b/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration+Frameworks.swift @@ -41,10 +41,10 @@ public extension PVEmulatorConfiguration { let data = try Data(contentsOf: plist) let core = try decoder.decode(CorePlistEntry.self, from: data) let supportedSystems = database.all(PVSystem.self, filter: NSPredicate(format: "identifier IN %@", argumentArray: [core.PVSupportedSystems])) - if let disabled = core.PVDisabled, disabled { + if let disabled = core.PVDisabled, disabled, PVSettingsModel.shared.debugOptions.experimentalCores { // Do nothing } else { - let newCore = PVCore(withIdentifier: core.PVCoreIdentifier, principleClass: core.PVPrincipleClass, supportedSystems: Array(supportedSystems), name: core.PVProjectName, url: core.PVProjectURL, version: core.PVProjectVersion) + let newCore = PVCore(withIdentifier: core.PVCoreIdentifier, principleClass: core.PVPrincipleClass, supportedSystems: Array(supportedSystems), name: core.PVProjectName, url: core.PVProjectURL, version: core.PVProjectVersion, disabled: core.PVDisabled ?? false) database.refresh() try newCore.add(update: true) } diff --git a/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration.swift b/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration.swift index 2290d074c4..0236861029 100644 --- a/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration.swift +++ b/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration.swift @@ -35,6 +35,7 @@ public struct SystemDictionaryKeys { public static let ControlTint = "PVControlTint" public static let ControlType = "PVControlType" public static let DPad = "PVDPad" + public static let JoyPad = "PVJoyPad" public static let GroupedButtons = "PVGroupedButtons" public static let LeftShoulderButton = "PVLeftShoulderButton" public static let RightShoulderButton = "PVRightShoulderButton" @@ -46,11 +47,12 @@ public struct SystemDictionaryKeys { } } -public enum SystemIdentifier: String { +public enum SystemIdentifier: String, CaseIterable { case _3DO = "com.provenance.3DO" case Atari2600 = "com.provenance.2600" case Atari5200 = "com.provenance.5200" case Atari7800 = "com.provenance.7800" + case Atari8bit = "com.provenance.atari8bit" case AtariJaguar = "com.provenance.jaguar" case ColecoVision = "com.provenance.colecovision" case DS = "com.provenance.ds" @@ -67,6 +69,7 @@ public enum SystemIdentifier: String { case MasterSystem = "com.provenance.mastersystem" case N64 = "com.provenance.n64" case NES = "com.provenance.nes" + case NeoGeo = "com.provenance.neogeo" case NGP = "com.provenance.ngp" case NGPC = "com.provenance.ngpc" case Odyssey2 = "com.provenance.odyssey2" @@ -91,6 +94,7 @@ public enum SystemIdentifier: String { case Unknown + static public let betas: [SystemIdentifier] = [.ColecoVision, .Dreamcast, .DS, .Atari8bit, .Intellivision, ._3DO, .Vectrex, .PSP, .PS2, .PS3, .GameCube] // MARK: Assistance accessors for properties public var system: PVSystem? { @@ -233,12 +237,23 @@ public final class PVEmulatorConfiguration: NSObject { return URL(fileURLWithPath: paths.first!, isDirectory: true) }() + public static func initICloud() { + DispatchQueue.global(qos: .background).async { + ILOG("iCloudContainerDirectory: \(PVEmulatorConfiguration.iCloudContainerDirectory)") + } + } + + static var iCloudContainerDirectoryCached: URL? /// This should be called on a background thread static var iCloudContainerDirectory: URL? { + guard iCloudContainerDirectoryCached == nil else { + return iCloudContainerDirectoryCached + } if Thread.isMainThread { WLOG("Warning, this should only be called on background threads.") } - return FileManager.default.url(forUbiquityContainerIdentifier: Constants.iCloud.containerIdentifier) + iCloudContainerDirectoryCached = FileManager.default.url(forUbiquityContainerIdentifier: Constants.iCloud.containerIdentifier) + return iCloudContainerDirectoryCached } /// This should be called on a background thread @@ -586,7 +601,12 @@ public extension PVEmulatorConfiguration { @objc class func m3uFile(forGame game: PVGame) -> URL? { let gamePath = path(forGame: game) - let gameDirectory = romDirectory(forSystemIdentifier: game.system.identifier) + return m3uFile(forURL: gamePath, indentifier: game.system.identifier) + } + + @objc + class func m3uFile(forURL gamePath: URL, indentifier: String) -> URL? { + let gameDirectory = romDirectory(forSystemIdentifier: indentifier) let filenameWithoutExtension = stripDiscNames(fromFilename: gamePath.deletingPathExtension().lastPathComponent) do { diff --git a/PVLibrary/PVLibrary/Database/OESQLiteDatabase.m b/PVLibrary/PVLibrary/Database/OESQLiteDatabase.m index 5e10b8e569..cddc8905a0 100644 --- a/PVLibrary/PVLibrary/Database/OESQLiteDatabase.m +++ b/PVLibrary/PVLibrary/Database/OESQLiteDatabase.m @@ -88,7 +88,7 @@ - (void)dealloc result = [NSMutableArray array]; - while(sqlite3_step(stmt) == SQLITE_ROW) + while(LIKELY(sqlite3_step(stmt) == SQLITE_ROW)) { int columnCount = sqlite3_column_count(stmt); NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:columnCount]; diff --git a/PVLibrary/PVLibrary/PVGameLibrary+Migration.swift b/PVLibrary/PVLibrary/Database/PVGameLibrary+Migration.swift similarity index 94% rename from PVLibrary/PVLibrary/PVGameLibrary+Migration.swift rename to PVLibrary/PVLibrary/Database/PVGameLibrary+Migration.swift index 8d5d38219c..81c080df7d 100644 --- a/PVLibrary/PVLibrary/PVGameLibrary+Migration.swift +++ b/PVLibrary/PVLibrary/Database/PVGameLibrary+Migration.swift @@ -107,7 +107,9 @@ private extension Reactive where Base: FileManager { func removeItem(at path: URL) -> Completable { Completable.create { observer in do { - try self.base.removeItem(at: path) + if self.base.fileExists(atPath: path.path) { + try self.base.removeItem(at: path) + } observer(.completed) } catch { observer(.error(error)) @@ -119,7 +121,10 @@ private extension Reactive where Base: FileManager { func createDirectory(at path: URL, withIntermediateDirectories: Bool, attributes: [FileAttributeKey: Any]?) -> Completable { Completable.create { observer in do { - try self.base.createDirectory(at: path, withIntermediateDirectories: withIntermediateDirectories, attributes: attributes) + if !self.base.fileExists(atPath: path.path) { + try self.base.createDirectory(at: path, withIntermediateDirectories: withIntermediateDirectories, attributes: attributes) + } + observer(.completed) } catch { observer(.error(error)) diff --git a/PVLibrary/PVLibrary/PVGameLibrary.swift b/PVLibrary/PVLibrary/Database/PVGameLibrary.swift similarity index 99% rename from PVLibrary/PVLibrary/PVGameLibrary.swift rename to PVLibrary/PVLibrary/Database/PVGameLibrary.swift index f51afe4185..8bcd565533 100644 --- a/PVLibrary/PVLibrary/PVGameLibrary.swift +++ b/PVLibrary/PVLibrary/Database/PVGameLibrary.swift @@ -43,7 +43,7 @@ public struct PVGameLibrary { } public func systems(sortedBy sortOptions: SortOptions) -> Observable<[System]> { - let betaIDs: [SystemIdentifier] = [.AtariJaguar, .Dreamcast] + let betaIDs: [SystemIdentifier] = SystemIdentifier.betas return Observable.collection(from: database.all(PVSystem.self)) .flatMapLatest({ systems -> Observable<[System]> in // Here we actualy observe on the games for each system, since we want to update this when games are added or removed from a system diff --git a/PVLibrary/PVLibrary/Domain/Protocols/FileInfoProvider.swift b/PVLibrary/PVLibrary/Domain/Protocols/FileInfoProvider.swift index 48cac1fb57..306ff07700 100644 --- a/PVLibrary/PVLibrary/Domain/Protocols/FileInfoProvider.swift +++ b/PVLibrary/PVLibrary/Domain/Protocols/FileInfoProvider.swift @@ -55,7 +55,7 @@ public extension LocalFileProvider { } func fetchData(completion: @escaping FileProviderFetch) { - DispatchQueue.global(qos: .background).async { + DispatchQueue.global(qos: .userInitiated).async { completion(self.readData) } } diff --git a/PVLibrary/PVLibrary/Game Media/PVMediaCache.swift b/PVLibrary/PVLibrary/Game Media/PVMediaCache.swift index 6694c634b6..f110ce10f5 100644 --- a/PVLibrary/PVLibrary/Game Media/PVMediaCache.swift +++ b/PVLibrary/PVLibrary/Game Media/PVMediaCache.swift @@ -141,7 +141,7 @@ public final class PVMediaCache: NSObject { public class func empty() throws { DLOG("Emptying Cache") - DispatchQueue.global(qos: .background).async { + DispatchQueue.global(qos: .utility).async { let cachePath = self.cachePath.path if FileManager.default.fileExists(atPath: cachePath) { try? FileManager.default.removeItem(atPath: cachePath) diff --git a/PVLibrary/PVLibrary/Importer/Services/GameImporter.swift b/PVLibrary/PVLibrary/Importer/Services/GameImporter.swift index 87cf927a7a..8191d643a6 100644 --- a/PVLibrary/PVLibrary/Importer/Services/GameImporter.swift +++ b/PVLibrary/PVLibrary/Importer/Services/GameImporter.swift @@ -15,9 +15,9 @@ import Foundation struct Constants { struct iCloud { - static let containerIdentifier = "iCloud.org.provenance-emu.provenance" +// static let containerIdentifier = "iCloud.org.provenance-emu.provenance" // Dynamic version based off of bundle Identifier - // static let documentsContainerIdentifier = "iCloud." + (Bundle.main.bundleIdentifier ?? "") + static let containerIdentifier = (Bundle.main.infoDictionary?["NSUbiquitousContainers"] as? [String: AnyObject])?.keys.first ?? "iCloud.org.provenance-emu.provenance" } } @@ -113,18 +113,20 @@ public final class GameImporter { } lazy var openVGDB: OESQLiteDatabase = { - let bundle = Bundle(identifier: "org.provenance-emu.PVLibrary")! + let bundle = ThisBundle let _openVGDB = try! OESQLiteDatabase(url: bundle.url(forResource: "openvgdb", withExtension: "sqlite")!) return _openVGDB }() lazy var sqldb: Connection = { - let bundle = Bundle(identifier: "org.provenance-emu.PVLibrary")! - let sqlFile = bundle.url(forResource: "openvgdb", withExtension: "sqlite")! + let bundle = ThisBundle + let sqlFile = bundle.url(forResource: "openvgdb", withExtension: "sqlite")! let sqldb = try! Connection(sqlFile.path, readonly: true) return sqldb }() + fileprivate let ThisBundle: Bundle = Bundle(for: GameImporter.self) + public var conflictedFiles: [URL]? { guard FileManager.default.fileExists(atPath: conflictPath.path), let files = try? FileManager.default.contentsOfDirectory(at: conflictPath, @@ -148,7 +150,7 @@ public final class GameImporter { classInfo.bundle.url(forResource: "Core", withExtension: "plist") } - let bundle = Bundle(identifier: "org.provenance-emu.PVLibrary")! + let bundle = ThisBundle PVEmulatorConfiguration.updateSystems(fromPlists: [bundle.url(forResource: "systems", withExtension: "plist")!]) PVEmulatorConfiguration.updateCores(fromPlists: corePlists) } @@ -243,7 +245,9 @@ public final class GameImporter { if !["bin", "iso", "img", "sub"].contains(candidate.filePath.pathExtension) { WLOG("File should have existed at \(candidate.filePath) but it might have been moved") } - self.deleteIfJunk(candidate.filePath) + DispatchQueue.global(qos: .utility).async { + self.deleteIfJunk(candidate.filePath) + } return nil } @@ -268,8 +272,10 @@ public final class GameImporter { if filePath.lastPathComponent != "0", filePath.path.contains(PVEmulatorConfiguration.Paths.romsImportPath.lastPathComponent), !PVEmulatorConfiguration.allKnownExtensions.contains(filePath.pathExtension.lowercased()) { ILOG("\(filePath.lastPathComponent) doesn't matching any known possible extensions and is in \(PVEmulatorConfiguration.Paths.romsImportPath.lastPathComponent) directory. Deleting.") do { - try FileManager.default.removeItem(at: filePath) - ILOG("Deleted \(filePath.path).") + if FileManager.default.fileExists(atPath: filePath.path) { + try FileManager.default.removeItem(at: filePath) + ILOG("Deleted \(filePath.path).") + } return true } catch { ELOG("Deletion error: \(error.localizedDescription)") diff --git a/PVLibrary/PVLibrary/Importer/iCloudSync.swift b/PVLibrary/PVLibrary/Importer/iCloudSync.swift index ef19a5f3bb..6ae5c07cb4 100644 --- a/PVLibrary/PVLibrary/Importer/iCloudSync.swift +++ b/PVLibrary/PVLibrary/Importer/iCloudSync.swift @@ -142,7 +142,7 @@ extension SyncFileToiCloud where Self: LocalFileInfoProvider { } func syncToiCloud(completionHandler: @escaping (SyncResult) -> Void) { - DispatchQueue.global(qos: .background).async { + DispatchQueue.global(qos: .utility).async { guard let destinationURL = self.destinationURL else { completionHandler(.denied) return @@ -207,7 +207,7 @@ extension SyncFileToiCloud where Self: LocalFileInfoProvider { return } - DispatchQueue.global(qos: .background).async { + DispatchQueue.global(qos: .utility).async { if !FileManager.default.isUbiquitousItem(at: destinationURL) { completionHandler(.fileNotExist) return diff --git a/PVLibrary/PVLibrary/Info.plist b/PVLibrary/PVLibrary/Info.plist index 82790df0f0..46e1265d01 100644 --- a/PVLibrary/PVLibrary/Info.plist +++ b/PVLibrary/PVLibrary/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) + $(PVLIBRARY_PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/PVLibrary/PVLibrary/NSExtensions/NSFileManager+Hashing.m b/PVLibrary/PVLibrary/NSExtensions/NSFileManager+Hashing.m index 6c3ad46d88..cc83f62a7d 100644 --- a/PVLibrary/PVLibrary/NSExtensions/NSFileManager+Hashing.m +++ b/PVLibrary/PVLibrary/NSExtensions/NSFileManager+Hashing.m @@ -8,6 +8,7 @@ #import "NSFileManager+Hashing.h" #import +#import #define HASH_READ_CHUNK_SIZE (1024 * 32) @@ -48,7 +49,7 @@ - (NSString *)MD5ForFileAtPath:(NSString *)path fromOffset:(NSUInteger)offset break; } } - } while (YES); + } while (LIKELY(YES)); [handle closeFile]; diff --git a/PVLibrary/PVLibrary/Public Headers/NSData+Hashing.h b/PVLibrary/PVLibrary/Public Headers/NSData+Hashing.h new file mode 100644 index 0000000000..64d38e4216 Binary files /dev/null and b/PVLibrary/PVLibrary/Public Headers/NSData+Hashing.h differ diff --git a/PVLibrary/PVLibrary/Public Headers/NSFileManager+Hashing.h b/PVLibrary/PVLibrary/Public Headers/NSFileManager+Hashing.h new file mode 100644 index 0000000000..7dd4476c64 Binary files /dev/null and b/PVLibrary/PVLibrary/Public Headers/NSFileManager+Hashing.h differ diff --git a/PVLibrary/PVLibrary/Public Headers/NSString+Hashing.h b/PVLibrary/PVLibrary/Public Headers/NSString+Hashing.h new file mode 100644 index 0000000000..83bf81db37 Binary files /dev/null and b/PVLibrary/PVLibrary/Public Headers/NSString+Hashing.h differ diff --git a/PVLibrary/PVLibrary/Public Headers/OESQLiteDatabase.h b/PVLibrary/PVLibrary/Public Headers/OESQLiteDatabase.h new file mode 100644 index 0000000000..d6af91aa0f Binary files /dev/null and b/PVLibrary/PVLibrary/Public Headers/OESQLiteDatabase.h differ diff --git a/PVLibrary/PVLibrary/Public Headers/UIImage+Scaling.h b/PVLibrary/PVLibrary/Public Headers/UIImage+Scaling.h new file mode 100644 index 0000000000..9403000e76 Binary files /dev/null and b/PVLibrary/PVLibrary/Public Headers/UIImage+Scaling.h differ diff --git a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVGame+BoxArt.swift b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVGame+BoxArt.swift index d395a35509..4208052fb5 100644 --- a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVGame+BoxArt.swift +++ b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVGame+BoxArt.swift @@ -71,7 +71,7 @@ public extension PVGame { case .NES, .Sega32X, .Atari2600, .Atari5200, .Atari7800, .AtariJaguar, .WonderSwan, .WonderSwanColor, .MasterSystem, .SG1000, .FDS, .GameCube, .PS2, .Intellivision, .ColecoVision, ._3DO, .Odyssey2: return .tall - case .GBA, .GBC, .Lynx, .NGP, .NGPC, .PCECD, .PCFX, .PokemonMini, .PSX, .SegaCD, .VirtualBoy, .DS: + case .GBA, .GBC, .Lynx, .NeoGeo, .NeoGeo, .NGP, .NGPC, .PCECD, .PCFX, .PokemonMini, .PSX, .SegaCD, .VirtualBoy, .DS: return .square case .Saturn: switch regionName { diff --git a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVSystem.swift b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVSystem.swift index d6a6e38898..72d5b14084 100644 --- a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVSystem.swift +++ b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVSystem.swift @@ -182,9 +182,9 @@ public extension PVSystem { #if os(tvOS) var imageType: TVContentItemImageShape { switch enumValue { - case .NES, .Dreamcast, .GameCube, .Genesis, .Saturn, .SegaCD, .MasterSystem, .SG1000, .Sega32X, .Atari2600, .Atari5200, .Atari7800, .AtariJaguar, .Lynx, .WonderSwan, .WonderSwanColor, .PS2, .PS3, .PSP, .Intellivision, .ColecoVision, ._3DO, .Odyssey2, .Vectrex: + case .NES, .Dreamcast, .GameCube, .Genesis, .Saturn, .SegaCD, .MasterSystem, .SG1000, .Sega32X, .Atari2600, .Atari5200, .Atari7800, .AtariJaguar, .Lynx, .WonderSwan, .WonderSwanColor, .PS2, .PS3, .PSP, .Intellivision, .ColecoVision, ._3DO, .Odyssey2, .Atari8bit, .Vectrex: return .poster - case .GameGear, .GB, .GBC, .GBA, .NGP, .NGPC, .PSX, .VirtualBoy, .PCE, .PCECD, .PCFX, .SGFX, .FDS, .PokemonMini, .DS, .Unknown: + case .GameGear, .GB, .GBC, .GBA, .NeoGeo, .NGP, .NGPC, .PSX, .VirtualBoy, .PCE, .PCECD, .PCFX, .SGFX, .FDS, .PokemonMini, .DS, .Unknown: return .square case .N64, .SNES: return .HDTV diff --git a/PVLibrary/PVLibrary/RealmPlatform/RomDatabase.swift b/PVLibrary/PVLibrary/RealmPlatform/RomDatabase.swift index 26683975d7..8bb28a8fe9 100644 --- a/PVLibrary/PVLibrary/RealmPlatform/RomDatabase.swift +++ b/PVLibrary/PVLibrary/RealmPlatform/RomDatabase.swift @@ -69,7 +69,9 @@ public final class RealmConfiguration { if fm.fileExists(atPath: nonGroupPath.path) { do { ILOG("Found realm database at non-group path location. Will attempt to move to group path location") - try fm.removeItem(at: realmURL) + if fm.fileExists(atPath: realmURL.path) { + try fm.removeItem(at: realmURL) + } try fm.moveItem(at: nonGroupPath, to: realmURL) ILOG("Moved old database to group path location.") } catch { diff --git a/PVLibrary/PVLibrary/Resources/systems.plist b/PVLibrary/PVLibrary/Resources/systems.plist index aef78b208a..5d5ea00a9d 100644 --- a/PVLibrary/PVLibrary/Resources/systems.plist +++ b/PVLibrary/PVLibrary/Resources/systems.plist @@ -318,40 +318,52 @@ PVControlLayout + + PVControlType + PVDPad + PVControlSize + {180,180} + + + PVControlType + PVJoyPad + PVControlSize + {160,160} + PVControlType PVButtonGroup PVControlSize - {240, 240} + {264, 380} PVGroupedButtons PVControlType PVButton PVControlTitle - A + C▲ PVControlFrame - {{60,172},{60,60}} + {{170,4},{60,60}} PVControlTint - #0056b1 + #ffbe2c PVControlType PVButton PVControlTitle - B + C◀ PVControlFrame - {{4,116},{60,60}} + {{116,60},{60,60}} PVControlTint - #008c4e + #ffbe2c PVControlType PVButton PVControlTitle - C▲ + C▶ PVControlFrame - {{116,4},{60,60}} + {{202,60},{60,60}} PVControlTint #ffbe2c @@ -361,7 +373,7 @@ PVControlTitle C▼ PVControlFrame - {{116,116},{60,60}} + {{162,116},{60,60}} PVControlTint #ffbe2c @@ -369,37 +381,41 @@ PVControlType PVButton PVControlTitle - C◀ + B PVControlFrame - {{60,60},{60,60}} + {{64,166},{60,60}} PVControlTint - #ffbe2c + #008c4e PVControlType PVButton PVControlTitle - C▶ + A PVControlFrame - {{172,60},{60,60}} + {{120,212},{60,60}} PVControlTint - #ffbe2c + #0056b1 + + + PVControlType + PVButton + PVControlTitle + Z + PVControlFrame + {{204,232},{60,60}} + PVControlTint + #5D3FD3 - - PVControlType - PVDPad - PVControlSize - {180,180} - PVControlType PVStartButton PVControlTitle Start PVControlSize - {60,42} + {60,60} PVControlTint #cc0000 @@ -419,14 +435,6 @@ PVControlSize {60,42} - - PVControlType - PVZTriggerButton - PVControlTitle - Z - PVControlSize - {60,42} - @@ -549,6 +557,12 @@ PVControlSize {180,180} + + PVControlType + PVJoyPad + PVControlSize + {160,160} + PVControlType PVStartButton @@ -627,7 +641,7 @@ PVReleaseYear 2000 PVBit - 64 + 128 PVSystemIdentifier com.provenance.ps2 PVDatabaseID @@ -648,6 +662,9 @@ ccd chd cso + elf + iso + isz PVControlLayout @@ -925,6 +942,85 @@ + + PVManufacturer + NGK + PVSystemName + Neo Geo + PVSystemShortName + NG + PVReleaseYear + 1990 + PVBit + 24 + PVSystemIdentifier + com.provenance.neogeo + PVDatabaseID + 91 + PVPortable + + PVRequiresBIOS + + PVBIOSNames + + + Description + UNIVERSE BIOS + MD5 + 4f0aeda8d2d145f596826b62d563c4ef + Name + uni-bios.rom + Size + 131072 + + + PVSupportedExtensions + + ng + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {180, 180} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + B + PVControlFrame + {{116,60},{60,60}} + + + PVControlType + PVButton + PVControlTitle + A + PVControlFrame + {{60,116},{60,60}} + + + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + PVControlType + PVStartButton + PVControlTitle + Option + PVControlSize + {60,42} + + + PVManufacturer NGK @@ -999,7 +1095,7 @@ PVSystemName Virtual Boy PVSystemShortName - VB + Virtual Boy PVReleaseYear 1995 PVBit @@ -1935,7 +2031,7 @@ PVSystemName Game Gear PVSystemShortName - SGG + Game Gear PVReleaseYear 1990 PVBit @@ -3035,7 +3131,7 @@ PVControlTitle Pause PVControlSize - {62,22} + {60,42} PVControlType @@ -3043,7 +3139,7 @@ PVControlTitle Option PVControlSize - {62,22} + {60,42} PVControlType @@ -3249,6 +3345,131 @@ + + PVRequiresMouse + + PVRequiresKeyboard + + PVManufacturer + Atari + PVSystemName + Atari 8bit Computer + PVSystemShortName + Atari8bit + PVReleaseYear + 1982 + PVBit + 8 + PVPortable + + PVSystemIdentifier + com.provenance.atari8bit + PVDatabaseID + 4 + PVRequiresBIOS + + PVBIOSNames + + + Description + BIOS for the BASIC interpreter + MD5 + 0bac0c6a50104045d902df4503a4c30b + Name + ataribas.rom + Size + 0 + + + Description + BIOS for Atari XL/XE OS + MD5 + 06daac977823773a3eea3422fd26a703 + Name + ATARIXL.ROM + Size + 0 + + + Description + BIOS for Atari 400/800 PAL + MD5 + eb1f32f5d9f382db1bbfb8d7f9cb343a + Name + ATARIOSA.ROM + Size + 0 + + + Description + BIOS for Atari 400/800 NTSC + MD5 + a3e8d617c95d08031fe1b20d541434b2 + Name + ATARIOSB.ROM + Size + 0 + + + PVSupportedExtensions + + a52 + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {180,180} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + 1 + PVControlFrame + {{10,70},{60,70}} + PVControlTint + #f96763 + + + PVControlType + PVButton + PVControlTitle + 2 + PVControlFrame + {{90,70},{60,70}} + PVControlTint + #f96763 + + + + + PVControlType + PVStartButton + PVControlTitle + Reset + PVControlSize + {60,42} + + + PVControlType + PVSelectButton + PVControlTitle + Start + PVControlSize + {60,42} + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + PVManufacturer Nintendo diff --git a/PVLibrary/PVLibrary/Util/UTI.swift b/PVLibrary/PVLibrary/Util/UTI.swift index d12f96d1f2..ff9929a19c 100644 --- a/PVLibrary/PVLibrary/Util/UTI.swift +++ b/PVLibrary/PVLibrary/Util/UTI.swift @@ -13,7 +13,7 @@ import CoreServices public extension UTI { static let rom = UTI(rawValue: "com.provenance.rom") static let bios = UTI(rawValue: "com.provenance.rom") - static let artwork = UTI(rawValue: "com.provence.artwork") + static let artwork = UTI(rawValue: "com.provenance.artwork") static let savestate = UTI(rawValue: "com.provenance.savestate") static let sevenZipArchive = UTI(rawValue: "org.7-zip.7-zip-archive") } diff --git a/PVLibrary/Package.resolved b/PVLibrary/Package.resolved new file mode 100644 index 0000000000..f79caaa169 --- /dev/null +++ b/PVLibrary/Package.resolved @@ -0,0 +1,88 @@ +{ + "object": { + "pins": [ + { + "package": "CocoaLumberjack", + "repositoryURL": "https://github.com/CocoaLumberjack/CocoaLumberjack", + "state": { + "branch": null, + "revision": "80ada1f753b0d53d9b57c465936a7c4169375002", + "version": "3.7.4" + } + }, + { + "package": "Reachability", + "repositoryURL": "https://github.com/ashleymills/Reachability.swift", + "state": { + "branch": null, + "revision": "c01bbdf2d633cf049ae1ed1a68a2020a8bda32e2", + "version": "5.1.0" + } + }, + { + "package": "Realm", + "repositoryURL": "https://github.com/realm/realm-cocoa", + "state": { + "branch": null, + "revision": "39177714b95bb5b1b29fffe28f1c7da77eef8e8b", + "version": "10.21.1" + } + }, + { + "package": "RealmDatabase", + "repositoryURL": "https://github.com/realm/realm-core", + "state": { + "branch": null, + "revision": "f1976f0d96d9b06fbe0afbd60090b1c3966b1e23", + "version": "11.8.0" + } + }, + { + "package": "RxRealm", + "repositoryURL": "https://github.com/RxSwiftCommunity/RxRealm", + "state": { + "branch": null, + "revision": "d9e612a1bc3788c910b307e49093dec788d102df", + "version": "5.0.3" + } + }, + { + "package": "RxSwift", + "repositoryURL": "https://github.com/ReactiveX/RxSwift", + "state": { + "branch": null, + "revision": "b4307ba0b6425c0ba4178e138799946c3da594f8", + "version": "6.5.0" + } + }, + { + "package": "SQLite.swift", + "repositoryURL": "https://github.com/stephencelis/SQLite.swift", + "state": { + "branch": null, + "revision": "60a65015f6402b7c34b9a924f755ca0a73afeeaa", + "version": "0.13.1" + } + }, + { + "package": "swift-log", + "repositoryURL": "https://github.com/apple/swift-log.git", + "state": { + "branch": null, + "revision": "5d66f7ba25daf4f94100e7022febf3c75e37a6c7", + "version": "1.4.2" + } + }, + { + "package": "ZipArchive", + "repositoryURL": "https://github.com/ZipArchive/ZipArchive", + "state": { + "branch": null, + "revision": "825ff12a74a94c54e737e279604c27e6740e8a2c", + "version": "2.4.2" + } + } + ] + }, + "version": 1 +} diff --git a/PVLibrary/Package.swift b/PVLibrary/Package.swift new file mode 100644 index 0000000000..99195de29d --- /dev/null +++ b/PVLibrary/Package.swift @@ -0,0 +1,128 @@ +// swift-tools-version:5.3 +// The swift-tools-version declares the minimum version of Swift required to build this package. +import PackageDescription + +let package = Package( + name: "PVLibrary", + platforms: [ + .iOS(.v11), + .tvOS(.v11), + .watchOS(.v7), + .macOS(.v11) + ], + products: [ + // Products define the executables and libraries a package produces, and make them visible to other packages. + .library( + name: "PVLibrary", + targets: ["PVLibrary"]) + ], + dependencies: [ + // Dependencies declare other packages that this package depends on. + .package( + name: "PVSupport", + path: "../PVSupport"), + .package( + url: "https://github.com/ReactiveX/RxSwift", + .upToNextMajor(from: "6.2.0")), + .package( + url: "https://github.com/RxSwiftCommunity/RxRealm", + .upToNextMajor(from: "5.0.3")), + .package( + name: "SQLite.swift", + url: "https://github.com/stephencelis/SQLite.swift", + .upToNextMajor(from: "0.12.2")), + .package( + name: "ZipArchive", + url: "https://github.com/ZipArchive/ZipArchive", + .upToNextMajor(from: "2.3.0")), + .package( + name: "Reachability", + url: "https://github.com/realm/realm-cocoa", + .upToNextMajor(from: "10.20.2")) + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages this package depends on. + .target( + name: "PVLibraryObjC", + dependencies: [ + "PVSupport", + // "Realm", + // "RealmSwift", + .product(name: "RxCocoa", package: "RxSwift"), + .product(name: "RxSwift", package: "RxSwift"), + .product(name: "RxRealm", package: "RxRealm"), + .product(name: "SQLite", package: "SQLite.swift"), + .product(name: "ZipArchive", package: "ZipArchive") + ], + path: "PVLibrary", + sources: [ + "Database/OESQLiteDatabase.m", + "NSExtensions/NSFileManager+Hashing.m", + "NSExtensions/UIImage+Scaling.m", + "NSExtensions/NSString+Hashing.m", + "NSExtensions/NSData+Hashing.m", + // "LzmaSDKObjC/src/LzmaSDKObjC.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCBufferProcessor.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCCrc.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCError.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCExtern.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCExtractCallback.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCItem.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCMutableItem.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCReader.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCUpdateCallback.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCWriter.mm", + ], + publicHeadersPath: "Public Headers"), + + .target( + name: "LzmaSDKObjC", + path: "LzmaSDKObjC" + ), + + .target( + name: "PVLibrary", + dependencies: [ + "PVSupport", + "LzmaSDKObjC", + "PVLibraryObjC", + // "Realm", + // "RealmSwift", + .product(name: "RxCocoa", package: "RxSwift"), + .product(name: "RxSwift", package: "RxSwift"), + .product(name: "RxRealm", package: "RxRealm"), + .product(name: "SQLite", package: "SQLite.swift"), + .product(name: "ZipArchive", package: "ZipArchive") + ], + path: "PVLibrary", + exclude: [ + "Database/OESQLiteDatabase.m", + "NSExtensions/NSFileManager+Hashing.m", + "NSExtensions/UIImage+Scaling.m", + "NSExtensions/NSString+Hashing.m", + "NSExtensions/NSData+Hashing.m", + "Info.plist", + // "LzmaSDKObjC/src/LzmaSDKObjC.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCBufferProcessor.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCCrc.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCError.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCExtern.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCExtractCallback.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCItem.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCMutableItem.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCReader.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCUpdateCallback.mm", + // "LzmaSDKObjC/src/LzmaSDKObjCWriter.mm", + ], + resources: [ + .process("Resources/") + ]), + + // MARK: SwiftPM tests + .testTarget( + name: "PVLibraryTests", + dependencies: ["PVLibrary"], + path: "Tests") + ] +) diff --git a/PVLibrary/PVLibraryTests/Info.plist b/PVLibrary/Tests/Info.plist similarity index 100% rename from PVLibrary/PVLibraryTests/Info.plist rename to PVLibrary/Tests/Info.plist diff --git a/PVLibrary/PVLibraryTests/PVLibraryTests.swift b/PVLibrary/Tests/PVLibraryTests.swift similarity index 100% rename from PVLibrary/PVLibraryTests/PVLibraryTests.swift rename to PVLibrary/Tests/PVLibraryTests.swift diff --git a/PVSupport/CoreOptions/CoreOptions.swift b/PVSupport/CoreOptions/CoreOptions.swift deleted file mode 100644 index 5c80bc057c..0000000000 --- a/PVSupport/CoreOptions/CoreOptions.swift +++ /dev/null @@ -1,367 +0,0 @@ -// -// CoreOptions.swift -// PVSupport -// -// Created by Joseph Mattiello on 4/11/18. -// Copyright © 2018 James Addyman. All rights reserved. -// - -import Foundation - -public protocol CoreOptional: AnyObject { - static var options: [CoreOption] { get } -} - -public enum CoreOptionValue { - case bool(Bool) - case string(String) - case number(NSNumber) - case notFound - - public var asBool: Bool { - switch self { - case .bool(let value): return value - case .string(let value): return Bool(value) ?? false - case .number(let value): return value.boolValue - case .notFound: return false - } - } -} - -public extension CoreOptional { // where Self:PVEmulatorCore { - static func valueForOption(_: T.Type, _ option: String) -> T? { - let className = NSStringFromClass(Self.self) - let key = "\(className).\(option)" - - if let savedOption = UserDefaults.standard.object(forKey: key) as? T { - return savedOption - } else { - let currentOptions: [CoreOption] = options - guard let foundOption = findOption(forKey: option, options: currentOptions) else { - ELOG("No option for key: \(option)") - return nil - } - return UserDefaults.standard.object(forKey: "\(className).\(foundOption)") as? T - } - } - - static func setValue(_ value: Any?, forOption option: CoreOption) { - let className = NSStringFromClass(Self.self) - let key = "\(className).\(option)" - - // TODO: Make sure the value matches the option type - - UserDefaults.standard.set(value, forKey: key) - UserDefaults.standard.synchronize() - } - - static func valueForOption(_ option: CoreOption) -> CoreOptionValue { - switch option { - case .bool: - let value = valueForOption(Bool.self, option.key) ?? false - return .bool(value) - case .string: - if let value = valueForOption(String.self, option.key) { - return .string(value) - } else { - return .notFound - } - case .range: - if let value = valueForOption(NSNumber.self, option.key) { - return .number(value) - } else { - return .notFound - } - case .multi: - if let value = valueForOption(NSNumber.self, option.key) { - return .number(value) - } else if let value = valueForOption(String.self, option.key) { - return .string(value) - } else { - return .notFound - } - case .group: - assertionFailure("Feature unfinished") - return .notFound - } - } - - static func findOption(forKey key: String, options: [CoreOption]) -> CoreOption? { - var foundOption: CoreOption? - for option in options { - let subOption = option.subOptionForKey(key) - if subOption != nil { - foundOption = subOption - } - } - return foundOption - } -} - -// public protocol Rangable { -// var defaultValue : Codable {get} -// var min : Codable {get} -// var max : Codable {get} -// } -// -// public struct CoreOptionRange : Rangable { -// public let defaultValue : T -// public let min : T -// public let max : T -// } - -public struct CoreOptionRange { - public let defaultValue: Int - public let min: Int - public let max: Int -} - -extension CoreOptionRange: Codable, Equatable, Hashable {} - -public struct CoreOptionMultiValue { - public let title: String - public let description: String? - - public static func values(fromArray a: [[String]]) -> [CoreOptionMultiValue] { - return a.compactMap { - if $0.count == 1 { - return CoreOptionMultiValue(title: $0[0], description: nil) - } else if $0.count >= 2 { - return CoreOptionMultiValue(title: $0[0], description: $0[1]) - } else { - return nil - } - } - } - - public static func values(fromArray a: [String]) -> [CoreOptionMultiValue] { - return a.map { - CoreOptionMultiValue(title: $0, description: nil) - } - } -} - -extension CoreOptionMultiValue: Codable, Equatable, Hashable {} - -public struct CoreOptionValueDisplay { - public let title: String - public let description: String? - public let requiresRestart: Bool - - public init(title: String, description: String? = nil, requiresRestart: Bool = false) { - self.title = title - self.description = description - self.requiresRestart = requiresRestart - } -} - -extension CoreOptionValueDisplay: Codable, Equatable, Hashable {} - -public protocol OptionValueRepresentable: Codable {} - -extension Int: OptionValueRepresentable {} -extension Bool: OptionValueRepresentable {} -extension String: OptionValueRepresentable {} -extension Float: OptionValueRepresentable {} - -public struct OptionDependency { - let option: OptionType - let mustBe: OptionType.Type? - let mustNotBe: OptionType.Type? -} - -public protocol COption { - associatedtype ValueType: OptionValueRepresentable - - var key: String { get } - var title: String { get } - var description: String? { get } - -// associatedtype Dependencies : COption -// var dependsOn : [OptionDependency]? {get set} - - var defaultValue: ValueType { get } - var value: ValueType { get } -} - -public protocol MultiCOption: COption { - var options: [(key: String, title: String, description: String?)] { get } -} - -// public struct CoreOptionModel : COption { -// -// let key : String -// let title : String -// let description: String? -// -// let defaultValue : ValueType -// -// var value : ValueType { -// return UserDefaults.standard.value(forKey: key) as? ValueType ?? defaultValue -// } -// -// public init(key: String, title: String, description: String? = nil, defaultValue: ValueType) { -// self.key = key -// self.title = title -// self.description = description -// self.defaultValue = defaultValue -// } -// } - -public enum CoreOption { - case bool(display: CoreOptionValueDisplay, defaultValue: Bool) - case range(display: CoreOptionValueDisplay, range: CoreOptionRange, defaultValue: Int) - case multi(display: CoreOptionValueDisplay, values: [CoreOptionMultiValue]) - case string(display: CoreOptionValueDisplay, defaultValue: String) - case group(display: CoreOptionValueDisplay, subOptions: [CoreOption]) - - public var defaultValue: Any? { - switch self { - case let .bool(_, defaultValue): - return defaultValue - case let .range(_, _, defaultValue): - return defaultValue - case let .multi(_, values): - return values.first?.title - case let .string(_, defaultValue): - return defaultValue - case .group: - return nil - } - } - - public var key: String { - switch self { - case .bool(let display, _): - return display.title - case .range(let display, _, _): - return display.title - case .multi(let display, _): - return display.title - case .string(let display, _): - return display.title - case .group(let display, _): - return display.title - } - } - - func subOptionForKey(_ key: String) -> CoreOption? { - switch self { - case let .group(_, subOptions): - return subOptions.first { $0.key == key } - default: - return nil - } - } -} - -extension CoreOption: Codable { - public enum CodingError: Error { case decoding(String) } - enum CodableKeys: String, CodingKey { case display, defaultValue, range, values, subOptions } - - public init(from decoder: Decoder) throws { - let values = try decoder.container(keyedBy: CodableKeys.self) - - // All cases need display - guard let display = try? values.decode(CoreOptionValueDisplay.self, forKey: .display) else { - throw CodingError.decoding("Decoding Failed. No display key. \(dump(values))") - } - - // Bool - if let defaultValue = try? values.decode(Bool.self, forKey: .defaultValue) { - self = .bool(display: display, defaultValue: defaultValue) - return - } - - // Range - if let range = try? values.decode(CoreOptionRange.self, forKey: .range), let defaultValue = try? values.decode(Int.self, forKey: .defaultValue) { - self = .range(display: display, range: range, defaultValue: defaultValue) - return - } - - // multi - if let values = try? values.decode([CoreOptionMultiValue].self, forKey: .values) { - self = .multi(display: display, values: values) - return - } - - // string - if let defaultValue = try? values.decode(String.self, forKey: .defaultValue) { - self = .string(display: display, defaultValue: defaultValue) - return - } - - // group - if let subOptions = try? values.decode([CoreOption].self, forKey: CodableKeys.subOptions) { - self = .group(display: display, subOptions: subOptions) - return - } - - throw CodingError.decoding("Decoding Failed. \(dump(values))") - } - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodableKeys.self) - - switch self { - case let .bool(display, defaultValue): - try container.encode(display, forKey: .display) - try container.encode(defaultValue, forKey: .defaultValue) - case let .range(display, range, defaultValue): - try container.encode(display, forKey: .display) - try container.encode(range, forKey: .range) - try container.encode(defaultValue, forKey: .defaultValue) - case let .multi(display, values): - try container.encode(display, forKey: .display) - try container.encode(values, forKey: .values) - case let .string(display, defaultValue): - try container.encode(display, forKey: .display) - try container.encode(defaultValue, forKey: .defaultValue) - case let .group(display, subOptions): - try container.encode(display, forKey: .display) - try container.encode(subOptions, forKey: .subOptions) - } - } -} - -public typealias OptionAvailable = (() -> (available: Bool, reasonNotAvailable: String?)) - -extension CoreOptionMultiValue { - public init(title: String, description: String) { - self.title = title - self.description = description - } -} - -// public protocol CoreOptionP { -// var defaultValue : ValueType {get} -// var title : String {get} -// var description : String {get} -// -// var currentValue : ValueType {get} -// } - -// public struct CoreOptionValue { -// let description : String -// let value : T -// } - -// public struct CoreOptionMultiple { -// let title : String -// let description : String -// let values : [CoreOptionMultiValue] -// let defaultValue : [CoreOptionMultiValue] -// } -// -// public struct CoreOption { -// typealias ValueType = T -// -// let defaultValue : T -// let title : String -// let description : String -// -// -//// var currentValue : T { -//// let -//// } -// } diff --git a/PVSupport/EmulatorCore/PVEmulatorCore.swift b/PVSupport/EmulatorCore/PVEmulatorCore.swift deleted file mode 100644 index 8d1b8978e1..0000000000 --- a/PVSupport/EmulatorCore/PVEmulatorCore.swift +++ /dev/null @@ -1,9 +0,0 @@ -// -// PVEmulatorCore.swift -// PVSupport -// -// Created by Joseph Mattiello on 3/8/18. -// Copyright © 2018 James Addyman. All rights reserved. -// - -import Foundation diff --git a/PVSupport/PVSupport.xcodeproj/project.pbxproj b/PVSupport/PVSupport.xcodeproj/project.pbxproj index f02d4fde26..4c09d5594c 100644 --- a/PVSupport/PVSupport.xcodeproj/project.pbxproj +++ b/PVSupport/PVSupport.xcodeproj/project.pbxproj @@ -36,8 +36,6 @@ B305EF5B276B4E41003AE510 /* PVEmulatorCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A74C8920522B04001D3D2E /* PVEmulatorCore.swift */; }; B305EF5C276B4E41003AE510 /* PViCadeSteelSeriesController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37902187F9A9009D9244 /* PViCadeSteelSeriesController.swift */; }; B305EF5D276B4E41003AE510 /* ArchiveSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEBB21D4C3E6000C55F7 /* ArchiveSupport.swift */; }; - B305EF5E276B4E41003AE510 /* OERingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D5A1D6B908300060D71 /* OERingBuffer.m */; }; - B305EF5F276B4E41003AE510 /* OEGameAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA69217F748F80031B1C9 /* OEGameAudio.m */; }; B305EF60276B4E41003AE510 /* PViCade8BitdoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378C2187F9A9009D9244 /* PViCade8BitdoController.swift */; }; B305EF61276B4E41003AE510 /* PViCadeInputAxis.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378A2187F9A9009D9244 /* PViCadeInputAxis.swift */; }; B305EF62276B4E41003AE510 /* DDLogLevel+CustomStringConvertable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296E9E26C685450088AC32 /* DDLogLevel+CustomStringConvertable.swift */; }; @@ -66,7 +64,6 @@ B305EF79276B4E41003AE510 /* PVEmulatorCore.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D601D6B90BD00060D71 /* PVEmulatorCore.m */; }; B305EF7A276B4E41003AE510 /* PVLogEntry.m in Sources */ = {isa = PBXBuildFile; fileRef = B302F89920B73D5F00C5E502 /* PVLogEntry.m */; }; B305EF7B276B4E41003AE510 /* TPCircularBuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA69517F748F80031B1C9 /* TPCircularBuffer.c */; }; - B305EF7C276B4E41003AE510 /* PVGameControllerUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D621D6B90BD00060D71 /* PVGameControllerUtilities.m */; }; B305EF7D276B4E41003AE510 /* PVLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = B302F89E20B73D6400C5E502 /* PVLogging.m */; }; B305EF7E276B4E41003AE510 /* PViCadeMocuteController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37922187F9A9009D9244 /* PViCadeMocuteController.swift */; }; B305EF7F276B4E41003AE510 /* CocoaLumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3F0846B2188CA7A00FF39EE /* CocoaLumberExtensions.swift */; }; @@ -81,7 +78,6 @@ B305EF8B276B4E41003AE510 /* CocoaLumberjackSwift in Frameworks */ = {isa = PBXBuildFile; productRef = B305EF42276B4E41003AE510 /* CocoaLumberjackSwift */; }; B305EF9A276B4F0A003AE510 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B305EF99276B4F0A003AE510 /* GameKit.framework */; }; B305EF9C276B4FDD003AE510 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B305EF9B276B4FDC003AE510 /* CoreGraphics.framework */; }; - B305EF9D276B4FF4003AE510 /* PVGameControllerUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B3FA5D611D6B90BD00060D71 /* PVGameControllerUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; B324C3162191963B009F4EDC /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C3152191963B009F4EDC /* AVFoundation.framework */; }; B3296E8126C67EFA0088AC32 /* CocoaLumberjack+NSLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296E8026C67EF90088AC32 /* CocoaLumberjack+NSLogger.swift */; }; B3296E8226C67EFA0088AC32 /* CocoaLumberjack+NSLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296E8026C67EF90088AC32 /* CocoaLumberjack+NSLogger.swift */; }; @@ -94,6 +90,33 @@ B336B8F126B3985B00960A81 /* CocoaLumberjackSwift in Frameworks */ = {isa = PBXBuildFile; productRef = B336B8F026B3985B00960A81 /* CocoaLumberjackSwift */; }; B336B8F426B398A900960A81 /* Reachability in Frameworks */ = {isa = PBXBuildFile; platformFilter = ios; productRef = B336B8F326B398A900960A81 /* Reachability */; }; B336B8F826B3991500960A81 /* CocoaLumberjackSwift in Frameworks */ = {isa = PBXBuildFile; productRef = B336B8F726B3991500960A81 /* CocoaLumberjackSwift */; }; + B33FB2EB279BE0CC0013AAD8 /* CoreOptions+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2EA279BE0CC0013AAD8 /* CoreOptions+Serialization.swift */; }; + B33FB2EC279BE0CC0013AAD8 /* CoreOptions+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2EA279BE0CC0013AAD8 /* CoreOptions+Serialization.swift */; }; + B33FB2ED279BE0CC0013AAD8 /* CoreOptions+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2EA279BE0CC0013AAD8 /* CoreOptions+Serialization.swift */; }; + B33FB2EF279BE0F50013AAD8 /* CoreOptionValueDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2EE279BE0F50013AAD8 /* CoreOptionValueDisplay.swift */; }; + B33FB2F0279BE0F50013AAD8 /* CoreOptionValueDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2EE279BE0F50013AAD8 /* CoreOptionValueDisplay.swift */; }; + B33FB2F1279BE0F50013AAD8 /* CoreOptionValueDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2EE279BE0F50013AAD8 /* CoreOptionValueDisplay.swift */; }; + B33FB2F3279BE1320013AAD8 /* CoreOptions+Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2F2279BE1320013AAD8 /* CoreOptions+Protocols.swift */; }; + B33FB2F4279BE1330013AAD8 /* CoreOptions+Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2F2279BE1320013AAD8 /* CoreOptions+Protocols.swift */; }; + B33FB2F5279BE1330013AAD8 /* CoreOptions+Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2F2279BE1320013AAD8 /* CoreOptions+Protocols.swift */; }; + B33FB2F8279BE1730013AAD8 /* CoreOptionMultiValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2F7279BE1730013AAD8 /* CoreOptionMultiValue.swift */; }; + B33FB2F9279BE1730013AAD8 /* CoreOptionMultiValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2F7279BE1730013AAD8 /* CoreOptionMultiValue.swift */; }; + B33FB2FA279BE1730013AAD8 /* CoreOptionMultiValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2F7279BE1730013AAD8 /* CoreOptionMultiValue.swift */; }; + B33FB2FC279BE18F0013AAD8 /* CoreOptionEnumValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2FB279BE18F0013AAD8 /* CoreOptionEnumValue.swift */; }; + B33FB2FD279BE18F0013AAD8 /* CoreOptionEnumValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2FB279BE18F0013AAD8 /* CoreOptionEnumValue.swift */; }; + B33FB2FE279BE18F0013AAD8 /* CoreOptionEnumValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2FB279BE18F0013AAD8 /* CoreOptionEnumValue.swift */; }; + B33FB300279BE1E40013AAD8 /* OptionDependency.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2FF279BE1E40013AAD8 /* OptionDependency.swift */; }; + B33FB301279BE1E40013AAD8 /* OptionDependency.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2FF279BE1E40013AAD8 /* OptionDependency.swift */; }; + B33FB302279BE1E40013AAD8 /* OptionDependency.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2FF279BE1E40013AAD8 /* OptionDependency.swift */; }; + B33FB304279BE21C0013AAD8 /* CoreOptionRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB303279BE21C0013AAD8 /* CoreOptionRange.swift */; }; + B33FB305279BE21C0013AAD8 /* CoreOptionRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB303279BE21C0013AAD8 /* CoreOptionRange.swift */; }; + B33FB306279BE21C0013AAD8 /* CoreOptionRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB303279BE21C0013AAD8 /* CoreOptionRange.swift */; }; + B33FB308279BE2460013AAD8 /* CoreOptionValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB307279BE2460013AAD8 /* CoreOptionValue.swift */; }; + B33FB309279BE2460013AAD8 /* CoreOptionValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB307279BE2460013AAD8 /* CoreOptionValue.swift */; }; + B33FB30A279BE2460013AAD8 /* CoreOptionValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB307279BE2460013AAD8 /* CoreOptionValue.swift */; }; + B33FB30D279BE2710013AAD8 /* CoreOptional.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB30C279BE2710013AAD8 /* CoreOptional.swift */; }; + B33FB30E279BE2710013AAD8 /* CoreOptional.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB30C279BE2710013AAD8 /* CoreOptional.swift */; }; + B33FB30F279BE2710013AAD8 /* CoreOptional.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB30C279BE2710013AAD8 /* CoreOptional.swift */; }; B3447E86218B7E4B00557ACE /* CABitOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E7F218B7E4B00557ACE /* CABitOperations.h */; }; B3447E87218B7E4B00557ACE /* CABitOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E7F218B7E4B00557ACE /* CABitOperations.h */; }; B3447E88218B7E4B00557ACE /* CAAudioTimeStamp.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E80218B7E4B00557ACE /* CAAudioTimeStamp.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -114,8 +137,6 @@ B34AB5742106DC4100C45F09 /* PVLogEntry.m in Sources */ = {isa = PBXBuildFile; fileRef = B302F89920B73D5F00C5E502 /* PVLogEntry.m */; }; B34AB5752106DC4100C45F09 /* PVLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = B302F89E20B73D6400C5E502 /* PVLogging.m */; }; B34AB5762106DC4C00C45F09 /* UIDeviceExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E6DADD20B7BF8600454DD4 /* UIDeviceExtension.swift */; }; - B34AB5772106DC5300C45F09 /* OEGameAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA69217F748F80031B1C9 /* OEGameAudio.m */; }; - B34AB5782106DC5300C45F09 /* OERingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D5A1D6B908300060D71 /* OERingBuffer.m */; }; B34AB5792106DC5300C45F09 /* TPCircularBuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA69517F748F80031B1C9 /* TPCircularBuffer.c */; }; B34AB57A2106DC6100C45F09 /* CoreOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35E6C36207EE15D0040709A /* CoreOptions.swift */; }; B34AB57B2106DC6100C45F09 /* NSObject+PVAbstractAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6A117F74A5A0031B1C9 /* NSObject+PVAbstractAdditions.m */; }; @@ -123,7 +144,6 @@ B34AB57D2106DC6100C45F09 /* RealTimeThread.m in Sources */ = {isa = PBXBuildFile; fileRef = 0592894E1DC194FD0012644D /* RealTimeThread.m */; }; B34AB57E2106DC6100C45F09 /* PVEmulatorCore.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D601D6B90BD00060D71 /* PVEmulatorCore.m */; }; B34AB57F2106DC6100C45F09 /* PVEmulatorCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A74C8920522B04001D3D2E /* PVEmulatorCore.swift */; }; - B34AB5802106DC6100C45F09 /* PVGameControllerUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D621D6B90BD00060D71 /* PVGameControllerUtilities.m */; }; B34AB8642106F2F200C45F09 /* PVSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C96EBB1D62C54D003F1E93 /* PVSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; B34AB8652106F2F200C45F09 /* PVSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C96EBB1D62C54D003F1E93 /* PVSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3532B3721A7B736006CDA0F /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C96ED81D62C5E7003F1E93 /* PVSupport.framework */; }; @@ -133,8 +153,16 @@ B35E6C38207EE15D0040709A /* CoreOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35E6C36207EE15D0040709A /* CoreOptions.swift */; }; B372638426EA015700E95488 /* CocoaLumberjack+swift-log.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296E8326C67F420088AC32 /* CocoaLumberjack+swift-log.swift */; }; B372638526EA015800E95488 /* CocoaLumberjack+swift-log.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296E8326C67F420088AC32 /* CocoaLumberjack+swift-log.swift */; }; + B39C29C727A0FADF0078D028 /* OERingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D5A1D6B908300060D71 /* OERingBuffer.m */; }; + B39C29C827A0FADF0078D028 /* OERingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D5A1D6B908300060D71 /* OERingBuffer.m */; }; + B39C29C927A0FAE00078D028 /* OERingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D5A1D6B908300060D71 /* OERingBuffer.m */; }; + B39C29CD27A10EE40078D028 /* OEGameAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA69217F748F80031B1C9 /* OEGameAudio.m */; }; + B39C29CE27A10EE50078D028 /* OEGameAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA69217F748F80031B1C9 /* OEGameAudio.m */; }; + B39C29CF27A10EE50078D028 /* OEGameAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA69217F748F80031B1C9 /* OEGameAudio.m */; }; + B3A4FB5A278FE45D00A65248 /* OEGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A4FB59278FE45C00A65248 /* OEGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3A4FB5B278FE45D00A65248 /* OEGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A4FB59278FE45C00A65248 /* OEGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3A4FB5C278FE45D00A65248 /* OEGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A4FB59278FE45C00A65248 /* OEGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3A74C8B20522B04001D3D2E /* PVEmulatorCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A74C8920522B04001D3D2E /* PVEmulatorCore.swift */; }; - B3A9F42D1DE86DAE008450F5 /* PVGameControllerUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B3FA5D611D6B90BD00060D71 /* PVGameControllerUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3AB37B321880FA5009D9244 /* iCadeState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378B2187F9A9009D9244 /* iCadeState.swift */; }; B3AB37B421880FA6009D9244 /* iCadeState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378B2187F9A9009D9244 /* iCadeState.swift */; }; B3AB37BD218812BB009D9244 /* iCadeReaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37B02187FC4B009D9244 /* iCadeReaderView.swift */; }; @@ -163,10 +191,12 @@ B3AF6FDA2191616C000FA7F9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF6FD92191616C000FA7F9 /* Foundation.framework */; }; B3AF6FDD219161BC000FA7F9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF6FDC219161BC000FA7F9 /* Foundation.framework */; }; B3AF6FDF219161C0000FA7F9 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF6FDE219161C0000FA7F9 /* GameController.framework */; }; + B3B1A740279021C4004D1EF2 /* AHAP in Resources */ = {isa = PBXBuildFile; fileRef = B3B1A73F279021C4004D1EF2 /* AHAP */; }; + B3B1A741279021C4004D1EF2 /* AHAP in Resources */ = {isa = PBXBuildFile; fileRef = B3B1A73F279021C4004D1EF2 /* AHAP */; }; + B3B1A742279021C4004D1EF2 /* AHAP in Resources */ = {isa = PBXBuildFile; fileRef = B3B1A73F279021C4004D1EF2 /* AHAP */; }; B3B492CB26B3A96B000B426B /* Reachability in Frameworks */ = {isa = PBXBuildFile; productRef = B3B492CA26B3A96B000B426B /* Reachability */; }; B3C96EA71D62C3BE003F1E93 /* DebugUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4E718C1A6C699F005CA80F /* DebugUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3C96EA81D62C3C3003F1E93 /* OEGameAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA69117F748F80031B1C9 /* OEGameAudio.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C96EA91D62C3C3003F1E93 /* OEGameAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA69217F748F80031B1C9 /* OEGameAudio.m */; }; B3C96EAC1D62C3C3003F1E93 /* TPCircularBuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA69517F748F80031B1C9 /* TPCircularBuffer.c */; }; B3C96EAD1D62C3C3003F1E93 /* TPCircularBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA69617F748F80031B1C9 /* TPCircularBuffer.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3C96EAE1D62C3C7003F1E93 /* NSObject+PVAbstractAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA6A017F74A5A0031B1C9 /* NSObject+PVAbstractAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -187,6 +217,16 @@ B3CDEEC621D4C490000C55F7 /* CoreActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEC421D4C490000C55F7 /* CoreActions.swift */; }; B3CDEEC821D4C4E5000C55F7 /* SaveStateSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEC721D4C4E5000C55F7 /* SaveStateSupport.swift */; }; B3CDEEC921D4C4E5000C55F7 /* SaveStateSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEC721D4C4E5000C55F7 /* SaveStateSupport.swift */; }; + B3CEC5BC2794E9FD004A7CC1 /* PVGameControllerUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CEC5BB2794E9FD004A7CC1 /* PVGameControllerUtilities.swift */; }; + B3CEC5BD2794E9FD004A7CC1 /* PVGameControllerUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CEC5BB2794E9FD004A7CC1 /* PVGameControllerUtilities.swift */; }; + B3CEC5BE2794E9FD004A7CC1 /* PVGameControllerUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CEC5BB2794E9FD004A7CC1 /* PVGameControllerUtilities.swift */; }; + B3CEC5C127952165004A7CC1 /* NSLogger in Frameworks */ = {isa = PBXBuildFile; productRef = B3CEC5C027952165004A7CC1 /* NSLogger */; }; + B3CEC5C3279521EC004A7CC1 /* NSLogger in Frameworks */ = {isa = PBXBuildFile; productRef = B3CEC5C2279521EC004A7CC1 /* NSLogger */; }; + B3D0EE20277FE85F002DC0A5 /* HapticsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D0EE1F277FE85F002DC0A5 /* HapticsManager.swift */; }; + B3D0EE21277FE85F002DC0A5 /* HapticsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D0EE1F277FE85F002DC0A5 /* HapticsManager.swift */; }; + B3D0EE26277FE880002DC0A5 /* HapticsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D0EE1F277FE85F002DC0A5 /* HapticsManager.swift */; }; + B3D0EE28277FE8C9002DC0A5 /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D0EE27277FE8C9002DC0A5 /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + B3D0EE2A277FE8E1002DC0A5 /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D0EE29277FE8E0002DC0A5 /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; B3D73D3D1EA15BB20023925B /* NSFileManager+OEHashingAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B3D73D3B1EA15BB20023925B /* NSFileManager+OEHashingAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3D73D3E1EA15BB20023925B /* NSFileManager+OEHashingAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B3D73D3B1EA15BB20023925B /* NSFileManager+OEHashingAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3D73D401EA15BB20023925B /* NSFileManager+OEHashingAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B3D73D3C1EA15BB20023925B /* NSFileManager+OEHashingAdditions.m */; }; @@ -195,11 +235,9 @@ B3F0846D2188CA7A00FF39EE /* CocoaLumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3F0846B2188CA7A00FF39EE /* CocoaLumberExtensions.swift */; }; B3FA5D5B1D6B908300060D71 /* OERingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B3FA5D591D6B908300060D71 /* OERingBuffer.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3FA5D5C1D6B908300060D71 /* OERingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B3FA5D591D6B908300060D71 /* OERingBuffer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3FA5D5E1D6B908300060D71 /* OERingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D5A1D6B908300060D71 /* OERingBuffer.m */; }; B3FA5D631D6B90BD00060D71 /* PVEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3FA5D5F1D6B90BD00060D71 /* PVEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3FA5D641D6B90BD00060D71 /* PVEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3FA5D5F1D6B90BD00060D71 /* PVEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3FA5D661D6B90BD00060D71 /* PVEmulatorCore.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D601D6B90BD00060D71 /* PVEmulatorCore.m */; }; - B3FA5D6A1D6B90BD00060D71 /* PVGameControllerUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D621D6B90BD00060D71 /* PVGameControllerUtilities.m */; }; B3FFF02D26E9E65800A33143 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3FFF02C26E9E65800A33143 /* AVFoundation.framework */; }; CF87D333258AB6B300838AF8 /* GameWithCheat.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF87D332258AB6B300838AF8 /* GameWithCheat.swift */; }; CF87D334258AB6B300838AF8 /* GameWithCheat.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF87D332258AB6B300838AF8 /* GameWithCheat.swift */; }; @@ -233,14 +271,23 @@ B302F89D20B73D6400C5E502 /* PVProvenanceLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PVProvenanceLogging.m; sourceTree = ""; }; B302F89E20B73D6400C5E502 /* PVLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PVLogging.m; sourceTree = ""; }; B305EF91276B4E41003AE510 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B305EF92276B4E4B003AE510 /* PVSupport-iOS copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "PVSupport-iOS copy-Info.plist"; path = "/Users/jmattiello/Workspace/Provenance/Provenance/PVSupport/PVSupport-iOS copy-Info.plist"; sourceTree = ""; }; B305EF99276B4F0A003AE510 /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS8.3.sdk/System/Library/Frameworks/GameKit.framework; sourceTree = DEVELOPER_DIR; }; B305EF9B276B4FDC003AE510 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS8.3.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; + B3173802278419A2002D3ACD /* Build.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Build.xcconfig; path = ../Build.xcconfig; sourceTree = ""; }; B324C3152191963B009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; B3296E8026C67EF90088AC32 /* CocoaLumberjack+NSLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CocoaLumberjack+NSLogger.swift"; sourceTree = ""; }; B3296E8326C67F420088AC32 /* CocoaLumberjack+swift-log.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CocoaLumberjack+swift-log.swift"; sourceTree = ""; }; B3296E9E26C685450088AC32 /* DDLogLevel+CustomStringConvertable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DDLogLevel+CustomStringConvertable.swift"; sourceTree = ""; }; B3296EA126C68CCE0088AC32 /* PVCocoaLumberJackLogging.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PVCocoaLumberJackLogging.swift; sourceTree = ""; }; + B33FB2EA279BE0CC0013AAD8 /* CoreOptions+Serialization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CoreOptions+Serialization.swift"; sourceTree = ""; }; + B33FB2EE279BE0F50013AAD8 /* CoreOptionValueDisplay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreOptionValueDisplay.swift; sourceTree = ""; }; + B33FB2F2279BE1320013AAD8 /* CoreOptions+Protocols.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CoreOptions+Protocols.swift"; sourceTree = ""; }; + B33FB2F7279BE1730013AAD8 /* CoreOptionMultiValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreOptionMultiValue.swift; sourceTree = ""; }; + B33FB2FB279BE18F0013AAD8 /* CoreOptionEnumValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreOptionEnumValue.swift; sourceTree = ""; }; + B33FB2FF279BE1E40013AAD8 /* OptionDependency.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptionDependency.swift; sourceTree = ""; }; + B33FB303279BE21C0013AAD8 /* CoreOptionRange.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreOptionRange.swift; sourceTree = ""; }; + B33FB307279BE2460013AAD8 /* CoreOptionValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreOptionValue.swift; sourceTree = ""; }; + B33FB30C279BE2710013AAD8 /* CoreOptional.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreOptional.swift; sourceTree = ""; }; B3447E7F218B7E4B00557ACE /* CABitOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABitOperations.h; sourceTree = ""; }; B3447E80218B7E4B00557ACE /* CAAudioTimeStamp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioTimeStamp.h; sourceTree = ""; }; B3447E81218B7E4B00557ACE /* CARingBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CARingBuffer.cpp; sourceTree = ""; }; @@ -254,6 +301,7 @@ B3532B3E21A7B753006CDA0F /* PVSettingsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PVSettingsTests.swift; sourceTree = ""; }; B3532C3521A925C1006CDA0F /* SortOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SortOption.swift; sourceTree = ""; }; B35E6C36207EE15D0040709A /* CoreOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreOptions.swift; sourceTree = ""; }; + B3A4FB59278FE45C00A65248 /* OEGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OEGeometry.h; sourceTree = ""; }; B3A74C8920522B04001D3D2E /* PVEmulatorCore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PVEmulatorCore.swift; sourceTree = ""; }; B3AB37872187F9A9009D9244 /* PViCadeGamepadDirectionPad.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PViCadeGamepadDirectionPad.swift; sourceTree = ""; }; B3AB37882187F9A9009D9244 /* iCadeControllerSetting.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = iCadeControllerSetting.swift; sourceTree = ""; }; @@ -271,6 +319,9 @@ B3AF6FD92191616C000FA7F9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; B3AF6FDC219161BC000FA7F9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; B3AF6FDE219161C0000FA7F9 /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/GameController.framework; sourceTree = DEVELOPER_DIR; }; + B3B1A73F279021C4004D1EF2 /* AHAP */ = {isa = PBXFileReference; lastKnownFileType = folder; path = AHAP; sourceTree = ""; }; + B3C83E262796211D0020824C /* Performance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Performance.swift; sourceTree = ""; }; + B3C83E2A279622EB0020824C /* PerformanceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PerformanceView.swift; sourceTree = ""; }; B3C96E9E1D62C3A3003F1E93 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C96EBA1D62C54D003F1E93 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B3C96EBB1D62C54D003F1E93 /* PVSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVSupport.h; sourceTree = ""; }; @@ -280,6 +331,10 @@ B3CDEEC121D4C454000C55F7 /* Controls.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Controls.swift; sourceTree = ""; }; B3CDEEC421D4C490000C55F7 /* CoreActions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreActions.swift; sourceTree = ""; }; B3CDEEC721D4C4E5000C55F7 /* SaveStateSupport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SaveStateSupport.swift; sourceTree = ""; }; + B3CEC5BB2794E9FD004A7CC1 /* PVGameControllerUtilities.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PVGameControllerUtilities.swift; sourceTree = ""; }; + B3D0EE1F277FE85F002DC0A5 /* HapticsManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HapticsManager.swift; sourceTree = ""; }; + B3D0EE27277FE8C9002DC0A5 /* CoreHaptics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreHaptics.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.2.sdk/System/Library/Frameworks/CoreHaptics.framework; sourceTree = DEVELOPER_DIR; }; + B3D0EE29277FE8E0002DC0A5 /* CoreHaptics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreHaptics.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/CoreHaptics.framework; sourceTree = DEVELOPER_DIR; }; B3D73D3B1EA15BB20023925B /* NSFileManager+OEHashingAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSFileManager+OEHashingAdditions.h"; sourceTree = ""; }; B3D73D3C1EA15BB20023925B /* NSFileManager+OEHashingAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSFileManager+OEHashingAdditions.m"; sourceTree = ""; }; B3E6DADD20B7BF8600454DD4 /* UIDeviceExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIDeviceExtension.swift; sourceTree = ""; }; @@ -288,8 +343,6 @@ B3FA5D5A1D6B908300060D71 /* OERingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OERingBuffer.m; sourceTree = ""; }; B3FA5D5F1D6B90BD00060D71 /* PVEmulatorCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVEmulatorCore.h; sourceTree = ""; }; B3FA5D601D6B90BD00060D71 /* PVEmulatorCore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PVEmulatorCore.m; sourceTree = ""; }; - B3FA5D611D6B90BD00060D71 /* PVGameControllerUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVGameControllerUtilities.h; sourceTree = ""; }; - B3FA5D621D6B90BD00060D71 /* PVGameControllerUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PVGameControllerUtilities.m; sourceTree = ""; }; B3FFF02C26E9E65800A33143 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; CF87D332258AB6B300838AF8 /* GameWithCheat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameWithCheat.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -325,8 +378,10 @@ B324C3162191963B009F4EDC /* AVFoundation.framework in Frameworks */, B3CA5B5126E9E4D500687B27 /* CocoaLumberjack in Frameworks */, B3296E8926C67F6B0088AC32 /* CocoaLumberjackSwiftLogBackend in Frameworks */, + B3CEC5C3279521EC004A7CC1 /* NSLogger in Frameworks */, B3AF6FDF219161C0000FA7F9 /* GameController.framework in Frameworks */, B3AF6FDD219161BC000FA7F9 /* Foundation.framework in Frameworks */, + B3D0EE28277FE8C9002DC0A5 /* CoreHaptics.framework in Frameworks */, B336B8F826B3991500960A81 /* CocoaLumberjackSwift in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -335,9 +390,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B3D0EE2A277FE8E1002DC0A5 /* CoreHaptics.framework in Frameworks */, B3CA5B5326E9E4DC00687B27 /* CocoaLumberjack in Frameworks */, B336B8F426B398A900960A81 /* Reachability in Frameworks */, B3AF6FDA2191616C000FA7F9 /* Foundation.framework in Frameworks */, + B3CEC5C127952165004A7CC1 /* NSLogger in Frameworks */, B3AF6FD821916168000FA7F9 /* GameController.framework in Frameworks */, B3296E8726C67F660088AC32 /* CocoaLumberjackSwiftLogBackend in Frameworks */, B3FFF02D26E9E65800A33143 /* AVFoundation.framework in Frameworks */, @@ -348,30 +405,24 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1A4E718B1A6C693A005CA80F /* DebugUtils */ = { + 1A4E718B1A6C693A005CA80F /* Utilities */ = { isa = PBXGroup; children = ( 1A4E718C1A6C699F005CA80F /* DebugUtils.h */, - B3E6DADD20B7BF8600454DD4 /* UIDeviceExtension.swift */, + B3A4FB59278FE45C00A65248 /* OEGeometry.h */, ); - name = DebugUtils; + path = Utilities; sourceTree = ""; }; 1ACEA63B17F7467D0031B1C9 = { isa = PBXGroup; children = ( - B3CDEEB821D4C394000C55F7 /* EmulatorCore */, - B3447F99218C1CBE00557ACE /* Settings */, - B3AB37F721882119009D9244 /* CoreOptions */, - B3AB36DC2187F4C4009D9244 /* Controller */, - B302F89420B71C2300C5E502 /* Logging */, - 1A4E718B1A6C693A005CA80F /* DebugUtils */, - 1ACEA69017F748F80031B1C9 /* Audio */, - 1ACEA64917F7467D0031B1C9 /* PVSupport */, - B3532B3321A7B736006CDA0F /* PVSupportTests */, + B3173802278419A2002D3ACD /* Build.xcconfig */, + B3A4FB58278FE2F200A65248 /* Sources */, + B3532B3321A7B736006CDA0F /* Tests */, + 1ACEA64A17F7467D0031B1C9 /* Supporting Files */, 1ACEA64617F7467D0031B1C9 /* Frameworks */, 1ACEA64517F7467D0031B1C9 /* Products */, - B305EF92276B4E4B003AE510 /* PVSupport-iOS copy-Info.plist */, ); sourceTree = ""; }; @@ -389,6 +440,8 @@ 1ACEA64617F7467D0031B1C9 /* Frameworks */ = { isa = PBXGroup; children = ( + B3D0EE27277FE8C9002DC0A5 /* CoreHaptics.framework */, + B3D0EE29277FE8E0002DC0A5 /* CoreHaptics.framework */, B305EF9B276B4FDC003AE510 /* CoreGraphics.framework */, B305EF99276B4F0A003AE510 /* GameKit.framework */, B3FFF02C26E9E65800A33143 /* AVFoundation.framework */, @@ -398,45 +451,28 @@ name = Frameworks; sourceTree = ""; }; - 1ACEA64917F7467D0031B1C9 /* PVSupport */ = { - isa = PBXGroup; - children = ( - B3C96EBB1D62C54D003F1E93 /* PVSupport.h */, - 1ACEA6A017F74A5A0031B1C9 /* NSObject+PVAbstractAdditions.h */, - 1ACEA6A117F74A5A0031B1C9 /* NSObject+PVAbstractAdditions.m */, - B3D73D3B1EA15BB20023925B /* NSFileManager+OEHashingAdditions.h */, - B3D73D3C1EA15BB20023925B /* NSFileManager+OEHashingAdditions.m */, - 0592894D1DC194FD0012644D /* RealTimeThread.h */, - 0592894E1DC194FD0012644D /* RealTimeThread.m */, - B3FA5D611D6B90BD00060D71 /* PVGameControllerUtilities.h */, - B3FA5D621D6B90BD00060D71 /* PVGameControllerUtilities.m */, - 1ACEA64A17F7467D0031B1C9 /* Supporting Files */, - ); - path = PVSupport; - sourceTree = ""; - }; 1ACEA64A17F7467D0031B1C9 /* Supporting Files */ = { isa = PBXGroup; children = ( + B3C96EBB1D62C54D003F1E93 /* PVSupport.h */, B3C96EBA1D62C54D003F1E93 /* Info.plist */, 1ACEA64B17F7467D0031B1C9 /* PVSupport-Prefix.pch */, ); - name = "Supporting Files"; + path = "Supporting Files"; sourceTree = ""; }; 1ACEA69017F748F80031B1C9 /* Audio */ = { isa = PBXGroup; children = ( - B3447E7E218B7E2C00557ACE /* CARingBuffer */, + 1ACEA69517F748F80031B1C9 /* TPCircularBuffer.c */, 1ACEA69117F748F80031B1C9 /* OEGameAudio.h */, - 1ACEA69217F748F80031B1C9 /* OEGameAudio.m */, B3FA5D591D6B908300060D71 /* OERingBuffer.h */, - B3FA5D5A1D6B908300060D71 /* OERingBuffer.m */, 1ACEA69617F748F80031B1C9 /* TPCircularBuffer.h */, - 1ACEA69517F748F80031B1C9 /* TPCircularBuffer.c */, + 1ACEA69217F748F80031B1C9 /* OEGameAudio.m */, + B3FA5D5A1D6B908300060D71 /* OERingBuffer.m */, + B3447E7E218B7E2C00557ACE /* CARingBuffer */, ); - name = Audio; - path = PVSupport/Audio; + path = Audio; sourceTree = ""; }; B302F89420B71C2300C5E502 /* Logging */ = { @@ -457,6 +493,31 @@ path = Logging; sourceTree = ""; }; + B30E94892793C77700871E57 /* PVSupport */ = { + isa = PBXGroup; + children = ( + B3C83E25279621080020824C /* Performance */, + 1ACEA69017F748F80031B1C9 /* Audio */, + B3AB36DC2187F4C4009D9244 /* Controller */, + B3AB37F721882119009D9244 /* CoreOptions */, + 1A4E718B1A6C693A005CA80F /* Utilities */, + B3CDEEB821D4C394000C55F7 /* EmulatorCore */, + B302F89420B71C2300C5E502 /* Logging */, + B3A4FB57278FE2B700A65248 /* NSExtensions */, + B3447F99218C1CBE00557ACE /* Settings */, + B3A4FB56278FE2A700A65248 /* Threads */, + ); + path = PVSupport; + sourceTree = ""; + }; + B30E948B2793CBC800871E57 /* PVSupportTests */ = { + isa = PBXGroup; + children = ( + B3532B3E21A7B753006CDA0F /* PVSettingsTests.swift */, + ); + path = PVSupportTests; + sourceTree = ""; + }; B3296E8D26C680EA0088AC32 /* Protocols */ = { isa = PBXGroup; children = ( @@ -465,16 +526,36 @@ path = Protocols; sourceTree = ""; }; + B33FB2F6279BE1640013AAD8 /* Types */ = { + isa = PBXGroup; + children = ( + B33FB2F7279BE1730013AAD8 /* CoreOptionMultiValue.swift */, + B33FB2FF279BE1E40013AAD8 /* OptionDependency.swift */, + B33FB2FB279BE18F0013AAD8 /* CoreOptionEnumValue.swift */, + B33FB303279BE21C0013AAD8 /* CoreOptionRange.swift */, + B33FB307279BE2460013AAD8 /* CoreOptionValue.swift */, + ); + path = Types; + sourceTree = ""; + }; + B33FB30B279BE2650013AAD8 /* Protocols */ = { + isa = PBXGroup; + children = ( + B33FB30C279BE2710013AAD8 /* CoreOptional.swift */, + ); + path = Protocols; + sourceTree = ""; + }; B3447E7E218B7E2C00557ACE /* CARingBuffer */ = { isa = PBXGroup; children = ( + B3447E84218B7E4B00557ACE /* CAAudioTimeStamp.cpp */, + B3447E81218B7E4B00557ACE /* CARingBuffer.cpp */, B3447E83218B7E4B00557ACE /* CAAtomic.h */, B3447E80218B7E4B00557ACE /* CAAudioTimeStamp.h */, - B3447E84218B7E4B00557ACE /* CAAudioTimeStamp.cpp */, B3447E82218B7E4B00557ACE /* CAAutoDisposer.h */, B3447E7F218B7E4B00557ACE /* CABitOperations.h */, B3447E85218B7E4B00557ACE /* CARingBuffer.h */, - B3447E81218B7E4B00557ACE /* CARingBuffer.cpp */, ); path = CARingBuffer; sourceTree = ""; @@ -488,18 +569,50 @@ path = Settings; sourceTree = ""; }; - B3532B3321A7B736006CDA0F /* PVSupportTests */ = { + B3532B3321A7B736006CDA0F /* Tests */ = { isa = PBXGroup; children = ( + B30E948B2793CBC800871E57 /* PVSupportTests */, B3532B3621A7B736006CDA0F /* Info.plist */, - B3532B3E21A7B753006CDA0F /* PVSettingsTests.swift */, ); - path = PVSupportTests; + path = Tests; + sourceTree = ""; + }; + B3A4FB56278FE2A700A65248 /* Threads */ = { + isa = PBXGroup; + children = ( + 0592894D1DC194FD0012644D /* RealTimeThread.h */, + 0592894E1DC194FD0012644D /* RealTimeThread.m */, + ); + path = Threads; + sourceTree = ""; + }; + B3A4FB57278FE2B700A65248 /* NSExtensions */ = { + isa = PBXGroup; + children = ( + B3E6DADD20B7BF8600454DD4 /* UIDeviceExtension.swift */, + 1ACEA6A017F74A5A0031B1C9 /* NSObject+PVAbstractAdditions.h */, + 1ACEA6A117F74A5A0031B1C9 /* NSObject+PVAbstractAdditions.m */, + B3D73D3B1EA15BB20023925B /* NSFileManager+OEHashingAdditions.h */, + B3D73D3C1EA15BB20023925B /* NSFileManager+OEHashingAdditions.m */, + ); + path = NSExtensions; + sourceTree = ""; + }; + B3A4FB58278FE2F200A65248 /* Sources */ = { + isa = PBXGroup; + children = ( + B30E94892793C77700871E57 /* PVSupport */, + ); + path = Sources; sourceTree = ""; }; B3AB36DC2187F4C4009D9244 /* Controller */ = { isa = PBXGroup; children = ( + B3B1A73F279021C4004D1EF2 /* AHAP */, + B3CEC5BB2794E9FD004A7CC1 /* PVGameControllerUtilities.swift */, + B3D0EE1F277FE85F002DC0A5 /* HapticsManager.swift */, B3AB37462187F57A009D9244 /* iCade */, ); path = Controller; @@ -535,7 +648,12 @@ B3AB37F721882119009D9244 /* CoreOptions */ = { isa = PBXGroup; children = ( + B33FB30B279BE2650013AAD8 /* Protocols */, + B33FB2F6279BE1640013AAD8 /* Types */, B35E6C36207EE15D0040709A /* CoreOptions.swift */, + B33FB2EA279BE0CC0013AAD8 /* CoreOptions+Serialization.swift */, + B33FB2EE279BE0F50013AAD8 /* CoreOptionValueDisplay.swift */, + B33FB2F2279BE1320013AAD8 /* CoreOptions+Protocols.swift */, ); path = CoreOptions; sourceTree = ""; @@ -559,6 +677,15 @@ name = tvOS; sourceTree = ""; }; + B3C83E25279621080020824C /* Performance */ = { + isa = PBXGroup; + children = ( + B3C83E262796211D0020824C /* Performance.swift */, + B3C83E2A279622EB0020824C /* PerformanceView.swift */, + ); + path = Performance; + sourceTree = ""; + }; B3CDEEB821D4C394000C55F7 /* EmulatorCore */ = { isa = PBXGroup; children = ( @@ -593,6 +720,7 @@ B305EF49276B4E41003AE510 /* PVSupport.h in Headers */, B305EF4A276B4E41003AE510 /* OEGameAudio.h in Headers */, B305EF4B276B4E41003AE510 /* CABitOperations.h in Headers */, + B3A4FB5C278FE45D00A65248 /* OEGeometry.h in Headers */, B305EF4C276B4E41003AE510 /* DebugUtils.h in Headers */, B305EF4D276B4E41003AE510 /* PVProvenanceLogging.h in Headers */, B305EF4E276B4E41003AE510 /* OERingBuffer.h in Headers */, @@ -623,8 +751,8 @@ B3447E8D218B7E4B00557ACE /* CAAutoDisposer.h in Headers */, B3C96EAE1D62C3C7003F1E93 /* NSObject+PVAbstractAdditions.h in Headers */, B3447E8F218B7E4B00557ACE /* CAAtomic.h in Headers */, + B3A4FB5B278FE45D00A65248 /* OEGeometry.h in Headers */, B3D73D3E1EA15BB20023925B /* NSFileManager+OEHashingAdditions.h in Headers */, - B305EF9D276B4FF4003AE510 /* PVGameControllerUtilities.h in Headers */, B302F8A720B73D6500C5E502 /* PVLogEntry.h in Headers */, B3FA5D641D6B90BD00060D71 /* PVEmulatorCore.h in Headers */, B3C96EAD1D62C3C3003F1E93 /* TPCircularBuffer.h in Headers */, @@ -643,10 +771,10 @@ B3C96ECA1D62C5E7003F1E93 /* DebugUtils.h in Headers */, B302F8A820B73D6500C5E502 /* PVProvenanceLogging.h in Headers */, B3FA5D5B1D6B908300060D71 /* OERingBuffer.h in Headers */, - B3A9F42D1DE86DAE008450F5 /* PVGameControllerUtilities.h in Headers */, B3C96ECC1D62C5E7003F1E93 /* NSObject+PVAbstractAdditions.h in Headers */, B3447E92218B7E4B00557ACE /* CARingBuffer.h in Headers */, B3447E8E218B7E4B00557ACE /* CAAtomic.h in Headers */, + B3A4FB5A278FE45D00A65248 /* OEGeometry.h in Headers */, B3447E88218B7E4B00557ACE /* CAAudioTimeStamp.h in Headers */, B3D73D3D1EA15BB20023925B /* NSFileManager+OEHashingAdditions.h in Headers */, B302F8A620B73D6500C5E502 /* PVLogEntry.h in Headers */, @@ -727,6 +855,7 @@ B3B492CA26B3A96B000B426B /* Reachability */, B3296E8826C67F6B0088AC32 /* CocoaLumberjackSwiftLogBackend */, B3CA5B5026E9E4D500687B27 /* CocoaLumberjack */, + B3CEC5C2279521EC004A7CC1 /* NSLogger */, ); productName = "PVSupportTV Framework"; productReference = B3C96E9E1D62C3A3003F1E93 /* PVSupport.framework */; @@ -755,6 +884,7 @@ B336B8F326B398A900960A81 /* Reachability */, B3296E8626C67F660088AC32 /* CocoaLumberjackSwiftLogBackend */, B3CA5B5226E9E4DC00687B27 /* CocoaLumberjack */, + B3CEC5C027952165004A7CC1 /* NSLogger */, ); productName = "PVSupportTV Framework"; productReference = B3C96ED81D62C5E7003F1E93 /* PVSupport.framework */; @@ -766,6 +896,7 @@ 1ACEA63C17F7467D0031B1C9 /* Project object */ = { isa = PBXProject; attributes = { + BuildIndependentTargetsInParallel = YES; CLASSPREFIX = PV; DefaultBuildSystemTypeForWorkspace = Latest; LastSwiftUpdateCheck = 1010; @@ -797,6 +928,7 @@ packageReferences = ( B336B8EF26B3985B00960A81 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */, B336B8F226B398A900960A81 /* XCRemoteSwiftPackageReference "Reachability.swift" */, + B3CEC5BF27952163004A7CC1 /* XCRemoteSwiftPackageReference "NSLogger" */, ); productRefGroup = 1ACEA64517F7467D0031B1C9 /* Products */; projectDirPath = ""; @@ -815,6 +947,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + B3B1A742279021C4004D1EF2 /* AHAP in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -829,6 +962,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + B3B1A741279021C4004D1EF2 /* AHAP in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -836,6 +970,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + B3B1A740279021C4004D1EF2 /* AHAP in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -849,13 +984,15 @@ B305EF5B276B4E41003AE510 /* PVEmulatorCore.swift in Sources */, B305EF5C276B4E41003AE510 /* PViCadeSteelSeriesController.swift in Sources */, B305EF5D276B4E41003AE510 /* ArchiveSupport.swift in Sources */, - B305EF5E276B4E41003AE510 /* OERingBuffer.m in Sources */, - B305EF5F276B4E41003AE510 /* OEGameAudio.m in Sources */, + B39C29CF27A10EE50078D028 /* OEGameAudio.m in Sources */, + B33FB30F279BE2710013AAD8 /* CoreOptional.swift in Sources */, B305EF60276B4E41003AE510 /* PViCade8BitdoController.swift in Sources */, B305EF61276B4E41003AE510 /* PViCadeInputAxis.swift in Sources */, B305EF62276B4E41003AE510 /* DDLogLevel+CustomStringConvertable.swift in Sources */, + B33FB306279BE21C0013AAD8 /* CoreOptionRange.swift in Sources */, B305EF63276B4E41003AE510 /* iCadeState.swift in Sources */, B305EF64276B4E41003AE510 /* CoreOptions.swift in Sources */, + B33FB2F5279BE1330013AAD8 /* CoreOptions+Protocols.swift in Sources */, B305EF65276B4E41003AE510 /* UIDeviceExtension.swift in Sources */, B305EF66276B4E41003AE510 /* SaveStateSupport.swift in Sources */, B305EF67276B4E41003AE510 /* iCadeControllerSetting.swift in Sources */, @@ -865,22 +1002,30 @@ B305EF6B276B4E41003AE510 /* CocoaLumberjack+NSLogger.swift in Sources */, B305EF6C276B4E41003AE510 /* Controls.swift in Sources */, B305EF6D276B4E41003AE510 /* PViCadeGamepadDirectionPad.swift in Sources */, + B33FB30A279BE2460013AAD8 /* CoreOptionValue.swift in Sources */, + B33FB2F1279BE0F50013AAD8 /* CoreOptionValueDisplay.swift in Sources */, + B33FB2FA279BE1730013AAD8 /* CoreOptionMultiValue.swift in Sources */, B305EF6E276B4E41003AE510 /* NSFileManager+OEHashingAdditions.m in Sources */, B305EF6F276B4E41003AE510 /* PViCadeGamepadButtonInput.swift in Sources */, B305EF70276B4E41003AE510 /* SortOption.swift in Sources */, B305EF71276B4E41003AE510 /* GameWithCheat.swift in Sources */, B305EF72276B4E41003AE510 /* CoreActions.swift in Sources */, + B3CEC5BE2794E9FD004A7CC1 /* PVGameControllerUtilities.swift in Sources */, + B33FB2ED279BE0CC0013AAD8 /* CoreOptions+Serialization.swift in Sources */, B305EF73276B4E41003AE510 /* CAAudioTimeStamp.cpp in Sources */, B305EF74276B4E41003AE510 /* PVProvenanceLogging.m in Sources */, B305EF75276B4E41003AE510 /* PViCadeReader.swift in Sources */, B305EF76276B4E41003AE510 /* RealTimeThread.m in Sources */, B305EF77276B4E41003AE510 /* DiscSwappable.swift in Sources */, B305EF78276B4E41003AE510 /* NSObject+PVAbstractAdditions.m in Sources */, + B3D0EE26277FE880002DC0A5 /* HapticsManager.swift in Sources */, B305EF79276B4E41003AE510 /* PVEmulatorCore.m in Sources */, B305EF7A276B4E41003AE510 /* PVLogEntry.m in Sources */, B305EF7B276B4E41003AE510 /* TPCircularBuffer.c in Sources */, - B305EF7C276B4E41003AE510 /* PVGameControllerUtilities.m in Sources */, B305EF7D276B4E41003AE510 /* PVLogging.m in Sources */, + B33FB2FE279BE18F0013AAD8 /* CoreOptionEnumValue.swift in Sources */, + B39C29C927A0FAE00078D028 /* OERingBuffer.m in Sources */, + B33FB302279BE1E40013AAD8 /* OptionDependency.swift in Sources */, B305EF7E276B4E41003AE510 /* PViCadeMocuteController.swift in Sources */, B305EF7F276B4E41003AE510 /* CocoaLumberExtensions.swift in Sources */, B305EF80276B4E41003AE510 /* iCadeReaderView.swift in Sources */, @@ -902,17 +1047,19 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B3FA5D5E1D6B908300060D71 /* OERingBuffer.m in Sources */, B3AB37EE21881B7B009D9244 /* PViCadeSteelSeriesController.swift in Sources */, B3CDEEBD21D4C3E6000C55F7 /* ArchiveSupport.swift in Sources */, + B33FB30E279BE2710013AAD8 /* CoreOptional.swift in Sources */, + B39C29CD27A10EE40078D028 /* OEGameAudio.m in Sources */, B3AB37E421881A83009D9244 /* PViCadeGamepad.swift in Sources */, B35E6C38207EE15D0040709A /* CoreOptions.swift in Sources */, B3AB37EC21881B7B009D9244 /* PViCade8BitdoController.swift in Sources */, B3AB37DD21881869009D9244 /* PViCadeInputAxis.swift in Sources */, B3296EA026C685450088AC32 /* DDLogLevel+CustomStringConvertable.swift in Sources */, + B33FB305279BE21C0013AAD8 /* CoreOptionRange.swift in Sources */, B3AB37B421880FA6009D9244 /* iCadeState.swift in Sources */, B3A74C8B20522B04001D3D2E /* PVEmulatorCore.swift in Sources */, - B3FA5D6A1D6B90BD00060D71 /* PVGameControllerUtilities.m in Sources */, + B33FB2F4279BE1330013AAD8 /* CoreOptions+Protocols.swift in Sources */, B3CDEEC921D4C4E5000C55F7 /* SaveStateSupport.swift in Sources */, B3AB37E821881B6E009D9244 /* iCadeControllerSetting.swift in Sources */, B3AB37E121881956009D9244 /* PViCadeController.swift in Sources */, @@ -922,21 +1069,29 @@ B3CDEEC321D4C454000C55F7 /* Controls.swift in Sources */, B3C96EAC1D62C3C3003F1E93 /* TPCircularBuffer.c in Sources */, B3AB37DB21881671009D9244 /* PViCadeGamepadButtonInput.swift in Sources */, + B33FB309279BE2460013AAD8 /* CoreOptionValue.swift in Sources */, + B33FB2F0279BE0F50013AAD8 /* CoreOptionValueDisplay.swift in Sources */, + B33FB2F9279BE1730013AAD8 /* CoreOptionMultiValue.swift in Sources */, B3C96EAF1D62C3C7003F1E93 /* NSObject+PVAbstractAdditions.m in Sources */, B3532C3721A925C2006CDA0F /* SortOption.swift in Sources */, CF87D334258AB6B300838AF8 /* GameWithCheat.swift in Sources */, B3CDEEC621D4C490000C55F7 /* CoreActions.swift in Sources */, B3AB37C0218814A8009D9244 /* PViCadeReader.swift in Sources */, + B3CEC5BD2794E9FD004A7CC1 /* PVGameControllerUtilities.swift in Sources */, + B33FB2EC279BE0CC0013AAD8 /* CoreOptions+Serialization.swift in Sources */, B3FA5D661D6B90BD00060D71 /* PVEmulatorCore.m in Sources */, B3447E8B218B7E4B00557ACE /* CARingBuffer.cpp in Sources */, B3D73D401EA15BB20023925B /* NSFileManager+OEHashingAdditions.m in Sources */, B3CDEEC021D4C41D000C55F7 /* DiscSwappable.swift in Sources */, B3F0846D2188CA7A00FF39EE /* CocoaLumberExtensions.swift in Sources */, + B3D0EE21277FE85F002DC0A5 /* HapticsManager.swift in Sources */, B302F8AD20B73D6500C5E502 /* PVLogging.m in Sources */, B3447E91218B7E4B00557ACE /* CAAudioTimeStamp.cpp in Sources */, - B3C96EA91D62C3C3003F1E93 /* OEGameAudio.m in Sources */, B3447F9C218C1CD200557ACE /* PVSettingsModel.swift in Sources */, 0592894F1DC194FD0012644D /* RealTimeThread.m in Sources */, + B33FB2FD279BE18F0013AAD8 /* CoreOptionEnumValue.swift in Sources */, + B39C29C827A0FADF0078D028 /* OERingBuffer.m in Sources */, + B33FB301279BE1E40013AAD8 /* OptionDependency.swift in Sources */, B302F8A320B73D6500C5E502 /* PVLogEntry.m in Sources */, B3AB37ED21881B7B009D9244 /* PViCadeMocuteController.swift in Sources */, B3AB37BE218812BC009D9244 /* iCadeReaderView.swift in Sources */, @@ -953,13 +1108,15 @@ B34AB57F2106DC6100C45F09 /* PVEmulatorCore.swift in Sources */, B3AB37EB21881B7A009D9244 /* PViCadeSteelSeriesController.swift in Sources */, B3CDEEBC21D4C3E6000C55F7 /* ArchiveSupport.swift in Sources */, - B34AB5782106DC5300C45F09 /* OERingBuffer.m in Sources */, - B34AB5772106DC5300C45F09 /* OEGameAudio.m in Sources */, + B39C29CE27A10EE50078D028 /* OEGameAudio.m in Sources */, + B33FB30D279BE2710013AAD8 /* CoreOptional.swift in Sources */, B3AB37E921881B7A009D9244 /* PViCade8BitdoController.swift in Sources */, B3AB37DC21881869009D9244 /* PViCadeInputAxis.swift in Sources */, B3296E9F26C685450088AC32 /* DDLogLevel+CustomStringConvertable.swift in Sources */, + B33FB304279BE21C0013AAD8 /* CoreOptionRange.swift in Sources */, B3AB37B321880FA5009D9244 /* iCadeState.swift in Sources */, B34AB57A2106DC6100C45F09 /* CoreOptions.swift in Sources */, + B33FB2F3279BE1320013AAD8 /* CoreOptions+Protocols.swift in Sources */, B34AB5762106DC4C00C45F09 /* UIDeviceExtension.swift in Sources */, B3CDEEC821D4C4E5000C55F7 /* SaveStateSupport.swift in Sources */, B3AB37E721881B6D009D9244 /* iCadeControllerSetting.swift in Sources */, @@ -969,22 +1126,30 @@ B3296E8126C67EFA0088AC32 /* CocoaLumberjack+NSLogger.swift in Sources */, B3CDEEC221D4C454000C55F7 /* Controls.swift in Sources */, B3AB37DE21881873009D9244 /* PViCadeGamepadDirectionPad.swift in Sources */, + B33FB308279BE2460013AAD8 /* CoreOptionValue.swift in Sources */, + B33FB2EF279BE0F50013AAD8 /* CoreOptionValueDisplay.swift in Sources */, + B33FB2F8279BE1730013AAD8 /* CoreOptionMultiValue.swift in Sources */, B34AB57C2106DC6100C45F09 /* NSFileManager+OEHashingAdditions.m in Sources */, B3AB37DA21881670009D9244 /* PViCadeGamepadButtonInput.swift in Sources */, B3532C3621A925C2006CDA0F /* SortOption.swift in Sources */, CF87D333258AB6B300838AF8 /* GameWithCheat.swift in Sources */, B3CDEEC521D4C490000C55F7 /* CoreActions.swift in Sources */, + B3CEC5BC2794E9FD004A7CC1 /* PVGameControllerUtilities.swift in Sources */, + B33FB2EB279BE0CC0013AAD8 /* CoreOptions+Serialization.swift in Sources */, B3447E90218B7E4B00557ACE /* CAAudioTimeStamp.cpp in Sources */, B34AB5732106DC3700C45F09 /* PVProvenanceLogging.m in Sources */, B3AB37BF218814A7009D9244 /* PViCadeReader.swift in Sources */, B34AB57D2106DC6100C45F09 /* RealTimeThread.m in Sources */, B3CDEEBF21D4C41D000C55F7 /* DiscSwappable.swift in Sources */, B34AB57B2106DC6100C45F09 /* NSObject+PVAbstractAdditions.m in Sources */, + B3D0EE20277FE85F002DC0A5 /* HapticsManager.swift in Sources */, B34AB57E2106DC6100C45F09 /* PVEmulatorCore.m in Sources */, B34AB5742106DC4100C45F09 /* PVLogEntry.m in Sources */, B34AB5792106DC5300C45F09 /* TPCircularBuffer.c in Sources */, - B34AB5802106DC6100C45F09 /* PVGameControllerUtilities.m in Sources */, B34AB5752106DC4100C45F09 /* PVLogging.m in Sources */, + B33FB2FC279BE18F0013AAD8 /* CoreOptionEnumValue.swift in Sources */, + B39C29C727A0FADF0078D028 /* OERingBuffer.m in Sources */, + B33FB300279BE1E40013AAD8 /* OptionDependency.swift in Sources */, B3AB37EA21881B7A009D9244 /* PViCadeMocuteController.swift in Sources */, B3F0846C2188CA7A00FF39EE /* CocoaLumberExtensions.swift in Sources */, B3AB37BD218812BB009D9244 /* iCadeReaderView.swift in Sources */, @@ -1053,6 +1218,7 @@ /* Begin XCBuildConfiguration section */ 1ACEA66517F7467D0031B1C9 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B3173802278419A2002D3ACD /* Build.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; @@ -1081,6 +1247,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; + DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)"; ENABLE_BITCODE = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -1109,6 +1276,7 @@ }; 1ACEA66617F7467D0031B1C9 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B3173802278419A2002D3ACD /* Build.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; @@ -1137,6 +1305,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = YES; + DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)"; ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -1167,18 +1336,19 @@ CLANG_ANALYZER_NONNULL = YES; CLANG_ENABLE_MODULES = YES; CLANG_WARN_UNREACHABLE_CODE = YES; - CURRENT_PROJECT_VERSION = 2779; + CODE_SIGN_STYLE = Manual; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "PVSupport/PVSupport-Prefix.pch"; + GCC_PREFIX_HEADER = "Supporting Files/PVSupport-Prefix.pch"; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "PVSupport-iOS copy-Info.plist"; + INFOPLIST_FILE = "Supporting Files/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; @@ -1190,8 +1360,9 @@ MARKETING_VERSION = 2.0.4; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSupport"; + PRODUCT_BUNDLE_IDENTIFIER = "$(PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = PVSupport; + PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = watchos; SKIP_INSTALL = YES; SWIFT_COMPILATION_MODE = singlefile; @@ -1210,19 +1381,20 @@ CLANG_ANALYZER_NONNULL = YES; CLANG_ENABLE_MODULES = YES; CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "PVSupport/PVSupport-Prefix.pch"; + GCC_PREFIX_HEADER = "Supporting Files/PVSupport-Prefix.pch"; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "PVSupport-iOS copy-Info.plist"; + INFOPLIST_FILE = "Supporting Files/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; @@ -1234,8 +1406,9 @@ MARKETING_VERSION = 2.0.4; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSupport"; + PRODUCT_BUNDLE_IDENTIFIER = "$(PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = PVSupport; + PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = watchos; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; @@ -1252,19 +1425,20 @@ CLANG_ANALYZER_NONNULL = YES; CLANG_ENABLE_MODULES = YES; CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "PVSupport/PVSupport-Prefix.pch"; + GCC_PREFIX_HEADER = "Supporting Files/PVSupport-Prefix.pch"; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "PVSupport-iOS copy-Info.plist"; + INFOPLIST_FILE = "Supporting Files/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; @@ -1276,8 +1450,9 @@ MARKETING_VERSION = 2.0.4; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSupport"; + PRODUCT_BUNDLE_IDENTIFIER = "$(PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = PVSupport; + PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = watchos; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; @@ -1288,6 +1463,7 @@ }; B324C5392191A7A8009F4EDC /* Archive */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B3173802278419A2002D3ACD /* Build.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; @@ -1316,6 +1492,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = YES; + DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)"; ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -1347,21 +1524,20 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = S32Z3HMYVQ; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "PVSupport/PVSupport-Prefix.pch"; + GCC_PREFIX_HEADER = "Supporting Files/PVSupport-Prefix.pch"; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "$(SRCROOT)/PVSupport/Info.plist"; + INFOPLIST_FILE = "Supporting Files/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; @@ -1373,7 +1549,7 @@ MARKETING_VERSION = 2.0.4; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSupport"; + PRODUCT_BUNDLE_IDENTIFIER = "$(PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = PVSupport; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; @@ -1393,7 +1569,6 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; @@ -1402,9 +1577,9 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "PVSupport/PVSupport-Prefix.pch"; + GCC_PREFIX_HEADER = "Supporting Files/PVSupport-Prefix.pch"; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "$(SRCROOT)/PVSupport/Info.plist"; + INFOPLIST_FILE = "Supporting Files/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1414,7 +1589,7 @@ MARKETING_VERSION = 2.0.4; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSupport"; + PRODUCT_BUNDLE_IDENTIFIER = "$(PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = PVSupport; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; @@ -1438,7 +1613,6 @@ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; CODE_SIGN_STYLE = Manual; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; FRAMEWORK_SEARCH_PATHS = ""; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -1476,7 +1650,6 @@ CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; FRAMEWORK_SEARCH_PATHS = ""; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -1512,7 +1685,6 @@ CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; FRAMEWORK_SEARCH_PATHS = ""; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -1542,7 +1714,6 @@ CLANG_ENABLE_MODULES = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2779; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; @@ -1551,9 +1722,9 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "PVSupport/PVSupport-Prefix.pch"; + GCC_PREFIX_HEADER = "Supporting Files/PVSupport-Prefix.pch"; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "$(SRCROOT)/PVSupport/Info.plist"; + INFOPLIST_FILE = "Supporting Files/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1563,7 +1734,7 @@ MARKETING_VERSION = 2.0.4; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSupport"; + PRODUCT_BUNDLE_IDENTIFIER = "$(PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = PVSupport; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; @@ -1585,7 +1756,6 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; @@ -1594,9 +1764,9 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "PVSupport/PVSupport-Prefix.pch"; + GCC_PREFIX_HEADER = "Supporting Files/PVSupport-Prefix.pch"; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "$(SRCROOT)/PVSupport/Info.plist"; + INFOPLIST_FILE = "Supporting Files/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1606,7 +1776,7 @@ MARKETING_VERSION = 2.0.4; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSupport"; + PRODUCT_BUNDLE_IDENTIFIER = "$(PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = PVSupport; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; @@ -1627,20 +1797,19 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2779; + CODE_SIGN_STYLE = Manual; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = S32Z3HMYVQ; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "PVSupport/PVSupport-Prefix.pch"; + GCC_PREFIX_HEADER = "Supporting Files/PVSupport-Prefix.pch"; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "$(SRCROOT)/PVSupport/Info.plist"; + INFOPLIST_FILE = "Supporting Files/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; @@ -1652,7 +1821,7 @@ MARKETING_VERSION = 2.0.4; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSupport"; + PRODUCT_BUNDLE_IDENTIFIER = "$(PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = PVSupport; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; @@ -1675,21 +1844,20 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = S32Z3HMYVQ; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "PVSupport/PVSupport-Prefix.pch"; + GCC_PREFIX_HEADER = "Supporting Files/PVSupport-Prefix.pch"; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "$(SRCROOT)/PVSupport/Info.plist"; + INFOPLIST_FILE = "Supporting Files/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; @@ -1701,7 +1869,7 @@ MARKETING_VERSION = 2.0.4; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSupport"; + PRODUCT_BUNDLE_IDENTIFIER = "$(PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = PVSupport; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; @@ -1792,6 +1960,14 @@ minimumVersion = 5.1.0; }; }; + B3CEC5BF27952163004A7CC1 /* XCRemoteSwiftPackageReference "NSLogger" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/fpillet/NSLogger"; + requirement = { + branch = master; + kind = branch; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -1890,6 +2066,16 @@ package = B336B8EF26B3985B00960A81 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; productName = CocoaLumberjack; }; + B3CEC5C027952165004A7CC1 /* NSLogger */ = { + isa = XCSwiftPackageProductDependency; + package = B3CEC5BF27952163004A7CC1 /* XCRemoteSwiftPackageReference "NSLogger" */; + productName = NSLogger; + }; + B3CEC5C2279521EC004A7CC1 /* NSLogger */ = { + isa = XCSwiftPackageProductDependency; + package = B3CEC5BF27952163004A7CC1 /* XCRemoteSwiftPackageReference "NSLogger" */; + productName = NSLogger; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 1ACEA63C17F7467D0031B1C9 /* Project object */; diff --git a/PVSupport/PVSupport/PVGameControllerUtilities.h b/PVSupport/PVSupport/PVGameControllerUtilities.h deleted file mode 100644 index c5578dbfe7..0000000000 --- a/PVSupport/PVSupport/PVGameControllerUtilities.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// PVGameControllerUtilities.h -// PVSupport -// -// Created by Tyler Hedrick on 4/3/16. -// Copyright © 2016 James Addyman. All rights reserved. -// - -#import - -typedef NS_ENUM(NSUInteger, PVControllerAxisDirection) { - PVControllerAxisDirectionNone, - PVControllerAxisDirectionUp, - PVControllerAxisDirectionDown, - PVControllerAxisDirectionLeft, - PVControllerAxisDirectionRight, - PVControllerAxisDirectionUpRight, - PVControllerAxisDirectionUpLeft, - PVControllerAxisDirectionDownRight, - PVControllerAxisDirectionDownLeft -}; - -@interface PVGameControllerUtilities : NSObject -+ (PVControllerAxisDirection)axisDirectionForThumbstick:(GCControllerDirectionPad *)thumbstick; -@end diff --git a/PVSupport/PVSupport/PVGameControllerUtilities.m b/PVSupport/PVSupport/PVGameControllerUtilities.m deleted file mode 100644 index 6c475a427e..0000000000 --- a/PVSupport/PVSupport/PVGameControllerUtilities.m +++ /dev/null @@ -1,50 +0,0 @@ -// -// PVGameControllerUtilities.m -// PVSupport -// -// Created by Tyler Hedrick on 4/3/16. -// Copyright © 2016 James Addyman. All rights reserved. -// - -#import "PVGameControllerUtilities.h" -#import - -@implementation PVGameControllerUtilities - -+ (PVControllerAxisDirection)axisDirectionForThumbstick:(GCControllerDirectionPad *)thumbstick { - static CGFloat thumbstickSensitivty = 0.2; - - if (fabsf(thumbstick.xAxis.value) <= thumbstickSensitivty && fabsf(thumbstick.yAxis.value) <= thumbstickSensitivty) { - return PVControllerAxisDirectionNone; - } - - float angle = atan2f(thumbstick.yAxis.value, thumbstick.xAxis.value); - - if (angle >= 7 * M_PI / 8 || angle <= -7 * M_PI / 8) { - return PVControllerAxisDirectionLeft; - } - - if (angle > 5 * M_PI / 8) { - return PVControllerAxisDirectionUpLeft; - } - if (angle >= 3 * M_PI / 8) { - return PVControllerAxisDirectionUp; - } - if (angle > 1 * M_PI / 8) { - return PVControllerAxisDirectionUpRight; - } - - if (angle < -5 * M_PI / 8) { - return PVControllerAxisDirectionDownLeft; - } - if (angle <= -3 * M_PI / 8) { - return PVControllerAxisDirectionDown; - } - if (angle < -1 * M_PI / 8) { - return PVControllerAxisDirectionDownRight; - } - - return PVControllerAxisDirectionRight; -} - -@end diff --git a/PVSupport/PVSupport/PVSupport.h b/PVSupport/PVSupport/PVSupport.h deleted file mode 100644 index 0e0c0fdad6..0000000000 --- a/PVSupport/PVSupport/PVSupport.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// PVSupport Framework.h -// PVSupport Framework -// -// Created by Joseph Mattiello on 8/15/16. -// Copyright © 2016 James Addyman. All rights reserved. -// - -#import -#if !TARGET_OS_WATCH -#import -#endif -#import -#import - -//! Project version number for PVSupport Framework. -FOUNDATION_EXPORT double PVSupport_FrameworkVersionNumber; - -//! Project version string for PVSupport Framework. -FOUNDATION_EXPORT const unsigned char PVSupport_FrameworkVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import -#import -#import -#import -#import -#import -#import -#import -#import - -# pragma mark - Audio -#import -#import -#import -#ifdef __cplusplus -#import -//#import -#import -#endif diff --git a/PVSupport/Package.resolved b/PVSupport/Package.resolved new file mode 100644 index 0000000000..e9d8535fc4 --- /dev/null +++ b/PVSupport/Package.resolved @@ -0,0 +1,34 @@ +{ + "object": { + "pins": [ + { + "package": "CocoaLumberjack", + "repositoryURL": "https://github.com/CocoaLumberjack/CocoaLumberjack", + "state": { + "branch": null, + "revision": "80ada1f753b0d53d9b57c465936a7c4169375002", + "version": "3.7.4" + } + }, + { + "package": "Reachability", + "repositoryURL": "https://github.com/ashleymills/Reachability.swift", + "state": { + "branch": null, + "revision": "c01bbdf2d633cf049ae1ed1a68a2020a8bda32e2", + "version": "5.1.0" + } + }, + { + "package": "swift-log", + "repositoryURL": "https://github.com/apple/swift-log.git", + "state": { + "branch": null, + "revision": "5d66f7ba25daf4f94100e7022febf3c75e37a6c7", + "version": "1.4.2" + } + } + ] + }, + "version": 1 +} diff --git a/PVSupport/Package.swift b/PVSupport/Package.swift new file mode 100644 index 0000000000..99ac0880e6 --- /dev/null +++ b/PVSupport/Package.swift @@ -0,0 +1,88 @@ +// swift-tools-version:5.3 +// The swift-tools-version declares the minimum version of Swift required to build this package. +import PackageDescription + +let package = Package( + name: "PVSupport", + platforms: [ + .iOS(.v11), + .tvOS(.v11), + // .watchOS(.v7), + // .macOS(.v11) + ], + products: [ + // Products define the executables and libraries a package produces, and make them visible to other packages. + .library( + name: "PVSupport", + targets: ["PVSupport"]), + .library( + name: "PVSupportObjC", + targets: ["PVSupportObjC"]), + ], + dependencies: [ + // Dependencies declare other packages that this package depends on. + .package( + url: "https://github.com/CocoaLumberjack/CocoaLumberjack", + .upToNextMajor(from: "3.7.2")), + .package( + name: "Reachability", + url: "https://github.com/ashleymills/Reachability.swift", + .upToNextMajor(from: "5.1.0")) + ], + targets: [ + .target( + name: "PVSupportObjC", + dependencies: [ + .product(name: "CocoaLumberjack", package: "CocoaLumberjack")], + path: "Sources/PVSupport", + sources: [ + "Audio/OEGameAudio.m", + "Audio/OERingBuffer.m", + "Audio/TPCircularBuffer.c", + "Audio/CARingBuffer/CAAudioTimeStamp.cpp", + "Audio/CARingBuffer/CARingBuffer.cpp", + "EmulatorCore/PVEmulatorCore.m", + "Logging/PVProvenanceLogging.m", + "Logging/PVLogEntry.m", + "Logging/PVLogging.m", + "NSExtensions/NSObject+PVAbstractAdditions.m", + "NSExtensions/NSFileManager+OEHashingAdditions.m", + "Threads/RealTimeThread.m"], + publicHeadersPath: "Public Headers"), + + .target( + name: "PVSupport", + dependencies: [ + "PVSupportObjC", + .product(name: "CocoaLumberjack", package: "CocoaLumberjack"), + .product(name: "CocoaLumberjackSwift", package: "CocoaLumberjack"), + .product(name: "CocoaLumberjackSwiftLogBackend", package: "CocoaLumberjack"), + "Reachability"], + exclude: [ + "Audio/OEGameAudio.m", + "Audio/OERingBuffer.m", + "Audio/TPCircularBuffer.c", + "Audio/CARingBuffer/CAAudioTimeStamp.cpp", + "Audio/CARingBuffer/CARingBuffer.cpp", + "EmulatorCore/PVEmulatorCore.m", + "Logging/PVProvenanceLogging.m", + "Logging/PVLogEntry.m", + "Logging/PVLogging.m", + "NSExtensions/NSObject+PVAbstractAdditions.m", + "NSExtensions/NSFileManager+OEHashingAdditions.m", + "Threads/RealTimeThread.m"], + // "Info.plist", + // "MASShortcut.modulemap", + // "Prefix.pch" + // ], + resources: [ + .process("Controller/AHAP/") + ]), + // publicHeadersPath: "include"), + + // MARK: SwiftPM tests + .testTarget( + name: "PVSupportTests", + dependencies: ["PVSupport"]), + ] +) diff --git a/PVSupport/PVSupport/Audio/CARingBuffer/CAAtomic.h b/PVSupport/Sources/PVSupport/Audio/CARingBuffer/CAAtomic.h similarity index 92% rename from PVSupport/PVSupport/Audio/CARingBuffer/CAAtomic.h rename to PVSupport/Sources/PVSupport/Audio/CARingBuffer/CAAtomic.h index 506770498e..d99fdd7a93 100644 --- a/PVSupport/PVSupport/Audio/CARingBuffer/CAAtomic.h +++ b/PVSupport/Sources/PVSupport/Audio/CARingBuffer/CAAtomic.h @@ -267,35 +267,58 @@ inline bool CAAtomicCompareAndSwapPtrBarrier(void *__oldValue, void *__newValue, */ #define CA_SPINLOCK_INIT 0 +#define USE_OS_UNFAIR_LOCK 1 +#if USE_OS_UNFAIR_LOCK +#import +#endif + typedef int32_t CASpinLock; -bool CASpinLockTry( volatile CASpinLock *__lock ); -void CASpinLockLock( volatile CASpinLock *__lock ); -void CASpinLockUnlock( volatile CASpinLock *__lock ); +#if USE_OS_UNFAIR_LOCK +#define LOCK_T os_unfair_lock_t +#else +#define LOCK_T CASpinLock * +#endif + +bool CASpinLockTry( volatile LOCK_T __lock ); +void CASpinLockLock( volatile LOCK_T __lock ); +void CASpinLockUnlock( volatile LOCK_T __lock ); -inline void CASpinLockLock( volatile CASpinLock *__lock ) +inline void CASpinLockLock( volatile LOCK_T __lock ) { #if TARGET_OS_MAC - OSSpinLockLock(__lock); +#if USE_OS_UNFAIR_LOCK + os_unfair_lock_lock(__lock); +#else + OSSpinLockLock(__lock); +#endif #else while (CAAtomicTestAndSetBarrier(0, (void*)__lock)) usleep(1000); // ??? #endif } -inline void CASpinLockUnlock( volatile CASpinLock *__lock ) +inline void CASpinLockUnlock( volatile LOCK_T __lock ) { #if TARGET_OS_MAC - OSSpinLockUnlock(__lock); +#if USE_OS_UNFAIR_LOCK + os_unfair_lock_unlock(__lock); +#else + OSSpinLockUnlock(__lock); +#endif #else CAAtomicTestAndClearBarrier(0, (void*)__lock); #endif } -inline bool CASpinLockTry( volatile CASpinLock *__lock ) +inline bool CASpinLockTry( volatile LOCK_T __lock ) { #if TARGET_OS_MAC - return OSSpinLockTry(__lock); +#if USE_OS_UNFAIR_LOCK + return os_unfair_lock_trylock(__lock); +#else + return OSSpinLockTry(__lock); +#endif #else return (CAAtomicTestAndSetBarrier(0, (void*)__lock) == 0); #endif diff --git a/PVSupport/PVSupport/Audio/CARingBuffer/CAAudioTimeStamp.cpp b/PVSupport/Sources/PVSupport/Audio/CARingBuffer/CAAudioTimeStamp.cpp similarity index 100% rename from PVSupport/PVSupport/Audio/CARingBuffer/CAAudioTimeStamp.cpp rename to PVSupport/Sources/PVSupport/Audio/CARingBuffer/CAAudioTimeStamp.cpp diff --git a/PVSupport/PVSupport/Audio/CARingBuffer/CAAudioTimeStamp.h b/PVSupport/Sources/PVSupport/Audio/CARingBuffer/CAAudioTimeStamp.h similarity index 100% rename from PVSupport/PVSupport/Audio/CARingBuffer/CAAudioTimeStamp.h rename to PVSupport/Sources/PVSupport/Audio/CARingBuffer/CAAudioTimeStamp.h diff --git a/PVSupport/PVSupport/Audio/CARingBuffer/CAAutoDisposer.h b/PVSupport/Sources/PVSupport/Audio/CARingBuffer/CAAutoDisposer.h similarity index 100% rename from PVSupport/PVSupport/Audio/CARingBuffer/CAAutoDisposer.h rename to PVSupport/Sources/PVSupport/Audio/CARingBuffer/CAAutoDisposer.h diff --git a/PVSupport/PVSupport/Audio/CARingBuffer/CABitOperations.h b/PVSupport/Sources/PVSupport/Audio/CARingBuffer/CABitOperations.h similarity index 100% rename from PVSupport/PVSupport/Audio/CARingBuffer/CABitOperations.h rename to PVSupport/Sources/PVSupport/Audio/CARingBuffer/CABitOperations.h diff --git a/PVSupport/PVSupport/Audio/CARingBuffer/CARingBuffer.cpp b/PVSupport/Sources/PVSupport/Audio/CARingBuffer/CARingBuffer.cpp similarity index 96% rename from PVSupport/PVSupport/Audio/CARingBuffer/CARingBuffer.cpp rename to PVSupport/Sources/PVSupport/Audio/CARingBuffer/CARingBuffer.cpp index eabd392aaf..e0eeb2c1a6 100644 --- a/PVSupport/PVSupport/Audio/CARingBuffer/CARingBuffer.cpp +++ b/PVSupport/Sources/PVSupport/Audio/CARingBuffer/CARingBuffer.cpp @@ -47,7 +47,7 @@ #include "CARingBuffer.h" #include "CABitOperations.h" #include "CAAutoDisposer.h" -#include "CAAtomic.h" +//#include "CAAtomic.h" #include #include @@ -220,7 +220,7 @@ CARingBufferError CARingBuffer::Store(const AudioBufferList *abl, UInt32 framesT return kCARingBufferError_OK; // success } - +#include void CARingBuffer::SetTimeBounds(SampleTime startTime, SampleTime endTime) { UInt32 nextPtr = mTimeBoundsQueuePtr + 1; @@ -229,7 +229,9 @@ void CARingBuffer::SetTimeBounds(SampleTime startTime, SampleTime endTime) mTimeBoundsQueue[index].mStartTime = startTime; mTimeBoundsQueue[index].mEndTime = endTime; mTimeBoundsQueue[index].mUpdateCounter = nextPtr; - CAAtomicCompareAndSwap32Barrier(mTimeBoundsQueuePtr, mTimeBoundsQueuePtr + 1, (SInt32*)&mTimeBoundsQueuePtr); +// std::atomic_compare_exchange_strong((volatile int32_t *)&mTimeBoundsQueuePtr, mTimeBoundsQueuePtr, mTimeBoundsQueuePtr + 1); + OSAtomicCompareAndSwap32Barrier(mTimeBoundsQueuePtr, mTimeBoundsQueuePtr + 1, (volatile int32_t *)&mTimeBoundsQueuePtr); +// CAAtomicCompareAndSwap32Barrier(mTimeBoundsQueuePtr, mTimeBoundsQueuePtr + 1, (SInt32*)&mTimeBoundsQueuePtr); } CARingBufferError CARingBuffer::GetTimeBounds(SampleTime &startTime, SampleTime &endTime) diff --git a/PVSupport/PVSupport/Audio/CARingBuffer/CARingBuffer.h b/PVSupport/Sources/PVSupport/Audio/CARingBuffer/CARingBuffer.h similarity index 99% rename from PVSupport/PVSupport/Audio/CARingBuffer/CARingBuffer.h rename to PVSupport/Sources/PVSupport/Audio/CARingBuffer/CARingBuffer.h index 9569e9a2a8..d189dedd0d 100644 --- a/PVSupport/PVSupport/Audio/CARingBuffer/CARingBuffer.h +++ b/PVSupport/Sources/PVSupport/Audio/CARingBuffer/CARingBuffer.h @@ -118,7 +118,7 @@ class CARingBuffer { } TimeBounds; CARingBuffer::TimeBounds mTimeBoundsQueue[kGeneralRingTimeBoundsQueueSize]; - UInt32 mTimeBoundsQueuePtr; + volatile UInt32 mTimeBoundsQueuePtr; }; diff --git a/PVSupport/PVSupport/Audio/OEGameAudio.h b/PVSupport/Sources/PVSupport/Audio/OEGameAudio.h similarity index 100% rename from PVSupport/PVSupport/Audio/OEGameAudio.h rename to PVSupport/Sources/PVSupport/Audio/OEGameAudio.h diff --git a/PVSupport/PVSupport/Audio/OEGameAudio.m b/PVSupport/Sources/PVSupport/Audio/OEGameAudio.m similarity index 96% rename from PVSupport/PVSupport/Audio/OEGameAudio.m rename to PVSupport/Sources/PVSupport/Audio/OEGameAudio.m index 5bd5c12c66..07fb3b8b38 100644 --- a/PVSupport/PVSupport/Audio/OEGameAudio.m +++ b/PVSupport/Sources/PVSupport/Audio/OEGameAudio.m @@ -93,6 +93,7 @@ OSStatus RenderCallback(void *in, int bytesRequested = inNumberFrames * context->bytesPerSample * context->channelCount; availableBytes = MIN(availableBytes, bytesRequested); char *outBuffer = ioData->mBuffers[0].mData; + if(outBuffer == nil) { return noErr; } if (availableBytes) { memcpy(outBuffer, head, availableBytes); @@ -112,6 +113,7 @@ @interface OEGameAudio () @property (readwrite, nonatomic, assign) BOOL running; @end +PV_OBJC_DIRECT_MEMBERS @implementation OEGameAudio // No default version for this class @@ -121,8 +123,7 @@ - (id)init } // Designated Initializer -- (id)initWithCore:(PVEmulatorCore *)core -{ +- (id)initWithCore:(PVEmulatorCore *)core { self = [super init]; if(self != nil) { @@ -134,10 +135,6 @@ - (id)initWithCore:(PVEmulatorCore *)core ILOG(@"Successfully set audio session to ambient"); } - // You can adjust the latency of RemoteIO (and, in fact, any other audio framework) by setting the kAudioSessionProperty_PreferredHardwareIOBufferDuration property -// float aBufferLength = 0.005; // In seconds -// AudioSessionSetProperty(kAudioSessionProperty_PreferredHardwareIOBufferDuration, sizeof(aBufferLength), &aBufferLength); - _outputDeviceID = 0; volume = 1; @@ -226,11 +223,10 @@ - (void)createGraph desc.componentManufacturer = kAudioUnitManufacturer_Apple; NSUInteger bufferCount = [gameCore audioBufferCount]; - if (_contexts) - free(_contexts); + if (_contexts) { free(_contexts); } _contexts = malloc(sizeof(OEGameAudioContext) * bufferCount); - for (int i = 0; i < bufferCount; ++i) - { + + for (int i = 0; i < bufferCount; ++i) { TPCircularBufferClear(&([gameCore ringBufferAtIndex:i]->buffer)); _contexts[i] = (OEGameAudioContext){&([gameCore ringBufferAtIndex:i]->buffer), (int)[gameCore channelCountForBuffer:i], (int)([gameCore audioBitDepth] /8)}; diff --git a/PVSupport/PVSupport/Audio/OERingBuffer.h b/PVSupport/Sources/PVSupport/Audio/OERingBuffer.h similarity index 97% rename from PVSupport/PVSupport/Audio/OERingBuffer.h rename to PVSupport/Sources/PVSupport/Audio/OERingBuffer.h index 9d19a0cc50..f71d8a53ff 100644 --- a/PVSupport/PVSupport/Audio/OERingBuffer.h +++ b/PVSupport/Sources/PVSupport/Audio/OERingBuffer.h @@ -25,7 +25,11 @@ */ #import +#if SWIFT_PACKAGE +#import +#else #import +#endif @interface OERingBuffer : NSObject { diff --git a/PVSupport/PVSupport/Audio/OERingBuffer.m b/PVSupport/Sources/PVSupport/Audio/OERingBuffer.m similarity index 98% rename from PVSupport/PVSupport/Audio/OERingBuffer.m rename to PVSupport/Sources/PVSupport/Audio/OERingBuffer.m index 7898534446..7fddf8fed8 100644 --- a/PVSupport/PVSupport/Audio/OERingBuffer.m +++ b/PVSupport/Sources/PVSupport/Audio/OERingBuffer.m @@ -26,6 +26,7 @@ #import "OERingBuffer.h" +__attribute__((objc_direct_members)) @implementation OERingBuffer @synthesize bytesWritten; @synthesize bytesRead; diff --git a/PVSupport/PVSupport/Audio/TPCircularBuffer.c b/PVSupport/Sources/PVSupport/Audio/TPCircularBuffer.c similarity index 98% rename from PVSupport/PVSupport/Audio/TPCircularBuffer.c rename to PVSupport/Sources/PVSupport/Audio/TPCircularBuffer.c index a3e6b3c56f..3c3e61c093 100644 --- a/PVSupport/PVSupport/Audio/TPCircularBuffer.c +++ b/PVSupport/Sources/PVSupport/Audio/TPCircularBuffer.c @@ -31,6 +31,11 @@ #include #include #include +#if SWIFT_PACKAGE +#import +#else +#import +#endif #define reportResult(result,operation) (_reportResult((result),(operation),strrchr(__FILE__, '/')+1,__LINE__)) static inline bool _reportResult(kern_return_t result, const char *operation, const char* file, int line) { @@ -52,7 +57,7 @@ bool _TPCircularBufferInit(TPCircularBuffer *buffer, uint32_t length, size_t str // Keep trying until we get our buffer, needed to handle race conditions int retries = 3; - while ( true ) { + while ( LIKELY(true) ) { buffer->length = (uint32_t)round_page(length); // We need whole page sizes diff --git a/PVSupport/PVSupport/Audio/TPCircularBuffer.h b/PVSupport/Sources/PVSupport/Audio/TPCircularBuffer.h similarity index 100% rename from PVSupport/PVSupport/Audio/TPCircularBuffer.h rename to PVSupport/Sources/PVSupport/Audio/TPCircularBuffer.h diff --git a/PVSupport/Sources/PVSupport/Controller/AHAP/Boing.ahap b/PVSupport/Sources/PVSupport/Controller/AHAP/Boing.ahap new file mode 100644 index 0000000000..806d24bd07 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Controller/AHAP/Boing.ahap @@ -0,0 +1,62 @@ +{ + "Version": 1.0, + "Metadata": + { + "Project" : "Haptic Sampler", + "Created" : "5 June 2019", + "Description" : "A continuous event tweaked by sloped parameter curves, emphasized by a precisely placed transient event, creating the feeling of a spring or rubberband." + }, + "Pattern": + [ + { + "Event": + { + "Time": 0.0, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.4 } + ] + } + }, + { + "Event": + { + "Time": 0.015, + "EventType": "HapticContinuous", + "EventDuration": 0.25, + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.4 } + ] + } + }, + { + "ParameterCurve": + { + "ParameterID": "HapticIntensityControl", + "Time": 0.015, + "ParameterCurveControlPoints": + [ + { "Time": 0, "ParameterValue": 1 }, + { "Time": 0.1, "ParameterValue": 0.5 }, + { "Time": 0.25, "ParameterValue": 0.0 } + ] + } + }, + { + "ParameterCurve": + { + "ParameterID": "HapticSharpnessControl", + "Time": 0.015, + "ParameterCurveControlPoints": + [ + { "Time": 0, "ParameterValue": 0.0 }, + { "Time": 0.25, "ParameterValue": -0.3 } + ] + } + } + ] +} \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Controller/AHAP/Drums.ahap b/PVSupport/Sources/PVSupport/Controller/AHAP/Drums.ahap new file mode 100755 index 0000000000..bfec19a7d1 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Controller/AHAP/Drums.ahap @@ -0,0 +1,129 @@ +{ + "Version": 1, + "Metadata": + { + "Project" : "Haptic Sampler", + "Created" : "5 June 2019", + "Description" : "A sequence of haptic events paired with a custom audio file." + }, + "Pattern": + [ + {"Event": + {"Time":0,"EventType":"HapticTransient", + "EventParameters": + [ + {"ParameterID":"HapticSharpness","ParameterValue":0} + ] + } + }, + {"Event": + {"Time":0.391,"EventType":"HapticTransient", + "EventParameters": + [ + {"ParameterID":"HapticSharpness","ParameterValue":0}, + {"ParameterID":"HapticIntensity","ParameterValue":1} + ] + } + }, + {"Event": + {"Time":0.8,"EventType":"HapticTransient", + "EventParameters": + [ + {"ParameterID":"HapticSharpness","ParameterValue":0.3}, + {"ParameterID":"HapticIntensity","ParameterValue":1} + ] + } + }, + {"Event": + {"Time":1.2,"EventType":"HapticTransient", + "EventParameters": + [ + {"ParameterID":"HapticSharpness","ParameterValue":0}, + {"ParameterID":"HapticIntensity","ParameterValue":1} + ] + } + }, + {"Event": + {"Time":1.41,"EventType":"HapticTransient", + "EventParameters": + [ + {"ParameterID":"HapticSharpness","ParameterValue":0}, + {"ParameterID":"HapticIntensity","ParameterValue":1} + ] + } + }, + {"Event": + {"Time":1.6,"EventType":"HapticTransient", + "EventParameters": + [ + {"ParameterID":"HapticSharpness","ParameterValue":0} + ] + } + }, + {"Event": + {"Time":0,"EventType":"HapticContinuous","EventDuration":0.2, + "EventParameters": + [ + {"ParameterID":"HapticIntensity","ParameterValue":0.6} + ] + } + }, + {"Event": + {"Time":0.2,"EventType":"HapticContinuous","EventDuration":0.2, + "EventParameters": + [ + {"ParameterID":"HapticIntensity","ParameterValue":0.3} + ] + } + }, + {"Event": + {"Time":0.4,"EventType":"HapticContinuous","EventDuration":0.15, + "EventParameters": + [ + {"ParameterID":"HapticIntensity","ParameterValue":0.25}, + {"ParameterID":"HapticSharpness","ParameterValue":1.0} + ] + } + }, + {"Event": + {"Time":0.8,"EventType":"HapticContinuous","EventDuration":0.15, + "EventParameters": + [ + {"ParameterID":"HapticIntensity","ParameterValue":0.25}, + {"ParameterID":"HapticSharpness","ParameterValue":1.0} + ] + } + }, + {"Event": + {"Time":1.2,"EventType":"HapticContinuous","EventDuration":0.15, + "EventParameters": + [ + {"ParameterID":"HapticIntensity","ParameterValue":0.25}, + {"ParameterID":"HapticSharpness","ParameterValue":1.0} + ] + } + }, + {"Event": + {"Time":1.6,"EventType":"HapticContinuous","EventDuration":1, + "EventParameters": + [ + {"ParameterID":"HapticIntensity","ParameterValue":0.45}, + {"ParameterID":"HapticSharpness","ParameterValue":0.9}, + {"ParameterID":"DecayTime","ParameterValue":1}, + {"ParameterID":"Sustained","ParameterValue":0} + ] + } + }, + {"Event": + { + "Time":0, + "EventType":"AudioCustom", + "EventWaveformPath":"AHAP/Drums.wav", + "EventParameters": + [ + {"ParameterID":"AudioVolume","ParameterValue":0.75} + ] + } + } + ] +} diff --git a/PVSupport/Sources/PVSupport/Controller/AHAP/Drums.wav b/PVSupport/Sources/PVSupport/Controller/AHAP/Drums.wav new file mode 100755 index 0000000000..0c82f2afd3 Binary files /dev/null and b/PVSupport/Sources/PVSupport/Controller/AHAP/Drums.wav differ diff --git a/PVSupport/Sources/PVSupport/Controller/AHAP/Gravel.ahap b/PVSupport/Sources/PVSupport/Controller/AHAP/Gravel.ahap new file mode 100644 index 0000000000..38dfbe6379 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Controller/AHAP/Gravel.ahap @@ -0,0 +1,2566 @@ +{ + "Version": 1.0, + "Metadata": + { + "Project" : "Haptic Sampler", + "Created" : "5 June 2019", + "Description" : "A sequence of tightly spaced transient events and parameter variations to create a gravel-like texture." + }, + "Pattern": + [ + { + "ParameterCurve": { + "ParameterID": "HapticIntensityControl", + "Time": 0.0, + "ParameterCurveControlPoints": + [ + { + "Time": 0, + "ParameterValue": 0.3 + }, + { + "Time": 1.0, + "ParameterValue": 0.6 + }, + { + "Time": 3.0, + "ParameterValue": 0.0 + } + ] + } + }, + { + "Event": { + "Time": 0.04, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.05, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.07, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.09, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.11, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.14, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.16, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.17, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.2, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.21, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.24, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.25, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.28, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.29, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.31, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.33, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.35, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.38, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.39, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.42, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.43, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.46, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.48, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.5, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.52, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.53, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.56, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.57, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.6, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.62, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.64, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.65, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.67, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.69, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.72, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.74, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.76, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.78, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.8, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.81, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.84, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.85, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.88, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.89, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 0.92, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.94, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.96, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 0.98, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.0, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.01, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.04, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.06, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.07, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.09, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.11, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.14, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.15, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.18, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.19, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.21, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.24, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.26, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.27, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.3, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.31, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.34, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.35, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.38, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.4, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.41, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.43, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.46, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.48, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.49, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.51, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.54, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.56, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.57, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.59, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.61, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.64, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.66, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.68, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.69, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.72, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.73, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.76, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.77, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.79, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.81, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.84, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.85, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.87, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.89, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.91, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.94, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 1.95, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 1.97, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.0, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.02, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.03, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.05, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.08, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.09, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.11, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.13, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.15, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.18, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.19, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.21, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.23, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.25, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.28, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.29, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.32, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.33, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.36, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.38, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.4, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.42, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.43, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.46, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.48, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.5, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.51, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.54, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.55, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.58, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.59, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.61, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.63, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.65, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.67, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.7, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.72, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.74, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.75, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.77, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.8, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.82, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.83, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.85, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.88, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.89, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.91, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.94, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 2.95, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 1.0 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + }, + { + "Event": { + "Time": 2.98, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + }, + { + "Event": { + "Time": 3.0, + "EventType": "HapticTransient", + "EventParameters": + [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.7 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.3 + } + ] + } + } + ] +} \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Controller/AHAP/Heartbeats.ahap b/PVSupport/Sources/PVSupport/Controller/AHAP/Heartbeats.ahap new file mode 100644 index 0000000000..447914cf16 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Controller/AHAP/Heartbeats.ahap @@ -0,0 +1,156 @@ +{ + "Version": 1.0, + "Metadata": + { + "Project" : "Haptic Sampler", + "Created" : "5 June 2019", + "Description" : "Three organic heartbeats over three seconds, made using precisely spaced transient events at varying parameters." + }, + "Pattern": + [ + { + "Event": + { + "Time": 0.0, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.2 } + ] + } + }, + { + "Event": + { + "Time": 0.013, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.3 } + ] + } + }, + { + "Event": + { + "Time": 0.220, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.255, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.7 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.0 } + ] + } + }, + { + "Event": + { + "Time": 1.0, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.2 } + ] + } + }, + { + "Event": + { + "Time": 1.013, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.3 } + ] + } + }, + { + "Event": + { + "Time": 1.220, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 1.255, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.7 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.0 } + ] + } + }, + { + "Event": + { + "Time": 2.0, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.2 } + ] + } + }, + { + "Event": + { + "Time": 2.013, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.3 } + ] + } + }, + { + "Event": + { + "Time": 2.220, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 2.255, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.7 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.0 } + ] + } + } + ] +} diff --git a/PVSupport/Sources/PVSupport/Controller/AHAP/Hit.ahap b/PVSupport/Sources/PVSupport/Controller/AHAP/Hit.ahap new file mode 100644 index 0000000000..01b2888873 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Controller/AHAP/Hit.ahap @@ -0,0 +1,22 @@ +{ + "Version" : 1, + "Metadata" : { + "Project" : "Haptic Controllers", + "Created" : "9 June 2020", + "Description" : "A single hit at full intensity" + }, + "Pattern" : [ + { + "Event" : { + "EventType" : "HapticTransient", + "EventParameters" : [ + { + "ParameterID" : "HapticIntensity", + "ParameterValue" : 1.000000 + } + ], + "Time" : 0 + } + } + ] +} diff --git a/PVSupport/Sources/PVSupport/Controller/AHAP/Inflate.ahap b/PVSupport/Sources/PVSupport/Controller/AHAP/Inflate.ahap new file mode 100644 index 0000000000..d14b78ae5f --- /dev/null +++ b/PVSupport/Sources/PVSupport/Controller/AHAP/Inflate.ahap @@ -0,0 +1,50 @@ +{ + "Version": 1.0, + "Metadata": + { + "Project" : "Haptic Sampler", + "Created" : "5 June 2019", + "Description" : "An effect that builds in sharpness and intensity." + }, + "Pattern": + [ + { + "Event": + { + "Time": 0.0, + "EventType": "HapticContinuous", + "EventDuration": 1.7, + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.5 } + ] + } + }, + { + "ParameterCurve": + { + "ParameterID": "HapticIntensityControl", + "Time": 0.0, + "ParameterCurveControlPoints": + [ + { "Time": 0, "ParameterValue": 0.0 }, + { "Time": 1.1, "ParameterValue": 0.5 }, + { "Time": 1.7, "ParameterValue": 0.0 } + ] + } + }, + { + "ParameterCurve": + { + "ParameterID": "HapticSharpnessControl", + "Time": 0.0, + "ParameterCurveControlPoints": + [ + { "Time": 0, "ParameterValue": -0.8 }, + { "Time": 1.7, "ParameterValue": 0.8 } + ] + } + } + ] +} diff --git a/PVSupport/Sources/PVSupport/Controller/AHAP/Oscillate.ahap b/PVSupport/Sources/PVSupport/Controller/AHAP/Oscillate.ahap new file mode 100644 index 0000000000..03bc88282a --- /dev/null +++ b/PVSupport/Sources/PVSupport/Controller/AHAP/Oscillate.ahap @@ -0,0 +1,51 @@ +{ + "Version": 1.0, + "Metadata": + { + "Project" : "Haptic Sampler", + "Created" : "5 June 2019", + "Description" : "A mixture of two continuous events, shifting the sharpness of one to create a smooth oscillating feel." + }, + "Pattern": + [ + { + "Event": + { + "Time": 0.0, + "EventType": "HapticContinuous", + "EventDuration": 3.0, + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.5 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.0 } + ] + } + }, + { + "Event": + { + "Time": 0.0, + "EventType": "HapticContinuous", + "EventDuration": 3.0, + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.5 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.075 } + ] + } + }, + { + "ParameterCurve": + { + "ParameterID": "HapticIntensityControl", + "Time": 0.0, + "ParameterCurveControlPoints": + [ + { "Time": 0, "ParameterValue": 1.0 }, + { "Time": 0.5, "ParameterValue": 1.0 }, + { "Time": 3.0, "ParameterValue": 0.0 } + ] + } + } + ] +} diff --git a/PVSupport/Sources/PVSupport/Controller/AHAP/Recharge.ahap b/PVSupport/Sources/PVSupport/Controller/AHAP/Recharge.ahap new file mode 100644 index 0000000000..084c792cf6 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Controller/AHAP/Recharge.ahap @@ -0,0 +1,193 @@ +{ + "Version" : 1, + "Metadata" : { + "Project" : "Haptic Controllers", + "Created" : "9 June 2020", + "Description" : "Charge up sequence, with three cycle of incresing intensity curves" + }, + "Pattern" : [ + { + "Event" : { + "EventParameters" : [ + { + "ParameterID" : "HapticIntensity", + "ParameterValue" : 1.000000 + } + ], + "EventType" : "HapticContinuous", + "Time" : 0, + "EventDuration" : 2.4 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.0, + "ParameterID" : "HapticIntensityControl", + "Time" : 0.0001 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.03, + "ParameterID" : "HapticIntensityControl", + "Time" : 0.100 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.0915, + "ParameterID" : "HapticIntensityControl", + "Time" : 0.200 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.216, + "ParameterID" : "HapticIntensityControl", + "Time" : 0.300 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.3345, + "ParameterID" : "HapticIntensityControl", + "Time" : 0.400 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.5, + "ParameterID" : "HapticIntensityControl", + "Time" : 0.5 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.02025, + "ParameterID" : "HapticIntensityControl", + "Time" : 0.600 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.048, + "ParameterID" : "HapticIntensityControl", + "Time" : 0.700 + } + }, + + { + "Parameter" : { + "ParameterValue" : 0.09375, + "ParameterID" : "HapticIntensityControl", + "Time" : 0.800 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.162, + "ParameterID" : "HapticIntensityControl", + "Time" : 0.900 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.25725, + "ParameterID" : "HapticIntensityControl", + "Time" : 1.000 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.384, + "ParameterID" : "HapticIntensityControl", + "Time" : 1.100 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.54675, + "ParameterID" : "HapticIntensityControl", + "Time" : 1.200 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.75, + "ParameterID" : "HapticIntensityControl", + "Time" : 1.3 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.001, + "ParameterID" : "HapticIntensityControl", + "Time" : 1.400 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.008, + "ParameterID" : "HapticIntensityControl", + "Time" : 1.500 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.027, + "ParameterID" : "HapticIntensityControl", + "Time" : 1.600 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.064, + "ParameterID" : "HapticIntensityControl", + "Time" : 1.700 + } + }, + + { + "Parameter" : { + "ParameterValue" : 0.125, + "ParameterID" : "HapticIntensityControl", + "Time" : 1.800 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.216, + "ParameterID" : "HapticIntensityControl", + "Time" : 1.900 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.343, + "ParameterID" : "HapticIntensityControl", + "Time" : 2.000 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.512, + "ParameterID" : "HapticIntensityControl", + "Time" : 2.100 + } + }, + { + "Parameter" : { + "ParameterValue" : 0.729, + "ParameterID" : "HapticIntensityControl", + "Time" : 2.200 + } + }, + { + "Parameter" : { + "ParameterValue" : 1, + "ParameterID" : "HapticIntensityControl", + "Time" : 2.300 + } + }, + ] +} diff --git a/PVSupport/Sources/PVSupport/Controller/AHAP/Rumble.ahap b/PVSupport/Sources/PVSupport/Controller/AHAP/Rumble.ahap new file mode 100644 index 0000000000..3d8d856125 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Controller/AHAP/Rumble.ahap @@ -0,0 +1,494 @@ +{ + "Version": 1.0, + "Metadata": + { + "Project" : "Haptic Sampler", + "Created" : "5 June 2019", + "Description" : "A sequence of transient events with decreasing sharpness, to create a precise rumble, reminiscent of driving over uneven ground." + }, + "Pattern": + [ + { + "ParameterCurve": + { + "ParameterID": "HapticIntensityControl", + "Time": 0.0, + "ParameterCurveControlPoints": + [ + { "Time": 0.0, "ParameterValue": 0.3 }, + { "Time": 0.1, "ParameterValue": 1.0 }, + { "Time": 1.0, "ParameterValue": 1.0 }, + { "Time": 1.6, "ParameterValue": 0.0 } + ] + } + }, + { + "Event": + { + "Time": 0.0, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.04, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.08, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.12, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.16, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.2, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.24, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.28, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.32, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.36, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.40, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.44, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.48, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.52, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.56, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.6, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.64, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.68, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.72, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.76, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.8, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.84, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.88, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.92, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 0.96, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 1.0, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 1.04, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 1.08, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 1.12, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 1.16, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 1.2, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 1.24, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 1.28, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 1.32, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 1.36, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 1.40, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 1.44, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 1.48, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "Event": + { + "Time": 1.52, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + } + ] +} diff --git a/PVSupport/Sources/PVSupport/Controller/AHAP/Sparkle.ahap b/PVSupport/Sources/PVSupport/Controller/AHAP/Sparkle.ahap new file mode 100644 index 0000000000..a4987d4b5e --- /dev/null +++ b/PVSupport/Sources/PVSupport/Controller/AHAP/Sparkle.ahap @@ -0,0 +1,304 @@ +{ + "Version": 1.0, + "Metadata": + { + "Project" : "Haptic Sampler", + "Created" : "5 June 2019", + "Description" : "A combination of transient and continuous events to create a pop with trailing sparkles." + }, + "Pattern": + [ + { + "Event": + { + "Time": 0.0, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.6 } + ] + } + }, + { + "Event": + { + "Time": 0.024, + "EventType": "HapticContinuous", + "EventDuration": 0.150, + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.6 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.1 } + ] + } + }, + { + "ParameterCurve": + { + "ParameterID": "HapticIntensityControl", + "Time": 0.024, + "ParameterCurveControlPoints": + [ + { "Time": 0, "ParameterValue": 1.0 }, + { "Time": 0.025, "ParameterValue": 0.45 }, + { "Time": 0.15, "ParameterValue": 0.0 } + ] + } + }, + { + "ParameterCurve": + { + "ParameterID": "HapticIntensityControl", + "Time": 0.174, + "ParameterCurveControlPoints": + [ + { "Time": 0, "ParameterValue": 0.75 }, + { "Time": 0.087, "ParameterValue": 0.40 }, + { "Time": 0.667, "ParameterValue": 0.40 }, + { "Time": 0.846, "ParameterValue": 0.2 } + ] + } + }, + { + "Event": + { + "Time": 0.174, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.4 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.5 } + ] + } + }, + { + "Event": + { + "Time": 0.188, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.6 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.5 } + ] + } + }, + { + "Event": + { + "Time": 0.203, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.7 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.8 } + ] + } + }, + { + "Event": + { + "Time": 0.231, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.5 } + ] + } + }, + { + "Event": + { + "Time": 0.261, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.8 } + ] + } + }, + { + "Event": + { + "Time": 0.278, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.9 } + ] + } + }, + { + "Event": + { + "Time": 0.318, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.8 } + ] + } + }, + { + "Event": + { + "Time": 0.336, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.9 } + ] + } + }, + { + "Event": + { + "Time": 0.368, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.6 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.8 } + ] + } + }, + { + "Event": + { + "Time": 0.425, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.8 } + ] + } + }, + { + "Event": + { + "Time": 0.473, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.6 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.8 } + ] + } + }, + { + "Event": + { + "Time": 0.517, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.8 } + ] + } + }, + { + "Event": + { + "Time": 0.531, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.8 } + ] + } + }, + { + "Event": + { + "Time": 0.573, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.6 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.8 } + ] + } + }, + { + "Event": + { + "Time": 0.595, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.8 } + ] + } + }, + { + "Event": + { + "Time": 0.647, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.8 } + ] + } + }, + { + "Event": + { + "Time": 0.678, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.8 } + ] + } + }, + { + "Event": + { + "Time": 0.751, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.8 } + ] + } + }, + { + "Event": + { + "Time": 0.841, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 0.8 } + ] + } + }, + { + "Event": + { + "Time": 1.020, + "EventType": "HapticTransient", + "EventParameters": + [ + { "ParameterID": "HapticIntensity", "ParameterValue": 0.8 }, + { "ParameterID": "HapticSharpness", "ParameterValue": 1.0 } + ] + } + } + ] +} diff --git a/PVSupport/Sources/PVSupport/Controller/AHAP/Triple.ahap b/PVSupport/Sources/PVSupport/Controller/AHAP/Triple.ahap new file mode 100644 index 0000000000..d78efde7b3 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Controller/AHAP/Triple.ahap @@ -0,0 +1,46 @@ +{ + "Version" : 1, + "Metadata" : { + "Project" : "Haptic Controllers", + "Created" : "9 June 2020", + "Description" : "A triple hit pattern at full intensity" + }, + "Pattern" : [ + { + "Event" : { + "EventType" : "HapticTransient", + "EventParameters" : [ + { + "ParameterID" : "HapticIntensity", + "ParameterValue" : 1 + } + ], + "Time" : 0 + } + }, + { + "Event" : { + "EventType" : "HapticTransient", + "EventParameters" : [ + { + "ParameterID" : "HapticIntensity", + "ParameterValue" : 1 + } + ], + "Time" : 0.25 + } + }, + { + "Event" : { + "EventType" : "HapticTransient", + "EventParameters" : [ + { + "ParameterID" : "HapticIntensity", + "ParameterValue" : 1 + } + ], + "Time" : 0.5 + } + } + ] +} \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Controller/HapticsManager.swift b/PVSupport/Sources/PVSupport/Controller/HapticsManager.swift new file mode 100644 index 0000000000..aa304050db --- /dev/null +++ b/PVSupport/Sources/PVSupport/Controller/HapticsManager.swift @@ -0,0 +1,229 @@ +/* +See LICENSE folder for this sample’s licensing information. + +Abstract: +The class that manages the app's haptics playback. +*/ + +#if canImport(CoreHaptics) +import Foundation +import GameController +import CoreHaptics + +@available(iOS 14.0, tvOS 14.0, *) +public protocol HapticsManagerDelegate: AnyObject { + func didConnect(controller: GCController) + func didDisconnectController() +} + +@available(iOS 14.0, tvOS 14.0, *) +public final class HapticsManager { + + private var isSetup = false + + private var controller: GCController? + // A haptic engine manages the connection to the haptic server. + private var engineMap = [GCHapticsLocality: CHHapticEngine]() + + weak var delegate: HapticsManagerDelegate? { + didSet { + if delegate != nil { + startObserving() + } + } + + willSet { + if isSetup { + stopObserving() + } + } + } + + /// - Tag: StartObserving + private func startObserving() { + guard !isSetup else { return } + + let nc = NotificationCenter.default + + // Controller did connect observer. + NotificationCenter.default.addObserver(self, + selector: #selector(controllerDidConnect), + name: .GCControllerDidConnect, + object: nil) + + // Controller did disconnect observer. + nc.addObserver(self, selector: + #selector(controllerDidDisconnect), + name: .GCControllerDidDisconnect, + object: nil) + isSetup = true + } + + private func stopObserving() { + guard isSetup else { return } + + let nc = NotificationCenter.default + + // Controller did connect observer. + NotificationCenter.default.removeObserver(self, + name: .GCControllerDidConnect, + object: nil) + + // Controller did disconnect observer. + nc.removeObserver(self, + name: .GCControllerDidDisconnect, + object: nil) + isSetup = false + } + + /// - Tag: ControllerDidConnect + @objc private func controllerDidConnect(notification: Notification) { + guard let controller = notification.object as? GCController else { + fatalError("Invalid notification object.") + } + + ILOG("Connected \(controller.productCategory) game controller.") + + // Create a haptics engine for the controller. + guard let engine = createEngine(for: controller, locality: .default) else { return } + + // Configure the event handlers for the controller buttons. + delegate?.didConnect(controller: controller) + + self.engineMap[GCHapticsLocality.default] = engine + self.controller = controller + } + + /// - Tag: CreateEngine + private func createEngine(for controller: GCController, locality: GCHapticsLocality) -> CHHapticEngine? { + // Get the controller's haptics (if one exists), and create a + // new CGHapticEngine for it, using the default locality. + guard let engine = controller.haptics?.createEngine(withLocality: locality) else { + ELOG("Failed to create engine.") + return nil + } + + // The stopped handler alerts you of engine stoppage due to external causes. + engine.stoppedHandler = { reason in + ELOG("The engine stopped because \(reason.message)") + } + + // The reset handler provides an opportunity for your app to restart the engine in case of failure. + engine.resetHandler = { + // Try restarting the engine. + ILOG("The engine reset --> Restarting now!") + do { + try engine.start() + } catch { + ELOG("Failed to restart the engine: \(error)") + } + } + return engine + } + + @objc private func controllerDidDisconnect(notification: Notification) { + guard controller == notification.object as? GCController else { return } + + // dispose of engine and controller. + engineMap.removeAll(keepingCapacity: true) + controller = nil + delegate?.didDisconnectController() + } + + /// - Tag: PlayHapticsFile + func playHapticsFile(named filename: String, locality: GCHapticsLocality = .default) { + // Update the engine based on locality. + guard let controller = controller else { + ELOG("Unable to play haptics: no game controller connected") + return + } + + var engine: CHHapticEngine! + if let existingEngine = engineMap[locality] { + engine = existingEngine + } else if let newEngine = createEngine(for: controller, locality: locality) { + engine = newEngine + } + + guard engine != nil else { + ELOG("Unable to play haptics: no engine available for locality \(locality)") + return + } + + // Get the AHAP file URL. + let bundle = Bundle.init(for: Self.self) + guard let url = bundle.url(forResource: filename, withExtension: "ahap") else { + ELOG("Unable to find haptics file named '\(filename)'.") + return + } + + do { + // Start the engine in case it's idle. + try engine.start() + + // Tell the engine to play a pattern. + try engine.playPattern(from: url) + + } catch { // Engine startup errors + ELOG("An error occured playing \(filename): \(error).") + } + } +} + +@available(iOS 14.0, tvOS 14.0, *) +public extension HapticsManager { + enum HapticFiles: String { + case boing + case drums + case gravel + case heartbeats + case hit + case inflate + case oscillate + case recharge + case rumble + case sparkle + case triple + } + + private func play(_ file: HapticFiles) { + playHapticsFile(named: file.rawValue.uppercased()) + } + + func boing() { play(.boing) } + func drums() { play(.drums) } + func gravel() { play(.gravel) } + func heartbeats() { play(.heartbeats) } + func hit() { play(.hit) } + func inflate() { play(.inflate) } + func oscillate() { play(.oscillate) } + func recharge() { play(.recharge) } + func rumble() { play(.rumble) } + func sparkle() { play(.sparkle) } + func triple() { play(.triple) } +} + +@available(iOS 13.0, tvOS 14.0, *) +extension CHHapticEngine.StoppedReason { + var message: String { + switch self { + case .audioSessionInterrupt: + return "the audio session was interrupted." + case .applicationSuspended: + return "the application was suspended." + case .idleTimeout: + return "an idle timeout occurred." + case .systemError: + return "a system error occurred." + case .notifyWhenFinished: + return "playback finished." + case .engineDestroyed: + return "the engine was destroyed." + case .gameControllerDisconnect: + return "the game controller disconnected." + @unknown default: + fatalError() + } + } +} +#endif diff --git a/PVSupport/Sources/PVSupport/Controller/PVGameControllerUtilities.swift b/PVSupport/Sources/PVSupport/Controller/PVGameControllerUtilities.swift new file mode 100644 index 0000000000..8b4ab2a7be --- /dev/null +++ b/PVSupport/Sources/PVSupport/Controller/PVGameControllerUtilities.swift @@ -0,0 +1,104 @@ +// +// PVGameControllerUtilities.swift +// PVSupport +// +// Created by Joseph Mattiello on 1/16/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation +@_exported import GameController +import simd + +fileprivate let thumbstickSensitivty: Float = 0.2; + +@objc +public enum PVControllerAxisDirection : UInt, CustomDebugStringConvertible { + case None + case Up + case Down + case Left + case Right + case UpRight + case UpLeft + case DownRight + case DownLeft + + public var debugDescription: String { + let label: String + switch self { + case .None: label = "None" + case .Up: label = "Up" + case .Down: label = "Down" + case .Left: label = "Left" + case .Right: label = "Right" + case .UpRight: label = "UpRight" + case .UpLeft: label = "UpLeft" + case .DownRight: label = "DownRight" + case .DownLeft: label = "DownLeft" + } + return "\(rawValue): \(label)" + } + + public init(forThumbstick thumbstick :GCControllerDirectionPad) { + let xValue = fabsf(thumbstick.xAxis.value) + let yValue = fabsf(thumbstick.yAxis.value) + + if xValue <= thumbstickSensitivty && yValue <= thumbstickSensitivty { + self = .None + return + } + + var angleInRadians: Double = atan2(Double(thumbstick.yAxis.value), Double(thumbstick.xAxis.value)) + //We have 8 sectors, so get the size of each in degrees. + let sectorSize:Double = 360.0 / 8 + //We also need the size of half a sector + let halfSectorSize: Double = sectorSize / 2.0; + + //Atan2 gives us a negative value for angles in the 3rd and 4th quadrants. + // We want a full 360 degrees, so we will add 2 PI to negative values. + if angleInRadians < 0.0 { angleInRadians += (.pi * 2.0) } + //Convert the radians to degrees. Degrees are easier to visualize. + let angleInDegrees: Double = (180.0 * angleInRadians / .pi); + + + //Next, rotate our angle to match the offset of our sectors. + let convertedAngle: Double = angleInDegrees + halfSectorSize + + //Finally, we get the current direction by dividing the angle + // by the size of the sectors + let direction: Int = Int(floor(convertedAngle / sectorSize)) + switch direction { + case 0: + self = .Right + case 1: + self = .UpRight + case 2: + self = .Up + case 3: + self = .UpLeft + case 4: + self = .Left + case 5: + self = .DownLeft + case 6: + self = .Down + case 7: + self = .DownRight + case 8: + self = .Right + default: + self = .None + } + } +} + +@objc +public final class PVGameControllerUtilities : NSObject { + + @objc(axisDirectionForThumbstick:) + public + static func axisDirection(forThumbstick thumbstick :GCControllerDirectionPad) -> PVControllerAxisDirection { + return .init(forThumbstick: thumbstick) + } +} diff --git a/PVSupport/Controller/iCade/Controllers/PViCade8BitdoController.swift b/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCade8BitdoController.swift similarity index 100% rename from PVSupport/Controller/iCade/Controllers/PViCade8BitdoController.swift rename to PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCade8BitdoController.swift diff --git a/PVSupport/Controller/iCade/Controllers/PViCadeController.swift b/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeController.swift similarity index 100% rename from PVSupport/Controller/iCade/Controllers/PViCadeController.swift rename to PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeController.swift diff --git a/PVSupport/Controller/iCade/Controllers/PViCadeMocuteController.swift b/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeMocuteController.swift similarity index 100% rename from PVSupport/Controller/iCade/Controllers/PViCadeMocuteController.swift rename to PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeMocuteController.swift diff --git a/PVSupport/Controller/iCade/Controllers/PViCadeSteelSeriesController.swift b/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeSteelSeriesController.swift similarity index 100% rename from PVSupport/Controller/iCade/Controllers/PViCadeSteelSeriesController.swift rename to PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeSteelSeriesController.swift diff --git a/PVSupport/Controller/iCade/PViCadeGamepad.swift b/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeGamepad.swift similarity index 100% rename from PVSupport/Controller/iCade/PViCadeGamepad.swift rename to PVSupport/Sources/PVSupport/Controller/iCade/PViCadeGamepad.swift diff --git a/PVSupport/Controller/iCade/PViCadeGamepadButtonInput.swift b/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeGamepadButtonInput.swift similarity index 100% rename from PVSupport/Controller/iCade/PViCadeGamepadButtonInput.swift rename to PVSupport/Sources/PVSupport/Controller/iCade/PViCadeGamepadButtonInput.swift diff --git a/PVSupport/Controller/iCade/PViCadeGamepadDirectionPad.swift b/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeGamepadDirectionPad.swift similarity index 100% rename from PVSupport/Controller/iCade/PViCadeGamepadDirectionPad.swift rename to PVSupport/Sources/PVSupport/Controller/iCade/PViCadeGamepadDirectionPad.swift diff --git a/PVSupport/Controller/iCade/PViCadeInputAxis.swift b/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeInputAxis.swift similarity index 100% rename from PVSupport/Controller/iCade/PViCadeInputAxis.swift rename to PVSupport/Sources/PVSupport/Controller/iCade/PViCadeInputAxis.swift diff --git a/PVSupport/Controller/iCade/PViCadeReader.swift b/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeReader.swift similarity index 100% rename from PVSupport/Controller/iCade/PViCadeReader.swift rename to PVSupport/Sources/PVSupport/Controller/iCade/PViCadeReader.swift diff --git a/PVSupport/Controller/iCade/iCadeControllerSetting.swift b/PVSupport/Sources/PVSupport/Controller/iCade/iCadeControllerSetting.swift similarity index 100% rename from PVSupport/Controller/iCade/iCadeControllerSetting.swift rename to PVSupport/Sources/PVSupport/Controller/iCade/iCadeControllerSetting.swift diff --git a/PVSupport/Controller/iCade/iCadeReaderView.swift b/PVSupport/Sources/PVSupport/Controller/iCade/iCadeReaderView.swift similarity index 100% rename from PVSupport/Controller/iCade/iCadeReaderView.swift rename to PVSupport/Sources/PVSupport/Controller/iCade/iCadeReaderView.swift diff --git a/PVSupport/Controller/iCade/iCadeState.swift b/PVSupport/Sources/PVSupport/Controller/iCade/iCadeState.swift similarity index 100% rename from PVSupport/Controller/iCade/iCadeState.swift rename to PVSupport/Sources/PVSupport/Controller/iCade/iCadeState.swift diff --git a/PVSupport/Sources/PVSupport/CoreOptions/CoreOptionValueDisplay.swift b/PVSupport/Sources/PVSupport/CoreOptions/CoreOptionValueDisplay.swift new file mode 100644 index 0000000000..25f24b2df9 --- /dev/null +++ b/PVSupport/Sources/PVSupport/CoreOptions/CoreOptionValueDisplay.swift @@ -0,0 +1,23 @@ +// +// CoreOptions+Types.swift +// PVSupport +// +// Created by Joseph Mattiello on 1/22/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation + +public struct CoreOptionValueDisplay { + public let title: String + public let description: String? + public let requiresRestart: Bool + + public init(title: String, description: String? = nil, requiresRestart: Bool = false) { + self.title = title + self.description = description + self.requiresRestart = requiresRestart + } +} + +extension CoreOptionValueDisplay: Codable, Equatable, Hashable {} diff --git a/PVSupport/Sources/PVSupport/CoreOptions/CoreOptions+Protocols.swift b/PVSupport/Sources/PVSupport/CoreOptions/CoreOptions+Protocols.swift new file mode 100644 index 0000000000..9cfc5e736a --- /dev/null +++ b/PVSupport/Sources/PVSupport/CoreOptions/CoreOptions+Protocols.swift @@ -0,0 +1,42 @@ +// +// CoreOptions+Protocols.swift +// PVSupport +// +// Created by Joseph Mattiello on 1/22/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation + +public protocol COption { + associatedtype ValueType: OptionValueRepresentable + + var key: String { get } + var title: String { get } + var description: String? { get } + +// associatedtype Dependencies : COption +// var dependsOn : [OptionDependency]? {get set} + + var defaultValue: ValueType { get } + var value: ValueType { get } +} + +public protocol MultiCOption: COption { + var options: [(key: String, title: String, description: String?)] { get } +} + +public protocol EnumCOption: COption { + var options: [(key: String, title: String, description: String?)] { get } +} + +public protocol OptionValueRepresentable: Codable {} + +extension Int: OptionValueRepresentable {} +extension UInt: OptionValueRepresentable {} +extension UInt64: OptionValueRepresentable {} +extension Int64: OptionValueRepresentable {} +extension Bool: OptionValueRepresentable {} +extension String: OptionValueRepresentable {} +extension Float: OptionValueRepresentable {} +extension Double: OptionValueRepresentable {} diff --git a/PVSupport/Sources/PVSupport/CoreOptions/CoreOptions+Serialization.swift b/PVSupport/Sources/PVSupport/CoreOptions/CoreOptions+Serialization.swift new file mode 100644 index 0000000000..595e97d010 --- /dev/null +++ b/PVSupport/Sources/PVSupport/CoreOptions/CoreOptions+Serialization.swift @@ -0,0 +1,109 @@ +// +// CoreOptions+Serialization.swift +// PVSupport +// +// Created by Joseph Mattiello on 1/22/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation + +public extension CoreOptional { // where Self:PVEmulatorCore { + static func storedValueForOption(_: T.Type, _ option: String, andMD5 md5: String? = nil) -> T? { + let className = NSStringFromClass(Self.self) + let key = "\(className).\(option)" + let md5Key: String = [className, md5, option].compactMap {$0}.joined(separator: ".") + + VLOG("Looking for either key's `\(key)` or \(md5Key) with type \(T.self)") + + let savedOption = UserDefaults.standard.object(forKey: md5Key) ?? UserDefaults.standard.object(forKey: key) + VLOG("savedOption found?: \(String(describing: savedOption)) isIt type: \(T.self), \(savedOption as? T)") + + if let savedOption = savedOption as? T { + VLOG("Read key `\(md5Key)` option: \(savedOption)") + return savedOption + } else { + VLOG("need to find options for key `\(option)`") + let currentOptions: [CoreOption] = options + guard let foundOption = findOption(forKey: option, options: currentOptions) else { + ELOG("No option for key: `\(option)`") + return nil + } + VLOG("Found option `\(foundOption)`") + let key = "\(className).\(foundOption.key)" + let object = UserDefaults.standard.object(forKey: key) + return object as? T ?? foundOption.defaultValue as? T + } + } + + static func setValue(_ value: Encodable?, forOption option: CoreOption, andMD5 md5: String? = nil) { + let className = NSStringFromClass(Self.self) + let key: String + if let md5 = md5, !md5.isEmpty { + key = "\(className.utf8).\(md5).\(option.key)" + } else { + key = "\(className.utf8).\(option.key)" + } + + // TODO: Make sure the value matches the option type + DLOG("Options: Setting key: \(key) to value: \(value ?? "nil")") + UserDefaults.standard.set(value, forKey: key) + UserDefaults.standard.synchronize() + } + + static func valueForOption(_ option: CoreOption) -> CoreOptionValue { + switch option { + case let .bool(_, defaultValue): + guard let value = storedValueForOption(Bool.self, option.key) else { return .bool(defaultValue) } + return .bool(value) + case .string: + if let value = storedValueForOption(String.self, option.key) { + return .string(value) + } else { + return .notFound + } + case let .range(_, _, defaultValue): + if let value = storedValueForOption(Int.self, option.key) { + return .int(value) + } else { + return .int(defaultValue) + } + case let .rangef(_, _, defaultValue): + if let value = storedValueForOption(Float.self, option.key) { + return .float(value) + } else { + return .float(defaultValue) + } + case .multi: + if let value = storedValueForOption(Int.self, option.key) { + return .int(value) + } else if let value = storedValueForOption(String.self, option.key) { + return .string(value) + } else { + return .notFound + } + case let .enumeration(_, _, defaultValue): + if let value = storedValueForOption(Int.self, option.key) { + return .int(value) + } else if let value = storedValueForOption(String.self, option.key) { + return .string(value) + } else { + return .int(defaultValue) + } + case .group: + assertionFailure("Feature unfinished") + return .notFound + } + } + + static func findOption(forKey key: String, options: [CoreOption]) -> CoreOption? { + var foundOption: CoreOption? + for option in options { + let subOption = option.subOptionForKey(key) + if subOption != nil { + foundOption = subOption + } + } + return foundOption + } +} diff --git a/PVSupport/Sources/PVSupport/CoreOptions/CoreOptions.swift b/PVSupport/Sources/PVSupport/CoreOptions/CoreOptions.swift new file mode 100644 index 0000000000..6ee729d046 --- /dev/null +++ b/PVSupport/Sources/PVSupport/CoreOptions/CoreOptions.swift @@ -0,0 +1,217 @@ +// +// CoreOptions.swift +// PVSupport +// +// Created by Joseph Mattiello on 4/11/18. +// Copyright © 2018 James Addyman. All rights reserved. +// + +import Foundation + +public enum CoreOption { + case bool(_ display: CoreOptionValueDisplay, defaultValue: Bool = false) + case range(_ display: CoreOptionValueDisplay, range: CoreOptionRange, defaultValue: Int) + case rangef(_ display: CoreOptionValueDisplay, range: CoreOptionRange, defaultValue: Float) + case multi(_ display: CoreOptionValueDisplay, values: [CoreOptionMultiValue]) + case enumeration(_ display: CoreOptionValueDisplay, values: [CoreOptionEnumValue], defaultValue: Int = 0) + case string(_ display: CoreOptionValueDisplay, defaultValue: String = "") + case group(_ display: CoreOptionValueDisplay, subOptions: [CoreOption]) + + public var defaultValue: OptionValueRepresentable? { + switch self { + case let .bool(_, defaultValue): + return defaultValue + case let .range(_, _, defaultValue): + return defaultValue + case let .rangef(_, _, defaultValue): + return defaultValue + case let .multi(_, values): + return values.first?.title + case let .enumeration(_, values, defaultValue): + return values.first?.value ?? defaultValue + case let .string(_, defaultValue): + return defaultValue + case .group: + return nil + } + } + + public var key: String { + switch self { + case .bool(let display, _): + return display.title + case .range(let display, _, _): + return display.title + case .rangef(let display, _, _): + return display.title + case .multi(let display, _): + return display.title + case .string(let display, _): + return display.title + case .group(let display, _): + return display.title + case .enumeration(let display, _, _): + return display.title + } + } + + func subOptionForKey(_ key: String) -> CoreOption? { + switch self { + case let .group(_, subOptions): + return subOptions.first { $0.key == key } + default: + return nil + } + } +} + +extension CoreOption: Equatable { + // MARK: - Equatable + + /// Returns true iff `lhs` and `rhs` have equal titles, detail texts, selection states, and icons. +// public static func == (lhs: CoreOption, rhs: CoreOption) -> Bool { +// return +// lhs.text == rhs.text && +// lhs.detailText == rhs.detailText && +// lhs.isSelected == rhs.isSelected && +// lhs.icon == rhs.icon +// } +} + +extension CoreOption: Codable { + public enum CodingError: Error { case decoding(String) } + enum CodableKeys: String, CodingKey { case display, defaultValue, range, rangef, values, subOptions } + + public init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodableKeys.self) + + // All cases need display + guard let display = try? values.decode(CoreOptionValueDisplay.self, forKey: .display) else { + throw CodingError.decoding("Decoding Failed. No display key. \(dump(values))") + } + + // Bool + if let defaultValue = try? values.decode(Bool.self, forKey: .defaultValue) { + self = .bool(display, defaultValue: defaultValue) + return + } + + // Range + if let range = try? values.decode(CoreOptionRange.self, forKey: .range), let defaultValue = try? values.decode(Int.self, forKey: .defaultValue) { + self = .range(display, range: range, defaultValue: defaultValue) + return + } + + // Rangef + if let rangef = try? values.decode(CoreOptionRange.self, forKey: .rangef), let defaultValue = try? values.decode(Float.self, forKey: .defaultValue) { + self = .rangef(display, range: rangef, defaultValue: defaultValue) + return + } + + // multi + if let values = try? values.decode([CoreOptionMultiValue].self, forKey: .values) { + self = .multi(display, values: values) + return + } + + // string + if let defaultValue = try? values.decode(String.self, forKey: .defaultValue) { + self = .string(display, defaultValue: defaultValue) + return + } + + // group + if let subOptions = try? values.decode([CoreOption].self, forKey: CodableKeys.subOptions) { + self = .group(display, subOptions: subOptions) + return + } + + throw CodingError.decoding("Decoding Failed. \(dump(values))") + } + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodableKeys.self) + + switch self { + case let .bool(display, defaultValue): + try container.encode(display, forKey: .display) + try container.encode(defaultValue, forKey: .defaultValue) + case let .range(display, range, defaultValue): + try container.encode(display, forKey: .display) + try container.encode(range, forKey: .range) + try container.encode(defaultValue, forKey: .defaultValue) + case let .rangef(display, range, defaultValue): + try container.encode(display, forKey: .display) + try container.encode(range, forKey: .range) + try container.encode(defaultValue, forKey: .defaultValue) + case let .multi(display, values): + try container.encode(display, forKey: .display) + try container.encode(values, forKey: .values) + case let .enumeration(display, values, defaultValue): + try container.encode(display, forKey: .display) + try container.encode(values, forKey: .values) + try container.encode(defaultValue, forKey: .defaultValue) + case let .string(display, defaultValue): + try container.encode(display, forKey: .display) + try container.encode(defaultValue, forKey: .defaultValue) + case let .group(display, subOptions): + try container.encode(display, forKey: .display) + try container.encode(subOptions, forKey: .subOptions) + } + } +} + +public typealias OptionAvailable = (() -> (available: Bool, reasonNotAvailable: String?)) + +// public struct CoreOptionModel : COption { +// +// let key : String +// let title : String +// let description: String? +// +// let defaultValue : ValueType +// +// var value : ValueType { +// return UserDefaults.standard.value(forKey: key) as? ValueType ?? defaultValue +// } +// +// public init(key: String, title: String, description: String? = nil, defaultValue: ValueType) { +// self.key = key +// self.title = title +// self.description = description +// self.defaultValue = defaultValue +// } +// } + +// public protocol CoreOptionP { +// var defaultValue : ValueType {get} +// var title : String {get} +// var description : String {get} +// +// var currentValue : ValueType {get} +// } + +// public struct CoreOptionValue { +// let description : String +// let value : T +// } + +// public struct CoreOptionMultiple { +// let title : String +// let description : String +// let values : [CoreOptionMultiValue] +// let defaultValue : [CoreOptionMultiValue] +// } +// +// public struct CoreOption { +// typealias ValueType = T +// +// let defaultValue : T +// let title : String +// let description : String +// +// +//// var currentValue : T { +//// let +//// } +// } diff --git a/PVSupport/Sources/PVSupport/CoreOptions/Protocols/CoreOptional.swift b/PVSupport/Sources/PVSupport/CoreOptions/Protocols/CoreOptional.swift new file mode 100644 index 0000000000..bf6fb9aaa3 --- /dev/null +++ b/PVSupport/Sources/PVSupport/CoreOptions/Protocols/CoreOptional.swift @@ -0,0 +1,40 @@ +// +// CoreOptional.swift +// PVSupport +// +// Created by Joseph Mattiello on 1/22/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation + +public protocol CoreOptional where Self: PVEmulatorCore { + @nonobjc + static var options: [CoreOption] { get } + +// static func bool(forOption option: String) -> Bool +// static func int(forOption option: String) -> Int +// static func float(forOption option: String) -> Float +// static func string(forOption option: String) -> String? +} + +//public extension CoreOptional { +// static func bool(forOption option: String) -> Bool { +// return valueForOption(Bool.self, option) ?? false +// } +// +// static func int(forOption option: String) -> Int { +// let value = valueForOption(Int.self, option) +// return value ?? 0 +// } +// +// static func float(forOption option: String) -> Float { +// let value = valueForOption(Float.self, option) +// return value ?? 0 +// } +// +// static func string(forOption option: String) -> String? { +// let value = valueForOption(String.self, option) +// return value +// } +//} diff --git a/PVSupport/Sources/PVSupport/CoreOptions/Types/CoreOptionEnumValue.swift b/PVSupport/Sources/PVSupport/CoreOptions/Types/CoreOptionEnumValue.swift new file mode 100644 index 0000000000..800fbac8e3 --- /dev/null +++ b/PVSupport/Sources/PVSupport/CoreOptions/Types/CoreOptionEnumValue.swift @@ -0,0 +1,23 @@ +// +// CoreOptionEnumValue.swift +// PVSupport +// +// Created by Joseph Mattiello on 1/22/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation + +public struct CoreOptionEnumValue { + public let title: String + public let description: String? + public let value: Int + + public init(title: String, description: String? = nil, value: Int) { + self.title = title + self.description = description + self.value = value + } +} + +extension CoreOptionEnumValue: Codable, Equatable, Hashable {} diff --git a/PVSupport/Sources/PVSupport/CoreOptions/Types/CoreOptionMultiValue.swift b/PVSupport/Sources/PVSupport/CoreOptions/Types/CoreOptionMultiValue.swift new file mode 100644 index 0000000000..e6766a5b0b --- /dev/null +++ b/PVSupport/Sources/PVSupport/CoreOptions/Types/CoreOptionMultiValue.swift @@ -0,0 +1,45 @@ +// +// CoreOptionMultiValue.swift +// PVSupport +// +// Created by Joseph Mattiello on 1/22/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation + +public struct CoreOptionMultiValue { + public let title: String + public let description: String? + + public static func values(fromArray a: [[String]]) -> [CoreOptionMultiValue] { + return a.compactMap { + if $0.count == 1 { + return .init(title: $0[0], description: nil) + } else if $0.count >= 2 { + return .init(title: $0[0], description: $0[1]) + } else { + return nil + } + } + } + + public static func values(fromArray a: [String]) -> [CoreOptionMultiValue] { + return a.map { + .init(title: $0, description: nil) + } + } +} + +extension CoreOptionMultiValue: Codable, Equatable, Hashable {} +extension CoreOptionMultiValue { + public init(title: String, description: String) { + self.title = title + self.description = description + } + + public init(_ title: String, _ description: String) { + self.title = title + self.description = description + } +} diff --git a/PVSupport/Sources/PVSupport/CoreOptions/Types/CoreOptionRange.swift b/PVSupport/Sources/PVSupport/CoreOptions/Types/CoreOptionRange.swift new file mode 100644 index 0000000000..a6b9b5ece7 --- /dev/null +++ b/PVSupport/Sources/PVSupport/CoreOptions/Types/CoreOptionRange.swift @@ -0,0 +1,37 @@ +// +// CoreOptionRange.swift +// PVSupport +// +// Created by Joseph Mattiello on 1/22/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation + +public struct CoreOptionRange { + public let defaultValue: T + public let min: T + public let max: T + + public init(defaultValue: T, min: T, max: T) { + self.defaultValue = defaultValue + self.min = min + self.max = max + } +} + +extension CoreOptionRange: Codable where T:Codable {} +extension CoreOptionRange: Equatable where T:Equatable {} +extension CoreOptionRange: Hashable where T:Hashable {} + +// public protocol Rangable { +// var defaultValue : Codable {get} +// var min : Codable {get} +// var max : Codable {get} +// } +// +// public struct CoreOptionRange : Rangable { +// public let defaultValue : T +// public let min : T +// public let max : T +// } diff --git a/PVSupport/Sources/PVSupport/CoreOptions/Types/CoreOptionValue.swift b/PVSupport/Sources/PVSupport/CoreOptions/Types/CoreOptionValue.swift new file mode 100644 index 0000000000..f726622ee8 --- /dev/null +++ b/PVSupport/Sources/PVSupport/CoreOptions/Types/CoreOptionValue.swift @@ -0,0 +1,108 @@ +// +// CoreOptionValue.swift +// PVSupport +// +// Created by Joseph Mattiello on 1/22/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation + +public enum CoreOptionValue { + case bool(Bool) + case string(String) + case int(Int) + case float(Float) + case notFound + + public var asBool: Bool { + switch self { + case .bool(let value): return value + case .string(let value): return Bool(value) ?? false + case .int(let value): return value >= 1 ? true : false + case .float(let value): return value >= 1 ? true : false + case .notFound: return false + } + } + + public var asString: String { + switch self { + case .bool(let value): return value ? "true" : "false" + case .string(let value): return value + case .int(let value): return "\(value)" + case .float(let value): return "\(value)" + case .notFound: return "not found" + } + } + + public var asInt: Int? { + switch self { + case .bool(let value): return value ? 1 : 0 + case .string(let value): return Int(value) + case .int(let value): return value + case .float(let value): return Int(value) + case .notFound: return nil + } + } + + public var asFloat: Float? { + switch self { + case .bool(let value): return value ? 1 : 0 + case .string(let value): return Float(value) + case .int(let value): return Float(value) + case .float(let value): return value + case .notFound: return nil + } + } +} + +extension CoreOptionValue: Codable { + enum CodableKeys: String, CodingKey { case value, type } + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodableKeys.self) + switch self { + case let .bool(value): + try container.encode(value, forKey: .value) + try container.encode("bool", forKey: .type) + case let .string(value): + try container.encode(value, forKey: .value) + try container.encode("string", forKey: .type) + case let .int(value): + try container.encode(value, forKey: .value) + try container.encode("int", forKey: .type) + case let .float(value): + try container.encode(value, forKey: .value) + try container.encode("float", forKey: .type) + case .notFound: + break + } + } + + public init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodableKeys.self) + let type = try values.decode(String.self, forKey: .type) + + switch type { + case "bool": + let value = try values.decode(Bool.self, forKey: .value) + self = .bool(value) + return + case "string": + let value = try values.decode(String.self, forKey: .value) + self = .string(value) + return + case "float": + let value = try values.decode(Float.self, forKey: .value) + self = .float(value) + return + case "int": + let value = try values.decode(Int.self, forKey: .value) + self = .int(value) + return + default: + self = .notFound + return + } + } +} diff --git a/PVSupport/Sources/PVSupport/CoreOptions/Types/OptionDependency.swift b/PVSupport/Sources/PVSupport/CoreOptions/Types/OptionDependency.swift new file mode 100644 index 0000000000..c29e1c2253 --- /dev/null +++ b/PVSupport/Sources/PVSupport/CoreOptions/Types/OptionDependency.swift @@ -0,0 +1,15 @@ +// +// OptionDependency.swift +// PVSupport +// +// Created by Joseph Mattiello on 1/22/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation + +public struct OptionDependency { + let option: OptionType + let mustBe: OptionType.Type? + let mustNotBe: OptionType.Type? +} diff --git a/PVSupport/EmulatorCore/Features/ArchiveSupport.swift b/PVSupport/Sources/PVSupport/EmulatorCore/Features/ArchiveSupport.swift similarity index 100% rename from PVSupport/EmulatorCore/Features/ArchiveSupport.swift rename to PVSupport/Sources/PVSupport/EmulatorCore/Features/ArchiveSupport.swift diff --git a/PVSupport/EmulatorCore/Features/Controls.swift b/PVSupport/Sources/PVSupport/EmulatorCore/Features/Controls.swift similarity index 93% rename from PVSupport/EmulatorCore/Features/Controls.swift rename to PVSupport/Sources/PVSupport/EmulatorCore/Features/Controls.swift index 760147acde..19d5ca56b7 100644 --- a/PVSupport/EmulatorCore/Features/Controls.swift +++ b/PVSupport/Sources/PVSupport/EmulatorCore/Features/Controls.swift @@ -11,6 +11,8 @@ import Foundation @objc public protocol ResponderClient: AnyObject {} @objc public protocol ButtonResponder { + var valueChangedHandler: GCExtendedGamepadValueChangedHandler? { get } + func didPush(_ button: Int, forPlayer player: Int) func didRelease(_ button: Int, forPlayer player: Int) } @@ -19,6 +21,58 @@ import Foundation func didMoveJoystick(_ button: Int, withValue value: CGFloat, forPlayer player: Int) } +@objc public protocol KeyboardResponder { + var gameSupportsKeyboard: Bool { get } + var requiresKeyboard: Bool { get } + + var keyChangedHandler: GCKeyboardValueChangedHandler? { get } + + @available(iOS 14.0, tvOS 14.0, *) + func keyDown(_ key: GCKeyCode) +// func keyDown(_ key: GCKeyCode, chararacters: String, charactersIgnoringModifiers: String) + + @available(iOS 14.0, tvOS 14.0, *) + func keyUp(_ key: GCKeyCode) +// func keyUp(_ key: GCKeyCode, chararacters: String, charactersIgnoringModifiers: String) +} + +@objc public enum MouseButton: Int { + case left + case right + case middle + case auxiliary +} + +@objc public protocol MouseResponder { + var gameSupportsMouse: Bool { get } + var requiresMouse: Bool { get } + + @available(iOS 14.0, tvOS 14.0, *) + func didScroll(_ cursor: GCDeviceCursor) + + var mouseMovedHandler: GCMouseMoved? { get } + func mouseMoved(atPoint point: CGPoint) + + func leftMouseDown(atPoint point: CGPoint) + func leftMouseUp() + + func rightMouseDown(atPoint point: CGPoint) + func rightMouseUp() +} + +@objc public enum Touchpad: Int { + case primary + case secondary +} + +@objc public protocol TouchPadResponder { + var touchedChangedHandler: GCControllerButtonTouchedChangedHandler? { get } + var pressedChangedHandler: GCControllerButtonValueChangedHandler? { get } + var valueChangedHandler: GCControllerButtonValueChangedHandler? { get } + + var gameSupportsTouchpad: Bool { get } +} + @objc extension PVEmulatorCore: ResponderClient {} // MARK: - Sega 32X @@ -449,7 +503,7 @@ import Foundation case count } -@objc public protocol PVA8SystemResponderClient: ResponderClient, ButtonResponder { +@objc public protocol PVA8SystemResponderClient: ResponderClient, ButtonResponder, KeyboardResponder, MouseResponder { func mouseMoved(at point: CGPoint) func leftMouseDown(at point: CGPoint) func leftMouseUp() @@ -828,7 +882,6 @@ import Foundation func didRelease(_ button: PVSaturnButton, forPlayer player: Int) } - // MARK: - Magnavox Odyssey2/Videopac+ @objc public enum PVOdyssey2Button: Int { diff --git a/PVSupport/EmulatorCore/Features/CoreActions.swift b/PVSupport/Sources/PVSupport/EmulatorCore/Features/CoreActions.swift similarity index 100% rename from PVSupport/EmulatorCore/Features/CoreActions.swift rename to PVSupport/Sources/PVSupport/EmulatorCore/Features/CoreActions.swift diff --git a/PVSupport/EmulatorCore/Features/DiscSwappable.swift b/PVSupport/Sources/PVSupport/EmulatorCore/Features/DiscSwappable.swift similarity index 100% rename from PVSupport/EmulatorCore/Features/DiscSwappable.swift rename to PVSupport/Sources/PVSupport/EmulatorCore/Features/DiscSwappable.swift diff --git a/PVSupport/EmulatorCore/Features/GameWithCheat.swift b/PVSupport/Sources/PVSupport/EmulatorCore/Features/GameWithCheat.swift similarity index 85% rename from PVSupport/EmulatorCore/Features/GameWithCheat.swift rename to PVSupport/Sources/PVSupport/EmulatorCore/Features/GameWithCheat.swift index 790192489b..601e0efe33 100644 --- a/PVSupport/EmulatorCore/Features/GameWithCheat.swift +++ b/PVSupport/Sources/PVSupport/EmulatorCore/Features/GameWithCheat.swift @@ -4,6 +4,7 @@ // import Foundation @objc public protocol GameWithCheat { + @objc(setCheatWithCode:type:enabled:) func setCheat( code: String, type: String, diff --git a/PVSupport/EmulatorCore/Features/SaveStateSupport.swift b/PVSupport/Sources/PVSupport/EmulatorCore/Features/SaveStateSupport.swift similarity index 100% rename from PVSupport/EmulatorCore/Features/SaveStateSupport.swift rename to PVSupport/Sources/PVSupport/EmulatorCore/Features/SaveStateSupport.swift diff --git a/PVSupport/EmulatorCore/PVEmulatorCore.h b/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.h similarity index 88% rename from PVSupport/EmulatorCore/PVEmulatorCore.h rename to PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.h index 9125c21cd0..63809a2b2b 100644 --- a/PVSupport/EmulatorCore/PVEmulatorCore.h +++ b/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.h @@ -16,6 +16,12 @@ #endif #endif +#if SWIFT_PACKAGE +#import +#else +#import +#endif + #pragma mark - typedef void (^SaveStateCompletion)(BOOL, NSError * _Nullable ); @@ -39,39 +45,6 @@ typedef NS_ENUM(NSInteger, PVEmulatorCoreErrorCode) { PVEmulatorCoreErrorCodeMissingM3U = -7, }; -typedef struct OEIntPoint { - int x; - int y; -} OEIntPoint; - -typedef struct OEIntSize { - int width; - int height; -} OEIntSize; - -typedef struct OEIntRect { - OEIntPoint origin; - OEIntSize size; -} OEIntRect; - -static inline OEIntSize OEIntSizeMake(int width, int height) -{ - return (OEIntSize){ width, height }; -} -static inline BOOL OEIntSizeEqualToSize(OEIntSize size1, OEIntSize size2) -{ - return size1.width == size2.width && size1.height == size2.height; -} -static inline BOOL OEIntSizeIsEmpty(OEIntSize size) -{ - return size.width == 0 || size.height == 0; -} - -static inline OEIntRect OEIntRectMake(int x, int y, int width, int height) -{ - return (OEIntRect){ (OEIntPoint){ x, y }, (OEIntSize){ width, height } }; -} - @protocol PVAudioDelegate @required - (void)audioSampleRateDidChange; @@ -189,6 +162,4 @@ typedef NS_ENUM(NSInteger, GLESVersion) { completionHandler:(nonnull SaveStateCompletion)block; - (void)loadStateFromFileAtPath:(NSString *_Nonnull )fileName completionHandler:(nonnull SaveStateCompletion)block; - -- (void)rumble; @end diff --git a/PVSupport/EmulatorCore/PVEmulatorCore.m b/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.m similarity index 94% rename from PVSupport/EmulatorCore/PVEmulatorCore.m rename to PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.m index ec361b66fa..758d5b3365 100644 --- a/PVSupport/EmulatorCore/PVEmulatorCore.m +++ b/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.m @@ -45,6 +45,7 @@ @interface PVEmulatorCore() #endif @end +//PV_OBJC_DIRECT_MEMBERS @implementation PVEmulatorCore + (void)initialize { @@ -115,7 +116,11 @@ - (void)startEmulation { self.isRunning = YES; shouldStop = NO; self.gameSpeed = GameSpeedNormal; - [NSThread detachNewThreadSelector:@selector(emulationLoopThread) toTarget:self withObject:nil]; + MAKEWEAK(self); + [NSThread detachNewThreadWithBlock:^{ + MAKESTRONG(self); + [strongself emulationLoopThread]; + }]; } } } @@ -147,7 +152,7 @@ -(void)stopHaptic { if (!NSThread.isMainThread) { MAKEWEAK(self); dispatch_async(dispatch_get_main_queue(), ^{ - MAKESTRONG(self); + MAKESTRONG_RETURN_IF_NIL(self); [strongself stopHaptic]; }); return; @@ -217,7 +222,7 @@ - (void) emulationLoopThread { MakeCurrentThreadRealTime(); //Emulation loop - while (!shouldStop) { + while (UNLIKELY(!shouldStop)) { [self updateControllers]; @@ -317,33 +322,6 @@ - (void)setFramerateMultiplier:(CGFloat)framerateMultiplier { gameInterval = 1.0 / ([self frameInterval] * framerateMultiplier); } -- (void)rumble { -#if TARGET_OS_IOS - if (!self.supportsRumble) { - WLOG(@"Rumble called on core that doesn't support it"); - return; - } - - if (self.controller1 && self.controller1.isAttachedToDevice == NO) { - // Don't rumble if using a controller and it's not an attached type. - return; - } - - BOOL deviceHasHaptic = [[UIDevice currentDevice] valueForKey:@"_feedbackSupportLevel"] > 0; - if (deviceHasHaptic) { - dispatch_async(dispatch_get_main_queue(), ^{ - [self.rumbleGenerator impactOccurred]; - }); - } else { - AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); - } -#endif -} - -- (BOOL)supportsRumble { - return NO; -} - -(void)setController1:(GCController *)controller1 { if(![controller1 isEqual:_controller1]) { _controller1 = controller1; diff --git a/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.swift b/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.swift new file mode 100644 index 0000000000..d6f337d659 --- /dev/null +++ b/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.swift @@ -0,0 +1,103 @@ +// + // PVEmulatorCore.swift + // PVSupport + // + // Created by Joseph Mattiello on 3/8/18. + // Copyright © 2018 James Addyman. All rights reserved. + // + +import Foundation + +#if os(iOS) && !targetEnvironment(macCatalyst) +@_silgen_name("AudioServicesStopSystemSound") +func AudioServicesStopSystemSound(_ soundID: SystemSoundID) + + // vibrationPattern parameter must be NSDictionary to prevent crash when bridging from Swift.Dictionary. +@_silgen_name("AudioServicesPlaySystemSoundWithVibration") +func AudioServicesPlaySystemSoundWithVibration(_ soundID: SystemSoundID, _ idk: Any?, _ vibrationPattern: NSDictionary) +#endif + +@objc +public extension PVEmulatorCore { + var supportsRumble: Bool { false } + + func rumble() { + rumble(player: 0) + } + + func rumble(player: Int) { + guard self.supportsRumble else { + WLOG("Rumble called on core that doesn't support it") + return + } + + var controller: GCController? + switch player { + case 1: + if let controller1 = self.controller1, controller1.isAttachedToDevice { + #if os(iOS) && !targetEnvironment(macCatalyst) + rumblePhone() + #else + VLOG("rumblePhone*(") + #endif + } else { + controller = self.controller1 + } + case 2: + controller = self.controller2 + case 3: + controller = self.controller3 + case 4: + controller = self.controller4 + default: + WLOG("No player \(player)") + return + } + + } + #if os(iOS) && !targetEnvironment(macCatalyst) + func rumblePhone() { + + let deviceHasHaptic = (UIDevice.current.value(forKey: "_feedbackSupportLevel") as? Int ?? 0) > 0 + + DispatchQueue.main.async { + if deviceHasHaptic { + AudioServicesStopSystemSound(kSystemSoundID_Vibrate) + + var vibrationLength = 30 + + if UIDevice.current.modelGeneration.hasPrefix("iPhone6") { + // iPhone 5S has a weaker vibration motor, so we vibrate for 10ms longer to compensate + vibrationLength = 40 + } + + // Must use NSArray/NSDictionary to prevent crash. + let pattern: [Any] = [false, 0, true, vibrationLength] + let dictionary: [String: Any] = ["VibePattern": pattern, "Intensity": 1] + + AudioServicesPlaySystemSoundWithVibration(kSystemSoundID_Vibrate, nil, dictionary as NSDictionary) + // self?.rumbleGenerator.impactOccurred() + } else { + AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) + } + } + } + #endif +} + +private extension UIDevice { + var modelGeneration: String { + var sysinfo = utsname() + uname(&sysinfo) + + var modelGeneration: String! + + withUnsafePointer(to: &sysinfo.machine) { pointer in + pointer.withMemoryRebound(to: UInt8.self, capacity: Int(Mirror(reflecting: pointer.pointee).children.count), { (pointer) in + modelGeneration = String(cString: pointer) + }) + } + + return modelGeneration + } +} diff --git a/PVSupport/Logging/CocoaLumberExtensions.swift b/PVSupport/Sources/PVSupport/Logging/CocoaLumberExtensions.swift similarity index 100% rename from PVSupport/Logging/CocoaLumberExtensions.swift rename to PVSupport/Sources/PVSupport/Logging/CocoaLumberExtensions.swift diff --git a/PVSupport/Logging/CocoaLumberjack+NSLogger.swift b/PVSupport/Sources/PVSupport/Logging/CocoaLumberjack+NSLogger.swift similarity index 98% rename from PVSupport/Logging/CocoaLumberjack+NSLogger.swift rename to PVSupport/Sources/PVSupport/Logging/CocoaLumberjack+NSLogger.swift index e281e97cfb..00f0f8c309 100644 --- a/PVSupport/Logging/CocoaLumberjack+NSLogger.swift +++ b/PVSupport/Sources/PVSupport/Logging/CocoaLumberjack+NSLogger.swift @@ -6,13 +6,13 @@ // Copyright © 2021 Provenance Emu. All rights reserved. // -#if canImport(NSLogger) +//#if canImport(NSLogger) import Foundation import NSLogger @_exported import CocoaLumberjackSwift internal class JMLumberjackNSLogger: DDAbstractLogger { - var logger: PVSupport.Logger { return PVSupport.Logger.shared } + var logger: NSLogger.Logger { return NSLogger.Logger.shared } var tags = [Int: String]() public func set(tag: String, for context: Int) { @@ -223,4 +223,4 @@ extension JMLumberjackNSLogger { return debugDescription } } -#endif +//#endif diff --git a/PVSupport/Logging/CocoaLumberjack+swift-log.swift b/PVSupport/Sources/PVSupport/Logging/CocoaLumberjack+swift-log.swift similarity index 100% rename from PVSupport/Logging/CocoaLumberjack+swift-log.swift rename to PVSupport/Sources/PVSupport/Logging/CocoaLumberjack+swift-log.swift diff --git a/PVSupport/Logging/NSLogger/LoggerClient.h b/PVSupport/Sources/PVSupport/Logging/NSLogger/LoggerClient.h similarity index 100% rename from PVSupport/Logging/NSLogger/LoggerClient.h rename to PVSupport/Sources/PVSupport/Logging/NSLogger/LoggerClient.h diff --git a/PVSupport/Logging/NSLogger/NSLogger.h b/PVSupport/Sources/PVSupport/Logging/NSLogger/NSLogger.h similarity index 100% rename from PVSupport/Logging/NSLogger/NSLogger.h rename to PVSupport/Sources/PVSupport/Logging/NSLogger/NSLogger.h diff --git a/PVSupport/Logging/NSLogger/NSLoggerSwift.h b/PVSupport/Sources/PVSupport/Logging/NSLogger/NSLoggerSwift.h similarity index 100% rename from PVSupport/Logging/NSLogger/NSLoggerSwift.h rename to PVSupport/Sources/PVSupport/Logging/NSLogger/NSLoggerSwift.h diff --git a/PVSupport/Logging/PVCocoaLumberJackLogging.swift b/PVSupport/Sources/PVSupport/Logging/PVCocoaLumberJackLogging.swift similarity index 89% rename from PVSupport/Logging/PVCocoaLumberJackLogging.swift rename to PVSupport/Sources/PVSupport/Logging/PVCocoaLumberJackLogging.swift index 7d381418a9..1b2e34dabf 100644 --- a/PVSupport/Logging/PVCocoaLumberJackLogging.swift +++ b/PVSupport/Sources/PVSupport/Logging/PVCocoaLumberJackLogging.swift @@ -20,11 +20,11 @@ public class PVCocoaLumberJackLogging: NSObject, PVLoggingEntity { return fileLogger }() - #if canImport(NSLogger) +// #if canImport(NSLogger) private var nsLogger: JMLumberjackNSLogger = { return JMLumberjackNSLogger() }() - #endif +// #endif func enableExtraLogging() { } @@ -42,9 +42,13 @@ public class PVCocoaLumberJackLogging: NSObject, PVLoggingEntity { #endif DDLog.add(fileLogger, with: .warning) -#if canImport(NSLogger) +//#if canImport(NSLogger) + #if DEBUG + DDLog.add(nsLogger, with: .verbose) + #else DDLog.add(nsLogger, with: .debug) -#endif + #endif +//#endif } public func logFilePaths() -> [String]? { diff --git a/PVSupport/Logging/PVLogEntry.h b/PVSupport/Sources/PVSupport/Logging/PVLogEntry.h similarity index 100% rename from PVSupport/Logging/PVLogEntry.h rename to PVSupport/Sources/PVSupport/Logging/PVLogEntry.h diff --git a/PVSupport/Logging/PVLogEntry.m b/PVSupport/Sources/PVSupport/Logging/PVLogEntry.m similarity index 100% rename from PVSupport/Logging/PVLogEntry.m rename to PVSupport/Sources/PVSupport/Logging/PVLogEntry.m diff --git a/PVSupport/Logging/PVLogging.h b/PVSupport/Sources/PVSupport/Logging/PVLogging.h similarity index 99% rename from PVSupport/Logging/PVLogging.h rename to PVSupport/Sources/PVSupport/Logging/PVLogging.h index 4b4bb2ecfc..4ff8832a66 100644 --- a/PVSupport/Logging/PVLogging.h +++ b/PVSupport/Sources/PVSupport/Logging/PVLogging.h @@ -68,7 +68,7 @@ #define LOGGING_LEVEL_FILE 1 #endif -#define stackSize 4096 +#define LOGGING_STACK_SIZE 4096 // Set this switch to set whether or not to include class, method and line information in the log entries. #ifndef LOGGING_INCLUDE_CODE_LOCATION diff --git a/PVSupport/Logging/PVLogging.m b/PVSupport/Sources/PVSupport/Logging/PVLogging.m similarity index 99% rename from PVSupport/Logging/PVLogging.m rename to PVSupport/Sources/PVSupport/Logging/PVLogging.m index 4bf6f37ec0..b165c66ff7 100644 --- a/PVSupport/Logging/PVLogging.m +++ b/PVSupport/Sources/PVSupport/Logging/PVLogging.m @@ -9,7 +9,13 @@ #import "PVLogging.h" #import #import "PVLogEntry.h" + +#if SWIFT_PACKAGE +@import Foundation; +#else #import +#endif + //#import "NSData+HexEnc.h" //#import "NSData+Base64.h" diff --git a/PVSupport/Logging/PVProvenanceLogging.h b/PVSupport/Sources/PVSupport/Logging/PVProvenanceLogging.h similarity index 95% rename from PVSupport/Logging/PVProvenanceLogging.h rename to PVSupport/Sources/PVSupport/Logging/PVProvenanceLogging.h index ce2473fffe..365da987b2 100644 --- a/PVSupport/Logging/PVProvenanceLogging.h +++ b/PVSupport/Sources/PVSupport/Logging/PVProvenanceLogging.h @@ -6,7 +6,11 @@ // Copyright (c) 2014 Joe Mattiello. All rights reserved. // +#if SWIFT_PACKAGE +#import +#else #import +#endif #define PVLogEntryMake(loglevel, format, ...) \ { \ diff --git a/PVSupport/Logging/PVProvenanceLogging.m b/PVSupport/Sources/PVSupport/Logging/PVProvenanceLogging.m similarity index 99% rename from PVSupport/Logging/PVProvenanceLogging.m rename to PVSupport/Sources/PVSupport/Logging/PVProvenanceLogging.m index 67cb8cb408..9e0d85c0c6 100644 --- a/PVSupport/Logging/PVProvenanceLogging.m +++ b/PVSupport/Sources/PVSupport/Logging/PVProvenanceLogging.m @@ -141,7 +141,7 @@ - (void)addHistoryEvent:(NSObject*) event { // check if the FIFO stack is over quota // save the history event - if (_history.count >= stackSize) { + if (_history.count >= LOGGING_STACK_SIZE) { [_history removeLastObject]; } diff --git a/PVSupport/Logging/Protocols/DDLogLevel+CustomStringConvertable.swift b/PVSupport/Sources/PVSupport/Logging/Protocols/DDLogLevel+CustomStringConvertable.swift similarity index 88% rename from PVSupport/Logging/Protocols/DDLogLevel+CustomStringConvertable.swift rename to PVSupport/Sources/PVSupport/Logging/Protocols/DDLogLevel+CustomStringConvertable.swift index a84808b822..137ee9ec84 100644 --- a/PVSupport/Logging/Protocols/DDLogLevel+CustomStringConvertable.swift +++ b/PVSupport/Sources/PVSupport/Logging/Protocols/DDLogLevel+CustomStringConvertable.swift @@ -9,11 +9,11 @@ import Foundation @_exported import CocoaLumberjackSwift -#if canImport(NSLogger) +//#if canImport(NSLogger) import NSLogger extension DDLogLevel { - var nsloggerLevel: PVSupport.Logger.Level { + var nsloggerLevel: NSLogger.Logger.Level { switch self { case .error: return .error case .warning: return .warning @@ -26,11 +26,11 @@ extension DDLogLevel { } extension DDLogFlag { - var nsloggerLevel: PVSupport.Logger.Level { + var nsloggerLevel: NSLogger.Logger.Level { return self.toLogLevel().nsloggerLevel } } -#endif +//#endif extension DDLogLevel: CustomStringConvertible { public var description: String { diff --git a/PVSupport/PVSupport/NSFileManager+OEHashingAdditions.h b/PVSupport/Sources/PVSupport/NSExtensions/NSFileManager+OEHashingAdditions.h similarity index 100% rename from PVSupport/PVSupport/NSFileManager+OEHashingAdditions.h rename to PVSupport/Sources/PVSupport/NSExtensions/NSFileManager+OEHashingAdditions.h diff --git a/PVSupport/PVSupport/NSFileManager+OEHashingAdditions.m b/PVSupport/Sources/PVSupport/NSExtensions/NSFileManager+OEHashingAdditions.m similarity index 99% rename from PVSupport/PVSupport/NSFileManager+OEHashingAdditions.m rename to PVSupport/Sources/PVSupport/NSExtensions/NSFileManager+OEHashingAdditions.m index 5ef90e4be3..7b79473dfc 100644 --- a/PVSupport/PVSupport/NSFileManager+OEHashingAdditions.m +++ b/PVSupport/Sources/PVSupport/NSExtensions/NSFileManager+OEHashingAdditions.m @@ -26,7 +26,7 @@ #import "NSFileManager+OEHashingAdditions.h" #import - +#import "DebugUtils.h" #define HASH_READ_CHUNK_SIZE (1024 * 32) @implementation NSFileManager (OEHashingAdditions) @@ -63,7 +63,7 @@ - (BOOL)hashFileAtURL:(NSURL*)url headerSize:(int)headerSize md5:(NSString**)out if(data == nil || length < HASH_READ_CHUNK_SIZE) break; } - } while(YES); + } while(LIKELY(YES)); [handle closeFile]; diff --git a/PVSupport/PVSupport/NSObject+PVAbstractAdditions.h b/PVSupport/Sources/PVSupport/NSExtensions/NSObject+PVAbstractAdditions.h similarity index 100% rename from PVSupport/PVSupport/NSObject+PVAbstractAdditions.h rename to PVSupport/Sources/PVSupport/NSExtensions/NSObject+PVAbstractAdditions.h diff --git a/PVSupport/PVSupport/NSObject+PVAbstractAdditions.m b/PVSupport/Sources/PVSupport/NSExtensions/NSObject+PVAbstractAdditions.m similarity index 100% rename from PVSupport/PVSupport/NSObject+PVAbstractAdditions.m rename to PVSupport/Sources/PVSupport/NSExtensions/NSObject+PVAbstractAdditions.m diff --git a/PVSupport/UIDeviceExtension.swift b/PVSupport/Sources/PVSupport/NSExtensions/UIDeviceExtension.swift similarity index 100% rename from PVSupport/UIDeviceExtension.swift rename to PVSupport/Sources/PVSupport/NSExtensions/UIDeviceExtension.swift diff --git a/PVSupport/Sources/PVSupport/Performance/Performance.swift b/PVSupport/Sources/PVSupport/Performance/Performance.swift new file mode 100644 index 0000000000..7ac3b3a183 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Performance/Performance.swift @@ -0,0 +1,461 @@ +// +// Copyright © 2017 Gavrilov Daniil +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import QuartzCore + +import UIKit + +/// Memory usage tuple. Contains used and total memory in bytes. +public typealias MemoryUsage = (used: UInt64, total: UInt64) + +/// Performance report tuple. Contains CPU usage in percentages, FPS and memory usage. +public typealias PerformanceReport = (cpuUsage: Double, fps: Int, memoryUsage: MemoryUsage) + +/// Performance monitor delegate. Gets called on the main thread. +public protocol PerformanceMonitorDelegate: AnyObject { + /// Reports monitoring information to the receiver. + /// + /// - Parameters: + /// - performanceReport: Performance report tuple. Contains CPU usage in percentages, FPS and memory usage. + func performanceMonitor(didReport performanceReport: PerformanceReport) +} + +public protocol PerformanceViewConfigurator { + var options: PerformanceMonitor.DisplayOptions { get set } + var userInfo: PerformanceMonitor.UserInfo { get set } + var style: PerformanceMonitor.Style { get set } + var interactors: [UIGestureRecognizer]? { get set } +} + +public protocol StatusBarConfigurator { + var statusBarHidden: Bool { get set } + var statusBarStyle: UIStatusBarStyle { get set } +} + +// MARK: Class Definition + +/// Performance calculator. Uses CADisplayLink to count FPS. Also counts CPU and memory usage. +internal class PerformanceCalculator { + + // MARK: Structs + + private struct Constants { + static let accumulationTimeInSeconds = 1.0 + } + + // MARK: Internal Properties + + internal var onReport: ((_ performanceReport: PerformanceReport) -> ())? + + // MARK: Private Properties + + private var displayLink: CADisplayLink! + private let linkedFramesList = LinkedFramesList() + private var startTimestamp: TimeInterval? + private var accumulatedInformationIsEnough = false + + // MARK: Init Methods & Superclass Overriders + + required internal init() { + self.configureDisplayLink() + } +} + +// MARK: Public Methods + +internal extension PerformanceCalculator { + /// Starts performance monitoring. + func start() { + self.startTimestamp = Date().timeIntervalSince1970 + self.displayLink?.isPaused = false + } + + /// Pauses performance monitoring. + func pause() { + self.displayLink?.isPaused = true + self.startTimestamp = nil + self.accumulatedInformationIsEnough = false + } +} + +// MARK: Timer Actions + +private extension PerformanceCalculator { + @objc func displayLinkAction(displayLink: CADisplayLink) { + self.linkedFramesList.append(frameWithTimestamp: displayLink.timestamp) + self.takePerformanceEvidence() + } +} + +// MARK: Monitoring + +private extension PerformanceCalculator { + func takePerformanceEvidence() { + if self.accumulatedInformationIsEnough { + let cpuUsage = self.cpuUsage() + let fps = self.linkedFramesList.count + let memoryUsage = self.memoryUsage() + self.report(cpuUsage: cpuUsage, fps: fps, memoryUsage: memoryUsage) + } else if let start = self.startTimestamp, Date().timeIntervalSince1970 - start >= Constants.accumulationTimeInSeconds { + self.accumulatedInformationIsEnough = true + } + } + + func cpuUsage() -> Double { + var totalUsageOfCPU: Double = 0.0 + var threadsList: thread_act_array_t? + var threadsCount = mach_msg_type_number_t(0) + let threadsResult = withUnsafeMutablePointer(to: &threadsList) { + return $0.withMemoryRebound(to: thread_act_array_t?.self, capacity: 1) { + task_threads(mach_task_self_, $0, &threadsCount) + } + } + + if threadsResult == KERN_SUCCESS, let threadsList = threadsList { + for index in 0...stride)) + return totalUsageOfCPU + } + + func memoryUsage() -> MemoryUsage { + var taskInfo = task_vm_info_data_t() + var count = mach_msg_type_number_t(MemoryLayout.size) / 4 + let result: kern_return_t = withUnsafeMutablePointer(to: &taskInfo) { + $0.withMemoryRebound(to: integer_t.self, capacity: 1) { + task_info(mach_task_self_, task_flavor_t(TASK_VM_INFO), $0, &count) + } + } + + var used: UInt64 = 0 + if result == KERN_SUCCESS { + used = UInt64(taskInfo.phys_footprint) + } + + let total = ProcessInfo.processInfo.physicalMemory + return (used, total) + } +} + +// MARK: Configurations + +private extension PerformanceCalculator { + func configureDisplayLink() { + self.displayLink = CADisplayLink(target: self, selector: #selector(PerformanceCalculator.displayLinkAction(displayLink:))) + self.displayLink.isPaused = true + self.displayLink?.add(to: .current, forMode: .common) + } +} + +// MARK: Support Methods + +private extension PerformanceCalculator { + func report(cpuUsage: Double, fps: Int, memoryUsage: MemoryUsage) { + let performanceReport = (cpuUsage: cpuUsage, fps: fps, memoryUsage: memoryUsage) + self.onReport?(performanceReport) + } +} + +public final class PerformanceMonitor { + + // MARK: Enums + + public enum Style { + case dark + case light + case custom(backgroundColor: UIColor, borderColor: UIColor, borderWidth: CGFloat, cornerRadius: CGFloat, textColor: UIColor, font: UIFont) + } + + public enum UserInfo { + case none + case custom(string: String) + } + + private enum States { + case started + case paused + case pausedBySystem + } + + // MARK: Structs + + public struct DisplayOptions: OptionSet { + public let rawValue: Int + + /// CPU usage and FPS. + public static let performance = DisplayOptions(rawValue: 1 << 0) + + /// Memory usage. + public static let memory = DisplayOptions(rawValue: 1 << 1) + + /// Application version with build number. + public static let application = DisplayOptions(rawValue: 1 << 2) + + /// Device model. + public static let device = DisplayOptions(rawValue: 1 << 3) + + /// System name with version. + public static let system = DisplayOptions(rawValue: 1 << 4) + + /// Default dispaly options - CPU usage and FPS, application version with build number and system name with version. + public static let `default`: DisplayOptions = [.performance, .application, .system] + + /// All dispaly options. + public static let all: DisplayOptions = [.performance, .memory, .application, .device, .system] + + public init(rawValue: Int) { + self.rawValue = rawValue + } + } + + // MARK: Public Properties + + public weak var delegate: PerformanceMonitorDelegate? + +// public var performanceViewConfigurator: PerformanceViewConfigurator { +// get { +// return self.performanceView +// } +// set { } +// } + +// public var statusBarConfigurator: StatusBarConfigurator { +// get { +// guard let rootViewController = self.performanceView.rootViewController as? WindowViewController else { +// fatalError("Root view controller must be a kind of WindowViewController.") +// } +// return rootViewController +// } +// set { } +// } + + // MARK: Private Properties + + private static var sharedPerformanceMonitor: PerformanceMonitor! + +// private let performanceView = PerformanceView() + private let performanceCalculator = PerformanceCalculator() + private var state = States.paused + + // MARK: Init Methods & Superclass Overriders + + /// Initializes performance monitor with parameters. + /// + /// - Parameters: + /// - options: Display options. Allows to change the format of the displayed information. + /// - style: Style. Allows to change the appearance of the displayed information. + /// - delegate: Performance monitor output. + required public init(options: DisplayOptions = .default, style: Style = .dark, delegate: PerformanceMonitorDelegate? = nil) { +// self.performanceView.options = options +// self.performanceView.style = style + + self.performanceCalculator.onReport = { [weak self] (performanceReport) in + DispatchQueue.main.async { + self?.apply(performanceReport: performanceReport) + } + } + + self.delegate = delegate + self.subscribeToNotifications() + } + + /// Initializes performance monitor singleton with default properties. + /// + /// - Returns: Performance monitor singleton. + public class func shared() -> PerformanceMonitor { + if self.sharedPerformanceMonitor == nil { + self.sharedPerformanceMonitor = PerformanceMonitor() + } + return self.sharedPerformanceMonitor + } + + deinit { + NotificationCenter.default.removeObserver(self) + } +} + +// MARK: Public Methods +public extension PerformanceMonitor { +// func hide() { +// self.performanceView.hide() +// } +// +// func show() { +// self.performanceView.show() +// } + + func start() { + switch self.state { + case .started: + return + case .paused, .pausedBySystem: + self.state = .started + self.performanceCalculator.start() + } + } + + func pause() { + switch self.state { + case .paused: + return + case .started, .pausedBySystem: + self.state = .paused + self.performanceCalculator.pause() + } + } +} + +// MARK: Notifications & Observers +private extension PerformanceMonitor { + func applicationWillEnterForegroundNotification(notification: Notification) { + switch self.state { + case .started, .paused: + return + case .pausedBySystem: + self.state = .started + self.performanceCalculator.start() + } + } + + func applicationDidEnterBackgroundNotification(notification: Notification) { + switch self.state { + case .paused, .pausedBySystem: + return + case .started: + self.state = .pausedBySystem + self.performanceCalculator.pause() + } + } +} + +// MARK: Configurations +private extension PerformanceMonitor { + func subscribeToNotifications() { + NotificationCenter.default.addObserver(forName: UIApplication.willEnterForegroundNotification, object: nil, queue: .main) { [weak self] (notification) in + self?.applicationWillEnterForegroundNotification(notification: notification) + } + + NotificationCenter.default.addObserver(forName: UIApplication.didEnterBackgroundNotification, object: nil, queue: .main) { [weak self] (notification) in + self?.applicationDidEnterBackgroundNotification(notification: notification) + } + } +} + +// MARK: Support Methods +private extension PerformanceMonitor { + func apply(performanceReport: PerformanceReport) { +// self.performanceView.update(withPerformanceReport: performanceReport) + self.delegate?.performanceMonitor(didReport: performanceReport) + } +} + +// MARK: Class Definition +/// Linked list node. Represents frame timestamp. +internal class FrameNode { + + // MARK: Public Properties + + var next: FrameNode? + weak var previous: FrameNode? + + private(set) var timestamp: TimeInterval + + /// Initializes linked list node with parameters. + /// + /// - Parameter timeInterval: Frame timestamp. + public init(timestamp: TimeInterval) { + self.timestamp = timestamp + } +} + +// MARK: Class Definition +/// Linked list. Each node represents frame timestamp. +/// The only function is append, which will add a new frame and remove all frames older than a second from the last timestamp. +/// As a result, the number of items in the list will represent the number of frames for the last second. +internal class LinkedFramesList { + + // MARK: Private Properties + + private var head: FrameNode? + private var tail: FrameNode? + + // MARK: Public Properties + + private(set) var count = 0 +} + +// MARK: Public Methods +internal extension LinkedFramesList { + /// Appends new frame with parameters. + /// + /// - Parameter timestamp: New frame timestamp. + func append(frameWithTimestamp timestamp: TimeInterval) { + let newNode = FrameNode(timestamp: timestamp) + if let lastNode = self.tail { + newNode.previous = lastNode + lastNode.next = newNode + self.tail = newNode + } else { + self.head = newNode + self.tail = newNode + } + + self.count += 1 + self.removeFrameNodes(olderThanTimestampMoreThanSecond: timestamp) + } +} + +// MARK: Support Methods +private extension LinkedFramesList { + func removeFrameNodes(olderThanTimestampMoreThanSecond timestamp: TimeInterval) { + while let firstNode = self.head { + guard timestamp - firstNode.timestamp > 1.0 else { + break + } + + let nextNode = firstNode.next + nextNode?.previous = nil + firstNode.next = nil + self.head = nextNode + + self.count -= 1 + } + } +} diff --git a/PVSupport/Sources/PVSupport/Performance/PerformanceView.swift b/PVSupport/Sources/PVSupport/Performance/PerformanceView.swift new file mode 100644 index 0000000000..ec91b7a93e --- /dev/null +++ b/PVSupport/Sources/PVSupport/Performance/PerformanceView.swift @@ -0,0 +1,344 @@ +/// Performance view. Displays performance information above status bar. Appearance and output can be changed via properties. +internal class PerformanceView: UIWindow, PerformanceViewConfigurator { + + // MARK: Structs + + private struct Constants { + static let prefferedHeight: CGFloat = 20.0 + static let borderWidth: CGFloat = 1.0 + static let cornerRadius: CGFloat = 5.0 + static let pointSize: CGFloat = 8.0 + static let defaultStatusBarHeight: CGFloat = 20.0 + static let safeAreaInsetDifference: CGFloat = 11.0 + } + + // MARK: Public Properties + + /// Allows to change the format of the displayed information. + public var options = PerformanceMonitor.DisplayOptions.default { + didSet { + self.configureStaticInformation() + } + } + + public var userInfo = PerformanceMonitor.UserInfo.none { + didSet { + self.configureUserInformation() + } + } + + /// Allows to change the appearance of the displayed information. + public var style = PerformanceMonitor.Style.dark { + didSet { + self.configureView(withStyle: self.style) + } + } + + /// Allows to add gesture recognizers to the view. + public var interactors: [UIGestureRecognizer]? { + didSet { + self.configureView(withInteractors: self.interactors) + } + } + + // MARK: Private Properties + + private let monitoringTextLabel = MarginLabel() + private var staticInformation: String? + private var userInformation: String? + + // MARK: Init Methods & Superclass Overriders + + required internal init() { + super.init(frame: PerformanceView.windowFrame(withPrefferedHeight: Constants.prefferedHeight)) + if #available(iOS 13, *) { + self.windowScene = PerformanceView.keyWindowScene() + } + + self.configureWindow() + self.configureMonitoringTextLabel() + self.subscribeToNotifications() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + } + + override func layoutSubviews() { + super.layoutSubviews() + + self.layoutWindow() + } + + override func becomeKey() { + self.isHidden = true + + DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1)) { + self.showViewAboveStatusBarIfNeeded() + } + } + + override func point(inside point: CGPoint, with event: UIEvent?) -> Bool { + guard let interactors = self.interactors, interactors.count > 0 else { + return false + } + return super.point(inside: point, with: event) + } + + deinit { + NotificationCenter.default.removeObserver(self) + } +} + +// MARK: Public Methods +internal extension PerformanceView { + /// Hides monitoring view. + func hide() { + self.monitoringTextLabel.isHidden = true + } + + /// Shows monitoring view. + func show() { + self.monitoringTextLabel.isHidden = false + } + + /// Updates monitoring label with performance report. + /// + /// - Parameter report: Performance report. + func update(withPerformanceReport report: PerformanceReport) { + var monitoringTexts: [String] = [] + if self.options.contains(.performance) { + let performance = String(format: "CPU: %.1f%%, FPS: %d", report.cpuUsage, report.fps) + monitoringTexts.append(performance) + } + + if self.options.contains(.memory) { + let bytesInMegabyte = 1024.0 * 1024.0 + let usedMemory = Double(report.memoryUsage.used) / bytesInMegabyte + let totalMemory = Double(report.memoryUsage.total) / bytesInMegabyte + let memory = String(format: "%.1f of %.0f MB used", usedMemory, totalMemory) + monitoringTexts.append(memory) + } + + if let staticInformation = self.staticInformation { + monitoringTexts.append(staticInformation) + } + + if let userInformation = self.userInformation { + monitoringTexts.append(userInformation) + } + + self.monitoringTextLabel.text = (monitoringTexts.count > 0 ? monitoringTexts.joined(separator: "\n") : nil) + self.showViewAboveStatusBarIfNeeded() + self.layoutMonitoringLabel() + } +} + +// MARK: Notifications & Observers +private extension PerformanceView { + func applicationWillChangeStatusBarFrame(notification: Notification) { + self.layoutWindow() + } +} + +// MARK: Configurations +private extension PerformanceView { + func configureWindow() { + self.rootViewController = WindowViewController() + self.windowLevel = UIWindow.Level.statusBar + 1.0 + self.backgroundColor = .clear + self.clipsToBounds = true + self.isHidden = true + } + + func configureMonitoringTextLabel() { + self.monitoringTextLabel.textAlignment = NSTextAlignment.center + self.monitoringTextLabel.numberOfLines = 0 + self.monitoringTextLabel.clipsToBounds = true + self.addSubview(self.monitoringTextLabel) + } + + func configureStaticInformation() { + var staticInformations: [String] = [] + if self.options.contains(.application) { + let applicationVersion = self.applicationVersion() + staticInformations.append(applicationVersion) + } + if self.options.contains(.device) { + let deviceModel = self.deviceModel() + staticInformations.append(deviceModel) + } + if self.options.contains(.system) { + let systemVersion = self.systemVersion() + staticInformations.append(systemVersion) + } + + self.staticInformation = (staticInformations.count > 0 ? staticInformations.joined(separator: ", ") : nil) + } + + func configureUserInformation() { + var staticInformation: String? + switch self.userInfo { + case .none: + break + case .custom(let string): + staticInformation = string + } + + self.userInformation = staticInformation + } + + func subscribeToNotifications() { + NotificationCenter.default.addObserver(forName: UIApplication.willChangeStatusBarFrameNotification, object: nil, queue: .main) { [weak self] (notification) in + self?.applicationWillChangeStatusBarFrame(notification: notification) + } + } + + func configureView(withStyle style: PerformanceMonitor.Style) { + switch style { + case .dark: + self.monitoringTextLabel.backgroundColor = .black + self.monitoringTextLabel.layer.borderColor = UIColor.white.cgColor + self.monitoringTextLabel.layer.borderWidth = Constants.borderWidth + self.monitoringTextLabel.layer.cornerRadius = Constants.cornerRadius + self.monitoringTextLabel.textColor = .white + self.monitoringTextLabel.font = UIFont.systemFont(ofSize: Constants.pointSize) + case .light: + self.monitoringTextLabel.backgroundColor = .white + self.monitoringTextLabel.layer.borderColor = UIColor.black.cgColor + self.monitoringTextLabel.layer.borderWidth = Constants.borderWidth + self.monitoringTextLabel.layer.cornerRadius = Constants.cornerRadius + self.monitoringTextLabel.textColor = .black + self.monitoringTextLabel.font = UIFont.systemFont(ofSize: Constants.pointSize) + case .custom(let backgroundColor, let borderColor, let borderWidth, let cornerRadius, let textColor, let font): + self.monitoringTextLabel.backgroundColor = backgroundColor + self.monitoringTextLabel.layer.borderColor = borderColor.cgColor + self.monitoringTextLabel.layer.borderWidth = borderWidth + self.monitoringTextLabel.layer.cornerRadius = cornerRadius + self.monitoringTextLabel.textColor = textColor + self.monitoringTextLabel.font = font + } + } + + func configureView(withInteractors interactors: [UIGestureRecognizer]?) { + if let recognizers = self.gestureRecognizers { + for recognizer in recognizers { + self.removeGestureRecognizer(recognizer) + } + } + + if let recognizers = interactors { + for recognizer in recognizers { + self.addGestureRecognizer(recognizer) + } + } + } +} + +// MARK: Layout View +private extension PerformanceView { + func layoutWindow() { + self.frame = PerformanceView.windowFrame(withPrefferedHeight: self.monitoringTextLabel.bounds.height) + self.layoutMonitoringLabel() + } + + func layoutMonitoringLabel() { + let windowWidth = self.bounds.width + let windowHeight = self.bounds.height + let labelSize = self.monitoringTextLabel.sizeThatFits(CGSize(width: windowWidth, height: CGFloat.greatestFiniteMagnitude)) + + if windowHeight != labelSize.height { + self.frame = PerformanceView.windowFrame(withPrefferedHeight: self.monitoringTextLabel.bounds.height) + } + + self.monitoringTextLabel.frame = CGRect(x: (windowWidth - labelSize.width) / 2.0, y: (windowHeight - labelSize.height) / 2.0, width: labelSize.width, height: labelSize.height) + } +} + +// MARK: Support Methods +private extension PerformanceView { + func showViewAboveStatusBarIfNeeded() { + guard UIApplication.shared.applicationState == UIApplication.State.active, self.canBeVisible(), self.isHidden else { + return + } + self.isHidden = false + } + + func applicationVersion() -> String { + var applicationVersion = "" + var applicationBuildNumber = "" + if let infoDictionary = Bundle.main.infoDictionary { + if let versionNumber = infoDictionary["CFBundleShortVersionString"] as? String { + applicationVersion = versionNumber + } + if let buildNumber = infoDictionary["CFBundleVersion"] as? String { + applicationBuildNumber = buildNumber + } + } + return "app v\(applicationVersion) (\(applicationBuildNumber))" + } + + func deviceModel() -> String { + var systemInfo = utsname() + uname(&systemInfo) + let machineMirror = Mirror(reflecting: systemInfo.machine) + let model = machineMirror.children.reduce("") { identifier, element in + guard let value = element.value as? Int8, value != 0 else { + return identifier + } + return identifier + String(UnicodeScalar(UInt8(value))) + } + return model + } + + func systemVersion() -> String { + let systemName = UIDevice.current.systemName + let systemVersion = UIDevice.current.systemVersion + return "\(systemName) v\(systemVersion)" + } + + func canBeVisible() -> Bool { + if let window = PerformanceView.keyWindow(), window.isKeyWindow, !window.isHidden { + return true + } + return false + } +} + +// MARK: Class Methods +private extension PerformanceView { + class func windowFrame(withPrefferedHeight height: CGFloat) -> CGRect { + guard let window = PerformanceView.keyWindow() else { + return .zero + } + + var topInset: CGFloat = 0.0 + if #available(iOS 11.0, *), let safeAreaTop = window.rootViewController?.view.safeAreaInsets.top { + if safeAreaTop > 0.0 { + if safeAreaTop > Constants.defaultStatusBarHeight { + topInset = safeAreaTop - Constants.safeAreaInsetDifference + } else { + topInset = safeAreaTop - Constants.defaultStatusBarHeight + } + } else { + topInset = safeAreaTop + } + } + return CGRect(x: 0.0, y: topInset, width: window.bounds.width, height: height) + } + + class func keyWindow() -> UIWindow? { + if #available(iOS 13, *) { + return UIApplication.shared.windows.first(where: { $0.isKeyWindow }) + } else { + return UIApplication.shared.keyWindow + } + } + + @available(iOS 13, *) + class func keyWindowScene() -> UIWindowScene? { + return UIApplication.shared.connectedScenes + .filter { $0.activationState == .foregroundActive } + .first as? UIWindowScene + } +} diff --git a/PVSupport/Sources/PVSupport/Public Headers/CAAtomic.h b/PVSupport/Sources/PVSupport/Public Headers/CAAtomic.h new file mode 120000 index 0000000000..b9de503834 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/CAAtomic.h @@ -0,0 +1 @@ +../Audio/CARingBuffer/CAAtomic.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/CAAudioTimeStamp.h b/PVSupport/Sources/PVSupport/Public Headers/CAAudioTimeStamp.h new file mode 120000 index 0000000000..79ca6909ce --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/CAAudioTimeStamp.h @@ -0,0 +1 @@ +../Audio/CARingBuffer/CAAudioTimeStamp.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/CAAutoDisposer.h b/PVSupport/Sources/PVSupport/Public Headers/CAAutoDisposer.h new file mode 120000 index 0000000000..557be41db5 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/CAAutoDisposer.h @@ -0,0 +1 @@ +../Audio/CARingBuffer/CAAutoDisposer.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/CABitOperations.h b/PVSupport/Sources/PVSupport/Public Headers/CABitOperations.h new file mode 120000 index 0000000000..29f2e65b9d --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/CABitOperations.h @@ -0,0 +1 @@ +../Audio/CARingBuffer/CABitOperations.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/CARingBuffer.h b/PVSupport/Sources/PVSupport/Public Headers/CARingBuffer.h new file mode 120000 index 0000000000..9548fc1271 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/CARingBuffer.h @@ -0,0 +1 @@ +../Audio/CARingBuffer/CARingBuffer.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/DebugUtils.h b/PVSupport/Sources/PVSupport/Public Headers/DebugUtils.h new file mode 120000 index 0000000000..6f27b22cb8 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/DebugUtils.h @@ -0,0 +1 @@ +../Utilities/DebugUtils.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/LoggerClient.h b/PVSupport/Sources/PVSupport/Public Headers/LoggerClient.h new file mode 120000 index 0000000000..6d72dd40cf --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/LoggerClient.h @@ -0,0 +1 @@ +../Logging/NSLogger/LoggerClient.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/NSFileManager+OEHashingAdditions.h b/PVSupport/Sources/PVSupport/Public Headers/NSFileManager+OEHashingAdditions.h new file mode 120000 index 0000000000..b5a974765a --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/NSFileManager+OEHashingAdditions.h @@ -0,0 +1 @@ +../NSExtensions/NSFileManager+OEHashingAdditions.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/NSLogger.h b/PVSupport/Sources/PVSupport/Public Headers/NSLogger.h new file mode 120000 index 0000000000..19a2d8a0ac --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/NSLogger.h @@ -0,0 +1 @@ +../Logging/NSLogger/NSLogger.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/NSLoggerSwift.h b/PVSupport/Sources/PVSupport/Public Headers/NSLoggerSwift.h new file mode 120000 index 0000000000..c56eb040ee --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/NSLoggerSwift.h @@ -0,0 +1 @@ +../Logging/NSLogger/NSLoggerSwift.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/NSObject+PVAbstractAdditions.h b/PVSupport/Sources/PVSupport/Public Headers/NSObject+PVAbstractAdditions.h new file mode 120000 index 0000000000..761d2509ae --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/NSObject+PVAbstractAdditions.h @@ -0,0 +1 @@ +../NSExtensions/NSObject+PVAbstractAdditions.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/OEGameAudio.h b/PVSupport/Sources/PVSupport/Public Headers/OEGameAudio.h new file mode 120000 index 0000000000..403a131e4d --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/OEGameAudio.h @@ -0,0 +1 @@ +../Audio/OEGameAudio.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/OEGeometry.h b/PVSupport/Sources/PVSupport/Public Headers/OEGeometry.h new file mode 120000 index 0000000000..80333b1501 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/OEGeometry.h @@ -0,0 +1 @@ +../Utilities/OEGeometry.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/OERingBuffer.h b/PVSupport/Sources/PVSupport/Public Headers/OERingBuffer.h new file mode 120000 index 0000000000..9e0d3f437d --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/OERingBuffer.h @@ -0,0 +1 @@ +../Audio/OERingBuffer.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/PVEmulatorCore.h b/PVSupport/Sources/PVSupport/Public Headers/PVEmulatorCore.h new file mode 120000 index 0000000000..7689ab5ce6 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/PVEmulatorCore.h @@ -0,0 +1 @@ +../EmulatorCore/PVEmulatorCore.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/PVLogEntry.h b/PVSupport/Sources/PVSupport/Public Headers/PVLogEntry.h new file mode 120000 index 0000000000..503efc6455 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/PVLogEntry.h @@ -0,0 +1 @@ +../Logging/PVLogEntry.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/PVLogging.h b/PVSupport/Sources/PVSupport/Public Headers/PVLogging.h new file mode 120000 index 0000000000..ae66c34fc0 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/PVLogging.h @@ -0,0 +1 @@ +../Logging/PVLogging.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/PVProvenanceLogging.h b/PVSupport/Sources/PVSupport/Public Headers/PVProvenanceLogging.h new file mode 120000 index 0000000000..e0aec0f9ff --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/PVProvenanceLogging.h @@ -0,0 +1 @@ +../Logging/PVProvenanceLogging.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/RealTimeThread.h b/PVSupport/Sources/PVSupport/Public Headers/RealTimeThread.h new file mode 120000 index 0000000000..0e644bfd40 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/RealTimeThread.h @@ -0,0 +1 @@ +../Threads/RealTimeThread.h \ No newline at end of file diff --git a/PVSupport/Sources/PVSupport/Public Headers/TPCircularBuffer.h b/PVSupport/Sources/PVSupport/Public Headers/TPCircularBuffer.h new file mode 120000 index 0000000000..86e9da3ffa --- /dev/null +++ b/PVSupport/Sources/PVSupport/Public Headers/TPCircularBuffer.h @@ -0,0 +1 @@ +../Audio/TPCircularBuffer.h \ No newline at end of file diff --git a/PVSupport/Settings/PVSettingsModel.swift b/PVSupport/Sources/PVSupport/Settings/PVSettingsModel.swift similarity index 97% rename from PVSupport/Settings/PVSettingsModel.swift rename to PVSupport/Sources/PVSupport/Settings/PVSettingsModel.swift index 8f15f5e80a..3ac6f64d33 100644 --- a/PVSupport/Settings/PVSettingsModel.swift +++ b/PVSupport/Sources/PVSupport/Settings/PVSettingsModel.swift @@ -227,8 +227,11 @@ extension MirroredSettings { public static let shared = PVSettingsModel() @objc public class DebugOptions: NSObject { + @objc public dynamic var useMetal = false + @objc public dynamic var useSwiftUI = false + @objc public dynamic var experimentalCores = false @objc public dynamic var iCloudSync = false -// @objc public dynamic var unsupportedCores = false + @objc public dynamic var unsupportedCores = false // @objc public dynamic var multiThreadedGL = BoolSetting(false, title: "Multi-threaded GL", info: "Use threaded GLES calls.") @objc public dynamic var multiThreadedGL = true @objc public dynamic var multiSampling = true diff --git a/PVSupport/Settings/SortOption.swift b/PVSupport/Sources/PVSupport/Settings/SortOption.swift similarity index 100% rename from PVSupport/Settings/SortOption.swift rename to PVSupport/Sources/PVSupport/Settings/SortOption.swift diff --git a/PVSupport/PVSupport/RealTimeThread.h b/PVSupport/Sources/PVSupport/Threads/RealTimeThread.h similarity index 100% rename from PVSupport/PVSupport/RealTimeThread.h rename to PVSupport/Sources/PVSupport/Threads/RealTimeThread.h diff --git a/PVSupport/PVSupport/RealTimeThread.m b/PVSupport/Sources/PVSupport/Threads/RealTimeThread.m similarity index 98% rename from PVSupport/PVSupport/RealTimeThread.m rename to PVSupport/Sources/PVSupport/Threads/RealTimeThread.m index 1856f382a0..d02ab045fc 100644 --- a/PVSupport/PVSupport/RealTimeThread.m +++ b/PVSupport/Sources/PVSupport/Threads/RealTimeThread.m @@ -31,7 +31,7 @@ void move_pthread_to_realtime_scheduling_class(pthread_t pthread) THREAD_TIME_CONSTRAINT_POLICY_COUNT); if (kr != KERN_SUCCESS) { mach_error("thread_policy_set:", kr); - exit(1); +// exit(1); } } diff --git a/PVSupport/DebugUtils.h b/PVSupport/Sources/PVSupport/Utilities/DebugUtils.h similarity index 63% rename from PVSupport/DebugUtils.h rename to PVSupport/Sources/PVSupport/Utilities/DebugUtils.h index f929de29c3..1b73555b4d 100644 --- a/PVSupport/DebugUtils.h +++ b/PVSupport/Sources/PVSupport/Utilities/DebugUtils.h @@ -9,23 +9,34 @@ #ifndef PVSupport_DebugUtils_h #define PVSupport_DebugUtils_h +//MARK: Strong/Weak #define MAKEWEAK(x)\ __weak __typeof(x)weak##x = x #define MAKESTRONG(x)\ __strong __typeof(weak##x) strong##x = weak##x; +#define MAKESTRONG_RETURN_IF_NIL(x)\ +if (weak##x == nil) return; \ +__strong __typeof(weak##x) strong##x = weak##x; + + +//MARK: System Version #define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) #define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending) +// MARK: BOOLs #define BOOL_TOGGLE(x) \ x ^= true +// MARK: X-Macros #define QUOTE(...) @#__VA_ARGS__ +//MARK: Threading + #define FORCEMAIN(x) \ if (![NSThread isMainThread]) { \ [self performSelectorOnMainThread:_cmd \ @@ -33,10 +44,32 @@ if (![NSThread isMainThread]) { \ waitUntilDone:YES]; \ return; \ } +#define PVAssertMainThread \ +NSAssert([NSThread isMainThread], @"Not main thread"); + +// MARK: String #define PVStringF( s, ... ) [NSString stringWithFormat:(s), ##__VA_ARGS__] -#define PVAssertMainThread \ -NSAssert([NSThread isMainThread], @"Not main thread"); +//MARK: Likely +#define UNLIKELY(n) __builtin_expect((n) != 0, 0) +#define LIKELY(n) __builtin_expect((n) != 0, 1) #endif + +//MARK: Direct OBJC + +// Direct method and property calls with Xcode 12 and above. +#if defined(__IPHONE_14_0) || defined(__MAC_10_16) || defined(__TVOS_14_0) || defined(__WATCHOS_7_0) +#define PV_OBJC_DIRECT_MEMBERS __attribute__((objc_direct_members)) +#define PV_OBJC_DIRECT __attribute__((objc_direct)) +#define PV_DIRECT ,direct +#else +#define PV_OBJC_DIRECT_MEMBERS +#define PV_OBJC_DIRECT +#define PV_DIRECT +#endif + +#define VISIBLE_DEFAULT __attribute__((visibility("default"))) + +#define PVCORE VISIBLE_DEFAULT PV_OBJC_DIRECT_MEMBERS diff --git a/PVSupport/PVSupport/OEGeometry.h b/PVSupport/Sources/PVSupport/Utilities/OEGeometry.h similarity index 98% rename from PVSupport/PVSupport/OEGeometry.h rename to PVSupport/Sources/PVSupport/Utilities/OEGeometry.h index c785c57a67..fff7f14c60 100644 --- a/PVSupport/PVSupport/OEGeometry.h +++ b/PVSupport/Sources/PVSupport/Utilities/OEGeometry.h @@ -25,6 +25,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#ifndef _OEGeometry_ +#define _OEGeometry_ typedef struct OEIntPoint { int x; int y; @@ -119,3 +121,4 @@ static inline BOOL CGPointInTriangle(CGPoint p, CGPoint A, CGPoint B, CGPoint C) return 0 <= a && a <= 1 && 0 <= b && b <= 1 && 0 <= c && c <= 1; } +#endif diff --git a/PVSupport/PVSupport/Info.plist b/PVSupport/Supporting Files/Info.plist similarity index 93% rename from PVSupport/PVSupport/Info.plist rename to PVSupport/Supporting Files/Info.plist index ca23c84f4c..079848cf0f 100644 --- a/PVSupport/PVSupport/Info.plist +++ b/PVSupport/Supporting Files/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) + $(PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/PVSupport/PVSupport/PVSupport-Prefix.pch b/PVSupport/Supporting Files/PVSupport-Prefix.pch similarity index 100% rename from PVSupport/PVSupport/PVSupport-Prefix.pch rename to PVSupport/Supporting Files/PVSupport-Prefix.pch diff --git a/PVSupport/Supporting Files/PVSupport.h b/PVSupport/Supporting Files/PVSupport.h new file mode 100644 index 0000000000..aa7e94b655 --- /dev/null +++ b/PVSupport/Supporting Files/PVSupport.h @@ -0,0 +1,62 @@ +// +// PVSupport Framework.h +// PVSupport Framework +// +// Created by Joseph Mattiello on 8/15/16. +// Copyright © 2016 James Addyman. All rights reserved. +// + +#import +#if !TARGET_OS_WATCH +#import +#endif +#import +#import + +//! Project version number for PVSupport Framework. +FOUNDATION_EXPORT double PVSupport_FrameworkVersionNumber; + +//! Project version string for PVSupport Framework. +FOUNDATION_EXPORT const unsigned char PVSupport_FrameworkVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +//#if SWIFT_PACKAGE +// #import +// #import +// #import +// #import +// #import +// #import +// #import +// +// # pragma mark - Audio +// #import +// #import +// #import +// #ifdef __cplusplus +// #import +// //#import +// #import +// #endif +// #import +//#else + #import + #import + #import + #import + #import + #import + #import + + # pragma mark - Audio + #import + #import + #import + #ifdef __cplusplus + #import + //#import + #import + #endif + #import +//#endif + diff --git a/PVSupport/PVSupportTests/Info.plist b/PVSupport/Tests/Info.plist similarity index 100% rename from PVSupport/PVSupportTests/Info.plist rename to PVSupport/Tests/Info.plist diff --git a/PVSupport/PVSupportTests/PVSettingsTests.swift b/PVSupport/Tests/PVSupportTests/PVSettingsTests.swift similarity index 100% rename from PVSupport/PVSupportTests/PVSettingsTests.swift rename to PVSupport/Tests/PVSupportTests/PVSettingsTests.swift diff --git a/PVUI/PVUI/PVUI.xcodeproj/project.pbxproj b/PVUI/PVUI/PVUI.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..a5b4587339 --- /dev/null +++ b/PVUI/PVUI/PVUI.xcodeproj/project.pbxproj @@ -0,0 +1,685 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXBuildFile section */ + B311AFFC27A52ABE00D1DE41 /* PVUI.h in Headers */ = {isa = PBXBuildFile; fileRef = B311AFFB27A52ABE00D1DE41 /* PVUI.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B311B00427A52AEC00D1DE41 /* PVUI.h in Headers */ = {isa = PBXBuildFile; fileRef = B311AFFB27A52ABE00D1DE41 /* PVUI.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B311B00E27A52AFA00D1DE41 /* PVUI.h in Headers */ = {isa = PBXBuildFile; fileRef = B311AFFB27A52ABE00D1DE41 /* PVUI.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B311B14327A52DAB00D1DE41 /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = B311B14227A52DAB00D1DE41 /* Differentiator */; }; + B311B14527A52DAB00D1DE41 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = B311B14427A52DAB00D1DE41 /* RxDataSources */; }; + B311B14827A52DB100D1DE41 /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = B311B14727A52DB100D1DE41 /* Differentiator */; }; + B311B14A27A52DB400D1DE41 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = B311B14927A52DB400D1DE41 /* RxDataSources */; }; + B311B14C27A52DBE00D1DE41 /* PVLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B311B14B27A52DBE00D1DE41 /* PVLibrary.framework */; }; + B311B15027A52DC200D1DE41 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B311B14F27A52DC200D1DE41 /* PVSupport.framework */; }; + B311B15227A52DC800D1DE41 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B311B14F27A52DC200D1DE41 /* PVSupport.framework */; }; + B311B15527A52DD100D1DE41 /* PVLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B311B14B27A52DBE00D1DE41 /* PVLibrary.framework */; }; + B311B15927A52DE700D1DE41 /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = B311B15827A52DE700D1DE41 /* Differentiator */; }; + B311B15B27A52DEA00D1DE41 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = B311B15A27A52DEA00D1DE41 /* RxDataSources */; }; + B311B15D27A52DEF00D1DE41 /* PVLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B311B15C27A52DEF00D1DE41 /* PVLibrary.framework */; }; + B311B16127A52DF500D1DE41 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B311B16027A52DF500D1DE41 /* PVSupport.framework */; }; + B311B16627A52EA700D1DE41 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B311B16527A52EA600D1DE41 /* UIKit.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + B311AFF827A52ABE00D1DE41 /* PVUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B311AFFB27A52ABE00D1DE41 /* PVUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVUI.h; sourceTree = ""; }; + B311B00B27A52AEC00D1DE41 /* PVUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B311B01527A52AFA00D1DE41 /* PVUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B311B14B27A52DBE00D1DE41 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B311B14F27A52DC200D1DE41 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B311B15C27A52DEF00D1DE41 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B311B16027A52DF500D1DE41 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B311B16427A52E3A00D1DE41 /* Build.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Build.xcconfig; path = ../../Build.xcconfig; sourceTree = ""; }; + B311B16527A52EA600D1DE41 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/iOSSupport/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B311AFF527A52ABE00D1DE41 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B311B15227A52DC800D1DE41 /* PVSupport.framework in Frameworks */, + B311B14327A52DAB00D1DE41 /* Differentiator in Frameworks */, + B311B15527A52DD100D1DE41 /* PVLibrary.framework in Frameworks */, + B311B14527A52DAB00D1DE41 /* RxDataSources in Frameworks */, + B311B16627A52EA700D1DE41 /* UIKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B311B00627A52AEC00D1DE41 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B311B14827A52DB100D1DE41 /* Differentiator in Frameworks */, + B311B14A27A52DB400D1DE41 /* RxDataSources in Frameworks */, + B311B15027A52DC200D1DE41 /* PVSupport.framework in Frameworks */, + B311B14C27A52DBE00D1DE41 /* PVLibrary.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B311B01027A52AFA00D1DE41 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B311B15927A52DE700D1DE41 /* Differentiator in Frameworks */, + B311B15B27A52DEA00D1DE41 /* RxDataSources in Frameworks */, + B311B16127A52DF500D1DE41 /* PVSupport.framework in Frameworks */, + B311B15D27A52DEF00D1DE41 /* PVLibrary.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B311AFEE27A52ABE00D1DE41 = { + isa = PBXGroup; + children = ( + B311B16427A52E3A00D1DE41 /* Build.xcconfig */, + B311AFFA27A52ABE00D1DE41 /* PVUI */, + B311AFF927A52ABE00D1DE41 /* Products */, + B311B14627A52DB100D1DE41 /* Frameworks */, + ); + sourceTree = ""; + }; + B311AFF927A52ABE00D1DE41 /* Products */ = { + isa = PBXGroup; + children = ( + B311AFF827A52ABE00D1DE41 /* PVUI.framework */, + B311B00B27A52AEC00D1DE41 /* PVUI.framework */, + B311B01527A52AFA00D1DE41 /* PVUI.framework */, + ); + name = Products; + sourceTree = ""; + }; + B311AFFA27A52ABE00D1DE41 /* PVUI */ = { + isa = PBXGroup; + children = ( + B311AFFB27A52ABE00D1DE41 /* PVUI.h */, + ); + path = PVUI; + sourceTree = ""; + }; + B311B14627A52DB100D1DE41 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B311B16527A52EA600D1DE41 /* UIKit.framework */, + B311B16027A52DF500D1DE41 /* PVSupport.framework */, + B311B15C27A52DEF00D1DE41 /* PVLibrary.framework */, + B311B14F27A52DC200D1DE41 /* PVSupport.framework */, + B311B14B27A52DBE00D1DE41 /* PVLibrary.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B311AFF327A52ABE00D1DE41 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B311AFFC27A52ABE00D1DE41 /* PVUI.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B311B00327A52AEC00D1DE41 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B311B00427A52AEC00D1DE41 /* PVUI.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B311B00D27A52AFA00D1DE41 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B311B00E27A52AFA00D1DE41 /* PVUI.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B311AFF727A52ABE00D1DE41 /* PVUI-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B311AFFF27A52ABE00D1DE41 /* Build configuration list for PBXNativeTarget "PVUI-iOS" */; + buildPhases = ( + B311AFF327A52ABE00D1DE41 /* Headers */, + B311AFF427A52ABE00D1DE41 /* Sources */, + B311AFF527A52ABE00D1DE41 /* Frameworks */, + B311AFF627A52ABE00D1DE41 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "PVUI-iOS"; + packageProductDependencies = ( + B311B14227A52DAB00D1DE41 /* Differentiator */, + B311B14427A52DAB00D1DE41 /* RxDataSources */, + ); + productName = PVUI; + productReference = B311AFF827A52ABE00D1DE41 /* PVUI.framework */; + productType = "com.apple.product-type.framework"; + }; + B311B00227A52AEC00D1DE41 /* PVUI-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B311B00827A52AEC00D1DE41 /* Build configuration list for PBXNativeTarget "PVUI-tvOS" */; + buildPhases = ( + B311B00327A52AEC00D1DE41 /* Headers */, + B311B00527A52AEC00D1DE41 /* Sources */, + B311B00627A52AEC00D1DE41 /* Frameworks */, + B311B00727A52AEC00D1DE41 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "PVUI-tvOS"; + packageProductDependencies = ( + B311B14727A52DB100D1DE41 /* Differentiator */, + B311B14927A52DB400D1DE41 /* RxDataSources */, + ); + productName = PVUI; + productReference = B311B00B27A52AEC00D1DE41 /* PVUI.framework */; + productType = "com.apple.product-type.framework"; + }; + B311B00C27A52AFA00D1DE41 /* PVUI-watchOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B311B01227A52AFA00D1DE41 /* Build configuration list for PBXNativeTarget "PVUI-watchOS" */; + buildPhases = ( + B311B00D27A52AFA00D1DE41 /* Headers */, + B311B00F27A52AFA00D1DE41 /* Sources */, + B311B01027A52AFA00D1DE41 /* Frameworks */, + B311B01127A52AFA00D1DE41 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "PVUI-watchOS"; + packageProductDependencies = ( + B311B15827A52DE700D1DE41 /* Differentiator */, + B311B15A27A52DEA00D1DE41 /* RxDataSources */, + ); + productName = PVUI; + productReference = B311B01527A52AFA00D1DE41 /* PVUI.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B311AFEF27A52ABE00D1DE41 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastUpgradeCheck = 1320; + TargetAttributes = { + B311AFF727A52ABE00D1DE41 = { + CreatedOnToolsVersion = 13.2.1; + }; + }; + }; + buildConfigurationList = B311AFF227A52ABE00D1DE41 /* Build configuration list for PBXProject "PVUI" */; + compatibilityVersion = "Xcode 13.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = B311AFEE27A52ABE00D1DE41; + packageReferences = ( + B311B14127A52DAB00D1DE41 /* XCRemoteSwiftPackageReference "RxDataSources" */, + ); + productRefGroup = B311AFF927A52ABE00D1DE41 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B311AFF727A52ABE00D1DE41 /* PVUI-iOS */, + B311B00227A52AEC00D1DE41 /* PVUI-tvOS */, + B311B00C27A52AFA00D1DE41 /* PVUI-watchOS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B311AFF627A52ABE00D1DE41 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B311B00727A52AEC00D1DE41 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B311B01127A52AFA00D1DE41 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B311AFF427A52ABE00D1DE41 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B311B00527A52AEC00D1DE41 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B311B00F27A52AFA00D1DE41 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + B311AFFD27A52ABE00D1DE41 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B311B16427A52E3A00D1DE41 /* Build.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B311AFFE27A52ABE00D1DE41 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B311B16427A52E3A00D1DE41 /* Build.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B311B00027A52ABE00D1DE41 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVUI"; + PRODUCT_NAME = PVUI; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B311B00127A52ABE00D1DE41 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVUI"; + PRODUCT_NAME = PVUI; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B311B00927A52AEC00D1DE41 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVUI"; + PRODUCT_NAME = PVUI; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B311B00A27A52AEC00D1DE41 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVUI"; + PRODUCT_NAME = PVUI; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B311B01327A52AFA00D1DE41 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVUI"; + PRODUCT_NAME = PVUI; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B311B01427A52AFA00D1DE41 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVUI"; + PRODUCT_NAME = PVUI; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B311AFF227A52ABE00D1DE41 /* Build configuration list for PBXProject "PVUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B311AFFD27A52ABE00D1DE41 /* Debug */, + B311AFFE27A52ABE00D1DE41 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B311AFFF27A52ABE00D1DE41 /* Build configuration list for PBXNativeTarget "PVUI-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B311B00027A52ABE00D1DE41 /* Debug */, + B311B00127A52ABE00D1DE41 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B311B00827A52AEC00D1DE41 /* Build configuration list for PBXNativeTarget "PVUI-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B311B00927A52AEC00D1DE41 /* Debug */, + B311B00A27A52AEC00D1DE41 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B311B01227A52AFA00D1DE41 /* Build configuration list for PBXNativeTarget "PVUI-watchOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B311B01327A52AFA00D1DE41 /* Debug */, + B311B01427A52AFA00D1DE41 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + B311B14127A52DAB00D1DE41 /* XCRemoteSwiftPackageReference "RxDataSources" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/RxSwiftCommunity/RxDataSources.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.0.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + B311B14227A52DAB00D1DE41 /* Differentiator */ = { + isa = XCSwiftPackageProductDependency; + package = B311B14127A52DAB00D1DE41 /* XCRemoteSwiftPackageReference "RxDataSources" */; + productName = Differentiator; + }; + B311B14427A52DAB00D1DE41 /* RxDataSources */ = { + isa = XCSwiftPackageProductDependency; + package = B311B14127A52DAB00D1DE41 /* XCRemoteSwiftPackageReference "RxDataSources" */; + productName = RxDataSources; + }; + B311B14727A52DB100D1DE41 /* Differentiator */ = { + isa = XCSwiftPackageProductDependency; + package = B311B14127A52DAB00D1DE41 /* XCRemoteSwiftPackageReference "RxDataSources" */; + productName = Differentiator; + }; + B311B14927A52DB400D1DE41 /* RxDataSources */ = { + isa = XCSwiftPackageProductDependency; + package = B311B14127A52DAB00D1DE41 /* XCRemoteSwiftPackageReference "RxDataSources" */; + productName = RxDataSources; + }; + B311B15827A52DE700D1DE41 /* Differentiator */ = { + isa = XCSwiftPackageProductDependency; + package = B311B14127A52DAB00D1DE41 /* XCRemoteSwiftPackageReference "RxDataSources" */; + productName = Differentiator; + }; + B311B15A27A52DEA00D1DE41 /* RxDataSources */ = { + isa = XCSwiftPackageProductDependency; + package = B311B14127A52DAB00D1DE41 /* XCRemoteSwiftPackageReference "RxDataSources" */; + productName = RxDataSources; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = B311AFEF27A52ABE00D1DE41 /* Project object */; +} diff --git a/PVUI/PVUI/PVUI/PVUI.h b/PVUI/PVUI/PVUI/PVUI.h new file mode 100644 index 0000000000..e54f5d02c1 --- /dev/null +++ b/PVUI/PVUI/PVUI/PVUI.h @@ -0,0 +1,18 @@ +// +// PVUI.h +// PVUI +// +// Created by Joseph Mattiello on 1/29/22. +// + +#import + +//! Project version number for PVUI. +FOUNDATION_EXPORT double PVUIVersionNumber; + +//! Project version string for PVUI. +FOUNDATION_EXPORT const unsigned char PVUIVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Package.swift b/Package.swift index 41cb29070d..e0d2b9fbd1 100644 --- a/Package.swift +++ b/Package.swift @@ -17,6 +17,7 @@ let package = Package( platforms: [ .iOS(.v11), .tvOS(.v11), + .watchOS(.v7), .macOS(.v10_13) ], products: [ diff --git a/Provenance Watch WatchKit Extension/Info.plist b/Provenance Watch WatchKit Extension/Info.plist index 5e1b30b6d8..baa269394e 100644 --- a/Provenance Watch WatchKit Extension/Info.plist +++ b/Provenance Watch WatchKit Extension/Info.plist @@ -7,7 +7,7 @@ NSExtensionAttributes WKAppBundleIdentifier - org.provenance-emu.Provenance-Watch.watchkitapp + $(WATCH_APP_PRODUCT_BUNDLE_IDENTIFIER) NSExtensionPointIdentifier com.apple.watchkit diff --git a/Provenance-Bridging-Header.h b/Provenance-Bridging-Header.h deleted file mode 100644 index 79386e4287..0000000000 --- a/Provenance-Bridging-Header.h +++ /dev/null @@ -1,38 +0,0 @@ -// -// Use this file to import your target's public headers that you would like to expose to Swift. -// - -#import -#import "PVLogViewController.h" -//#import "Provenance/Version.h" -#import -#if !TARGET_OS_TV -#import "PVAltKitService.h" -#endif -// Hack cause they can't make modules for some reason -//#import -//#import - -// ----------------------------------------------------------------------------- -// Begin Swiftify generated imports - -// NOTE: -// 1. Put your custom `#import` directives outside of this section to avoid them being overwritten. -// 2. To use your Objective-C code from Swift: -// • Add `import MyObjcClass` to your .swift file(s) depending on the Objective-C code; -// • Ensure that `#import MyObjcClass.h` is present in `Provenance-Bridging-Header.h`. -// 3. To use your Swift code from Objective-C: -// • Add `@class MySwiftClass` to your .h files that depend on the Swift code; -// • No need to import the Swift Bridging Header (`Provenance-Swift.h`), since it's already being imported fom the .pch file. - -#import -#import -//#import -#import "PVAvailability.h" -#import "PVGLViewController.h" -#import "MBProgressHUD.h" -#import "PVWebServer.h" -#import "UIDevice+Hardware.h" - -// End Swiftify generated imports -// ----------------------------------------------------------------------------- diff --git a/Provenance.xcodeproj/project.pbxproj b/Provenance.xcodeproj/project.pbxproj index fe5fd89c1e..0bee90aa36 100644 --- a/Provenance.xcodeproj/project.pbxproj +++ b/Provenance.xcodeproj/project.pbxproj @@ -7,6 +7,17 @@ objects = { /* Begin PBXAggregateTarget section */ + B30E94832793B8BE00871E57 /* Check CodeSigning */ = { + isa = PBXAggregateTarget; + buildConfigurationList = B30E94852793B8BE00871E57 /* Build configuration list for PBXAggregateTarget "Check CodeSigning" */; + buildPhases = ( + B30E94842793B8BE00871E57 /* ShellScript */, + ); + dependencies = ( + ); + name = "Check CodeSigning"; + productName = "Check Git Submodules"; + }; B383225D26ED9C530029D12F /* Check Git Submodules */ = { isa = PBXAggregateTarget; buildConfigurationList = B383225E26ED9C530029D12F /* Build configuration list for PBXAggregateTarget "Check Git Submodules" */; @@ -51,7 +62,6 @@ 1180B31C2492A96700636C8A /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1180B31B2492A95400636C8A /* CoreServices.framework */; }; 1180B3242492AFC900636C8A /* PVGameLibraryUpdatesController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1180B3232492AFC900636C8A /* PVGameLibraryUpdatesController.swift */; }; 11A8A9E72496A3E500C1C6B4 /* PVGameLibraryUpdatesController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1180B3232492AFC900636C8A /* PVGameLibraryUpdatesController.swift */; }; - 11ADB31F2471A34E001C7B27 /* PVTVTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11ADB31E2471A34E001C7B27 /* PVTVTabBarController.swift */; }; 11AFB2B72487C120000A3922 /* UISearchController+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2B62487C120000A3922 /* UISearchController+Rx.swift */; }; 11BB0A2225AF7DFE004DEDC3 /* PVEmulatorViewController+PauseMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = B38A2A452102328600374CDD /* PVEmulatorViewController+PauseMenu.swift */; }; 11BB0A2325AF7DFF004DEDC3 /* PVEmulatorViewController+PauseMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = B38A2A452102328600374CDD /* PVEmulatorViewController+PauseMenu.swift */; }; @@ -162,6 +172,9 @@ 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 */; }; + B311B1C227A52F1700D1DE41 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B311B1C127A52F1700D1DE41 /* UIKit.framework */; }; + B311B1C427A52F2000D1DE41 /* PVPokeMini.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B311B1C327A52F2000D1DE41 /* PVPokeMini.framework */; }; + B311B1C527A52F2000D1DE41 /* PVPokeMini.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B311B1C327A52F2000D1DE41 /* PVPokeMini.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B312805F274C60EC00550720 /* SteamController in Frameworks */ = {isa = PBXBuildFile; productRef = B3D30FC026F0BCE60064603F /* SteamController */; }; B313544726E4C0F90047F338 /* PVPS2ControllerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B313544626E4C0F90047F338 /* PVPS2ControllerViewController.swift */; }; B313544826E4C0F90047F338 /* PVPS2ControllerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B313544626E4C0F90047F338 /* PVPS2ControllerViewController.swift */; }; @@ -186,8 +199,6 @@ B324C5F72191FD89009F4EDC /* PVLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF701221916C3A000FA7F9 /* PVLibrary.framework */; }; B324C5F82191FDAA009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF701B21916E38000FA7F9 /* PVSupport.framework */; }; B324C5F92191FDB0009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF700F21916C30000FA7F9 /* PVSupport.framework */; }; - B324C6082191FF9A009F4EDC /* PVAtari800.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C6072191FF9A009F4EDC /* PVAtari800.framework */; }; - B324C6092191FF9A009F4EDC /* PVAtari800.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B324C6072191FF9A009F4EDC /* PVAtari800.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B324C60B2191FFBB009F4EDC /* PVGBA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C60A2191FFBB009F4EDC /* PVGBA.framework */; }; B324C60C2191FFBB009F4EDC /* PVGBA.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B324C60A2191FFBB009F4EDC /* PVGBA.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B324C61121920037009F4EDC /* ProSystem.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C61021920037009F4EDC /* ProSystem.framework */; }; @@ -228,6 +239,24 @@ B33468D720AB392C00092CA6 /* CollectionViewInCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33468D520AB392C00092CA6 /* CollectionViewInCollectionViewCell.swift */; }; B33625FC26EDF88200DC41EA /* MetalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B33625FA26EDF88200DC41EA /* MetalKit.framework */; }; B33625FD26EDF88200DC41EA /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B33625FB26EDF88200DC41EA /* Metal.framework */; }; + B3375EBC278EA28E004B0DC0 /* crt_filter_ps.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EB2278EA28E004B0DC0 /* crt_filter_ps.metal */; }; + B3375EBD278EA28E004B0DC0 /* crt_filter_ps.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EB2278EA28E004B0DC0 /* crt_filter_ps.metal */; }; + B3375EBE278EA28E004B0DC0 /* ulTron.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EB3278EA28E004B0DC0 /* ulTron.metal */; }; + B3375EBF278EA28E004B0DC0 /* ulTron.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EB3278EA28E004B0DC0 /* ulTron.metal */; }; + B3375EC0278EA28E004B0DC0 /* MameShaders.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EB5278EA28E004B0DC0 /* MameShaders.metal */; }; + B3375EC1278EA28E004B0DC0 /* MameShaders.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EB5278EA28E004B0DC0 /* MameShaders.metal */; }; + B3375EC2278EA28E004B0DC0 /* blit_ps.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EB6278EA28E004B0DC0 /* blit_ps.metal */; }; + B3375EC3278EA28E004B0DC0 /* blit_ps.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EB6278EA28E004B0DC0 /* blit_ps.metal */; }; + B3375EC4278EA28E004B0DC0 /* MetalViewShaders.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EB7278EA28E004B0DC0 /* MetalViewShaders.metal */; }; + B3375EC5278EA28E004B0DC0 /* MetalViewShaders.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EB7278EA28E004B0DC0 /* MetalViewShaders.metal */; }; + B3375EC6278EA28E004B0DC0 /* fullscreen_vs.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EB8278EA28E004B0DC0 /* fullscreen_vs.metal */; }; + B3375EC7278EA28E004B0DC0 /* fullscreen_vs.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EB8278EA28E004B0DC0 /* fullscreen_vs.metal */; }; + B3375EC8278EA28E004B0DC0 /* megaTron.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EB9278EA28E004B0DC0 /* megaTron.metal */; }; + B3375EC9278EA28E004B0DC0 /* megaTron.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EB9278EA28E004B0DC0 /* megaTron.metal */; }; + B3375ECA278EA28E004B0DC0 /* simpleCRT.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EBA278EA28E004B0DC0 /* simpleCRT.metal */; }; + B3375ECB278EA28E004B0DC0 /* simpleCRT.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EBA278EA28E004B0DC0 /* simpleCRT.metal */; }; + B3375ECC278EA28E004B0DC0 /* lineTron.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EBB278EA28E004B0DC0 /* lineTron.metal */; }; + B3375ECD278EA28E004B0DC0 /* lineTron.metal in Sources */ = {isa = PBXBuildFile; fileRef = B3375EBB278EA28E004B0DC0 /* lineTron.metal */; }; B3411BF8276B37DE00D85327 /* PVDSControllerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3411BF7276B37DE00D85327 /* PVDSControllerViewController.swift */; }; B3411BF9276B37DE00D85327 /* PVDSControllerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3411BF7276B37DE00D85327 /* PVDSControllerViewController.swift */; }; B3411C11276B470B00D85327 /* QuickTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3411BFB276B470B00D85327 /* QuickTableViewController.swift */; }; @@ -319,9 +348,10 @@ B35E6C32207ED7050040709A /* AppearanceStyleHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35E6C20207ED7050040709A /* AppearanceStyleHelpers.swift */; }; B369B0DD21A3BF7C0064EDCA /* PVSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AB95FFB17C563C100D3E392 /* PVSettingsViewController.swift */; }; B369B0DE21A3C1C40064EDCA /* PVLogViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B3E6DADB20B7AD1500454DD4 /* PVLogViewController.m */; }; + B36C7D5727AE2CF400715677 /* PVAtari800-tvOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B36C7D5627AE2CF400715677 /* PVAtari800-tvOS.framework */; }; + B36C7D5827AE2CF500715677 /* PVAtari800-tvOS.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B36C7D5627AE2CF400715677 /* PVAtari800-tvOS.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B36D9DF8203562E000D583C4 /* PVControllerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B36D9DF7203562E000D583C4 /* PVControllerViewController.swift */; }; B36D9DFD203605BC00D583C4 /* PVCoreFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = B36D9DFC203605BB00D583C4 /* PVCoreFactory.swift */; }; - B37263A126EA04E700E95488 /* ProSystem.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37263A026EA04E700E95488 /* ProSystem.framework */; }; B37263A926EA159400E95488 /* PVMupen64Plus.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37263A426EA159400E95488 /* PVMupen64Plus.framework */; }; B37263AA26EA159400E95488 /* PVMupen64Plus.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B37263A426EA159400E95488 /* PVMupen64Plus.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B37263AB26EA159400E95488 /* PVMupen64PlusRspHLE.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37263A526EA159400E95488 /* PVMupen64PlusRspHLE.framework */; }; @@ -343,6 +373,22 @@ B378225721D32B0B0077E86F /* SliderRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378225621D32B0B0077E86F /* SliderRow.swift */; }; B378225A21D32F970077E86F /* SettingsRowSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378225921D32F970077E86F /* SettingsRowSlider.swift */; }; B378225C21D32FCC0077E86F /* PVSliderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378225B21D32FCC0077E86F /* PVSliderCell.swift */; }; + B37B71AD278E3198005FB278 /* UIViewController+Alerts.swift in Sources */ = {isa = PBXBuildFile; fileRef = B37B71AC278E3198005FB278 /* UIViewController+Alerts.swift */; }; + B37B71AE278E3198005FB278 /* UIViewController+Alerts.swift in Sources */ = {isa = PBXBuildFile; fileRef = B37B71AC278E3198005FB278 /* UIViewController+Alerts.swift */; }; + B37B71B0278E33B9005FB278 /* MenuButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = B37B71AF278E33B9005FB278 /* MenuButton.swift */; }; + B37B71B1278E33B9005FB278 /* MenuButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = B37B71AF278E33B9005FB278 /* MenuButton.swift */; }; + B382C635278E5055007E61FE /* PVEmulatorViewController+Audio.swift in Sources */ = {isa = PBXBuildFile; fileRef = B382C632278E5054007E61FE /* PVEmulatorViewController+Audio.swift */; }; + B382C636278E5055007E61FE /* PVEmulatorViewController+Audio.swift in Sources */ = {isa = PBXBuildFile; fileRef = B382C632278E5054007E61FE /* PVEmulatorViewController+Audio.swift */; }; + B382C637278E5055007E61FE /* PVEmulatorViewController+MultiDisc.swift in Sources */ = {isa = PBXBuildFile; fileRef = B382C633278E5055007E61FE /* PVEmulatorViewController+MultiDisc.swift */; }; + B382C638278E5055007E61FE /* PVEmulatorViewController+MultiDisc.swift in Sources */ = {isa = PBXBuildFile; fileRef = B382C633278E5055007E61FE /* PVEmulatorViewController+MultiDisc.swift */; }; + B382C639278E5055007E61FE /* PVEmulatorViewController+Controllers.swift in Sources */ = {isa = PBXBuildFile; fileRef = B382C634278E5055007E61FE /* PVEmulatorViewController+Controllers.swift */; }; + B382C63A278E5055007E61FE /* PVEmulatorViewController+Controllers.swift in Sources */ = {isa = PBXBuildFile; fileRef = B382C634278E5055007E61FE /* PVEmulatorViewController+Controllers.swift */; }; + B382C63D278E514A007E61FE /* PVEmulatorViewController+CoreOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B382C63C278E514A007E61FE /* PVEmulatorViewController+CoreOptions.swift */; }; + B382C63E278E514A007E61FE /* PVEmulatorViewController+CoreOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B382C63C278E514A007E61FE /* PVEmulatorViewController+CoreOptions.swift */; }; + B382C642278E55C9007E61FE /* PVMetalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B382C641278E55C9007E61FE /* PVMetalViewController.m */; }; + B382C643278E55C9007E61FE /* PVMetalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B382C641278E55C9007E61FE /* PVMetalViewController.m */; }; + B382C649278E626D007E61FE /* PVGPUViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B382C648278E626D007E61FE /* PVGPUViewController.m */; }; + B382C64A278E626D007E61FE /* PVGPUViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B382C648278E626D007E61FE /* PVGPUViewController.m */; }; B383F3BF219BBD8700DB6926 /* LogViewable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B383F3BE219BBD8700DB6926 /* LogViewable.swift */; }; B385542E20336D02006CA50B /* PVGameMoreInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B385542D20336D02006CA50B /* PVGameMoreInfoViewController.swift */; }; B387676C20BD0F43009D8CD2 /* WebServerActivatorController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B387676B20BD0F43009D8CD2 /* WebServerActivatorController.swift */; }; @@ -358,14 +404,21 @@ B390B0EA276B2DB20018E065 /* AltKit in Frameworks */ = {isa = PBXBuildFile; platformFilter = ios; productRef = B390B0E9276B2DB20018E065 /* AltKit */; }; B394C98A20609E180014A65D /* UIColor+Hex.swift in Sources */ = {isa = PBXBuildFile; fileRef = B394C98920609E180014A65D /* UIColor+Hex.swift */; }; B394C98B20609E180014A65D /* UIColor+Hex.swift in Sources */ = {isa = PBXBuildFile; fileRef = B394C98920609E180014A65D /* UIColor+Hex.swift */; }; + B398800D27A521AC004DEFCA /* ConflictsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B398800C27A521AC004DEFCA /* ConflictsController.swift */; }; + B398800E27A521AC004DEFCA /* ConflictsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B398800C27A521AC004DEFCA /* ConflictsController.swift */; }; B3995E4F2058229F001D4985 /* PVFCEU.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3995E4E2058229F001D4985 /* PVFCEU.framework */; }; B3995E502058229F001D4985 /* PVFCEU.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B3995E4E2058229F001D4985 /* PVFCEU.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + B39DC77D279E79D40017E28D /* TopShelf.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = BE9FDCB71C210B9E0046DF0E /* TopShelf.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; B3A320372720974F00F338F6 /* PVGameCubeControllerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A320362720974F00F338F6 /* PVGameCubeControllerViewController.swift */; }; B3A320382720974F00F338F6 /* PVGameCubeControllerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A320362720974F00F338F6 /* PVGameCubeControllerViewController.swift */; }; B3A32150218EB4D700BD7DA2 /* UIView+FrameAdditions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AADCDB517BD998A00F53CFE /* UIView+FrameAdditions.swift */; }; B3A32151218EB4D800BD7DA2 /* UIView+FrameAdditions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AADCDB517BD998A00F53CFE /* UIView+FrameAdditions.swift */; }; B3A40C7121A67C7800544C20 /* PVGameLibrarySectionFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A40C7021A67C7800544C20 /* PVGameLibrarySectionFooterView.swift */; }; B3A40C7221A67C7800544C20 /* PVGameLibrarySectionFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A40C7021A67C7800544C20 /* PVGameLibrarySectionFooterView.swift */; }; + B3A4FB60278FF84800A65248 /* ApplicationMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A4FB5F278FF84800A65248 /* ApplicationMonitor.swift */; }; + B3A4FB62278FFA0F00A65248 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A4FB61278FFA0F00A65248 /* LocationManager.swift */; }; + B3A4FB64278FFA5100A65248 /* PublishedPipeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A4FB63278FFA5100A65248 /* PublishedPipeline.swift */; }; + B3A4FB66278FFB6600A65248 /* Result+Conveniences.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A4FB65278FFB6600A65248 /* Result+Conveniences.swift */; }; B3AB37322187F569009D9244 /* PVSNESControllerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB371E2187F568009D9244 /* PVSNESControllerViewController.swift */; }; B3AB37332187F569009D9244 /* PVAtari2600ControllerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB371F2187F568009D9244 /* PVAtari2600ControllerViewController.swift */; }; B3AB37342187F569009D9244 /* PVGBControllerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37202187F568009D9244 /* PVGBControllerViewController.swift */; }; @@ -431,6 +484,8 @@ B3B3B8961DECF8C200602746 /* PVMupen64PlusVideoRice.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B3B3B8941DECF8C200602746 /* PVMupen64PlusVideoRice.framework */; platformFilter = ios; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B3B3B8981DECF8C700602746 /* PVMupen64PlusRspHLE.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3B3B8971DECF8C700602746 /* PVMupen64PlusRspHLE.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; B3B3B8991DECF8C700602746 /* PVMupen64PlusRspHLE.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B3B3B8971DECF8C700602746 /* PVMupen64PlusRspHLE.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + B3B4C956279E6BAB00505424 /* ProSystem.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3B4C955279E6BAA00505424 /* ProSystem.framework */; }; + B3B4C957279E6BAB00505424 /* ProSystem.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B3B4C955279E6BAA00505424 /* ProSystem.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B3B923B0202D2EAE00580FFC /* Theme.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3B923A9202D2EAE00580FFC /* Theme.swift */; }; B3C9D4331DEA1B340068D057 /* PVGenesis.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D4321DEA1B340068D057 /* PVGenesis.framework */; }; B3C9D4341DEA1B340068D057 /* PVGenesis.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D4321DEA1B340068D057 /* PVGenesis.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -456,6 +511,7 @@ B3CB85C31E9BFB16009155A6 /* PVPokeMini.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B3CB85C11E9BFB16009155A6 /* PVPokeMini.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B3CCD2BA21DAA8D30031C42C /* PVEmulatorViewController+Saves.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CCD2B921DAA8D30031C42C /* PVEmulatorViewController+Saves.swift */; }; B3CCD2BB21DAA8D30031C42C /* PVEmulatorViewController+Saves.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CCD2B921DAA8D30031C42C /* PVEmulatorViewController+Saves.swift */; }; + B3CEC5B22794D8DD004A7CC1 /* Strings.strings in Resources */ = {isa = PBXBuildFile; fileRef = B3296EEA26CAC3ED0088AC32 /* Strings.strings */; }; B3D534E220AFF21900A83D4E /* Version.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D534E120AFF21800A83D4E /* Version.swift */; }; B3D534E320AFF21900A83D4E /* Version.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D534E120AFF21800A83D4E /* Version.swift */; }; B3D534ED20B001D700A83D4E /* PillPageControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D534EB20B001D700A83D4E /* PillPageControl.swift */; }; @@ -479,10 +535,6 @@ B3E6DAE120B7C2F800454DD4 /* PVLogViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B3E6DAE020B7C2F800454DD4 /* PVLogViewController.xib */; }; B3EA0CD32070BCCE00BBEAA1 /* PVSaveStateInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3EA0CD22070BCCE00BBEAA1 /* PVSaveStateInfoViewController.swift */; }; B3EA0CD42070BCCE00BBEAA1 /* PVSaveStateInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3EA0CD22070BCCE00BBEAA1 /* PVSaveStateInfoViewController.swift */; }; - B3F187712720B7FE00659D87 /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = B3F187702720B7FE00659D87 /* Differentiator */; }; - B3F187732720B7FE00659D87 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = B3F187722720B7FE00659D87 /* RxDataSources */; }; - B3F187752720B80C00659D87 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = B3F187742720B80C00659D87 /* RxDataSources */; }; - B3F187772720B81100659D87 /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = B3F187762720B81100659D87 /* Differentiator */; }; B3F43DCF2168075200CDD40A /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = B3F43DCE2168075200CDD40A /* Settings.bundle */; }; B3F43DD02168075200CDD40A /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = B3F43DCE2168075200CDD40A /* Settings.bundle */; }; B3F43DE22169DB4000CDD40A /* SystemsSettingsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3F43DE12169DB4000CDD40A /* SystemsSettingsTableViewController.swift */; }; @@ -500,7 +552,7 @@ B3F94A4C27093794002A71EF /* PVAppDelegate+AppCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B357A43B2709228E002C7C0F /* PVAppDelegate+AppCenter.swift */; }; B3F94A4E27093ABC002A71EF /* AppCenterAnalytics in Frameworks */ = {isa = PBXBuildFile; productRef = B3F94A4D27093ABC002A71EF /* AppCenterAnalytics */; }; B3F94A5027093ABC002A71EF /* AppCenterCrashes in Frameworks */ = {isa = PBXBuildFile; productRef = B3F94A4F27093ABC002A71EF /* AppCenterCrashes */; }; - B3FB9679276DD7F600F7EDEE /* SteamController in Frameworks */ = {isa = PBXBuildFile; platformFilter = ios; productRef = B3FB9678276DD7F600F7EDEE /* SteamController */; }; + B3FB9679276DD7F600F7EDEE /* SteamController in Frameworks */ = {isa = PBXBuildFile; platformFilter = ios; productRef = B3FB9678276DD7F600F7EDEE /* SteamController */; settings = {ATTRIBUTES = (Weak, ); }; }; BE9FDCBD1C210B9F0046DF0E /* ServiceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE9FDCBC1C210B9F0046DF0E /* ServiceProvider.swift */; }; BE9FDCC91C210C470046DF0E /* PVRecentGame+TopShelf.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE9FDCC81C210C470046DF0E /* PVRecentGame+TopShelf.swift */; }; C13CC82923CABE2800463EDD /* Photos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C13CC82823CABE2800463EDD /* Photos.framework */; }; @@ -523,6 +575,9 @@ DF3751952026B83600EE727E /* PVRSPCXD4.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B3B3B97B1DED14AE00602746 /* PVRSPCXD4.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; DFCD6EBF203762AF00719289 /* shaders in Resources */ = {isa = PBXBuildFile; fileRef = DFCD6EBE203762AE00719289 /* shaders */; }; DFCD6EC0203762AF00719289 /* shaders in Resources */ = {isa = PBXBuildFile; fileRef = DFCD6EBE203762AE00719289 /* shaders */; }; + EF474BA8279CCDD200578663 /* TVFullscreenController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF474BA7279CCDD100578663 /* TVFullscreenController.swift */; }; + EF474BAA279E63B800578663 /* TVAlertController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF474BA9279E63B700578663 /* TVAlertController.swift */; }; + EF56AA6227A21CBC0097AD05 /* TVAlertController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF474BA9279E63B700578663 /* TVAlertController.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -596,6 +651,13 @@ remoteGlobalIDString = B3B29D3F2156177100903290; remoteInfo = "Create Version files"; }; + B3B4C953279E69AD00505424 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1A3D408C17B2DCE4004DFFFC /* Project object */; + proxyType = 1; + remoteGlobalIDString = BE9FDCB61C210B9E0046DF0E; + remoteInfo = TopShelf; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -612,6 +674,7 @@ B3C9D5E21DEA8A290068D057 /* PVGenesis.framework in Embed Frameworks */, B3C9D4B21DEA74500068D057 /* PVGB.framework in Embed Frameworks */, B37263AC26EA159400E95488 /* PVMupen64PlusRspHLE.framework in Embed Frameworks */, + B36C7D5827AE2CF500715677 /* PVAtari800-tvOS.framework in Embed Frameworks */, B324C6232192059E009F4EDC /* PVMednafen.framework in Embed Frameworks */, B37263B026EA159400E95488 /* PVMupen64PlusVideoRice.framework in Embed Frameworks */, 14C4C1A221EBB0040055C6DC /* PVTGBDual.framework in Embed Frameworks */, @@ -623,8 +686,8 @@ B37263B226EA159500E95488 /* PVRSPCXD4.framework in Embed Frameworks */, B324C61221920037009F4EDC /* ProSystem.framework in Embed Frameworks */, B324C60C2191FFBB009F4EDC /* PVGBA.framework in Embed Frameworks */, + B3B4C957279E6BAB00505424 /* ProSystem.framework in Embed Frameworks */, B37263AA26EA159400E95488 /* PVMupen64Plus.framework in Embed Frameworks */, - B324C6092191FF9A009F4EDC /* PVAtari800.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -689,11 +752,23 @@ files = ( B305F08C276B5248003AE510 /* PVSupport.framework in Embed Frameworks */, B305F089276B5243003AE510 /* PVLibrary.framework in Embed Frameworks */, + B311B1C527A52F2000D1DE41 /* PVPokeMini.framework in Embed Frameworks */, B305EF30276B4CB0003AE510 /* PVStella.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; }; + B39DC780279E79D40017E28D /* Embed App Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + B39DC77D279E79D40017E28D /* TopShelf.appex in Embed App Extensions */, + ); + name = "Embed App Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; B3DFEE132686D848005C6CF2 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -722,7 +797,6 @@ 1180B3172492A93F00636C8A /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; }; 1180B31B2492A95400636C8A /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS13.4.sdk/System/Library/Frameworks/CoreServices.framework; sourceTree = DEVELOPER_DIR; }; 1180B3232492AFC900636C8A /* PVGameLibraryUpdatesController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PVGameLibraryUpdatesController.swift; sourceTree = ""; }; - 11ADB31E2471A34E001C7B27 /* PVTVTabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PVTVTabBarController.swift; sourceTree = ""; }; 11AFB2B62487C120000A3922 /* UISearchController+Rx.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UISearchController+Rx.swift"; sourceTree = ""; }; 14C8EF2121D9443E001B7E37 /* PVTGBDual.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVTGBDual.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 1A164EB217BC03E800FAC391 /* PVEmulatorViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PVEmulatorViewController.swift; sourceTree = ""; }; @@ -839,6 +913,63 @@ 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; }; + B311B01627A52B8B00D1DE41 /* PVUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B311B01927A52B9200D1DE41 /* PVUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B311B01C27A52B9C00D1DE41 /* PVUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B311B1C127A52F1700D1DE41 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS8.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + B311B1C327A52F2000D1DE41 /* PVPokeMini.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVPokeMini.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B311B1D227A53E7200D1DE41 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ru.lproj/PVGameLibraryCollectionViewCell.xib; sourceTree = ""; }; + B311B1D327A53E7400D1DE41 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Strings.strings; sourceTree = ""; }; + B311B1D427A53E7500D1DE41 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; }; + B311B1D527A53E7600D1DE41 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = ru; path = ru.lproj/Provenance.storyboard; sourceTree = ""; }; + B311B1D627A53E7700D1DE41 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = ru; path = ru.lproj/SaveStates.storyboard; sourceTree = ""; }; + B311B1D727A53E7800D1DE41 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = ru; path = ru.lproj/Settings.storyboard; sourceTree = ""; }; + B311B1D827A53E7900D1DE41 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ru.lproj/Default.xib; sourceTree = ""; }; + B311B1D927A53E7B00D1DE41 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = ru; path = ru.lproj/Cheats.storyboard; sourceTree = ""; }; + B311B1DA27A53E7C00D1DE41 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = ru; path = ru.lproj/Provenance.storyboard; sourceTree = ""; }; + B311B1DB27A53E7D00D1DE41 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = ru; path = ru.lproj/Settings.storyboard; sourceTree = ""; }; + B311B1DC27A53E7E00D1DE41 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = ru; path = ru.lproj/SaveStates.storyboard; sourceTree = ""; }; + B311B1DD27A53E7F00D1DE41 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = ru; path = ru.lproj/Cheats.storyboard; sourceTree = ""; }; + B311B1DE27A53E8000D1DE41 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = ru; path = ../ru.lproj/Info.plist; sourceTree = ""; }; + B311B1DF27A53F9C00D1DE41 /* ja */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ja; path = ja.lproj/PVGameLibraryCollectionViewCell.xib; sourceTree = ""; }; + B311B1E027A53F9D00D1DE41 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Strings.strings; sourceTree = ""; }; + B311B1E127A53F9E00D1DE41 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = ""; }; + B311B1E227A53F9E00D1DE41 /* ja */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = ja; path = ja.lproj/Provenance.storyboard; sourceTree = ""; }; + B311B1E327A53F9F00D1DE41 /* ja */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = ja; path = ja.lproj/SaveStates.storyboard; sourceTree = ""; }; + B311B1E427A53FA000D1DE41 /* ja */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = ja; path = ja.lproj/Settings.storyboard; sourceTree = ""; }; + B311B1E527A53FA000D1DE41 /* ja */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ja; path = ja.lproj/Default.xib; sourceTree = ""; }; + B311B1E627A53FA100D1DE41 /* ja */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = ja; path = ja.lproj/Cheats.storyboard; sourceTree = ""; }; + B311B1E727A53FA200D1DE41 /* ja */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = ja; path = ja.lproj/Provenance.storyboard; sourceTree = ""; }; + B311B1E827A53FA200D1DE41 /* ja */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = ja; path = ja.lproj/Settings.storyboard; sourceTree = ""; }; + B311B1E927A53FA300D1DE41 /* ja */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = ja; path = ja.lproj/SaveStates.storyboard; sourceTree = ""; }; + B311B1EA27A53FA400D1DE41 /* ja */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = ja; path = ja.lproj/Cheats.storyboard; sourceTree = ""; }; + B311B1EB27A53FA400D1DE41 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = ja; path = ../ja.lproj/Info.plist; sourceTree = ""; }; + B311B1EC27A53FC300D1DE41 /* nl */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = nl; path = nl.lproj/PVGameLibraryCollectionViewCell.xib; sourceTree = ""; }; + B311B1ED27A53FC400D1DE41 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Strings.strings; sourceTree = ""; }; + B311B1EE27A53FC500D1DE41 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; }; + B311B1EF27A53FC500D1DE41 /* nl */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = nl; path = nl.lproj/Provenance.storyboard; sourceTree = ""; }; + B311B1F027A53FC600D1DE41 /* nl */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = nl; path = nl.lproj/SaveStates.storyboard; sourceTree = ""; }; + B311B1F127A53FC700D1DE41 /* nl */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = nl; path = nl.lproj/Settings.storyboard; sourceTree = ""; }; + B311B1F227A53FC700D1DE41 /* nl */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = nl; path = nl.lproj/Default.xib; sourceTree = ""; }; + B311B1F327A53FC800D1DE41 /* nl */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = nl; path = nl.lproj/Cheats.storyboard; sourceTree = ""; }; + B311B1F427A53FC900D1DE41 /* nl */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = nl; path = nl.lproj/Provenance.storyboard; sourceTree = ""; }; + B311B1F527A53FC900D1DE41 /* nl */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = nl; path = nl.lproj/Settings.storyboard; sourceTree = ""; }; + B311B1F627A53FCA00D1DE41 /* nl */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = nl; path = nl.lproj/SaveStates.storyboard; sourceTree = ""; }; + B311B1F727A53FCB00D1DE41 /* nl */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = nl; path = nl.lproj/Cheats.storyboard; sourceTree = ""; }; + B311B1F827A53FCB00D1DE41 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = nl; path = ../nl.lproj/Info.plist; sourceTree = ""; }; + B311B1F927A53FEF00D1DE41 /* it */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = it; path = it.lproj/PVGameLibraryCollectionViewCell.xib; sourceTree = ""; }; + B311B1FA27A53FEF00D1DE41 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Strings.strings; sourceTree = ""; }; + B311B1FB27A53FF000D1DE41 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; }; + B311B1FC27A53FF100D1DE41 /* it */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = it; path = it.lproj/Provenance.storyboard; sourceTree = ""; }; + B311B1FD27A53FF100D1DE41 /* it */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = it; path = it.lproj/SaveStates.storyboard; sourceTree = ""; }; + B311B1FE27A53FF200D1DE41 /* it */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = it; path = it.lproj/Settings.storyboard; sourceTree = ""; }; + B311B1FF27A53FF300D1DE41 /* it */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = it; path = it.lproj/Default.xib; sourceTree = ""; }; + B311B20027A53FF300D1DE41 /* it */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = it; path = it.lproj/Cheats.storyboard; sourceTree = ""; }; + B311B20127A53FF400D1DE41 /* it */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = it; path = it.lproj/Provenance.storyboard; sourceTree = ""; }; + B311B20227A53FF500D1DE41 /* it */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = it; path = it.lproj/Settings.storyboard; sourceTree = ""; }; + B311B20327A53FF500D1DE41 /* it */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = it; path = it.lproj/SaveStates.storyboard; sourceTree = ""; }; + B311B20427A53FF600D1DE41 /* it */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = it; path = it.lproj/Cheats.storyboard; sourceTree = ""; }; + B311B20527A53FF700D1DE41 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = it; path = ../it.lproj/Info.plist; sourceTree = ""; }; B313544626E4C0F90047F338 /* PVPS2ControllerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PVPS2ControllerViewController.swift; sourceTree = ""; }; B313544926E4C3B90047F338 /* PVPlay.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVPlay.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B313544C26E4C3BE0047F338 /* PVPlay.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVPlay.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -870,6 +1001,9 @@ B324C61A219203AF009F4EDC /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/usr/lib/libc++.tbd"; sourceTree = DEVELOPER_DIR; }; B324C6212192059E009F4EDC /* PVMednafen.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVMednafen.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B324C64E219216DD009F4EDC /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B326758527B1E0BB0033C5D1 /* Build-iOS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Build-iOS.xcconfig"; sourceTree = ""; }; + B326758627B1E0BC0033C5D1 /* Build-tvOS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Build-tvOS.xcconfig"; sourceTree = ""; }; + B326758727B1E27E0033C5D1 /* Build-watchOS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Build-watchOS.xcconfig"; sourceTree = ""; }; B3271BDA276B8B2E0031AECC /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; B3271BDC276B8B660031AECC /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/CoreTelephony.framework; sourceTree = DEVELOPER_DIR; }; B32746BC219BD65F00B78124 /* PVGameLibraryCollectionFlowLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PVGameLibraryCollectionFlowLayout.swift; sourceTree = ""; }; @@ -895,14 +1029,24 @@ B3296EE126CAC2800088AC32 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "zh-Hans"; path = "zh-Hans.lproj/PVGameLibraryCollectionViewCell.xib"; sourceTree = ""; }; B3296EE326CAC2B10088AC32 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/Default.xib; sourceTree = ""; }; B3296EE526CAC2CA0088AC32 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "zh-Hans"; path = "zh-Hans.lproj/Default.xib"; sourceTree = ""; }; - B3296EE926CAC3ED0088AC32 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Strings.strings; sourceTree = ""; }; - B3296EEB26CAC3F00088AC32 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Strings.strings"; sourceTree = ""; }; + B3296EE926CAC3ED0088AC32 /* en */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Strings.strings; sourceTree = ""; }; + B3296EEB26CAC3F00088AC32 /* zh-Hans */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Strings.strings"; sourceTree = ""; }; B32D8F811EA7FDBE00175FBF /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = System/Library/Frameworks/GameController.framework; sourceTree = SDKROOT; }; B33468D120AB347300092CA6 /* CenterFlowLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CenterFlowLayout.swift; sourceTree = ""; }; B33468D520AB392C00092CA6 /* CollectionViewInCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollectionViewInCollectionViewCell.swift; sourceTree = ""; }; B33625F726EDEFF700DC41EA /* MTLViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MTLViewController.swift; sourceTree = ""; }; B33625FA26EDF88200DC41EA /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/iOSSupport/System/Library/Frameworks/MetalKit.framework; sourceTree = DEVELOPER_DIR; }; B33625FB26EDF88200DC41EA /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/Metal.framework; sourceTree = DEVELOPER_DIR; }; + B3375EB2278EA28E004B0DC0 /* crt_filter_ps.metal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.metal; path = crt_filter_ps.metal; sourceTree = ""; }; + B3375EB3278EA28E004B0DC0 /* ulTron.metal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.metal; path = ulTron.metal; sourceTree = ""; }; + B3375EB4278EA28E004B0DC0 /* MetalViewShaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MetalViewShaders.h; sourceTree = ""; }; + B3375EB5278EA28E004B0DC0 /* MameShaders.metal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.metal; path = MameShaders.metal; sourceTree = ""; }; + B3375EB6278EA28E004B0DC0 /* blit_ps.metal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.metal; path = blit_ps.metal; sourceTree = ""; }; + B3375EB7278EA28E004B0DC0 /* MetalViewShaders.metal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.metal; path = MetalViewShaders.metal; sourceTree = ""; }; + B3375EB8278EA28E004B0DC0 /* fullscreen_vs.metal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.metal; path = fullscreen_vs.metal; sourceTree = ""; }; + B3375EB9278EA28E004B0DC0 /* megaTron.metal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.metal; path = megaTron.metal; sourceTree = ""; }; + B3375EBA278EA28E004B0DC0 /* simpleCRT.metal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.metal; path = simpleCRT.metal; sourceTree = ""; }; + B3375EBB278EA28E004B0DC0 /* lineTron.metal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.metal; path = lineTron.metal; sourceTree = ""; }; B340E6091E088CF900AD0E8B /* PVMednafen.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVMednafen.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3411BF7276B37DE00D85327 /* PVDSControllerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PVDSControllerViewController.swift; sourceTree = ""; }; B3411BFB276B470B00D85327 /* QuickTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QuickTableViewController.swift; sourceTree = ""; }; @@ -950,6 +1094,8 @@ B35E6C1F207ED7040040709A /* AppearanceStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppearanceStyle.swift; sourceTree = ""; }; B35E6C20207ED7050040709A /* AppearanceStyleHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppearanceStyleHelpers.swift; sourceTree = ""; }; B361938F221FB93B00F73875 /* Provenance-Free.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = "Provenance-Free.entitlements"; path = "Provenance/Provenance-Free.entitlements"; sourceTree = SOURCE_ROOT; }; + B36455EB278E919500B6E87A /* PVDuckStation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVDuckStation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B36C7D5627AE2CF400715677 /* PVAtari800-tvOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = "PVAtari800-tvOS.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; B36D9DF7203562E000D583C4 /* PVControllerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PVControllerViewController.swift; sourceTree = ""; }; B36D9DFC203605BB00D583C4 /* PVCoreFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PVCoreFactory.swift; sourceTree = ""; }; B37263A026EA04E700E95488 /* ProSystem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ProSystem.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -965,9 +1111,23 @@ B378225621D32B0B0077E86F /* SliderRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SliderRow.swift; sourceTree = ""; }; B378225921D32F970077E86F /* SettingsRowSlider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsRowSlider.swift; sourceTree = ""; }; B378225B21D32FCC0077E86F /* PVSliderCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PVSliderCell.swift; sourceTree = ""; }; + B37B71AC278E3198005FB278 /* UIViewController+Alerts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIViewController+Alerts.swift"; sourceTree = ""; }; + B37B71AF278E33B9005FB278 /* MenuButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuButton.swift; sourceTree = ""; }; B37D31C9274A57F000D635E0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = en; path = Info.plist; sourceTree = ""; }; B37D31CC274A57F000D635E0 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "zh-Hans"; path = Info.plist; sourceTree = ""; }; + B380EAC12759D689001B8532 /* Build.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Build.xcconfig; sourceTree = ""; }; + B380EAC22759D692001B8532 /* CodeSigning.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = CodeSigning.xcconfig; sourceTree = ""; }; + B380EAC32759D69A001B8532 /* CodeSigning.xcconfig.sample */ = {isa = PBXFileReference; lastKnownFileType = text; path = CodeSigning.xcconfig.sample; sourceTree = ""; }; + B382C632278E5054007E61FE /* PVEmulatorViewController+Audio.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "PVEmulatorViewController+Audio.swift"; sourceTree = ""; }; + B382C633278E5055007E61FE /* PVEmulatorViewController+MultiDisc.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "PVEmulatorViewController+MultiDisc.swift"; sourceTree = ""; }; + B382C634278E5055007E61FE /* PVEmulatorViewController+Controllers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "PVEmulatorViewController+Controllers.swift"; sourceTree = ""; }; + B382C63C278E514A007E61FE /* PVEmulatorViewController+CoreOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PVEmulatorViewController+CoreOptions.swift"; sourceTree = ""; }; + B382C640278E55C9007E61FE /* PVMetalViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVMetalViewController.h; sourceTree = ""; }; + B382C641278E55C9007E61FE /* PVMetalViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PVMetalViewController.m; sourceTree = ""; }; + B382C647278E626C007E61FE /* PVGPUViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVGPUViewController.h; sourceTree = ""; }; + B382C648278E626D007E61FE /* PVGPUViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PVGPUViewController.m; sourceTree = ""; }; B383F3BE219BBD8700DB6926 /* LogViewable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogViewable.swift; sourceTree = ""; }; + B3843BD327966171005C36F5 /* GameLibraryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameLibraryView.swift; sourceTree = ""; }; B385542D20336D02006CA50B /* PVGameMoreInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PVGameMoreInfoViewController.swift; sourceTree = ""; }; B387676B20BD0F43009D8CD2 /* WebServerActivatorController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebServerActivatorController.swift; sourceTree = ""; }; B3890BE320B97588005BB001 /* PVGameLibraryViewController+PeekPop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PVGameLibraryViewController+PeekPop.swift"; sourceTree = ""; }; @@ -979,14 +1139,21 @@ B38D30FC202AC26500E9A068 /* GCDWebDAVServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDWebDAVServer.m; sourceTree = ""; }; B394C98920609E180014A65D /* UIColor+Hex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+Hex.swift"; sourceTree = ""; }; B3977533219AB53F00E16AD5 /* Provenance.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = Provenance.entitlements; path = Provenance/Provenance.entitlements; sourceTree = SOURCE_ROOT; }; + B398800C27A521AC004DEFCA /* ConflictsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConflictsController.swift; sourceTree = ""; }; B399119126C0F41300E54426 /* LICENSE.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = ""; }; B399119226C0F41300E54426 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; B399119326C0F41300E54426 /* CHANGELOG.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = ""; }; B3995E4E2058229F001D4985 /* PVFCEU.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVFCEU.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39DC77A279E77200017E28D /* PVGCVRViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVGCVRViewController.h; sourceTree = ""; }; + B39DC77B279E77230017E28D /* PVGCVRViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PVGCVRViewController.m; sourceTree = ""; }; B3A320362720974F00F338F6 /* PVGameCubeControllerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PVGameCubeControllerViewController.swift; sourceTree = ""; }; B3A320392720991B00F338F6 /* PVDolphin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVDolphin.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3A3203C2720992500F338F6 /* PVDolphin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVDolphin.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3A40C7021A67C7800544C20 /* PVGameLibrarySectionFooterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PVGameLibrarySectionFooterView.swift; sourceTree = ""; }; + B3A4FB5F278FF84800A65248 /* ApplicationMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationMonitor.swift; sourceTree = ""; }; + B3A4FB61278FFA0F00A65248 /* LocationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationManager.swift; sourceTree = ""; }; + B3A4FB63278FFA5100A65248 /* PublishedPipeline.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PublishedPipeline.swift; sourceTree = ""; }; + B3A4FB65278FFB6600A65248 /* Result+Conveniences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Result+Conveniences.swift"; sourceTree = ""; }; B3AB371E2187F568009D9244 /* PVSNESControllerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PVSNESControllerViewController.swift; sourceTree = ""; }; B3AB371F2187F568009D9244 /* PVAtari2600ControllerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PVAtari2600ControllerViewController.swift; sourceTree = ""; }; B3AB37202187F568009D9244 /* PVGBControllerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PVGBControllerViewController.swift; sourceTree = ""; }; @@ -1022,6 +1189,8 @@ B3B3B9781DED14A100602746 /* PVMupen64PlusVideoRice.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVMupen64PlusVideoRice.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3B3B97B1DED14AE00602746 /* PVRSPCXD4.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVRSPCXD4.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3B3B97E1DED169100602746 /* PVRSPCXD4.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVRSPCXD4.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B4C955279E6BAA00505424 /* ProSystem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ProSystem.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B66A7027B872BA00E2236B /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Strings.strings"; sourceTree = ""; }; B3B9239C202D054B00580FFC /* Provenance-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Provenance-Bridging-Header.h"; sourceTree = ""; }; B3B9239D202D054B00580FFC /* ProvenanceTV-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ProvenanceTV-Bridging-Header.h"; sourceTree = ""; }; B3B923A9202D2EAE00580FFC /* Theme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Theme.swift; sourceTree = ""; }; @@ -1037,6 +1206,19 @@ B3CB85BE1E9BFB07009155A6 /* PVPokeMini.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVPokeMini.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3CB85C11E9BFB16009155A6 /* PVPokeMini.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVPokeMini.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3CCD2B921DAA8D30031C42C /* PVEmulatorViewController+Saves.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PVEmulatorViewController+Saves.swift"; sourceTree = ""; }; + B3CEC5A52794CD8B004A7CC1 /* es */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = es; path = es.lproj/PVGameLibraryCollectionViewCell.xib; sourceTree = ""; }; + B3CEC5A62794CD8C004A7CC1 /* es */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Strings.strings; sourceTree = ""; }; + B3CEC5A72794CD8D004A7CC1 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; + B3CEC5A82794CD8E004A7CC1 /* es */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = es; path = es.lproj/Provenance.storyboard; sourceTree = ""; }; + B3CEC5A92794CD8E004A7CC1 /* es */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = es; path = es.lproj/SaveStates.storyboard; sourceTree = ""; }; + B3CEC5AA2794CD8F004A7CC1 /* es */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = es; path = es.lproj/Settings.storyboard; sourceTree = ""; }; + B3CEC5AB2794CD90004A7CC1 /* es */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = es; path = es.lproj/Default.xib; sourceTree = ""; }; + B3CEC5AC2794CD91004A7CC1 /* es */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = es; path = es.lproj/Cheats.storyboard; sourceTree = ""; }; + B3CEC5AD2794CD92004A7CC1 /* es */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = es; path = es.lproj/Provenance.storyboard; sourceTree = ""; }; + B3CEC5AE2794CD92004A7CC1 /* es */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = es; path = es.lproj/Settings.storyboard; sourceTree = ""; }; + B3CEC5AF2794CD93004A7CC1 /* es */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = es; path = es.lproj/SaveStates.storyboard; sourceTree = ""; }; + B3CEC5B02794CD94004A7CC1 /* es */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = es; path = es.lproj/Cheats.storyboard; sourceTree = ""; }; + B3CEC5B12794CD94004A7CC1 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = es; path = ../es.lproj/Info.plist; sourceTree = ""; }; B3D534E120AFF21800A83D4E /* Version.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Version.swift; sourceTree = ""; }; B3D534EB20B001D700A83D4E /* PillPageControl.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PillPageControl.swift; sourceTree = ""; }; B3D54EF42768306200476241 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/iOSSupport/System/Library/Frameworks/SwiftUI.framework; sourceTree = DEVELOPER_DIR; }; @@ -1087,6 +1269,8 @@ DA5EB009206C4DEB000B5F30 /* PVGame+TopShelf.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PVGame+TopShelf.swift"; sourceTree = ""; }; DFB603BD2038B6C0001E70F1 /* PVMupen64PlusVideoGlideN64.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVMupen64PlusVideoGlideN64.framework; sourceTree = BUILT_PRODUCTS_DIR; }; DFCD6EBE203762AE00719289 /* shaders */ = {isa = PBXFileReference; lastKnownFileType = folder; path = shaders; sourceTree = ""; }; + EF474BA7279CCDD100578663 /* TVFullscreenController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TVFullscreenController.swift; sourceTree = ""; }; + EF474BA9279E63B700578663 /* TVAlertController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TVAlertController.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -1115,7 +1299,6 @@ B3C9D4331DEA1B340068D057 /* PVGenesis.framework in Frameworks */, B354693C1DECDA710018B6F3 /* PVAtari800.framework in Frameworks */, 1AD4BC6F1BFD38D6007D6C7C /* AVFoundation.framework in Frameworks */, - B3F187732720B7FE00659D87 /* RxDataSources in Frameworks */, B357A43827092254002C7C0F /* AppCenterAnalytics in Frameworks */, B3CB85BF1E9BFB07009155A6 /* PVPokeMini.framework in Frameworks */, 1A4869DD17C8D60C0019F6D2 /* CFNetwork.framework in Frameworks */, @@ -1133,7 +1316,6 @@ B33625FD26EDF88200DC41EA /* Metal.framework in Frameworks */, B3B3B8951DECF8C200602746 /* PVMupen64PlusVideoRice.framework in Frameworks */, 1A3D431E17B2F01F004DFFFC /* OpenGLES.framework in Frameworks */, - B3F187712720B7FE00659D87 /* Differentiator in Frameworks */, B3B3B8981DECF8C700602746 /* PVMupen64PlusRspHLE.framework in Frameworks */, B3C9D55D1DEA85C60068D057 /* PVSNES.framework in Frameworks */, 1A3D409817B2DCE4004DFFFC /* UIKit.framework in Frameworks */, @@ -1154,7 +1336,8 @@ B324C6172192038C009F4EDC /* libxml2.tbd in Frameworks */, B312805F274C60EC00550720 /* SteamController in Frameworks */, B324C61521920384009F4EDC /* libz.tbd in Frameworks */, - B3F187752720B80C00659D87 /* RxDataSources in Frameworks */, + B3B4C956279E6BAB00505424 /* ProSystem.framework in Frameworks */, + B36C7D5727AE2CF400715677 /* PVAtari800-tvOS.framework in Frameworks */, B324C312219195CE009F4EDC /* CFNetwork.framework in Frameworks */, B324C30C219195BB009F4EDC /* SystemConfiguration.framework in Frameworks */, B324C30A219195AE009F4EDC /* AudioToolbox.framework in Frameworks */, @@ -1165,12 +1348,10 @@ B324C308219195A8009F4EDC /* GLKit.framework in Frameworks */, B324C306219195A0009F4EDC /* OpenGLES.framework in Frameworks */, B324C30321919596009F4EDC /* UIKit.framework in Frameworks */, - B3F187772720B81100659D87 /* Differentiator in Frameworks */, B324C30421919596009F4EDC /* TVUIKit.framework in Frameworks */, B37263AB26EA159400E95488 /* PVMupen64PlusRspHLE.framework in Frameworks */, B37263B126EA159500E95488 /* PVRSPCXD4.framework in Frameworks */, B324C3002191958D009F4EDC /* CoreGraphics.framework in Frameworks */, - B37263A126EA04E700E95488 /* ProSystem.framework in Frameworks */, B324C2FE21919585009F4EDC /* Foundation.framework in Frameworks */, B324C2FD21919568009F4EDC /* AVFoundation.framework in Frameworks */, B3AF70662191733D000FA7F9 /* GameController.framework in Frameworks */, @@ -1190,7 +1371,6 @@ B37263A926EA159400E95488 /* PVMupen64Plus.framework in Frameworks */, B324C61121920037009F4EDC /* ProSystem.framework in Frameworks */, B37263AF26EA159400E95488 /* PVMupen64PlusVideoRice.framework in Frameworks */, - B324C6082191FF9A009F4EDC /* PVAtari800.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1208,6 +1388,8 @@ buildActionMask = 2147483647; files = ( B305F08B276B5248003AE510 /* PVSupport.framework in Frameworks */, + B311B1C227A52F1700D1DE41 /* UIKit.framework in Frameworks */, + B311B1C427A52F2000D1DE41 /* PVPokeMini.framework in Frameworks */, B305F088276B5243003AE510 /* PVLibrary.framework in Frameworks */, B305EF2F276B4CB0003AE510 /* PVStella.framework in Frameworks */, ); @@ -1240,6 +1422,7 @@ 1A1237F217CA279900CEC788 /* User Interface */ = { isa = PBXGroup; children = ( + B3843BCF2796606B005C36F5 /* SwiftUI */, B3B923A1202D2EAE00580FFC /* Themes */, B3296EAC26CABE880088AC32 /* Provenance.storyboard */, B3296EB126CABEA80088AC32 /* SaveStates.storyboard */, @@ -1271,15 +1454,12 @@ 1A1237F417CA27B700CEC788 /* Emulator */ = { isa = PBXGroup; children = ( - 1A3D433917B30BA2004DFFFC /* PVGLViewController.h */, - 1A3D433A17B30BA3004DFFFC /* PVGLViewController.m */, - 1A164EB217BC03E800FAC391 /* PVEmulatorViewController.swift */, - B3CCD2B921DAA8D30031C42C /* PVEmulatorViewController+Saves.swift */, + B3375EB1278EA28E004B0DC0 /* Shaders */, + B382C63F278E5288007E61FE /* PVGLViewController */, + B382C63B278E5061007E61FE /* PVEmulatorVC */, B354E7D1219A9C230041F971 /* CoreOptionsViewController.swift */, - B38A2A452102328600374CDD /* PVEmulatorViewController+PauseMenu.swift */, B38A2A47210233FE00374CDD /* EmulatorActionCell.xib */, B36D9DFC203605BB00D583C4 /* PVCoreFactory.swift */, - CF17107025858B5400258602 /* PVEmulatorViewController+Cheats.swift */, B33625F726EDEFF700DC41EA /* MTLViewController.swift */, ); path = Emulator; @@ -1288,6 +1468,12 @@ 1A3D408B17B2DCE4004DFFFC = { isa = PBXGroup; children = ( + B380EAC32759D69A001B8532 /* CodeSigning.xcconfig.sample */, + B380EAC22759D692001B8532 /* CodeSigning.xcconfig */, + B380EAC12759D689001B8532 /* Build.xcconfig */, + B326758527B1E0BB0033C5D1 /* Build-iOS.xcconfig */, + B326758627B1E0BC0033C5D1 /* Build-tvOS.xcconfig */, + B326758727B1E27E0033C5D1 /* Build-watchOS.xcconfig */, B399119326C0F41300E54426 /* CHANGELOG.md */, B399119126C0F41300E54426 /* LICENSE.md */, B399119226C0F41300E54426 /* README.md */, @@ -1323,6 +1509,14 @@ 1A3D409617B2DCE4004DFFFC /* Frameworks */ = { isa = PBXGroup; children = ( + B36C7D5627AE2CF400715677 /* PVAtari800-tvOS.framework */, + B311B1C327A52F2000D1DE41 /* PVPokeMini.framework */, + B311B1C127A52F1700D1DE41 /* UIKit.framework */, + B311B01C27A52B9C00D1DE41 /* PVUI.framework */, + B311B01927A52B9200D1DE41 /* PVUI.framework */, + B311B01627A52B8B00D1DE41 /* PVUI.framework */, + B3B4C955279E6BAA00505424 /* ProSystem.framework */, + B36455EB278E919500B6E87A /* PVDuckStation.framework */, B3271BDC276B8B660031AECC /* CoreTelephony.framework */, B3271BDA276B8B2E0031AECC /* OpenGL.framework */, B305F103276B6BBD003AE510 /* PVCrabEmu.framework */, @@ -1367,6 +1561,7 @@ 1A3D409D17B2DCE4004DFFFC /* Provenance */ = { isa = PBXGroup; children = ( + B3B9239C202D054B00580FFC /* Provenance-Bridging-Header.h */, 1A3D40A717B2DCE4004DFFFC /* PVAppDelegate.swift */, B3290498270D1F95002707AC /* PVAppDelegate+NitoTV.swift */, B357A43B2709228E002C7C0F /* PVAppDelegate+AppCenter.swift */, @@ -1410,6 +1605,7 @@ B3AB37F421881CDC009D9244 /* PViCadeControllerViewController.swift */, B36D9DF7203562E000D583C4 /* PVControllerViewController.swift */, C665CD8321FEC68E00C834C6 /* GCControllerExtensions.swift */, + B37B71AF278E33B9005FB278 /* MenuButton.swift */, ); path = Controller; sourceTree = ""; @@ -1537,6 +1733,7 @@ 1A5665081D96A18A006EAE01 /* UIDevice+Hardware.m */, B394C98920609E180014A65D /* UIColor+Hex.swift */, 1180B306248FF8AC00636C8A /* UICollectionView+Rx.swift */, + B37B71AC278E3198005FB278 /* UIViewController+Alerts.swift */, ); path = Categories; sourceTree = ""; @@ -1546,9 +1743,11 @@ children = ( B35D667D21814EAB0005A992 /* Story Boards */, BE9FDCCC1C21109B0046DF0E /* Provenance.entitlements */, - 11ADB31E2471A34E001C7B27 /* PVTVTabBarController.swift */, + EF474BA9279E63B700578663 /* TVAlertController.swift */, + EF474BA7279CCDD100578663 /* TVFullscreenController.swift */, 1AACCAEC1BB61D5600DC21AE /* PVTVSplitViewController.swift */, 1A2B13CC1D0DFF5100D0B863 /* PVSearchViewController.swift */, + B3B9239D202D054B00580FFC /* ProvenanceTV-Bridging-Header.h */, 1AD481C21BA350A400FDA50A /* TVAssets.xcassets */, 1AD481B61BA350A400FDA50A /* Supporting Files */, ); @@ -1735,6 +1934,23 @@ path = SaveStates; sourceTree = ""; }; + B3375EB1278EA28E004B0DC0 /* Shaders */ = { + isa = PBXGroup; + children = ( + B3375EB2278EA28E004B0DC0 /* crt_filter_ps.metal */, + B3375EB3278EA28E004B0DC0 /* ulTron.metal */, + B3375EB4278EA28E004B0DC0 /* MetalViewShaders.h */, + B3375EB5278EA28E004B0DC0 /* MameShaders.metal */, + B3375EB6278EA28E004B0DC0 /* blit_ps.metal */, + B3375EB7278EA28E004B0DC0 /* MetalViewShaders.metal */, + B3375EB8278EA28E004B0DC0 /* fullscreen_vs.metal */, + B3375EB9278EA28E004B0DC0 /* megaTron.metal */, + B3375EBA278EA28E004B0DC0 /* simpleCRT.metal */, + B3375EBB278EA28E004B0DC0 /* lineTron.metal */, + ); + path = Shaders; + sourceTree = ""; + }; B3411BFA276B470B00D85327 /* QuickTableViewController */ = { isa = PBXGroup; children = ( @@ -1808,6 +2024,10 @@ B3532C3B21A9AC93006CDA0F /* Services.swift */, B31A464D26B4C5060084A1D6 /* PVAltKitService.h */, B31A464E26B4C5060084A1D6 /* PVAltKitService.m */, + B3A4FB5F278FF84800A65248 /* ApplicationMonitor.swift */, + B3A4FB61278FFA0F00A65248 /* LocationManager.swift */, + B3A4FB63278FFA5100A65248 /* PublishedPipeline.swift */, + B3A4FB65278FFB6600A65248 /* Result+Conveniences.swift */, ); path = Services; sourceTree = ""; @@ -1869,6 +2089,44 @@ path = "zh-Hans.lproj"; sourceTree = ""; }; + B382C63B278E5061007E61FE /* PVEmulatorVC */ = { + isa = PBXGroup; + children = ( + 1A164EB217BC03E800FAC391 /* PVEmulatorViewController.swift */, + B382C632278E5054007E61FE /* PVEmulatorViewController+Audio.swift */, + CF17107025858B5400258602 /* PVEmulatorViewController+Cheats.swift */, + B382C634278E5055007E61FE /* PVEmulatorViewController+Controllers.swift */, + B382C63C278E514A007E61FE /* PVEmulatorViewController+CoreOptions.swift */, + B382C633278E5055007E61FE /* PVEmulatorViewController+MultiDisc.swift */, + B38A2A452102328600374CDD /* PVEmulatorViewController+PauseMenu.swift */, + B3CCD2B921DAA8D30031C42C /* PVEmulatorViewController+Saves.swift */, + ); + path = PVEmulatorVC; + sourceTree = ""; + }; + B382C63F278E5288007E61FE /* PVGLViewController */ = { + isa = PBXGroup; + children = ( + B39DC77A279E77200017E28D /* PVGCVRViewController.h */, + B39DC77B279E77230017E28D /* PVGCVRViewController.m */, + B382C640278E55C9007E61FE /* PVMetalViewController.h */, + B382C641278E55C9007E61FE /* PVMetalViewController.m */, + 1A3D433917B30BA2004DFFFC /* PVGLViewController.h */, + 1A3D433A17B30BA3004DFFFC /* PVGLViewController.m */, + B382C647278E626C007E61FE /* PVGPUViewController.h */, + B382C648278E626D007E61FE /* PVGPUViewController.m */, + ); + path = PVGLViewController; + sourceTree = ""; + }; + B3843BCF2796606B005C36F5 /* SwiftUI */ = { + isa = PBXGroup; + children = ( + B3843BD327966171005C36F5 /* GameLibraryView.swift */, + ); + path = SwiftUI; + sourceTree = ""; + }; B38D30FA202AC26500E9A068 /* GCDWebDAVServer */ = { isa = PBXGroup; children = ( @@ -1878,6 +2136,14 @@ path = GCDWebDAVServer; sourceTree = ""; }; + B398800B27A5218A004DEFCA /* Conflicts */ = { + isa = PBXGroup; + children = ( + B398800C27A521AC004DEFCA /* ConflictsController.swift */, + ); + path = Conflicts; + sourceTree = ""; + }; B3AB371D2187F568009D9244 /* Systems */ = { isa = PBXGroup; children = ( @@ -1991,6 +2257,7 @@ B3E21D6C203211BE009939D3 /* Spotlight */ = { isa = PBXGroup; children = ( + B3E21D7E20321EE0009939D3 /* Spotlight-Bridging-Header.h */, B3579D0221069B4E00DDEBD6 /* Spotlight.entitlements */, B3E21D6D203211BE009939D3 /* IndexRequestHandler.swift */, B3E21D6F203211BE009939D3 /* Info.plist */, @@ -2001,6 +2268,7 @@ B3E3B5D1202ED5D500A11871 /* UI */ = { isa = PBXGroup; children = ( + B398800B27A5218A004DEFCA /* Conflicts */, B3411BFA276B470B00D85327 /* QuickTableViewController */, CF17107925858FA800258602 /* Cheats */, B3D5E2BC218EC5C20015C690 /* Game Library */, @@ -2017,10 +2285,6 @@ B3F43DDA2169BC9C00CDD40A /* Bridging Headers */ = { isa = PBXGroup; children = ( - B3B9239C202D054B00580FFC /* Provenance-Bridging-Header.h */, - B3B9239D202D054B00580FFC /* ProvenanceTV-Bridging-Header.h */, - B3E21D7E20321EE0009939D3 /* Spotlight-Bridging-Header.h */, - B3E3B5C7202E3AB700A11871 /* TopShelf-Bridging-Header.h */, ); name = "Bridging Headers"; sourceTree = ""; @@ -2032,6 +2296,7 @@ BE9FDCBC1C210B9F0046DF0E /* ServiceProvider.swift */, BE9FDCC81C210C470046DF0E /* PVRecentGame+TopShelf.swift */, DA5EB009206C4DEB000B5F30 /* PVGame+TopShelf.swift */, + B3E3B5C7202E3AB700A11871 /* TopShelf-Bridging-Header.h */, BE9FDCBE1C210B9F0046DF0E /* Info.plist */, ); path = TopShelf; @@ -2073,8 +2338,6 @@ packageProductDependencies = ( B357A43727092254002C7C0F /* AppCenterAnalytics */, B357A43927092254002C7C0F /* AppCenterCrashes */, - B3F187702720B7FE00659D87 /* Differentiator */, - B3F187722720B7FE00659D87 /* RxDataSources */, B390B0E9276B2DB20018E065 /* AltKit */, B3FB9678276DD7F600F7EDEE /* SteamController */, ); @@ -2091,20 +2354,20 @@ 1AD481B21BA350A400FDA50A /* Resources */, 1A44C0AE1D0A1E730018751A /* Script: Set Build Number */, 1AACCAE61BB60DB500DC21AE /* Embed Frameworks */, + B39DC780279E79D40017E28D /* Embed App Extensions */, ); buildRules = ( ); dependencies = ( B383226626ED9F0C0029D12F /* PBXTargetDependency */, B3B29D4C2156185700903290 /* PBXTargetDependency */, + B3B4C954279E69AD00505424 /* PBXTargetDependency */, ); name = ProvenanceTV; packageProductDependencies = ( B3D30FC026F0BCE60064603F /* SteamController */, B3F94A4D27093ABC002A71EF /* AppCenterAnalytics */, B3F94A4F27093ABC002A71EF /* AppCenterCrashes */, - B3F187742720B80C00659D87 /* RxDataSources */, - B3F187762720B81100659D87 /* Differentiator */, ); productName = ProvenanceTV; productReference = 1AD481B41BA350A400FDA50A /* Provenance.app */; @@ -2321,12 +2584,17 @@ knownRegions = ( en, "zh-Hans", + es, + ru, + ja, + nl, + it, + "pt-BR", ); mainGroup = 1A3D408B17B2DCE4004DFFFC; packageReferences = ( B3D30FBD26F0B4CD0064603F /* XCRemoteSwiftPackageReference "SteamController" */, B357A43627092253002C7C0F /* XCRemoteSwiftPackageReference "appcenter-sdk-apple" */, - B3F1876F2720B7FE00659D87 /* XCRemoteSwiftPackageReference "RxDataSources" */, B390B0E8276B2DB20018E065 /* XCRemoteSwiftPackageReference "AltKit" */, ); productRefGroup = 1A3D409517B2DCE4004DFFFC /* Products */; @@ -2341,9 +2609,10 @@ B3B29D3F2156177100903290 /* Create Version files */, B3B29D4D21561F0600903290 /* Setup Code-Signing */, B383225D26ED9C530029D12F /* Check Git Submodules */, + B30E94832793B8BE00871E57 /* Check CodeSigning */, + B305EF04276B4C73003AE510 /* Provenance Watch WatchKit Extension */, B305EEF6276B4C71003AE510 /* Provenance Watch */, B305EEF9276B4C71003AE510 /* Provenance Watch WatchKit App */, - B305EF04276B4C73003AE510 /* Provenance Watch WatchKit Extension */, ); }; /* End PBXProject section */ @@ -2382,6 +2651,7 @@ B3F64ECA205CBD1200C273C7 /* licenses.html in Resources */, B3296ECF26CABFDE0088AC32 /* Cheats.storyboard in Resources */, B3296EBE26CABF9F0088AC32 /* Provenance.storyboard in Resources */, + B3CEC5B22794D8DD004A7CC1 /* Strings.strings in Resources */, B3296EC826CABFCA0088AC32 /* SaveStates.storyboard in Resources */, 1AD481C31BA350A400FDA50A /* TVAssets.xcassets in Resources */, 1AD482361BA35A2D00FDA50A /* Assets.xcassets in Resources */, @@ -2489,6 +2759,23 @@ shellPath = /bin/sh; shellScript = ./Provenance/Resources/createVersionHeader.sh; }; + B30E94842793B8BE00871E57 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/bash; + shellScript = "FILE=\"${SRCROOT}/CodeSigning.xcconfig\"\nif [ -e \"${FILE}\" ]\nthen\n\techo \"CodeSigning OK!\"\nelse\n osascript -e 'display notification \"Copy CodeSigning.xcconfig.sample to CodeSigning.xcconfig and edit with your Apple Developer Account info for proper signing.\" with title \"Code Signing not Configured!\"'\n echo \"warning: Missing CodeSigning.xcconfig\"\nfi\n"; + }; B383226226ED9C590029D12F /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -2608,8 +2895,10 @@ B3AB373C2187F569009D9244 /* PVLynxControllerViewController.swift in Sources */, B31117B3218EB3AE00C495A2 /* PVButtonGroupOverlayView.swift in Sources */, B3A320372720974F00F338F6 /* PVGameCubeControllerViewController.swift in Sources */, + B3375EBC278EA28E004B0DC0 /* crt_filter_ps.metal in Sources */, B357A43C2709228E002C7C0F /* PVAppDelegate+AppCenter.swift in Sources */, B3AB37402187F569009D9244 /* PVSaturnControllerViewController.swift in Sources */, + B382C642278E55C9007E61FE /* PVMetalViewController.m in Sources */, B3D5E2B2218EC1AE0015C690 /* RxTableViewRealmDataSource.swift in Sources */, B3AB37372187F569009D9244 /* PVPSXControllerViewController.swift in Sources */, 1A3D40A817B2DCE4004DFFFC /* PVAppDelegate.swift in Sources */, @@ -2621,9 +2910,11 @@ B3AB37362187F569009D9244 /* PVAtariJaguarControllerViewController.swift in Sources */, B3CCD2BA21DAA8D30031C42C /* PVEmulatorViewController+Saves.swift in Sources */, 378F4A071B63D7CD0065FA39 /* GCDWebServerMultiPartFormRequest.m in Sources */, + B382C637278E5055007E61FE /* PVEmulatorViewController+MultiDisc.swift in Sources */, B3A40C7121A67C7800544C20 /* PVGameLibrarySectionFooterView.swift in Sources */, B3AB37452187F569009D9244 /* PVAtari7800ControllerViewController.swift in Sources */, B354E7C6219A7D9D0041F971 /* SystemOverviewViewModel.swift in Sources */, + B3375EBE278EA28E004B0DC0 /* ulTron.metal in Sources */, B3411C15276B470B00D85327 /* RowStyle.swift in Sources */, B3F7BE79204A289B000D0B4D /* PVConflictViewController.swift in Sources */, 378F4A031B63D7CD0065FA39 /* GCDWebServerRequest.m in Sources */, @@ -2650,6 +2941,7 @@ B3890BE420B97588005BB001 /* PVGameLibraryViewController+PeekPop.swift in Sources */, B3447E73218B596600557ACE /* PVDreamcastControllerViewController.swift in Sources */, B3E6DADC20B7AD1500454DD4 /* PVLogViewController.m in Sources */, + B382C649278E626D007E61FE /* PVGPUViewController.m in Sources */, C665CD8421FEC68E00C834C6 /* GCControllerExtensions.swift in Sources */, 378F4A0A1B63D7CD0065FA39 /* GCDWebServerErrorResponse.m in Sources */, B34EADAE218824C2008F52EE /* PViCadeControllerViewController.swift in Sources */, @@ -2657,7 +2949,10 @@ 1A3D433B17B30BA3004DFFFC /* PVGLViewController.m in Sources */, B3F43DE22169DB4000CDD40A /* SystemsSettingsTableViewController.swift in Sources */, B378225721D32B0B0077E86F /* SliderRow.swift in Sources */, + B3A4FB66278FFB6600A65248 /* Result+Conveniences.swift in Sources */, B378224A21D329EC0077E86F /* SettingsRowSwitch.swift in Sources */, + B382C635278E5055007E61FE /* PVEmulatorViewController+Audio.swift in Sources */, + B382C63D278E514A007E61FE /* PVEmulatorViewController+CoreOptions.swift in Sources */, B3AB37392187F569009D9244 /* PVVBControllerViewController.swift in Sources */, B3437178276B0B650014F87C /* PV3DOControllerViewController.swift in Sources */, B354E7D2219A9C230041F971 /* CoreOptionsViewController.swift in Sources */, @@ -2667,12 +2962,16 @@ B3411C1A276B470C00D85327 /* NavigationRow.swift in Sources */, 378F4A0E1B63D7CD0065FA39 /* GCDWebUploader.m in Sources */, 1A2FB10C206EF07C00A1F942 /* PVSaveStateCollectionViewCell.swift in Sources */, + B3375EC2278EA28E004B0DC0 /* blit_ps.metal in Sources */, B3AB37422187F569009D9244 /* PVNeoGeoPocketControllerViewController.swift in Sources */, B394C98A20609E180014A65D /* UIColor+Hex.swift in Sources */, 42BC83A917E6775E00E9A607 /* PVGameLibrarySectionHeaderView.swift in Sources */, B3B923B0202D2EAE00580FFC /* Theme.swift in Sources */, + B3A4FB60278FF84800A65248 /* ApplicationMonitor.swift in Sources */, + B398800D27A521AC004DEFCA /* ConflictsController.swift in Sources */, CF17114E2586A13100258602 /* PVCheatsTableViewCell.swift in Sources */, B3AB37342187F569009D9244 /* PVGBControllerViewController.swift in Sources */, + B3375EC4278EA28E004B0DC0 /* MetalViewShaders.metal in Sources */, B3532C3C21A9AC93006CDA0F /* Services.swift in Sources */, 1180B3242492AFC900636C8A /* PVGameLibraryUpdatesController.swift in Sources */, B3AB37382187F569009D9244 /* PVGBAControllerViewController.swift in Sources */, @@ -2680,15 +2979,21 @@ B36D9DF8203562E000D583C4 /* PVControllerViewController.swift in Sources */, 378F4A021B63D7CD0065FA39 /* GCDWebServerFunctions.m in Sources */, B35E6C2F207ED7050040709A /* AppearanceStyle.swift in Sources */, + B3A4FB62278FFA0F00A65248 /* LocationManager.swift in Sources */, B35E6C27207ED7050040709A /* AppearanceStyleable.swift in Sources */, + B3375EC0278EA28E004B0DC0 /* MameShaders.metal in Sources */, B3D534E220AFF21900A83D4E /* Version.swift in Sources */, + B37B71B0278E33B9005FB278 /* MenuButton.swift in Sources */, + EF56AA6227A21CBC0097AD05 /* TVAlertController.swift in Sources */, B343717A276B0B650014F87C /* PVColecoVisionControllerViewController.swift in Sources */, + B3375ECC278EA28E004B0DC0 /* lineTron.metal in Sources */, B35E6C23207ED7050040709A /* UIAppearanceExtensions.swift in Sources */, B35E6C29207ED7050040709A /* AppearanceStyleExtensions.swift in Sources */, B3AB37442187F569009D9244 /* PVNESControllerViewController.swift in Sources */, B354E7C2219A7D630041F971 /* SystemSettingsHeaderCell.swift in Sources */, B3411C1F276B470C00D85327 /* Section.swift in Sources */, B378225421D32AD60077E86F /* SliderCell.swift in Sources */, + B37B71AD278E3198005FB278 /* UIViewController+Alerts.swift in Sources */, B343717D276B0FA40014F87C /* PVVectrexControllerViewController.swift in Sources */, B387676C20BD0F43009D8CD2 /* WebServerActivatorController.swift in Sources */, B35E6C31207ED7050040709A /* AppearanceStyleHelpers.swift in Sources */, @@ -2697,6 +3002,7 @@ 378F4A011B63D7CD0065FA39 /* GCDWebServerConnection.m in Sources */, B3411C20276B470C00D85327 /* DetailText.swift in Sources */, 378F4A111B63DCF00065FA39 /* PVWebServer.m in Sources */, + B3A4FB64278FFA5100A65248 /* PublishedPipeline.swift in Sources */, 378F4A061B63D7CD0065FA39 /* GCDWebServerFileRequest.m in Sources */, 378F4A0B1B63D7CD0065FA39 /* GCDWebServerFileResponse.m in Sources */, 1A65D1C619917D55004E1777 /* UIImage+ImageEffects.m in Sources */, @@ -2742,11 +3048,15 @@ B3411C17276B470B00D85327 /* OptionRow.swift in Sources */, B36D9DFD203605BC00D583C4 /* PVCoreFactory.swift in Sources */, 378F4A0C1B63D7CD0065FA39 /* GCDWebServerStreamedResponse.m in Sources */, + B382C639278E5055007E61FE /* PVEmulatorViewController+Controllers.swift in Sources */, B3437176276B0B650014F87C /* PVIntellivisionControllerViewController.swift in Sources */, 1180B305248EB8C300636C8A /* UISearchController+Rx.swift in Sources */, CF1710942585917A00258602 /* PVCheatsViewController.swift in Sources */, B3054371272026E800F5257D /* PVPSPControllerViewController.swift in Sources */, B3890BF420B995A9005BB001 /* PVGameLibraryViewController+CollectionView.swift in Sources */, + B3375ECA278EA28E004B0DC0 /* simpleCRT.metal in Sources */, + B3375EC6278EA28E004B0DC0 /* fullscreen_vs.metal in Sources */, + B3375EC8278EA28E004B0DC0 /* megaTron.metal in Sources */, B3411C21276B470C00D85327 /* TapActionCell.swift in Sources */, B302F31421713AFD000322B9 /* CenterFlowLayout.swift in Sources */, B3411C22276B470C00D85327 /* SwitchCell.swift in Sources */, @@ -2760,13 +3070,16 @@ B3411C27276B472900D85327 /* RowCompatible.swift in Sources */, CF87D486258ADDD100838AF8 /* PVCheatsHeaderView.swift in Sources */, CF87D487258ADDD100838AF8 /* PVCheatsViewController.swift in Sources */, + B3375EC9278EA28E004B0DC0 /* megaTron.metal in Sources */, CF87D488258ADDD100838AF8 /* PVCheatsInfoViewController.swift in Sources */, CF87D489258ADDD100838AF8 /* PVCheatsTableViewCell.swift in Sources */, CF87D47E258ADDA500838AF8 /* PVEmulatorViewController+Cheats.swift in Sources */, B3B104D1218F2EF400210C39 /* PVSaturnControllerViewController.swift in Sources */, 1FE10F291D94ECC600A20D1A /* PVAppearanceViewController.swift in Sources */, B3D5E2C0218EC62E0015C690 /* Sections.swift in Sources */, + B3375EBF278EA28E004B0DC0 /* ulTron.metal in Sources */, B3B104BF218F2EC000210C39 /* JSButton.swift in Sources */, + B382C638278E5055007E61FE /* PVEmulatorViewController+MultiDisc.swift in Sources */, B306E0D02769F2C2001DC52E /* PVOdyssey2ControllerViewController.swift in Sources */, B3411C2E276B472900D85327 /* TapActionRow.swift in Sources */, B35E6C30207ED7050040709A /* AppearanceStyle.swift in Sources */, @@ -2782,7 +3095,10 @@ B3532C3D21A9AC93006CDA0F /* Services.swift in Sources */, B31117B0218EB3A900C495A2 /* PVEmulatorViewController.swift in Sources */, 1AD481E51BA3546600FDA50A /* PVGLViewController.m in Sources */, + B3375EC5278EA28E004B0DC0 /* MetalViewShaders.metal in Sources */, B369B0DD21A3BF7C0064EDCA /* PVSettingsViewController.swift in Sources */, + EF474BAA279E63B800578663 /* TVAlertController.swift in Sources */, + B382C636278E5055007E61FE /* PVEmulatorViewController+Audio.swift in Sources */, B3F94A4C27093794002A71EF /* PVAppDelegate+AppCenter.swift in Sources */, 11A8A9E72496A3E500C1C6B4 /* PVGameLibraryUpdatesController.swift in Sources */, B354E7C3219A7D630041F971 /* SystemSettingsHeaderCell.swift in Sources */, @@ -2797,6 +3113,7 @@ B3B104C9218F2EF400210C39 /* PVLynxControllerViewController.swift in Sources */, B35E6C28207ED7050040709A /* AppearanceStyleable.swift in Sources */, 1A2B13CD1D0DFF5100D0B863 /* PVSearchViewController.swift in Sources */, + B37B71AE278E3198005FB278 /* UIViewController+Alerts.swift in Sources */, 1AD481DC1BA3544500FDA50A /* GCDWebServerDataRequest.m in Sources */, B32746BE219BD65F00B78124 /* PVGameLibraryCollectionFlowLayout.swift in Sources */, B3290499270D1F95002707AC /* PVAppDelegate+NitoTV.swift in Sources */, @@ -2805,12 +3122,14 @@ B3D534E320AFF21900A83D4E /* Version.swift in Sources */, B3411C2B276B472900D85327 /* Deprecated.swift in Sources */, B3CCD2BB21DAA8D30031C42C /* PVEmulatorViewController+Saves.swift in Sources */, + B382C63E278E514A007E61FE /* PVEmulatorViewController+CoreOptions.swift in Sources */, B378224B21D329FB0077E86F /* SettingsRowSwitch.swift in Sources */, B343717E276B0FA40014F87C /* PVVectrexControllerViewController.swift in Sources */, B3411BF9276B37DE00D85327 /* PVDSControllerViewController.swift in Sources */, 1AD481EE1BA3548800FDA50A /* MBProgressHUD.m in Sources */, B3B104CD218F2EF400210C39 /* PVPCEControllerViewController.swift in Sources */, B3B104C4218F2EF400210C39 /* PVAtariJaguarControllerViewController.swift in Sources */, + B382C64A278E626D007E61FE /* PVGPUViewController.m in Sources */, B3B104C6218F2EF400210C39 /* PVGBAControllerViewController.swift in Sources */, B3F64EC9205CBC6100C273C7 /* PVLicensesViewController.swift in Sources */, 1AD481C91BA3530B00FDA50A /* PVAppDelegate.swift in Sources */, @@ -2827,14 +3146,18 @@ B3B104C0218F2EF400210C39 /* PV32XControllerViewController.swift in Sources */, B354E7C0219A7D250041F971 /* SystemSettingsCell.swift in Sources */, B3411C31276B472900D85327 /* Row.swift in Sources */, + B3375EC3278EA28E004B0DC0 /* blit_ps.metal in Sources */, B3411C2A276B472900D85327 /* RowStyle.swift in Sources */, 1AD481E21BA3545B00FDA50A /* GCDWebServerFileResponse.m in Sources */, B3532B2C21A78FB2006CDA0F /* PVSwitchCell.swift in Sources */, + B3375ECB278EA28E004B0DC0 /* simpleCRT.metal in Sources */, B3D534ED20B001D700A83D4E /* PillPageControl.swift in Sources */, B354E7C7219A7D9D0041F971 /* SystemOverviewViewModel.swift in Sources */, + B398800E27A521AC004DEFCA /* ConflictsController.swift in Sources */, B3A32151218EB4D800BD7DA2 /* UIView+FrameAdditions.swift in Sources */, 1AD481E01BA3545400FDA50A /* GCDWebServerDataResponse.m in Sources */, B35E6C2A207ED7050040709A /* AppearanceStyleExtensions.swift in Sources */, + B3375EC1278EA28E004B0DC0 /* MameShaders.metal in Sources */, B3437179276B0B650014F87C /* PV3DOControllerViewController.swift in Sources */, 1AD481D41BA3542200FDA50A /* PVWebServer.m in Sources */, B3890BF520B995A9005BB001 /* PVGameLibraryViewController+CollectionView.swift in Sources */, @@ -2844,8 +3167,10 @@ 1A2FB10A206EE8A700A1F942 /* PVSaveStatesViewController.swift in Sources */, B3411C2D276B472900D85327 /* TapActionCell.swift in Sources */, B3411C24276B472900D85327 /* RadioSection.swift in Sources */, + B3375ECD278EA28E004B0DC0 /* lineTron.metal in Sources */, 1AD481DE1BA3544A00FDA50A /* GCDWebServerMultiPartFormRequest.m in Sources */, 1AD481DA1BA3543E00FDA50A /* GCDWebServerRequest.m in Sources */, + B3375EBD278EA28E004B0DC0 /* crt_filter_ps.metal in Sources */, B3D5E2AF218EC1AE0015C690 /* RealmBindObserver.swift in Sources */, 1A2FB110206EF29E00A1F942 /* PVSaveStateHeaderView.swift in Sources */, B35E6C26207ED7050040709A /* UIApplicationExtensions.swift in Sources */, @@ -2860,11 +3185,13 @@ B3A40C7221A67C7800544C20 /* PVGameLibrarySectionFooterView.swift in Sources */, B3589E32219E8C5B001C5E12 /* LogViewable.swift in Sources */, B3D5E2B1218EC1AE0015C690 /* Reactive+RxRealmDataSources.swift in Sources */, - 11ADB31F2471A34E001C7B27 /* PVTVTabBarController.swift in Sources */, + EF474BA8279CCDD200578663 /* TVFullscreenController.swift in Sources */, 11AFB2B72487C120000A3922 /* UISearchController+Rx.swift in Sources */, + B37B71B1278E33B9005FB278 /* MenuButton.swift in Sources */, B3B104C5218F2EF400210C39 /* PVDreamcastControllerViewController.swift in Sources */, B3B104CE218F2EF400210C39 /* PVPCFXControllerViewController.swift in Sources */, B3D5E2B3218EC1AE0015C690 /* RxTableViewRealmDataSource.swift in Sources */, + B382C63A278E5055007E61FE /* PVEmulatorViewController+Controllers.swift in Sources */, B3411C32276B472900D85327 /* SwitchCell.swift in Sources */, 1AD481DF1BA3544D00FDA50A /* GCDWebServerURLEncodedFormRequest.m in Sources */, 1AD481DB1BA3544100FDA50A /* GCDWebServerResponse.m in Sources */, @@ -2874,6 +3201,7 @@ B387676D20BD0F43009D8CD2 /* WebServerActivatorController.swift in Sources */, B313544826E4C0F90047F338 /* PVPS2ControllerViewController.swift in Sources */, B3B104D6218F2F2800210C39 /* PVButtonGroupOverlayView.swift in Sources */, + B382C643278E55C9007E61FE /* PVMetalViewController.m in Sources */, 1180B30824924AEA00636C8A /* UICollectionView+Rx.swift in Sources */, B343717B276B0B650014F87C /* PVColecoVisionControllerViewController.swift in Sources */, B3437177276B0B650014F87C /* PVIntellivisionControllerViewController.swift in Sources */, @@ -2884,6 +3212,7 @@ 1AD481F61BA3549F00FDA50A /* UIImage+ImageEffects.m in Sources */, B3A320382720974F00F338F6 /* PVGameCubeControllerViewController.swift in Sources */, B33468D720AB392C00092CA6 /* CollectionViewInCollectionViewCell.swift in Sources */, + B3375EC7278EA28E004B0DC0 /* fullscreen_vs.metal in Sources */, B3B104C7218F2EF400210C39 /* PVGBControllerViewController.swift in Sources */, B3B104CC218F2EF400210C39 /* PVNESControllerViewController.swift in Sources */, B35E6C24207ED7050040709A /* UIAppearanceExtensions.swift in Sources */, @@ -2991,6 +3320,11 @@ target = B3B29D3F2156177100903290 /* Create Version files */; targetProxy = B3B29D4B2156185700903290 /* PBXContainerItemProxy */; }; + B3B4C954279E69AD00505424 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BE9FDCB61C210B9E0046DF0E /* TopShelf */; + targetProxy = B3B4C953279E69AD00505424 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -2999,6 +3333,11 @@ children = ( 1A3D40A117B2DCE4004DFFFC /* en */, B3296EA926CABE760088AC32 /* zh-Hans */, + B3CEC5A72794CD8D004A7CC1 /* es */, + B311B1D427A53E7500D1DE41 /* ru */, + B311B1E127A53F9E00D1DE41 /* ja */, + B311B1EE27A53FC500D1DE41 /* nl */, + B311B1FB27A53FF000D1DE41 /* it */, ); name = InfoPlist.strings; sourceTree = ""; @@ -3008,6 +3347,11 @@ children = ( B3296EAB26CABE880088AC32 /* en */, B3296EAE26CABE950088AC32 /* zh-Hans */, + B3CEC5A82794CD8E004A7CC1 /* es */, + B311B1D527A53E7600D1DE41 /* ru */, + B311B1E227A53F9E00D1DE41 /* ja */, + B311B1EF27A53FC500D1DE41 /* nl */, + B311B1FC27A53FF100D1DE41 /* it */, ); name = Provenance.storyboard; sourceTree = ""; @@ -3017,6 +3361,11 @@ children = ( B3296EB026CABEA80088AC32 /* en */, B3296EBD26CABF6D0088AC32 /* zh-Hans */, + B3CEC5A92794CD8E004A7CC1 /* es */, + B311B1D627A53E7700D1DE41 /* ru */, + B311B1E327A53F9F00D1DE41 /* ja */, + B311B1F027A53FC600D1DE41 /* nl */, + B311B1FD27A53FF100D1DE41 /* it */, ); name = SaveStates.storyboard; sourceTree = ""; @@ -3026,6 +3375,11 @@ children = ( B3296EB326CABEE00088AC32 /* en */, B3296EB926CABF300088AC32 /* zh-Hans */, + B3CEC5AA2794CD8F004A7CC1 /* es */, + B311B1D727A53E7800D1DE41 /* ru */, + B311B1E427A53FA000D1DE41 /* ja */, + B311B1F127A53FC700D1DE41 /* nl */, + B311B1FE27A53FF200D1DE41 /* it */, ); name = Settings.storyboard; sourceTree = ""; @@ -3035,6 +3389,11 @@ children = ( B3296EB626CABF250088AC32 /* en */, B3296EBB26CABF340088AC32 /* zh-Hans */, + B3CEC5AC2794CD91004A7CC1 /* es */, + B311B1D927A53E7B00D1DE41 /* ru */, + B311B1E627A53FA100D1DE41 /* ja */, + B311B1F327A53FC800D1DE41 /* nl */, + B311B20027A53FF300D1DE41 /* it */, ); name = Cheats.storyboard; sourceTree = ""; @@ -3044,6 +3403,11 @@ children = ( B3296EBF26CABF9F0088AC32 /* en */, B3296EC226CABFA70088AC32 /* zh-Hans */, + B3CEC5AD2794CD92004A7CC1 /* es */, + B311B1DA27A53E7C00D1DE41 /* ru */, + B311B1E727A53FA200D1DE41 /* ja */, + B311B1F427A53FC900D1DE41 /* nl */, + B311B20127A53FF400D1DE41 /* it */, ); name = Provenance.storyboard; sourceTree = ""; @@ -3053,6 +3417,11 @@ children = ( B3296EC426CABFB00088AC32 /* en */, B3296EC726CABFB90088AC32 /* zh-Hans */, + B3CEC5AE2794CD92004A7CC1 /* es */, + B311B1DB27A53E7D00D1DE41 /* ru */, + B311B1E827A53FA200D1DE41 /* ja */, + B311B1F527A53FC900D1DE41 /* nl */, + B311B20227A53FF500D1DE41 /* it */, ); name = Settings.storyboard; sourceTree = ""; @@ -3062,6 +3431,11 @@ children = ( B3296EDB26CAC2220088AC32 /* zh-Hans */, B3296EDC26CAC2220088AC32 /* en */, + B3CEC5AF2794CD93004A7CC1 /* es */, + B311B1DC27A53E7E00D1DE41 /* ru */, + B311B1E927A53FA300D1DE41 /* ja */, + B311B1F627A53FCA00D1DE41 /* nl */, + B311B20327A53FF500D1DE41 /* it */, ); name = SaveStates.storyboard; sourceTree = ""; @@ -3071,6 +3445,11 @@ children = ( B3296ED026CABFDE0088AC32 /* en */, B3296EDD26CAC2320088AC32 /* zh-Hans */, + B3CEC5B02794CD94004A7CC1 /* es */, + B311B1DD27A53E7F00D1DE41 /* ru */, + B311B1EA27A53FA400D1DE41 /* ja */, + B311B1F727A53FCB00D1DE41 /* nl */, + B311B20427A53FF600D1DE41 /* it */, ); name = Cheats.storyboard; sourceTree = ""; @@ -3080,6 +3459,11 @@ children = ( B3296EDF26CAC27C0088AC32 /* en */, B3296EE126CAC2800088AC32 /* zh-Hans */, + B3CEC5A52794CD8B004A7CC1 /* es */, + B311B1D227A53E7200D1DE41 /* ru */, + B311B1DF27A53F9C00D1DE41 /* ja */, + B311B1EC27A53FC300D1DE41 /* nl */, + B311B1F927A53FEF00D1DE41 /* it */, ); name = PVGameLibraryCollectionViewCell.xib; sourceTree = ""; @@ -3089,6 +3473,11 @@ children = ( B3296EE326CAC2B10088AC32 /* en */, B3296EE526CAC2CA0088AC32 /* zh-Hans */, + B3CEC5AB2794CD90004A7CC1 /* es */, + B311B1D827A53E7900D1DE41 /* ru */, + B311B1E527A53FA000D1DE41 /* ja */, + B311B1F227A53FC700D1DE41 /* nl */, + B311B1FF27A53FF300D1DE41 /* it */, ); name = Default.xib; sourceTree = ""; @@ -3098,6 +3487,12 @@ children = ( B3296EE926CAC3ED0088AC32 /* en */, B3296EEB26CAC3F00088AC32 /* zh-Hans */, + B3CEC5A62794CD8C004A7CC1 /* es */, + B311B1D327A53E7400D1DE41 /* ru */, + B311B1E027A53F9D00D1DE41 /* ja */, + B311B1ED27A53FC400D1DE41 /* nl */, + B311B1FA27A53FEF00D1DE41 /* it */, + B3B66A7027B872BA00E2236B /* pt-BR */, ); name = Strings.strings; sourceTree = ""; @@ -3106,6 +3501,11 @@ isa = PBXVariantGroup; children = ( B37D31C9274A57F000D635E0 /* en */, + B3CEC5B12794CD94004A7CC1 /* es */, + B311B1DE27A53E8000D1DE41 /* ru */, + B311B1EB27A53FA400D1DE41 /* ja */, + B311B1F827A53FCB00D1DE41 /* nl */, + B311B20527A53FF700D1DE41 /* it */, ); name = Info.plist; sourceTree = ""; @@ -3123,6 +3523,7 @@ /* Begin XCBuildConfiguration section */ 1A3D40AF17B2DCE4004DFFFC /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B380EAC12759D689001B8532 /* Build.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; @@ -3151,6 +3552,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphonesimulator*]" = ""; COPY_PHASE_STRIP = NO; + DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)"; ENABLE_BITCODE = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -3170,12 +3572,13 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; ONLY_ACTIVE_ARCH = YES; OTHER_SWIFT_FLAGS = "-Xfrontend -warn-long-function-bodies=300 -Xfrontend -warn-long-expression-type-checking=200"; SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_VERSION = 5.0; - VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = "OpenGLES GLKit SteamController"; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = "OpenGLES GLKit"; VALID_ARCHS = "$(ARCHS_STANDARD)"; VERSIONING_SYSTEM = "apple-generic"; }; @@ -3183,6 +3586,7 @@ }; 1A3D40B017B2DCE4004DFFFC /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B380EAC12759D689001B8532 /* Build.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; @@ -3210,6 +3614,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphonesimulator*]" = ""; COPY_PHASE_STRIP = YES; + DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)"; ENABLE_BITCODE = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = NO; @@ -3222,6 +3627,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; OTHER_SWIFT_FLAGS = "-Xfrontend -warn-long-function-bodies=300 -Xfrontend -warn-long-expression-type-checking=200"; @@ -3230,7 +3636,7 @@ SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 5.0; VALIDATE_PRODUCT = YES; - VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = "OpenGLES GLKit SteamController"; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = "OpenGLES GLKit"; VALID_ARCHS = "$(ARCHS_STANDARD)"; VERSIONING_SYSTEM = "apple-generic"; }; @@ -3238,6 +3644,7 @@ }; 1A3D40B217B2DCE4004DFFFC /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758527B1E0BB0033C5D1 /* Build-iOS.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; APP_DISPLAY_NAME = "Prov Debug"; @@ -3248,9 +3655,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2779; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; "ENABLE_HARDENED_RUNTIME[sdk=macosx*]" = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Provenance/Provenance-Prefix.pch"; @@ -3266,15 +3671,14 @@ INFOPLIST_FILE = "Provenance/Provenance-Info.plist"; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; - MARKETING_VERSION = 2.0.4; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.provenance"; + MARKETING_VERSION = "$(MARKETING_VERSION)"; + OTHER_LDFLAGS = "$(inherited)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; SUPPORTS_MACCATALYST = YES; SWIFT_COMPILATION_MODE = singlefile; - SWIFT_OBJC_BRIDGING_HEADER = "Provenance-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "Provenance/Provenance-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_PRECOMPILE_BRIDGING_HEADER = NO; SWIFT_VERSION = 5.0; @@ -3287,6 +3691,7 @@ }; 1A3D40B317B2DCE4004DFFFC /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758527B1E0BB0033C5D1 /* Build-iOS.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; APP_DISPLAY_NAME = "$(TARGET_NAME)"; @@ -3297,8 +3702,6 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2779; - DEVELOPMENT_TEAM = S32Z3HMYVQ; "ENABLE_HARDENED_RUNTIME[sdk=macosx*]" = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Provenance/Provenance-Prefix.pch"; @@ -3314,15 +3717,14 @@ INFOPLIST_FILE = "Provenance/Provenance-Info.plist"; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; - MARKETING_VERSION = 2.0.4; + MARKETING_VERSION = "$(MARKETING_VERSION)"; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1 "; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.provenance"; + OTHER_LDFLAGS = "$(inherited)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; SUPPORTS_MACCATALYST = YES; - SWIFT_OBJC_BRIDGING_HEADER = "Provenance-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "Provenance/Provenance-Bridging-Header.h"; SWIFT_PRECOMPILE_BRIDGING_HEADER = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,6"; @@ -3334,6 +3736,7 @@ }; 1AD481C51BA350A500FDA50A /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758627B1E0BC0033C5D1 /* Build-tvOS.xcconfig */; buildSettings = { APP_DISPLAY_NAME = "Prov Debug"; ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; @@ -3346,9 +3749,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CODE_SIGN_ENTITLEMENTS = ProvenanceTV/Provenance.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2779; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -3368,14 +3769,13 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.0.4; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.provenance"; PRODUCT_NAME = Provenance; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; SWIFT_COMPILATION_MODE = singlefile; - SWIFT_OBJC_BRIDGING_HEADER = "ProvenanceTV-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "ProvenanceTV/ProvenanceTV-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = 3; TVOS_DEPLOYMENT_TARGET = 12.1; @@ -3384,6 +3784,7 @@ }; 1AD481C61BA350A500FDA50A /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758627B1E0BC0033C5D1 /* Build-tvOS.xcconfig */; buildSettings = { APP_DISPLAY_NAME = "${PRODUCT_NAME}"; ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; @@ -3397,9 +3798,7 @@ CODE_SIGN_ENTITLEMENTS = ProvenanceTV/Provenance.entitlements; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -3420,14 +3819,13 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.0.4; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.provenance"; PRODUCT_NAME = Provenance; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OBJC_BRIDGING_HEADER = "ProvenanceTV-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "ProvenanceTV/ProvenanceTV-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = 3; TVOS_DEPLOYMENT_TARGET = 12.1; @@ -3448,7 +3846,6 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_STRICT_OBJC_MSGSEND = YES; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", @@ -3511,7 +3908,6 @@ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; FRAMEWORK_SEARCH_PATHS = ( @@ -3555,6 +3951,7 @@ }; B305EF16276B4C74003AE510 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758727B1E27E0033C5D1 /* Build-watchOS.xcconfig */; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -3569,14 +3966,13 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MARKETING_VERSION = 1.0; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.Provenance-Watch"; + PRODUCT_BUNDLE_IDENTIFIER = "$(WATCH_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -3585,6 +3981,7 @@ }; B305EF17276B4C74003AE510 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758727B1E27E0033C5D1 /* Build-watchOS.xcconfig */; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -3600,15 +3997,14 @@ COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MARKETING_VERSION = 1.0; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.Provenance-Watch"; + PRODUCT_BUNDLE_IDENTIFIER = "$(WATCH_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; }; @@ -3616,6 +4012,7 @@ }; B305EF18276B4C74003AE510 /* Archive */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758727B1E27E0033C5D1 /* Build-watchOS.xcconfig */; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -3631,15 +4028,14 @@ COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MARKETING_VERSION = 1.0; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.Provenance-Watch"; + PRODUCT_BUNDLE_IDENTIFIER = "$(WATCH_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; }; @@ -3647,6 +4043,7 @@ }; B305EF1A276B4C74003AE510 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758727B1E27E0033C5D1 /* Build-watchOS.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -3664,7 +4061,6 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -3672,10 +4068,10 @@ IBSC_MODULE = Provenance_Watch_WatchKit_Extension; INFOPLIST_KEY_CFBundleDisplayName = "Provenance Watch WatchKit App"; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; - MARKETING_VERSION = 1.0; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.Provenance-Watch.watchkitapp"; + PRODUCT_BUNDLE_IDENTIFIER = "$(WATCH_APP_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; SKIP_INSTALL = YES; @@ -3689,6 +4085,7 @@ }; B305EF1B276B4C74003AE510 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758727B1E27E0033C5D1 /* Build-watchOS.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -3707,7 +4104,6 @@ COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -3716,10 +4112,10 @@ IBSC_MODULE = Provenance_Watch_WatchKit_Extension; INFOPLIST_KEY_CFBundleDisplayName = "Provenance Watch WatchKit App"; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; - MARKETING_VERSION = 1.0; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.Provenance-Watch.watchkitapp"; + PRODUCT_BUNDLE_IDENTIFIER = "$(WATCH_APP_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; SKIP_INSTALL = YES; @@ -3732,6 +4128,7 @@ }; B305EF1C276B4C74003AE510 /* Archive */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758727B1E27E0033C5D1 /* Build-watchOS.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -3750,7 +4147,6 @@ COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -3759,10 +4155,10 @@ IBSC_MODULE = Provenance_Watch_WatchKit_Extension; INFOPLIST_KEY_CFBundleDisplayName = "Provenance Watch WatchKit App"; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; - MARKETING_VERSION = 1.0; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.Provenance-Watch.watchkitapp"; + PRODUCT_BUNDLE_IDENTIFIER = "$(WATCH_APP_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; SKIP_INSTALL = YES; @@ -3775,6 +4171,7 @@ }; B305EF1E276B4C74003AE510 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758727B1E27E0033C5D1 /* Build-watchOS.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; CLANG_ANALYZER_NONNULL = YES; @@ -3791,7 +4188,6 @@ CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_ASSET_PATHS = "\"Provenance Watch WatchKit Extension/Preview Content\""; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_PREVIEWS = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -3799,7 +4195,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Provenance Watch WatchKit Extension/Info.plist"; INFOPLIST_KEY_CFBundleDisplayName = "Provenance Watch WatchKit Extension"; - INFOPLIST_KEY_CLKComplicationPrincipalClass = "$(PRODUCT_MODULE_NAME).ComplicationController"; + INFOPLIST_KEY_CLKComplicationPrincipalClass = Provenance_Watch_WatchKit_Extension.ComplicationController; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Provenance Emu. All rights reserved."; INFOPLIST_KEY_WKWatchOnly = YES; LD_RUNPATH_SEARCH_PATHS = ( @@ -3807,10 +4203,10 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.Provenance-Watch.watchkitapp.watchkitextension"; + PRODUCT_BUNDLE_IDENTIFIER = "$(WATCH_APP_EXTENSION_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "${TARGET_NAME}"; SDKROOT = watchos; SKIP_INSTALL = YES; @@ -3824,6 +4220,7 @@ }; B305EF1F276B4C74003AE510 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758727B1E27E0033C5D1 /* Build-watchOS.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; CLANG_ANALYZER_NONNULL = YES; @@ -3841,7 +4238,6 @@ CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = "\"Provenance Watch WatchKit Extension/Preview Content\""; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; ENABLE_PREVIEWS = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3850,7 +4246,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Provenance Watch WatchKit Extension/Info.plist"; INFOPLIST_KEY_CFBundleDisplayName = "Provenance Watch WatchKit Extension"; - INFOPLIST_KEY_CLKComplicationPrincipalClass = "$(PRODUCT_MODULE_NAME).ComplicationController"; + INFOPLIST_KEY_CLKComplicationPrincipalClass = Provenance_Watch_WatchKit_Extension.ComplicationController; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Provenance Emu. All rights reserved."; INFOPLIST_KEY_WKWatchOnly = YES; LD_RUNPATH_SEARCH_PATHS = ( @@ -3858,10 +4254,10 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.Provenance-Watch.watchkitapp.watchkitextension"; + PRODUCT_BUNDLE_IDENTIFIER = "$(WATCH_APP_EXTENSION_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "${TARGET_NAME}"; SDKROOT = watchos; SKIP_INSTALL = YES; @@ -3874,6 +4270,7 @@ }; B305EF20276B4C74003AE510 /* Archive */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758727B1E27E0033C5D1 /* Build-watchOS.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; CLANG_ANALYZER_NONNULL = YES; @@ -3891,7 +4288,6 @@ CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = "\"Provenance Watch WatchKit Extension/Preview Content\""; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; ENABLE_PREVIEWS = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3900,7 +4296,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Provenance Watch WatchKit Extension/Info.plist"; INFOPLIST_KEY_CFBundleDisplayName = "Provenance Watch WatchKit Extension"; - INFOPLIST_KEY_CLKComplicationPrincipalClass = "$(PRODUCT_MODULE_NAME).ComplicationController"; + INFOPLIST_KEY_CLKComplicationPrincipalClass = Provenance_Watch_WatchKit_Extension.ComplicationController; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Provenance Emu. All rights reserved."; INFOPLIST_KEY_WKWatchOnly = YES; LD_RUNPATH_SEARCH_PATHS = ( @@ -3908,10 +4304,10 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.Provenance-Watch.watchkitapp.watchkitextension"; + PRODUCT_BUNDLE_IDENTIFIER = "$(WATCH_APP_EXTENSION_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "${TARGET_NAME}"; SDKROOT = watchos; SKIP_INSTALL = YES; @@ -3922,8 +4318,33 @@ }; name = Archive; }; + B30E94862793B8BE00871E57 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + B30E94872793B8BE00871E57 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + B30E94882793B8BE00871E57 /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Archive; + }; B3721CEB21912B7400433E4C /* Archive */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B380EAC12759D689001B8532 /* Build.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; @@ -3951,6 +4372,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphonesimulator*]" = ""; COPY_PHASE_STRIP = YES; + DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)"; ENABLE_BITCODE = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -3969,7 +4391,7 @@ SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 5.0; VALIDATE_PRODUCT = YES; - VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = "OpenGLES GLKit SteamController"; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = "OpenGLES GLKit"; VALID_ARCHS = "$(ARCHS_STANDARD)"; VERSIONING_SYSTEM = "apple-generic"; }; @@ -3977,6 +4399,7 @@ }; B3721CEC21912B7400433E4C /* Archive */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758527B1E0BB0033C5D1 /* Build-iOS.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; APP_DISPLAY_NAME = "$(TARGET_NAME)"; @@ -3987,8 +4410,6 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2779; - DEVELOPMENT_TEAM = S32Z3HMYVQ; "ENABLE_HARDENED_RUNTIME[sdk=macosx*]" = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Provenance/Provenance-Prefix.pch"; @@ -4004,15 +4425,14 @@ INFOPLIST_FILE = "Provenance/Provenance-Info.plist"; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; - MARKETING_VERSION = 2.0.4; + MARKETING_VERSION = "$(MARKETING_VERSION)"; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1 "; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.provenance"; + OTHER_LDFLAGS = "$(inherited)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; SUPPORTS_MACCATALYST = YES; - SWIFT_OBJC_BRIDGING_HEADER = "Provenance-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "Provenance/Provenance-Bridging-Header.h"; SWIFT_PRECOMPILE_BRIDGING_HEADER = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,6"; @@ -4024,6 +4444,7 @@ }; B3721CED21912B7400433E4C /* Archive */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758627B1E0BC0033C5D1 /* Build-tvOS.xcconfig */; buildSettings = { APP_DISPLAY_NAME = "${PRODUCT_NAME}"; ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; @@ -4038,9 +4459,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -4061,13 +4480,12 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.0.4; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.provenance"; PRODUCT_NAME = Provenance; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; - SWIFT_OBJC_BRIDGING_HEADER = "ProvenanceTV-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "ProvenanceTV/ProvenanceTV-Bridging-Header.h"; TARGETED_DEVICE_FAMILY = 3; TVOS_DEPLOYMENT_TARGET = 12.1; }; @@ -4088,7 +4506,6 @@ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; FRAMEWORK_SEARCH_PATHS = ( @@ -4132,6 +4549,7 @@ }; B3721CEF21912B7400433E4C /* Archive */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758627B1E0BC0033C5D1 /* Build-tvOS.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -4143,9 +4561,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -4160,20 +4576,21 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.0.4; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.provenance.topshelf"; + PRODUCT_BUNDLE_IDENTIFIER = "$(TOPSHELF_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; SKIP_INSTALL = YES; - SWIFT_OBJC_BRIDGING_HEADER = "TopShelf-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "TopShelf/TopShelf-Bridging-Header.h"; TVOS_DEPLOYMENT_TARGET = 12.1; }; name = Archive; }; B3721CF021912B7400433E4C /* Archive */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B326758527B1E0BB0033C5D1 /* Build-iOS.xcconfig */; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -4188,9 +4605,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -4202,16 +4617,16 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.0.4; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = NO; OTHER_SWIFT_FLAGS = "-Xfrontend -warn-long-function-bodies=200 -Xfrontend -warn-long-expression-type-checking=200"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.provenance.spotlight"; + PRODUCT_BUNDLE_IDENTIFIER = "$(SPOTLIGHT_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SUPPORTS_MACCATALYST = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = EXTENSION; - SWIFT_OBJC_BRIDGING_HEADER = "Spotlight-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "Spotlight/Spotlight-Bridging-Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,6"; }; @@ -4309,9 +4724,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_ENTITLEMENTS = Spotlight/Spotlight.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2779; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -4322,17 +4735,17 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.0.4; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = YES; OTHER_SWIFT_FLAGS = "-Xfrontend -warn-long-function-bodies=200 -Xfrontend -warn-long-expression-type-checking=200"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.provenance.spotlight"; + PRODUCT_BUNDLE_IDENTIFIER = "$(SPOTLIGHT_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SUPPORTS_MACCATALYST = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG EXTENSION"; SWIFT_COMPILATION_MODE = singlefile; - SWIFT_OBJC_BRIDGING_HEADER = "Spotlight-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "Spotlight/Spotlight-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,6"; @@ -4354,9 +4767,7 @@ CODE_SIGN_ENTITLEMENTS = Spotlight/Spotlight.entitlements; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -4368,16 +4779,16 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.0.4; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = NO; OTHER_SWIFT_FLAGS = "-Xfrontend -warn-long-function-bodies=200 -Xfrontend -warn-long-expression-type-checking=200"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.provenance.spotlight"; + PRODUCT_BUNDLE_IDENTIFIER = "$(SPOTLIGHT_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SUPPORTS_MACCATALYST = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = EXTENSION; - SWIFT_OBJC_BRIDGING_HEADER = "Spotlight-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "Spotlight/Spotlight-Bridging-Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,6"; }; @@ -4394,9 +4805,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CODE_SIGN_ENTITLEMENTS = TopShelf/TopShelf.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2779; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -4410,14 +4819,14 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.0.4; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.provenance.topshelf"; + PRODUCT_BUNDLE_IDENTIFIER = "$(TOPSHELF_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; SKIP_INSTALL = YES; - SWIFT_OBJC_BRIDGING_HEADER = "TopShelf-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "TopShelf/TopShelf-Bridging-Header.h"; TVOS_DEPLOYMENT_TARGET = 12.1; }; name = Debug; @@ -4434,9 +4843,7 @@ CODE_SIGN_ENTITLEMENTS = TopShelf/TopShelf.entitlements; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2779; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -4451,14 +4858,14 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.0.4; + MARKETING_VERSION = "$(MARKETING_VERSION)"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.provenance.topshelf"; + PRODUCT_BUNDLE_IDENTIFIER = "$(TOPSHELF_PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; SKIP_INSTALL = YES; - SWIFT_OBJC_BRIDGING_HEADER = "TopShelf-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "TopShelf/TopShelf-Bridging-Header.h"; TVOS_DEPLOYMENT_TARGET = 12.1; }; name = Release; @@ -4536,6 +4943,16 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + B30E94852793B8BE00871E57 /* Build configuration list for PBXAggregateTarget "Check CodeSigning" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30E94862793B8BE00871E57 /* Debug */, + B30E94872793B8BE00871E57 /* Release */, + B30E94882793B8BE00871E57 /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; B383225E26ED9C530029D12F /* Build configuration list for PBXAggregateTarget "Check Git Submodules" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4609,16 +5026,8 @@ isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/Provenance-Emu/SteamController.git"; requirement = { - kind = exactVersion; - version = 1.3.1; - }; - }; - B3F1876F2720B7FE00659D87 /* XCRemoteSwiftPackageReference "RxDataSources" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/RxSwiftCommunity/RxDataSources.git"; - requirement = { - kind = upToNextMinorVersion; - minimumVersion = 5.0.0; + branch = master; + kind = branch; }; }; /* End XCRemoteSwiftPackageReference section */ @@ -4644,26 +5053,6 @@ package = B3D30FBD26F0B4CD0064603F /* XCRemoteSwiftPackageReference "SteamController" */; productName = SteamController; }; - B3F187702720B7FE00659D87 /* Differentiator */ = { - isa = XCSwiftPackageProductDependency; - package = B3F1876F2720B7FE00659D87 /* XCRemoteSwiftPackageReference "RxDataSources" */; - productName = Differentiator; - }; - B3F187722720B7FE00659D87 /* RxDataSources */ = { - isa = XCSwiftPackageProductDependency; - package = B3F1876F2720B7FE00659D87 /* XCRemoteSwiftPackageReference "RxDataSources" */; - productName = RxDataSources; - }; - B3F187742720B80C00659D87 /* RxDataSources */ = { - isa = XCSwiftPackageProductDependency; - package = B3F1876F2720B7FE00659D87 /* XCRemoteSwiftPackageReference "RxDataSources" */; - productName = RxDataSources; - }; - B3F187762720B81100659D87 /* Differentiator */ = { - isa = XCSwiftPackageProductDependency; - package = B3F1876F2720B7FE00659D87 /* XCRemoteSwiftPackageReference "RxDataSources" */; - productName = Differentiator; - }; B3F94A4D27093ABC002A71EF /* AppCenterAnalytics */ = { isa = XCSwiftPackageProductDependency; package = B357A43627092253002C7C0F /* XCRemoteSwiftPackageReference "appcenter-sdk-apple" */; diff --git a/Provenance.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Provenance.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Provenance.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Provenance.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Provenance.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 2145efb154..74fce99153 100644 --- a/Provenance.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Provenance.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -2,12 +2,57 @@ "object": { "pins": [ { - "package": "QuickTableViewController", - "repositoryURL": "https://github.com/bcylin/QuickTableViewController.git", + "package": "AltKit", + "repositoryURL": "https://github.com/rileytestut/AltKit", "state": { "branch": null, - "revision": "574885ec390c434f39636e2c0c68860f7f3cd168", - "version": "1.3.1" + "revision": "f799f60ef6fa8b9676b4102b7dfa169fb40b6c92", + "version": "0.0.2" + } + }, + { + "package": "AppCenter", + "repositoryURL": "https://github.com/microsoft/appcenter-sdk-apple.git", + "state": { + "branch": null, + "revision": "25f64229373de97ff3920941cd52203193e5d8be", + "version": "4.3.0" + } + }, + { + "package": "PLCrashReporter", + "repositoryURL": "https://github.com/microsoft/PLCrashReporter.git", + "state": { + "branch": null, + "revision": "6b27393cad517c067dceea85fadf050e70c4ceaa", + "version": "1.10.1" + } + }, + { + "package": "RxDataSources", + "repositoryURL": "https://github.com/RxSwiftCommunity/RxDataSources.git", + "state": { + "branch": null, + "revision": "90c29b48b628479097fe775ed1966d75ac374518", + "version": "5.0.2" + } + }, + { + "package": "RxSwift", + "repositoryURL": "https://github.com/ReactiveX/RxSwift.git", + "state": { + "branch": null, + "revision": "b4307ba0b6425c0ba4178e138799946c3da594f8", + "version": "6.5.0" + } + }, + { + "package": "SteamController", + "repositoryURL": "https://github.com/Provenance-Emu/SteamController.git", + "state": { + "branch": "master", + "revision": "55d2fe0484f4cc5ed3535033af6b0218621e37b2", + "version": null } } ] diff --git a/Provenance.xcodeproj/xcshareddata/xcschemes/Provenance Watch WatchKit App.xcscheme b/Provenance.xcodeproj/xcshareddata/xcschemes/Provenance Watch WatchKit App.xcscheme index 726edcdab9..02ab106d4d 100644 --- a/Provenance.xcodeproj/xcshareddata/xcschemes/Provenance Watch WatchKit App.xcscheme +++ b/Provenance.xcodeproj/xcshareddata/xcschemes/Provenance Watch WatchKit App.xcscheme @@ -54,10 +54,8 @@ debugDocumentVersioning = "YES" debugServiceExtension = "internal" allowLocationSimulation = "YES"> - + - + - + - - - - - + diff --git a/Provenance.xcodeproj/xcshareddata/xcschemes/ProvenanceTV.xcscheme b/Provenance.xcodeproj/xcshareddata/xcschemes/ProvenanceTV.xcscheme index 659ce551c6..3ae57f6706 100644 --- a/Provenance.xcodeproj/xcshareddata/xcschemes/ProvenanceTV.xcscheme +++ b/Provenance.xcodeproj/xcshareddata/xcschemes/ProvenanceTV.xcscheme @@ -4,7 +4,7 @@ version = "1.3"> + buildImplicitDependencies = "YES"> diff --git a/Provenance.xctestplan b/Provenance.xctestplan deleted file mode 100644 index 5107c1dcdf..0000000000 --- a/Provenance.xctestplan +++ /dev/null @@ -1,43 +0,0 @@ -{ - "configurations" : [ - { - "id" : "5A00E004-081B-4EC5-90A3-809906E98DBB", - "name" : "Configuration 1", - "options" : { - - } - } - ], - "defaultOptions" : { - "codeCoverage" : false, - "targetForVariableExpansion" : { - "containerPath" : "container:Provenance.xcodeproj", - "identifier" : "1A3D409317B2DCE4004DFFFC", - "name" : "Provenance" - } - }, - "testTargets" : [ - { - "target" : { - "containerPath" : "container:Provenance.xcodeproj", - "identifier" : "1AD9AA341ACC988F00EC87A0", - "name" : "Provenance Tests" - } - }, - { - "target" : { - "containerPath" : "container:PVLibrary\/PVLibrary.xcodeproj", - "identifier" : "B3C04B602107867200E7AF79", - "name" : "PVLibraryTests" - } - }, - { - "target" : { - "containerPath" : "container:PVSupport\/PVSupport.xcodeproj", - "identifier" : "B3532B3121A7B736006CDA0F", - "name" : "PVSupportTests" - } - } - ], - "version" : 1 -} diff --git a/Provenance.xcworkspace/contents.xcworkspacedata b/Provenance.xcworkspace/contents.xcworkspacedata index 8416595b3b..f4d2f84237 100644 --- a/Provenance.xcworkspace/contents.xcworkspacedata +++ b/Provenance.xcworkspace/contents.xcworkspacedata @@ -2,10 +2,10 @@ + location = "container:Provenance.xcodeproj"> + location = "group:PVUI/PVUI/PVUI.xcodeproj"> @@ -68,6 +68,9 @@ + + diff --git a/Provenance.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Provenance.xcworkspace/xcshareddata/swiftpm/Package.resolved index ea76ef7c95..23c5ff12bc 100644 --- a/Provenance.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Provenance.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,15 +1,6 @@ { "object": { "pins": [ - { - "package": "AltKit", - "repositoryURL": "https://github.com/rileytestut/AltKit", - "state": { - "branch": null, - "revision": "f799f60ef6fa8b9676b4102b7dfa169fb40b6c92", - "version": "0.0.2" - } - }, { "package": "AppCenter", "repositoryURL": "https://github.com/microsoft/appcenter-sdk-apple.git", @@ -24,8 +15,17 @@ "repositoryURL": "https://github.com/CocoaLumberjack/CocoaLumberjack.git", "state": { "branch": null, - "revision": "e518eb6e362df327574ba5e04269cd6d29f40aec", - "version": "3.7.2" + "revision": "80ada1f753b0d53d9b57c465936a7c4169375002", + "version": "3.7.4" + } + }, + { + "package": "NSLogger", + "repositoryURL": "https://github.com/fpillet/NSLogger", + "state": { + "branch": "master", + "revision": "3408cce1ff97bef20f3dcf367a02019b5c51d198", + "version": null } }, { @@ -51,8 +51,8 @@ "repositoryURL": "https://github.com/realm/realm-cocoa.git", "state": { "branch": null, - "revision": "328425bfc372ce77ec1f4f2701f61ececbb97d84", - "version": "10.19.0" + "revision": "e83cc9f28e8bccd477b6b81cee521c02239d2773", + "version": "10.20.2" } }, { @@ -60,8 +60,8 @@ "repositoryURL": "https://github.com/realm/realm-core", "state": { "branch": null, - "revision": "b170db6a47789ff5f2fbc3eeed0220b4b0a3f6b7", - "version": "11.6.0" + "revision": "c3c11a841642ac93c27bd1edd61f989fc0bfb809", + "version": "11.6.1" } }, { @@ -104,9 +104,9 @@ "package": "SteamController", "repositoryURL": "https://github.com/Provenance-Emu/SteamController.git", "state": { - "branch": null, - "revision": "59d257823a422da57c5acf57d56f740b4b8eb8dd", - "version": "1.3.1" + "branch": "master", + "revision": "55d2fe0484f4cc5ed3535033af6b0218621e37b2", + "version": null } }, { diff --git a/Provenance.xcworkspace/xcshareddata/xcschemes/Provenance-Release.xcscheme b/Provenance.xcworkspace/xcshareddata/xcschemes/Provenance-Release.xcscheme index f2f1c70dac..e7345db7b5 100644 --- a/Provenance.xcworkspace/xcshareddata/xcschemes/Provenance-Release.xcscheme +++ b/Provenance.xcworkspace/xcshareddata/xcschemes/Provenance-Release.xcscheme @@ -48,20 +48,6 @@ ReferencedContainer = "container:Cores/Gambatte/PVGB.xcodeproj"> - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Provenance.xcworkspace/xcshareddata/xcschemes/ProvenanceTV-Release.xcscheme b/Provenance.xcworkspace/xcshareddata/xcschemes/ProvenanceTV-Release.xcscheme index 820ece19e4..7af1f6717f 100644 --- a/Provenance.xcworkspace/xcshareddata/xcschemes/ProvenanceTV-Release.xcscheme +++ b/Provenance.xcworkspace/xcshareddata/xcschemes/ProvenanceTV-Release.xcscheme @@ -183,7 +183,7 @@ diff --git a/Provenance.xcworkspace/xcshareddata/xcschemes/ProvenanceTV.xcscheme b/Provenance.xcworkspace/xcshareddata/xcschemes/ProvenanceTV.xcscheme index a4ad39a3b4..e259e34bd7 100644 --- a/Provenance.xcworkspace/xcshareddata/xcschemes/ProvenanceTV.xcscheme +++ b/Provenance.xcworkspace/xcshareddata/xcschemes/ProvenanceTV.xcscheme @@ -225,7 +225,7 @@ diff --git a/Provenance/Categories/UIImage+ImageEffects.m b/Provenance/Categories/UIImage+ImageEffects.m index 1462784156..195eb1f264 100644 --- a/Provenance/Categories/UIImage+ImageEffects.m +++ b/Provenance/Categories/UIImage+ImageEffects.m @@ -219,7 +219,7 @@ - (UIImage *)applyBlurWithRadius:(CGFloat)blurRadius tintColor:(UIColor *)tintCo 0, 0, 0, 1, }; const int32_t divisor = 256; - NSUInteger matrixSize = sizeof(floatingPointSaturationMatrix)/sizeof(floatingPointSaturationMatrix[0]); + const NSUInteger matrixSize = sizeof(floatingPointSaturationMatrix)/sizeof(floatingPointSaturationMatrix[0]); int16_t saturationMatrix[matrixSize]; for (NSUInteger i = 0; i < matrixSize; ++i) { saturationMatrix[i] = (int16_t)roundf(floatingPointSaturationMatrix[i] * divisor); diff --git a/Provenance/Categories/UIViewController+Alerts.swift b/Provenance/Categories/UIViewController+Alerts.swift new file mode 100644 index 0000000000..ed800017eb --- /dev/null +++ b/Provenance/Categories/UIViewController+Alerts.swift @@ -0,0 +1,36 @@ +// +// UIViewController+Alerts.swift +// Provenance +// +// Created by Joseph Mattiello on 1/11/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import UIKit + +extension UIViewController { + func presentMessage(_ message: String, title: String, completion _: (() -> Swift.Void)? = nil) { + let alert = UIAlertController(title: title, message: message, preferredStyle: .alert) + alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) + + let presentingVC = presentedViewController ?? self + + if presentingVC.isBeingDismissed || presentingVC.isBeingPresented { + DispatchQueue.main.asyncAfter(deadline: .now() + 1) { + presentingVC.present(alert, animated: true, completion: nil) + } + } else { + presentingVC.present(alert, animated: true, completion: nil) + } + } + + func presentError(_ message: String, completion: (() -> Swift.Void)? = nil) { + ELOG("\(message)") + presentMessage(message, title: "Error", completion: completion) + } + + func presentWarning(_ message: String, completion: (() -> Swift.Void)? = nil) { + WLOG("\(message)") + presentMessage(message, title: "Warning", completion: completion) + } +} diff --git a/Provenance/Controller/GCControllerExtensions.swift b/Provenance/Controller/GCControllerExtensions.swift index 504564143a..3b0e1f4d30 100644 --- a/Provenance/Controller/GCControllerExtensions.swift +++ b/Provenance/Controller/GCControllerExtensions.swift @@ -8,14 +8,63 @@ import GameController +// MARK: ThumbSticks extension GCController { - func supportsThumbstickButtons() -> Bool { - if #available(iOS 12.1, tvOS 12.1, *) { - let controller = self.extendedGamepad - return (controller!.responds(to: #selector(getter: GCExtendedGamepad.leftThumbstickButton))) && controller!.leftThumbstickButton != nil + var supportsThumbstickButtons: Bool { + if #available(iOS 12.1, tvOS 12.1, *), let controller = self.extendedGamepad { + return (controller.responds(to: #selector(getter: GCExtendedGamepad.leftThumbstickButton))) && controller.leftThumbstickButton != nil } else { // Fallback on earlier versions } return false } } + +// MARK: Pause/Home +extension GCController { + func setupPauseHandler(onPause: @escaping () -> Void) { + + // Use buttonHome for iOS/tvOS14 and later + if let buttonHome = buttonHome { + buttonHome.pressedChangedHandler = { _, _, isPressed in + if isPressed { + onPause() + } + } + } + // Using buttonMenu is the recommended way for iOS/tvOS13 and later + if let buttonMenu = buttonMenu { + buttonMenu.pressedChangedHandler = { _, _, isPressed in + if isPressed { + onPause() + } + } + } else { + // Fallback to the old method + controllerPausedHandler = { _ in + onPause() + } + } + } + + private var buttonMenu: GCControllerButtonInput? { + if #available(iOS 13.0, tvOS 13.0, *) { + return extendedGamepad?.buttonMenu ?? microGamepad?.buttonMenu + } + return nil + } + + private var buttonOptions: GCControllerButtonInput? { + if #available(iOS 13.0, tvOS 13.0, *) { + return extendedGamepad?.buttonOptions + } + return nil + } + + private var buttonHome: GCControllerButtonInput? { + if #available(iOS 14.0, tvOS 14.0, *) { + return extendedGamepad?.buttonHome + } + return nil + } +} diff --git a/Provenance/Controller/JSDPad.swift b/Provenance/Controller/JSDPad.swift index 48a4bd7b0e..bcb1fde059 100644 --- a/Provenance/Controller/JSDPad.swift +++ b/Provenance/Controller/JSDPad.swift @@ -9,7 +9,7 @@ import PVSupport import UIKit -enum JSDPadDirection: Int { +enum JSDPadDirection: Int, CaseIterable { case upLeft = 1 case up case upRight @@ -21,12 +21,64 @@ enum JSDPadDirection: Int { case downRight } +typealias JoystickValue = (x: Float, y: Float) + protocol JSDPadDelegate: AnyObject { func dPad(_ dPad: JSDPad, didPress direction: JSDPadDirection) - func dPadDidReleaseDirection(_ dPad: JSDPad) + func dPad(_ dPad: JSDPad, joystick value: JoystickValue) + func dPad(_ dPad: JSDPad, didRelease direction: JSDPadDirection) } + final class JSDPad: UIView { + + public class func JoyPad(frame: CGRect) -> JSDPad { + let dpad = JSDPad.init(frame: frame) + dpad.analogMode = true + return dpad + } + + var analogMode: Bool = false { + didSet { + dPadImageView.isHidden = analogMode + } + } + + lazy var centerPoint: CGPoint = CGPoint(x: bounds.midX, y: bounds.midY) + lazy var analogPoint: CGPoint = centerPoint { + didSet { + let radius: CGFloat = (frame.size.width - 10)/12 + + let maxX = bounds.width - radius + let minX: CGFloat = radius + let maxY = bounds.height - radius + let minY: CGFloat = radius + + var point = analogPoint + var needUpdate = false + if point.x > maxX { + point.x = maxX + needUpdate = true + } else if point.x < minX { + point.x = minX + needUpdate = true + } + if point.y > maxY { + point.y = maxY + needUpdate = true + } else if point.y < minY { + point.y = minY + needUpdate = true + } + + if needUpdate { + analogPoint = point + } else { + setNeedsDisplay() + } + } + } + weak var delegate: JSDPadDelegate? private var currentDirection: JSDPadDirection = .none @@ -43,6 +95,7 @@ final class JSDPad: UIView { dPadImageView.layer.shadowRadius = 4.0 dPadImageView.layer.shadowOpacity = 0.75 dPadImageView.layer.shadowOffset = CGSize(width: 0.0, height: 1.0) + dPadImageView.isHidden = analogMode return dPadImageView }() @@ -110,37 +163,109 @@ final class JSDPad: UIView { } override func touchesBegan(_ touches: Set, with _: UIEvent?) { - let touch = touches.first! + guard let delegate = delegate, let touch = touches.first else { + return + } + let point = touch.location(in: self) - let direction: JSDPadDirection = self.direction(for: point) - if direction != currentDirection { - currentDirection = direction - dPadImageView.image = image(for: currentDirection) + if analogMode { + analogPoint = point + sendJoyPoint(point) + } else { + let direction: JSDPadDirection = self.direction(for: point) + if direction != currentDirection { + currentDirection = direction + dPadImageView.image = image(for: currentDirection) - delegate?.dPad(self, didPress: currentDirection) + delegate.dPad(self, didPress: currentDirection) + } } } + + private func sendJoyPoint(_ point: CGPoint) { + let x: CGFloat = (point.x / self.bounds.width) + let y: CGFloat = (point.y / self.bounds.height) + delegate!.dPad(self, joystick: (x: Float(x), y: Float(y))) + } override func touchesMoved(_ touches: Set, with _: UIEvent?) { - let touch = touches.first! + guard let delegate = delegate, let touch = touches.first else { + return + } + let point = touch.location(in: self) - let direction: JSDPadDirection = self.direction(for: point) - if direction != currentDirection { - currentDirection = direction - dPadImageView.image = image(for: currentDirection) - delegate?.dPad(self, didPress: currentDirection) + if analogMode { + analogPoint = point + sendJoyPoint(point) + } else { + let direction: JSDPadDirection = self.direction(for: point) + if direction != currentDirection { + currentDirection = direction + dPadImageView.image = image(for: currentDirection) + delegate.dPad(self, didPress: currentDirection) + } } } override func touchesCancelled(_: Set, with _: UIEvent?) { currentDirection = .none dPadImageView.image = image(for: currentDirection) - delegate?.dPadDidReleaseDirection(self) + + guard let delegate = delegate else { + return + } + + if analogMode { + analogPoint = centerPoint + sendJoyPoint(centerPoint) + } else { + JSDPadDirection.allCases.forEach { delegate.dPad(self, didRelease: $0) } + } } override func touchesEnded(_: Set, with _: UIEvent?) { currentDirection = .none dPadImageView.image = image(for: currentDirection) - delegate?.dPadDidReleaseDirection(self) + + guard let delegate = delegate else { + return + } + + if analogMode { + analogPoint = centerPoint + sendJoyPoint(centerPoint) + } else { + JSDPadDirection.allCases.forEach { delegate.dPad(self, didRelease: $0) } + } + } + + override func draw(_ rect: CGRect) { + guard analogMode else { + super.draw(rect) + return + } + // Get the Graphics Context + if let context = UIGraphicsGetCurrentContext() { + + context.clear(rect) + + // Set the circle outerline-width + context.setLineWidth(5.0) + + // Set the circle outerline-colour + tintColor?.set() + + // Create Circle + let radius = (frame.size.width - 10)/2 + context.addArc(center: centerPoint, radius: radius, startAngle: 0.0, endAngle: .pi * 2.0, clockwise: true) + + // Draw + context.strokePath() + + // Create touch point + context.addArc(center: analogPoint, radius: radius / 6, startAngle: 0.0, endAngle: .pi * 2.0, clockwise: true) + // Draw + context.fillPath() + } } } diff --git a/Provenance/Controller/MenuButton.swift b/Provenance/Controller/MenuButton.swift new file mode 100644 index 0000000000..effdf2087d --- /dev/null +++ b/Provenance/Controller/MenuButton.swift @@ -0,0 +1,13 @@ +// +// MenuButton.swift +// Provenance +// +// Created by Joseph Mattiello on 1/11/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import UIKit + +final class MenuButton: UIButton, HitAreaEnlarger { + var hitAreaInset: UIEdgeInsets = UIEdgeInsets(top: -5, left: -5, bottom: -5, right: -5) +} diff --git a/Provenance/Controller/PVControllerManager.swift b/Provenance/Controller/PVControllerManager.swift index 29923a7d50..ab286b9dbf 100644 --- a/Provenance/Controller/PVControllerManager.swift +++ b/Provenance/Controller/PVControllerManager.swift @@ -79,6 +79,7 @@ final class PVControllerManager: NSObject { } var iCadeController: PViCadeController? + var keyboardController: GCController? var hasControllers: Bool { return player1 != nil || player2 != nil || player3 != nil || player4 != nil } @@ -144,10 +145,10 @@ final class PVControllerManager: NSObject { override init() { super.init() - - // - if isSimulator { - return + + if #available(iOS 14.0, tvOS 14.0, *) { + NotificationCenter.default.addObserver(self, selector: #selector(PVControllerManager.handleKeyboardConnect(_:)), name: .GCKeyboardDidConnect, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(PVControllerManager.handleKeyboardDisconnect(_:)), name: .GCKeyboardDidDisconnect, object: nil) } NotificationCenter.default.addObserver(self, selector: #selector(PVControllerManager.handleControllerDidConnect(_:)), name: .GCControllerDidConnect, object: nil) @@ -203,8 +204,13 @@ final class PVControllerManager: NSObject { ELOG("Object wasn't a GCController") return } + + // ignore the bogus controller in the simulator + if isSimulator && (controller.vendorName == nil || controller.vendorName == "Gamepad") { + return + } -#if !targetEnvironment(macCatalyst) +#if !targetEnvironment(macCatalyst) && canImport(SteamController) if let steamController = controller as? SteamController { #if os(tvOS) // PVEmulatorViewController will set to controller mode if game is running @@ -220,6 +226,11 @@ final class PVControllerManager: NSObject { #endif ILOG("Controller connected: \(controller.vendorName ?? "No Vendor")") assign(controller) + #if os(iOS) + if self.controllerUserInteractionEnabled { + self.controllerUserInteractionEnabled = true + } + #endif } @objc func handleControllerDidDisconnect(_ note: Notification?) { @@ -256,6 +267,24 @@ final class PVControllerManager: NSObject { NotificationCenter.default.post(name: NSNotification.Name.PVControllerManagerControllerReassigned, object: self) } } + + @available(iOS 14.0, tvOS 14.0, *) + @objc func handleKeyboardConnect(_ note: Notification?) { + #if !targetEnvironment(simulator) + if let controller = GCKeyboard.coalesced?.createController() { + keyboardController = controller + NotificationCenter.default.post(name:.GCControllerDidConnect, object: controller) + } + #endif + } + + @available(iOS 14.0, tvOS 14.0, *) + @objc func handleKeyboardDisconnect(_ note: Notification?) { + if let controller = keyboardController { + keyboardController = nil + NotificationCenter.default.post(name:.GCControllerDidDisconnect, object:controller) + } + } override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) { if keyPath == "kICadeControllerSettingKey" { @@ -269,7 +298,7 @@ final class PVControllerManager: NSObject { listenForICadeControllers(window: nil) { () -> Void in } } -#if !targetEnvironment(macCatalyst) +#if !targetEnvironment(macCatalyst) && canImport(SteamController) func handleSteamControllerCombination(controller: SteamController, button: SteamControllerButton) { switch button { case .leftTrackpadClick: @@ -326,17 +355,27 @@ final class PVControllerManager: NSObject { func controller(forPlayer player: Int) -> GCController? { return allLiveControllers[player] } + + // a filtered and augmented version of CGControllers.controllers() + func controllers() -> [GCController] { + var controllers = GCController.controllers() + if let aController = iCadeController { + controllers.append(aController) + } + else if let aController = keyboardController { + controllers.append(aController) + } + // ignore the bogus controller in the simulator + if isSimulator { + controllers = controllers.filter({$0.vendorName != nil}) + } + return controllers + } @discardableResult func assignControllers() -> Bool { - var controllers = GCController.controllers() - if iCadeController != nil { - if let aController = iCadeController { - controllers.append(aController) - } - } var assigned = false - controllers.forEach { controller in + controllers().forEach { controller in if !allLiveControllers.contains(where: { (_, existingController) -> Bool in controller == existingController }) { @@ -358,8 +397,8 @@ final class PVControllerManager: NSObject { // if this is an extended controller, replace the first controller which is not extended (the Siri remote on tvOS). for i in 1 ... 4 { let previouslyAssignedController: GCController? = self.controller(forPlayer: i) - let newGamepadNotRemote = controller.extendedGamepad != nil - let previousGamepadNotRemote = previouslyAssignedController?.extendedGamepad != nil + let newGamepadNotRemote = !(controller.isRemote || controller.isKeyboard) + let previousGamepadNotRemote = !((previouslyAssignedController?.isRemote == true) || (previouslyAssignedController?.isKeyboard == true)) // Skip making duplicate if let previouslyAssignedController = previouslyAssignedController, previouslyAssignedController == controller { @@ -379,12 +418,385 @@ final class PVControllerManager: NSObject { } return false } - -#if !targetEnvironment(macCatalyst) + +#if !targetEnvironment(macCatalyst) && canImport(SteamController) func setSteamControllersMode(_ mode: SteamControllerMode) { for controller in SteamControllerManager.shared().controllers { controller.steamControllerMode = mode } } #endif + + // MARK: - Controller User Interaction (ie use controller to drive UX) + +#if os(iOS) + // + // make a *cheap* *simple* version of the FocusSystem + // get controller input and turn it into button presses menu,select,up,down,left,right + // NOTE we assume no cores or other parts of PV is using valueChangedHandler + // TODO: what happens if a controller get added/removed while controllerUserInteractionEnabled == true + // + var controllerUserInteractionEnabled: Bool = false { + didSet { + guard controllerUserInteractionEnabled else { + controllers().forEach { $0.extendedGamepad?.valueChangedHandler = nil } + return + } + controllers().forEach { controller in + var current_state = GCExtendedGamepad.ButtonState() + controller.extendedGamepad?.valueChangedHandler = { gamepad, element in + let state = gamepad.readButtonState() + let changed_state = current_state.symmetricDifference(state) + let changed_state_pressed = changed_state.intersection(state) + + let topVC = UIApplication.shared.keyWindow?.topViewController + + // send button press(s) to the top bannana + if let top = topVC as? ControllerButtonPress { + changed_state_pressed.forEach { + top.controllerButtonPress($0) + } + } else { + DLOG("topVC is not of type `ControllerButtonPress`") + } + // also send button press(s) to the top bannana's navigation controller + if let nav = topVC?.navigationController { + changed_state_pressed.forEach { + nav.controllerButtonPress($0) + } + } + // remember state so we can only send changes + current_state = state + } + } + } + } +#endif +} + +#if os(iOS) + +// MARK: - UIWindow::topViewController + +private extension UIWindow { + var topViewController: UIViewController? { + var top = self.rootViewController + top = (top as? UINavigationController)?.topViewController ?? top + while let presented = top?.presentedViewController { + top = presented + } + top = (top as? UINavigationController)?.topViewController ?? top + return top + } +} + +// MARK: - ControllerButtonPress protocol + +protocol ControllerButtonPress : UIViewController { + typealias ButtonType = GCExtendedGamepad.ButtonType + func controllerButtonPress(_ type:ButtonType) +} + +// MARK: - ControllerButtonPress - TVAlertController + +extension ControllerButtonPress where Self: TVAlertController { + func controllerButtonPress(_ type: ButtonType) { + VLOG("TVAlertController: \(type)") + switch type { + case .up: + moveDefaultAction(-1) + case .down: + moveDefaultAction(+1) + case .left: + moveDefaultAction(-1000) + case .right: + moveDefaultAction(+1000) + case .select: // (aka A or ENTER) + buttonPress(button(for: preferredAction)) + case .back: // (aka B or ESC) + // only automaticly dismiss if there is a cancel button + if cancelAction != nil { + presentingViewController?.dismiss(animated:true, completion:nil) + } + default: + break + } + } + private func moveDefaultAction(_ dir:Int) { + if let action = preferredAction, var idx = actions.firstIndex(of: action) { + if doubleStackHeight != 0 { + let n = self.doubleStackHeight + if dir == +1 && idx == n-1 {idx = n*2-1} + if dir == -1 && idx == n {idx = n+1} + if dir == -1 && idx == n*2 {idx = n} + if dir == +1000 && idx < n {idx = idx + n - 1000} + if dir == -1000 && idx < n*2 {idx = idx - n + 1000} + } + idx = idx + dir + if actions.indices.contains(idx) { + preferredAction = actions[idx] + button(for: action)?.isSelected = false + button(for: preferredAction)?.isSelected = true + } + } + else { + preferredAction = actions.first(where: {$0.style == .default && $0.isEnabled}) + button(for: preferredAction)?.isSelected = true + } + } +} + +// MARK: - ControllerButtonPress - UINavigationController + +extension UINavigationController : ControllerButtonPress { + + func controllerButtonPress(_ type: ButtonType) { + switch type { + case .cancel: + // if there is a BACK button, press it + if self.navigationBar.backItem != nil { + self.popViewController(animated: true) + } + // if there is a DONE button, press it + else if let bbi = self.navigationBar.topItem?.rightBarButtonItem { + if bbi.style == .done || bbi.action == NSSelectorFromString("done:") { + _ = bbi.target?.perform(bbi.action, with:bbi) + } + } + default: + break + } + } +} + +// MARK: - ControllerButtonPress - UITableViewController + +extension QuickTableViewController: ControllerButtonPressTableView {} +extension UITableViewController: ControllerButtonPressTableView {} +extension SortOptionsTableViewController: ControllerButtonPressTableView {} + +protocol ControllerButtonPressTableView: ControllerButtonPress { + var tableView: UITableView! { get } + var clearsSelectionOnViewWillAppear: Bool { get set } +} +extension ControllerButtonPressTableView { + + func controllerButtonPress(_ type: ButtonType) { + switch type { + case .select: + if let indexPath = tableView.indexPathForSelectedRow { + clearsSelectionOnViewWillAppear = false + tableView.delegate?.tableView?(tableView, didSelectRowAt: indexPath) + + if let cell = tableView.cellForRow(at: indexPath) { + if cell.accessoryType != .none { + tableView.delegate?.tableView?(tableView, accessoryButtonTappedForRowWith: indexPath) + } + if let sw = cell.accessoryView as? UISwitch { + sw.isOn = !sw.isOn + sw.sendActions(for: .valueChanged) + } + if let _ = cell.accessoryView as? UISlider { + // TODO: do we care? + } + } + } + case .up: + moveSelection(-1) + case .down: + moveSelection(+1) + default: + break + } + } + private func maxSection() -> Int { + return tableView.numberOfSections-1 + } + private func maxRow(_ indexPath:IndexPath) -> Int { + return tableView.numberOfRows(inSection:indexPath.section)-1 + } + private func select(_ indexPath:IndexPath) { + // NOTE you might be tempted to use animated==true, but this causes massive redraw issues in scrolling table views, like Settings + tableView.scrollToRow(at: indexPath, at: .none, animated: false) + guard let cell = self.tableView.cellForRow(at: indexPath) else { + ELOG("No cell for indexPath \(indexPath.debugDescription)") + return + } + cell.selectedBackgroundView = cell.selectedBackgroundView ?? UIView() + cell.selectedBackgroundView?.backgroundColor = navigationController?.view.tintColor ?? tableView.tintColor + tableView.selectRow(at: indexPath, animated: false, scrollPosition: .none) + } + private func moveSelection(_ dir:Int) { + guard var indexPath = tableView.indexPathForSelectedRow else { + return select(IndexPath(row:0, section:0)) + } + // TODO: what about a (hidden) section with zero items + if dir == -1 && indexPath.row == 0 && indexPath.section != 0 { + indexPath.section -= 1 + indexPath.row = maxRow(indexPath) + } + else if dir == +1 && indexPath.row == maxRow(indexPath) && indexPath.section < maxSection() { + indexPath.section += 1 + indexPath.row = 0 + } + else { + indexPath.row += dir + indexPath.row = max(0, min(indexPath.row, maxRow(indexPath))) + } + select(indexPath) + } +} + +// MARK: - Read Controller UX buttons + +extension GCExtendedGamepad { + + enum ButtonType: String { + case a,b,x,y + case menu,options + case up,down,left,right + case l1, l2, r1, r2 + static let select = a + static let back = b + static let cancel = b + } + + typealias ButtonState = Set + + func readButtonState() -> ButtonState { + var state = ButtonState() + + if buttonA.isPressed {state.formUnion([.a])} + if buttonB.isPressed {state.formUnion([.b])} + if buttonX.isPressed {state.formUnion([.x])} + if buttonY.isPressed {state.formUnion([.y])} + + if #available(iOS 13.0, tvOS 13.0, *) { + if buttonMenu.isPressed {state.formUnion([.menu])} + if buttonOptions?.isPressed == true {state.formUnion([.options])} + } + + for pad in [dpad, leftThumbstick, rightThumbstick] { + if pad.up.isPressed {state.formUnion([.up])} + if pad.down.isPressed {state.formUnion([.down])} + if pad.left.isPressed {state.formUnion([.left])} + if pad.right.isPressed {state.formUnion([.right])} + } + + if rightShoulder.isPressed {state.formUnion([.r1])} + if rightTrigger.isPressed {state.formUnion([.r2])} + if leftShoulder.isPressed {state.formUnion([.l1])} + if leftTrigger.isPressed {state.formUnion([.l2])} + + return state + } +} + +#endif // os(iOS) + +// MARK: - Controller type detection + +extension GCController { + var isRemote: Bool { + return self.extendedGamepad == nil && self.microGamepad != nil + } + var isKeyboard: Bool { + if #available(iOS 14.0, tvOS 14.0, *) { + return isSnapshot && vendorName?.contains("Keyboard") == true + } else { + return false + } + } +} + +// MARK: - Keyboard Controller + +// +// create a GCController that turns a keyboard into a controller +// +// [ESC:B] +// [TILDE:MENU] [1:OPTIONS] +// +// [TAB:L1] [Q:X] [W:UP] [E:Y] [R:R1] +// [A:LEFT] [S:DOWN] [D:RIGHT] [F:B] [RETURN:A] +// [LSHIFT:L2] [V:R2] [UP] +// [SPACE:A] [LEFT] [DOWN] [RIGHT] +// +@available(iOS 14.0, tvOS 14.0, *) +extension GCKeyboard { + func createController() -> GCController? { + guard let keyboard = self.keyboardInput else {return nil} + + let controller = GCController.withExtendedGamepad() + let gamepad = controller.extendedGamepad! + + controller.setValue(self.vendorName ?? "Keyboard", forKey: "vendorName") + + keyboard.keyChangedHandler = {(keyboard, button, key, pressed) -> Void in + //print("\(button) \(key) \(pressed)") + + func isPressed(_ code:GCKeyCode) -> Bool { + return keyboard.button(forKeyCode:code)?.isPressed ?? false + } + + // DPAD + let dpad_x:Float = isPressed(.rightArrow) ? 1.0 : isPressed(.leftArrow) ? -1.0 : 0.0 + let dpad_y:Float = isPressed(.upArrow) ? 1.0 : isPressed(.downArrow) ? -1.0 : 0.0 + gamepad.dpad.setValueForXAxis(dpad_x, yAxis:dpad_y) + + // WASD + let left_x:Float = isPressed(.keyD) ? 1.0 : isPressed(.keyA) ? -1.0 : 0.0 + let left_y:Float = isPressed(.keyW) ? 1.0 : isPressed(.keyS) ? -1.0 : 0.0 + gamepad.leftThumbstick.setValueForXAxis(left_x, yAxis:left_y) + + // -,=,[,] + let right_x:Float = isPressed(.closeBracket) ? 1.0 : isPressed(.openBracket) ? -1.0 : 0.0 + let right_y:Float = isPressed(.equalSign) ? 1.0 : isPressed(.hyphen) ? -1.0 : 0.0 + gamepad.rightThumbstick.setValueForXAxis(right_x, yAxis:right_y) + + // ABXY + gamepad.buttonA.setValue(isPressed(.spacebar) || isPressed(.returnOrEnter) ? 1.0 : 0.0) + gamepad.buttonB.setValue(isPressed(.keyF) || isPressed(.escape) ? 1.0 : 0.0) + gamepad.buttonX.setValue(isPressed(.keyQ) ? 1.0 : 0.0) + gamepad.buttonY.setValue(isPressed(.keyE) ? 1.0 : 0.0) + + // L1, L2 + gamepad.leftShoulder.setValue(isPressed(.tab) ? 1.0 : 0.0) + gamepad.leftTrigger.setValue(isPressed(.leftShift) ? 1.0 : 0.0) + + // R1, R2 + gamepad.rightShoulder.setValue(isPressed(.keyR) ? 1.0 : 0.0) + gamepad.rightTrigger.setValue(isPressed(.keyV) ? 1.0 : 0.0) + + // MENU, OPTIONS + gamepad.buttonMenu.setValue(isPressed(.graveAccentAndTilde) ? 1.0 : 0.0) + gamepad.buttonOptions?.setValue(isPressed(.one) ? 1.0 : 0.0) + + // the system does not call this handler in setValue, so call it with the dpad + gamepad.valueChangedHandler?(gamepad, gamepad.dpad) + } + + return controller + } +} + +public final class SortOptionsTableViewController: UIViewController { + var clearsSelectionOnViewWillAppear: Bool = true + + public private(set) var tableView: UITableView! + + public required init(withTableView tableView: UITableView) { + super.init(nibName: nil, bundle: nil) + + self.tableView = tableView + } + + public override func loadView() { + self.view = tableView + } + + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } } diff --git a/Provenance/Controller/PVControllerSelectionViewController.swift b/Provenance/Controller/PVControllerSelectionViewController.swift index 12ef8c07cc..03eb8e196a 100644 --- a/Provenance/Controller/PVControllerSelectionViewController.swift +++ b/Provenance/Controller/PVControllerSelectionViewController.swift @@ -97,7 +97,7 @@ final class PVControllerSelectionViewController: UITableViewController { actionSheet.popoverPresentationController?.sourceRect = self.tableView.rectForRow(at: indexPath) } - for controller: GCController in GCController.controllers() { + for controller: GCController in PVControllerManager.shared.controllers() { var title = controller.vendorName ?? "" if controller == PVControllerManager.shared.player1 { diff --git a/Provenance/Controller/PVControllerViewController.swift b/Provenance/Controller/PVControllerViewController.swift index 38a858a761..775dec7426 100644 --- a/Provenance/Controller/PVControllerViewController.swift +++ b/Provenance/Controller/PVControllerViewController.swift @@ -29,7 +29,7 @@ protocol JSButtonDisplayer { } private typealias Keys = SystemDictionaryKeys.ControllerLayoutKeys -private let kDPadTopMargin: CGFloat = 96.0 +private let kDPadTopMargin: CGFloat = 48.0 private let gripControl = false protocol StartSelectDelegate: AnyObject { @@ -53,6 +53,7 @@ protocol ControllerVC: StartSelectDelegate, JSButtonDelegate, JSDPadDelegate whe var dPad: JSDPad? { get } var dPad2: JSDPad? { get } + var joyPad: JSDPad? { get } var buttonGroup: UIView? { get } var leftShoulderButton: JSButton? { get } var rightShoulderButton: JSButton? { get } @@ -152,8 +153,11 @@ class PVControllerViewController: UIViewController, Controll func dPad(_: JSDPad, didPress _: JSDPadDirection) { vibrate() } - - func dPadDidReleaseDirection(_: JSDPad) {} + + func dPad(_: JSDPad, didRelease _: JSDPadDirection) { + } + + func dPad(_: JSDPad, joystick _: JoystickValue) { } typealias ResponderType = T var emulatorCore: ResponderType @@ -163,6 +167,7 @@ class PVControllerViewController: UIViewController, Controll var dPad: JSDPad? var dPad2: JSDPad? + var joyPad: JSDPad? var buttonGroup: UIView? var leftShoulderButton: JSButton? var rightShoulderButton: JSButton? @@ -244,23 +249,18 @@ class PVControllerViewController: UIViewController, Controll hideTouchControls(for: controller) } } else { - dPad?.isHidden = false + allButtons.forEach { + $0.isHidden = false + } dPad2?.isHidden = traitCollection.verticalSizeClass == .compact - buttonGroup?.isHidden = false - leftShoulderButton?.isHidden = false - rightShoulderButton?.isHidden = false - leftShoulderButton2?.isHidden = false - rightShoulderButton2?.isHidden = false - zTriggerButton?.isHidden = false - startButton?.isHidden = false - selectButton?.isHidden = false - leftAnalogButton?.isHidden = false - rightAnalogButton?.isHidden = false } setupTouchControls() #endif } + var allButtons: [UIView] { + return [dPad, dPad2, joyPad, buttonGroup, leftShoulderButton, rightShoulderButton, leftShoulderButton2, rightShoulderButton2, zTriggerButton, startButton, selectButton, leftAnalogButton, rightAnalogButton].compactMap{$0} + } @objc func controllerDidDisconnect(_: Notification?) { #if os(iOS) if PVControllerManager.shared.hasControllers { @@ -268,18 +268,10 @@ class PVControllerViewController: UIViewController, Controll hideTouchControls(for: controller) } } else { - dPad?.isHidden = false + allButtons.forEach { + $0.isHidden = false + } dPad2?.isHidden = traitCollection.verticalSizeClass == .compact - buttonGroup?.isHidden = false - leftShoulderButton?.isHidden = false - rightShoulderButton?.isHidden = false - leftShoulderButton2?.isHidden = false - rightShoulderButton2?.isHidden = false - zTriggerButton?.isHidden = false - startButton?.isHidden = false - selectButton?.isHidden = false - leftAnalogButton?.isHidden = false - rightAnalogButton?.isHidden = false } setupTouchControls() #endif @@ -358,7 +350,7 @@ class PVControllerViewController: UIViewController, Controll startButton?.isHidden = true leftAnalogButton?.isHidden = true rightAnalogButton?.isHidden = true - } else if controller.supportsThumbstickButtons() { + } else if controller.supportsThumbstickButtons { leftAnalogButton?.isHidden = true rightAnalogButton?.isHidden = true } @@ -387,7 +379,7 @@ class PVControllerViewController: UIViewController, Controll let controlOriginY: CGFloat = compactVertical ? view.bounds.size.height - controlSize.height : view.frame.width + (kDPadTopMargin / 2) if controlType == Keys.DPad { - let xPadding: CGFloat = safeAreaInsets.left + 5 + let xPadding: CGFloat = 0 //safeAreaInsets.left let bottomPadding: CGFloat = 16 let dPadOriginY: CGFloat = min(controlOriginY - bottomPadding, view.frame.height - controlSize.height - bottomPadding) var dPadFrame = CGRect(x: xPadding, y: dPadOriginY, width: controlSize.width, height: controlSize.height) @@ -403,7 +395,9 @@ class PVControllerViewController: UIViewController, Controll dPad2.alpha = alpha dPad2.autoresizingMask = [.flexibleTopMargin, .flexibleRightMargin] view.addSubview(dPad2) - } else if dPad == nil { + } else if let dPad = dPad { + dPad.frame = dPadFrame + } else { let dPad = JSDPad(frame: dPadFrame) if let tintColor = control.PVControlTint { dPad.tintColor = UIColor(hex: tintColor) @@ -413,13 +407,31 @@ class PVControllerViewController: UIViewController, Controll dPad.alpha = alpha dPad.autoresizingMask = [.flexibleTopMargin, .flexibleRightMargin] view.addSubview(dPad) - } else { - dPad?.frame = dPadFrame } - if dPad != nil { - dPad?.transform = .identity + if let dPad = dPad { + dPad.transform = .identity + } + if let dPad2 = dPad2 { + dPad2.isHidden = compactVertical + } + } else if controlType == Keys.JoyPad { + let xPadding: CGFloat = 0 //safeAreaInsets.left + let bottomPadding: CGFloat = 16 + let dPadOriginY: CGFloat = min(controlOriginY - bottomPadding, view.frame.height - controlSize.height - bottomPadding) + var dPadFrame = CGRect(x: xPadding, y: dPadOriginY, width: controlSize.width, height: controlSize.height) + + dPadFrame.origin.y += dPadFrame.height + bottomPadding + + let joyPad = JSDPad.JoyPad(frame: dPadFrame) + if let tintColor = control.PVControlTint { + joyPad.tintColor = UIColor(hex: tintColor) } - dPad2?.isHidden = compactVertical + self.joyPad = joyPad + joyPad.delegate = self + joyPad.alpha = alpha + joyPad.autoresizingMask = [.flexibleTopMargin, .flexibleRightMargin] + view.addSubview(joyPad) + } else if controlType == Keys.ButtonGroup { let xPadding: CGFloat = safeAreaInsets.right + 5 let bottomPadding: CGFloat = 16 @@ -518,6 +530,16 @@ class PVControllerViewController: UIViewController, Controll } } } + + if let joyPad = joyPad { + self.view.bringSubviewToFront(joyPad) + } + if let dPad2 = dPad2 { + self.view.bringSubviewToFront(dPad2) + } + if let dPad = dPad { + self.view.bringSubviewToFront(dPad) + } #endif } @@ -555,6 +577,7 @@ class PVControllerViewController: UIViewController, Controll rightShoulderButton.autoresizingMask = [.flexibleBottomMargin, .flexibleLeftMargin] view.addSubview(rightShoulderButton) } else if rightShoulderButton2 == nil, let title = control.PVControlTitle, title == "R2" { + rightShoulderFrame.origin.y += 40 let rightShoulderButton2 = JSButton(frame: rightShoulderFrame) if let tintColor = control.PVControlTint { rightShoulderButton2.tintColor = UIColor(hex: tintColor) @@ -650,6 +673,7 @@ class PVControllerViewController: UIViewController, Controll leftShoulderButton.autoresizingMask = [.flexibleBottomMargin, .flexibleRightMargin] view.addSubview(leftShoulderButton) } else if leftShoulderButton2 == nil, let title = control.PVControlTitle, title == "L2" { + leftShoulderFrame.origin.y += 40 let leftShoulderButton2 = JSButton(frame: leftShoulderFrame) if let tintColor = control.PVControlTint { leftShoulderButton2.tintColor = UIColor(hex: tintColor) @@ -698,6 +722,10 @@ class PVControllerViewController: UIViewController, Controll if selectFrame.maxY >= view.frame.size.height { selectFrame.origin.y -= (selectFrame.maxY - view.frame.size.height) + yPadding } + + if ["PSX", "PS1"].contains(system.shortName.uppercased()) { + selectFrame.origin.x += 80 + } if let selectButton = self.selectButton { selectButton.frame = selectFrame @@ -721,21 +749,29 @@ class PVControllerViewController: UIViewController, Controll func layoutStartButton(control: ControlLayoutEntry) { let controlSize: CGSize = NSCoder.cgSize(for: control.PVControlSize) - let yPadding: CGFloat = safeAreaInsets.bottom + 10 - let xPadding: CGFloat = safeAreaInsets.right + 10 + let yPadding: CGFloat = safeAreaInsets.bottom + let xPadding: CGFloat = safeAreaInsets.right let spacing: CGFloat = 20 - var startFrame = CGRect(x: view.frame.size.width - controlSize.width - xPadding, y: view.frame.height - yPadding - controlSize.height, width: controlSize.width, height: controlSize.height) + var startFrame = CGRect(x: view.frame.size.width - controlSize.width - xPadding, + y: view.frame.height - yPadding - controlSize.height, + width: controlSize.width, + height: controlSize.height) if super.view.bounds.size.width > super.view.bounds.size.height || UIDevice.current.orientation.isLandscape || UIDevice.current.userInterfaceIdiom == .pad { - if buttonGroup != nil, !(buttonGroup?.isHidden)! { - startFrame = CGRect(x: (buttonGroup?.frame.origin.x)! - controlSize.width + (controlSize.width / 3), y: (buttonGroup?.frame.maxY)! - controlSize.height, width: controlSize.width, height: controlSize.height) - if system.shortName == "SG" || system.shortName == "SCD" || system.shortName == "32X" || system.shortName == "SS" || system.shortName == "PCFX" { - startFrame.origin.x -= (controlSize.width / 2) - } - } else if buttonGroup != nil, (buttonGroup?.isHidden)! { - startFrame = CGRect(x: view.frame.size.width - controlSize.width - xPadding, y: view.frame.height - yPadding - controlSize.height, width: controlSize.width, height: controlSize.height) - if gripControl { - startFrame.origin.y = (UIScreen.main.bounds.height / 2) + if let buttonGroup = buttonGroup { + if buttonGroup.isHidden { + startFrame = CGRect(x: view.frame.size.width - controlSize.width - xPadding, y: view.frame.height - yPadding - controlSize.height, width: controlSize.width, height: controlSize.height) + if gripControl { + startFrame.origin.y = (UIScreen.main.bounds.height / 2) + } + } else { + startFrame = CGRect(x: buttonGroup.frame.origin.x - controlSize.width + (controlSize.width / 3), + y: buttonGroup.frame.maxY - controlSize.height, + width: controlSize.width, + height: controlSize.height) + if ["SG", "SCD", "32X", "SS", "PCFX"].contains(system.shortName.uppercased()) { + startFrame.origin.x -= (controlSize.width / 2) + } } } } else if super.view.bounds.size.width < super.view.bounds.size.height || UIDevice.current.orientation.isPortrait { @@ -743,8 +779,13 @@ class PVControllerViewController: UIViewController, Controll if selectButton == nil { startFrame.origin.x -= (spacing / 2) + (controlSize.width / 2) } + } + if ["PSX", "PS1"].contains(system.shortName.uppercased()) { + startFrame.origin.x += 120 + } + if startFrame.maxY >= view.frame.size.height { startFrame.origin.y -= (startFrame.maxY - view.frame.size.height) + yPadding } diff --git a/Provenance/Controller/Systems/PV32XControllerViewController.swift b/Provenance/Controller/Systems/PV32XControllerViewController.swift index 11c1a9d49e..5d75d79827 100644 --- a/Provenance/Controller/Systems/PV32XControllerViewController.swift +++ b/Provenance/Controller/Systems/PV32XControllerViewController.swift @@ -83,11 +83,31 @@ final class PVSega32XControllerViewController: PVControllerViewController) -> GCVirtualController in + + // Earlier I used `fullScreenCover` for games in MenuScreen, + // but GCVirtualController was BELOW it. + // So keep GCVirtualController in View, not Overlay/Modal/Sheet containers + // https://developer.apple.com/forums/thread/682138 + let virtualConfiguration = GCVirtualController.Configuration() + virtualConfiguration.elements = elements + let virtualController = GCVirtualController(configuration: virtualConfiguration) + + return virtualController +} + +@available(iOS 15.0, *) +final class PVN64ControllerViewController2: PVControllerViewController { + let cPadAsThumbstick: Bool = true + lazy var elements: Set = { + var elements: Set = [ + GCInputLeftThumbstick, + GCInputButtonA, + GCInputButtonB, + GCInputLeftShoulder, + GCInputRightShoulder, + GCInputLeftTrigger, + GCInputDirectionPad, + GCInputDirectionalCardinalDpad] + + if cPadAsThumbstick { + elements.insert(GCInputRightShoulder) + } + return elements + }() + + var virtualController: GCVirtualController? { + didSet { + if let virtualController = virtualController { + virtualController.connect { maybeError in + guard maybeError == nil else { + ELOG("\(maybeError!.localizedDescription)") + return + } + } + } + } + willSet { + if newValue == nil, let virtualController = virtualController { + virtualController.disconnect() + } + } + } + + override func setupTouchControls() { + guard virtualController == nil else { return } + let isKeyboardConnected = GCKeyboard.coalesced != nil + if isKeyboardConnected { + print("Keyboard is connected") + } + + let isGamepadConnected = GCController.controllers().count > 0 + + if isGamepadConnected { + print("Gamepad is connected") + } +// TODO: Hookup / check keyboard +// if !isGamepadConnected { +// print("There is no keyboard or gamepad so just create Virtual one") + virtualController = createVirtualController(elements) +// } + } + + override func viewWillDisappear(_ animated: Bool) { + virtualController?.disconnect() + super.viewWillDisappear(animated) + } +} +#endif + final class PVN64ControllerViewController: PVControllerViewController { override func layoutViews() { buttonGroup?.subviews.forEach { @@ -38,6 +121,8 @@ final class PVN64ControllerViewController: PVControllerViewController 0.5 ? CGFloat((value.y - 0.5) * 2) : 0.0 + var left:CGFloat = value.x < 0.5 ? CGFloat(1 - (value.x * 2)) : 0.0 + var right:CGFloat = value.x > 0.5 ? CGFloat((value.x - 0.5) * 2) : 0.0 + + up = min(up, 1.0) + down = min(down, 1.0) + left = min(left, 1.0) + right = min(right, 1.0) + + up = max(up, 0.0) + down = max(down, 0.0) + left = max(left, 0.0) + right = max(right, 0.0) + + print("x: \(value.x) , y: \(value.y), up:\(up), down:\(down), left:\(left), right:\(right), ") + emulatorCore.didMoveJoystick(.analogUp, withValue: up, forPlayer: 0) + if down != 0 { + emulatorCore.didMoveJoystick(.analogDown, withValue: down, forPlayer: 0) + } + emulatorCore.didMoveJoystick(.analogLeft, withValue: left, forPlayer: 0) + if right != 0 { + emulatorCore.didMoveJoystick(.analogRight, withValue: right, forPlayer: 0) + } + } override func dPad(_: JSDPad, didPress direction: JSDPadDirection) { - emulatorCore.didMoveJoystick(.analogUp, withValue: 0, forPlayer: 0) - emulatorCore.didMoveJoystick(.analogLeft, withValue: 0, forPlayer: 0) - emulatorCore.didMoveJoystick(.analogRight, withValue: 0, forPlayer: 0) - emulatorCore.didMoveJoystick(.analogDown, withValue: 0, forPlayer: 0) + if false { + // OLD non joystick way + emulatorCore.didMoveJoystick(.analogUp, withValue: 0, forPlayer: 0) + emulatorCore.didMoveJoystick(.analogLeft, withValue: 0, forPlayer: 0) + emulatorCore.didMoveJoystick(.analogRight, withValue: 0, forPlayer: 0) + emulatorCore.didMoveJoystick(.analogDown, withValue: 0, forPlayer: 0) + switch direction { + case .upLeft: + emulatorCore.didMoveJoystick(.analogUp, withValue: 1, forPlayer: 0) + emulatorCore.didMoveJoystick(.analogLeft, withValue: 1, forPlayer: 0) + case .up: + emulatorCore.didMoveJoystick(.analogUp, withValue: 1, forPlayer: 0) + case .upRight: + emulatorCore.didMoveJoystick(.analogUp, withValue: 1, forPlayer: 0) + emulatorCore.didMoveJoystick(.analogRight, withValue: 1, forPlayer: 0) + case .left: + emulatorCore.didMoveJoystick(.analogLeft, withValue: 1, forPlayer: 0) + case .right: + emulatorCore.didMoveJoystick(.analogRight, withValue: 1, forPlayer: 0) + case .downLeft: + emulatorCore.didMoveJoystick(.analogDown, withValue: 1, forPlayer: 0) + emulatorCore.didMoveJoystick(.analogLeft, withValue: 1, forPlayer: 0) + case .down: + emulatorCore.didMoveJoystick(.analogDown, withValue: 1, forPlayer: 0) + case .downRight: + emulatorCore.didMoveJoystick(.analogDown, withValue: 1, forPlayer: 0) + emulatorCore.didMoveJoystick(.analogRight, withValue: 1, forPlayer: 0) + default: + break + } + } else { + emulatorCore.didRelease(.dPadUp, forPlayer: 0) + emulatorCore.didRelease(.dPadDown, forPlayer: 0) + emulatorCore.didRelease(.dPadLeft, forPlayer: 0) + emulatorCore.didRelease(.dPadRight, forPlayer: 0) + + switch direction { + case .upLeft: + emulatorCore.didPush(.dPadUp, forPlayer: 0) + emulatorCore.didPush(.dPadLeft, forPlayer: 0) + case .up: + emulatorCore.didPush(.dPadUp, forPlayer: 0) + case .upRight: + emulatorCore.didPush(.dPadUp, forPlayer: 0) + emulatorCore.didPush(.dPadRight, forPlayer: 0) + case .left: + emulatorCore.didPush(.dPadLeft, forPlayer: 0) + case .right: + emulatorCore.didPush(.dPadRight, forPlayer: 0) + case .downLeft: + emulatorCore.didPush(.dPadDown, forPlayer: 0) + emulatorCore.didPush(.dPadLeft, forPlayer: 0) + case .down: + emulatorCore.didPush(.dPadDown, forPlayer: 0) + case .downRight: + emulatorCore.didPush(.dPadDown, forPlayer: 0) + emulatorCore.didPush(.dPadRight, forPlayer: 0) + default: + break + } + } + + vibrate() + } + + override func dPad(_ dPad: JSDPad, didRelease direction: JSDPadDirection) { switch direction { case .upLeft: - emulatorCore.didMoveJoystick(.analogUp, withValue: 1, forPlayer: 0) - emulatorCore.didMoveJoystick(.analogLeft, withValue: 1, forPlayer: 0) + emulatorCore.didRelease(.dPadUp, forPlayer: 0) + emulatorCore.didRelease(.dPadLeft, forPlayer: 0) case .up: - emulatorCore.didMoveJoystick(.analogUp, withValue: 1, forPlayer: 0) + emulatorCore.didRelease(.dPadUp, forPlayer: 0) case .upRight: - emulatorCore.didMoveJoystick(.analogUp, withValue: 1, forPlayer: 0) - emulatorCore.didMoveJoystick(.analogRight, withValue: 1, forPlayer: 0) + emulatorCore.didRelease(.dPadUp, forPlayer: 0) + emulatorCore.didRelease(.dPadRight, forPlayer: 0) case .left: - emulatorCore.didMoveJoystick(.analogLeft, withValue: 1, forPlayer: 0) + emulatorCore.didRelease(.dPadLeft, forPlayer: 0) + case .none: + break case .right: - emulatorCore.didMoveJoystick(.analogRight, withValue: 1, forPlayer: 0) + emulatorCore.didRelease(.dPadRight, forPlayer: 0) case .downLeft: - emulatorCore.didMoveJoystick(.analogDown, withValue: 1, forPlayer: 0) - emulatorCore.didMoveJoystick(.analogLeft, withValue: 1, forPlayer: 0) + emulatorCore.didRelease(.dPadDown, forPlayer: 0) + emulatorCore.didRelease(.dPadLeft, forPlayer: 0) case .down: - emulatorCore.didMoveJoystick(.analogDown, withValue: 1, forPlayer: 0) + emulatorCore.didRelease(.dPadDown, forPlayer: 0) case .downRight: - emulatorCore.didMoveJoystick(.analogDown, withValue: 1, forPlayer: 0) - emulatorCore.didMoveJoystick(.analogRight, withValue: 1, forPlayer: 0) - default: - break + emulatorCore.didRelease(.dPadDown, forPlayer: 0) + emulatorCore.didRelease(.dPadRight, forPlayer: 0) } - vibrate() - } - - override func dPadDidReleaseDirection(_: JSDPad) { - emulatorCore.didMoveJoystick(.analogUp, withValue: 0, forPlayer: 0) - emulatorCore.didMoveJoystick(.analogLeft, withValue: 0, forPlayer: 0) - emulatorCore.didMoveJoystick(.analogRight, withValue: 0, forPlayer: 0) - emulatorCore.didMoveJoystick(.analogDown, withValue: 0, forPlayer: 0) + super.dPad(dPad, didRelease: direction) } override func buttonPressed(_ button: JSButton) { diff --git a/Provenance/Controller/Systems/PVNESControllerViewController.swift b/Provenance/Controller/Systems/PVNESControllerViewController.swift index befe8a1341..ca2753e71f 100644 --- a/Provenance/Controller/Systems/PVNESControllerViewController.swift +++ b/Provenance/Controller/Systems/PVNESControllerViewController.swift @@ -68,14 +68,33 @@ final class PVNESControllerViewController: PVControllerViewController 0.5 ? CGFloat((value.y - 0.5) * 2) : 0.0 + var left:CGFloat = value.x < 0.5 ? CGFloat(1 - (value.x * 2)) : 0.0 + var right:CGFloat = value.x > 0.5 ? CGFloat((value.x - 0.5) * 2) : 0.0 + + up = min(up, 1.0) + down = min(down, 1.0) + left = min(left, 1.0) + right = min(right, 1.0) + + up = max(up, 0.0) + down = max(down, 0.0) + left = max(left, 0.0) + right = max(right, 0.0) + + // print("x: \(value.x) , y: \(value.y), up:\(up), down:\(down), left:\(left), right:\(right), ") + emulatorCore.didMoveJoystick(.leftAnalogUp, withValue: up, forPlayer: 0) + if down != 0 { + emulatorCore.didMoveJoystick(.leftAnalogDown, withValue: down, forPlayer: 0) + } + emulatorCore.didMoveJoystick(.leftAnalogLeft, withValue: left, forPlayer: 0) + if right != 0 { + emulatorCore.didMoveJoystick(.leftAnalogRight, withValue: right, forPlayer: 0) + } + } override func dPad(_: JSDPad, didPress direction: JSDPadDirection) { emulatorCore.didRelease(.up, forPlayer: 0) @@ -80,11 +107,31 @@ final class PVPSXControllerViewController: PVControllerViewController TableGroup? in + let options: [CoreOption] = subOptions ?? core.options + var groups = options.compactMap({ (option) -> TableGroup? in switch option { case let .group(display, subOptions): return TableGroup(title: display.title, options: subOptions) @@ -53,18 +57,62 @@ final class CoreOptionsViewController: QuickTableViewController { } func generateTableViewViewModels() { - typealias TableRow = Row & RowStyle + #if os(tvOS) + self.tableView.backgroundColor = .black + self.tableView.mask = nil + #endif - let sections: [Section] = groups.map { - let rows: [TableRow] = $0.options.enumerated().map { (rowIndex, option) in - switch option { - case let .bool(display, defaultValue): - let detailText: DetailText = display.description != nil ? DetailText.subtitle(display.description!) : .none - return SwitchRow(text: display.title, detailText: detailText, switchValue: core.valueForOption(Bool.self, option.key) ?? defaultValue, action: { _ in - let value = self.core.valueForOption(Bool.self, option.key) ?? defaultValue - self.core.setValue(!value, forOption: option) - }) - case let .multi(display, values): + let sections: [Section] = sections(forGroups: self.groups) + tableContents = sections + } + + func sections(forGroups groups: [TableGroup]) -> [Section] { + typealias TableRow = Row & RowStyle + + let sections: [Section] = groups.map { + let rows: [TableRow] = $0.options.enumerated().map { (rowIndex, option) in + switch option { + case let .bool(display, defaultValue): + let detailText: DetailText = display.description != nil ? DetailText.subtitle(display.description!) : .none + return SwitchRow(text: display.title, detailText: detailText, switchValue: core.storedValueForOption(Bool.self, option.key) ?? defaultValue, action: { _ in + let value = self.core.storedValueForOption(Bool.self, option.key) ?? defaultValue + self.core.setValue(!value, forOption: option) + }) + case let .multi(display, values): + let detailText: DetailText = display.description != nil ? DetailText.subtitle(display.description!) : .none + return NavigationRow(text: display.title, + detailText: detailText, + icon: nil, + customization: { _, _ in + }, + action: { _ in + let currentSelection: String? = self.core.storedValueForOption(String.self, option.key) ?? option.defaultValue as? String + let actionController = UIAlertController(title: display.title, message: nil, preferredStyle: .actionSheet) + + if let popoverPresentationController = actionController.popoverPresentationController { + let cellRect = self.tableView.rectForRow(at: IndexPath(row: rowIndex, section: 0)) + popoverPresentationController.sourceView = self.tableView + popoverPresentationController.sourceRect = cellRect + } + + values.forEach { value in + var title = value.title + if currentSelection == value.title { + title += " ✔︎" + } + let action = UIAlertAction(title: title, style: .default, handler: { _ in + self.core.setValue(value.title, forOption: option) + }) + actionController.addAction(action) + } + actionController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil)) + self.present(actionController, animated: true) + + if let indexPath = self.tableView.indexPathForSelectedRow { + self.tableView.deselectRow(at: indexPath, animated: false) + } + }) + case let .enumeration(display, values: values, defaultValue: defaultValue): let detailText: DetailText = display.description != nil ? DetailText.subtitle(display.description!) : .none return NavigationRow(text: display.title, detailText: detailText, @@ -72,7 +120,7 @@ final class CoreOptionsViewController: QuickTableViewController { customization: { _, _ in }, action: { _ in - let currentSelection: String? = self.core.valueForOption(String.self, option.key) ?? option.defaultValue as? String + let currentSelection: Int = self.core.storedValueForOption(Int.self, option.key) ?? option.defaultValue as? Int ?? defaultValue let actionController = UIAlertController(title: display.title, message: nil, preferredStyle: .actionSheet) if let popoverPresentationController = actionController.popoverPresentationController { @@ -83,11 +131,11 @@ final class CoreOptionsViewController: QuickTableViewController { values.forEach { value in var title = value.title - if currentSelection == value.title { + if currentSelection == value.value { title += " ✔︎" } let action = UIAlertAction(title: title, style: .default, handler: { _ in - self.core.setValue(value.title, forOption: option) + self.core.setValue(value.value, forOption: option) }) actionController.addAction(action) } @@ -98,22 +146,116 @@ final class CoreOptionsViewController: QuickTableViewController { self.tableView.deselectRow(at: indexPath, animated: false) } }) - case .range: - fatalError("Unfinished feature") - case .string: - fatalError("Unfinished feature") - default: - fatalError("Unfinished feature") - } - } - return Section(title: $0.title, rows: rows) - } + case let .range(display, range: range, defaultValue: defaultValue): + let detailText: DetailText = display.description != nil ? DetailText.subtitle(display.description!) : .none + let value = core.storedValueForOption(Int.self, option.key) ?? defaultValue + + #if os(tvOS) + // TODO: slider on tvOS? + return NavigationRow(text: "\(display.title): \(value)", + detailText: detailText, + icon: nil, + customization: { _, _ in + }, + action: { _ in + }) + #else + return SliderRow( + text: display.title, + detailText: detailText, + value: Float(value), + valueLimits: (min: Float(range.min), max: Float(range.max)), + valueImages: (min: nil, max: nil), + customization: nil) + { _ in + let value = self.core.storedValueForOption(Int.self, option.key) ?? defaultValue + self.core.setValue(value, forOption: option) + } + #endif + case let .rangef(display, range: range, defaultValue: defaultValue): + let detailText: DetailText = display.description != nil ? DetailText.subtitle(display.description!) : .none + let value = core.storedValueForOption(Float.self, option.key) ?? defaultValue + #if os(tvOS) + // TODO: slider on tvOS? + return NavigationRow(text: "\(display.title): \(value)", + detailText: detailText, + icon: nil, + customization: { _, _ in + }, + action: { _ in + }) + #else + return SliderRow( + text: display.title, + detailText: detailText, + value: value, + valueLimits: (min: range.min, max: range.max), + valueImages: (min: nil, max: nil), + customization: nil) + { _ in + let value = self.core.storedValueForOption(Float.self, option.key) ?? defaultValue + self.core.setValue(value, forOption: option) + } + #endif + case let .string(display, defaultValue: defaultValue): + let detailText: DetailText = display.description != nil ? DetailText.subtitle(display.description!) : .none + let value = core.storedValueForOption(String.self, option.key) ?? defaultValue + + return NavigationRow(text: display.title, + detailText: detailText, + icon: nil, + customization: { cell, _ in +// cell.textLabel?.text = value + }, + action: { cell in + let currentValue: String = value // self.core.valueForOption(String.self, option.key) ?? option.defaultValue as? String ?? "" + let actionController = UIAlertController(title: display.title, message: nil, preferredStyle: .actionSheet) + let cellRect = self.tableView.rectForRow(at: IndexPath(row: rowIndex, section: 0)) - #if os(tvOS) - self.tableView.backgroundColor = .black - self.tableView.mask = nil - #endif + let textField = UITextField() + textField.text = value + if let popoverPresentationController = actionController.popoverPresentationController { + popoverPresentationController.sourceView = self.tableView + popoverPresentationController.sourceRect = cellRect + } - tableContents = sections - } +// values.forEach { value in +// var title = value.title +// if currentSelection == value.value { +// title += " ✔︎" +// } +// let action = UIAlertAction(title: title, style: .default, handler: { _ in +// self.core.setValue(value.value, forOption: option) +// }) +// actionController.addAction(action) +// } + actionController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil)) + self.present(actionController, animated: true) + + if let indexPath = self.tableView.indexPathForSelectedRow { + self.tableView.deselectRow(at: indexPath, animated: false) + } + }) + case let .group(display, subOptions: subOptions): + let detailText: DetailText = display.description != nil ? DetailText.subtitle(display.description!) : .none + return NavigationRow(text: display.title, + detailText: detailText, + icon: nil, + customization: { _, _ in + }, + action: + { [weak self] row in + guard let self = self else { return } + let subOptionsVC = CoreOptionsViewController(withCore: self.core, subOptions: subOptions) + subOptionsVC.title = row.text + self.navigationController?.pushViewController(subOptionsVC, animated: true) + }) + @unknown default: + fatalError("Unfinished feature") + } + } + return Section(title: $0.title, rows: rows) + } + return sections + } } diff --git a/Provenance/Emulator/PVCoreFactory.swift b/Provenance/Emulator/PVCoreFactory.swift index ed9a178f49..1d9dfd45f4 100644 --- a/Provenance/Emulator/PVCoreFactory.swift +++ b/Provenance/Emulator/PVCoreFactory.swift @@ -104,6 +104,12 @@ public final class PVCoreFactory: NSObject { } else { fatalError("Core doesn't implement PV5200SystemResponderClient") } + case .Atari8bit: + if let core = core as? PV5200SystemResponderClient { + return PVAtari5200ControllerViewController(controlLayout: controllerLayout, system: system, responder: core) + } else { + fatalError("Core doesn't implement PV5200SystemResponderClient") + } case .Atari7800: if let core = core as? PV7800SystemResponderClient { return PVAtari7800ControllerViewController(controlLayout: controllerLayout, system: system, responder: core) @@ -170,7 +176,7 @@ public final class PVCoreFactory: NSObject { } else { fatalError("Core doesn't implement PVPCFXSystemResponderClient") } - case .NGP, .NGPC: + case .NeoGeo, .NGP, .NGPC: if let core = core as? PVNeoGeoPocketSystemResponderClient { return PVNeoGeoPocketControllerViewController(controlLayout: controllerLayout, system: system, responder: core) } else { @@ -196,7 +202,7 @@ public final class PVCoreFactory: NSObject { } case .N64: if let core = core as? PVN64SystemResponderClient { - return PVN64ControllerViewController(controlLayout: controllerLayout, system: system, responder: core) + return PVN64ControllerViewController(controlLayout: controllerLayout, system: system, responder: core) } else { fatalError("Core doesn't implement PVN64SystemResponderClient") } diff --git a/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+Audio.swift b/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+Audio.swift new file mode 100644 index 0000000000..daa3ff636b --- /dev/null +++ b/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+Audio.swift @@ -0,0 +1,8 @@ +// MARK: - PVAudioDelegate + +extension PVEmulatorViewController { + func audioSampleRateDidChange() { + gameAudio.stop() + gameAudio.start() + } +} diff --git a/Provenance/Emulator/PVEmulatorViewController+Cheats.swift b/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+Cheats.swift similarity index 100% rename from Provenance/Emulator/PVEmulatorViewController+Cheats.swift rename to Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+Cheats.swift diff --git a/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+Controllers.swift b/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+Controllers.swift new file mode 100644 index 0000000000..1211382446 --- /dev/null +++ b/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+Controllers.swift @@ -0,0 +1,104 @@ +// MARK: - Controllers + +extension PVEmulatorViewController { + func controllerPauseButtonPressed() { + DispatchQueue.main.async(execute: { () -> Void in + if !self.isShowingMenu { + self.showMenu(self) + } else { + self.hideMenu() + } + }) + } + + func hideOrShowMenuButton() { + + // find out how many *real* controllers we have.... + let controllers = PVControllerManager.shared.controllers().filter { controller in + // 8Bitdo controllers don't have a pause button, so don't hide the menu + if (controller is PViCade8BitdoController || controller is PViCade8BitdoZeroController) { + return false + } + // show menu for "virtual" controllers + if #available(iOS 13.0, tvOS 13.0, *) { + if (controller.isSnapshot) { + return false + } + } + return true + } + + // and hide menu button if we have zero + menuButton?.isHidden = controllers.count != 0 + + #if os(iOS) + setNeedsUpdateOfHomeIndicatorAutoHidden() + #endif + } + + @objc func controllerDidConnect(_ note: Notification?) { + + // In instances where the controller is connected *after* the VC has been shown, we need to set the pause handler + let controller = note?.object as? GCController + controller?.setupPauseHandler(onPause: controllerPauseButtonPressed) + + hideOrShowMenuButton() + } + + @objc func controllerDidDisconnect(_: Notification?) { + hideOrShowMenuButton() + } + + @objc func handleControllerManagerControllerReassigned(_: Notification?) { + core.controller1 = PVControllerManager.shared.player1 + core.controller2 = PVControllerManager.shared.player2 + core.controller3 = PVControllerManager.shared.player3 + core.controller4 = PVControllerManager.shared.player4 + hideOrShowMenuButton() + #if os(tvOS) + PVControllerManager.shared.setSteamControllersMode(core.isRunning ? .gameController : .keyboardAndMouse) + #endif + } + + // MARK: - UIScreenNotifications + + @objc func screenDidConnect(_ note: Notification?) { + ILOG("Screen did connect: \(note?.object ?? "")") + if secondaryScreen == nil { + secondaryScreen = UIScreen.screens[1] + if let aBounds = secondaryScreen?.bounds { + secondaryWindow = UIWindow(frame: aBounds) + } + if let aScreen = secondaryScreen { + secondaryWindow?.screen = aScreen + } + gpuViewController.view?.removeFromSuperview() + gpuViewController.removeFromParent() + secondaryWindow?.rootViewController = gpuViewController + gpuViewController.view?.frame = secondaryWindow?.bounds ?? .zero + if let aView = gpuViewController.view { + secondaryWindow?.addSubview(aView) + } + secondaryWindow?.isHidden = false + gpuViewController.view?.setNeedsLayout() + } + } + + @objc func screenDidDisconnect(_ note: Notification?) { + ILOG("Screen did disconnect: \(note?.object ?? "")") + let screen = note?.object as? UIScreen + if secondaryScreen == screen { + gpuViewController.view?.removeFromSuperview() + gpuViewController.removeFromParent() + addChild(gpuViewController) + + if let aView = gpuViewController.view, let aView1 = controllerViewController?.view { + view.insertSubview(aView, belowSubview: aView1) + } + + gpuViewController.view?.setNeedsLayout() + secondaryWindow = nil + secondaryScreen = nil + } + } +} diff --git a/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+CoreOptions.swift b/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+CoreOptions.swift new file mode 100644 index 0000000000..96b86503c9 --- /dev/null +++ b/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+CoreOptions.swift @@ -0,0 +1,30 @@ +// +// PVEmulatorViewController+CoreOptions.swift +// Provenance +// +// Created by Joseph Mattiello on 1/11/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation + +extension PVEmulatorViewController { + func showCoreOptions() { + let optionsVC = CoreOptionsViewController(withCore: type(of: core) as! CoreOptional.Type) + optionsVC.title = "Core Options" + let nav = UINavigationController(rootViewController: optionsVC) + #if os(iOS) + optionsVC.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(dismissNav)) + // disable iOS 13 swipe to dismiss... + if #available(iOS 13.0, *) { + nav.isModalInPresentation = true + } + present(nav, animated: true, completion: nil) + #else + let tap = UITapGestureRecognizer(target: self, action: #selector(self.dismissNav)) + tap.allowedPressTypes = [.menu] + optionsVC.view.addGestureRecognizer(tap) + present(TVFullscreenController(rootViewController: nav), animated: true, completion: nil) + #endif + } +} diff --git a/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+MultiDisc.swift b/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+MultiDisc.swift new file mode 100644 index 0000000000..41f429298d --- /dev/null +++ b/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+MultiDisc.swift @@ -0,0 +1,52 @@ +extension PVEmulatorViewController { + func showSwapDiscsMenu() { + guard let core = self.core as? (PVEmulatorCore & DiscSwappable) else { + presentError("Internal error: No core found.") + isShowingMenu = false + enableControllerInput(false) + return + } + + let numberOfDiscs = core.numberOfDiscs + guard numberOfDiscs > 1 else { + presentError("Game only supports 1 disc.") + core.setPauseEmulation(false) + isShowingMenu = false + enableControllerInput(false) + return + } + + // Add action for each disc + let actionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) + + for index in 1 ... numberOfDiscs { + actionSheet.addAction(UIAlertAction(title: "\(index)", style: .default, handler: { [unowned self] _ in + + DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: { + core.swapDisc(number: index) + }) + + core.setPauseEmulation(false) + self.isShowingMenu = false + self.enableControllerInput(false) + })) + } + + // Add cancel action + actionSheet.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { [unowned self] _ in + core.setPauseEmulation(false) + self.isShowingMenu = false + self.enableControllerInput(false) + })) + + // Present + if traitCollection.userInterfaceIdiom == .pad { + actionSheet.popoverPresentationController?.sourceView = menuButton + actionSheet.popoverPresentationController?.sourceRect = menuButton?.bounds ?? .zero + } + + present(actionSheet, animated: true) { + PVControllerManager.shared.iCadeController?.refreshListener() + } + } +} diff --git a/Provenance/Emulator/PVEmulatorViewController+PauseMenu.swift b/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+PauseMenu.swift similarity index 95% rename from Provenance/Emulator/PVEmulatorViewController+PauseMenu.swift rename to Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+PauseMenu.swift index 97cf6ae7de..40a78da4c3 100644 --- a/Provenance/Emulator/PVEmulatorViewController+PauseMenu.swift +++ b/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+PauseMenu.swift @@ -12,14 +12,15 @@ import PVSupport import UIKit extension PVEmulatorViewController { - @objc func showMenu(_: Any?) { + @objc func showMenu(_ sender: AnyObject?) { enableControllerInput(true) core.setPauseEmulation(true) isShowingMenu = true - let actionSheet: UIAlertController = UIAlertController(title: "Game Options", message: nil, preferredStyle: .actionSheet) + let actionSheet = UIAlertController(title: "Game Options", message: nil, preferredStyle: .actionSheet) - if traitCollection.userInterfaceIdiom == .pad { + // only popup if sumoned from menuButton + if traitCollection.userInterfaceIdiom == .pad && sender === menuButton { actionSheet.popoverPresentationController?.sourceView = menuButton actionSheet.popoverPresentationController?.sourceRect = menuButton!.bounds } @@ -145,7 +146,7 @@ extension PVEmulatorViewController { self.showMoreInfo() })) actionSheet.addAction(UIAlertAction(title: "Game Speed", style: .default, handler: { action in - self.perform(#selector(self.showSpeedMenu), with: nil, afterDelay: 0.1) + self.perform(#selector(self.showSpeedMenu(_:)), with: sender, afterDelay: 0.1) })) if core.supportsSaveStates { actionSheet.addAction(UIAlertAction(title: "Save States", style: .default, handler: { action in @@ -207,7 +208,8 @@ extension PVEmulatorViewController { })) } - let resumeAction = UIAlertAction(title: "Resume", style: .default, handler: { action in + // make sure this item is marked .cancel so it will be called even if user dismises popup + let resumeAction = UIAlertAction(title: "Resume", style: .cancel, handler: { action in self.core.setPauseEmulation(false) self.isShowingMenu = false self.enableControllerInput(false) diff --git a/Provenance/Emulator/PVEmulatorViewController+Saves.swift b/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+Saves.swift similarity index 100% rename from Provenance/Emulator/PVEmulatorViewController+Saves.swift rename to Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController+Saves.swift diff --git a/Provenance/Emulator/PVEmulatorViewController.swift b/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController.swift similarity index 70% rename from Provenance/Emulator/PVEmulatorViewController.swift rename to Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController.swift index d1196a1cfb..6a6280a34a 100644 --- a/Provenance/Emulator/PVEmulatorViewController.swift +++ b/Provenance/Emulator/PVEmulatorVC/PVEmulatorViewController.swift @@ -34,37 +34,6 @@ func uncaughtExceptionHandler(exception _: NSException?) { typealias PVEmulatorViewControllerRootClass = UIViewController #endif -class MenuButton: UIButton, HitAreaEnlarger { - var hitAreaInset: UIEdgeInsets = UIEdgeInsets(top: -5, left: -5, bottom: -5, right: -5) -} - -extension UIViewController { - func presentMessage(_ message: String, title: String, completion _: (() -> Swift.Void)? = nil) { - let alert = UIAlertController(title: title, message: message, preferredStyle: .alert) - alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) - - let presentingVC = presentedViewController ?? self - - if presentingVC.isBeingDismissed || presentingVC.isBeingPresented { - DispatchQueue.main.asyncAfter(deadline: .now() + 1) { - presentingVC.present(alert, animated: true, completion: nil) - } - } else { - presentingVC.present(alert, animated: true, completion: nil) - } - } - - func presentError(_ message: String, completion: (() -> Swift.Void)? = nil) { - ELOG("\(message)") - presentMessage(message, title: "Error", completion: completion) - } - - func presentWarning(_ message: String, completion: (() -> Swift.Void)? = nil) { - WLOG("\(message)") - presentMessage(message, title: "Warning", completion: completion) - } -} - final class PVEmulatorViewController: PVEmulatorViewControllerRootClass, PVAudioDelegate, PVSaveStatesViewControllerDelegate { let core: PVEmulatorCore let game: PVGame @@ -73,7 +42,8 @@ final class PVEmulatorViewController: PVEmulatorViewControllerRootClass, PVAudio var BIOSPath: URL { return PVEmulatorConfiguration.biosPath(forGame: game) } var menuButton: MenuButton? - private(set) lazy var glViewController: PVGLViewController = PVGLViewController(emulatorCore: core) + let use_metal: Bool = PVSettingsModel.shared.debugOptions.useMetal + private(set) lazy var gpuViewController: PVGPUViewController = use_metal ? PVMetalViewController(emulatorCore: core) : PVGLViewController(emulatorCore: core) private(set) lazy var controllerViewController: (UIViewController & StartSelectDelegate)? = PVCoreFactory.controllerViewController(forSystem: game.system, core: core) var audioInited: Bool = false @@ -91,12 +61,12 @@ final class PVEmulatorViewController: PVEmulatorViewControllerRootClass, PVAudio var isShowingMenu: Bool = false { willSet { if newValue == true { - glViewController.isPaused = true + gpuViewController.isPaused = true } } didSet { if isShowingMenu == false { - glViewController.isPaused = false + gpuViewController.isPaused = false } } } @@ -155,11 +125,11 @@ final class PVEmulatorViewController: PVEmulatorViewControllerRootClass, PVAudio } NSSetUncaughtExceptionHandler(nil) staticSelf = nil - glViewController.willMove(toParent: nil) - glViewController.view?.removeFromSuperview() - glViewController.removeFromParent() + gpuViewController.willMove(toParent: nil) + gpuViewController.view?.removeFromSuperview() + gpuViewController.removeFromParent() #if os(iOS) - GCController.controllers().forEach { $0.controllerPausedHandler = nil } + PVControllerManager.shared.controllers().forEach { $0.controllerPausedHandler = nil } #endif updatePlayedDuration() destroyAutosaveTimer() @@ -231,24 +201,104 @@ final class PVEmulatorViewController: PVEmulatorViewControllerRootClass, PVAudio fpsLabel.translatesAutoresizingMaskIntoConstraints = false fpsLabel.textAlignment = .right fpsLabel.isOpaque = true + fpsLabel.numberOfLines = 2 #if os(tvOS) fpsLabel.font = UIFont.monospacedDigitSystemFont(ofSize: 40, weight: .bold) #else fpsLabel.font = UIFont.monospacedDigitSystemFont(ofSize: 20, weight: .bold) #endif - glViewController.view.addSubview(fpsLabel) - view.addConstraint(NSLayoutConstraint(item: fpsLabel, attribute: .top, relatedBy: .equal, toItem: glViewController.view, attribute: .top, multiplier: 1.0, constant: 30)) - view.addConstraint(NSLayoutConstraint(item: fpsLabel, attribute: .right, relatedBy: .equal, toItem: glViewController.view, attribute: .right, multiplier: 1.0, constant: -40)) + gpuViewController.view.addSubview(fpsLabel) + view.addConstraint(NSLayoutConstraint(item: fpsLabel, attribute: .top, relatedBy: .equal, toItem: gpuViewController.view, attribute: .top, multiplier: 1.0, constant: 30)) + view.addConstraint(NSLayoutConstraint(item: fpsLabel, attribute: .right, relatedBy: .equal, toItem: gpuViewController.view, attribute: .right, multiplier: 1.0, constant: -40)) fpsTimer = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true, block: { [weak self] (_: Timer) -> Void in guard let `self` = self else { return } + let green = [NSAttributedString.Key.foregroundColor: UIColor.green] + let red = [NSAttributedString.Key.foregroundColor: UIColor.red] +// let white = [NSAttributedString.Key.foregroundColor: UIColor.white] let coreSpeed = self.core.renderFPS/self.core.frameInterval * 100 - let drawTime = self.glViewController.timeSinceLastDraw * 1000 + let drawTime = self.gpuViewController.timeSinceLastDraw * 1000 let fps = 1000 / drawTime - self.fpsLabel.text = String( format: "Core speed %03.02f%% - Draw time %02.02f%ms - FPS %03.02f%", coreSpeed, drawTime, fps) + let mem = self.memoryUsage() + + let cpu = self.cpuUsage() + let cpuFormatted = String.init(format: "%03.01f", cpu) +// let cpuAttributed = NSAttributedString(string: cpuFormatted, +// attributes: red) +// + let memFormatted: String = NSString.localizedStringWithFormat("%i", (mem.used/1024/1024)) as String + let memTotalFormatted: String = NSString.localizedStringWithFormat("%i", (mem.total/1024/1024)) as + String + +// let memUsedAttributed = NSAttributedString(string: memFormatted, +// attributes: green) +// let memTotalAttributed = NSAttributedString(string: memTotalFormatted, +// attributes: green) +// +// let label = NSMutableAttributedString() +// +// let top = NSAttributedString(format: "Core speed %03.02f%% - Draw time %02.02f%ms - FPS %03.02f\n", coreSpeed, drawTime, fps); +// +// label.append(top) + + self.fpsLabel.text = String(format: "Core speed %03.02f%% - Draw time %02.02f%ms - FPS %03.02f\nCPU %@%% Mem %@/%@(MB)", coreSpeed, drawTime, fps, cpuFormatted, memFormatted, memTotalFormatted) }) } + + typealias MemoryUsage = (used: UInt64, total: UInt64) + func memoryUsage() -> MemoryUsage { + var taskInfo = task_vm_info_data_t() + var count = mach_msg_type_number_t(MemoryLayout.size) / 4 + let result: kern_return_t = withUnsafeMutablePointer(to: &taskInfo) { + $0.withMemoryRebound(to: integer_t.self, capacity: 1) { + task_info(mach_task_self_, task_flavor_t(TASK_VM_INFO), $0, &count) + } + } + + var used: UInt64 = 0 + if result == KERN_SUCCESS { + used = UInt64(taskInfo.phys_footprint) + } + + let total = ProcessInfo.processInfo.physicalMemory + return (used, total) + } + + func cpuUsage() -> Double { + var totalUsageOfCPU: Double = 0.0 + var threadsList: thread_act_array_t? + var threadsCount = mach_msg_type_number_t(0) + let threadsResult = withUnsafeMutablePointer(to: &threadsList) { + return $0.withMemoryRebound(to: thread_act_array_t?.self, capacity: 1) { + task_threads(mach_task_self_, $0, &threadsCount) + } + } + + if threadsResult == KERN_SUCCESS, let threadsList = threadsList { + for index in 0...stride)) + return totalUsageOfCPU + } // TODO: This method is way too big, break it up override func viewDidLoad() { @@ -305,18 +355,18 @@ final class PVEmulatorViewController: PVEmulatorViewControllerRootClass, PVAudio if let aScreen = secondaryScreen { secondaryWindow?.screen = aScreen } - secondaryWindow?.rootViewController = glViewController - glViewController.view?.frame = secondaryWindow?.bounds ?? .zero - if let aView = glViewController.view { + secondaryWindow?.rootViewController = gpuViewController + gpuViewController.view?.frame = secondaryWindow?.bounds ?? .zero + if let aView = gpuViewController.view { secondaryWindow?.addSubview(aView) } secondaryWindow?.isHidden = false } else { - addChild(glViewController) - if let aView = glViewController.view { + addChild(gpuViewController) + if let aView = gpuViewController.view { view.addSubview(aView) } - glViewController.didMove(toParent: self) + gpuViewController.didMove(toParent: self) } #if os(iOS) && !targetEnvironment(macCatalyst) addControllerOverlay() @@ -327,12 +377,8 @@ final class PVEmulatorViewController: PVEmulatorViewControllerRootClass, PVAudio initFPSLabel() } - #if !targetEnvironment(simulator) - if !GCController.controllers().isEmpty { - menuButton?.isHidden = true - } - #endif - + hideOrShowMenuButton() + convertOldSaveStatesToNewIfNeeded() core.startEmulation() @@ -349,12 +395,13 @@ final class PVEmulatorViewController: PVEmulatorViewControllerRootClass, PVAudio view.addGestureRecognizer(menuGestureRecognizer!) } #endif - GCController.controllers().forEach { + PVControllerManager.shared.controllers().forEach { $0.setupPauseHandler(onPause: { [weak self] in guard let self = self else { return } self.controllerPauseButtonPressed() }) } + enableControllerInput(false) } public override func viewDidAppear(_: Bool) { @@ -514,44 +561,55 @@ final class PVEmulatorViewController: PVEmulatorViewControllerRootClass, PVAudio // if (@available(iOS 10, *)) { // self.controllerUserInteractionEnabled = enabled; // } + PVControllerManager.shared.controllerUserInteractionEnabled = enabled #endif } @objc func hideMoreInfo() { dismiss(animated: true, completion: { () -> Void in - #if os(tvOS) - self.showMenu(nil) - #else - self.hideMenu() - #endif + self.hideMenu() }) } func hideMenu() { enableControllerInput(false) - if presentedViewController is UIAlertController { + isShowingMenu = false + if (presentedViewController is UIAlertController) && !presentedViewController!.isBeingDismissed { dismiss(animated: true) { () -> Void in } - isShowingMenu = false } + if (presentedViewController is TVAlertController) && !presentedViewController!.isBeingDismissed { + dismiss(animated: true) { () -> Void in } + } + #if os(iOS) + // if there is a DONE button, press it + if let nav = presentedViewController as? UINavigationController, !presentedViewController!.isBeingDismissed { + let top = nav.topViewController?.navigationItem + for bbi in (top?.leftBarButtonItems ?? []) + (top?.rightBarButtonItems ?? []) { + if bbi.style == .done || bbi.action == NSSelectorFromString("done:") { + _ = bbi.target?.perform(bbi.action, with:bbi) + } + } + } + #endif updateLastPlayedTime() core.setPauseEmulation(false) } @objc func updateFPSLabel() { #if DEBUG - print("FPS: \(glViewController.framesPerSecond)") + print("FPS: \(gpuViewController.framesPerSecond)") #endif fpsLabel.text = String(format: "%2.02f", core.emulationFPS) } func captureScreenshot() -> UIImage? { fpsLabel.alpha = 0.0 - let width: CGFloat? = glViewController.view.frame.size.width - let height: CGFloat? = glViewController.view.frame.size.height + let width: CGFloat? = gpuViewController.view.frame.size.width + let height: CGFloat? = gpuViewController.view.frame.size.height let size = CGSize(width: width ?? 0.0, height: height ?? 0.0) UIGraphicsBeginImageContextWithOptions(size, false, UIScreen.main.scale) let rec = CGRect(x: 0, y: 0, width: width ?? 0.0, height: height ?? 0.0) - glViewController.view.drawHierarchy(in: rec, afterScreenUpdates: true) + gpuViewController.view.drawHierarchy(in: rec, afterScreenUpdates: true) let image: UIImage? = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() fpsLabel.alpha = 1.0 @@ -561,7 +619,7 @@ final class PVEmulatorViewController: PVEmulatorViewControllerRootClass, PVAudio #if os(iOS) @objc func takeScreenshot() { if let screenshot = captureScreenshot() { - DispatchQueue.global(qos: .default).async(execute: { () -> Void in + DispatchQueue.global(qos: .utility).async(execute: { () -> Void in UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil) }) @@ -586,13 +644,13 @@ final class PVEmulatorViewController: PVEmulatorViewControllerRootClass, PVAudio } #endif - @objc func showSpeedMenu() { + @objc func showSpeedMenu(_ sender:AnyObject?) { let actionSheet = UIAlertController(title: "Game Speed", message: nil, preferredStyle: .actionSheet) - if traitCollection.userInterfaceIdiom == .pad, let menuButton = menuButton { + if traitCollection.userInterfaceIdiom == .pad, let menuButton = menuButton, sender === menuButton { actionSheet.popoverPresentationController?.sourceView = menuButton actionSheet.popoverPresentationController?.sourceRect = menuButton.bounds } - let speeds = ["Slow", "Normal", "Fast"] + let speeds = ["Slow (20%)", "Normal (100%)", "Fast (500%)"] speeds.enumerated().forEach { idx, title in let action = UIAlertAction(title: title, style: .default, handler: { (_: UIAlertAction) -> Void in self.core.gameSpeed = GameSpeed(rawValue: idx) ?? .normal @@ -605,6 +663,13 @@ final class PVEmulatorViewController: PVEmulatorViewControllerRootClass, PVAudio actionSheet.preferredAction = action } } + let action = UIAlertAction(title: "Cancel", style: .cancel, handler: { (_: UIAlertAction) -> Void in + self.core.setPauseEmulation(false) + self.isShowingMenu = false + self.enableControllerInput(false) + }) + actionSheet.addAction(action) + present(actionSheet, animated: true, completion: { () -> Void in PVControllerManager.shared.iCadeController?.refreshListener() }) @@ -614,15 +679,25 @@ final class PVEmulatorViewController: PVEmulatorViewControllerRootClass, PVAudio guard let moreInfoViewController = UIStoryboard(name: "Provenance", bundle: nil).instantiateViewController(withIdentifier: "gameMoreInfoVC") as? PVGameMoreInfoViewController else { return } moreInfoViewController.game = self.game moreInfoViewController.showsPlayButton = false + let newNav = UINavigationController(rootViewController: moreInfoViewController) #if os(iOS) - moreInfoViewController.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(self.hideMoreInfo)) + moreInfoViewController.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(self.hideMoreInfo)) + #else + let tap = UITapGestureRecognizer(target: self, action: #selector(self.hideMoreInfo)) + tap.allowedPressTypes = [.menu] + moreInfoViewController.view.addGestureRecognizer(tap) #endif + + // disable iOS 13 swipe to dismiss... + if #available(iOS 13.0, tvOS 13.0, *) { + newNav.isModalInPresentation = true + } - let newNav = UINavigationController(rootViewController: moreInfoViewController) self.present(newNav, animated: true) { () -> Void in } - self.isShowingMenu = false - self.enableControllerInput(false) + //hideMoreInfo will/should do this! + //self.isShowingMenu = false + //self.enableControllerInput(false) } typealias QuitCompletion = () -> Void @@ -656,164 +731,7 @@ final class PVEmulatorViewController: PVEmulatorViewControllerRootClass, PVAudio updatePlayedDuration() staticSelf = nil } -} - -// MARK: - PVAudioDelegate - -extension PVEmulatorViewController { - func audioSampleRateDidChange() { - gameAudio.stop() - gameAudio.start() - } -} - -// MARK: - Controllers - -extension PVEmulatorViewController { - func controllerPauseButtonPressed() { - DispatchQueue.main.async(execute: { () -> Void in - if !self.isShowingMenu { - self.showMenu(self) - } else { - self.hideMenu() - } - }) - } - - @objc func controllerDidConnect(_ note: Notification?) { - let controller = note?.object as? GCController - // 8Bitdo controllers don't have a pause button, so don't hide the menu - if !(controller is PViCade8BitdoController || controller is PViCade8BitdoZeroController) { - menuButton?.isHidden = true - // In instances where the controller is connected *after* the VC has been shown, we need to set the pause handler - controller?.setupPauseHandler(onPause: controllerPauseButtonPressed) - #if os(iOS) - setNeedsUpdateOfHomeIndicatorAutoHidden() - #endif - } - } - - @objc func controllerDidDisconnect(_: Notification?) { - menuButton?.isHidden = false - #if os(iOS) - setNeedsUpdateOfHomeIndicatorAutoHidden() - #endif - } - - @objc func handleControllerManagerControllerReassigned(_: Notification?) { - core.controller1 = PVControllerManager.shared.player1 - core.controller2 = PVControllerManager.shared.player2 - core.controller3 = PVControllerManager.shared.player3 - core.controller4 = PVControllerManager.shared.player4 - #if os(tvOS) - PVControllerManager.shared.setSteamControllersMode(core.isRunning ? .gameController : .keyboardAndMouse) - #endif - } - - // MARK: - UIScreenNotifications - - @objc func screenDidConnect(_ note: Notification?) { - ILOG("Screen did connect: \(note?.object ?? "")") - if secondaryScreen == nil { - secondaryScreen = UIScreen.screens[1] - if let aBounds = secondaryScreen?.bounds { - secondaryWindow = UIWindow(frame: aBounds) - } - if let aScreen = secondaryScreen { - secondaryWindow?.screen = aScreen - } - glViewController.view?.removeFromSuperview() - glViewController.removeFromParent() - secondaryWindow?.rootViewController = glViewController - glViewController.view?.frame = secondaryWindow?.bounds ?? .zero - if let aView = glViewController.view { - secondaryWindow?.addSubview(aView) - } - secondaryWindow?.isHidden = false - glViewController.view?.setNeedsLayout() - } - } - - @objc func screenDidDisconnect(_ note: Notification?) { - ILOG("Screen did disconnect: \(note?.object ?? "")") - let screen = note?.object as? UIScreen - if secondaryScreen == screen { - glViewController.view?.removeFromSuperview() - glViewController.removeFromParent() - addChild(glViewController) - - if let aView = glViewController.view, let aView1 = controllerViewController?.view { - view.insertSubview(aView, belowSubview: aView1) - } - - glViewController.view?.setNeedsLayout() - secondaryWindow = nil - secondaryScreen = nil - } - } -} - -extension PVEmulatorViewController { - func showSwapDiscsMenu() { - guard let core = self.core as? (PVEmulatorCore & DiscSwappable) else { - presentError("Internal error: No core found.") - isShowingMenu = false - enableControllerInput(false) - return - } - - let numberOfDiscs = core.numberOfDiscs - guard numberOfDiscs > 1 else { - presentError("Game only supports 1 disc.") - core.setPauseEmulation(false) - isShowingMenu = false - enableControllerInput(false) - return - } - - // Add action for each disc - let actionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) - - for index in 1 ... numberOfDiscs { - actionSheet.addAction(UIAlertAction(title: "\(index)", style: .default, handler: { [unowned self] _ in - - DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: { - core.swapDisc(number: index) - }) - - core.setPauseEmulation(false) - self.isShowingMenu = false - self.enableControllerInput(false) - })) - } - - // Add cancel action - actionSheet.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { [unowned self] _ in - core.setPauseEmulation(false) - self.isShowingMenu = false - self.enableControllerInput(false) - })) - - // Present - if traitCollection.userInterfaceIdiom == .pad { - actionSheet.popoverPresentationController?.sourceView = menuButton - actionSheet.popoverPresentationController?.sourceRect = menuButton?.bounds ?? .zero - } - - present(actionSheet, animated: true) { - PVControllerManager.shared.iCadeController?.refreshListener() - } - } -} - -extension PVEmulatorViewController { - func showCoreOptions() { - let optionsVC = CoreOptionsViewController(withCore: type(of: core) as! CoreOptional.Type) - let nav = UINavigationController(rootViewController: optionsVC) - optionsVC.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(dismissNav)) - present(nav, animated: true, completion: nil) - } - + @objc func dismissNav() { presentedViewController?.dismiss(animated: true, completion: nil) @@ -875,31 +793,3 @@ extension NSNumber { self.init(integerLiteral: touchType.rawValue) } } - -extension GCController { - func setupPauseHandler(onPause: @escaping () -> Void) { - // Using buttonMenu is the recommended way for iOS/tvOS13 and later - if let buttonMenu = buttonMenu { - buttonMenu.pressedChangedHandler = { _, _, isPressed in - if isPressed { - onPause() - } - } - } else { - // Fallback to the old method - controllerPausedHandler = { _ in onPause() - } - } - } - - private var buttonMenu: GCControllerButtonInput? { - if #available(iOS 13.0, tvOS 13.0, *) { - if let microGamepad = microGamepad { - return microGamepad.buttonMenu - } else if let extendedGamepad = extendedGamepad { - return extendedGamepad.buttonMenu - } - } - return nil - } -} diff --git a/Provenance/Emulator/PVGLViewController/PVGCVRViewController.h b/Provenance/Emulator/PVGLViewController/PVGCVRViewController.h new file mode 100644 index 0000000000..fe8fa59014 --- /dev/null +++ b/Provenance/Emulator/PVGLViewController/PVGCVRViewController.h @@ -0,0 +1,23 @@ +// +// PVGCVRViewController.h +// VirtualBoyVR-iOS +// +// Created by Tom Kidd on 9/3/18. +// Copyright © 2018 Tom Kidd. All rights reserved. +// + +#import + +// TODO: Use newer SDK +// https://developers.google.com/cardboard/develop/ios/quickstart +#import "GVRCardboardView.h" + +@class PVEmulatorCore; + +@interface PVGCVRViewController : PVGPUViewController + +@property (nonatomic, weak) PVEmulatorCore *emulatorCore; + +- (instancetype)initWithEmulatorCore:(PVEmulatorCore *)emulatorCore; + +@end diff --git a/Provenance/Emulator/PVGLViewController/PVGCVRViewController.m b/Provenance/Emulator/PVGLViewController/PVGCVRViewController.m new file mode 100644 index 0000000000..4b29f91868 --- /dev/null +++ b/Provenance/Emulator/PVGLViewController/PVGCVRViewController.m @@ -0,0 +1,336 @@ +// +// PVGCVRViewController.m +// VirtualBoyVR-iOS +// +// Created by Tom Kidd on 9/3/18. +// Copyright © 2018 Tom Kidd. All rights reserved. +// + +#import "PVGCVRViewController.h" +#import +#import "PVSettingsModel.h" +#import +#import + +@interface PVGCVRViewController () +{ + GLKVector3 vertices[8]; + GLKVector2 textureCoordinates[8]; + GLKVector3 triangleVertices[6]; + GLKVector2 triangleTexCoords[6]; + + GLuint texture; + + CGRect screenRect; + const void* videoBuffer; + GLenum videoBufferPixelFormat; + GLenum videoBufferPixelType; + CGSize videoBufferSize; + + CGFloat xOffset; + CGFloat yOffset; + + CGFloat scale; + CGFloat sbs; +} + +@property (nonatomic, strong) EAGLContext *glContext; +@property (nonatomic, strong) GLKBaseEffect *effect; +@property (nonatomic, strong) GVRCardboardView *cardboardView; +@property (nonatomic, strong) CADisplayLink *displayLink; + +@end + +@implementation PVGCVRViewController + +- (instancetype)initWithEmulatorCore:(PVEmulatorCore *)emulatorCore +{ + if ((self = [super init])) + { + self.emulatorCore = emulatorCore; + } + + return self; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + +// self.cardboardView = [[GVRCardboardView alloc] initWithFrame:CGRectMake(0, 0, 768, 224)]; + self.cardboardView = [[GVRCardboardView alloc] initWithFrame:CGRectZero]; + self.cardboardView.delegate = self; + self.cardboardView.vrModeEnabled = true; + self.view = self.cardboardView; + + self.glContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; + [EAGLContext setCurrentContext:self.glContext]; + + self.cardboardView.context = self.glContext; + + self.displayLink = [CADisplayLink displayLinkWithTarget: self selector: @selector(render)]; + [self.displayLink addToRunLoop: [NSRunLoop currentRunLoop] forMode: NSDefaultRunLoopMode]; + + self.effect = [[GLKBaseEffect alloc] init]; + + sbs = (CGFloat)[[NSUserDefaults standardUserDefaults] integerForKey:@"sbs"]; + scale = (CGFloat)[[NSUserDefaults standardUserDefaults] floatForKey:@"scale"]; + + [self setupTexture]; +} + + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +- (void)setupTexture +{ + glGenTextures(1, &texture); + glBindTexture(GL_TEXTURE_2D, texture); + glTexImage2D(GL_TEXTURE_2D, 0, [self.emulatorCore internalPixelFormat], self.emulatorCore.bufferSize.width, self.emulatorCore.bufferSize.height, 0, [self.emulatorCore pixelFormat], [self.emulatorCore pixelType], self.emulatorCore.videoBuffer); + if ([[PVSettingsModel sharedInstance] imageSmoothing]) + { + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + } + else + { + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + } + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); +} + +- (void)cardboardView:(GVRCardboardView *)cardboardView willStartDrawing:(GVRHeadTransform *)headTransform { + +} + +- (void)cardboardView:(GVRCardboardView *)cardboardView prepareDrawFrame:(GVRHeadTransform *)headTransform { + +// printf("viewport kGVRCenterEye (%f, %f) %fx%f \n", [headTransform viewportForEye:kGVRCenterEye].origin.x, [headTransform viewportForEye:kGVRCenterEye].origin.y, [headTransform viewportForEye:kGVRCenterEye].size.width, [headTransform viewportForEye:kGVRCenterEye].size.height); +// printf("viewport kGVRLeftEye (%f, %f) %fx%f \n", [headTransform viewportForEye:kGVRLeftEye].origin.x, [headTransform viewportForEye:kGVRLeftEye].origin.y, [headTransform viewportForEye:kGVRLeftEye].size.width, [headTransform viewportForEye:kGVRLeftEye].size.height); +// printf("viewport kGVRRightEye (%f, %f) %fx%f \n", [headTransform viewportForEye:kGVRRightEye].origin.x, [headTransform viewportForEye:kGVRRightEye].origin.y, [headTransform viewportForEye:kGVRRightEye].size.width, [headTransform viewportForEye:kGVRRightEye].size.height); + + CGFloat Vw = [headTransform viewportForEye:kGVRLeftEye].size.width + [headTransform viewportForEye:kGVRRightEye].size.width; + CGFloat Vh = [headTransform viewportForEye:kGVRLeftEye].size.height; + + // ASSUMPTION: Each side of the Virtual Boy's screen (each eye) is 384 x 224 + // https://en.wikipedia.org/wiki/Virtual_Boy_hardware#Specifications + CGFloat Fw = (768.0 + sbs) * scale; + CGFloat Fh = 224.0 * scale; + + xOffset = (Vw - Fw) / 2; + yOffset = (Vh - Fh) / 2; + + if (self.emulatorCore.isSpeedModified) + { + [self fetchVideoBuffer]; + [self renderBlock]; + } + else + { + if (self.emulatorCore.isDoubleBuffered) + { + [self.emulatorCore.frontBufferCondition lock]; + while (!self.emulatorCore.isFrontBufferReady) [self.emulatorCore.frontBufferCondition wait]; + [self.emulatorCore setIsFrontBufferReady:NO]; + [self.emulatorCore.frontBufferLock lock]; + [self fetchVideoBuffer]; + [self renderBlock]; + [self.emulatorCore.frontBufferLock unlock]; + [self.emulatorCore.frontBufferCondition unlock]; + } + else + { + @synchronized(self.emulatorCore) + { + [self fetchVideoBuffer]; + [self renderBlock]; + } + } + } +} + +- (void)cardboardView:(GVRCardboardView *)cardboardView drawEye:(GVREye)eye withHeadTransform:(GVRHeadTransform *)headTransform { + +// printf("eye: %li viewport (%f, %f) %fx%f \n", (long)eye, [headTransform viewportForEye:eye].origin.x, [headTransform viewportForEye:eye].origin.y, [headTransform viewportForEye:eye].size.width, [headTransform viewportForEye:eye].size.height); + + // per-eye frame thing goes here + +} + +- (void)encodeWithCoder:(nonnull NSCoder *)aCoder { + +} + +- (void)cardboardView:(GVRCardboardView *)cardboardView didFireEvent:(GVRUserEvent)event { + switch (event) { + case kGVRUserEventBackButton: + [[self navigationController] popToRootViewControllerAnimated:true]; + break; + + default: + break; + } +} + +- (void)traitCollectionDidChange:(nullable UITraitCollection *)previousTraitCollection { + +} + +- (void)preferredContentSizeDidChangeForChildContentContainer:(nonnull id)container { + +} + +//- (CGSize)sizeForChildContentContainer:(nonnull id)container withParentContainerSize:(CGSize)parentSize { +// +//} + +- (void)systemLayoutFittingSizeDidChangeForChildContentContainer:(nonnull id)container { + +} + +- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(nonnull id)coordinator { + +} + +- (void)willTransitionToTraitCollection:(nonnull UITraitCollection *)newCollection withTransitionCoordinator:(nonnull id)coordinator { + +} + +- (void)didUpdateFocusInContext:(nonnull UIFocusUpdateContext *)context withAnimationCoordinator:(nonnull UIFocusAnimationCoordinator *)coordinator { + +} + +- (void)setNeedsFocusUpdate { + +} + +//- (BOOL)shouldUpdateFocusInContext:(nonnull UIFocusUpdateContext *)context { +// +//} + +- (void)updateFocusIfNeeded { + +} + +- (void)render { + [self.cardboardView render]; +} + +- (void)fetchVideoBuffer { + screenRect = [self.emulatorCore screenRect]; + videoBufferPixelFormat = [self.emulatorCore pixelFormat]; + videoBufferPixelType = [self.emulatorCore pixelType]; + videoBufferSize = [self.emulatorCore bufferSize]; + videoBuffer = [self.emulatorCore videoBuffer]; +} + +- (void)renderBlock { + + GLsizei gl_screenwidth = videoBufferSize.width * scale; + GLsizei gl_screenheight = videoBufferSize.height * scale; + + glViewport(xOffset, yOffset, gl_screenwidth, gl_screenheight); + +// glViewport(0, 0, 3500, 3000); + +// glClearColor(0.0, 1.0, 0.0, 1.0); // green + glClearColor(0.0, 0.0, 0.0, 1.0); // black + glClear(GL_COLOR_BUFFER_BIT); + +// printf("*****\n"); +// printf("screenRect.origin.x: %f\n", screenRect.origin.x); +// printf("screenRect.origin.y: %f\n", screenRect.origin.y); +// printf("screenRect.size.width: %f\n", screenRect.size.width); +// printf("screenRect.size.height: %f\n", screenRect.size.height); +// printf("videoBufferSize.width: %f\n", videoBufferSize.width); +// printf("videoBufferSize.height: %f\n", videoBufferSize.height); +// +// printf("gl_screenwidth: %d\n", gl_screenwidth); +// printf("gl_screenheight: %d\n", gl_screenheight); +// +// printf("xOffset: %f\n", xOffset); +// printf("yOffset: %f\n", yOffset); + + + CGFloat texLeft = screenRect.origin.x / videoBufferSize.width; + CGFloat texTop = screenRect.origin.y / videoBufferSize.height; + CGFloat texRight = ( screenRect.origin.x + screenRect.size.width ) / videoBufferSize.width; + CGFloat texBottom = ( screenRect.origin.y + screenRect.size.height ) / videoBufferSize.height; + + vertices[0] = GLKVector3Make(-1.0, -1.0, 1.0); // Left bottom + vertices[1] = GLKVector3Make( 1.0, -1.0, 1.0); // Right bottom + vertices[2] = GLKVector3Make( 1.0, 1.0, 1.0); // Right top + vertices[3] = GLKVector3Make(-1.0, 1.0, 1.0); // Left top + + textureCoordinates[0] = GLKVector2Make(texLeft, texBottom); // Left bottom + textureCoordinates[1] = GLKVector2Make(texRight, texBottom); // Right bottom + textureCoordinates[2] = GLKVector2Make(texRight, texTop); // Right top + textureCoordinates[3] = GLKVector2Make(texLeft, texTop); // Left top + + int vertexIndices[6] = { + // Front + 0, 1, 2, + 0, 2, 3, + }; + + for (int i = 0; i < 6; i++) { + triangleVertices[i] = vertices[vertexIndices[i]]; + triangleTexCoords[i] = textureCoordinates[vertexIndices[i]]; + } + + glBindTexture(GL_TEXTURE_2D, texture); + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, videoBufferSize.width, videoBufferSize.height, videoBufferPixelFormat, videoBufferPixelType, videoBuffer); + + if (texture) + { + self.effect.texture2d0.envMode = GLKTextureEnvModeReplace; + self.effect.texture2d0.target = GLKTextureTarget2D; + self.effect.texture2d0.name = texture; + self.effect.texture2d0.enabled = YES; + self.effect.useConstantColor = YES; + } + + [self.effect prepareToDraw]; + + glDisable(GL_DEPTH_TEST); + glDisable(GL_CULL_FACE); + + glEnableVertexAttribArray(GLKVertexAttribPosition); + glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, 0, triangleVertices); + + if (texture) + { + glEnableVertexAttribArray(GLKVertexAttribTexCoord0); + glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, 0, triangleTexCoords); + } + + glDrawArrays(GL_TRIANGLES, 0, 6); + + if (texture) + { + glDisableVertexAttribArray(GLKVertexAttribTexCoord0); + } + + glDisableVertexAttribArray(GLKVertexAttribPosition); + +} + +- (void)viewDidLayoutSubviews { + [super viewDidLayoutSubviews]; +} + +@end diff --git a/Provenance/Emulator/PVGLViewController.h b/Provenance/Emulator/PVGLViewController/PVGLViewController.h similarity index 69% rename from Provenance/Emulator/PVGLViewController.h rename to Provenance/Emulator/PVGLViewController/PVGLViewController.h index c5d62dc4d4..d301f8fe97 100644 --- a/Provenance/Emulator/PVGLViewController.h +++ b/Provenance/Emulator/PVGLViewController/PVGLViewController.h @@ -8,15 +8,9 @@ @import UIKit; -#if TARGET_OS_OSX || TARGET_OS_MACCATALYST -#define BaseViewController UIViewController -#else -@import GLKit; -#define BaseViewController GLKViewController -#endif -@class PVEmulatorCore; +#import "PVGPUViewController.h" -@interface PVGLViewController : BaseViewController +@interface PVGLViewController : PVGPUViewController @property (nonatomic, weak) PVEmulatorCore *emulatorCore; #if TARGET_OS_MACCATALYST || TARGET_OS_OSX diff --git a/Provenance/Emulator/PVGLViewController.m b/Provenance/Emulator/PVGLViewController/PVGLViewController.m similarity index 68% rename from Provenance/Emulator/PVGLViewController.m rename to Provenance/Emulator/PVGLViewController/PVGLViewController.m index e47504ab99..d326ebdf12 100644 --- a/Provenance/Emulator/PVGLViewController.m +++ b/Provenance/Emulator/PVGLViewController/PVGLViewController.m @@ -8,8 +8,8 @@ #import "PVGLViewController.h" @import PVSupport; +@import QuartzCore; #import "Provenance-Swift.h" -#import #if !TARGET_OS_MACCATALYST #import @@ -17,38 +17,20 @@ #import #import #else -@import Metal; @import OpenGL; -@import MetalKit; @import AppKit; @import GLUT; #endif -struct PVVertex -{ - GLfloat x, y, z; - GLfloat u, v; -}; - -#define BUFFER_OFFSET(x) ((char *)NULL + (x)) - -struct RenderSettings { - BOOL crtFilterEnabled; - BOOL smoothingEnabled; -} RenderSettings; - -#if TARGET_OS_MACCATALYST -@interface PVGLViewController () -#else @interface PVGLViewController () -#endif { GLuint alternateThreadFramebufferBack; - GLuint alternateThreadFramebufferFront; GLuint alternateThreadColorTextureBack; - GLuint alternateThreadColorTextureFront; GLuint alternateThreadDepthRenderbuffer; + GLuint alternateThreadColorTextureFront; + GLuint alternateThreadFramebufferFront; + GLuint blitFragmentShader; GLuint blitShaderProgram; int blitUniform_EmulatedImage; @@ -67,29 +49,18 @@ @interface PVGLViewController () GLuint texture; struct RenderSettings renderSettings; - -#if TARGET_OS_MACCATALYST -// CADisplayLink displayLink; -#endif } -#if TARGET_OS_MACCATALYST -@property (nonatomic, strong) CIContext *glContext; -@property (nonatomic, strong) CIContext *alternateThreadGLContext; -@property (nonatomic, strong) CIContext *alternateThreadBufferCopyGLContext; -@property (nonatomic, strong) MTKView *mtlview; -@property (nonatomic, strong) id device; -@property (nonatomic, strong) id commandQueue; -#else @property (nonatomic, strong) EAGLContext *glContext; @property (nonatomic, strong) EAGLContext *alternateThreadGLContext; @property (nonatomic, strong) EAGLContext *alternateThreadBufferCopyGLContext; -#endif + @property (nonatomic, assign) GLESVersion glesVersion; @end +PV_OBJC_DIRECT_MEMBERS @implementation PVGLViewController + (void)initialize @@ -102,10 +73,6 @@ - (void)dealloc { glDeleteRenderbuffers(1, &alternateThreadDepthRenderbuffer); } - if (alternateThreadColorTextureFront > 0) - { - glDeleteTextures(1, &alternateThreadColorTextureFront); - } if (alternateThreadColorTextureBack > 0) { glDeleteTextures(1, &alternateThreadColorTextureBack); @@ -114,6 +81,11 @@ - (void)dealloc { glDeleteFramebuffers(1, &alternateThreadFramebufferBack); } + + if (alternateThreadColorTextureFront > 0) + { + glDeleteTextures(1, &alternateThreadColorTextureFront); + } if (alternateThreadFramebufferFront > 0) { glDeleteFramebuffers(1, &alternateThreadFramebufferFront); @@ -181,7 +153,6 @@ - (void)viewDidLoad [self updatePreferredFPS]; -#if !TARGET_OS_MACCATALYST self.glContext = [self bestContext]; if (self.glContext == nil) { @@ -198,29 +169,7 @@ - (void)viewDidLoad [EAGLContext setCurrentContext:self.glContext]; GLKView *view = (GLKView *)self.view; -#else - self.device = MTLCreateSystemDefaultDevice(); - - MTKView *view = [[MTKView alloc] initWithFrame:self.view.bounds device:self.device]; - self.mtlview = view; - [self.view addSubview:self.mtlview]; - view.device = self.device; - view.clearColor = MTLClearColorMake(0.0, 0.0, 0.0, 0.0); - view.depthStencilPixelFormat = MTLPixelFormatDepth32Float_Stencil8; - view.sampleCount = 4; - view.delegate = self; - self.commandQueue = [_device newCommandQueue]; - - - // Set paused and only trigger redraw when needs display is set. - view.paused = NO; - view.enableSetNeedsDisplay = NO; - - // Setup display link. -// CVDisplayLinkCreateWithActiveCGDisplays(&displayLink); -// CVDisplayLinkSetOutputCallback(displayLink, &MyDisplayLinkCallback, (__bridge void*)self); -// CVDisplayLinkStart(displayLink); -#endif + view.opaque = YES; view.layer.opaque = YES; view.context = self.glContext; @@ -229,18 +178,10 @@ - (void)viewDidLoad GLenum depthFormat = self.emulatorCore.depthFormat; switch (depthFormat) { case GL_DEPTH_COMPONENT16: -#if TARGET_OS_MACCATALYST - view.depthStencilPixelFormat = MTLPixelFormatRG8Unorm_sRGB; -#else view.drawableDepthFormat = GLKViewDrawableDepthFormat16; -#endif break; case GL_DEPTH_COMPONENT24: -#if TARGET_OS_MACCATALYST - view.depthStencilPixelFormat = MTLPixelFormatX24_Stencil8; -#else view.drawableDepthFormat = GLKViewDrawableDepthFormat24; -#endif break; default: @@ -258,31 +199,25 @@ - (void)viewDidLoad // Enable multisampling if(PVSettingsModel.shared.debugOptions.multiSampling) { -#if TARGET_OS_MACCATALYST - [view setSampleCount:4]; -#else view.drawableMultisample = GLKViewDrawableMultisample4X; -#endif } } - [self setupVBOs]; [self setupTexture]; -#if TARGET_OS_MACCATALYST -#else defaultVertexShader = [self compileShaderResource:@"shaders/default/default_vertex" ofType:GL_VERTEX_SHADER]; + [self setupVBOs]; + [self setupBlitShader]; [self setupCRTShader]; -#endif alternateThreadFramebufferBack = 0; - alternateThreadFramebufferFront = 0; alternateThreadColorTextureBack = 0; - alternateThreadColorTextureFront = 0; alternateThreadDepthRenderbuffer = 0; + + alternateThreadFramebufferFront = 0; + alternateThreadColorTextureFront = 0; } -#if !TARGET_OS_MACCATALYST -(EAGLContext*)bestContext { EAGLContext* context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; self.glesVersion = GLESVersion3; @@ -298,19 +233,17 @@ -(EAGLContext*)bestContext { return context; } -#endif - (void) updatePreferredFPS { float preferredFPS = self.emulatorCore.frameInterval; - WLOG(@"updatePreferredFPS (%f)", preferredFPS); + VLOG(@"updatePreferredFPS (%f)", preferredFPS); if (preferredFPS < 10) { - WLOG(@"Cores frame interval (%f) too low. Setting to 60", preferredFPS); + VLOG(@"Cores frame interval (%f) too low. Setting to 60", preferredFPS); preferredFPS = 60; } -#if !TARGET_OS_MACCATALYST + [self setPreferredFramesPerSecond:preferredFPS]; - WLOG(@"Actual FPS: %f", self.framesPerSecond); -#endif + VLOG(@"Actual FPS: %f", self.framesPerSecond); } - (void)viewDidLayoutSubviews @@ -402,6 +335,7 @@ - (void)setupTexture glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); } + - (void)setupVBOs { glGenBuffers(1, &vertexVBO); @@ -440,30 +374,82 @@ - (void)updateVBOWithScreenRect:(CGRect)screenRect andVideoBufferSize:(CGSize)vi glBindBuffer(GL_ARRAY_BUFFER, 0); } -#if !TARGET_OS_MACCATALYST +- (void)createShadersDirs { + // TODO: This is a hack, dir should come from arg + NSFileManager *fm = [NSFileManager defaultManager]; + NSError *error; + NSString *docsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true).firstObject; + + [fm createDirectoryAtPath:[docsPath stringByAppendingPathComponent:@"shaders/default/"] withIntermediateDirectories:true attributes:nil error:&error]; + if (error) { + ELOG(@"%@", error.localizedDescription); + } + [fm createDirectoryAtPath:[docsPath stringByAppendingPathComponent:@"shaders/blit/"] withIntermediateDirectories:true attributes:nil error:&error]; + if (error) { + ELOG(@"%@", error.localizedDescription); + } + [fm createDirectoryAtPath:[docsPath stringByAppendingPathComponent:@"shaders/crt/"] withIntermediateDirectories:true attributes:nil error:&error]; + if (error) { + ELOG(@"%@", error.localizedDescription); + } +} + - (GLuint)compileShaderResource:(NSString*)shaderResourceName ofType:(GLenum)shaderType { - NSString* shaderPath = [[NSBundle mainBundle] pathForResource:shaderResourceName ofType:@"glsl"]; + // TODO: check shaderType == GL_VERTEX_SHADER + NSString *fileName = [shaderResourceName stringByAppendingPathExtension:@"glsl"]; + + NSString *docsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true).firstObject stringByAppendingPathComponent:fileName]; + NSFileManager *fm = [NSFileManager defaultManager]; + + NSString* shaderPath; + NSString* bundleShaderPath = [[NSBundle mainBundle] pathForResource:shaderResourceName + ofType:@"glsl"]; + + if(![fm fileExistsAtPath:docsPath]) { + [self createShadersDirs]; + NSError *error; + + [fm copyItemAtPath:bundleShaderPath + toPath:docsPath + error:&error]; + if (error) { + ELOG(@"%@", error.localizedDescription); + } + } + + if([fm fileExistsAtPath:docsPath]) { + shaderPath = docsPath; + } else { + shaderPath = bundleShaderPath; + } if ( shaderPath == NULL ) { + ELOG(@"Nil shaderPath"); return 0; } - NSString* shaderSource = [NSString stringWithContentsOfFile:shaderPath encoding:NSASCIIStringEncoding error:nil]; + NSError *error; + NSString* shaderSource = [NSString stringWithContentsOfFile:shaderPath + encoding:NSASCIIStringEncoding + error:&error]; if ( shaderSource == NULL ) { + ELOG(@"Nil shaderSource: %@ %@", shaderPath, error.localizedDescription); return 0; } const char* shaderSourceCString = [shaderSource cStringUsingEncoding:NSASCIIStringEncoding]; if ( shaderSourceCString == NULL ) { + ELOG(@"Nil shaderSourceCString"); return 0; } GLuint shader = glCreateShader( shaderType ); if ( shader == 0 ) { + ELOG(@"Nil shader"); return 0; } @@ -566,13 +552,16 @@ - (void)glkView:(GLKView *)view drawInRect:(CGRect)rect void (^renderBlock)(void) = ^() { - MAKESTRONG(self); + MAKESTRONG_RETURN_IF_NIL(self); #if DEBUG glClearColor(1.0, 1.0, 1.0, 1.0); glClear(GL_COLOR_BUFFER_BIT); #endif + const BOOL rendersToOpenGL = strongself->_emulatorCore.rendersToOpenGL; + const BOOL crtEnabled = strongself->renderSettings.crtFilterEnabled; + GLuint frontBufferTex; - if ([self.emulatorCore rendersToOpenGL]) + if (UNLIKELY(rendersToOpenGL)) { frontBufferTex = strongself->alternateThreadColorTextureFront; [self.emulatorCore.frontBufferLock lock]; @@ -590,7 +579,7 @@ - (void)glkView:(GLKView *)view drawInRect:(CGRect)rect glBindTexture(GL_TEXTURE_2D, frontBufferTex); } - if (strongself->renderSettings.crtFilterEnabled) + if (crtEnabled) { glUseProgram(strongself->crtShaderProgram); glUniform4f(strongself->crtUniform_DisplayRect, screenRect.origin.x, screenRect.origin.y, screenRect.size.width, screenRect.size.height); @@ -630,213 +619,22 @@ - (void)glkView:(GLKView *)view drawInRect:(CGRect)rect glBindTexture(GL_TEXTURE_2D, 0); - if ([strongself->_emulatorCore rendersToOpenGL]) - { + if (UNLIKELY(rendersToOpenGL)) { glFlush(); [strongself->_emulatorCore.frontBufferLock unlock]; } }; - if ([self.emulatorCore rendersToOpenGL]) - { - if ((!self.emulatorCore.isSpeedModified && ![self.emulatorCore isEmulationPaused]) || self.emulatorCore.isFrontBufferReady) + if (UNLIKELY(self.emulatorCore.rendersToOpenGL)) { + // TODO: should isEmulationPaused be the always &&, not before the | ? @JoeMatt + // if (LIKELY(!self.emulatorCore.isSpeedModified) && LIKELY(!self.emulatorCore.isEmulationPaused) && LIKELY(self.emulatorCore.isFrontBufferReady)) + if ((LIKELY(!self.emulatorCore.isSpeedModified) && LIKELY(!self.emulatorCore.isEmulationPaused)) || LIKELY(self.emulatorCore.isFrontBufferReady)) { [self.emulatorCore.frontBufferCondition lock]; - while (!self.emulatorCore.isFrontBufferReady && ![self.emulatorCore isEmulationPaused]) [self.emulatorCore.frontBufferCondition wait]; - BOOL isFrontBufferReady = self.emulatorCore.isFrontBufferReady; - [self.emulatorCore.frontBufferCondition unlock]; - if (isFrontBufferReady) - { - fetchVideoBuffer(); - renderBlock(); - [_emulatorCore.frontBufferCondition lock]; - _emulatorCore.isFrontBufferReady = NO; - [_emulatorCore.frontBufferCondition signal]; - [_emulatorCore.frontBufferCondition unlock]; - } - } - } - else - { - if (self.emulatorCore.isSpeedModified) - { - fetchVideoBuffer(); - renderBlock(); - } - else - { - if (self.emulatorCore.isDoubleBuffered) - { - [self.emulatorCore.frontBufferCondition lock]; - while (!self.emulatorCore.isFrontBufferReady && ![self.emulatorCore isEmulationPaused]) [self.emulatorCore.frontBufferCondition wait]; - _emulatorCore.isFrontBufferReady = NO; - [_emulatorCore.frontBufferLock lock]; - fetchVideoBuffer(); - renderBlock(); - [_emulatorCore.frontBufferLock unlock]; - [_emulatorCore.frontBufferCondition unlock]; - } - else + while (UNLIKELY(!self.emulatorCore.isFrontBufferReady) && LIKELY(!self.emulatorCore.isEmulationPaused)) { - @synchronized(self.emulatorCore) - { - fetchVideoBuffer(); - renderBlock(); - } + [self.emulatorCore.frontBufferCondition wait]; } - } - } -} -#else -// Mac OS Stuff -// MARK: - MTKViewDelegate - -/*! - @method mtkView:drawableSizeWillChange: - @abstract Called whenever the drawableSize of the view will change - @discussion Delegate can recompute view and projection matricies or regenerate any buffers to be compatible with the new view size or resolution - @param view MTKView which called this method - @param size New drawable size in pixels - */ -- (void)mtkView:(nonnull MTKView *)view drawableSizeWillChange:(CGSize)size { - -} - -/*! - @method drawInMTKView: - @abstract Called on the delegate when it is asked to render into the view - @discussion Called on the delegate when it is asked to render into the view - */ -- (void)drawInMTKView:(nonnull MTKView *)view { - //guard let safeCurrentDrawable = self.currentDrawable, - // let safeCommandBuffer = self.commandQueue.makeCommandBuffer() - //else { - // return - //} - // - //let image: CIImage - //let baseImage: CIImage = CIImage(bitmapData: NSData(bytes: &self.buffer, length: 640 * 480 * PVMTLView.elementLength) as Data, bytesPerRow: 640 * PVMTLView.elementLength, size: PVMTLView.imageSize, format: CIFormat.ARGB8, colorSpace: self.rgbColorSpace) - // - //if self.nearestNeighborRendering { - // image = baseImage.samplingNearest().transformed(by: self.tNesScreen) - //} else { - // image = baseImage.transformed(by: self.tNesScreen) - //} - // - //let renderDestination = CIRenderDestination(width: Int(self.drawableSize.width), height: Int(self.drawableSize.height), pixelFormat: self.colorPixelFormat, commandBuffer: safeCommandBuffer) { - // () -> MTLTexture in return safeCurrentDrawable.texture - //} - // - //do { - // _ = try self.context.startTask(toRender: image, to: renderDestination) - //} catch { - // os_log("%@", error.localizedDescription) - //} - // - //safeCommandBuffer.present(safeCurrentDrawable) - //safeCommandBuffer.commit() - // - //self.lastDrawableSize = self.drawableSizeview - id safeCurrentDrawable = view.currentDrawable; - id safeCommandBuffer = [self.commandQueue commandBuffer]; - - - __block CGRect screenRect; - __block const void* videoBuffer; - __block GLenum videoBufferPixelFormat; - __block GLenum videoBufferPixelType; - __block CGSize videoBufferSize; - - void (^fetchVideoBuffer)(void) = ^() - { - screenRect = [self.emulatorCore screenRect]; - videoBufferPixelFormat = [self.emulatorCore pixelFormat]; - videoBufferPixelType = [self.emulatorCore pixelType]; - videoBufferSize = [self.emulatorCore bufferSize]; - videoBuffer = [self.emulatorCore videoBuffer]; - }; - - MAKEWEAK(self); - - void (^renderBlock)(void) = ^() - { - MAKESTRONG(self); -//#if DEBUG -// glClearColor(1.0, 1.0, 1.0, 1.0); -// glClear(GL_COLOR_BUFFER_BIT); -//#endif - GLuint frontBufferTex; - if ([self.emulatorCore rendersToOpenGL]) - { - frontBufferTex = strongself->alternateThreadColorTextureFront; - [self.emulatorCore.frontBufferLock lock]; - } - else - { - glBindTexture(GL_TEXTURE_2D, strongself->texture); - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, videoBufferSize.width, videoBufferSize.height, videoBufferPixelFormat, videoBufferPixelType, videoBuffer); - frontBufferTex = strongself->texture; - } - - if (frontBufferTex) - { - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, frontBufferTex); - } - - if (strongself->renderSettings.crtFilterEnabled) - { - glUseProgram(strongself->crtShaderProgram); - glUniform4f(strongself->crtUniform_DisplayRect, screenRect.origin.x, screenRect.origin.y, screenRect.size.width, screenRect.size.height); - glUniform1i(strongself->crtUniform_EmulatedImage, 0); - glUniform2f(strongself->crtUniform_EmulatedImageSize, videoBufferSize.width, videoBufferSize.height); - float finalResWidth = view.drawableSize.width; - float finalResHeight = view.drawableSize.height; - glUniform2f(strongself->crtUniform_FinalRes, finalResWidth, finalResHeight); - } - else - { - glUseProgram(strongself->blitShaderProgram); - glUniform1i(strongself->blitUniform_EmulatedImage, 0); - } - - glDisable(GL_DEPTH_TEST); - glDisable(GL_CULL_FACE); - -// [self updateVBOWithScreenRect:screenRect andVideoBufferSize:videoBufferSize]; - - glBindBuffer(GL_ARRAY_BUFFER, strongself->vertexVBO); - -// glEnableVertexAttribArray(GLKVertexAttribPosition); -// glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(struct PVVertex), BUFFER_OFFSET(0)); -// -// glEnableVertexAttribArray(GLKVertexAttribTexCoord0); -// glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(struct PVVertex), BUFFER_OFFSET(12)); - - glBindBuffer(GL_ARRAY_BUFFER, 0); - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, strongself->indexVBO); - glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, NULL); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - -// glDisableVertexAttribArray(GLKVertexAttribTexCoord0); -// glDisableVertexAttribArray(GLKVertexAttribPosition); - - glBindTexture(GL_TEXTURE_2D, 0); - - if ([strongself->_emulatorCore rendersToOpenGL]) - { - glFlush(); - [strongself->_emulatorCore.frontBufferLock unlock]; - } - }; - - if ([self.emulatorCore rendersToOpenGL]) - { - if ((!self.emulatorCore.isSpeedModified && ![self.emulatorCore isEmulationPaused]) || self.emulatorCore.isFrontBufferReady) - { - [self.emulatorCore.frontBufferCondition lock]; - while (!self.emulatorCore.isFrontBufferReady && ![self.emulatorCore isEmulationPaused]) [self.emulatorCore.frontBufferCondition wait]; BOOL isFrontBufferReady = self.emulatorCore.isFrontBufferReady; [self.emulatorCore.frontBufferCondition unlock]; if (isFrontBufferReady) @@ -850,19 +648,21 @@ - (void)drawInMTKView:(nonnull MTKView *)view { } } } - else - { - if (self.emulatorCore.isSpeedModified) + else { + if (UNLIKELY(self.emulatorCore.isSpeedModified)) { fetchVideoBuffer(); renderBlock(); } else { - if (self.emulatorCore.isDoubleBuffered) + if (UNLIKELY(self.emulatorCore.isDoubleBuffered)) { [self.emulatorCore.frontBufferCondition lock]; - while (!self.emulatorCore.isFrontBufferReady && ![self.emulatorCore isEmulationPaused]) [self.emulatorCore.frontBufferCondition wait]; + while (UNLIKELY(!self.emulatorCore.isFrontBufferReady) && LIKELY(!self.emulatorCore.isEmulationPaused)) + { + [self.emulatorCore.frontBufferCondition wait]; + } _emulatorCore.isFrontBufferReady = NO; [_emulatorCore.frontBufferLock lock]; fetchVideoBuffer(); @@ -870,8 +670,7 @@ - (void)drawInMTKView:(nonnull MTKView *)view { [_emulatorCore.frontBufferLock unlock]; [_emulatorCore.frontBufferCondition unlock]; } - else - { + else { @synchronized(self.emulatorCore) { fetchVideoBuffer(); @@ -880,53 +679,15 @@ - (void)drawInMTKView:(nonnull MTKView *)view { } } } - - - [safeCommandBuffer presentDrawable:safeCurrentDrawable]; - [safeCommandBuffer commit]; } -//@objc private func appResignedActive() { -//self.queue.suspend() -//self.hasSuspended = true -//} -// -//@objc private func appBecameActive() { -//if self.hasSuspended { -// self.queue.resume() -// self.hasSuspended = false -//} -//} -#endif - #pragma mark - PVRenderDelegate protocol methods -#if TARGET_OS_MACCATALYST //|| TARGET_OS_MACOS -- (void)startRenderingOnAlternateThread { - -} -- (void)didRenderFrameOnAlternateThread { - [self.emulatorCore.frontBufferLock lock]; - - // TODO: Copy the back buffer - [self.emulatorCore.frontBufferLock unlock]; - - // Notify render thread that the front buffer is ready - [self.emulatorCore.frontBufferCondition lock]; - [self.emulatorCore setIsFrontBufferReady:YES]; - [self.emulatorCore.frontBufferCondition signal]; - [self.emulatorCore.frontBufferCondition unlock]; - - // Switch context back to emulator's -// [EAGLContext setCurrentContext:self.alternateThreadGLContext]; -// glBindFramebuffer(GL_FRAMEBUFFER, alternateThreadFramebufferBack); -} - -#else - (void)startRenderingOnAlternateThread { self.emulatorCore.glesVersion = self.glesVersion; self.alternateThreadBufferCopyGLContext = [[EAGLContext alloc] initWithAPI:[self.glContext API] sharegroup:[self.glContext sharegroup]]; + [EAGLContext setCurrentContext:self.alternateThreadBufferCopyGLContext]; if (alternateThreadFramebufferFront == 0) @@ -1043,5 +804,4 @@ - (void)didRenderFrameOnAlternateThread [EAGLContext setCurrentContext:self.alternateThreadGLContext]; glBindFramebuffer(GL_FRAMEBUFFER, alternateThreadFramebufferBack); } -#endif @end diff --git a/Provenance/Emulator/PVGLViewController/PVGPUViewController.h b/Provenance/Emulator/PVGLViewController/PVGPUViewController.h new file mode 100644 index 0000000000..1075bec755 --- /dev/null +++ b/Provenance/Emulator/PVGLViewController/PVGPUViewController.h @@ -0,0 +1,55 @@ +// +// PVGPUViewController.h +// Provenance +// +// Created by Joseph Mattiello on 1/11/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +struct float2{ float x; float y; }; +struct float4 { float x; float y; float z; float w; }; + +struct CRT_Data +{ + struct float4 DisplayRect; + struct float2 EmulatedImageSize; + struct float2 FinalRes; +}; + +struct PVVertex +{ + GLfloat x, y, z; + GLfloat u, v; +}; + +#define BUFFER_OFFSET(x) ((char *)NULL + (x)) + +typedef struct RenderSettings { + BOOL crtFilterEnabled; + BOOL smoothingEnabled; +} RenderSettings; + +#if TARGET_OS_OSX || TARGET_OS_MACCATALYST +#define BaseViewController UIViewController +#else +@import GLKit; +#define BaseViewController GLKViewController +#endif +@class PVEmulatorCore; + +@interface PVGPUViewController : BaseViewController + +#if TARGET_OS_OSX || TARGET_OS_MACCATALYST +@property (nonatomic, assign) BOOL isPaused; +@property (nonatomic, assign) double framesPerSecond; +@property (nonatomic, assign) NSTimeInterval timeSinceLastDraw; + +#endif + +@end + +NS_ASSUME_NONNULL_END diff --git a/Provenance/Emulator/PVGLViewController/PVGPUViewController.m b/Provenance/Emulator/PVGLViewController/PVGPUViewController.m new file mode 100644 index 0000000000..63974f575e --- /dev/null +++ b/Provenance/Emulator/PVGLViewController/PVGPUViewController.m @@ -0,0 +1,33 @@ +// +// PVGPUViewController.m +// Provenance +// +// Created by Joseph Mattiello on 1/11/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +#import "PVGPUViewController.h" + +@interface PVGPUViewController () + +@end + +PV_OBJC_DIRECT_MEMBERS +@implementation PVGPUViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/Provenance/Emulator/PVGLViewController/PVMetalViewController.h b/Provenance/Emulator/PVGLViewController/PVMetalViewController.h new file mode 100644 index 0000000000..2c13caabb7 --- /dev/null +++ b/Provenance/Emulator/PVGLViewController/PVMetalViewController.h @@ -0,0 +1,26 @@ +// +// PVMetalViewController.h +// Provenance +// +// Created by James Addyman on 08/08/2013. +// Copyright (c) 2013 James Addyman. All rights reserved. +// + +@import UIKit; +#import "PVGPUViewController.h" + +@class PVEmulatorCore; + +@interface PVMetalViewController : PVGPUViewController + +@property (nonatomic, weak) PVEmulatorCore *emulatorCore; +#if TARGET_OS_MACCATALYST || TARGET_OS_OSX +@property (nonatomic, assign) BOOL isPaused; +@property (nonatomic, assign) NSTimeInterval timeSinceLastDraw; +@property (nonatomic, assign) NSInteger framesPerSecond; +#endif + + +- (instancetype)initWithEmulatorCore:(PVEmulatorCore *)emulatorCore; + +@end diff --git a/Provenance/Emulator/PVGLViewController/PVMetalViewController.m b/Provenance/Emulator/PVGLViewController/PVMetalViewController.m new file mode 100644 index 0000000000..c1c2d66b0b --- /dev/null +++ b/Provenance/Emulator/PVGLViewController/PVMetalViewController.m @@ -0,0 +1,806 @@ +// +// PVMetalViewController.m +// Provenance +// +// Created by James Addyman on 08/08/2013. +// Copyright (c) 2013 James Addyman. All rights reserved. +// + +#import "PVMetalViewController.h" +@import PVSupport; +#import "Provenance-Swift.h" +#import + +#if !TARGET_OS_MACCATALYST +#import +#import +#import +#import +#else +@import OpenGL; +@import AppKit; +@import GLUT; +#endif + +// Add SPI https://developer.apple.com/documentation/opengles/eaglcontext/2890259-teximageiosurface?language=objc +@interface EAGLContext() +- (BOOL)texImageIOSurface:(IOSurfaceRef)ioSurface target:(NSUInteger)target internalFormat:(NSUInteger)internalFormat width:(uint32_t)width height:(uint32_t)height format:(NSUInteger)format type:(NSUInteger)type plane:(uint32_t)plane; +@end + +#define BUFFER_COUNT 3 + +@import Metal; +@import MetalKit; + +@interface PVMetalViewController () +{ + GLuint alternateThreadFramebufferBack; + GLuint alternateThreadColorTextureBack; + GLuint alternateThreadDepthRenderbuffer; + + IOSurfaceRef backingIOSurface; // for OpenGL core support + id backingMTLTexture; // for OpenGL core support + + id _uploadBuffer[BUFFER_COUNT]; + uint _frameCount; + + struct RenderSettings renderSettings; +} + +@property (nonatomic, strong) MTKView *mtlview; +@property (nonatomic, strong) id device; +@property (nonatomic, strong) id commandQueue; +@property (nonatomic, strong) id blitPipeline; +@property (nonatomic, strong) id crtFilterPipeline; +@property (nonatomic, strong) id pointSampler; +@property (nonatomic, strong) id linearSampler; +@property (nonatomic, strong) id inputTexture; +@property (nonatomic, strong) id previousCommandBuffer; // used for scheduling with OpenGL context + +@property (nonatomic, strong) EAGLContext *glContext; +@property (nonatomic, strong) EAGLContext *alternateThreadGLContext; +@property (nonatomic, strong) EAGLContext *alternateThreadBufferCopyGLContext; + +@property (nonatomic, assign) GLESVersion glesVersion; + +@end + +PV_OBJC_DIRECT_MEMBERS +@implementation PVMetalViewController + ++ (void)initialize +{ +} + +- (void)dealloc +{ + if (alternateThreadDepthRenderbuffer > 0) + { + glDeleteRenderbuffers(1, &alternateThreadDepthRenderbuffer); + } + if (alternateThreadColorTextureBack > 0) + { + glDeleteTextures(1, &alternateThreadColorTextureBack); + } + if (alternateThreadFramebufferBack > 0) + { + glDeleteFramebuffers(1, &alternateThreadFramebufferBack); + } + + backingMTLTexture = nil; + if (backingIOSurface) + CFRelease(backingIOSurface); + + [[PVSettingsModel shared] removeObserver:self forKeyPath:@"crtFilterEnabled"]; + [[PVSettingsModel shared] removeObserver:self forKeyPath:@"imageSmoothing"]; +} + +- (instancetype)initWithEmulatorCore:(PVEmulatorCore *)emulatorCore +{ + if ((self = [super init])) + { + self.emulatorCore = emulatorCore; + if ([self.emulatorCore rendersToOpenGL]) + { + self.emulatorCore.renderDelegate = self; + } + + renderSettings.crtFilterEnabled = [[PVSettingsModel shared] crtFilterEnabled]; + renderSettings.smoothingEnabled = [[PVSettingsModel shared] imageSmoothing]; + + [[PVSettingsModel shared] addObserver:self forKeyPath:@"crtFilterEnabled" options:NSKeyValueObservingOptionNew context:nil]; + [[PVSettingsModel shared] addObserver:self forKeyPath:@"imageSmoothing" options:NSKeyValueObservingOptionNew context:nil]; + } + + return self; +} + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + if ([keyPath isEqualToString:@"crtFilterEnabled"]) { + renderSettings.crtFilterEnabled = [[PVSettingsModel shared] crtFilterEnabled]; + } else if ([keyPath isEqualToString:@"imageSmoothing"]) { + renderSettings.smoothingEnabled = [[PVSettingsModel shared] imageSmoothing]; + } else { + [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; + } +} + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + [self updatePreferredFPS]; + + if (self.emulatorCore.rendersToOpenGL) + { + self.glContext = [self bestContext]; + + ILOG(@"Initiated GLES version %lu", (unsigned long)self.glContext.API); + + // TODO: Need to benchmark this + + self.glContext.multiThreaded = PVSettingsModel.shared.debugOptions.multiThreadedGL; + + [EAGLContext setCurrentContext:self.glContext]; + } + + _frameCount = 0; + self.device = MTLCreateSystemDefaultDevice(); + + MTKView *view = [[MTKView alloc] initWithFrame:self.view.bounds device:self.device]; + self.mtlview = view; + [self.view addSubview:self.mtlview]; + view.device = self.device; + view.clearColor = MTLClearColorMake(0.0, 0.0, 0.0, 0.0); + view.depthStencilPixelFormat = MTLPixelFormatDepth32Float_Stencil8; + view.sampleCount = 1; + view.delegate = self; + view.autoResizeDrawable = YES; + self.commandQueue = [_device newCommandQueue]; + + + // Set paused and only trigger redraw when needs display is set. + view.paused = NO; + view.enableSetNeedsDisplay = NO; + + // Setup display link. +// CVDisplayLinkCreateWithActiveCGDisplays(&displayLink); +// CVDisplayLinkSetOutputCallback(displayLink, &MyDisplayLinkCallback, (__bridge void*)self); +// CVDisplayLinkStart(displayLink); + + view.opaque = YES; + view.layer.opaque = YES; + + view.userInteractionEnabled = NO; + + GLenum depthFormat = self.emulatorCore.depthFormat; + switch (depthFormat) { + case GL_DEPTH_COMPONENT16: + if (@available(macOS 10.12, iOS 13.0, *)) + { + view.depthStencilPixelFormat = MTLPixelFormatDepth16Unorm; + } + else + { + view.depthStencilPixelFormat = MTLPixelFormatDepth32Float; + } + break; + case GL_DEPTH_COMPONENT24: + view.depthStencilPixelFormat = MTLPixelFormatX32_Stencil8; // fallback to D32 if D24 isn't supported + #if !TARGET_OS_IPHONE + if (_device.isDepth24Stencil8PixelFormatSupported) + view.depthStencilPixelFormat = MTLPixelFormatX24_Stencil8; + #endif + break; + + default: + break; + } + + // Set scaling factor for retina displays. + if (PVSettingsModel.shared.nativeScaleEnabled) { + CGFloat scale = [[UIScreen mainScreen] scale]; + if (scale != 1.0f) { + view.layer.contentsScale = scale; + view.layer.rasterizationScale = scale; + view.contentScaleFactor = scale; + } + + // Enable multisampling + if(PVSettingsModel.shared.debugOptions.multiSampling) { + //[view setSampleCount:4]; // Having the view multi-sampled doesn't make sense to me. We need to resolve the MSAA before presenting it + } + } + + [self setupTexture]; + + [self setupBlitShader]; + [self setupCRTShader]; + + alternateThreadFramebufferBack = 0; + alternateThreadColorTextureBack = 0; + alternateThreadDepthRenderbuffer = 0; +} + +-(EAGLContext*)bestContext { + EAGLContext* context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; + self.glesVersion = GLESVersion3; + if (context == nil) + { + context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; + self.glesVersion = GLESVersion2; + if (context == nil) { + context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1]; + self.glesVersion = GLESVersion1; + } + } + + return context; +} + +- (void) updatePreferredFPS { + float preferredFPS = self.emulatorCore.frameInterval; + WLOG(@"updatePreferredFPS (%f)", preferredFPS); + if (preferredFPS < 10) { + WLOG(@"Cores frame interval (%f) too low. Setting to 60", preferredFPS); + preferredFPS = 60; + } + self.mtlview.preferredFramesPerSecond = preferredFPS; + [self setPreferredFramesPerSecond:preferredFPS]; +} + +- (void)viewDidLayoutSubviews +{ + [super viewDidLayoutSubviews]; + + UIEdgeInsets parentSafeAreaInsets = UIEdgeInsetsZero; + if (@available(iOS 11.0, tvOS 11.0, macOS 11.0, macCatalyst 11.0, *)) { + parentSafeAreaInsets = self.parentViewController.view.safeAreaInsets; + } + + if (!CGRectIsEmpty([self.emulatorCore screenRect])) + { + CGSize aspectSize = [self.emulatorCore aspectSize]; + CGFloat ratio = 0.0; + if (aspectSize.width > aspectSize.height) { + ratio = aspectSize.width / aspectSize.height; + } else { + ratio = aspectSize.height / aspectSize.width; + } + + CGSize parentSize = CGSizeZero; + if ([self parentViewController]) + { + parentSize = [[[self parentViewController] view] bounds].size; + } + else + { + parentSize = [[self.view window] bounds].size; + } + + CGFloat height = 0.0; + CGFloat width = 0.0; + + if (parentSize.width > parentSize.height) { + if (PVSettingsModel.shared.integerScaleEnabled) { height = (floor(parentSize.height/aspectSize.height)) * aspectSize.height;} + else + {height = parentSize.height;} + width = roundf(height * ratio); + if (width > parentSize.width) + { + width = parentSize.width; + height = roundf(width / ratio); + } + } else { + if (PVSettingsModel.shared.integerScaleEnabled) { width = (floor(parentSize.width/aspectSize.width)) * aspectSize.width;} + else + {width = parentSize.width;} + height = roundf(width / ratio); + if (height > parentSize.height) + { + height = parentSize.width; + width = roundf(height / ratio); + } + } + + CGPoint origin = CGPointMake(roundf((parentSize.width - width) / 2.0), 0.0); + if (([self.traitCollection userInterfaceIdiom] == UIUserInterfaceIdiomPhone) && (parentSize.height > parentSize.width)) + { + origin.y = parentSafeAreaInsets.top + 40.0f; // directly below menu button at top of screen + } + else + { + origin.y = roundf((parentSize.height - height) / 2.0); // centered + } + + [[self view] setFrame:CGRectMake(origin.x, origin.y, width, height)]; + [self.mtlview setFrame:CGRectMake(0, 0, width, height)]; + } + + [self updatePreferredFPS]; +} + +- (void)updateInputTexture +{ + CGRect screenRect = self.emulatorCore.screenRect; + MTLPixelFormat pixelFormat = [self getMTLPixelFormatFromGLPixelFormat:self.emulatorCore.pixelFormat type:self.emulatorCore.pixelType]; + + if (self.emulatorCore.rendersToOpenGL) { + pixelFormat = MTLPixelFormatRGBA8Unorm; + } + if (self.inputTexture == nil || + self.inputTexture.width != screenRect.size.width || + self.inputTexture.height != screenRect.size.height || + self.inputTexture.pixelFormat != pixelFormat) + { + MTLTextureDescriptor* desc = [MTLTextureDescriptor new]; + desc.textureType = MTLTextureType2D; + desc.pixelFormat = pixelFormat; + desc.width = screenRect.size.width; + desc.height = screenRect.size.height; + desc.storageMode = MTLStorageModePrivate; + desc.usage = MTLTextureUsageShaderRead; + + self.inputTexture = [self.device newTextureWithDescriptor:desc]; + } +} + +- (void)setupTexture +{ + [self updateInputTexture]; + + if (!self.emulatorCore.rendersToOpenGL) + { + uint formatByteWidth = [self getByteWidthForPixelFormat:self.emulatorCore.pixelFormat type:self.emulatorCore.pixelType]; + + for (int i = 0; i < BUFFER_COUNT; ++i) + { + _uploadBuffer[i] = [_device newBufferWithLength:self.emulatorCore.bufferSize.width * self.emulatorCore.bufferSize.height * formatByteWidth options:MTLResourceStorageModeShared]; + } + } + + { + MTLSamplerDescriptor* desc = [MTLSamplerDescriptor new]; + desc.minFilter = MTLSamplerMinMagFilterNearest; + desc.magFilter = MTLSamplerMinMagFilterNearest; + desc.mipFilter = MTLSamplerMipFilterNearest; + desc.sAddressMode = MTLSamplerAddressModeClampToZero; + desc.tAddressMode = MTLSamplerAddressModeClampToZero; + desc.rAddressMode = MTLSamplerAddressModeClampToZero; + + _pointSampler = [_device newSamplerStateWithDescriptor:desc]; + } + + { + MTLSamplerDescriptor* desc = [MTLSamplerDescriptor new]; + desc.minFilter = MTLSamplerMinMagFilterLinear; + desc.magFilter = MTLSamplerMinMagFilterLinear; + desc.mipFilter = MTLSamplerMipFilterNearest; + desc.sAddressMode = MTLSamplerAddressModeClampToZero; + desc.tAddressMode = MTLSamplerAddressModeClampToZero; + desc.rAddressMode = MTLSamplerAddressModeClampToZero; + + _linearSampler = [_device newSamplerStateWithDescriptor:desc]; + } +} + +// these helper functions getByteWidthForPixelFormat and getMTLPixelFormatFromGLPixelFormat are not great +// ideally we'd take in API agnostic data rather than remapping GL to MTL but this will work for now even though it's a bit fragile +- (uint)getByteWidthForPixelFormat:(GLenum)pixelFormat type:(GLenum)pixelType +{ + uint typeWidth = 0; + switch (pixelType) + { + case GL_BYTE: + case GL_UNSIGNED_BYTE: + typeWidth = 1; + break; + case GL_SHORT: + case GL_UNSIGNED_SHORT: + case GL_UNSIGNED_SHORT_5_6_5: + typeWidth = 2; + break; + case GL_INT: + case GL_UNSIGNED_INT: + case GL_FLOAT: + case 0x8367: // GL_UNSIGNED_INT_8_8_8_8_REV: + typeWidth = 4; + break; + default: + assert(!"Unknown GL pixelType. Add me"); + } + + switch (pixelFormat) + { + case GL_BGRA: + case GL_RGBA: + return 4 * typeWidth; + + case GL_RGB: + if (pixelType == GL_UNSIGNED_SHORT_5_6_5) + return typeWidth; + break; + default: + break; + } + + assert(!"Unknown GL pixelFormat. Add me"); + return 1; +} + +- (MTLPixelFormat)getMTLPixelFormatFromGLPixelFormat:(GLenum)pixelFormat type:(GLenum)pixelType +{ + if (pixelFormat == GL_BGRA && (pixelType == GL_UNSIGNED_BYTE || pixelType == 0x8367 /* GL_UNSIGNED_INT_8_8_8_8_REV */)) + { + return MTLPixelFormatBGRA8Unorm; + } + else if (pixelFormat == GL_RGBA && pixelType == GL_UNSIGNED_BYTE) + { + return MTLPixelFormatRGBA8Unorm; + } + else if (pixelFormat == GL_RGBA && pixelType == GL_BYTE) + { + return MTLPixelFormatRGBA8Snorm; + } + else if (pixelFormat == GL_RGB && pixelType == GL_UNSIGNED_SHORT_5_6_5) + { + return MTLPixelFormatB5G6R5Unorm; + } + + assert(!"Unknown GL pixelFormat. Add me"); + return MTLPixelFormatInvalid; +} + +- (void)setupBlitShader +{ + NSError* error; + + MTLFunctionConstantValues* constants = [MTLFunctionConstantValues new]; + bool FlipY = self.emulatorCore.rendersToOpenGL; + [constants setConstantValue:&FlipY type:MTLDataTypeBool withName:@"FlipY"]; + + id lib = [_device newDefaultLibrary]; + + MTLRenderPipelineDescriptor* desc = [MTLRenderPipelineDescriptor new]; + desc.vertexFunction = [lib newFunctionWithName:@"fullscreen_vs" constantValues:constants error:&error]; + desc.fragmentFunction = [lib newFunctionWithName:@"blit_ps"]; + desc.colorAttachments[0].pixelFormat = self.mtlview.currentDrawable.layer.pixelFormat; + + _blitPipeline = [_device newRenderPipelineStateWithDescriptor:desc error:&error]; +} + +- (void)setupCRTShader +{ + NSError* error; + + MTLFunctionConstantValues* constants = [MTLFunctionConstantValues new]; + bool FlipY = self.emulatorCore.rendersToOpenGL; + [constants setConstantValue:&FlipY type:MTLDataTypeBool withName:@"FlipY"]; + + id lib = [_device newDefaultLibrary]; + + MTLRenderPipelineDescriptor* desc = [MTLRenderPipelineDescriptor new]; + desc.vertexFunction = [lib newFunctionWithName:@"fullscreen_vs" constantValues:constants error:&error]; + desc.fragmentFunction = [lib newFunctionWithName:@"crt_filter_ps"]; + desc.colorAttachments[0].pixelFormat = self.mtlview.currentDrawable.layer.pixelFormat; + + _crtFilterPipeline = [_device newRenderPipelineStateWithDescriptor:desc error:&error]; +} + +// Mac OS Stuff +// MARK: - MTKViewDelegate + +/*! + @method mtkView:drawableSizeWillChange: + @abstract Called whenever the drawableSize of the view will change + @discussion Delegate can recompute view and projection matricies or regenerate any buffers to be compatible with the new view size or resolution + @param view MTKView which called this method + @param size New drawable size in pixels + */ +- (void)mtkView:(nonnull MTKView *)view drawableSizeWillChange:(CGSize)size { + +} + +/*! + @method drawInMTKView: + @abstract Called on the delegate when it is asked to render into the view + @discussion Called on the delegate when it is asked to render into the view + */ +- (void)drawInMTKView:(nonnull MTKView *)view { + + MAKEWEAK(self); + + void (^renderBlock)(void) = ^() + { + MAKESTRONG_RETURN_IF_NIL(self); + + id outputTex = view.currentDrawable.texture; + + if (outputTex == nil) + { + // MTKView is set up wrong. Skip a frame and hope things fix themselves + return; + } + + if (strongself.emulatorCore.rendersToOpenGL) + { + [strongself.emulatorCore.frontBufferLock lock]; + } + + id commandBuffer = [strongself.commandQueue commandBuffer]; + self.previousCommandBuffer = commandBuffer; + + CGRect screenRect = strongself.emulatorCore.screenRect; + + [self updateInputTexture]; + + if (!strongself.emulatorCore.rendersToOpenGL) + { + const uint8_t* videoBuffer = strongself.emulatorCore.videoBuffer; + CGSize videoBufferSize = strongself.emulatorCore.bufferSize; + uint formatByteWidth = [strongself getByteWidthForPixelFormat:strongself.emulatorCore.pixelFormat type:strongself.emulatorCore.pixelType]; + uint inputBytesPerRow = videoBufferSize.width * formatByteWidth; + + id uploadBuffer = strongself->_uploadBuffer[++strongself->_frameCount % BUFFER_COUNT]; + uint8_t* uploadAddress = uploadBuffer.contents; + + + uint outputBytesPerRow; + if (screenRect.origin.x == 0 && (screenRect.size.width * 2 >= videoBufferSize.width)) // fast path if x is aligned to edge and excess width isn't too crazy + { + outputBytesPerRow = inputBytesPerRow; + const uint8_t* inputAddress = &videoBuffer[(uint)screenRect.origin.y * inputBytesPerRow]; + uint8_t* outputAddress = uploadAddress; + memcpy(outputAddress, inputAddress, screenRect.size.height * inputBytesPerRow); + } + else + { + outputBytesPerRow = screenRect.size.width * formatByteWidth; + for (uint i = 0; i < (uint)screenRect.size.height; ++i) + { + uint inputRow = screenRect.origin.y + i; + const uint8_t* inputAddress = &videoBuffer[(inputRow * inputBytesPerRow) + ((uint)screenRect.origin.x * formatByteWidth)]; + uint8_t* outputAddress = &uploadAddress[i * outputBytesPerRow]; + memcpy(outputAddress, inputAddress, outputBytesPerRow); + } + } + + id encoder = [commandBuffer blitCommandEncoder]; + + [encoder copyFromBuffer:uploadBuffer + sourceOffset:0 + sourceBytesPerRow:outputBytesPerRow + sourceBytesPerImage:0 + sourceSize:MTLSizeMake(screenRect.size.width, screenRect.size.height, 1) + toTexture:strongself.inputTexture + destinationSlice:0 + destinationLevel:0 + destinationOrigin:MTLOriginMake(0, 0, 0)]; + + [encoder endEncoding]; + } + + MTLRenderPassDescriptor* desc = [MTLRenderPassDescriptor new]; + desc.colorAttachments[0].texture = outputTex; + desc.colorAttachments[0].loadAction = MTLLoadActionClear; + desc.colorAttachments[0].storeAction = MTLStoreActionStore; + desc.colorAttachments[0].clearColor = MTLClearColorMake(0.0, 0.0, 0.0, 0.0); + desc.colorAttachments[0].level = 0; + desc.colorAttachments[0].slice = 0; + + id encoder = [commandBuffer renderCommandEncoderWithDescriptor:desc]; + + if (strongself->renderSettings.crtFilterEnabled) + { + struct CRT_Data cbData; + cbData.DisplayRect.x = 0; + cbData.DisplayRect.y = 0; + cbData.DisplayRect.z = screenRect.size.width; + cbData.DisplayRect.w = screenRect.size.height; + + cbData.EmulatedImageSize.x = strongself.inputTexture.width; + cbData.EmulatedImageSize.y = strongself.inputTexture.height; + + cbData.FinalRes.x = view.drawableSize.width; + cbData.FinalRes.y = view.drawableSize.height; + + [encoder setFragmentBytes:&cbData length:sizeof(cbData) atIndex:0]; + + [encoder setRenderPipelineState:strongself.crtFilterPipeline]; + } + else + { + [encoder setRenderPipelineState:strongself.blitPipeline]; + } + + [encoder setFragmentTexture:strongself.inputTexture atIndex:0]; + [encoder setFragmentSamplerState:strongself->renderSettings.smoothingEnabled ? strongself.linearSampler : strongself.pointSampler atIndex:0]; + [encoder drawPrimitives:MTLPrimitiveTypeTriangle vertexStart:0 vertexCount:3]; + [encoder endEncoding]; + + [commandBuffer presentDrawable:view.currentDrawable]; + // This should exist, but fails on some xcode's?! -jm +// [commandBuffer presentDrawable:view.currentDrawable afterMinimumDuration:1.0/view.preferredFramesPerSecond]; + [commandBuffer commit]; + + if ([strongself->_emulatorCore rendersToOpenGL]) + { + [strongself->_emulatorCore.frontBufferLock unlock]; + } + }; + + if ([self.emulatorCore rendersToOpenGL]) + { + if ((!self.emulatorCore.isSpeedModified && !self.emulatorCore.isEmulationPaused) || self.emulatorCore.isFrontBufferReady) + { + [self.emulatorCore.frontBufferCondition lock]; + while (UNLIKELY(!self.emulatorCore.isFrontBufferReady) && LIKELY(!self.emulatorCore.isEmulationPaused)) + { + [self.emulatorCore.frontBufferCondition wait]; + } + BOOL isFrontBufferReady = self.emulatorCore.isFrontBufferReady; + [self.emulatorCore.frontBufferCondition unlock]; + if (isFrontBufferReady) + { + renderBlock(); + [_emulatorCore.frontBufferCondition lock]; + _emulatorCore.isFrontBufferReady = NO; + [_emulatorCore.frontBufferCondition signal]; + [_emulatorCore.frontBufferCondition unlock]; + } + } + } + else + { + if (self.emulatorCore.isSpeedModified) + { + renderBlock(); + } + else + { + if (UNLIKELY(self.emulatorCore.isDoubleBuffered)) + { + [self.emulatorCore.frontBufferCondition lock]; + while (UNLIKELY(!self.emulatorCore.isFrontBufferReady) && LIKELY(!self.emulatorCore.isEmulationPaused)) + { + [self.emulatorCore.frontBufferCondition wait]; + } + _emulatorCore.isFrontBufferReady = NO; + [_emulatorCore.frontBufferLock lock]; + renderBlock(); + [_emulatorCore.frontBufferLock unlock]; + [_emulatorCore.frontBufferCondition unlock]; + } + else + { + @synchronized(self.emulatorCore) + { + renderBlock(); + } + } + } + } +} + +//@objc private func appResignedActive() { +//self.queue.suspend() +//self.hasSuspended = true +//} +// +//@objc private func appBecameActive() { +//if self.hasSuspended { +// self.queue.resume() +// self.hasSuspended = false +//} +//} + +#pragma mark - PVRenderDelegate protocol methods + +- (void)startRenderingOnAlternateThread +{ + self.emulatorCore.glesVersion = self.glesVersion; + self.alternateThreadBufferCopyGLContext = [[EAGLContext alloc] initWithAPI:[self.glContext API] sharegroup:[self.glContext sharegroup]]; + + self.alternateThreadGLContext = [[EAGLContext alloc] initWithAPI:[self.glContext API] sharegroup:[self.glContext sharegroup]]; + [EAGLContext setCurrentContext:self.alternateThreadGLContext]; + + // Setup framebuffer + if (alternateThreadFramebufferBack == 0) + { + glGenFramebuffers(1, &alternateThreadFramebufferBack); + } + glBindFramebuffer(GL_FRAMEBUFFER, alternateThreadFramebufferBack); + + // Setup color textures to render into + if (alternateThreadColorTextureBack == 0) + { + CGFloat width = self.emulatorCore.bufferSize.width; + CGFloat height = self.emulatorCore.bufferSize.height; + + { + NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt:width], kIOSurfaceWidth, + [NSNumber numberWithInt:height], kIOSurfaceHeight, + [NSNumber numberWithInt:4], kIOSurfaceBytesPerElement, + nil]; + + backingIOSurface = IOSurfaceCreate((CFDictionaryRef)dict); + } + IOSurfaceLock(backingIOSurface, 0, NULL); + + glGenTextures(1, &alternateThreadColorTextureBack); + glBindTexture(GL_TEXTURE_2D, alternateThreadColorTextureBack); + // use CGLTexImageIOSurface2D instead of texImageIOSurface for macOS + [[EAGLContext currentContext] texImageIOSurface:backingIOSurface + target:GL_TEXTURE_2D + internalFormat:GL_RGBA + width:width + height:height + format:GL_RGBA + type:GL_UNSIGNED_BYTE + plane:0]; + glBindTexture(GL_TEXTURE_2D, 0); + + + IOSurfaceUnlock(backingIOSurface, 0, NULL); + + MTLTextureDescriptor* mtlDesc = [MTLTextureDescriptor texture2DDescriptorWithPixelFormat:MTLPixelFormatRGBA8Unorm + width:width + height:height + mipmapped:NO]; + backingMTLTexture = [_device newTextureWithDescriptor:mtlDesc + iosurface:backingIOSurface + plane:0]; + } + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, alternateThreadColorTextureBack, 0); + + // Setup depth buffer + if (alternateThreadDepthRenderbuffer == 0) + { + glGenRenderbuffers(1, &alternateThreadDepthRenderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, alternateThreadDepthRenderbuffer); + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, self.emulatorCore.bufferSize.width, self.emulatorCore.bufferSize.height); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, alternateThreadDepthRenderbuffer); + } + + glViewport(self.emulatorCore.screenRect.origin.x, self.emulatorCore.screenRect.origin.y, self.emulatorCore.screenRect.size.width, self.emulatorCore.screenRect.size.height); +} + +- (void)didRenderFrameOnAlternateThread +{ + glFlush(); + + // Blit back buffer to front buffer + [self.emulatorCore.frontBufferLock lock]; + + // glFlush + waitUntilScheduled is how we coordinate texture access between OpenGL and Metal + // There might be a more performant solution using MTLFences or MTLEvents but this is an ok first impl + [self.previousCommandBuffer waitUntilScheduled]; + + id commandBuffer = [_commandQueue commandBuffer]; + id encoder = [commandBuffer blitCommandEncoder]; + + CGRect screenRect = self.emulatorCore.screenRect; + + [encoder copyFromTexture:backingMTLTexture + sourceSlice:0 + sourceLevel:0 + sourceOrigin:MTLOriginMake(screenRect.origin.x, screenRect.origin.y, 0) + sourceSize:MTLSizeMake(screenRect.size.width, screenRect.size.height, 1) + toTexture:_inputTexture + destinationSlice:0 + destinationLevel:0 + destinationOrigin:MTLOriginMake(0, 0, 0)]; + + [encoder endEncoding]; + [commandBuffer commit]; + + [self.emulatorCore.frontBufferLock unlock]; + + // Notify render thread that the front buffer is ready + [self.emulatorCore.frontBufferCondition lock]; + [self.emulatorCore setIsFrontBufferReady:YES]; + [self.emulatorCore.frontBufferCondition signal]; + [self.emulatorCore.frontBufferCondition unlock]; +} +@end diff --git a/Provenance/Emulator/Shaders/MameShaders.metal b/Provenance/Emulator/Shaders/MameShaders.metal new file mode 100644 index 0000000000..446a9a6c07 --- /dev/null +++ b/Provenance/Emulator/Shaders/MameShaders.metal @@ -0,0 +1,186 @@ +// +// MameShaders.metal +// Wombat +// +// Created by Todd Laney on 5/18/20. +// Copyright © 2020 Wombat. All rights reserved. +// +#include +#import "MetalViewShaders.h" + +using namespace metal; + +// Shader to draw the MAME game SCREEN.... +struct MameScreenTestUniforms { + float2 mame_screen_size; + float frame_num; + float rate; + float factor_u; + float factor_v; +}; +fragment float4 +mame_screen_test(VertexOutput v [[stage_in]], + texture2d texture [[texture(0)]], + sampler texture_sampler [[sampler(0)]], + constant MameScreenTestUniforms &uniforms [[buffer(0)]]) +{ + // ignore the passed in sampler, and use our own + //constexpr sampler linear_texture_sampler(mag_filter::linear, min_filter::linear); + + float t = (uniforms.frame_num / 60.0) * uniforms.rate * 2.0 * M_PI_F; + float2 uv = float2(v.tex.x + cos(t) * uniforms.factor_u * (1.0 / uniforms.mame_screen_size.x), + v.tex.y + sin(t) * uniforms.factor_v * (1.0 / uniforms.mame_screen_size.y)); + float4 color = texture.sample(texture_sampler, uv) * v.color; + return color; +} + + +// Shader to draw the MAME game SCREEN.... +struct MameScreenDotUniforms { + float2x2 mame_screen_matrix; // matrix to convert texture coordinates (u,v) to crt scanlines (x,y) +}; +fragment float4 +mame_screen_dot(VertexOutput v [[stage_in]], + texture2d texture [[texture(0)]], + sampler tsamp [[sampler(0)]], + constant MameScreenDotUniforms &uniforms [[buffer(0)]]) +{ + float2 uv = uniforms.mame_screen_matrix * v.tex; + float2 xy = fract(uv)*2 - float2(1,1); + float f = 1.0 - min(1.0, length(xy)); + float4 color = texture.sample(tsamp, v.tex) * f; + return color; +} + +// Shader to draw the MAME game SCREEN.... +struct MameScreenLineUniforms { + float2x2 mame_screen_matrix; // matrix to convert texture coordinates (u,v) to crt scanlines (x,y) +}; +fragment float4 +mame_screen_line(VertexOutput v [[stage_in]], + texture2d texture [[texture(0)]], + sampler tsamp [[sampler(0)]], + constant MameScreenLineUniforms &uniforms [[buffer(0)]]) +{ + float2 uv = uniforms.mame_screen_matrix * v.tex; + float y = fract(uv.y)*2 - 1; + float f = cos(y * M_PI_F * 0.5); + float4 color = texture.sample(tsamp, v.tex) * f; + return color; +} + +// [six colors](https://commons.wikimedia.org/wiki/File:Apple_Computer_Logo_rainbow.svg) +constant float4 six_colors[] = { + float4(94, 189, 62, 255), + float4(255, 185, 0, 255), + float4(247, 130, 0, 255), + float4(226, 56, 56, 255), + float4(151, 57, 153, 255), + float4(0, 156, 223, 255), +}; + +float4 rainbow(float f) { + float4 color0 = six_colors[(int)floor(f) % 6] * (1.0/255.0); + float4 color1 = six_colors[(int) ceil(f) % 6] * (1.0/255.0); + + return mix(color0, color1, fract(f)); +} + +// test Shader to draw the VECTOR lines +// +// width_scale must always be the first uniform, it is the amount the line width is expanded by. +// +// color.rgb is the line color +// color.a is itterated from 1.0 on center line to 0.25 on the line edge. +// +// texture x is itterated along the length of the line 0 ... length (the length is in model cordinates) +// texture y is itterated along the width of the line, -1 .. +1, with 0 being the center line +// +struct MameTestVectorDash { + float width_scale; + float frame_count; + float dash_length; + float speed; +}; +fragment float4 +mame_test_vector_dash(VertexOutput v [[stage_in]], + constant MameTestVectorDash &uniforms [[buffer(0)]]) +{ + float t = (uniforms.frame_count / 60.0) * uniforms.speed * 8.0; + float d = v.tex.x; // distance along the line +// float w = v.tex.y; // position across the line +// float a = 1.0 - abs(w); + int n = floor((d + t) / uniforms.dash_length); + + if (n & 1) + return float4(rainbow(n/2).rgb, 1 /*a*/); + else + return float4(0,0,0,0); +} + +struct MameTestVectorPulse { + float width_scale; + float frame_count; + float rate; +}; +fragment float4 +mame_test_vector_pulse(VertexOutput v [[stage_in]], + constant MameTestVectorPulse &uniforms [[buffer(0)]]) +{ + float t = (uniforms.frame_count / 60.0); + float f = sin(t * M_PI_F * 2.0 / uniforms.rate) * 0.33 + 0.67; + return v.color * f; +} + +struct MameTestVectorFade { + float width_scale; + float line_time; // time (in seconds) of the line: 0.0 = now, +1.0 = 1sec in the past + float falloff; + float strength; +}; +fragment float4 +mame_test_vector_fade(VertexOutput v [[stage_in]], + constant MameTestVectorFade &uniforms [[buffer(0)]]) +{ + float t = uniforms.line_time; + float4 color = v.color; + + if (t == 0.0) { + // current line, just use color as is, but scale alpha back to a 1.0 width line. + } + else { + color = color * exp(-pow(t * uniforms.falloff, 2)) * uniforms.strength; + } + return color; +} + +// Shader to draw the MAME game SCREEN.... +struct MameScreenRainbowUniforms { + float2x2 mame_screen_matrix; // matrix to convert texture coordinates (u,v) to crt scanlines (x,y) + float frame_count; + float rainbow_height; + float rainbow_speed; +}; +fragment float4 +mame_screen_rainbow(VertexOutput v [[stage_in]], + texture2d texture [[texture(0)]], + sampler tsamp [[sampler(0)]], + constant MameScreenRainbowUniforms &uniforms [[buffer(0)]]) +{ + float2 uv = uniforms.mame_screen_matrix * v.tex; + float4 shade = rainbow(uv.y/uniforms.rainbow_height + uniforms.frame_count/60 * uniforms.rainbow_speed); + float4 color = (texture.sample(tsamp, v.tex) + shade) * 0.5; + return color; +} + + + + + + + + + + + + diff --git a/Provenance/Emulator/Shaders/MetalViewShaders.h b/Provenance/Emulator/Shaders/MetalViewShaders.h new file mode 100644 index 0000000000..cf34416b01 --- /dev/null +++ b/Provenance/Emulator/Shaders/MetalViewShaders.h @@ -0,0 +1,30 @@ +// +// MetalViewShaders.h +// Wombat +// +// Created by Todd Laney on 4/6/20. +// Copyright © 2020 Todd Laney. All rights reserved. +// +#import + +// input 2D vertex +typedef struct { + vector_float2 position; + vector_float2 tex; + vector_float4 color; +} VertexInput; + +#ifdef __METAL_VERSION__ +struct VertexOutput { + vector_float4 position [[position]]; + vector_float2 tex; + vector_float4 color; +}; +#endif + +// default vertex uniforms, just the matrix +typedef struct { + matrix_float4x4 matrix; // matrix to map into NDC +} VertexUniforms; + + diff --git a/Provenance/Emulator/Shaders/MetalViewShaders.metal b/Provenance/Emulator/Shaders/MetalViewShaders.metal new file mode 100644 index 0000000000..5cf598c102 --- /dev/null +++ b/Provenance/Emulator/Shaders/MetalViewShaders.metal @@ -0,0 +1,67 @@ +// +// MetalViewShaders.metal +// Wombat +// +// Created by Todd Laney on 5/18/20. +// Copyright © 2020 Wombat. All rights reserved. +// +#include +#import "MetalViewShaders.h" + +using namespace metal; + +// default vertex shader(2D) +// map the input 2D point into NDC, copy texture u,v and color +vertex VertexOutput +vertex_default(unsigned int index [[ vertex_id ]], + constant VertexInput* vertex_array [[buffer(0)]], + constant VertexUniforms &uniforms [[buffer(1)]]) +{ + VertexInput vin = vertex_array[index]; + VertexOutput vout; + vout.position = uniforms.matrix * float4(vin.position,0,1); + vout.tex = vin.tex; + vout.color = vin.color; + + return vout; +} + +// default fragment shader +// just copy the color from the vertex, no texture, no lighting, no nuth'n +fragment float4 +fragment_default(VertexOutput v [[stage_in]]) +{ + return v.color; +} + +// default fragment shader for a texture +// sample the texture using the passed in sampler, and multiply by the vertex color +fragment float4 +fragment_texture(VertexOutput v [[stage_in]], texture2d texture [[texture(0)]], sampler texture_sampler [[sampler(0)]]) +{ + float4 color = texture.sample(texture_sampler, v.tex); + return color * v.color; +} + + +// test fragment shader +// convert the color to greyscale and multiply by passed in color. +// and mix with a cos() based on the current timecode (aka frame number) +struct TestUniforms { + float frame_num; + packed_float3 color; +}; +fragment float4 +fragment_test(VertexOutput v [[stage_in]], constant TestUniforms &uniforms [[buffer(0)]]) +{ + float Y = v.color.r * 0.2126 + v.color.g * 0.7152 + v.color.b * 0.0722; + float t = uniforms.frame_num / 60.0; + float f = abs(cos(t * 2*M_PI_F * 0.25)); + float4 color = float4(uniforms.color * Y * f, v.color.a); + + return color; +} + + + + diff --git a/Provenance/Emulator/Shaders/blit_ps.metal b/Provenance/Emulator/Shaders/blit_ps.metal new file mode 100644 index 0000000000..d825233773 --- /dev/null +++ b/Provenance/Emulator/Shaders/blit_ps.metal @@ -0,0 +1,15 @@ +#include +using namespace metal; + +struct Inputs +{ + float2 fTexCoord [[user(TEXCOORD0)]]; +}; + +fragment float4 blit_ps(Inputs I [[stage_in]], texture2d EmulatedImage [[texture(0)]], sampler Sampler [[sampler(0)]]) +{ + float4 output; + output.rgb = EmulatedImage.sample(Sampler, I.fTexCoord, level(0.0)).rgb; + output.a = 1.0; + return output; +} diff --git a/Provenance/Emulator/Shaders/crt_filter_ps.metal b/Provenance/Emulator/Shaders/crt_filter_ps.metal new file mode 100644 index 0000000000..1c8adacf81 --- /dev/null +++ b/Provenance/Emulator/Shaders/crt_filter_ps.metal @@ -0,0 +1,176 @@ +// PUBLIC DOMAIN CRT SHADER +// +// by Jay Mattis (Further tweaks by MrJs 02-2022) +// +// I'm a big fan of Timothy Lottes' shader, but it doesn't scale well and I was looking for something that +// was performant on my 4K TV and still looked decent on my phone. This takes a lot of inspiration from his +// shader but is 3 taps instead of 15, calculates the shadow/slot mask very differently, and bases a lot +// more on the input resolution rather than the output resolution (as long as the output resolution is +// high enough). +// +// Left it unoptimized to show the theory behind the algorithm. +// +// It is an example what I personally would want as a display option for pixel art games. +// Please take and use, change, or whatever. +// +// - Revert to original optimized shader from Jay Mattis by removing the machine optimizations previously used and re-exposing the original options. +// - Added in an option to disable CRT Warping. +// - Added in custom Display Gamma control and use that as opposed to the c2/sqrt2 optimization. Defaults to the accurate Gamma on TV's or the current Top iPhone Display tier using a Pow function. +// - Lowered min brightness level to visually match the minimum brightness level of a CRT. This may go away at one point and just be set to 0.0 . +// - Reduced warping effect by 1/3 + +#include +using namespace metal; + +struct Inputs +{ + float2 fTexCoord [[user(TEXCOORD0)]]; +}; + +struct CRT_Data +{ + float4 DisplayRect; + float2 EmulatedImageSize; + float2 FinalRes; +}; + +#define FINAL_RES cbData.FinalRes +// These are to convert input texture coordinates to UV (0-1) space and back. +#define INPUTCOORD_TO_UV( inputCoord, data ) ( inputCoord / data.DisplayRect.zw * data.EmulatedImageSize - data.DisplayRect.xy / data.DisplayRect.zw ) +#define UV_TO_INPUTCOORD( uv, data ) ( data.DisplayRect.xy / data.EmulatedImageSize + uv / data.EmulatedImageSize * data.DisplayRect.zw ) + +#define USE_SCANLINES 1 +#define USE_SHADOWMASK 1 +#define USE_WARP 1 + +#define USE_POW_GAMMA 1 +#ifdef TARGET_OS_TV + #define DISPLAY_GAMMA 2.4 // Standard Display Gamma per ITU-R BT.1886 +#else + #define DISPLAY_GAMMA 2.2 // Measured Gamma response on a iPhone 12 Pro Max OLED Display +#endif + +#define BLOOM_AMOUNT 2.0 +#define MIN_BRIGHTNESS 0.0005 +#define ROWS_OF_RESOLUTION 480.0 +#define SCANLINES_ALLOWED ( FINAL_RES.y >= ROWS_OF_RESOLUTION / 2.0 * 4.0 ) +#define SCANLINE_HARDNESS 4.0 +#define SCANLINE_MIN_BRIGHTNESS float3( 0.25, 0.25, 0.25 ) +#define SHADOW_MASK_HARDNESS 16.0 + +#define TVL 800.0 + +#define WARP_EDGE_HARDNESS 256.0 +#define WARP_X ( 1.0 / 96.0 ) +#define WARP_Y ( 1.0 / 36.0 ) + +#if USE_POW_GAMMA + float ToLinear1(float c){return(pow(c, DISPLAY_GAMMA));} + float3 ToLinear(float3 c){return float3(ToLinear1(c.r),ToLinear1(c.g),ToLinear1(c.b));} + + float ToDispGamma1(float c){return(pow(c, (1.0/DISPLAY_GAMMA)));} + float3 ToDispGamma(float3 c){return float3(ToDispGamma1(c.r),ToDispGamma1(c.g),ToDispGamma1(c.b));} +#else + float3 ToLinear(float3 c){return c*c;} + float3 ToDispGamma(float3 c){return sqrt(c);} +#endif + +float2 Warp( float2 uv ) +{ +#if USE_WARP + uv = uv * 2.0 - 1.0; + uv *= float2( 1.0 + ( uv.y * uv.y ) * WARP_X, 1.0 + ( uv.x * uv.x ) * WARP_Y ); + return uv * 0.5 + 0.5; +#else + return uv; +#endif +} + +float2 getShadowMaskRes(constant CRT_Data& cbData) +{ + float2 shadowMaskRes; + if ( FINAL_RES.y / 3.0 < TVL * 2.0 ) + { + shadowMaskRes = FINAL_RES / 3.0; + } + else + { + shadowMaskRes = float2( FINAL_RES.x / FINAL_RES.y * TVL, TVL ); + } + return shadowMaskRes; +} + +template +inline Tx mod(Tx x, Ty y) +{ + return x - y * floor(x / y); +} + +float3 getShadowMaskRGB( constant CRT_Data& cbData, float2 uv ) +{ +#if USE_SHADOWMASK + float2 shadowMaskRes = getShadowMaskRes(cbData); + float2 pixelCoord = uv * shadowMaskRes * float2( 3.0, 3.0 ); + float3 shadowMaskCoord = float3( pixelCoord.x + 1.0, pixelCoord.x + 0.0, pixelCoord.x + 2.0 ); + float3 shadowMaskRGB = abs( mod( shadowMaskCoord, 3.0 ) - 1.5 ) / 1.5; + shadowMaskRGB = exp2( shadowMaskRGB * shadowMaskRGB * -SHADOW_MASK_HARDNESS ); + return shadowMaskRGB; +#else + return float3(1.0); +#endif +} + +float3 sampleRGB( texture2d EmulatedImage, sampler Sampler, constant CRT_Data& cbData, float2 uv, float2 warpedUV ) +{ + float3 inputSample = ToLinear( EmulatedImage.sample(Sampler, UV_TO_INPUTCOORD( warpedUV, cbData )).rgb ); + + float3 scanlineMultiplier = float3( 1.0 ); +#if USE_SCANLINES + if ( SCANLINES_ALLOWED ) + { + float scanlineY = mod( warpedUV.y, 2.0 / ROWS_OF_RESOLUTION ) / ( 2.0 / ROWS_OF_RESOLUTION ); + float scanlineDistance = abs( scanlineY - 0.5 ) / 0.5; + float scanlineCoverage = exp2( scanlineDistance * scanlineDistance * -SCANLINE_HARDNESS ); + scanlineMultiplier = mix( SCANLINE_MIN_BRIGHTNESS, float3( 1.0 ), scanlineCoverage ); + } +#endif + + return max( inputSample * scanlineMultiplier, float3( MIN_BRIGHTNESS ) ) * getShadowMaskRGB( cbData, uv ); +} + +float3 sampleRow( texture2d EmulatedImage, sampler Sampler, constant CRT_Data& cbData, float2 uv, float3 centerTap ) +{ + float2 leftUV = uv + float2( -1.0 / FINAL_RES.x, 0.0 ); + float2 rightUV = uv + float2( 1.0 / FINAL_RES.x, 0.0 ); + return centerTap * 0.5 + + sampleRGB( EmulatedImage, Sampler, cbData, leftUV, Warp( leftUV ) ) * 0.25 + + sampleRGB( EmulatedImage, Sampler, cbData, rightUV, Warp( rightUV ) ) * 0.25; +} + +float3 sampleCol( texture2d EmulatedImage, sampler Sampler, constant CRT_Data& cbData, float2 uv, float3 centerTap ) +{ + return sampleRow( EmulatedImage, Sampler, cbData, uv, centerTap ); +} + +float3 crtFilter( texture2d EmulatedImage, sampler Sampler, constant CRT_Data& cbData, float2 uv ) +{ + float2 warpedUV = Warp( uv ); + float edgeMask = clamp( 1.0 - exp2( ( 1.0 - max( abs( warpedUV.x - 0.5 ), abs( warpedUV.y - 0.5 ) ) / 0.5 ) * -WARP_EDGE_HARDNESS ), 0.0, 1.0); + float bloomAmount = BLOOM_AMOUNT; +#if USE_SCANLINES + if ( SCANLINES_ALLOWED ) + { + bloomAmount *= 2.0; + } +#endif + float3 centerTap = sampleRGB( EmulatedImage, Sampler, cbData, uv, warpedUV ); + return ToDispGamma( ( centerTap + sampleCol( EmulatedImage, Sampler, cbData, uv, centerTap ) * bloomAmount ) * edgeMask ); +} + +fragment float4 crt_filter_ps(Inputs I [[stage_in]], texture2d EmulatedImage [[texture(0)]], sampler Sampler [[sampler(0)]], constant CRT_Data& cbData [[buffer(0)]]) +{ + float4 output; + output.rgb = crtFilter( EmulatedImage, Sampler, cbData, INPUTCOORD_TO_UV( I.fTexCoord, cbData ) ); + output.a = 1.0; + return output; +} diff --git a/Provenance/Emulator/Shaders/fullscreen_vs.metal b/Provenance/Emulator/Shaders/fullscreen_vs.metal new file mode 100644 index 0000000000..2c64149890 --- /dev/null +++ b/Provenance/Emulator/Shaders/fullscreen_vs.metal @@ -0,0 +1,27 @@ +#include +using namespace metal; + +constant bool FlipY [[function_constant(0)]]; + +struct Outputs +{ + float4 outPos [[position]]; + float2 fTexCoord [[user(TEXCOORD0)]]; +}; + +vertex Outputs fullscreen_vs(uint base [[base_vertex]], uint vid [[vertex_id]]) +{ + uint in_vid = (vid - base); + float2 uv = float2(float(((in_vid << 1u) & 2u)), float((in_vid & 2u))); + float2 pos; + if (FlipY) // For dealing with textures generated from OpenGL + pos = ((uv * float2(2.0f, 2.0f)) + float2(-1.0f, -1.0f)); + else + pos = ((uv * float2(2.0f, -2.0f)) + float2(-1.0f, 1.0f)); + + Outputs O; + O.outPos = float4(pos.x, pos.y, 0.0f, 1.0f); + O.fTexCoord = uv; + return O; +} + diff --git a/Provenance/Emulator/Shaders/lineTron.metal b/Provenance/Emulator/Shaders/lineTron.metal new file mode 100644 index 0000000000..5e5eba4bda --- /dev/null +++ b/Provenance/Emulator/Shaders/lineTron.metal @@ -0,0 +1,50 @@ +// +// lineTron.metal +// +// This shader does Vector emulation using +// Metal that should run on all of the supported +// devices that MAME4iOS supports. +// +// Feel free to tweak, mod, or whatever +// +#include +#import "MetalViewShaders.h" + +using namespace metal; + +// test Shader to draw the VECTOR lines +// +// width_scale must always be the first uniform, it is the amount the line width is expanded by. +// +// color.a is itterated from 1.0 on center line to 0.25 on the line edge. +// +// texture x is itterated along the length of the line 0 ... length (the length is in model cordinates) +// texture y is itterated along the width of the line, -1 .. +1, with 0 being the center line +// +struct Push +{ + float width_scale; + float line_time; // time (in seconds) of the line: 0.0 = now, +1.0 = 1sec in the past + float falloff; + float strength; +}; + +fragment float4 +__lineTron(VertexOutput v[[stage_in]], constant Push& params [[buffer(0)]]) +{ + float a = exp(-pow(v.tex.y * params.falloff, 2)); + return float4((v.color.rgb*params.strength), a); +} + +fragment float4 +lineTron(VertexOutput v [[stage_in]], constant Push& params [[buffer(0)]]) +{ + float t = params.line_time; + float4 color = v.color; + + // if t==0.0, just use color as is. else fade out color in time, and alpha edge + if (t != 0.0) + color = float4(color.rgb * exp(-pow(t * params.falloff, 2)) * params.strength, mix(1.0, 0.0, abs(v.tex.y))); + + return color; +} diff --git a/Provenance/Emulator/Shaders/megaTron.metal b/Provenance/Emulator/Shaders/megaTron.metal new file mode 100644 index 0000000000..e9675b4632 --- /dev/null +++ b/Provenance/Emulator/Shaders/megaTron.metal @@ -0,0 +1,329 @@ +// +// megaTron.metal +// +// Created by MrJs 06/2020 +// v09062020a +// +// This shader does a more complex CRT emulation using +// Metal that should run on all of the supported +// devices that MAME4iOS supports. +// +// Feel free to tweak, mod, or whatever +// +#include +#import "MetalViewShaders.h" + +using namespace metal; + +struct Push +{ + float4 SourceSize; + float4 OutputSize; + float MASK; + float MASK_INTENSITY; + float SCANLINE_THINNESS; + float SCAN_BLUR; + float CURVATURE; + float TRINITRON_CURVE; + float CORNER; + float CRT_GAMMA; +}; + +static inline __attribute__((always_inline)) +float4 megaTronTone(thread const float& contrast, thread const float& saturation, thread const float& thin, thread float& mask, constant Push& params) +{ + if (params.MASK == 0.0) + { + mask = 1.0; + } + if (params.MASK == 1.0) + { + mask = 0.5 + (mask * 0.5); + } + float midOut = 0.18 / ((1.5 - thin) * ((0.5 * mask) + 0.5)); + float pMidIn = pow(0.18, contrast); + float4 ret; + ret.x = contrast; + ret.y = ((-pMidIn) + midOut) / ((1.0 - pMidIn) * midOut); + ret.z = (((-pMidIn) * midOut) + pMidIn) / ((midOut * (-pMidIn)) + midOut); + ret.w = contrast + saturation; + return ret; +} + +static inline __attribute__((always_inline)) +float FromSrgbFunc(thread const float& c, constant Push& params) +{ + float _69; + if (c <= 0.04045) + { + _69 = c * (1.0/12.92); + } + else + { + _69 = pow((abs(c) * (1.0/1.055)) + (0.055/1.055), params.CRT_GAMMA); + } + return _69; +} + +static inline __attribute__((always_inline)) +float3 FromSrgb(thread const float3& c, constant Push& params) +{ + float param = c.x; + float param_1 = c.y; + float param_2 = c.z; + return float3(FromSrgbFunc(param, params), FromSrgbFunc(param_1, params), FromSrgbFunc(param_2, params)); +} + +static inline __attribute__((always_inline)) +float3 megaTronFetch(thread float2& uv, constant Push& params, thread texture2d texture, thread const sampler SourceSmplr) +{ + uv *= (float2(params.SourceSize.z, params.SourceSize.w) / params.SourceSize.zw); + float3 param = texture.sample(SourceSmplr, uv, bias(-16.0)).xyz; + return FromSrgb(param, params); +} + +static inline __attribute__((always_inline)) +float3 megaTronMask(thread float2& pos, thread const float& dark, constant Push& params) +{ + if (params.MASK == 2.0) + { + float3 m = float3(dark, dark, dark); + float x = fract(pos.x * (1.0/3.0)); + if (x < (1.0/3.0)) + { + m.x = 1.0; + } + else + { + if (x <(2.0/3.0)) + { + m.y = 1.0; + } + else + { + m.z = 1.0; + } + } + return m; + } + else + { + if (params.MASK == 1.0) + { + float3 m_1 = float3(1.0); + float x_1 = fract(pos.x * (1.0/3.0)); + if (x_1 < (1.0/3.0)) + { + m_1.x = dark; + } + else + { + if (x_1 <(2.0/3.0)) + { + m_1.y = dark; + } + else + { + m_1.z = dark; + } + } + return m_1; + } + else + { + if (params.MASK == 3.0) + { + pos.x += (pos.y * 2.9999); + float3 m_2 = float3(dark, dark, dark); + float x_2 = fract(pos.x * (1.0/6.0)); + if (x_2 < (1.0/3.0)) + { + m_2.x = 1.0; + } + else + { + if (x_2 <(2.0/3.0)) + { + m_2.y = 1.0; + } + else + { + m_2.z = 1.0; + } + } + return m_2; + } + else + { + return float3(1.0); + } + } + } +} + +static inline __attribute__((always_inline)) +float megaTronMax3F1(thread const float& a, thread const float& b, thread const float& c) +{ + return fast::max(a, fast::max(b, c)); +} + +static inline __attribute__((always_inline)) +float3 megaTronFilter(thread const float2& ipos, + thread const float2& inputSizeDivOutputSize, + thread const float2& halfInputSize, + thread const float2& rcpInputSize, + thread const float2& rcpOutputSize, + thread const float2& twoDivOutputSize, + thread const float& inputHeight, + thread const float2& warp, + thread const float& thin, + thread const float& blur, + thread const float& mask, + thread const float4& tone, + constant Push& params, + thread texture2d texture, + thread const sampler SourceSmplr + ) +{ + float2 pos = (ipos * twoDivOutputSize) - float2(1.0); + pos *= float2(1.0 + ((pos.y * pos.y) * warp.x), 1.0 + ((pos.x * pos.x) * warp.y)); + float vin = (1.0 - ((1.0 - fast::clamp(pos.x * pos.x, 0.0, 1.0)) * (1.0 - fast::clamp(pos.y * pos.y, 0.0, 1.0)))) * (0.998 + (0.001 * params.CORNER)); + vin = fast::clamp(((-vin) * inputHeight) + inputHeight, 0.0, 1.0); + pos = (pos * halfInputSize) + halfInputSize; + float y0 = floor(pos.y - 0.5) + 0.5; + float x0 = floor(pos.x - 1.5) + 0.5; + float2 p = float2(x0 * rcpInputSize.x, y0 * rcpInputSize.y); + float2 param = p; + float3 _443 = megaTronFetch(param, params, texture, SourceSmplr); + float3 colA0 = _443; + p.x += rcpInputSize.x; + float2 param_1 = p; + float3 _453 = megaTronFetch(param_1, params, texture, SourceSmplr); + float3 colA1 = _453; + p.x += rcpInputSize.x; + float2 param_2 = p; + float3 _463 = megaTronFetch(param_2, params, texture, SourceSmplr); + float3 colA2 = _463; + p.x += rcpInputSize.x; + float2 param_3 = p; + float3 _473 = megaTronFetch(param_3, params, texture, SourceSmplr); + float3 colA3 = _473; + p.y += rcpInputSize.y; + float2 param_4 = p; + float3 _483 = megaTronFetch(param_4, params, texture, SourceSmplr); + float3 colB3 = _483; + p.x -= rcpInputSize.x; + float2 param_5 = p; + float3 _493 = megaTronFetch(param_5, params, texture, SourceSmplr); + float3 colB2 = _493; + p.x -= rcpInputSize.x; + float2 param_6 = p; + float3 _503 = megaTronFetch(param_6, params, texture, SourceSmplr); + float3 colB1 = _503; + p.x -= rcpInputSize.x; + float2 param_7 = p; + float3 _513 = megaTronFetch(param_7, params, texture, SourceSmplr); + float3 colB0 = _513; + float off = pos.y - y0; + float pi2 = 6.283185482025146484375; + float hlf = 0.5; + float scanA = (cos(fast::min(0.5, off * thin) * pi2) * hlf) + hlf; + float scanB = (cos(fast::min(0.5, ((-off) * thin) + thin) * pi2) * hlf) + hlf; + float off0 = pos.x - x0; + float off1 = off0 - 1.0; + float off2 = off0 - 2.0; + float off3 = off0 - 3.0; + float pix0 = exp2((blur * off0) * off0); + float pix1 = exp2((blur * off1) * off1); + float pix2 = exp2((blur * off2) * off2); + float pix3 = exp2((blur * off3) * off3); + float pixT = 1.0 / (((pix0 + pix1) + pix2) + pix3); + pixT *= vin; + scanA *= pixT; + scanB *= pixT; + float3 color = (((((colA0 * pix0) + (colA1 * pix1)) + (colA2 * pix2)) + (colA3 * pix3)) * scanA) + (((((colB0 * pix0) + (colB1 * pix1)) + (colB2 * pix2)) + (colB3 * pix3)) * scanB); + float2 param_8 = ipos; + float param_9 = mask; + float3 _649 = megaTronMask(param_8, param_9, params); + color *= _649; + float param_10 = color.x; + float param_11 = color.y; + float param_12 = color.z; + float peak = fast::max((1.0/(256.0*65536.0)), megaTronMax3F1(param_10, param_11, param_12)); + float3 ratio = color * (1.0 / peak); + peak = pow(peak, tone.x); + peak *= (1.0 / ((peak * tone.y) + tone.z)); + ratio = pow(ratio, float3(tone.w, tone.w, tone.w)); + return ratio * peak; +} + +static inline __attribute__((always_inline)) +float ToSrgbFunc(thread const float& c) +{ + float _116; + if (c < 0.0031308) + { + _116 = c * 12.92; + } + else + { + _116 = (1.055 * pow(c, 0.41666)) - 0.055; + } + return _116; +} + +static inline __attribute__((always_inline)) +float3 ToSrgb(thread const float3& c) +{ + float param = c.x; + float param_1 = c.y; + float param_2 = c.z; + return float3(ToSrgbFunc(param), ToSrgbFunc(param_1), ToSrgbFunc(param_2)); +} + +fragment float4 +megaTron(VertexOutput v[[stage_in]], + constant Push& params [[buffer(0)]], + texture2d texture [[texture(0)]], + sampler SourceSmplr [[sampler(0)]]) +{ + float2 warp_factor; + warp_factor.x = params.CURVATURE; + warp_factor.y = (3.0 / 4.0) * warp_factor.x; + warp_factor.x *= (1.0 - params.TRINITRON_CURVE); + float param = 1.0; + float param_1 = 0.0; + float param_2 = 0.5 + (0.5 * params.SCANLINE_THINNESS); + float param_3 = 1.0 - params.MASK_INTENSITY; + float4 _767 = megaTronTone(param, param_1, param_2, param_3, params); + float2 ipos = v.tex * params.OutputSize.zw; + float2 inputSizeDivOutputSize = params.SourceSize.zw / params.OutputSize.zw; + float2 halfInputSize = params.SourceSize.zw * float2(0.5); + float2 rcpInputSize = (1.0/params.SourceSize.zw); + float2 rcpOutputSize = (1.0/params.OutputSize.zw); + float2 twoDivOutputSize = 2.0 / params.OutputSize.zw; + float inputHeight = params.SourceSize.w; + float2 warp = warp_factor; + float thin = 0.5 + (0.5 * params.SCANLINE_THINNESS); + float blur = (-1.0) * params.SCAN_BLUR; + float mask = 1.0 - params.MASK_INTENSITY; + float4 tone = _767; + float3 megaTronRGB = megaTronFilter(ipos, + inputSizeDivOutputSize, + halfInputSize, + rcpInputSize, + rcpOutputSize, + twoDivOutputSize, + inputHeight, + warp, + thin, + blur, + mask, + tone, + params, + texture, + SourceSmplr); + float3 _795 = ToSrgb(megaTronRGB); + float4 megaTron_out = float4(_795.x, _795.y, _795.z, 1.0); + return megaTron_out; +} diff --git a/Provenance/Emulator/Shaders/simpleCRT.metal b/Provenance/Emulator/Shaders/simpleCRT.metal new file mode 100644 index 0000000000..ce28957c1e --- /dev/null +++ b/Provenance/Emulator/Shaders/simpleCRT.metal @@ -0,0 +1,60 @@ +// +// simpleCRT.metal +// +// Created by MrJs 06/2020 +// v06062020a +// +// This shader does a very simple CRT emulation using +// Metal that should run on all of the supported +// devices that MAME4iOS supports. +// +// Feel free to tweak, mod, or whatever +// +#include +#import "MetalViewShaders.h" + +using namespace metal; + +#pragma pack(push,4) +struct simpleCrtUniforms { + float4 mame_screen_dst_rect; + float4 mame_screen_src_rect; + float curv_vert; // 5.0 default 1.0, 10.0 + float curv_horiz; // 4.0 default 1.0, 10.0 + float curv_strength;// 0.25 default 0.0, 1.0 + float light_boost; // 1.3 default 0.1, 3.0 + float vign_strength;// 0.05 default 0.0, 1.0 + float zoom_out; // 1.1 default 0.01, 5.0 + float brightness; // 1.0 default 0.666, 1.333 +}; +#pragma pack(pop) + +fragment float4 +simpleCRT(VertexOutput v [[stage_in]], + texture2d texture [[texture(0)]], + constant simpleCrtUniforms &uniforms [[buffer(0)]]) +{ + float4 dst_rect = uniforms.mame_screen_dst_rect; + float4 src_rect = uniforms.mame_screen_src_rect; + // HUD parameters for simpleCRT + float curv_vert = uniforms.curv_vert; + float curv_horiz = uniforms.curv_horiz; + float curv_strength = uniforms.curv_strength; + float light_boost = uniforms.light_boost; + float vign_strength = uniforms.vign_strength; + float zoom_out = uniforms.zoom_out; + float brightness = uniforms.brightness; + + float2 uv = ((v.tex - float2(0.5))*2.0)*zoom_out; // add in simple curvature to uv's + uv.x *= (1.0 + pow(abs(uv.y) / curv_vert, 2.0)); // tweak vertical curvature + uv.y *= (1.0 + pow(abs(uv.x) / curv_horiz, 2.0)); // tweak horizontal curvature + uv = (uv/float2(2.0))+float2(0.5); // correct curvature + uv = mix(v.tex, uv, curv_strength); // mix back curvature process to 25% of original strength + float evenLines = (1.0 - abs(fract(v.tex.y*(src_rect.w * ( (dst_rect.w / src_rect.w) / floor((dst_rect.w / src_rect.w)+0.5))))*2 - 1)); // generate very, very simple scanlines that respect both integer and default scaling + constexpr sampler crtTexSampler(address::clamp_to_zero, filter::linear); // set up custom Metal texture sampler using cheap linear filtering + float4 col = texture.sample(crtTexSampler, uv); // sample texture with our modified curvature uv's + float4 colmod = ((col*col)*evenLines)*light_boost; // simple gamma boost in linear to compensate for darkening due to scanlines + float vign = pow((0.0 + 1.0*16.0*uv.x*uv.y*(1.0-uv.x)*(1.0-uv.y)), vign_strength); // create simple soft vignette and apply it across screen + float4 simple_crt = (sqrt(colmod*vign)); // reapply gamma and vignette treatment + return simple_crt * brightness; +} diff --git a/Provenance/Emulator/Shaders/ulTron.metal b/Provenance/Emulator/Shaders/ulTron.metal new file mode 100644 index 0000000000..628cc1ba6d --- /dev/null +++ b/Provenance/Emulator/Shaders/ulTron.metal @@ -0,0 +1,473 @@ +// +// ulTron.metal +// +// Created by MrJs 06/2020 +// v09062020a +// +// Ultron (/ˈʌltrɒn/) is a fictional supervillain appearing in American comic books published by Marvel Comics. +// He is most recognized as a nemesis of the Avengers superhero group and his quasi-familial relationship with his creator Hank Pym. +// He was the first Marvel Comics character to wield the fictional metal alloy adamantium. +// +// Feel free to tweak, mod, or whatever +// +// +// ulTron.metal +// +// Created by MrJs 06/2020 +// v21062020a +// +// Ultron (/ˈʌltrɒn/) is a fictional supervillain appearing in American comic books published by Marvel Comics. +// He is most recognized as a nemesis of the Avengers superhero group and his quasi-familial relationship with his creator Hank Pym. +// He was the first Marvel Comics character to wield the fictional metal alloy adamantium. +// +// Feel free to tweak, mod, or whatever +// +#include +#import "MetalViewShaders.h" + +using namespace metal; + +struct Push +{ + float4 SourceSize; + float4 OutputSize; + float hardScan; + float hardPix; + float warpX; + float warpY; + float maskDark; + float maskLight; + float shadowMask; + float brightBoost; + float hardBloomScan; + float hardBloomPix; + float bloomAmount; + float shape; +}; + +static inline __attribute__((always_inline)) +float2 Warp(thread float2& pos, constant Push& params) +{ + pos = (pos * 2.0) - float2(1.0); + pos *= float2(1.0 + ((pos.y * pos.y) * params.warpX), 1.0 + ((pos.x * pos.x) * params.warpY)); + return (pos * 0.5) + float2(0.5); +} + +static inline __attribute__((always_inline)) +float ToLinear1(thread const float& c, constant Push& params) +{ + + float _93; + if (c <= 0.04045) + { + _93 = c / 12.92; + } + else + { + _93 = pow((c + 0.055) / 1.055, 2.4); + } + return _93; +} + +static inline __attribute__((always_inline)) +float3 ToLinear(thread const float3& c, constant Push& params) +{ + + float param = c.x; + float param_1 = c.y; + float param_2 = c.z; + return float3(ToLinear1(param, params), ToLinear1(param_1, params), ToLinear1(param_2, params)); +} + + +static inline __attribute__((always_inline)) +float3 Fetch(thread float2& pos, thread const float2& off, constant Push& params, thread texture2d Source, thread const sampler SourceSmplr) +{ + pos = (floor((pos * params.SourceSize.zw) + off) + float2(0.5)) / params.SourceSize.zw; + float3 param = Source.sample(SourceSmplr, pos).xyz * params.brightBoost; + return ToLinear(param, params); +} + +static inline __attribute__((always_inline)) +float2 Dist(thread float2& pos, constant Push& params) +{ + pos *= params.SourceSize.zw; + return -((pos - floor(pos)) - float2(0.5)); +} + +static inline __attribute__((always_inline)) +float Gaus(thread const float& pos, thread const float& scale, constant Push& params) +{ + return exp2(scale * pow(abs(pos), params.shape)); +} + +static inline __attribute__((always_inline)) +float3 Horz3(thread const float2& pos, thread const float& off, constant Push& params, thread texture2d Source, thread const sampler SourceSmplr) +{ + float2 param = pos; + float2 param_1 = float2(-1.0, off); + float3 _250 = Fetch(param, param_1, params, Source, SourceSmplr); + float3 b = _250; + float2 param_2 = pos; + float2 param_3 = float2(0.0, off); + float3 _257 = Fetch(param_2, param_3, params, Source, SourceSmplr); + float3 c = _257; + float2 param_4 = pos; + float2 param_5 = float2(1.0, off); + float3 _265 = Fetch(param_4, param_5, params, Source, SourceSmplr); + float3 d = _265; + float2 param_6 = pos; + float2 _269 = Dist(param_6, params); + float dst = _269.x; + float scale = params.hardPix; + float param_7 = dst - 1.0; + float param_8 = scale; + float wb = Gaus(param_7, param_8, params); + float param_9 = dst + 0.0; + float param_10 = scale; + float wc = Gaus(param_9, param_10, params); + float param_11 = dst + 1.0; + float param_12 = scale; + float wd = Gaus(param_11, param_12, params); + return (((b * wb) + (c * wc)) + (d * wd)) / float3((wb + wc) + wd); +} + +static inline __attribute__((always_inline)) +float3 Horz5(thread const float2& pos, thread const float& off, constant Push& params, thread texture2d Source, thread const sampler SourceSmplr) +{ + float2 param = pos; + float2 param_1 = float2(-2.0, off); + float3 _322 = Fetch(param, param_1, params, Source, SourceSmplr); + float3 a = _322; + float2 param_2 = pos; + float2 param_3 = float2(-1.0, off); + float3 _329 = Fetch(param_2, param_3, params, Source, SourceSmplr); + float3 b = _329; + float2 param_4 = pos; + float2 param_5 = float2(0.0, off); + float3 _336 = Fetch(param_4, param_5, params, Source, SourceSmplr); + float3 c = _336; + float2 param_6 = pos; + float2 param_7 = float2(1.0, off); + float3 _343 = Fetch(param_6, param_7, params, Source, SourceSmplr); + float3 d = _343; + float2 param_8 = pos; + float2 param_9 = float2(2.0, off); + float3 _351 = Fetch(param_8, param_9, params, Source, SourceSmplr); + float3 e = _351; + float2 param_10 = pos; + float2 _355 = Dist(param_10, params); + float dst = _355.x; + float scale = params.hardPix; + float param_11 = dst - 2.0; + float param_12 = scale; + float wa = Gaus(param_11, param_12, params); + float param_13 = dst - 1.0; + float param_14 = scale; + float wb = Gaus(param_13, param_14, params); + float param_15 = dst + 0.0; + float param_16 = scale; + float wc = Gaus(param_15, param_16, params); + float param_17 = dst + 1.0; + float param_18 = scale; + float wd = Gaus(param_17, param_18, params); + float param_19 = dst + 2.0; + float param_20 = scale; + float we = Gaus(param_19, param_20, params); + return (((((a * wa) + (b * wb)) + (c * wc)) + (d * wd)) + (e * we)) / float3((((wa + wb) + wc) + wd) + we); +} + +static inline __attribute__((always_inline)) +float Scan(thread const float2& pos, thread const float& off, constant Push& params) +{ + float2 param = pos; + float2 _583 = Dist(param, params); + float dst = _583.y; + float param_1 = dst + off; + float param_2 = params.hardScan; + return Gaus(param_1, param_2, params); +} + +static inline __attribute__((always_inline)) +float3 Tri(thread const float2& pos, constant Push& params, thread texture2d Source, thread const sampler SourceSmplr) +{ + float2 param = pos; + float param_1 = -1.0; + float3 a = Horz3(param, param_1, params, Source, SourceSmplr); + float2 param_2 = pos; + float param_3 = 0.0; + float3 b = Horz5(param_2, param_3, params, Source, SourceSmplr); + float2 param_4 = pos; + float param_5 = 1.0; + float3 c = Horz3(param_4, param_5, params, Source, SourceSmplr); + float2 param_6 = pos; + float param_7 = -1.0; + float wa = Scan(param_6, param_7, params); + float2 param_8 = pos; + float param_9 = 0.0; + float wb = Scan(param_8, param_9, params); + float2 param_10 = pos; + float param_11 = 1.0; + float wc = Scan(param_10, param_11, params); + return ((a * wa) + (b * wb)) + (c * wc); +} + +static inline __attribute__((always_inline)) +float3 Horz7(thread const float2& pos, thread const float& off, constant Push& params, thread texture2d Source, thread const sampler SourceSmplr) +{ + float2 param = pos; + float2 param_1 = float2(-3.0, off); + float3 _434 = Fetch(param, param_1, params, Source, SourceSmplr); + float3 a = _434; + float2 param_2 = pos; + float2 param_3 = float2(-2.0, off); + float3 _441 = Fetch(param_2, param_3, params, Source, SourceSmplr); + float3 b = _441; + float2 param_4 = pos; + float2 param_5 = float2(-1.0, off); + float3 _448 = Fetch(param_4, param_5, params, Source, SourceSmplr); + float3 c = _448; + float2 param_6 = pos; + float2 param_7 = float2(0.0, off); + float3 _455 = Fetch(param_6, param_7, params, Source, SourceSmplr); + float3 d = _455; + float2 param_8 = pos; + float2 param_9 = float2(1.0, off); + float3 _462 = Fetch(param_8, param_9, params, Source, SourceSmplr); + float3 e = _462; + float2 param_10 = pos; + float2 param_11 = float2(2.0, off); + float3 _469 = Fetch(param_10, param_11, params, Source, SourceSmplr); + float3 f = _469; + float2 param_12 = pos; + float2 param_13 = float2(3.0, off); + float3 _477 = Fetch(param_12, param_13, params, Source, SourceSmplr); + float3 g = _477; + float2 param_14 = pos; + float2 _481 = Dist(param_14, params); + float dst = _481.x; + float scale = params.hardBloomPix; + float param_15 = dst - 3.0; + float param_16 = scale; + float wa = Gaus(param_15, param_16, params); + float param_17 = dst - 2.0; + float param_18 = scale; + float wb = Gaus(param_17, param_18, params); + float param_19 = dst - 1.0; + float param_20 = scale; + float wc = Gaus(param_19, param_20, params); + float param_21 = dst + 0.0; + float param_22 = scale; + float wd = Gaus(param_21, param_22, params); + float param_23 = dst + 1.0; + float param_24 = scale; + float we = Gaus(param_23, param_24, params); + float param_25 = dst + 2.0; + float param_26 = scale; + float wf = Gaus(param_25, param_26, params); + float param_27 = dst + 3.0; + float param_28 = scale; + float wg = Gaus(param_27, param_28, params); + return (((((((a * wa) + (b * wb)) + (c * wc)) + (d * wd)) + (e * we)) + (f * wf)) + (g * wg)) / float3((((((wa + wb) + wc) + wd) + we) + wf) + wg); +} + +static inline __attribute__((always_inline)) +float BloomScan(thread const float2& pos, thread const float& off, constant Push& params) +{ + float2 param = pos; + float2 _599 = Dist(param, params); + float dst = _599.y; + float param_1 = dst + off; + float param_2 = params.hardBloomScan; + return Gaus(param_1, param_2, params); +} + +static inline __attribute__((always_inline)) +float3 Bloom(thread const float2& pos, constant Push& params, thread texture2d Source, thread const sampler SourceSmplr) +{ + float2 param = pos; + float param_1 = -2.0; + float3 a = Horz5(param, param_1, params, Source, SourceSmplr); + float2 param_2 = pos; + float param_3 = -1.0; + float3 b = Horz7(param_2, param_3, params, Source, SourceSmplr); + float2 param_4 = pos; + float param_5 = 0.0; + float3 c = Horz7(param_4, param_5, params, Source, SourceSmplr); + float2 param_6 = pos; + float param_7 = 1.0; + float3 d = Horz7(param_6, param_7, params, Source, SourceSmplr); + float2 param_8 = pos; + float param_9 = 2.0; + float3 e = Horz5(param_8, param_9, params, Source, SourceSmplr); + float2 param_10 = pos; + float param_11 = -2.0; + float wa = BloomScan(param_10, param_11, params); + float2 param_12 = pos; + float param_13 = -1.0; + float wb = BloomScan(param_12, param_13, params); + float2 param_14 = pos; + float param_15 = 0.0; + float wc = BloomScan(param_14, param_15, params); + float2 param_16 = pos; + float param_17 = 1.0; + float wd = BloomScan(param_16, param_17, params); + float2 param_18 = pos; + float param_19 = 2.0; + float we = BloomScan(param_18, param_19, params); + return ((((a * wa) + (b * wb)) + (c * wc)) + (d * wd)) + (e * we); +} + +static inline __attribute__((always_inline)) +float3 Mask(thread float2& pos, constant Push& params) +{ + float3 mask = float3(params.maskDark, params.maskDark, params.maskDark); + if (params.shadowMask == 1.0) + { + float line = params.maskLight; + float odd = 0.0; + if (fract(pos.x * (1.0/6.0)) < 0.5) + { + odd = 1.0; + } + if (fract((pos.y + odd) * 0.5) < 0.5) + { + line = params.maskDark; + } + pos.x = fract(pos.x * (1.0/3.0)); + if (pos.x < (1.0/3.0)) + { + mask.x = params.maskLight; + } + else + { + if (pos.x < (2.0/3.0)) + { + mask.y = params.maskLight; + } + else + { + mask.z = params.maskLight; + } + } + mask *= line; + } + else + { + if (params.shadowMask == 2.0) + { + pos.x = fract(pos.x * (1.0/3.0)); + if (pos.x < (1.0/3.0)) + { + mask.x = params.maskLight; + } + else + { + if (pos.x < (2.0/3.0)) + { + mask.y = params.maskLight; + } + else + { + mask.z = params.maskLight; + } + } + } + else + { + if (params.shadowMask == 3.0) + { + pos.x += (pos.y * 2.999); + pos.x = fract(pos.x * (1.0/6.0)); + if (pos.x < (1.0/3.0)) + { + mask.x = params.maskLight; + } + else + { + if (pos.x < (2.0/3.0)) + { + mask.y = params.maskLight; + } + else + { + mask.z = params.maskLight; + } + } + } + else + { + if (params.shadowMask == 4.0) + { + pos = floor(pos * float2(1.0, 0.5)); + pos.x += (pos.y * 3.0); + pos.x = fract(pos.x *(1.0/6.0)); + if (pos.x < (1.0/3.0)) + { + mask.x = params.maskLight; + } + else + { + if (pos.x < (2.0/3.0)) + { + mask.y = params.maskLight; + } + else + { + mask.z = params.maskLight; + } + } + } + } + } + } + return mask; +} + +static inline __attribute__((always_inline)) +float ToSrgb1(thread const float& c, constant Push& params) +{ + float _146; + if (c < 0.0031308) + { + _146 = c * 12.92; + } + else + { + _146 = (1.055 * pow(c, 0.41666)) - 0.055; + } + return _146; +} + +static inline __attribute__((always_inline)) +float3 ToSrgb(thread const float3& c, constant Push& params) +{ + float param = c.x; + float param_1 = c.y; + float param_2 = c.z; + return float3(ToSrgb1(param, params), ToSrgb1(param_1, params), ToSrgb1(param_2, params)); +} + +fragment float4 +ultron(VertexOutput v[[stage_in]], + constant Push& params [[buffer(0)]], + texture2d Source [[texture(0)]], + sampler SourceSmplr [[sampler(0)]]) +{ + float2 param = v.tex.xy; + float2 _953 = Warp(param, params); + float2 pos = _953; + float2 param_1 = pos; + float3 outColor = Tri(param_1, params, Source, SourceSmplr); + float2 param_2 = pos; + outColor += (Bloom(param_2, params, Source, SourceSmplr) * params.bloomAmount); + if (params.shadowMask > 0.0) + { + float2 param_3 = (v.tex.xy / (1.0/params.OutputSize.zw)) * 1.0; + float3 _980 = Mask(param_3, params); + outColor *= _980; + } + float3 param_4 = outColor; + float4 out = float4(ToSrgb(param_4, params), 1.0); + return out; +} diff --git a/Provenance/Game Library/UI/CollectionViewInACell/CollectionViewInCollectionViewCell.swift b/Provenance/Game Library/UI/CollectionViewInACell/CollectionViewInCollectionViewCell.swift index 1cdf4d426f..b96575366b 100644 --- a/Provenance/Game Library/UI/CollectionViewInACell/CollectionViewInCollectionViewCell.swift +++ b/Provenance/Game Library/UI/CollectionViewInACell/CollectionViewInCollectionViewCell.swift @@ -316,7 +316,7 @@ extension PVRecentGame: SubCellItem { extension CollectionViewInCollectionViewCell { func item(at point: CGPoint) -> Item? { - let internalPoint = convert(point, from: superview) + let internalPoint = internalCollectionView.convert(point, from: superview) guard let indexPath = internalCollectionView.indexPathForItem(at: internalPoint) else { return nil } return try? internalCollectionView.rx.model(at: indexPath) diff --git a/Provenance/Game Library/UI/Conflicts/ConflictsController.swift b/Provenance/Game Library/UI/Conflicts/ConflictsController.swift new file mode 100644 index 0000000000..08dd6ad3af --- /dev/null +++ b/Provenance/Game Library/UI/Conflicts/ConflictsController.swift @@ -0,0 +1,18 @@ +// +// ConflictsController.swift +// Provenance +// +// Created by Joseph Mattiello on 1/29/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation +import PVLibrary +import RxSwift +import RxCocoa + +public protocol ConflictsController { + typealias Conflict = (path: URL, candidates: [System]) + var conflicts: Observable<[Conflict]> { get } + func resolveConflicts(withSolutions: [URL: System]) +} diff --git a/Provenance/Game Library/UI/Game Library/CollectionViewController/PVGameLibraryViewController.swift b/Provenance/Game Library/UI/Game Library/CollectionViewController/PVGameLibraryViewController.swift index 4a8d4a8b84..7a129603d6 100644 --- a/Provenance/Game Library/UI/Game Library/CollectionViewController/PVGameLibraryViewController.swift +++ b/Provenance/Game Library/UI/Game Library/CollectionViewController/PVGameLibraryViewController.swift @@ -32,6 +32,9 @@ let PVGameLibraryCollectionViewGamesCellIdentifier = "RecentlyPlayedCollectionCe let PVRequiresMigrationKey = "PVRequiresMigration" +// should we use the "new" context menus added in iOS 13, or use an action sheet +let useModernContextMenus = true + // For Obj-C public extension NSNotification { @objc @@ -54,7 +57,7 @@ public extension Notification.Name { } #endif -final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, UINavigationControllerDelegate, GameLaunchingViewController, GameSharingViewController, WebServerActivatorController { +final class PVGameLibraryViewController: GCEventViewController, UITextFieldDelegate, UINavigationControllerDelegate, GameLaunchingViewController, GameSharingViewController, WebServerActivatorController { lazy var collectionViewZoom: CGFloat = CGFloat(PVSettingsModel.shared.gameLibraryScale) let disposeBag = DisposeBag() @@ -62,14 +65,32 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, var gameLibrary: PVGameLibrary! var gameImporter: GameImporter! var filePathsToImport = [URL]() - - var collectionView: UICollectionView? + + // selected (aka hilighted) item selected via game controller UX + #if os(iOS) + // NOTE this may not be a *real* indexPath, if it is for a section with a nexted collection view + var _selectedIndexPath:IndexPath? + var _selectedIndexPathView:UIView! + #endif + + var collectionView: UICollectionView? { + didSet { + guard let collectionView = collectionView else { return } + #if os(iOS) + if #available(iOS 14.0, *) { + collectionView.selectionFollowsFocus = true + } + #endif + collectionView.autoresizingMask = [.flexibleWidth, .flexibleHeight] + } + } #if os(iOS) var photoLibrary: PHPhotoLibrary? #endif var gameForCustomArt: PVGame? + @IBOutlet var settingsBarButtonItem: UIBarButtonItem! @IBOutlet var getMoreRomsBarButtonItem: UIBarButtonItem! @IBOutlet var sortOptionBarButtonItem: UIBarButtonItem! @IBOutlet var conflictsBarButtonItem: UIBarButtonItem! @@ -81,39 +102,23 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, var isInitialAppearance = false + // add or remove the conflict button (iff it is in the storyboard) func updateConflictsButton(_ hasConflicts: Bool) { - #if os(tvOS) - var items = [sortOptionBarButtonItem!, getMoreRomsBarButtonItem!] - if hasConflicts, let conflictsBarButtonItem = conflictsBarButtonItem { - items.append(conflictsBarButtonItem) - } + if let conflictsBarButtonItem = conflictsBarButtonItem { + conflictsBarButtonItem.isEnabled = hasConflicts + #if os(tvOS) + let items: [UIBarButtonItem] = hasConflicts ? [ getMoreRomsBarButtonItem, conflictsBarButtonItem ] : [getMoreRomsBarButtonItem] + #else + let items: [UIBarButtonItem] = hasConflicts ? [ settingsBarButtonItem, conflictsBarButtonItem ] : [settingsBarButtonItem] + #endif navigationItem.leftBarButtonItems = items - #endif + } } @IBOutlet var sortOptionsTableView: UITableView! - lazy var sortOptionsTableViewController: UIViewController = { - let optionsTableView = sortOptionsTableView - let avc = UIViewController() - avc.view = optionsTableView - - #if os(iOS) - avc.modalPresentationStyle = .popover - // avc.popoverPresentationController?.delegate = self - avc.popoverPresentationController?.barButtonItem = sortOptionBarButtonItem - avc.popoverPresentationController?.sourceView = collectionView - avc.preferredContentSize = CGSize(width: 300, height: 500) - avc.title = "Library Options" - #else - // providesPresentationContextTransitionStyle = true - // definesPresentationContext = true - if #available(tvOS 11.0, *) { - avc.modalPresentationStyle = .blurOverFullScreen - } else { - avc.modalPresentationStyle = .currentContext - } - avc.modalTransitionStyle = .coverVertical - #endif + lazy var sortOptionsTableViewController: SortOptionsTableViewController = { + let avc = SortOptionsTableViewController(withTableView: sortOptionsTableView) + avc.title = "Library Options" return avc }() @@ -165,7 +170,11 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, self.init(header: original.header, items: items, collapsable: original.collapsable) } } - + + #if os(iOS) + var searchController: UISearchController! + #endif + override func viewDidLoad() { super.viewDidLoad() isInitialAppearance = true @@ -188,6 +197,19 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, self.collectionView?.reloadData() } }) + #else + navigationController?.navigationBar.isTranslucent = false + let blurEffect = UIBlurEffect(style: UIBlurEffect.Style.dark) + let blurEffectView = UIVisualEffectView(effect: blurEffect) + blurEffectView.frame = (self.navigationController?.navigationBar.bounds)! + self.navigationController?.navigationBar.addSubview(blurEffectView) + self.navigationController?.navigationBar.sendSubviewToBack(blurEffectView) + navigationController?.navigationBar.backgroundColor = UIColor.black.withAlphaComponent(0.5) + // ironicaly BarButtonItems (unselected background) look better when forced to LightMode + if #available(tvOS 13.0, *) { + navigationController?.overrideUserInterfaceStyle = .light + self.overrideUserInterfaceStyle = .dark + } #endif // Handle migrating library @@ -205,18 +227,52 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, let searchController = UISearchController(searchResultsController: nil) searchController.searchBar.placeholder = "Search" searchController.obscuresBackgroundDuringPresentation = false - searchController.hidesNavigationBarDuringPresentation = true + searchController.hidesNavigationBarDuringPresentation = false + if #available(iOS 13.0, *) { + searchController.automaticallyShowsCancelButton = true + } navigationItem.hidesSearchBarWhenScrolling = true navigationItem.searchController = searchController + self.searchController = searchController searchText = Observable.merge(searchController.rx.searchText, searchController.rx.didDismiss.map { _ in nil }) #else searchText = .never() #endif - - // load the config file - title = nil - + + // create a Logo as the title + #if os(iOS) + let font = UIFont.boldSystemFont(ofSize: 20) + let icon = "AppIcon" + let icon_size = font.pointSize + #else + let font = UIFont.boldSystemFont(ofSize: 48) + let icon = "pv_dark_logo" + let icon_size = font.capHeight + #endif + if let icon = UIImage(named:icon)?.resize(to:CGSize(width:0,height:icon_size)) + { + let logo = UIImageView(image:icon) + logo.layer.cornerRadius = 4.0; + logo.layer.masksToBounds = true + let name = UILabel() + name.text = " Provenance" + name.font = font + name.textColor = .white + name.sizeToFit() + let stack = UIStackView(arrangedSubviews:[logo,name]) + stack.alignment = .center + stack.frame = CGRect(origin:.zero, size:stack.systemLayoutSizeFitting(.zero)) + navigationItem.titleView = stack + } + + // we cant use a SF Symbol in the Storyboard cuz of back version support, so change it here in code. + if #available(iOS 13.0, tvOS 13.0, *) { + if let bbi = settingsBarButtonItem { + bbi.image = UIImage(systemName:"gear", withConfiguration:UIImage.SymbolConfiguration(font:font)) + } + } + // Persist some settings, could probably be done in a better way collapsedSystems.bind(onNext: { PVSettingsModel.shared.collapsedSystems = $0 }).disposed(by: disposeBag) currentSort.bind(onNext: { PVSettingsModel.shared.sort = $0 }).disposed(by: disposeBag) @@ -228,7 +284,6 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, let collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: layout) self.collectionView = collectionView - collectionView.autoresizingMask = [.flexibleWidth, .flexibleHeight] typealias Playable = (PVGame, UICollectionViewCell?, PVCore?, PVSaveState?) let selectedPlayable = PublishSubject() @@ -270,7 +325,9 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, }) collectionView.rx.itemSelected - .map { indexPath in (try! collectionView.rx.model(at: indexPath) as Section.Item, collectionView.cellForItem(at: indexPath)) } + .map { + indexPath in (try! collectionView.rx.model(at: indexPath) as Section.Item, collectionView.cellForItem(at: indexPath)) + } .compactMap({ item, cell -> Playable? in switch item { case .game(let game): @@ -369,7 +426,7 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, }) .mapMany({ system, isCollapsed -> Section? in guard !system.sortedGames.isEmpty else { return nil } - let header = "\(system.manufacturer) : \(system.shortName)" + (system.isBeta ? " Beta" : "") + let header = "\(system.manufacturer) : \(system.shortName)" + (system.isBeta ? " ⚠️ Beta" : "") let items = isCollapsed ? [] : system.sortedGames.map { Section.Item.game($0) } return Section(header: header, items: items, @@ -387,14 +444,17 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, return nonSearchSections } } - sections.bind(to: collectionView.rx.items(dataSource: dataSource)).disposed(by: disposeBag) + sections.observe(on: MainScheduler.instance).bind(to: collectionView.rx.items(dataSource: dataSource)).disposed(by: disposeBag) #if os(iOS) sections.map { !$0.isEmpty }.bind(to: libraryInfoContainerView.rx.isHidden).disposed(by: disposeBag) #endif - collectionView.rx.longPressed(Section.Item.self) - .bind(onNext: self.longPressed) - .disposed(by: disposeBag) + // attach long press gesture only on pre-iOS 13, and tvOS + if useModernContextMenus == false || NSClassFromString("UIContextMenuConfiguration") == nil { + collectionView.rx.longPressed(Section.Item.self) + .bind(onNext: self.longPressed) + .disposed(by: disposeBag) + } collectionView.rx.setDelegate(self).disposed(by: disposeBag) collectionView.bounces = true @@ -513,7 +573,10 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, case .began: Holder.scaleStart = collectionViewZoom collectionView.isScrollEnabled = false - + guard collectionView.collectionViewLayout.collectionViewContentSize.height != 0 else { + ELOG("collectionView.collectionViewLayout.collectionViewContentSize.height is 0") + return + } Holder.normalisedY = gesture.location(in: collectionView).y / collectionView.collectionViewLayout.collectionViewContentSize.height case .changed: var newScale = Holder.scaleStart * gesture.scale @@ -561,10 +624,24 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, return } } + + override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + #if os(iOS) + PVControllerManager.shared.controllerUserInteractionEnabled = false + #else + self.controllerUserInteractionEnabled = false + #endif + } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) _ = PVControllerManager.shared + #if os(iOS) + PVControllerManager.shared.controllerUserInteractionEnabled = true + #else + self.controllerUserInteractionEnabled = true + #endif if isInitialAppearance { isInitialAppearance = false #if os(tvOS) @@ -621,6 +698,13 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, if segue.identifier == "SettingsSegue" { let settingsVC = (segue.destination as! UINavigationController).topViewController as! PVSettingsViewController settingsVC.conflictsController = updatesController + } else if segue.identifier == "SplitSettingsSegue" { + #if os(tvOS) + let splitVC = segue.destination as! PVTVSplitViewController + let navVC = splitVC.viewControllers[1] as! UINavigationController + let settingsVC = navVC.topViewController as! PVSettingsViewController + settingsVC.conflictsController = updatesController + #endif } else if segue.identifier == "gameMoreInfoSegue" { let game = sender as! PVGame let moreInfoVC = segue.destination as! PVGameMoreInfoViewController @@ -671,26 +755,38 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, @IBAction func conflictsButtonTapped(_: Any) { displayConflictVC() } - - @IBAction func sortButtonTapped(_: Any) { + + #if os(tvOS) + @IBAction func searchButtonTapped(_ sender: Any) { + let searchNavigationController = PVSearchViewController.createEmbeddedInNavigationController(gameLibrary: gameLibrary) + present(searchNavigationController, animated: true) { () -> Void in } + } + #endif + + @IBAction func sortButtonTapped(_ sender: Any?) { + if self.presentedViewController != nil { + return; + } + sortOptionsTableView.reloadData() + #if os(iOS) // Add done button to iPhone // iPad is a popover do no done button needed - if traitCollection.horizontalSizeClass == .compact { + if traitCollection.userInterfaceIdiom != .pad || traitCollection.horizontalSizeClass == .compact || !(sender is UIBarButtonItem) { let navController = UINavigationController(rootViewController: sortOptionsTableViewController) sortOptionsTableViewController.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(PVGameLibraryViewController.dismissVC)) - sortOptionsTableView.reloadData() present(navController, animated: true, completion: nil) - return } else { - sortOptionsTableViewController.popoverPresentationController?.barButtonItem = sortOptionBarButtonItem + sortOptionsTableViewController.modalPresentationStyle = .popover + sortOptionsTableViewController.popoverPresentationController?.barButtonItem = sender as? UIBarButtonItem sortOptionsTableViewController.popoverPresentationController?.sourceView = collectionView - sortOptionsTableView.reloadData() + sortOptionsTableViewController.preferredContentSize = CGSize(width:300, height:sortOptionsTableView.contentSize.height); present(sortOptionsTableViewController, animated: true, completion: nil) } #else - sortOptionsTableView.reloadData() - present(sortOptionsTableViewController, animated: true, completion: nil) + sortOptionsTableViewController.preferredContentSize = CGSize(width:675, height:sortOptionsTableView.contentSize.height); + let pvc = TVFullscreenController(rootViewController:sortOptionsTableViewController) + present(pvc, animated: true, completion: nil) #endif } @@ -702,7 +798,7 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, // MARK: - Filesystem Helpers - @IBAction func getMoreROMs(_ sender: Any) { + @IBAction func getMoreROMs(_ sender: Any?) { do { try reachability.startNotifier() } catch { @@ -759,7 +855,7 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, present(actionSheet, animated: true, completion: nil) - actionSheet.rx.deallocating.asObservable().bind { [weak self] in + (actionSheet as UIViewController).rx.deallocating.asObservable().bind { [weak self] in self?.reachability.stopNotifier() }.disposed(by: disposeBag) #else // tvOS @@ -844,7 +940,7 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, } @objc func handleCacheEmptied(_: NotificationCenter) { - DispatchQueue.global(qos: .default).async(execute: { () -> Void in + DispatchQueue.global(qos: .userInitiated).async(execute: { () -> Void in let database = RomDatabase.sharedInstance database.refresh() @@ -874,29 +970,33 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, private func longPressed(item: Section.Item, at indexPath: IndexPath, point: CGPoint) { let cell = collectionView!.cellForItem(at: indexPath)! - #if os(iOS) && !targetEnvironment(macCatalyst) - presentActionSheetViewControllerForPopoverPresentation(contextMenu(for: item, cell: cell, point: point), - sourceView: cell) - #elseif targetEnvironment(macCatalyst) let actionSheet = contextMenu(for: item, cell: cell, point: point) - if traitCollection.userInterfaceIdiom == .mac { - actionSheet.popoverPresentationController?.sourceView = cell - actionSheet.popoverPresentationController?.sourceRect = (collectionView?.layoutAttributesForItem(at: indexPath)?.bounds ?? CGRect.zero) - } + actionSheet.popoverPresentationController?.sourceView = cell + actionSheet.popoverPresentationController?.sourceRect = cell.bounds present(actionSheet, animated: true) - #else - let actionSheet = contextMenu(for: item, cell: cell, point: point) - - if traitCollection.userInterfaceIdiom == .pad { - actionSheet.popoverPresentationController?.sourceView = cell - actionSheet.popoverPresentationController?.sourceRect = (collectionView?.layoutAttributesForItem(at: indexPath)?.bounds ?? CGRect.zero) - } - present(actionSheet, animated: true) - #endif + } + + #if os(iOS) + @available(iOS 13.0, *) + func collectionView(_ collectionView: UICollectionView, contextMenuConfigurationForItemAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { + guard useModernContextMenus, + let cell = collectionView.cellForItem(at: indexPath), + let item: Section.Item = try? collectionView.rx.model(at: indexPath) + else { return nil } + + if let actionSheet = contextMenu(for: item, cell: cell, point: point) as? UIAlertControllerProtocol { + return UIContextMenuConfiguration(identifier:nil) { + return nil // use default + } actionProvider: {_ in + return actionSheet.convertToMenu() + } } - - private func contextMenu(for item: Section.Item, cell: UICollectionViewCell, point: CGPoint) -> UIAlertController { + return nil + } + #endif + + private func contextMenu(for item: Section.Item, cell: UICollectionViewCell, point: CGPoint) -> UIViewController { switch item { case .game(let game): return contextMenu(for: game, sender: cell) @@ -911,24 +1011,41 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, return contextMenu(for: game.game, sender: cell) } } + + private func showCoreOptions(forCore core: CoreOptional.Type, withTitle title:String) { + let optionsVC = CoreOptionsViewController(withCore: core) + optionsVC.title = title + #if os(iOS) + self.navigationController?.pushViewController(optionsVC, animated: true) + #else + let nav = UINavigationController(rootViewController: optionsVC) + present(TVFullscreenController(rootViewController: nav), animated: true, completion: nil) + #endif + } - private func contextMenu(for game: PVGame, sender: UIView) -> UIAlertController { + private func contextMenu(for game: PVGame, sender: UIView) -> UIViewController { let actionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) - #if os(tvOS) - actionSheet.message = "Options for \(game.title)" - #endif + actionSheet.title = game.title + // If game.system has multiple cores, add actions to manage if let system = game.system, system.cores.count > 1 { // If user has select a core for this game, actio to reset if let userPreferredCoreID = game.userPreferredCoreID { + + // Action to play for default core + actionSheet.addAction(UIAlertAction(title: "Play", symbol:"gamecontroller", style: .default, handler: { [unowned self] _ in + self.load(game, sender: sender, core: nil, saveState: nil) + })) + actionSheet.preferredAction = actionSheet.actions.last + // Find the core for the current id let userSelectedCore = RomDatabase.sharedInstance.object(ofType: PVCore.self, wherePrimaryKeyEquals: userPreferredCoreID) let coreName = userSelectedCore?.projectName ?? "nil" // Add reset action - actionSheet.addAction(UIAlertAction(title: "Reset default core selection (\(coreName))", style: .default, handler: { [unowned self] _ in + actionSheet.addAction(UIAlertAction(title: "Reset default core selection (\(coreName))", symbol:"bolt.circle", style: .default, handler: { [unowned self] _ in let resetAlert = UIAlertController(title: "Reset core?", message: "Are you sure you want to reset \(game.title) to no longer default to use \(coreName)?", preferredStyle: .alert) - resetAlert.addAction(UIAlertAction(title: "Cancel", style: .default, handler: nil)) + resetAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil)) resetAlert.addAction(UIAlertAction(title: "Yes", style: .destructive, handler: { _ in try! RomDatabase.sharedInstance.writeTransaction { game.userPreferredCoreID = nil @@ -939,29 +1056,45 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, } // Action to Open with... - actionSheet.addAction(UIAlertAction(title: "Open with…", style: .default, handler: { [unowned self] _ in + actionSheet.addAction(UIAlertAction(title: "Play with…", symbol: "ellipsis.circle", style: .default, handler: { [unowned self] _ in self.presentCoreSelection(forGame: game, sender: sender) })) } + else { + // Action to play for single core games + actionSheet.addAction(UIAlertAction(title: "Play", symbol:"gamecontroller", style: .default, handler: { [unowned self] _ in + self.load(game, sender: sender, core: nil, saveState: nil) + })) + actionSheet.preferredAction = actionSheet.actions.last + } + + if let system = game.system, system.cores.count == 1, let pvcore = system.cores.first, let coreClass = NSClassFromString(pvcore.principleClass) as? CoreOptional.Type { + + actionSheet.addAction(UIAlertAction(title: "\(pvcore.projectName) options", symbol: "slider.horizontal.3", style: .default, handler: { (_: UIAlertAction) -> Void in + self.showCoreOptions(forCore: coreClass, withTitle:pvcore.projectName) + })) + } - actionSheet.addAction(UIAlertAction(title: "Game Info", style: .default, handler: { (_: UIAlertAction) -> Void in + actionSheet.addAction(UIAlertAction(title: "Game Info", symbol: "info.circle", style: .default, handler: { (_: UIAlertAction) -> Void in self.moreInfo(for: game) })) var favoriteTitle = "Favorite" + var favoriteSymbol = "heart" if game.isFavorite { favoriteTitle = "Unfavorite" + favoriteSymbol = "heart.fill" } - actionSheet.addAction(UIAlertAction(title: favoriteTitle, style: .default, handler: { (_: UIAlertAction) -> Void in + actionSheet.addAction(UIAlertAction(title: favoriteTitle, symbol:favoriteSymbol, style: .default, handler: { (_: UIAlertAction) -> Void in self.toggleFavorite(for: game) })) - actionSheet.addAction(UIAlertAction(title: "Rename", style: .default, handler: { (_: UIAlertAction) -> Void in + actionSheet.addAction(UIAlertAction(title: "Rename", symbol: "rectangle.and.pencil.and.ellipsis", style: .default, handler: { (_: UIAlertAction) -> Void in self.renameGame(game) })) #if os(iOS) - actionSheet.addAction(UIAlertAction(title: "Copy MD5 URL", style: .default, handler: { (_: UIAlertAction) -> Void in + actionSheet.addAction(UIAlertAction(title: "Copy MD5 URL", symbol: "arrow.up.doc", style: .default, handler: { (_: UIAlertAction) -> Void in let md5URL = "provenance://open?md5=\(game.md5Hash)" UIPasteboard.general.string = md5URL let alert = UIAlertController(title: nil, message: "URL copied to clipboard.", preferredStyle: .alert) @@ -971,16 +1104,18 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, }) })) - actionSheet.addAction(UIAlertAction(title: "Choose Cover", style: .default) { [self] _ in - self.chooseCustomArtwork(for: game, sourceView: sender) + actionSheet.addAction(UIAlertAction(title: "Choose Cover", symbol:"folder", style: .default) { [weak self] _ in + self?.chooseCustomArtwork(for: game, sourceView: sender) }) - actionSheet.addAction(UIAlertAction(title: "Paste Cover", style: .default, handler: { (_: UIAlertAction) -> Void in - self.pasteCustomArtwork(for: game) - })) + if UIPasteboard.general.hasImages || UIPasteboard.general.hasURLs { + actionSheet.addAction(UIAlertAction(title: "Paste Cover", symbol:"arrow.down.doc", style: .default, handler: { (_: UIAlertAction) -> Void in + self.pasteCustomArtwork(for: game) + })) + } if !game.saveStates.isEmpty { - actionSheet.addAction(UIAlertAction(title: "View Save States", style: .default, handler: { (_: UIAlertAction) -> Void in + actionSheet.addAction(UIAlertAction(title: "View Save States", symbol:"archivebox", style: .default, handler: { (_: UIAlertAction) -> Void in guard let saveStatesNavController = UIStoryboard(name: "SaveStates", bundle: nil).instantiateViewController(withIdentifier: "PVSaveStatesViewControllerNav") as? UINavigationController else { return } @@ -1008,7 +1143,7 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, // conditionally show Restore Original Artwork if !game.originalArtworkURL.isEmpty, !game.customArtworkURL.isEmpty, game.originalArtworkURL != game.customArtworkURL { - actionSheet.addAction(UIAlertAction(title: "Restore Cover", style: .default, handler: { (_: UIAlertAction) -> Void in + actionSheet.addAction(UIAlertAction(title: "Restore Cover", symbol:"photo", style: .default, handler: { (_: UIAlertAction) -> Void in try! PVMediaCache.deleteImage(forKey: game.customArtworkURL) try! RomDatabase.sharedInstance.writeTransaction { @@ -1017,7 +1152,7 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, let gameRef = ThreadSafeReference(to: game) - DispatchQueue.global(qos: .default).async { + DispatchQueue.global(qos: .userInitiated).async { let realm = try! Realm() guard let game = realm.resolve(gameRef) else { return // person was deleted @@ -1028,12 +1163,12 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, })) } - actionSheet.addAction(UIAlertAction(title: "Share", style: .default, handler: { (_: UIAlertAction) -> Void in + actionSheet.addAction(UIAlertAction(title: "Share", symbol:"square.and.arrow.up", style: .default, handler: { (_: UIAlertAction) -> Void in self.share(for: game, sender: sender) })) #endif - actionSheet.addAction(UIAlertAction(title: "Delete", style: .destructive, handler: { (_: UIAlertAction) -> Void in + actionSheet.addAction(UIAlertAction(title: "Delete", symbol:"trash", style: .destructive, handler: { (_: UIAlertAction) -> Void in let alert = UIAlertController(title: "Delete \(game.title)", message: "Any save states and battery saves will also be deleted, are you sure?", preferredStyle: .alert) alert.addAction(UIAlertAction(title: "Yes", style: .destructive, handler: { (_: UIAlertAction) -> Void in // Delete from Realm @@ -1047,12 +1182,15 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, self.present(alert, animated: true) { () -> Void in } })) + if actionSheet.preferredAction == nil { + actionSheet.preferredAction = actionSheet.actions.first + } actionSheet.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil)) return actionSheet } - private func contextMenu(for saveState: PVSaveState) -> UIAlertController { - let actionSheet = UIAlertController(title: "Delete this save state?", message: nil, preferredStyle: .actionSheet) + private func contextMenu(for saveState: PVSaveState) -> UIViewController { + let actionSheet = UIAlertController(title: "Delete this save state?", message: nil, preferredStyle: .alert) actionSheet.addAction(UIAlertAction(title: "Yes", style: .destructive) { [unowned self] _ in do { @@ -1062,6 +1200,7 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, } }) actionSheet.addAction(UIAlertAction(title: "No", style: .cancel, handler: nil)) + actionSheet.preferredAction = actionSheet.actions.last return actionSheet } @@ -1176,7 +1315,8 @@ final class PVGameLibraryViewController: UIViewController, UITextFieldDelegate, presentActionSheetViewControllerForPopoverPresentation(imagePickerActionSheet, sourceView: sourceView) } - private func presentActionSheetViewControllerForPopoverPresentation(_ alertController: UIAlertController, sourceView: UIView) { + private func presentActionSheetViewControllerForPopoverPresentation(_ alertController: UIViewController, sourceView: UIView) { + if traitCollection.userInterfaceIdiom == .pad { alertController.popoverPresentationController?.sourceView = sourceView alertController.popoverPresentationController?.sourceRect = sourceView.bounds @@ -1405,19 +1545,33 @@ extension PVGameLibraryViewController: UITableViewDataSource { func tableView(_: UITableView, numberOfRowsInSection section: Int) -> Int { return section == 0 ? SortOptions.count : 4 } - + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + // NOTE: cell setup is done in willDisplayCell if indexPath.section == 0 { - let cell = tableView.dequeueReusableCell(withIdentifier: "sortCell", for: indexPath) + return tableView.dequeueReusableCell(withIdentifier: "sortCell", for: indexPath) + } else if indexPath.section == 1 { + return tableView.dequeueReusableCell(withIdentifier: "viewOptionsCell", for: indexPath) + } + else { + fatalError("Invalid section") + } + } +} - let sortOption = SortOptions.allCases[indexPath.row] +extension PVGameLibraryViewController: UITableViewDelegate { + + func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { + #if os(tvOS) + cell.layer.cornerRadius = 12 + #endif + + if indexPath.section == 0 { + let sortOption = SortOptions.allCases[indexPath.row] cell.textLabel?.text = sortOption.description cell.accessoryType = indexPath.row == (try! currentSort.value()).row ? .checkmark : .none - return cell } else if indexPath.section == 1 { - let cell = tableView.dequeueReusableCell(withIdentifier: "viewOptionsCell", for: indexPath) - switch indexPath.row { case 0: cell.textLabel?.text = "Show Game Titles" @@ -1434,18 +1588,22 @@ extension PVGameLibraryViewController: UITableViewDataSource { default: fatalError("Invalid row") } - - return cell } - fatalError("Invalid section") + else { + fatalError("Invalid section") + } } -} - -extension PVGameLibraryViewController: UITableViewDelegate { + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { if indexPath.section == 0 { currentSort.onNext(SortOptions.optionForRow(UInt(indexPath.row))) - dismiss(animated: true, completion: nil) + //dont call reloadSections or we will loose focus on tvOS + //tableView.reloadSections([indexPath.section], with: .automatic) + for row in 0..<(self.tableView(tableView, numberOfRowsInSection: indexPath.section)) { + let indexPath = IndexPath(row:row, section:indexPath.section) + self.tableView(tableView, willDisplay:tableView.cellForRow(at:indexPath)!, forRowAt:indexPath) + } + //dismiss(animated: true, completion: nil) } else if indexPath.section == 1 { switch indexPath.row { case 0: @@ -1459,8 +1617,9 @@ extension PVGameLibraryViewController: UITableViewDelegate { default: fatalError("Invalid row") } - - tableView.reloadRows(at: [indexPath], with: .automatic) + //dont call reloadRows or we will loose focus on tvOS + //tableView.reloadRows(at: [indexPath], with:.automatic) + self.tableView(tableView, willDisplay:tableView.cellForRow(at:indexPath)!, forRowAt:indexPath) collectionView?.reloadData() } } @@ -1589,37 +1748,39 @@ extension PVGameLibraryViewController { promptToDeleteGame(focusedGame) } - func collectionView(_ collectionView: UICollectionView, didUpdateFocusIn context: UICollectionViewFocusUpdateContext, with _: UIFocusAnimationCoordinator) { - focusedGame = getFocusedGame(in: collectionView, focusContext: context) - } - private func getFocusedGame(in collectionView: UICollectionView, focusContext context: UICollectionViewFocusUpdateContext) -> PVGame? { - guard let indexPath = context.nextFocusedIndexPath, - let item: Section.Item = try? collectionView.rx.model(at: indexPath) - else { return nil } + func collectionView(_ collectionView: UICollectionView, didUpdateFocusIn context: UICollectionViewFocusUpdateContext, with _: UIFocusAnimationCoordinator) { + focusedGame = getFocusedGame(in: collectionView, focusContext: context) + } - switch item { - case .game(let game): - return game - case .favorites(let games): - if let outerCell = collectionView.cellForItem(at: indexPath) as? CollectionViewInCollectionViewCell, - let innerCell = context.nextFocusedItem as? UICollectionViewCell, - let innerIndexPath = outerCell.internalCollectionView.indexPath(for: innerCell) { - return games[innerIndexPath.row] - } - return nil - case .recents(let games): - if let outerCell = collectionView.cellForItem(at: indexPath) as? CollectionViewInCollectionViewCell, - let innerCell = context.nextFocusedItem as? UICollectionViewCell, - let innerIndexPath = outerCell.internalCollectionView.indexPath(for: innerCell) { - return games[innerIndexPath.row].game - } - return nil - case .saves: - return nil + private func getFocusedGame(in collectionView: UICollectionView, focusContext context: UICollectionViewFocusUpdateContext) -> PVGame? { + guard let indexPath = context.nextFocusedIndexPath, + let item: Section.Item = try? collectionView.rx.model(at: indexPath) + else { return nil } + + switch item { + case .game(let game): + return game + case .favorites(let games): + if let outerCell = collectionView.cellForItem(at: indexPath) as? CollectionViewInCollectionViewCell, + let innerCell = context.nextFocusedItem as? UICollectionViewCell, + let innerIndexPath = outerCell.internalCollectionView.indexPath(for: innerCell) { + return games[innerIndexPath.row] + } + return nil + case .recents(let games): + if let outerCell = collectionView.cellForItem(at: indexPath) as? CollectionViewInCollectionViewCell, + let innerCell = context.nextFocusedItem as? UICollectionViewCell, + let innerIndexPath = outerCell.internalCollectionView.indexPath(for: innerCell) { + return games[innerIndexPath.row].game } + return nil + case .saves: + return nil } + } #endif + #if os(iOS) @objc @@ -1664,3 +1825,197 @@ extension PVGameLibraryViewController: GameLibraryCollectionViewDelegate { return input.rawValue } #endif + +private extension UIImage { + func resize(to size:CGSize) -> UIImage { + var size = size + if size.height == 0 {size.height = floor(size.width * self.size.height / self.size.width)} + if size.width == 0 {size.width = floor(size.height * self.size.width / self.size.height)} + return UIGraphicsImageRenderer(size:size).image { (context) in + self.draw(in: CGRect(origin:.zero, size:size)) + } + } +} + +// MARK: ControllerButtonPress + +#if os(iOS) + +extension PVGameLibraryViewController: ControllerButtonPress { + func controllerButtonPress(_ type: ButtonType) { + switch type { + case .select: + select() + case .up: + moveVert(-1) + case .down: + moveVert(+1) + case .left: + moveHorz(-1) + case .right: + moveHorz(+1) + case .options: + options() + case .menu: + menu() + case .x: + settingsCommand() +// case .y: // Bad merge? +// longPress() + case .r1: + getMoreROMs(self) + case .l1: + sortButtonTapped(self) + default: + break + } + } + + private func moveVert(_ dir:Int) { + guard var indexPath = _selectedIndexPath else { + return select(IndexPath(item:0, section:0)) + } + indexPath.item = indexPath.item + dir * itemsPerRow(indexPath) + if indexPath.item < 0 { + indexPath.section = indexPath.section-1 + indexPath.item = collectionView!.numberOfItems(inSection: indexPath.section)-1 + } + if indexPath.item >= collectionView!.numberOfItems(inSection: indexPath.section) { + indexPath.section = indexPath.section+1 + indexPath.item = 0 + } + if indexPath.section >= 0 && indexPath.section < collectionView!.numberOfSections { + select(indexPath) + } + } + + private func moveHorz(_ dir:Int) { + guard var indexPath = _selectedIndexPath else { + return select(IndexPath(item:0, section:0)) + } + indexPath.item = indexPath.item + dir + select(indexPath) + } + + // access cell(s) in nested collectionView + private func getNestedCollectionView(_ indexPath:IndexPath) -> UICollectionView? { + if let cell = collectionView?.cellForItem(at: IndexPath(item: 0, section: indexPath.section)), + let cv = (cell as? CollectionViewInCollectionViewCell)?.internalCollectionView ?? + (cell as? CollectionViewInCollectionViewCell)?.internalCollectionView ?? + (cell as? CollectionViewInCollectionViewCell)?.internalCollectionView { + return cv + } + return nil + } + + private func itemsPerRow(_ indexPath:IndexPath) -> Int { + guard let rect = collectionView!.layoutAttributesForItem(at: IndexPath(item: 0, section: indexPath.section))?.frame else { + return 1 + } + + // TODO: this math is probably wrong + let layout = (collectionView!.collectionViewLayout as! UICollectionViewFlowLayout) + let space = layout.minimumInteritemSpacing + let width = collectionView!.bounds.width // + space // - (layout.sectionInset.left + layout.sectionInset.right) + let n = width / (rect.width + space) + + return max(1, Int(n)) + } + + // just hilight (with a cheesy overlay) the item + private func select(_ indexPath:IndexPath?) { + + guard var indexPath = indexPath else { + _selectedIndexPath = nil + _selectedIndexPathView?.frame = .zero + return + } + + // TODO: this is a hack, a cell should be selected by setting isSelected and the cell class should handle it + + indexPath.section = max(0, min(collectionView!.numberOfSections-1,indexPath.section)) + let rect:CGRect + if let cv = getNestedCollectionView(indexPath) { + collectionView?.scrollToItem(at: IndexPath(item:0, section: indexPath.section), at: [], animated: false) + indexPath.item = max(0, min(cv.numberOfItems(inSection:0)-1,indexPath.item)) + let idx = IndexPath(item:indexPath.item, section:0) + cv.scrollToItem(at:idx , at:[], animated: false) + rect = cv.convert(cv.layoutAttributesForItem(at:idx)?.frame ?? .zero, to: collectionView) + } + else { + indexPath.item = max(0, min(collectionView!.numberOfItems(inSection:indexPath.section)-1,indexPath.item)) + collectionView?.scrollToItem(at: indexPath, at: [], animated: false) + rect = collectionView!.layoutAttributesForItem(at: indexPath)?.frame ?? .zero + } + + _selectedIndexPath = indexPath + + // TODO: this is a hack, a cell should be selected by setting isSelected and the cell class should handle it + + if !rect.isEmpty { + _selectedIndexPathView = _selectedIndexPathView ?? UIView() + collectionView!.addSubview(_selectedIndexPathView) + collectionView!.bringSubviewToFront(_selectedIndexPathView) + _selectedIndexPathView.frame = rect.insetBy(dx: -4.0, dy: -4.0) + _selectedIndexPathView.backgroundColor = navigationController?.view.tintColor + _selectedIndexPathView.alpha = 0.5 + _selectedIndexPathView.layer.cornerRadius = 16.0 + } + } + + // actually *push* the selected item + private func select() { + guard let indexPath = _selectedIndexPath else { return } + if let collectionView = getNestedCollectionView(indexPath) { + let indexPath = IndexPath(item: indexPath.item, section:0) + collectionView.delegate?.collectionView?(collectionView, didSelectItemAt: indexPath) + } + else { + collectionView!.delegate?.collectionView?(collectionView!, didSelectItemAt: indexPath) + } + } + private func contextMenu(for indexPath:IndexPath?) -> UIViewController? { + guard var indexPath = indexPath else { return nil } + + if let _ = getNestedCollectionView(indexPath) { + indexPath = IndexPath(item:0, section:indexPath.section) + } + if let item: Section.Item = try? collectionView!.rx.model(at: indexPath), + let cell = collectionView!.cellForItem(at: indexPath) { + return contextMenu(for: item, cell: cell, point: _selectedIndexPathView.center) + } + return nil + } + private func menu() { + if let menu = contextMenu(for: _selectedIndexPath) { + present(menu, animated: true) + } + } + private func options() { + let actionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) + + if _selectedIndexPath != nil { + // get the title of the game from the contextMenu! + if let menu = contextMenu(for: _selectedIndexPath), let title = menu.title, !title.isEmpty { + actionSheet.addAction(UIAlertAction(title: "Play \(title)", symbol:"gamecontroller", style: .default, handler: { _ in + self.select() + })) + } + } + actionSheet.addAction(UIAlertAction(title: "Settings", symbol:"gear", style: .default, handler: { _ in + self.settingsCommand() + })) + actionSheet.addAction(UIAlertAction(title: "Sort Options", symbol:"list.bullet", style: .default, handler: { _ in + self.sortButtonTapped(nil) + })) + actionSheet.addAction(UIAlertAction(title: "Add ROMs", symbol:"plus", style: .default, handler: { _ in + self.getMoreROMs(nil) + })) + actionSheet.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil)) + actionSheet.preferredAction = actionSheet.actions.first + + present(actionSheet, animated: true) + } +} +#endif + diff --git a/Provenance/Game Library/UI/Game Library/Reusable Views/PVGameLibraryCollectionViewCell.swift b/Provenance/Game Library/UI/Game Library/Reusable Views/PVGameLibraryCollectionViewCell.swift index d24985675c..2aa5b66929 100644 --- a/Provenance/Game Library/UI/Game Library/Reusable Views/PVGameLibraryCollectionViewCell.swift +++ b/Provenance/Game Library/UI/Game Library/Reusable Views/PVGameLibraryCollectionViewCell.swift @@ -391,9 +391,11 @@ final class PVGameLibraryCollectionViewCell: UICollectionViewCell { @IBOutlet private(set) var titleLabel: UILabel! { didSet { #if os(tvOS) - // The label's alpha will get set to 1 on focus - titleLabel.alpha = 1 - titleLabel.textColor = UIColor.darkGray + // The label's alpha will get set to 1 on focus + titleLabel.alpha = 1 + titleLabel.textColor = UIColor.darkGray + titleLabel.shadowColor = UIColor.init(white: 0.2, alpha: 0.5) + titleLabel.shadowOffset = .init(width: 0.5, height: 0.5) #endif } } @@ -926,7 +928,12 @@ final class PVGameLibraryCollectionViewCell: UICollectionViewCell { coordinator.addCoordinatedAnimations({ () -> Void in if self.isFocused { let transform = CGAffineTransform(scaleX: 1.25, y: 1.25) - self.superview?.bringSubviewToFront(self) + if let header = self.superview?.subviews.filter({$0 is PVGameLibrarySectionHeaderView}).first { + self.superview?.insertSubview(self, belowSubview: header) + } + else { + self.superview?.bringSubviewToFront(self) + } if PVSettingsModel.shared.showGameBadges { if #available(tvOS 11, *) {} else { // Hide for non os 11 since we don't have the auto contentLayerView diff --git a/Provenance/Game Library/UI/Game Library/Reusable Views/PVGameLibrarySectionHeaderView.swift b/Provenance/Game Library/UI/Game Library/Reusable Views/PVGameLibrarySectionHeaderView.swift index b8d8837500..47c4f01311 100644 --- a/Provenance/Game Library/UI/Game Library/Reusable Views/PVGameLibrarySectionHeaderView.swift +++ b/Provenance/Game Library/UI/Game Library/Reusable Views/PVGameLibrarySectionHeaderView.swift @@ -109,8 +109,12 @@ final class PVGameLibrarySectionHeaderView: UICollectionReusableView { collapseButton.heightAnchor.constraint(equalTo: heightAnchor, multiplier: 1).isActive = true collapseButton.widthAnchor.constraint(equalTo: heightAnchor, multiplier: 1).isActive = true collapseButton.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true + #if os(tvOS) collapseButton.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -94).isActive = true - + #else + collapseButton.trailingAnchor.constraint(equalTo: trailingAnchor, constant: 0).isActive = true + #endif + isOpaque = true } diff --git a/Provenance/Game Library/UI/Game Library/Reusable Views/es.lproj/PVGameLibraryCollectionViewCell.xib b/Provenance/Game Library/UI/Game Library/Reusable Views/es.lproj/PVGameLibraryCollectionViewCell.xib new file mode 100644 index 0000000000..4bd089a61e --- /dev/null +++ b/Provenance/Game Library/UI/Game Library/Reusable Views/es.lproj/PVGameLibraryCollectionViewCell.xib @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Provenance/Game Library/UI/Game Library/Reusable Views/it.lproj/PVGameLibraryCollectionViewCell.xib b/Provenance/Game Library/UI/Game Library/Reusable Views/it.lproj/PVGameLibraryCollectionViewCell.xib new file mode 100644 index 0000000000..4bd089a61e --- /dev/null +++ b/Provenance/Game Library/UI/Game Library/Reusable Views/it.lproj/PVGameLibraryCollectionViewCell.xib @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Provenance/Game Library/UI/Game Library/Reusable Views/ja.lproj/PVGameLibraryCollectionViewCell.xib b/Provenance/Game Library/UI/Game Library/Reusable Views/ja.lproj/PVGameLibraryCollectionViewCell.xib new file mode 100644 index 0000000000..4bd089a61e --- /dev/null +++ b/Provenance/Game Library/UI/Game Library/Reusable Views/ja.lproj/PVGameLibraryCollectionViewCell.xib @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Provenance/Game Library/UI/Game Library/Reusable Views/nl.lproj/PVGameLibraryCollectionViewCell.xib b/Provenance/Game Library/UI/Game Library/Reusable Views/nl.lproj/PVGameLibraryCollectionViewCell.xib new file mode 100644 index 0000000000..4bd089a61e --- /dev/null +++ b/Provenance/Game Library/UI/Game Library/Reusable Views/nl.lproj/PVGameLibraryCollectionViewCell.xib @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Provenance/Game Library/UI/Game Library/Reusable Views/ru.lproj/PVGameLibraryCollectionViewCell.xib b/Provenance/Game Library/UI/Game Library/Reusable Views/ru.lproj/PVGameLibraryCollectionViewCell.xib new file mode 100644 index 0000000000..4bd089a61e --- /dev/null +++ b/Provenance/Game Library/UI/Game Library/Reusable Views/ru.lproj/PVGameLibraryCollectionViewCell.xib @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Provenance/Game Library/UI/GameLaunchingViewController.swift b/Provenance/Game Library/UI/GameLaunchingViewController.swift index 50e04058d9..cbb35d48e7 100644 --- a/Provenance/Game Library/UI/GameLaunchingViewController.swift +++ b/Provenance/Game Library/UI/GameLaunchingViewController.swift @@ -393,9 +393,18 @@ extension GameLaunchingViewController where Self: UIViewController { return } - let cores = system.cores.sorted(byKeyPath: "projectName").filter({ return !$0.disabled }) + let cores = system.cores + .sorted(byKeyPath: "projectName") + .filter({ + guard !$0.disabled else { + return PVSettingsModel.shared.debugOptions.experimentalCores + } + return true + }) +// .distinct(by: #keyPath(\PVSystem.name)) + .sorted { $0.supportedSystems.count <= $1.supportedSystems.count } - let coreChoiceAlert = UIAlertController(title: "Multiple cores found", message: "Select which core to use with this game.", preferredStyle: .actionSheet) + let coreChoiceAlert = UIAlertController(title: "Multiple cores found", message: "Select which core to use with this game. If not sure, select the 1st option.", preferredStyle: .actionSheet) if traitCollection.userInterfaceIdiom == .pad, let senderView = sender as? UIView ?? self.view { coreChoiceAlert.popoverPresentationController?.sourceView = senderView coreChoiceAlert.popoverPresentationController?.sourceRect = senderView.bounds @@ -403,7 +412,8 @@ extension GameLaunchingViewController where Self: UIViewController { for core in cores { let action = UIAlertAction(title: core.projectName, style: .default) { [unowned self] _ in - let alwaysUseAlert = UIAlertController(title: nil, message: "Open with \(core.projectName)…", preferredStyle: .actionSheet) + let message = "Open with \(core.projectName)…" + let alwaysUseAlert = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet) if self.traitCollection.userInterfaceIdiom == .pad, let senderView = sender as? UIView ?? self.view { alwaysUseAlert.popoverPresentationController?.sourceView = senderView alwaysUseAlert.popoverPresentationController?.sourceRect = senderView.bounds @@ -471,7 +481,12 @@ extension GameLaunchingViewController where Self: UIViewController { return } - let cores = system.cores + let cores = system.cores.filter({ + guard !$0.disabled else { + return PVSettingsModel.shared.debugOptions.experimentalCores + } + return true + }) guard !cores.isEmpty else { displayAndLogError(withTitle: "Cannot open game", message: "No core found for game system '\(system.shortName)'.") @@ -572,7 +587,7 @@ extension GameLaunchingViewController where Self: UIViewController { // Open the save state after a bootup delay if the user selected one // Use a timer loop on ios 10+ to check if the emulator has started running if let saveState = saveState { - emulatorViewController.glViewController.view.isHidden = true + emulatorViewController.gpuViewController.view.isHidden = true _ = Timer.scheduledTimer(withTimeInterval: 0.05, repeats: true, block: {[weak self] timer in guard let self = self else { timer.invalidate() @@ -581,7 +596,7 @@ extension GameLaunchingViewController where Self: UIViewController { if !emulatorViewController.core.isEmulationPaused { timer.invalidate() self.openSaveState(saveState) - emulatorViewController.glViewController.view.isHidden = false + emulatorViewController.gpuViewController.view.isHidden = false } }) } @@ -662,6 +677,7 @@ extension GameLaunchingViewController where Self: UIViewController { #endif completion(latestSaveState) })) + alert.preferredAction = alert.actions.last #if os(tvOS) // Continue Always diff --git a/Provenance/Game Library/UI/PVConflictViewController.swift b/Provenance/Game Library/UI/PVConflictViewController.swift index d0f1b84c3c..885d826907 100644 --- a/Provenance/Game Library/UI/PVConflictViewController.swift +++ b/Provenance/Game Library/UI/PVConflictViewController.swift @@ -61,7 +61,8 @@ final class PVConflictViewController: UITableViewController { rows.bind(to: tableView.rx.items(cellIdentifier: cellIdentifier, cellType: UITableViewCell.self)) { _, row, cell in switch row { case .conflict(let conflict): - cell.textLabel?.text = conflict.path.deletingPathExtension().lastPathComponent + cell.editingAccessoryType = .checkmark + cell.textLabel?.text = conflict.path .lastPathComponent cell.accessoryType = .disclosureIndicator case .empty(let title): cell.textLabel?.text = title @@ -74,6 +75,30 @@ final class PVConflictViewController: UITableViewController { #endif } .disposed(by: disposeBag) + + tableView.rx.itemDeleted + .do(onNext: { + self.tableView.deselectRow(at: $0, animated: true) + }) + .compactMap({ indexPath -> (ConflictsController.Conflict, IndexPath)? in + let row: Row = try self.tableView.rx.model(at: indexPath) + switch row { + case .conflict(let conflict): + return (conflict, indexPath) + case .empty: + return nil + } + }) + .bind(onNext: { conflict, indexPath in + // Delete file + do { + try FileManager.default.removeItem(at: conflict.path) + } catch { + ELOG(error.localizedDescription) + } + self.tableView.reloadData() + }) + .disposed(by: disposeBag) tableView.rx.itemSelected .do(onNext: { self.tableView.deselectRow(at: $0, animated: true) }) @@ -97,16 +122,21 @@ final class PVConflictViewController: UITableViewController { } alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil)) - self.present(alertController, animated: true) { () -> Void in } + self.present(alertController, animated: true) { () -> Void in + self.tableView.reloadData() + } }) .disposed(by: disposeBag) } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) + #if os(iOS) if navigationController == nil || navigationController!.viewControllers.count <= 1 { + navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .edit, target: self, action: #selector(showEditing)) navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(dismissMe)) } + #endif } @objc func dismissMe() { @@ -125,3 +155,40 @@ final class PVConflictViewController: UITableViewController { } #endif } + +extension PVConflictViewController { + + override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { + return true + } + + override func tableView(_ tableView: UITableView, shouldIndentWhileEditingRowAt indexPath: IndexPath) -> Bool { + return true + } + + override func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle { + return .delete + } + + @objc private func toggleEditing() { + tableView.setEditing(!tableView.isEditing, animated: true) // Set opposite value of current editing status + navigationItem.rightBarButtonItem?.title = tableView.isEditing ? "Done" : "Edit" // Set title depending on the editing status + } + + @objc func showEditing(sender: UIBarButtonItem) { + if self.tableView.isEditing { + self.tableView.isEditing = false + self.navigationItem.rightBarButtonItem?.title = "Done" + } else { + self.tableView.isEditing = true + self.navigationItem.rightBarButtonItem?.title = "Edit" + } + } + + override func setEditing(_ editing: Bool, animated: Bool) { + super.setEditing(editing, animated: animated) + + // Toggle table view editing. + tableView.setEditing(editing, animated: true) + } +} diff --git a/Provenance/Game Library/UI/QuickTableViewController/Protocol/Row.swift b/Provenance/Game Library/UI/QuickTableViewController/Protocol/Row.swift index 99b6d3d6ff..b4b71a241e 100644 --- a/Provenance/Game Library/UI/QuickTableViewController/Protocol/Row.swift +++ b/Provenance/Game Library/UI/QuickTableViewController/Protocol/Row.swift @@ -27,7 +27,7 @@ import Foundation /// Any type that conforms to this protocol is capable of representing a row in a table view. -public protocol Row: class { +public protocol Row: AnyObject { /// The text of the row. var text: String { get } diff --git a/Provenance/Game Library/UI/QuickTableViewController/QuickTableViewController.swift b/Provenance/Game Library/UI/QuickTableViewController/QuickTableViewController.swift index 70dca1f991..20a4a089fd 100644 --- a/Provenance/Game Library/UI/QuickTableViewController/QuickTableViewController.swift +++ b/Provenance/Game Library/UI/QuickTableViewController/QuickTableViewController.swift @@ -31,9 +31,21 @@ open class QuickTableViewController: UIViewController, UITableViewDataSource, UI /// A Boolean value indicating if the controller clears the selection when the collection view appears. open var clearsSelectionOnViewWillAppear = true + + private var _selected:IndexPath? /// Returns the table view managed by the controller object. - open var tableView: UITableView = UITableView(frame: .zero, style: .grouped) + #if os(iOS) || os(macOS) + open var tableView: UITableView! = { + if #available(iOS 13.0, *) { + return UITableView(frame: .zero, style: .insetGrouped) + } else { + return UITableView(frame: .zero, style: .grouped) + } + }() + #else + open var tableView: UITableView = UITableView(frame: .zero, style: .grouped) + #endif /// The layout of sections and rows to display in the table view. open var tableContents: [Section] = [] { @@ -84,6 +96,10 @@ open class QuickTableViewController: UIViewController, UITableViewDataSource, UI tableView.estimatedRowHeight = 44 tableView.dataSource = self tableView.delegate = self + #if os(tvOS) + // leave some room on the left and right for tvOS focus animation scaling + tableView.layoutMargins = UIEdgeInsets(top:0, left:16, bottom:0, right:16) + #endif } open override func viewWillAppear(_ animated: Bool) { @@ -118,6 +134,9 @@ open class QuickTableViewController: UIViewController, UITableViewDataSource, UI #if os(iOS) (cell as? SwitchCell)?.delegate = self #endif + #if os(tvOS) + cell.layer.cornerRadius = 12 + #endif row.customize?(cell, row) return cell @@ -136,6 +155,8 @@ open class QuickTableViewController: UIViewController, UITableViewDataSource, UI open func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let section = tableContents[indexPath.section] let row = section.rows[indexPath.row] + + _selected = indexPath // remember this so we can restore focus after a reloadData switch (section, row) { case let (radio as RadioSection, option as OptionRowCompatible): @@ -189,6 +210,13 @@ open class QuickTableViewController: UIViewController, UITableViewDataSource, UI } } #endif + +#if os(tvOS) + public func indexPathForPreferredFocusedView(in tableView: UITableView) -> IndexPath? { + // set the focus to what was last selected + return _selected ?? IndexPath(row:0, section:0) + } +#endif } diff --git a/Provenance/Game Library/UI/QuickTableViewController/Views/SwitchCell.swift b/Provenance/Game Library/UI/QuickTableViewController/Views/SwitchCell.swift index f85bb06a4e..1fe4ab889b 100644 --- a/Provenance/Game Library/UI/QuickTableViewController/Views/SwitchCell.swift +++ b/Provenance/Game Library/UI/QuickTableViewController/Views/SwitchCell.swift @@ -28,7 +28,7 @@ import UIKit /// The `SwitchCellDelegate` protocol allows the adopting delegate to respond to the UI interaction. Not available on tvOS. @available(tvOS, unavailable, message: "SwitchCellDelegate is not available on tvOS.") -public protocol SwitchCellDelegate: class { +public protocol SwitchCellDelegate: AnyObject { /// Tells the delegate that the switch control is toggled. func switchCell(_ cell: SwitchCell, didToggleSwitch isOn: Bool) } diff --git a/Provenance/PVAppDelegate+AppCenter.swift b/Provenance/PVAppDelegate+AppCenter.swift index 96b44a15ae..26611148fd 100644 --- a/Provenance/PVAppDelegate+AppCenter.swift +++ b/Provenance/PVAppDelegate+AppCenter.swift @@ -20,6 +20,7 @@ extension PVAppDelegate { ELOG("No value for Info.plist key 'appcenter'") return } +// AppCenter.start(withAppSecret:"ios={Your iOS App Secret};macos={Your macOS App Secret}", services: [Analytics.self, Crashes.self]) AppCenter.configure(withAppSecret: secretKey) if AppCenter.isConfigured { AppCenter.startService(Analytics.self) diff --git a/Provenance/PVAppDelegate.swift b/Provenance/PVAppDelegate.swift index 26d71149a7..8a0f72e211 100644 --- a/Provenance/PVAppDelegate.swift +++ b/Provenance/PVAppDelegate.swift @@ -12,8 +12,9 @@ import PVLibrary import PVSupport import RealmSwift import RxSwift -#if !targetEnvironment(macCatalyst) && !os(macOS) +#if !targetEnvironment(macCatalyst) && !os(macOS) // && canImport(SteamController) import SteamController +import UIKit #endif @UIApplicationMain @@ -26,14 +27,46 @@ final class PVAppDelegate: UIResponder, UIApplicationDelegate { #if os(iOS) var _logViewController: PVLogViewController? #endif + + func _initUITheme() { + #if os(iOS) + // let currentTheme = PVSettingsModel.shared.theme + // Theme.currentTheme = currentTheme.theme + DispatchQueue.main.async { + Theme.currentTheme = Theme.darkTheme + } + #endif + } + + func _initUI() { + _initUITheme() + + // Set root view controller and make windows visible + let window = UIWindow.init(frame: UIScreen.main.bounds) + self.window = window + + #if os(tvOS) + window.tintColor = UIColor(red: 0.1, green: 0.5, blue: 0.95, alpha: 1.0) // PVBlue + #endif + + if PVSettingsModel.shared.debugOptions.useSwiftUI { + + } else { + let storyboard = UIStoryboard.init(name: "Provenance", bundle: Bundle.main) + let vc = storyboard.instantiateInitialViewController() + + window.rootViewController = vc + } + } func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool { application.isIdleTimerDisabled = PVSettingsModel.shared.disableAutoLock _initLogging() _initAppCenter() setDefaultsFromSettingsBundle() - + #if !targetEnvironment(macCatalyst) + PVEmulatorConfiguration.initICloud() DispatchQueue.global(qos: .background).async { let useiCloud = PVSettingsModel.shared.debugOptions.iCloudSync && PVEmulatorConfiguration.supportsICloud if useiCloud { @@ -49,19 +82,21 @@ final class PVAppDelegate: UIResponder, UIApplicationDelegate { try RomDatabase.initDefaultDatabase() } catch { let appName: String = Bundle.main.infoDictionary?["CFBundleName"] as? String ?? "the application" - let alert = UIAlertController(title: "Database Error", message: error.localizedDescription + "\nDelete and reinstall " + appName + ".", preferredStyle: .alert) + let alert = UIAlertController(title: NSLocalizedString("Database Error", comment: ""), message: error.localizedDescription + "\nDelete and reinstall " + appName + ".", preferredStyle: .alert) ELOG(error.localizedDescription) alert.addAction(UIAlertAction(title: "Exit", style: .destructive, handler: { _ in fatalError(error.localizedDescription) })) + self.window?.rootViewController = UIViewController() + self.window?.makeKeyAndVisible() DispatchQueue.main.asyncAfter(deadline: .now() + 1) { self.window?.rootViewController?.present(alert, animated: true, completion: nil) } return true } - + let gameLibrary = PVGameLibrary(database: RomDatabase.sharedInstance) #if os(iOS) || os(macOS) || targetEnvironment(macCatalyst) @@ -81,22 +116,6 @@ final class PVAppDelegate: UIResponder, UIApplicationDelegate { } #endif - #if os(tvOS) - if let tabBarController = window?.rootViewController as? UITabBarController { - let searchNavigationController = PVSearchViewController.createEmbeddedInNavigationController(gameLibrary: gameLibrary) - - guard var viewControllers = tabBarController.viewControllers else { - fatalError("tabBarController.viewControllers is nil") - } - viewControllers.insert(searchNavigationController, at: 1) - tabBarController.viewControllers = viewControllers - } - #else -// let currentTheme = PVSettingsModel.shared.theme -// Theme.currentTheme = currentTheme.theme - Theme.currentTheme = Theme.darkTheme - #endif - // Setup importing/updating library let gameImporter = GameImporter.shared let libraryUpdatesController = PVGameLibraryUpdatesController(gameImporter: gameImporter) @@ -112,20 +131,11 @@ final class PVAppDelegate: UIResponder, UIApplicationDelegate { } .subscribe().disposed(by: disposeBag) - #if os(iOS) || os(macOS) + _initUI() + guard let rootNavigation = window?.rootViewController as? UINavigationController else { fatalError("No root nav controller") } - #else - guard let tabBarController = window?.rootViewController as? UITabBarController, - let rootNavigation = tabBarController.viewControllers?[0] as? UINavigationController, - let splitVC = tabBarController.viewControllers?[2] as? PVTVSplitViewController, - let navVC = splitVC.viewControllers[1] as? UINavigationController, - let settingsVC = navVC.topViewController as? PVSettingsViewController else { - fatalError("Bad View Controller heiarchy") - } - settingsVC.conflictsController = libraryUpdatesController - #endif guard let gameLibraryViewController = rootNavigation.viewControllers.first as? PVGameLibraryViewController else { fatalError("No gameLibraryViewController") } @@ -138,20 +148,27 @@ final class PVAppDelegate: UIResponder, UIApplicationDelegate { let database = RomDatabase.sharedInstance database.refresh() - #if !targetEnvironment(macCatalyst) - SteamControllerManager.listenForConnections() + #if !targetEnvironment(macCatalyst) && canImport(SteamController) && !targetEnvironment(simulator) + // SteamController is build with STEAMCONTROLLER_NO_PRIVATE_API, so dont call this! ?? + // SteamControllerManager.listenForConnections() #endif #if os(iOS) if #available(iOS 11, *) { PVAltKitService.shared.start() } + + if #available(iOS 13, *) { + ApplicationMonitor.shared.start() + } #endif DispatchQueue.main.asyncAfter(deadline: .now() + 5, execute: { [unowned self] in self.startOptionalWebDavServer() }) + self.window!.makeKeyAndVisible() + return true } diff --git a/Provenance/Provenance-Bridging-Header.h b/Provenance/Provenance-Bridging-Header.h new file mode 100644 index 0000000000..449c3dbfa3 --- /dev/null +++ b/Provenance/Provenance-Bridging-Header.h @@ -0,0 +1,15 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// + +#if !TARGET_OS_TV + #import "Services/PVAltKitService.h" +#endif + +#import "PVAvailability.h" +#import "PVLogViewController.h" +#import "PVGLViewController.h" +#import "PVMetalViewController.h" +#import "MBProgressHUD.h" +#import "PVWebServer.h" +#import "UIDevice+Hardware.h" diff --git a/Provenance/Provenance-Free.entitlements b/Provenance/Provenance-Free.entitlements index cb1854e1f7..08943ef87b 100644 --- a/Provenance/Provenance-Free.entitlements +++ b/Provenance/Provenance-Free.entitlements @@ -2,32 +2,8 @@ - com.apple.developer.icloud-container-identifiers - - iCloud.org.provenance-emu.provenance - - com.apple.developer.icloud-services - - CloudDocuments - com.apple.developer.kernel.extended-virtual-addressing - com.apple.developer.networking.multipath - - com.apple.developer.siri - - com.apple.developer.ubiquity-container-identifiers - - iCloud.org.provenance-emu.provenance - - com.apple.developer.ubiquity-kvstore-identifier - $(TeamIdentifierPrefix)$(CFBundleIdentifier) - com.apple.security.app-sandbox - - com.apple.security.application-groups - - group.org.provenance-emu - com.apple.security.cs.allow-dyld-environment-variables com.apple.security.cs.allow-jit @@ -38,22 +14,6 @@ com.apple.security.cs.disable-library-validation - com.apple.security.device.audio-input - - com.apple.security.device.bluetooth - - com.apple.security.device.camera - - com.apple.security.device.usb - - com.apple.security.files.downloads.read-only - - com.apple.security.files.user-selected.read-only - - com.apple.security.network.client - - com.apple.security.network.server - com.apple.security.personal-information.photos-library diff --git a/Provenance/Provenance-Info.plist b/Provenance/Provenance-Info.plist index f64ef1c0dc..beb0a0210f 100644 --- a/Provenance/Provenance-Info.plist +++ b/Provenance/Provenance-Info.plist @@ -4,6 +4,10 @@ ALTDeviceID + APP_GROUP_IDENTIFIER + $(APP_GROUP_IDENTIFIER) + CFBundleAllowMixedLocalizations + CFBundleDevelopmentRegion en CFBundleDisplayName @@ -45,6 +49,8 @@ CFBundleExecutable ${EXECUTABLE_NAME} + CFBundleGetInfoString + CFBundleIcons CFBundleIcons~ipad @@ -55,6 +61,7 @@ 6.0 CFBundleLocalizations + Spanish en zh_CN @@ -91,11 +98,11 @@ ProfileName - DirectionalGamepad + MicroGamepad ProfileName - MicroGamepad + DirectionalGamepad GCSupportsControllerUserInteraction @@ -170,6 +177,7 @@ bluetooth-central external-accessory fetch + location processing remote-notification @@ -177,8 +185,6 @@ UILaunchStoryboardName Default - UIMainStoryboardFile - Provenance UIPrerenderedIcon UIRequiredDeviceCapabilities @@ -205,6 +211,8 @@ UISupportsDocumentBrowser + UIUserInterfaceStyle + Dark UTExportedTypeDeclarations diff --git a/Provenance/Provenance-Prefix.pch b/Provenance/Provenance-Prefix.pch index 3c5b683352..2ae40cf90b 100644 --- a/Provenance/Provenance-Prefix.pch +++ b/Provenance/Provenance-Prefix.pch @@ -7,4 +7,5 @@ #ifdef __OBJC__ #import #import + #import #endif diff --git a/Provenance/Provenance.entitlements b/Provenance/Provenance.entitlements index cb1854e1f7..d4808a89be 100644 --- a/Provenance/Provenance.entitlements +++ b/Provenance/Provenance.entitlements @@ -4,7 +4,7 @@ com.apple.developer.icloud-container-identifiers - iCloud.org.provenance-emu.provenance + $(ICLOUD_CONTAINER_IDENTIFIER) com.apple.developer.icloud-services @@ -18,7 +18,7 @@ com.apple.developer.ubiquity-container-identifiers - iCloud.org.provenance-emu.provenance + $(ICLOUD_CONTAINER_IDENTIFIER) com.apple.developer.ubiquity-kvstore-identifier $(TeamIdentifierPrefix)$(CFBundleIdentifier) @@ -26,8 +26,10 @@ com.apple.security.application-groups - group.org.provenance-emu + $(APP_GROUP_IDENTIFIER) + com.apple.security.assets.pictures.read-only + com.apple.security.cs.allow-dyld-environment-variables com.apple.security.cs.allow-jit diff --git a/Provenance/Resources/createVersionHeader.sh b/Provenance/Resources/createVersionHeader.sh index 00a30f053b..281e9b1640 100755 --- a/Provenance/Resources/createVersionHeader.sh +++ b/Provenance/Resources/createVersionHeader.sh @@ -134,6 +134,12 @@ static NSString* const kGITTag = @"${GIT_TAG}"; static NSString* const kGITDate = @"${GIT_DATE}"; static NSString* const kGITBranch = @"${GIT_BRANCH}"; static NSString* const kAppBuildConfiguration = @"${CONFIGURATION}"; +static NSString* const kOrgIdentifier = @"${ORG_IDENTIFIER}"; +static NSString* const kOrgPrefix = @"${ORG_PREFIX}"; +static NSString* const kProductBundleIdentifier = @"${PRODUCT_BUNDLE_IDENTIFIER}"; +static NSString* const kAppGroupIdentifier = @"${APP_GROUP_IDENTIFIER}"; +static NSString* const kiCloudContainerIdenfitier = @"${ICLOUD_CONTAINER_IDENTIFIER}"; +static NSString* const kUbiquityIdentityTokenKey = @"${PRODUCT_BUNDLE_IDENTIFIER}.UbiquityIdentityToken"; // Suppress warnings incase you choose not to use these variables #pragma GCC diagnostic push @@ -146,6 +152,13 @@ static const char* gitbranch = "${GIT_BRANCH}"; static const char* appversion = "${appversion}"; static const char* buildconfiguration = "${CONFIGURATION}"; static const char* builtByUser = "${USER}"; +static const char* kOrgIdentifier = "${ORG_IDENTIFIER}"; +static const char* kOrgPrefix = "${ORG_PREFIX}"; +static const char* kProductBundleIdentifier = "${PRODUCT_BUNDLE_IDENTIFIER}"; +static const char* kAppGroupIdentifier = "${APP_GROUP_IDENTIFIER}"; +static const char* kiCloudContainerIdenfitier = "${ICLOUD_CONTAINER_IDENTIFIER}"; +static const char* kUbiquityIdentityTokenKey = "${PRODUCT_BUNDLE_IDENTIFIER}.UbiquityIdentityToken"; + // static const char* compiletime = __TIME__; // static const char* compiledate = __DATE__; @@ -187,6 +200,13 @@ public let gitbranch = "${GIT_BRANCH}" public let appversion = "${appversion}" public let buildconfiguration = "${CONFIGURATION}" public let builtByUser = "${USER}" +public let kOrgIdentifier = "${ORG_IDENTIFIER}" +public let kOrgPrefix = "${ORG_PREFIX}" +public let kProductBundleIdentifier = "${PRODUCT_BUNDLE_IDENTIFIER}" +public let kAppGroupIdentifier = "${APP_GROUP_IDENTIFIER}" +public let kiCloudContainerIdenfitier = "${ICLOUD_CONTAINER_IDENTIFIER}" +public let kUbiquityIdentityTokenKey = "${PRODUCT_BUNDLE_IDENTIFIER}.UbiquityIdentityToken" + // public let compiletime = __TIME__ // public let compiledate = __DATE__ diff --git a/Provenance/Resources/en.lproj/Strings.strings b/Provenance/Resources/en.lproj/Strings.strings index 851301998f..153340c378 100644 --- a/Provenance/Resources/en.lproj/Strings.strings +++ b/Provenance/Resources/en.lproj/Strings.strings @@ -8,3 +8,70 @@ /* Loading and item */ "Loading" = "Loading"; + +"App" = "App"; +"Core Options" = "Core Options"; +"Auto Save" = "Auto Save"; +"Timed Auto Saves" = "Timed Auto Saves"; +"Auto Load Saves" = "Auto Load Saves"; +"Ask to Load Saves" = "Ask to Load Saves"; +"Opacity" = "Opacity"; +"Saves" = "Saves"; +"Video Options" = "Video Options"; + +"Button Colors" = "Button Colors"; + +"All-Right Shoulders" = "All-Right Shoulders"; + +"Haptic Feedback" = "Haptic Feedback"; + +"Enable 8BitDo M30 Mapping" = "Enable 8BitDo M30 Mapping"; + +"Controllers" = "Controllers"; +"Controller" = "Controller"; + +"iCade Controller" = "iCade Controller"; + +"Appearance" = "Appearance"; + +"Build" = "Build"; + +"Mode" = "Mode"; + +"Git Revision" = "Git Revision"; +"Build Data" = "Build Data"; +"Builder" = "Builder"; +"Bundle ID" = "Bundle ID"; +"Unknown" = "Unknown"; +"Cores" = "Cores"; +"Licenses" = "Licenses"; +"Logs" = "Logs"; +"Systems" = "Systems"; +"Volume HUD" = "Volume HUD"; +"Native Scale" = "Native Scale"; +"Integer Scaling" = "Integer Scaling"; +"CRT Filter" = "CRT Filter"; +"Image Smoothing" = "Image Smoothing"; +"FPS Counter" = "FPS Counter"; +"Missing Buttons Always On-Screen" = "Missing Buttons Always On-Screen"; +"iCloud Sync" = "iCloud Sync"; +"Use Metal" = "Use Metal"; +"Multi-threaded GL" = "Multi-threaded GL"; +"4X Multisampling GL" = "4X Multisampling GL"; +"Disable Auto Lock" = "Disable Auto Lock"; +"Launch Web Server" = "Launch Web Server"; +"Game Library" = "Game Library"; +"Refresh Game Library" = "Refresh Game Library"; +"Empty Image Cache" = "Empty Image Cache"; +"Manage Conflicts" = "Manage Conflicts"; +"Beta Features" = "Beta Features"; +"Unknown" = "Unknown"; +"Version" = "Version"; +"Build Information" = "Build Information"; +"3rd Party & Legal" = "3rd Party & Legal"; +"Debug" = "Debug"; +"No" = "No"; +"Empty Image Cache?" = "Empty Image Cache?"; +"Yes" = "Yes"; +"Acknowledgements" = "Acknowledgements"; +"Database Error" = "Database Error"; diff --git a/Provenance/Resources/es.lproj/Strings.strings b/Provenance/Resources/es.lproj/Strings.strings new file mode 100644 index 0000000000..2669908740 --- /dev/null +++ b/Provenance/Resources/es.lproj/Strings.strings @@ -0,0 +1,77 @@ +/* + Strings.strings + Provenance + + Created by Joseph Mattiello on 8/16/21. + Copyright © 2021 Provenance Emu. All rights reserved. +*/ + +/* Loading and item */ +"Loading" = "Cargando"; + +"App" = "Aplicación"; +"Core Options" = "Opciones de nucleos"; +"Auto Save" = "Guardado automático"; +"Timed Auto Saves" = "Guardados automáticos programados"; +"Auto Load Saves" = "Carga de partida automática"; +"Ask to Load Saves" = "Preguntar para cargar partida"; +"Opacity" = "Opacidad"; +"Saves" = "Partidas guardadas"; +"Video Options" = "Opciones de vídeo"; + +"Button Colors" = "Colores de los botones"; + +"All-Right Shoulders" = "Mueve L1, L2 y Z al lado derecho"; + +"Haptic Feedback" = "Retroalimentación háptica"; + +"Enable 8BitDo M30 Mapping" = "Habilitar mapeado 8BitDo M30"; + +"Controllers" = "Mandos"; +"Controller" = "Mando"; + +"iCade Controller" = "Mando iCade"; + +"Appearance" = "Apariencia"; + +"Build" = "Construcción"; + +"Mode" = "Modo"; + +"Git Revision" = "Revisión Git"; +"Build Data" = "Fecha de construcción"; +"Builder" = "Constructor"; +"Bundle ID" = "ID de paquete"; +"Unknown" = "Desconocido"; +"Cores" = "Núcleos"; +"Licenses" = "Licencias"; +"Logs" = "Registros"; +"Systems" = "Sistemas"; +"Volume HUD" = "Volumen HUD"; +"Native Scale" = "Escala nativa"; +"Integer Scaling" = "Escalado de enteros"; +"CRT Filter" = "Filtro CRT"; +"Image Smoothing" = "Suavizado de imagen"; +"FPS Counter" = "Contador de FPS"; +"Missing Buttons Always On-Screen" = "Botones faltantes siempre en pantalla"; +"iCloud Sync" = "Sincronización de iCloud"; +"Use Metal" = "Usar Metal"; +"Multi-threaded GL" = "GL de subprocesos múltiples"; +"4X Multisampling GL" = "GL multimuestreo 4X"; +"Disable Auto Lock" = "Desactivar bloqueo automático"; +"Launch Web Server" = "Iniciar servidor web"; +"Game Library" = "Biblioteca de juegos"; +"Refresh Game Library" = "Actualizar biblioteca de juegos"; +"Empty Image Cache" = "Caché de imagen vacía"; +"Manage Conflicts" = "Administrar conflictos"; +"Beta Features" = "Funciones beta"; +"Unknown" = "Desconocido"; +"Version" = "Versión"; +"Build Information" = "Información de compilación"; +"3rd Party & Legal" = "Terceros y legales"; +"Debug" = "Depurar"; +"No" = "No"; +"Empty Image Cache?" = "¿Vaciar cache de imagen?"; +"Yes" = "Sí"; +"Acknowledgements" = "Agradecimientos"; +"Database Error" = "Error de la base de datos"; diff --git a/Provenance/Resources/it.lproj/Strings.strings b/Provenance/Resources/it.lproj/Strings.strings new file mode 100644 index 0000000000..153340c378 --- /dev/null +++ b/Provenance/Resources/it.lproj/Strings.strings @@ -0,0 +1,77 @@ +/* + Strings.strings + Provenance + + Created by Joseph Mattiello on 8/16/21. + Copyright © 2021 Provenance Emu. All rights reserved. +*/ + +/* Loading and item */ +"Loading" = "Loading"; + +"App" = "App"; +"Core Options" = "Core Options"; +"Auto Save" = "Auto Save"; +"Timed Auto Saves" = "Timed Auto Saves"; +"Auto Load Saves" = "Auto Load Saves"; +"Ask to Load Saves" = "Ask to Load Saves"; +"Opacity" = "Opacity"; +"Saves" = "Saves"; +"Video Options" = "Video Options"; + +"Button Colors" = "Button Colors"; + +"All-Right Shoulders" = "All-Right Shoulders"; + +"Haptic Feedback" = "Haptic Feedback"; + +"Enable 8BitDo M30 Mapping" = "Enable 8BitDo M30 Mapping"; + +"Controllers" = "Controllers"; +"Controller" = "Controller"; + +"iCade Controller" = "iCade Controller"; + +"Appearance" = "Appearance"; + +"Build" = "Build"; + +"Mode" = "Mode"; + +"Git Revision" = "Git Revision"; +"Build Data" = "Build Data"; +"Builder" = "Builder"; +"Bundle ID" = "Bundle ID"; +"Unknown" = "Unknown"; +"Cores" = "Cores"; +"Licenses" = "Licenses"; +"Logs" = "Logs"; +"Systems" = "Systems"; +"Volume HUD" = "Volume HUD"; +"Native Scale" = "Native Scale"; +"Integer Scaling" = "Integer Scaling"; +"CRT Filter" = "CRT Filter"; +"Image Smoothing" = "Image Smoothing"; +"FPS Counter" = "FPS Counter"; +"Missing Buttons Always On-Screen" = "Missing Buttons Always On-Screen"; +"iCloud Sync" = "iCloud Sync"; +"Use Metal" = "Use Metal"; +"Multi-threaded GL" = "Multi-threaded GL"; +"4X Multisampling GL" = "4X Multisampling GL"; +"Disable Auto Lock" = "Disable Auto Lock"; +"Launch Web Server" = "Launch Web Server"; +"Game Library" = "Game Library"; +"Refresh Game Library" = "Refresh Game Library"; +"Empty Image Cache" = "Empty Image Cache"; +"Manage Conflicts" = "Manage Conflicts"; +"Beta Features" = "Beta Features"; +"Unknown" = "Unknown"; +"Version" = "Version"; +"Build Information" = "Build Information"; +"3rd Party & Legal" = "3rd Party & Legal"; +"Debug" = "Debug"; +"No" = "No"; +"Empty Image Cache?" = "Empty Image Cache?"; +"Yes" = "Yes"; +"Acknowledgements" = "Acknowledgements"; +"Database Error" = "Database Error"; diff --git a/Provenance/Resources/ja.lproj/Strings.strings b/Provenance/Resources/ja.lproj/Strings.strings new file mode 100644 index 0000000000..153340c378 --- /dev/null +++ b/Provenance/Resources/ja.lproj/Strings.strings @@ -0,0 +1,77 @@ +/* + Strings.strings + Provenance + + Created by Joseph Mattiello on 8/16/21. + Copyright © 2021 Provenance Emu. All rights reserved. +*/ + +/* Loading and item */ +"Loading" = "Loading"; + +"App" = "App"; +"Core Options" = "Core Options"; +"Auto Save" = "Auto Save"; +"Timed Auto Saves" = "Timed Auto Saves"; +"Auto Load Saves" = "Auto Load Saves"; +"Ask to Load Saves" = "Ask to Load Saves"; +"Opacity" = "Opacity"; +"Saves" = "Saves"; +"Video Options" = "Video Options"; + +"Button Colors" = "Button Colors"; + +"All-Right Shoulders" = "All-Right Shoulders"; + +"Haptic Feedback" = "Haptic Feedback"; + +"Enable 8BitDo M30 Mapping" = "Enable 8BitDo M30 Mapping"; + +"Controllers" = "Controllers"; +"Controller" = "Controller"; + +"iCade Controller" = "iCade Controller"; + +"Appearance" = "Appearance"; + +"Build" = "Build"; + +"Mode" = "Mode"; + +"Git Revision" = "Git Revision"; +"Build Data" = "Build Data"; +"Builder" = "Builder"; +"Bundle ID" = "Bundle ID"; +"Unknown" = "Unknown"; +"Cores" = "Cores"; +"Licenses" = "Licenses"; +"Logs" = "Logs"; +"Systems" = "Systems"; +"Volume HUD" = "Volume HUD"; +"Native Scale" = "Native Scale"; +"Integer Scaling" = "Integer Scaling"; +"CRT Filter" = "CRT Filter"; +"Image Smoothing" = "Image Smoothing"; +"FPS Counter" = "FPS Counter"; +"Missing Buttons Always On-Screen" = "Missing Buttons Always On-Screen"; +"iCloud Sync" = "iCloud Sync"; +"Use Metal" = "Use Metal"; +"Multi-threaded GL" = "Multi-threaded GL"; +"4X Multisampling GL" = "4X Multisampling GL"; +"Disable Auto Lock" = "Disable Auto Lock"; +"Launch Web Server" = "Launch Web Server"; +"Game Library" = "Game Library"; +"Refresh Game Library" = "Refresh Game Library"; +"Empty Image Cache" = "Empty Image Cache"; +"Manage Conflicts" = "Manage Conflicts"; +"Beta Features" = "Beta Features"; +"Unknown" = "Unknown"; +"Version" = "Version"; +"Build Information" = "Build Information"; +"3rd Party & Legal" = "3rd Party & Legal"; +"Debug" = "Debug"; +"No" = "No"; +"Empty Image Cache?" = "Empty Image Cache?"; +"Yes" = "Yes"; +"Acknowledgements" = "Acknowledgements"; +"Database Error" = "Database Error"; diff --git a/Provenance/Resources/nl.lproj/Strings.strings b/Provenance/Resources/nl.lproj/Strings.strings new file mode 100644 index 0000000000..4b1cabbfc3 --- /dev/null +++ b/Provenance/Resources/nl.lproj/Strings.strings @@ -0,0 +1,77 @@ +/* + Strings.strings + Provenance + + Created by Joseph Mattiello on 8/16/21. + Copyright © 2021 Provenance Emu. All rights reserved. +*/ + +/* Loading and item */ +"Loading" = "Bezig met Laden"; + +"App" = "App"; +"Core Options" = "Core Opties"; +"Auto Save" = "Automatisch Opslaan"; +"Timed Auto Saves" = "Getimed Automatisch Saven"; +"Auto Load Saves" = "Automatisch Laden Opgeslagen Saves"; +"Ask to Load Saves" = "Vragen om Saves te Laden"; +"Opacity" = "Transparantie"; +"Saves" = "Saves"; +"Video Options" = "Video Opties"; + +"Button Colors" = "Knop Kleuren"; + +"All-Right Shoulders" = "All-Rechts Schouder"; + +"Haptic Feedback" = "Haptic Feedback"; + +"Enable 8BitDo M30 Mapping" = "8BitDo M30 Mapping Inschakelen"; + +"Controllers" = "Controllers"; +"Controller" = "Controller"; + +"iCade Controller" = "iCade Controller"; + +"Appearance" = "Uiterlijk"; + +"Build" = "Build"; + +"Mode" = "Mode"; + +"Git Revision" = "Git Revisie"; +"Build Data" = "Build Data"; +"Builder" = "Builder"; +"Bundle ID" = "Bundle ID"; +"Unknown" = "Onbekend"; +"Cores" = "Cores"; +"Licenses" = "Licenties"; +"Logs" = "Logs"; +"Systems" = "Systemen"; +"Volume HUD" = "Geluidsvolume HUD"; +"Native Scale" = "Native Grote"; +"Integer Scaling" = "Geheel Getal Schaleren"; +"CRT Filter" = "CRT Filter"; +"Image Smoothing" = "Afbeelding Gladmaken"; +"FPS Counter" = "FPS Teller"; +"Missing Buttons Always On-Screen" = "Vermiste Knoppen altijd In-Beeld"; +"iCloud Sync" = "iCloud Sync"; +"Use Metal" = "Gebruik Metal"; +"Multi-threaded GL" = "Multi-threaded GL"; +"4X Multisampling GL" = "4X Multisampling GL"; +"Disable Auto Lock" = "Uitzetten Automatisch Vergrendelen"; +"Launch Web Server" = "Start de Web Server"; +"Game Library" = "Spel Bibliotheek"; +"Refresh Game Library" = "Ververs Spel Bibliotheek"; +"Empty Image Cache" = "Leeg Afbeelding Cache"; +"Manage Conflicts" = "Conflicten Beheren"; +"Beta Features" = "Beta Opties"; +"Unknown" = "Onbekend"; +"Version" = "Versie"; +"Build Information" = "Build Informatie"; +"3rd Party & Legal" = "3de Partij en Legaal"; +"Debug" = "Debug"; +"No" = "Nee"; +"Empty Image Cache?" = "Leeg Afbeelding Cache?"; +"Yes" = "Ja"; +"Acknowledgements" = "Dankbetuigingen"; +"Database Error" = "Database Fout"; diff --git a/Provenance/Resources/pt-BR.lproj/Strings.strings b/Provenance/Resources/pt-BR.lproj/Strings.strings new file mode 100644 index 0000000000..27aa9e7875 --- /dev/null +++ b/Provenance/Resources/pt-BR.lproj/Strings.strings @@ -0,0 +1,71 @@ +/* + + Strings.strings + + Provenance + + Created by Joseph Mattiello on 8/16/21. + + Copyright © 2021 Provenance Emu. All rights reserved. + + Translated by Stéfano Santos on 2/11/22 - Portuguese (Brazil) (PT-BR) +*/ + +/* Loading and item */ +"Loading" = "Carregando"; +"App" = "App"; +"Core Options" = "Opções de emulador/núcleo"; +"Auto Save" = "Salvar automaticamente"; +"Timed Auto Saves" = "Salvamentos automáticos cronometrados"; +"Auto Load Saves" = "Carregar automaticamente os salvamentos"; +"Ask to Load Saves" = "Perguntar antes de carregar os salvamentos"; +"Opacity" = "Opacidade"; +"Saves" = "Salvamentos (Saves)"; +"Video Options" = "Opções de Vídeo"; +"Button Colors" = "Cores dos botões"; +"All-Right Shoulders" = "All-Right Shoulders"; +"Haptic Feedback" = "Resposta tátil"; +"Enable 8BitDo M30 Mapping" = "Habilitar mapeamento 8BitDo M30"; +"Controllers" = "Controles"; +"Controller" = "Controle"; +"iCade Controller" = "Controle iCade"; +"Appearance" = "Aparência"; +"Build" = "Compilação"; +"Mode" = "Modo"; +"Git Revision" = "Revisão Git"; +"Build Data" = "Data de compilação"; +"Builder" = "Builder"; +"Bundle ID" = "Bundle ID"; +"Unknown" = "Desconhecido"; +"Cores" = "Emuladores/núcleos"; +"Licenses" = "Licenças"; +"Logs" = "Logs"; +"Systems" = "Sistemas"; +"Volume HUD" = "Volume HUD"; +"Native Scale" = "Escala nativa"; +"Integer Scaling" = "Escala de números inteiros"; +"CRT Filter" = "Filtro CRT"; +"Image Smoothing" = "Suavização de imagem"; +"FPS Counter" = "Contador de FPS"; +"Missing Buttons Always On-Screen" = "Botões ausentes sempre na tela"; +"iCloud Sync" = "Sincronização iCloud"; +"Use Metal" = "Usar Metal"; +"Multi-threaded GL" = "Multi-threaded GL"; +"4X Multisampling GL" = "4X Multisampling GL"; +"Disable Auto Lock" = "Desativar bloqueio automático"; +"Launch Web Server" = "Iniciar servidor web"; +"Game Library" = "Biblioteca de jogos"; +"Refresh Game Library" = "Recarregar biblioteca de jogos"; +"Empty Image Cache" = "Limpar imagens baixadas (cache)"; +"Manage Conflicts" = "Gerenciar conflitos"; +"Beta Features" = "Funcionalidades Beta"; +"Unknown" = "Desconhecido"; +"Version" = "Versão"; +"Build Information" = "Informação de compilação"; +"3rd Party & Legal" = "Terceiros e Jurídico"; +"Debug" = "Debug"; +"No" = "Não"; +"Empty Image Cache?" = "Limpar imagens baixadas (cache)?"; +"Yes" = "Sim"; +"Acknowledgements" = "Reconhecimentos"; +"Database Error" = "Erro de banco de dados"; diff --git a/Provenance/Resources/ru.lproj/Strings.strings b/Provenance/Resources/ru.lproj/Strings.strings new file mode 100644 index 0000000000..1780e6c570 --- /dev/null +++ b/Provenance/Resources/ru.lproj/Strings.strings @@ -0,0 +1,79 @@ +/* + Strings.strings + Provenance + + Created by Joseph Mattiello on 8/16/21. + Copyright © 2021 Provenance Emu. All rights reserved. + + Translated by Arthur Moore on 2/09/22 - Russian +*/ + +/* Loading and item */ +"Loading" = "Загружается"; + +"App" = "Приложение"; +"Core Options" = "Настройки ядра"; +"Auto Save" = "Авто сохранение"; +"Timed Auto Saves" = "Авто сохранение по расписанию"; +"Auto Load Saves" = "Автоматически загружать сохраненные игры"; +"Ask to Load Saves" = "Запрашивать подтверждения загрузки сохраненной игры"; +"Opacity" = "Прозрачность"; +"Saves" = "Сохранённые игры"; +"Video Options" = "Настройки видео"; + +"Button Colors" = "Цвета кнопок"; + +"All-Right Shoulders" = "All-Right Shoulders"; + +"Haptic Feedback" = "Тактильный отклик"; + +"Enable 8BitDo M30 Mapping" = "Включить мапирование 8BitDo M30"; + +"Controllers" = "Геймпады"; +"Controller" = "Геймпад"; + +"iCade Controller" = "Геймпад iCade"; + +"Appearance" = "Внешний вид"; + +"Build" = "Сборка"; + +"Mode" = "Режим"; + +"Git Revision" = "Git Revision"; +"Build Data" = "Данные сборки"; +"Builder" = "Компайлер"; +"Bundle ID" = "ID пакета"; +"Unknown" = "Неизвестный"; +"Cores" = "Ядра"; +"Licenses" = "Лицензии"; +"Logs" = "Логи"; +"Systems" = "Системы"; +"Volume HUD" = "Объем HUD"; +"Native Scale" = "Оригинальное масштабирование"; +"Integer Scaling" = "Целочисленное масштабирование"; +"CRT Filter" = "Фильтр ЭЛТ"; +"Image Smoothing" = "Сглаживание изображения"; +"FPS Counter" = "Счетчик FPS"; +"Missing Buttons Always On-Screen" = "Отсутсвующие кнопки всегда на экране"; +"iCloud Sync" = "Синхронизация с iCloud"; +"Use Metal" = "Использовать Metal"; +"Multi-threaded GL" = "Многопоточный GL"; +"4X Multisampling GL" = "4X мультисэмплинг GL"; +"Disable Auto Lock" = "Отключить авто блокировку"; +"Launch Web Server" = "Запустить веб сервер"; +"Game Library" = "Библиотека Игр"; +"Refresh Game Library" = "Обновить библиотеку игр"; +"Empty Image Cache" = "Очистить Image Cache"; +"Manage Conflicts" = "Регулировать конфликты"; +"Beta Features" = "Бета функции"; +"Unknown" = "Неизвестный"; +"Version" = "Версия"; +"Build Information" = "Информация о сборке"; +"3rd Party & Legal" = "Третьи стороны и юридические лица"; +"Debug" = "Дебаггер"; +"No" = "Нет"; +"Empty Image Cache?" = "Очистить Image Cache?"; +"Yes" = "Да"; +"Acknowledgements" = "Благодарности"; +"Database Error" = "Ошибка датабазы"; diff --git a/Provenance/Services/ApplicationMonitor.swift b/Provenance/Services/ApplicationMonitor.swift new file mode 100644 index 0000000000..334951ea48 --- /dev/null +++ b/Provenance/Services/ApplicationMonitor.swift @@ -0,0 +1,112 @@ +// +// ApplicationMonitor.swift +// Clip +// +// Created by Riley Testut on 6/27/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import UIKit +import AVFoundation +import UserNotifications +import Combine + + +private enum UserNotification: String +{ + case appStoppedRunning = "org.provenance-emu.provenance.AppStoppedRunning" +} + +private extension CFNotificationName +{ + static let altstoreRequestAppState: CFNotificationName = CFNotificationName("com.altstore.RequestAppState.org.provenance-emu.provenance" as CFString) + static let altstoreAppIsRunning: CFNotificationName = CFNotificationName("com.altstore.AppState.Running.org.provenance-emu.provenance" as CFString) +} + +@available(iOS 13.0, *) +private let ReceivedApplicationState: @convention(c) (CFNotificationCenter?, UnsafeMutableRawPointer?, CFNotificationName?, UnsafeRawPointer?, CFDictionary?) -> Void = +{ (center, observer, name, object, userInfo) in + ApplicationMonitor.shared.receivedApplicationStateRequest() +} + +@available(iOS 13.0, *) +class ApplicationMonitor +{ + static let shared = ApplicationMonitor() + + let locationManager = LocationManager() + + private(set) var isMonitoring = false + + private var backgroundTaskID: UIBackgroundTaskIdentifier? +} + +@available(iOS 13.0, *) +extension ApplicationMonitor +{ + func start() + { + guard !self.isMonitoring else { return } + self.isMonitoring = true + + self.cancelApplicationQuitNotification() // Cancel any notifications from a previous launch. + self.scheduleApplicationQuitNotification() + } +} + +@available(iOS 13.0, *) +private extension ApplicationMonitor +{ + func registerForNotifications() + { + let center = CFNotificationCenterGetDarwinNotifyCenter() + CFNotificationCenterAddObserver(center, nil, ReceivedApplicationState, CFNotificationName.altstoreRequestAppState.rawValue, nil, .deliverImmediately) + } + + func scheduleApplicationQuitNotification() + { + let delay = 5 as TimeInterval + + let content = UNMutableNotificationContent() + content.title = NSLocalizedString("App Stopped Running", comment: "") + content.body = NSLocalizedString("Tap this notification to resume monitoring for AltStore.", comment: "") + + let trigger = UNTimeIntervalNotificationTrigger(timeInterval: delay + 1, repeats: false) + + let request = UNNotificationRequest(identifier: UserNotification.appStoppedRunning.rawValue, content: content, trigger: trigger) + UNUserNotificationCenter.current().add(request) + + DispatchQueue.global().asyncAfter(deadline: .now() + delay) { + // If app is still running at this point, we schedule another notification with same identifier. + // This prevents the currently scheduled notification from displaying, and starts another countdown timer. + self.scheduleApplicationQuitNotification() + } + } + + func cancelApplicationQuitNotification() + { + UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [UserNotification.appStoppedRunning.rawValue]) + } + + func sendNotification(title: String, message: String) + { + let content = UNMutableNotificationContent() + content.title = title + content.body = message + + let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: nil) + UNUserNotificationCenter.current().add(request) + } +} + +@available(iOS 13.0, *) +private extension ApplicationMonitor +{ + func receivedApplicationStateRequest() + { + guard UIApplication.shared.applicationState != .background else { return } + + let center = CFNotificationCenterGetDarwinNotifyCenter() + CFNotificationCenterPostNotification(center!, CFNotificationName(CFNotificationName.altstoreAppIsRunning.rawValue), nil, nil, true) + } +} diff --git a/Provenance/Services/LocationManager.swift b/Provenance/Services/LocationManager.swift new file mode 100644 index 0000000000..e398d1f341 --- /dev/null +++ b/Provenance/Services/LocationManager.swift @@ -0,0 +1,163 @@ +// +// LocationManager.swift +// Clip +// +// Created by Riley Testut on 11/6/20. +// Copyright © 2020 Riley Testut. All rights reserved. +// + +import CoreLocation +import Combine +import UIKit + +@available(iOS 13.0, *) +extension LocationManager +{ + typealias Status = Swift.Result + + enum Error: LocalizedError, RecoverableError + { + case requiresAlwaysAuthorization + + var failureReason: String? { + switch self + { + case .requiresAlwaysAuthorization: return NSLocalizedString("Provenance requires “Always” location permission.", comment: "") + } + } + + var recoverySuggestion: String? { + switch self + { + case .requiresAlwaysAuthorization: return NSLocalizedString("Please grant Provenance “Always” location permission in Settings so it can run in the background indefinitely.", comment: "") + } + } + + var recoveryOptions: [String] { + switch self + { + case .requiresAlwaysAuthorization: return [NSLocalizedString("Open Settings", comment: "")] + } + } + + func attemptRecovery(optionIndex recoveryOptionIndex: Int) -> Bool + { + return false + } + + func attemptRecovery(optionIndex recoveryOptionIndex: Int, resultHandler handler: @escaping (Bool) -> Void) + { + switch self + { + case .requiresAlwaysAuthorization: + let openURL = URL(string: UIApplication.openSettingsURLString)! + UIApplication.shared.open(openURL, options: [:], completionHandler: handler) + } + } + } +} + +@available(iOS 13.0, *) +class LocationManager: NSObject, ObservableObject +{ + @PublishedPipeline({ removeDuplicatesPipeline($0) }) + var status: Status? = nil + + private let locationManager: CLLocationManager + + override init() + { + self.locationManager = CLLocationManager() + self.locationManager.distanceFilter = CLLocationDistanceMax + self.locationManager.pausesLocationUpdatesAutomatically = false + self.locationManager.allowsBackgroundLocationUpdates = true + + if #available(iOS 14.0, *) + { + self.locationManager.desiredAccuracy = kCLLocationAccuracyReduced + } + else + { + self.locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers + } + + super.init() + + self.locationManager.delegate = self + } + + func start() + { + switch self.status + { + case .success: return + case .failure, nil: break + } + + if CLLocationManager.authorizationStatus() == .notDetermined || CLLocationManager.authorizationStatus() == .authorizedWhenInUse + { + self.locationManager.requestAlwaysAuthorization() + return + } + + self.locationManager.startUpdatingLocation() + } + + func stop() + { + self.locationManager.stopUpdatingLocation() + self.status = nil + } +} + +@available(iOS 13.0, *) +private extension LocationManager +{ + static func removeDuplicatesPipeline(_ publisher: T) -> AnyPublisher + where T.Output == Status?, T.Failure == Never + { + return publisher + .removeDuplicates { (a, b) in + switch (a, b) + { + case (nil, nil), (.success(()), .success(())): return true + case (.failure(let errorA as NSError), .failure(let errorB as NSError)): return errorA.domain == errorB.domain && errorA.code == errorB.code + case (nil, _), (.success, _), (.failure, _): return false + } + } + .eraseToAnyPublisher() + } +} + +@available(iOS 13.0, *) +extension LocationManager: CLLocationManagerDelegate +{ + func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) + { + switch status + { + case .notDetermined: break + case .restricted, .denied, .authorizedWhenInUse: self.status = .failure(Error.requiresAlwaysAuthorization) + case .authorizedAlways: self.start() + @unknown default: break + } + } + + func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) + { + self.status = .success(()) + } + + func locationManager(_ manager: CLLocationManager, didFailWithError error: Swift.Error) + { + if let error = error as? CLError + { + guard error.code != .denied else { + self.status = .failure(Error.requiresAlwaysAuthorization) + return + } + } + + self.status = .failure(error) + } +} diff --git a/Provenance/Services/PVAltKitService.h b/Provenance/Services/PVAltKitService.h index ded56baa04..b36fe20acb 100644 --- a/Provenance/Services/PVAltKitService.h +++ b/Provenance/Services/PVAltKitService.h @@ -6,7 +6,7 @@ // Copyright © 2021 Provenance Emu. All rights reserved. // -#import +@import Foundation; NS_ASSUME_NONNULL_BEGIN diff --git a/Provenance/Services/PVAltKitService.m b/Provenance/Services/PVAltKitService.m index 49b68aaf72..9df8d76297 100644 --- a/Provenance/Services/PVAltKitService.m +++ b/Provenance/Services/PVAltKitService.m @@ -22,6 +22,7 @@ + (instancetype)sharedInstance { } - (void)start { +#if !DEBUG && !TARGET_IPHONE_SIMULATOR if (@available(iOS 11, tvOS 11, *)) { [[ALTServerManager sharedManager] startDiscovering]; @@ -45,6 +46,7 @@ - (void)start { }]; }]; } +#endif } @end diff --git a/Provenance/Services/PublishedPipeline.swift b/Provenance/Services/PublishedPipeline.swift new file mode 100644 index 0000000000..0356516756 --- /dev/null +++ b/Provenance/Services/PublishedPipeline.swift @@ -0,0 +1,29 @@ +// +// PublishedPipeline.swift +// Clip +// +// Created by Riley Testut on 12/4/20. +// Copyright © 2020 Riley Testut. All rights reserved. +// + +import Combine + +@available(iOS 13.0, *) +@propertyWrapper +class PublishedPipeline +{ + @Published + var wrappedValue: Value + + var projectedValue: AnyPublisher { + return self.pipeline(self.$wrappedValue.eraseToAnyPublisher()).eraseToAnyPublisher() + } + + private let pipeline: (AnyPublisher) -> Pipeline + + init(wrappedValue: Value, _ pipeline: @escaping (AnyPublisher) -> Pipeline) + { + self.wrappedValue = wrappedValue + self.pipeline = pipeline + } +} diff --git a/Provenance/Services/Result+Conveniences.swift b/Provenance/Services/Result+Conveniences.swift new file mode 100644 index 0000000000..ffe083c456 --- /dev/null +++ b/Provenance/Services/Result+Conveniences.swift @@ -0,0 +1,77 @@ +// +// Result+Conveniences.swift +// AltStore +// +// Created by Riley Testut on 5/22/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import Foundation +import Combine + +public extension Swift.Result +{ + var value: Success? { + switch self + { + case .success(let value): return value + case .failure: return nil + } + } + + var error: Failure? { + switch self + { + case .success: return nil + case .failure(let error): return error + } + } + + init(_ value: Success?, _ error: Failure?) + { + switch (value, error) + { + case (let value?, _): self = .success(value) + case (_, let error?): self = .failure(error) + case (nil, nil): preconditionFailure("Either value or error must be non-nil") + } + } +} + +public extension Swift.Result where Success == Void +{ + init(_ success: Bool, _ error: Failure?) + { + if success + { + self = .success(()) + } + else if let error = error + { + self = .failure(error) + } + else + { + preconditionFailure("Error must be non-nil if success is false") + } + } +} + +public extension Swift.Result +{ + init(_ values: (T?, U?), _ error: Failure?) where Success == (T, U) + { + if let value1 = values.0, let value2 = values.1 + { + self = .success((value1, value2)) + } + else if let error = error + { + self = .failure(error) + } + else + { + preconditionFailure("Error must be non-nil if either provided values are nil") + } + } +} diff --git a/Provenance/Settings/PVCoresTableViewContorller.swift b/Provenance/Settings/PVCoresTableViewContorller.swift index 964a81c51f..ebb8cad8d8 100644 --- a/Provenance/Settings/PVCoresTableViewContorller.swift +++ b/Provenance/Settings/PVCoresTableViewContorller.swift @@ -17,11 +17,11 @@ final class PVCoresTableViewController: QuickTableViewController { let cores = RomDatabase.sharedInstance.all(PVCore.self, sortedByKeyPath: #keyPath(PVCore.projectName)) #if os(tvOS) - splitViewController?.title = "Cores" + splitViewController?.title = NSLocalizedString("Cores", comment: "") #endif tableContents = [ - Section(title: "Cores", rows: cores.map { core in + Section(title: NSLocalizedString("Cores", comment: ""), rows: cores.map { core in let systemsText = core.supportedSystems.map({ $0.shortName }).joined(separator: ", ") let detailLabelText = "\(core.projectVersion) : \(systemsText)" diff --git a/Provenance/Settings/PVLicensesViewController.swift b/Provenance/Settings/PVLicensesViewController.swift index f768da1e25..e99940ce5f 100644 --- a/Provenance/Settings/PVLicensesViewController.swift +++ b/Provenance/Settings/PVLicensesViewController.swift @@ -19,7 +19,7 @@ final class PVLicensesViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. - title = "Acknowledgements" + title = NSLocalizedString("Acknowledgements", comment: "") #if os(iOS) && !targetEnvironment(macCatalyst) view.backgroundColor = UIColor.black diff --git a/Provenance/Settings/PVSettingsViewController.swift b/Provenance/Settings/PVSettingsViewController.swift index 6683e56c68..6ea64a7042 100644 --- a/Provenance/Settings/PVSettingsViewController.swift +++ b/Provenance/Settings/PVSettingsViewController.swift @@ -19,13 +19,14 @@ import UIKit import RxSwift class PVQuickTableViewController: QuickTableViewController { + open override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = super.tableView(tableView, cellForRowAt: indexPath) #if os(iOS) (cell as? SliderCell)?.delegate = self #endif - + return cell } } @@ -44,11 +45,10 @@ final class PVSettingsViewController: PVQuickTableViewController { tableView.reloadData() #if os(tvOS) - tableView.backgroundColor = .black tableView.rowHeight = 80 splitViewController?.view.backgroundColor = .black - tableView.sectionHeaderHeight = 0 - tableView.sectionFooterHeight = 0 + navigationController?.navigationBar.isTranslucent = false + navigationController?.navigationBar.backgroundColor = UIColor.black.withAlphaComponent(0.8) #endif conflictsController.conflicts @@ -85,8 +85,14 @@ final class PVSettingsViewController: PVQuickTableViewController { typealias TableRow = Row & RowStyle // -- Section : App - let autolockRow = PVSettingsSwitchRow(text: "Disable Auto Lock", key: \PVSettingsModel.disableAutoLock) - let systemsRow = SegueNavigationRow(text: "Systems", viewController: self, segue: "pushSystemSettings") + #if os(tvOS) + let autolockRowDetailText:DetailText = .subtitle("This also disables the screensaver.") + #else + let autolockRowDetailText:DetailText? = nil + #endif + let autolockRow = PVSettingsSwitchRow(text: NSLocalizedString("Disable Auto Lock", comment: "Disable Auto Lock"), detailText: autolockRowDetailText, key: \PVSettingsModel.disableAutoLock) + + let systemsRow = SegueNavigationRow(text: NSLocalizedString("Systems", comment: "Systems"), viewController: self, segue: "pushSystemSettings") #if os(tvOS) let appRows: [TableRow] = [systemsRow] @@ -94,7 +100,7 @@ final class PVSettingsViewController: PVQuickTableViewController { let appRows: [TableRow] = [autolockRow, systemsRow] #endif - let appSection = Section(title: "App", rows: appRows) + let appSection = Section(title: NSLocalizedString("App", comment: "App"), rows: appRows) // -- Core Options let realm = try! Realm() @@ -111,70 +117,71 @@ final class PVSettingsViewController: PVQuickTableViewController { }) } - let coreOptionsSection = Section(title: "Core Options", rows: cores) + let coreOptionsSection = Section(title: NSLocalizedString("Core Options", comment: "Core Options"), rows: cores) // -- Section : Saves #if os(iOS) let saveRows: [TableRow] = [ - PVSettingsSwitchRow(text: "Auto Save", key: \PVSettingsModel.autoSave), - PVSettingsSwitchRow(text: "Timed Auto Saves", key: \PVSettingsModel.timedAutoSaves), - PVSettingsSwitchRow(text: "Auto Load Saves", key: \PVSettingsModel.autoLoadSaves), - PVSettingsSwitchRow(text: "Ask to Load Saves", key: \PVSettingsModel.askToAutoLoad) + PVSettingsSwitchRow(text: NSLocalizedString("Auto Save", comment: "Auto Save"), key: \PVSettingsModel.autoSave), + PVSettingsSwitchRow(text: NSLocalizedString("Timed Auto Saves", comment: "Timed Auto Saves"), key: \PVSettingsModel.timedAutoSaves), + PVSettingsSwitchRow(text: NSLocalizedString("Auto Load Saves", comment: "Auto Load Saves"), key: \PVSettingsModel.autoLoadSaves), + PVSettingsSwitchRow(text: NSLocalizedString("Ask to Load Saves", comment: "Ask to Load Saves"), key: \PVSettingsModel.askToAutoLoad) ] #else let saveRows: [TableRow] = [ - PVSettingsSwitchRow(text: "Auto Save", key: \PVSettingsModel.autoSave, + PVSettingsSwitchRow(text: NSLocalizedString("Auto Save", comment: "Auto Save"), key: \PVSettingsModel.autoSave, customization: { cell, _ in cell.textLabel?.font = UIFont.systemFont(ofSize: 30, weight: UIFont.Weight.regular) }), - PVSettingsSwitchRow(text: "Timed Auto Saves", key: \PVSettingsModel.timedAutoSaves, + PVSettingsSwitchRow(text: NSLocalizedString("Timed Auto Saves", comment: "Timed Auto Saves"), key: \PVSettingsModel.timedAutoSaves, customization: { cell, _ in cell.textLabel?.font = UIFont.systemFont(ofSize: 30, weight: UIFont.Weight.regular) }), - PVSettingsSwitchRow(text: "Auto Load Saves", key: \PVSettingsModel.autoLoadSaves, + PVSettingsSwitchRow(text: NSLocalizedString("Auto Load Saves", comment: "Auto Load Saves"), key: \PVSettingsModel.autoLoadSaves, customization: { cell, _ in cell.textLabel?.font = UIFont.systemFont(ofSize: 30, weight: UIFont.Weight.regular) }), - PVSettingsSwitchRow(text: "Ask to Load Saves", key: \PVSettingsModel.askToAutoLoad, + PVSettingsSwitchRow(text: NSLocalizedString("Ask to Load Saves", comment: "Ask to Load Saves"), key: \PVSettingsModel.askToAutoLoad, customization: { cell, _ in cell.textLabel?.font = UIFont.systemFont(ofSize: 30, weight: UIFont.Weight.regular) }) ] #endif - let savesSection = Section(title: "Saves", rows: saveRows) + let savesSection = Section(title: NSLocalizedString("Saves", comment: "Saves"), rows: saveRows) // -- Section : Audio/Video var avRows = [TableRow]() + #if os(iOS) - avRows.append(contentsOf: [PVSettingsSwitchRow(text: "Volume HUD", key: \PVSettingsModel.volumeHUD)]) - avRows.append(PVSettingsSliderRow(text: "Volume", detailText: nil, valueLimits: (min: 0.0, max: 1.0), key: \PVSettingsModel.volume)) + avRows.append(contentsOf: [PVSettingsSwitchRow(text: NSLocalizedString("Volume HUD", comment: "Volume HUD"), key: \PVSettingsModel.volumeHUD)]) + avRows.append(PVSettingsSliderRow(text: NSLocalizedString("Volume", comment: "Volume"), detailText: nil, valueLimits: (min: 0.0, max: 1.0), key: \PVSettingsModel.volume)) avRows.append(contentsOf: [ - PVSettingsSwitchRow(text: "Native Scale", key: \PVSettingsModel.nativeScaleEnabled), - PVSettingsSwitchRow(text: "Integer Scaling", key: \PVSettingsModel.integerScaleEnabled), - PVSettingsSwitchRow(text: "CRT Filter", key: \PVSettingsModel.crtFilterEnabled), - PVSettingsSwitchRow(text: "Image Smoothing", key: \PVSettingsModel.imageSmoothing), - PVSettingsSwitchRow(text: "FPS Counter", key: \PVSettingsModel.showFPSCount) + PVSettingsSwitchRow(text: NSLocalizedString("Native Scale", comment: "Native Scale"), key: \PVSettingsModel.nativeScaleEnabled), + PVSettingsSwitchRow(text: NSLocalizedString("Integer Scaling", comment: "Integer Scaling"), key: \PVSettingsModel.integerScaleEnabled), + PVSettingsSwitchRow(text: NSLocalizedString("CRT Filter", comment: "CRT Filter"), key: \PVSettingsModel.crtFilterEnabled), + PVSettingsSwitchRow(text: NSLocalizedString("Image Smoothing", comment: "Image Smoothing"), key: \PVSettingsModel.imageSmoothing), + PVSettingsSwitchRow(text: NSLocalizedString("FPS Counter", comment: "FPS Counter"), key: \PVSettingsModel.showFPSCount) ]) #else avRows.append(contentsOf: [ - PVSettingsSwitchRow(text: "Native Scale", key: \PVSettingsModel.nativeScaleEnabled, + PVSettingsSwitchRow(text: NSLocalizedString("Native Scale", comment: "Native Scale"), key: \PVSettingsModel.nativeScaleEnabled, customization: { cell, _ in cell.textLabel?.font = UIFont.systemFont(ofSize: 30, weight: UIFont.Weight.regular) }), - PVSettingsSwitchRow(text: "Integer Scaling", key: \PVSettingsModel.integerScaleEnabled, + PVSettingsSwitchRow(text: NSLocalizedString("Integer Scaling", comment: "Integer Scaling"), key: \PVSettingsModel.integerScaleEnabled, customization: { cell, _ in cell.textLabel?.font = UIFont.systemFont(ofSize: 30, weight: UIFont.Weight.regular) }), - PVSettingsSwitchRow(text: "CRT Filter", key: \PVSettingsModel.crtFilterEnabled, + PVSettingsSwitchRow(text: NSLocalizedString("CRT Filter", comment: "CRT Filter"), key: \PVSettingsModel.crtFilterEnabled, customization: { cell, _ in cell.textLabel?.font = UIFont.systemFont(ofSize: 30, weight: UIFont.Weight.regular) }), - PVSettingsSwitchRow(text: "Image Smoothing", key: \PVSettingsModel.imageSmoothing, + PVSettingsSwitchRow(text: NSLocalizedString("Image Smoothing", comment: "Image Smoothing"), key: \PVSettingsModel.imageSmoothing, customization: { cell, _ in cell.textLabel?.font = UIFont.systemFont(ofSize: 30, weight: UIFont.Weight.regular) }), - PVSettingsSwitchRow(text: "FPS Counter", key: \PVSettingsModel.showFPSCount, + PVSettingsSwitchRow(text: NSLocalizedString("FPS Counter", comment: "FPS Counter"), key: \PVSettingsModel.showFPSCount, customization: { cell, _ in cell.textLabel?.font = UIFont.systemFont(ofSize: 30, weight: UIFont.Weight.regular) }) @@ -182,33 +189,33 @@ final class PVSettingsViewController: PVQuickTableViewController { ) #endif - let avSection = Section(title: "Video Options", rows: avRows) + let avSection = Section(title: NSLocalizedString("Video Options", comment: "Video Options"), rows: avRows) // -- Section : Controler var controllerRows = [TableRow]() #if os(iOS) - controllerRows.append(PVSettingsSliderRow(text: "Opacity", detailText: nil, valueLimits: (min: 0.5, max: 1.0), key: \PVSettingsModel.controllerOpacity)) + controllerRows.append(PVSettingsSliderRow(text: NSLocalizedString("Opacity", comment: "Opacity"), detailText: nil, valueLimits: (min: 0.5, max: 1.0), key: \PVSettingsModel.controllerOpacity)) controllerRows.append(contentsOf: [ - PVSettingsSwitchRow(text: "Button Colors", key: \PVSettingsModel.buttonTints), - PVSettingsSwitchRow(text: "All-Right Shoulders", detailText: .subtitle("Moves L1, L2 & Z to right side"), key: \PVSettingsModel.allRightShoulders), - PVSettingsSwitchRow(text: "Haptic Feedback", key: \PVSettingsModel.buttonVibration), - PVSettingsSwitchRow(text: "Enable 8BitDo M30 Mapping", detailText: .subtitle("For use with Sega Genesis/Mega Drive, Sega/Mega CD, 32X and the PC Engine."), key: \PVSettingsModel.use8BitdoM30) + PVSettingsSwitchRow(text: NSLocalizedString("Button Colors", comment: "Button Colors"), key: \PVSettingsModel.buttonTints), + PVSettingsSwitchRow(text: NSLocalizedString("All-Right Shoulders", comment: "All-Right Shoulders"), detailText: .subtitle("Moves L1, L2 & Z to right side"), key: \PVSettingsModel.allRightShoulders), + PVSettingsSwitchRow(text: NSLocalizedString("Haptic Feedback", comment: "Haptic Feedback"), key: \PVSettingsModel.buttonVibration), + PVSettingsSwitchRow(text: NSLocalizedString("Enable 8BitDo M30 Mapping", comment: "Enable 8BitDo M30 Mapping"), detailText: .subtitle("For use with Sega Genesis/Mega Drive, Sega/Mega CD, 32X, Saturn and the PC Engine."), key: \PVSettingsModel.use8BitdoM30) ] ) #endif controllerRows.append(contentsOf: [ - SegueNavigationRow(text: "Controllers", detailText: .subtitle("Assign players"), viewController: self, segue: "controllersSegue"), - SegueNavigationRow(text: "iCade Controller", detailText: .subtitle(PVSettingsModel.shared.myiCadeControllerSetting.description), viewController: self, segue: "iCadeSegue", customization: { cell, _ in + SegueNavigationRow(text: NSLocalizedString("Controllers", comment: "Controllers"), detailText: .subtitle("Assign players"), viewController: self, segue: "controllersSegue"), + SegueNavigationRow(text: NSLocalizedString("iCade Controller", comment: "iCade Controller"), detailText: .subtitle(PVSettingsModel.shared.myiCadeControllerSetting.description), viewController: self, segue: "iCadeSegue", customization: { cell, _ in cell.detailTextLabel?.text = PVSettingsModel.shared.myiCadeControllerSetting.description }) ]) #if os(tvOS) controllerRows.append(contentsOf: [ - PVSettingsSwitchRow(text: "Enable 8BitDo M30 Mapping", detailText: .subtitle("For use with Sega Genesis/Mega Drive, Sega/Mega CD, 32X and the PC Engine."), key: \PVSettingsModel.use8BitdoM30, + PVSettingsSwitchRow(text: NSLocalizedString("Enable 8BitDo M30 Mapping", comment: "Enable 8BitDo M30 Mapping"), detailText: .subtitle("For use with Sega Genesis/Mega Drive, Sega/Mega CD, 32X, Saturn and the \nTG16/PC Engine, TG16/PC Engine CD and SuperGrafx systems."), key: \PVSettingsModel.use8BitdoM30, customization: { cell, _ in cell.textLabel?.font = UIFont.systemFont(ofSize: 30, weight: UIFont.Weight.regular) cell.detailTextLabel?.font = UIFont.systemFont(ofSize: 20, weight: UIFont.Weight.regular) @@ -216,13 +223,13 @@ final class PVSettingsViewController: PVQuickTableViewController { ]) #endif - let controllerSection = Section(title: "Controller", rows: controllerRows, footer: "Check the wiki for controls per systems.") + let controllerSection = Section(title: NSLocalizedString("Controllers", comment: "Controllers"), rows: controllerRows, footer: "Check the wiki for controls per systems.") // Game Library var libraryRows: [TableRow] = [ NavigationRow( - text: "Launch Web Server", + text: NSLocalizedString("Launch Web Server", comment: "Launch Web Server"), detailText: .subtitle("Import/Export ROMs, saves, cover art…"), icon: nil, customization: nil, @@ -254,12 +261,12 @@ final class PVSettingsViewController: PVQuickTableViewController { libraryRows.append(webServerAlwaysOn) #endif - let librarySection = Section(title: "Game Library", rows: libraryRows, footer: "Check the wiki about importing ROMs.") + let librarySection = Section(title: NSLocalizedString("Game Library", comment: "Game Library"), rows: libraryRows, footer: "Check the wiki about importing ROMs.") // Game Library 2 let library2Rows: [TableRow] = [ NavigationRow( - text: "Refresh Game Library", + text: NSLocalizedString("Refresh Game Library", comment: ""), detailText: .subtitle("Re-import ROMs ⚠️ Slow"), icon: nil, customization: nil, @@ -268,7 +275,7 @@ final class PVSettingsViewController: PVQuickTableViewController { } ), NavigationRow( - text: "Empty Image Cache", + text: NSLocalizedString("Empty Image Cache", comment: "Empty Image Cache"), detailText: .subtitle("Re-download covers"), icon: nil, customization: nil, @@ -277,12 +284,14 @@ final class PVSettingsViewController: PVQuickTableViewController { } ), NavigationRow( - text: "Manage Conflicts", + text: NSLocalizedString("Manage Conflicts", comment: ""), detailText: .subtitle(numberOfConflicts > 0 ? "Manually resolve conflicted imports: \(numberOfConflicts) detected" : "None detected"), icon: nil, action: numberOfConflicts > 0 ? { [weak self] _ in self?.manageConflictsAction() } : nil ), - SegueNavigationRow(text: "Appearance", detailText: .subtitle("Visual options for Game Library"), viewController: self, segue: "appearanceSegue") + SegueNavigationRow(text: NSLocalizedString("Appearance", comment: "Appearance"), + detailText: .subtitle("Visual options for Game Library"), + viewController: self, segue: "appearanceSegue") ] let librarySection2 = Section(title: nil, rows: library2Rows) @@ -290,29 +299,44 @@ final class PVSettingsViewController: PVQuickTableViewController { // Beta options #if os(iOS) let betaRows: [TableRow] = [ - PVSettingsSwitchRow(text: "Missing Buttons Always On-Screen", + PVSettingsSwitchRow(text: NSLocalizedString("Use Metal", comment: "Use Metal"), + detailText: .subtitle("Use experimental Metal backend instead of OpenGL"), + key: \PVSettingsModel.debugOptions.useMetal), + + PVSettingsSwitchRow(text: NSLocalizedString("Missing Buttons Always On-Screen", comment: "Missing Buttons Always On-Screen"), detailText: .subtitle("Supports: SNES, SMS, SG, GG, SCD, PSX."), key: \PVSettingsModel.missingButtonsAlwaysOn), - PVSettingsSwitchRow(text: "iCloud Sync", + PVSettingsSwitchRow(text: NSLocalizedString("iCloud Sync", comment: "iCloud Sync"), detailText: .subtitle("Sync core & battery saves, screenshots and BIOS's to iCloud."), key: \PVSettingsModel.debugOptions.iCloudSync), - PVSettingsSwitchRow(text: "Multi-threaded GL", + PVSettingsSwitchRow(text: NSLocalizedString("Multi-threaded GL", comment: "Multi-threaded GL"), detailText: .subtitle("Use iOS's EAGLContext multiThreaded. May improve or slow down GL performance."), key: \PVSettingsModel.debugOptions.multiThreadedGL), - PVSettingsSwitchRow(text: "4X Multisampling GL", + PVSettingsSwitchRow(text: NSLocalizedString("4X Multisampling GL", comment: "4X Multisampling GL"), detailText: .subtitle("Use iOS's EAGLContext multisampling. Slower speed (slightly), smoother edges."), - key: \PVSettingsModel.debugOptions.multiSampling) - -// PVSettingsSwitchRow(text: "Unsupported Cores", -// detailText: .subtitle("Cores that are in development"), -// key: \PVSettingsModel.debugOptions.unsupportedCores) + key: \PVSettingsModel.debugOptions.multiSampling), + + PVSettingsSwitchRow(text: NSLocalizedString("Unsupported Cores", comment: "Unsupported Cores"), + detailText: .subtitle("Cores that are in development"), + key: \PVSettingsModel.debugOptions.unsupportedCores), + + PVSettingsSwitchRow(text: NSLocalizedString("Use Swift UI", comment: "Use Swift UI"), + detailText: .subtitle("Swift UI placeholder. Don't use unless you're a developer."), + key: \PVSettingsModel.debugOptions.useSwiftUI), ] #else let betaRows: [TableRow] = [ - PVSettingsSwitchRow(text: "iCloud Sync", + PVSettingsSwitchRow(text: NSLocalizedString("Use Metal", comment: "Use Metal"), detailText: .subtitle("Use experimental Metal backend instead of OpenGL"), + key: \PVSettingsModel.debugOptions.useMetal, + customization: { cell, _ in + cell.textLabel?.font = UIFont.systemFont(ofSize: 30, weight: UIFont.Weight.regular) + cell.detailTextLabel?.font = UIFont.systemFont(ofSize: 20, weight: UIFont.Weight.regular) + } + ), + PVSettingsSwitchRow(text: NSLocalizedString("iCloud Sync", comment: "iCloud Sync"), detailText: .subtitle("Sync core & battery saves, screenshots and BIOS's to iCloud."), key: \PVSettingsModel.debugOptions.iCloudSync, customization: { cell, _ in @@ -321,7 +345,7 @@ final class PVSettingsViewController: PVQuickTableViewController { } ), - PVSettingsSwitchRow(text: "Multi-threaded GL", + PVSettingsSwitchRow(text: NSLocalizedString("Multi-threaded GL", comment: "Multi-threaded GL"), detailText: .subtitle("Use tvOS's EAGLContext multiThreaded. May improve or slow down GL performance."), key: \PVSettingsModel.debugOptions.multiThreadedGL, customization: { cell, _ in @@ -330,19 +354,28 @@ final class PVSettingsViewController: PVQuickTableViewController { } ), - PVSettingsSwitchRow(text: "4X Multisampling GL", + PVSettingsSwitchRow(text: NSLocalizedString("4X Multisampling GL", comment: "4X Multisampling GL"), detailText: .subtitle("Use tvOS's EAGLContext multisampling. Slower speed (slightly), smoother edges."), key: \PVSettingsModel.debugOptions.multiSampling, customization: { cell, _ in cell.textLabel?.font = UIFont.systemFont(ofSize: 30, weight: UIFont.Weight.regular) cell.detailTextLabel?.font = UIFont.systemFont(ofSize: 20, weight: UIFont.Weight.regular) } - ) + ), + + PVSettingsSwitchRow(text: NSLocalizedString("Use SwiftUI", comment: "Use SwiftUI"), + detailText: .subtitle("Don't use unless you enjoy empty windows."), + key: \PVSettingsModel.debugOptions.multiSampling, + customization: { cell, _ in + cell.textLabel?.font = UIFont.systemFont(ofSize: 30, weight: UIFont.Weight.regular) + cell.detailTextLabel?.font = UIFont.systemFont(ofSize: 20, weight: UIFont.Weight.regular) + } + ) ] #endif let betaSection = Section( - title: "Beta Features", + title: NSLocalizedString("Beta Features", comment: ""), rows: betaRows, footer: "Untested, unsupported, work in progress features. Use at your own risk. May result in crashes and data loss." ) @@ -366,7 +399,7 @@ final class PVSettingsViewController: PVQuickTableViewController { } // Git Revision (branch/hash) - var revisionString = "Unknown" + var revisionString = NSLocalizedString("Unknown", comment: "") if var bundleRevision = Bundle.main.infoDictionary?["Revision"] as? String, !revisionString.isEmpty { if !masterBranch { bundleRevision = "\(kGITBranch)/\(bundleRevision)" @@ -398,8 +431,8 @@ final class PVSettingsViewController: PVQuickTableViewController { let buildInformationRows: [TableRow] = [ NavigationRow( - text: "Version", - detailText: .value2(versionText ?? "Unknown"), + text: NSLocalizedString("Version", comment: ""), + detailText: .value2(versionText ?? NSLocalizedString("Unknown", comment: "")), icon: nil, customization: { cell, _ in if !masterBranch { @@ -408,32 +441,32 @@ final class PVSettingsViewController: PVQuickTableViewController { }, action: nil ), - NavigationRow(text: "Build", detailText: .value2(bundleVersion)), - NavigationRow(text: "Mode", detailText: .value2(modeLabel)), - NavigationRow(text: "Git Revision", detailText: .value2(revisionString)), - NavigationRow(text: "Build Date", detailText: .value2(buildDateString)), - NavigationRow(text: "Builder", detailText: .value2(builtByUser)), - NavigationRow(text: "Bundle ID", detailText: .value2(Bundle.main.bundleIdentifier ?? "Unknown")) + NavigationRow(text: NSLocalizedString("Build", comment: "Build"), detailText: .value2(bundleVersion)), + NavigationRow(text: NSLocalizedString("Mode", comment: "Mode"), detailText: .value2(modeLabel)), + NavigationRow(text: NSLocalizedString("Git Revision", comment: "Git Revision"), detailText: .value2(revisionString)), + NavigationRow(text: NSLocalizedString("Build Date", comment: "Build Date"), detailText: .value2(buildDateString)), + NavigationRow(text: NSLocalizedString("Builder", comment: "Builder"), detailText: .value2(builtByUser)), + NavigationRow(text: NSLocalizedString("Bundle ID", comment: "Bundle ID"), detailText: .value2(Bundle.main.bundleIdentifier ?? "Unknown")) ] - let buildSection = Section(title: "Build Information", rows: buildInformationRows) + let buildSection = Section(title: NSLocalizedString("Build Information", comment: ""), rows: buildInformationRows) // Extra Info Section let extraInfoRows: [TableRow] = [ - SegueNavigationRow(text: "Cores", detailText: .subtitle("Emulator cores provided by these projects"), viewController: self, segue: "coresSegue", customization: nil), - SegueNavigationRow(text: "Licenses", detailText: .none, viewController: self, segue: "licensesSegue", customization: nil) + SegueNavigationRow(text: NSLocalizedString("Cores", comment: "Cores"), detailText: .subtitle("Emulator cores provided by these projects"), viewController: self, segue: "coresSegue", customization: nil), + SegueNavigationRow(text: NSLocalizedString("Licenses", comment: "Licenses"), detailText: .none, viewController: self, segue: "licensesSegue", customization: nil) ] - let extraInfoSection = Section(title: "3rd Party & Legal", rows: extraInfoRows) + let extraInfoSection = Section(title: NSLocalizedString("3rd Party & Legal", comment: ""), rows: extraInfoRows) // Debug section let debugRows: [TableRow] = [ - NavigationRow(text: "Logs", detailText: .subtitle("Live logging information"), icon: nil, customization: nil, action: { _ in + NavigationRow(text: NSLocalizedString("Logs", comment: "Logs"), detailText: .subtitle("Live logging information"), icon: nil, customization: nil, action: { _ in self.logsActions() }) ] - let debugSection = Section(title: "Debug", rows: debugRows) + let debugSection = Section(title: NSLocalizedString("Debug", comment: ""), rows: debugRows) // Set table data tableContents = [appSection, coreOptionsSection, savesSection, avSection, controllerSection, librarySection, librarySection2, betaSection, buildSection, extraInfoSection] @@ -478,11 +511,11 @@ final class PVSettingsViewController: PVQuickTableViewController { func emptyImageCacheAction() { tableView.deselectRow(at: tableView.indexPathForSelectedRow ?? IndexPath(row: 0, section: 0), animated: true) - let alert = UIAlertController(title: "Empty Image Cache?", message: "Empty the image cache to free up disk space. Images will be redownloaded on demand.", preferredStyle: .alert) - alert.addAction(UIAlertAction(title: "Yes", style: .default, handler: { (_: UIAlertAction) -> Void in + let alert = UIAlertController(title: NSLocalizedString("Empty Image Cache?", comment: ""), message: "Empty the image cache to free up disk space. Images will be redownloaded on demand.", preferredStyle: .alert) + alert.addAction(UIAlertAction(title: NSLocalizedString("Yes", comment: ""), style: .default, handler: { (_: UIAlertAction) -> Void in try? PVMediaCache.empty() })) - alert.addAction(UIAlertAction(title: "No", style: .cancel, handler: nil)) + alert.addAction(UIAlertAction(title: NSLocalizedString("No", comment: ""), style: .cancel, handler: nil)) present(alert, animated: true) { () -> Void in } } diff --git a/Provenance/Settings/SystemSettings/SystemSettingsCell.swift b/Provenance/Settings/SystemSettings/SystemSettingsCell.swift index bf0a917c71..2237ad3900 100644 --- a/Provenance/Settings/SystemSettings/SystemSettingsCell.swift +++ b/Provenance/Settings/SystemSettings/SystemSettingsCell.swift @@ -9,7 +9,7 @@ import Foundation public class SystemSettingsCell: UITableViewCell { - public static let identifier: String = String(describing: self) + public static let identifier: String = String(describing: SystemSettingsCell.self) public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) diff --git a/Provenance/Settings/WebServerActivatorController.swift b/Provenance/Settings/WebServerActivatorController.swift index 51a572ad3b..7dd5dace0a 100644 --- a/Provenance/Settings/WebServerActivatorController.swift +++ b/Provenance/Settings/WebServerActivatorController.swift @@ -44,6 +44,7 @@ protocol WebServerActivatorController: AnyObject { self.showServer() }) alert.addAction(viewAction) + alert.preferredAction = alert.actions.last present(alert, animated: true) { () -> Void in } } @@ -77,13 +78,19 @@ extension WebServerActivatorController where Self: WebServerActivatorControllerR let webServerAddress: String = PVWebServer.shared.urlString let webDavAddress: String = PVWebServer.shared.webDavURLString let message = """ - Read about how to import ROMs on the Provenance wiki at: + + Read more about how to import + ROMs on the Provenance wiki at: + https://wiki.provenance-emu.com + + Upload/Download files to your device at: \(webServerAddress) ᵂᵉᵇᵁᴵ \(webDavAddress) ᵂᵉᵇᴰᴬⱽ + """ return message } @@ -104,7 +111,7 @@ extension WebServerActivatorController where Self: WebServerActivatorControllerR // start web transfer service if PVWebServer.shared.startServers() { let alert = UIAlertController(title: "Web Server Active", message: webServerAlertMessage, preferredStyle: .alert) - alert.addAction(UIAlertAction(title: "Stop", style: .default, handler: { (_: UIAlertAction) -> Void in + alert.addAction(UIAlertAction(title: "Stop", style: .cancel, handler: { (_: UIAlertAction) -> Void in PVWebServer.shared.stopServers() })) #if os(iOS) @@ -113,6 +120,7 @@ extension WebServerActivatorController where Self: WebServerActivatorControllerR }) alert.addAction(viewAction) #endif + alert.preferredAction = alert.actions.last present(alert, animated: true) { () -> Void in alert.message = self.webServerAlertMessage } diff --git a/Provenance/User Interface/SwiftUI/GameLibraryView.swift b/Provenance/User Interface/SwiftUI/GameLibraryView.swift new file mode 100644 index 0000000000..46c1697897 --- /dev/null +++ b/Provenance/User Interface/SwiftUI/GameLibraryView.swift @@ -0,0 +1,23 @@ +// +// GameLibraryView.swift +// Provenance +// +// Created by Joseph Mattiello on 1/17/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import SwiftUI + +@available(iOS 13.0.0, tvOS 13.0.0, *) +struct GameLibraryView: View { + var body: some View { + Text("Hello, World!") + } +} + +@available(iOS 13.0.0, tvOS 13.0.0, *) +struct GameLibraryView_Previews: PreviewProvider { + static var previews: some View { + GameLibraryView() + } +} diff --git a/Provenance/User Interface/Themes/Theme.swift b/Provenance/User Interface/Themes/Theme.swift index 5bdfda9ed4..26455735b2 100644 --- a/Provenance/User Interface/Themes/Theme.swift +++ b/Provenance/User Interface/Themes/Theme.swift @@ -54,6 +54,7 @@ public protocol iOSTheme { var switchThumb: UIColor? { get } var statusBarStyle: UIStatusBarStyle { get } + var statusBarColor: UIColor? { get } var settingsHeaderBackground: UIColor? { get } var settingsSeperator: UIColor? { get } @@ -84,6 +85,7 @@ extension iOSTheme { var settingsSeperator: UIColor? { return nil } var navigationBarStyle: UIBarStyle { return .default } + var statusBarColor: UIColor? { return nil } // Default to default tint (which defaults to nil) var barButtonItemTint: UIColor? { return defaultTintColor } @@ -161,6 +163,33 @@ public final class Theme { // class func test() { // let light = AppearanceStyle("light") // } + static weak var statusBarView: UIView? + private class func styleStatusBar(withColor color: UIColor? = nil) { + guard let color = color else { + if let statusBarView = statusBarView { + statusBarView.removeFromSuperview() + } + return + } + if #available(iOS 13.0, *) { + guard + let window = UIApplication.shared.keyWindow, + let scene = window.windowScene, + let manager = scene.statusBarManager else { + ELOG("check your tcp/ip's") + return + } + let statusBar1 = statusBarView ?? UIView() + statusBar1.frame = manager.statusBarFrame + statusBar1.backgroundColor = color + statusBarView = statusBar1 + window.addSubview(statusBar1) + } else { + if let statusBar1: UIView = UIApplication.shared.value(forKey: "statusBar") as? UIView { + statusBar1.backgroundColor = color + } + } + } private class func setTheme(_ theme: iOSTheme) { UINavigationBar.appearance { @@ -288,6 +317,9 @@ public final class Theme { } } } + + // Status bar + styleStatusBar(withColor: theme.statusBarColor) } } diff --git a/Provenance/User Interface/en.lproj/Cheats.storyboard b/Provenance/User Interface/en.lproj/Cheats.storyboard index d521c2f648..44199c7cd6 100644 --- a/Provenance/User Interface/en.lproj/Cheats.storyboard +++ b/Provenance/User Interface/en.lproj/Cheats.storyboard @@ -38,9 +38,8 @@ - + + + + + + + + + + @@ -129,13 +137,16 @@ + + + @@ -145,6 +156,7 @@ + diff --git a/Provenance/User Interface/en.lproj/Provenance.storyboard b/Provenance/User Interface/en.lproj/Provenance.storyboard index 7a5d74cd62..86b0884efe 100644 --- a/Provenance/User Interface/en.lproj/Provenance.storyboard +++ b/Provenance/User Interface/en.lproj/Provenance.storyboard @@ -1,22 +1,26 @@ - + - + + - + + + + @@ -442,11 +446,11 @@ - + - + + - - - - - + + + + + + + + + + + + + @@ -494,9 +507,11 @@ + + @@ -522,7 +537,6 @@ diff --git a/ProvenanceTV-Bridging-Header.h b/ProvenanceTV/ProvenanceTV-Bridging-Header.h similarity index 96% rename from ProvenanceTV-Bridging-Header.h rename to ProvenanceTV/ProvenanceTV-Bridging-Header.h index e3a6ed6dbc..3b49f9cd88 100644 --- a/ProvenanceTV-Bridging-Header.h +++ b/ProvenanceTV/ProvenanceTV-Bridging-Header.h @@ -17,6 +17,7 @@ // • No need to import the Swift Bridging Header (Provenance-Swift.h), since it's already being imported fom the .pch file. #import "MBProgressHUD.h" +#import "PVMetalViewController.h" #import "PVGLViewController.h" #import "PVWebServer.h" diff --git a/ProvenanceTV/Story Boards/en.lproj/Provenance.storyboard b/ProvenanceTV/Story Boards/en.lproj/Provenance.storyboard index d212f6773a..7ebbc68b2e 100644 --- a/ProvenanceTV/Story Boards/en.lproj/Provenance.storyboard +++ b/ProvenanceTV/Story Boards/en.lproj/Provenance.storyboard @@ -1,9 +1,10 @@ - + - + + @@ -251,7 +252,7 @@ - + @@ -362,25 +363,6 @@ - - - - - - - - - - - - - - - - - - - @@ -397,14 +379,8 @@ - - - - - - - + @@ -416,12 +392,34 @@ + + + + + + + + + + + + + + + + + + + + + - - + + + @@ -437,11 +435,11 @@ - + - - + @@ -483,7 +481,7 @@ - + @@ -500,10 +498,11 @@ + - + @@ -516,6 +515,7 @@ + diff --git a/ProvenanceTV/Story Boards/en.lproj/Settings.storyboard b/ProvenanceTV/Story Boards/en.lproj/Settings.storyboard index e4961d5d2f..d4a8699b63 100644 --- a/ProvenanceTV/Story Boards/en.lproj/Settings.storyboard +++ b/ProvenanceTV/Story Boards/en.lproj/Settings.storyboard @@ -1,9 +1,9 @@ - + - + @@ -67,10 +67,10 @@ - + - + @@ -81,7 +81,7 @@ - + @@ -95,10 +95,10 @@ - + - + @@ -114,10 +114,10 @@ - + - + @@ -159,10 +159,10 @@ - + - + @@ -204,10 +204,10 @@ - + - + @@ -241,10 +241,10 @@ - + - + @@ -279,10 +279,10 @@ - + - + diff --git a/ProvenanceTV/Story Boards/es.lproj/Cheats.storyboard b/ProvenanceTV/Story Boards/es.lproj/Cheats.storyboard new file mode 100644 index 0000000000..8938bc955a --- /dev/null +++ b/ProvenanceTV/Story Boards/es.lproj/Cheats.storyboard @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/es.lproj/Provenance.storyboard b/ProvenanceTV/Story Boards/es.lproj/Provenance.storyboard new file mode 100644 index 0000000000..5bf3d173d9 --- /dev/null +++ b/ProvenanceTV/Story Boards/es.lproj/Provenance.storyboard @@ -0,0 +1,524 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/es.lproj/SaveStates.storyboard b/ProvenanceTV/Story Boards/es.lproj/SaveStates.storyboard new file mode 100644 index 0000000000..9b750aba6b --- /dev/null +++ b/ProvenanceTV/Story Boards/es.lproj/SaveStates.storyboard @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/es.lproj/Settings.storyboard b/ProvenanceTV/Story Boards/es.lproj/Settings.storyboard new file mode 100644 index 0000000000..e4961d5d2f --- /dev/null +++ b/ProvenanceTV/Story Boards/es.lproj/Settings.storyboard @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/it.lproj/Cheats.storyboard b/ProvenanceTV/Story Boards/it.lproj/Cheats.storyboard new file mode 100644 index 0000000000..8938bc955a --- /dev/null +++ b/ProvenanceTV/Story Boards/it.lproj/Cheats.storyboard @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SaveStates~.storyboard b/ProvenanceTV/Story Boards/it.lproj/Provenance.storyboard similarity index 73% rename from SaveStates~.storyboard rename to ProvenanceTV/Story Boards/it.lproj/Provenance.storyboard index a5bd638f3a..25c84df73e 100644 --- a/SaveStates~.storyboard +++ b/ProvenanceTV/Story Boards/it.lproj/Provenance.storyboard @@ -1,11 +1,10 @@ - - - - + + - + + @@ -14,7 +13,7 @@ - + @@ -24,7 +23,7 @@ - + @@ -36,10 +35,10 @@ - + - + - + - + - + - + - + - + - + - + - + Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. @@ -252,6 +251,8 @@ + + @@ -261,7 +262,6 @@ - @@ -363,44 +363,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -413,29 +379,47 @@ - - - - - - + + - + + + + + + + + + + + + + + + + + + + + + + - - + + + @@ -445,17 +429,17 @@ - + - + - + - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + @@ -583,26 +498,11 @@ + - - - - - - - - - - - - - - - - - + @@ -612,49 +512,16 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + diff --git a/ProvenanceTV/Story Boards/it.lproj/SaveStates.storyboard b/ProvenanceTV/Story Boards/it.lproj/SaveStates.storyboard new file mode 100644 index 0000000000..9b750aba6b --- /dev/null +++ b/ProvenanceTV/Story Boards/it.lproj/SaveStates.storyboard @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/it.lproj/Settings.storyboard b/ProvenanceTV/Story Boards/it.lproj/Settings.storyboard new file mode 100644 index 0000000000..d4a8699b63 --- /dev/null +++ b/ProvenanceTV/Story Boards/it.lproj/Settings.storyboard @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/ja.lproj/Cheats.storyboard b/ProvenanceTV/Story Boards/ja.lproj/Cheats.storyboard new file mode 100644 index 0000000000..8938bc955a --- /dev/null +++ b/ProvenanceTV/Story Boards/ja.lproj/Cheats.storyboard @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/ja.lproj/Provenance.storyboard b/ProvenanceTV/Story Boards/ja.lproj/Provenance.storyboard new file mode 100644 index 0000000000..25c84df73e --- /dev/null +++ b/ProvenanceTV/Story Boards/ja.lproj/Provenance.storyboard @@ -0,0 +1,527 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/ja.lproj/SaveStates.storyboard b/ProvenanceTV/Story Boards/ja.lproj/SaveStates.storyboard new file mode 100644 index 0000000000..9b750aba6b --- /dev/null +++ b/ProvenanceTV/Story Boards/ja.lproj/SaveStates.storyboard @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/ja.lproj/Settings.storyboard b/ProvenanceTV/Story Boards/ja.lproj/Settings.storyboard new file mode 100644 index 0000000000..d4a8699b63 --- /dev/null +++ b/ProvenanceTV/Story Boards/ja.lproj/Settings.storyboard @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/nl.lproj/Cheats.storyboard b/ProvenanceTV/Story Boards/nl.lproj/Cheats.storyboard new file mode 100644 index 0000000000..8938bc955a --- /dev/null +++ b/ProvenanceTV/Story Boards/nl.lproj/Cheats.storyboard @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/nl.lproj/Provenance.storyboard b/ProvenanceTV/Story Boards/nl.lproj/Provenance.storyboard new file mode 100644 index 0000000000..25c84df73e --- /dev/null +++ b/ProvenanceTV/Story Boards/nl.lproj/Provenance.storyboard @@ -0,0 +1,527 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/nl.lproj/SaveStates.storyboard b/ProvenanceTV/Story Boards/nl.lproj/SaveStates.storyboard new file mode 100644 index 0000000000..9b750aba6b --- /dev/null +++ b/ProvenanceTV/Story Boards/nl.lproj/SaveStates.storyboard @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/nl.lproj/Settings.storyboard b/ProvenanceTV/Story Boards/nl.lproj/Settings.storyboard new file mode 100644 index 0000000000..d4a8699b63 --- /dev/null +++ b/ProvenanceTV/Story Boards/nl.lproj/Settings.storyboard @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/ru.lproj/Cheats.storyboard b/ProvenanceTV/Story Boards/ru.lproj/Cheats.storyboard new file mode 100644 index 0000000000..8938bc955a --- /dev/null +++ b/ProvenanceTV/Story Boards/ru.lproj/Cheats.storyboard @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/ru.lproj/Provenance.storyboard b/ProvenanceTV/Story Boards/ru.lproj/Provenance.storyboard new file mode 100644 index 0000000000..25c84df73e --- /dev/null +++ b/ProvenanceTV/Story Boards/ru.lproj/Provenance.storyboard @@ -0,0 +1,527 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/ru.lproj/SaveStates.storyboard b/ProvenanceTV/Story Boards/ru.lproj/SaveStates.storyboard new file mode 100644 index 0000000000..9b750aba6b --- /dev/null +++ b/ProvenanceTV/Story Boards/ru.lproj/SaveStates.storyboard @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/Story Boards/ru.lproj/Settings.storyboard b/ProvenanceTV/Story Boards/ru.lproj/Settings.storyboard new file mode 100644 index 0000000000..d4a8699b63 --- /dev/null +++ b/ProvenanceTV/Story Boards/ru.lproj/Settings.storyboard @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProvenanceTV/TVAlertController.swift b/ProvenanceTV/TVAlertController.swift new file mode 100644 index 0000000000..7890664792 --- /dev/null +++ b/ProvenanceTV/TVAlertController.swift @@ -0,0 +1,633 @@ +// TVAlertController.swift +// Wombat +// +// implement a custom UIAlertController for tvOS, using a UIStackView full of buttons and duct tape. +// +// Oh it also works on iOS... +// +// Created by Todd Laney on 22/01/2022. +// + +import UIKit + +// these are the defaults assuming Dark mode, etc. +private let _fullscreenColor = UIColor.black.withAlphaComponent(0.8) +private let _backgroundColor = UIColor(red:0.1, green:0.1, blue:0.1, alpha:1) // secondarySystemGroupedBackground +private let _defaultButtonColor = UIColor(white: 0.2, alpha: 1) +private let _destructiveButtonColor = UIColor.systemRed.withAlphaComponent(0.5) +private let _borderWidth = 4.0 +private let _fontTitleF = 1.25 +private let _animateDuration = 0.150 + +// os specific defaults +#if os(tvOS) + private let _blurFullscreen = false + private let _font = UIFont.systemFont(ofSize: 24.0) + private let _inset:CGFloat = 16.0 + private let _maxTextWidthF:CGFloat = 0.25 +#else + private let _blurFullscreen = true + private let _font = UIFont.preferredFont(forTextStyle: .body) + private let _inset:CGFloat = 16.0 + private let _maxTextWidthF:CGFloat = 0.50 +#endif + +protocol UIAlertControllerProtocol : UIViewController { + + func addAction(_ action: UIAlertAction) + var actions: [UIAlertAction] { get } + + var preferredAction: UIAlertAction? { get set } + + func addTextField(configurationHandler: ((UITextField) -> Void)?) + var textFields: [UITextField]? { get } + + var title: String? { get set } + var message: String? { get set } + var preferredStyle: UIAlertController.Style { get } +} + +// take over (aka mock) the UIAlertController initializer and return our class sometimes.... +func UIAlertController(title: String?, message: String?, preferredStyle style: UIAlertController.Style) -> UIAlertControllerProtocol { + #if os(tvOS) + return TVAlertController.init(title:title, message: message, preferredStyle: style) + #else + if style == .alert { + // always use system Alert on iOS + return UIAlertController.init(title:title, message: message, preferredStyle: style) + } + else { + // maybe use custom ActionSheet + //return UIAlertController.init(title:title, message: message, preferredStyle: style) + return TVAlertController.init(title:title, message: message, preferredStyle: style) + } + #endif +} + +extension UIAlertController : UIAlertControllerProtocol { } + +final class TVAlertController: UIViewController, UIAlertControllerProtocol { + + var preferredStyle = UIAlertController.Style.alert + var actions = [UIAlertAction]() + var textFields:[UITextField]? + var preferredAction: UIAlertAction? + var cancelAction: UIAlertAction? + + var autoDismiss = true // a UIAlertController is always autoDismiss + + internal private(set) var doubleStackHeight = 0 + + private let stack = {() -> UIStackView in + let stack = UIStackView(arrangedSubviews: [UILabel(), UILabel()]) + stack.axis = .vertical + stack.distribution = .fill + stack.alignment = .fill + stack.spacing = floor(_font.lineHeight / 4.0) + return stack + }() + + // MARK: init + + convenience init(title: String?, message: String?, preferredStyle: UIAlertController.Style) { + self.init(nibName:nil, bundle: nil) + self.title = title + self.message = message + self.preferredStyle = preferredStyle + + #if os(tvOS) + self.modalPresentationStyle = _blurFullscreen ? .blurOverFullScreen : .overFullScreen + #else + self.modalPresentationStyle = .overFullScreen + self.modalTransitionStyle = .crossDissolve + #endif + } + + var spacing: CGFloat { + get { + return stack.spacing + } + set { + stack.spacing = newValue + } + } + + var font = _font { + didSet { + spacing = floor(font.lineHeight / 4.0); + } + } + + // MARK: UIAlertControllerProtocol + + override var title: String? { + set { + let label = stack.arrangedSubviews[0] as! UILabel + label.text = newValue + label.font = .boldSystemFont(ofSize: font.pointSize * _fontTitleF) + label.numberOfLines = 0 + label.textAlignment = .center + label.preferredMaxLayoutWidth = maxTextWidth + } + get { + return (stack.arrangedSubviews[0] as? UILabel)?.text + } + } + + var message: String? { + set { + let label = stack.arrangedSubviews[1] as! UILabel + label.text = newValue + label.font = self.font + label.numberOfLines = 0 + label.textAlignment = .center + label.preferredMaxLayoutWidth = maxTextWidth + } + get { + return (stack.arrangedSubviews[1] as? UILabel)?.text + } + } + + func addAction(_ action: UIAlertAction) { + if action.style == .cancel { + cancelAction = action + if preferredStyle == .actionSheet { + return + } + } + actions.append(action) + stack.addArrangedSubview(makeButton(action)) + } + + func addTextField(configurationHandler: ((UITextField) -> Void)? = nil) { + let textField = UITextField() + textField.font = font + textField.borderStyle = .roundedRect + let h = font.lineHeight * 1.5 + let w = (UIApplication.shared.keyWindow?.bounds.width ?? UIScreen.main.bounds.width) * 0.50 + textField.addConstraint(NSLayoutConstraint(item:textField, attribute:.height, relatedBy:.equal, toItem:nil, attribute:.notAnAttribute, multiplier:1.0, constant:h)) + textField.addConstraint(NSLayoutConstraint(item:textField, attribute:.width, relatedBy:.greaterThanOrEqual, toItem:nil, attribute:.notAnAttribute, multiplier:1.0, constant:w)) + textFields = textFields ?? [] + textFields?.append(textField) + configurationHandler?(textField) + stack.addArrangedSubview(textField) + } + + // MARK: load + + override func viewDidLoad() { + super.viewDidLoad() + + // setup a tap to dissmiss + #if os(tvOS) + let tap = UITapGestureRecognizer(target:self, action: #selector(tapBackgroundToDismiss(_:))) + tap.allowedPressTypes = [.menu] + view.addGestureRecognizer(tap) + #else + view.addGestureRecognizer(UITapGestureRecognizer(target:self, action: #selector(tapBackgroundToDismiss(_:)))) + #endif + + // *maybe* convert into a two-collumn stack + let traits = UIApplication.shared.keyWindow?.traitCollection + if actions.count >= 8 && textFields == nil && + (traits?.verticalSizeClass == .compact || traits?.horizontalSizeClass == .regular) { + doubleStack() + } + + let menu = UIView() + menu.addSubview(stack) + view.addSubview(menu) + + menu.layer.cornerRadius = _inset + menu.backgroundColor = isFullscreen ? _backgroundColor : nil + view.backgroundColor = (isFullscreen && !_blurFullscreen) ? _fullscreenColor : nil + + #if os(iOS) + if _blurFullscreen && isFullscreen { + let blur = UIVisualEffectView(effect: UIBlurEffect(style: .dark)) + blur.autoresizingMask = [.flexibleWidth, .flexibleHeight] + blur.frame = view.bounds; + view.insertSubview(blur, at: 0) + } + #endif + } + + // convert menu to two columns + private func doubleStack() { + + // dont merge non destructive or cancel items + let count = actions.firstIndex(where: {$0.style != .default}) ?? actions.count + let n = count / 2 + self.doubleStackHeight = n // remember this + + let spacing = self.spacing + for i in 0.. Int? { + let idx = tag - 8675309 + return actions.indices.contains(idx) ? idx : nil + } + private func idx2tag(_ idx:Int) -> Int { + return idx + 8675309 + } + + internal func button(for action:UIAlertAction?) -> UIButton? { + if let action = action, let idx = actions.firstIndex(of:action) { + if let btn = stack.viewWithTag(idx2tag(idx)) as? UIButton { + return btn + } + } + return nil + } + + private func action(for button:UIButton?) -> UIAlertAction? { + if let button = button, let idx = tag2idx(button.tag) { + return actions[idx] + } + return nil + } + + @objc func buttonPress(_ sender:UIButton?) { + guard let action = action(for: sender) else {return} + if autoDismiss { + cancelAction = nil // if we did the dismiss clear this + self.presentingViewController?.dismiss(animated:true, completion: { + action.callActionHandler() + }) + } + else { + action.callActionHandler() + } + } + @objc func buttonTap(_ sender:UITapGestureRecognizer) { + buttonPress(sender.view as? UIButton) + } + + private func makeButton(_ action:UIAlertAction) -> UIView { + guard let idx = actions.firstIndex(of:action) else {fatalError()} + + let btn = TVButton() + btn.tag = idx2tag(idx) + btn.setAttributedTitle(NSAttributedString(string:action.title ?? "", attributes:[.font:self.font]), for: .normal) + btn.setTitleColor(UIColor.white, for: .normal) + btn.setTitleColor(UIColor.gray, for: .disabled) + + let spacing = self.spacing + btn.contentEdgeInsets = UIEdgeInsets(top:spacing, left:spacing*2, bottom:spacing, right:spacing*2) + + if let image = action.getImage() { + btn.tintColor = .white + btn.setImage(image, for: .normal) + btn.contentEdgeInsets = UIEdgeInsets(top:spacing, left:spacing*2, bottom:spacing, right:spacing*3) + btn.titleEdgeInsets = UIEdgeInsets(top:0, left:spacing, bottom:0, right:-spacing) + #if os(tvOS) + btn.imageView?.adjustsImageWhenAncestorFocused = false + #endif + } + + btn.setGrowDelta(_inset * 0.25, for: .focused) + btn.setGrowDelta(_inset * 0.25, for: .selected) + + let h = font.lineHeight * 1.5 + btn.addConstraint(NSLayoutConstraint(item:btn, attribute:.height, relatedBy:.equal, toItem:nil, attribute:.notAnAttribute, multiplier:1.0, constant:h)) + btn.layer.cornerRadius = h/4 + + btn.addTarget(self, action: #selector(buttonPress(_:)), for: .primaryActionTriggered) + + if action.style == .destructive { + btn.backgroundColor = _destructiveButtonColor + btn.setBackgroundColor(_destructiveButtonColor.withAlphaComponent(1), for:.focused) + btn.setBackgroundColor(_destructiveButtonColor.withAlphaComponent(1), for:.highlighted) + btn.setBackgroundColor(_destructiveButtonColor.withAlphaComponent(1), for:.selected) + } + else { + btn.backgroundColor = _defaultButtonColor + } + + return btn + } + + // MARK: dismiss + + @objc func afterDismiss() { + cancelAction?.callActionHandler() + } + override func viewDidDisappear(_ animated: Bool) { + super.viewDidDisappear(animated) + self.perform(#selector(afterDismiss), with:nil, afterDelay:0) + } + @objc func tapBackgroundToDismiss(_ sender:UITapGestureRecognizer) { + #if os(iOS) + let pt = sender.location(in: self.view) + if view.subviews.last?.frame.contains(pt) == true { + return; + } + #endif + // only automaticly dismiss if there is a cancel button + if cancelAction != nil && autoDismiss { + presentingViewController?.dismiss(animated:true, completion:nil) + } + } + + // MARK: focus + + override var preferredFocusEnvironments: [UIFocusEnvironment] { + + // if we have a preferredAction make that the first to get focus, but we gotta find it. + if let button = button(for: preferredAction) { + return [button] + } + + return super.preferredFocusEnvironments + } + + #if os(iOS) + // if we dont have a FocusSystem then select the preferredAction + // TODO: detect focus sytem on iPad iOS 15+ ??? + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + if let button = preferredFocusEnvironments.first as? TVButton { + button.isSelected = true + } + } + #endif + + // MARK: zoom in and zoom out + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + // get the content view, dont animate if we are in a popup + if let content = view.subviews.last, isFullscreen { + let size = preferredContentSize + let scale = min(1.0, min(view.bounds.size.width * 0.95 / size.width, view.bounds.size.height * 0.95 / size.height)) + + content.transform = CGAffineTransform(scaleX:0.001, y:0.001) + UIView.animate(withDuration: _animateDuration) { + content.transform = CGAffineTransform(scaleX:scale, y:scale) + } + } + } + + #if os(iOS) + override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + + if let content = view.subviews.last, isFullscreen { + UIView.animate(withDuration: _animateDuration) { + content.transform = CGAffineTransform(scaleX:0.001, y:0.001) + } + } + } + #endif +} + +// MARK: UIAlertAction + +private extension UIAlertAction { + func callActionHandler() { + if let handler = self.value(forKey:"handler") as? NSObject { + unsafeBitCast(handler, to:(@convention(block) (UIAlertAction)->Void).self)(self) + } + } +} + +extension UIAlertAction { + convenience init(title: String, symbol:String, style: UIAlertAction.Style, handler: @escaping ((UIAlertAction) -> Void)) { + self.init(title: title, style: style, handler: handler) +#if os(iOS) + if #available(iOS 13.0, tvOS 13.0, *) { + if let image = UIImage(systemName: symbol, withConfiguration: UIImage.SymbolConfiguration(font: _font)) { + self.setValue(image, forKey: "image") + } + } +#endif + } + func getImage() -> UIImage? { + if #available(iOS 13.0, tvOS 13.0, *) { + return self.value(forKey: "image") as? UIImage + } + else { + return nil + } + } +} + +// MARK: MENU + +#if os(iOS) +extension UIAlertControllerProtocol { + + // convert a UIAlertController to a UIMenu so it can be used as a context menu + @available(iOS 13.0, *) + func convertToMenu() -> UIMenu { + + // convert UIAlertActions to UIActions via compactMap + let menu_actions = self.actions.compactMap { (alert_action) -> UIAction? in + + // filter out .cancel actions for action sheets, keep them for alerts + if self.preferredStyle == .actionSheet && alert_action.style == .cancel { + return nil + } + + let title = alert_action.title ?? "" + let attributes = (alert_action.style == .destructive) ? UIMenuElement.Attributes.destructive : [] + return UIAction(title: title, image:alert_action.getImage(), attributes: attributes) { _ in + alert_action.callActionHandler() + } + } + + return UIMenu(title: (self.title ?? ""), children: menu_actions) + } +} +#endif + +// MARK: Button + +extension UIControl.State : Hashable {} + +private class TVButton : UIButton { + + convenience init() { + self.init(type:.custom) + } + + override func didMoveToWindow() { + + // these are the defaults if not set + _color[.normal] = _color[.normal] ?? backgroundColor ?? .gray + _color[.focused] = _color[.focused] ?? superview?.tintColor + _color[.highlighted] = _color[.highlighted] ?? superview?.tintColor + _color[.selected] = _color[.selected] ?? superview?.tintColor + + _grow[.focused] = _grow[.focused] ?? 16.0 + _grow[.highlighted] = _grow[.highlighted] ?? 0.0 + _grow[.selected] = _grow[.selected] ?? 16.0 + + if layer.cornerRadius == 0.0 { + layer.cornerRadius = 12.0 + } + update() + } + + private var _color = [UIControl.State:UIColor]() + func setBackgroundColor(_ color:UIColor, for state: UIControl.State) { + _color[state] = color + if self.window != nil { update() } + } + func getBackgroundColor(for state: UIControl.State) -> UIColor? { + return _color[state] ?? _color[state.subtracting([.focused, .selected])] ?? _color[state.subtracting(.highlighted)] ?? _color[.normal] ?? self.backgroundColor + } + + private var _grow = [UIControl.State:CGFloat]() + func setGrowDelta(_ scale:CGFloat, for state: UIControl.State) { + _grow[state] = scale + if self.window != nil { update() } + } + func getGrowDelta(for state: UIControl.State) -> CGFloat { + return _grow[state] ?? _grow[state.subtracting([.focused, .selected])] ?? _grow[state.subtracting(.highlighted)] ?? _grow[.normal] ?? 0.0 + } + + private func update() { + self.backgroundColor = getBackgroundColor(for: self.state) + if self.bounds.width != 0 { + let scale = min(1.04, 1.0 + getGrowDelta(for: state) / (self.bounds.width * 0.5)) + self.transform = CGAffineTransform(scaleX: scale, y: scale) + } + } + override var isHighlighted: Bool { + didSet { + UIView.animate(withDuration: _animateDuration) { + self.update() + } + } + } + override var isSelected: Bool { + didSet { + UIView.animate(withDuration: _animateDuration) { + self.update() + } + } + } + override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) { + coordinator.addCoordinatedAnimations({ + self.update() + }, completion: nil) + } +} + +// MARK: ControllerButtonPress + +#if os(iOS) + +extension TVAlertController : ControllerButtonPress { + +} + +extension UIAlertController : ControllerButtonPress { + func controllerButtonPress(_ type: ButtonType) { + switch type { + case .select: // (aka A or ENTER) + dismiss(with: preferredAction, animated: true) + case .back: // (aka B or ESC) + let cancelAction = actions.first(where: {$0.style == .cancel}) + dismiss(with: cancelAction, animated: true) + default: + break + } + } + private func dismiss(with action:UIAlertAction?, animated: Bool) { + if let action = action { + presentingViewController?.dismiss(animated: animated, completion: { + action.callActionHandler() + }) + } + } +} + +#endif + diff --git a/ProvenanceTV/TVAssets.xcassets/Contents.json b/ProvenanceTV/TVAssets.xcassets/Contents.json index da4a164c91..73c00596a7 100644 --- a/ProvenanceTV/TVAssets.xcassets/Contents.json +++ b/ProvenanceTV/TVAssets.xcassets/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/ProvenanceTV/TVAssets.xcassets/pv_dark_logo.imageset/Contents.json b/ProvenanceTV/TVAssets.xcassets/pv_dark_logo.imageset/Contents.json new file mode 100644 index 0000000000..7bf8c6403a --- /dev/null +++ b/ProvenanceTV/TVAssets.xcassets/pv_dark_logo.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "pv_dark_logo.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ProvenanceTV/TVAssets.xcassets/pv_dark_logo.imageset/pv_dark_logo.png b/ProvenanceTV/TVAssets.xcassets/pv_dark_logo.imageset/pv_dark_logo.png new file mode 100644 index 0000000000..a8a7e61db5 Binary files /dev/null and b/ProvenanceTV/TVAssets.xcassets/pv_dark_logo.imageset/pv_dark_logo.png differ diff --git a/ProvenanceTV/TVFullscreenController.swift b/ProvenanceTV/TVFullscreenController.swift new file mode 100644 index 0000000000..cf7c78e0a4 --- /dev/null +++ b/ProvenanceTV/TVFullscreenController.swift @@ -0,0 +1,82 @@ +// TVFullscreenController.swift +// Wombat +// +// show another view centered "as a popup" with a dimmed (or blured) background +// when you dont want the jarring fullscreen mode that you get with tvOS +// +// if the viewController does not have a preferedContentSize, use a default like a formSheet on iOS +// +// Created by Todd Laney on 22/01/2022. +// + +import UIKit + +class TVFullscreenController: UIViewController { + + // these are the PV defaults assuming Dark mode, etc. + private let _fullscreenColor = UIColor.black.withAlphaComponent(0.8) + private let _backgroundColor = UIColor.black + private let _inset = UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16) + private let _borderWidth = 4.0 + private let _cornerRadius = 16.0 + + convenience init(rootViewController:UIViewController, style:UIModalPresentationStyle = .overFullScreen) { + self.init(nibName:nil, bundle:nil) + + let back = UIView() + back.backgroundColor = rootViewController.view.backgroundColor ?? _backgroundColor + back.layer.borderWidth = _borderWidth + back.layer.cornerRadius = _cornerRadius + + if let nav = rootViewController as? UINavigationController { + nav.navigationBar.isTranslucent = false + nav.navigationBar.backgroundColor = UIColor.black.withAlphaComponent(0.8) + } + + back.addSubview(rootViewController.view) + view.addSubview(back) + addChild(rootViewController) + rootViewController.didMove(toParent:self) + + var size = rootViewController.preferredContentSize + if size == .zero { + size = CGSize(width:UIScreen.main.bounds.width * 0.5, height: UIScreen.main.bounds.height * 0.95) + } + size.width += (_inset.left + _inset.right) + size.height += (_inset.top + _inset.bottom) + preferredContentSize = size + + modalPresentationStyle = style // .overFullScreen OR .blurOverFullScreen + modalTransitionStyle = .crossDissolve + } + + override func viewWillLayoutSubviews() { + super.viewWillLayoutSubviews() + + if let content = view.subviews.first { + content.layer.borderColor = content.tintColor.cgColor + content.bounds = CGRect(origin:.zero, size:preferredContentSize) + content.center = CGPoint(x:view.bounds.midX, y:view.bounds.midY) + content.subviews.first?.frame = content.bounds.inset(by: _inset) + } + + if (modalPresentationStyle == .overFullScreen) { + view.backgroundColor = _fullscreenColor + } + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + // get the content view, bail if none + guard let content = view.subviews.first else {return} + + let size = preferredContentSize + let scale = min(1.0, min(view.bounds.size.width * 0.95 / size.width, view.bounds.size.height * 0.95 / size.height)) + + content.transform = CGAffineTransform(scaleX:0.001, y:0.001) + UIView.animate(withDuration: 0.150) { + content.transform = CGAffineTransform(scaleX:scale, y:scale) + } + } +} diff --git a/ProvenanceTV/en.lproj/Info.plist b/ProvenanceTV/en.lproj/Info.plist index 62ef47ca33..d9618da34c 100644 --- a/ProvenanceTV/en.lproj/Info.plist +++ b/ProvenanceTV/en.lproj/Info.plist @@ -17,6 +17,7 @@ CFBundleLocalizations en + Spanish zh_CN CFBundleName @@ -94,8 +95,6 @@ audio processing - UIMainStoryboardFile - Provenance UIRequiredDeviceCapabilities arm64 diff --git a/ProvenanceTV/es.lproj/Info.plist b/ProvenanceTV/es.lproj/Info.plist new file mode 100644 index 0000000000..62ef47ca33 --- /dev/null +++ b/ProvenanceTV/es.lproj/Info.plist @@ -0,0 +1,121 @@ + + + + + ALTDeviceID + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + $(APP_DISPLAY_NAME) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleLocalizations + + en + zh_CN + + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleURLName + com.provenance + CFBundleURLSchemes + + provenance + + + + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + GCSupportedGameControllers + + + ProfileName + ExtendedGamepad + + + ProfileName + MicroGamepad + + + ProfileName + DirectionalGamepad + + + GCSupportsControllerUserInteraction + + GCSupportsMultipleMicroGamepads + + GitBranch + + GitDate + + GitTag + + LSApplicationCategoryType + public.app-category.games + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + NSBluetoothAlwaysUsageDescription + Provenance uses Bluetooth to support game controllers. + NSBonjourServices + + _altserver._tcp + + NSLocalNetworkUsageDescription + Provenance uses the local network to find and communicate with AltServer. + NSUserActivityTypes + + org.provenance-emu.webserver + org.provenance-emu.game.play + + Revision + f9c61252 + UIBackgroundModes + + audio + processing + + UIMainStoryboardFile + Provenance + UIRequiredDeviceCapabilities + + arm64 + + UIUserInterfaceStyle + Dark + UTExportedTypeDeclarations + + + UTTypeConformsTo + + + + UTTypeIdentifier + + UTTypeTagSpecification + + + + appcenter + 7d623115-99d6-439e-8e3a-9f2d0b1fbc02 + + diff --git a/ProvenanceTV/it.lproj/Info.plist b/ProvenanceTV/it.lproj/Info.plist new file mode 100644 index 0000000000..d9618da34c --- /dev/null +++ b/ProvenanceTV/it.lproj/Info.plist @@ -0,0 +1,120 @@ + + + + + ALTDeviceID + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + $(APP_DISPLAY_NAME) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleLocalizations + + en + Spanish + zh_CN + + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleURLName + com.provenance + CFBundleURLSchemes + + provenance + + + + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + GCSupportedGameControllers + + + ProfileName + ExtendedGamepad + + + ProfileName + MicroGamepad + + + ProfileName + DirectionalGamepad + + + GCSupportsControllerUserInteraction + + GCSupportsMultipleMicroGamepads + + GitBranch + + GitDate + + GitTag + + LSApplicationCategoryType + public.app-category.games + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + NSBluetoothAlwaysUsageDescription + Provenance uses Bluetooth to support game controllers. + NSBonjourServices + + _altserver._tcp + + NSLocalNetworkUsageDescription + Provenance uses the local network to find and communicate with AltServer. + NSUserActivityTypes + + org.provenance-emu.webserver + org.provenance-emu.game.play + + Revision + f9c61252 + UIBackgroundModes + + audio + processing + + UIRequiredDeviceCapabilities + + arm64 + + UIUserInterfaceStyle + Dark + UTExportedTypeDeclarations + + + UTTypeConformsTo + + + + UTTypeIdentifier + + UTTypeTagSpecification + + + + appcenter + 7d623115-99d6-439e-8e3a-9f2d0b1fbc02 + + diff --git a/ProvenanceTV/ja.lproj/Info.plist b/ProvenanceTV/ja.lproj/Info.plist new file mode 100644 index 0000000000..d9618da34c --- /dev/null +++ b/ProvenanceTV/ja.lproj/Info.plist @@ -0,0 +1,120 @@ + + + + + ALTDeviceID + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + $(APP_DISPLAY_NAME) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleLocalizations + + en + Spanish + zh_CN + + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleURLName + com.provenance + CFBundleURLSchemes + + provenance + + + + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + GCSupportedGameControllers + + + ProfileName + ExtendedGamepad + + + ProfileName + MicroGamepad + + + ProfileName + DirectionalGamepad + + + GCSupportsControllerUserInteraction + + GCSupportsMultipleMicroGamepads + + GitBranch + + GitDate + + GitTag + + LSApplicationCategoryType + public.app-category.games + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + NSBluetoothAlwaysUsageDescription + Provenance uses Bluetooth to support game controllers. + NSBonjourServices + + _altserver._tcp + + NSLocalNetworkUsageDescription + Provenance uses the local network to find and communicate with AltServer. + NSUserActivityTypes + + org.provenance-emu.webserver + org.provenance-emu.game.play + + Revision + f9c61252 + UIBackgroundModes + + audio + processing + + UIRequiredDeviceCapabilities + + arm64 + + UIUserInterfaceStyle + Dark + UTExportedTypeDeclarations + + + UTTypeConformsTo + + + + UTTypeIdentifier + + UTTypeTagSpecification + + + + appcenter + 7d623115-99d6-439e-8e3a-9f2d0b1fbc02 + + diff --git a/ProvenanceTV/nl.lproj/Info.plist b/ProvenanceTV/nl.lproj/Info.plist new file mode 100644 index 0000000000..d9618da34c --- /dev/null +++ b/ProvenanceTV/nl.lproj/Info.plist @@ -0,0 +1,120 @@ + + + + + ALTDeviceID + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + $(APP_DISPLAY_NAME) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleLocalizations + + en + Spanish + zh_CN + + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleURLName + com.provenance + CFBundleURLSchemes + + provenance + + + + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + GCSupportedGameControllers + + + ProfileName + ExtendedGamepad + + + ProfileName + MicroGamepad + + + ProfileName + DirectionalGamepad + + + GCSupportsControllerUserInteraction + + GCSupportsMultipleMicroGamepads + + GitBranch + + GitDate + + GitTag + + LSApplicationCategoryType + public.app-category.games + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + NSBluetoothAlwaysUsageDescription + Provenance uses Bluetooth to support game controllers. + NSBonjourServices + + _altserver._tcp + + NSLocalNetworkUsageDescription + Provenance uses the local network to find and communicate with AltServer. + NSUserActivityTypes + + org.provenance-emu.webserver + org.provenance-emu.game.play + + Revision + f9c61252 + UIBackgroundModes + + audio + processing + + UIRequiredDeviceCapabilities + + arm64 + + UIUserInterfaceStyle + Dark + UTExportedTypeDeclarations + + + UTTypeConformsTo + + + + UTTypeIdentifier + + UTTypeTagSpecification + + + + appcenter + 7d623115-99d6-439e-8e3a-9f2d0b1fbc02 + + diff --git a/ProvenanceTV/ru.lproj/Info.plist b/ProvenanceTV/ru.lproj/Info.plist new file mode 100644 index 0000000000..d9618da34c --- /dev/null +++ b/ProvenanceTV/ru.lproj/Info.plist @@ -0,0 +1,120 @@ + + + + + ALTDeviceID + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + $(APP_DISPLAY_NAME) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleLocalizations + + en + Spanish + zh_CN + + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleURLName + com.provenance + CFBundleURLSchemes + + provenance + + + + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + GCSupportedGameControllers + + + ProfileName + ExtendedGamepad + + + ProfileName + MicroGamepad + + + ProfileName + DirectionalGamepad + + + GCSupportsControllerUserInteraction + + GCSupportsMultipleMicroGamepads + + GitBranch + + GitDate + + GitTag + + LSApplicationCategoryType + public.app-category.games + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + NSBluetoothAlwaysUsageDescription + Provenance uses Bluetooth to support game controllers. + NSBonjourServices + + _altserver._tcp + + NSLocalNetworkUsageDescription + Provenance uses the local network to find and communicate with AltServer. + NSUserActivityTypes + + org.provenance-emu.webserver + org.provenance-emu.game.play + + Revision + f9c61252 + UIBackgroundModes + + audio + processing + + UIRequiredDeviceCapabilities + + arm64 + + UIUserInterfaceStyle + Dark + UTExportedTypeDeclarations + + + UTTypeConformsTo + + + + UTTypeIdentifier + + UTTypeTagSpecification + + + + appcenter + 7d623115-99d6-439e-8e3a-9f2d0b1fbc02 + + diff --git a/ProvenanceTV/zh-Hans.lproj/Info.plist b/ProvenanceTV/zh-Hans.lproj/Info.plist index 54e02c005a..ab104dcb97 100644 --- a/ProvenanceTV/zh-Hans.lproj/Info.plist +++ b/ProvenanceTV/zh-Hans.lproj/Info.plist @@ -50,6 +50,8 @@ GCSupportsControllerUserInteraction + GCSupportsMultipleMicroGamepads + GitBranch GitDate diff --git a/Scripts/set_bundle_build_number.sh b/Scripts/set_bundle_build_number.sh index e109340351..ce87d4710b 100755 --- a/Scripts/set_bundle_build_number.sh +++ b/Scripts/set_bundle_build_number.sh @@ -24,6 +24,7 @@ GIT_DATE=`git log -1 --format="%cd" --date="local"` GIT_BRANCH=`git name-rev --name-only HEAD` PLISTBUDDY="/usr/libexec/PlistBuddy" +PLUTIL="/usr/bin/PlistBuddy" # plist_buddy_installed() { # [-x "$(command -v "$PLISTBUDDY")"] @@ -50,6 +51,8 @@ revision=$(git rev-parse --short HEAD) # Use the built products dir so GIT doesn't want to constantly upload a changed Info.plist in the code directory - jm $PLISTBUDDY -c "Set :Revision $revision" "${plistPath}" +$PLUTIL -replace "ICLOUD_CONTAINER_IDENTIFIER" -string "DICK" "${plistPath}" + echo "Updated app plist with git data." echo "TAG: ${GIT_TAG}, DATE: ${GIT_DATE}, BRANCH: ${GIT_BRANCH}, REVISION: $revision" echo "Plist path: ${plistPath}" @@ -58,4 +61,4 @@ echo "Plist path: ${plistPath}" echo "Storing $GIT_DATE to ${vpath}" echo "$GIT_DATE" > "${vpath}" -success_exit "Finished setting build number" \ No newline at end of file +success_exit "Finished setting build number" diff --git a/Spotlight/Info.plist b/Spotlight/Info.plist index dc19ca8298..991365ed31 100644 --- a/Spotlight/Info.plist +++ b/Spotlight/Info.plist @@ -11,7 +11,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) + $(SPOTLIGHT_PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/Spotlight-Bridging-Header.h b/Spotlight/Spotlight-Bridging-Header.h similarity index 100% rename from Spotlight-Bridging-Header.h rename to Spotlight/Spotlight-Bridging-Header.h diff --git a/Spotlight/Spotlight.entitlements b/Spotlight/Spotlight.entitlements index 11e4dbb3f0..68a8956be3 100644 --- a/Spotlight/Spotlight.entitlements +++ b/Spotlight/Spotlight.entitlements @@ -4,7 +4,7 @@ com.apple.developer.icloud-container-identifiers - iCloud.org.provenance-emu.provenance + $(ICLOUD_CONTAINER_IDENTIFIER) com.apple.developer.icloud-services @@ -12,7 +12,7 @@ com.apple.developer.ubiquity-container-identifiers - iCloud.org.provenance-emu.provenance + $(ICLOUD_CONTAINER_IDENTIFIER) com.apple.developer.ubiquity-kvstore-identifier $(TeamIdentifierPrefix)$(CFBundleIdentifier) @@ -20,7 +20,7 @@ com.apple.security.application-groups - group.org.provenance-emu + $(APP_GROUP_IDENTIFIER) com.apple.security.network.client diff --git a/TopShelf/Info.plist b/TopShelf/Info.plist index 0e44f1f317..b8f684dcc0 100644 --- a/TopShelf/Info.plist +++ b/TopShelf/Info.plist @@ -11,7 +11,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) + $(TOPSHELF_PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/TopShelf-Bridging-Header.h b/TopShelf/TopShelf-Bridging-Header.h similarity index 100% rename from TopShelf-Bridging-Header.h rename to TopShelf/TopShelf-Bridging-Header.h diff --git a/TopShelf/TopShelf.entitlements b/TopShelf/TopShelf.entitlements index ff441e14b9..8f798dea36 100644 --- a/TopShelf/TopShelf.entitlements +++ b/TopShelf/TopShelf.entitlements @@ -8,7 +8,7 @@ $(TeamIdentifierPrefix)$(CFBundleIdentifier) com.apple.security.application-groups - group.org.provenance-emu + $(APP_GROUP_IDENTIFIER) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index c4ddec1f35..5c5139d354 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -61,7 +61,7 @@ jobs: inputs: scheme: '$(scheme)' xcWorkspacePath: '$(xcWorkspacePath)' - xcodeDeveloperDir: /Applications/Xcode_13.0.app/Contents/Developer + xcodeDeveloperDir: /Applications/Xcode_13.2.1.app/Contents/Developer xcodeVersion: specifyPath exportPath: '$(agent.buildDirectory)/output/$(sdk)/$(configuration)' packageApp: false @@ -103,28 +103,29 @@ jobs: # #releaseNotesFile: # Required when releaseNotesOption == File # #isMandatory: false # Optional # #distributionGroupId: # Optional -- job: tvOS - steps: - - checkout: self # self represents the repo where the initial Pipelines YAML file was found - clean: false # if true, run `execute git clean -ffdx && git reset --hard HEAD` before fetching - submodules: recursive # set to 'true' for a single level of submodules or 'recursive' to get submodules of submodules; defau - - task: Xcode@5 - inputs: - configuration: Debug - destinationPlatform: 'tvOS' - destinationSimulators: 'Apple TV 4K' - xcodeDeveloperDir: /Applications/Xcode_13.0.app/Contents/Developer - xcodeVersion: specifyPath - #exportMethod: '$(ExportMethod)' - #exportPath: '$(agent.buildDirectory)/output/appletvos/$(configuration)' - packageApp: false - scheme: 'ProvenanceTV' - sdk: 'appletvsimulator' - useXcpretty: true - xcWorkspacePath: '$(xcWorkspacePath)' - clean: false - displayName: Building project $(scheme) - tvOS - env: - sdk: 'appletvsimulator' # appletvsimulator, appletvos - scheme: 'ProvenanceTV' - destinationPlatformOption: tvOS +# - job: tvOS +# steps: +# - checkout: self # self represents the repo where the initial Pipelines YAML file was found +# clean: false # if true, run `execute git clean -ffdx && git reset --hard HEAD` before fetching +# submodules: recursive # set to 'true' for a single level of submodules or 'recursive' to get submodules of submodules; defau +# - task: Xcode@5 +# inputs: +# configuration: Debug +# destinationPlatform: 'tvOS' +# destinationSimulators: 'Apple TV 4K' +# xcodeDeveloperDir: /Applications/Xcode_13.2.1.app/Contents/Developer +# xcodeVersion: specifyPath +# #exportMethod: '$(ExportMethod)' +# #exportPath: '$(agent.buildDirectory)/output/appletvos/$(configuration)' +# packageApp: false +# scheme: 'ProvenanceTV-Azure' +# sdk: 'appletvsimulator' +# destinationTypeOption: 'simulators' +# useXcpretty: true +# xcWorkspacePath: '$(xcWorkspacePath)' +# clean: false +# displayName: Building project $(scheme) - tvOS +# env: +# sdk: 'appletvsimulator' # appletvsimulator, appletvos +# scheme: 'ProvenanceTV' +# destinationPlatformOption: tvOS