[ This information was provided by Mark Howard ] Steering controllers. --------------------- These map a rotational gray code onto two of the joystick input direction channels. The other two lines are held high. Button ---> Joystick trigger. Grey code \ Joystick left and right / Held high \ Joystick up and down. / UDLR Rotating left 1100 1101<--| 1111 | 1110 | 1100---- ... etc UDLR Rotating right 1100 1110<--| 1111 | 1101 | 1100---- ... etc Note, that data from the controller can start from any code in the sequence. Trackball in joystick mode. -------------------------- Generates U, D, L, R as per a normal joystick. Both fire buttons mapped onto the single joystick trigger line. Trackball in trackball mode. ---------------------------- Again, both fire buttons mapped onto the joystick trigger line. Left/Right information mapped onto joystick L & R lines. Up/Down information mapped onto joystick U & D lines. LR Ball moving left 00 10<-| 00--- LR Ball moving right 01 11<-| 01--- UD Ball moving up 00 10<-| 00--- UD Ball moving down 01 11<-| 01--- Note that the sequence can start with either L/U at 0 or 1, but the direction indication bit R/D changes as soon as the trackball detects a direction change. The faster bit L/U toggles, the faster the ball is rolling. It is a good idea to check about 8 times during screen display (DLI on 8 bit Atari computers, part of display loop on VCS), and during vertical blank. Checking only during vblank will only allow the controlled item to move at scan rate/2, i.e. one pixel every two frames, and transitions will be missed, causing the item to SLOW DOWN when the ball is rotated faster!