X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=frontend%2Flibretro.c;h=5e5d88c662cb0aa623f431295428035fdda88522;hb=79f29e0a90de800f4dc8b07c4ff4957e6ed6e7f3;hp=f96ccf26d623deca0b39ac6fd007ba99e8576000;hpb=46486658dc234b657802a44ce99c99a9cb7ddcaa;p=pcsx_rearmed.git diff --git a/frontend/libretro.c b/frontend/libretro.c index f96ccf26..5e5d88c6 100644 --- a/frontend/libretro.c +++ b/frontend/libretro.c @@ -57,7 +57,7 @@ static retro_input_poll_t input_poll_cb; static retro_input_state_t input_state_cb; static retro_environment_t environ_cb; static retro_audio_sample_batch_t audio_batch_cb; -static struct retro_rumble_interface rumble; +static retro_set_rumble_state_t rumble_cb; static struct retro_log_callback logging; static retro_log_printf_t log_cb; @@ -430,10 +430,13 @@ void pl_timing_prepare(int is_pal) void plat_trigger_vibrate(int pad, int low, int high) { - if(in_enable_vibration) + if (!rumble_cb) + return; + + if (in_enable_vibration) { - rumble.set_rumble_state(pad, RETRO_RUMBLE_STRONG, high << 8); - rumble.set_rumble_state(pad, RETRO_RUMBLE_WEAK, low ? 0xffff : 0x0); + rumble_cb(pad, RETRO_RUMBLE_STRONG, high << 8); + rumble_cb(pad, RETRO_RUMBLE_WEAK, low ? 0xffff : 0x0); } } @@ -481,7 +484,7 @@ void retro_set_environment(retro_environment_t cb) #ifndef DRC_DISABLE { "pcsx_rearmed_drc", "Dynamic recompiler; enabled|disabled" }, #endif -#if defined(__ARM_NEON__) && !defined(__aarch64__) +#ifdef __ARM_NEON__ { "pcsx_rearmed_neon_interlace_enable", "Enable interlacing mode(s); disabled|enabled" }, { "pcsx_rearmed_neon_enhancement_enable", "Enhanced resolution (slow); disabled|enabled" }, { "pcsx_rearmed_neon_enhancement_no_main", "Enhanced resolution speed hack; disabled|enabled" }, @@ -1883,6 +1886,7 @@ static int init_memcards(void) void retro_init(void) { + struct retro_rumble_interface rumble; const char *bios[] = { "SCPH101", "SCPH7001", "SCPH5501", "SCPH1001", "scph101", "scph7001", "scph5501", "scph1001" @@ -1962,7 +1966,10 @@ void retro_init(void) environ_cb(RETRO_ENVIRONMENT_GET_CAN_DUPE, &vout_can_dupe); environ_cb(RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE, &disk_control); - environ_cb(RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE, &rumble); + + rumble_cb = NULL; + if (environ_cb(RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE, &rumble)) + rumble_cb = rumble.set_rumble_state; /* Set how much slower PSX CPU runs * 100 (so that 200 is 2 times) * we have to do this because cache misses and some IO penalties