I decided to start a new thread for this, rather than further muddy the
4-way games list thread.I'm not sure why it seems everyone is sour about MAME's 4-way restriction. If you are using a joystick with a 4-way restricter, then it shouldn't be an issue (should it?).
If you are using a physically restricted 4-way stick, then it won't matter, no.
The problem comes in when you are using an 8-way. Then, MAME's software restriction will "guess wrong", and PacMan dies. I'm not saying it's a totally bad thing, it may work better than it would without the restriction code, just that it isn't a CURE for the problem.
A little more info - as I see it - there are three possible cases that MAME needs to deal with regarding 4-way games - (And I am only sure of the first two examples, and not positive of that).
Games that used a 4-way joystick, but the game expected you to be able to hit diagonals - Tron for example - In this case, MAME should treat the game as JOY8WAY, but a restricted joystick (hardware or software) will play better.
Games that used a 4-way joystick but the game did not expect you to hit diagonals - This would be like Nibbler from the description above. In this case, for accurate emulation, the controls should freeze when the game hit a diagonal. MAME should code it to work this way, but this would make the game very difficult to play on an 8-way stick.
Games that used a 4-way joystick, but the game expected you to hit the diagonals - I think Pac-Man would be an example of this. Note that there are two ways the game could handle this - it could ignore the diagonal input - i.e. keep the primary input, or it could ignore the primary input, i.e. jump to the new input. This was what was changed with the stickymode change in the R35 - R36??? cycle.
It sounds to me like MAME should have 4 input types - Joy8way, Joy4Way-NoPredictor, Joy4Way-FastPredictor (the current code), mame immediately jumps to the new direction, Joy4way-SlowPredictor (MAME maintains the current direction longer). And the dev team should experiment and see what the original game did and code the drivers to work accordingly.
BTW, here is an (Idealized) explanation of the different modes and how they work. Imagine you have a protractor on your CP so straight up is 0 degrees and full right is 90 degrees of a 360-degree rotation. You are moving the stick from UP to Right.
Ideally, with a 4-way stick, the UP switch disengages at approximately 44.5 degrees and the RIGHT switch activates at 45.5 degrees with a 1-degree deadzone with neither switch activated.
With an 8-way stick, let's assume the RIGHT switch activates at 30 degrees and the UP switch disengages at 60 degrees.
Note that these two points (30 and 60 degrees) are the only points that the inputs change on an 8-way joystick, so these are the only places MAME can make an action.
What the new DRS 4-way code in the GP-Wiz49 does is read the stick position and move the transition points closer to 45-degrees rather than 30 or 60. (But it can only do this because of the greater resolution of the 49-way joystick).
Here are MAME's options regarding 4-way behavior when you are using an 8-way stick, again assuming you are moving the stick from Up to Right -
Send the Up command from 0 to 30 degrees, send no command (stick centered) from 31 to 60 degrees, send the Right command from 61 to 90 degrees. This sounds like what nibbler does, but would be terrible for gameplay with the sticks.
Send the Up command from 0 to 30 degrees, send the Right command from 31 to 90 degrees. This is what MAME currently does.
Send the Up command from 0 to 60 degrees, send the Right command from 61 to 90 degrees. This is what MAME did prior to R35 or R36 or so.
What I would like to propose, and it should be pretty easy to do for someone with a dedicated 4-way game - I will use PacMan as an example (but would like results for many games):
Start a game with Pac-Man heading up and a right-turn tunnel up ahead, and depress the right joystick switch without releasing the up switch. Does PacMan?
a) Stop moving - Mode 1 above.
b) Continue on and turn right when he hits the tunnel - Mode 2 above.
c) Continue moving up, going past the tunnel - Mode 3 above.
If we can get conclusive results, maybe we can see about changing MAME's behavior.