comparison io.h @ 2235:93918a6a8ab7

Initial support for Sega multi-tap
author Michael Pavone <pavone@retrodev.com>
date Tue, 13 Sep 2022 20:08:26 -0700
parents 0f54a898db03
children 1978bd770023
comparison
equal deleted inserted replaced
2234:b6fdedd3b070 2235:93918a6a8ab7
27 IO_GENERIC, 27 IO_GENERIC,
28 IO_GENERIC_SERIAL, 28 IO_GENERIC_SERIAL,
29 IO_HEARTBEAT_TRAINER 29 IO_HEARTBEAT_TRAINER
30 }; 30 };
31 31
32 typedef struct { 32 typedef struct io_port io_port;
33 struct io_port {
33 union { 34 union {
34 struct { 35 struct {
35 uint32_t timeout_cycle; 36 uint32_t timeout_cycle;
36 uint16_t th_counter; 37 uint16_t th_counter;
37 uint16_t gamepad_num; 38 uint16_t gamepad_num;
74 uint8_t status; 75 uint8_t status;
75 uint8_t device_num; 76 uint8_t device_num;
76 uint8_t cmd; 77 uint8_t cmd;
77 uint8_t remaining_bytes; 78 uint8_t remaining_bytes;
78 } heartbeat_trainer; 79 } heartbeat_trainer;
80 struct {
81 io_port *ports;
82 uint32_t ready_cycle;
83 uint8_t tr_counter;
84 uint8_t tap_num;
85 uint8_t device_ids[4];
86 uint8_t data[4];
87 uint8_t cur_port;
88 uint8_t port_start;
89 uint8_t reset_state;
90 } multitap;
79 } device; 91 } device;
80 uint8_t output; 92 uint8_t output;
81 uint8_t control; 93 uint8_t control;
82 uint8_t input[3]; 94 uint8_t input[3];
83 uint32_t slow_rise_start[8]; 95 uint32_t slow_rise_start[8];
90 uint8_t serial_transmitting; 102 uint8_t serial_transmitting;
91 uint8_t serial_in; 103 uint8_t serial_in;
92 uint8_t serial_receiving; 104 uint8_t serial_receiving;
93 uint8_t serial_ctrl; 105 uint8_t serial_ctrl;
94 uint8_t device_type; 106 uint8_t device_type;
95 } io_port; 107 };
96 108
97 typedef struct { 109 typedef struct {
98 io_port ports[3]; 110 io_port ports[3];
99 } sega_io; 111 } sega_io;
100 112