(feat) Games backend support for arcade cores, ROM matching, and server-side artwork handling - #222
Draft
WizardOfYendor1 wants to merge 6 commits into
Conversation
…nails and delivery limits
Contributor
|
Take a look at how it will affect Smart-TV repo as well since they use the emulator js too. |
Author
Will do. I'll take a look later tonight. I wouldn't expect it to have any effect (if I had a nickle for everytime I've said that). I went out of my way to preserve the "legacy" approach/endpoints (primarily to no break people who had newer plugin version than the android client and vice-versa)....and any new fields in the payload additive. |
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Pull Request
Summary
Sorry I can't be brief (REALLY tried :-)).
This adds new functionality supporting retro games, including arcade core support (FBNeo) and a complete redesign of artwork handling. This is the "sister" PR to the retro game client (Moonbase) PR... and again sorry for the "mega PR". I couldn't think of a good way to split all this up except with commits.
Just like client-core changes, I've redesigned and refactored this quite a bit over several other approaches. i.e. many ideas failed or just wasn't good. Of course, this may not be good either... but maybe it's a starting point.
Additions/Changes:
There are 4 files that alter existing behavior, one notable one is a refactor of the emulator player.html. I pulled the javascript into moonfin-bridge.js. So sorta of optional.
Outside the games library, this touches a few spots that are not game related. A dispatchKeyEvent gains a check, the existing startup/resume image-cache sweep gains a game-artwork pass, notifyAppResumed fires on resume, and the Watch Next background worker now stands down while the app is foregrounded (probably the "biggest" one).
Media image caching behavior is unchanged — the sweep was generalised to take a cache key so game artwork can reuse it, and media still sweeps the same directory with the same throttle. No media playback, library, or scanning code is touched. The game artwork gets it own cache - in it's own isolated domain. i.e. keep a wall between the media functionality.
Basic run down of new features:
Arcade
Artwork
ROM identification
Games API
And a litany of new tests covering all of that.
LLM disclosure: as with client core. Most of my early iterations were all me and LLM was research on approaches. I mostly used it for test generation from use cases I had written. That then provided a a path to code to make it work as designed. Also in late states used for research/refactoring/cleanup/chores (git operations etc) but in general I used AI a lot less on this side of things. I wanted to be extra careful here.
Type of Change
Area
Changes Made
Client Impact
Does this need matching changes in a client repo (Core, Smart-TV, Roku)?
Compatibility
bool?, an int toint?)Testing
Describe how this change was tested.
Test Steps
Screenshots (if applicable)
Include config page screenshots or request/response samples where relevant.
Checklist