Files
libretroadmin e6c914df98 USB: Perfect Pool's trackball and table camera
A Python 1 game in Perfect Pool's I/O mode now gets the two USB devices
the cabinet has, in place of whatever the ports are set to: a trackball
on port 0 and the table camera on port 1. The trackball is the HID mouse
moved as Reliquary moves it, half the pointer's motion with the half
counts carried over and none while the left button is held; the first
pad's left stick rolls it as well, for players without a mouse. The
camera (usb-perfect-pool/ppcam.c, C89, after Reliquary's) is the Cypress
EZ-USB FX the game downloads its 8051 firmware into: vendor request 0xa0
reads and writes the firmware RAM, letting the reset latch go with
firmware in brings it back on the bus, and its endpoints answer with
nothing seen.

The camera's 64 KiB of firmware RAM rides in the USB savestate block
past the port slots, only for a session with the camera, so the block
of every other game keeps its size. tests/usbstate checks both devices,
the trackball's scaling and the camera's RAM through a state and a bus
reset.
2026-11-08 21:05:58 +01:00
..