Hello, I'm adding USB game controller support to SIMH. My primary motivation is simulation of historical devices like Spacewar consoles, joysticks, buttons, etc. I have updated the PDP-6/KA10 simulator to use this, and I'm planning to do PDP-1 (Spacewar) and PDP-11 (Dazzle Dart) next.
I'm building on the APIs provided by the SDL2 library. In this API, a game controller reports events for some number of axes and buttons. An axis is an analog value, typically for a lever. Each joystick on a device has two axes. The API I added to sim_video.h looks like this: typedef void (*VID_GAMEPAD_CALLBACK)(int, int, int); t_stat vid_register_gamepad_motion_callback (VID_GAMEPAD_CALLBACK); t_stat vid_register_gamepad_button_callback (VID_GAMEPAD_CALLBACK); A SIMH simulator must first call vid_open, and can then register to receive game controller events. When vid_close is called, all callbacks are unregistered. More than one callback can be registered; the maximum is currently 10. When a game controller reports an event, the corresponding callback will be called with three values. For a motion event, these are: 1. The device ID. 2. The axis on this device. 3. The value, from -32768 to 32767. For a button event: 1. The device ID. 2. The button on this device. 3. The state, 0 for released and 1 for pressed. The device ID, axis, and button are all enumerated starting from 0. _______________________________________________ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh