* 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>
* Fix handling of Unicode paths on Windows
I love C++
* Reduce the amount of reinterpret_casts
* Okay? Don't commit the file CLion? Why not?
* Fix texture replacements too
* 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