An Espressif ESP32 and Some Clever Coding Bring the Vintage "Computer Athlete" Back to Life
A 1990s minigame package to encourage owners of IBM compatibles to exercise is playable once more, thanks to some microcontroller magic.
Pseudonymous maker and vintage computing enthusiast "arpruss" has come up with a novel way to fulfill any exercise-related new year's resolutions you may have made: hooking up a modern exercise machine to a vintage piece of software dubbed Computer Athlete, running under emulation.
"Computer Athlete was a patented system by Robert Caruso and others that connected an exercise machine to minigames running on an IBM PC compatible computer in the late '90s," arpruss explains. "The minigames are walking as a robot on some planet, running, rowing, skiing, and biking. It may not be as much fun as Wii Fit, but it is a lot fun than just going on an exercise machine."
In Caruso's original, the software was linked to custom hand controllers and an optical sensor fitted to the exercise machine and communicating with the PC's serial port. With the software readily available on the Internet Archive but the hardware rather harder to find, apruss set about figuring out how to create a modern replacement β and link it to the original software running in the DOSBox emulator on a modern computer.
"My emulated setup uses DOSBox for emulation and an [Espressif] ESP32-based Bluetooth controller that connects to the exercise machine, with 3D printed hand controllers, a box with a reset button and a connection to the exercise machine's own rotation sensor," arpruss explains. "Pleasantly, Computer Athlete allowed using the joystick game port, and so the ESP32 (using Arduino [firmware]) emulates a gamepad which DOSBox automatically picked up by default."
The resulting recreation works similarly to the original, with only one problem: the need to introduce a way to switch between one- and two-signal rotation modes, to mimic how the original hardware worked or correct for too-fast operation. "To switch between one-signal and two-signal modes, just hold the reset button when starting up the ESP32," arpruss writes. "On startup, the device does one or two or two blinks of the LED to indicate which mode it's in. Additionally, the device blinks the LED (which normally indicates connection status) each time it sends a rotation signal, so you can check that the system is working."
The project is documented in full on Instructables; source code is available on GitHub under the permissive MIT license, while Computer Athlete is available to download from the Internet Archive.