* Use mipmaps from .dds file if present
* Don't load mips from disk if they're present in the base file
* Keep mipmap count >= 1
* Remove unintended formatting changes
* Validate DDS mipmap handling
---------
Co-authored-by: Luke Street <luke@street.dev>
* 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>