Nice, where was that from? Another project?
Meanwhile, I've been having fun in software-land. The plan, which I've probably mentioned before, is to have the cabinet boot into Wreck-It Ralph, then drop back into Attract Mode for a bunch of vertical titles with MAME. This requires a bit of jiggling around to get Windows shell out of the way and have as clean an experience as possible. The easiest way to do this is to replace Explorer as the shell, but I decided that the best replacement would be a little executable that did all the bits that I need. After a bit of (very bad) coding I now have a tiny program that I can run as shell that does the following:
- Fires up WiR
- When that closes, terminate some of the WiR executables that sometimes seem to linger. I found that sometimes I'd be in Attract Mode but WiR was still running in the background, stealing about half the CPU.
- Launch Attract Mode.
- When that closes (Attract Mode does confirm exit first) then shut down Windows and hence the cab.
This means that the "hidden" button now powers up the PC, which in turn triggers the smart strip to light the marquee and power the monitor. When Windows shuts down, the smart strip kills the power to the monitor and marquee. So far, so good.
I've also been testing the ServoStik and making sure I can switch between 4-way and 8-way when I switch between games. There's a plug-in for Attract Mode that does this, so that bit was easy enough, but at some point I found that the switching wasn't happening any more and had to look into it. I first assumed I had a loose wire or even the the control board or motor had died, but eventually I found that the joytray executable that does the switching was no longer switching. After some more messing around I figured out that this was because the Explorer shell wasn't running. If I put Explorer back in place of my launcher then it worked fine.
It seems that joytray.exe does switching, but that it also puts a little icon in the system tray (hence the name, I suppose). I can only think that it's trying to do this even when called with a command line parameter that's explicit in telling it just to switch, but it's failing to register in systray (because it's not running) and so just fails. This was a concern. If I could only have the rotation switching working with Explorer then it screwed up the whole custom shell approach, leaving me to fight with Windows and the desktop etc. all the time. I had a quick Google around, including this site, and found someone who had hit something a couple of years ago but no resolution.
The only approach I could think of was to write my own switching utility, but I had no idea how to interact with the control board. A bit more Google uncovered that people had written things for Linux, but I couldn't find anything for Windows other than mention of native integration with other launchers. The fact that other people had written such integration at least meant it must be possible, so I went back to the Ultimarc site and then kicked myself when I found that there was an API on the site. Armed with that it didn't take me long to knock up "joytraylite", which now just switches to 4-way or 8-way and doesn't go near systray. A quick test with my shell showed it works a treat

So I'm getting there. I need to look and see if I can hide some of the quick windows that pop up when the WiR wrappers fire up, and I need to trigger joytraylite to 4-way at start-up (otherwise it could be in 8-way from the previous machine boot) but that's pretty much it on the software side. The only other thing that this has raised for me is that it's a pain getting to the back of the machine to plug in keyboard/USB storage when doing any updates or troubleshooting, so I've just spent a few pounds on eBay for a little USB hub. I'll route that so that it's permanently connected and mount the ports somewhere accessible from the coin door.