Joystick Axes Problem
The problem
Some USB adapters are not compatible with StepMania. These incompatible adapters have a hardware limitation that they cannot detect Left+Right pressed simultaneously, and they can't detect Up+Down pressed simultaneously.
This occurs in PlayStation->USB adapters if the adapter hardware maps the PlayStation directional pad button to USB joystick axes on the PC. The PC cannot detect 2 individual and simultaneous presses on the same axis. So, for example, if Left and Right are pressed simultaneously, the PC will only be able to detect Left and Right will be ignored.
The solution
Compatible USB adapters instead map the PlayStation directional pad to appear as USB joystick buttons to the PC. The PC can detect the state of each button individually, so now the PC can detect simultaneous presses of Left+Right.
Some adapters map the PlayStation directional pad to both USB axes and USB buttons. We want StepMania to ignore all axis data from USB joysticks and instead use the USB joystick's button data.
Other adapters have a Dance Pad Code.
Workaround idea
A less-than-ideal solution is to not use the directional buttons on the pad but instead use only the 4 corner buttons (X, O, Square, Triangle on PlayStation pads). If you turn the pad 45 degrees then map your joystick to match that configuration you can play the game fine and hit 2 directions simultaneously, however the game will be more difficult due to the buttons being further apart than normal.
(Information submitted by JasaniAvatar, who gives credit to wolfoftheair for the original suggestion.)
Workaround via Technique
Another player and I have found that you can fool the game into recognizing simultaneous direction buttons by holding down one and pressing the other just as both arrows strike. You don't often get "fantastic" but you at least get "great." We found it only works this way in our case by holding down the Right button and then pressing Left. (of course the easier/better solution is to buy one of the USB_Adapters that works, or to see if your adaptor can use the Dance Pad Code.)
XBCD Setup Workaround Idea
If using the XBCD setup, the four directional pad buttons (POVu/d/l/r) can be programmed to act as the four corner buttons (A, B, X, Y on xbox), and the D-Pad buttons just need to be changed from the POV to anything else (or left unspecified). Then when running stepmania simply set up the controls as your normally would. Since the game thinks that you are setting the four corner buttons as the arrows, it will allow you to hit multiple arrows and combinations without any problems. This setup it pretty much the turned-pad solution submitted by JasaniAvatar taken a step further.
(See [diagram] showing XBCD settings.)
(Information submitted by Steve The Pirate, who gives credit to JasaniAvatar for inspiring this idea.)
IgnoreJoyAxes
Older versions of StepMania contained an option called IgnoreJoyAxes. This caused StepMania to ignore the axes of all joysticks when mapping inputs.
Newer versions of StepMania have a smarter input mapping screen. StepMania now detects when pressing a button on your dance pad triggers both an an axis and a button, and StepMania will automatically ignore the axis. This way, StepMania will automatically be compatible with adapters that map the PlayStation directional pad to both USB joystick axes and USB joystick buttons.
New: Linux XBOX DDR pad support
Linux kernel version 2.6.19 and up now correctly supports XBOX DDR pads for Stepmania.
If your pad isn't automatically recognized as a dance pad, try the following:
modprobe -r xpad
modprobe xpad dpad_to_buttons=1
If that works, send the output of 'cat /proc/bus/usb/devices' to binary1230-at-yahoo-dot-com. I can add your pad's ID's to the driver so it'll work out of the box in the future.
If this still doesn't work for you, you can try the other linux hacks below:
Hack for Linux
If you're using Linux and are not afraid of compiling your own kernel, the following dirty hack might help. The patch is known to work with the 2-pad Warez converter but may also work with other converters with the same problem. Please update this section if you know any more compatible hardware.
You need the installed kernel source, I assume it is in /usr/src/linux Follow this commands:
cd /usr/src/linux wget http://rushbase.net/linux/linux-2.6.18-joydev_analogtodigital.patch patch -p0 < linux-2.6.18-joydev_analogtodigital.patch make menuconfig
Now go to the section 'Device Drivers'->'Input Device support' and set it as below(you may either use joydev as a module or compiled in the kernel, it doesn't matter)
<M> Joystick interface [*] Analog to Digital [fix for the Joy Axis Problem]
Recompile the kernel modules(or the kernel itself), replace the old module in memory or reboot your computer. Now the directional buttons should report both as digital and analog. Since stepmania uses digital first you should be a happy user of your converter(and Linux :>) now.
If the above patch didn't work for you and stepmania still detects the analog buttons make sure that SDL uses the right joystick device, you can force a proper device by the following command.
SDL_JOYSTICK_DEVICE="/dev/input/js0" stepmania
Older patch: http://rushbase.net/linux/linux-2.6.16-joydev_analogtodigital.patch
--Rush 09:24, 7 Jun 2006 (EDT)
Original idea wasn't mine, but I am the one who spent few good hours on making an upgrade to the patch. It would be nice if the original author showed up so that he can get credit for the original version.
Another Hack for Linux
This also might come useful: http://www.justlinux.com/forum/showthread.php?t=124868
Yet another hack for Linux
If you can't download any of the patches above or they don't work for you, you could try the patch available here: http://www.inf.ufsc.br/~adiel/dance-pad/dance-pad.html
This patch tries to solve the axes problem by reinterpreting the data sent by the pad and/or the USB adapter.
Another Solution for Linux
Solution for axis problem with usb psx pad that map wrong the axis buttons... Do this as root (kernel 2.6.X): note: if u have up this modules, unload them (modprobe -r module_name)
modprobe joydev
modprobe gamecon map=0,7 (this loads psx driver mapping)
WOP!!! The axis will be buttons..
u can test it with this program.. http://vba.ngemu.com/downloads/SDLTest-Linux.zip
Linux Workaround without Messing with the Kernel
If you fear recompiling your kernel, for some controllers you can recompile StepMania instead to use a special hack - see http://pasky.or.cz/~pasky/dev/stepmania/3.9/
This workaround works at least for the DragonPlus PS->USB converter.
How to solve the axes problems on soft pads (need soldering)
If you're pad doesn't reckognize simultaneous left+right and up+down presses, and you tried to put a dance code and to remap it with drivers and other things, but none of these worked, then you'll probably need to remap it onto the hardware.If that's a soft pad like the Kraft one,or like those without foam inserts, then you'll probably have to do like I did.
First of all, open the small box between Start and Select and turn the board upside down (so you'll see the green part with all the wirings and all); you'll notice that it has 11 black wires coming from the pad printed on a cellophane surface:
... The big one in the middle is for Ground (I think...) and it's common to the other black wires (try it by yourself by turning the board upside down again so you can see that the black prints have some silver-like stripes...connect one wire to the central and it will trigger either a button or an arrow)...I tried every wire with ground while looking at Windows Game Controllers, so I understood what wire is what button/arrow: it should be like this:
So the order of the wires from left to right is (except for the central one,as it is ground and is common to every wire so we don't need it now): START - Circle - Right - Square - Up - (ground) - Down - Triangle - Left - X - Select
Ok, since I don't want to lose the opportunity to play Pump and other games that requires upper diagonal arrows, I'll "map" Down and Left as Square and Triangle (because, on my pad those are the lower diagonal buttons).
First, you'll need a soldering iron, some solder, two pieces of wire, and some screwdrivers.
Ok, assumed that you already unscrewed the box on the pad and you have the wires ready to be soldered, while the iron is warming, you'll need to cut the connections on the board.Here's a little scheme:
PS the circle in the middle is every other connection on the board, the real board doesn't look like the diagram, only the part with the wires connected to it is as it is really...
Ok, now I've cutted the connections of Square and Triangle as near as I can to the plastic that glues the printed wires ont the PCB, and then I scraped the green part for soldering,and I also cutted the Down and Left connections, but this time slightly upper than for Square and Triangle (since you're gonna soldering here, you need some surface to solder on).Here's another scheme:
Then, you'll need to solder like this:
Now open Windows Game Controllers panel, and if Down and Left trigger as buttons instead of axes, you did it!Now remap the pad in StepMania and DANCE!!
by MickMad
While trying the solder method above, i wanted a pad that would still work with a playstation. Since the newer versions of Stepmania will detect a button press instead of a joy axis if both are activated, i decided to leave the connections unbroken, and in the same way as "left" and "down", connect the "right" button to "circle" and the "up" button to "x" so that the joystick commands wouldn't conflict. It worked great when i started up stepmania, and the pad was way more responsive. To save time i used a conductive pen to draw the circuit connections on the pcb, the only problem i ran into was that care must be taken to make sure that unwanted connections are not made.
by Trickmaster who gives credit to MickMad for the original inspiration

