I have a Dance Dance Revolution Arcade machine and (like many people who own these machines) I swapped out the original PCB for a PC running StepMania. Obviously I wanted to get all of the cabinet lights working but I discovered that because of the way it was programmed light outputs only work on the parallel ports and even worse, the port addresses are hard-coded within StepMania. Since my PC uses a PCI based parallel port card I would have to modify the source and recompile...
I thought this was a exceedingly DUMB design so I did something about it.
I have some programming abilities (albeit not with C++) so rather than modify the source I decided to write a new parallel_lights_io.dll that works the way SM should have worked from the start. That way anyone who wants to add light output to SM can do so by simply adding these files to to their installation directory. Basically all this does is provide you with a .ini file that you can modify with your port addresses instead of having to do it in your source code. (also it uses the freely available and better inpout32.dll instead of the licensed and buggy io.dll that SM was built to use)
Download here: http://solid-orange.com/wp-content/uploads/2014/02/twistedsymphonys_stepmania_parallel_port_io_dll.zipThe download includes installation instructions as well as an FAQ with a bit more information than whats in this post.
Supported Versions:This is tested and working on SM 3.9 Plus Redux and OpenITG Beta 2 in Windows XP... I wont work on any version that has light output intentionally disabled in source (which means vanilla SM 3.9 and 4.0 will not work) I haven't tested it on any other releases or OSs...
If you're using a Linux build then you don't need this... this is only for Windows.If you're at all interested in getting light output working please feel free to download and try this out... I'm interested to see how it works for other people. You'll obviously need some hardware output on your parallel ports to see it working.
Hardware:I'm using a Rosewill RC-304 dual parallel port PCI card (it's also low-profile if you're using a half-height PC case) though any properly installed parallel ports should work
As for building a light driver board for your parallel ports there are literally hundreds of ways you can do it... some great info can be found here:
http://www.epanorama.net/circuits/parallel_output.html#realworldIf your intention is to hook this up to a real DDR Arcade machine. DDR has a light driver board already installed, you simply need to invert the parallel port outputs by using an opto-isolator OR a few 74 series inverter chips.... OR utilize the transistor/diode/resistor circuit for relay output described in the link above. The circuit requires a lot more soldering but I'm using that because it's self-powered from the parallel port which makes for a cleaner install (opt-isolators or inverter chips would require an outside power source)... the DDR driver boards don't draw much current, they're just checking for an on/off value on the pin.... If you try to power a lamp any larger than an LED then you'll likely blow out your parallel port which would be bad.
You can find pinouts for the DDR light connectors as well as the parallel port output map here:
http://beta.stepmania.com/forums/general-questions/show/83#post543Parallel Port Hardware Testing:If you're having problems and you want to test your hardware with a program other than StepMania then I recommend this app:
http://lpt-port-test-utility.software.informer.com/3.0/I used that myself quite a bit when developing this little dll. you just plug in your port address and you can turn on and off the output pins on the parallel port to test out your hardware without the use of StepMania.
---------------
I'm just happy to get this working for myself but if it this helps someone else then that's even better...
If you want the source code for this let me know and I'll get it to you. (it was built using Visual Studio 2008, for some reason I couldn't get it to work using anything newer).
---------------
I'll post up information about my hardware interface board once I have it complete.
I've also acquired an Ultimarc Pac-Drive and I'll be looking into getting light output on that for a solution other than Parallel ports.