A spicy companion for running Dance Dance Revolution on a StepManiaX Dedicated Cabinet.
This is a standalone application which allows a user of spice2x playing Dance Dance Revolution on a StepManiaX Dedicated Cabinet to have the following features:
- Full stage and cabinet lighting support, including fully addressable RGB lighting, which maps the Gold Cabinet lights onto StepManiaX hardware
- Full support for stage inputs, with 1000Hz polling
- A touchscreen overlay with menu navigation buttons, a pinpad, and a button to scan a virtual card for each player
- Automatic input and output mapping, without needing to use
spicecfg(apart from thetestandservicebuttons)
This is accomplished by querying spice2x via SpiceAPI to gather the lights data, then using a custom fork of the StepManiaX SDK to output the lights to the cabinet. SpiceAPI is also used for sending stage and touchscreen inputs to the game.
NOTE: The speaker and subwoofer lights on a StepManiaX Cabinet are not software controllable, and remain statically always on.
The lights mapping from DDR to SMX is as follows:
- DDR Top Panel -> StepManiaX marquee
- DDR Monitor Side Strips -> StepManiaX Vertical Strips (front)
- DDR Subwoofer Corner Lights -> StepManiax 3-Circle Spotlights (front)
- DDR Stage Corner Lights -> SMX Stage Corners (in an L-shape)
- DDR Stage Panels -> SMX Stage Panels
The only buttons you should need to map in spicecfg are the test and service buttons. These should be mappable out of the box in spicecfg.
- A version of
spice2xwhich exposes the DDR Gold Cabinet lights viaSpiceAPI. This should be anything including or after the2024-10-29stable release. - 64-bit Dance Dance Revolution + 64-bit
spice2x, with hex edits if necessary, to force it into Gold Cabinet mode (32-bit DDR does not have the right codepaths to emulate the BIO2 lights that the Gold Cab uses). - A copy of
SpiceManiaXplus the correspondingSMX.dllneeded to interact with the cabinet lights.
- Place
SpiceManiaX.exeandSMX.dllin the same directory as yourspice64.exeandgamestart.bat- It doesn't really matter whether you use the 32-bit or 64-bit release of
SpiceManiaX, I've included both though.
- It doesn't really matter whether you use the 32-bit or 64-bit release of
- Alter your
gamestart.batto invokeSpiceManiaX.exebefore starting the game.- I also recommend setting the core affinity for each program such that they sit on different CPU cores. Otherwise, I've seen issues where DDR drops frames due to resource contention on the same CPU core. I also set the thread priorities to
LOWandHIGH, respectively. SpiceAPIalso needs to be enabled. The port must be1337and the password must bespicemaniax.
- I also recommend setting the core affinity for each program such that they sit on different CPU cores. Otherwise, I've seen issues where DDR drops frames due to resource contention on the same CPU core. I also set the thread priorities to
SpiceManiaXalso supports the following parameters:- Card ID parameters (
--p1card/--p2card), for configuring the cards that are inserted when pressing theInsert Cardoverlay buttons. - Opacity (
--opacity), a number betwen 0 and 1 which specified how opqaue the overlay should be (0 = fully transparent, 1 = fully opaque, 0.5 = 50% transparent, etc.)
- Card ID parameters (
Example gamestart.bat:
@echo off
cd %~dp0
START /AFFINITY 1 /LOW SpiceManiaX.exe --p1card somecardid --p2card anothercardid --opacity 0.6
START /AFFINITY 2 /HIGH spice64.exe -api 1337 -apipass spicemaniax
- Map your test and service buttons via
spicecfg.exe. - Go ahead and start the game via
gamestart.bat. If all goes well, once the game window appears, your pads should turn gold until the game actually starts sending lights outputs.
- How does this work?
- This works by acting as a middleman between
spice2xviaSpiceAPI, and StepManiaX hardware via a custom fork of the StepManiaX SDK.
- Which models of StepManiaX cabinets does this support?
- This currently only supports StepManiax Dedicated Cabinets. If you have an AIO or a DX cabinet and wish to get support added, shoot me a Discord PM (
skogaby#1337) and we can possibly work something out.
- Can I emulate a cabinet other than Gold cabinets with this?
- No, this is explicitly meant for doing Gold Cabinet lights on SMX hardware. If you wish to emulate other cabinet lights, use the
smxdedicaboption in Spice2x, and map the lights viaspicecfg. This tool exists to get around the limitations in mapping large amounts of RGB lights / tape LEDs inspicecfg.
- Does this support inputs, or only lights?
- This tool supports both inputs and lights!
- Can I re-map the lighting configuration?
- No. If you wish to change the lights, that's all hardcoded right now and would require you to change the source code.
- Can I run this directly on a StepManiaX Android PC?
- No. The main use case for this is for those who have a mini windows PC inside their cabinet, along with splitters, etc. so that all the USB hardware is connected directly to the PC that's running DDR. Theoretically this could be ported to Android to work over network like
KFChickenor something, but that's outside the scope of my work.