Friday, 21 October 2022

Quickshot Flight Grip

I found this cheap Quickshot Flight Grip aka Quickshot Handlebar aka TecToy Asa. Designated QS-129N, I guess N is for Nintendo. Yes, sadly this is a NES controller, so I can't get instant gratification with playing Afterburner on the C64. Even my only NES machine is a clone that takes in a different kind of connector.

The shape is just irresistible, but it is clear the design is a gimmick and does not work well as a general gamepad.

It's worth noting the idea is not that far from the Playstation 1 controller that became the nearly universal starting point for all subsequent gamepads. It's just the grips are too spreadeagled and the d-pad and buttons are too near the centre. Bonus points for having the B-button as a "shoulder" button here, too.

Unlike the much later Gravis Destroyer Tilt, this Quickshot is NOT a motion-sensor gamepad. And given my experiences with the Tilt, it's perhaps all the better for that.

The size is for smaller hands, but that's not the biggest problem. The d-pad sounds and feels a little lifeless, and sometimes I think the B-button would be better as the principal fire button.

Looking at this from an alternative angle, I can see myself holding it like a boomerang (Batarang?) although then I'm more clearly limited to either the d-pad or the two buttons.


A look inside

Old electronics look often more crude than the outside suggests. The Quickshot is built more like a toy than an object for hardy use.

But it is a clean design. A bunch of screws keeps the outer case together. The circuit board in turn has a couple of tiny screws, after loosing them the whole thing begins to fall apart.

The buttons at front are on a separate board that must be identical to the Atari version of this controller. The NES-relevant stuff is on the central board.

The cable is tied and held fast in a tight curve, and a wide screw helps keep it there. Not sure this is better than having a "stopper" in the cable itself, but it looks firm enough. This also helps me attach whatever cable I need to.

Looking from the other side, the circuit board was quite dirty and I wonder if this would even work without some adjustments.

The main board had the notation "24 Aug 1990" in it, and the tiny board with the d-pad and fire button has the text "Spectravideo 1989".


The Conversion

I felt it should be easy to "downgrade" the gamepad to work in the Atari/Kempston style, as it only requires me to remove the electronics in between and add a different cable.

The first idea was to replace the main circuit board with my own, so I could store the original relatively intact. At the same time I could get to do easy and enjoyable protoboard work.

However, the autofire and select/start buttons require some corresponding physical parts even if they are not meant to work. It is better to keep the original board in place and simply remove the existing connections and replace them with my own.

The only really new thing needed was the cable and 9-pin connector to replace the NES-style connector.

This turned out to be a problem as I didn't have a worse joystick to borrow the cable from!

So, I ordered a lot of four broken joysticks from an auction. I got a possibly recoverable TAC-2 (the most valuable thing in the lot) and another Quickshot brand joystick I might spare. But importantly for my project, a couple of crappy non-brand sticks which I could cannibalize for parts, such as joystick cables.

I de-soldered the ribbon connector and soldered in single wires, which in turn were soldered to the joystick cable ends. The cable had a rubbery stopper which I had to whittle off before I could fit it through the opening in the Flight Grip case.


In the above image I marked the connector wires 1-7.

1: GND
2: Right
3: Left
4: Down
5: Up
6: Fire
7: GND for fire


Testing

I played some games on the emulator through the Arduino adapter box.

Buck Rogers was quite fine as long as I was only turning the ship left and right and firing. When the ship needed to go up and down, it felt far more clumsy.

Buggy Boy worked surprisingly well, as it's also a sort of left-right game. I need to push constantly upwards though and this proved to be a little taxing for the old thumb.

With Stunt Car Racer I experienced first genuine confusion. The acceleration is no longer about pushing up constantly, but has to be managed together with delicate left/right controls. Diagonals are a stretch and I performed considerably poorer than I do these days with a Tac-2.

I also kept missing the 2nd button function, but the question is, what should it do? Replicate fire button? Or replicate Up direction, to give an easier way to accelerate? Hmmm....

Blue Max is one game where I felt a controller like this could be fun. But I'd be lying if I said the Flight Grip delivered here. Blue Max controls are a quirky to begin with and the poor diagonals offered by the controller did not help much.


I also played a couple of games where I expected the controller wouldn't be good at all.

The Great Giana Sisters was not as bad as I expected, but it needs a more accurate controller. It might help to have the second button to be the "Jump" button, so perhaps I'll indeed wire it to "up" and try again.

In Saboteur!, a lot of the movement is left-right only so it was rather good for those portions. However I also have to reach those ladders accurately and this is where the controller failed me and I couldn't bear to play much more.

The controller is a better fit for "3D" games with relatively simple controls. So I wouldn't condemn the Flight Grip concept entirely, it's very clearly not meant to work for all games. If only the buttons and diagonals were more crisp and precise.

Oh, I nearly forgot. I meant to play Afterburner. The game is so atrociously unresponsive it's hard to put the blame on the controller.

I'll get back to this if I solder the 2nd button.

Monday, 17 October 2022

Extenders

It's not worth having a bike or electric kickbike, without also having something to nerd about constantly.

As already mentioned before, I added a handlebar extender that enabled me to shorten the handlebar a little and still place the display to a comfortable position.

The extender has served well, but did not in itself help attaching a phone.

I saw this Wave Bike Clip and bought it off the shelf. Now this might be one of the crap and cheap solutions before I eventually find out I have to buy a Ram Mount anyway.

