mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-25 18:05:12 -04:00
cleanup: genericize hardcoded dev-machine paths in tracked docs/tools
Replace absolute F:/C: paths with repo-relative (../TombaRecomp, bios/, beetle-psx/) or placeholders (<desktop>/<psxref>/<nesrecomp>/<psxrecomp-v4>) across accuracy docs, WIDESCREEN/SHADOW/RECURSION_BUG/config_schema/ISSUES/README, and tools/*.py|.ps1. Removed a personal C:\Users\Matthew\Desktop path (ISSUES.md). Left CLAUDE.md/PLAN.md sibling-project + version-history paths intact (intentional layout documentation).
This commit is contained in:
@@ -557,8 +557,8 @@ fringe on them.
|
||||
Tooling: `tools/crop_launcher_assets.ps1` (crop + knockout),
|
||||
`tools/gen_launcher_assets.ps1` (procedural check/verdict icons),
|
||||
`tools/shot_launcher.ps1` (screenshot the GL launcher window). Mockup
|
||||
source: `C:\Users\Matthew\Desktop\ef772e04-a7db-4ecd-98bb-eb75a01de0a6.png`
|
||||
(1448×1086). Pure-cosmetic; does not block Phase 4/5 wiring.
|
||||
source: a local mockup PNG (1448×1086). Pure-cosmetic; does not block
|
||||
Phase 4/5 wiring.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -165,7 +165,7 @@ Known follow-up work:
|
||||
For the current game milestone, build and run the sibling TombaRecomp project:
|
||||
|
||||
```sh
|
||||
cd F:/Projects/TombaRecomp
|
||||
cd ../TombaRecomp
|
||||
cmake --build build -j16
|
||||
./build/psx-runtime.exe --game game.toml
|
||||
```
|
||||
|
||||
+2
-2
@@ -219,12 +219,12 @@ Runtime-only changes (everything except `sprite_tag_funcs` / cull-widen) just
|
||||
need a rebuild:
|
||||
```
|
||||
PATH=/c/msys64/mingw64/bin:$PATH
|
||||
cmake --build F:/Projects/psxrecomp/TombaRecomp/build-stable --target psx-runtime -j16
|
||||
cmake --build ../TombaRecomp/build-stable --target psx-runtime -j16
|
||||
```
|
||||
Changes that emit into generated C (`sprite_tag_funcs`, future cull-widen) need
|
||||
a regen first (see `memory/regen_build_recipe.md`):
|
||||
```
|
||||
F:/Projects/psxrecomp/psxrecomp/recompiler/build/psxrecomp-game.exe --config game.toml
|
||||
recompiler/build/psxrecomp-game.exe --config game.toml
|
||||
```
|
||||
`build-stable` is RelWithDebInfo + debug tools (TCP port 4470) + launcher ON.
|
||||
Always `taskkill /F /IM psx-runtime.exe` before relaunching.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Axis 5 — MDEC (Motion Decoder / FMV) accuracy cross-reference
|
||||
|
||||
Scope: `runtime/src/mdec.c` (our impl) vs the in-tree Beetle/Mednafen oracle
|
||||
`F:\Projects\psxrecomp\psxrecomp\beetle-psx\mednafen\psx\mdec.cpp`, plus nocash
|
||||
`beetle-psx/mednafen/psx/mdec.cpp`, plus nocash
|
||||
psx-spx "Macroblock Decoder (MDEC)". READ-ONLY analysis; no source/build touched.
|
||||
|
||||
References below cite `mdec.c:NN` for ours and `mdec.cpp:NN` for Beetle.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
Cross-reference of `runtime/src/sio.c` (+ `main.cpp` pad driver, `memcard.c`)
|
||||
against the in-tree Beetle/Mednafen oracle
|
||||
(`F:\Projects\psxrecomp\psxrecomp\beetle-psx\mednafen\psx\`:
|
||||
(`beetle-psx/mednafen/psx/`:
|
||||
`frontio.cpp`, `input/dualshock.cpp`, `input/gamepad.cpp`, `input/memcard.cpp`)
|
||||
and nocash psx-spx "Controllers and Memory Cards".
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ oracle and nocash psx-spx.
|
||||
|
||||
- **Our impl:** `runtime/src/spu.c` (799 LOC) + `runtime/src/spu_shadow.c` (float
|
||||
resample shadow, opt-in, verify-only — irrelevant to hardware accuracy).
|
||||
- **Oracle:** `F:/Projects/psxrecomp/psxrecomp/beetle-psx/mednafen/psx/spu.cpp`
|
||||
- **Oracle:** `beetle-psx/mednafen/psx/spu.cpp`
|
||||
(1664 LOC, `PS_SPU`).
|
||||
- **Spec:** nocash psx-spx "Sound Processing Unit (SPU)".
|
||||
|
||||
|
||||
@@ -196,7 +196,7 @@ No stubs, no HLE, never edit generated C; the fix is in the recompiler/runtime.
|
||||
## 6. Build & run (this project)
|
||||
|
||||
```
|
||||
cd /f/Projects/psxrecomp/TombaRecomp
|
||||
cd ../TombaRecomp
|
||||
export PATH=/c/msys64/mingw64/bin:$PATH TMP=/c/msys64/tmp TEMP=/c/msys64/tmp
|
||||
# regen tools + BIOS + game (generated/ is gitignored; off master tip):
|
||||
cmake --build ../psxrecomp/recompiler/build --target psxrecomp-game psxrecomp-bios -j8
|
||||
@@ -580,7 +580,7 @@ idles indefinitely, **USER-CONFIRMED** — and tips the per-frame loop
|
||||
SYMPTOM; the time-based divergence is the ROOT. Every soak so far was **us-vs-us**; we
|
||||
have never diffed against real hardware over the idle window.
|
||||
|
||||
**NEXT = the oracle.** psxref (`F:\Projects\psxref`, Beetle PSX, TCP **4380**, shares
|
||||
**NEXT = the oracle.** psxref (`<psxref>`, Beetle PSX, TCP **4380**, shares
|
||||
`card1.mcd`; see [[psxref_oracle]] / `memory/psxref_oracle.md`). Run BOTH our recomp
|
||||
and psxref idle (**turbo** if possible, to reach ~frame 50k in well under 14 min wall
|
||||
clock) and find the **FIRST** state / control-flow divergence around frame ~50k — that
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
|
||||
Backport of the gbarecomp "verified-enhancement" QoL layer to psxrecomp.
|
||||
All work lives on the `feat/shadow-enhancements` branch / `_shadow_psxrecomp`
|
||||
worktree (sibling of the core repo `F:\Projects\psxrecomp\psxrecomp`, branched
|
||||
worktree (sibling of the core repo `psxrecomp`, branched
|
||||
off `master`). It does not touch the in-flight `feat/gl-renderer`,
|
||||
`feat/mmx6-input`, `dev/ape-escape`, or any other branch/worktree.
|
||||
|
||||
## Which PSX core / language / build
|
||||
|
||||
- **Core chosen:** `F:\Projects\psxrecomp\psxrecomp` — the real git repo
|
||||
- **Core chosen:** `psxrecomp` — the real git repo
|
||||
(`origin git@github.com:mstan/psxrecomp.git`, default branch `master`, current
|
||||
to 2026-06-10). `F:\Projects\psxrecomp-v4` is a stale stub (symlink to
|
||||
to 2026-06-10). `<psxrecomp-v4>` is a stale stub (symlink to
|
||||
`psxrecomp/duckstation` + an empty `recompiler/build`), NOT a maintained core.
|
||||
- **Language:** runtime is **C99** (`spu.c`, `gpu.c`, …) with a little C++17
|
||||
(`main.cpp`, `gte.cpp`). All shadow code is written in **C** to match the
|
||||
|
||||
@@ -8,7 +8,7 @@ Consumed by:
|
||||
|
||||
Examples:
|
||||
- `bios/SCPH1001.toml` — BIOS-only config (no game; psx-runtime targets this)
|
||||
- `F:/Projects/TombaRecomp/game.toml` — game config (tomba-runtime targets this)
|
||||
- `../TombaRecomp/game.toml` — game config (tomba-runtime targets this)
|
||||
|
||||
## How configs combine
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
dispatch_ring entries, last 5 unknown_dispatch entries, last 30
|
||||
dirty_block_log entries. Highlight the relevant ones for the
|
||||
0xBFC09790 caller investigation."""
|
||||
import json
|
||||
with open(r'F:\Projects\psxrecomp\psx_last_run_report.json') as f:
|
||||
import sys, json
|
||||
with open(sys.argv[1] if len(sys.argv) > 1 else 'psx_last_run_report.json') as f:
|
||||
r = json.load(f)
|
||||
|
||||
print(f"reason: {r.get('reason')}")
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import struct, os, sys
|
||||
p = sys.argv[1] if len(sys.argv) > 1 else 'F:/Projects/TombaRecomp/tomba/SCUS_942.36'
|
||||
p = sys.argv[1] if len(sys.argv) > 1 else '../TombaRecomp/tomba/SCUS_942.36'
|
||||
with open(p, 'rb') as f:
|
||||
h = f.read(0x800)
|
||||
magic = h[:8]
|
||||
|
||||
@@ -11,7 +11,7 @@ with a trailing pad/nop, but we accept either stride.
|
||||
import struct, sys, os
|
||||
|
||||
BIOS_BASE = 0x80010000
|
||||
PATH = sys.argv[1] if len(sys.argv) > 1 else 'F:/Projects/TombaRecomp/tomba/SCUS_942.36_no_header'
|
||||
PATH = sys.argv[1] if len(sys.argv) > 1 else '../TombaRecomp/tomba/SCUS_942.36_no_header'
|
||||
|
||||
# Standard PSX BIOS function names. Source: docs/psx_bios_disasm.txt + nocash.
|
||||
A0 = {
|
||||
@@ -150,12 +150,12 @@ for a0, kind in seen_sc:
|
||||
print(f" syscall a0=0x{a0:X} {kind:30s} ({cnt} sites)")
|
||||
|
||||
# Persist to seeds dir for later use by the audit
|
||||
out_dir = 'F:/Projects/TombaRecomp/seeds'
|
||||
out_dir = '../TombaRecomp/seeds'
|
||||
os.makedirs(out_dir, exist_ok=True)
|
||||
out = os.path.join(out_dir, 'tomba_bios_thunks.txt')
|
||||
with open(out, 'w') as f:
|
||||
f.write(f"# Tomba PSX BIOS thunk inventory\n")
|
||||
f.write(f"# Source: F:/Projects/TombaRecomp/tomba/SCUS_942.36_no_header\n")
|
||||
f.write(f"# Source: ../TombaRecomp/tomba/SCUS_942.36_no_header\n")
|
||||
f.write(f"# Pattern: li t2, 0x{{A0|B0|C0}}; jr t2; li t1, FN (PSY-Q libapi/libetc style)\n")
|
||||
f.write(f"# Total thunks: {len(results)}\n\n")
|
||||
for vec in ('A', 'B', 'C'):
|
||||
|
||||
+2
-2
@@ -25,9 +25,9 @@ import socket, subprocess, os, sys, time, argparse
|
||||
# build (e.g. a Tomba regression) without editing this file. Defaults = MMX6.
|
||||
# COSIM_EXE = path to that game's build-cosim/psx-cosim.exe
|
||||
# COSIM_GAME = path to that game's game.toml
|
||||
EXE = os.environ.get("COSIM_EXE", r"F:\Projects\psxrecomp\MegaManX6Recomp\build-cosim\psx-cosim.exe")
|
||||
EXE = os.environ.get("COSIM_EXE", r"../MegaManX6Recomp\build-cosim\psx-cosim.exe")
|
||||
CWD = os.environ.get("COSIM_CWD", os.path.dirname(EXE))
|
||||
GAME = os.environ.get("COSIM_GAME", r"F:\Projects\psxrecomp\MegaManX6Recomp\game.toml")
|
||||
GAME = os.environ.get("COSIM_GAME", r"../MegaManX6Recomp\game.toml")
|
||||
LOGDIR = os.path.join(CWD, "cosim-logs")
|
||||
|
||||
def tail_file(path, max_bytes=8192):
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
# interior dark details (disc PlayStation logo, controller buttons, the centre
|
||||
# hole) are preserved. Logo: simple global luminance key (thin bright glyphs).
|
||||
Add-Type -AssemblyName System.Drawing
|
||||
$src = "C:\Users\Matthew\Desktop\ef772e04-a7db-4ecd-98bb-eb75a01de0a6.png"
|
||||
$out = "F:\Projects\psxrecomp\psxrecomp\runtime\launcher\assets\img"
|
||||
$src = "<desktop>/ef772e04-a7db-4ecd-98bb-eb75a01de0a6.png"
|
||||
$out = "runtime\launcher\assets\img"
|
||||
$mock = [System.Drawing.Bitmap]::FromFile($src)
|
||||
|
||||
function Get-Crop($x,$y,$w,$h) {
|
||||
|
||||
@@ -13,7 +13,7 @@ PSXRecomp v4 uses a patched build of [stenzek/duckstation](https://github.com/st
|
||||
## First-time setup
|
||||
|
||||
```bash
|
||||
cd /f/Projects/psxrecomp-v4
|
||||
cd <psxrecomp-v4>
|
||||
bash tools/duckstation/setup.sh # ~5 min: clone submodule + fetch/extract deps + apply patch
|
||||
bash tools/duckstation/build.sh # ~15-30 min: compile duckstation-qt Release x64
|
||||
```
|
||||
@@ -41,7 +41,7 @@ The pinned base SHA lives in one place only: `UPSTREAM_BASE` at the top of `tool
|
||||
|
||||
- Keeps the upstream source untracked in v4's git history — no 2.1GB of upstream code in our blame.
|
||||
- Keeps *our* 1200-line patch reviewable as a single text diff in `tools/duckstation/` — in-tree, versioned, diffable across sessions.
|
||||
- Matches the nestopia setup in sibling project `F:\Projects\nesrecomp\runner\nestopia_cmake.cmake` + `runner/nestopia_oracle.patch`. Same mental model: submodule upstream, patch on top, auto-apply at setup time.
|
||||
- Matches the nestopia setup in sibling project `<nesrecomp>/runner\nestopia_cmake.cmake` + `runner/nestopia_oracle.patch`. Same mental model: submodule upstream, patch on top, auto-apply at setup time.
|
||||
- No private/public GitHub fork to maintain or keep in sync.
|
||||
|
||||
## Protocol parity with native runtime
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# logo, verification icons). Swap with real renders later — the <img>/decorator
|
||||
# pipeline (stb_image PNG loader) is the same either way.
|
||||
Add-Type -AssemblyName System.Drawing
|
||||
$out = "F:\Projects\psxrecomp\psxrecomp\runtime\launcher\assets\img"
|
||||
$out = "runtime\launcher\assets\img"
|
||||
if (-not (Test-Path $out)) { New-Item -ItemType Directory -Force $out | Out-Null }
|
||||
|
||||
function New-Canvas($w, $h) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
rom = open('F:/Projects/psxrecomp/bios/SCPH1001.BIN','rb').read()
|
||||
rom = open('../bios/SCPH1001.BIN','rb').read()
|
||||
|
||||
matches = []
|
||||
for rt in range(32):
|
||||
@@ -46,7 +46,7 @@ for addr, rt, op, rs, rt_out, imm, nw, offset in matches:
|
||||
# Read dispatch.c:
|
||||
print("\n--- Functions containing 0xF2000003 sites ---")
|
||||
import re
|
||||
dispatch = open('F:/Projects/psxrecomp/generated/SCPH1001_dispatch.c').read()
|
||||
dispatch = open('../generated/SCPH1001_dispatch.c').read()
|
||||
entries = re.findall(r'\{\s*0x([0-9A-F]+)u,\s*func_([0-9A-F]+)\s*\}', dispatch)
|
||||
# Only keep those in code range (phys 0x1FC00000+)
|
||||
fn_list = sorted([(int(a,16), name) for a,name in entries])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
param([string]$Out = "F:\Projects\psxrecomp\TombaRecomp\build-clean\launcher_shot.png")
|
||||
param([string]$Out = "../TombaRecomp\build-clean\launcher_shot.png")
|
||||
$p = Get-Process psx-runtime -ErrorAction SilentlyContinue | Where-Object { $_.MainWindowHandle -ne 0 } | Select-Object -First 1
|
||||
if (-not $p) { Write-Output "no window"; exit 1 }
|
||||
Write-Output ("hwnd=" + $p.MainWindowHandle + " title=" + $p.MainWindowTitle)
|
||||
|
||||
@@ -12,11 +12,11 @@ Usage: python tomba_loadtest.py <exe> <game.toml> [port]
|
||||
"""
|
||||
import sys, time, subprocess, socket, json
|
||||
|
||||
EXE = sys.argv[1] if len(sys.argv)>1 else r"F:/Projects/psxrecomp/TombaRecomp/build-codex-ape-fw/psx-runtime.exe"
|
||||
EXE = sys.argv[1] if len(sys.argv)>1 else r"../TombaRecomp/build-codex-ape-fw/psx-runtime.exe"
|
||||
TOML = sys.argv[2] if len(sys.argv)>2 else "game-loadtest.toml"
|
||||
PORT = int(sys.argv[3]) if len(sys.argv)>3 else 4470
|
||||
BIOS = r"F:/Projects/psxrecomp/psxrecomp/bios/SCPH1001.BIN"
|
||||
CWD = r"F:/Projects/psxrecomp/TombaRecomp"
|
||||
BIOS = r"bios/SCPH1001.BIN"
|
||||
CWD = r"../TombaRecomp"
|
||||
NONE,RIGHT,CROSS,START = 0xFFFF,0xFFDF,0xBFFF,0xFFF7
|
||||
|
||||
def q(cmd, **kw):
|
||||
@@ -70,7 +70,7 @@ def nonblack():
|
||||
return nz/tot if tot else 0
|
||||
|
||||
def shot(name):
|
||||
b=f"F:/Projects/psxrecomp/_scratch/{name}.bmp"; q("screenshot_file",path=b)
|
||||
b=f"../_scratch/{name}.bmp"; q("screenshot_file",path=b)
|
||||
try:
|
||||
from PIL import Image; Image.open(b).save(b.replace(".bmp",".png"))
|
||||
except Exception: pass
|
||||
|
||||
@@ -64,5 +64,5 @@ def validate(path, expect_remaps):
|
||||
return cfg
|
||||
|
||||
bios = validate(ROOT / "bios" / "SCPH1001.toml", expect_remaps=2)
|
||||
tomba = validate(Path("F:/Projects/TombaRecomp/game.toml"), expect_remaps=0)
|
||||
tomba = validate(Path("../TombaRecomp/game.toml"), expect_remaps=0)
|
||||
print("\nOK: both configs parse and validate.")
|
||||
|
||||
Reference in New Issue
Block a user