TurboTwist 2 spinner for retropie.
Anybody knows how to make Retropie recognize TurboTwist 2 spinner? I found this but I didn't try it yet. You think it should work for TurboTwist 2 spinner as well? Thanks.
Yes. I have two TT2s on my 3-sided cocktail cabinet plus an Ultimarc trackball and they all work great--but you have to use AdvanceMAME. The TurboTwist 2 has its own USB interface board that can accommodate 2 of them. They end up as mouse x and y inputs to the Pi. With advancemame configured as described in the link above they work really well. It helps to adjust the mouse polling rate as described in your link for more accuracy and you will need to tweak the analog controls (sensitivity etc.) inside the MAME gui menu per game, but you can look at the resulting changes in the .rc file and replicate/adjust however you like.
Games like Blasteroids, Tempest, Cameltry, Omega Race, as well as many games that use a steering wheel work just fine with these controls.
According to some recent pull requests, it looks like even lr-mame2003 will soon have mouse controls. I haven't tried that yet, but looking forward to testing.
Wow! The arcade machine that you built looks amazing. When I go home, I will try to fix the spinner using your link. Thanks a lot. After all done, I will show my bartop cabinet. Nothing special but I am proud that I built it from scratch. :)
caver01 last edited by caver01
@hakan1708 Hey, I love bartops--always wanted to build one. You should definitely setup the spinner. It's a great addition and the TurboTwists only takes up a little room. If you have a playable system it's definitely worth sharing because any build is inspiring. I am the only person I know (outside of forums like this) who has ever even considered building something like this let alone actually making a working system. People are quite literally speechless when they see a retro arcade that has been scratch built. It's exciting to have something--ANYTHING--that actually works well enough to play the games. So please DO share your results!
Thanks for the nice remarks. My setup is version 2.0 (I built a smaller prototype some years ago), but I have been thinking about how to build this one for a few years now. The Pi came along at about the right time for the rebuild to replace an old intel atom system running XP. I was hoping it would be smaller and lighter, but then I upgraded from a 15 to a 19-inch display, and since I had more room on the horizontal side I added a trackball, and well, now it's pretty hefty! Still, it took years to pull everything together, so consider that when you compare work. Most of us put way more time than we should into this hobby!
@hakan1708 I just saw your YouTube video. If that's your bartop you have nothing to be shy about! Nice build.
@caver01 Awesome. I think I want to build another one like yours. Haha...Yes video belongs to me but I made some changes. Now there is a plexiglass with black borders and spinner on it (I just put it this morning but didn't have time to go through setup).
@caver01 Plus, I ordered a small electronic to setup a safe power button. Thanks for the compliment for my bartop.
@caver01 I don't know where I am making a mistake but I couldn't get it to work. Here is my usb devices
pi@retropie:/dev/input $ ls -lah
drwxr-xr-x 4 root root 280 Jul 27 06:48 .
drwxr-xr-x 15 root root 3.4K Jul 27 06:48 ..
drwxr-xr-x 2 root root 180 Jul 27 06:48 by-id
drwxr-xr-x 2 root root 180 Jul 27 06:48 by-path
crw-rw---- 1 root input 13, 64 Jul 27 06:48 event0
crw-rw---- 1 root input 13, 65 Jul 27 06:48 event1
crw-rw---- 1 root input 13, 66 Jul 27 06:48 event2
crw-rw---- 1 root input 13, 67 Jul 27 06:48 event3
crw-rw---- 1 root input 13, 68 Jul 27 06:48 event4
crw-rw---- 1 root input 13, 0 Jul 27 06:48 js0
crw-rw---- 1 root input 13, 1 Jul 27 06:48 js1
crw-rw---- 1 root input 13, 63 Jul 27 06:48 mice
crw-rw---- 1 root input 13, 32 Jul 27 06:48 mouse0
crw-rw---- 1 root input 13, 33 Jul 27 06:48 mouse1
I went to the specified file (advmame-1.4.rc) and made the changes and resarted the retropie but it is not working. Very frustrating. It is like the spinner doesn't even exist. Any recommendation? Thanks.
@hakan1708 Try a test within Linux. Exit to a command prompt ant type this:
Turning the spinner from side to side will show characters and move cursor from side to side on the line.
Now lets test directly to the device:
Turning the spinner will show the same results as before with characters and move cursor from side to side on the line but now you know which mouse.
If you can't get it to detect movement this way, Linux isn't seeing the input. Maybe it's hooked up wrong.
It you can get input this way, we need to look carefully at your .rc file. What game are you using to test?
This post is deleted!
@caver01 You are a saver. Okay I tested the spinner using the codes that you gave. This is the first time I saw the spinner is reacting.
mice and mouse1 is showing some characters when I spin the spinner. mouse0 doesn't react at all. Is this normail? Do I have to change the code according to these results? Here are the games I put in retropie advancemame 1.4:
TEMPEST (DID NOT WORK)
Or do you think I didn't set it right inside the mame? Thanks a lot for your help.
hakan1708 last edited by hakan1708
@caver01 Here is my original code (advmame-1.4.rc)(luckily I saved all the config files before I messed it up:)
Also I don't have a trackball, that's why I didn't mention about that part of the code. Should I still add that code too anyway?
Question is: Do I have to change this code according to my results? (mice and mouse1 working) Also there is another code there I noticed that you did not mention: device_raw_firstkeyhack no . I don't even know what that is. Right now I only have one spinner but I may add another in the future. Thanks.
@caver01 Also I noticed one more thing:
When I go to custom game settings
Dial Analog <none>
Dial Dec j:stick x+ (which is my joystick)
Dial Dec j:stick x- (which is my joystick)
I tried to change "Dial Analog <none>" but was not able to.
@hakan1708 Looks like your spinner is working! It appears to be detected as mouse1. Not sure what is being detected as mouse0, but it doesn't matter. We will capture them all as RAW.
You need to update the .rc file. Don't worry about the mame GUI until you get the input working. The only thing you will update in the GUI is sensitivity, or to possibly REMOVE simultaneous joystick input which is there for people that don't have the analog hardware. Don't worry about "Dial Analog <none>" because you can't change it. This is why you need to do the setup in the .rc file.
Your original .rc settings won't work. You need to change them to this:
device_mouse raw device_raw_mousedev /dev/input/mouse0 device_raw_mousedev /dev/input/mouse1 device_raw_mousedev /dev/input/mouse2 device_raw_mousetype ps2 device_raw_mousetype ps2 device_raw_mousetype ps2
You absolutely need to update these lines. AUTO and PNP simply doesn't work. device_raw_firstkeyhack has nothing to do with this.
These settings tell MAME to look at least three possible mouse inputs. If you ever plug in an external mouse for some reason, the 0,1,2 designations can shift around (not sure how linux decides the order at boot). So, by adding all of these, we are covering the possibilities.
With these changes, you basically have 3 possible mouse inputs that MAME will recognize. Each mouse as an X and a Y axis. Depending on which pins you are using on your TurboTwist interface board, your spinner will affect either X or Y. I can't tell you which, but your test proves it's working.
You need to find the right input line in the .rc file and configure it. For spinner games it's usually the DIAL input
input_map[p1_dialx] mouse[0,x] mouse[1,x] mouse[2,x]
You see what I am doing here? I have the Player 1 DIAL X input mapped to all three mouse possibilities (0, 1, 2), each referencing the x-axis. You can do the same for Player 1 DIAL Y, just find that input line and use this:
input_map[p1_dialy] mouse[0,y] mouse[1,y] mouse[2,y]
You will have to do some testing after this to find out if it works. I think most spinner games use p1_dialx.
@caver01 Of course, if your spinner is plugged into the interface board and uses the Y pins, well, you will have to flip-flop the mapping like this:
input_map[p1_dialx] mouse[0,y] mouse[1,y] mouse[2,y]
You don't technically need to do the input_map for all three, but until you know it works and which mouse number represents your spinner, it's easier just to map all three. Advance MAME binaries includes a mouse testing utility called
advmbut I don't know if it is included on RetroPie, or where it lives if it is there.
@caver01 You should be a teacher. Now I understand the logic. Right now I am installing my Retropie from my 30gb back up file. As soon as it is done, I will do exactly what you wrote and hopefully it will work. I'll let you know.
Omg! It's working now. You just made my day... You have 3 wishes to ask from me. Retropie should put this one as a mouse or spinner documentation on their website if there is none. I can't say enough thank you for your effort. Someday I am planning to make a complete video and documentation in my native language (Turkish) and put it on youtube since there is none. I am sure somebody will benefit from it. Oh, I will show you the final version of my bartop when I finish it. Thanks a lot again. Take care.
@hakan1708 The nice thing about RetroPie is that everyone brings a different set of skills, experience, AND HARDWARE to the project. From portable devices to full-sized arcade cabinets and everything in between, we have a broad range of devices out there. However, it seems that spinners and trackballs have fewer users. However, I understand that lr-mame2003 may soon have usable mouse support, so when that happens, I will definitely be looking into it.
I should probably write a wiki document explaining all of this for AdvanceMAME anyway.
@caver01 Wiki page would be awesome. My Spinner is working just fine in advancemame, I just have to find working rom sets for it. Legal rom sets ;)
@hakan1708 Glad it's working. One way to push the limits is to give it a HUGE SPIN and see what happens. You may want to update the mouse polling rate as described in my post that you linked to in your first post here. Then, you can adjust the sensitivity in the MAME GUI to make it work the way you expect. You should not have get backspin when you give it a really fast spin. That can happen if the sensitivity or polling rate isn't optimal.
On some games, it may be appropriate to make adjustments. For example, driving games may require a different sensitivity than Tempest, or Arkanoid.