This is an old revision of the document!
Table of Contents
TRACK BALL
THIS WAS THE HARDEST PART OF GETTING EVERYTHING RUNNING AND I SPENT 3+ DAYS WORKING THE ISSUE
This is for Tempest and Missile Command. Centipede picked up
Score 1 for Gemini.. ChatGPT just fell apart.
Phase 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.
Phase 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.
Phase 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: You 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)
Phase 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” |
