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.
|