Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
04614 DIP/Input Minor Always Jan 18, 2012, 00:03 Jan 18, 2012, 23:31
Tester wormzer View Status Public Platform
Assigned To Resolution Open OS
Status [?] Confirmed Driver
Version 0.144u6 Fixed in Version Build
Fixed in Git Commit Github Pull Request #
Summary 04614: Configuring input fails with joystick_map with narrow map.
Description To tighten up the feel of my ultrastik360, I attempted to use a more specific joystick_map. I tried this for a left-right map

-joystick_map 45.

This should set up a map with a large dead-zone and require moving the stick all the way to the extreme to go left or right (which is what I was aiming for). Trouble was, as soon as I did this my stick did not work (at least in the programming screen).

I tracked down the problem in the source myself and found that removing these lines from src/emu/input.c fixed the problem:

 1305 // skip if there is not enough axis movement
 1306 if (!code_check_axis(*item, code))
 1307 continue;

I can't say I understand this code_check_axis call, but it seems to prevent the stick from being sensed as a switch. Removing these lines solved my problem, but I'm not sure of the real solution
Steps To Reproduce * run mame -joymap 45. <rom>
* go into the controller programming and choose P1 LEFT
* try to use joystick to configure
* move the joystick and nothing happens (expect it to come up with "Joy 1 Left")
* have to hit ESC to quit
Additional Information
Github Commit
Flags
Regression Version
Affected Sets / Systems
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
6
User avatar
No.08045
hap
Developer
Jan 18, 2012, 17:25
It works fine here (generic joypad with thumbstick)
Try the latest version of MAME please, and/or try -joymap 445.
User avatar
No.08046
wormzer
Tester
Jan 18, 2012, 17:39
-joymap .445. is too sloppy for my ultrastik360 (which has a pretty short throw distance with a circular restrictor installed). -joymap .45 feels great since it takes hitting the restrictor edge to get the movement registered. I mean .445 registers movement at about 1/2 the way to the edge while .45 requires moving over 3/4 the way to the edge before registering.

I think it's the short throw distance on the ultrastik360 perhaps that makes the code_check_axis fail with .45. What is the purpose of code_check_axis? Does it even make sense as written with a joymap in play? I'd like to be able to design whatever joymap I want and have it always work, right?

Thanks.
User avatar
No.08047
wormzer
Tester
Jan 18, 2012, 17:41
I will test with latest MAME and report my results. Thanks.
User avatar
No.08049
wormzer
Tester
Jan 18, 2012, 21:57
Ok, I tested with the latest build, with two different joysticks with the same results. And I need to point out, this problem only happens DURING PROGRAMMING. The joystick actually works fine during game play, so you can only reproduce during programming

* run mame -joymap 45. <rom>
* go into the controller programming and choose P1 LEFT
* try to use joystick to configure
* move the joystick and nothing happens (expect it to come up with "Joy 1 Left")
* have to hit ESC to quit

So it is just during programming, and does occur with latest mame and multiple joysticks.
User avatar
No.08050
hap
Developer
Jan 18, 2012, 23:05
edited on: Jan 18, 2012, 23:11
Ahh, sorry for misunderstanding before, I can confirm the issue.

As for why code_check_axis fails with 45. but works fine in-game, I have no clue why =(
Maybe something for Aaron.
User avatar
No.08051
wormzer
Tester
Jan 18, 2012, 23:31
yeah my bad. I hadn't realized that this was only a problem with programming, not actual game play. Yeah, I played with code_check_axis a bit, like changing that /4 to something else, but I really didn't know what it was all about so I thought I'd pass it onto the experts. :)