Commit Graph

57 Commits

Author SHA1 Message Date
Riley Testut
ec336c39db [Delta Sync] Fixes incorrectly marking some GameSaves as conflicted during initial sync
Fixes an edge case where updating from Delta 1.4.x to Delta 1.5 could result in false-conflicts if user had previously updated to Delta 1.5 in the past (including betas). This is because GameSaves updated on 1.5 have a new `sha1` field, which changes the hash for the whole record.
2024-01-17 18:35:53 -06:00
Riley Testut
d5f910ff00 Adds missing throws to SaveState.awakeFromSync() 2023-08-11 18:57:28 -05:00
Riley Testut
d1643dbc8f Throws SyncValidationError when downloading corrupted versions of “verified” SaveStates
After reviewing save states upon first launch, Delta will upload the verified game ID as metadata to ensure other devices don’t download remote versions with incorrect relationships.
2023-08-11 18:57:27 -05:00
Riley Testut
061f5abd3e Allows explicitly downloading corrupted record versions from RecordVersionsViewController 2023-08-10 19:33:27 -05:00
Riley Testut
fcdd3c7840 Throws SyncValidationError when downloading corrupted Game or GameSave record 2023-08-10 19:33:27 -05:00
Riley Testut
3227ee4c49 Migrates Core Data model from v6 to v7 2023-07-10 16:09:07 -05:00
Riley Testut
15e228f287 Adds GameSave.sha1 to sync hash between devices
Fixes redundant record uploads post-sync due to comparing hashes against locally-cached hash via extended attributes.
2023-06-28 13:33:16 -05:00
Riley Testut
707116a39b Automatically resolves Cheat + ControllerSkin sync conflicts 2023-06-27 18:58:41 -05:00
Riley Testut
7b9ab2488e Fixes accidentally deleting Games directory during sync in rare circumstances
If a Game with empty filename happens to be deleted (e.g. during sync merge), it will accidentally delete the *entire* Games folder due to its fileURL being “Games/[empty]”.

