ÜŪŪŪŪŪŪÜ ŽŪŪ ŽŪ ŽŪŪŪŪŪŪŪŻ ÜŪŪŪŪŪŪÜ ŽŪ ŪŪ ŽŪŪŪŪŪŪŪŻ ŪŪ ŪŪ ŪŪß ŪŪŪŪ ŽŪŻ ŪŪ ŪŪß ŪŪ ÜŪß ŪŪ ŪŪÜ ÜŪŪ ŽŪŪŪŪŪŪŻ ŪŪßŪŪŻ ŽŪŻ ŪŪŪŪŪŻ ŽŪŪŪŪŪŪŻ ŪŪŪŪŪŪŻ ŪŪŪŪŪŻ ßŪŪŪŪß ÜŪŪ ŪŪ ŪŪŻŽŪŻ ŪŪ ÜŪŪ ŪŪŻ ŪŪŻ ŪŪ ŽŪŪŻ ßŪŪŪŪŪŪß ŽŪŻ ßŪŪŪ ŽŪŪŪŪŪŪŪŻ ßŪŪŪŪŪŪß ŪŪ ŽŪŪ ŽŪŪŪŪŪŪŪŻ ŪŪ ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ SNESKey documentation Copyright (c) 1996, 1997 Benji York, All Rights Reserved ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß Table Of Contents Introduction.............................................01 Features.................................................02 Installation.............................................03 Converter Schematic......................................04 The ini File.............................................05 Command Line Switches....................................06 Trouble Shooting.........................................07 What I'd Like to Add.....................................08 Adapter Cables Now Available.............................09 Contacting the Author....................................10 Key Abbreviations........................................Appendix A SNESKey.exe Revision History.............................Appendix B Documentation Revision History...........................Appendix C Special Thanks...........................................Appendix D ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Part 01 -- Introduction SNESKey Documentation ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ SNESKey is a hardware/software combination that allows the use of a Super Nintendo control pad as an input device for computer programs, especially games. The software allows the twelve buttons on the controller to be programmed as any key, or sequence of keys on the keyboard. The software also has the ability to define buttons to be "shifts" that work in much the same way the Ctrl, Alt, and Shift buttons on your keyboard work, except that you get to decide what there shifted and unshifted values will be. The current software allows for up to four buttons to be defined as shifts, this gives a maximum of forty-eight different functions on the controller. Very seldom will all the shifts be used, but with all the variables in computer gaming, flexibility is a good idea. Two quick notes, there are two diagnostic utilities included to help you (1) see if the SNESKey keyboard simulation works on your machine (KeyTest), and (2) see if a SNES pad connected to a parallel port is working (SNESTest). When KeyTest is run and the command prompt reappears there should be the text "SNESKey" waiting on the prompt, this is all KeyTest does. If you don't see this text, then SNESKey may still work with you machine, KeyTest tests the "newest" Key-sim-method. Look in the main ini file for KeySimMethod and change it to "new", then, if that doesn't work, try "old." SNESTest can take an optional port number (e.g. 378) on the command line, the default is 378. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Part 02 -- Features SNESKey Documentation ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ł Support for SNES controllers and joysticks (including joypads) ł Support for other controllers coming soon ł Support for more than one controller (up to 4 SNES pads) ł Allows up to 4 "shifts"; this feature allows the pressing of one button on the controller to change the key presses generated by all the other controllers, this allows SEVERAL more functions to be put on the controller (I play Quake and never touch the keyboard, even to load games, or exit) ł Very configurable ł Very compatable: I have yet to hear of a system or game that it didn't work with. ł Windows95 support coming soon. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Part 03 -- Installation SNESKey Documentation ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Simply copy or unzip the various files into a directory called "SNESKey" off of your root directory. For example: cd\ md c:\sneskey copy a:\*.* c:\sneskey or, if you are unzipping the files: cd\ md c:\sneskey pkunzip -d sneskey.zip c:\sneskey\ After the files have been placed in their appropriate place, you must add SNESKey to your path by editing your autoexec.bat file and adding ";c:\sneskey" to the end of the line that starts "path" or "set path=". Now you need to reboot, so the changes can take effect. After your computer starts you may wish to examine the example initiate (ini) files provided for several games. If you have one of these games and wish to try the SNES out right away, you can simply copy the file into the directory the game is in, rename the file to "sneskey.ini" (without the quotes) and edit the line in the ini file that says "ProgPath = c:\directory\filename.exe" to reflect the correct path and name of the program to run. Now you just have to change to the directory of the game you want to run, type "go" and you should see the SNESKey banner pop up and your game begin to load. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Part 04 -- Converter Schematic SNESKey Documentation ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Unless you have a pre-built converter you will have to build one, or convert a SNES controller before you can play any games. Here is schematic of the circuit. If you wish to purchase a high quality converter please contact me. DB-25 (male) SNES Connector Pin 01 Pin 14 Pin 02 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄæ Pin 15 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄijÄÄÄÄÄÄÄÄÄ Data on 4th controll pad Pin 03 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄæ Pin 16 ³ ³ Pin 04 ³ ³ Pin 17 ³ ³ ŚÄÄÄæ Pin 05 ÄÄÄÄ>³ÄÄÄÄæ ŚÄÄÄÄÄÄÄÄÄÄij o ³ Vcc ŚÄ Pin 18 ³ ³ ĄÄÄÄÄÄÄij o ³ Clock ³ Pin 06 ÄÄÄÄ>³ÄÄÄÄ´ ³ ĄÄÄÄij o ³ Reset ĆÄ Pin 19 ³ ³ ŚÄÄÄÄÄÄÄij o ³ Data ³ Pin 07 ÄÄÄÄ>³ÄÄÄÄÅÄÄÄŁ ³ ĆÄÄÄ´ ĆÄ Pin 20 ³ ³ ³ o ³ N/C ³ Pin 08 ÄÄÄÄ>³ÄÄÄÄ´ ³ ³ o ³ N/C ĆÄ Pin 21 ³ ³ ŚÄÄÄij o ³ GND ³ Pin 09 ÄÄÄÄ>³ÄÄÄÄŁ ³ ³ \_/ ĆÄ Pin 22 ³ ³ ³ Pin 10 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŁ ³ ĆÄ Pin 23 ³ ³ Pin 11 ³ ĆÄ Pin 24 ³ ³ Pin 12 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄijÄÄÄÄÄÄ Data on 2nd controll pad ĆÄ Pin 25 ³ ³ Pin 13 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄijÄÄÄÄÄÄ Data on 3rd controll pad ³ ³ ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŁ The 2nd, 3rd, and 4th data are only for connecting up multiple controll pads. Connect all the other pins exactly like the first pad, then connect the data line of the 2nd, 3rd, and 4th SNES pads to the appropriate pins on the db25. Configuring these controllers is discussed in the section about the ini files. It would be best if the diodes are Germanium, because they use less power, and since the power is being pulled from the data lines of the parallel port, we don't want to use too much. If you use a regular controller this arrangement will be ok, and provide a compact adapter for you SNES controller, but if you want to get fancy (IR controllers, big joysticks, programmable pads, multiple controllers on one port, etc.) you may wish to pull power from the joystick port, or better yet, get a power pack that plugs into the AC main and outputs +5V dc. This will allow you to use any controller you could dream of (not to mention reduce the complexity of the converter from simple to almost non-existent). The best way I have found to achieve a good result is to buy an extension cable for your SNES controller. They usually are about $10 for a pack of two. Carefully remove the part of the connector that plugs in to the SNES console and cut off most of the pins crimped on to the wires. Get a male DB-25 connector and solder what's left of the pins, diodes, and the DB-25 together. Try to make the total assembly as small as possible because you want to be able to fit it inside the shell of the original connector. After everything is connected and working, use a VERY strong glue to adhere the DB-25 to the connector shell positioned in the open end. If you use the glue well, what you end up with will be a very cool adapter cable. Of course, you could do this to the end of a controller, but that seems a bit permanent to me. One note: you need to connect the ground from any power adapter to the ground created from pins 18 to 25 on the port, so everything will have a common reference. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Part 05 -- The ini File SNESKey Documentation ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ The use of the ini file is really straight forward, copy the bare bones one (\sneskey\examples\simple.ini) into the directory of your game. Rename it to "sneskey.ini". Change the lines that have to do with the key configurations and program path, and type "go" at the command line. The way the key config lines work is simple: the key sequences are separated by commas, and the values of the different shift states are separated by semicolons. Not a really good explanation, so look at this: B = a, b, c; 1, 2, 3; F1, F2, F3 This line would make the "B" button on the controller generate the keystrokes "a" "b" and "c" when none of the shift buttons are held down and it is pressd, "1" "2" and "3" when shift one is down and it is pressed, and "F1" "F2" and "F3" when shift two is down and it is pressed. Of course, most of the time you will just want one keystroke per button, per shift state (e.g. B = lctrl; lshift). You may also preface any key name with the word "pulse." This will make SNESKey send the key up signal immediately after the key down. This is useful when the shortest possible key-down time is necessary (e.g. very small amount of movement). The "NumShifts =" line tells how many shift states to expect, and the "Shifts =" line tells which buttons are shifts, and in what order. Every button must have a value for each shift state, even if it is just "none" (to find out all the abbreviations for the keys look in appendix A of this document). For example, if I wanted there to be two shifts, the first being Select, and the other being Start, this would be in the ini file, in the [Keys] section: NumShifts = 2 Shifts = Select; Start Any shift on the "Shifts =" line can be prefaced with the word "toggle." This will make the shift be on when hit once, and stay on until hit again. The first SNES controller is configured in the section "[snes]" the second, third, and fourth are configured in the sections "[snes2]", "[snes3]", and "[snes4]" respectively. If you have problems, you should change the lines in the [Config] section of the main ini file in c:\SNESKey until it works correctly (see the Trouble Shooting section). Each line is accompanied by a description in the ini file itself, so I won't go into detail here, if you really care, you should be able to figure it out, its not very complicated. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Part 06 -- Command Line Switches SNESKey Documentation ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Here are the command line switches for SNESKey: /a Pass Arguments - pass all the arguments that follow to the program being run. Example: to pass "/s /f4 game.rom" to the program type "go /a /s /f4 game.rom". If any other switches are to be passed to SNESKey put them before the "/a". /i Info - Display general information about the programs execution. /p Pause - pause after the screen fills with status info, and before the user program is executed. /v Verbose - show information about what is happening during start up. /? Show the help screen. Also, an alternate ini file can be specified on the command line like so: "SNESKey myconfig.ini". This provides for having different configurations for different people or different controllers. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Part 07 -- Trouble Shooting SNESKey Documentation ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Here is a list of problems and solutions that I encountered when writing the program, and some I just thought might be problems. Many rely on the simple test program included called SNESTest. It allows you to do a bare bones check to see if the controller is alive and responding. 01 The status dots indicate all the buttons are down or up, but are not. This is the worst possible thing (sorry). This means that for some reason, the controller is not responding at all. Check all of your connections, the directions of your diodes, and the parallel port you are trying to use. If you have a multi-tester set it to read up to 10V dc, and check to make sure you are getting a potential between the power and ground pins. Then if that's ok, check to see if there is a very small (probably < 1V) potential across the data, clock, and reset pins (one at a time) when the common (black) probe is connected to the ground pin. Make sure to do all of this with SNESTest running. 02 The first few buttons (e.g. B, Y, Select, Start...) seem to work fine, but all of the others never seem to show up or are always down. This is the result of low power, the controller has enough internal capacitance to read the first few buttons, but after that all power is lost and the buttons don't work correctly. Check to make sure all of the diodes are connected correctly. Or you could just break down and connect external power. 03 SNESTest shows everything to be fine, but SNESKey locks/does nothing. This will have to do with the software end of things. Try fiddling with the "8042Addr =" line in the ini file (only if you are not using the "newest" KeySimMethod). The setting should range from 00 to 1F. Most modern machines use 1F just fine, but try 00 and go up if that doesn't work right off. Once you find this value you will use it for all your games, so you will probably want to change your "default" ini file (c:\sneskey\sneskey.ini). This also means that if your other games work correctly the problem is most probably (all most certainly) somewhere else. If that doesn't work change the "HookedInt =" line to "HookedInt = 0x08", "HookedInt = 0x1C" or "HookedInt = 0x28" and the "TickFreq =" line to "TickFreq = none" (that might sound strange, but its ok, believe me). Now, run the game (using "go" to start it) and see if it works. If so, and the game seems to be responding quickly enough, use these settings, but I would appreciate a postcard about what game, what version of SNESKey you are using, and a copy of your ini files, so I can try to fix your problem appropriately. There is another possibility, SNESKey uses an interrupt as a "wakeup." Whenever this interrupt is executed, it makes sure that the interrupt SNESKey uses for most of it's work (usually 0x70) is doing fine. I have never had this cause a problem on interrupt 0x08, but I guess it could. If it does, try using 0x09, this is the keyboard interrupt, it is only called when you press a key, so if SNESKey seems to have stopped responding, hit a key and see if it wakes up. You can also disable the wakeup function by setting the line in the ini file that says "WakeUpInt = " to "none" (no quotes). There is also a variable in the ini file called "TweakType." This variable tells SNESKey what kind of wakeup to do. Values range form 0 to 2, each being a different type of wakeup. A value of 1 does a "safer" subset of 2, and 0 does neither. 04 The SNESKey banner doesn't pop up when I type "go". There is probably another batch file/program in the path, or current directory named "go.*" and it is being run instead. Look around in the directory, or move SNESKey closer to the front of your path variable in your autoexec.bat, or try typing "sneskey" If that works, you know there is something else named "go" getting in the way. 05 Only the "B" button seems to be working or the "B" button makes all of buttons activate. This would indicate the Clock line is not connected correctly, make sure it is on pin 2 of the DB-25. You might check the circuit with a continuity tester. 06 The colors in one of my games are strange when I use SNESKey with that game. I'm not sure what causes this, but I do have a work-around. When you start that particular game, do not hit any buttons on the controller until the screen that looks strange is displayed, it should be fine. You can now use you controller to play the game. I am looking into this problem and hope to solve it soon. 07 My game slows down when using the joypad with SNESKey. You should add the line "TickFreq = XX" to the [config] section in the ini file in the game directory. Set XX to around 30, maybe 20. 08 Anything else. Get in touch with me, and we'll see what we can do. I want to make this thing as bug free and universally useable as possible. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Part 08 -- What I'd Like to Add SNESKey Documentation ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Here are some things I want to add when I have time/am motivated to. ł Support for multiple ports per instance of SNESKey (i.e. you can have one controller on each of two ports) ł Support for SEGA Genesis 3 and 6 button controllers ł Support for 3DO controllers (really, the Saturn would be better) ł Support for SEGA Saturn controllers (really good for fighting games) ł Support for Sony PlayStation controllers (I want this one) ł Support for Nintendo64 controllers (complete with analog joystick pass through to the PC joystick port) ł Sticky Shifts (what more can I say?) ł Key code cycling; key code 1, then key code 2, then key code 3, etc. ł A new circuit or adapter that acts as a "pass through" so you can use a printer on the same parallel port as the controller without hand swapping them, buying a card with another parallel port on it, or buying one of those A/B switches. ł A circuit that hooks up to the parallel port and the joystick port which would simulate joystick buttons and allow for analogue control with analogue controllers like the Nintendo64 (this has been developed, but with no support for analogue controllers there is no need for it, yet) ł A circuit that hooks up to the parallel port and the keyboard port which would allow for the direct simulation of key codes. This would solve any compatibility problems and make SNESKey really awesome. (I don't know if this will ever be done, or needs to be) ł Support for arcade controllers of my own design: I'm currently working on building custom controllers using arcade parts and interfacing with them through SNESKey. I am very excited about the posabilities. ł Upgrade SNESTest to support the new controllers as they are supported If you want one of these to become a reality look at the following: ł Nintendo64 and PlayStation: please send me the technical details and I'll add support for them as soon as possible. ł Saturn, 3DO, Genesis, NES: send me enough money to buy the controller (as I have the info, but no controllers) ł Any other: send me the technical info and/or enough money to buy the controller ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Part 09 -- Adapter Cables Now Available SNESKey Documentation ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ I have receaved several requests to build converters, and I now have the resources to do so. They have a SNES connector on one end and a 25 pin connector on the other. The cost is $20 for the single pad adapter, add $10 for each additional controller connection (up to 4, total). If you are outside the US add the cost of shipping back to you to the price above. If you wish to accurately calculate the price go to the United States Postal Service web pages at http://www.usps.gov. There you should be able to determine the exact cost. The address you will be mailing to is: SNESKey Adapter c/o Benji York 1609 Texas Ave Apt E Cookeville, TN 38501 Please email me when you send the order and if you have any questions. I will email you when I recieve it and when I ship the adapter to you. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Part 10 -- Contacting the Author SNESKey Documentation ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ I would REALLY appreciate any technical info on reading any console controller, especially Nintendo64 and PlayStation. Please send your info or a pointer to it to: benji@cookeville.com or jby2889@tntech.edu (until sometime around the end of 1998) The address for SNESKey conversion: SNESKey Conversion c/o Benji York 1609 Texas Ave Apt E Cookeville, TN 38501 My permanent mailing address is (use after 1998): Benji York 214 Meadow Drive Shelbyville, TN 37160 The URL for the SNESKey Page is: http://www.geocities.com/SiliconValley/Way/8843 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Appendix A -- Key Abbreviations SNESKey Documentation ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Key Abbreviation Comment ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Escape esc Enter enter Space Bar space Backspace backspace Tab tab Left Control lctrl It is best to use the left ones if Right Control rctrl you can, they are executed slightly Left Shift lshift faster. Right Shift rshift Left Alt lalt Right Alt ralt Caps Lock capslock Num Lock numlock Scroll Lock scrlock 1 (key pad) num1 Again, these are a little faster than 2 (key pad) num2 their gray counterparts. 3 (key pad) num3 4 (key pad) num4 5 (key pad) num5 6 (key pad) num6 7 (key pad) num7 8 (key pad) num8 9 (key pad) num9 0 (key pad) num0 . (key pad) num. / (key pad) num/ * (key pad) num* - (key pad) num- + (key pad) num+ Enter (key pad) numenter Insert (gray) insert Delete (gray) delete Home (gray) home End (gray) end PgUp (gray) pgup PgDown (gray) pgdn Up (gray) up Down (gray) down Right (gray) right Left (gray) left Print Screen prnscrn Pause pause Really works!!! No Definition none Use this for undefined buttons. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Appendix B -- SNESKey.exe Revision History SNESKey Documentation ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ v0.70 Original working copy (late summer '96) v0.70s Special modification for StOrM3 Added a single shift button v0.90 Complete rewrite New key translation New button processing New structs for centralized data Added key queue All config data read from ini file Added support for shift keys Command line specifiable ini file Other command line options (/a /v /?) v1.00 First version for major release Fixed several bugs in config reader Fixed command line ini file specification bug (09/13/96) Fixed argument passing bug (09/17/96) Fixed another argument passing bug (10/03/96) Fixed a bug in the key stuffer (it think it was a bug :), I was waiting for the wrong bit to go high (10/08/96) Changed DispStatus so it can pause if /p argument is used (10/08/96) Added /p command line option to pause before executing user program and when /v list fills screen (10/08/96) Added ability to find ini files in a subdirectory named "sneskey" off of the current directory so multiple configs won't be cluttering up the game directory (10/22/96) Added verbose messages for ini file opening and closing (10/22/96) Added /i general info switch (12/10/96) Added ability to group switches on command line (e.g. /v/p/i) (12/11/96) Completely rewrote key simulator (05/28/97) Added ini settings of ChainMainInt and ChainWakeUpInt (05/28/97) Reordered Init sequence so int 0x70 is enabled after it is hooked (05/28/97) Made enabling of int 0x70 contingent upon 0x70 being the hooked interrupt (05/28/97) Made CleanUp disable int 0x70 (contingent upon 0x70 being the hooked interrupt) (05/28/97) Added KeySimMethod specification (06/03/97) Added Direct Mode and code to set from ini (06/04/97) Changed around some stuff in the main interrupt handler (06/09/97) Added modified keystuffer from JoyEmu 1.02 by Pin Fei Sun, use KeySimMethod = newest (06/10/97) Changed version number to reflect doc update and removed "beta" from version number (07/06/97) Started reworking code to later support more controll pads (07/10/97) Added preliminary support for NES controllers (not tested) (07/13/97) Started working on joypad support (not working) (07/13/97) Reworked ALOT of stuff, adding support for multiple control pads and controllers other than SNES pads (07/13/97) Joystick support is working (07/17/97) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Appendix C -- Documentation Revision History SNESKey Documentation ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1.00.16 Started keeping up with documentation revisions (06/11/97) Added info about KeyTest (06/11/97) 1.00.17 Added section about command line switches (07/05/97) Added section about conversion service (07/05/97) Updated address info (07/05/97) Updated API info (07/05/97) Updated "What I'd Like to Add" section (07/06/97) Clarified installation and configuration sections (07/06/97) 1.00.18 Added info about multiplayer circuit and configuration (07/14/97) 1.00.19 Updated info in "What I'd Like to Add" Removed section about the SNESKey API, not needed anymore :) Added "Features" section Updated "Trouble Shooting" section ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Appendix D -- Special Thanks SNESKey Documentation ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Pin Fei Sun: Wrote JoyEmu 1.02; this little program does something similar to what SNESKey does, but with the joystick. Pin Fei Sun released the source to this small program and thus provided me with the newest (and I think best) key fake routine. Ken Cornett (StOrM3 on IRC): beta tested various versions (I'm glad he has a machine that's hard to get things to work on, it's made SNESKey better), has had good ideas and put SNESKey up on his web page. Everyone that has sent questions, comments, and kudos to me.