* DVD file overlay support
Fixes#163
Basically allows games to "overlay" a set of file paths over the DVD. These are provided as a flat list of absolute paths, and when an overlayed file is read, the game gets the ability to provide its own read/seek callbacks.
The current implementation rebuilds the FST. This means EntryNums will not be consistent with the original disc, but it does avoid rewriting a significant chunk of the existing DVD code that relies on the FST.
* Comments and a guard
* EntryNum handling rewrite
Game now assigns entrynums for added files, and original disc entrynums are preserved.
* Split FST logic into another file in dvd lib
* Fix overlay userdata 0
Dusklight was using integer indexes for the userdata of overlay files. This meant file 0 was a null void*, and that meant the DVD code didn't treat it as an overlaid file.
Add an extra bool to avoid getting confused like this.
* Make entryNum only validated if not replacing file
* Make FST rebuilds thread safe with concurrent readers
Since I kinda would like to eventually allow mods to be loaded without game restart (where practical)
* Doc updates
* Remove debug logs
* Aurora-allocated entry nums & dir support
* Add warning for resetting cwd
---------
Co-authored-by: Luke Street <luke@street.dev>
* Implement Area sampler for scaling the internal resolution
* Move resampling to before RmlUi instead of inside it
Allows non-Bilinear resampling to work regardless of RmlUi being init
* feat(rmlui): add user-configurable ui scale multiplier
Expose `aurora::rmlui::set_ui_scale` / `get_ui_scale` so consumers can
multiply the RmlUi context's density-independent pixel ratio without
having to fight `sync_context_metrics` resetting the value every render.
Default scale is 1.0 (no behavior change); the multiplier is clamped to
[0.25, 4.0] and applied inside `sync_context_metrics`, so existing
display-scale syncing continues to work for HiDPI / display-change
events.
* refactor: specific scale vs multiplier
* Add support for setting default mappings per-type
Adds a new enum and getter, as well as updates PADSetDefaultMapping to take the new enum.
I haven't set the mappings for each controller type just yet as we'll need to experiment with that.
That being said we can at least fix the gamecube mapping
* Correct GameCube controller default mapping (swap b/x)
* Fix struct forward decl
* Remove unnecessary todo