Friday, April 9, 2021

Joysticks Part2

    I was frustrated by the lack of analog joysticks for games that required them to work correctly, mainly Star Wars. I know it is nothing compared to a true yoke, but without a swappable control panel, this is the next best thing.  I upgraded one and then both joysticks to Ultimarc UltraStik 360 and now I have 2-way,4-way, 8-way, Analog, and even mouse emulation(Quantum) switching automatically with the game selection!

    Using leaf or button switch joysticks with an encoder,  Mame goes from 0 to maximum as soon as you push in one direction.  Analog joysticks let you have fine control and only move as much or as little in the direction you push.  The ability to use different joystick maps is an amazing bonus as using an 8-way joystick to play a 4-way or 2-way game can be painful.  Using mouse emulation mode makes Quantum at least playable, if not nearly as good as having a trackball on the control panel.

    One other nice thing about using the UltraStiks is that you can purchase a harness that plugs into the joystick to encode 8 buttons per joystick., making them a complete solution  (Plus button 8 works as a shift, allowing up to 15 mappings)

Zero Delay Encoder


New setup with 2 UltraStik 360 Joysticks

    You need to use the updated version of VMMENU I shared in the previous post so it recognizes the UltraStiks.  It was a pain to compile the ultrastikcmd application for Raspberry Pi, the application that loads maps into the joystick.  It is included here and is ready for you to put into /usr/local/share/ultrastickcmd.  You also need to put the maps folder and all of its files in the same location.    UltraStik Files

    There are 2 more pieces to make the magic work.  VMMENU launches games by passing the name to vmm.sh.  Place this updated version in /usr/local/share/advance as well as the ultra*.sh files (for example ultra2way.sh)  Now when the vmm.sh file is called, it will selectively call the correct script files to change the mapping for the game you are using and then set it back to 4-way for VMMENU.

    To summarize file locations:
  • /usr/local/share/ultastickcmd  should contain the entire maps folder and ultrastickcmd application
  • /usr/local/share/advance should contain vmmenu, vmm.sh, ultra*.sh files
Important Note: vmm.sh also includes commands to turn spot killer off and on - spotoff.sh and spoton.sh, these will have no effect other then producing an error message if you don't have these files.  It will not actually do anything.  You can comment out these lines with a #.  Spot Killer Killer instructions coming in next post.

    The UltraStiks ship with the axis in the wrong direction for the multivector cp mounting.  This is easy to fix by removing four screws from the top of the joystick and rotating the mounting plate.  I also prefer the harder spring in the joysticks so installed those as well.  Pictures below show the joystick further disassembled to replace the spring.  You don't need to go this far if you are only rotating the mounting plate.

    
    Important note if using 2 UltraStiks - As explained in the Ultrastik directions, if using more then one, you need to change the joystick id on one of them to be 2 as they all ship configured as one.  I cheated and used a windows computer with the UltraMap application to change joystick2.
    
    Two considerations for button setup and mapping.  Button 8 is a shift button so make sure to wire that where you want it to be.  When in mouse mode, the joystick is remapped to make buttons 1 and 2 act as left click and right click.  I intentionally used joystick 2 which I keep in 8-way mode for Credit, Start, and Select buttons so that they do not get remapped when mouse mode is active.  I have button1 to the left and button2 to the right of my joystick so it makes sense if I ever want to use mouse mode in xwindows.

    To configure MAME to utilize analog joysticks, the following two lines need to be edited in /usr/local/share/pi/.advance/advmame.rc   (you may need to modify if your joysticks are not detected as 0 and 1)
input_map[p1_stickx] joystick[1,0,x] -joystick[1,1,x]
input_map[p1_sticky] joystick[1,0,y] -joystick[1,1,y]
    
    One last recommended step AFTER you have everything working correctly is to add some locktite blue threadlocker to prevent the joystick tops from coming lose.


Link to Parts used - Parts and Such
Link to Parent software directory - Shared Folder


No comments:

Post a Comment

Spot Killer Killer

   USB Relay     USB Extension Cable     Files       When using a DVG with a WG6100 monitor, some games may appear to be missing all or part...