1 |
1275 |
phoenix |
Linux Joystick parport drivers v2.0
|
2 |
|
|
(c) 1998-2000 Vojtech Pavlik
|
3 |
|
|
(c) 1998 Andree Borrmann
|
4 |
|
|
Sponsored by SuSE
|
5 |
|
|
$Id: joystick-parport.txt,v 1.1.1.1 2004-04-15 02:32:42 phoenix Exp $
|
6 |
|
|
----------------------------------------------------------------------------
|
7 |
|
|
|
8 |
|
|
0. Disclaimer
|
9 |
|
|
~~~~~~~~~~~~~
|
10 |
|
|
Any information in this file is provided as-is, without any guarantee that
|
11 |
|
|
it will be true. So, use it at your own risk. The possible damages that can
|
12 |
|
|
happen include burning your parallel port, and/or the sticks and joystick
|
13 |
|
|
and maybe even more. Like when a lightning kills you it is not our problem.
|
14 |
|
|
|
15 |
|
|
1. Intro
|
16 |
|
|
~~~~~~~~
|
17 |
|
|
The joystick parport drivers are used for joysticks and gamepads not
|
18 |
|
|
originally designed for PCs and other computers Linux runs on. Because of
|
19 |
|
|
that, PCs usually lack the right ports to connect these devices to. Parallel
|
20 |
|
|
port, because of its ability to change single bits at will, and providing
|
21 |
|
|
both output and input bits is the most suitable port on the PC for
|
22 |
|
|
connecting such devices.
|
23 |
|
|
|
24 |
|
|
2. Devices supported
|
25 |
|
|
~~~~~~~~~~~~~~~~~~~~
|
26 |
|
|
Many console and 8-bit computer gamepads and joysticks are supported. The
|
27 |
|
|
following subsections discuss usage of each.
|
28 |
|
|
|
29 |
|
|
2.1 NES and SNES
|
30 |
|
|
~~~~~~~~~~~~~~~~
|
31 |
|
|
The Nintendo Entertainment System and Super Nintendo Entertainment System
|
32 |
|
|
gamepads are widely available, and easy to get. Also, they are quite easy to
|
33 |
|
|
connect to a PC, and don't need much processing speed (108 us for NES and
|
34 |
|
|
165 us for SNES, compared to about 1000 us for PC gamepads) to communicate
|
35 |
|
|
with them.
|
36 |
|
|
|
37 |
|
|
All NES and SNES use the same synchronous serial protocol, clocked from
|
38 |
|
|
the computer's side (and thus timing insensitive). To allow up to 5 NES
|
39 |
|
|
and/or SNES gamepads connected to the parallel port at once, the output
|
40 |
|
|
lines of the parallel port are shared, while one of 5 available input lines
|
41 |
|
|
is assigned to each gamepad.
|
42 |
|
|
|
43 |
|
|
This protocol is handled by the gamecon.c driver, so that's the one
|
44 |
|
|
you'll use for NES and SNES gamepads.
|
45 |
|
|
|
46 |
|
|
The main problem with PC parallel ports is that they don't have +5V power
|
47 |
|
|
source on any of their pins. So, if you want a reliable source of power
|
48 |
|
|
for your pads, use either keyboard or joystick port, and make a pass-through
|
49 |
|
|
cable. You can also pull the power directly from the power supply (the red
|
50 |
|
|
wire is +5V).
|
51 |
|
|
|
52 |
|
|
If you want to use the parallel port only, you can take the power is from
|
53 |
|
|
some data pin. For most gamepad and parport implementations only one pin is
|
54 |
|
|
needed, and I'd recommend pin 9 for that, the highest data bit. On the other
|
55 |
|
|
hand, if you are not planning to use anything else than NES / SNES on the
|
56 |
|
|
port, anything between and including pin 4 and pin 9 will work.
|
57 |
|
|
|
58 |
|
|
(pin 9) -----> Power
|
59 |
|
|
|
60 |
|
|
Unfortunately, there are pads that need a lot more of power, and parallel
|
61 |
|
|
ports that can't give much current through the data pins. If this is your
|
62 |
|
|
case, you'll need to use diodes (as a prevention of destroying your parallel
|
63 |
|
|
port), and combine the currents of two or more data bits together.
|
64 |
|
|
|
65 |
|
|
Diodes
|
66 |
|
|
(pin 9) ----|>|-------+------> Power
|
67 |
|
|
|
|
68 |
|
|
(pin 8) ----|>|-------+
|
69 |
|
|
|
|
70 |
|
|
(pin 7) ----|>|-------+
|
71 |
|
|
|
|
72 |
|
|
:
|
73 |
|
|
|
|
74 |
|
|
(pin 4) ----|>|-------+
|
75 |
|
|
|
76 |
|
|
Ground is quite easy. On PC's parallel port the ground is on any of the
|
77 |
|
|
pins from pin 18 to pin 25. So use any pin of these you like for the ground.
|
78 |
|
|
|
79 |
|
|
(pin 18) -----> Ground
|
80 |
|
|
|
81 |
|
|
NES and SNES pads have two input bits, Clock and Latch, which drive the
|
82 |
|
|
serial transfer. These are connected to pins 2 and 3 of the parallel port,
|
83 |
|
|
respectively.
|
84 |
|
|
|
85 |
|
|
(pin 2) -----> Clock
|
86 |
|
|
(pin 3) -----> Latch
|
87 |
|
|
|
88 |
|
|
And the last thing is the NES / SNES data wire. Only that isn't shared and
|
89 |
|
|
each pad needs its own data pin. The parallel port pins are:
|
90 |
|
|
|
91 |
|
|
(pin 10) -----> Pad 1 data
|
92 |
|
|
(pin 11) -----> Pad 2 data
|
93 |
|
|
(pin 12) -----> Pad 3 data
|
94 |
|
|
(pin 13) -----> Pad 4 data
|
95 |
|
|
(pin 15) -----> Pad 5 data
|
96 |
|
|
|
97 |
|
|
Note that pin 14 is not used, since it is not an input pin on the parallel
|
98 |
|
|
port.
|
99 |
|
|
|
100 |
|
|
This is everything you need on the PC's side of the connection, now on to
|
101 |
|
|
the gamepads side. The NES and SNES have different connectors. Also, there
|
102 |
|
|
are quite a lot of NES clones, and because Nintendo used proprietary
|
103 |
|
|
connectors for their machines, the cloners couldn't and used standard D-Cannon
|
104 |
|
|
connectors. Anyway, if you've got a gamepad, and it has buttons A, B, Turbo
|
105 |
|
|
A, Turbo B, Select and Start, and is connected through 5 wires, then it is
|
106 |
|
|
either a NES or NES clone and will work with this connection. SNES gamepads
|
107 |
|
|
also use 5 wires, but have more buttons. They will work as well, of course.
|
108 |
|
|
|
109 |
|
|
Pinout for NES gamepads Pinout for SNES gamepads
|
110 |
|
|
|
111 |
|
|
+----> Power +-----------------------\
|
112 |
|
|
| 7 | o o o o | x x o | 1
|
113 |
|
|
5 +---------+ 7 +-----------------------/
|
114 |
|
|
| x x o \ | | | | |
|
115 |
|
|
| o o o o | | | | | +-> Ground
|
116 |
|
|
4 +------------+ 1 | | | +------------> Data
|
117 |
|
|
| | | | | | +---------------> Latch
|
118 |
|
|
| | | +-> Ground | +------------------> Clock
|
119 |
|
|
| | +----> Clock +---------------------> Power
|
120 |
|
|
| +-------> Latch
|
121 |
|
|
+----------> Data
|
122 |
|
|
|
123 |
|
|
Pinout for NES clone (db9) gamepads Pinout for NES clone (db15) gamepads
|
124 |
|
|
|
125 |
|
|
+---------> Clock +-----------------> Data
|
126 |
|
|
| +-------> Latch | +---> Ground
|
127 |
|
|
| | +-----> Data | |
|
128 |
|
|
| | | ___________________
|
129 |
|
|
_____________ 8 \ o x x x x x x o / 1
|
130 |
|
|
5 \ x o o o x / 1 \ o x x o x x o /
|
131 |
|
|
\ x o x o / 15 `~~~~~~~~~~~~~' 9
|
132 |
|
|
9 `~~~~~~~' 6 | | |
|
133 |
|
|
| | | | +----> Clock
|
134 |
|
|
| +----> Power | +----------> Latch
|
135 |
|
|
+--------> Ground +----------------> Power
|
136 |
|
|
|
137 |
|
|
2.2 Multisystem joysticks
|
138 |
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
139 |
|
|
In the era of 8-bit machines, there was something like de-facto standard
|
140 |
|
|
for joystick ports. They were all digital, and all used D-Cannon 9 pin
|
141 |
|
|
connectors (db9). Because of that, a single joystick could be used without
|
142 |
|
|
hassle on Atari (130, 800XE, 800XL, 2600, 7200), Amiga, Commodore C64,
|
143 |
|
|
Amstrad CPC, Sinclair ZX Spectrum and many other machines. That's why these
|
144 |
|
|
joysticks are called "Multisystem".
|
145 |
|
|
|
146 |
|
|
Now their pinout:
|
147 |
|
|
|
148 |
|
|
+---------> Right
|
149 |
|
|
| +-------> Left
|
150 |
|
|
| | +-----> Down
|
151 |
|
|
| | | +---> Up
|
152 |
|
|
| | | |
|
153 |
|
|
_____________
|
154 |
|
|
5 \ x o o o o / 1
|
155 |
|
|
\ x o x o /
|
156 |
|
|
9 `~~~~~~~' 6
|
157 |
|
|
| |
|
158 |
|
|
| +----> Button
|
159 |
|
|
+--------> Ground
|
160 |
|
|
|
161 |
|
|
However, as time passed, extensions to this standard developed, and these
|
162 |
|
|
were not compatible with each other:
|
163 |
|
|
|
164 |
|
|
|
165 |
|
|
Atari 130, 800/XL/XE MSX
|
166 |
|
|
|
167 |
|
|
+-----------> Power
|
168 |
|
|
+---------> Right | +---------> Right
|
169 |
|
|
| +-------> Left | | +-------> Left
|
170 |
|
|
| | +-----> Down | | | +-----> Down
|
171 |
|
|
| | | +---> Up | | | | +---> Up
|
172 |
|
|
| | | | | | | | |
|
173 |
|
|
_____________ _____________
|
174 |
|
|
5 \ x o o o o / 1 5 \ o o o o o / 1
|
175 |
|
|
\ x o o o / \ o o o o /
|
176 |
|
|
9 `~~~~~~~' 6 9 `~~~~~~~' 6
|
177 |
|
|
| | | | | | |
|
178 |
|
|
| | +----> Button | | | +----> Button 1
|
179 |
|
|
| +------> Power | | +------> Button 2
|
180 |
|
|
+--------> Ground | +--------> Output 3
|
181 |
|
|
+----------> Ground
|
182 |
|
|
|
183 |
|
|
Amstrad CPC Commodore C64
|
184 |
|
|
|
185 |
|
|
+-----------> Analog Y
|
186 |
|
|
+---------> Right | +---------> Right
|
187 |
|
|
| +-------> Left | | +-------> Left
|
188 |
|
|
| | +-----> Down | | | +-----> Down
|
189 |
|
|
| | | +---> Up | | | | +---> Up
|
190 |
|
|
| | | | | | | | |
|
191 |
|
|
_____________ _____________
|
192 |
|
|
5 \ x o o o o / 1 5 \ o o o o o / 1
|
193 |
|
|
\ x o o o / \ o o o o /
|
194 |
|
|
9 `~~~~~~~' 6 9 `~~~~~~~' 6
|
195 |
|
|
| | | | | | |
|
196 |
|
|
| | +----> Button 1 | | | +----> Button
|
197 |
|
|
| +------> Button 2 | | +------> Power
|
198 |
|
|
+--------> Ground | +--------> Ground
|
199 |
|
|
+----------> Analog X
|
200 |
|
|
|
201 |
|
|
Sinclair Spectrum +2A/+3 Amiga 1200
|
202 |
|
|
|
203 |
|
|
+-----------> Up +-----------> Button 3
|
204 |
|
|
| +---------> Fire | +---------> Right
|
205 |
|
|
| | | | +-------> Left
|
206 |
|
|
| | +-----> Ground | | | +-----> Down
|
207 |
|
|
| | | | | | | +---> Up
|
208 |
|
|
| | | | | | | |
|
209 |
|
|
_____________ _____________
|
210 |
|
|
5 \ o o x o x / 1 5 \ o o o o o / 1
|
211 |
|
|
\ o o o o / \ o o o o /
|
212 |
|
|
9 `~~~~~~~' 6 9 `~~~~~~~' 6
|
213 |
|
|
| | | | | | | |
|
214 |
|
|
| | | +----> Right | | | +----> Button 1
|
215 |
|
|
| | +------> Left | | +------> Power
|
216 |
|
|
| +--------> Ground | +--------> Ground
|
217 |
|
|
+----------> Down +----------> Button 2
|
218 |
|
|
|
219 |
|
|
And there were many others.
|
220 |
|
|
|
221 |
|
|
2.2.1 Multisystem joysticks using db9.c
|
222 |
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
223 |
|
|
For the Multisystem joysticks, and their derivatives, the db9.c driver
|
224 |
|
|
was written. It allows only one joystick / gamepad per parallel port, but
|
225 |
|
|
the interface is easy to build and works with almost anything.
|
226 |
|
|
|
227 |
|
|
For the basic 1-button Multisystem joystick you connect its wires to the
|
228 |
|
|
parallel port like this:
|
229 |
|
|
|
230 |
|
|
(pin 1) -----> Power
|
231 |
|
|
(pin 18) -----> Ground
|
232 |
|
|
|
233 |
|
|
(pin 2) -----> Up
|
234 |
|
|
(pin 3) -----> Down
|
235 |
|
|
(pin 4) -----> Left
|
236 |
|
|
(pin 5) -----> Right
|
237 |
|
|
(pin 6) -----> Button 1
|
238 |
|
|
|
239 |
|
|
However, if the joystick is switch based (eg. clicks when you move it),
|
240 |
|
|
you might or might not, depending on your parallel port, need 10 kOhm pullup
|
241 |
|
|
resistors on each of the direction and button signals, like this:
|
242 |
|
|
|
243 |
|
|
(pin 2) ------------+------> Up
|
244 |
|
|
Resistor |
|
245 |
|
|
(pin 1) --[10kOhm]--+
|
246 |
|
|
|
247 |
|
|
Try without, and if it doesn't work, add them. For TTL based joysticks /
|
248 |
|
|
gamepads the pullups are not needed.
|
249 |
|
|
|
250 |
|
|
For joysticks with two buttons you connect the second button to pin 7 on
|
251 |
|
|
the parallel port.
|
252 |
|
|
|
253 |
|
|
(pin 7) -----> Button 2
|
254 |
|
|
|
255 |
|
|
And that's it.
|
256 |
|
|
|
257 |
|
|
On a side note, if you have already built a different adapter for use with
|
258 |
|
|
the digital joystick driver 0.8.0.2, this is also supported by the db9.c
|
259 |
|
|
driver, as device type 8. (See section 3.2)
|
260 |
|
|
|
261 |
|
|
2.2.2 Multisystem joysticks using gamecon.c
|
262 |
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
263 |
|
|
For some people just one joystick per parallel port is not enough, and/or
|
264 |
|
|
want to use them on one parallel port together with NES/SNES/PSX pads. This is
|
265 |
|
|
possible using the gamecon.c. It supports up to 5 devices of the above types,
|
266 |
|
|
including 1 and 2 buttons Multisystem joysticks.
|
267 |
|
|
|
268 |
|
|
However, there is nothing for free. To allow more sticks to be used at
|
269 |
|
|
once, you need the sticks to be purely switch based (that is non-TTL), and
|
270 |
|
|
not to need power. Just a plain simple six switches inside. If your
|
271 |
|
|
joystick can do more (eg. turbofire) you'll need to disable it totally first
|
272 |
|
|
if you want to use gamecon.c.
|
273 |
|
|
|
274 |
|
|
Also, the connection is a bit more complex. You'll need a bunch of diodes,
|
275 |
|
|
and one pullup resistor. First, you connect the Directions and the button
|
276 |
|
|
the same as for db9, however with the diodes inbetween.
|
277 |
|
|
|
278 |
|
|
Diodes
|
279 |
|
|
(pin 2) -----|<|----> Up
|
280 |
|
|
(pin 3) -----|<|----> Down
|
281 |
|
|
(pin 4) -----|<|----> Left
|
282 |
|
|
(pin 5) -----|<|----> Right
|
283 |
|
|
(pin 6) -----|<|----> Button 1
|
284 |
|
|
|
285 |
|
|
For two button sticks you also connect the other button.
|
286 |
|
|
|
287 |
|
|
(pin 7) -----|<|----> Button 2
|
288 |
|
|
|
289 |
|
|
And finally, you connect the Ground wire of the joystick, like done in
|
290 |
|
|
this little schematic to Power and Data on the parallel port, as described
|
291 |
|
|
for the NES / SNES pads in section 2.1 of this file - that is, one data pin
|
292 |
|
|
for each joystick. The power source is shared.
|
293 |
|
|
|
294 |
|
|
Data ------------+-----> Ground
|
295 |
|
|
Resistor |
|
296 |
|
|
Power --[10kOhm]--+
|
297 |
|
|
|
298 |
|
|
And that's all, here we go!
|
299 |
|
|
|
300 |
|
|
2.2.3 Multisystem joysticks using turbografx.c
|
301 |
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
302 |
|
|
The TurboGraFX interface, designed by
|
303 |
|
|
|
304 |
|
|
Steffen Schwenke
|
305 |
|
|
|
306 |
|
|
allows up to 7 Multisystem joysticks connected to the parallel port. In
|
307 |
|
|
Steffen's version, there is support for up to 5 buttons per joystick. However,
|
308 |
|
|
since this doesn't work reliably on all parallel ports, the turbografx.c driver
|
309 |
|
|
supports only one button per joystick. For more information on how to build the
|
310 |
|
|
interface, see
|
311 |
|
|
|
312 |
|
|
http://www2.burg-halle.de/~schwenke/parport.html
|
313 |
|
|
|
314 |
|
|
2.3 Sony Playstation
|
315 |
|
|
~~~~~~~~~~~~~~~~~~~~
|
316 |
|
|
|
317 |
|
|
The PSX controller is supported by the gamecon.c. Pinout of the PSX
|
318 |
|
|
controller (compatible with DirectPadPro):
|
319 |
|
|
|
320 |
|
|
+---------+---------+---------+
|
321 |
|
|
9 | o o o | o o o | o o o | 1 parallel
|
322 |
|
|
\________|_________|________/ port pins
|
323 |
|
|
| | | | | |
|
324 |
|
|
| | | | | +--------> Clock --- (4)
|
325 |
|
|
| | | | +------------> Select --- (3)
|
326 |
|
|
| | | +---------------> Power --- (5-9)
|
327 |
|
|
| | +------------------> Ground --- (18-25)
|
328 |
|
|
| +-------------------------> Command --- (2)
|
329 |
|
|
+----------------------------> Data --- (one of 10,11,12,13,15)
|
330 |
|
|
|
331 |
|
|
The driver supports these controllers:
|
332 |
|
|
|
333 |
|
|
* Standard PSX Pad
|
334 |
|
|
* NegCon PSX Pad
|
335 |
|
|
* Analog PSX Pad (red mode)
|
336 |
|
|
* Analog PSX Pad (green mode)
|
337 |
|
|
* PSX Rumble Pad
|
338 |
|
|
|
339 |
|
|
2.4 Sega
|
340 |
|
|
~~~~~~~~
|
341 |
|
|
All the Sega controllers are more or less based on the standard 2-button
|
342 |
|
|
Multisystem joystick. However, since they don't use switches and use TTL
|
343 |
|
|
logic, the only driver usable with them is the db9.c driver.
|
344 |
|
|
|
345 |
|
|
2.4.1 Sega Master System
|
346 |
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
347 |
|
|
The SMS gamepads are almost exactly the same as normal 2-button
|
348 |
|
|
Multisystem joysticks. Set the driver to Multi2 mode, use the corresponding
|
349 |
|
|
parallel port pins, and the following schematic:
|
350 |
|
|
|
351 |
|
|
+-----------> Power
|
352 |
|
|
| +---------> Right
|
353 |
|
|
| | +-------> Left
|
354 |
|
|
| | | +-----> Down
|
355 |
|
|
| | | | +---> Up
|
356 |
|
|
| | | | |
|
357 |
|
|
_____________
|
358 |
|
|
5 \ o o o o o / 1
|
359 |
|
|
\ o o x o /
|
360 |
|
|
9 `~~~~~~~' 6
|
361 |
|
|
| | |
|
362 |
|
|
| | +----> Button 1
|
363 |
|
|
| +--------> Ground
|
364 |
|
|
+----------> Button 2
|
365 |
|
|
|
366 |
|
|
2.4.2 Sega Genesis aka MegaDrive
|
367 |
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
368 |
|
|
The Sega Genesis (in Europe sold as Sega MegaDrive) pads are an extension
|
369 |
|
|
to the Sega Master System pads. They use more buttons (3+1, 5+1, 6+1). Use
|
370 |
|
|
the following schematic:
|
371 |
|
|
|
372 |
|
|
+-----------> Power
|
373 |
|
|
| +---------> Right
|
374 |
|
|
| | +-------> Left
|
375 |
|
|
| | | +-----> Down
|
376 |
|
|
| | | | +---> Up
|
377 |
|
|
| | | | |
|
378 |
|
|
_____________
|
379 |
|
|
5 \ o o o o o / 1
|
380 |
|
|
\ o o o o /
|
381 |
|
|
9 `~~~~~~~' 6
|
382 |
|
|
| | | |
|
383 |
|
|
| | | +----> Button 1
|
384 |
|
|
| | +------> Select
|
385 |
|
|
| +--------> Ground
|
386 |
|
|
+----------> Button 2
|
387 |
|
|
|
388 |
|
|
The Select pin goes to pin 14 on the parallel port.
|
389 |
|
|
|
390 |
|
|
(pin 14) -----> Select
|
391 |
|
|
|
392 |
|
|
The rest is the same as for Multi2 joysticks using db9.c
|
393 |
|
|
|
394 |
|
|
2.4.3 Sega Saturn
|
395 |
|
|
~~~~~~~~~~~~~~~~~
|
396 |
|
|
Sega Saturn has eight buttons, and to transfer that, without hacks like
|
397 |
|
|
Genesis 6 pads use, it needs one more select pin. Anyway, it is still
|
398 |
|
|
handled by the db9.c driver. Its pinout is very different from anything
|
399 |
|
|
else. Use this schematic:
|
400 |
|
|
|
401 |
|
|
+-----------> Select 1
|
402 |
|
|
| +---------> Power
|
403 |
|
|
| | +-------> Up
|
404 |
|
|
| | | +-----> Down
|
405 |
|
|
| | | | +---> Ground
|
406 |
|
|
| | | | |
|
407 |
|
|
_____________
|
408 |
|
|
5 \ o o o o o / 1
|
409 |
|
|
\ o o o o /
|
410 |
|
|
9 `~~~~~~~' 6
|
411 |
|
|
| | | |
|
412 |
|
|
| | | +----> Select 2
|
413 |
|
|
| | +------> Right
|
414 |
|
|
| +--------> Left
|
415 |
|
|
+----------> Power
|
416 |
|
|
|
417 |
|
|
Select 1 is pin 14 on the parallel port, Select 2 is pin 16 on the
|
418 |
|
|
parallel port.
|
419 |
|
|
|
420 |
|
|
(pin 14) -----> Select 1
|
421 |
|
|
(pin 16) -----> Select 2
|
422 |
|
|
|
423 |
|
|
The other pins (Up, Down, Right, Left, Power, Ground) are the same as for
|
424 |
|
|
Multi joysticks using db9.c
|
425 |
|
|
|
426 |
|
|
3. The drivers
|
427 |
|
|
~~~~~~~~~~~~~~
|
428 |
|
|
There are three drivers for the parallel port interfaces. Each, as
|
429 |
|
|
described above, allows to connect a different group of joysticks and pads.
|
430 |
|
|
Here are described their command lines:
|
431 |
|
|
|
432 |
|
|
3.1 gamecon.c
|
433 |
|
|
~~~~~~~~~~~~~
|
434 |
|
|
Using gamecon.c you can connect up to five devices to one parallel port. It
|
435 |
|
|
uses the following kernel/module command line:
|
436 |
|
|
|
437 |
|
|
gc=port,pad1,pad2,pad3,pad4,pad5
|
438 |
|
|
|
439 |
|
|
Where 'port' the number of the parport interface (eg. 0 for parport0).
|
440 |
|
|
|
441 |
|
|
And 'pad1' to 'pad5' are pad types connected to different data input pins
|
442 |
|
|
(10,11,12,13,15), as described in section 2.1 of this file.
|
443 |
|
|
|
444 |
|
|
The types are:
|
445 |
|
|
|
446 |
|
|
Type | Joystick/Pad
|
447 |
|
|
--------------------
|
448 |
|
|
|
449 |
|
|
1 | SNES pad
|
450 |
|
|
2 | NES pad
|
451 |
|
|
4 | Multisystem 1-button joystick
|
452 |
|
|
5 | Multisystem 2-button joystick
|
453 |
|
|
6 | N64 pad
|
454 |
|
|
7 | Sony PSX controller
|
455 |
|
|
|
456 |
|
|
The exact type of the PSX controller type is autoprobed, so you must have
|
457 |
|
|
your controller plugged in before initializing.
|
458 |
|
|
|
459 |
|
|
Should you want to use more than one of parallel ports at once, you can use
|
460 |
|
|
gc_2 and gc_3 as additional command line parameters for two more parallel
|
461 |
|
|
ports.
|
462 |
|
|
|
463 |
|
|
3.2 db9.c
|
464 |
|
|
~~~~~~~~~
|
465 |
|
|
Apart from making an interface, there is nothing difficult on using the
|
466 |
|
|
db9.c driver. It uses the following kernel/module command line:
|
467 |
|
|
|
468 |
|
|
db9=port,type
|
469 |
|
|
|
470 |
|
|
Where 'port' is the number of the parport interface (eg. 0 for parport0).
|
471 |
|
|
|
472 |
|
|
Caveat here: This driver only works on bidirectional parallel ports. If
|
473 |
|
|
your parallel port is recent enough, you should have no trouble with this.
|
474 |
|
|
Old parallel ports may not have this feature.
|
475 |
|
|
|
476 |
|
|
'Type' is the type of joystick or pad attached:
|
477 |
|
|
|
478 |
|
|
Type | Joystick/Pad
|
479 |
|
|
--------------------
|
480 |
|
|
|
481 |
|
|
1 | Multisystem 1-button joystick
|
482 |
|
|
2 | Multisystem 2-button joystick
|
483 |
|
|
3 | Genesis pad (3+1 buttons)
|
484 |
|
|
5 | Genesis pad (5+1 buttons)
|
485 |
|
|
6 | Genesis pad (6+2 buttons)
|
486 |
|
|
7 | Saturn pad (8 buttons)
|
487 |
|
|
8 | Multisystem 1-button joystick (v0.8.0.2 pin-out)
|
488 |
|
|
9 | Two Multisystem 1-button joysticks (v0.8.0.2 pin-out)
|
489 |
|
|
10 | Amiga CD32 pad
|
490 |
|
|
|
491 |
|
|
Should you want to use more than one of these joysticks/pads at once, you
|
492 |
|
|
can use db9_2 and db9_3 as additional command line parameters for two
|
493 |
|
|
more joysticks/pads.
|
494 |
|
|
|
495 |
|
|
3.3 turbografx.c
|
496 |
|
|
~~~~~~~~~~~~~~~~
|
497 |
|
|
The turbografx.c driver uses a very simple kernel/module command line:
|
498 |
|
|
|
499 |
|
|
tgfx=port,js1,js2,js3,js4,js5,js6,js7
|
500 |
|
|
|
501 |
|
|
Where 'port' is the number of the parport interface (eg. 0 for parport0).
|
502 |
|
|
|
503 |
|
|
'jsX' is the number of buttons the Multisystem joysticks connected to the
|
504 |
|
|
interface ports 1-7 have. For a standard multisystem joystick, this is 1.
|
505 |
|
|
|
506 |
|
|
Should you want to use more than one of these interfaces at once, you can
|
507 |
|
|
use tgfx_2 and tgfx_3 as additional command line parameters for two more
|
508 |
|
|
interfaces.
|
509 |
|
|
|
510 |
|
|
3.4 PC parallel port pinout
|
511 |
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
512 |
|
|
.----------------------------------------.
|
513 |
|
|
At the PC: \ 13 12 11 10 9 8 7 6 5 4 3 2 1 /
|
514 |
|
|
\ 25 24 23 22 21 20 19 18 17 16 15 14 /
|
515 |
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
516 |
|
|
|
517 |
|
|
Pin | Name | Description
|
518 |
|
|
~~~~~~|~~~~~~~~~|~~~~~~~~~~
|
519 |
|
|
1 | /STROBE | Strobe
|
520 |
|
|
2-9 | D0-D7 | Data Bit 0-7
|
521 |
|
|
10 | /ACK | Acknowledge
|
522 |
|
|
11 | BUSY | Busy
|
523 |
|
|
12 | PE | Paper End
|
524 |
|
|
13 | SELIN | Select In
|
525 |
|
|
14 | /AUTOFD | Autofeed
|
526 |
|
|
15 | /ERROR | Error
|
527 |
|
|
16 | /INIT | Initialize
|
528 |
|
|
17 | /SEL | Select
|
529 |
|
|
18-25 | GND | Signal Ground
|
530 |
|
|
|
531 |
|
|
3.5 End
|
532 |
|
|
~~~~~~~
|
533 |
|
|
That's all, folks! Have fun!
|