Skip to content

Commit

Permalink
Merge branch 'release/2.1.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
JoeMatt committed Feb 16, 2022
2 parents 27375c6 + cbecf6f commit 89c558e
Show file tree
Hide file tree
Showing 458 changed files with 42,768 additions and 7,434 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -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
18 changes: 15 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
1 change: 1 addition & 0 deletions Build-iOS.xcconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "Build.xcconfig"
1 change: 1 addition & 0 deletions Build-tvOS.xcconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "Build.xcconfig"
1 change: 1 addition & 0 deletions Build-watchOS.xcconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "Build.xcconfig"
56 changes: 56 additions & 0 deletions Build.xcconfig
Original file line number Diff line number Diff line change
@@ -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
96 changes: 94 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand Down
39 changes: 39 additions & 0 deletions CodeSigning.xcconfig.sample
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion Cores/Atari800/Atari800Core/Source/ATR800GameCore.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,6 @@

@class OERingBuffer;

__attribute__((visibility("default")))
PVCORE
@interface ATR800GameCore : PVEmulatorCore <PV5200SystemResponderClient>
@end
21 changes: 21 additions & 0 deletions Cores/Atari800/Atari800Core/Source/ATR800GameCore.m
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Loading

0 comments on commit 89c558e

Please sign in to comment.