I know this game was released like 100 years ago, but one thing that always pissed me off was the lack of support for pressure-sensitive (or analog) buttons. Well, I finally found a fix that works pretty well.
Anyway, I can confirm this works with a DualShock 2 and a Super Dual Box Pro PS2 to USB adapter from Mayflash. Theoretically, it should work with any controller or gamepad with analog triggers or even an analog stick if you have no other option. The only controllers that have analog buttons are the PS2/PS3 and Xbox (NOT 360 controllers). The Super Dual Box Pro is the only PS2 to USB adapter with hardware and driver support for analog buttons THAT I KNOW OF. As for the Xbox controller, I am not sure if any adapter/drivers exist that allow you to enable the analog aspect of the buttons.
In any case, you're going to need to download and install AutoHotKey, and also download the JoystickTest.ahk script (Google both). Use JoystickTest.ahk to see what axis the button/trigger/stick you want to use is (one of the analog buttons options for the Super Dual Box Pro is recognized as JoyU). You just run the script and it makes a little box on your mouse cursor that will show input values when an axis is manipulated.
In the game's control config, you want to set WEAPON, WEAK and SLOW to 3 different keyboard keys (I used S, X and Z respectively).
Finally, you need to copy/paste this code into a txt file, adjust what you need to (i.e. change JoyU to JoyZ or whatever) and save it as a .ahk file:
| CODE |
#Persistent ; Keep this script running until the user explicitly exits it. #NoEnv; Recommended for performance and compatibility with future AutoHotkey releases. SendMode Input; Recommended for new scripts due to its superior speed and reliability. SetTimer, WatchAxis, 5 return
WatchAxis: GetKeyState, JoyU, JoyU ; Get position of U axis. Key1ToHoldDownPrev = %Key1ToHoldDown% Key2ToHoldDownPrev = %Key2ToHoldDown% Key3ToHoldDownPrev = %Key3ToHoldDown%
if JoyU = 0 { Key1ToHoldDown = Key2ToHoldDown = Key3ToHoldDown = } else if JoyU between 1 and 12 { Key1ToHoldDown = z Key2ToHoldDown = Key3ToHoldDown = x } else if JoyU between 13 and 99 { Key1ToHoldDown = z Key2ToHoldDown = s Key3ToHoldDown = x } else if JoyU = 100 { Key1ToHoldDown = z Key2ToHoldDown = s Key3ToHoldDown = }
SetKeyDelay -1 ; Avoid delays between keystrokes.
if Key1ToHoldDown <> %Key1ToHoldDownPrev% ; Key #1 needs adjusting. { if Key1ToHoldDownPrev <> ; There is a previous key to release. Send, {%Key1ToHoldDownPrev% up} ; Release it. if Key1ToHoldDown <> ; There is a key to press down. Send, {%Key1ToHoldDown% down} ; Press it down. } if Key2ToHoldDown <> %Key2ToHoldDownPrev% ; Key #2 needs adjusting. { if Key2ToHoldDownPrev <> ; There is a previous key to release. Send, {%Key2ToHoldDownPrev% up} ; Release it. if Key2ToHoldDown <> ; There is a key to press down. Send, {%Key2ToHoldDown% down} ; Press it down. } if Key3ToHoldDown <> %Key3ToHoldDownPrev% ; Key #3 needs adjusting. { if Key3ToHoldDownPrev <> ; There is a previous key to release. Send, {%Key3ToHoldDownPrev% up} ; Release it. if Key3ToHoldDown <> ; There is a key to press down. Send, {%Key3ToHoldDown% down} ; Press it down. } return |
Great job dude. Nice work, nice find!
Although it maybe useless in someone who doesnt have a connector for a Dual Shock 2 controller for his PC but... its just great! ^_^
It should work for Xbox 360 gamepads without adapters and also for Sixaxis/Dual Shock 3. It's just that you'd have to change it for a trigger axis on the 360 pad.
I'm not sure if the Sixaxis or Dual Shock 3 include drivers that support pressure sensitive buttons, but they might. If not, you could use the R stick, but it might be somewhat awkward.
Original Xbox controllers with adapters will work for the triggers at the very least, but there might be some drivers out there that support the pressure buttons.
Any kind of PC gamepad/joystick with some analog axis should work.
If anyone needs help modifying the AHK code to get it to work with your controller, just ask.