Saturday, January 19, 2019

The (Joy)Stickiest Situation Since...

...Sticky the Stick Insect got Stuck on a Sticky Bun (**UPDATED**)

Updated to correct a bit of a wiring issue later on....

I have never owned a Commodore 64. I would love to but the hardware can be expensive and some parts are becoming R@RE!! L@@K!! and difficult to find, especially the SID chip and PLAs. So the C64 Mini sounds like it would be an ideal substitute. For the bargain price of £45 in the Amazon sale, Mrs Crashed bought me one for Christmas.

My C64 Mini 

Many things have been said about this baby C64 and there are lots of reviews so I won't bore you with unboxing pics or my own review. Check out the reviews from The 8-bit Guy and others if you want that.

8-bit Guy - Initial Review
8-bit Guy - Review of NTSC version
Nostalgia Nerd

This blog is specifically about the joystick supplied with the C64 Mini. To be blunt, it's crap. It's styled on the Competition Pro which is regarded as one of the best joysticks ever. Sadly, this version is a pale imitation of such greatness. Gone are the positive microswitch clicks, to be replaced by a vague squidginess which is distinctly uninspiring. Don't get me wrong. I appreciate that this type of thing has to be built to a price point and the overall experience is very well executed, especially with the latest firmware updates. But the joystick just isn't very nice. Or very strong. Several reports have appeared of the stick actually breaking off at the base of the shaft following a particularly vigorous waggling.   Ahem.


Double Ouch!
So, what to do?

Take it apart and have a look inside. That's what. And lo and behold, the main board in the stick contains individual rubber buttons for each direction and for the fire buttons. This means that the main digital functions in this stick operate the same as any other Atari style stick. I had a thought that maybe I could wire up a joystick port and hang it out of the side. That way, I could connect a decent joystick for playing a game and just keep the provided one for menu selection. And I wasn't the first to think this either.

On the C64 Mini Facebook group there were already pictures and diagrams of how to add a DB9 port to the C64 Mini stick. Nice.

So, here's my experience. You can think of it as a tutorial if you like. It's not intended as such but I shall try to make it so that you can follow along with what I did and the problems I had. No responsibility is accepted if you attempt to follow this and you end up damaging your C64 mini, crashing your car or blowing up the cat. Note that your warranty will almost certainly vanish in a puff of smoke so this is not for the faint hearted.

First things first, I needed a DB9 male plug. I have a bag full following a 'misorder' while I was replacing an Amiga mouse port. They are board mount but will do the job with careful soldering.

Yep, it's a DB9 plug...

Next, I need to work out which wires would connect to which pins on the back of the connector. As luck would have it, I built a joystick tester over Christmas so I had a perfectly good diagram already drawn with the pin outs. I modified it for this purpose once I had the board out.

My corrected diagram!
(First attempt had an error!)

I dismantled the stick and removed the board. Then I took off the silicone pads/buttons. Note that the fire pads/buttons on my unit were a different colour to the direction buttons and need to be replaced in the same location. Put them safe.

The board should have a small copper pad next to each direction and next to the fire buttons. I soldered a wire to each pad being sure to make them over-length so it would be easier to put the plug where I wanted (but see below).

Then, using the diagram, I soldered the other end of each wire to the correct pin. Note that the ground connection also needs a wire. Its the black wire on the main cable into the stick. On my unit there was a solder pad helpfully tucked behind it. Also note that if you're following the Atari standard then only one fire button should be connected to Pin 6 on the DB9 plug. On my stick this was the one labelled S1. The other switch labelled S2 can be connected to Pin 9 on the DB9 plug which will then support two button type joysticks although I think that these are quite rare.

All of my connections are red, except for the ground wire which I used blue.

Wires Soldered in Place

So now you should have a board with an unsightly plug hanging off it. At this point I decided to test mine and found a bit of a serious problem. I plugged in my ZipStick and switched on the C64 Mini.

  • No smoke? Check.
  • No unpleasant burning odours? Check.
  • No fuses tripping? Check.
  • Display appears? Check.

