This repository contains test programs for using non-standard controllerw on the SEGA Mega Drive (Genesis in the United States). These are primarily based on the Mouse tutorial at the Plutiedev website, an invaluable resource for Mega Drive developement. I just cobbled together some glue code to put the mouse values on the screen, and then retrofited the code to also work with the Saturn 3D Pad (Multi-Controller in Japan*). These examples can be compiled with the BasiEgaXorz compiler. Note that if you are launching from an Everdrive, you will need to plug in a standard controller to navigate the menu and then remove and replace with the device you are testing once the program has loaded. Special thanks to Plutie, Wafer, and FRS for poineering the exciting world of plugging Saturn controllers into places where they do not belong.
*Multi-Controller is often shortened to Marucon, hence the name of the 3D Pad test program. I used it because some programming environments become Very Unhappy when variables start with numbers and not letters. Additionally, it is incredibly fun to say.
Did you know that the input technology from the SG-1000 to the Saturn is largely unchanged? All of their controllers use the same seven signal pins- up, down, left, right, trigger "A," trigger B, and trigger "H." Starting with the international version of the Master System, a game programmer could instead set TL and/or TH as output lines instead. This opened up a whole new world as now the game could tell the controller what it wanted, meaning that more than seven inputs could be supported. At first it was used as a basic multiplexer for the 3 and 6-button, but later on SEGA implemented a three-line parrallel handshake protocol so that more complicated devices such as keyboards, mice, and analog sticks could be supported. The Saturn has a different plug design but all of the same digital lines are there, meaning that with an adapter, Saturn perephrials can be plugged into the SMS/MD and vice versa.
Unfortunately you can't just build an adapter and play any game with any controller, as the software needs to be specifically programmed for use with any given controller. Interestingly enough, Saturn games programmed with the SGL library are capable of reading Mega Drive controllers just fine. Additionally, brilliant modern developers have added Saturn controller support to new original games as well as hacks of classic games. It also just so happens that the Mega Drive and Saturn mouse are both electronically identical and with the right adapter can be used with all supported software on both platforms. Now you're playing with power!