Back to Provenance

2828

.changelog/2828.md

3.3.12.2 KB
Original Source

Added

  • Core Deadzone Coordination — New CoreDeadzoneCapable protocol in PVCoreBridge lets emulator cores declare that they manage their own analog-stick deadzone, preventing double-processing when both a per-core and universal deadzone are active.
  • Universal Analog Deadzone Setting — New analogDeadzone (0–50 %) and coreDeadzoneMode (Auto / Universal / Core-Managed) settings control how the shared input path applies deadzone to on-screen analog stick input via DeltaSkins.
  • Deadzone Settings UI — "Analog Deadzone" section added to the Controller settings screen with a slider for the deadzone amount and a picker for the coordination mode.
  • Core Compatibility List — Settings now shows a "Core Compatibility" row with a live progress count (e.g. "3 of 5 cores coordinated"). Tapping opens a sheet listing every audited core, its support level (Native / Coordinated / Planned), and a short explanation. The list updates automatically as new cores gain support.
  • CoreDeadzoneCompatibilityCatalog — New public type in PVCoreBridge that is the single source of truth for which cores have been updated. Core authors add an entry here; the UI and changelog both read from it.
  • CoreOptional.declaresOwnDeadzone — Auto-detection helper that scans a core's static options array for deadzone-related option keys so cores can be auto-detected without explicit CoreDeadzoneCapable conformance in future PRs.
  • PVControllerButtonUtils deadzone helpersPVAnalogDeadzone(), PVApplyAnalogDeadzone(), and PVAnalogDigitalThreshold() C-callable helpers added to PVCoreObjCBridge for use in any Obj-C/C++ bridge file.

Changed

  • FCEU/NES bridgeDEADZONE threshold now reads the universal deadzone setting; whichever is larger (core default 10 % or user setting) wins, preventing compound dead regions.
  • Mednafen multi-system bridgeDEADZONE and OUTSIDE_DEADZONE macro now delegate to MednafenAnalogDigitalThreshold() which applies the same max-wins coordination.
  • Flycast/Dreamcast bridge — Universal analog deadzone is now applied (with output rescaling) to left-thumbstick X/Y before converting to the core's s8 range.