mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-23 15:52:42 +02:00
v0.4.0 D375: crouch now emits C-down (the engine's real crouch input), not B
bondview2.c reads crouchDown = insightaimmode && (buttons & (D_JPAD|D_CBUTTONS)) (5318/5579): crouch is C-down WHILE IN AIM MODE, never the B button. M3's IA_CROUCH -> GE_CONT_B (and the CrouchMode=1 latch) was inert, so crouch never fired in the GEPD layout. Hold + latch now emit GE_CONT_D (0x0004). N64-faithful side effect: S (IA_BACK, also C-down) crouches while aiming. User re-test: aim (RMB/Left Shift) + Left Ctrl; hold or F10 Toggle.
This commit is contained in:
1 parent
fca07bdd9a
commit
2e0643c70f
3 files changed
+36
-7
No files matched your search
@@ -251,3 +251,4 @@ D371,FIXED,"GEPD key-layout preset + reload/crouch bindings, v0.4.0 modern optio
|
||||
D372,FIXED,"Low-end perf preset (v0.4.0 modern options wave M5, 2026-09-27).",FIXED (headless-verified; awaiting user live accept):
|
||||
D373,FIXED,"In-game crosshair on/off + colour (v0.4.0 modern options wave M2, 2026-09-27).",FIXED (user live-tested; rule-2 sign-off recorded 2026-09-27):
|
||||
D374,FIXED,"GEPD becomes the default key layout; preset layering fix (v0.4.0 M3 playtest feedback, 2026-09-27).",FIXED (headless + user live-tested):
|
||||
D375,FIXED,Crouch wired to the wrong pad bit:,"FIXED (in tree, build clean; user re-test owed):"
|
||||
|
@@ -659,6 +659,7 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121).
|
||||
| D372 | **Low-end perf preset (v0.4.0 modern options wave M5, 2026-09-27).** full `## D372` entry at file tail | FIXED (headless-verified; awaiting user live accept): one-row `Video.LowEndMode` in F10 VIDEO; ON writes FpsCap 30 + MSAA x1 (restart), OFF restores compiled defaults (60/2). Registered key persists through orderly exit. |
|
||||
| D373 | **In-game crosshair on/off + colour (v0.4.0 modern options wave M2, 2026-09-27).** full `## D373` entry at file tail | FIXED (user live-tested; rule-2 sign-off recorded 2026-09-27): `Video.CrosshairHide` (0 = on, N64) + `Video.CrosshairColor` (7 tints, 0 = white) in F10 GRAPHICS; #ifdef PORT hook in gunfire.c gunDrawSight (the wave's only rule-2 item). |
|
||||
| D374 | **GEPD becomes the default key layout; preset layering fix (v0.4.0 M3 playtest feedback, 2026-09-27).** full `## D374` entry at file tail | FIXED (headless + user live-tested): GEPD playtest found Ctrl fired the gun (stale persisted [Input.Bind] Fire=Left Ctrl masked the preset) and the FPS default made no sense for a mouse FPS. D374: GEPD is now Input.Layout=0 (the default; N64 layout = 1); only EXPLICIT per-key overrides beat the preset. One-off ini flip: pre-D374 `Layout = 1` (ex-GEPD) is now 0. |
|
||||
| D375 | **Crouch wired to the wrong pad bit: B is not the crouch input (v0.4.0 M3 playtest, 2026-09-27).** full `## D375` entry at file tail | FIXED (in tree, build clean; user re-test owed): `IA_CROUCH`/latch now emit C-down (`GE_CONT_D`); the engine's crouch is `insightaimmode && D_CBUTTONS` (bondview2.c 5318/5579) -- crouch only works while aiming, same as N64 Z + C-down. |
|
||||
|
||||
Phase 2 replaced the Phase-1 demo loop with the real `mainproc()` on real OS
|
||||
threads, compiled GE's real `src/sched.c`, and brought in PD's fast3d software
|
||||
@@ -14470,3 +14471,26 @@ clean exit persists `Layout = 0`. `Layout = 1`: "layout N64". Ctrl no
|
||||
longers fires (Fire unset under the preset); crouch/reload/E-use per
|
||||
preset. **Owed:** user re-playtest (Ctrl crouch, E use, Q cycle) before
|
||||
the wave closes.
|
||||
|
||||
## D375 -- Crouch wired to the wrong pad bit (v0.4.0 M3 playtest, 2026-09-27)
|
||||
|
||||
**User report:** "crouch still does not work" after D374. The ini was checked
|
||||
first: clean (`Crouch =` empty, preset applies) -- **not the cause**.
|
||||
|
||||
**Diagnosis:** the engine never reads B for crouch. bondview2.c:5318/5579:
|
||||
`moveData.crouchDown = insightaimmode && (buttons & (D_JPAD | D_CBUTTONS))`
|
||||
(keyboard/stick variant: `insightaimmode && stickY < -30`). N64 crouch was
|
||||
**Z (aim) + C-down**. M3's `IA_CROUCH -> GE_CONT_B` (and the toggle latch)
|
||||
was inert -- the bit the game reads was never set.
|
||||
|
||||
**Fix (port-layer only, `port/src/input.c`):** IA_CROUCH hold + the
|
||||
`CrouchMode=1` latch now emit `GE_CONT_D` (0x0004, C-down). Side effect,
|
||||
N64-faithful: S (IA_BACK, already C-down for "back") also crouches while
|
||||
aiming, exactly as C-down did on N64. Crouch therefore only works **while
|
||||
in aim (insight) mode** -- holding RMB/Left Shift + Left Ctrl. On release
|
||||
(or leaving aim) the player stands (bondview2's `crouchUp` branch).
|
||||
|
||||
**Verification:** build clean; clean boot + exit. **Owed:** user live
|
||||
re-test (aim + Ctrl, both hold and F10 Toggle mode). Cross-tag: the D373
|
||||
entry's "emits B" wording was superseded by D375 (reload still emits B;
|
||||
crouch no longer does).
|
||||
+11
-7
@@ -1211,20 +1211,24 @@ unsigned inputComputePad(int idx, signed char *stick_x, signed char *stick_y)
|
||||
}
|
||||
if (actHeld(ks, IA_CANCEL)) /* D145: Escape is in the default Cancel bind */
|
||||
button |= GE_CONT_B;
|
||||
/* v0.4.0 M3: reload (B tap, same as any B press) and crouch
|
||||
* (hold, or a latched toggle). Both are unbound by default (the
|
||||
* N64-original layout), so this is a no-op out of the box; the
|
||||
* game's B-context logic decides reload-vs-crouch as on N64. */
|
||||
/* v0.4.0 M3: reload (B tap, same as any B press). Unbound in the
|
||||
* N64 layout (no-op out of the box). */
|
||||
if (actHeld(ks, IA_RELOAD))
|
||||
button |= GE_CONT_B;
|
||||
/* D375: crouch = C-DOWN while in aim (insight) mode -- that is
|
||||
* what bondview2.c reads (crouchDown = insightaimmode && D-bit,
|
||||
* lines 5318/5579); the B button is NOT the crouch input. S
|
||||
* (IA_BACK, also C-down) crouches while aiming exactly as on
|
||||
* N64. Hold, or latched toggle; a latch is never carried into
|
||||
* a menu. */
|
||||
int crouchNow = actHeld(ks, IA_CROUCH);
|
||||
if (crouchMode == 1) {
|
||||
if (crouchNow && !s_crouchHeldPrev) s_crouchLatch ^= 1;
|
||||
if (menuMode) s_crouchLatch = 0; /* never carry B into a menu */
|
||||
if (s_crouchLatch) button |= GE_CONT_B;
|
||||
if (menuMode) s_crouchLatch = 0; /* never carry C-down into a menu */
|
||||
if (s_crouchLatch) button |= GE_CONT_D;
|
||||
s_crouchHeldPrev = crouchNow;
|
||||
} else if (crouchNow) {
|
||||
button |= GE_CONT_B;
|
||||
button |= GE_CONT_D;
|
||||
}
|
||||
if (actHeld(ks, IA_LEAN_L))
|
||||
button |= GE_CONT_L;
|
||||
|
||||
Reference in new issue
Block a user