Delta-forks Feature Voting

Description

Items in each list are organized with the top item being the priority with the exception of the Possible features list, which is just a collection of ideas.


If you are interested in learning more about Delta's development, follow @rileytestut on Twitter or become a Patron!

You can also find people to answer questions at the r/Delta_Emulator subreddit or the subreddit's Discord.

If you would like to provide feedback about Delta, click this form.

If you would like to report a bug, follow the instructions on this form.

Organization

Members

Lists

Delta / Deltroid / Ignited

  1. Items in each list are organized with the top item being the priority with the exception of the Possible features list, which is just a collection of ideas.


    If you are interested in learning more about Delta's development, follow @rileytestut on Twitter or become a Patron!

    You can also find people to answer questions at the r/Delta_Emulator subreddit or the subreddit's Discord.

    If you would like to provide feedback about Delta, click this form.

    If you would like to report a bug, follow the instructions on this form.

  2. Labels

    • Known Issue
    • Core
    • Quality of Life
    • Enhancement
    • Platform
    • Specific Feature
    • Console
  3. @rileytestut1 's Delta: https://github.com/rileytestut/Delta
    @lit_ritt 's Ignited https://github.com/LitRitt
    @lonkle 's Deltroid: https://github.com/lonkelle/deltroid

Ignited-only Features

  1. Labels

    • Quality of Life
  2. Requires adding “series” to the skin spec and if the current skin doesn't have this value, then this button will swap thru all installed skins and save them to the game being played.

    This will allow for a `skin creator` to make a “set” theme for all consoles with the same label and users could install the bundle of skins at once and even - Delta could allow user to theme all their skins globally (choosing the “Lit Orange Skin Series” for example). Obviously every game gets its own skin choice so this is all about the “default” skins a game uses.

    Skin Spec Update Cards
    • https://trello.com/c/TLmArHhD/210-enhancement-allow-for-collections-in-the-skin-spec-so-a-user-can-change-multiple-consoles-skins-at-once?menu=filter&filter=skin
    • https://trello.com/c/42VJujoS/87-ehancement-custom-skins-that-appear-when-a-controller-is-connected?menu=filter&filter=skin
    • https://trello.com/c/dfDfkXdR/190-enhancement-a-special-dark-mode-flag-skin-in-the-spec-that-can-be-toggled-via-the-in-game-settings-menu?menu=filter&filter=skin
    • https://trello.com/c/GfwUFmAW/209-enhancement-add-to-the-deltacore-spec-an-enhanced-version-of-all-default-skins-utilizing-all-special-buttons?menu=filter&filter=skin

    Labels

    • Enhancement
    • Skins

Deltroid-only Features

  1. PR Link: https://github.com/rileytestut/Delta/pull/131

    I would say this also needs a "special" skin button to auto-open the Rewind States list, but the way Ian coded it actually makes the Rewind State page button-mappable via https://trello.com/c/BTvdcooT/237-enhancement-be-able-to-map-gamepad-buttons-to-in-game-menu-items

    Labels

    • Core
  2. PR Link:

    Backbone Controller
    New Buttons: R3, L3, Options, Home (hold orange backbone button)

    PS4 Controller
    New Buttons: Playstation Button, Share, Trackpad button, Analog Triggers

    Xbox Controller
    New Buttons: Xbox Button, Analog Triggers, Select

    Labels

    • Enhancement
    • Core
    • Controls
  3. As the Backbone can only be played in one singular orientation during gameplay, the orientation of the screen output should lock to left horizontal. The out of game Delta interfaces should honor the actual device orientation however since many users keep the Backone attached while using their phone right side up (at least I do a lot) to choose the game and settings.

    PR: Ian Clawson
    Bugfix: Joelle Stickney (added the condition so that it only locks when in left landscape rather than just locks the orientation as soon as the game starts or resumes).

    TODO 1:: Current code doesn’t check the external controller for the “connectedToLightning” flag even tho it's not called that, it's called something slightly different and I couldn't get it to work.

    Apple documentation of boolean: https://developer.apple.com/documentation/gamecontroller/gccontroller/1458868-isattachedtodevice

    var isAttachedToDevice: Bool { get }

    Where it needs to go: https://github.com/lonkelle/Deltroid/blob/440c748709ec971f0e2eba6203660b93613002b8/Delta/Emulation/GameViewController.swift#L175

    TODO 2: This ticket doesn't automatically rotate to the correct orientation, forcing left landscape orientation on the start of game (but does lock it as soon as it lands on the right orientation). This is technically possible, but is it really worth it? Only you, who are reading this rn, can decide.

    TODO 3: There should be a toast notification for this like the gyro one in the screenshot on this card. I can't remember if I even tried to make this happen, but it's gotta be just copy and pasting whatever code toasts the gyro string.

    Labels

    • Quality of Life
  4. FIX: When controller isn’t connected it should rotate whenev.

  5. PR Link:

    Labels

    • Core
    • Files / Syncing
  6. PR Link: https://github.com/rileytestut/N64DeltaCore/pull/5

    Labels

    • Multiplayer
    • Core
    • N64
  7. PR Link: https://github.com/rileytestut/GPGXDeltaCore/pull/1

    Labels

    • Multiplayer
    • Core
    • Genesis
  8. PR Link: https://github.com/rileytestut/NESDeltaCore/pull/2

    Labels

    • Multiplayer
    • Core
    • NES
  9. PR Link: https://github.com/rileytestut/SNESDeltaCore/pull/2

    Labels

    • Multiplayer
    • Core
    • SNES
  10. PR Link:

    Reference:
    https://discord.com/channels/625766896230334465/625766896695771137/799696189275635743 (Patron Discord)

    Labels

    • Known Issue
    • Quality of Life
    • SNES
  11. PR Link: https://github.com/rileytestut/Delta/pull/128

    Labels

    • Core

In Development for Deltroid

  1. When user is at the per-game settings screen, or the global settings screen, there should be a switch for "Use Enhanced Version of Skin".

    Maybe skin makers could use this in the spec too - but it seems more like a "built-in default skins" enhancement to me.

    Series of Skin Spec Updates
    • https://trello.com/c/TLmArHhD/210-enhancement-allow-for-collections-in-the-skin-spec-so-a-user-can-change-multiple-consoles-skins-at-once?menu=filter&filter=skin
    • https://trello.com/c/42VJujoS/87-ehancement-custom-skins-that-appear-when-a-controller-is-connected?menu=filter&filter=skin
    • https://trello.com/c/dfDfkXdR/190-enhancement-a-special-dark-mode-flag-skin-in-the-spec-that-can-be-toggled-via-the-in-game-settings-menu?menu=filter&filter=skin
    • https://trello.com/c/GfwUFmAW/209-enhancement-add-to-the-deltacore-spec-an-enhanced-version-of-all-default-skins-utilizing-all-special-buttons?menu=filter&filter=skin

    Labels

    • Skins
    • Enhancement
  2. Right now, Delta/Deltroid only properly work when compiled straight to an iOS device. It would be fantastic for speeding up UI work if we could build and test in the Simulator as well.

    Getting Simulator support on x86 Macs is relatively straightforward, however Delta relies on a few precompiled frameworks that don't support arm64 Macs. These libraries need to be either removed, or updated with later versions that do.

    Tasks:

    • Update Systems build script to automatically build for iOS or Simulator
    • Remove completely deprecated frameworks (mainly Fabric)
    • Update frameworks that do not have a Mac arm64 slice (Mainly GoogleSignIn)

    ‌

In Review for Deltroid

  1. Just like in GBA4iOS.

  2. PR Link #1: https://github.com/rileytestut/Delta/pull/119
    PR Link #2: https://github.com/rileytestut/DeltaCore/pull/31

    Optimize for AirPlaying games. For example, when a device is displaying its screen through airplay, it adjusts to fit the screen size and hides the touch controls on the display.

    Labels

    • Enhancement
  3. PR Link: https://github.com/rileytestut/DeltaCore/pull/28#event-4282169794

    Labels

    • Core
    • Quality of Life
  4. PR Link: https://github.com/rileytestut/Delta/pull/126

    Flows well into this card: https://trello.com/c/QsgLrwyd

    This should definitely be a button option for this card: https://trello.com/c/JgDxONsL

    Labels

    • Enhancement
    • Menu
  5. PR Link: https://github.com/rileytestut/Delta/pull/141

    Labels

    • Quality of Life
  6. PR Link: https://github.com/rileytestut/Delta/pull/100https://github.com/rileytestut/DeltaCore/pull/17

    Should have been overridden by @ianclawson's PR for reducing threshold for analog to d-pad translations (?).

    But maybe this could be used as a reference for this card:

    Labels

    • Known Issue
    • Preferences
  7. PR Link: https://github.com/rileytestut/Delta/pull/100

    This is NOT ready to be merged. As it is only half of the toggle switch code. The PR simply adds the "grey" dark mode. Work would have to be done to add a toggle switch in settings and switch between OLED (which is what we have now, as you can see from on the left side of the screenshot) and "grey) (right side of the screenshot).

    Labels

    • UI
    • Enhancement

