summaryrefslogtreecommitdiff
path: root/input.c
diff options
context:
space:
mode:
Diffstat (limited to 'input.c')
-rw-r--r--input.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/input.c b/input.c
index 06a8f8a..51e70cf 100644
--- a/input.c
+++ b/input.c
@@ -343,10 +343,33 @@ void init_input()
sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG);
}
-#endif
+#elif defined(__LIBRETRO__)
+
+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;
+}
-#if defined(PC_BUILD)
+#elif defined(PC_BUILD)
u32 key_map(SDLKey key_sym)
{