To prevent this, we now explicitly check that a Game’s identifier isn’t empty AND that that Game.fileURL doesn’t point to a directory before deleting local files.
2023-05-02 14:29:23 -05:00
Riley Testut
39522fda58 [Experimental Feature] Supports AirPlay controller skins
Allows users to customize controller skin when AirPlaying games to an external display.
2023-04-27 14:58:51 -05:00
Riley Testut
1137189b57 Adds Nintendo DS AirPlay settings to customize how games appear on TV
* Top Screen Only = Shows just the top screen on TV
* Layout Horizontally = Places screens side-by-side on TV (instead of stacked vertically)
2023-04-26 16:07:17 -05:00
Riley Testut
ea871c7520 Removes unnecessary ControllerSkin.inputs(for:at:)
ControllerSkinProtocol no longer requires this method, so we can just remove it.
2022-08-12 19:26:13 -05:00
Riley Testut
17e1bf710b Dynamically maps outdated artwork URLs to correct URLs 2021-12-02 13:12:07 -08:00
Riley Testut
98ed657f8a Improves support for transparent and/or rotated custom artwork 2021-03-10 14:14:14 -06:00
Riley Testut
bf2461fae1 Enables syncing DS(i) BIOS files
Excludes DSi NAND for now, since it is ~240MB and Harmony can’t selectively download files (yet).
2021-02-18 13:45:49 -06:00
Riley Testut
c67b72068a Adds missing imports 2021-02-09 12:26:16 -06:00
Riley Testut
c7329136ac Supports touch inputs when external controller is connected 2020-12-10 15:34:16 -06:00
Riley Testut
358accbcb7 Adds DSi support
Requires DSi BIOS files.
2020-11-24 13:06:29 -06:00
Riley Testut
e11e4437c5 Adds coreID to SaveState’s Harmony metadata for backwards compatibility 2020-04-27 13:03:28 -07:00
Riley Testut
01320b4dec Adds SaveState.coreIdentifier to filter out save states from other cores
Prevents DeSmuME save states from appearing while using melonDS core and vice versa.
2020-04-23 17:24:04 -07:00
Riley Testut
77da71cd62 Adds “Home Screen” DS game to boot into DS main menu 2020-04-23 17:18:59 -07:00
Riley Testut
4ba2fa8d21 Adds support for new Nintendo DS controller skin 2020-02-11 16:34:57 -08:00
Riley Testut
89db6b0d3a Migrates from Core Data model v4 to v5 2020-02-11 15:59:47 -08:00
Riley Testut
0373b757f7 Adds ability to assign controller skins per game 2020-02-07 15:57:11 -08:00
Riley Testut
a0f60de926 Dynamically maps old album artwork URLs to new ones 2019-12-11 16:11:25 -08:00
Riley Testut
ef64a15e37 Adds ability to reset controller mappings to default mapping 2019-09-30 17:27:06 -07:00
Riley Testut
eaae38481e Uses NSSecureUnarchiveFromData for transformable properties 2019-09-19 13:30:49 -07:00
Riley Testut
1e350e1369 Automatically resolves GameCollection + GameControllerInputMapping conflicts 2019-09-19 13:29:51 -07:00
Riley Testut
9b28d42814 Updates input + video logic to support revised DeltaCore API
- Continuous inputs
- OpenGLES-based rendering
- Thumbsticks in controller skins
2019-04-30 15:42:30 -07:00
Riley Testut
9bebfd6415 Resets previous Harmony beta database upon first launch 2019-03-25 17:18:50 -07:00
Riley Testut
3b7cb49d89 Adds support for migrating to latest Core Data model from any previous version 2019-01-31 12:19:34 -08:00
Riley Testut
3bd0a35c61 Adds support for syncing GameSaves 2019-01-29 15:07:46 -08:00
Riley Testut
bace668739 Adds SyncResultViewController to view errors that occured during sync 2018-12-04 17:21:04 -08:00
Riley Testut
eaa8429bd8 Adds SaveState.localizedName 2018-12-04 17:06:42 -08:00
Riley Testut
9a186ffea9 Changes Cheat.name to non-optional 2018-12-04 17:05:14 -08:00
Riley Testut
5354d779c1 Adds SyncStatusViewController to view basic sync status of games 2018-11-20 13:04:55 -06:00
Riley Testut
a3108e6c3a Adds support for syncing GameControllerInputMappings 2018-11-14 15:36:16 -08:00
Riley Testut
557529b1e7 Adds support for syncing ControllerSkins 2018-11-14 14:26:19 -08:00
Riley Testut
5b64ca7c7b Adds support for syncing Cheats 2018-11-14 14:10:19 -08:00
Riley Testut
fb9272cd6c Adds support for syncing SaveStates 2018-11-14 13:42:36 -08:00
Riley Testut
f858a3eb07 Adds support for syncing Games and GameCollections 2018-11-14 13:18:48 -08:00
Riley Testut
746ed9638b Changes Game.gameCollections to single Game.gameCollection 2018-11-13 16:13:03 -08:00
Riley Testut
a9c3e85df8 Adds support for 3D Touch app icon game shortcuts 2018-01-04 14:17:59 -06:00
Riley Testut
18d6bd262a Adds support for iPhone X-optimized controller skins 2017-12-19 01:54:10 -06:00
Riley Testut
19d438f566 Fixes issue where database from beta 4 failed to migrate correctly 2017-10-16 20:37:51 -07:00
Riley Testut
6d2208a0f8 Updates project structure to match and automatically keep in sync with file system 2017-10-12 15:54:55 -07:00
Riley Testut
fb11f6dec7 Replaces fileprivate with private. THANK FUCKING GOD. 2017-10-12 15:33:16 -07:00
Riley Testut
61440ef994 Adds support for handling ActionInputs from GameControllers
• Quick Save
• Quick Load
• Fast Forward
2017-10-10 14:54:20 -07:00
Riley Testut
c6875c44b6 Renames Core Data model from Model to Delta 2017-09-28 19:25:20 -07:00
Riley Testut
94cbdbe159 Persists customized input mappings between app launches 2017-09-28 12:55:05 -07:00