For me there were two main reasons for getting the phone holder.

First is the idea of having a map more easily accessible, which was one of the problems with the 28km planned journey I had. Stopping to dig out the camera out of the pocket every now and then was a nuisance.

I probably wouldn't even keep the map constantly on, it would be too much of a distraction. But it would certainly be easier to visit the map.

The second reason is to check the speedometer against a GPS-based speedometer app on the phone. This I only needed to do once, really. I confirmed the built-in speedometer is adequate and calibrated correctly. (It can be re-calibrated)

Given this accuracy, strangely enough the internal odometer is not very precise, at least compared to Google Earth. However this would also require more reference points, can I even trust Google Earth?

The Wave Bike Clip is in the middle, in closed position.

Filming video might be one possibility, but I'm not currently that interested in it and also suspect it would be really shaky.

I tried various ways of attaching this phone holder, which unlike the first extender only really fits to the actual 22mm handlebar and not the thicker bolts.

At one point the vertical stem looked like a better place than the crowded handlebar, but the gimbal couldn't provide an angle to do this well.

So, after trying different angles, I just attached the phone holder to the extender like I did at first.

There's also the issue that the collapsed package can also increase in size with these extenders.

The holder is quite shaky even on smooth pavement, and I kept fearing the phone might fall off, which I guess is unlikely.

The shaking may be because I have bashed together an extender on another extender, but it also made me appreciate how sturdy the first extender is.

The phone buttons are a small annoyance, of course they are exactly in the place that prevents me from centering the phone better.


Wednesday, 5 October 2022

8-bit joystick adapter using Arduino

One day, I was looking for a 9-pin joystick ("Atari" or "Kempston") to modern PC adapter. After some disappointments, I googled for a comparable DIY Arduino project and found what I wanted from here:

https://hackaday.io/project/9552-digital-joystick-8-bit-to-usb-adapter

There isn't anything to code, as the functioning joystick examples are already supplied with the library. But as the instructions are a little on the short side I thought I'd add my experiences.

Firstly, the Arduino I had installed from the Linux repository was too old. Most of my time was wasted trying to get the library to work, whereas if I'd just downloaded the latest IDE, I could have added the library very easily.

One way to do this is to download the library as a zip, then use the Add .ZIP library function from the Arduino IDE menu. It's possible the IDE may need to be re-run. If the library has been installed, the GamepadExample can be selected from the File -> Examples -> Joystick submenu.

Not just any Arduino board can do this. Arduino Micro and Leonardo are seen as HID devices, so they can pretend to be joysticks, mice and keyboards depending on what you tell them to do. I had to buy an Arduino Micro to even try this.

ArcadeStickExample may sound attractive, but it requires an Arduino Micro Pro instead! Obviously a single-button arcade style joystick could work here.

The hackaday page isn't very explicit about which wires to connect to which pins, although the GamepadExample.ino will give some pointers.

Adapter port view pins:

 1 - Up to Arduino digital pin 2
 2 - Down to Arduino digital pin 4
 3 - Left to Arduino digital pin 5
 4 - Right to Arduino digital pin 3
 5 - Not Connected
 6 - Fire to Arduino digital pin 6
 7 - 5V (Not Connected)
 8 - GND to Arduino GND
 9 - Not Connected

I'm unsure of connecting the 5V to Arduino 5V, it looks like it was enough to connect the ground (GND).

It's also possible to have multiple joysticks, but I don't need that now.

Quick and unscientific lag-test: On Vice 64 I tried Buck Rogers, Commando, Decathlon, Giana Sisters, H.E.R.O. and Stunt Car Racer and Giana Sisters (again) on Amiga emulator.

With some of the more crisp C64 games I could perhaps see tiny bit of lag but not more than Raspi BMC64 or The 64 Mini/Maxi. All within sensible limits to me, and possibly not even because of the adapter really. Playing 50hz games on 60hz display is all kinds of wrong to begin with, anyway. Stunt Car Racer on the Amiga felt pretty good.


Building the box

I toyed with the idea of placing the Arduino inside my main PC, and have the 9-pin port through the casing. At the other extreme, I thought about putting the adapter inside a joystick.

But it's of course best to have it as a separate adapter after all.

For once, I thought it would be better to build the box from something else than chipboard or wood. Looking around, an old Mini-DV cassette case looked the right size.

I cut a prototyping board with 3x1 islands to the precise inside dimensions of the box so it would be held in place even without screws. The 9-pin connector required a large hole at the other end of the box. As the proto board was now in the way I simply cut a hole in it.

As the wires needed more space this proved to be insufficient and I cut the whole board shorter, as can be seen from the above picture. But it stays in place well enough.

Also, to save space the Arduino had to be soldered directly to the proto board. I cut excess pins from top and bottom as the wires needed some more room. A different positioning could have helped here. I didn't foresee it but in a way longer wires could have been easier to fit.

The micro-USB connector was initially meant to stick out neatly of the box, but because of all the mess with the wires, the port is a little deeper. Another idea was the box would also keep the USB cable in place, but the box is a little too flimsy to help keep the cable in place. Also I didn't want to make the cable a permanent part of the adapter.

So, the usual story, a relatively clean and well-intentioned project becomes messy at the point when soldering and wires are needed. I had to cut and whittle the box in so many places the end result is no longer very robust, but it will do. It keeps the things inside cleanly enough.