@@ -66,6 +66,12 @@ static bool allow_up_down = false;
6666static bool allow_soft_reset = false ;
6767static int cdrom_bios = 0 ;
6868static bool deterministic_netplay = false ;
69+ static bool lowpass_filter = false ;
70+ static float lowpass_intensity = 1 .0f ;
71+ static float lowpass_cutoff_mhz = 5 .0f ;
72+ static bool lowpass_speed_536 = false ;
73+ static bool lowpass_speed_716 = true ;
74+ static bool lowpass_speed_108 = true ;
6975
7076static bool input_updated = false ;
7177static bool libretro_supports_bitmasks;
@@ -648,6 +654,12 @@ static void set_variabless(void)
648654 { " geargrafx_scanline_start" , " Scanline Start (Manual); 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|0|1|2" },
649655 { " geargrafx_scanline_end" , " Scanline End (Manual); 241|220|221|222|223|224|225|226|227|228|229|230|231|232|233|234|235|236|237|238|239|240" },
650656 { " geargrafx_composite_colors" , " Composite Colors; Disabled|Enabled" },
657+ { " geargrafx_lowpass_filter" , " Video LPF; Disabled|Enabled" },
658+ { " geargrafx_lowpass_intensity" , " Video LPF Intensity; 100|0|10|20|30|40|50|60|70|80|90|100" },
659+ { " geargrafx_lowpass_cutoff" , " Video LPF Cutoff; 5.0 MHz|3.0 MHz|3.5 MHz|4.0 MHz|4.5 MHz|5.0 MHz|5.5 MHz|6.0 MHz|6.5 MHz|7.0 MHz" },
660+ { " geargrafx_lowpass_speed_536" , " Video LPF HuC6270 5.36 MHz; Disabled|Enabled" },
661+ { " geargrafx_lowpass_speed_716" , " Video LPF HuC6270 7.16 MHz; Enabled|Disabled" },
662+ { " geargrafx_lowpass_speed_108" , " Video LPF HuC6270 10.8 MHz; Enabled|Disabled" },
651663 { " geargrafx_no_sprite_limit" , " No Sprite Limit; Disabled|Enabled" },
652664 { " geargrafx_backup_ram" , " Backup RAM (restart); Enabled|Disabled" },
653665 { " geargrafx_deterministic_netplay" , " Deterministic Netplay; Disabled|Enabled" },
@@ -800,6 +812,62 @@ static void check_variables(void)
800812 core->GetHuC6260 ()->SetPalette (strcmp (var.value , " Enabled" ) == 0 ? 1 : 0 );
801813 }
802814
815+ var.key = " geargrafx_lowpass_filter" ;
816+ var.value = NULL ;
817+
818+ if (environ_cb (RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value )
819+ {
820+ lowpass_filter = (strcmp (var.value , " Enabled" ) == 0 );
821+ }
822+
823+ var.key = " geargrafx_lowpass_intensity" ;
824+ var.value = NULL ;
825+
826+ if (environ_cb (RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value )
827+ {
828+ int intensity = atoi (var.value );
829+ if (intensity < 0 || intensity > 100 )
830+ intensity = 100 ;
831+ lowpass_intensity = (float )intensity / 100 .0f ;
832+ }
833+
834+ var.key = " geargrafx_lowpass_cutoff" ;
835+ var.value = NULL ;
836+
837+ if (environ_cb (RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value )
838+ {
839+ lowpass_cutoff_mhz = (float )atof (var.value );
840+ if (lowpass_cutoff_mhz < 3 .0f || lowpass_cutoff_mhz > 7 .0f )
841+ lowpass_cutoff_mhz = 5 .0f ;
842+ }
843+
844+ var.key = " geargrafx_lowpass_speed_536" ;
845+ var.value = NULL ;
846+
847+ if (environ_cb (RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value )
848+ {
849+ lowpass_speed_536 = (strcmp (var.value , " Enabled" ) == 0 );
850+ }
851+
852+ var.key = " geargrafx_lowpass_speed_716" ;
853+ var.value = NULL ;
854+
855+ if (environ_cb (RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value )
856+ {
857+ lowpass_speed_716 = (strcmp (var.value , " Enabled" ) == 0 );
858+ }
859+
860+ var.key = " geargrafx_lowpass_speed_108" ;
861+ var.value = NULL ;
862+
863+ if (environ_cb (RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value )
864+ {
865+ lowpass_speed_108 = (strcmp (var.value , " Enabled" ) == 0 );
866+ }
867+
868+ core->GetHuC6260 ()->SetLowPassFilter (lowpass_filter, lowpass_intensity, lowpass_cutoff_mhz,
869+ lowpass_speed_536, lowpass_speed_716, lowpass_speed_108);
870+
803871 var.key = " geargrafx_backup_ram" ;
804872 var.value = NULL ;
805873
0 commit comments