mamedev / mame

MAME
https://www.mamedev.org/
Other
7.9k stars 1.97k forks source link

nwk-tr.cpp: Handbrake lever shouldn't be set as IPT_AD_STICK_Y #9074

Open Hydreigon223 opened 2 years ago

Hydreigon223 commented 2 years ago

This is a follow up to a closed pull request I created months ago: https://github.com/mamedev/mame/pull/8199

The handbrake lever in this driver is incorrectly hooked as an analog port that autocenters between 0x000 and 0xfff therefore it boots at 0x7ff instead of 0x000 (this throws a device error in Racing Jam with the handbrake). It needs to be hooked to an analog input that starts and autocenters to the min range (only IPT_PEDAL functions as this so far). It's like this by design on the actual machine where a coil spring forcibly sets the handbrake pot to a very low value.

This is where another issue comes in; only three IPT_PEDAL inputs can be assigned per player. nwk-tr.cpp has four pedal like inputs for a single player game so fixing this either requires assigning the handbrake as a different player or changing ioport.cpp to add more pedal inputs or a different input class. I didn't want to make changes to ioport.cpp to risk messing things up.

Hydreigon223 commented 2 years ago

I'd like to see this resolved for a future pull request I kept on hold that involves adding a bunch of Racing Jam related clones and having a separate input port class for the "SD" type that doesn't have a clutch pedal (because the timekeeper determines both the region and cabinet type). Documentation on on how the sixteen byte string from 0x0 to 0xF has been added but incomplete as I have to better explain how this works in tandem with that network board serial rom.

Furthermore, I discovered Racing Jam Chapter 2 has its own sixteen byte string and using this will bypass the network board serial rom. Thrill Drive on the other hand I am unable to change the cabinet type through timekeeper edits. It looks to me the network board serial rom determines the cabinet type and region (thrilldbe booting with "RTC SELF CHECK BAD" may explain why).

cuavas commented 2 years ago

What happens if you put the default value at the end of the range for an analog stick axis? What about using a paddle input with the default at the end of the range and a non-zero autocentre speed?