Skip to content

Commit 8a72e2b

Browse files
committed
Remote RetroPad:
- Core option variable check in retro_run - Reset validated states on reset - Tab cleanups
1 parent d3c8160 commit 8a72e2b

1 file changed

Lines changed: 56 additions & 44 deletions

File tree

cores/libretro-net-retropad/net_retropad_core.c

Lines changed: 56 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -431,32 +431,33 @@ static bool input_test_file_read(const char* file_path)
431431
static void sensors_init(void)
432432
{
433433
struct retro_sensor_interface sensor_interface = {0};
434-
if (NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_SENSOR_INTERFACE, &sensor_interface)) {
435-
434+
if (NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_SENSOR_INTERFACE, &sensor_interface))
435+
{
436436
NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_DEBUG,"[Remote RetroPad] Sensor interface supported, enabling.\n");
437+
NETRETROPAD_CORE_PREFIX(sensor_get_input_cb) = sensor_interface.get_sensor_input;
438+
NETRETROPAD_CORE_PREFIX(sensor_set_state_cb) = sensor_interface.set_sensor_state;
437439

438-
NETRETROPAD_CORE_PREFIX(sensor_get_input_cb) = sensor_interface.get_sensor_input;
439-
NETRETROPAD_CORE_PREFIX(sensor_set_state_cb) = sensor_interface.set_sensor_state;
440-
441-
442-
if (NETRETROPAD_CORE_PREFIX(sensor_set_state_cb) && NETRETROPAD_CORE_PREFIX(sensor_get_input_cb)) {
443-
444-
if (NETRETROPAD_CORE_PREFIX(sensor_set_state_cb)(0, RETRO_SENSOR_ACCELEROMETER_ENABLE, EVENT_RATE)) {
445-
tilt_sensor_enabled = true;
440+
if (NETRETROPAD_CORE_PREFIX(sensor_set_state_cb) && NETRETROPAD_CORE_PREFIX(sensor_get_input_cb))
441+
{
442+
if (NETRETROPAD_CORE_PREFIX(sensor_set_state_cb)(0, RETRO_SENSOR_ACCELEROMETER_ENABLE, EVENT_RATE))
443+
{
444+
tilt_sensor_enabled = true;
446445
NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_DEBUG,"[Remote RetroPad] Tilt sensor enabled.\n");
447-
}
446+
}
448447

449-
if (NETRETROPAD_CORE_PREFIX(sensor_set_state_cb)(0, RETRO_SENSOR_GYROSCOPE_ENABLE, EVENT_RATE)) {
450-
gyro_sensor_enabled = true;
448+
if (NETRETROPAD_CORE_PREFIX(sensor_set_state_cb)(0, RETRO_SENSOR_GYROSCOPE_ENABLE, EVENT_RATE))
449+
{
450+
gyro_sensor_enabled = true;
451451
NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_DEBUG,"[Remote RetroPad] Gyro sensor enabled.\n");
452-
}
452+
}
453453

454-
if (NETRETROPAD_CORE_PREFIX(sensor_set_state_cb)(0, RETRO_SENSOR_ILLUMINANCE_ENABLE, EVENT_RATE)) {
455-
lux_sensor_enabled = true;
454+
if (NETRETROPAD_CORE_PREFIX(sensor_set_state_cb)(0, RETRO_SENSOR_ILLUMINANCE_ENABLE, EVENT_RATE))
455+
{
456+
lux_sensor_enabled = true;
456457
NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_DEBUG,"[Remote RetroPad] Lux sensor enabled.\n");
457-
}
458-
}
459-
}
458+
}
459+
}
460+
}
460461
}
461462

462463
static void draw_background(void)
@@ -467,7 +468,9 @@ static void draw_background(void)
467468
/* Body is 255 * 142 within the 320 * 240 frame */
468469
uint16_t *pixel = frame_buf + 49 * 320 + 32;
469470

470-
if (current_screen == NETRETROPAD_SCREEN_PAD || current_screen == NETRETROPAD_SCREEN_SENSORS)
471+
if ( current_screen == NETRETROPAD_SCREEN_PAD
472+
|| current_screen == NETRETROPAD_SCREEN_SENSORS)
473+
{
471474
for (rle = 0; rle < sizeof(body); )
472475
{
473476
uint16_t color = 0;
@@ -482,7 +485,9 @@ static void draw_background(void)
482485

483486
pixel += 65;
484487
}
488+
}
485489
else if (current_screen == NETRETROPAD_SCREEN_KEYBOARD)
490+
{
486491
for (rle = 0; rle < sizeof(keyboard_body); )
487492
{
488493
uint16_t color = 0;
@@ -497,6 +502,7 @@ static void draw_background(void)
497502

498503
pixel += 65;
499504
}
505+
}
500506
}
501507
}
502508

