Main > Main Forum

Fixing MAME's handling of 12-position rotary controls

Pages: << < (12/17) > >>

Tiger-Heli:


--- Quote from: Dav on February 01, 2006, 01:02:59 am ---The way the ls30 works is by dectecting movements up or down.  As has already been mentioned there is no 1:1 relationship between the position of the stick and a position of the players sprite.   You move 3 clicks clockwise and the binary number goes up by 3.  That is pretty much exactly the way an analog spinner works.  You move a wheel so many notches and the binary number the rom sees goes up.  If you move a tempest spinner x number of degrees the sprite moves y number of degrees.  Pretty much all spinners I can think of except Omega Race work like that.  I don't see how it's that much inaccurate to treat it as an analog spinner.  The only difference is you don't feel the notches.  What's inaccurate is letting people control an analog spinner with 2 buttons.  You are correct, that should probably be removed.  :)

--- End quote ---
I'm not sure I am tecnically savvy enough to follow this argument.  The LS30 used a 12-position switch.  You are saying this is the equivalent of an analog spinner.  If so, then it would presumably be the equivalent of an analog spinner with 8 notches, (Since rotating the control through 12 clicks produces 540-degrees of rotation, so 360 degrees requires 8 clicks).

Perhaps then (by your argument, which I'm not sure I buy into), the problem is MAME's analog sensitivity, which is designed for 36 to 72 to 100 notch mouse encoder wheels and not an 8 notch encoder wheel . . .

Xiaou2:


 Not only that,  but optical stuff tends to get un-calibrated when it misses a poll, or other issue.   This isnt true for a switch thats always on.

 

Dav:


--- Quote from: RandyT on February 01, 2006, 02:00:06 am ---
--- Quote from: Dav on February 01, 2006, 01:02:59 am ---The way the ls30 works is by dectecting movements up or down.  As has already been mentioned there is no 1:1 relationship between the position of the stick and a position of the players sprite.   You move 3 clicks clockwise and the binary number goes up by 3.  That is pretty much exactly the way an analog spinner works.  You move a wheel so many notches and the binary number the rom sees goes up.  I don't  see how it's that much inaccurate to treat it as an analog spinner.  What's inaccurate is letting people control an analog spinner with 2 buttons.  You are correct, that should probably be removed.

--- End quote ---

I disagree.  While the motion may be similar, the two have about as much in common as the current button method does.

A spinner works on a principle known as "step and direction."   The device takes one step in one direction or the other and this is all the information it transmits.  One could say that a spinner has only 3 states.  Idle, moving forward and moving backward.  That makes it a relative positioning device.

The LS30 has 13 connections, presumably 12 contacts and a common.  So this would mean, as urebel demonstrated, that the device has 12 distinct states, one for each possible direction.  The interesting thing about this device is that it is an absolute positioning device that can be used as a relative device for games with less (or more) than 12 possible positions.


--- End quote ---

Sure it could be used as an absolute positioning device, but according to an earlier post it is not.   If it is used as an absolute position device then your solution is incorrect as well.  I have a time soldiers board around here somewhere but I don't have time to look for it.


--- Quote ---Aside from the electrical differences, the most important one is physical.  There is absolutely zero tactile feedback for the user to know that he has moved one position one way or the other.  Overshooting and undershooting the move is still a problem, even with the spinner, because the motion is continuous.  The user has no way of knowing how close or far away the next "click" is that causes the player to index to the next position.


--- End quote ---

Cut notches on the bottom of your spinner attach a spring to contact the notches and voila, it's physically identical.  That's the most important difference?


--- Quote ---However, if every cycle of a button causes exactly one index, this would be far more accurate.   If anything, the spinner support should go (note: I am not advocating this.  More options are always better than less.)

Here's a simple way to think about this.  A hardware interface for this purpose does nothing but attempt to translate the output of a device to a form expected by the computer/software.  As it currently stands, it is impossible to implement such a device, because it is impossible for a user to control the software properly.  Were such control possible by the user, then that control could be automated by an external device.  To be honest, I really don't know what to say to anyone who reads this and still thinks there isn't a problem.

--- End quote ---

If the device was connected to a usb mouse and an appropriate pulse train were sent for each each time it changed positions it would work correctly* with absolutely no changes to mame.

(* the definition of correctly here meaning 1 click produces a movement of X degrees of the character,  If it's shown that time soldiers uses absolute positioning then everything's out the window and we're back to raw input.)


--- Quote ---BTW, I advocate a step and direction solution.  This can be handled as part of the input routines (provided the polling is fast enough) and would require only 3 inputs on any input interface (provided there were no problems with a constant "on" input.)   In the event that MAME does not poll quickly enough, the next option would be some tricks in hardware and a INC and DEC input that acted only once per cycle.  Having both of these solutions available would make virtually any rotary game absolutely controllable, regardless of whether a rotary switch or buttons were used to index the player position.  It would also work regardless of external specialized hardware.

RandyT

--- End quote ---


RandyT:


--- Quote from: Dav on February 01, 2006, 02:47:29 pm ---Sure it could be used as an absolute positioning device, but according to an earlier post it is not.   If it is used as an absolute position device then your solution is incorrect as well.  I have a time soldiers board around here somewhere but I don't have time to look for it.

--- End quote ---

I do believe Time Soldiers uses the control as an absolute positioning device.  I don't think you need an original board to verify this if you assume it to be emulated correctly.  With Ikari, every time you start a new game, the character faces front without exception.  However, The character in Time Soldiers faces the same direction upon the start of a new game, as the direction it was last in before the end of the previous game.  This indicates absolute positioning.

Regardless, I don't think I used the word "correct" in the method I advocate, rather "accurate."  I would much prefer a solution that was incorrect, but could be accurately controlled by the user, to one that is incorrect  and cannot.


--- Quote ---Cut notches on the bottom of your spinner attach a spring to contact the notches and voila, it's physically identical.  That's the most important difference?

--- End quote ---

Heh.  Well, that would indeed provide some tactile feedback.  I don't know about the "identical" part ;) 

But this difference is very important.  I'm not sure I understand how introducing a totally new control to accommodate a software anomaly could be a technically more accurate solution than the anomaly being altered so that the original could be employed.


--- Quote ---If the device was connected to a usb mouse and an appropriate pulse train were sent for each each time it changed positions it would work correctly* with absolutely no changes to mame.

--- End quote ---

I will concede this point.  This would make a very specialized interface a possibility, even though it is technically at the expense of absolute positioning (I don't consider this necessarily a bad thing, as functionality is probably not appreciably affected.)   But it doesn't really address the accuracy of human control, which was another part of my concern.  I think both "birds" could be killed with the same well-thought out stone.


--- Quote ---(* the definition of correctly here meaning 1 click produces a movement of X degrees of the character,  If it's shown that time soldiers uses absolute positioning then everything's out the window and we're back to raw input.)

--- End quote ---

I guess it's time I whip out the "C" word :).   But yes, I also agree that to be totally correct, there should be 12 dedicated inputs for the LS30 type controls.  All of that processing would be done internally and the inputs would literally just be a means of exposing the lines used by the original hardware.  To be 100% accurate, ALL emulated hardware should offer direct exposure of logic lines for manipulation at some level.  But practicality issues would soon rears their ugly heads.

My view is that using 24 inputs is somewhat impractical (and I think you shared that view in another post) and that there is middle ground that can be accurate and practical.  Something I don't believe the current methods offer.

RandyT


Dav:


--- Quote from: RandyT on February 01, 2006, 04:44:08 pm ---
--- Quote from: Dav on February 01, 2006, 02:47:29 pm ---Sure it could be used as an absolute positioning device, but according to an earlier post it is not.   If it is used as an absolute position device then your solution is incorrect as well.  I have a time soldiers board around here somewhere but I don't have time to look for it.

--- End quote ---

I do believe Time Soldiers uses the control as an absolute positioning device.  I don't think you need an original board to verify this if you assume it to be emulated correctly.  With Ikari, every time you start a new game, the character faces front without exception.  However, The character in Time Soldiers faces the same direction upon the start of a new game, as the direction it was last in before the end of the previous game.  This indicates absolute positioning.

Regardless, I don't think I used the word "correct" in the method I advocate, rather "accurate."  I would much prefer a solution that was incorrect, but could be accurately controlled by the user, to one that is incorrect  and cannot.


--- Quote ---Cut notches on the bottom of your spinner attach a spring to contact the notches and voila, it's physically identical.  That's the most important difference?

--- End quote ---

Heh.  Well, that would indeed provide some tactile feedback.  I don't know about the "identical" part ;) 

But this difference is very important.  I'm not sure I understand how introducing a totally new control to accommodate a software anomaly could be a technically more accurate solution than the anomaly being altered so that the original could be employed.


--- Quote ---If the device was connected to a usb mouse and an appropriate pulse train were sent for each each time it changed positions it would work correctly* with absolutely no changes to mame.

--- End quote ---

I will concede this point.  This would make a very specialized interface a possibility, even though it is technically at the expense of absolute positioning (I don't consider this necessarily a bad thing, as functionality is probably not appreciably affected.)   But it doesn't really address the accuracy of human control, which was another part of my concern.  I think both "birds" could be killed with the same well-thought out stone.


--- Quote ---(* the definition of correctly here meaning 1 click produces a movement of X degrees of the character,  If it's shown that time soldiers uses absolute positioning then everything's out the window and we're back to raw input.)

--- End quote ---

I guess it's time I whip out the "C" word :).   But yes, I also agree that to be totally correct, there should be 12 dedicated inputs for the LS30 type controls.  All of that processing would be done internally and the inputs would literally just be a means of exposing the lines used by the original hardware.  To be 100% accurate, ALL emulated hardware should offer direct exposure of logic lines for manipulation at some level.  But practicality issues would soon rears their ugly heads.

My view is that using 24 inputs is somewhat impractical (and I think you shared that view in another post) and that there is middle ground that can be accurate and practical.  Something I don't believe the current methods offer.

RandyT


--- End quote ---

Time soldiers could still be relative to the position at boot, so using mame proves nothing since it would look the same either way.

My point about notching your controller is that it's not the interface that's different.  I'm not saying a rotary controller is the same as every spinner.  The fact that it operates the same as a hypothetical spinner proves that interfacing it as a spinner is valid.  Looking at the ps2 mouse protocol it doesn't even look like it would be that difficult.  I don't understand what you mean by the problem of  human control.  If you move the ls30 and it moves the mouse exactly X number of pixels the control should be correct assuming you select X within the range of sensitivity in mame.  Any interface to an ls30 would by definition be very specialized.

Yes, 24 inputs is crazy.  It's also not necessary.  By definition only 1 of 12 can be active so all the data is maintained by passing it through binary encoders like 74148's and getting it down to 8 lines.  Although if it were me I'd probably use a cpld.
 





Pages: << < (12/17) > >>

Go to full version