TASEmulators / TASEmulators/BizHawk
MAMEHawk does not support delta-based trackball inputs (eg, Millipede)
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 2.8k
- Forks
- 468
- PR merge metrics
- No merged PRs in 30d
Description
(Note: I suck at technical writing, so pardon if this issue is a bit sloppy/unclear)
When using an analog input to control a trackball based arcade game or editing inputs using TAStudio to do the same, BizHawk treats the analog input like any other analog control such as an analog stick, maxing out the inputs within the bounds reported by MAME. However, this only works for arcade games that use the trackball coordinates to change the absolute position for the player, such as cursor-based games like Missile Command. In Millipede (and likely other games), however, the trackball input is used to alter the player's speed/apply force/apply acceleration or etc, and the trackball's reported bounds are extremely small, with MAME intentionally overflowing the coordinate values in order to produce continuous input. In the absence of a relative (rather than absolute) input mode such as what libTAS offers for mouse control, this makes games such as Millipede effectively impossible to control, as shown in the video below:
Recording 2023-10-05 155128.webm
While I'm not at all qualified on technical matters, feos took a look at the MAME driver in question, and also wrote a lua script that can be run with MAME standalone and Millipede in order to give a live display of what MAME is doing with the trackball values at any given time, which I've uploaded to userfiles here. Use it by running mame milliped -script millipedetrackball.lua (with MILLIPED.ZIP in your ROMPATH, of course).
In addition to adding a relative move for analog inputs, it would also be helpful if BizHawk supported binding a digital input such as a keyboard key to a configurable increment of the analog input in question, like can be done in MAMEUI. While having precise analog inputs can be helpful, there are also times when such fine control isn't necessary and where having to wrestle with either analog controls or TAStudio is a waste of time. For Millipede, the player's acceleration is nearly instant and maximum speed for the trackball is quite controllable, so it's most practical to use digital keys to control the trackball at constant max input speed, treating it like any other game using digital inputs for TASing workflow purposes.
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
Reproduce the behavior with standalone MAME and the provided millipedetrackball.lua script using mame milliped -script millipedetrackball.lua. Then trace BizHawk's analog-input handling and compare it with the requested relative movement and configurable digital increments. Done means delta-based trackball games such as Millipede can be controlled and recorded through both analog and digital inputs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- desktop
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100