Commit Graph

7 Commits

Author SHA1 Message Date
Matthew Stanley 40f2fa84bd feat(input): restore DualShock rumble output 2026-08-06 22:36:15 -07:00
Alex Vanderveen 3da61df355 Revert "ok"
This reverts commit b836f2198c.
2026-07-29 03:18:10 -04:00
Alex Vanderveen b836f2198c ok 2026-07-29 03:15:42 -04:00
Matthew Stanley 45dd4210cf Remove Tomba legacy hybrid controller path 2026-07-26 20:52:12 -07:00
Matthew Stanley 60801820fd 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).
2026-07-06 11:51:36 -07:00
Matthew Stanley 82e0523749 fix(sio): faithful DualShock 0x43/0x45 + analog-mode lock (axis 5)
Transcribe the modern-SM pad config semantics from Beetle dualshock.cpp, fixing
the hybrid phantom-input root causes (accuracy/axis5_sio_controller.md):

- 0x43 (enter config) now transmits the LIVE poll frame — id, 0x5A, buttons,
  + 4 stick axes in analog — identical framing to 0x42 (dualshock.cpp:471-490),
  instead of an all-zero frame. The zero frame fed any driver that reads the
  0x43 response as input a phantom "all-pressed"/centered-stick (active-low
  0x00 = all buttons down). In-config 0x43 (exit) keeps the zero frame
  (dualshock.cpp:660-674). [D4]
- 0x45 status byte now reports the LIVE analog state (pad_analog?1:0) rather
  than a hard-coded analog-on, so a driver tracking the mode parses the right
  poll-frame length (dualshock.cpp:743). [D8]
- 0x44 0x..03/0x02 now sets/clears a per-slot analog_mode_locked; a locked slot
  ignores the host hybrid auto-flip (the emulated analog button), matching a
  real pad that ignores the physical button when locked (dualshock.cpp:203,
  714-725). [D6]

Gated to the modern SM; Tomba 1's legacy_pad_config path is untouched. MMX6
(modern SM) gains the phantom-dash fix. Validated no-regression on Tomba 2
(digital pad, 0xFFFF at rest, boots). Retiring g_pad_legacy_cfg (the doc's
fix 4) is gated on a DualShock-game behavioral validation pass — see the
STATUS note in the doc.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 19:40:10 -07:00
Matthew Stanley edf3641a12 feat(timing): route BIOS emitter through single-source psx_instr_base_cycles
Completes P3 step 1 across ALL cost producers: the BIOS emitter
(full_function_emitter.cpp) now sums psx_instr_base_cycles per block like the
interp and game emitter, instead of its own instruction count. Identity (1/insn)
=> BIOS regen byte-identical (verified). Stage-2 real R3000A costs now land in the
single psx_instr_base_cycles function and all three backends update together.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 19:56:20 -07:00