TASEmulators / TASEmulators/BizHawk

Implement missing `AxisConstraints`

Open
#3,453 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

App: EmuHawk Request: Feature/Enhancement
Dominant language
C#
Stars
2.8k
Forks
468
PR merge metrics
No merged PRs in 30d

Description

As a reminder, these are part of the ControllerDefinition subsystem. While cores are expected to expose axes as represented on-the-wire, the frontend gives casual players the option to limit the range to positions accessible on a real gamepad.

Axes which need classes (non-exhaustive list):

  • N64 analog stick
  • Saturn 3D Pad stick

These are currently instantiated in cores. They need to be moved to BizHawk.Emulation.Common.

Related, I'd like to make the U+D/L+R exclusion explicitly coded at some point, rather than based on string contents as it is now. Would make #3820 trivial.

  • If you're touching the ControllerDefinition types, do #3811 at the same time and maybe #1925.

We could also introduce "time-based" constraints for buttons that, even if you managed to press them every other frame, the controller would apply a cooldown. But as this feature is for casual players, I'm not sure if it would make a difference besides maybe making autofire more realistic.

See also #2238 re: constraints in Virtual Pads and #3528 re: fake precision for Nyma sticks.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the ControllerDefinition subsystem and locate the existing N64 analog stick implementation in the cores. Trace how these constraints are instantiated, then identify the corresponding Saturn 3D Pad stick work and move the needed classes to BizHawk.Emulation.Common. Done means the missing AxisConstraints are implemented and the existing controller behavior remains usable.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
backend, game-dev
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.