diff options
Diffstat (limited to 'input.c')
-rw-r--r-- | input.c | 24 |
1 files changed, 23 insertions, 1 deletions
@@ -345,7 +345,29 @@ void init_input() #elif defined(__LIBRETRO__) -/* todo */ +static retro_input_state_t input_state_cb; +void retro_set_input_state(retro_input_state_t cb) { input_state_cb = cb; } + +u32 update_input(void) +{ +// return; + unsigned i; + uint32_t new_key = 0; + + if (!input_state_cb) + return 0; + + for (i = 0; i < sizeof(btn_map) / sizeof(map); i++) + new_key |= input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, btn_map[i].retropad) ? btn_map[i].gba : 0; + + if ((new_key | key) != key) + trigger_key(new_key); + + key = new_key; + io_registers[REG_P1] = (~key) & 0x3FF; + + return 0; +} #elif defined(PC_BUILD) |