* [Codec/Native] Real H.264 decode for sceVideodec2, fix TLS loader missing the main module
sceVideodec2 was a capability-only stub: the game's video pipeline
worked end-to-end but never produced a picture, so intro/cinematic
videos stayed black even though playback "completed" without errors
(confirmed on Ghost of Yotei's intro cinematic).
- Videodec2Decoder: owns an FFmpeg H.264 session per decoder handle,
running decode and presentation pacing on their own threads (never
the guest thread) so a whole clip isn't decoded faster than it can
be displayed. Converts to BGRA and submits straight to
VulkanVideoPresenter, bypassing guest memory the same way the
existing Bink2 path does.
- Videodec2Exports: wires the real decoder into
sceVideodec2CreateDecoder/Decode/Flush/Reset/DeleteDecoder, falling
back to the original no-picture stub whenever FFmpeg is unavailable
or a given decoder failed to open.
- VulkanVideoPresenter: decoded frames were being dropped under a
single "latest wins" slot the render loop didn't always poll in
time before the next frame overwrote it. Queues pending video
presentations the same way guest-image flips already are.
- DirectExecutionBackend: the TLS load patcher's one-shot scan missed
the main game module when the entry point resolves to a separate
bootstrap allocation, and never re-scanned lazily-committed pages
patched in afterward -- both left FS:[0] TLS loads unpatched,
causing an early mutex-spin boot stall (reproduced on Demon's
Souls: stuck at import #256). Now scans both the entry point's own
allocation and the standard PS5/PS4 image base, and re-scans each
newly committed executable range as it's touched.
* [GUI] Add a toggle for SHARPEMU_FORCE_SUBMIT_ORPHAN_PREAMBLES
This flag already existed as an AGC workaround (forces queued GPU
command-buffer preambles through when their target queue never picks
them up, unblocking titles stuck on a WAIT_REG_MEM that never
signals) but was only reachable by setting the environment variable
by hand. Expose it as a checkbox next to the other env toggles, in
both the global Options panel and the per-game settings panel, so it
can be turned on for a specific title without touching a shell.
* [GUI] Add remaining language translations for the new env toggle
The previous commit only added the new key to en.json/fr.json,
relying on Localization's runtime fallback to English -- but
LocalizationTests.EmbeddedLanguages_ContainEveryEnglishOptionsKey
requires every Options.* key to exist in every embedded language
file, which broke CI on all three build jobs. Fills in the
remaining 13 languages.