@@ -553,7 +559,7 @@ void NETRETROPAD_CORE_PREFIX(retro_deinit)(void)
553559
NETRETROPAD_CORE_PREFIX(sensor_set_state_cb)(0, RETRO_SENSOR_ACCELEROMETER_DISABLE, EVENT_RATE);
554560
NETRETROPAD_CORE_PREFIX(sensor_set_state_cb)(0, RETRO_SENSOR_GYROSCOPE_DISABLE, EVENT_RATE);
555561
NETRETROPAD_CORE_PREFIX(sensor_set_state_cb)(0, RETRO_SENSOR_ILLUMINANCE_DISABLE, EVENT_RATE);
556-
}
562+
}
557563
}
558564

559565
unsigned NETRETROPAD_CORE_PREFIX(retro_api_version)(void)
@@ -634,7 +640,6 @@ static unsigned set_pixel(unsigned x, unsigned y, unsigned color)
634640
old_color = *pixel;
635641
*pixel = color;
636642
return old_color;
637-
638643
}
639644

640645
static void retropad_update_input(void)
@@ -652,7 +657,7 @@ static void retropad_update_input(void)
652657
struct descriptor *desc = descriptors[i];
653658

654659
/* Only query one mouse type device */
655-
if ( i > 2 && i != mouse_type)
660+
if (i > 2 && i != mouse_type)
656661
continue;
657662

658663
/* Go through range of ports/indices/IDs */
@@ -688,7 +693,7 @@ static void retropad_update_input(void)
688693
/* Update state */
689694
desc->value[offset] = state;
690695

691-
if (i>2)
696+
if (i > 2)
692697
{
693698
/* NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_DEBUG, "Mouse state: %d %d %d (%d %d)\n",i,id, (int16_t)state,pointer_x,pointer_y); */
694699
if (mouse_type == NETRETROPAD_MOUSE || mouse_type == NETRETROPAD_LIGHTGUN_OLD)
@@ -714,7 +719,7 @@ static void retropad_update_input(void)
714719
pointer_y = (int16_t) large;
715720
}
716721
}
717-
else if (mouse_type == NETRETROPAD_POINTER || mouse_type == NETRETROPAD_LIGHTGUN)
722+
else if (mouse_type == NETRETROPAD_POINTER || mouse_type == NETRETROPAD_LIGHTGUN)
718723
{
719724
/* NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_DEBUG, "Pointer state: %d %d %d (%d %d)\n",i,id, (int16_t)state,pointer_x,pointer_y); */
720725
if (id == RETRO_DEVICE_ID_POINTER_X || id == RETRO_DEVICE_ID_LIGHTGUN_SCREEN_X)
@@ -725,7 +730,7 @@ static void retropad_update_input(void)
725730
}
726731

727732
/* Do not send extra descriptor state - RA side is not prepared to receive it */
728-
if (i>1)
733+
if (i > 1)
729734
continue;
730735

731736
/* Otherwise, attempt to send updated state */
@@ -755,7 +760,7 @@ static void open_UDP_socket(void)
755760
SOCKET_DOMAIN_INET,
756761
SOCKET_TYPE_DATAGRAM,
757762
SOCKET_PROTOCOL_UDP)) == SOCKET_ERROR)
758-
NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_INFO, "socket failed");
763+
NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_INFO, "Socket failed\n");
759764

760765
/* setup address structure */
761766
memset((char *) &si_other, 0, sizeof(si_other));
@@ -766,21 +771,20 @@ static void open_UDP_socket(void)
766771

767772
socket_set_target(&si_other, &in_target);
768773

769-
NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_INFO, "Server IP Address: %s\n" , server);
770-
774+
NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_INFO, "Server IP Address: %s\n", server);
771775
}
772776

