static int16_t netplay_input_state(netplay_t *netplay, bool port, unsigned device, unsigned idx, unsigned id) { size_t ptr = netplay->is_replay ? netplay->tmp_ptr : PREV_PTR(netplay->self_ptr); const uint32_t *curr_input_state = netplay->buffer[ptr].self_state; if (netplay->port == (netplay_flip_port(netplay, port) ? 1 : 0)) { if (netplay->buffer[ptr].is_simulated) curr_input_state = netplay->buffer[ptr].simulated_input_state; else curr_input_state = netplay->buffer[ptr].real_input_state; } switch (device) { case RETRO_DEVICE_JOYPAD: return ((1 << id) & curr_input_state[0]) ? 1 : 0; case RETRO_DEVICE_ANALOG: { uint32_t state = curr_input_state[1 + idx]; return (int16_t)(uint16_t)(state >> (id * 16)); } default: return 0; } }
static int16_t netplay_input_state(netplay_t *netplay, bool port, unsigned device, unsigned idx, unsigned id) { size_t ptr = netplay->is_replay ? netplay->tmp_ptr : PREV_PTR(netplay->self_ptr); uint16_t curr_input_state = netplay->buffer[ptr].self_state; if (netplay->port == (netplay_flip_port(netplay, port) ? 1 : 0)) { if (netplay->buffer[ptr].is_simulated) curr_input_state = netplay->buffer[ptr].simulated_input_state; else curr_input_state = netplay->buffer[ptr].real_input_state; } return ((1 << id) & curr_input_state) ? 1 : 0; }
int16_t netplay_input_state(netplay_t *handle, bool port, unsigned device, unsigned index, unsigned id) { uint16_t input_state = 0; size_t ptr = handle->is_replay ? handle->tmp_ptr : PREV_PTR(handle->self_ptr); port = netplay_flip_port(handle, port); if ((port ? 1 : 0) == handle->port) { if (handle->buffer[ptr].is_simulated) input_state = handle->buffer[ptr].simulated_input_state; else input_state = handle->buffer[ptr].real_input_state; } else input_state = handle->buffer[ptr].self_state; return ((1 << id) & input_state) ? 1 : 0; }