Files
PS5_RetroArch/tooling
Mihawk 9155dd5c23 Add native Snes9x with verified colours and core-local C++ cleanup
Build pinned libretro Snes9x 1.63 with this project's SDK and official metadata.
Convert final RGB565 frames to independent XRGB8888 storage for the existing
Vulkan upload path. Integrate staging, native imports and loader diagnostics.

Keep C++ destructor registration inside the unloadable core. Validate bounded
fini arrays before constructors and execute cleanup at last-reference close.
Test all 65536 colours through GPU upload, pitches/bounds/cached frames and
C++ destruction/reload/malformed finalizers. Existing core bytes are unchanged.

Verification: bash tools/verify.sh passed format/unit/build/integration/evidence
with 60 tests. bash tools/run-title.sh --no-build --core-test=snes9x --watch 180
passed loader/recovery and remained running until runner close. Owner: Works
flawlessly, answering colours/audio/input and menu/content-transition checks.
Zero Vulkan refusals, GPU API failures or kernel fatal-signal reports.

Evidence: evidence/snes9x-native/{capture,expectation,iterations,abi,build}.json,
loader/recovery reports and exact linked-driver hashes. Replay with
bash tools/verify.sh evidence. Frontend identity:
64bef2e7826e5a63a6644a933e24ef5403d28c754230c0038eb8a76b4baa1c53.
PS5_Vulkan was not modified; special-mode/save-state/performance coverage is
not implied by this ordinary-game acceptance.
2026-09-19 16:19:59 -04:00
..

Native host tooling

All repository-owned format tooling is C or C++. Make/Bash and PowerShell are thin platform-specific orchestrators. No C# or .NET runtime is required.

The root build performs four native stages:

  1. prospero-clang18 compiles application sources and native/app_crt.cpp.
  2. LLVM lld resolves objects, static archives, public SDK import stubs, constructors, TLS, and unwind information into an intermediate PIE.
  3. native/ps5-native-tool converts that PIE to the PS5 ELF layout and wraps it in a deterministic development FSELF.
  4. The requested folder or optional filesystem image is assembled.

native/libc_builder.cpp independently reproduces the generated clean-room runtime from the two manifests under native/runtime/. Run make libc on Linux/WSL or ../tools/rebuild-libc.ps1 on Windows to prove both hashes.

make deps fetches the pinned public payload SDK and static zlib archive into .deps/native/; neither is installed globally. The shell and PowerShell bootstrappers share the same cache layout.

See ../docs/NATIVE_TOOLING.md for the format boundary and low-level commands.