Delta / Deltroid Bugs

  1. This occurs when you have an in-game save and you either load or save a state. It rewrites the “.sav” file and corrupts it somehow. This happens with no other system and is game breaking if someone depends on in-game saves and just so happens to save / load a state at the wrong time (they’ll lose their in-game saves).

    Labels

    • Known Issue
    • Core
  2. Labels

    • Known Issue
  3. Just disconnect and reconnect an external controller while in game until the skin disappears but the controller doesn’t do anything anyway. The only way to fix this is to go to Delta Settings and tap on the external controller (which is already automatically checked off despite not working) and once you manually tap it, it starts working in all of Delta.

    Screenshot is to show what the Delta settings look like when an external controller can’t control anything in Delta but it is still detected so the skin isn’t displayed.

    Tapping in Backbone one in the screenshot will remove the checkmark from the device leave screen and come back) as well as make the “Customize Buttons...” button appear which is what it should look like. This problem happens intermittently - not sure about the conditions.

    Labels

    • Known Issue
    • Core
    • Controls
  4. To test this, copy Mega Man 9’s first box art result from Google Search and try to paste it: https://www.google.com/search?q=mega+man+9+nes+box+art&prmd=isvxn&sxsrf=APq-WBum_sZxZ2yWjvNwdfijFq-Jee1NWQ:1643932640526&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiWycqo3uT1AhXfJzQIHeL7CqYQ_AUoAXoECAIQAQ&biw=375&bih=629&dpr=3

  5. Contra uses this to lock while shooting and the weird part is, sometimes Delta thinks mode is being pressed and other times it doesn’t depending on when you save your state and load it.

    Sunset Riders also requires it, if you want to play multiplayer. Single player works fine without holding it down, I think, but you can't even select 2 player mode unless you held down Mode at boot. King of the Monsters requires you to hold down M at start too. Also I found that with my EA 4-Way-Play, I needed to hold down the Mode button on any 6-button controller plugged into the third port in order for that controller to work correctly, oddly enough. This is true in NHL '97, at least. Holding Mode was not necessary for controllers in the other three ports.

    Also, some games do use the Mode button as a button ingame as a normal button that does something. The ones I know of that do this are as follows:

    Technoclash (Genesis)
    The Lost Vikings (Genesis)
    Battlecorps (Sega CD)
    Shadow Squadron (32X)
    Star Wars Arcade (32X)
    Metal Head (32X)

    The Mortal Kombat games (MK3 and UMK3 perhaps? I forget) with Kombat Kode entry screens may use Mode as well for kombat kode entry.

    Forgotten Worlds goes straight to the "game over" screen unless you hold the mode button down at boot up.

    Cursed Night uses it for gravity.

    Labels

    • Core
    • Known Issue
  6. Users can import directly from Delta itself or ANY other app except Files.app cannot share the file to Delta without the error shown on this card.

    This appears to be related to file extensions cause I can zip / compress any file and then share with Delta and it works. But if it’s an .nes file, it doesn’t work on some phones, but others it works fine.

    I think it’s dependent on the iOS version tbh. iOS 15 hasn’t had any issues like this on any of my three iPhones.

    Labels

    • Known Issue
    • Files / Syncing
  7. Labels

    • Known Issue
  8. The joystick on the left of the controller does not properly receive input. Specifically, it can only register up and down movements unless on the exact horizontal axis.

    Labels

    • Known Issue
    • Core
  9. NOTE: Synced custom artwork to the cloud does sync back to new installs despite the game not being in the DB anymore and when you import the “game that didn’t sync”, it’s custom artwork will be there (likely because it’s a 1:1 per game so it likely doesn’t need to be added to the DB since the file SHA1 will match the ROM.

    You could allow a user to attach the orphan save to any game they want (or delete the save) to solve this.

  10. This happens even if you "remap" an analog stick direction to it's pre-existing default mapping (read: N64). So, basically, if you map the left or right analog stick manually then the other side's analog stick will cease to function in that direction.

    IMPORTANT: This happens even if you accidentally tap an analog stick and map it to a button, but then immediately fix it and assign it to a different button even before you hit save. That "mapping" stays in memory even tho you overwrite it and when you hit save, basically Delta then maps the analog stick in whatever direction to "no input".

    Labels

    • Known Issue
    • Core
    • Controls
  11. Labels

    • Known Issue
    • Quality of Life
  12. Easy way to reproduce is to be in-game and plug and unplug the Backbone once or twice, Delta will get confused and start ignoring the plugged in controller.

    Another easy way to reporoduce this is to get a call while playing and then you lose control. Even tho it’s a banner. It must be special. Also, Delta detects when Backbone disconnects when unplugged from the iPhone and then shows the proper overlay. But, when you plug the Backbone back in you have to close and reopen the game to get the overlay to disappear.

    This isn't an iOS bug because the Backbone app still works perfectly even when Delta doesn't.

    Labels

    • Known Issue
  13. This appears to happen randomly when adding or deleting games

    Pasting artwork on another game will place the right game that’s supposed to be there in the blank spot again.

    Looks like it pushes one game off to the very right and takes it from some middle column.

    To reproduce this just switch from vertical and horizontal views with a console with a lot of games with cover art and one without. The one without the cover art is usually the one to “disappear”.

    Labels

    • Known Issue
  14. Labels

    • Known Issue
  15. If Delta is not opened when AirDropped a skin, it'll crash. If Delta was opened, or is open in the background, Delta will import the skin fine.

    I see this a lot with ROMs to. If Delta is already open and it receives a file it crashes intermittently.

    Comments

  16. LittRitt: "I saw you added the ability to use screens without an outputFrame, allowing for filters on default screens.

    I think this conflicted with skin transparency because when utilizing this new feature, the landscape skin stays opaque."

  17. Because it’ll keep saying sync complete on the phone that added the game. But it’ll show this error on every other Delta device.

    Note: You can add more games to the “master” install of Delta (the one that doesn’t have sync errors, and Delta sync will sync the new ones but not pick up the one or missed so the other installs still have sink errors.

    But you can only “re-import” a game on a secondary device that isn’t syncing up with the “master” device that actually has the rom locally. Because Delta already thinks it’s synced the game to the cloud when it hasn’t, it’s only syncing modified / new things like save states and SRAM changes.

    Once you reimport into a secondary device it’ll upload to the cloud and it’ll sync to all other devices.

  18. https://www.reddit.com/r/Delta_Emulator/comments/wa19lh/trouble_with_resuming_game_from_main_menu/?utm_medium=android_app&utm_source=share

  19. Labels

    • Known Issue
  20. Labels

    • Known Issue
    • Quality of Life
  21. It should just return you to the main list of conflicts screen as soon as you hit the “Resolve Conflict” button (as shown in the screenshots attached).

    Labels

    • Known Issue
    • Quality of Life
  22. This isn't supposed to happen because AltDaemon isn't honoring the fact that Delta is running and refuse to refresh (via it returning the Darwin notification call AltStore makes).

    Labels

    • Known Issue
    • Core
  23. Labels

    • Known Issue
    • UI
  24. Labels

    • Known Issue
  25. PokĂŠmon Adventure Red Chapter is the best example of this.

    Labels

    • Known Issue
    • Core
  26. And what may be causing the “sync error” is that the Pokémon Adventure Red Chapter rom hack both crashes Delta unless you preview another game that works twice (just open and close the contextual menu twice) before tapping into Red Chapter.

    Labels

    • Known Issue
    • Core
    • GBA
  27. Reported by: Spidy

    Labels

    • Known Issue
  28. It appears as if the footer of DeSuME’s in-game saves needs to be ignored and the desktop version of melonDS does this and successful imports DeSuME saves - but the Delta melonDS form doesn’t account for this and fails to import.

    Reference:
    https://discord.com/channels/625766896230334465/625766896695771137/835532461701201930 (Mio’s Solution, Patron Discord)

    https://discord.com/channels/625766896230334465/625766896695771137/835175642995228721 (Discussion, Patron Discord)

    https://discord.com/channels/625766896230334465/625766896695771137/835122331336179733 (Discussion, Patron Discord)

    Labels

    • Delta [1.3.1]
    • Known Issue
    • DS
  29. This can be reproduced as referenced using the Time Gear in Pokemon Black. You should be the one to test and fix and PR this @lonkle - come on, do it.

    Reference:
    https://discord.com/channels/625766896230334465/625766896695771137/825082035915194419 (Discussion, Patron Discord)

    https://discord.com/channels/625766896230334465/625766896695771137/825168853382070292 (Discussion, Patron Discord)

    Labels

    • Known Issue
    • Core
    • DS
  30. This will be solved with: https://trello.com/c/oNRmQR6x/118-enhancement-multi-process-support

    Labels

    • Known Issue
    • SNES
  31. The DSi Home Screen syncs over from the beta to public which should be caught and stopped.

    Reference: https://discord.com/channels/625766896230334465/626109625900728340/834891635472465981 (Patron Discord)

    Labels

    • Delta [1.3.1]
    • Known Issue
    • DS
  32. Reference: https://discord.com/channels/625766896230334465/626109625900728340/834891440642457640 (Patron Discord)

    Labels

    • Known Issue
    • DS
    • Core
  33. The fix is in this thread I believe: https://github.com/gonetz/GLideN64/issues/366

  34. Both Delta and Clip have this odd "transition from the main keyboard animation skip" in their keyboard extension. You press the globe, which shifts iOS over to your custom heyboard, everything looks fine. Then all-of-the-sudden it moves up like 60 pixels or so after 0.5 seconds and it's jarring visually.

    Labels

    • Known Issue
    • UI
  35. It always has 1% of the bar filled anytime you navigate to the page.

    Labels

    • Quality of Life
    • UI
    • Known Issue
  36. Labels

    • Files / Syncing
    • Known Issue
  37. Switching to mGBA fixes this and Ian has a PR for that so we all good here.

    But isn’t it wild that it crashes Delta only 90% of the time. Usually if I “preview game” a few times it has a higher chance of not crashing Delta.

  38. Discovery 3: Okay, I figured out "what files get left" and maybe how to reproduce. I always said it was random but it's not. When, you add 5 games, 3 cover arts to a second iPhone and it sync / uploads them. You then go to Files in the second phone and import a 6th game into Delta, which opens Delta and adds that game while it realizes it needs to grab the other 5 games (and 3 covers) from the cloud. But it needs to update add the new imported game first. So it does that, and then syncs the 5 other games. What happens here is that Harmony clears out the game folder and downloads the 5 games. So in total there will be 6 games and 3 covers in the "Games" folder. When exactly in this process that Harmony clears out current Games folder is unknown. But Delta continues to think everything is up to date (every time you open it or add to it, Harmony uploads and "Sync is Complete" with no failures). Tho obviously, if you open a game that's in the DB but not in the games folder it'll just crash. You can add new games to the faulty Delta and play them and they'll upload and sync to other devices, but pre-existing already-downloaded ROMs that were clear stay gone.

    Discovery 2: This seems to be a problem with Harmony making large changes to already large libraries. I’m over 1000 files and if I add 50 files on another device and a new device syncs, it could delete everything except for 6 files (this time, it leaves 2 - 6 files in the Games folder and properly updates everything else). Even if this is a bug we can’t find. We can absolutely check if the Games folder matches the DB and “reset” Harmony is Harmony thinks the sync is “complete” (which every time Harmony deletes all the files, it still thinks that “Sync is complete” with no failures)

    Discovery 1: This seems to happen when Harmony is syncing a number of files and then that sync gets interrupted. It starts back up when you rerun Delta and “Sync Completes” but it will have deleted most if not all ROMs and box covers in Games, but Delta Skins and Savestates will all have been synced correctly.

    This has happened to me 6 times now (on two different phones and installs). I used Delta on my other device so it some syncing to do but instead…deletes all but 6 files (ROMs and custom artwork, pic in attachments of Files app).

    Delta looks fine, just crashes on launch of any game except for the straggler ROMs that are left and most of the artwork is gone unless it matches to the DB or was one of the files Harmony kept for whatever reason.

    I also have had 10GB free on my phone each time this happened so it’s not a storage issue.

  39. Note that it still opens from other apps including files intermittently (sometime phones it does, other phones it doesn’t, I think it’s the iOS version).

  40. Core update fixes this or use FCEU core since it’s the most compatible I know of.

  41. If users start another game or reset / restart the current game, reset the controller port assignments.

  42. If the imported bundle ID of the skin is the same as the default skins.

  43. All mapper 30 games don’t work in Delta (and there are A LOT since it’s what NES Maker uses).

    The only real “hack” without switching to cores to FCEUX or Nestopia-UE is to tell the emu that it’s a mapper 2 chip and Nestopia will emulate it just fine (there’s a few that require accurate mapper 30 emulation but 100s of mapper 30 games don’t work rn and this would bring that down to like 10 that don’t work).

  44. On the fly, tell the emulator that the mapper is actually 7 and the only game that uses Mapper 218 (Magic Floors) will work.

  45. Recursively search and list out the ROM extension files. If there is only one. Then import it.

    If there’s more than one, let the user choose which to import.

  46. I think syncing the DB first always will solve this problem.

    Basically make sure the DB stays in sync at all times. Because if I make a local save, I get an error on sync from the other device saying it couldn’t match the save with a game record as locally it can’t. Because the cloud’s DB updating for that one imported game got skipped on the other device for some reason but it still syncs and updates the DB with that games saves (possibly related to needing Harmony to import, upload, and download at the same time when I open it from the Files app importing a ROM and that bug is described here: https://trello.com/c/ZWv91OQx)

  47. This could be impossible to work around. Tho I think you can ask iCloud to download it and then wait.

  48. So that when Delta gets multiple errors over and over (like from: https://trello.com/c/4D6clzJx) you don’t have to click through all (12 just now) of them just to finally get back to the interface.

  49. Fix should be to use the public APIs available instead of the private API Delta is using for keyboard access rn.

  50. I believe this has something to do with Harmony initializing as it happens more often in dead spots. But Harmony shouldn’t cause this to hang. Delta is a local app.

    CONFIRMED: If this happens, you force close, turn on airplane mode and start delta again, it opens right up.

  51. The screenshot is one example. It says this about EVERY file.

  52. It gets a lot but it missing quite a few. Oh and when 7Z is supported. That needs to be added to Delta. Maybe a file chooser to grab the ROM out since the nature of 7Z in old ROMs was to smush 15 dumps of the same game into 1 file and 7Z is perfect for that.

Vote on these suggestions --->

Consoles to be Emulated

  1. Preferred Core (permission from developer to use it in Delta attached to this card):
    https://github.com/stenzek/duckstation

    Labels

    • New System
  2. Delta's Genesis Core supports this, just enable the file extension .sms and give it it's own console page + slightly modified skin that’s suitable for the master system.

    One important thing to note is that this line here: https://github.com/ekeeke/Genesis-Plus-GX/blob/58758aef3d8e12189899d67344db3b95c6379561/gx/config.c#L113

    needs to be:

    config.ym2413 = 1; /* always ON */ (not "= 2" like it is now)

    In order for Phantasy Star 1's Retransation (or any Rom Hack / Translation for any YM2413) to play using the YM2413 chip. Auto is more of a white list and doesn't take into account fan translations. Think of this very much like whitelisting every game to use it just the like GBA RTC. It doesn't hurt games but does help them if they use it.

    Comments

    Joelle Stickney Joelle Stickney on FEATURE: Sega Master System Emulation

    @ianclawson After you explained the inner workings - it makes the most sense to leave it to him since he’ll need multiple cores per console and multiple consoles per core support one day. I thought he’d designed it that way from the beginning but looks like this will be harder than at first glance.

    Thanks, as always, for the insight!

    Ian Clawson Ian Clawson on FEATURE: Sega Master System Emulation

    @lonkle appreciate the offer! TBH tho I'm hesitant to work on anything new-core related ATM. So far as I can tell by looking through DeltaCore, even though the cores are indeed modular, DeltaCore isn't set up to handle anything but one-to-one core-to-console mapping. Getting Delta to have multiple, separately defined consoles to use the same core — and conversely, getting Delta to have a single defined console that works across multiple cores — would require more change than one might think underneath the hood.

    Between that and all the many in-progress changes to DeltaCore that Riley already has underway, I think it's best I leave this to him.

    Joelle Stickney Joelle Stickney on FEATURE: Sega Master System Emulation

    @ianclawson You interested in adding a Sega Master System Delta console page / tab for the already existing Genesis Plus GX core to use? I’ve found there’s more than a few cool SMS games.

    Labels

    • New System
  3. https://github.com/hrydgard/ppsspp

    Labels

    • New System
  4. https://github.com/OatmealDome/dolphin

    Labels

    • New System
  5. https://github.com/OatmealDome/dolphin

  6. https://github.com/reicast/reicast-emulator

    Labels

    • New System
  7. Reference:
    https://github.com/MattAndrzejczuk/MSDOS-for-iOS

    Labels

    • New System
  8. Reference:
    https://github.com/citra-emu/citra-android or https://github.com/OatmealDome/citra-android

    Labels

    • New System
  9. Reference:
    https://github.com/jpd002/Play-

    Labels

    • New System
  10. Works with modern Virtual Reality goggles like Google Cardboard as described in this Github: https://github.com/tomkidd/VirtualBoyVR-iOS

    Labels

    • New System
  11. Xemu is able to run on the Switch so iOS emulation is technically possible.

    Reference:
    https://github.com/mborgerson/xemu

    Labels

    • New System
  12. https://github.com/Ryujinx/Ryujinx/issues/4198

  13. Delta's Genesis Core supports this, just enable the file extension and give it it's own console page + slightly modified skin.

  14. https://github.com/sarah-walker-pcem/pcem/

    https://github.com/86Box/86Box

    https://www.youtube.com/watch?v=mWEE2RJj3YI&list=PLcLf5MXvRE9lZMJUOhNGk0GZ41MeH9ofq&index=49&t=1113s

  15. https://box86.org/

Major Features

  1. Keep track of completed achievements and notify user whenever an achievement is triggered.

    A special category called hardcore achievements require direct partnership with the RA Team. Screenshots of our (Delta’s) specific criteria for that are attached to this card but they’ve agreed to partner with us to allow for Hardcore achievement integration. Here's the criteria that was agreed upon for Delta for iOS.

    Must be Disabled for RetroAchievement's Hardcore Mode
    • State loading, including auto-resume on game load as per: https://trello.com/c/vSiYqBdV/142-setting-automatically-load-the-preview-save-state-or-last-autosave-on-game-load (though auto-resume may be allowed if the save state used for it is encrypted, gotta ask their team)
    • Cheats that edit memory
    • Region forcing to PAL for "natural" slowdown (I don't believe we ever do this)
    • Any features specifically geared purely at providing gameplay advantages, such as our complex macros card: https://trello.com/c/6sEG4DlC/93-programmable-macro-button-replay-actions
    • Rewinding, Slowdown, and frame advance via: https://trello.com/c/ApZolBei/146-enhancement-gaming-accessibility-features-like-slow-motion-slowdown-frame-by-frame-rewinding

    Allowed for RA's Hardcore Mode as of 6/1/21; could change in the future)
    • Delta's Sustain Button
    • State saving (no reason to restrict this)
    • Fast forward
    • Turbo button functionality as per: https://trello.com/c/sgPxYfrn/57-rapid-press-turbo-button-functionality
    • Any memory-triggered "features" (sometimes generically called "cheats") that do -not- edit memory/gameplay, such as overlay information, rumble triggers, external indicators (LED/sound), and similar - basically, cheats are still allowed but they cannot be allowed to edit memory / gameplay (currently unknown how to detect this - so disable all cheats)
    • Texture replacements as per: https://trello.com/c/WegL4uBQ/122-add-ability-to-import-hd-texture-packs
    • Game patching, but the post-patched ROM needs to send it's unique patched new hash has as per: https://trello.com/c/ikLnGqSQ/46-built-in-rom-hack-patching
    • Disabling memory randomization on boot for static RNG as per: https://trello.com/c/h9cmpY9v/155-disabling-memory-randomization-on-core-boot-for-static-rng
    • Toggling displayed layers in games as per: https://trello.com/c/2DgQ7U0B/216-enhancement-ability-to-in-the-delta-menu-show-the-game-optionally-disable-background-layers-sprites-effects-so-users-can-take-sc

    Miscellaneous (but not explicitedly required)*
    • To the best of our ability, to avoid any save state user cheating, for save state manipulation needs (such as using them for runahahead or switching from JIT to non-JIT interpreters), take into account RetroAchievement “variables” called “Hits” as described here: https://docs.retroachievements.org/Hit-Counts/
    • Rapid spamming of emulator pause should be restricted (not possible without an external controller but still something to keep in mind).
    • All API requests should include a proper identifying user agent specific to Delta, as well as Delta's version.
    • Achievement logic should not be cached between sessions, to prevent caching bugs that may have been fixed.
    • Following the above bullet point, offline functionality across sessions (when you start or reset a game into hardcore mode) should not be supported at this time.
    • Hardcore mode SRAM files / Memory Cards should be encrypted and when Hardcore mode is invoked, Hardcore Mode Save Files will be decrypted and loaded instead of the
    softcore** "SRAM / Memory Card" files.

    BONUS
    • Add a "touchscreen used" indicator / flag for these achievements locally and continue discussions with RetroAchievements to add that to their servers so we can sync the data to it

    Labels

    • Core
  2. This will be needed for an eventual ATV release but it would be nice on Touch devices as well.

    Labels

    • Core
  3. A user can favorite a game from the contextual menu.

    And this “Delta All-Consoles Homescreen” contains multiple horizontally scrolling sections. The order of these rows should be customizable but here’s an example:

    Row 1: Most Recently Played
    Row 2: Favorites
    Row 3: Most Played Games (smart category based on game metadata a la: https://trello.com/c/je3UiPig/144-feature-smart-folders-collections-that-organize-games-by-play-time-or-most-frequent-played)
    Row 3: Casual Games (a manual collection made by the user a la: )
    Row 4: RPGs (a smart category added to this page by the user a la: )

    Consideration: The UI in either situation will need to account for multiple console’s cover art ratio aspects maybe via this card:

    Labels

    • Core
  4. Labels

    • Multiplayer
    • Core
  5. Labels

    • Core
    • Apple TV
  6. Various video and graphical filters that can be applied to the video output of Delta.

    Preferably can be used across all systems via a global preference but can be overwritten per game via https://trello.com/c/Ntdzp5BT

    Borders like this could also be a consideration for this card: https://www.libretro.com/index.php/retroarch-introducing-the-mega-bezel/

    Labels

    • Enhancement
  7. Similar to the way GamePigeon works. Just imagine Delta running the same checksum-verified ROM between two friends for 30 seconds and getting to watch the other play their 30 second bit. And they can slowly beat a game together.

    All you have to do is send the exact timing / duration of the inputs along with a single save state (just like what “Delta Recordings” would use as per ) to the other Delta instance and you can replicate what it does in that 30 seconds with very little data needed.

    Labels

    • Core
  8. Allows users to download an event for games without using cheat codes. For example, a Pokemon Emerald event that will allow you to capture Mew.

    Labels

    • Core
  9. Labels

    • Multiplayer
    • Core
    • GB
  10. Use AltServer (or AltDaemon for jailbroken users) as a WiFi proxy to get DS online to work to connect to DS Online Services which work both on our emulator as well as real DSes that still use online services.

    Reference
    https://discord.com/channels/625766896230334465/630156321802420225/841830784003604500

    Labels

    • Multiplayer
    • Core
  11. Labels

    • Core
    • Mac
  12. Note: When Delta creates a new soft-rom from a patch file, ask the user if they would like to import the in-game saves from the original ROM (as a lot of patches are just text changes and thus in-game saves won't be affected).

    Note 2: Just like linking multi-disc games. The emulator needs to be able to link multiple of the same game ROMs so a user can add all permutations of said ROM like big / little endian, overdumps, etc. Because most ROM hacks require a specific ROM to be used but there's no point in adding multiple of the same game if the emulator can treat them "as one" and lookup their hacks accordingly.

    Delta can receive any patch file and ask the user which ROM to associate it to. Delta then imports the patch file as if it were it's own ROM file in the Game Library even tho its just a patch file. Delta can then apply the patch at runtime. This way a copy of the ROM doesn't have to be stored - just the original rom referenced.

    Thinking this further - there could be a “collapse rom hacks” setting that requires you to use the contextual menu to “choose” the patch you want to “soft apply” to the rom (this keeps your library clean). Think of the "Cheats" screen where you can apply multiple cheats, the screen would look exactly like this but each entry would be an patch file for the rom.

    Patches have to be related to their parent ROMs by the user so a prompt should be given when "importing" a patch, the user will choose the rom, it'll instantly start and if the rom is headered and the user says “This hack isn’t working correctly” then try repatching it unheadered. In the end the user will have to confirm the rom is working as per the patch description.

    If the user says it isn’t working correctly the ask the user to try a different game or cancel importing the patch. It's a safe bet that if if the user is inputting buttons for awhile "playing", then Delta can assume the soft-patch is valid. But when the user quits the rom, or the user quits and resumes Delta, the app should prompt the user asking if the patch worked correctly and log that as "valid" or “invalid”.

    FEATURES
    • Auto populate hacks from RHDN based on checksum. Use RAchievements and a DB mirror of RHDN to match checksums - which you need to check all the checksums in the description and if any match occurs, it’s valid (rom hackers put the checksum in the wrong field all the time)

    • Auto update hacks when they are updated (but keep the earlier versions patches in case the user wants to switch to a different version - as well as assign savestate to those specific patches so if you load a save state, it’ll load the patch it was made with, but when starting a new game - use the latest version of the patch so the user can use SRAM to update their save state)

    • Apply the patch in the background to make sure it doesn’t crash before trying to apply it differently (header vs non-gendered)

    • Import hacks and link them to a base rom manually chosen by the user

    • Manually allow for sorting the DB of hacks / translations that are auto-populated from RHDN (with their title and version number)

    • Store downloaded (played) patches in Delta's cloud

    FORMATS
    • .vcdiff which is just xdelta
    • .dat which is just xdelta
    • Zip files on RHDN contain more than one patch often times - so characters alone or in parenthesis / brackets - “Us / jp / e / j / u” need to be taken into account to know which region to apply to which ROM.

    Labels

    • Core
  13. External Core Simplified Proposal using a Shared App Group Container
    • Delta is only thought of / used as a launcher and changes in Delta mean nothing to the other app and vice versa EXCEPT the external app would never change the filenames of the game files in the app group container and the dev would be instructed not to do so as it will break the link with Delta. I believe AFS allows for cloning without extra space usage so technically those files can reside both in the Shared App Group container and in the individual app's container if either Delta or the external app (Dolphin) would like to do that. The external app would be fed the game / rom file, SRAM / Memcard + savestate filename, and "callback URI" (In this case it simply needs to open Delta and instruct Delta to sync savestate / memcard files instantly upon re-opening) via arguments from Delta. The external core / app will launch into a "headless" mode which returns to Delta upon "quit game."

    • So, in this case, Delta is used exclusively as the game management / launcher and the app dev agrees to let us deep link to instantly play the game in a "headless" mode and the user can use its in-game menu - but if exiting that in-game menu, the user gets sent back to Delta. Meaning only saves need to be accounted for since those will happen directly in their (Dolphin's) app.

    • To solve that, we will include a shared app group (injected by installation via AltStore for "third party delta integrations" - you can use a whitelist or allow this to be a "source spec" feature for all apps to use). The user adds the games to Delta and Delta keeps them in that shared directory so that the external emu can instantly read the games and write the saves to the same directory matching Delta's SHA1 format. The external emu dev would then just have to agree to write their saves in that shared directory and a JPG savestate screenshot to that directory in the SHA format.

    • The tricky part is that on Delta launch / resume - we have to do some extra logic where you do a comparison of the known files (which Delta will keep “clones” of in its own container) to see if they match the ones in the app group (Delta technically already does this for battery .sav files anyway tho), if the save-state / in-game save / savestate screenshot have changed, then translate that into Core Data which can then be synced with Harmony. Obviously this process would need to check for new save files and add them as well if they don't already exist within Delta's internal container.

    Alternatively, you could add extra functions to AltKit (savestate_updated, ingame_save_updated, and return_to_delta) to let these external cores “tell” Delta about their changes / actions so Delta can decide to make the updates to its CoreData table. After all, all of the current potential external cores are using AltKit anyway for AltJIT.

    Note: This card was designed with a single core emulator in mind. A multicore emulator integration (like provenance) is out of scope of this card and I'm not sure we'd even want to ever do that rather than just focus on a "core translator" that me and Joe (the provenance dev) have been talking about lately. It would be able to automatically convert emulator core formats between OpenEmu, Provenance, Delta, etc. Core translator card here: https://trello.com/c/6Bsx6Aqh/369-feature-create-an-automatic-converter-to-allow-multi-core-emulators-to-share-cores-amongst-themselves-like-providence-and-delta

    To bypass the 3 app limit, use AltDaemon / AltStore / to activate / deactivate before and after a user plays a game on an “external core” processor.

    Note that OatmealDome already agreed to use this protocol if we develop it.

  14. Supports both split screen and slide-over so you can play games while working on other tasks. Takes advantage of the larger screen size with full size skins and additional features.

    Will also work as a macOS application as part of Project Catalyst.

    For now, I’m planning to focus on one major iPad “feature” per beta (with misc. minor improvements scattered throughout).

    Beta 1: Basic iPad support (a.k.a. checking the “Supports iPad” box in Xcode and fixing up anything that’s broken) (see screenshots above)
    Beta 2: Split-view support (but still just one window at a time)
    Beta 3: Multiple windows (+ maybe basic Mac support?)
    Beta 4: iPad Redesign Pt 1 (focusing on most important screens)
    Beta 5: iPad Redesign Pt 2 (finishing off the rest)
    Beta 6+: ???

    Labels

    • Core
    • iPad
    • Skins
  15. I mean, somehow Mesen speeds up the emulation of FDS loading screens. And auto-swaps disks too.

Most Requested

  1. Reference of the latest codebases:

    NES
    https://github.com/OpenEmu/Nestopia-Core
    https://github.com/libretro/nestopia
    https://github.com/0ldsk00l/nestopia (this is the newest core but it only works on
    Note: Nestopia UE (Undead Edition) is the newest. Which is what’s being used coded by 0ldsk00l now and it supports all the newest homebrew games (and there are over 100 homebrew that don’t work with the current core without some hackery I describe in other cards to support Mapper 30 without switching cores to FCEUX or Nestopia UE).

    GB / GBC
    https://github.com/sinamas/gambatte

    SNES
    https://github.com/OpenEmu/SNES9x-Core
    https://github.com/snes9xgit/snes9x

    Genesis
    https://github.com/ekeeke/Genesis-Plus-GX

    N64
    https://github.com/mupen64plus/mupen64plus-core

    GBA
    https://github.com/visualboyadvance-m/visualboyadvance-m

    DS
    https://github.com/TASEmulators/desmume (legacy core)
    https://github.com/Arisotura/melonDS

    Labels

    • Delta [1.3.1]
    • Enhancement
  2. Most games work perfectly with Y and B, both being the B button for cancel and shoot.

    Labels

    • Quality of Life
  3. This choice for each game should sync via Harmony.

    Without this, you have to remember your button config per game and reconfigure it for all consoles each time you switch games.

    Labels

    • Enhancement
  4. Make sure to check sub folders as well I. This and the unzipping code to find the ROMs. In my experience Delta easily gets tripped up by sub folders.

    And if there’s more than one rom in the ZIP file, only take the first one. 7Z files have a tendency to include every known dump of a given rom file so importing them all would be bad. Just grab the first one and import it.

    Labels

    • Enhancement
  5. Either a slider ranging from 1-3x speeds or options to select 1.5x, 2x or 3x.

    Include an "unlimited" option because some users need to really go as fast as the CPU allows (e.g. to hatch eggs in PokĂŠmon games).

    Labels

    • Quality of Life
    • Preferences
  6. https://github.com/noah978/CheatBase
    as well as
    https://github.com/libretro/libretro-database/tree/master/cht

    NOTE: In the attachments are links for a specific type of game genie codes.

    Labels

    • Enhancement
  7. This feature will require a separate settings UI that is exposed as a button in the in-game menu. Please use the checklist below to see what "settings" a game could have / persist.

    Labels

    • Core
  8. This preference in settings when enabled will automatically load the last game Delta played as well as automatically load the "Preview Save State" if this setting is on: https://trello.com/c/vSiYqBdV/142-have-a-preference-to-automatically-load-the-preview-save-state-or-last-autosave-on-game-load

    Add a contextual menu to "Start from the Beginning" as well.

    Labels

    • Preferences
    • Quality of Life
  9. @ianclawson Built a prototype of this feature although it’s not committed.

    Labels

    • Enhancement
    • Skins
  10. Will make the smaller storage space in the Apple TV more usable especially when combined with https://trello.com/c/E8tlY72F/39-private-altserver-local-syncing-support

    Labels

    • Core
  11. Series of Skin Spec Updates
    • https://trello.com/c/TLmArHhD/210-enhancement-allow-for-collections-in-the-skin-spec-so-a-user-can-change-multiple-consoles-skins-at-once?menu=filter&filter=skin
    • https://trello.com/c/42VJujoS/87-ehancement-custom-skins-that-appear-when-a-controller-is-connected?menu=filter&filter=skin
    • https://trello.com/c/dfDfkXdR/190-enhancement-a-special-dark-mode-flag-skin-in-the-spec-that-can-be-toggled-via-the-in-game-settings-menu?menu=filter&filter=skin
    • https://trello.com/c/GfwUFmAW/209-enhancement-add-to-the-deltacore-spec-an-enhanced-version-of-all-default-skins-utilizing-all-special-buttons?menu=filter&filter=skin

    This falls in line with a series of adding to the deltaskin spec. This is "controller attached", and the other is "dark mode enabled / disabled" via: https://trello.com/c/dfDfkXdR/190-enhancement-a-special-dark-mode-flag-skin-in-the-spec-that-can-be-toggled-via-the-in-game-settings-menu

    This could be a setting that only appears if you activate this first: https://trello.com/c/sxDFvHS6/157-keep-the-controller-skin-on-screen-despite-an-external-controller-being-connected

    Labels

    • Enhancement
    • Skins
  12. Also important, when the user hits the “menu”!button in this view on an external controller then go back to the game.

  13. Similar to the sustain button feature, but instead of "holding" it rapidly "clicks."

    Since the UI for this and the sustain button feature don't need to differ, you may be able to use the same UI and have an indicator between what buttons will be sustained while which buttons will be turbo-pressed, or both as some games may need that. So make sure, however this ends up being implemented - that both sustain and turbo can be assigned to single button.

    Labels

    • Enhancement
  14. Labels

    • Quality of Life
  15. If using Delta on the same device despite the bundle identifiers being different for stable, beta and alpha - you cannot keep data synced across them due to Delta using the same identifier for keychain access. Users run into this issue when they upgrade from Public to Beta but I run into it whenever I switch to any other channel to test bugs.

    Solution
    Give Delta an app group to share across all installations - this will be necessary when implementing https://trello.com/c/oNRmQR6x anyway. ADDITIONALLY, fix the broken keychain access when more than one Delta channel (alpha, beta, or public) accesses it - which can be solved via App Access Groups (https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps).

    Reference
    https://discord.com/channels/625766896230334465/625766896695771137/834141972343291924 (Patron Discord)

    Confirmed By: @lonkle

    Labels

    • Files / Syncing
    • Core
  16. Related: When this is completed, you can add an app group for this: https://trello.com/c/ptnpZwre/105-feature-allow-multiple-delta-channels-on-the-same-device-public-beta-alpha-to-share-files

    This will allow for a crash resistant Delta. No longer will SNES games crash your world when you open and close the core 13 times in a row while testing. Because with multi-process support Delta can handle the crashed thread and immediately spin up a new one.

    So we say, to the crashes that have haunted us - just like Mario says when you sleep your phone while playing Mario 64, bye bye. 👋

    Note
    After implementing this, a custom File Provider Extension will be needed to continue being able to access iOS Files from within Delta (wait, other way around, or both) - take advantage of this and finish the Related Card (top of this card) at the same time for testers who run multiple versions of Delta at once.

    Reference
    https://discord.com/channels/625766896230334465/630156321802420225/836311798519955466

    Labels

    • Enhancement
  17. This would get rid of the current pop up to "Resume" or Restart for existing games as well, as those games don't have to load, they just "Resume". Just a preference where you choose one or the other and anytime that game loads, it automatically loads the save state as per this setting.

    This plays perfectly into this PR as you’ll still have a way to reset the game: https://trello.com/c/wQmkrxgB or https://trello.com/c/pQy8C66S/254-qol-add-a-resume-button-to-the-home-screen-when-a-user-exits-a-game

    Labels

    • Preferences
    • Enhancement
  18. Holding, say, the special “fast forward” button down pops up an contextual menu while emulation is running to change fast forward speed a la https://trello.com/c/100N36tE. You can also tap it to toggle between the last known fast forward speed and normal speed.

    The special “save state” button can only be activated by holding the button down. Emulation will pause and a contextual menu with the labels “Quick Load” and “Quick Save”.

    Labels

    • Enhancement
    • Skins
  19. That is, of course, as long as the user doesn't have a special "Controller Connected" chosen skin that overrides this (at the per game level, this would be the default for all new games)

    Labels

    • Enhancement
  20. These should be synced but they're not:

    • Skin choice per game
    • Global console skin default choice in settings

    Labels

    • Files / Syncing
    • Enhancement
  21. Save RAM will have to detect when a greater than 10% size change occurs before and after a gaming session.

    Labels

    • Quality of Life
  22. If Delta crashes after an automatic load second time, then enable a prompt like in the screenshot but with text saying this rom might have an issue and to try to restart the ROM or dismiss.

    Labels

    • Quality of Life
  23. It would be a console setting. As you can see in the screenshot, there can be a bunch of cover art that doesn’t line up vertically so a setting to "force aspect ratio" would fix that.

    Labels

    • UI
    • Quality of Life
  24. This makes graphically unplayable games like Trials of Mana’s text boxes(screenshot attached) work properly.

    Snes9x supports this. It just needs to be configured.

    Labels

    • SNES
    • Enhancement
  25. Most would likely remap this to the menu button but a user should be able to map L1 + L2 + R1 + R2 + Start to “soft reset” or any “in-game menu item (like cheats screen, fast forward toggle, sustain button, etc) via https://trello.com/c/BTvdcoo

    Labels

    • Quality of Life
  26. There’s a DB of poster art for every game out there and they share the same aspect ratio which looks good / uniform on the front end.

    Labels

    • Enhancement
  27. • A button to open the load states screen
    • A button to open the save states screen
    • A button to open the hold / turbo buttons screen
    • A button to exit back to the Home Screen (bypassing the in-game menu)
    • A button to open the cheats menu
    • A button to toggle all cheats (which should be an in-game menu item as per https://trello.com/c/JgDxONsL/207-setting-customizable-in-game-menu-button-order-and-remove-add)

    Labels

    • Enhancement
  28. This is a perfect example of why we need visually pressed down buttons because a tap should keep it pressed down graphically as well.

    This needs to be separate for controllers and skins as a whole as some external controllers are sensitive to accidental button taps so the “tap” duration needs to take that into account.

    Labels

    • Enhancement
  29. Especially because that bar means you can't even tap on that entire horizontal bar anyway.

    Labels

    • UI
    • Core
  30. NOTE: Documents by Readdle (https://apps.apple.com/us/app/documents-file-reader-browser/id364901807) on the App Store doesn’t even ask permissions for the iCloud Documents folder and somehow has access so maybe iCloud sync could literally be built right in using native techniques.

    You simply open up a file chooser, pre-fill it with the Documents path, tell the user to make sure they have that synced with iCloud and then BAM, built in iCloud support.

    Technically easier than the other methods tho not foolproof as their is no way of knowing if the user has the sync feature turned on or off for the Documents folder.

    Plus side is this method allows users to sync with any app that provides a File Provider Extension. So technically you wouldn’t need Dropbox / Google Drive syncing libraries built in anymore.

    Out of Scope / Speculation: Technically, I believe it's feasible to "talk to" AltServer and then write a tiny test file to ~/Documents/Delta/test and if AltServer for Mac detects the file then awesome, if it doesn't then the next device that connects to Sync with the Files App (read: iCloud), it will check with AltServer and if AltServer says check for the test file, then the second Delta installation will and then will confirm it's working. Once any app finds, and reads the test file it didn't create itself, then it'll know that iCloud Sync is enabled for the Documents Folder - and it can write to the test file "success" so that all Delta's are aware that iCloud Syncing of the documents folder is, in fact, turned on.

    Important Reference: https://developer.apple.com/documentation/uikit/view_controllers/providing_access_to_directories

    Labels

    • Core
    • Files / Syncing
  31. Labels

    • Core
    • UI
  32. Labels

    • UI
  33. Tapping the button obvi opens the in-game menu. But holding opens an "in game menu button) which is configurable but by default is rewind state opening

  34. If a user doesn’t make a save tho whether in-game or a save state, and played less than 5 minutes, don’t add it to this list.

  35. This would make auto saves a little more useful. Bonus points if you can long press a save state and revert it to a previous version (just like you do when handling conflicting files in Harmony sync).

    Basically, whenever the SRAM file (.sav) gets modified all at once with a greater than 20% change. Which you’ll have to poll for changes for and check the “percentage SRAM change” for the lowest common denominator, because some games use some SRAM as a little extra RAM than just saving. Anyway, when that happens a greater than 20ish percent SRAM file change, immediately make an auto-save state on the left of the “Auto Saves” section. The other auto-save-state on the right will continue to be “on close or crash”.

    Labels

    • Enhancement
    • Core
    • Files / Syncing
  36. Labels

    • Core
  37. Incredibly useful for 2D games playing with the analog stick as well as with certain external controllers (any game)

    Labels

    • Core
    • Controls
    • Preferences
  38. This feature is useful with old games that function incorrectly when two direction buttons are pressed at once (diagonals). Games like the Ys series can’t accept two directional inputs at once so being able to make the joystick map to only one button at a time would be a good “mapped buttons per game” setting a la https://trello.com/c/ygzx2rC4/335-enhancement-allow-customization-of-mapped-external-controller-buttons-per-game

    The important part of this card to consider is diagonals past a certain threshold should count as then holding the “other”. So if you hold down on the analog stick and you hit a down right diagonal then just counts that as a only “right” input. The same logic obviously expands to all directions.

    Checklist

    Labels

    • Enhancement
  39. This would make Mario 64 and all of its hacks extra playable and Zelda Spirit Tracks at the very least.

    Honestly so many games this would work with.

    When doing this, consider an optionally analog to touchscreen interface as detailed here: https://trello.com/c/Xibo9fsV

  40. The amount of pixels is almost always divisible by 8 (NES uses an 8 by 8 pixel background tile system). So 8, 16, 24, 32 crop options for every border of the graphics output. I see a “snap to grid” system showing the use a screenshot of their current gameplay.

    But just a contextual menu would work with those options for each side of the screen. Just make sure this specific setting can sync.

    AS FAR AS I KNOW, the NES is the only console that needs this. But it needs it badly IMO.

    PS. Make sure to code this in a way that Harmony can sync. Each games config will be different after all.

    Labels

    • Quality of Life
    • UI
    • Skins
  41. Labels

    • Core
    • Preferences
  42. This allows for easier manual IPS patching of games.

  43. For example, the Backbone needs to use a different button than “TrackPad”

  44. Paid ADP can activate the VPN on-demand. Free users will have to use an app (and paid users at first will too since we can just leave the connection active all the time).

    Technically paid users with the networking entitlement can enable JIT themselves using a loop back VPN with no server involved but that’s beyond the scope of this card.

  45. Listen Riles, I know those things aren’t “core data”. But you can mirror those setting to Core Data (it’s just data) so you can still sync this shit.

  46. GBA 100 ROM Saved: 1.9GB
    DS 100 ROM Saved: 20GB
    3DS 100 ROM Saved: 98GB

  47. Suikoden 2 takes Suikoden 1 final save data for extra features for example.

  48. Could be called DelSubstrate, jus' sayin'. Would work similar to modern consoles and how they’re always downloading in the background from their online shops

iOS API Features

  1. Labels

    • Core
    • Multiplayer
  2. This - to me - adds a "controller all iOS users have grown comfortable with because it's standard and why haven't I ended this quotation-ed statement yet". - @lonkle

    https://developer.apple.com/documentation/gamecontroller/gcvirtualcontroller

    Labels

    • Skins
    • Core
  3. https://github.com/rileytestut/Delta/pull/140

    Labels

    • Enhancement
  4. External controller support is going to require DSU tho.

    Labels

    • Enhancement
  5. No input from controllers is allowed in the background on iOS. So for external controller in PiP we can piggyback on this: https://trello.com/c/8zBy4qjH/219-feature-integrate-a-dsu-client-into-delta-for-gc-controller-support

    As for controller Delta on screen, well Riley figured out the sanest way to do so, which is to create a keyboard extension as shown here: https://trello.com/c/gZDtzKZo/218-enhancement-create-a-keyboard-extension-to-control-the-pip-delta-viewer

    Labels

    • Core
  6. But make them per game mappable. Since I see many different use cases per game to map those buttons too.

User Interface Suggestions

  1. https://github.com/rileytestut/Delta/pull/140

    This feature combined with this PR https://trello.com/c/lY5nDpWN/234-qol-add-ios-14-page-control-select-action-for-multiple-pages-pr-romain-talleu makes for very intuitive navigation in-app.

    Labels

    • Quality of Life
    • UI
  2. Labels

    • Quality of Life
    • Files / Syncing
  3. https://github.com/rileytestut/Delta/pull/140

    A changeable color palette with several options or even a custom one. It seems like there’s only one hue in Delta that should be changeable so easy singular option in the global settings. A color picker would be the difficult part of this.

    Labels

    • Quality of Life
  4. Labels

    • Quality of Life
    • Preferences
  5. For instance if you save state at just the wrong time, the animation of loading a state could keep you trapped in an endless cycle of death. So maybe load state should always be immediate so you can use the controller to stay alive. Note that external controllers and touch screen special buttons don’t have this problem if you quick load since quick load is immediate.

    Labels

    • Quality of Life
  6. Perfect use for save state pics. But there is a DB of gameplay pics.

    Labels

    • Enhancement
    • Core
  7. Labels

    • Core
    • Quality of Life
  8. The user can choose to leave this disabled and continue gameplay

    Labels

    • UI
    • Preferences
    • Enhancement
  9. A good example would be adding a reset button to he list a la: https://trello.com/c/wQmkrxgB - or simply removing the cheat button because a user never uses it.

    We also need a button for:
    • Switch Skins
    • A button to toggle all cheats on / off

    More nice buttons:
    • “Share” (opens the rom with the share sheet)

  10. Memory usage, framerate, cpu speed/clock, etc

    Labels

    • Quality of Life
  11. Labels

    • UI
  12. Video of example attached to this card.

Integration / Social Features

  1. Like Lemuroid, or soon Provenance.

    I'd recommend having a single setup like on Dropbox and then use synlinks to follow the format for the copies of the rest of the cloud syncing profiles.

  2. Write up goes here using provs emu core tech swap with no screen etc. A

    Goes along with https://trello.com/c/wcYFP8n9

  3. Comments

  4. An in game hub to select games and possibly socialize with other retro gamers using Discord or whatever APIs to connect people together.

    Start the user as an avatar on a smartphone app which is Delta. Then if the user (meta) hits a button at the top left to "Enter Lobby" - it shifts to these hub world full of games and other social features.

  5. Unbound Cloud is a website I've been working on for a while now that gives you additional Boxes to store Pokemon in! It also allows Wonder Trading or using the GTS to trade with anyone else in world! Another goal with this site is to support compatability between different modern ROM Hacks, since many don't connect properly ingame. It's not 100% ready for release yet, but the fact that I'm revealing it now means it's coming soon™. When it does release, it'll start out with support for Unbound and a couple other hacks, and more will hopefully be added as time goes on (not including Fakemon support).

    https://www.reddit.com/r/PokemonROMhacks/comments/socp5r/presenting_unbound_cloud_extra_boxes_wonder_trade/?utm_medium=android_app&utm_source=share

  6. https://github.com/Nythepegasus/pyPokeParser

  7. With an app group specifically for cores, this would genuinely be amazing. Any progress done in Providence, Delta could take advantage and vice versa since they could all use each other's cores at will.

  8. In that same vein, why not also then make a "Share in-game save" contextual menu item for when you long press a game so you can directly share an .sav / .srm / .dsv file since those are universal and you could insta-share them with other emulators

    Labels

    • Enhancement
    • Core
  9. Maybe add this to the contextual menu of Delta like real App Store apps do

    Labels

    • Quality of Life
  10. This, just like the eReader adapter - requires porting the GB core to mGBA for link cable support and wireless adapter support for PokĂŠmon games particularly but all link supported games would benefit.

    For online connectivity with this feature it requires some smart emulation where buttons are read in real-time but emulation itself is slowed so that it can handle a variable lag.

    Labels

    • Multiplayer
    • Core
  11. This is a big one but would involve a culmination of:
    https://trello.com/c/hXhj0IyK/48-achievements-on-games
    and
    https://trello.com/c/dvNetZpL/149-discord-integration-to-show-others-what-game-youre-playing
    and
    https://trello.com/c/E4FLJGP5/127-integrate-gameplay-data-with-the-gametrack-app
    and
    https://trello.com/c/dBBeznL0

    then only the online-status indicator would need to be resolved (which could be decentralized technically). Our current GameTrack partnership can be used as the focal point of username / interactions / friends (GameTrack, in and of itself is lite social network) and all games that are "Delta-marked" can be shown to other Delta users. God this social stream idea could take me awhile uhmm....will get into this later, have to talk more to joey about if he's willing to be work into this.

    Flesh out this ticket later. -@lonkle

    Labels

    • Core
  12. Latest Integration Idea: Have Joe place his database in a local folder “On My Device” and Delta can manipulate it r/w.

    Allow Delta to rate games and sync its rating + the rest of a ROMs "stats" with GameTrack. Likewise creating a "ROM status" variable for the user to Play Next + Now Playing + Play Later smart categories via this card (https://trello.com/c/je3UiPig/144-feature-smart-folders-collections-that-organize-games-by-play-time-or-most-frequent-played) and then giving GameTrack that data would make for the perfect collaboration. This same data gives us even the series the game is in. So you can tag it / add it to its collection series automatically via this card: https://trello.com/c/sHuovM1s

    Joe, the developer of https://apps.apple.com/us/app/gametrack/id1136800740 has shown interest (because I forced him to 🤣) in working with us to give Delta the ability to sync user’s gameplay data with his app.

    The goal here is to help Joe find a way to integrate with Delta without big infrastructure changes on his end. RESEARCH MOAR JOELLE!

    Preliminary Research: GameTrack uses a one way Firebase API for cloud features so Delta can’t write GameTrack data to that. Local data syncing is the only way forward here in GameTrack’s current form but have to learn about app to app integration methods.

    Further Research: Joe is entertaining the idea of an automatic Harmony based solution rather than manual.

    FURTHERRRRRR RESEARCH: What about a really unique approach using AltStore to distribute and then create an app group shared between Delta and GameTrack. Talk to Joe about this in depth.

    Okay, so Joe hosts an external IPA of GameTrack to be installed with AltStore. AltStore notices GameTrack and Delta's IDs and adds a special app group to them (this can also be accomplished with a re-install of Delta, to add the app group) and GameTrack will detect this app group as will Delta and they share gameplay stats amongst each other.

    Latest idea:

    Make the user choose an “GameTrack-integration.sql” file from the GameTrack app to share stats. Make it so that the user can’t choose the wrong file which may be by using a special extension. “.gtd” for “game track data”.

    Labels

    • Core
  13. Labels

    • Core
  14. Show the current user prominently in all UI parts of the app so no one in a household accidentally plays as a different user.

    Can use the Apple TV API to get the user, but this is a tvOS only feature for now so if we want it on iOS will have to have a setting in Global Settings to choose the user for other platforms.

    This user will have Metadata and a centralized Delta server will gauge these for the social features of Delta.

    Labels

    • Core
    • Apple TV
  15. In-game: This would be especially useful for games like Animal Crossing where you all live in one town on one memory card.

    IMPORTANT: You’ll have to lock the “shared” saves on load so that only one person can play at a time (to prevent conflicts) and Harmony can just send a lock signal on the file on load. Meaning you can’t play shared save off-line.

    Labels

    • Core
    • Multiplayer
    • Files / Syncing
  16. When user starts recording, Delta takes a save state snapshot and then records the button data until user ends recording.

    BONUS: Have Delta always record in the same rolling interval that Rewind States use. That way you can “save the last x seconds of gameplay as a Delta Recording.”

    Since these are just a single save state, with button data timing / durations. The recordings will be really small.

    Fun Fact: Super Smash Bros Brawl does something similar to this to record its matches.

  17. NOTE: These homebrew ROMs we “demo” pack in have to be encrypted so homebrew partners can trust us with their rom(s).

    The purchase will simply allow the user to extend their playtime if the full game beyond the x minutes allowed (which is decided by the homebrew dev if they partner with us) where they can even use save states to get just super far in that allotted amount of time till they have to beat the whole thing and purchase it.

    I’m thinking Orange Island, Lizard, for paid. Battle Kid, Xeno Crisis, etc for free homebrew pack-ins (which are just as good as real games tbh).

    I’m looking into paid homebrew, focusing on NES rn. The Witch n’ Wiz dev and Swords and Dune are who I’m going to talk to first.

    Unfortunately tho I wanted Battle Kid to be a part of this which is in the mock up, they’re discontinued so we can’t partner with them. I’ve contacted their publisher in hopes of striking a deal tho because it’s just money in their pocket if they say yes.

    And we could make sure the user starts out with a save state at a place that makes sense. Like a “first save state” to bypass the intro of the demos and they can get right in the action (sort of like SPs on Nintendo Switch, which we could do those too but I don’t like them).

  18. http://info.sonicretro.org/Retro_Channel

    Labels

    • Core
  19. Just like we can open game by their SHA right now in a Delta "deep link" URL.

  20. As for your comment on the abuse. I think with the right implementation there would be no need room for abuse.

    Example:

    1. User downloads an IPS patch and tells my emulator what rom it links to.
    2. User plays the game for more than an hour and has received at least three achievements which makes step 3 trigger.

    3. Emulator asks user if achievements are working when they exit the game next.

    4. If user says “no”, achievements are turned off and that specific IPS hash is logged as being incompatible with base game achievements for x game. If user says “yes”, achievements stay enabled derived from the base game’s data, and we add an “achievements compatible with base game” flag to that IPS hash locally.
      👆 This tally of users reporting whether or not an IPS disrupts achievement tracking is what we could share with RAs site. Or we can keep it all local / tracked on our own servers.

    Seemed in my head that this would just give more data for a human to eventually review a specific IPS file to verify our users’ reports.

Graphical Enhancements

  1. Labels

    • Quality of Life
  2. NES
    The NES has a very limited amount of colors and as such has undergone multiple palette choices across many emulators. So palette choice per game even wouldn't be crazy choice for an advanced setting and would fit right in with https://trello.com/c/Ntdzp5BT/94-per-game-settings-for-various-emulator-features and https://trello.com/c/gDJtN1wt/125-add-ability-for-power-users-to-toggle-more-advanced-emulator-settings

    Attached is an NES palette file (.pal) a user should be able to associate with a specific game within Delta (the file attached is meant for Mario Bros 3).

    GB / GBC
    Games designed for the original Game Boy will play in color when played on the Game Boy Color or Game Boy Advance systems. The colors displayed on the screen are selected from one of 12 palettes, each with 7-10 colors. The 12 palettes can be selected from the Game Boy Color or Game Boy Advance system start-up screen.
    https://www.nintendo.com/consumer/systems/gameboyadvance/colorchange.jsp

    Labels

    • Quality of Life
  3. Labels

    • Quality of Life
    • Graphics
  4. A user can fix improperly upscale pixel lines (very helpful with fonts) or stretch the screen to play a game using their entire screen.

    Reference
    https://reddit.com/r/Delta_Emulator/comments/nh73vp/has_there_ever_been_mention_of_aspect_ratio/

    Labels

    • Preferences
    • Enhancement
  5. Could be useful in some games. But probably not. I can only think of the NES and it’s leftmost 16 pixels being able to be shown via a core setting. But that’s hidden on purpose by the game dev. So I don’t see how removing that would do anything. This seems like a silly suggestion. Unless I’m wrong?

  6. There are many directions to go with this. We could use OpenEmu's filter spec, we could design our own 'deltagraphics' format, we could use another emulators format.

    Here's an are zipped .cgp files to show an example of this in the wild (and we could use this format too if it suits us better and / or is more popular).

    Example: http://www.superrune.com/tools/supercrt.php

    Labels

    • Core
  7. Reference
    https://discord.com/channels/625766896230334465/630156321802420225/837092046882865204 (Patron Discord)

    Labels

    • Core
  8. Our core supports this: http://www.mupen64plus.org/wiki/index.php?title=HighResolutionTextures

    Reference
    https://discord.com/channels/625766896230334465/630156321802420225/837092046882865204 (Patron Discord)

    Labels

    • Core
  9. https://gametyrant.com/news/n64-games-that-had-widescreen-support-part-1-anamorphic-widescreen

    Labels

    • Enhancement
    • N64
  10. https://prilik.com/blog/post/widenes/
    or
    https://prilik.com/ANESE/wideNES.html

  11. This would have to be defined in the skin spec.

Controller / Skin Enhancements

  1. This is especially applicable to N64 as holding the controller in different ways was the point of the controller.

  2. If you press a button inside the circle and don't take your thumb off the screen, it should act like the D-Pad does in that situation and keep the buttons pressed for as long as you keep your thumb on the screen regardless of where your thumb travels.

    Video example attached.

  3. I see some rare instances where this may be useful in some games.

    Labels

    • Quality of Life
  4. Current Behavior: Whenever a D-Pad direction is being touched, if you extend your finger in such a way that it touches another button, it will then switch to that alternate input.

    Proposed Behavior: If a user touches the D-Pad, it'll engage in a static mode, where the D-Pad will keep being utilized as long as the user doesn't lift his finger from the screen, therefore not changing input even if he/she accidentally touches another button. In other words, in any case that the users' finger drifts off the D-Pad, it won't disengage from that direction unless the finger is removed from the screen. This way, a game character stopping mid-journey unintentionally will be an occurrence of the past.

  5. This will require some work on the skin spec but it'll be worth it.

  6. DC: Typing of the Dead

  7. Like: https://trello.com/c/qOxsaugP

  8. Only appears on skins that specify the screen location. But you can take the screenshot of any "save state" preview on the console and just throw it in there.

    Labels

    • Quality of Life
  9. Use a mapped button on the external controller to swap between screens.

    Reference:
    https://discord.com/channels/625766896230334465/625766896695771137/836352587195744306 (Patron Discord)

    Labels

    • Quality of Life
  10. For example, an iPhone could open up Delta and connect as the controller for an Apple TV installation of Delta. The upper half of the screen could serve as the Apple TV remote touchpad to navigate between games. The bottom half has the buttons of an Apple TV remote while in the main menu, but then switches to the default controller skin after starting a game.

    iOS devices could be used as a game controller for any other iOS installation of Delta as well.

    There will need to be a flag for skins that are “full screen” skins that Delta will switch to automatically in this card:

    Labels

    • Core
  11. A DSU client / server allows for controlling Delta with GC controllers if you connect those controllers to a DSU server on like a Rasberry Pi even (which might give you motivation for this card: Barebones Linux AltServer Support). But it also allows external controller support for PiP Delta emulation as well as detailed in this card: https://trello.com/c/qhbt1Q3j/178-feature-add-support-for-ios-15s-picture-in-picture-feature

    Labels

    • Core
  12. PS4 Controller
    • Trackpad support for PS4 Controller (the trackpad itself can be used as the touch screen for DS games as long as their was like a translucent cursor type thing before the user clicks or taps)

    • Lightbar support for PS4 Controller: the dimmest possible user-chosen Delta accent color, which is ofc Delta purple by default (there’s a PR to fix that) - also give the option to turn it off if user chooses

    • WarioWare / Kirby Tilt / Yoshi Topsy Turvy support (using six axis gyro): https://developer.apple.com/documentation/gamecontroller/gcmotion

    Main Reference
    https://developer.apple.com/documentation/gamecontroller

    Labels

    • Enhancement
  13. https://youtu.be/Qsup2w4rQxE

    All games use controller port 1 and 2 analog sticks although Star Wars Pod Racer uses Port 1 and Port 3’s analogue sticks to perform this trick.

    Note that of the five games that support this pictures. Some use the first controller start button and others use the second controller start button so that would have to be taken into account. The video really explains it all better but I’ve written all the important bits in text.

    Replace dpad with analog stick controlling x controller (port 2 or 3 depending on the game).

    Labels

    • Enhancement
    • Controls
  14. Labels

    • Enhancement
    • DS
  15. This will be very useful when w rebuild out our central repository of skins as per this card:

    The example screenshot is this skin specially designed for Ace Attorney. (https://discord.com/channels/625714187078860810/627594786404302850/866778628179623986)

  16. Labels

    • Core
  17. The Delta skin spec should have a "custom mirrored screen skin" that automatically is used per console when AirPlay is activated. This way, skin makers can maximize the controller (and touch screen) while users are AirPlaying their games.

    Labels

    • Enhancement
    • DS
  18. If a skin maker uses a background like the picture attached (the phone’s guts, artwork, a random wallpaper), seeing it move would sell the illusion of depth. Skins could have two layers: a fixed buttons layer and a moving background layer.

    Suggested by Skin Maker: epicpal#2080

    Labels

    • Skins
    • Quality of Life
  19. https://github.com/rileytestut/Delta/pull/84

    This could be setup via a decentralized system (so that we stay out of distributing the skins directly).

    AltBot can handle the links from Discord and connect them to Delta by auto generating a “skin source” file from the skin download links.

    Labels

    • Core
  20. Use the GB core and match GB roms to official borders via a DB like this: http://www.vgmuseum.com/features/sgb/ - or allow user's to custom enter game borders via: https://gbatemp.net/threads/incredible-super-gameboy-borders-collection-assistance-converting-png-to-bmp-compatible-with-gameyo.560725/

    Likewise, see if there's a database of palette for SGB games palette choices and use those when people choose those ROMS.

    Labels

    • Enhancement
    • GB
  21. Allows users to create custom actions to can trigger a series of buttons. For example, it can be used to run back and forth in pokemon in order to hatch an egg. Or rapidly click the A button.

    This is like an advanced version of the sustain/hold button feature and should be able to integrate with this as well: https://trello.com/c/sgPxYfrn/57-rapid-press-turbo-button-functionality

    Labels

    • Core
  22. Labels

    • Enhancement
    • Controls
  23. Would work indistinguishable from the Switch. A mappable button + a special skin button.

    The Switch is 30 seconds. But this could be configurable. I've been thinking this could open the Rewind State screen and you click "where" you want the recording to start. This would ofc mean that Delta will always buffer a recording going back as far as Rewind States do.

    This won't be too data intensive if we just record button pushes / durations like Super Smash Bros Brawl does. Exporting as an actual video to share would be a necessity tho but internal recording will just need a save state + button pushes.

    Labels

    • Core
  24. The user should be able to move and resize the buttons on a skin if the skin supports the "dynamic" buttons feature in the deltaskin spec. This is clearly an enhancement of the skin spec and is no small feat in the UI department either.

    • Add Your Own: This includes adding your own buttons from the photo library.

    • Mapping which Button: You can map the photo of the button by double clicking and choosing whichever one.

    • Size: Allow for resizing of the existing (or added) buttons and / or removing them + making them more or less transparent (if applicable)

    • Default button assets: We provide some existing button assets for users looking to create their own skins.

    Labels

    • Enhancement
    • Skins
  25. NOTE: If this works, it’ll make platformers a lot more doable on a touchscreen.

    Like when you move your thumb off the A button and move far to the left to reach the B button in your head but you pressed A at the very right threshold so you push far to the left on the skin but it’s still the A button because the skin dictates absolute button positioning. I think Delta could could do this more intelligently.

    I think that Delta should register the user moved that far over on purpose to press the other button. Seems naturally but it’d have to be tested. I feel like this would work in a similar “recentering” concept like analogue sticks function now on skins.

  26. Series of Skin Spec Updates
    • https://trello.com/c/TLmArHhD/210-enhancement-allow-for-collections-in-the-skin-spec-so-a-user-can-change-multiple-consoles-skins-at-once?menu=filter&filter=skin
    • https://trello.com/c/42VJujoS/87-ehancement-custom-skins-that-appear-when-a-controller-is-connected?menu=filter&filter=skin
    • https://trello.com/c/dfDfkXdR/190-enhancement-a-special-dark-mode-flag-skin-in-the-spec-that-can-be-toggled-via-the-in-game-settings-menu?menu=filter&filter=skin
    • https://trello.com/c/GfwUFmAW/209-enhancement-add-to-the-deltacore-spec-an-enhanced-version-of-all-default-skins-utilizing-all-special-buttons?menu=filter&filter=skin

    Basically, one .deltaskin would have two "themes", one light, one dark (and one "controller-attached too: https://trello.com/c/42VJujoS/87-ehancement-custom-skins-that-appear-when-a-controller-is-connected?menu=filter&filter=skin). The default could be based on system settings or global Delta settings but it could also be set on a game per game basis (whether you want the dark mode version of skins or the light mode).

    Sure, a creator could just make a light and dark mode version of their own skins. But I don't see that happening. I think building this directly into the spec will encourage skin makers to build "light" + "dark" skin combo themes more often.

    Labels

    • Skins
    • Enhancement
  27. Labels

    • Enhancement
  28. This would be a preference in settings.

    Labels

    • Quality of Life
    • Preferences
  29. BONUS
    Have a button in the in-game Delta Main Menu screen to "Disconnect External x Controller"

    IMPORTANT
    MAke a conditional exception to this if the controller is plugged into the lighting port. iOS provides this information through the controller API.

    Labels

    • Quality of Life
  30. Labels

    • Skins
    • Enhancement
    • Controls
  31. Labels

    • Quality of Life
    • Controls
  32. Basically the goal is to make it so that when you hit a button, Delta sorta intelligently decides what button you meant to hit by how far the gap is from when you hit say the right “edge” of the last button. So say you hit the right edge of the B button on NES. Then your next press is the very left of the same B button according to the JSON tap boundaries. Well, I’m saying Delta should be intelligent enough to know the x and y threshold of the tap is so different the user definitely meant to hit the button “closest” to where they tapped which would be the A button for NES.

    Checklist

  33. Default the tap to R3 / L3 (whichever is unmapped and both if they are both mapped) but make the tap a customizable setting.

  34. Onviously the touch screen could emulate the mouse to a certain degree.

    Every Mapper 28 game actually uses the SNES Mouse if it’s emulated in the NES (IRL you have to build an adapter).

    Likewise Mapper 28 allows for the use of the SNES controller on the NES. Not all games take advantage of this but all games that don’t are coded to take X and Y inputs as A and B.

    Here’s an example of a modern game using it: https://khangames.itch.io/nescape
    and
    https://rainwarrior.itch.io/nesert-golfing

    Reference Hardware: https://www.raphnet-tech.com/products/snes_to_nes_cable/index.php

    Checklist

  35. https://vectrex28.itch.io/wordle-nes

  36. Only Japanese games use this built-in feature (the the fanicom’s second hard-wired controller) but it’s pretty cool.

  37. This will allow people to play one player games without passing the controller around.

  38. https://www.tiktok.com/@wallmasterr/video/7079454838123269381

  39. In complete contrast to this feature: https://trello.com/c/jKZoOc7q

  40. I believe these gestures should have a modifier button for this alternative functions but I wonder if there's a UI way to indicate to the user that because it's tragging from the gesture button that it's performing a gesture, ya know, JUST LIKE the swipe typing blue line of the keyboard. Yeah, and this option should be toggleable. Ill have to do some tests to find out what gestures pair with what. Stay tuned.

    We'll, the fast forward button needs to be also modify the "sustained" buttons to befome turbo buttons somehow. Maybe on a button button cases. Have to think about this more.

  41. In this, a skin maker could make the analog stick(s) travel at a FIXED speed regardless of how fast your thumb is moving. Video example attached.

  42. Like: https://trello.com/c/GYhHWSmI

  43. It would be the save file from this state: https://trello.com/c/9GW4gnuK

  44. In that same vein, deconstructing an existing deltaskin to PSD / TIF would be wonderful for editing.

User Experience Requests

  1. A completely black screen is also a loading screen. That will be the easiest to detect ofc. But most completely black screens with a word or repetitive motion (spinning wheel for example) will be loading screens.

    This could get deeper by getting users to crowd source loading screens by asking a user if they're turning the feature off for a game due to fast forwarding when the game isn't supposed to.

  2. These recordings could also be "emulated ysper fast" and then exported as an actual video.

  3. Labels

    • Preferences
    • Core
  4. Like just a little text saying “JIT Enabled” at the bottom right or something (mockup pictured)

    Labels

    • Quality of Life
  5. Labels

    • Quality of Life
    • Preferences
  6. This can be used for importing games, downloading custom skins, reading GameFAQs. Just makes the whole Delta experience more immersive.

    Labels

    • Enhancement
  7. Note
    The duration of a background location "process" is entirely dependent on how taxing the background processing is (in this case, this should basically be a noop loop). iOS chooses to kill the process based on undetermined factors but they have to deal with memory, battery life, etc - but in all tests a GPS background service (if programmed to do literally nothing) always lasts at least 10 hours.

    Reference
    https://discord.com/channels/625766896230334465/630158257910185994/837467435607130154 (Patron Discussion)

    https://discord.com/channels/625766896230334465/630158257910185994/837467425154531368 (Patron Notes)

    Labels

    • Enhancement
  8. Labels

    • Quality of Life
  9. Labels

    • Quality of Life
  10. “This BIOS file is invalid or corrupted, please try a different file and make sure the filename is the same as the bios#.bin”

    Labels

    • DS
    • Quality of Life
  11. Most games don't use the feature, and some users don't like having iOS' microphone usage warning icon at the top when their playing games.

    Labels

    • Quality of Life
  12. Labels

    • Files / Syncing
    • Enhancement
  13. Fields can include:

    You played this game x times this year.

  14. Labels

    • Quality of Life
  15. Most App Store apps behave in the same way.

  16. Going along with a user can beat. a game, how do they mark it beated?

    They mark it with a locked save state. So remove the "Locked" status and divide it into these three lists (which will all be "Locked" save states):
    • "Mark as Beaten" (user beats the game but doesn't want to "complete" it)
    • "Mark as Play Later" (user wants to pick up the game later and wants a definitive save state to lock to go back to)
    • "Mark as 100% Complete" (this status option only exists if the user already has marked their save state as beaten)

    There can be multiple of each of these but they are designed to give the player a way to see their achievements (and revisit through the save state). And maybe make that "Beaten" save state a 100% Complete save state one day. Or finish exactly where they left off by bookmarking their spot with a Play Later save state.

  17. Labels

    • Quality of Life
  18. Customizations:

    • How often a new snapshot is taken
    • How many to keep

    Labels

    • Enhancement
  19. Labels

    • Core
    • Files / Syncing
    • Preferences
  20. The files will all still be their SHA1 counterparts. This will make it easy for users to find their saves and games and whatnot in the Files app because right now it’s nearly impossible to use the Finder integration for really much of anything due to its ambiguity.

  21. This would have meant I didn’t have to delete the Delta app and reinstall in this card: https://trello.com/c/ZWv91OQx

  22. I suppose regular sharing might do. But syncing the Google Profilels or Dropbox profiles might be really useful, as well as sharing ROMs among themselves.

  23. Hitting the menu button goes back to the map buttons screen.

  24. And allow the user to create “tags” and add them to the rom. Things like “Unlicensed” or “Homebrew” would be good defaults to have but a user can make any.

  25. Include an “Advanced Settings” section in Delta to allow a user to “empty all Delta data” which will flush its own container and it’s folder in the app group.

  26. Converting to HEIC or keep original - whichever is smaller.

  27. This happens a lot. People expect SRAM to not be tied with save states but they are for technical reasons. This is the closest I can think of to solving the “I saved in-game, but now there’s an older save file in there” because, say, their loaded save state was made before they saved in game this reverting their saved game unexpectedly.

    This would def be unneeded if this card is possible: https://trello.com/c/9GW4gnuK

  28. Or open and start playing a specific save state. You get the idea.

  29. I’m attaching my Mega Man Zero 2 completed save to this ticket so you can test automating to Mega Man Zero 2.

  30. Not just while it's in memory. The entire state of the emulator should resume from where a user left off no matter how long ago they opened the app.

    PizzaBoy Pro on Android does this as an example.

Game Library Enhancements

  1. Think of 1DM

  2. Switch: .xci (cart), .nsp (digital), .nsz (compressed digital)

    The uses these will look like all other games in the library, but if they aren’t installed, their will be an extra interface deleting a previously cached installed game to the newly installed game.

    NOW, post-install the “package” file is ignored in the game library. This is very important for things like CIA game updates.

  3. Labels

    • Quality of Life
  4. Console Compressed ROM Formats:

    Disc-based (.iso / .bin)
    • PSX: .chd (preferred) / .pbp [Converter: chdman]
    • GC: .rvz (preferred) / .gcz (deprecated) / .ciso [Converter: Dolphin]
    • Wii: .rvz (preferred) / .wia / .cso (not maxcso) / .wbfs [Converter: Dolphin, WIT]
    • Sega CD: .chd (preferred) [Converter: chdman]
    • PSP: .cso (preferred) [Converter: maxcso]
    • PS2: .chd (preferred), .cso (common) [Converter: chdman, maxcso]

    Cartridge / Download
    • GBA: .gba (trimmed) [Converter: NDSTokyoTrim]
    • DS: .ds (trimmed), .chd (compressed) [Converter: NDSTokyoTrim]
    • 3DS: .3ds (trimmed), .chd (compressed) [Converter: NDSTokyoTrim]
    • Switch: .nsz (download), .xcz (cartridge)
    • Everything Else: .7zip (works for small games, large games have long initial loading times which is why CHD is best for them)

    Guide https://emulation.gametechwiki.com/index.php/Save_Disk_Space_for_ISOs#WIA_.28Wii_ISO_Archive.29_-_Wii_only.3F

    Labels

    • Core
    • Files / Syncing
  5. Cloud syncing requires the least amount of space possible and 7z is a much better compressed archive format for storage. The consoles, on-device, need compressed file formats that are readable on-the-fly so many created their own formats and that's described here if you’re curious: https://trello.com/c/cCe86Mcr

    Attached is a chart of speed vs best compression. Recommended algorithm: 7-Zip LZMA2 Default

    Ideally, if a device is powerful enough it could read the 7Z on the fly but even then I feel takes too much work then doing it per download / upload of a game since cloud space is the real factor users have to consider.

    Labels

    • Files / Syncing
    • Enhancement
  6. Subject says it all? I don’t know many who import via iTunes so maybe the long hold could be for going straight to the file chooser and tap should stay the chooser?

    Labels

    • Quality of Life
    • UX
  7. Labels

    • Files / Syncing
    • Enhancement
  8. Why am I coding an integration for pCloud?
    Because they've been around since 2013. Their API is easy to use, and the pricing is super affordable which is highly needed for users the bigger ROMs become

    https://www.pcloud.com/cloud-storage-pricing-plans.html

    Labels

    • Enhancement
  9. Series of Harmony Sync Choices
    • https://trello.com/c/E8tlY72F/39-feature-private-altserver-local-syncing-support?menu=filter&filter=sync
    • https://trello.com/c/g7H0DC6Z/211-enhancement-add-ftp-as-an-another-sync-choice?menu=filter&filter=sync

    https://github.com/rileytestut/Harmony/issues/2

    Labels

    • Files / Syncing
    • Enhancement
  10. Related to this https://trello.com/c/sHuovM1s but instead of manual collections / folders - they’re Smart Folders.

    Smart options could be:
    • Most frequently opened games
    • Games with most time spent playing
    • Highest rated (possibly using gamefaqs / metacritic)
    • Last played
    • Recently Added

    Labels

    • Core
  11. This ties into the widget series: https://trello.com/c/EGoIGxPy/106-feature-recent-games-widget

    This homescreen widget should actually be able to have a setting to choose from any Delta Collection (Folder) as per this card: https://trello.com/c/sHuovM1s

    Labels

    • Widget
  12. This will allow a user to overwrite their entire Delta Library with the library in the cloud so in case of an sync error - a user doesn’t have to delete and re-install Delta to fix it.

    Labels

    • Preferences
    • Core
  13. This should also include the dates for completed or finished as well as a count for each for how many times it was beaten.

    The user can switch these game statuses from the contextual menu.

    Reference:
    https://discord.com/channels/625766896230334465/626109625900728340/770492574041505822

    Labels

    • Core
  14. • If user changes game name and the cover art is blank, then re-match with the VGDB and add the most relevant title based on console and name

    • If user clicks to change cover art, auto fill in the games title and filter only that specific console's game covers

    • Global setting like:
    1) Automatically guess and populate cover art
    2) If cover art can’t be matched exactly, open up the artwork chooser with file name pre-filled (minus any parenthesis, brackets)
    3) Just use a generic “blank cover art” of a match can’t be found and you can change it manually.

    Labels

    • Quality of Life
  15. This ties into the widget series: https://trello.com/c/7ykKXOR0/143-feature-homescreen-widget-for-games-that-you-want-to-play-next

    Create a Delta Widget with your most recently played game as the smallest size (V1), your most recent 4 / 8 games played as the medium size / large size respectively (V2)

    Bonus
    Allow users to customize the 4 / 8 games instead of it just being the most recent.

    Labels

    • Core
  16. If there are more than 4 conflicts, it’s very likely an overall sync error - like a user logged out and back into Delta Sync or changed their Google password so they had to log back in or they switch between Delta versions (like testers do).

    I think there should always be a “sync completely from cloud” option in the “Merge Conflict” pane when any conflicts happen and likewise “sync completely to cloud from local device option”.

    This would resolve all conflicts at once with not much user frustration.

    Labels

    • Files / Syncing
    • Enhancement
  17. Choose multiple ROMs, zip files, and directories and Delta will recursively go through them and add all valid / non-duplicates.

    Probably should add an undo button in case a 7Z has like every language rom in it.

    Labels

    • Enhancement
  18. Essentially a full backup of all the data stored in Delta.

    Labels

    • Core
  19. Related to this card: https://trello.com/c/je3UiPig

    Allow for games to be added into groups similar to the way iOS app icons work. Except you can add a game to more than one playlist. That’s imortant.

    Think of them as “tags” and that’s needed because a singular game could fall under many user collection groups. I mean this literally should work like music playlists in every sense.

    Labels

    • Core
  20. Ability to save all cover locally and, in effect, the user's Harmony cloud.

    Labels

    • Quality of Life
  21. This new section would join the "Auto Save", "Quick Save", and "Locked" special save state sections with a "Pinned" save state section - this is useful for those that use one save state for progress and the rest for experiments while they’re gaming. I envision this as a section directly underneath Auto Save with a 2 pin limit.

    Labels

    • Quality of Life
    • Preferences
  22. Labels

    • Core
  23. Series of Harmony Sync Choices
    • https://trello.com/c/E8tlY72F/39-feature-private-altserver-local-syncing-support?menu=filter&filter=sync
    • https://trello.com/c/g7H0DC6Z/211-enhancement-add-ftp-as-an-another-sync-choice?menu=filter&filter=sync

    Private server syncing support would allow for AltServer local file syncing rather than a cloud-based solution.

    Alternative: Allows users to sync files with a self-hosted Nextcloud / ownCloud service.

    Labels

    • Files / Syncing
    • Core
  24. I mean really removing anything inside brackets or parentheses and removing almost all special characters except for spaces (except trailing spaces) and punctuation if the punctuation is inside of the game title and not after the parenthesis.

    This is the regex I use: (\d\d\d\d[^-].*-\s*)|(\s*\[[^()]*\])|(\s*\([^()]*\))|(\s*(?=(?:\.[^.]+)?$))|, The and it cleans all ROMs I've thrown against it so far.

    It doesn't account for (Disc #) yet tho since that should be translated to (D#).

    Labels

    • Quality of Life
  25. Provenance does this if you want an example. But when a user imports - and there’s no exact match, users should have a setting in Settings “Use fuzzy logic to match games with their titles and artwork”.

    Then when a hash doesn’t match but a title is 70% correct, you prompt the user about the name change, allowing them to edit it, and let them click on the artwork in that prompt to change it as well if they’d like to.

  26. This will be automated in multiple ways.

    First, a user can manually link disc based games in the contextual menu.

    Second, same titled games with either (D1) or (Disc 1) appended to their filename but the title is the same amongst the disc auto-collapse into one entry.

  27. I'll add database here:

    https://superfamicom.org/info/granhistoria-genshi-sekaiki for example

    https://www.mobygames.com/game-group/console-generation-exclusive-snes/offset,0/so,1d/

    Another database: https://nesdir.github.io/26D3082C_USA.html

  28. https://youtu.be/UgNuhSKPPXg

Game-focused Features

  1. Solbrain/Shatterhand co-op hack is the best example and can be found here.

    https://www.speedrun.com/shatterhand/resources

  2. https://www.patreon.com/posts/moded-emulator-34560541

  3. This could be a separate folder in the Cores folder to add the "music packs".

  4. For example, the pictured attached is an example of advanced settings for NES games like being able to bypass, artificially, the limit of 8 sprites on NES.

  5. Lunar's Disc switching screens are attached to this. There's two methods to solve this. In the screenshot I was using Google's OCR to scope out the word "Disc" and that does work so OCR is an option if we use it to check if the game is on a Disc Switch Splash Screen (and which disc number it wants us to insert). The alternative and preferable method would be to gather all the splash screens and we can use them to compare with the games output and if they match, switch discs.

    Every switch disc screen could be boiled down to a video output frame checksum (or series of them) and each could correspond to a different disc.

    The OCR could ofc just read "disc #" and tell Delta the number but checksums of splash screens would be best.

  6. https://wiki.nesdev.org/w/index.php/VRC2_and_VRC4

  7. This function should be completely navigable via controller. It should also keep a cache of the currently viewed page and scroll position per game so it will work offline and merely pushing a mapped controllers special button or button combo should toggle the appearance of the in-app browser. This external controller button will automatically be configurably mapped via https://trello.com/c/BTvdcooT

  8. UNDO QUICK SAVE
    Every Auto Save made doesn't overwrite the last one temporarily, until a new one is made (likewise account for accidental multiple quick save button clicks), and the in-game menu should add a dynamic button that appears for those few minutes that says "Undo Quick Save" (not unlike the feature for https://trello.com/c/Q61t99su/223-qol-classic-square-enix-soft-reset-global-controller-combination-for-all-games where you dynamically add a "Undo Reset" button.

    If using a controller, then the user, after making the mistake, can hold down the quick-save-state mapped button and the Quick Save that was just created will be removed and replaced with the original. This should be indicated to the user through some kind of on-screen indicator that they Undid the Quick Save

    UNDO QUICK LOAD
    On every quick load, an "auto" save state will be created (account for accidental multiple quick load button clicks). If a user quick loads on accident and then realizes this and then holds down the load button after the accident, then Delta will load the auto save it made right before the load. Likewise to the solution for quick save undo-ing, there will also be a button in the in-game menu that appears for, say, a minute that says "Undo Quick Load"

    Alternatively, rewinding will rewind the user back before the quick load, but unfortunately not all users will have that mapped so the "undo" solution had to use the same button.

    Labels

    • Enhancement
  9. This is mainly for homebrew but also for Blaster Master.

    https://www.reddit.com/r/emulation/comments/79nb9m/nestopia_has_trouble_running_special_mapper_rom/

  10. There are two save states at the top and modular control over when they are overwritten would be beneficial:

    • On return to Delta Homescreen
    • On return to Springboard
    • On crash / force quit / termination for any other reason
    • On Delta app resume
    • On opening the Delta in-game menu

    Labels

    • Enhancement
    • Core
    • Preferences
  11. Labels

    • Enhancement
  12. Rewinding is already taken care of by Ian via: https://trello.com/c/Pavxk0HL/199-feature-rewind-to-a-recent-point-in-gameplay-pr-ian-clawson

    Labels

    • Enhancement
    • Accessibility
  13. This includes artwork. Also, automatically fill game title in the search bar when user taps to add custom artwork from VGDB.

    (and if game is renamed try again if there wasn’t a header / hash match initially)

    Labels

    • Quality of Life
  14. Along with Yoshi Topsy Turvy and WarioWare (tho WarioWare might already work). This could use the gyro in the iPhone and PS4 Controller when using an external controller.

    Labels

    • GBA
    • Core
  15. Core switch would be needed to support these peripherals. https://github.com/mgba-emu/mgba/

  16. This new section would join the "Auto Save", "Quick Save", and "Locked" special save state sections with a "Pinned" save state section - this is useful for those that use one save state for progress and the rest for experiments while they’re gaming. I envision this as a section directly underneath Auto Save with a 2 pin limit.

    Labels

    • Quality of Life
    • Preferences
  17. Reference:
    https://discord.com/channels/625766896230334465/625766896695771137/795881420580192256

    Labels

    • Enhancement
  18. Bonus if the game auto-loads via: https://trello.com/c/vSiYqBdV

    Labels

    • Core
  19. Unknown what causes them but if you hack Diamond and remove it’s internal frame limiter then it fixes this bug which I found odd. On top of that, when it dips down to 10fps, all a user needs to do is go to tin game menu and then resume and it’s 30FPS again.

  20. Homebrew uses it as well as a list of GBA games - the predominant ones being:

    Drill Dozer and WarioWare: Twisted! And Mario Advance 4

    But the whole list is:

    Drill Dozer
    Mario & Luigi: Superstar Saga
    PokĂŠmon Pinball: Ruby & Sapphire
    Shikakui Atama wo Marukusuru Advance: Kokugo Sansu Rika Shakai
    Shikakui Atama wo Marukusuru Advance: Kanji Keisan
    Summon Night Craft Sword Monogatari: Hajimari no Ishi
    Super Mario Advance 4: Super Mario Bros. 3

  21. For example weeks 1 thru 4 of Zelda: Ancient Stone Tablet

  22. Possibly thru IPS patches for "touchscreen" levels of difficulty.

  23. I’ve found in games like Spirit Tracks. That it’s a lot easier to navigate when the screens are flipped and the “touch screen” is actually the normal DS screen. I just flipped the screens by changing a skin. But I found the same skin was also useful for The World Ends With You.

    The DS was made for a style which doesn't work well with an entire finger, especially for games like Zelda: Spirit Tracks where you can only move by running on the same screen you're touching, but touching it makes it so you can't see where you’re going. I found if you swap the screens but make the touch screen the “wrong screen”, then it actually makes for a better experience. I assume this is the same for other games (it helped a lot with The World Ends With You as well).

    Labels

    • Quality of Life

Core Requests

  1. Also, use OCR to detect swap disk screens and loading screens to swap / fast forward in an automated way. Mesen may be needed for this.

    Labels

    • NES
    • Enhancement
  2. Extensions of ROMs are .bs and .fig

    Labels

    • Enhancement
    • SNES
  3. Looks like Mupen64 supports dynamic recompilation (JIT). Enable it?

    Could research this while figuring out current N64 bugs listed here: https://trello.com/c/O3OhNfIA

    I know Provenance has N64 JIT. Gotta look into what core they use.

    The newest JIT rewrite currently might have some BUILD bugs but it's built into mupen64-plus so it can still be used by Delta if you can build it: https://github.com/mupen64plus/mupen64plus-core/issues/879

    Labels

    • Core
    • N64
  4. http://melonds.kuribo64.net/comments.php?id=110

    Labels

    • GBA
    • DS
    • Enhancement
  5. PROMPT: ”This save state is based on a core that is not your default core for this console, Delta will temporarily switch cores, but it’s recommended you make an in-game save and reset the game to go to your default core, then load your in-game save, then save state again and delete this one.”

    The SRAM stays the same anyway and this could def play into this card somehow intelligently: https://trello.com/c/wcYFP8n9

    Labels

    • Core
  6. True emulation of the Super Gameboy allowing for additional functionality (color enhancement and 4:3 borders) can only be accomplished by switching cores as gambette doesn't have plans to support it, mGBA on the other hand, does. And with my switching cores seamlessly card - https://trello.com/c/wcYFP8n9/198-feature-make-all-emulator-core-switches-in-the-future-foolproof-save-wise - then switching cores might not be the worst thing in the world. Plus mGBA comes with other enhancements: https://trello.com/c/CYlK8DsU/109-look-into-switching-gba-core-to-mgba-for-future-gba-dolphin-connectivity-and-e-reader-emulation

  7. Note: Even emulator core version updates can break save states - particularly for newer systems as they are quite actively developed. So this may be needed for random core updates in the future as well.

    Okay, so, whenever a user globally changes an emulator core (like Desume to melonDS for example) - any game with current save states gets its core locked in place - so all changing the core does is change the default core that's used for roms that don't have save states. After which, the roms where the emulator core is locked (any core with a pre-existing save state) should only be allowed to switch out of that core to another core on a game by game basis. Let me explain.

    Premise
    Basically, add a preference in the in-game menu config that says "Switch Cores".

    User Prompt: "You can only move one save state to the new core, so please select which save state you would like to move to the new emulator core."

    *user selects their preferred state*

    User Prompt: "This save state will now load with the current emulator core. The next time you make an in-game save, a prompt will ask you to confirm switching to the new core and the system will reset for you to load your new in-game save."

    *user goes and makes an in game save as instructed*
    *Delta detects the in-game save has been made and automatically prompts the user again about switching cores, if they say yes, Delta stops the rom, switches cores, and starts the rom up*

    Note: If user quits Delta or exits the game before this process is finished they have to restart - but during this user-guiding core-switch process the "Swap Core" button will be greyed out and the text switched to Swapping Core.

    As soon as the user gets to the loading screen and selects their file, Delta can detect that a la https://trello.com/c/syjoBf8i/175-enhancement-when-importing-a-save-ram-file-as-soon-as-the-emulator-core-accesses-the-sram-file-wait-a-few-seconds-and-save-state - and do an automatic save state right as soon as they load their in-game state in the new core.

    Boom, they have a save-state exported over to another core and we guided there each step intelligently.

    Labels

    • Core
  8. This would require building an emulator core for bsnes-hd tho.

    Labels

    • Core
    • SNES
  9. This may sound crazy, but that means, to the user, the user imported the save and they don't have to really understand what kind of save it was if they come back to it later (since it'll literally be SRAM and a save state automatically). It'll be in the "Save State" section and in the normal "SRAM" in-game section. It's a QoL thing, but user's get confused man.

    Labels

    • Enhancement
  10. https://9to5mac.com/2020/12/22/nintendo-switch-games-have-been-successfully-emulated-on-m1-macs/

    Labels

    • Core
    • Mac
  11. Labels

    • Enhancement
  12. https://www.libretro.com/index.php/category/runahead/

    AND

    https://near.sh/articles/input/run-ahead

    void Emulator::runFrameAhead(unsigned int runAhead) { if(runAhead == 0) return runFrame(); //sanity check //poll the input states of the controller buttons input.poll(); emulator.run(); //video and audio frames discarded (not sent to the monitor and speakers) //capture the system state so that we can restore it later auto saveState = emulator.serialize(); //we can run-ahead as many frames as we want while(runAhead > 1) { emulator.run(); //these frames are also discarded runAhead--; } //here we run the final frame auto [videoFrame, audioFrames] = emulator.run(); //the final frame is rendered video.output(videoFrame); audio.output(audioFrames); //lastly, we restore the save state we saved earlier emulator.unserialize(saveState); }

    Labels

    • Enhancement
  13. These preferences / enhancements will contain settings that help test various aspects of Delta, including emulation performance and skin layouts.

    Global settings could include:
    • Display FPS during gameplay
    • Skin debugging (Ian already PRed this)
    • Change skin layout between any supported layouts (this allows creators to test every layout in their skin, without having each individual device)
    • Option to delete all cloud files and do a fresh sync to help fix sync failures

    Per console settings could include:
    • Internal Resolution
    • Their raw emulator ini files if they exist
    • FPs display override

    Per game settings could include:
    • Internal Resolution
    • Their raw emulator ini files if they exist
    • FPs display override

    Note: Everything should be synced to the cloud and always allow the user to reset their ini core files if they mess up

    Labels

    • Preferences
    • Quality of Life
  14. Switching between this cores for users easily is explained here: https://trello.com/c/wcYFP8n9/198-feature-make-all-emulator-core-switches-in-the-future-foolproof-save-wise

    We'd need to enhance the modular emulator core protocol so that emulator cores can truly be plug and play. We can base this on the way RetroArch works with it's modular core system: https://github.com/libretro/RetroArch

    Retroarch appears to pre-compile all of it's cores (but you can also download them after the fact so I'm not sure on this). But technically using dynamic codesigning we could add / remove cores at will without having to re-sign. But, even if we needed to re-sign, that's literally the point of AltStore / AltDaemon / AltServer, so we're more than capable of doing so automatically if we wanted this "download external core on-demand" feature but I don’t see why we wouldn’t include all cores precompiled cause techniques to do otherwise is very hard and I don’t understand how RetroArch has that feature on iOS. They don’t even know how it works (I asked).

    Console and Core List

    PSX
    https://github.com/notaz/pcsx_rearmed
    https://github.com/stenzek/duckstation
    https://github.com/libretro/beetle-psx-libretro

    PSP
    https://github.com/hrydgard/ppsspp

    3DS
    https://github.com/citra-emu/citra-android
    https://github.com/OatmealDome/citra-android

    Gamecube / Wii
    https://github.com/OatmealDome/dolphin

    DOS
    https://github.com/MattAndrzejczuk/MSDOS-for-iOS

    Dreamcast
    https://github.com/reicast/reicast-emulator

    PS2
    https://github.com/jpd002/Play-

    Labels

    • Core
  15. Better performance and fixes issues with mario kart and the billboard. less input lag. Fixes various graphical issues like Z-fighting (can cause migraines to people) in the distance.

    Core Source: https://github.com/Themaister/parallel-rdp

    Reference: https://www.libretro.com/index.php/parallel-n64-low-level-rdp-upscaling-is-finally-here/

    Labels

    • Enhancement
  16. mGBA is the only known GBA emulator that is able to connect to Dolphin and be used as if it was connected to a GameCube.

    mGBA also is the exclusive emulator that supports GBA eReader a la: https://twitter.com/luigiblood/status/1376477364427837440?s=21

    Reference:
    https://github.com/mgba-emu/mgba

    Labels

    • Enhancement
  17. This interpreted (slower) version of JIT is still faster than no JIT at all and doesn’t require an AltServer connection. Could look into this when bored.

    Reference: https://twitter.com/snfernandez/status/1383394958317551616?s=21

    Labels

    • Core
  18. melonDS branch with camera support: https://github.com/Arisotura/melonDS/tree/dsi_camera

    Blog post about it: http://melonds.kuribo64.net/comments.php?id=126

    Labels

    • Enhancement
  19. Adds support for Delta displaying across chromecast or similar casting devices.

    Labels

    • Enhancement
  20. Allowing users to manage multiple save files and switch between them, set default, etc.

    Labels

    • Quality of Life
  21. Similar to the gba4ios startup intro.

    Labels

    • Quality of Life
  22. Use OCR (Optical Character Recognition) in Delta to provide a text-to-speech interface built into the app for the blind or those with poor eyesight. Allows certain games to be accessible in ways not currently available on any other iOS emulator.

    https://developer.apple.com/documentation/vision https://developer.apple.com/documentation/avfoundation/avspeechsynthesizer

    https://github.com/rileytestut/DeltaCore/issues/13

    Labels

    • Enhancement
    • Accessibility
  23. PIP doesn’t have access to the GPU.

    Labels

    • N64
  24. https://github.com/ekeeke/Genesis-Plus-GX/issues/297#issuecomment-918468508

  25. A whitelist of games is included in the plugin.

    https://twitter.com/dariosamo/status/1532736513183731713?s=21&t=F6ieESRR6HSr5KedSJXUxw

  26. Star Ocean 7Z: 3.69GB which unzips to:

    Star Ocean (Disc 1).ISO: 4gb
    Star Ocean (Disc 2.iso: 4GB

    You get the idea.

    Almost all multi-disc games benefit from compressing them as ONE archive. Delta would have to do that when uploading or downloading from the cloud.

  27. https://citra-emu.org/entry/citra-progress-report-2023-q1/

  28. https://youtu.be/2R50jx0aHM0

Upstream Responsibilities

  1. Reference
    https://twitter.com/rileytestut/status/1397269421165477889?s=20

    Labels

    • Apple TV
    • Core
  2. Lots of reported missing graphics that often makes the games unplayable. The most reported ones are listed below. You could look into switching or updating the N64 core and while you’re at it, look into this: https://trello.com/c/ukydPGUF

    Labels

    • Known Issue
    • Core
    • N64
  3. https://github.com/snes9xgit/snes9x/issues/529

    Labels

    • Enhancement
    • SNES
  4. https://github.com/mupen64plus/mupen64plus-core/issues/129

    Labels

    • N64
    • Core
  5. This is best handled upstream and merged as part of a core update. But making a note of it here for reference and for Delta user's to follow our upstream GBA core team's ticket for this feature: https://github.com/visualboyadvance-m/visualboyadvance-m/issues/810

    Labels

    • GBA
    • Enhancement
  6. Feel like this would have to be some kind of OatmealDome collab.

    Labels

    • GC / Wii
    • Core
    • GBA

Current Features --->

All Delta / Deltroid Versions

  1. Just needs to be rebuilt, IPA exported, and then distributed for users to install via the new version of AltStore as listed here: https://trello.com/c/Obz2CEFJ

    Labels

    • Core
  2. Labels

    • New System
    • Core
    • DS
  3. Ability to use graphics filters to alter the appearance of games - such as various graphical effects (mirroring / blurring / stretching). This helps with different color schemes on systems like NES and GB if you run through Core Graphic Filters but the full palette preset card is here https://trello.com/c/YbMKOdBc.

    Added to: 1.2b

    Labels

    • Enhancement
    • Skins
  4. Added with v1.2b

    For games that require a more specific skin (for example: fighting games with tight precision required) to play, a skin can be assigned to override the default skin for that system.

    Labels

    • Enhancement
  5. Added with v1.2b

    Labels

    • Enhancement
    • Skins
  6. Added with v1.2b2

    Exports the save file of one game at a time.

    Labels

    • Enhancement
  7. Contributor: https://github.com/ericlewis

    Labels

    • Quality of Life
    • Pull Request
  8. Added with v1.2b2

    Labels

    • Enhancement
  9. Labels

    • Quality of Life
    • Preferences
  10. https://github.com/rileytestut/Delta/issues/5

    Labels

    • Known Issue
    • GBA
  11. Allows for the use of melonDS JIT compilation for massive speed boosts on supported devices. Only works on devices iOS 14-14.3

    Labels

    • Core
    • DS

Deltroid / Ignited Public, Delta Beta

  1. This technique uses a quirk in the Xcode debugging software to enable JIT in the app when AltServer is present.

    Initial version will include the ability for AltServer to enable this manually for other apps but this will be enabled automatically as needed for Delta along with a simple library for other developers (like UTM or Dolphin’s devs) to achieve the same automated functionality as detailed here: https://trello.com/c/YNjfbtX2

    Important
    Mobile Device Service might need to be restarted when Delta requests JIT from AltServer, this can be done manually over SSH (and the Shortcuts app) - but AltServer will eventually be able to do this on-demand: https://trello.com/c/s9PxKHy6

    Sidenote
    Public users can set up this technique manually using spidey123222 and jkcoxson’s guide (from the Delta Discord): https://docs.google.com/document/d/11_jju27qzhH_epq9XS1SlIlaBDPfvekRRYs5NS_ze_U/edit

    Reference(s)
    https://discord.com/channels/625766896230334465/630158257910185994/837467425154531368 (Patron Discord)

    Labels

    • Core
  2. Labels

    • New System
    • Core
    • Genesis
  3. 🤣 🤣 🤣

    Labels

    • Core
    • GC / Wii

Home | Templates | Pricing | Apps | Jobs | Blog | @trello | Trello API | About | Help | Legal | Privacy | Integrations | Contact us | Terms