2-buttons joystick on Atari ST

Back in the 1990s, there was a game I liked above all on my Atari ST: Turrican II.

This game is a very enhanced version of Turrican, especially on Amiga where the game’s engine have been drastically improved.
On ST, unfortunately, the engine stayed the same and was only slightly improved.

What’s also the same, is that the player can use a lot of weapons. So much actually that one button on a joystick is not enough! On Amiga and ST, the main weapon is activated by triggering the joystick’s button, while the secondary weapon is triggered by pressing the space bar.

On Amiga it’s possible to use a joystick with two buttons, but it’s not on the Atari ST, for a simple and stupid reason: the joystick port is NOT hardwired to use a secondary button. Atari took the decision to be 100% compatible with their own old standard.

Yes, that’s the joystick the Atari ST was build to support.

There was of course many joysticks that supported various systems, but as soon as you plugged it on the Atari ST and selected the « Atari » mode, every button would map to a single action.

Upside down

Now let’s get technical and see how the Atari ST joystick ports are handled.

These are the infamous mouse/joystick ports located below the keyboard of the Atari ST (worst location ever), mostly because the keyboard is a completely separated device from the rest of the machine, handled with its own micro-controller, ROM, RAM and linked to the main system through an internal serial interface. And also because the Tramiels were asses.

Port 0 is the « Mouse/Joy0 » port. It’s mostly used by the mouse but can be used for the second player’s joystick.
Port 1 is the « Joy1 » port. It’s where you connect the main (player 1) joystick.

Here are the two ports pin-outs, quite similar except that the port 0 also support the mouse. Note that:

  • On port 0, pin 6 = Left Mouse Button OR Joystick Fire
  • On port 0, pin 9 = Right Mouse Button
  • On port 1, pin 6 = Joystick Fire

When the mouse lies

The mouse is not the topic of this article, but here’s a thing that many people experienced on ST. While playing a game, if a mouse is connected to port 0, pressing the right mouse button actually triggers the action mapped to the main joystick’s button!

Retro Computing

Usually not documented, this strange behavior is due to the fact that the port 1’s pin 6 is actually HARDWIRED to port 0’s pin 9. I really don’t understand this choice. It may have been made to cut costs, as it seems was usual for Atari.

How this helps us to make a two-buttons joystick? Well, it doesn’t. Our best bet here would be to use Port 0 with a two-buttons joystick mapped to pin 6 and pin 9.

However the micro-controller cannot work in two buttons mode on port 0 when in « joystick » mode. To do that would require to reprogram the micro-controller, which is possible, but there’s only 128 bytes of RAM available to do that and no game would be compatible with this alternative firmware out of the box, not to say they’re NOT polling port 0 anyway, but port 1.

WTF Factor 5

The case of Turrican and Turrican II is a very strange one.

For no reason I can logically explain, those two games map the secondary weapon to the spacebar… AND port 0’s fire button.

That is, the second joystick button.

And the left mouse button.

I’m still scratching my head over this to be honest, and I don’t remember how I found out this. I guess I may be trying to play with the right mouse button, since it was sometimes easier to use in games than the joystick’s button.

Also that may have been done completely on purpose: with that strange mapping, you can use a joystick to move Turrican and the mouse to access the two action buttons. At least, that’s how I always played Turrican after finding that trick.

The only requirement is to use a joystick stable enough to stick to your desktop and not move during hours. It eliminated a good number of joysticks that were simply not good enough for this or that were not meant to be put on a desktop.

QuickShot’s time of glory

QuickShot made a lot of different joystick models then, but one that I really came to love was this version that really looked like an arcade stick, the direction being handled by the left hand.

Actually, a lot of people didn’t like it exactly because of this feature, which is kind of ironic when you know what happened next with all arcade pro controller editions.

It came in various versions depending on the platform. The model I’m talking about is the QS-128F for Atari/Commodore, MSX, Amstrad and SEGA, and has two main buttons and features an amazing autofire (absolutely nuts for Xenon 2, makes a continuous line of bullets).

It has a huge flaw though: it’s not using metal switches nor micro-switches. It’s all based on rubber contacts, without springs except for the direction rod. I dumped mine because the rubber was so worn out that it actually cut itself out.

It’s also what gives this joystick its unique touch. Movements are smooth and… it’s silent!

This is, actually, crap. But it’s good enough.

But the feature that interested me back then, was that it actually has TWO cables and can connect to both port 0 and port 1. And then you can switch from Player 1 to Player 2 directly on the QuickShot.

Let’s be clear: this feature is absolutely USELESS. Most of time you wouldn’t be « player 1 » and « player 2 » on the same joystick, and anyway, my mouse was always connected to the ST.

Turrican x QuickShot

However, it gave me an idea that I couldn’t achieve at the time. If the QuickShot can connect to both ports, why not using this capability to send button A to port 1’s fire, and button B to port 0’s fire?

Remember, that’s how Turrican maps the player’s weapons!

A few days ago, I got my hands on another QuickShot, and it didn’t take long to find out how to do that.

Here’s the recipe:

  • Open the QuickShot
  • Shortcut Player 1’s pin 9 with Player2’s pin 6
  • Cut or remove the connection to player1’s pin 5
  • Switch the QuickShot to SEGA (D) mode
  • Plug player 1 in port 1 and player 2 in port 0.
The green wire shortcuts P1 pin9 to P2 pin6
Don’t forget to cut pin 5 on both connectors
Plug both cables on the ST (P2 on mouse port)

The first shortcut is, obviously, to map the secondary button to the port 0 pin 6 (player 2’s fire).

Removing the connection on pin 5 is mandatory since in SEGA mode, the joystick sends +5VCC on this pin. You don’t want it to do that, since it disables the ST’s keyboard and I was told it may even break the micro-controller.

Then, switching to the D mode (SEGA) makes the two buttons being handled differently, on pin 6 and pin 9. That’s also how you achieve two buttons mode on Amiga with this joystick.

For an unkown reason, the Autofire doesn’t work anymore in mode D (Sega) but still works in mode A (Atari/Commodore). It’s not needed for Turrican anyway.

Alternate mods (inside the ST)

Another way of achieving the same effect, that should work with any SEGA gamepad, would be to open the ST and make a shortcut from Port 1’s pin 9 to port 0’s pin 6 so that the two mouse buttons would be tied to the two buttons of the joystick (and not only to the mouse’s right button). However you should absolutely ensure that pin 5 of port 1 (joystick) is completely disconnected from the rest of the keyboard, by either cutting the track or removing the matching filter located above the socket, else you may fry the micro-controller when using a SEGA pad. Pin 5 does not seem to have any documented use anyway.

Of course, this mod works only with games that support that specific two-joystick mapping. So far I only know Turrican and Turrican 2 that use it, but perhaps there’s more?


(skip to 3:30 or 8:15 to see the two buttons in action)