Misc. Joystick Notes
From: JTKIRK@urp.edu.pe
Date: 02/01/96-05:09:28 AM Z
- Next message by date: JTKIRK@urp.edu.pe: "Atari Controller Notes"
- Previous message by date: Michael Current: "percom"
- Return to Index: Sort by: [ date ] [ author ] [ thread ] [ subject ]
From: JTKIRK@urp.edu.pe Subject: Misc. Joystick Notes Date: Thu Feb 1 05:09:28 1996 Joystick miscellany ------------------- 1- Analog joysticks ------------------- Have you ever considered the fact that an IBM-PC-type analog joystick consists of two potentiometers (one each for the x- and y-axis) and two pushbuttons, just like a set of ATARI (or Commodore) paddles? Have you ever thought of connecting such a proportional joystick to your ATARI or Commodore computer in order to use it with your programs? Well, here's how to build a 15-pin analog joystick port from 2 9-pin ATARI ports. You will need a 15-pin and 2 9-pin female connectors and a 15-wire cable. Internally, the analog joysticks are basically like this: pb1A | O | Y1 pb1B -O--+ | U | | GND Z /->Z Ry Rx=Ry=200-250 K | Z /----\ | | v | \--+ D X1 ----NNNNN--+----+----- +5V L Rx R The pin assignmet in the 15-pin IBM-connector is the following: pin ________________________ # function \8 7 6 5 4 3 2 1/ ------------ \15_14_13_12_11_10__9/ 1 +5V 2 pb1A 3 X1 4 GND 6 Y1 7 pb1B 10 pb2A 11 X2 13 Y2 14 pb2B Similarly, the pin assignment for the DB9 connectors (in the case of paddles) is the following: pin ___________ # function \5 4 3 2 1/ ------------ \9_8_7_6/ 3 L button 4 R button 5 R paddle 7 +5V 8 GND 9 L paddle Well, let's begin with the connections for 1 analog joystick. Take the cable and use it to connect the following pins on the 15-pin connector to the corresponding pins on one 9-pin connector: 15-pin 9-pin ------------- 1 -> 7 2 -> 3 3 -> 9 4 -> 8 6 -> 5 7 -> 4 Now, you can try connecting the 9-pin female to joystick port 1 on your computer and the analog joystick into the 15-pin female connector. Then, write and run a subroutine like this and try moving the joystick and pressing the buttons: 0 PRINT PADDLE(0), PADDLE(1), PTRIG(0), PTRIG(1):GOTO 0 You could also load any program which uses a touch tablet and test the joystick instead (e.g, ATARI ARTIST). If you have a dual analog joystick ('dual' in the same way that paddles are connected by pairs to a single port), then you can now make the following additional connections from the 15-pin female to the second 9-pin female: 15-pin 9-pin ------------- 10 -> 3 11 -> 9 13 -> 5 14 -> 4 Now connect the second 9-pin female to joystick port 2 on your computer; the second analog joystick should be readable through PADDLE(2), PADDLE( 3), PTRIG(2) and PTRIG(3). 2- Portable autofire -------------------- This is a solution for those joysticks which don't have a +5V line (red wire typically, connected to pin 7). You will need a 9-pin female and a 9-pin male connector, an LM 555 timer IC, two resistors (R1=R2=10 K), two capacitors (C=100 nF, C1=0,42 nF), a two-position switch and some wire. Since you will need also an appropiate casing, I would recommend you to use a 9-pin null modem adapter (e.g., Radio Shack #26-264), which will provide you already with the casing, wiring and DB9 connectors. First, build the following autofire circuit in the smallest possible area (less than 0,5"x0,5"): +5V | /----------+ | | Z /--+ R1 Z .__|__|__. | | 8 4 | +----7 | | | 3----- fire Z | LM 555 | R2 Z /-6 5----\ | | | | | +--+-2 | = C1 | |___1____| | | | | \---||---+---------/ C | GND If you are using the null modem adapter, skip this paragraph and continue with the next. If you aren't and are building the adapter with separate parts, then just connect each pin from the 9-pin female to the same pin on the male connector. Now you've just built what the adapter looks like on the inside. Now, if you are using the null modem adapter: just open the casing and accomodate the circuit inside. Make sure that all pins on the male are connected to the same pin # on the female (i.e., pin #1 to pin #1, pin #2 to pin #2, etc.) and not cross-connected. Now for both: Connect the +5V line to pin #7 (either on the male or the female connector, it's the same). Similarly, connect the GND line to pin #8. Cut the wire from pin #6 just in the middle. Now, proceed to make the following connections on the switch: / A / B o o o to | | | to male --/ | \-- fire | to female Now, make the appropiate holes in the casing for the switch. Fix the switch in place and close the casing. Now the portable autofire is ready for use. Just connect the portable autofire between the joystick port on the computer and the joystick's plug. With the switch in the A position, you will simply bypass the autofire circuit (autofire disconnected); when it is in the B position, the autofire is connected and the joystick's fire button is disabled. The advantage of this design is that you can connect the portable autofire to any joystick you want, without having to make any permanent modification to it. 3- Tank-style levers -------------------- Surely you remember BATTLEZONE (tm), don't you? I loved playing that game on the arcades, since it was one of the first games to offer you 3-D graphics and a first-person viewpoint. Then ATARI released it for its 2600 VCS (after many years), with some of the best graphics I've seen on the 2600 VCS. And then came the version for ATARI 8-bit computers... the only one I haven't seen, because somebody stole the last cartridge from the computer fair back in 1989; I assume the controls were like the 2600 VCS version: forward ^ turn left | turn right rotate \ | / counterclockwise <----*----> rotate clockwise / | \ reverse left | reverse right v back The arcade version had real tank-like controls instead: left right tread tread forward ^ ^ forward | | motionless + + motionless | | back v v back The combined motion of both treads gave the same 8 different possible movements for the tank. Well, if you (like me) aren't happy with using just the joystick and want to have a more 'realistic' feeling, here's how to build your tank levers, including the necessary circuitry to provide the respective joystick signals for each combination. Let's compare the switch values for the 9 joystick positions and the 9 tank-lever positions: joystick tank levers U X Y SWITCHES L-+-R | | D Z W movement RLDU XYZW --------------------------------------------- motionless 1111 1111 forward 1110 0011 back 1101 1100 counterclockwise 1011 1001 clockwise 0111 0110 turn right 0110 0111 turn left 1010 1011 reverse right 0101 1101 reverse left 1001 1110 The functions which map (X,Y,Z,W) to (R,L,D,U) are: _ ___ R = Y + X.Z + Z+W _ _ ___ = NOT L = X + Y.W + Z+W ___ . = AND D = X.Y + Z.W ___ + = OR U = X.Y + Z.W You will need: - 1 74LS04 IC (6xNOT) (IC1) - 1 74LS08 IC (4xAND-2) (IC2) - 2 74LS32 ICs (4xOR-2) (IC3 and IC4) - 4 14-pin IC sockets (optional) - 1 2"x3" IC PCBoard (like Radio Shack #276-150A) - lots of jumper wires - soldering iron and solder wire - 1 9-wire cable (as long as you like) - 1 joystick connector (9-pin, female) - 4 pushbuttons for the lever switches (X, Y, Z and W) - as much pushbuttons as you want for firebuttons - 1 board for mounting the switches - 2 self-centering levers (inverted T form) - 1 casing for the whole Connections: ------------ First, solder all wires of the cable to the 9 pins of the joystick connector. The free ends of the wires will be referred to as joyN, where N=1-9 is the corresponding pin number at the connector. ___________ \5 4 3 2 1/ \9_8_7_6/ Mount all 4 lever switches in their board, properly spaced. Remember that the levers are supposed to press them once in place. X -O O- Y | | +-----+--- GND | | Z -O O- W Solder the 4 sockets (or the ICs, directly, if you're cheap) in place in the PCBoard. Pin # of ICx will be referred to as ICx-#, where x=1-4 and #=1-14. _______________________________ |() ....................... ()| | .:::::::::::::::::::::::. | | ::|o_IC2__|:::|o_IC3__|:: | | ::::::::::::::::::::::::: | | ::::::::::::::::::::::::: | | ::::::::::::::::::::::::: | | ::::::::::::::::::::::::: | | ::|o_IC1__|:::|o_IC4__|:: | | ::::::::::::::::::::::: | |()_________________________()| Now use the jumper wires to make the following connections: +5V: joy7, IC1-14, IC2-14, IC3-14, IC4-14 GND: joy8, IC1-7, IC2-7, IC3-7, IC4-7, ground of all pushbuttons R: joy4, IC4-6 L: joy3, IC4-8 D: joy2, IC3-3 U: joy1, IC3-6 FIRE: joy6, trigger of (all) firebutton(s) X: switch X, IC1-11, IC2-2, IC2-4 Y: switch Y, IC1-9, IC2-5, IC2-10 Z: switch Z, IC2-1, IC2-12, IC3-12 W: switch W, IC2-9, IC2-13, IC3-13 IC1-1, IC2-6, IC3-4 IC1-2, IC3-2 IC1-3, IC2-11, IC3-1 IC1-4, IC3-5 IC1-8, IC4-1 IC1-10, IC4-13 IC1-12, IC4-5, IC4-9 IC1-13, IC3-11 IC2-3, IC4-2 IC2-8, IC4-12 IC4-3, IC4-4 IC4-10, IC4-11 If you're using sockets, then now you can place the ICs on them. You can include an autofire switch in the design, if you want. You could also have the two pots (joy5 and joy9) being used for anything you can imagine. Make sure the levers will press the pushbuttons when pressed. You will have to assemble the whole thing inside the casing, making it fit. Now you're ready to blast those @&%# enemy Automatons! Marco Antonio Checa Funcke Botoneros 270 Lima 33 Peru reachable at jtkirk@urp.edu.pe
- Next message by date: JTKIRK@urp.edu.pe: "Atari Controller Notes"
- Previous message by date: Michael Current: "percom"
----------------------------------------- Return to message index