Custom draw types (generational u64 ids with slot reuse; stale ids in
recorded frames become no-ops) let external code record inline draws into
the current render pass via push_custom_draw; the callback runs on the
render worker with the live RenderPassEncoder, and GX pipeline/bind
group/viewport/scissor state is restored afterward. Streaming buffer
push_* helpers are re-exposed publicly with no-frame guards.
Pass primitives mirror the GXCopyTex/GXCreateFrameBuffer/
GXRestoreFrameBuffer machinery: resolve_pass snapshots the current pass
targets (color copy + optional R32Float raw-depth conversion, MSAA-aware)
into per-frame-slot pooled textures, then continues on a fresh EFB pass
or ends an offscreen pass created by create_pass. The internal
resolve_pass was renamed resolve_pass_into to free the public name.
* 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