@@ -431,32 +431,33 @@ static bool input_test_file_read(const char* file_path)
431431static 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
462463static 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
559565unsigned 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
640645static 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
773777void 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
881888void 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