TRACK BALL
THIS WAS THE HARDEST PART OF GETTING EVERYTHING RUNNING AND I SPENT 3+ DAYS WORKING THE ISSUE
YOU WILL NEED A KEYBOARD
NOTE 1: we're going to do everything command line, but if you need retroarch menu,
NOTE 2: We need these instructions because by default, Missile Command and Tempest are looking for LIGHTGUN, not mouse, so we need to enable the mouse.
Score 1 for Gemini.. ChatGPT just fell apart.
Before we start, and before firing up the game,
we bring up the game in our MAME menu,
then long press Button 1 to bring up a menu.
Move down to “Advanced Game Options”.
Emulator will be LIBRETRO:MAME for Phoenix and Missle Command,
and LIBRETRO: MAME078PLUS for Centipede.
Step 1: Identifying the Hardware
The system sees every USB device (Keyboard, PS3 controller, Xinmotec, Trackball) and gives it a “Mouse Index” number.
Command: cat /proc/bus/input/devices
Discovery: You found the Cypress Semiconductor (the trackball) and saw Handlers=mouse0.
Result: This told us your magic number is Index 0.
Step 2: Enabling the "Engine" (.opt file)
The Emulator Core (MAME) has to be told that it is allowed to use a mouse at all.
Location: /userdata/system/configs/retroarch/config/MAME/missile.opt
Key Setting: mame_mouse_enable = “enabled”
Result: This turned on the “ears” of the emulator so it could hear mouse signals.
[root@BATOCERA /userdata/…troarch/config/MAME]# tail missile.opt
mame_media_type = "rom"
mame_mouse_enable = "enabled"
mame_read_config = "enabled"
Step 3: Mapping the "Plumbing" (.cfg file)
Because the menu wasn't saving, we manually created a “Game Override” file. This tells RetroArch exactly which hardware to plug into the “Player 1” slot.
[root@BATOCERA ~]# tail /userdata/system/configs/retroarch/config/MAME/missile.cfg
input_player1_mouse_index = "0"
input_libretro_device_p1 = "3"
Step 4: Applying this to Tempest (The Spinner)
Tempest uses a spinner, but in MAME, a spinner is just the X-axis (left/right) of a mouse. To fix Tempest without doing all that work again:
Launch Tempest. It will now use the same “Index 0” logic.
Summary Table for Future Reference
| File Type | Purpose | Key Setting |
| .opt | Core Options | mame_mouse_enable = “enabled” |
| .cfg | Input Mapping | input_player1_mouse_index = “0” |
| .cfg | Device Type | input_libretro_device_p1 = “3” |
[root@BATOCERA /userdata/…troarch/config/MAME]# ls -al
total 36
drwxr-xr-x 2 root root 4096 Jan 29 14:01 .
drwxr-xr-x 4 root root 4096 Jan 28 18:01 ..
-rw-r--r-- 1 root root 11402 Jan 29 13:42 MAME.cfg
-rw-r--r-- 1 root root 63 Jan 29 13:50 missile.cfg
-rw-r--r-- 1 root root 817 Jan 29 09:15 missile.opt
-rw-r--r-- 1 root root 63 Jan 29 14:01 tempest.cfg
-rw-r--r-- 1 root root 817 Jan 29 14:01 tempest.opt
Step 5: Map the keys in the game
Using the keyboard, press “Tab” and a menu will pop up.
You will use the arrow keys to navigate
Press 'Z' to choose a menu item, in this case, “Input Assignments (this system)”
“Del” anything for P1 Button 1,2,3 and P2 Button 1,2,3 and TrackBall Analog
Press 'Z' for Button 1. When presented with '< >' press the button on your console that you want
Repeat for buttons 2 and 3
Move down to “Trackball X Analog” and press 'Z'
Move your trackball in the X axis
Repeat for “Trackball Y Analog” moving along the Y axis
Move down to “Return to Previous Menu” and choose “Analog Input Adjustments”
Currently (subject to change or change as needed), all values are 30. Only “Trackball X Reverse” is set to off.
Back out of each menu when you're done. The settings will automatically save. Do the above for each game using LIBRETRO (in my case, Missile Command and Tempest)