It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
Background
I started on WC1 but found it nearly unplayable because of the large joystick deadzone in the game.
I set out to fix it, trying alternative versions of doxbox, without success.

Prerequisite
I have now "fixed" it, but it does come with a prerequisite: You must be running a script through Thrustmasters Target Script Editor.
So... if you don't have a joystick from Thrustmaster, you are probably out of luck (I don't know if its possible to get joysticks from other vendors working thought Target Script Editor). But... perhaps something can be done with software from other vendors.

Resume of fix:
Use trim on X and Y axis (depending on position) to set value of position out of the deadzone.

Specifics of fix:
Inside the main() function, I mapped the Engine Fuel Flow - Left switch to these 2 settings (turning "fix" on and off):
//---- snip on ------
MapKey(&Throttle, EFLNORM, EXEC("StopAutoRepeat(2);TrimDXAxis(DX_X_AXIS, SET(0));TrimDXAxis(DX_Y_AXIS, SET(0));"));
MapKey(&Throttle, EFLOVER, REXEC(2, 25,"RemoveDeadZone();"));
//---- snip off ------

After the main() function, I created 2 functions to handle the trimming:

//---- snip on ------
// Removes dead zones from games, by trimming X and Y axis
int RemoveDeadZone()
{
int xval;
int yval;
int sval;
int xtrim;
int ytrim;
xval = Axis[DX_X_AXIS].pos;
yval = Axis[DX_Y_AXIS].pos;
// sval sets the value for trimming
// That value can either be set directly, or by getting it from the FC Slider
// I suggest that for testing out what value suits you the best, use the slider
// afterwards set it to the desired value.
// For instance, in Wing Commander 1, with my Joystick, I prefer a value of 205
// So, remark out the line you dont want, and remember to turn of the printf line when you have a set value.
//sval = Axis[DX_SLIDER_AXIS].pos/128;
sval = 205;
xtrim = GetTrimValue(xval);
ytrim = GetTrimValue(yval);

TrimDXAxis(DX_X_AXIS, SET(xtrim));
TrimDXAxis(DX_Y_AXIS, SET(ytrim));

//printf("\xa--X = %i, sval = %i, xtrim = %i", xval, sval, xtrim);

};

int GetTrimValue(int pos)
{
int t;
int slide;
// slide sets the value for trimming
// That value can either be set directly, or by getting it from the FC Slider
// I suggest that for testing out what value suits you the best, use the slider
// afterwards set it to the desired value.
// For instance, in Wing Commander 1, with my Joystick, I prefer a value of 205
// So, remark out the line you dont want
slide= 205;
// slide = Axis[DX_SLIDER_AXIS].pos/128;

if (pos == 0) t=0;
else if (pos >= 1 & pos <=25000) t=slide;
else if (pos > 25000) t=0;
else if (pos <= -1 & pos >= -25000) t=0-slide;
else if (pos < -25000) t=0;
return t;
};
//---- snip off ------

I hope some of you will get use of this. I couldn't find a solution posted anywhere else, so perhaps I am saving some of you a lot of time (I'm not a programmer, so to figure this out actually took quite some time).

If anyone is interested I'll upload my my scripts somewhere accessible, though tbh except for this fix and the way I set the throttle to work, there is nothing to be proud of.
Post edited December 26, 2014 by Darthwobert
I have a Thrustmaster T-Flight Stick X. It didn't come with drivers and claimed not to need them, which it didn't really. Your post made me look though, and it turns out there are drivers. The even seemed to have fixed an imperfect rudder. Supposedly the stick doesn't support that scripting thing though. I could still try it I suppose, as often just because something isn't listed as being supported doesn't mean it isn't, but I have since discovered that using the ingame calibration fixes the deadzone and sensitivity issue I had. I'm still thanking you though for helping me find an actual driver. Also, I have have joystick issues with other games. Next time I come across one I will try installing that script thing.
I did a Tweak Guide video on this game.

The dead zone is normal for this game I'm afraid, and also present in when playing on a 386 DOS PC.

So this fix interest me. Could you share details of it / how it works?

I found that with the mouse the controls have sensitivity inside the deadzone, but not with the joystick. So maybe patching the game would be another angle of attack.