home *** CD-ROM | disk | FTP | other *** search
/ Virtual Reality Zone / VRZONE.ISO / mac / PC / PCGLOVE / POWER386 / README.TXT < prev    next >
Text File  |  1994-12-20  |  4KB  |  102 lines

  1. Hello-
  2.  
  3. This shar contains my Nintendo Entertainment System joystick driver.
  4. It's a Streams driver for UNIX V.3/386.  It includes the support driver
  5. files for the original release of Thomas Roell's 386/X11R4 software.
  6.  
  7. This has only been tested on an Orchid 386/20 motherboard running
  8. AT&T UNIX V.3.2.  You shouldn't have much trouble with normal 
  9. variants like ISC or Everex.  With terminally weird junk like SCO,
  10. good luck.  Edit the Master file to have the driver's major
  11. device number in the indicated place.  Add Master as one line
  12. in the file /etc/conf/cf.d/mdevice.  If you need to use a different
  13. parallel port number, change the port in System and nes.c.
  14.  
  15. This project requires a little soldering, I'm afraid.  It was inspired
  16. by an article in Byte magazine (July 1990, pp. 288-289) on attaching
  17. a Mattel Power Glove to an IBM PC.  In fact, the article was not about
  18. the PG, but instead about attaching a Nintendo Joystick to a PC.
  19.  
  20. If you want to make the PG send raw data so you can do Virtual Reality 
  21. with it, this won't do it at all.  You need schematics which I can send 
  22. you, and real electronic skills, which I can't.
  23.  
  24. The driver includes constants for the parallel port # and the pins
  25. attached.  The pinouts for the cable are:
  26.  
  27. Nintendo    Printer
  28. 1    -    GND
  29. 2    -    2  (Clock)
  30. 3    -    3  (Reset)
  31. 4    -    13 (Data)
  32. 5    -    NC
  33. 6    -    NC
  34. 7    -    5V
  35.  
  36. You need to have a spare disk power connector in your PC.
  37. You need to get the 5V and GND lines from this connector.
  38. I got empty shells for the big 4-pin Molexes and built a plug.
  39.  
  40. Don't even think about doing this without an ohmmeter. 
  41.  
  42. The algorithm is simple: wiggle the Reset line, wait a bit.
  43. Read the status from the Data line.  This is the A button.
  44. For 7 times wiggle the clock line, wait a bit, and read a bit.
  45. This gives the other 3 buttons and the four direction buttons.
  46.  
  47. The strobe program demonstrates the use of the cable, and
  48. allows you to test your cable without messing around with the kernel.
  49. You will need to calibrate the waiting constant for your computer.
  50. You will then need to transfer that constant to the variables
  51. nes_c[1-5] in nes.c.  They seem to want to be the same.  The
  52. constant 20 came from a 20 mhz 386.  Mr. Joystick is fairly picky 
  53. about the range of times he's happy with, so you may have to mess
  54. around a bit with strobe.c.  When you're done, the program output 
  55. should reliably reflect the buttons.
  56.  
  57. To add it you Thomas Roell's X386 system, cd to server/ddx/at386 
  58. in your X source tree.  The enclosed mouse.c dates from his original
  59. 256-color release, Nov 8, 1990.  You may have to do something for
  60. his later versions.  The enclosed nintendo.h is included by mouse.c
  61.  
  62. You also need to add the following three lines to config.c:
  63. < #define NINTENDO 11
  64. <   { NINTENDO,  "nintendo" },
  65. <     case NINTENDO:   X386LinkDevice(NesMouseConfig()); break;
  66. Just hunt for MICROSOFT, and you'll see where they go.
  67.  
  68. Now, comment out the mouse config line in 
  69. /usr/lib/X11/X386/config/Xconfig and add this line:
  70.  
  71.     Nintendo     "/dev/nes0" "A" "Select" "B" 10
  72.  
  73. This is to use /dev/nes0 (you might add more later, you never know)
  74. and to configure NES "A" as the left button, NES "Select" as the
  75. middle button, NES "B" as the right button, and an accelerator
  76. value (see below) of 10.  The accelerator value is optional,
  77. and defaults to 0, but you must give all three button descriptors!  
  78. The button descriptors available are: "A", "B", "Select", "Start, 
  79. and "AB".  The latter refers to simultaneously pressing A and B.  
  80. The Power Glove does this in some modes; there is no timer-based 
  81. heuristic for deciding that "A-50 milliseconds-B" counts as an AB.
  82.  
  83. The accelerator value makes the cursor speed up when you hold down
  84. the joystick button in one direction.  I find 3 to 5 pleasantly useable, 
  85. and nicer than a mouse.  
  86.  
  87. You jaded Streams hackers may be in for a surprise.  Hint: search for
  88. "bucket" in nes.c.  Especially serial port Streams driver hackers.
  89.  
  90. Homework: 1) add some dead time before starting acceleration.  2) add
  91. time smarts for the AB combination.  3) Bring up ZapGun (light pen)
  92. support on a VGA card based on the Cirrus chip set, the only chipset
  93. that support light pens.  Pins 5 & 6 on the Nintendo plug are lightpen 
  94. input and trigger input.  It's handy for games, and you can get a 
  95. helmet with the ZapGun lightpen lens built in as a monocle.  Head
  96. tracking doesn't have to cost $50,000.
  97.  
  98. Enjoy!
  99.  
  100. Lance Norskog
  101. thinman@netcom.com
  102.