I hope everyone had a wonderful Christmas! I shelved the cab for two days so I could put together bikes, playmobile castle sets, and other assorted toys and then kicked back with my kinder, watched some Holiday Favs and put some extra nog in my egg. Progress since my last update:
- Wireless hot-swap Trigger Stick working flawlessly to included mid game on and off
- Frets on Fire controller installed and all resolution synched to cab for smooth transition
- GGG High-Low is AWESOME but having to spend 20 minutes to remember to turn on mice in mame.ini not so awesome. Haven't felt that dumb since... nevermind
- 4way to 8way auto switching is working wonderfully (larger write-up further down)
- Darkade MALA theme font switched to fix weird uppercase mapping of StarJedi font
- Manual screen rotation is smooth thanks to MALA's option to have MAME copy MALA's orientation
- XP shelled, decided I didn't like it, unshelled and setup to run FE on startup
Still to do:
- Re-route, drill, and install Aimtrak LED bar as it is infact impossible to run it below the monitor, even if it's upside down and you switch the Y-axis (can't just flip the monitor in the bezel because the board is drilled too far from the screen anyway) DOH!
- Re-paint bezel after I get through monkeying around because I didn't test that part of the build first...like I should have
- Complete the second gun
- Screw around with Daphne until I figure out how to map the controls to match my native set... or write a batch for Joy2Key to start with Daphne and do it for me
- install the back panel USB ports - shear laziness explains why this isn't done... I have to plug in two whole cables!
- Bask in the glory of a complete project
- Undergo therapy for the "what will I do with my life now" depression that follows completion of anything
I thought I would do a write-up on my servo controlled 4way to 8way joystick mod as there are few write-ups out there and I thought I could add to the conversation. The two most helpful are
DarthPaul's and
Terrahwk's but there were still a lot of issues that I ran into so I'll outline what I used and how I got it working.
Hardware
Software
if using MALA; if HS then see Terrahwk's
Win and Linux both available
- two super simple batch files to run USCCMD (which we'll use to control your Servo)
Hardware Setup:
Take your Omni2 apart install additional washers below the restrictor plate so that have washers on both side of the plate on all four bolts. Mount your Omni2 however you see fit for your CP. The Omni2 uses a small bolt on the underside to rotate the plate. This is what we'll be hooking the control arm to so we need to position the plate where you have about 4 to 6 inches of standoff in a straight line. The plate only have about 1 1/2" of travel so we just need to find the angle where the push and pull of the servo will match the travel of the plate. Once you have that you'll want to route in your servo, I sunk mine below the control wire then hot-glued the hell out of it.
You should remove the switch bolt from the Omni2 and install a shorter bolt. I used washers to get me just over the mounting nut then cut the bolt to fit with a jeweler saw. You'll want to bend your flat bar so that the servo and bolt both attach to a parallel plane to avoid torque in a direction we don't need. At this point your plate should move smoothly and very easily between positions. The servo will hold it in place so this isn't an issue. This entire explanation is really confusing. How about a few pics.
Hopefully that will get you 90% of the way there for your CP. If not post or PM me and I'll try to help along if you're doing something similar.
Software Setup:
Assuming you're using XP and MaLa: Unscrew the servo arm from the servo as the unit will auto center when you first hook it up. Install the Maestro program and plug in your controller to the computer. Maestro should see the Servo. If not then make sure that the servo is plugged into the controller and that you remembered to jumper the 5v power out to the servo power pin on the board (this servo listed can run off USB just fine but many can't so that's why they make it optional). If you can see and move your servo then we're in business. If not please use the Pololu servo forum and those guys will get you up and running ricky-tick. From center screw your control arm back on with the restrictor plate set between 4way and 8way. Enable your servo on the status tab and use the channel settings tab to set your limits. I used speed as 100 and started moving the servo limit 100 units at a time for left and right of center for the servo. Then use the slide bar on the status tab and and see how far the restrictor moves right and left. Continue to adjust until you are smoothly transitioning from 4way to 8way. In theory the servo should shut off right after it reaches the limit but it took a lot of fiddling to get mine there.
Now go into DOS and ensure that USCCMD is in your path. If not double click on the USCCMD.exe in the Pololu system folder and it should add the utility. USCCMD only controls the servo when Maestro isn't so you'll need to disable the servo and close completely out of maestro. USCCMD is pretty easy to use. What is nice is that the channel settings from Maestro are preserved so you can tell USCCMD to move to extremes and if you set your channels then the arm will only move within it's range.
The batch files I used look like this:
"4way"
usccmd --servo 0,1000
and
"8way"
usccmd --servo 0,8000
That's it. Your numbers will likely differ. If you only have one servo you don't need to worry about scripting, naming your servo, or targets. Just tell the controller move left and right and because USCCMD is in your path you don't even have to use a file location.
Once you have that working smoothly open up the MaLa configuration menu, go to plugins, and tell JoyChoose where to find your two batch files. Restart MaLa and when you run games you should hear your servo switch or confirm setting then power off.
If the servo continues to buzz it is because your channels are not set right or your hardware connection has too much or too little play in the servo arm and isn't getting to the target. Address the issue until fixed or you determine that the arm is as good as you can get it and is just going to buzz. If you reach that point there is a very simple addition to your batch files to get the servo to shut off. This will save your servo from burn-out. You can do it several different way, but basically you're executing a wait command and then a target 0 command in USCCMD. Target 0 disables the servo without having to kill power. This was plainly written several places in Pololu and in the Maestro software but took me weeks to identify... which wasn't helped by a Pololu admin saying it couldn't be done.
My batch commands now look like this
"4way"
@echo off
usccmd --servo 0,4000
sleep 2
usccmd --servo 0,0
I also tried it with TIMEOUT, Pause, and a Ping to nowhere string and all worked satisfactorily to give the servo time to hit the target then shut off.
One last issue that I ran into is that the Servo Controller didn't like my Onn USB hubs and started throwing all kinds of error codes so I had to give it a dedicated port, it was still spotty after that so I installed a powered USB hub by Belkin ($19) and it's purring like a kitten, as are my light guns and guitar controller so definitely worth the cash. Something to consider.
This project is not easy and I wanted to give up multiple times. So glad I didn't and hopefully this will help somebody else tackle the great mod. Huge thanks to Terrahwk, DarthPaul, and DaOld Man for his awesome plug-in!
<edited to update Batch commands on how to shut off your servo and auxiliary power recommendation for the servo>