But as soon as I clicked 'right' on the ZipStick the cursor kept going, even after I let go. It wouldn't stop and rendered it unusable until I reset the whole thing or pulled the ZipStick out. Hmmm. Curious.

A quick visit to the Facebook group revealed that this is a known problem. For some reason, the length of the cable causes the C64 Mini joystick controller to get confused when a button is pressed. I still don't fully understand why but if I find out, I shall add a note to the bottom of this post.

Now, I collect various bits of retro computer stuff and there was no way I was about to start chopping up the cable of my precious ZipStick. Fortunately I had a spare cable from a really old and really crap joystick which I just cut off. My initial thought was to wire in the shorter cable with the original cable in-situ but after a bit of faffing I found that this made no difference. The presence of the original cable still seemed to be causing problems. However, if I removed the original cable completely and then tried the short one the ZipStick worked fine. Go figure. So, I soldered the super short cable into my ZipStick and put the original away safe.

With testing complete it was just a matter of mounting the DB9 plug inside the case. This is where I hit problem number 2. A couple of my initial cables were too short to allow me to mount the plug at the back of the stick. I wasn't about to de-solder everything again so I did the only thing I could. I mounted it on the side. :)

First I drilled several holes in the rough shape of the 'D' of the DB9. Then with a strong blade I cut through the holes are removed the plastic from the initial hole. Then I took a smaller blade and carved out the plastic until the shape was large enough to accommodate the DB9 and filed down any sharp edges. I then marked the location of the two screw holes and drilled to allow the bolts through. A couple of the internal braces on the top and bottom case had to be cut off to allow the plug to fit but this was easily accomplished with a pair of wire cutters.

Then it was a simple* case of pushing the plug into the hole, lining it up and screwing the bolts in.

*simple if you have three hands.

Anyone have a spare hand?

Hole gouged out...but successfully mounted. :)

Finally, I put the main unit back together. This was not as easy as it sounds as the little red buttons kept falling out. And then the cables kept catching in the screw posts. Sorting that out then jiggled a couple of buttons out of their slots.. and so on. This bit took me about fifteen minutes of contortion and swearing but I got there in the end. And it doesn't look too bad.

Installation Complete

Just plug in any standard DB9 joystick.

Bear in mind that by mounting in on the bottom half of the case (which is simple as it has loads of room) the plug is pointing down. So when a joystick is plugged in, it will push the side of the C64 stick upwards. This isn't a huge problem but something to remember.

And that's it.

For information, the cable on the ZipStick is 48cm or just under 19 inches in length from the end of the plug to the body of the stick. Your mileage may vary.

A happy by-product of this escapade is that, because the C64 mini joystick is a fully fledged USB game controller, plugging in the ZipStick allows me to use it on my modern Win10 PC! Nice.

Here's some more pictures that I took which may be useful for someone:

I've just spotted a slight problem with my wiring. Nothing drastic! I have wired button 2 to pin 5 instead of pin 9! Doh! Fortunately, pin 5 doesn't do anything and, as I don't have any two button joysticks I shall probably leave it as it is. :)

I've now corrected the wiring as there was an issue with the original post relating to the S1 and S2 pads and the pins that they connect to. S1 should be pin 6 and S2 to pin 9 as shown on my fancy (not fancy) drawing diagram thing back up there somewhere.

In my original diagram I had S1 from the C64 joystick going to pin 9, but it should go to pin 6. And S2 is shown as going to pin 6, it should go to pin 9!!  I found this out as the Zipstick I used works fine on the C64 Mini but DOESN'T work properly in WinUAE. This sees the Zipstick fire button as button 2.

I guess that the C64 mini just translates either button to be 'fire' but WinUAE is specifically looking for button 1 to come out of the USB and I've inadvertently connected up button 2 instead..

No comments: