Dance Dance Revolution

Getting Windows applications to run on MacOS


The situation

Permalink to “The situation”

My roommates and I have been playing Dance Dance Revolution (DDR) on a Windows computer for a while now. The setup is not too complicated: we run a DDR simulator called StepMania, which receives input from USB dance pad controllers connected to the computer.

Picture of the DDR setup

Now we just want this whole thing to work with an M1 chip Macbook instead of a Windows computer. The problem is two-fold:

  1. StepMania does not have a MacOS version.[1]
  2. The dance pads were not meant to work on MacOS.

Attempt 1: StepMania with a compatibility layer

Permalink to “Attempt 1: StepMania with a compatibility layer”

I first tried running all of the Windows software through a compatibility layer. A compatibility layer basically converts all of the Windows system calls into POSIX system calls on the fly.

An easy way to do this is to use Porting Kit, which will do all of the heavy lifting for you.

  1. Download the Windows application and open it with Porting Kit
  2. Create a new port in Porting Kit with the following settings:
    • Engine: WS11WineCX21.2.0
    • Operating System: Windows 10
    • Windows Driver: XQuartz (X11)
    • Dependencies: None
  3. Run the install script StepMania-5.0.12-win32.exe with the following settings:
    • Install into the default directory C:\Games\StepMania 5*
    • Do not create a desktop shortcut
    • Launch the application

*Note that the default directory is important because the wrapper will look for the application in that directory. Don't download the app to a different directory on your computer like Z:\Downloads\StepMania 5.0.12.

Beneath the hood, the full stack that Porting Kit uses is as follows:

Software Purpose
Porting Kit A user-friendly frontend for creating Wineskin wrappers
Wineskin A user-friendly interface for packaging Windows applications and Wine components together
Wine The compatibility layer
StepMania The Windows application

The problem with this approach was that the dance pad inputs were not correctly recognized by the program. I thought this might have been a limitation with the compatibility layer. VMs and emulators are quite troublesome to set up, so I decided to try...


Attempt 2: Project OutFox

Permalink to “Attempt 2: Project OutFox”

Project OutFox is similar to StepMania, but it supports MacOS out of the box. Like the compatibility layer, this approach solves problem (1), leaving us with problem (2).

Problem (2) is either a hardware or software issue. There are a few reasons why I think it is a software problem:

  1. The dance pad was recognized in System Settings under Game Controllers
  2. The dance pad was also recognized in Project OutFox
  3. The dance pad inputs were recognized in the SDL2 Gamepad Tool

The problem is that the dance pad inputs are not correctly parsed on OutFox. A quick diagram:

Picture of the DDR input

I tested this in Options → Input & Calibration → Test Input. According to the OutFox controller guide, the issue seems to be that XInput just... does not work well on Mac.

Some miscellaneous things I tried:


Attempt 3: Enjoyable

Permalink to “Attempt 3: Enjoyable”

Okay. I tried really hard to find a native solution to the problem. But in the end, I suspect it was a bug in OutFox itself, as per this Reddit thread.

Last resort. Enjoyable.

Enjoyable maps the dance pad inputs to MacOS keyboard inputs. It's a bit of a hack, but it works.


  1. There was a MacOS version of StepMania, but it no longer runs on MacOS 10.15 "Catalina" or higher. ↩︎