The elusive solution to the Joystick Axis being the wrong way!
#1
After some digging around I found I had copied that post from the old forum on how to fix the input axis problem (by disabling the Y axis).

This is a solution for those playing rollcage/stage2/ on windows. For everyone else, support for remapping should be provided by the OS without requiring weird hacks. But then again: windows users always seem found to dig through the "register" and manually modify configs and things - contrary to everyone else who instead just use an OS that "Just Works"™ and "Does What You Want"©.

For instance: I'm on GNU/Linux and just need to use the jscal program for remapping. And for those insisting on digging through a windows-like register, wine provides a slightly simpler way (look at the directinput part) than below.


But bottom line, if you are running windows, then in regedit:
* HKLM\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM
* You'll find there a bunch of VID devices. Go thru each and find your controller (OEMName should contain your Controller-Name)
* To disable Axis 1, create SubKey "Axes" und on there, SubKey "1", so you have a key called HKLM\SYSTEM\.....\Joystick\OEM\<YourDevice>\Axes\1
* Create a new REG_BINARY Value called "Attributes" and feed it with data ff,ff,ff,ff,ff,ff,ff,ff

Here's the original post, and as a bonus, a lot of weird newlines as well (fairly sure I was using windows back then...):
Quote:Rollcage was ported from PS (I think). So there are only
rudimental routines for input devices. Anyway...
Looks like Rollcage is using always Axis 1 for steering (maybe
on PS Axis 1 is X-direction; but on Windows Axis 1 is Y-direction).
Solution? I hadn't any success with switching axes. It's
a nightmare dealing with DirectInput. So I used a (in Germany called)
"woodcutter-method".
The trick is to "disable" Axis 1. But because DirectInput doesn't like
that, I just put in "nonsens" settings data into Axis 1, so DirectInput
has no other chance but disabling the Axis. That's the goal. If you get that,
Rollcage will use the first/next Axis, which is Axis 0. Bingo.
btw: The result is that you can use X-Axis to steer, but you need buttons
to Accelerate/Brake. At least I can live with that.
Now, Registry is getting interesting.
I think it's not necessary to say that you do it on your own risk... well - it's better: I take no responsibilities and you do on your own risk.
1st, you need to find your device in Registry. I think each Controller
has its own key, so you have to find yours.
Locate to
HKLM\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM
You'll find there a bunch of VID devices. Go thru each and find your controller
(OEMName should contain your Controller-Name). My one is VID_045E&PID_0038
but who cares?!
Maybe you find already a SubKey called "Axes" on your controller. Usually, they
are not there and can be added to configure the Axes (DirectInput documentation).
Under the SubKey "Axes" are again SubKeys for each Axis (SubKey "0" for Axis 0,
Subkey "1" for Axis 1 and so on...). To disable Axis 1, create SubKey "Axes" und
on there, SubKey "1", so you have a key called
HKLM\SYSTEM\.....\Joystick\OEM\<YourDevice>\Axes\1
Create a new REG_BINARY Value called "Attributes" and feed it with data
ff,ff,ff,ff,ff,ff,ff,ff
If you would export that key to a *.reg-file, it should be look like that:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_045E&PID_0038\Axes\1]
"Attributes"=hex:ff,ff,ff,ff,ff,ff,ff,ff
No panic about playing around with the data. Just delete the complete "Axes" SubKey
and your Joystick will work as usual again.
To see that DirectInput disabled your Axis, you could try a tiny program from Microsoft
itself, called Poswdm.exe (I cannot find it on the MS-site, but you can grab it here:
http://www.wingmanteam.com/latest_software/gadgets.htm )
If if works like described, you'll see on the Y-Axis only "0" and no change when you move Joystick up/down
(and if you click on "Device Details..." it shows you "Y Axis: NO".

Amazing it's impossible to find this info on the rest of the internets... Undecided
Try systemd. They said.
It'll be just as reliable as init. They said.
It'll be completely bug-free. They said.
Our monolithic windows-approach is far superior to the Unix-approach. They said.
Okay, so the codebase has grown gigantic and no one but our paid group of full-time developers who created it can maintain it and fix bugs... but it'll be fine. They said.
Okay, we'll shove it down your throat whether you like it or not. They said.

I guess it's finally time to look into GuixSD and/or devuan.

Code:
systemd-journald(195): Received SIGTERM.
systemd[1]: systemd-udevd.service has no holdoff time, scheduling restart.
systemd[1]: systemd-udevd.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-udevd.service
systemd[1]: Unit systemd-udevd.service entered failed state.
systemd[1]: systemd-journald.service has no holdoff time, scheduling restart.
systemd[1]: systemd-journald.service failed to schedule restart job: final.target is queued, ignoring restart request for unit systemd-journald.service
systemd[1]: Unit systemd-journald.service entered failed state.
Reply
#2
That is a crazy amount of hacking required!
Reply
#3
Not really. it just involves inserting a random registry key O_o

and yes ... god knows where this was found but this -is- what I used to do for Rollcage. I think I did it to make Nitro Stunt Racing behave too.
96.5%
MORE
WUB WUB.
[Image: 54f5c31d9f2ce.gif]
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)