diff --git a/gfx/video_crt_switch.c b/gfx/video_crt_switch.c index 17a317cd85..dd33a79c8e 100644 --- a/gfx/video_crt_switch.c +++ b/gfx/video_crt_switch.c @@ -1,3 +1,21 @@ +/* CRT SwitchRes Core + * Copyright (C) 2018 Ben Templeman. + * + * RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2017 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . +*/ #include #include #include @@ -11,17 +29,17 @@ int first_run; float fly_aspect; void switch_res_core(int width, int height, float hz){ - // ben_core_hz float passed from with in void video_driver_monitor_adjust_system_rates(void) + /* ben_core_hz float passed from with in void video_driver_monitor_adjust_system_rates(void) */ ben_core_width = width; ben_core_height = height; ben_core_hz = hz; check_first_run(); - if (ben_tmp_height != ben_core_height || ben_core_width != ben_tmp_width){ // detect resolution change and switch + if (ben_tmp_height != ben_core_height || ben_core_width != ben_tmp_width){ /* detect resolution change and switch */ screen_setup_aspect(width,height); } - if (video_driver_get_aspect_ratio() != fly_aspect){ //check aspect is correct else change + if (video_driver_get_aspect_ratio() != fly_aspect){ /* check aspect is correct else change */ video_driver_set_aspect_ratio_value((float)fly_aspect); ben_poke_video(); } @@ -29,7 +47,7 @@ void switch_res_core(int width, int height, float hz){ } -void check_first_run(){ // ruin of first boot to get current display resolution +void check_first_run(){ /* ruin of first boot to get current display resolution */ if (first_run != 1){ orig_height = GetSystemMetrics(SM_CYSCREEN); orig_width = GetSystemMetrics(SM_CXSCREEN); @@ -37,39 +55,39 @@ void check_first_run(){ // ruin of first boot to get current display resolution first_run = 1; } -void screen_setup_aspect(int width, int height){ // create correct aspect to fit video if resolution does not exist +void screen_setup_aspect(int width, int height){ /* create correct aspect to fit video if resolution does not exist */ switch_crt_hz(); /* get original resolution of core */ if (width >= 1900){ - if (height == 4){ //detect menu only + if (height == 4){ /* detect menu only */ height = 480; aspect_ratio_switch(width,height); } - if (height < 191 && height != 144){ // for low res games to be dran at res but on a 200 eight + if (height < 191 && height != 144){ aspect_ratio_switch(width,height); height = 200; } if (height > 191){ aspect_ratio_switch(width,height); } - if (height == 144 && set_ben_core_hz == 50){ /// for GBA doubling + if (height == 144 && set_ben_core_hz == 50){ height = 288; aspect_ratio_switch(width,height); } - if (height > 200 && height < 224){ /// for mame + if (height > 200 && height < 224){ aspect_ratio_switch(width,height); ben_core_height = 224; } - if (height > 224 && height < 240){ /// for mame + if (height > 224 && height < 240){ aspect_ratio_switch(width,height); ben_core_height = 240; } - if (height > 240 && height < 255 ){ /// for mame + if (height > 240 && height < 255 ){ aspect_ratio_switch(width,height); ben_core_height = 254; } - if (height == 528 && set_ben_core_hz == 60){ /// for mame + if (height == 528 && set_ben_core_hz == 60){ aspect_ratio_switch(width,height); ben_core_height = 480; } @@ -96,12 +114,12 @@ void switch_res_crt(int width, int height){ } -void aspect_ratio_switch(int width,int height){ // send aspect float to videeo_driver +void aspect_ratio_switch(int width,int height){ /* send aspect float to videeo_driver */ fly_aspect = (float)width/height; video_driver_set_aspect_ratio_value((float)fly_aspect); } -void switch_crt_hz(){ // set hz float an int for windows switching +void switch_crt_hz(){ /* set hz float an int for windows switching */ if (ben_core_hz != ben_tmp_core_hz){ if (ben_core_hz < 53 ){ @@ -120,7 +138,7 @@ void switch_crt_hz(){ // set hz float an int for windows switching } -void switch_res(int width, int height, int f_restore){ // windows function to swith resolutions +void switch_res(int width, int height, int f_restore){ /* windows function to swith resolutions */ DEVMODE curDevmode; DEVMODE devmode; @@ -137,7 +155,7 @@ void switch_res(int width, int height, int f_restore){ // windows function to s EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &curDevmode); if (width == curDevmode.dmPelsWidth){ - width = 0; // used to stop superresolution bug + width = 0; /* used to stop superresolution bug */ } if (width == 0) { @@ -155,7 +173,7 @@ void switch_res(int width, int height, int f_restore){ // windows function to s for (iModeNum = 0; ; iModeNum++) { if (EnumDisplaySettings(NULL, iModeNum, &devmode)) { - // See if this setting has the right width. + if (devmode.dmPelsWidth != width) { continue; } @@ -164,17 +182,17 @@ void switch_res(int width, int height, int f_restore){ // windows function to s continue; } - // See if this setting has the right depth. + if (devmode.dmBitsPerPel != depth) { continue; } - // See if this setting has the right frequency. + if (devmode.dmDisplayFrequency != freq) { continue; } - // This new setting satisfies all the criteria. Try it. + devmode.dmFields |= DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL | DM_DISPLAYFREQUENCY; LONG res = ChangeDisplaySettings(&devmode, CDS_TEST); @@ -186,21 +204,21 @@ void switch_res(int width, int height, int f_restore){ // windows function to s return; case DISP_CHANGE_NOTUPDATED: - // printf("Settings changed, but not permanently.\n"); + return; default: - // printf("Something odd happened.\n"); + break; } break; case DISP_CHANGE_RESTART: - //printf("The computer needs to be restarted to switch to these settings\n"); + break; default: - //printf("Something odd happened.\n"); + break; } } @@ -209,7 +227,7 @@ void switch_res(int width, int height, int f_restore){ // windows function to s } } -// printf("Couldn't change settings.\n"); + } diff --git a/gfx/video_crt_switch.h b/gfx/video_crt_switch.h index 62b959e4ed..2e39f95ba3 100644 --- a/gfx/video_crt_switch.h +++ b/gfx/video_crt_switch.h @@ -1,3 +1,22 @@ +/* CRT SwitchRes Core + * Copyright (C) 2018 Ben Templeman. + * + * RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2017 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . +*/ + static int ben_core_width; static int ben_core_height; static int ben_tmp_width; diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 11ba7e9924..6ea3de89f8 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -120,7 +120,7 @@ #define video_driver_context_unlock() ((void)0) #endif -bool CRT_Switching_active; //ben +bool crt_switching_active; typedef struct video_pixel_scaler { @@ -1423,7 +1423,7 @@ void video_driver_monitor_adjust_system_rates(void) if (!info || info->fps <= 0.0) return; - if (CRT_Switching_active == true){ + if (crt_switching_active == true){ timing_skew = fabs(1.0f - info->fps / ben_core_hz); }else { timing_skew = fabs(1.0f - info->fps / video_refresh_rate); @@ -1437,10 +1437,7 @@ void video_driver_monitor_adjust_system_rates(void) video_refresh_rate, (float)info->fps); - - // if (info->fps <= video_refresh_rate) // create options to choose between these!!!! - // return; - if (CRT_Switching_active == true){ + if (crt_switching_active == true){ if (info->fps <= ben_core_hz) return; } else { @@ -1574,7 +1571,7 @@ static void video_driver_lock_new(void) void video_driver_destroy(void) { video_display_server_destroy(); - video_restore(); //ben + video_restore(); video_driver_cb_has_focus = null_driver_has_focus; video_driver_use_rgba = false; video_driver_data_own = false; @@ -2599,20 +2596,20 @@ void video_driver_frame(const void *data, unsigned width, runloop_msg_queue_push(video_info.fps_text, 2, 1, true); /* trigger set resolution*/ - if (video_info.CRT_Switch_Resolution == true){ - CRT_Switching_active = true; - if (video_info.CRT_Switch_Resolution_super == 2560){ + if (video_info.crt_switch_resolution == true){ + crt_switching_active = true; + if (video_info.crt_switch_resolution_super == 2560){ width = 2560; } - if (video_info.CRT_Switch_Resolution_super == 3840){ + if (video_info.crt_switch_resolution_super == 3840){ width = 3840; } - if (video_info.CRT_Switch_Resolution_super == 1920){ + if (video_info.crt_switch_resolution_super == 1920){ width = 1920; } - switch_res_core(width, height, ben_core_hz);// ben_core_hz); - } else if (video_info.CRT_Switch_Resolution == false){ - CRT_Switching_active = false; + switch_res_core(width, height, ben_core_hz); + } else if (video_info.crt_switch_resolution == false){ + crt_switching_active = false; } /* trigger set resolution*/ @@ -2713,8 +2710,8 @@ void video_driver_build_info(video_frame_info_t *video_info) settings = config_get_ptr(); custom_vp = &settings->video_viewport_custom; video_info->refresh_rate = settings->floats.video_refresh_rate; - video_info->CRT_Switch_Resolution = settings->bools.CRT_Switch_Resolution; //ben - video_info->CRT_Switch_Resolution_super = settings->uints.CRT_Switch_Resolution_super; //ben + video_info->crt_switch_resolution = settings->bools.crt_switch_resolution; + video_info->crt_switch_resolution_super = settings->uints.crt_switch_resolution_super; video_info->black_frame_insertion = settings->bools.video_black_frame_insertion; video_info->hard_sync = settings->bools.video_hard_sync; video_info->hard_sync_frames = settings->uints.video_hard_sync_frames; diff --git a/gfx/video_driver.h b/gfx/video_driver.h index bdb2b682e8..46c19a52dc 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -71,9 +71,10 @@ RETRO_BEGIN_DECLS #define MAX_VARIABLES 64 -// Added for resolution wswitching +/* Added for resolution wswitching */ void ben_poke_video(); -//Added for resolution wswitching + +/* Added for resolution wswitching */ enum @@ -407,7 +408,7 @@ typedef struct video_frame_info bool black_frame_insertion; bool hard_sync; bool fps_show; - bool CRT_Switch_Resolution; //ben + bool crt_switch_resolution; bool statistics_show; bool framecount_show; bool scale_integer; @@ -433,7 +434,7 @@ typedef struct video_frame_info unsigned aspect_ratio_idx; unsigned max_swapchain_images; unsigned monitor_index; - unsigned CRT_Switch_Resolution_super; //ben + unsigned crt_switch_resolution_super; unsigned width; unsigned height; unsigned xmb_theme;