773777
void NETRETROPAD_CORE_PREFIX(retro_set_environment)(retro_environment_t cb)
774778
{
775779
static const struct retro_variable vars[] = {
780+
{ "net_retropad_screen", "Screen; RetroPad|Keyboard|Sensor" },
781+
{ "net_retropad_pointer_test", "Pointer test; Off|Mouse|Pointer|Lightgun|Old lightgun" },
782+
{ "net_retropad_hide_analog_mismatch", "Hide mismatching analog button inputs; True|False" },
776783
{ "net_retropad_port", "Port; 55400|55401|55402|55403|55404|55405|55406|55407|55408|55409|55410|55411|55412|55413|55414|55415|55416|55417|55418|55419|55420" },
777784
{ "net_retropad_ip_octet1", "IP address part 1; 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221|222|223|224|225|226|227|228|229|230|231|232|233|234|235|236|237|238|239|240|241|242|243|244|245|246|247|248|249|250|251|252|253|254|255" },
778785
{ "net_retropad_ip_octet2", "IP address part 2; 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221|222|223|224|225|226|227|228|229|230|231|232|233|234|235|236|237|238|239|240|241|242|243|244|245|246|247|248|249|250|251|252|253|254|255" },
779786
{ "net_retropad_ip_octet3", "IP address part 3; 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221|222|223|224|225|226|227|228|229|230|231|232|233|234|235|236|237|238|239|240|241|242|243|244|245|246|247|248|249|250|251|252|253|254|255" },
780787
{ "net_retropad_ip_octet4", "IP address part 4; 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221|222|223|224|225|226|227|228|229|230|231|232|233|234|235|236|237|238|239|240|241|242|243|244|245|246|247|248|249|250|251|252|253|254|255" },
781-
{ "net_retropad_screen", "Start screen; Retropad|Keyboard tester|Sensor tester" },
782-
{ "net_retropad_hide_analog_mismatch", "Hide mismatching analog button inputs; True|False" },
783-
{ "net_retropad_pointer_test", "Pointer test; Off|Mouse|Pointer|Lightgun|Old lightgun" },
784788
{ NULL, NULL },
785789
};
786790
enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_RGB565;
@@ -825,7 +829,7 @@ static void netretropad_check_variables(void)
825829
port = atoi(port_var.value);
826830

827831
while (screen_var.value && !(
828-
(current_screen == NETRETROPAD_SCREEN_PAD && strstr(screen_var.value,"Retropad"))
832+
(current_screen == NETRETROPAD_SCREEN_PAD && strstr(screen_var.value,"RetroPad"))
829833
|| (current_screen == NETRETROPAD_SCREEN_KEYBOARD && strstr(screen_var.value,"Keyboard"))
830834
|| (current_screen == NETRETROPAD_SCREEN_SENSORS && strstr(screen_var.value,"Sensor"))))
831835
flip_screen();
@@ -876,6 +880,9 @@ void NETRETROPAD_CORE_PREFIX(retro_reset)(void)
876880
{
877881
netretropad_check_variables();
878882
open_UDP_socket();
883+
input_state_validated = 0;
884+
combo_state_validated = 0;
885+
memset(keyboard_state_validated, 0, RETROK_LAST);
879886
}
880887

881888
void NETRETROPAD_CORE_PREFIX(retro_run)(void)
@@ -887,6 +894,11 @@ void NETRETROPAD_CORE_PREFIX(retro_run)(void)
887894
uint32_t expected_input = 0;
888895
uint16_t *pixel = frame_buf + 49 * 320 + 32;
889896

897+
/* Core options */
898+
bool updated = false;
899+
if (NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_VARIABLE_UPDATE, &updated) && updated)
900+
netretropad_check_variables();
901+
890902
if (!current_frame && current_screen == NETRETROPAD_SCREEN_SENSORS)
891903
sensors_init();
892904

@@ -957,21 +969,21 @@ void NETRETROPAD_CORE_PREFIX(retro_run)(void)
957969
}
958970

959971
/* Accelerometer and gyroscope. */
960-
if (tilt_sensor_enabled)
972+
if (tilt_sensor_enabled)
961973
{
962-
tilt_sensor_values[0] = NETRETROPAD_CORE_PREFIX(sensor_get_input_cb)(0, RETRO_SENSOR_ACCELEROMETER_X);
963-
tilt_sensor_values[1] = NETRETROPAD_CORE_PREFIX(sensor_get_input_cb)(0, RETRO_SENSOR_ACCELEROMETER_Y);
964-
tilt_sensor_values[2] = NETRETROPAD_CORE_PREFIX(sensor_get_input_cb)(0, RETRO_SENSOR_ACCELEROMETER_Z);
965-
}
974+
tilt_sensor_values[0] = NETRETROPAD_CORE_PREFIX(sensor_get_input_cb)(0, RETRO_SENSOR_ACCELEROMETER_X);
975+
tilt_sensor_values[1] = NETRETROPAD_CORE_PREFIX(sensor_get_input_cb)(0, RETRO_SENSOR_ACCELEROMETER_Y);
976+
tilt_sensor_values[2] = NETRETROPAD_CORE_PREFIX(sensor_get_input_cb)(0, RETRO_SENSOR_ACCELEROMETER_Z);
977+
}
966978

967-
if (gyro_sensor_enabled)
979+
if (gyro_sensor_enabled)
968980
{
969-
gyro_sensor_values[0] = NETRETROPAD_CORE_PREFIX(sensor_get_input_cb)(0, RETRO_SENSOR_GYROSCOPE_X);
970-
gyro_sensor_values[1] = NETRETROPAD_CORE_PREFIX(sensor_get_input_cb)(0, RETRO_SENSOR_GYROSCOPE_Y);
971-
gyro_sensor_values[2] = NETRETROPAD_CORE_PREFIX(sensor_get_input_cb)(0, RETRO_SENSOR_GYROSCOPE_Z);
972-
}
981+
gyro_sensor_values[0] = NETRETROPAD_CORE_PREFIX(sensor_get_input_cb)(0, RETRO_SENSOR_GYROSCOPE_X);
982+
gyro_sensor_values[1] = NETRETROPAD_CORE_PREFIX(sensor_get_input_cb)(0, RETRO_SENSOR_GYROSCOPE_Y);
983+
gyro_sensor_values[2] = NETRETROPAD_CORE_PREFIX(sensor_get_input_cb)(0, RETRO_SENSOR_GYROSCOPE_Z);
984+
}
973985

974-
if (lux_sensor_enabled)
986+
if (lux_sensor_enabled)
975987
lux_sensor_value = NETRETROPAD_CORE_PREFIX(sensor_get_input_cb)(0, RETRO_SENSOR_ILLUMINANCE);
976988

977989
if (tilt_sensor_enabled || gyro_sensor_enabled || lux_sensor_enabled)

0 commit comments

Comments
 (0)