Skip to content

Add optional Low Input Latency with guarded regional readers - #57

Open
michaelm-afk wants to merge 5 commits into
mstan:masterfrom
michaelm-afk:feat/regional-low-input-latency-20261028
Open

michaelm-afk wants to merge 5 commits into
mstan:masterfrom
michaelm-afk:feat/regional-low-input-latency-20261028

Conversation

@michaelm-afk

Copy link
Copy Markdown
Contributor

Original emulated SDK pad packets add about one original update of avoidable
input delay. The default-off Low Input Latency mod uses the companion engine's
latest resolved digital sample at checked original reader boundaries. The full
original reader, edge/action locks and rumble paths still execute. Simulation
remains at the original PAL/NTSC rate; no rendering or interpolation is added.

Regional bindings

  • USA: checked return 0x80028EEC for the original P1 caller.
  • EU1 and EU2 Rev 1: checked return 0x800263B4; all original language relocations.
  • EU2 original revision: checked return 0x80026368; all five languages.
  • Japan: checked cached-P1 store 0x800207C8 and both original callers; retain the
    original combined P1/P2 BIOS producer. Convert its legacy byte-swapped button
    layout to canonical host bits for priming and back at the original guest store.
    Japan gameplay acceptance remains open.
    Whole reader/outer-function contracts and device guards retain original input
    on mismatch. Addresses/contracts come from owner-supplied original discs; no
    retail bytes or outside decompilation code are distributed.

Validation and actual limits

  • 17 owner-extracted regional/language/revision EXEs pass the static/CPU-state
    fixture. Both Japanese callers are explicitly exercised by the fixture.
  • English EU1: actual OFF/ON host-sample-to-read medians 34.35 / 14.16 ms;
    first presented avatar response 93.01 / 73.02 ms, 6 pulses per case. Original
    50 Hz simulation/presentation. The owner has twice confirmed a clearly more
    responsive personal build, most recently on 28 October 2026.
  • USA: regular LOAD outside the Hundred Year Old Man's hut, 4 direction pulses
    and a jump/landing pass. Median sample-to-read 11.52 ms versus 27.97 ms at the
    original SDK shadow observation; median paired gain 16.45 ms.
  • EU2 original English: regular LOAD in Village of All Beginnings, same short
    movement/jump check passes. Medians 13.66 / 33.50 ms; paired gain 19.94 ms.
  • USA/EU2 shadow values are observed in the same ON run, not separate OFF gameplay
    measurements. Each has 4 press/release direction edges and one jump/release,
    no extra/lost observed edges. This is internal software timing, not controller-TV.
  • Japan: a bounded follow-up identified a concrete legacy-layout mismatch:
    original left=0x8000 / host left=0x0080, original cross=0x0040 / host cross=0x4000.
    This necessary title-boundary correction is covered for all button bits, both
    callers and canonical priming/fallback. The original LOAD menu lists the hut
    save, but the follow-up still did not establish controllable gameplay. No Japan
    gameplay pass or latency number is claimed; guarded optional source is retained.
  • Other European languages and EU2 Rev 1 are statically covered, not newly played.
  • No full campaign, new area-transition/save roundtrip, physical hotplug/rumble,
    analog or multiplayer gameplay acceptance. Recognized unsupported controller
    routes fall back; unregistered guest-only controller patches are not validated.

All games used verified disposable card copies with two independent backups;
original cards and old releases were unchanged. RA/100-Hz experiments, credentials,
private configuration, ROMs, cards and native binaries are excluded from this PR.

Integration
Requires RetroPortingToolKit/psxrecomp#780 (the separate psxrecomp snapshot API); merge that engine PR first. Base is TombaRecomp master cf6171b,
remotely rechecked 28 October 2026. Rebuild the runtimes and native overlays with
the added mod_instruction_sites; never reuse/rename a stale native-cache namespace.
Runtime measurements used the existing isolated personal engine backport; the
public adapter fixture was compiled against the public companion engine headers.
A new complete public-master release build is not claimed by this validation.

The confirmed US/EU paths are unchanged. Japan received only the necessary
legacy-button encoding correction; the shared engine API is unchanged. No further
small, proven safe optimization was found: earlier polling or presentation changes
need separate correctness work. Keep the feature default-off and the remaining
Japan/runtime limits explicit during review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant