Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | Linux Joystick parport drivers v2.0 |
| 2 | (c) 1998-2000 Vojtech Pavlik <vojtech@ucw.cz> |
| 3 | (c) 1998 Andree Borrmann <a.borrmann@tu-bs.de> |
| 4 | Sponsored by SuSE |
| 5 | $Id: joystick-parport.txt,v 1.6 2001/09/25 09:31:32 vojtech 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 |
Raphael Assenat | b157d55 | 2006-04-02 00:10:05 -0500 | [diff] [blame] | 39 | and/or SNES gamepads and/or SNES mice connected to the parallel port at once, |
| 40 | the output lines of the parallel port are shared, while one of 5 available |
| 41 | input lines is assigned to each gamepad. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 42 | |
| 43 | This protocol is handled by the gamecon.c driver, so that's the one |
Raphael Assenat | b157d55 | 2006-04-02 00:10:05 -0500 | [diff] [blame] | 44 | you'll use for NES, SNES gamepads and SNES mice. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 | <and so on> : |
| 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 | |
Raphael Assenat | b157d55 | 2006-04-02 00:10:05 -0500 | [diff] [blame] | 109 | Pinout for NES gamepads Pinout for SNES gamepads and mice |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 <schwenke@burg-halle.de> |
| 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 | * PSX DDR Pad |
| 339 | |
| 340 | 2.4 Sega |
| 341 | ~~~~~~~~ |
| 342 | All the Sega controllers are more or less based on the standard 2-button |
| 343 | Multisystem joystick. However, since they don't use switches and use TTL |
| 344 | logic, the only driver usable with them is the db9.c driver. |
| 345 | |
| 346 | 2.4.1 Sega Master System |
| 347 | ~~~~~~~~~~~~~~~~~~~~~~~~ |
| 348 | The SMS gamepads are almost exactly the same as normal 2-button |
| 349 | Multisystem joysticks. Set the driver to Multi2 mode, use the corresponding |
| 350 | parallel port pins, and the following schematic: |
| 351 | |
| 352 | +-----------> Power |
| 353 | | +---------> Right |
| 354 | | | +-------> Left |
| 355 | | | | +-----> Down |
| 356 | | | | | +---> Up |
| 357 | | | | | | |
| 358 | _____________ |
| 359 | 5 \ o o o o o / 1 |
| 360 | \ o o x o / |
| 361 | 9 `~~~~~~~' 6 |
| 362 | | | | |
| 363 | | | +----> Button 1 |
| 364 | | +--------> Ground |
| 365 | +----------> Button 2 |
| 366 | |
| 367 | 2.4.2 Sega Genesis aka MegaDrive |
| 368 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 369 | The Sega Genesis (in Europe sold as Sega MegaDrive) pads are an extension |
| 370 | to the Sega Master System pads. They use more buttons (3+1, 5+1, 6+1). Use |
| 371 | the following schematic: |
| 372 | |
| 373 | +-----------> Power |
| 374 | | +---------> Right |
| 375 | | | +-------> Left |
| 376 | | | | +-----> Down |
| 377 | | | | | +---> Up |
| 378 | | | | | | |
| 379 | _____________ |
| 380 | 5 \ o o o o o / 1 |
| 381 | \ o o o o / |
| 382 | 9 `~~~~~~~' 6 |
| 383 | | | | | |
| 384 | | | | +----> Button 1 |
| 385 | | | +------> Select |
| 386 | | +--------> Ground |
| 387 | +----------> Button 2 |
| 388 | |
| 389 | The Select pin goes to pin 14 on the parallel port. |
| 390 | |
| 391 | (pin 14) -----> Select |
| 392 | |
| 393 | The rest is the same as for Multi2 joysticks using db9.c |
| 394 | |
| 395 | 2.4.3 Sega Saturn |
| 396 | ~~~~~~~~~~~~~~~~~ |
| 397 | Sega Saturn has eight buttons, and to transfer that, without hacks like |
| 398 | Genesis 6 pads use, it needs one more select pin. Anyway, it is still |
| 399 | handled by the db9.c driver. Its pinout is very different from anything |
| 400 | else. Use this schematic: |
| 401 | |
| 402 | +-----------> Select 1 |
| 403 | | +---------> Power |
| 404 | | | +-------> Up |
| 405 | | | | +-----> Down |
| 406 | | | | | +---> Ground |
| 407 | | | | | | |
| 408 | _____________ |
| 409 | 5 \ o o o o o / 1 |
| 410 | \ o o o o / |
| 411 | 9 `~~~~~~~' 6 |
| 412 | | | | | |
| 413 | | | | +----> Select 2 |
| 414 | | | +------> Right |
| 415 | | +--------> Left |
| 416 | +----------> Power |
| 417 | |
| 418 | Select 1 is pin 14 on the parallel port, Select 2 is pin 16 on the |
| 419 | parallel port. |
| 420 | |
| 421 | (pin 14) -----> Select 1 |
| 422 | (pin 16) -----> Select 2 |
| 423 | |
| 424 | The other pins (Up, Down, Right, Left, Power, Ground) are the same as for |
| 425 | Multi joysticks using db9.c |
| 426 | |
| 427 | 3. The drivers |
| 428 | ~~~~~~~~~~~~~~ |
| 429 | There are three drivers for the parallel port interfaces. Each, as |
| 430 | described above, allows to connect a different group of joysticks and pads. |
| 431 | Here are described their command lines: |
| 432 | |
| 433 | 3.1 gamecon.c |
| 434 | ~~~~~~~~~~~~~ |
| 435 | Using gamecon.c you can connect up to five devices to one parallel port. It |
| 436 | uses the following kernel/module command line: |
| 437 | |
| 438 | gamecon.map=port,pad1,pad2,pad3,pad4,pad5 |
| 439 | |
| 440 | Where 'port' the number of the parport interface (eg. 0 for parport0). |
| 441 | |
| 442 | And 'pad1' to 'pad5' are pad types connected to different data input pins |
| 443 | (10,11,12,13,15), as described in section 2.1 of this file. |
| 444 | |
| 445 | The types are: |
| 446 | |
| 447 | Type | Joystick/Pad |
| 448 | -------------------- |
| 449 | 0 | None |
| 450 | 1 | SNES pad |
| 451 | 2 | NES pad |
| 452 | 4 | Multisystem 1-button joystick |
| 453 | 5 | Multisystem 2-button joystick |
| 454 | 6 | N64 pad |
| 455 | 7 | Sony PSX controller |
| 456 | 8 | Sony PSX DDR controller |
Raphael Assenat | b157d55 | 2006-04-02 00:10:05 -0500 | [diff] [blame] | 457 | 9 | SNES mouse |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 458 | |
Matt LaPlante | d6bc8ac | 2006-10-03 22:54:15 +0200 | [diff] [blame] | 459 | The exact type of the PSX controller type is autoprobed when used, so |
| 460 | hot swapping should work (but is not recommended). |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 461 | |
| 462 | Should you want to use more than one of parallel ports at once, you can use |
| 463 | gamecon.map2 and gamecon.map3 as additional command line parameters for two |
| 464 | more parallel ports. |
| 465 | |
| 466 | There are two options specific to PSX driver portion. gamecon.psx_delay sets |
| 467 | the command delay when talking to the controllers. The default of 25 should |
Matt LaPlante | 992caac | 2006-10-03 22:52:05 +0200 | [diff] [blame] | 468 | work but you can try lowering it for better performance. If your pads don't |
| 469 | respond try raising it until they work. Setting the type to 8 allows the |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 470 | driver to be used with Dance Dance Revolution or similar games. Arrow keys are |
| 471 | registered as key presses instead of X and Y axes. |
| 472 | |
| 473 | 3.2 db9.c |
| 474 | ~~~~~~~~~ |
| 475 | Apart from making an interface, there is nothing difficult on using the |
| 476 | db9.c driver. It uses the following kernel/module command line: |
| 477 | |
| 478 | db9.dev=port,type |
| 479 | |
| 480 | Where 'port' is the number of the parport interface (eg. 0 for parport0). |
| 481 | |
| 482 | Caveat here: This driver only works on bidirectional parallel ports. If |
| 483 | your parallel port is recent enough, you should have no trouble with this. |
| 484 | Old parallel ports may not have this feature. |
| 485 | |
| 486 | 'Type' is the type of joystick or pad attached: |
| 487 | |
| 488 | Type | Joystick/Pad |
| 489 | -------------------- |
| 490 | 0 | None |
| 491 | 1 | Multisystem 1-button joystick |
| 492 | 2 | Multisystem 2-button joystick |
| 493 | 3 | Genesis pad (3+1 buttons) |
| 494 | 5 | Genesis pad (5+1 buttons) |
| 495 | 6 | Genesis pad (6+2 buttons) |
| 496 | 7 | Saturn pad (8 buttons) |
| 497 | 8 | Multisystem 1-button joystick (v0.8.0.2 pin-out) |
| 498 | 9 | Two Multisystem 1-button joysticks (v0.8.0.2 pin-out) |
| 499 | 10 | Amiga CD32 pad |
| 500 | |
| 501 | Should you want to use more than one of these joysticks/pads at once, you |
| 502 | can use db9.dev2 and db9.dev3 as additional command line parameters for two |
| 503 | more joysticks/pads. |
| 504 | |
| 505 | 3.3 turbografx.c |
| 506 | ~~~~~~~~~~~~~~~~ |
| 507 | The turbografx.c driver uses a very simple kernel/module command line: |
| 508 | |
| 509 | turbografx.map=port,js1,js2,js3,js4,js5,js6,js7 |
| 510 | |
| 511 | Where 'port' is the number of the parport interface (eg. 0 for parport0). |
| 512 | |
| 513 | 'jsX' is the number of buttons the Multisystem joysticks connected to the |
| 514 | interface ports 1-7 have. For a standard multisystem joystick, this is 1. |
| 515 | |
| 516 | Should you want to use more than one of these interfaces at once, you can |
| 517 | use turbografx.map2 and turbografx.map3 as additional command line parameters |
| 518 | for two more interfaces. |
| 519 | |
| 520 | 3.4 PC parallel port pinout |
| 521 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 522 | .----------------------------------------. |
| 523 | At the PC: \ 13 12 11 10 9 8 7 6 5 4 3 2 1 / |
| 524 | \ 25 24 23 22 21 20 19 18 17 16 15 14 / |
| 525 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 526 | |
| 527 | Pin | Name | Description |
| 528 | ~~~~~~|~~~~~~~~~|~~~~~~~~~~ |
| 529 | 1 | /STROBE | Strobe |
| 530 | 2-9 | D0-D7 | Data Bit 0-7 |
| 531 | 10 | /ACK | Acknowledge |
| 532 | 11 | BUSY | Busy |
| 533 | 12 | PE | Paper End |
| 534 | 13 | SELIN | Select In |
| 535 | 14 | /AUTOFD | Autofeed |
| 536 | 15 | /ERROR | Error |
| 537 | 16 | /INIT | Initialize |
| 538 | 17 | /SEL | Select |
| 539 | 18-25 | GND | Signal Ground |
| 540 | |
| 541 | 3.5 End |
| 542 | ~~~~~~~ |
| 543 | That's all, folks! Have fun! |