The Philips CD-i was not popular upon its launch in 1991, and is barely acknowledged today. In the opinion of [MattKC], it had a particularly poor selection of controllers, too, and it’s often hard to find used examples anyway. To rectify this situation, he whipped up an adapter to let him use Sega Genesis controllers instead.
The benefit of the Genesis controller is that it uses DB-9 connectors that are readily available, and it’s got a simple pinout that is compatible with the Atari joystick port, too. It makes interfacing the controllers supremely easy. Converting the controllers required using a Arduino Pro Micro to read the Genesis pad and translate it into something suitable for the CD-i.
On the Sega controller side, the microcontroller just has to strobe one pin while reading the state of others to determine what all the buttons are doing. The CD-i, however, expects a serial data stream from the original Philips controllers. Thus, the microcontroller is set up to poll the Genesis controller, and then translate this into the serial commands for the CD-i. It gets a little complicated, because the CD-i wasn’t really built for game controllers, but mouse-like inputs instead. But it’s not too hard to get things working once you understand what the weird Philips console is looking for.
There aren’t really any good games on the CD-i, so this isn’t a project that the retro gaming masses will be flocking to. Still, if you have a CD-i and you want to hook up some controllers on the cheap, this might come in handy. Alternatively, you could also try the BlueRetro project.

The Apprentice is an, um, cute cartoonish platformer game. 😇