3-D Printing Emulation Fabrication Hardware Modification Multimedia Software

Pimp my cade: Teenage Mutant Ninja Pinto

I am but a drop of water in an ocean full of Arcade1Up modders. Here, I tell the tale of journeying down the rabbit hole.

Control deck configuration

Unfortunately, the configuration utilities for the Ultimarc MUC are Windows-based. I downloaded and used the following software:

I normally use VMWare Fusion under macOS, which supports USB passthrough. To my surprise (and probably because the Ultimarc MUC shows up as a keyboard due to USB-HID) it wouldn’t pass over to a Windows Virtual Machine. VirtualBox on the other hand passed it through just fine, and I was able to make configuration changes (and test LEDs).

Do you want to save yourself some time, and not have to enter all of these manually?

  1. Download the WinIPAC V2 configuration file from the Teenage Mutant Ninja Terminals Git repository.
  2. Run WinIPAC V2.
  3. Menu: FileImport.
  4. Menu: FileForce board reconfigure.

At the time of writing this article, I have 52 inputs on my machine: 4 via GPIO for coin inserts, and 48 via the Ultimarc MUC as an encoder that presents itself as a keyboard. After sifting through MAME’s input source code, I’ve set the controller mappings as follows:

Player 1 (Leonardo)

FunctionKeyboard MappingHardware location
UpUp arrowUltimarc — 1UP
DownDown arrowUltimarc — 1DOWN
LeftLeft arrowUltimarc — 1LEFT
RightRight arrowUltimarc — 1RIGHT
Start1Ultimarc — 1START
Service9Ultimarc — 1COIN
Coin5Raspberry Pi — GPIO 26
Button 1Left controlUltimarc — 1SW1
Button 2Left altUltimarc — 1SW2
Button 3Space barUltimarc — 1SW3
Button 4Left shiftUltimarc — 1SW4
Button 5ZUltimarc — 1SW5
Button 6XUltimarc — 1SW6
Button 7CUltimarc — 1SW7
Button 8VUltimarc — 1SW8
FunctionKeyboard MappingHardware location

Player 2 (Michelangelo)

FunctionKeyboard MappingHardware location
UpRUltimarc — 2UP
DownFUltimarc — 2DOWN
LeftDUltimarc — 2LEFT
RightGUltimarc — 2RIGHT
Start2Ultimarc — 2START
Service0Ultimarc — 2COIN
Coin6Raspberry Pi — GPIO 19
Button 1AUltimarc — 2SW1
Button 2SUltimarc — 2SW2
Button 3QUltimarc — 2SW3
Button 4WUltimarc — 2SW4
Button 5BUltimarc — 2SW5
Button 6EUltimarc — 2SW6
Button 7HUltimarc — 2SW7
Button 8MUltimarc — 2SW8
FunctionKeyboard MappingHardware location

Player 3 (Donatello)

FunctionKeyboard MappingHardware location
UpIUltimarc — PLAYER3 : UP
DownKUltimarc — PLAYER3 : DN
LeftJUltimarc — PLAYER3 : LF
RightLUltimarc — PLAYER3 : RT
Start3Ultimarc — Player 1 & 2 Harness : 1A
Service-Ultimarc — Player 1 & 2 Harness : 1B
Coin7Raspberry Pi — GPIO 13
Button 1Right controlUltimarc — PLAYER3 : S1
Button 2Right shiftUltimarc — PLAYER3 : S2
Button 3EnterUltimarc — PLAYER3 : S3
Button 4NUltimarc — PLAYER3 : S4
FunctionKeyboard MappingHardware location

Player 4 (Raphael)

FunctionKeyboard MappingHardware location
UpOUltimarc — PLAYER4 : UP
DownPUltimarc — PLAYER4 : DN
LeftTUltimarc — PLAYER4 : LF
RightUUltimarc — PLAYER4 : RT
Start4Ultimarc — Player 1 & 2 Harness : 2A
Service=Ultimarc — Player 1 & 2 Harness : 2B
Coin8Raspberry Pi — GPIO 6
Button 1VUltimarc — PLAYER4 : S1
Button 2WUltimarc — PLAYER4 : S2
Button 3YUltimarc — PLAYER4 : S3
Button 4Right altUltimarc — PLAYER4 : S4
FunctionKeyboard MappingHardware location

In the video above, I mentioned “Shift Keys”. What this means is that when one button is held down (by default 1START) and another button is pressed (e.g. 1COIN) then an alternate key would be sent.

Example: I switched over to AdvanceMAME for running arcade ROMs. In order to exit the emulator since it’s not a part of Libretro, I needed the Escape key to be sent to it when I press the Start and Coin buttons on Player 1. So, the Shifted key for 1COIN on the Ultimarc MUC is set to Escape.

Shift keys

FunctionKeyboard Mapping / Shifted KeyHardware location
Exit emulatorEscape keyUltimarc — 1COIN
Service modeF2Ultimarc — 2COIN

As you run ROMs (and speaking from the perspective of MAME), you can adjust the global input values or the local input values by hitting the tab button on the keyboard. I set all of my controls at the global level, and then tweak each game’s inputs if the inputs aren’t entirely accurate. Smash TV is one such example, where I configured this 4-player control deck for the dual-joystick control of the game.

If you’re using MAME 2003 (RetroPie’s default) and if you ever want to delete the settings and start over, they’re located in /home/pi/RetroPie/roms/arcade/mame2003/cfg. The global values are stored as default.cfg, while as everything else is named after each of the ROMs that you run (with those values initially set from the global values the first time that you start them). That said, if you’re using AdvanceMAME, everything is stored in a flat-file that’s located at /opt/retropie/configs/mame-advmame/advmame.rc.

Leave a Reply

Your email address will not be published. Required fields are marked *