ZipLabel .com
  DirectPad Pro DirectPad Pro
 
User Extensions
 
Check out Alexander Poplawski's sharware application, Joystick Switcher, for switching between multiple joystick setups. Support for DirectPad Pro has just been added, and many other types of joysticks and game controllers are supported.

http://home.t-online.de/home/a.poplawski/joyswe.htm

If you've written an application that works with DirectPad Pro, drop me a line and I can add a link to it here.


The control panel and VxD commuicate through the Windows registry, and it is possible for user applications to change the configuration without using the DLL. This allows programmers to write mini configuration programs such as:

  • Button remappers that change buttons depending upon the current game
  • Taskbar joystick selectors

I cannot provide support for writing or using these user programs. If you're unfamiliar with the registry or the DirectX programming you'll have to learn elsewhere.

The keys are stored as strings:

HKLM\SOFTWARE\EFP3\DirectPadPro\Joystick[1-5]Config
HKLM\SOFTWARE\EFP3\DirectPadPro\Button[1-5]Config

And as DWORDS:

HKLM\SOFTWARE\EFP3\DirectPadPro\SNESScanRate
HKLM\SOFTWARE\EFP3\DirectPadPro\PSXScanRate
HKLM\SOFTWARE\EFP3\DirectPadPro\ConstRumble
HKLM\SOFTWARE\EFP3\DirectPadPro\RampRumble
HKLM\SOFTWARE\EFP3\DirectPadPro\SineRumble
HKLM\SOFTWARE\EFP3\DirectPadPro\SpringRumble

And as a binary array:

HKLM\SOFTWARE\EFP3\DirectPadPro\Calibrate[1-5]Config

Joystick?Config is formatted as a series of four decimal numbers separated by commas but no spaces. (i.e. printf("%d,%d,%d,%d"))

The first digit is the joystick type, from the following enumerated type:
enum { NONE, ATARI, GENESIS, GENESIS6, JAGUAR, NES, PSX3D, PSXD, PSXAL, PSXAR, SATURN, SMS, SNES, TGFX, PSXPOV, N642D, N64D, N64A, N64POV, SATURNA, SATURNAD, VBOY };

The next digit is the joystick ID, a number from 1 to 5.

The third digit is the parallel port, 1=LPT1: through 4=LPT4:; 5=0x140 (NEC-PC)

The last digit is the power flag, 0=power off between reads, 1=stay powered

Button?Config is a string of 22 capital letters, with the position specifying which cooked button is being configured, and the letter at that position specifying the raw button it will be mapped to, A=1st button, V=22nd button.

For example, Button1Config[4]='C' will set the 5th cooked button (remember C strings start at offset 0) to 'C'-'A'=3rd button on the controller. That is, when the user presses the 3rd button on the controller, the 5th button will read as pressed under Windows. It is legal to have more than one cooked button for any raw button.

*ScanRate is a DWORD (normally 3) that specified how slow to clock the specified controller pad. This shouldn't be changed unless all else fails.

*Rumble is a DWORD that specifies which effects should be mapped to the constant vibration motor on PSX force feedback pads. A value of 2 means no effects will be generated, 1 is the buzzer motor, and 0 is the rumble motor.

Calibrate?Config is a binary value consisting of an array of dwords as follows: {DWORD min[6], mid[6], max[6]} (72 bytes total). Array offsets are as follows: [0]=X, [1]=Y, [2]=Z, [3]=R, [4]=U, [5]=V.

After the registry keys have been modified by your program, a call to joyConfigChanged(0) will notify the driver to read the new values. Without this call the driver will not know to re-read the settings, and any changes will not take effect.


  ZipLabel cdrLabel JzLabel SQLabel lsLabel FlpLabel DirectPad cir Support Home  
  ZipLabel cdrLabel JzLabel SQLabel lsLabel FlpLabel DirectPad CIR Support Home  

Last updated April 19, 1999. Comments welcomed.
This site and all information contained within is Copyright 1999 Earle F. Philhower, III. Iomega, Syquest, SparQ, Jaz, Zip, and other names are trademarks or property of their respective owners.