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 |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 5 | ---------------------------------------------------------------------------- |
| 6 | |
| 7 | 0. Disclaimer |
| 8 | ~~~~~~~~~~~~~ |
| 9 | Any information in this file is provided as-is, without any guarantee that |
| 10 | it will be true. So, use it at your own risk. The possible damages that can |
| 11 | happen include burning your parallel port, and/or the sticks and joystick |
| 12 | and maybe even more. Like when a lightning kills you it is not our problem. |
| 13 | |
| 14 | 1. Intro |
| 15 | ~~~~~~~~ |
| 16 | The joystick parport drivers are used for joysticks and gamepads not |
| 17 | originally designed for PCs and other computers Linux runs on. Because of |
| 18 | that, PCs usually lack the right ports to connect these devices to. Parallel |
| 19 | port, because of its ability to change single bits at will, and providing |
| 20 | both output and input bits is the most suitable port on the PC for |
| 21 | connecting such devices. |
| 22 | |
| 23 | 2. Devices supported |
| 24 | ~~~~~~~~~~~~~~~~~~~~ |
| 25 | Many console and 8-bit computer gamepads and joysticks are supported. The |
| 26 | following subsections discuss usage of each. |
| 27 | |
| 28 | 2.1 NES and SNES |
| 29 | ~~~~~~~~~~~~~~~~ |
| 30 | The Nintendo Entertainment System and Super Nintendo Entertainment System |
| 31 | gamepads are widely available, and easy to get. Also, they are quite easy to |
| 32 | connect to a PC, and don't need much processing speed (108 us for NES and |
| 33 | 165 us for SNES, compared to about 1000 us for PC gamepads) to communicate |
| 34 | with them. |
| 35 | |
| 36 | All NES and SNES use the same synchronous serial protocol, clocked from |
| 37 | 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] | 38 | and/or SNES gamepads and/or SNES mice connected to the parallel port at once, |
| 39 | the output lines of the parallel port are shared, while one of 5 available |
| 40 | input lines is assigned to each gamepad. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 41 | |
| 42 | 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] | 43 | you'll use for NES, SNES gamepads and SNES mice. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 44 | |
| 45 | The main problem with PC parallel ports is that they don't have +5V power |
| 46 | source on any of their pins. So, if you want a reliable source of power |
| 47 | for your pads, use either keyboard or joystick port, and make a pass-through |
| 48 | cable. You can also pull the power directly from the power supply (the red |
| 49 | wire is +5V). |
| 50 | |
| 51 | If you want to use the parallel port only, you can take the power is from |
| 52 | some data pin. For most gamepad and parport implementations only one pin is |
| 53 | needed, and I'd recommend pin 9 for that, the highest data bit. On the other |
| 54 | hand, if you are not planning to use anything else than NES / SNES on the |
| 55 | port, anything between and including pin 4 and pin 9 will work. |
| 56 | |
| 57 | (pin 9) -----> Power |
| 58 | |
| 59 | Unfortunately, there are pads that need a lot more of power, and parallel |
| 60 | ports that can't give much current through the data pins. If this is your |
| 61 | case, you'll need to use diodes (as a prevention of destroying your parallel |
| 62 | port), and combine the currents of two or more data bits together. |
| 63 | |
| 64 | Diodes |
| 65 | (pin 9) ----|>|-------+------> Power |
| 66 | | |
| 67 | (pin 8) ----|>|-------+ |
| 68 | | |
| 69 | (pin 7) ----|>|-------+ |
| 70 | | |
| 71 | <and so on> : |
| 72 | | |
| 73 | (pin 4) ----|>|-------+ |
| 74 | |
| 75 | Ground is quite easy. On PC's parallel port the ground is on any of the |
| 76 | pins from pin 18 to pin 25. So use any pin of these you like for the ground. |
| 77 | |
| 78 | (pin 18) -----> Ground |
| 79 | |
| 80 | NES and SNES pads have two input bits, Clock and Latch, which drive the |
| 81 | serial transfer. These are connected to pins 2 and 3 of the parallel port, |
| 82 | respectively. |
| 83 | |
| 84 | (pin 2) -----> Clock |
| 85 | (pin 3) -----> Latch |
| 86 | |
| 87 | And the last thing is the NES / SNES data wire. Only that isn't shared and |
| 88 | each pad needs its own data pin. The parallel port pins are: |
| 89 | |
| 90 | (pin 10) -----> Pad 1 data |
| 91 | (pin 11) -----> Pad 2 data |
| 92 | (pin 12) -----> Pad 3 data |
| 93 | (pin 13) -----> Pad 4 data |
| 94 | (pin 15) -----> Pad 5 data |
| 95 | |
| 96 | Note that pin 14 is not used, since it is not an input pin on the parallel |
| 97 | port. |
| 98 | |
| 99 | This is everything you need on the PC's side of the connection, now on to |
| 100 | the gamepads side. The NES and SNES have different connectors. Also, there |
| 101 | are quite a lot of NES clones, and because Nintendo used proprietary |
| 102 | connectors for their machines, the cloners couldn't and used standard D-Cannon |
| 103 | connectors. Anyway, if you've got a gamepad, and it has buttons A, B, Turbo |
| 104 | A, Turbo B, Select and Start, and is connected through 5 wires, then it is |
| 105 | either a NES or NES clone and will work with this connection. SNES gamepads |
| 106 | also use 5 wires, but have more buttons. They will work as well, of course. |
| 107 | |
Raphael Assenat | b157d55 | 2006-04-02 00:10:05 -0500 | [diff] [blame] | 108 | Pinout for NES gamepads Pinout for SNES gamepads and mice |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 109 | |
| 110 | +----> Power +-----------------------\ |
| 111 | | 7 | o o o o | x x o | 1 |
| 112 | 5 +---------+ 7 +-----------------------/ |
| 113 | | x x o \ | | | | | |
| 114 | | o o o o | | | | | +-> Ground |
| 115 | 4 +------------+ 1 | | | +------------> Data |
| 116 | | | | | | | +---------------> Latch |
| 117 | | | | +-> Ground | +------------------> Clock |
| 118 | | | +----> Clock +---------------------> Power |
| 119 | | +-------> Latch |
| 120 | +----------> Data |
| 121 | |
| 122 | Pinout for NES clone (db9) gamepads Pinout for NES clone (db15) gamepads |
| 123 | |
| 124 | +---------> Clock +-----------------> Data |
| 125 | | +-------> Latch | +---> Ground |
| 126 | | | +-----> Data | | |
| 127 | | | | ___________________ |
| 128 | _____________ 8 \ o x x x x x x o / 1 |
| 129 | 5 \ x o o o x / 1 \ o x x o x x o / |
| 130 | \ x o x o / 15 `~~~~~~~~~~~~~' 9 |
| 131 | 9 `~~~~~~~' 6 | | | |
| 132 | | | | | +----> Clock |
| 133 | | +----> Power | +----------> Latch |
| 134 | +--------> Ground +----------------> Power |
| 135 | |
| 136 | 2.2 Multisystem joysticks |
| 137 | ~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 138 | In the era of 8-bit machines, there was something like de-facto standard |
| 139 | for joystick ports. They were all digital, and all used D-Cannon 9 pin |
| 140 | connectors (db9). Because of that, a single joystick could be used without |
| 141 | hassle on Atari (130, 800XE, 800XL, 2600, 7200), Amiga, Commodore C64, |
| 142 | Amstrad CPC, Sinclair ZX Spectrum and many other machines. That's why these |
| 143 | joysticks are called "Multisystem". |
| 144 | |
| 145 | Now their pinout: |
| 146 | |
| 147 | +---------> Right |
| 148 | | +-------> Left |
| 149 | | | +-----> Down |
| 150 | | | | +---> Up |
| 151 | | | | | |
| 152 | _____________ |
| 153 | 5 \ x o o o o / 1 |
| 154 | \ x o x o / |
| 155 | 9 `~~~~~~~' 6 |
| 156 | | | |
| 157 | | +----> Button |
| 158 | +--------> Ground |
| 159 | |
| 160 | However, as time passed, extensions to this standard developed, and these |
| 161 | were not compatible with each other: |
| 162 | |
| 163 | |
| 164 | Atari 130, 800/XL/XE MSX |
| 165 | |
| 166 | +-----------> Power |
| 167 | +---------> Right | +---------> Right |
| 168 | | +-------> Left | | +-------> Left |
| 169 | | | +-----> Down | | | +-----> Down |
| 170 | | | | +---> Up | | | | +---> Up |
| 171 | | | | | | | | | | |
| 172 | _____________ _____________ |
| 173 | 5 \ x o o o o / 1 5 \ o o o o o / 1 |
| 174 | \ x o o o / \ o o o o / |
| 175 | 9 `~~~~~~~' 6 9 `~~~~~~~' 6 |
| 176 | | | | | | | | |
| 177 | | | +----> Button | | | +----> Button 1 |
| 178 | | +------> Power | | +------> Button 2 |
| 179 | +--------> Ground | +--------> Output 3 |
| 180 | +----------> Ground |
| 181 | |
| 182 | Amstrad CPC Commodore C64 |
| 183 | |
| 184 | +-----------> Analog Y |
| 185 | +---------> Right | +---------> Right |
| 186 | | +-------> Left | | +-------> Left |
| 187 | | | +-----> Down | | | +-----> Down |
| 188 | | | | +---> Up | | | | +---> Up |
| 189 | | | | | | | | | | |
| 190 | _____________ _____________ |
| 191 | 5 \ x o o o o / 1 5 \ o o o o o / 1 |
| 192 | \ x o o o / \ o o o o / |
| 193 | 9 `~~~~~~~' 6 9 `~~~~~~~' 6 |
| 194 | | | | | | | | |
| 195 | | | +----> Button 1 | | | +----> Button |
| 196 | | +------> Button 2 | | +------> Power |
| 197 | +--------> Ground | +--------> Ground |
| 198 | +----------> Analog X |
| 199 | |
| 200 | Sinclair Spectrum +2A/+3 Amiga 1200 |
| 201 | |
| 202 | +-----------> Up +-----------> Button 3 |
| 203 | | +---------> Fire | +---------> Right |
| 204 | | | | | +-------> Left |
| 205 | | | +-----> Ground | | | +-----> Down |
| 206 | | | | | | | | +---> Up |
| 207 | | | | | | | | | |
| 208 | _____________ _____________ |
| 209 | 5 \ o o x o x / 1 5 \ o o o o o / 1 |
| 210 | \ o o o o / \ o o o o / |
| 211 | 9 `~~~~~~~' 6 9 `~~~~~~~' 6 |
| 212 | | | | | | | | | |
| 213 | | | | +----> Right | | | +----> Button 1 |
| 214 | | | +------> Left | | +------> Power |
| 215 | | +--------> Ground | +--------> Ground |
| 216 | +----------> Down +----------> Button 2 |
| 217 | |
| 218 | And there were many others. |
| 219 | |
| 220 | 2.2.1 Multisystem joysticks using db9.c |
| 221 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 222 | For the Multisystem joysticks, and their derivatives, the db9.c driver |
| 223 | was written. It allows only one joystick / gamepad per parallel port, but |
| 224 | the interface is easy to build and works with almost anything. |
| 225 | |
| 226 | For the basic 1-button Multisystem joystick you connect its wires to the |
| 227 | parallel port like this: |
| 228 | |
| 229 | (pin 1) -----> Power |
| 230 | (pin 18) -----> Ground |
| 231 | |
| 232 | (pin 2) -----> Up |
| 233 | (pin 3) -----> Down |
| 234 | (pin 4) -----> Left |
| 235 | (pin 5) -----> Right |
| 236 | (pin 6) -----> Button 1 |
| 237 | |
| 238 | However, if the joystick is switch based (eg. clicks when you move it), |
| 239 | you might or might not, depending on your parallel port, need 10 kOhm pullup |
| 240 | resistors on each of the direction and button signals, like this: |
| 241 | |
| 242 | (pin 2) ------------+------> Up |
| 243 | Resistor | |
| 244 | (pin 1) --[10kOhm]--+ |
| 245 | |
| 246 | Try without, and if it doesn't work, add them. For TTL based joysticks / |
| 247 | gamepads the pullups are not needed. |
| 248 | |
| 249 | For joysticks with two buttons you connect the second button to pin 7 on |
| 250 | the parallel port. |
| 251 | |
| 252 | (pin 7) -----> Button 2 |
| 253 | |
| 254 | And that's it. |
| 255 | |
| 256 | On a side note, if you have already built a different adapter for use with |
| 257 | the digital joystick driver 0.8.0.2, this is also supported by the db9.c |
| 258 | driver, as device type 8. (See section 3.2) |
| 259 | |
| 260 | 2.2.2 Multisystem joysticks using gamecon.c |
| 261 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 262 | For some people just one joystick per parallel port is not enough, and/or |
| 263 | want to use them on one parallel port together with NES/SNES/PSX pads. This is |
| 264 | possible using the gamecon.c. It supports up to 5 devices of the above types, |
| 265 | including 1 and 2 buttons Multisystem joysticks. |
| 266 | |
| 267 | However, there is nothing for free. To allow more sticks to be used at |
| 268 | once, you need the sticks to be purely switch based (that is non-TTL), and |
| 269 | not to need power. Just a plain simple six switches inside. If your |
| 270 | joystick can do more (eg. turbofire) you'll need to disable it totally first |
| 271 | if you want to use gamecon.c. |
| 272 | |
| 273 | Also, the connection is a bit more complex. You'll need a bunch of diodes, |
| 274 | and one pullup resistor. First, you connect the Directions and the button |
| 275 | the same as for db9, however with the diodes inbetween. |
| 276 | |
| 277 | Diodes |
| 278 | (pin 2) -----|<|----> Up |
| 279 | (pin 3) -----|<|----> Down |
| 280 | (pin 4) -----|<|----> Left |
| 281 | (pin 5) -----|<|----> Right |
| 282 | (pin 6) -----|<|----> Button 1 |
| 283 | |
| 284 | For two button sticks you also connect the other button. |
| 285 | |
| 286 | (pin 7) -----|<|----> Button 2 |
| 287 | |
| 288 | And finally, you connect the Ground wire of the joystick, like done in |
| 289 | this little schematic to Power and Data on the parallel port, as described |
| 290 | for the NES / SNES pads in section 2.1 of this file - that is, one data pin |
| 291 | for each joystick. The power source is shared. |
| 292 | |
| 293 | Data ------------+-----> Ground |
| 294 | Resistor | |
| 295 | Power --[10kOhm]--+ |
| 296 | |
| 297 | And that's all, here we go! |
| 298 | |
| 299 | 2.2.3 Multisystem joysticks using turbografx.c |
| 300 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 301 | The TurboGraFX interface, designed by |
| 302 | |
| 303 | Steffen Schwenke <schwenke@burg-halle.de> |
| 304 | |
| 305 | allows up to 7 Multisystem joysticks connected to the parallel port. In |
| 306 | Steffen's version, there is support for up to 5 buttons per joystick. However, |
| 307 | since this doesn't work reliably on all parallel ports, the turbografx.c driver |
| 308 | supports only one button per joystick. For more information on how to build the |
| 309 | interface, see |
| 310 | |
| 311 | http://www2.burg-halle.de/~schwenke/parport.html |
| 312 | |
| 313 | 2.3 Sony Playstation |
| 314 | ~~~~~~~~~~~~~~~~~~~~ |
| 315 | |
| 316 | The PSX controller is supported by the gamecon.c. Pinout of the PSX |
| 317 | controller (compatible with DirectPadPro): |
| 318 | |
| 319 | +---------+---------+---------+ |
| 320 | 9 | o o o | o o o | o o o | 1 parallel |
| 321 | \________|_________|________/ port pins |
| 322 | | | | | | | |
| 323 | | | | | | +--------> Clock --- (4) |
| 324 | | | | | +------------> Select --- (3) |
| 325 | | | | +---------------> Power --- (5-9) |
| 326 | | | +------------------> Ground --- (18-25) |
| 327 | | +-------------------------> Command --- (2) |
| 328 | +----------------------------> Data --- (one of 10,11,12,13,15) |
| 329 | |
| 330 | The driver supports these controllers: |
| 331 | |
| 332 | * Standard PSX Pad |
| 333 | * NegCon PSX Pad |
| 334 | * Analog PSX Pad (red mode) |
| 335 | * Analog PSX Pad (green mode) |
| 336 | * PSX Rumble Pad |
| 337 | * PSX DDR 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 | gamecon.map=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 | 0 | None |
| 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 | 8 | Sony PSX DDR controller |
Raphael Assenat | b157d55 | 2006-04-02 00:10:05 -0500 | [diff] [blame] | 456 | 9 | SNES mouse |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 457 | |
Matt LaPlante | d6bc8ac | 2006-10-03 22:54:15 +0200 | [diff] [blame] | 458 | The exact type of the PSX controller type is autoprobed when used, so |
| 459 | hot swapping should work (but is not recommended). |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 460 | |
| 461 | Should you want to use more than one of parallel ports at once, you can use |
| 462 | gamecon.map2 and gamecon.map3 as additional command line parameters for two |
| 463 | more parallel ports. |
| 464 | |
| 465 | There are two options specific to PSX driver portion. gamecon.psx_delay sets |
| 466 | 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] | 467 | work but you can try lowering it for better performance. If your pads don't |
| 468 | 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] | 469 | driver to be used with Dance Dance Revolution or similar games. Arrow keys are |
| 470 | registered as key presses instead of X and Y axes. |
| 471 | |
| 472 | 3.2 db9.c |
| 473 | ~~~~~~~~~ |
| 474 | Apart from making an interface, there is nothing difficult on using the |
| 475 | db9.c driver. It uses the following kernel/module command line: |
| 476 | |
| 477 | db9.dev=port,type |
| 478 | |
| 479 | Where 'port' is the number of the parport interface (eg. 0 for parport0). |
| 480 | |
| 481 | Caveat here: This driver only works on bidirectional parallel ports. If |
| 482 | your parallel port is recent enough, you should have no trouble with this. |
| 483 | Old parallel ports may not have this feature. |
| 484 | |
| 485 | 'Type' is the type of joystick or pad attached: |
| 486 | |
| 487 | Type | Joystick/Pad |
| 488 | -------------------- |
| 489 | 0 | None |
| 490 | 1 | Multisystem 1-button joystick |
| 491 | 2 | Multisystem 2-button joystick |
| 492 | 3 | Genesis pad (3+1 buttons) |
| 493 | 5 | Genesis pad (5+1 buttons) |
| 494 | 6 | Genesis pad (6+2 buttons) |
| 495 | 7 | Saturn pad (8 buttons) |
| 496 | 8 | Multisystem 1-button joystick (v0.8.0.2 pin-out) |
| 497 | 9 | Two Multisystem 1-button joysticks (v0.8.0.2 pin-out) |
| 498 | 10 | Amiga CD32 pad |
| 499 | |
| 500 | Should you want to use more than one of these joysticks/pads at once, you |
| 501 | can use db9.dev2 and db9.dev3 as additional command line parameters for two |
| 502 | more joysticks/pads. |
| 503 | |
| 504 | 3.3 turbografx.c |
| 505 | ~~~~~~~~~~~~~~~~ |
| 506 | The turbografx.c driver uses a very simple kernel/module command line: |
| 507 | |
| 508 | turbografx.map=port,js1,js2,js3,js4,js5,js6,js7 |
| 509 | |
| 510 | Where 'port' is the number of the parport interface (eg. 0 for parport0). |
| 511 | |
| 512 | 'jsX' is the number of buttons the Multisystem joysticks connected to the |
| 513 | interface ports 1-7 have. For a standard multisystem joystick, this is 1. |
| 514 | |
| 515 | Should you want to use more than one of these interfaces at once, you can |
| 516 | use turbografx.map2 and turbografx.map3 as additional command line parameters |
| 517 | for two more interfaces. |
| 518 | |
| 519 | 3.4 PC parallel port pinout |
| 520 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 521 | .----------------------------------------. |
| 522 | At the PC: \ 13 12 11 10 9 8 7 6 5 4 3 2 1 / |
| 523 | \ 25 24 23 22 21 20 19 18 17 16 15 14 / |
| 524 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 525 | |
| 526 | Pin | Name | Description |
| 527 | ~~~~~~|~~~~~~~~~|~~~~~~~~~~ |
| 528 | 1 | /STROBE | Strobe |
| 529 | 2-9 | D0-D7 | Data Bit 0-7 |
| 530 | 10 | /ACK | Acknowledge |
| 531 | 11 | BUSY | Busy |
| 532 | 12 | PE | Paper End |
| 533 | 13 | SELIN | Select In |
| 534 | 14 | /AUTOFD | Autofeed |
| 535 | 15 | /ERROR | Error |
| 536 | 16 | /INIT | Initialize |
| 537 | 17 | /SEL | Select |
| 538 | 18-25 | GND | Signal Ground |
| 539 | |
| 540 | 3.5 End |
| 541 | ~~~~~~~ |
| 542 | That's all, folks! Have fun! |