Please do not post a support request without first reading and following the advice in

  • @UDb23 Ok. I appreciate what you've done here. It's a simple and elegant solution. These little optical mice are cheap and ubiquitous. I could see someone taking this idea to the extreme with free spinning, weighted, and arcade panel mountable. My question is more about the "imaging" capabilities and how well the mouse can keep up.

    Another idea on this theme would be to construct an analog joystick--take an inexpensive Happ Super for example and mount a black card on the bottom, then position the optical mouse underneath.

  • @caver01 This specific mouse is (supposed to be) 1200 dpi. I will do some more detailed testing next week to see how it behaves in different games and let you know.
    Analog joystick... sounds interesting.

  • Global Moderator

    @UDb23 said in DIY Spinner:

    Analog joystick... sounds interesting.

    Very interesting.

  • Made v2 of the spinner: changed the dial to get better connection with the flanged ball bearing and added a "cover" for the bearing (also 3D printed).

    Tested both with lr-mame2003 and advmame: was recognized automatically and works fine.
    I did some adjustment on sensitivity and found good values are around 40% for Tempest and 30% for Arkanoid.

    FYI: found some useful info on Mameworld's Forum about Analog input options:
    "Sensitivity is the scale factor to apply to the analog value. 100% means every OS analog change is sent to MAME. When using a trackball with a mouse encoder, you generally set it to 25% because a mouse counts 4x then the original arcade hardware. Another example is using a 1200 (300 teeth * 4) count spinner to replace the 72 count spinner used in Tempest. 72/1200*100 = 6%

    Digital speed is used when you are using digital buttons to simulate the original analog control. This is how many analog values to change every frame. The sensitivity is also applied to this. So you generally set the sensitivity to 100% unless you want fractional increments each frame. eg Speed = 5; Sensitivity = 25% gives 50.25 = 1.25 analog change every frame. A special case of Speed = 0 gives 1Sensitivity analog change per button press.

    Centering is used to simulate the auto-centering of a analog device when using digital buttons. This is the speed the analog value returns to center/rest when there is no button pressed during that frame. The analog change being calculated the same way as Digital speed. When set to 0, then no centering is applied."

  • @UDb23 Hi! Thanks for the interesting thread!

    Also up for a spinner build with optical mouse.
    Tried lr-MAME2003, but I can't seem to find the 'auto-center' option so I can not turn it off.
    (Is this to edit in a .cfg file somewhere?)

    This breaks my driving games as the positions centers after a static hold. :'( check vid here:

    Wold be grateful if you could share..

    • which core of mame being used
    • MAME settings for the controls
    • Any extra settings made in RetroArch?

    Going insane here :'(

    Cheers! (And thanks for letting me use this thread)


  • @gStAv As said in previous post I tested in lr-mame2003 and Advancemame.
    I applied settings thru Mame In-game interface (access with TAB on keyboard if I remember well). Haven't tested with driving games so far. Will check over the weekend and let you know.

  • @UDb23 this is an interesting method. Its crazy what people come up with. For me i have a 2600-daptor to us atari 2600 peripherals. They make a trackball, paddles and a spinner (atari driving controller) for the 2600 so a cheap way to get all these peripherals if you arent using an actual arcade machine

  • @edmaul69 I recntly got an Atari VCS from ebay. Could be interesting to try the 2600-daptor, thanks.
    BTW as a trackball I use an affordable PC USB kensigton one; still have to do extensive testing but works fine so far (missile command!)

  • @UDb23 for more than joystick and paddles you need a 2600-daptor ii. Cost $5 more.

  • @UDb23 Thanks man! Lookig forward to your results.
    Where did you buy the "mini flanged ball bearing" btw? :D

  • @gStAv Amazon: try searching "KFL08 8mm" on your local Amazon site.

  • @gStAv Tested both with Pole position I and II and I was surprised how well the spinner works (considering it's not a driving wheel). I confirm both games have an "auto return to center" as you show in your video but I have no problem at all during driving, keeps the correct input while curving.
    I use the spinner as steering wheel with left hand and xbox gamepad for pedal (analog 2 - default setting) and high/low remapped from "space" to a gamepad A button.

    @dankcushions: you did a great work with spinner support in lr-mame2003; thanks a lot !

    Concerning mame analog settings for this game, I'm just using defaults as image below:

  • Super Sprint works fine too with spinner.

  • @UDb23 thanks for thesting pal! :D
    Can you please test Out-Run too, as I find the autocenter kills the control of the car?

    Cheers! /Gustav

  • @gStAv Will do. Currently on top of a mountain (@2700 m). Snowboarding.

  • @gStAv said in DIY Spinner:

    Can you please test Out-Run too, as I find the autocenter kills the control of the car?

    Finally did test Outrun (set 2) and also in this case I have no issues driving with the spinner with default lr-mame2003 settings.

    Using Spinner to steer and gamepad to accelerate/break.

  • @udb23 said in DIY Spinner:

    3D printed knob


  • @lior007 no need to open the mouse. The mini flanged ball bearing is a single piece containing the rotating part. You just need to glue black cardboard on the "inner" side (side to be placed on top of mouse sensor) and then glue the bearing on the mouse. Note: ouside part of the bearing is higher vs the rotating part; means when glued on the mouse it still can rotate. You just need to check that the cardboard is not too thick.

  • Pardon the naive question. Having a surface rotate over the optical sensor, aren't you capturing a signal on both the X and Y axis? How do you translate to a one axis signal to emulate a spinner?

  • @artik said in DIY Spinner:

    aren't you capturing a signal on both the X and Y axis? How do you translate to a one axis signal to emulate a spinner?

    As mentioned in the docs: "Once configured, the Player 1 DIAL control (spinner, steering, etc.) receives input from the X-axis of the mouse device,"

Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.