The sljit Tier-2 in-process JIT was replaced by the tcc tier inc2a3f6ad(2026-06-25) and removed outright in5b7e69b4(2026-07-15). That removal reworded the C-level comments but touched no markdown, so the prose still described sljit as a live, default-on backend. Backends today are static -> gcc -> tcc: gcc is the development default when it is on PATH, tcc is the toolchain-free path for players. Both are external compilers invoked as a subprocess that produce a DLL; neither is an in-process JIT. docs/ARCHITECTURE.md, docs/BUILDING.md, docs/EXECUTION_MODEL.md, docs/COMPILING_OVERLAYS.md and README.md already said this correctly and are unchanged here. - THIRD_PARTY_ATTRIBUTION.md: the sljit entry claimed code vendored at lib/sljit/ and compiled into the runtime. That directory does not exist. Replaced with a TinyCC entry, which was missing entirely despite tcc being the compiler intended to reach end users. - docs/internal/SLJIT_PERSIST_CACHE.md: deleted. It documented the persisted shard cache of a subsystem that no longer exists, as "implemented" and "default-on". docs/internal/README.md updated to point at the current model instead of a dead link. - docs/ASYNC_OVERLAY_COMPILE.md: superseded-in-part header. Deliberately NOT rewritten sljit->tcc: the passages about serializing .sljit blobs, overlay_sljit_deserialize and an in-memory JIT registry describe a mechanism tcc never used, so renaming it would trade one false claim for another. The async worker/file-handoff design and the CPS work remain accurate. - docs/OVERLAY_CACHE_V2.md: sljit dropped from the dispatch priority chain. - ISSUES.md: Issue #7 closed as superseded — the backend it reported against was deleted rather than fixed. - docs/internal/COSIM_ORACLE.md: sljit_helpers left CPUState with the tier. - Dated session logs (RECURSION_BUG.md 25.5, BACKDROP_PRELOAD.md, ecosystem-watch.md) keep their narrative and get a pointer to the removal. One thing this does not fix: docs assert the tcc toolchain is "downloaded at release-packaging time and bundled beside the game exe". runtime/src/main.cpp does look for <exe_dir>/overlay_toolchain/, but no script in this repository creates it. The attribution entry now states only what the code does and notes that if packaging supplies the bundle, it happens outside this repo and must carry the TinyCC notice. Flagged rather than papered over. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
29 KiB
PSXRecomp ecosystem watch
This is a recurring upstream/fork audit, not a merge queue. It records the exact external state that was inspected, separates reusable framework work from title-specific work, and prevents an old fork from silently replacing newer framework fixes.
Note: entries evaluated on or before 2026-07-13 predate the removal of the sljit Tier-2 backend (
5b7e69b4, 2026-07-15). Where an entry describes an external branch touching "SLJIT", that surface no longer exists here; the equivalent path today is the bundled tcc tier plus the dirty interpreter.
Audit baseline and rules
- Evaluated through
2026-07-13T21:25:28-07:00(America/Los_Angeles), againstmstan/psxrecompmasteratdde268dc0fb9daf8fe6529f4aebfe80995350334(committed2026-07-13T12:54:28-07:00). - Investigation worktree:
audit/ecosystem-2026-07-13. - The initial audit inspected diffs and history without importing external code or reproducing the contributors' game builds. Focused follow-up ports are tracked below; the audit branch itself remains documentation-only.
- A candidate must be game-agnostic or explicitly configured by the game repo,
hardware-backed where it claims correctness, independently testable, and one
focused PR. Hard-coded title behavior, generated output, local paths, and
printf/log diagnostics do not belong in the framework. - Cherry-picking preserves the original author. If a change must be
reconstructed, use the contributor's exact
Co-authored-bytrailer and cite the source PR and commit in the PR description.
Evaluation ledger
Update a row whenever its source head changes. Metadata only means the source
was discovered but its diff was not evaluated.
| Source | Owner | Evaluated ref and commit | Commit time | Last evaluated | State |
|---|---|---|---|---|---|
| PR #13: stb launcher and accumulated runtime work | NyperYuhgard | feat/launcher-stb-revamp 812ce6f50c52c5c0fe86adf74ad302f3063b4f7f |
2026-07-13T16:47:04-05:00 |
2026-07-13 |
Fully inspected; split required |
| PR #14: WebAssembly and compatibility | Kareem Olim (kem0x) |
agent/add-web-runtime-and-compatibility-fixes a99a8fc14e26be3c48806ca85f15068a2c6801ae |
2026-07-14T04:30:04+03:00 |
2026-07-13 |
Fully inspected; split required |
| PR #15: config-driven game tweaks | douglasjv |
agent/game-tweak-framework 31cdfb4f4dac305e98661dfdbf8e685533fd7ca4 |
2026-07-11T15:56:20Z |
2026-07-13 |
Fully inspected; see Douglas section |
| PR #16: SmackDown 2 framework changes | Martin Penkava (shaneomac1337) |
smackdown2-fixes d05d14bb11caafad2963abe824f249249a80cb11 |
2026-07-12T19:16:19+02:00 |
2026-07-13 |
Fully inspected; split required |
| douglasjv/mm8 | douglasjv |
main 4eae0f952df9a527d18ff1916d373619fbb1a391 |
2026-07-13T21:28:50Z |
2026-07-13 |
Fully inspected; see Douglas section |
| douglasjv/r4 | douglasjv |
main e4262718269879ef2e9b11e2fa428301082117b8 |
2026-07-13T15:22:57Z |
2026-07-13 |
Fully inspected; see Douglas section |
| douglasjv/psxrecomp-tweaks | douglasjv |
PR branch above; fork default master is 0cb2a77bff02e90f25d2791072a94b6ce73039f4 |
2026-07-09T20:50:09Z |
2026-07-13 |
Fully inspected; default branch is 59 commits behind baseline |
| wowjinxy/psxrecomp | wowjinxy |
master 46c664713c12cf719b3b5e44aa18eea63dca13af |
2026-06-17T23:32:22Z |
2026-07-13 |
Metadata only; 8 ahead / 402 behind |
| seedlord/psxrecomp | seedlord |
master 4ea9ecd2a2d9db60d23e39091a53f12a2b2e751b |
2026-06-12T22:29:02Z |
2026-07-13 |
Metadata only; 467 behind, no unique commits |
| chrisking1981/psxrecomp_kula_world | chrisking1981 |
master 80c33a8903c36df44d331b8a38ad64e591fd7b0a |
2026-06-26T21:03:42Z |
2026-07-13 |
Metadata only; merged contribution branches already tracked in upstream PRs |
| Creesic/psxrecomp | Creesic |
master 3c2b87cb883d67db984fcabed30c5195f39ee3cd |
2026-03-28T02:33:18Z |
2026-07-13 |
Metadata only; legacy history has no common ancestor with v4 |
The fork comparison counts above are snapshots, not quality judgments. Old game
repos are expected to pin old framework commits; the point is to avoid copying
their whole framework back over current master.
Consolidated ecosystem gaps
The strongest missing shared capabilities found in this pass are:
- Faithful CD-DA playback and CUE pregap/index behavior. Current master already has multi-file CUE support, but not the complete Red Book playback path in PR #14.
- A supported WebAssembly target: reproducible Emscripten toolchain, browser audio, persistence/input shell, hosting requirements, and a diagnostic story.
- Declarative, opcode-verified game enhancement patches and typed widescreen extension points, so title repos stop editing framework source.
- Cross-platform, source-only game-repo scaffolding with an exact framework pin and repeatable extraction/regeneration steps.
- Renderer and SPU accuracy work that is presently being discovered during individual game bring-up: exclusive triangle edges, complete primitive-size rejection, SPU end/mute behavior, Gaussian interpolation, and reverb.
- A first-class downstream compatibility signal. A game repo currently pins a commit, but there is no automated report saying how far behind it is, which framework capabilities it carries locally, or whether its pin has a known security/correctness supersession.
NyperYuhgard branch / PR #13
Snapshot: 13 branch commits, 35 changed files, +8,631/-1,914; six current
master commits are absent, the PR conflicts, and it has no checks. The PR body
describes a three-commit launcher replacement, but the branch has since
accumulated CD, SPU, overlay, recompiler, tooling, documentation, FPS, traps,
and Crash Bash diagnostics.
Keep under review
- The older in-tree launcher replacement remains blocked by missing GL loader and visual/layout review prerequisites. Do not use its runtime changes to justify merging launcher code.
a39ab37contains Linux shared-library overlay discovery, ABI preflight, and cache loading work. Re-derive the smallest useful parts on top of master's newer exact overlay dispatch (b39387e) and test save/load plus stale-cache behavior.b49548eadds an FPS counter and overlay status. Keep only product-facing telemetry that uses the normal UI/debug surfaces.b24d685adds runtime flag and debug-command indexes. Regenerate or verify them against current master before a docs-only PR.- The dirty-text write path in
b07cb79also marks the page dirty, closing a plausible gap where native dispatch is blocked but interpreter dispatch never activates. Isolate and oracle-test that few-line behavior.
Do not upstream as written
- The branch's CD/multi-file reader is older than and superseded by master's
5a2c6fdimplementation. - The simplified floating-point reverb is not a faithful PS1 SPU model.
- Hard-coded Crash Bash write addresses, large
stderrcrash dumps, and local log/watchpoint behavior conflict with the framework's game-agnostic and TCP observability rules. - The recompiler additions accept branch-likely and
MOVN/MOVZinstructions that are not part of the PS1's MIPS I CPU, risking data being classified as code. Its BC2T decoding also treatsrs=9as BC2T; COP2 branches use the BC format underrs=8with the condition inrt. This code needs a new ISA-led design, not a transplant. - The shell build helpers are thin local conveniences rather than the cross-platform documented build workflow.
Kem0x branch / PR #14
Snapshot: 12 branch commits (10 feature commits and two upstream merges), 34
files, +1,991/-395, clean against the audit baseline, but no reviews, CI
checks, or added regression tests.
High-value isolated fixes
dd9e5c6: CD interrupt matching should test the encoded low interrupt bits withirq_enable & irq_flag. This is a small hardware-backed correctness PR.- Generic subset of
b2597df: an ADPCM END without REPEAT jumps to the repeat address, sets ENDX/Release, and immediately mutes the envelope. Exclude the Pepsiman duplicate-effect timing guard. 91a654f: exclusive bottom/right software-rasterizer edge coverage. Add renderer regressions for winding, clipping, adjacent triangles, semitransparency, and flat top/bottom cases.- CD-DA/pregap subset of
0e9df70: layer 2,352-byte audio sector streaming, track transitions, Play/GetlocP/autopause/DataEnd, and save-state coverage on top of master's reader. The PR currently omitscdda_data_end_pendingfrom the serialized CD state.
Larger capabilities
78128bf,9d8550c, and67207b4establish an Emscripten pthread runtime, WebAudio bridge, stable key mapping, and vblank-safe pause. Before calling it supported, pin the toolchain, document a reproducible build and cross-origin-isolated hosting, supply the browser persistence shell, revisit the fixed 384 MiB/1 GiB memory policy, and retain useful diagnostics.- Generic portions of
ec889d6explore subpixel projection provenance, perspective-correct software texturing, and duplicate-frame presentation. They instrument generated code and hot stores and must be separated into experiments with performance and image-quality evidence.
Already superseded or title-specific
01155a6exact compiled ranges are absorbed and broadened by master'sb39387e; the head also drops a newer Crash Bash clean-text fallback. Never merge the branch wholesale.- Hard-coded Pepsiman/SLPS-01762 RAM addresses, menu chord injection, lives,
level restart, and track-based controls belong in its game repo. The
PEPSIMAN_SFX_RETRIGGER_GUARDmasks a timing issue and does not belong in the shared SPU.
Martin Penkava branch / PR #16
Snapshot: seven commits, 18 files, +1,129/-96, and six master commits behind.
The game build was reported successful, but there are no checks and the generic
BIOS-only framework link is reported failing.
Candidate work
df4cc5c: MSVC portability for bit scans, C linkage, and generated static initializers. Validate generated BIOS and game units with MSVC plus the existing GCC/Clang matrix.- The
s_activeguards frome6809ccare a small overlay-loader lifecycle fix. The same commit's "decodable word above overlay floor" discovery fallback is much riskier and needs independent proof; it can classify data as executable. cfc5d0e: extend the PS1 1023x511 primitive-size rejection to every polygon, quad half, line, and polyline path. Master has a partial triangle reject, so port and test the missing coverage rather than replacinggpu.cwholesale.- Split Gaussian interpolation from reverb in
e069c8a. Verify the 512-entry table's provenance/licensing and compare both output and state transitions with the in-tree Beetle oracle before import. - The Vulkan synchronization, staging-buffer reuse, coalesced submission, and presentation work may be useful after the known AMD corruption is resolved. Keep performance/synchronization fixes separate from CRT shaders and debug environment flags.
Follow-up credit
PR #61 reconstructed the reusable Vulkan synchronization, staging-buffer,
command batching, present-mode, and timing work from Martin Penkava's PR #16
branch onto current master while leaving Vulkan experimental and hidden by
default. Martin Penkava (shaneomac1337) is the source developer for that
Vulkan work.
Reject or relocate
4517bd5labels the AMD corruption unresolved and carries temporary Vulkan diagnostics; it is not merge-ready.- The three batch scripts hard-code one contributor's Visual Studio and
D:\toolslayout, and two directly regenerate SmackDown 2. They belong in a game repo or should be replaced by parameterized build documentation. - The new shader describes itself as "CRT-Royale-inspired" while master already has attributed CRT/composite/Trinitron color models. Establish exact provenance and license, then evaluate a shader as a separate presentation feature.
Douglas game repos and tweak framework
Revision shape
Both game repos pin Douglas's framework fork as a submodule, and both pins are
based on upstream c94fcd5 rather than current master:
| Game | Game head | Framework pin | Compared with audit baseline |
|---|---|---|---|
| Mega Man 8 | 4eae0f952df9a527d18ff1916d373619fbb1a391 |
3c316fc781ba645cca60125211299de0e879d770 |
Pin has 16 unique commits; master has 6 absent commits |
| R4: Ridge Racer Type 4 | e4262718269879ef2e9b11e2fa428301082117b8 |
19233f496fe810fb57afc226b4ff4509c812bc8f |
Pin has 10 unique commits; master has 6 absent commits |
Those six master commits include multi-file CUE support, exact native/static
overlay dispatch, audio reserve/catch-up hardening, release hygiene, and analog
stick/D-pad decoupling. Every port must start from dde268dc; neither game pin
is a safe integration base.
Reusable game-project pattern
The repos are good source-only title skeletons: top-level CMake using
psxrecomp_add_runtime_target, a minimal seed, typed game.toml, exact
framework pin, CHD/PS-X EXE extraction, macOS prerequisites/build helpers,
research notes, and aggressive ignores for discs, BIOS, generated output,
caches, and runtime state. Neither has CI.
That repeated structure is evidence for an official game-project template or scaffolder with standardized extract, configure, build, pin-status, and smoke test jobs. Reimplement the workflow in a licensed upstream template; do not copy the standalone repos' unlicensed scripts.
Mega Man 8 findings
- The source-only project targets SLUS-00453. Its title-owned config uses
reachable discovery, a verified smaller analysis bound, full-2D native wide,
a scene-word gate, packet-proven HUD range, three background-2D sites, and a
ring-refill option. Addresses, hashes, state gates, and policy stay in
mm8. - Its baseline notes report that whole-image discovery grew from 1,975 candidates to 6,815 entries, 5.4 million C lines, and 176 MiB of generated C, while reachable discovery produced 132 entries and roughly 87,000 lines. That is strong motivation for a bounded/reachable discovery API.
- The documented real-disc/headless Debug run reached controllable opening-stage play for 17,425 consecutive frames with no unknown dispatch; Release linked. The repo correctly rejected a guessed 60 FPS patch after motion/timing evidence contradicted it. This is useful integration evidence, but no CI reproduces it.
- Framework pin
3c316fcextends existing background-2D support with a gameplay RAM gate, ring-refill/signed-column behavior, interpreter parity, and SLJIT decline for affected fragments. Upstream only generic typed pieces and test 4:3 identity plus mutated opcodes; do not import the MM8 addresses.
R4 findings
- The source-only project targets SLUS-00797. Its title config owns race callback
split addresses, projection squash, cull widening, hybrid analog, and exact
polygon/HUD packet sources.
game-android.tomlselects a reduced software rendering profile. - The repo records 2,982 strict functions, Apple Silicon Release linking, real LLE boot/attract, GL 4.1, 60 simulation steps and 60 unique frames in two seconds, correct wall-clock timers, and live analog bytes. Fourteen HUD evidence PNGs are tracked. Android build/install material exists, but there is no documented device result.
- Commit
0f10098adds configurable polygon/line HUD regions guarded by packet source, bounds, and pivot. It is inert unless configured and has unusually concrete visual evidence; it is a good standalone typed extension after parser, bounds, and default-identity tests. - Commit
7abbfdfmixes a generic frame-split callback mechanism with POSIX overlay loading, interpreter-page controls, and SPU CD-capture/IRQ changes. The frame split is promising but high-risk: review save/reset state, nested callbacks, interrupts, cycles, audio, and replay before a design branch. - The same ancestry supplies the missing POSIX cache scan and manifest-driven
dlsym(func_%08X)registration. Current master still logs that POSIX export scanning is TODO. Rebase this narrowly onto the current loader, validate both address and CRC, ABI cleanup, rescan, and handle lifetime on Linux and macOS. - Android support adds an arm64 SDLActivity target, app-private paths, software renderer stubs, AArch64 fiber context switching, and raw SDK/NDK packaging. It is API-26/arm64/debug-only, clones SDL during build, exports the activity, and lacks controller/audio/suspend/device evidence. Treat it as an experiment, splitting runtime portability from APK tooling.
PR #15 findings
PR #15 is six commits, 23 files, +644/-25; current master has nine unique
commits not in it. A synthetic merge was clean, but the PR has no checks or
automated tests. It introduces three useful inert-by-default configuration
families:
[[recompiler.patch]]: named address/expected/replacement patches with duplicate checks, fatal main-EXE mismatch, and guarded overlay variants.[[widescreen.signed_x_bound]]: signed Q16 gameplay bounds wired through static generation, captured overlays, SLJIT, and the interpreter.- Typed textured-edge expansion/full mirror options for finite arena and background geometry.
It also bundles macOS GL 3.3 core context setup, CPU-copied overlay discovery,
analog debug injection/observability, client commands, and a thorough
GAME_TWEAKS.md. The overall architectural direction is strong: exact guest
instruction changes remain game data, typed framework behavior is off by
default, and the shared code contains no title addresses.
Fix these before proposing merge:
- Software rendering treats the textured-edge return code as a boolean and stretches the whole primitive, unlike the GL-specific outside-edge meaning.
- Runtime signed-bound registration silently truncates after 64 sites while codegen accepts more, allowing backend divergence.
- Signed-bound scaling includes cull-guard pixels through
psx_ws_x_margin(), coupling a gameplay bound to renderer safety margin. - Treating every dispatch above
g_overlay_region_flooras dirty is broad and can turn data targets into interpreter candidates. - Loading the same config through
--configand--ws-configcan append duplicates without cross-source validation; address alias semantics and the linear per-instruction patch lookup also need definition. - Split patches, signed bounds, textured edges, platform GL, overlay discovery, debug input, and final docs into focused reviews.
PR #15's public body reports AppleClang/Ninja, Tobal generation/runtime link, Einhander regeneration/frame tests, and Mega Man Legends generation/link/boot. No attached checks or artifacts independently reproduce those claims. MM8 and R4 descend from the PR but do not currently consume its guarded-patch, signed-bound, or textured-edge entries; they instead demonstrate that the typed profile pattern is continuing to grow.
First-wave implementation branches
The first wave was rebuilt in isolated worktrees from current master, reviewed
through 2026-07-13T22:00:00-07:00, and initially published as draft PRs. Each branch
has an in-tree docs/internal/upstream/ record linking its exact source,
preserving human credit, and listing related material deliberately excluded.
| PR / branch | Implementation commit | Evaluated source | Last evaluated | Validation / state |
|---|---|---|---|---|
#20 fix/cdrom-encoded-interrupts-kem0x |
52eb8e8a |
PR #14 dd9e5c6 |
2026-07-13 |
Focused mask test and standalone compile pass; Kareem co-author |
#17 fix/spu-end-mute-kem0x |
76ddcc00 |
PR #14 b2597df |
2026-07-13 |
Runtime behavior already on master; new END/REPEAT regression passes; Kareem co-author |
#23 fix/overlay-init-guard-shaneomac |
5b8098a9 |
PR #16 e6809cc |
2026-07-13 |
Pre-init regression and standalone compile pass; source co-authors preserved |
#21 fix/msvc-generated-init-shaneomac |
05d4f35b |
PR #16 df4cc5c |
2026-07-13 |
MSVC game/BIOS/test builds, 44/44 L2, and 63 runtime objects; original author preserved |
#18 fix/posix-overlay-export-scan-douglas |
c0fa9b1e |
df7d1fa, 7abbfdf |
2026-07-13 |
Real Linux shared-library fixture and Windows compile pass; merged with author approval |
#22 feat/config-guarded-mips-patches-douglas |
5f62deda |
PR #15 19001c0 |
2026-07-13 |
Patch CTest 2/2 (including C++17 public-header coverage), L2 44/44, combined game builds; merged with author approval |
#19 feat/reachable-main-discovery-douglas |
bd705bfc |
MM8 8415f3a |
2026-07-13 |
Parser/codegen tests, L2 44/44, overlay/static guard pass; merged with author approval |
The Douglas-derived changes were merged with author approval.
Disposable combined regression exercise
The PR branches were combined only in the unpushed local branch
test/ecosystem-wave-integration at bed0c08048b954f7f76d6a44bd97ce1eb40688f8.
This is a test fixture based on unchanged master dde268dc; it is not a
merge proposal. The exercise was evaluated through
2026-07-13T23:53:52-07:00 (America/Los_Angeles).
| Game repository / test ref | Framework under test | Last evaluated | Regeneration/build | Runtime acceptance |
|---|---|---|---|---|
Tomba 1 05e058f |
local combined fixture bed0c080 |
2026-07-13 |
External local disc located, SCUS_942.36 freshly extracted, 6,245-entry regeneration and launcher-free Debug runtime build passed |
Visible manual pass reported: attract, gameplay, and save loading |
Tomba 2 3562540 |
local combined fixture bed0c080 |
2026-07-13 |
Fresh regeneration and Debug runtime build passed | 328 s, 4,477 frames, 4,477 VBlanks raised, 22,898 IRQs; no fatal heartbeat, crash report, or error-pattern log hit; follow-up framebuffer showed active gameplay/tutorial content |
Mega Man X6 66d0f16 |
local combined fixture bed0c080 |
2026-07-13 |
Fresh regeneration and launcher-free Debug runtime build passed | 328 s, 4,400 frames, 4,401 VBlanks raised, 59,918 IRQs; no fatal heartbeat, crash report, or error-pattern log hit; follow-up framebuffer showed the active intro sequence |
Ape Escape 3367eb1 |
local combined fixture bed0c080 |
2026-07-13 |
Fresh regeneration and launcher-free Debug runtime build passed | Initial parallel run: 328 s, 5,231 frames, 5,231 VBlanks raised, 25,405 IRQs, clean. Isolated follow-up: 4,418 frames, clean, framebuffer showed active intro/demo content |
The user additionally completed visible manual attract, gameplay, and save-load smoke checks across all four games. The simultaneous three-game pass was subjectively sluggish under host contention, so it is compatibility evidence, not a performance comparison.
The soaks used --headless --no-launcher --renderer software, isolated working
directories, and distinct debug ports. They cover guest execution, disc/CD,
SPU timing, interrupts, overlay loading, and unattended title/attract
progression, but are not visual-renderer or audible-output acceptance tests.
The game worktrees contain only temporary path/junction wiring and regenerated
output for this exercise; no game-repository change is proposed.
A second three-process framebuffer-check run exposed one load-sensitive test harness anomaly: Ape Escape's wall-clock starvation watchdog aborted at frame 268 after the process received no heartbeat opportunity for 6.59 seconds. It had completed the earlier parallel soak, and it immediately passed the isolated 4,418-frame rerun above. Treat this as host-contention evidence when scheduling parallel soaks, not as a reproducible guest or PR-branch failure; retain the crash report and starvation dump in the temporary Ape test worktree.
Remaining upstream branch queue
The completed first-wave branches are recorded above. The remaining queue is kept narrow so each source and exclusion decision receives its own review.
| Priority | Proposed branch | Source credit | Scope / gate |
|---|---|---|---|
| 2 | fix/sw-raster-exclusive-edges-kem0x |
Kareem Olim, 91a654f |
Edge rules; image/oracle suite |
| 2 | fix/gpu-primitive-size-reject-shaneomac |
Martin Penkava, cfc5d0e |
Complete existing partial hardware rule |
| 2 | fix/dirty-text-page-mark-nyper |
NyperYuhgard, subset of b07cb79 |
Dirty/native dispatch invariant; no Crash Bash logging |
| 2 | feat/cdda-playback-kem0x |
Kareem Olim, subset of 0e9df70 |
Extend master's CUE reader; save-state and track tests |
| 2 | feat/widescreen-hud-regions-douglas |
Douglas, 0f10098 |
Typed polygon/line HUD regions; GL/SW identity tests |
| 2 | feat/widescreen-signed-bounds-douglas |
Douglas, f44f365 |
Remove 64-site/cull-margin hazards; all backend tests |
| 2 | fix/macos-core-gl-context-douglas |
Douglas, subset of df7d1fa |
Context setup only; macOS launcher/game smoke tests |
| 3 | feat/web-runtime-core-kem0x |
Kareem Olim, 78128bf |
Reproducible platform target, no title hooks |
| 3 | feat/web-runtime-controls-kem0x |
Kareem Olim, generic web-control commits | Keybind/pause API and persistence contract |
| 3 | feat/game-project-template |
Douglas-inspired workflow | New licensed template/scaffolder; pin-status + CI |
| Hold | Existing feat/launcher-stb-revamp |
NyperYuhgard | First solve GL loading and visual acceptance |
| Hold | exp/vulkan-frame-delivery-shaneomac |
Martin Penkava | Only after AMD corruption and provenance gates |
| Design | design/runtime-frame-split-douglas |
Douglas, generic subset of 7abbfdf |
State/cycle/audio/replay design before code PR |
| Experiment | exp/android-runtime-douglas |
Douglas, 19233f4/6238330 |
Separate runtime from packaging; on-device gates |
Attribution and licensing checklist
| Contributor | Exact author identity to preserve |
|---|---|
| NyperYuhgard | NyperYuhgard <93950153+NyperYuhgard@users.noreply.github.com> |
| Kareem Olim | Kareem Olim <kareemolim@gmail.com> |
| Martin Penkava | Martin Penkava <mpenkava1337@gmail.com> |
| Douglas | douglasjv <vanderveerdouglas@gmail.com> |
- Prefer a clean cherry-pick when a whole source commit is acceptable. For a subset/reimplementation, add the exact human contributor as co-author and cite the original commit/PR. Preserve any existing co-author trailers too.
- The contribution guide says submitted contributions use PSXRecomp's
PolyForm Noncommercial license. Standalone
mm8andr4currently declare no repository license, so do not copy fork-only material from them without an upstream PR or explicit permission/licensing confirmation from Douglas. - Resolve third-party provenance before moving tables, shaders, emulator-derived algorithms, or copied constants. Attribution is required even when the final implementation is license-compatible.
Repeat-audit procedure
- Record the current upstream baseline SHA and local audit time.
- Resolve each tracked ref's current SHA. If unchanged, update nothing except an explicit recheck date when needed.
- Compare from the fork's true merge base and separately compare its pinned framework commit with current master. Do not treat a submodule as local game code.
- Classify deltas as shared correctness, opt-in framework capability, game-owned configuration/tooling, generated/artifact content, superseded work, or policy/provenance risk.
- Verify claimed correctness against PSX-SPX, in-tree Beetle, hardware tests, or another independent source. A successful game build is integration evidence, not hardware proof.
- Update this ledger before proposing or creating focused branches.