From 0010270f1bfb9f937422764a56cc13fd48e349e8 Mon Sep 17 00:00:00 2001 From: James Dansereau <106631954+jkdansereau@users.noreply.github.com> Date: Thu, 27 Aug 2026 19:27:05 -0400 Subject: [PATCH] Repo cleanup: reference footage to docs/reference/, ignore local artifacts - Move the two N64 reference screenshots out of the repo root into docs/reference/ (n64-footage-2026-08-24.jpg, n64-footage-gun-barrel.png); HANDOFF.md now points there. - Gitignore screenshots/ (session captures) and tools_pc/mupen64/ (local Mupen64 Plus checkout used for N64 reference footage; 8 MB of binaries). - Commit tools_pc/mtxtest.c, the standalone fast3d matrix-convention harness that HANDOFF/D72.3 docs reference as kept-for-reference. - Refresh PORTING.md: status was still 'scaffolding / building once implementation lands'; now reflects Phase 2 in progress and points at docs/HANDOFF.md for current session state. --- .gitignore | 3 + PORTING.md | 27 +-- docs/reference/n64-footage-2026-08-24.jpg | Bin 0 -> 24780 bytes docs/reference/n64-footage-gun-barrel.png | Bin 0 -> 96498 bytes tools_pc/mtxtest.c | 212 ++++++++++++++++++++++ 5 files changed, 229 insertions(+), 13 deletions(-) create mode 100644 docs/reference/n64-footage-2026-08-24.jpg create mode 100644 docs/reference/n64-footage-gun-barrel.png create mode 100644 tools_pc/mtxtest.c diff --git a/.gitignore b/.gitignore index e4cfe8dd..d008a355 100644 --- a/.gitignore +++ b/.gitignore @@ -125,6 +125,9 @@ ge007.crash.log .pi/ run_out.log ppm/ +screenshots/ +# local Mupen64 Plus checkout (N64 reference footage); binaries, do not commit +tools_pc/mupen64/ # PC port run/scratch logs run_*.log diff --git a/PORTING.md b/PORTING.md index f22ec01f..c3e2b07a 100644 --- a/PORTING.md +++ b/PORTING.md @@ -8,9 +8,10 @@ It follows the approach of the [Perfect Dark PC port](https://github.com/perfect-dark-pc-port/perfect_dark), which ports the same Rare "Indy" engine (a later revision). -> **Status: scaffolding.** The directory structure, build system, and port-layer -> interfaces are in place. The actual implementation is being brought in phase -> by phase. See below. +> **Status: Phase 2 (rendering) in progress.** The game boots on PC, plays the +> intro music, and renders the entire intro (logo โ†’ gun barrel โ†’ cast); +> the current blocker is first stage load (BG-file endianness, finding D69). +> Current session state and immediate tasks: **[docs/HANDOFF.md](docs/HANDOFF.md)**. ## Read this first @@ -45,23 +46,23 @@ docs/PCPortResearch.md The N64 build (`Makefile`, `tools/`, `rsp/`, etc.) is **untouched**. -## Building (once implementation lands) +## Building ```sh ./build-pc.sh ntsc-final # or pal-final / jpn-final ``` -Then put your ROM in `./data/` and run the binary. (The ROM is not -distributed; you must own the game.) +Then put your ROM in `./data/` and run the binary from the repo root. +(The ROM is not distributed; you must own the game.) ## Phased plan (summary) -| Phase | Goal | -|-------|------| -| 0 | Scaffolding (this change) | -| 1 | Boot to a window: system/fs/rom/config/video + OS shims | -| 2 | Rendering: bring in fast3d, add `G_SETTEX`, port scheduler | -| 3 | Audio + input | -| 4 | Saves + polish (widescreen, mouse-look, FPS, config) | +| Phase | Goal | Status | +|-------|------|--------| +| 0 | Scaffolding: build system + port-layer interfaces | done | +| 1 (+1.5) | Boot to window / first frame: ROM map, OS shims, ABI reconciliation | done | +| 2 | Rendering: fast3d software RSP, asset conversion/fixups | **in progress** (full intro renders; stage load = D69) | +| 3 | Audio + input (SDL device, mixer, gamepad) | not started | +| 4 | Saves + polish (file-backed EEPROM, widescreen, config) | not started | Details and risks: [docs/PCPortResearch.md ยง8โ€“9](docs/PCPortResearch.md). diff --git a/docs/reference/n64-footage-2026-08-24.jpg b/docs/reference/n64-footage-2026-08-24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cdd16f3666febd599927ec7fc97a6fbbe7174aa1 GIT binary patch literal 24780 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%0ARtUMVfcmN(H;Qqbk|6wD(&H#**SNLbnOdFiCc%h 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ÐYjdT@Wjr6T6? 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 literal 0 HcmV?d00001 diff --git a/tools_pc/mtxtest.c b/tools_pc/mtxtest.c new file mode 100644 index 00000000..4eaebae0 --- /dev/null +++ b/tools_pc/mtxtest.c @@ -0,0 +1,212 @@ +/* Standalone numerical test of the fast3d matrix pipeline conventions. + * Replicates: GE guPerspectiveF (swapped), guLookAtF, guRotateF, guMtxF2L + * packing, gfx_sp_matrix unpacking + MUL order, and the row-vector vertex + * transform in gfx_pc.cpp. Compares against the standard column-vector + * pipeline P_std * MV * v for two scenes: gun barrel (known-good render) + * and rareware logo (D72.3 off-screen bug). + */ +#include +#include +#include + +typedef float f32; + +/* ---- GE libultra functions (verbatim math) ---- */ + +static void guMtxIdentF(float mf[4][4]) { + for (int i = 0; i < 4; i++) + for (int j = 0; j < 4; j++) mf[i][j] = (i == j); +} + +/* GE's SWAPPED perspective: mf[2][3]=-1, mf[3][2]=2nf/(n-f) */ +static void guPerspectiveF_GE(float mf[4][4], float fovy, float aspect, float near_, float far_) { + float cot; + guMtxIdentF(mf); + fovy *= 3.1415926f / 180.0f; + cot = cosf(fovy / 2) / sinf(fovy / 2); + mf[0][0] = cot / aspect; + mf[1][1] = cot; + mf[2][2] = (near_ + far_) / (near_ - far_); + mf[2][3] = -1; + mf[3][2] = (2 * near_ * far_) / (near_ - far_); + mf[3][3] = 0; +} + +/* standard libultra perspective (for the "true" pipeline) */ +static void guPerspectiveF_STD(float mf[4][4], float fovy, float aspect, float near_, float far_) { + float cot; + guMtxIdentF(mf); + fovy *= 3.1415926f / 180.0f; + cot = cosf(fovy / 2) / sinf(fovy / 2); + mf[0][0] = cot / aspect; + mf[1][1] = cot; + mf[2][2] = (near_ + far_) / (near_ - far_); + mf[2][3] = (2 * near_ * far_) / (near_ - far_); + mf[3][2] = -1; + mf[3][3] = 0; +} + +static void guLookAtF(float mf[4][4], float xEye, float yEye, float zEye, + float xAt, float yAt, float zAt, + float xUp, float yUp, float zUp) { + float len, xLook, yLook, zLook, xRight, yRight, zRight; + guMtxIdentF(mf); + xLook = xAt - xEye; yLook = yAt - yEye; zLook = zAt - zEye; + len = -1.0f / sqrtf(xLook*xLook + yLook*yLook + zLook*zLook); + xLook *= len; yLook *= len; zLook *= len; + xRight = yUp * zLook - zUp * yLook; + yRight = zUp * xLook - xUp * zLook; + zRight = xUp * yLook - yUp * xLook; + len = 1.0f / sqrtf(xRight*xRight + yRight*yRight + zRight*zRight); + xRight *= len; yRight *= len; zRight *= len; + xUp = yLook * zRight - zLook * yRight; + yUp = zLook * xRight - xLook * zRight; + zUp = xLook * yRight - yLook * xRight; + len = 1.0f / sqrtf(xUp*xUp + yUp*yUp + zUp*zUp); + xUp *= len; yUp *= len; zUp *= len; + mf[0][0] = xRight; mf[1][0] = yRight; mf[2][0] = zRight; + mf[3][0] = -(xEye * xRight + yEye * yRight + zEye * zRight); + mf[0][1] = xUp; mf[1][1] = yUp; mf[2][1] = zUp; + mf[3][1] = -(xEye * xUp + yEye * yUp + zEye * zUp); + mf[0][2] = xLook; mf[1][2] = yLook; mf[2][2] = zLook; + mf[3][2] = -(xEye * xLook + yEye * yLook + zEye * zLook); + mf[0][3] = 0; mf[1][3] = 0; mf[2][3] = 0; mf[3][3] = 1; +} + +static void guRotateF(float mf[4][4], float a, float x, float y, float z) { + static float dtor = 3.1415926f / 180.0f; + float sine, cosine, ab, bc, ca, t; + float l = sqrtf(x*x + y*y + z*z); + if (l != 0) { x /= l; y /= l; z /= l; } + a *= dtor; + sine = sinf(a); cosine = cosf(a); + t = (1 - cosine); + ab = x * y * t; bc = y * z * t; ca = z * x * t; + guMtxIdentF(mf); + t = x * x; + mf[0][0] = t + cosine * (1 - t); + mf[2][1] = bc - x * sine; + mf[1][2] = bc + x * sine; + t = y * y; + mf[1][1] = t + cosine * (1 - t); + mf[2][0] = ca + y * sine; + mf[0][2] = ca - y * sine; + t = z * z; + mf[2][2] = t + cosine * (1 - t); + mf[1][0] = ab - z * sine; + mf[0][1] = ab + z * sine; +} + +/* ---- guMtxF2L pack / gfx_sp_matrix unpack (bit-exact path) ---- */ + +static void mtxf2l(const float mf[4][4], int32_t m[16]) { + for (int i = 0; i < 4; i++) + for (int j = 0; j < 2; j++) { + int e1 = (int)(mf[i][j*2] * 65536.0f); + int e2 = (int)(mf[i][j*2+1] * 65536.0f); + /* real guMtxF2L uses *(ai++)/*(af++): slot = i*2+j */ + m[i*2 + j] = (e1 & 0xffff0000) | ((e2 >> 16) & 0xffff); + m[8 + i*2 + j] = ((e1 << 16) & 0xffff0000) | (e2 & 0xffff); + } +} + +static void sp_matrix_unpack(const int32_t addr[16], float matrix[4][4]) { + for (int i = 0; i < 4; i++) + for (int j = 0; j < 4; j += 2) { + int32_t int_part = addr[i * 2 + j / 2]; + uint32_t frac_part = addr[8 + i * 2 + j / 2]; + matrix[i][j] = (int32_t)((int_part & 0xffff0000) | (frac_part >> 16)) / 65536.0f; + matrix[i][j + 1] = (int32_t)((int_part << 16) | (frac_part & 0xffff)) / 65536.0f; + } +} + +/* ---- gfx_pc.cpp conventions ---- */ + +static void mmul(float res[4][4], const float a[4][4], const float b[4][4]) { + float tmp[4][4]; + for (int i = 0; i < 4; i++) + for (int j = 0; j < 4; j++) + tmp[i][j] = a[i][0]*b[0][j] + a[i][1]*b[1][j] + a[i][2]*b[2][j] + a[i][3]*b[3][j]; + for (int i = 0; i < 4; i++) for (int j = 0; j < 4; j++) res[i][j] = tmp[i][j]; +} + +/* row-vector vertex transform exactly as in gfx_sp_vertex */ +static void xform_row(const float MP[4][4], const float v[3], float c[4]) { + c[0] = v[0]*MP[0][0] + v[1]*MP[1][0] + v[2]*MP[2][0] + MP[3][0]; + c[1] = v[0]*MP[0][1] + v[1]*MP[1][1] + v[2]*MP[2][1] + MP[3][1]; + c[2] = v[0]*MP[0][2] + v[1]*MP[1][2] + v[2]*MP[2][2] + MP[3][2]; + c[3] = v[0]*MP[0][3] + v[1]*MP[1][3] + v[2]*MP[2][3] + MP[3][3]; +} + +/* standard column-vector transform c = A*B*v */ +static void xform_col(const float A[4][4], const float B[4][4], const float v[3], float c[4]) { + float M[4][4]; + mmul(M, A, B); + for (int i = 0; i < 4; i++) + c[i] = M[i][0]*v[0] + M[i][1]*v[1] + M[i][2]*v[2] + M[i][3]; +} + +static void report(const char *tag, const float c[4]) { + float xw = c[3] != 0 ? c[0]/c[3] : 1e9f; + float yw = c[3] != 0 ? c[1]/c[3] : 1e9f; + printf(" %-34s clip=(%12.1f,%12.1f,%12.1f,%12.1f) x/w=%8.4f y/w=%8.4f %s\n", + tag, c[0], c[1], c[2], c[3], xw, yw, + (fabsf(xw) <= 1 && fabsf(yw) <= 1) ? "ON-SCREEN" : "off-screen"); +} + +/* pack+unpack round-trip so we exercise the exact bit path */ +static void rt(const float mf[4][4], float out[4][4]) { + int32_t m[16]; + mtxf2l(mf, m); + sp_matrix_unpack(m, out); +} + +int main(void) { + float Pge[4][4], Pstd[4][4], MVla[4][4], Rot[4][4]; + float MPours[4][4], MPalt[4][4], Mtot[4][4]; + float c[4]; + + printf("== SCENE 1: gun barrel (eye 1758.3,220,684.3 dir -0.97,0,0.24 up 0,1,0; fov46 n10 f10000) ==\n"); + guPerspectiveF_GE(Pge, 46.0f, 320.0f/240.0f, 10.0f, 10000.0f); + guPerspectiveF_STD(Pstd, 46.0f, 320.0f/240.0f, 10.0f, 10000.0f); + guLookAtF(MVla, 1758.2957f, 220.0f, 684.28143f, + 1758.2957f - 0.97f, 220.0f, 684.28143f + 0.24f, 0, 1, 0); + rt(Pge, Pge); rt(MVla, MVla); + + float v[3] = { -57.3f, -20.0f, 16.3f }; /* sample point offset from target */ + mmul(MPours, MVla, Pge); /* our MP for LOAD-only */ + xform_row(MPours, v, c); + report("OURS row: v.MV.P_ge", c); + xform_col(Pstd, MVla, v, c); + report("TRUE col: P_std*MV*v", c); + + printf("\n== SCENE 2: rareware logo (eye 0,0,880 at 0,0,879 up 0,1,0; fov60 n100 f5000; rotY -40deg) ==\n"); + guPerspectiveF_GE(Pge, 60.0f, 320.0f/240.0f, 100.0f, 5000.0f); + guPerspectiveF_STD(Pstd, 60.0f, 320.0f/240.0f, 100.0f, 5000.0f); + guLookAtF(MVla, 0, 0, 880.0f, 0, 0, 879.0f, 0, 1, 0); + guRotateF(Rot, -40.0f, 0, 1, 0); + rt(Pge, Pge); rt(MVla, MVla); rt(Rot, Rot); + + float lv[3] = { 55.0f, 61.0f, 15.0f }; /* verts4258[0].ob */ + mmul(MPours, Rot, MVla); /* our code: new = matrix*old */ + mmul(MPours, MPours, Pge); + xform_row(MPours, lv, c); + report("OURS MUL (Rot*MV) then P", c); + + mmul(MPalt, MVla, Rot); /* alt: new = old*matrix */ + mmul(MPalt, MPalt, Pge); + xform_row(MPalt, lv, c); + report("ALT MUL (MV*Rot) then P", c); + + /* true standard pipeline: P_std * (MVla*Rot) * v [Rot applied first] */ + mmul(Mtot, MVla, Rot); + xform_col(Pstd, Mtot, lv, c); + report("TRUE col: P_std*MV*Rot*v", c); + + /* and the other hardware-MUL interpretation: P_std * (Rot*MV) * v */ + mmul(Mtot, Rot, MVla); + xform_col(Pstd, Mtot, lv, c); + report("TRUE col: P_std*Rot*MV*v", c); + + return 0; +}