WARNING: THESE CHANGES ARE PERMANENT! YOU WILL NOT BE ABLE TO USE THE PEDALS AGAIN IN A RACING GAME!
NOTE: It looks like the Linux versions of the Quake engines do not support Advanced Joystick features. This means that foot pedals (even with these mods) will not work with the Linux versions.
Authors
Pre-configured pedals can be purchased from
Last Updated
Tools you will need
- soldering iron
- small phillips head screwdriver
- wire cutters
- Ohm-meter (or multimeter)
- knife
Parts you will need
V3 racing wheel's pedals or similar (it is better to get pedals that have both footrests the same) OR Sega Saturn Pedals | $40
$15 |
momentary push button switch | $1 |
cheap joystick to rip apart OR 15-pin male D-shell connector | $10 $5 |
misc. pack of resistors | $1 |
small amount of (insulated) wire | $2 |
Time
- If you've messed with electronics before, about 30 minutes.
Theory
The pedals are actually one axis (the wheel is the other), and because of
the way that potentiometers are configured, when the right pedal is depressed,
a potentiometer's resistance changes, causing the total resistance to
increase. When the left pedal is depressed, it reduces the resistance.
In this configuration, the right pedal acts as the accelerator, and the
left acts as the gas.
Here's a diagram of what happens:
(resistance is the vertical axis)
| | ___ |
| | |X| |
| | |X| | ___
| | |X| | |X|
| | |X| | |X|
| | |X| | |X|
| | |X| | |X|
+------ +------ +------
at rest press press brake
accelerator also
The way the advanced joystick settings works for Quake-style games, we need
to have the "at rest" resistance set at a middle value, and when the left
pedal is depressed, reduce the resistance, and when the right pedal is
depressed, increase the resistance (this is how "normal" joysticks operate).
We don't care what happens when the left and the right are pressed
simultaneously, because it does not make sense when strafeing.
Here's a diagram of what we'd like to happen:
(resistance is the vertical axis)
| | ___ |
| | |X| |
| ___ | |X| |
| |X| | |X| |
| |X| | |X| |
| |X| | |X| | ___
| |X| | |X| | |X|
+------ +------ +------
at rest press press brake
accelerator
Procedure
If you have Sega Saturn pedals, then you are in luck! The modifications are much less invasive (we will create an adapter instead of hacking the internal wiring), because the axis return independent values! Please go to this page for modifying the Sega Saturn pedals. People with PC-pedals, read on...
Open the casing of the pedals (the V3 has six screws, two of them are under
pads). You should see only a few wires coming in. One is ground, one is +5
Volts, the other is the return value.
Each potentiometer has three connecting points, one for "in", one for
"center tap out", and one for "out". Reconfigure the wires on these
potentiometers to reflect the configuration mentioned in the Theory section (above).
In my V3 pedals, the wires are reconfigured as follows:
- white wire goes to right pedal's pot's center tap
- right pedal's pot's center tap connected to "out" on same, via 100 K-Ohm (brown-black-yellow) resistor
- right pedal's pot's "out" connected to left pedal's pot's "in"
- red wire to left pedal's pot's "center tap"
Like this (when pedals are viewed upside-down):
red wire -------------------------+
|
white wire ---+ |
| | +-------------------+
| | | |
| [*********] | | [*********] |
| +---[ R P ] | +--+---[ L P ] |
| [ I E P ] | [ E E P ] |
+-100K-Ohm----+---+---[ G D O ] +------+---[ F D O ] |
| [ H A T ] [ T A T ] |
+-----------------+---[ T L ] +---[ L ] |
| [*********] [*********] |
| |
+----------------------------------------+
PINS ON A GAME PORT DB-15
PIN SIGNAL
1 -------------------------------- +5V DC
2 -------------------------------- Button 4 (A_PB1)
3 -------------------------------- Pos'n 0 (A_X)
4 -------------------------------- GND
5 -------------------------------- GND
6 -------------------------------- Pos'n 1 (A_Y)
7 -------------------------------- Button 5 (A_PB2)
8 -------------------------------- +5V DC
9 -------------------------------- +5V DC
10 -------------------------------- Button 6 (B_PB1)
11 -------------------------------- Pos'n 2 (B_X)
12 -------------------------------- GND
13 -------------------------------- Pos'n 3 (B_Y)
14 -------------------------------- Button 7 (B_PB2)
15 -------------------------------- +5V DC
Now you must install a button on the joystick, because Window's setup
requires you to press the joystick's button several times during calibration.
If you are not using Windows, then you don't need to install a button: go to step 2.
- Connect the 15-pin D shell connector's pin 2 to pin 4 via the momentary
switch. To do this on the V3's pedals, you will have to cut the cable that
goes between the pedals and the computer and splice on a new cable,
because the V3's cable does NOT contain the wires for the button! Take
a cheap-o joystick and cut off its cable, about six inches from the
15-pin D shell end. Find the wires for pins 2 and 4 on the new cable
(using an Ohm-meter), and solder the momentary pushbutton between the two
wires.
- Find pin 3 on the D-shell connector and connect
the pedal's white wire (the wire that goes to the right pedal's pot) to it.
This is the axis's return value.
- Find pins 1 and 6 on the D-shell connector.
Connect the pedal's red wire (the wire that goes to the left pedal's pot) directly to pin 1, and also to pin 6 through a 3.3 K-Ohm (orange-orange-red) resistor.
This resistor is necessary because Windows will not recognize a joystick with a "floating" axis, so we must fix its position using a resistor.
Like this:
V3's white wire -----------------------------> pin 3
V3's red wire --+----------------------------> pin 1
|
+--> 3.3 K-Ohm resistor -----> pin 6
- Connect the pedal's grounding wire to the new connector.
- Wrap all of these connections in electrical tape, to insulate the wires from eachother.
Windows users
- Bring up the Game Controllers
Control Panel. Create a definition for a two-axis two-button
joystick (not footpedals!). Then calibrate it. During calibration, the
non-functional axis will probably jump around a bit: ignore this, you will
be disabling this axis in the games. After successful calibration, use the
Control Panel to test the configuration:
- At rest, the crosshair should be centered.
- Pressing the left pedal moves the crosshair smoothly in one direction.
- Pressing the right pedal moves the crosshair smoothly in the opposite direction.
Unix users
- Make sure that you have the joystick device installed in your kernel.
- Make sure that you have the /dev/joy0 device file:
cd /dev; sh ./MAKEDEV joy0
- Read the values from the /dev/joy0 device:
FreeBSD version:
perl -e 'open(JOY,"/dev/joy0")||die; while (1) { sysread(JOY,$x,16); @j=unpack("iiii",$x); print "@j\n"; sleep(1);}'
- At rest, the value should be about half of the maximum value.
- Pressing the left pedal changes a value smoothly in one direction.
- Pressing the right pedal changes the same value smoothly in the opposite direction.
The crosshair should move left-right [reversed], not up-down. If they
move up-down, then swap joy_advaxisy and joy_advaxisx in the config file. No big deal.
Quake II
Edit your quake2/baseq2/autoexec.cfg file and add the following lines:
echo Setting up Pedals
// we have a joystick:
set in_joystick 1
// it is advanced:
set joy_advanced 1
// pedal's axis (0=not used, 1=forward/backward, 2=pitch, 3=strafe, 4=yaw)
// Y axis unused:
set joy_advaxisy 0
// X axis used for strafe:
set joy_advaxisx 3
//set joy_sidethreshold 0.15
//set joy_sidesensitivity -1
// name does not matter, just has to have one:
set joy_name "PedalsXY"
// strafe speed:
//set cl_sidespeed 300
joy_advancedupdate
echo Done setting up Pedals
Start Quake II, load a map, and start strafeing with the pedals!
If you mess with the joy_* variables in the console window, you must use the
joy_advancedupdate command for the new joy_* values to be recognized.
You may want to play with the joy_side{sensitivity,threshold}, to get the
strafe direction and threshold correct.
Also, you may want to mess with the cl_sidespeed variable to set the rate
of your strafeing.
For more on the Quake II console commands, visit:
http://www.planetquake.com/console/commands/quake_2.html
Half-Life
Edit your half-life/valve/autoexec.cfg and add the following lines:
(also in your mod directories, like tfc)
echo Setting up Pedals
// we have a joystick:
set joystick 1
// it is advanced:
set joyadvanced 1
// pedal's axis (0=not used, 1=forward/backward, 2=pitch, 3=strafe, 4=yaw)
// Y axis unused:
set joyadvaxisy 0
// X axis used for strafe:
set joyadvaxisx 3
//set joysidethreshold 0.15
//set joysidesensitivity -1
// name does not matter, just has to have one:
set joyname "PedalsXY"
// strafe speed:
//set cl_sidespeed 300
joyadvancedupdate
echo Done setting up Pedals
Start Half-Life, load a map, and start strafeing with the pedals!
If you mess with the joy* variables in the console window, you must use the
joyadvancedupdate command for the new joy* values to be recognized.
You may want to play with the joyside{sensitivity,threshold}, to get the
strafe direction and threshold correct.
Also, you may want to mess with the cl_sidespeed variable to set the rate
of your strafeing.
For more on the Half-Life console commands, visit:
http://www.pcgame.com/randy/console/input.htm