X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=frontend%2Flibretro.c;h=a8895d83b9709dfe985bbf747f60a8eb5189d8eb;hb=996dfb25c3a7ef8a485c3ce394a532cb0ee2e5c2;hp=504f50781eb47097e335821a067b8a03b5fb3810;hpb=8a60e610f2f7d6421077b7bd6e6aab075276ef63;p=pcsx_rearmed.git diff --git a/frontend/libretro.c b/frontend/libretro.c index 504f5078..a8895d83 100644 --- a/frontend/libretro.c +++ b/frontend/libretro.c @@ -59,18 +59,6 @@ #define INTERNAL_FPS_SAMPLE_PERIOD 64 -#ifdef DRC_DISABLE -int stop; -u32 next_interupt; -u32 event_cycles[PSXINT_COUNT]; -int cycle_multiplier; -int new_dynarec_hacks; - -void new_dyna_before_save(void) {} -void new_dyna_after_save(void) {} -void new_dyna_freeze(void *f, int i) {} -#endif - //hack to prevent retroarch freezing when reseting in the menu but not while running with the hot key static int rebootemu = 0; @@ -102,6 +90,7 @@ static int show_advanced_gpu_peops_settings = -1; static int show_advanced_gpu_unai_settings = -1; #endif static int show_other_input_settings = -1; +static float mouse_sensitivity = 1.0f; static unsigned previous_width = 0; static unsigned previous_height = 0; @@ -124,6 +113,7 @@ int in_type[8] = { int in_analog_left[8][2] = { { 127, 127 }, { 127, 127 }, { 127, 127 }, { 127, 127 }, { 127, 127 }, { 127, 127 }, { 127, 127 }, { 127, 127 } }; int in_analog_right[8][2] = { { 127, 127 }, { 127, 127 }, { 127, 127 }, { 127, 127 }, { 127, 127 }, { 127, 127 }, { 127, 127 }, { 127, 127 } }; unsigned short in_keystate[PORTS_NUMBER]; +int in_mouse[8][2]; int multitap1 = 0; int multitap2 = 0; int in_enable_vibration = 1; @@ -607,6 +597,8 @@ static void update_controller_port_variable(unsigned port) in_type[port] = PSE_PAD_TYPE_NEGCON; else if (strcmp(var.value, "guncon") == 0) in_type[port] = PSE_PAD_TYPE_GUNCON; + else if (strcmp(var.value, "mouse") == 0) + in_type[port] = PSE_PAD_TYPE_MOUSE; else if (strcmp(var.value, "none") == 0) in_type[port] = PSE_PAD_TYPE_NONE; // else 'default' case, do nothing @@ -2117,6 +2109,13 @@ static void update_variables(bool in_flight) } #endif /* NEW_DYNAREC */ + var.value = NULL; + var.key = "pcsx_rearmed_input_sensitivity"; + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + mouse_sensitivity = atof(var.value); + } + var.key = "pcsx_rearmed_show_other_input_settings"; var.value = NULL; @@ -2405,6 +2404,32 @@ static void update_input_negcon(int port, int ret) in_analog_left[port][1] = get_analog_button(ret, input_state_cb, port, RETRO_DEVICE_ID_JOYPAD_L); } +static void update_input_mouse(int port, int ret) +{ + float raw_x = input_state_cb(port, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_X); + float raw_y = input_state_cb(port, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_Y); + + int x = (int)roundf(raw_x * mouse_sensitivity); + int y = (int)roundf(raw_y * mouse_sensitivity); + + if (x > 127) x = 127; + else if (x < -128) x = -128; + + if (y > 127) y = 127; + else if (y < -128) y = -128; + + in_mouse[port][0] = x; /* -128..+128 left/right movement, 0 = no movement */ + in_mouse[port][1] = y; /* -128..+128 down/up movement, 0 = no movement */ + + /* left mouse button state */ + if (input_state_cb(port, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_LEFT)) + in_keystate[port] |= 1 << 11; + + /* right mouse button state */ + if (input_state_cb(port, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_RIGHT)) + in_keystate[port] |= 1 << 10; +} + static void update_input(void) { // reset all keystate, query libretro for keystate @@ -2440,6 +2465,9 @@ static void update_input(void) case PSE_PAD_TYPE_NEGCON: update_input_negcon(i, ret); break; + case PSE_PAD_TYPE_MOUSE: + update_input_mouse(i, ret); + break; default: // Query digital inputs for (j = 0; j < RETRO_PSX_MAP_LEN; j++) @@ -2857,3 +2885,17 @@ void SysPrintf(const char *fmt, ...) if (log_cb) log_cb(RETRO_LOG_INFO, "%s", msg); } + +/* Prints debug-level logs */ +void SysDLog(const char *fmt, ...) +{ + va_list list; + char msg[512]; + + va_start(list, fmt); + vsprintf(msg, fmt, list); + va_end(list); + + if (log_cb) + log_cb(RETRO_LOG_DEBUG, "%s", msg); +}