======= 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,
* it's
* 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.
* Creation: We created a new text file at: /userdata/system/configs/retroarch/config/MAME/missile.cfg
* The Code: You added these two critical lines:
* input_player1_mouse_index = "0" (Points to the Trackball)
* input_libretro_device_p1 = "3" (Tells MAME to treat Player 1 as a "Mouse" device)
[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:
* Navigate to the same folder: /userdata/system/configs/retroarch/config/MAME/
* Copy missile.cfg and Paste it as tempest.cfg.
* Copy missile.opt and Paste it as tempest.opt.
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)