TASEmulators / TASEmulators/BizHawk
Implement missing `AxisConstraints`
Nobody has claimed this yet.
- 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
ControllerDefinitiontypes, 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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