diff --git a/.travis.yml b/.travis.yml index b2e56f8b73..631cd3edea 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,6 +31,8 @@ matrix: env: DISABLE_MENU=1 CC=gcc-8 CXX=g++-8 - compiler: gcc env: ENABLE_GLES=1 CC=gcc-8 CXX=g++-8 + - compiler: gcc + env: ENABLE_GLES=1 ENABLE_GLES3=1 CC=gcc-8 CXX=g++-8 - compiler: clang env: CC=clang-6.0 CXX=clang++-6.0 - compiler: clang @@ -73,7 +75,7 @@ before_install: script: - | if [ -n "$CROSS_COMPILE" ]; then - ARGS="$ARGS --disable-d3d8 --disable-d3d9 --disable-d3d10 --disable-d3d11 --disable-d3d12 --enable-builtinzlib" + ARGS="$ARGS --disable-d3d8 --disable-d3d9 --disable-d3d10 --disable-d3d11 --disable-d3d12" fi - | if [ -n "$DISABLE_MENU" ]; then diff --git a/Makefile.common b/Makefile.common index dd25df71ec..786682b785 100644 --- a/Makefile.common +++ b/Makefile.common @@ -1342,15 +1342,14 @@ endif ifeq ($(HAVE_D3D9), 1) HAVE_D3D_COMMON = 1 - HAVE_D3DX = 1 DEFINES += -DHAVE_D3D9 - ifeq ($(HAVE_D3DX), 1) - DEFINES += -DHAVE_D3DX + ifeq ($(HAVE_D3DX9), 1) + HAVE_D3DX_COMMON = 1 endif ifneq ($(HAVE_DYLIB), 1) - LIBS += -ld3d9 - ifeq ($(HAVE_D3DX), 1) - LIBS += -ld3dx9 + LIBS += $(D3D9_LIBS) + ifeq ($(HAVE_D3DX9), 1) + LIBS += $(D3DX9_LIBS) endif endif HAVE_DX_COMMON = 1 @@ -1412,14 +1411,21 @@ ifeq ($(HAVE_D3D8), 1) HAVE_D3D_COMMON = 1 HAVE_DX_COMMON = 1 DEFINES += -DHAVE_D3D8 + ifeq ($(HAVE_D3DX8), 1) + HAVE_D3DX_COMMON = 1 + endif ifneq ($(HAVE_DYLIB), 1) - LIBS += -ld3d8 - ifeq ($(HAVE_D3DX), 1) - LIBS += -ld3dx8 + LIBS += $(D3D8_LIBS) + ifeq ($(HAVE_D3DX8), 1) + LIBS += $(D3DX8_LIBS) endif endif endif +ifeq ($(HAVE_D3DX_COMMON), 1) + DEFINES += -DHAVE_D3DX +endif + ifeq ($(HAVE_DX_COMMON), 1) LIBS += -ldxguid endif diff --git a/Makefile.msvc b/Makefile.msvc index 5eee104a72..90b87b9501 100644 --- a/Makefile.msvc +++ b/Makefile.msvc @@ -60,6 +60,20 @@ HAVE_CHEEVOS := 1 HAVE_SHADERPIPELINE := 1 HAVE_IMAGEVIEWER := 1 +ifeq ($(HAVE_D3D8), 1) + D3D8_LIBS := -ld3d8 + ifeq ($(HAVE_D3DX), 1) + D3DX8_LIBS := -ld3dx8 + endif +endif + +ifeq ($(HAVE_D3D9), 1) + D3D9_LIBS := -ld3d9 + ifeq ($(HAVE_D3DX), 1) + D3DX9_LIBS := -ld3dx9 + endif +endif + include Makefile.common INCLUDE_DIRS := $(patsubst -isystem%,-I%,$(INCLUDE_DIRS)) CFLAGS := $(filter-out -Wno-unknown-pragmas,$(DEF_FLAGS)) diff --git a/Makefile.win b/Makefile.win index 4f54d13426..d9e70bbc95 100644 --- a/Makefile.win +++ b/Makefile.win @@ -56,6 +56,20 @@ SDL2_LIBS := -lSDL2 SDL2_CFLAGS := -ISDL2 -DHAVE_SDL2 endif +ifeq ($(HAVE_D3D8), 1) +D3D8_LIBS := -ld3d8 +ifeq ($(HAVE_D3DX), 1) +D3DX8_LIBS := -ld3dx8 +endif +endif + +ifeq ($(HAVE_D3D9), 1) +D3D9_LIBS := -ld3d9 +ifeq ($(HAVE_D3DX), 1) +D3DX9_LIBS := -ld3dx9 +endif +endif + ifeq ($(HAVE_RSOUND), 1) RSOUND_CFLAGS := -DHAVE_RSOUND RSOUND_LIBS := -lrsound diff --git a/config.def.h b/config.def.h index 4efd18cda2..1613d04ecf 100644 --- a/config.def.h +++ b/config.def.h @@ -70,7 +70,7 @@ #endif #ifdef HAVE_MATERIALUI -static bool materialui_icons_enable = true; +#define DEFAULT_MATERIALUI_ICONS_ENABLE true #endif static const unsigned crt_switch_resolution = CRT_SWITCH_NONE; @@ -78,19 +78,18 @@ static const int crt_switch_resolution_super = 2560; static const int crt_switch_center_adjust = 0; static const bool def_history_list_enable = true; -static const bool def_playlist_entry_remove = true; static const bool def_playlist_entry_rename = true; static const unsigned int def_user_language = 0; #if (defined(_WIN32) && !defined(_XBOX)) || (defined(__linux) && !defined(ANDROID) && !defined(HAVE_LAKKA)) || (defined(__MACH__) && !defined(IOS)) || defined(EMSCRIPTEN) -static const bool def_mouse_enable = true; +#define DEFAULT_MOUSE_ENABLE true #else -static const bool def_mouse_enable = false; +#define DEFAULT_MOUSE_ENABLE false #endif #ifdef HAVE_CHEEVOS -static const bool cheevos_enable = false; +#define DEFAULT_CHEEVOS_ENABLE false #endif /* VIDEO */ @@ -105,87 +104,87 @@ static const bool cheevos_enable = false; * Real x resolution = aspect * base_size * x scale * Real y resolution = base_size * y scale */ -static const float scale = 3.0; +#define DEFAULT_SCALE (3.0) /* Fullscreen */ /* To start in Fullscreen, or not. */ -static const bool fullscreen = false; +#define DEFAULT_FULLSCREEN false /* To use windowed mode or not when going fullscreen. */ -static const bool windowed_fullscreen = true; +#define DEFAULT_WINDOWED_FULLSCREEN true /* Which monitor to prefer. 0 is any monitor, 1 and up selects * specific monitors, 1 being the first monitor. */ -static const unsigned monitor_index = 0; +#define DEFAULT_MONITOR_INDEX 0 /* Window */ /* Window size. A value of 0 uses window scale * multiplied by the core framebuffer size. */ -static const unsigned window_width = 1280; -static const unsigned window_height = 720; +#define DEFAULT_WINDOW_WIDTH 1280 +#define DEFAULT_WINDOW_HEIGHT 720 /* Fullscreen resolution. A value of 0 uses the desktop * resolution. */ -static const unsigned fullscreen_x = 0; -static const unsigned fullscreen_y = 0; +#define DEFAULT_FULLSCREEN_X 0 +#define DEFAULT_FULLSCREEN_Y 0 /* Number of threads to use for video recording */ - -static const unsigned video_record_threads = 2; +#define DEFAULT_VIDEO_RECORD_THREADS 2 /* Amount of transparency to use for the main window. * 1 is the most transparent while 100 is opaque. */ -static const unsigned window_opacity = 100; +#define DEFAULT_WINDOW_OPACITY 100 /* Whether to show the usual window decorations like border, titlebar etc. */ -static const bool window_decorations = true; +#define DEFAULT_WINDOW_DECORATIONS true #if defined(RARCH_CONSOLE) || defined(__APPLE__) -static const bool load_dummy_on_core_shutdown = false; +#define DEFAULT_LOAD_DUMMY_ON_CORE_SHUTDOWN false #else -static const bool load_dummy_on_core_shutdown = true; +#define DEFAULT_LOAD_DUMMY_ON_CORE_SHUTDOWN true #endif -static const bool check_firmware_before_loading = false; +#define DEFAULT_CHECK_FIRMWARE_BEFORE_LOADING false + /* Forcibly disable composition. * Only valid on Windows Vista/7/8 for now. */ -static const bool disable_composition = false; +#define DEFAULT_DISABLE_COMPOSITION false /* Video VSYNC (recommended) */ -static const bool vsync = true; +#define DEFAULT_VSYNC false -static const unsigned max_swapchain_images = 3; +#define DEFAULT_MAX_SWAPCHAIN_IMAGES 3 -static const bool adaptive_vsync = false; +#define DEFAULT_ADAPTIVE_VSYNC false /* Attempts to hard-synchronize CPU and GPU. * Can reduce latency at cost of performance. */ -static const bool hard_sync = false; +#define DEFAULT_HARD_SYNC false /* Configures how many frames the GPU can run ahead of CPU. * 0: Syncs to GPU immediately. * 1: Syncs to previous frame. * 2: Etc ... */ -static const unsigned hard_sync_frames = 0; +#define DEFAULT_HARD_SYNC_FRAMES 0 /* Sets how many milliseconds to delay after VSync before running the core. * Can reduce latency at cost of higher risk of stuttering. */ -static const unsigned frame_delay = 0; +#define DEFAULT_FRAME_DELAY 0 /* Inserts a black frame inbetween frames. * Useful for 120 Hz monitors who want to play 60 Hz material with eliminated * ghosting. video_refresh_rate should still be configured as if it * is a 60 Hz monitor (divide refresh rate by 2). */ -static bool black_frame_insertion = false; +#define DEFAULT_BLACK_FRAME_INSERTION false /* Uses a custom swap interval for VSync. * Set this to effectively halve monitor refresh rate. */ -static unsigned swap_interval = 1; +#define DEFAULT_SWAP_INTERVAL 1 /* Threaded video. Will possibly increase performance significantly * at the cost of worse synchronization and latency. @@ -199,87 +198,90 @@ static unsigned swap_interval = 1; #if defined(HAVE_THREADS) #if defined(GEKKO) || defined(PSP) || defined(PS2) /* For single-core consoles right now it's best to have this be disabled. */ -static const bool threaded_data_runloop_enable = false; +#define DEFAULT_THREADED_DATA_RUNLOOP_ENABLE false #else -static const bool threaded_data_runloop_enable = true; +#define DEFAULT_THREADED_DATA_RUNLOOP_ENABLE true #endif #else -static const bool threaded_data_runloop_enable = false; +#define DEFAULT_THREADED_DATA_RUNLOOP_ENABLE false #endif /* Set to true if HW render cores should get their private context. */ -static const bool video_shared_context = false; +#define DEFAULT_VIDEO_SHARED_CONTEXT false /* Sets GC/Wii screen width. */ -static const unsigned video_viwidth = 640; +#define DEFAULT_VIDEO_VI_WIDTH 640 #ifdef GEKKO /* Removes 480i flicker, smooths picture a little. */ -static const bool video_vfilter = true; +#define DEFAULT_VIDEO_VFILTER true + +/* Allow overscan to be corrected on displays that + * do not have proper 'pixel perfect' scaling */ +#define DEFAULT_VIDEO_OVERSCAN_CORRECTION_TOP 0 +#define DEFAULT_VIDEO_OVERSCAN_CORRECTION_BOTTOM 0 #endif /* Smooths picture. */ -static const bool video_smooth = true; +#define DEFAULT_VIDEO_SMOOTH true /* On resize and fullscreen, rendering area will stay 4:3 */ -static const bool force_aspect = true; +#define DEFAULT_FORCE_ASPECT true /* Enable use of shaders. */ #ifdef RARCH_CONSOLE -static const bool shader_enable = true; +#define DEFAULT_SHADER_ENABLE true #else -static const bool shader_enable = false; +#define DEFAULT_SHADER_ENABLE false #endif /* Only scale in integer steps. * The base size depends on system-reported geometry and aspect ratio. * If video_force_aspect is not set, X/Y will be integer scaled independently. */ -static const bool scale_integer = false; +#define DEFAULT_SCALE_INTEGER false /* Controls aspect ratio handling. */ -/* Automatic */ -static const float aspect_ratio = DEFAULT_ASPECT_RATIO; - /* 1:1 PAR */ -static const bool aspect_ratio_auto = false; +#define DEFAULT_ASPECT_RATIO_AUTO false #if defined(__CELLOS_LV2) || defined(_XBOX360) -static unsigned aspect_ratio_idx = ASPECT_RATIO_16_9; +#define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_16_9 #elif defined(PSP) -static unsigned aspect_ratio_idx = ASPECT_RATIO_CORE; +#define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_CORE #elif defined(_3DS) /* Previously defaulted to ASPECT_RATIO_4_3. * Non-4:3 content looks dreadful when stretched * to 4:3 on the 3DS screen... */ -static unsigned aspect_ratio_idx = ASPECT_RATIO_CORE; +#define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_CORE #elif defined(RARCH_CONSOLE) -static unsigned aspect_ratio_idx = ASPECT_RATIO_4_3; +#define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_4_3 #else -static unsigned aspect_ratio_idx = ASPECT_RATIO_CORE; +#define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_CORE #endif /* Save configuration file on exit. */ -static bool config_save_on_exit = true; +#define DEFAULT_CONFIG_SAVE_ON_EXIT true -static bool show_hidden_files = false; +#define DEFAULT_SHOW_HIDDEN_FILES false -static const bool overlay_hide_in_menu = true; +#define DEFAULT_OVERLAY_HIDE_IN_MENU true +#define DEFAULT_OVERLAY_SHOW_MOUSE_CURSOR true -static const bool display_keyboard_overlay = false; +#define DEFAULT_DISPLAY_KEYBOARD_OVERLAY false #ifdef HAKCHI -static const float default_input_overlay_opacity = 0.5f; +#define DEFAULT_INPUT_OVERLAY_OPACITY 0.5f #else -static const float default_input_overlay_opacity = 0.7f; +#define DEFAULT_INPUT_OVERLAY_OPACITY 0.7f #endif #ifdef HAVE_MENU #include "menu/menu_driver.h" #include "menu/menu_animation.h" -static bool default_block_config_read = true; +#define DEFAULT_BLOCK_CONFIG_READ true #ifdef HAVE_LIBNX static bool menu_use_preferred_system_color_theme = true; @@ -370,8 +372,6 @@ static bool xmb_shadows_enable = true; #endif #endif -static bool automatically_add_content_to_playlist = false; - static float menu_framebuffer_opacity = 0.900; static float menu_wallpaper_opacity = 0.300; @@ -402,10 +402,11 @@ static unsigned rgui_particle_effect = RGUI_PARTICLE_EFFECT_NONE; static bool rgui_extended_ascii = false; #else -static bool default_block_config_read = false; -static bool automatically_add_content_to_playlist = false; +#define DEFAULT_BLOCK_CONFIG_READ false #endif +static bool automatically_add_content_to_playlist = false; + static bool default_game_specific_options = true; static bool default_auto_overrides_enable = true; static bool default_auto_remaps_enable = true; @@ -456,13 +457,13 @@ static bool default_log_to_file = false; static bool log_to_file_timestamp = false; /* Crop overscanned frames. */ -static const bool crop_overscan = true; +#define DEFAULT_CROP_OVERSCAN true /* Font size for on-screen messages. */ #if defined(HAVE_LIBDBGFONT) -static const float font_size = 1.0f; +#define DEFAULT_FONT_SIZE 1.0f #else -static const float font_size = 32; +#define DEFAULT_FONT_SIZE 32 #endif /* Offset for where messages will be placed on-screen. @@ -536,7 +537,7 @@ static const unsigned video_3ds_display_mode = CTR_VIDEO_MODE_3D; /* AUDIO */ /* Will enable audio or not. */ -static const bool audio_enable = true; +#define DEFAULT_AUDIO_ENABLE true /* Enable menu audio sounds. */ static const bool audio_enable_menu = false; @@ -553,11 +554,11 @@ static const bool menu_enable_widgets = false; /* Output samplerate. */ #ifdef GEKKO -static const unsigned out_rate = 32000; +#define DEFAULT_OUTPUT_RATE 32000 #elif defined(_3DS) -static const unsigned out_rate = 32730; +#define DEFAULT_OUTPUT_RATE 32730 #else -static const unsigned out_rate = 48000; +#define DEFAULT_OUTPUT_RATE 48000 #endif /* Audio device (e.g. hw:0,0 or /dev/audio). If NULL, will use defaults. */ @@ -567,34 +568,34 @@ static const char *audio_device = NULL; * if driver can't provide given latency. */ #if defined(ANDROID) || defined(EMSCRIPTEN) /* For most Android devices, 64ms is way too low. */ -static const int out_latency = 128; +#define DEFAULT_OUT_LATENCY 128 #else -static const int out_latency = 64; +#define DEFAULT_OUT_LATENCY 64 #endif /* Will sync audio. (recommended) */ -static const bool audio_sync = true; +#define DEFAULT_AUDIO_SYNC true /* Audio rate control. */ #if !defined(RARCH_CONSOLE) -static const bool rate_control = true; +#define DEFAULT_RATE_CONTROL true #else -static const bool rate_control = false; +#define DEFAULT_RATE_CONTROL false #endif /* Rate control delta. Defines how much rate_control * is allowed to adjust input rate. */ -static const float rate_control_delta = 0.005; +#define DEFAULT_RATE_CONTROL_DELTA 0.005 /* Maximum timing skew. Defines how much adjust_system_rates * is allowed to adjust input rate. */ -static const float max_timing_skew = 0.05; +#define DEFAULT_MAX_TIMING_SKEW 0.05 /* Default audio volume in dB. (0.0 dB == unity gain). */ -static const float audio_volume = 0.0; +#define DEFAULT_AUDIO_VOLUME 0.0 /* Default audio volume of the audio mixer in dB. (0.0 dB == unity gain). */ -static const float audio_mixer_volume = 0.0; +#define DEFAULT_AUDIO_MIXER_VOLUME 0.0 #ifdef HAVE_WASAPI /* WASAPI defaults */ @@ -606,56 +607,56 @@ static const int wasapi_sh_buffer_length = -16; /* auto */ /* MISC */ /* Enables displaying the current frames per second. */ -static const bool fps_show = false; +#define DEFAULT_FPS_SHOW false /* Enables displaying the current frame count. */ -static const bool framecount_show = false; +#define DEFAULT_FRAMECOUNT_SHOW false /* Includes displaying the current memory usage/total with FPS/Frames. */ -static const bool memory_show = false; +#define DEFAULT_MEMORY_SHOW false /* Enables displaying various timing statistics. */ -static const bool statistics_show = false; +#define DEFAULT_STATISTICS_SHOW false /* Enables use of rewind. This will incur some memory footprint * depending on the save state buffer. */ -static const bool rewind_enable = false; +#define DEFAULT_REWIND_ENABLE false /* When set, any time a cheat is toggled it is immediately applied. */ -static const bool apply_cheats_after_toggle = false; +#define DEFAULT_APPLY_CHEATS_AFTER_TOGGLE false /* When set, all enabled cheats are auto-applied when a game is loaded. */ -static const bool apply_cheats_after_load = false; +#define DEFAULT_APPLY_CHEATS_AFTER_LOAD false /* The buffer size for the rewind buffer. This needs to be about * 15-20MB per minute. Very game dependant. */ -static const unsigned rewind_buffer_size = 20 << 20; /* 20MiB */ +#define DEFAULT_REWIND_BUFFER_SIZE (20 << 20) /* 20MiB */ /* The amount of MB to increase/decrease the rewind_buffer_size when it is changed via the UI. */ -static const unsigned rewind_buffer_size_step = 10; /* 10MB */ +#define DEFAULT_REWIND_BUFFER_SIZE_STEP 10 /* 10MB */ /* How many frames to rewind at a time. */ -static const unsigned rewind_granularity = 1; +#define DEFAULT_REWIND_GRANULARITY 1 /* Pause gameplay when gameplay loses focus. */ #ifdef EMSCRIPTEN -static const bool pause_nonactive = false; +#define DEFAULT_PAUSE_NONACTIVE false #else -static const bool pause_nonactive = true; +#define DEFAULT_PAUSE_NONACTIVE true #endif /* Saves non-volatile SRAM at a regular interval. * It is measured in seconds. A value of 0 disables autosave. */ #if defined(__i386__) || defined(__i486__) || defined(__i686__) || defined(__x86_64__) || defined(_M_X64) || defined(_WIN32) || defined(OSX) || defined(ANDROID) || defined(IOS) /* Flush to file every 10 seconds on modern platforms by default */ -static const unsigned autosave_interval = 10; +#define DEFAULT_AUTOSAVE_INTERVAL 10 #else /* Default to disabled on I/O-constrained platforms */ -static const unsigned autosave_interval = 0; +#define DEFAULT_AUTOSAVE_INTERVAL 0 #endif /* Publicly announce netplay */ -static const bool netplay_public_announce = true; +#define DEFAULT_NETPLAY_PUBLIC_ANNOUNCE true /* Start netplay in spectator mode */ static const bool netplay_start_as_spectator = false; @@ -691,7 +692,7 @@ static const unsigned netplay_share_analog = RARCH_NETPLAY_SHARE_ANALOG_NO_PREFE /* On save state load, block SRAM from being overwritten. * This could potentially lead to buggy games. */ -static const bool block_sram_overwrite = false; +#define DEFAULT_BLOCK_SRAM_OVERWRITE false /* When saving savestates, state index is automatically * incremented before saving. @@ -709,16 +710,16 @@ static const bool savestate_auto_load = false; static const bool savestate_thumbnail_enable = false; /* Slowmotion ratio. */ -static const float slowmotion_ratio = 3.0; +#define DEFAULT_SLOWMOTION_RATIO 3.0 /* Maximum fast forward ratio. */ -static const float fastforward_ratio = 0.0; +#define DEFAULT_FASTFORWARD_RATIO 0.0 /* Enable runloop for variable refresh rate screens. Force x1 speed while handling fast forward too. */ -static const bool vrr_runloop_enable = false; +#define DEFAULT_VRR_RUNLOOP_ENABLE false /* Run core logic one or more frames ahead then load the state back to reduce perceived input lag. */ -static const unsigned run_ahead_frames = 1; +#define DEFAULT_RUN_AHEAD_FRAMES 1 /* When using the Run Ahead feature, use a secondary instance of the core. */ static const bool run_ahead_secondary_instance = true; @@ -750,6 +751,8 @@ static const unsigned playlist_show_inline_core_name = PLAYLIST_INLINE_CORE_DISP /* Specifies which runtime record to use on playlist sublabels */ static const unsigned playlist_sublabel_runtime_type = PLAYLIST_RUNTIME_PER_CORE; + +static const unsigned playlist_entry_remove_enable = PLAYLIST_ENTRY_REMOVE_ENABLE_ALL; #endif static const bool scan_without_core_match = false; @@ -858,8 +861,8 @@ static const unsigned midi_volume = 100; /* Only applies to Android 7.0 (API 24) and up */ static const bool sustained_performance_mode = false; -static const bool vibrate_on_keypress = false; -static const bool enable_device_vibration = false; +static const bool vibrate_on_keypress = false; +static const bool enable_device_vibration = false; #if defined(HAKCHI) static char buildbot_server_url[] = "http://hakchicloud.com/Libretro_Cores/"; diff --git a/configuration.c b/configuration.c index cebbe52cdf..29de8f4491 100644 --- a/configuration.c +++ b/configuration.c @@ -1357,7 +1357,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("all_users_control_menu", &settings->bools.input_all_users_control_menu, true, all_users_control_menu, false); SETTING_BOOL("menu_swap_ok_cancel_buttons", &settings->bools.input_menu_swap_ok_cancel_buttons, true, menu_swap_ok_cancel_buttons, false); #ifdef HAVE_NETWORKING - SETTING_BOOL("netplay_public_announce", &settings->bools.netplay_public_announce, true, netplay_public_announce, false); + SETTING_BOOL("netplay_public_announce", &settings->bools.netplay_public_announce, true, DEFAULT_NETPLAY_PUBLIC_ANNOUNCE, false); SETTING_BOOL("netplay_start_as_spectator", &settings->bools.netplay_start_as_spectator, false, netplay_start_as_spectator, false); SETTING_BOOL("netplay_allow_slaves", &settings->bools.netplay_allow_slaves, true, netplay_allow_slaves, false); SETTING_BOOL("netplay_require_slaves", &settings->bools.netplay_require_slaves, true, netplay_require_slaves, false); @@ -1384,53 +1384,53 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, #endif SETTING_BOOL("input_descriptor_label_show", &settings->bools.input_descriptor_label_show, true, input_descriptor_label_show, false); SETTING_BOOL("input_descriptor_hide_unbound", &settings->bools.input_descriptor_hide_unbound, true, input_descriptor_hide_unbound, false); - SETTING_BOOL("load_dummy_on_core_shutdown", &settings->bools.load_dummy_on_core_shutdown, true, load_dummy_on_core_shutdown, false); - SETTING_BOOL("check_firmware_before_loading", &settings->bools.check_firmware_before_loading, true, check_firmware_before_loading, false); + SETTING_BOOL("load_dummy_on_core_shutdown", &settings->bools.load_dummy_on_core_shutdown, true, DEFAULT_LOAD_DUMMY_ON_CORE_SHUTDOWN, false); + SETTING_BOOL("check_firmware_before_loading", &settings->bools.check_firmware_before_loading, true, DEFAULT_CHECK_FIRMWARE_BEFORE_LOADING, false); SETTING_BOOL("builtin_mediaplayer_enable", &settings->bools.multimedia_builtin_mediaplayer_enable, false, false /* TODO */, false); SETTING_BOOL("builtin_imageviewer_enable", &settings->bools.multimedia_builtin_imageviewer_enable, true, true, false); - SETTING_BOOL("fps_show", &settings->bools.video_fps_show, true, fps_show, false); - SETTING_BOOL("statistics_show", &settings->bools.video_statistics_show, true, statistics_show, false); - SETTING_BOOL("framecount_show", &settings->bools.video_framecount_show, true, framecount_show, false); - SETTING_BOOL("memory_show", &settings->bools.video_memory_show, true, memory_show, false); + SETTING_BOOL("fps_show", &settings->bools.video_fps_show, true, DEFAULT_FPS_SHOW, false); + SETTING_BOOL("statistics_show", &settings->bools.video_statistics_show, true, DEFAULT_STATISTICS_SHOW, false); + SETTING_BOOL("framecount_show", &settings->bools.video_framecount_show, true, DEFAULT_FRAMECOUNT_SHOW, false); + SETTING_BOOL("memory_show", &settings->bools.video_memory_show, true, DEFAULT_MEMORY_SHOW, false); SETTING_BOOL("ui_menubar_enable", &settings->bools.ui_menubar_enable, true, true, false); SETTING_BOOL("suspend_screensaver_enable", &settings->bools.ui_suspend_screensaver_enable, true, true, false); - SETTING_BOOL("rewind_enable", &settings->bools.rewind_enable, true, rewind_enable, false); - SETTING_BOOL("vrr_runloop_enable", &settings->bools.vrr_runloop_enable, true, vrr_runloop_enable, false); - SETTING_BOOL("apply_cheats_after_toggle", &settings->bools.apply_cheats_after_toggle, true, apply_cheats_after_toggle, false); - SETTING_BOOL("apply_cheats_after_load", &settings->bools.apply_cheats_after_load, true, apply_cheats_after_load, false); + SETTING_BOOL("rewind_enable", &settings->bools.rewind_enable, true, DEFAULT_REWIND_ENABLE, false); + SETTING_BOOL("vrr_runloop_enable", &settings->bools.vrr_runloop_enable, true, DEFAULT_VRR_RUNLOOP_ENABLE, false); + SETTING_BOOL("apply_cheats_after_toggle", &settings->bools.apply_cheats_after_toggle, true, DEFAULT_APPLY_CHEATS_AFTER_TOGGLE, false); + SETTING_BOOL("apply_cheats_after_load", &settings->bools.apply_cheats_after_load, true, DEFAULT_APPLY_CHEATS_AFTER_LOAD, false); SETTING_BOOL("run_ahead_enabled", &settings->bools.run_ahead_enabled, true, false, false); SETTING_BOOL("run_ahead_secondary_instance", &settings->bools.run_ahead_secondary_instance, true, false, false); SETTING_BOOL("run_ahead_hide_warnings", &settings->bools.run_ahead_hide_warnings, true, false, false); - SETTING_BOOL("audio_sync", &settings->bools.audio_sync, true, audio_sync, false); - SETTING_BOOL("video_shader_enable", &settings->bools.video_shader_enable, true, shader_enable, false); + SETTING_BOOL("audio_sync", &settings->bools.audio_sync, true, DEFAULT_AUDIO_SYNC, false); + SETTING_BOOL("video_shader_enable", &settings->bools.video_shader_enable, true, DEFAULT_SHADER_ENABLE, false); SETTING_BOOL("video_shader_watch_files", &settings->bools.video_shader_watch_files, true, video_shader_watch_files, false); /* Let implementation decide if automatic, or 1:1 PAR. */ - SETTING_BOOL("video_aspect_ratio_auto", &settings->bools.video_aspect_ratio_auto, true, aspect_ratio_auto, false); + SETTING_BOOL("video_aspect_ratio_auto", &settings->bools.video_aspect_ratio_auto, true, DEFAULT_ASPECT_RATIO_AUTO, false); SETTING_BOOL("video_allow_rotate", &settings->bools.video_allow_rotate, true, allow_rotate, false); - SETTING_BOOL("video_windowed_fullscreen", &settings->bools.video_windowed_fullscreen, true, windowed_fullscreen, false); - SETTING_BOOL("video_crop_overscan", &settings->bools.video_crop_overscan, true, crop_overscan, false); - SETTING_BOOL("video_scale_integer", &settings->bools.video_scale_integer, true, scale_integer, false); - SETTING_BOOL("video_smooth", &settings->bools.video_smooth, true, video_smooth, false); - SETTING_BOOL("video_force_aspect", &settings->bools.video_force_aspect, true, force_aspect, false); + SETTING_BOOL("video_windowed_fullscreen", &settings->bools.video_windowed_fullscreen, true, DEFAULT_WINDOWED_FULLSCREEN, false); + SETTING_BOOL("video_crop_overscan", &settings->bools.video_crop_overscan, true, DEFAULT_CROP_OVERSCAN, false); + SETTING_BOOL("video_scale_integer", &settings->bools.video_scale_integer, true, DEFAULT_SCALE_INTEGER, false); + SETTING_BOOL("video_smooth", &settings->bools.video_smooth, true, DEFAULT_VIDEO_SMOOTH, false); + SETTING_BOOL("video_force_aspect", &settings->bools.video_force_aspect, true, DEFAULT_FORCE_ASPECT, false); SETTING_BOOL("video_threaded", video_driver_get_threaded(), true, DEFAULT_VIDEO_THREADED, false); - SETTING_BOOL("video_shared_context", &settings->bools.video_shared_context, true, video_shared_context, false); + SETTING_BOOL("video_shared_context", &settings->bools.video_shared_context, true, DEFAULT_VIDEO_SHARED_CONTEXT, false); SETTING_BOOL("auto_screenshot_filename", &settings->bools.auto_screenshot_filename, true, auto_screenshot_filename, false); SETTING_BOOL("video_force_srgb_disable", &settings->bools.video_force_srgb_disable, true, false, false); - SETTING_BOOL("video_fullscreen", &settings->bools.video_fullscreen, true, fullscreen, false); + SETTING_BOOL("video_fullscreen", &settings->bools.video_fullscreen, true, DEFAULT_FULLSCREEN, false); SETTING_BOOL("bundle_assets_extract_enable", &settings->bools.bundle_assets_extract_enable, true, DEFAULT_BUNDLE_ASSETS_EXTRACT_ENABLE, false); - SETTING_BOOL("video_vsync", &settings->bools.video_vsync, true, vsync, false); - SETTING_BOOL("video_adaptive_vsync", &settings->bools.video_adaptive_vsync, true, adaptive_vsync, false); - SETTING_BOOL("video_hard_sync", &settings->bools.video_hard_sync, true, hard_sync, false); - SETTING_BOOL("video_black_frame_insertion", &settings->bools.video_black_frame_insertion, true, black_frame_insertion, false); - SETTING_BOOL("video_disable_composition", &settings->bools.video_disable_composition, true, disable_composition, false); - SETTING_BOOL("pause_nonactive", &settings->bools.pause_nonactive, true, pause_nonactive, false); + SETTING_BOOL("video_vsync", &settings->bools.video_vsync, true, DEFAULT_VSYNC, false); + SETTING_BOOL("video_adaptive_vsync", &settings->bools.video_adaptive_vsync, true, DEFAULT_ADAPTIVE_VSYNC, false); + SETTING_BOOL("video_hard_sync", &settings->bools.video_hard_sync, true, DEFAULT_HARD_SYNC, false); + SETTING_BOOL("video_black_frame_insertion", &settings->bools.video_black_frame_insertion, true, DEFAULT_BLACK_FRAME_INSERTION, false); + SETTING_BOOL("video_disable_composition", &settings->bools.video_disable_composition, true, DEFAULT_DISABLE_COMPOSITION, false); + SETTING_BOOL("pause_nonactive", &settings->bools.pause_nonactive, true, DEFAULT_PAUSE_NONACTIVE, false); SETTING_BOOL("video_gpu_screenshot", &settings->bools.video_gpu_screenshot, true, gpu_screenshot, false); SETTING_BOOL("video_post_filter_record", &settings->bools.video_post_filter_record, true, post_filter_record, false); SETTING_BOOL("keyboard_gamepad_enable", &settings->bools.input_keyboard_gamepad_enable, true, true, false); SETTING_BOOL("core_set_supports_no_game_enable", &settings->bools.set_supports_no_game_enable, true, true, false); - SETTING_BOOL("audio_enable", &settings->bools.audio_enable, true, audio_enable, false); + SETTING_BOOL("audio_enable", &settings->bools.audio_enable, true, DEFAULT_AUDIO_ENABLE, false); SETTING_BOOL("menu_enable_widgets", &settings->bools.menu_enable_widgets, true, menu_enable_widgets, false); SETTING_BOOL("audio_enable_menu", &settings->bools.audio_enable_menu, true, audio_enable_menu, false); SETTING_BOOL("audio_enable_menu_ok", &settings->bools.audio_enable_menu_ok, true, audio_enable_menu_ok, false); @@ -1452,10 +1452,10 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("small_keyboard_enable", &settings->bools.input_small_keyboard_enable, true, false, false); #endif #ifdef GEKKO - SETTING_BOOL("video_vfilter", &settings->bools.video_vfilter, true, video_vfilter, false); + SETTING_BOOL("video_vfilter", &settings->bools.video_vfilter, true, DEFAULT_VIDEO_VFILTER, false); #endif #ifdef HAVE_THREADS - SETTING_BOOL("threaded_data_runloop_enable", &settings->bools.threaded_data_runloop_enable, true, threaded_data_runloop_enable, false); + SETTING_BOOL("threaded_data_runloop_enable", &settings->bools.threaded_data_runloop_enable, true, DEFAULT_THREADED_DATA_RUNLOOP_ENABLE, false); #endif #ifdef HAVE_MENU SETTING_BOOL("menu_unified_controls", &settings->bools.menu_unified_controls, true, false, false); @@ -1464,7 +1464,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("menu_horizontal_animation", &settings->bools.menu_horizontal_animation, true, true, false); SETTING_BOOL("dpi_override_enable", &settings->bools.menu_dpi_override_enable, true, menu_dpi_override_enable, false); SETTING_BOOL("menu_pause_libretro", &settings->bools.menu_pause_libretro, true, true, false); - SETTING_BOOL("menu_mouse_enable", &settings->bools.menu_mouse_enable, true, def_mouse_enable, false); + SETTING_BOOL("menu_mouse_enable", &settings->bools.menu_mouse_enable, true, DEFAULT_MOUSE_ENABLE, false); SETTING_BOOL("menu_pointer_enable", &settings->bools.menu_pointer_enable, true, DEFAULT_POINTER_ENABLE, false); SETTING_BOOL("menu_timedate_enable", &settings->bools.menu_timedate_enable, true, true, false); SETTING_BOOL("menu_battery_level_enable", &settings->bools.menu_battery_level_enable, true, true, false); @@ -1536,7 +1536,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, &settings->bools.menu_navigation_browser_filter_supported_extensions_enable, true, true, false); SETTING_BOOL("menu_show_advanced_settings", &settings->bools.menu_show_advanced_settings, true, show_advanced_settings, false); #ifdef HAVE_MATERIALUI - SETTING_BOOL("materialui_icons_enable", &settings->bools.menu_materialui_icons_enable, true, materialui_icons_enable, false); + SETTING_BOOL("materialui_icons_enable", &settings->bools.menu_materialui_icons_enable, true, DEFAULT_MATERIALUI_ICONS_ENABLE, false); #endif #ifdef HAVE_RGUI SETTING_BOOL("rgui_background_filler_thickness_enable", &settings->bools.menu_rgui_background_filler_thickness_enable, true, true, false); @@ -1554,7 +1554,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, #endif #endif #ifdef HAVE_CHEEVOS - SETTING_BOOL("cheevos_enable", &settings->bools.cheevos_enable, true, cheevos_enable, false); + SETTING_BOOL("cheevos_enable", &settings->bools.cheevos_enable, true, DEFAULT_CHEEVOS_ENABLE, false); SETTING_BOOL("cheevos_test_unofficial", &settings->bools.cheevos_test_unofficial, true, false, false); SETTING_BOOL("cheevos_hardcore_mode_enable", &settings->bools.cheevos_hardcore_mode_enable, true, false, false); SETTING_BOOL("cheevos_leaderboards_enable", &settings->bools.cheevos_leaderboards_enable, true, false, false); @@ -1568,7 +1568,8 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("input_overlay_enable", &settings->bools.input_overlay_enable, true, config_overlay_enable_default(), false); SETTING_BOOL("input_overlay_enable_autopreferred", &settings->bools.input_overlay_enable_autopreferred, true, true, false); SETTING_BOOL("input_overlay_show_physical_inputs", &settings->bools.input_overlay_show_physical_inputs, true, false, false); - SETTING_BOOL("input_overlay_hide_in_menu", &settings->bools.input_overlay_hide_in_menu, true, overlay_hide_in_menu, false); + SETTING_BOOL("input_overlay_hide_in_menu", &settings->bools.input_overlay_hide_in_menu, true, DEFAULT_OVERLAY_HIDE_IN_MENU, false); + SETTING_BOOL("input_overlay_show_mouse_cursor", &settings->bools.input_overlay_show_mouse_cursor, true, DEFAULT_OVERLAY_SHOW_MOUSE_CURSOR, false); #endif #ifdef HAVE_VIDEO_LAYOUT SETTING_BOOL("video_layout_enable", &settings->bools.video_layout_enable, true, true, false); @@ -1583,13 +1584,12 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, #ifdef HAVE_NETWORKING SETTING_BOOL("netplay_nat_traversal", &settings->bools.netplay_nat_traversal, true, true, false); #endif - SETTING_BOOL("block_sram_overwrite", &settings->bools.block_sram_overwrite, true, block_sram_overwrite, false); + SETTING_BOOL("block_sram_overwrite", &settings->bools.block_sram_overwrite, true, DEFAULT_BLOCK_SRAM_OVERWRITE, false); SETTING_BOOL("savestate_auto_index", &settings->bools.savestate_auto_index, true, savestate_auto_index, false); SETTING_BOOL("savestate_auto_save", &settings->bools.savestate_auto_save, true, savestate_auto_save, false); SETTING_BOOL("savestate_auto_load", &settings->bools.savestate_auto_load, true, savestate_auto_load, false); SETTING_BOOL("savestate_thumbnail_enable", &settings->bools.savestate_thumbnail_enable, true, savestate_thumbnail_enable, false); SETTING_BOOL("history_list_enable", &settings->bools.history_list_enable, true, def_history_list_enable, false); - SETTING_BOOL("playlist_entry_remove", &settings->bools.playlist_entry_remove, true, def_playlist_entry_remove, false); SETTING_BOOL("playlist_entry_rename", &settings->bools.playlist_entry_rename, true, def_playlist_entry_rename, false); SETTING_BOOL("game_specific_options", &settings->bools.game_specific_options, true, default_game_specific_options, false); SETTING_BOOL("auto_overrides_enable", &settings->bools.auto_overrides_enable, true, default_auto_overrides_enable, false); @@ -1598,10 +1598,10 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("scan_without_core_match", &settings->bools.scan_without_core_match, true, scan_without_core_match, false); SETTING_BOOL("sort_savefiles_enable", &settings->bools.sort_savefiles_enable, true, default_sort_savefiles_enable, false); SETTING_BOOL("sort_savestates_enable", &settings->bools.sort_savestates_enable, true, default_sort_savestates_enable, false); - SETTING_BOOL("config_save_on_exit", &settings->bools.config_save_on_exit, true, config_save_on_exit, false); - SETTING_BOOL("show_hidden_files", &settings->bools.show_hidden_files, true, show_hidden_files, false); + SETTING_BOOL("config_save_on_exit", &settings->bools.config_save_on_exit, true, DEFAULT_CONFIG_SAVE_ON_EXIT, false); + SETTING_BOOL("show_hidden_files", &settings->bools.show_hidden_files, true, DEFAULT_SHOW_HIDDEN_FILES, false); SETTING_BOOL("input_autodetect_enable", &settings->bools.input_autodetect_enable, true, input_autodetect_enable, false); - SETTING_BOOL("audio_rate_control", &settings->bools.audio_rate_control, true, rate_control, false); + SETTING_BOOL("audio_rate_control", &settings->bools.audio_rate_control, true, DEFAULT_RATE_CONTROL, false); #ifdef HAVE_WASAPI SETTING_BOOL("audio_wasapi_exclusive_mode", &settings->bools.audio_wasapi_exclusive_mode, true, wasapi_exclusive_mode, false); SETTING_BOOL("audio_wasapi_float_format", &settings->bools.audio_wasapi_float_format, true, wasapi_float_format, false); @@ -1613,7 +1613,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("screenshots_in_content_dir", &settings->bools.screenshots_in_content_dir, true, default_screenshots_in_content_dir, false); SETTING_BOOL("video_msg_bgcolor_enable", &settings->bools.video_msg_bgcolor_enable, true, message_bgcolor_enable, false); - SETTING_BOOL("video_window_show_decorations", &settings->bools.video_window_show_decorations, true, window_decorations, false); + SETTING_BOOL("video_window_show_decorations", &settings->bools.video_window_show_decorations, true, DEFAULT_WINDOW_DECORATIONS, false); SETTING_BOOL("video_window_save_positions", &settings->bools.video_window_save_positions, true, false, false); SETTING_BOOL("sustained_performance_mode", &settings->bools.sustained_performance_mode, true, sustained_performance_mode, false); @@ -1655,16 +1655,16 @@ static struct config_float_setting *populate_settings_float(settings_t *settings if (!tmp) return NULL; - SETTING_FLOAT("video_aspect_ratio", &settings->floats.video_aspect_ratio, true, aspect_ratio, false); + SETTING_FLOAT("video_aspect_ratio", &settings->floats.video_aspect_ratio, true, DEFAULT_ASPECT_RATIO, false); SETTING_FLOAT("video_scale", &settings->floats.video_scale, false, 0.0f, false); SETTING_FLOAT("crt_video_refresh_rate", &settings->floats.crt_video_refresh_rate, true, crt_refresh_rate, false); SETTING_FLOAT("video_refresh_rate", &settings->floats.video_refresh_rate, true, refresh_rate, false); - SETTING_FLOAT("audio_rate_control_delta", audio_get_float_ptr(AUDIO_ACTION_RATE_CONTROL_DELTA), true, rate_control_delta, false); - SETTING_FLOAT("audio_max_timing_skew", &settings->floats.audio_max_timing_skew, true, max_timing_skew, false); - SETTING_FLOAT("audio_volume", &settings->floats.audio_volume, true, audio_volume, false); - SETTING_FLOAT("audio_mixer_volume", &settings->floats.audio_mixer_volume, true, audio_mixer_volume, false); + SETTING_FLOAT("audio_rate_control_delta", audio_get_float_ptr(AUDIO_ACTION_RATE_CONTROL_DELTA), true, DEFAULT_RATE_CONTROL_DELTA, false); + SETTING_FLOAT("audio_max_timing_skew", &settings->floats.audio_max_timing_skew, true, DEFAULT_MAX_TIMING_SKEW, false); + SETTING_FLOAT("audio_volume", &settings->floats.audio_volume, true, DEFAULT_AUDIO_VOLUME, false); + SETTING_FLOAT("audio_mixer_volume", &settings->floats.audio_mixer_volume, true, DEFAULT_AUDIO_MIXER_VOLUME, false); #ifdef HAVE_OVERLAY - SETTING_FLOAT("input_overlay_opacity", &settings->floats.input_overlay_opacity, true, default_input_overlay_opacity, false); + SETTING_FLOAT("input_overlay_opacity", &settings->floats.input_overlay_opacity, true, DEFAULT_INPUT_OVERLAY_OPACITY, false); SETTING_FLOAT("input_overlay_scale", &settings->floats.input_overlay_scale, true, 1.0f, false); #endif #ifdef HAVE_MENU @@ -1676,9 +1676,9 @@ static struct config_float_setting *populate_settings_float(settings_t *settings #endif SETTING_FLOAT("video_message_pos_x", &settings->floats.video_msg_pos_x, true, message_pos_offset_x, false); SETTING_FLOAT("video_message_pos_y", &settings->floats.video_msg_pos_y, true, message_pos_offset_y, false); - SETTING_FLOAT("video_font_size", &settings->floats.video_font_size, true, font_size, false); - SETTING_FLOAT("fastforward_ratio", &settings->floats.fastforward_ratio, true, fastforward_ratio, false); - SETTING_FLOAT("slowmotion_ratio", &settings->floats.slowmotion_ratio, true, slowmotion_ratio, false); + SETTING_FLOAT("video_font_size", &settings->floats.video_font_size, true, DEFAULT_FONT_SIZE, false); + SETTING_FLOAT("fastforward_ratio", &settings->floats.fastforward_ratio, true, DEFAULT_FASTFORWARD_RATIO, false); + SETTING_FLOAT("slowmotion_ratio", &settings->floats.slowmotion_ratio, true, DEFAULT_SLOWMOTION_RATIO, false); SETTING_FLOAT("input_axis_threshold", input_driver_get_float(INPUT_ACTION_AXIS_THRESHOLD), true, axis_threshold, false); SETTING_FLOAT("input_analog_deadzone", &settings->floats.input_analog_deadzone, true, analog_deadzone, false); SETTING_FLOAT("input_analog_sensitivity", &settings->floats.input_analog_sensitivity, true, analog_sensitivity, false); @@ -1713,16 +1713,16 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings, #ifdef ANDROID SETTING_UINT("input_block_timeout", &settings->uints.input_block_timeout, true, 1, false); #endif - SETTING_UINT("rewind_granularity", &settings->uints.rewind_granularity, true, rewind_granularity, false); - SETTING_UINT("rewind_buffer_size_step", &settings->uints.rewind_buffer_size_step, true, rewind_buffer_size_step, false); - SETTING_UINT("autosave_interval", &settings->uints.autosave_interval, true, autosave_interval, false); + SETTING_UINT("rewind_granularity", &settings->uints.rewind_granularity, true, DEFAULT_REWIND_GRANULARITY, false); + SETTING_UINT("rewind_buffer_size_step", &settings->uints.rewind_buffer_size_step, true, DEFAULT_REWIND_BUFFER_SIZE_STEP, false); + SETTING_UINT("autosave_interval", &settings->uints.autosave_interval, true, DEFAULT_AUTOSAVE_INTERVAL, false); SETTING_UINT("libretro_log_level", &settings->uints.libretro_log_level, true, libretro_log_level, false); SETTING_UINT("keyboard_gamepad_mapping_type",&settings->uints.input_keyboard_gamepad_mapping_type, true, 1, false); SETTING_UINT("input_poll_type_behavior", &settings->uints.input_poll_type_behavior, true, 2, false); - SETTING_UINT("video_monitor_index", &settings->uints.video_monitor_index, true, monitor_index, false); - SETTING_UINT("video_fullscreen_x", &settings->uints.video_fullscreen_x, true, fullscreen_x, false); - SETTING_UINT("video_fullscreen_y", &settings->uints.video_fullscreen_y, true, fullscreen_y, false); - SETTING_UINT("video_window_opacity", &settings->uints.video_window_opacity, true, window_opacity, false); + SETTING_UINT("video_monitor_index", &settings->uints.video_monitor_index, true, DEFAULT_MONITOR_INDEX, false); + SETTING_UINT("video_fullscreen_x", &settings->uints.video_fullscreen_x, true, DEFAULT_FULLSCREEN_X, false); + SETTING_UINT("video_fullscreen_y", &settings->uints.video_fullscreen_y, true, DEFAULT_FULLSCREEN_Y, false); + SETTING_UINT("video_window_opacity", &settings->uints.video_window_opacity, true, DEFAULT_WINDOW_OPACITY, false); #ifdef HAVE_VIDEO_LAYOUT SETTING_UINT("video_layout_selected_view", &settings->uints.video_layout_selected_view, true, 0, false); #endif @@ -1733,7 +1733,9 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings, SETTING_UINT("network_remote_base_port", &settings->uints.network_remote_base_port, true, network_remote_base_port, false); #endif #ifdef GEKKO - SETTING_UINT("video_viwidth", &settings->uints.video_viwidth, true, video_viwidth, false); + SETTING_UINT("video_viwidth", &settings->uints.video_viwidth, true, DEFAULT_VIDEO_VI_WIDTH, false); + SETTING_UINT("video_overscan_correction_top", &settings->uints.video_overscan_correction_top, true, DEFAULT_VIDEO_OVERSCAN_CORRECTION_TOP, false); + SETTING_UINT("video_overscan_correction_bottom", &settings->uints.video_overscan_correction_bottom, true, DEFAULT_VIDEO_OVERSCAN_CORRECTION_BOTTOM, false); #endif #ifdef HAVE_MENU SETTING_UINT("dpi_override_value", &settings->uints.menu_dpi_override_value, true, menu_dpi_override_value, false); @@ -1779,20 +1781,20 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings, SETTING_UINT("ozone_menu_color_theme", &settings->uints.menu_ozone_color_theme, true, 1, false); #endif #endif - SETTING_UINT("audio_out_rate", &settings->uints.audio_out_rate, true, out_rate, false); + SETTING_UINT("audio_out_rate", &settings->uints.audio_out_rate, true, DEFAULT_OUTPUT_RATE, false); SETTING_UINT("custom_viewport_width", &settings->video_viewport_custom.width, false, 0 /* TODO */, false); SETTING_UINT("crt_switch_resolution_super", &settings->uints.crt_switch_resolution_super, true, crt_switch_resolution_super, false); SETTING_UINT("custom_viewport_height", &settings->video_viewport_custom.height, false, 0 /* TODO */, false); SETTING_UINT("custom_viewport_x", (unsigned*)&settings->video_viewport_custom.x, false, 0 /* TODO */, false); SETTING_UINT("custom_viewport_y", (unsigned*)&settings->video_viewport_custom.y, false, 0 /* TODO */, false); SETTING_UINT("content_history_size", &settings->uints.content_history_size, true, default_content_history_size, false); - SETTING_UINT("video_hard_sync_frames", &settings->uints.video_hard_sync_frames, true, hard_sync_frames, false); - SETTING_UINT("video_frame_delay", &settings->uints.video_frame_delay, true, frame_delay, false); - SETTING_UINT("video_max_swapchain_images", &settings->uints.video_max_swapchain_images, true, max_swapchain_images, false); - SETTING_UINT("video_swap_interval", &settings->uints.video_swap_interval, true, swap_interval, false); + SETTING_UINT("video_hard_sync_frames", &settings->uints.video_hard_sync_frames, true, DEFAULT_HARD_SYNC_FRAMES, false); + SETTING_UINT("video_frame_delay", &settings->uints.video_frame_delay, true, DEFAULT_FRAME_DELAY, false); + SETTING_UINT("video_max_swapchain_images", &settings->uints.video_max_swapchain_images, true, DEFAULT_MAX_SWAPCHAIN_IMAGES, false); + SETTING_UINT("video_swap_interval", &settings->uints.video_swap_interval, true, DEFAULT_SWAP_INTERVAL, false); SETTING_UINT("video_rotation", &settings->uints.video_rotation, true, ORIENTATION_NORMAL, false); SETTING_UINT("screen_orientation", &settings->uints.screen_orientation, true, ORIENTATION_NORMAL, false); - SETTING_UINT("aspect_ratio_index", &settings->uints.video_aspect_ratio_idx, true, aspect_ratio_idx, false); + SETTING_UINT("aspect_ratio_index", &settings->uints.video_aspect_ratio_idx, true, DEFAULT_ASPECT_RATIO_IDX, false); #ifdef HAVE_NETWORKING SETTING_UINT("netplay_ip_port", &settings->uints.netplay_port, true, RARCH_DEFAULT_PORT, false); SETTING_OVERRIDE(RARCH_OVERRIDE_SETTING_NETPLAY_IP_PORT); @@ -1822,10 +1824,10 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings, SETTING_UINT("video_stream_scale_factor", &settings->uints.video_stream_scale_factor, true, 1, false); SETTING_UINT("video_windowed_position_x", &settings->uints.window_position_x, true, 0, false); SETTING_UINT("video_windowed_position_y", &settings->uints.window_position_y, true, 0, false); - SETTING_UINT("video_windowed_position_width", &settings->uints.window_position_width, true, window_width, false); - SETTING_UINT("video_windowed_position_height", &settings->uints.window_position_height, true, window_height, false); + SETTING_UINT("video_windowed_position_width", &settings->uints.window_position_width, true, DEFAULT_WINDOW_WIDTH, false); + SETTING_UINT("video_windowed_position_height", &settings->uints.window_position_height, true, DEFAULT_WINDOW_HEIGHT, false); - SETTING_UINT("video_record_threads", &settings->uints.video_record_threads, true, video_record_threads, false); + SETTING_UINT("video_record_threads", &settings->uints.video_record_threads, true, DEFAULT_VIDEO_RECORD_THREADS, false); #ifdef HAVE_LIBNX SETTING_UINT("libnx_overclock", &settings->uints.libnx_overclock, true, SWITCH_DEFAULT_CPU_PROFILE, false); @@ -1836,6 +1838,7 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings, #endif #ifdef HAVE_MENU + SETTING_UINT("playlist_entry_remove_enable", &settings->uints.playlist_entry_remove_enable, true, playlist_entry_remove_enable, false); SETTING_UINT("playlist_show_inline_core_name", &settings->uints.playlist_show_inline_core_name, true, playlist_show_inline_core_name, false); SETTING_UINT("playlist_sublabel_runtime_type", &settings->uints.playlist_sublabel_runtime_type, true, playlist_sublabel_runtime_type, false); #endif @@ -1853,7 +1856,7 @@ static struct config_size_setting *populate_settings_size(settings_t *settings, if (!tmp) return NULL; - SETTING_SIZE("rewind_buffer_size", &settings->sizes.rewind_buffer_size, true, rewind_buffer_size, false); + SETTING_SIZE("rewind_buffer_size", &settings->sizes.rewind_buffer_size, true, DEFAULT_REWIND_BUFFER_SIZE, false); *size = count; @@ -2038,7 +2041,7 @@ void config_set_defaults(void) #else configuration_set_bool(settings, settings->bools.multimedia_builtin_mediaplayer_enable, false); #endif - settings->floats.video_scale = scale; + settings->floats.video_scale = DEFAULT_SCALE; if (g_defaults.settings.video_threaded_enable != DEFAULT_VIDEO_THREADED) video_driver_set_threaded(g_defaults.settings.video_threaded_enable); @@ -2056,7 +2059,7 @@ void config_set_defaults(void) audio_device, sizeof(settings->arrays.audio_device)); if (!g_defaults.settings.out_latency) - g_defaults.settings.out_latency = out_latency; + g_defaults.settings.out_latency = DEFAULT_OUT_LATENCY; settings->uints.audio_latency = g_defaults.settings.out_latency; @@ -2364,7 +2367,7 @@ void config_set_defaults(void) midi_output, sizeof(settings->arrays.midi_output)); /* Avoid reloading config on every content load */ - if (default_block_config_read) + if (DEFAULT_BLOCK_CONFIG_READ) rarch_ctl(RARCH_CTL_SET_BLOCK_CONFIG_READ, NULL); else rarch_ctl(RARCH_CTL_UNSET_BLOCK_CONFIG_READ, NULL); diff --git a/configuration.h b/configuration.h index 5662344110..d3c6a1e61d 100644 --- a/configuration.h +++ b/configuration.h @@ -129,6 +129,7 @@ typedef struct settings bool input_overlay_enable_autopreferred; bool input_overlay_hide_in_menu; bool input_overlay_show_physical_inputs; + bool input_overlay_show_mouse_cursor; bool input_descriptor_label_show; bool input_descriptor_hide_unbound; bool input_all_users_control_menu; @@ -275,7 +276,6 @@ typedef struct settings bool set_supports_no_game_enable; bool auto_screenshot_filename; bool history_list_enable; - bool playlist_entry_remove; bool playlist_entry_rename; bool rewind_enable; bool vrr_runloop_enable; @@ -449,6 +449,10 @@ typedef struct settings #ifdef HAVE_VIDEO_LAYOUT unsigned video_layout_selected_view; #endif +#ifdef GEKKO + unsigned video_overscan_correction_top; + unsigned video_overscan_correction_bottom; +#endif unsigned menu_timedate_style; unsigned menu_thumbnails; @@ -477,6 +481,7 @@ typedef struct settings unsigned menu_rgui_particle_effect; unsigned menu_ticker_type; + unsigned playlist_entry_remove_enable; unsigned playlist_show_inline_core_name; unsigned playlist_sublabel_runtime_type; diff --git a/dynamic.c b/dynamic.c index 94c71b8766..cccf337640 100644 --- a/dynamic.c +++ b/dynamic.c @@ -473,6 +473,33 @@ bool libretro_get_system_info(const char *path, return true; } +#define CORE_SYMBOLS(x) \ + x(retro_init); \ + x(retro_deinit); \ + x(retro_api_version); \ + x(retro_get_system_info); \ + x(retro_get_system_av_info); \ + x(retro_set_environment); \ + x(retro_set_video_refresh); \ + x(retro_set_audio_sample); \ + x(retro_set_audio_sample_batch); \ + x(retro_set_input_poll); \ + x(retro_set_input_state); \ + x(retro_set_controller_port_device); \ + x(retro_reset); \ + x(retro_run); \ + x(retro_serialize_size); \ + x(retro_serialize); \ + x(retro_unserialize); \ + x(retro_cheat_reset); \ + x(retro_cheat_set); \ + x(retro_load_game); \ + x(retro_load_game_special); \ + x(retro_unload_game); \ + x(retro_get_region); \ + x(retro_get_memory_data); \ + x(retro_get_memory_size); + /** * load_symbols: * @type : Type of core to be loaded. @@ -542,296 +569,40 @@ bool init_libretro_sym_custom(enum rarch_core_type type, #endif #endif - SYMBOL(retro_init); - SYMBOL(retro_deinit); - - SYMBOL(retro_api_version); - SYMBOL(retro_get_system_info); - SYMBOL(retro_get_system_av_info); - - SYMBOL(retro_set_environment); - SYMBOL(retro_set_video_refresh); - SYMBOL(retro_set_audio_sample); - SYMBOL(retro_set_audio_sample_batch); - SYMBOL(retro_set_input_poll); - SYMBOL(retro_set_input_state); - - SYMBOL(retro_set_controller_port_device); - - SYMBOL(retro_reset); - SYMBOL(retro_run); - - SYMBOL(retro_serialize_size); - SYMBOL(retro_serialize); - SYMBOL(retro_unserialize); - - SYMBOL(retro_cheat_reset); - SYMBOL(retro_cheat_set); - - SYMBOL(retro_load_game); - SYMBOL(retro_load_game_special); - - SYMBOL(retro_unload_game); - SYMBOL(retro_get_region); - SYMBOL(retro_get_memory_data); - SYMBOL(retro_get_memory_size); + CORE_SYMBOLS(SYMBOL); } break; case CORE_TYPE_DUMMY: - SYMBOL_DUMMY(retro_init); - SYMBOL_DUMMY(retro_deinit); - - SYMBOL_DUMMY(retro_api_version); - SYMBOL_DUMMY(retro_get_system_info); - SYMBOL_DUMMY(retro_get_system_av_info); - - SYMBOL_DUMMY(retro_set_environment); - SYMBOL_DUMMY(retro_set_video_refresh); - SYMBOL_DUMMY(retro_set_audio_sample); - SYMBOL_DUMMY(retro_set_audio_sample_batch); - SYMBOL_DUMMY(retro_set_input_poll); - SYMBOL_DUMMY(retro_set_input_state); - - SYMBOL_DUMMY(retro_set_controller_port_device); - - SYMBOL_DUMMY(retro_reset); - SYMBOL_DUMMY(retro_run); - - SYMBOL_DUMMY(retro_serialize_size); - SYMBOL_DUMMY(retro_serialize); - SYMBOL_DUMMY(retro_unserialize); - - SYMBOL_DUMMY(retro_cheat_reset); - SYMBOL_DUMMY(retro_cheat_set); - - SYMBOL_DUMMY(retro_load_game); - SYMBOL_DUMMY(retro_load_game_special); - - SYMBOL_DUMMY(retro_unload_game); - SYMBOL_DUMMY(retro_get_region); - SYMBOL_DUMMY(retro_get_memory_data); - SYMBOL_DUMMY(retro_get_memory_size); + CORE_SYMBOLS(SYMBOL_DUMMY); break; case CORE_TYPE_FFMPEG: #ifdef HAVE_FFMPEG - SYMBOL_FFMPEG(retro_init); - SYMBOL_FFMPEG(retro_deinit); - - SYMBOL_FFMPEG(retro_api_version); - SYMBOL_FFMPEG(retro_get_system_info); - SYMBOL_FFMPEG(retro_get_system_av_info); - - SYMBOL_FFMPEG(retro_set_environment); - SYMBOL_FFMPEG(retro_set_video_refresh); - SYMBOL_FFMPEG(retro_set_audio_sample); - SYMBOL_FFMPEG(retro_set_audio_sample_batch); - SYMBOL_FFMPEG(retro_set_input_poll); - SYMBOL_FFMPEG(retro_set_input_state); - - SYMBOL_FFMPEG(retro_set_controller_port_device); - - SYMBOL_FFMPEG(retro_reset); - SYMBOL_FFMPEG(retro_run); - - SYMBOL_FFMPEG(retro_serialize_size); - SYMBOL_FFMPEG(retro_serialize); - SYMBOL_FFMPEG(retro_unserialize); - - SYMBOL_FFMPEG(retro_cheat_reset); - SYMBOL_FFMPEG(retro_cheat_set); - - SYMBOL_FFMPEG(retro_load_game); - SYMBOL_FFMPEG(retro_load_game_special); - - SYMBOL_FFMPEG(retro_unload_game); - SYMBOL_FFMPEG(retro_get_region); - SYMBOL_FFMPEG(retro_get_memory_data); - SYMBOL_FFMPEG(retro_get_memory_size); + CORE_SYMBOLS(SYMBOL_FFMPEG); #endif break; case CORE_TYPE_MPV: #ifdef HAVE_MPV - SYMBOL_MPV(retro_init); - SYMBOL_MPV(retro_deinit); - - SYMBOL_MPV(retro_api_version); - SYMBOL_MPV(retro_get_system_info); - SYMBOL_MPV(retro_get_system_av_info); - - SYMBOL_MPV(retro_set_environment); - SYMBOL_MPV(retro_set_video_refresh); - SYMBOL_MPV(retro_set_audio_sample); - SYMBOL_MPV(retro_set_audio_sample_batch); - SYMBOL_MPV(retro_set_input_poll); - SYMBOL_MPV(retro_set_input_state); - - SYMBOL_MPV(retro_set_controller_port_device); - - SYMBOL_MPV(retro_reset); - SYMBOL_MPV(retro_run); - - SYMBOL_MPV(retro_serialize_size); - SYMBOL_MPV(retro_serialize); - SYMBOL_MPV(retro_unserialize); - - SYMBOL_MPV(retro_cheat_reset); - SYMBOL_MPV(retro_cheat_set); - - SYMBOL_MPV(retro_load_game); - SYMBOL_MPV(retro_load_game_special); - - SYMBOL_MPV(retro_unload_game); - SYMBOL_MPV(retro_get_region); - SYMBOL_MPV(retro_get_memory_data); - SYMBOL_MPV(retro_get_memory_size); + CORE_SYMBOLS(SYMBOL_MPV); #endif break; case CORE_TYPE_IMAGEVIEWER: #ifdef HAVE_IMAGEVIEWER - SYMBOL_IMAGEVIEWER(retro_init); - SYMBOL_IMAGEVIEWER(retro_deinit); - - SYMBOL_IMAGEVIEWER(retro_api_version); - SYMBOL_IMAGEVIEWER(retro_get_system_info); - SYMBOL_IMAGEVIEWER(retro_get_system_av_info); - - SYMBOL_IMAGEVIEWER(retro_set_environment); - SYMBOL_IMAGEVIEWER(retro_set_video_refresh); - SYMBOL_IMAGEVIEWER(retro_set_audio_sample); - SYMBOL_IMAGEVIEWER(retro_set_audio_sample_batch); - SYMBOL_IMAGEVIEWER(retro_set_input_poll); - SYMBOL_IMAGEVIEWER(retro_set_input_state); - - SYMBOL_IMAGEVIEWER(retro_set_controller_port_device); - - SYMBOL_IMAGEVIEWER(retro_reset); - SYMBOL_IMAGEVIEWER(retro_run); - - SYMBOL_IMAGEVIEWER(retro_serialize_size); - SYMBOL_IMAGEVIEWER(retro_serialize); - SYMBOL_IMAGEVIEWER(retro_unserialize); - - SYMBOL_IMAGEVIEWER(retro_cheat_reset); - SYMBOL_IMAGEVIEWER(retro_cheat_set); - - SYMBOL_IMAGEVIEWER(retro_load_game); - SYMBOL_IMAGEVIEWER(retro_load_game_special); - - SYMBOL_IMAGEVIEWER(retro_unload_game); - SYMBOL_IMAGEVIEWER(retro_get_region); - SYMBOL_IMAGEVIEWER(retro_get_memory_data); - SYMBOL_IMAGEVIEWER(retro_get_memory_size); + CORE_SYMBOLS(SYMBOL_IMAGEVIEWER); #endif break; case CORE_TYPE_NETRETROPAD: #if defined(HAVE_NETWORKING) && defined(HAVE_NETWORKGAMEPAD) - SYMBOL_NETRETROPAD(retro_init); - SYMBOL_NETRETROPAD(retro_deinit); - - SYMBOL_NETRETROPAD(retro_api_version); - SYMBOL_NETRETROPAD(retro_get_system_info); - SYMBOL_NETRETROPAD(retro_get_system_av_info); - - SYMBOL_NETRETROPAD(retro_set_environment); - SYMBOL_NETRETROPAD(retro_set_video_refresh); - SYMBOL_NETRETROPAD(retro_set_audio_sample); - SYMBOL_NETRETROPAD(retro_set_audio_sample_batch); - SYMBOL_NETRETROPAD(retro_set_input_poll); - SYMBOL_NETRETROPAD(retro_set_input_state); - - SYMBOL_NETRETROPAD(retro_set_controller_port_device); - - SYMBOL_NETRETROPAD(retro_reset); - SYMBOL_NETRETROPAD(retro_run); - - SYMBOL_NETRETROPAD(retro_serialize_size); - SYMBOL_NETRETROPAD(retro_serialize); - SYMBOL_NETRETROPAD(retro_unserialize); - - SYMBOL_NETRETROPAD(retro_cheat_reset); - SYMBOL_NETRETROPAD(retro_cheat_set); - - SYMBOL_NETRETROPAD(retro_load_game); - SYMBOL_NETRETROPAD(retro_load_game_special); - - SYMBOL_NETRETROPAD(retro_unload_game); - SYMBOL_NETRETROPAD(retro_get_region); - SYMBOL_NETRETROPAD(retro_get_memory_data); - SYMBOL_NETRETROPAD(retro_get_memory_size); + CORE_SYMBOLS(SYMBOL_NETRETROPAD); #endif break; case CORE_TYPE_VIDEO_PROCESSOR: #if defined(HAVE_VIDEOPROCESSOR) - SYMBOL_VIDEOPROCESSOR(retro_init); - SYMBOL_VIDEOPROCESSOR(retro_deinit); - - SYMBOL_VIDEOPROCESSOR(retro_api_version); - SYMBOL_VIDEOPROCESSOR(retro_get_system_info); - SYMBOL_VIDEOPROCESSOR(retro_get_system_av_info); - - SYMBOL_VIDEOPROCESSOR(retro_set_environment); - SYMBOL_VIDEOPROCESSOR(retro_set_video_refresh); - SYMBOL_VIDEOPROCESSOR(retro_set_audio_sample); - SYMBOL_VIDEOPROCESSOR(retro_set_audio_sample_batch); - SYMBOL_VIDEOPROCESSOR(retro_set_input_poll); - SYMBOL_VIDEOPROCESSOR(retro_set_input_state); - - SYMBOL_VIDEOPROCESSOR(retro_set_controller_port_device); - - SYMBOL_VIDEOPROCESSOR(retro_reset); - SYMBOL_VIDEOPROCESSOR(retro_run); - - SYMBOL_VIDEOPROCESSOR(retro_serialize_size); - SYMBOL_VIDEOPROCESSOR(retro_serialize); - SYMBOL_VIDEOPROCESSOR(retro_unserialize); - - SYMBOL_VIDEOPROCESSOR(retro_cheat_reset); - SYMBOL_VIDEOPROCESSOR(retro_cheat_set); - - SYMBOL_VIDEOPROCESSOR(retro_load_game); - SYMBOL_VIDEOPROCESSOR(retro_load_game_special); - - SYMBOL_VIDEOPROCESSOR(retro_unload_game); - SYMBOL_VIDEOPROCESSOR(retro_get_region); - SYMBOL_VIDEOPROCESSOR(retro_get_memory_data); - SYMBOL_VIDEOPROCESSOR(retro_get_memory_size); + CORE_SYMBOLS(SYMBOL_VIDEOPROCESSOR); #endif break; case CORE_TYPE_GONG: #ifdef HAVE_EASTEREGG - SYMBOL_GONG(retro_init); - SYMBOL_GONG(retro_deinit); - - SYMBOL_GONG(retro_api_version); - SYMBOL_GONG(retro_get_system_info); - SYMBOL_GONG(retro_get_system_av_info); - - SYMBOL_GONG(retro_set_environment); - SYMBOL_GONG(retro_set_video_refresh); - SYMBOL_GONG(retro_set_audio_sample); - SYMBOL_GONG(retro_set_audio_sample_batch); - SYMBOL_GONG(retro_set_input_poll); - SYMBOL_GONG(retro_set_input_state); - - SYMBOL_GONG(retro_set_controller_port_device); - - SYMBOL_GONG(retro_reset); - SYMBOL_GONG(retro_run); - - SYMBOL_GONG(retro_serialize_size); - SYMBOL_GONG(retro_serialize); - SYMBOL_GONG(retro_unserialize); - - SYMBOL_GONG(retro_cheat_reset); - SYMBOL_GONG(retro_cheat_set); - - SYMBOL_GONG(retro_load_game); - SYMBOL_GONG(retro_load_game_special); - - SYMBOL_GONG(retro_unload_game); - SYMBOL_GONG(retro_get_region); - SYMBOL_GONG(retro_get_memory_data); - SYMBOL_GONG(retro_get_memory_size); + CORE_SYMBOLS(SYMBOL_GONG); #endif break; } diff --git a/frontend/drivers/platform_unix.c b/frontend/drivers/platform_unix.c index 6c76344be0..d8fea7a599 100644 --- a/frontend/drivers/platform_unix.c +++ b/frontend/drivers/platform_unix.c @@ -1987,21 +1987,12 @@ static int frontend_unix_parse_drive_list(void *data, bool load_content) enum_idx, FILE_TYPE_DIRECTORY, 0, 0); } - - /* this path is not really desirable a user with root permissions could - screw up his system messing with it */ - menu_entries_append_enum(list, "/", - msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), - enum_idx, - FILE_TYPE_DIRECTORY, 0, 0); -#else - menu_entries_append_enum(list, "/", - msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), - enum_idx, - FILE_TYPE_DIRECTORY, 0, 0); #endif - + menu_entries_append_enum(list, "/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + enum_idx, + FILE_TYPE_DIRECTORY, 0, 0); #endif return 0; diff --git a/gfx/drivers/gx2_gfx.c b/gfx/drivers/gx2_gfx.c index 619d7796ed..8ee5465072 100644 --- a/gfx/drivers/gx2_gfx.c +++ b/gfx/drivers/gx2_gfx.c @@ -333,7 +333,8 @@ static void *wiiu_gfx_init(const video_info_t *video, wiiu->menu.texture.surface.format = GX2_SURFACE_FORMAT_UNORM_R4_G4_B4_A4; wiiu->menu.texture.surface.tileMode = GX2_TILE_MODE_LINEAR_ALIGNED; wiiu->menu.texture.viewNumSlices = 1; - wiiu->menu.texture.compMap = GX2_COMP_SEL(_A, _R, _G, _B); + /* Presumably an endian thing. RGBA, but swap R and G, then B and A. */ + wiiu->menu.texture.compMap = GX2_COMP_SEL(_G, _R, _A, _B); GX2CalcSurfaceSizeAndAlignment(&wiiu->menu.texture.surface); GX2InitTextureRegs(&wiiu->menu.texture); @@ -370,7 +371,7 @@ static void *wiiu_gfx_init(const video_info_t *video, wiiu->menu.v->coord.v = 0.0f; wiiu->menu.v->coord.width = 1.0f; wiiu->menu.v->coord.height = 1.0f; - wiiu->menu.v->color = 0xFFFFFF80; + wiiu->menu.v->color = 0xFFFFFFFF; GX2Invalidate(GX2_INVALIDATE_MODE_CPU_ATTRIBUTE_BUFFER, wiiu->menu.v, 4 * sizeof(*wiiu->menu.v)); wiiu->vertex_cache.size = 0x1000; @@ -1334,7 +1335,8 @@ static bool wiiu_gfx_frame(void *data, const void *frame, GX2SetAttribBuffer(0, 4 * sizeof(*wiiu->menu.v), sizeof(*wiiu->menu.v), wiiu->menu.v); GX2SetPixelTexture(&wiiu->menu.texture, sprite_shader.ps.samplerVars[0].location); - GX2SetPixelSampler(&wiiu->sampler_linear[RARCH_WRAP_DEFAULT], + GX2SetPixelSampler(wiiu->smooth ? &wiiu->sampler_linear[RARCH_WRAP_DEFAULT] : + &wiiu->sampler_nearest[RARCH_WRAP_DEFAULT], sprite_shader.ps.samplerVars[0].location); GX2DrawEx(GX2_PRIMITIVE_MODE_POINTS, 1, 0, 1); @@ -1675,14 +1677,14 @@ static void wiiu_gfx_set_texture_frame(void *data, const void *frame, bool rgb32 GX2Invalidate(GX2_INVALIDATE_MODE_CPU_TEXTURE, wiiu->menu.texture.surface.image, wiiu->menu.texture.surface.imageSize); - wiiu->menu.v->pos.x = 0.0f; - wiiu->menu.v->pos.y = 0.0f; - wiiu->menu.v->pos.width = width; - wiiu->menu.v->pos.height = height; + wiiu->menu.v->pos.x = wiiu->vp.x; + wiiu->menu.v->pos.y = wiiu->vp.y; + wiiu->menu.v->pos.width = wiiu->vp.width; + wiiu->menu.v->pos.height = wiiu->vp.height; wiiu->menu.v->coord.u = 0.0f; wiiu->menu.v->coord.v = 0.0f; - wiiu->menu.v->coord.width = (float)width / wiiu->texture.surface.width; - wiiu->menu.v->coord.height = (float)height / wiiu->texture.surface.height; + wiiu->menu.v->coord.width = (float)width / wiiu->menu.texture.surface.width; + wiiu->menu.v->coord.height = (float)height / wiiu->menu.texture.surface.height; GX2Invalidate(GX2_INVALIDATE_MODE_CPU_ATTRIBUTE_BUFFER, wiiu->menu.v, 4 * sizeof(*wiiu->menu.v)); } diff --git a/gfx/drivers/gx_gfx.c b/gfx/drivers/gx_gfx.c index a5c0ab0a76..ee88e7221f 100644 --- a/gfx/drivers/gx_gfx.c +++ b/gfx/drivers/gx_gfx.c @@ -95,6 +95,8 @@ typedef struct gx_video bool menu_texture_enable; video_viewport_t vp; unsigned scale; + unsigned overscan_correction_top; + unsigned overscan_correction_bottom; #ifdef HAVE_OVERLAY struct gx_overlay_data *overlay; unsigned overlays; @@ -909,7 +911,7 @@ static void convert_texture32(const uint32_t *_src, uint32_t *_dst, } } -static void gx_resize(void *data) +static void gx_resize(void *data, settings_t *settings) { int gamma; unsigned degrees; @@ -918,10 +920,9 @@ static void gx_resize(void *data) float top = 1, bottom = -1, left = -1, right = 1; int x = 0, y = 0; gx_video_t *gx = (gx_video_t*)data; - settings_t *settings = config_get_ptr(); const global_t *global = global_get_ptr(); - if (!gx) + if (!gx || !settings) return; width = gx->vp.full_width; @@ -994,6 +995,24 @@ static void gx_resize(void *data) } } + /* Overscan correction */ + if ((settings->uints.video_overscan_correction_top > 0) || + (settings->uints.video_overscan_correction_bottom > 0)) + { + float current_aspect = (float)width / (float)height; + int new_height = height - (settings->uints.video_overscan_correction_top + + settings->uints.video_overscan_correction_bottom); + int new_width = (int)((new_height * current_aspect) + 0.5f); + + if ((new_height > 0) && (new_width > 0)) + { + x += (int)((float)(width - new_width) * 0.5f); + y += (int)settings->uints.video_overscan_correction_top; + width = (unsigned)new_width; + height = (unsigned)new_height; + } + } + if(gx_isValidXOrigin(gx_xOrigin + x)) { gx_mode.viXOrigin = gx_xOrigin + x; @@ -1506,21 +1525,30 @@ static bool gx_frame(void *data, const void *frame, video_frame_info_t *video_info) { char fps_text_buf[128]; + settings_t *settings = config_get_ptr(); gx_video_t *gx = (gx_video_t*)data; u8 clear_efb = GX_FALSE; uint32_t level = 0; fps_text_buf[0] = '\0'; - if(!gx || (!frame && !gx->menu_texture_enable)) + if(!gx || (!frame && !gx->menu_texture_enable) || !settings) return true; if (!frame) width = height = 4; /* draw a black square in the background */ + if ((gx->overscan_correction_top != settings->uints.video_overscan_correction_top) || + (gx->overscan_correction_bottom != settings->uints.video_overscan_correction_bottom)) + { + gx->overscan_correction_top = settings->uints.video_overscan_correction_top; + gx->overscan_correction_bottom = settings->uints.video_overscan_correction_bottom; + gx->should_resize = true; + } + if(gx->should_resize) { - gx_resize(gx); + gx_resize(gx, settings); clear_efb = GX_TRUE; } diff --git a/gfx/drivers_context/drm_ctx.c b/gfx/drivers_context/drm_ctx.c index 756b596524..b4ca18da1f 100644 --- a/gfx/drivers_context/drm_ctx.c +++ b/gfx/drivers_context/drm_ctx.c @@ -909,7 +909,14 @@ static uint32_t gfx_ctx_drm_get_flags(void *data) if (drm->core_hw_context_enable) BIT32_SET(flags, GFX_CTX_FLAGS_GL_CORE_CONTEXT); - BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_GLSL); + if (string_is_equal(video_driver_get_ident(), "glcore")) + { +#ifdef HAVE_SLANG + BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_SLANG); +#endif + } + else + BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_GLSL); return flags; } diff --git a/gfx/drivers_context/khr_display_ctx.c b/gfx/drivers_context/khr_display_ctx.c index 7967b6de86..28c4eb5270 100644 --- a/gfx/drivers_context/khr_display_ctx.c +++ b/gfx/drivers_context/khr_display_ctx.c @@ -14,6 +14,7 @@ */ #include +#include #ifdef HAVE_CONFIG_H #include "../../config.h" @@ -154,9 +155,42 @@ error: } static void gfx_ctx_khr_display_input_driver(void *data, - const char *name, + const char *joypad_name, const input_driver_t **input, void **input_data) { +#ifdef HAVE_X11 + settings_t *settings = config_get_ptr(); + + /* We cannot use the X11 input driver for DRM/KMS */ + if (string_is_equal(settings->arrays.input_driver, "x")) + { +#ifdef HAVE_UDEV + { + /* Try to set it to udev instead */ + void *udev = input_udev.init(joypad_name); + if (udev) + { + *input = &input_udev; + *input_data = udev; + return; + } + } +#endif +#if defined(__linux__) && !defined(ANDROID) + { + /* Try to set it to linuxraw instead */ + void *linuxraw = input_linuxraw.init(joypad_name); + if (linuxraw) + { + *input = &input_linuxraw; + *input_data = linuxraw; + return; + } + } +#endif + } +#endif + *input = NULL; *input_data = NULL; } diff --git a/gfx/drivers_context/wgl_ctx.c b/gfx/drivers_context/wgl_ctx.c index 1eeb38e804..433d657710 100644 --- a/gfx/drivers_context/wgl_ctx.c +++ b/gfx/drivers_context/wgl_ctx.c @@ -816,7 +816,12 @@ static uint32_t gfx_ctx_wgl_get_flags(void *data) } if (string_is_equal(video_driver_get_ident(), "gl1")) { } - else if (string_is_equal(video_driver_get_ident(), "glcore")) { } + else if (string_is_equal(video_driver_get_ident(), "glcore")) + { +#ifdef HAVE_SLANG + BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_SLANG); +#endif + } else { #ifdef HAVE_CG diff --git a/input/include/blissbox.h b/input/include/blissbox.h index 2bcc865846..35686fe02e 100644 --- a/input/include/blissbox.h +++ b/input/include/blissbox.h @@ -41,15 +41,17 @@ const blissbox_pad_type_t blissbox_pad_types[] = {"A5200", 6}, {"A5200_TB", 50}, {"A7800", 4}, - {"ATARI_KEYPAD", 43}, {"ATARI", 0}, + {"ATARI_KEYPAD", 43}, {"ATMARK", 10}, {"BALLY", 42}, {"CD32", 24}, {"CDI", 33}, {"COL", 1}, + {"COL_FLASHBACK", 48}, /* 3.0 */ {"DC_ASCI", 15}, {"DC_PAD", 16}, + {"DC_TWIN", 35}, /* 3.0 */ {"FC_ARKANOID", 53}, {"FC_NES", 52}, {"GC", 9}, @@ -57,7 +59,6 @@ const blissbox_pad_type_t blissbox_pad_types[] = {"GEN_3", 20}, {"GEN_6", 21}, {"GRAVIS_EX", 38}, - {"gx4000", 2}, {"HAMMERHEAD", 40}, {"HPD", 7}, {"INTELI", 14}, @@ -66,6 +67,9 @@ const blissbox_pad_type_t blissbox_pad_types[] = {"N64", 19}, {"NEO", 49}, {"NES", 17}, + {"NES_ARKANOID", 30}, + {"NES_GUN", 28}, + {"NES_POWERPAD", 36}, {"PADDLES", 41}, {"PC_FX", 26}, {"PC_GAMEPAD", 46}, @@ -73,27 +77,28 @@ const blissbox_pad_type_t blissbox_pad_types[] = {"PSX_DS", 115}, {"PSX_DS2", 121}, {"PSX_FS", 83}, + {"PSX_JOGCON", 227}, /* 3.0 */ {"PSX_NEGCON", 51}, {"PSX_WHEEL", 12}, {"SAC", 34}, {"SATURN_ANALOG", 8}, {"SATURN_DIGITAL", 3}, {"SMS", 22}, + {"SNES", 27}, + {"SNESS_NTT", 47}, /* 3.0 */ {"SPEEK", 45}, {"TG16", 23}, + {"TG16_6BUTTON", 54}, /* 3.0 */ {"THREE_DO", 25}, {"THREE_DO_ANALOG", 37}, {"VEC", 5}, - {"WII_NUNCHUK", 13}, - {"ZXSINC", 44}, - {"NES_ARKANOID", 30}, - {"NES_GUN", 28}, - {"NES_POWERPAD", 36}, - {"SNES", 27}, {"V_BOY", 29}, {"WII_CLASSIC", 31}, + {"WII_DRUM", 55}, /* 3.0 */ {"WII_MPLUS", 32}, - {"PSX_JOGCON", 227}, + {"WII_NUNCHUK", 13}, + {"ZXSINC", 44}, + {"gx4000", 2}, {NULL, 0}, /* used to mark unconnected ports, do not remove */ }; diff --git a/input/input_overlay.c b/input/input_overlay.c index 6943ef23e2..aa0f26e282 100644 --- a/input/input_overlay.c +++ b/input/input_overlay.c @@ -602,6 +602,7 @@ void input_overlay_loaded(retro_task_t *task, overlay_task_data_t *data = (overlay_task_data_t*)task_data; input_overlay_t *ol = NULL; const video_overlay_interface_t *iface = NULL; + settings_t *settings = config_get_ptr(); if (err) return; @@ -642,6 +643,10 @@ void input_overlay_loaded(retro_task_t *task, overlay_ptr = ol; free(data); + + if (!settings->bools.input_overlay_show_mouse_cursor) + video_driver_hide_mouse(); + return; abort_load: diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index af24385026..13d2b5d714 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -202,7 +202,7 @@ MSG_HASH(MENU_ENUM_LABEL_CONTENT_DATABASE_DIRECTORY, MSG_HASH(MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE, "content_history_size") MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_REMOVE, - "playlist_entry_remove") + "playlist_entry_remove_enable") MSG_HASH(MENU_ENUM_LABEL_CONTENT_SETTINGS, "quick_menu") MSG_HASH(MENU_ENUM_LABEL_CORE_ASSETS_DIRECTORY, @@ -571,6 +571,8 @@ MSG_HASH(MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, "overlay_show_physical_inputs") MSG_HASH(MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, "overlay_show_physical_inputs_port") +MSG_HASH(MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_MOUSE_CURSOR, + "overlay_show_mouse_cursor") MSG_HASH(MENU_ENUM_LABEL_INPUT_PLAYER_ANALOG_DPAD_MODE, "input_player%u_analog_dpad_mode") MSG_HASH(MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR, @@ -1343,6 +1345,10 @@ MSG_HASH(MENU_ENUM_LABEL_VIDEO_VIEWPORT_CUSTOM_Y, "video_viewport_custom_y") MSG_HASH(MENU_ENUM_LABEL_VIDEO_VI_WIDTH, "video_vi_width") +MSG_HASH(MENU_ENUM_LABEL_VIDEO_OVERSCAN_CORRECTION_TOP, + "video_overscan_correction_top") +MSG_HASH(MENU_ENUM_LABEL_VIDEO_OVERSCAN_CORRECTION_BOTTOM, + "video_overscan_correction_bottom") MSG_HASH(MENU_ENUM_LABEL_VIDEO_VSYNC, "video_vsync") MSG_HASH(MENU_ENUM_LABEL_VIDEO_ADAPTIVE_VSYNC, diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index a858fea710..4912e6b0b4 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -1420,6 +1420,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, "Show Inputs On Overlay" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_MOUSE_CURSOR, + "Show Mouse Cursor With Overlay" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, "Show Inputs Listen Port" @@ -2174,6 +2178,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_QUIT_RETROARCH, "Quit RetroArch" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RESTART_RETROARCH, + "Restart RetroArch" + ) #endif MSG_HASH( MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ANALOG, @@ -2378,10 +2386,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, "Restart" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESTART_RETROARCH, - "Restart RetroArch" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESUME, "Resume" @@ -3772,6 +3776,22 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_VI_WIDTH, "Set VI Screen Width" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_OVERSCAN_CORRECTION_TOP, + "Overscan Correction (Top)" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_OVERSCAN_CORRECTION_TOP, + "Adjust display overscan cropping by reducing image size by specified number of scanlines (taken from top of screen). Note: May introduce scaling artefacts." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_OVERSCAN_CORRECTION_BOTTOM, + "Overscan Correction (Bottom)" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_OVERSCAN_CORRECTION_BOTTOM, + "Adjust display overscan cropping by reducing image size by specified number of scanlines (taken from bottom of screen). Note: May introduce scaling artefacts." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC, "Vertical Sync (Vsync)" @@ -5516,6 +5536,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, "Select the port for the overlay to listen to if Show Inputs On Overlay is enabled." ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_MOUSE_CURSOR, + "Show the mouse cursor when using an onscreen overlay." + ) MSG_HASH( MENU_ENUM_SUBLABEL_PLAYLISTS_TAB, "Scanned content matching the database will appear here." @@ -8619,6 +8643,18 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_INLINE_CORE_DISPLAY_NEVER, "Never" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_HIST_FAV, + "History & Favorites" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_ALL, + "All Playlists" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_NONE, + "OFF" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_SORT_ALPHABETICAL, "Sort playlists alphabetically" diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index 925c5d2e6d..0df61f1b55 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -250,6 +250,7 @@ default_sublabel_macro(action_bind_sublabel_video_message_pos_x, MENU_ default_sublabel_macro(action_bind_sublabel_video_message_pos_y, MENU_ENUM_SUBLABEL_VIDEO_MESSAGE_POS_Y) default_sublabel_macro(action_bind_sublabel_video_font_size, MENU_ENUM_SUBLABEL_VIDEO_FONT_SIZE) default_sublabel_macro(action_bind_sublabel_input_overlay_hide_in_menu, MENU_ENUM_SUBLABEL_INPUT_OVERLAY_HIDE_IN_MENU) +default_sublabel_macro(action_bind_sublabel_input_overlay_show_mouse_cursor, MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_MOUSE_CURSOR) default_sublabel_macro(action_bind_sublabel_content_collection_list, MENU_ENUM_SUBLABEL_PLAYLISTS_TAB) default_sublabel_macro(action_bind_sublabel_video_scale_integer, MENU_ENUM_SUBLABEL_VIDEO_SCALE_INTEGER) default_sublabel_macro(action_bind_sublabel_video_gpu_screenshot, MENU_ENUM_SUBLABEL_VIDEO_GPU_SCREENSHOT) @@ -580,6 +581,11 @@ default_sublabel_macro(action_bind_sublabel_video_3ds_lcd_bottom, MENU default_sublabel_macro(action_bind_sublabel_video_3ds_display_mode, MENU_ENUM_SUBLABEL_VIDEO_3DS_DISPLAY_MODE) #endif +#if defined(GEKKO) +default_sublabel_macro(action_bind_sublabel_video_overscan_correction_top, MENU_ENUM_SUBLABEL_VIDEO_OVERSCAN_CORRECTION_TOP) +default_sublabel_macro(action_bind_sublabel_video_overscan_correction_bottom, MENU_ENUM_SUBLABEL_VIDEO_OVERSCAN_CORRECTION_BOTTOM) +#endif + default_sublabel_macro(action_bind_sublabel_playlist_show_sublabels, MENU_ENUM_SUBLABEL_PLAYLIST_SHOW_SUBLABELS) default_sublabel_macro(action_bind_sublabel_menu_rgui_border_filler_enable, MENU_ENUM_SUBLABEL_MENU_RGUI_BORDER_FILLER_ENABLE) default_sublabel_macro(action_bind_sublabel_menu_rgui_border_filler_thickness_enable, MENU_ENUM_SUBLABEL_MENU_RGUI_BORDER_FILLER_THICKNESS_ENABLE) @@ -2018,6 +2024,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_overlay_show_physical_inputs_port); break; + case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_MOUSE_CURSOR: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_overlay_show_mouse_cursor); + break; case MENU_ENUM_LABEL_VIDEO_FONT_SIZE: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_font_size); break; @@ -2502,6 +2511,14 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_VIDEO_3DS_DISPLAY_MODE: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_3ds_display_mode); break; +#endif +#if defined(GEKKO) + case MENU_ENUM_LABEL_VIDEO_OVERSCAN_CORRECTION_TOP: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_overscan_correction_top); + break; + case MENU_ENUM_LABEL_VIDEO_OVERSCAN_CORRECTION_BOTTOM: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_overscan_correction_bottom); + break; #endif case MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_LOAD: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheat_apply_after_load); diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index f539fb00e4..57990cdfd4 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -63,18 +63,6 @@ #include #include -#if defined(GEKKO) -#define RGUI_TERM_START_X(fb_width) (fb_width / 21) -#define RGUI_TERM_START_Y(fb_height) (fb_height / 9) -#define RGUI_TERM_WIDTH(fb_width) (((fb_width - RGUI_TERM_START_X(fb_width) - RGUI_TERM_START_X(fb_width)) / (FONT_WIDTH_STRIDE))) -#define RGUI_TERM_HEIGHT(fb_height) (((fb_height - RGUI_TERM_START_Y(fb_height) - RGUI_TERM_START_Y(fb_height)) / (FONT_HEIGHT_STRIDE))) -#else -#define RGUI_TERM_START_X(fb_width) rgui_term_layout.start_x -#define RGUI_TERM_START_Y(fb_height) rgui_term_layout.start_y -#define RGUI_TERM_WIDTH(fb_width) rgui_term_layout.width -#define RGUI_TERM_HEIGHT(fb_height) rgui_term_layout.height -#endif - #define MAX_FB_WIDTH 426 #define RGUI_ENTRY_VALUE_MAXLEN 19 @@ -533,7 +521,7 @@ typedef struct unsigned particle_effect; bool extended_ascii_enable; float scroll_y; - char *msgbox; + char msgbox[1024]; unsigned color_theme; rgui_colors_t colors; bool is_playlist; @@ -761,7 +749,7 @@ typedef struct unsigned width; unsigned height; bool is_valid; - char *path; + char path[PATH_MAX_LENGTH]; uint16_t *data; } thumbnail_t; @@ -771,7 +759,7 @@ static thumbnail_t fs_thumbnail = { 0, 0, false, - NULL, + {0}, NULL }; @@ -781,7 +769,7 @@ static thumbnail_t mini_thumbnail = { 0, 0, false, - NULL, + {0}, NULL }; @@ -791,7 +779,7 @@ static thumbnail_t mini_left_thumbnail = { 0, 0, false, - NULL, + {0}, NULL }; @@ -935,27 +923,27 @@ static uint16_t (*argb32_to_pixel_platform_format)(uint32_t col) = argb32_to_rgb static void rgui_set_pixel_format_function(void) { - const char *driver_ident = video_driver_get_ident(); - - /* Default fallback... */ - if (string_is_empty(driver_ident)) - { - argb32_to_pixel_platform_format = argb32_to_rgba4444; - return; - } - - if ( string_is_equal(driver_ident, "ps2")) /* PS2 */ - argb32_to_pixel_platform_format = argb32_to_abgr1555; - else if (string_is_equal(driver_ident, "gx")) /* GEKKO */ - argb32_to_pixel_platform_format = argb32_to_rgb5a3; - else if (string_is_equal(driver_ident, "psp1")) /* PSP */ - argb32_to_pixel_platform_format = argb32_to_abgr4444; - else if (string_is_equal(driver_ident, "d3d10") || /* D3D10/11/12 */ - string_is_equal(driver_ident, "d3d11") || - string_is_equal(driver_ident, "d3d12")) - argb32_to_pixel_platform_format = argb32_to_bgra4444; - else - argb32_to_pixel_platform_format = argb32_to_rgba4444; + const char *driver_ident = video_driver_get_ident(); + + /* Default fallback... */ + if (string_is_empty(driver_ident)) + { + argb32_to_pixel_platform_format = argb32_to_rgba4444; + return; + } + + if ( string_is_equal(driver_ident, "ps2")) /* PS2 */ + argb32_to_pixel_platform_format = argb32_to_abgr1555; + else if (string_is_equal(driver_ident, "gx")) /* GEKKO */ + argb32_to_pixel_platform_format = argb32_to_rgb5a3; + else if (string_is_equal(driver_ident, "psp1")) /* PSP */ + argb32_to_pixel_platform_format = argb32_to_abgr4444; + else if (string_is_equal(driver_ident, "d3d10") || /* D3D10/11/12 */ + string_is_equal(driver_ident, "d3d11") || + string_is_equal(driver_ident, "d3d12")) + argb32_to_pixel_platform_format = argb32_to_bgra4444; + else + argb32_to_pixel_platform_format = argb32_to_rgba4444; } /* ============================== @@ -1603,13 +1591,12 @@ static bool request_thumbnail( thumbnail->width = 0; thumbnail->height = 0; thumbnail->is_valid = false; - free(thumbnail->path); - thumbnail->path = NULL; + thumbnail->path[0] = '\0'; /* Ensure that new path is valid... */ if (!string_is_empty(path)) { - thumbnail->path = strdup(path); + strlcpy(thumbnail->path, path, sizeof(thumbnail->path)); if (path_is_valid(path)) { /* Would like to cancel any existing image load tasks @@ -1992,25 +1979,25 @@ static void rgui_render_mini_thumbnail(rgui_t *rgui, thumbnail_t *thumbnail, enu menu_display_get_fb_size(&fb_width, &fb_height, &fb_pitch); - term_width = RGUI_TERM_WIDTH(fb_width) * FONT_WIDTH_STRIDE; - term_height = RGUI_TERM_HEIGHT(fb_height) * FONT_HEIGHT_STRIDE; + term_width = rgui_term_layout.width * FONT_WIDTH_STRIDE; + term_height = rgui_term_layout.height * FONT_HEIGHT_STRIDE; /* Sanity check (this can never, ever happen, so just return * instead of trying to crop the thumbnail image...) */ if ((thumbnail_fullwidth > term_width) || (thumbnail->height > term_height)) return; - fb_x_offset = (RGUI_TERM_START_X(fb_width) + term_width) - + fb_x_offset = (rgui_term_layout.start_x + term_width) - (thumbnail->width + ((thumbnail_fullwidth - thumbnail->width) >> 1)); if (((thumbnail_id == MENU_THUMBNAIL_RIGHT) && !settings->bools.menu_rgui_swap_thumbnails) || ((thumbnail_id == MENU_THUMBNAIL_LEFT) && settings->bools.menu_rgui_swap_thumbnails)) { - fb_y_offset = RGUI_TERM_START_Y(fb_height) + ((thumbnail->max_height - thumbnail->height) >> 1); + fb_y_offset = rgui_term_layout.start_y + ((thumbnail->max_height - thumbnail->height) >> 1); } else { - fb_y_offset = (RGUI_TERM_START_Y(fb_height) + term_height) - + fb_y_offset = (rgui_term_layout.start_y + term_height) - (thumbnail->height + ((thumbnail->max_height - thumbnail->height) >> 1)); } @@ -2656,12 +2643,14 @@ static void rgui_set_message(void *data, const char *message) { rgui_t *rgui = (rgui_t*)data; - if (!rgui || !message || !*message) + if (!rgui || !message) return; - if (!string_is_empty(rgui->msgbox)) - free(rgui->msgbox); - rgui->msgbox = strdup(message); + rgui->msgbox[0] = '\0'; + + if (!string_is_empty(message)) + strlcpy(rgui->msgbox, message, sizeof(rgui->msgbox)); + rgui->force_redraw = true; } @@ -2694,13 +2683,13 @@ static void rgui_render_messagebox(rgui_t *rgui, const char *message) char *msg = list->elems[i].data; unsigned msglen = (unsigned)utf8len(msg); - if (msglen > RGUI_TERM_WIDTH(fb_width)) + if (msglen > rgui_term_layout.width) { - msg[RGUI_TERM_WIDTH(fb_width) - 2] = '.'; - msg[RGUI_TERM_WIDTH(fb_width) - 1] = '.'; - msg[RGUI_TERM_WIDTH(fb_width) - 0] = '.'; - msg[RGUI_TERM_WIDTH(fb_width) + 1] = '\0'; - msglen = RGUI_TERM_WIDTH(fb_width); + msg[rgui_term_layout.width - 2] = '.'; + msg[rgui_term_layout.width - 1] = '.'; + msg[rgui_term_layout.width - 0] = '.'; + msg[rgui_term_layout.width + 1] = '\0'; + msglen = rgui_term_layout.width; } line_width = msglen * FONT_WIDTH_STRIDE - 1 + 6 + 10; @@ -3170,13 +3159,13 @@ static void rgui_render(void *data, bool is_idle) } /* Do not scroll if all items are visible. */ - if (menu_entries_get_size() <= RGUI_TERM_HEIGHT(fb_height)) + if (menu_entries_get_size() <= rgui_term_layout.height) { size_t start = 0; menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start); } - bottom = (int)(menu_entries_get_size() - RGUI_TERM_HEIGHT(fb_height)); + bottom = (int)(menu_entries_get_size() - rgui_term_layout.height); menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &old_start); if (old_start > (unsigned)bottom) @@ -3186,8 +3175,8 @@ static void rgui_render(void *data, bool is_idle) entries_end = menu_entries_get_size(); - end = ((old_start + RGUI_TERM_HEIGHT(fb_height)) <= (entries_end)) ? - old_start + RGUI_TERM_HEIGHT(fb_height) : entries_end; + end = ((old_start + rgui_term_layout.height) <= (entries_end)) ? + old_start + rgui_term_layout.height : entries_end; /* Render background */ rgui_render_background(); @@ -3228,13 +3217,13 @@ static void rgui_render(void *data, bool is_idle) { /* Format thumbnail title */ ticker.s = thumbnail_title_buf; - ticker.len = RGUI_TERM_WIDTH(fb_width) - 10; + ticker.len = rgui_term_layout.width - 10; ticker.str = thumbnail_title; ticker.selected = true; menu_animation_ticker(&ticker); title_width = (unsigned)(utf8len(thumbnail_title_buf) * FONT_WIDTH_STRIDE); - title_x = RGUI_TERM_START_X(fb_width) + ((RGUI_TERM_WIDTH(fb_width) * FONT_WIDTH_STRIDE) - title_width) / 2; + title_x = rgui_term_layout.start_x + ((rgui_term_layout.width * FONT_WIDTH_STRIDE) - title_width) / 2; /* Draw thumbnail title background */ rgui_fill_rect(rgui_frame_buf.data, fb_width, fb_height, @@ -3254,10 +3243,10 @@ static void rgui_render(void *data, bool is_idle) size_t title_max_len; size_t title_len; unsigned title_x; - unsigned title_y = RGUI_TERM_START_Y(fb_height) - FONT_HEIGHT_STRIDE; - unsigned term_end_x = RGUI_TERM_START_X(fb_width) + (RGUI_TERM_WIDTH(fb_width) * FONT_WIDTH_STRIDE); + unsigned title_y = rgui_term_layout.start_y - FONT_HEIGHT_STRIDE; + unsigned term_end_x = rgui_term_layout.start_x + (rgui_term_layout.width * FONT_WIDTH_STRIDE); unsigned timedate_x = term_end_x - (5 * FONT_WIDTH_STRIDE); - unsigned core_name_len = ((timedate_x - RGUI_TERM_START_X(fb_width)) / FONT_WIDTH_STRIDE) - 3; + unsigned core_name_len = ((timedate_x - rgui_term_layout.start_x) / FONT_WIDTH_STRIDE) - 3; bool show_mini_thumbnails = rgui->is_playlist && settings->bools.menu_rgui_inline_thumbnails; bool show_thumbnail = false; bool show_left_thumbnail = false; @@ -3286,7 +3275,7 @@ static void rgui_render(void *data, bool is_idle) * the vertical centre of RGUI's 'terminal' * (required to determine whether a particular entry * is adjacent to the 'right' or 'left' thumbnail) */ - term_mid_point = (unsigned)((RGUI_TERM_HEIGHT(fb_height) * 0.5f) + 0.5f) - 1; + term_mid_point = (unsigned)((rgui_term_layout.height * 0.5f) + 0.5f) - 1; } /* Show battery indicator, if required */ @@ -3354,7 +3343,7 @@ static void rgui_render(void *data, bool is_idle) } /* Print title */ - title_max_len = RGUI_TERM_WIDTH(fb_width) - 5 - (powerstate_len > 5 ? powerstate_len : 5); + title_max_len = rgui_term_layout.width - 5 - (powerstate_len > 5 ? powerstate_len : 5); title_buf[0] = '\0'; ticker.s = title_buf; @@ -3367,8 +3356,8 @@ static void rgui_render(void *data, bool is_idle) string_to_upper(title_buf); title_len = utf8len(title_buf); - title_x = RGUI_TERM_START_X(fb_width) + - (RGUI_TERM_WIDTH(fb_width) - title_len) * FONT_WIDTH_STRIDE / 2; + title_x = rgui_term_layout.start_x + + (rgui_term_layout.width - title_len) * FONT_WIDTH_STRIDE / 2; /* Title is always centred, unless it is long enough * to infringe upon the battery indicator, in which case @@ -3381,8 +3370,8 @@ static void rgui_render(void *data, bool is_idle) title_buf, rgui->colors.title_color, rgui->colors.shadow_color); /* Print menu entries */ - x = RGUI_TERM_START_X(fb_width); - y = RGUI_TERM_START_Y(fb_height); + x = rgui_term_layout.start_x; + y = rgui_term_layout.start_y; menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &new_start); @@ -3417,13 +3406,13 @@ static void rgui_render(void *data, bool is_idle) menu_entry_get_value(&entry, &entry_value); /* Get base length of entry title field */ - entry_title_max_len = RGUI_TERM_WIDTH(fb_width) - (1 + 2); + entry_title_max_len = rgui_term_layout.width - (1 + 2); /* If showing mini thumbnails, reduce title field length accordingly */ if (show_mini_thumbnails) { unsigned term_offset = settings->bools.menu_rgui_swap_thumbnails ? - (RGUI_TERM_HEIGHT(fb_height) - (i - new_start) - 1) : (i - new_start); + (rgui_term_layout.height - (i - new_start) - 1) : (i - new_start); unsigned thumbnail_width = 0; /* Note: @@ -3436,7 +3425,7 @@ static void rgui_render(void *data, bool is_idle) * standard layout (even though it always will...), * so have to check whether there are an odd or even * number of entries... */ - if((RGUI_TERM_HEIGHT(fb_height) & 1) == 0) + if((rgui_term_layout.height & 1) == 0) { /* Even number of entries */ if ((show_thumbnail && (term_offset <= term_mid_point)) || @@ -3535,9 +3524,9 @@ static void rgui_render(void *data, bool is_idle) blit_line( fb_width, - RGUI_TERM_START_X(fb_width) + FONT_WIDTH_STRIDE, - (RGUI_TERM_HEIGHT(fb_height) * FONT_HEIGHT_STRIDE) + - RGUI_TERM_START_Y(fb_height) + 2, sublabel_buf, + rgui_term_layout.start_x + FONT_WIDTH_STRIDE, + (rgui_term_layout.height * FONT_HEIGHT_STRIDE) + + rgui_term_layout.start_y + 2, sublabel_buf, rgui->colors.hover_color, rgui->colors.shadow_color); } else if (settings->bools.menu_core_enable) @@ -3557,9 +3546,9 @@ static void rgui_render(void *data, bool is_idle) blit_line( fb_width, - RGUI_TERM_START_X(fb_width) + FONT_WIDTH_STRIDE, - (RGUI_TERM_HEIGHT(fb_height) * FONT_HEIGHT_STRIDE) + - RGUI_TERM_START_Y(fb_height) + 2, core_title_buf, + rgui_term_layout.start_x + FONT_WIDTH_STRIDE, + (rgui_term_layout.height * FONT_HEIGHT_STRIDE) + + rgui_term_layout.start_y + 2, core_title_buf, rgui->colors.hover_color, rgui->colors.shadow_color); } @@ -3580,8 +3569,8 @@ static void rgui_render(void *data, bool is_idle) blit_line( fb_width, timedate_x, - (RGUI_TERM_HEIGHT(fb_height) * FONT_HEIGHT_STRIDE) + - RGUI_TERM_START_Y(fb_height) + 2, timedate, + (rgui_term_layout.height * FONT_HEIGHT_STRIDE) + + rgui_term_layout.start_y + 2, timedate, rgui->colors.hover_color, rgui->colors.shadow_color); } } @@ -3589,8 +3578,7 @@ static void rgui_render(void *data, bool is_idle) if (!string_is_empty(rgui->msgbox)) { rgui_render_messagebox(rgui, rgui->msgbox); - free(rgui->msgbox); - rgui->msgbox = NULL; + rgui->msgbox[0] = '\0'; rgui->force_redraw = true; } @@ -3634,10 +3622,7 @@ static void rgui_thumbnail_free(thumbnail_t *thumbnail) thumbnail->width = 0; thumbnail->height = 0; thumbnail->is_valid = false; - - if (!string_is_empty(thumbnail->path)) - free(thumbnail->path); - thumbnail->path = NULL; + thumbnail->path[0] = '\0'; if (thumbnail->data) free(thumbnail->data); @@ -3940,8 +3925,8 @@ static void *rgui_init(void **userdata, bool video_is_threaded) rgui->menu_title[0] = '\0'; rgui->menu_sublabel[0] = '\0'; - /* Set pixel format conversion function */ - rgui_set_pixel_format_function(); + /* Set pixel format conversion function */ + rgui_set_pixel_format_function(); /* Cache initial video settings */ rgui_get_video_config(&rgui->content_video_settings); @@ -4281,16 +4266,14 @@ static void rgui_update_thumbnail_image(void *userdata) mini_thumbnail.width = 0; mini_thumbnail.height = 0; mini_thumbnail.is_valid = false; - free(mini_thumbnail.path); - mini_thumbnail.path = NULL; + mini_thumbnail.path[0] = '\0'; } else { fs_thumbnail.width = 0; fs_thumbnail.height = 0; fs_thumbnail.is_valid = false; - free(fs_thumbnail.path); - fs_thumbnail.path = NULL; + fs_thumbnail.path[0] = '\0'; } } @@ -4316,20 +4299,17 @@ static void rgui_refresh_thumbnail_image(void *userdata) fs_thumbnail.width = 0; fs_thumbnail.height = 0; fs_thumbnail.is_valid = false; - free(fs_thumbnail.path); - fs_thumbnail.path = NULL; + fs_thumbnail.path[0] = '\0'; mini_thumbnail.width = 0; mini_thumbnail.height = 0; mini_thumbnail.is_valid = false; - free(mini_thumbnail.path); - mini_thumbnail.path = NULL; + mini_thumbnail.path[0] = '\0'; mini_left_thumbnail.width = 0; mini_left_thumbnail.height = 0; mini_left_thumbnail.is_valid = false; - free(mini_left_thumbnail.path); - mini_left_thumbnail.path = NULL; + mini_left_thumbnail.path[0] = '\0'; /* Only load thumbnails if currently viewing a * playlist (note that thumbnails are loaded @@ -4393,8 +4373,7 @@ static void rgui_update_menu_sublabel(rgui_t *rgui) static void rgui_navigation_set(void *data, bool scroll) { - size_t start, fb_pitch; - unsigned fb_width, fb_height; + size_t start; bool do_set_start = false; size_t end = menu_entries_get_size(); size_t selection = menu_navigation_get_selection(); @@ -4409,23 +4388,20 @@ static void rgui_navigation_set(void *data, bool scroll) if (!scroll) return; - menu_display_get_fb_size(&fb_width, &fb_height, - &fb_pitch); - - if (selection < RGUI_TERM_HEIGHT(fb_height) /2) + if (selection < rgui_term_layout.height /2) { start = 0; do_set_start = true; } - else if (selection >= (RGUI_TERM_HEIGHT(fb_height) /2) - && selection < (end - RGUI_TERM_HEIGHT(fb_height) /2)) + else if (selection >= (rgui_term_layout.height /2) + && selection < (end - rgui_term_layout.height /2)) { - start = selection - RGUI_TERM_HEIGHT(fb_height) /2; + start = selection - rgui_term_layout.height /2; do_set_start = true; } - else if (selection >= (end - RGUI_TERM_HEIGHT(fb_height) /2)) + else if (selection >= (end - rgui_term_layout.height /2)) { - start = end - RGUI_TERM_HEIGHT(fb_height); + start = end - rgui_term_layout.height; do_set_start = true; } diff --git a/menu/menu_defines.h b/menu/menu_defines.h index b3c67ce1ad..8456ee4dc4 100644 --- a/menu/menu_defines.h +++ b/menu/menu_defines.h @@ -349,6 +349,14 @@ enum playlist_inline_core_display_type PLAYLIST_INLINE_CORE_DISPLAY_LAST }; +enum playlist_entry_remove_enable_type +{ + PLAYLIST_ENTRY_REMOVE_ENABLE_HIST_FAV = 0, + PLAYLIST_ENTRY_REMOVE_ENABLE_ALL, + PLAYLIST_ENTRY_REMOVE_ENABLE_NONE, + PLAYLIST_ENTRY_REMOVE_ENABLE_LAST +}; + typedef uintptr_t menu_texture_item; typedef struct menu_display_ctx_clearcolor diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index ba40aa41cc..47b3c238cc 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2042,13 +2042,34 @@ static int menu_displaylist_parse_horizontal_content_actions( MENU_ENUM_LABEL_RENAME_ENTRY, FILE_TYPE_PLAYLIST_ENTRY, 0, idx); - if (settings->bools.playlist_entry_remove && - !settings->bools.kiosk_mode_enable) - menu_entries_append_enum(info->list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY), - msg_hash_to_str(MENU_ENUM_LABEL_DELETE_ENTRY), - MENU_ENUM_LABEL_DELETE_ENTRY, - MENU_SETTING_ACTION_DELETE_ENTRY, 0, 0); + if (!settings->bools.kiosk_mode_enable) + { + bool remove_entry_enabled = false; + + if (settings->uints.playlist_entry_remove_enable == PLAYLIST_ENTRY_REMOVE_ENABLE_ALL) + remove_entry_enabled = true; + else if (settings->uints.playlist_entry_remove_enable == PLAYLIST_ENTRY_REMOVE_ENABLE_HIST_FAV) + { + char system[PATH_MAX_LENGTH]; + system[0] = '\0'; + + menu_driver_get_thumbnail_system(system, sizeof(system)); + + if (!string_is_empty(system)) + remove_entry_enabled = string_is_equal(system, "history") || + string_is_equal(system, "favorites") || + string_is_equal(system, "images_history") || + string_is_equal(system, "music_history") || + string_is_equal(system, "video_history"); + } + + if (remove_entry_enabled) + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY), + msg_hash_to_str(MENU_ENUM_LABEL_DELETE_ENTRY), + MENU_ENUM_LABEL_DELETE_ENTRY, + MENU_SETTING_ACTION_DELETE_ENTRY, 0, 0); + } if (settings->bools.quick_menu_show_add_to_favorites) { @@ -3889,6 +3910,7 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct {MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU, PARSE_ONLY_BOOL }, {MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, PARSE_ONLY_BOOL }, {MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT,PARSE_ONLY_BOOL }, + {MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_MOUSE_CURSOR, PARSE_ONLY_BOOL }, {MENU_ENUM_LABEL_OVERLAY_PRESET, PARSE_ONLY_PATH }, {MENU_ENUM_LABEL_OVERLAY_OPACITY, PARSE_ONLY_FLOAT }, {MENU_ENUM_LABEL_OVERLAY_SCALE, PARSE_ONLY_FLOAT }, @@ -5627,7 +5649,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, {MENU_ENUM_LABEL_HISTORY_LIST_ENABLE, PARSE_ONLY_BOOL}, {MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE, PARSE_ONLY_UINT}, {MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME, PARSE_ONLY_BOOL}, - {MENU_ENUM_LABEL_PLAYLIST_ENTRY_REMOVE, PARSE_ONLY_BOOL}, + {MENU_ENUM_LABEL_PLAYLIST_ENTRY_REMOVE, PARSE_ONLY_UINT}, {MENU_ENUM_LABEL_PLAYLIST_SORT_ALPHABETICAL, PARSE_ONLY_BOOL}, {MENU_ENUM_LABEL_PLAYLIST_USE_OLD_FORMAT, PARSE_ONLY_BOOL}, {MENU_ENUM_LABEL_PLAYLIST_SHOW_INLINE_CORE_NAME, PARSE_ONLY_UINT}, @@ -5914,6 +5936,12 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist_parse_settings_enum(info->list, MENU_ENUM_LABEL_VIDEO_VFILTER, PARSE_ONLY_BOOL, false); + menu_displaylist_parse_settings_enum(info->list, + MENU_ENUM_LABEL_VIDEO_OVERSCAN_CORRECTION_TOP, + PARSE_ONLY_UINT, false); + menu_displaylist_parse_settings_enum(info->list, + MENU_ENUM_LABEL_VIDEO_OVERSCAN_CORRECTION_BOTTOM, + PARSE_ONLY_UINT, false); menu_displaylist_parse_settings_enum(info->list, MENU_ENUM_LABEL_VIDEO_ROTATION, PARSE_ONLY_UINT, false); diff --git a/menu/menu_setting.c b/menu/menu_setting.c index df6fa76b1f..0bacca3e79 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -3862,6 +3862,36 @@ static void setting_get_string_representation_uint_playlist_inline_core_display_ } } +static void setting_get_string_representation_uint_playlist_entry_remove_enable( + rarch_setting_t *setting, + char *s, size_t len) +{ + if (!setting) + return; + + switch (*setting->value.target.unsigned_integer) + { + case PLAYLIST_ENTRY_REMOVE_ENABLE_HIST_FAV: + strlcpy(s, + msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_HIST_FAV), + len); + break; + case PLAYLIST_ENTRY_REMOVE_ENABLE_ALL: + strlcpy(s, + msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_ALL), + len); + break; + case PLAYLIST_ENTRY_REMOVE_ENABLE_NONE: + strlcpy(s, + msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_NONE), + len); + break; + } +} + #if defined(_3DS) static void setting_get_string_representation_uint_video_3ds_display_mode( rarch_setting_t *setting, @@ -6649,7 +6679,7 @@ static bool setting_append_list( &subgroup_info, parent_group); -#if !defined(IOS) +#if !defined(IOS) && !defined(HAVE_LAKKA) if (frontend_driver_has_fork()) { CONFIG_ACTION( @@ -7293,13 +7323,13 @@ static bool setting_append_list( bool_entries[0].target = &settings->bools.video_shared_context; bool_entries[0].name_enum_idx = MENU_ENUM_LABEL_VIDEO_SHARED_CONTEXT; bool_entries[0].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_VIDEO_SHARED_CONTEXT; - bool_entries[0].default_value = video_shared_context; + bool_entries[0].default_value = DEFAULT_VIDEO_SHARED_CONTEXT; bool_entries[0].flags = SD_FLAG_ADVANCED; bool_entries[1].target = &settings->bools.load_dummy_on_core_shutdown; bool_entries[1].name_enum_idx = MENU_ENUM_LABEL_DUMMY_ON_CORE_SHUTDOWN; bool_entries[1].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_DUMMY_ON_CORE_SHUTDOWN; - bool_entries[1].default_value = load_dummy_on_core_shutdown; + bool_entries[1].default_value = DEFAULT_LOAD_DUMMY_ON_CORE_SHUTDOWN; bool_entries[1].flags = SD_FLAG_ADVANCED; bool_entries[2].target = &settings->bools.set_supports_no_game_enable; @@ -7357,13 +7387,13 @@ static bool setting_append_list( bool_entries[0].target = &settings->bools.config_save_on_exit; bool_entries[0].name_enum_idx = MENU_ENUM_LABEL_CONFIG_SAVE_ON_EXIT; bool_entries[0].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_CONFIG_SAVE_ON_EXIT; - bool_entries[0].default_value = config_save_on_exit; + bool_entries[0].default_value = DEFAULT_CONFIG_SAVE_ON_EXIT; bool_entries[0].flags = SD_FLAG_NONE; bool_entries[1].target = &settings->bools.show_hidden_files; bool_entries[1].name_enum_idx = MENU_ENUM_LABEL_SHOW_HIDDEN_FILES; bool_entries[1].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_SHOW_HIDDEN_FILES; - bool_entries[1].default_value = show_hidden_files; + bool_entries[1].default_value = DEFAULT_SHOW_HIDDEN_FILES; bool_entries[1].flags = SD_FLAG_NONE; bool_entries[2].target = &settings->bools.game_specific_options; @@ -7413,7 +7443,7 @@ static bool setting_append_list( &settings->bools.video_shader_enable, MENU_ENUM_LABEL_VIDEO_SHADERS_ENABLE, MENU_ENUM_LABEL_VALUE_VIDEO_SHADERS_ENABLE, - shader_enable, + DEFAULT_SHADER_ENABLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -7552,7 +7582,7 @@ static bool setting_append_list( bool_entries[2].target = &settings->bools.block_sram_overwrite; bool_entries[2].name_enum_idx = MENU_ENUM_LABEL_BLOCK_SRAM_OVERWRITE; bool_entries[2].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_BLOCK_SRAM_OVERWRITE; - bool_entries[2].default_value = block_sram_overwrite; + bool_entries[2].default_value = DEFAULT_BLOCK_SRAM_OVERWRITE; bool_entries[2].flags = SD_FLAG_NONE; bool_entries[3].target = &settings->bools.savestate_auto_index; @@ -7627,7 +7657,7 @@ static bool setting_append_list( &settings->uints.autosave_interval, MENU_ENUM_LABEL_AUTOSAVE_INTERVAL, MENU_ENUM_LABEL_VALUE_AUTOSAVE_INTERVAL, - autosave_interval, + DEFAULT_AUTOSAVE_INTERVAL, &group_info, &subgroup_info, parent_group, @@ -7703,7 +7733,7 @@ static bool setting_append_list( &settings->bools.rewind_enable, MENU_ENUM_LABEL_REWIND_ENABLE, MENU_ENUM_LABEL_VALUE_REWIND_ENABLE, - rewind_enable, + DEFAULT_REWIND_ENABLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -7719,7 +7749,7 @@ static bool setting_append_list( &settings->uints.rewind_granularity, MENU_ENUM_LABEL_REWIND_GRANULARITY, MENU_ENUM_LABEL_VALUE_REWIND_GRANULARITY, - rewind_granularity, + DEFAULT_REWIND_GRANULARITY, &group_info, &subgroup_info, parent_group, @@ -7734,7 +7764,7 @@ static bool setting_append_list( &settings->sizes.rewind_buffer_size, MENU_ENUM_LABEL_REWIND_BUFFER_SIZE, MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE, - rewind_buffer_size, + DEFAULT_REWIND_BUFFER_SIZE, &group_info, &subgroup_info, parent_group, @@ -7748,7 +7778,7 @@ static bool setting_append_list( &settings->uints.rewind_buffer_size_step, MENU_ENUM_LABEL_REWIND_BUFFER_SIZE_STEP, MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE_STEP, - rewind_buffer_size_step, + DEFAULT_REWIND_BUFFER_SIZE_STEP, &group_info, &subgroup_info, parent_group, @@ -7774,7 +7804,7 @@ static bool setting_append_list( &settings->bools.apply_cheats_after_load, MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_LOAD, MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_AFTER_LOAD, - apply_cheats_after_load, + DEFAULT_APPLY_CHEATS_AFTER_LOAD, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -7789,7 +7819,7 @@ static bool setting_append_list( &settings->bools.apply_cheats_after_toggle, MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_TOGGLE, MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_AFTER_TOGGLE, - apply_cheats_after_toggle, + DEFAULT_APPLY_CHEATS_AFTER_TOGGLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8220,7 +8250,7 @@ static bool setting_append_list( &settings->bools.video_fps_show, MENU_ENUM_LABEL_FPS_SHOW, MENU_ENUM_LABEL_VALUE_FPS_SHOW, - fps_show, + DEFAULT_FPS_SHOW, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8235,7 +8265,7 @@ static bool setting_append_list( &settings->bools.video_memory_show, MENU_ENUM_LABEL_MEMORY_SHOW, MENU_ENUM_LABEL_VALUE_MEMORY_SHOW, - memory_show, + DEFAULT_MEMORY_SHOW, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8250,7 +8280,7 @@ static bool setting_append_list( &settings->bools.video_statistics_show, MENU_ENUM_LABEL_STATISTICS_SHOW, MENU_ENUM_LABEL_VALUE_STATISTICS_SHOW, - statistics_show, + DEFAULT_STATISTICS_SHOW, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8265,7 +8295,7 @@ static bool setting_append_list( &settings->bools.video_framecount_show, MENU_ENUM_LABEL_FRAMECOUNT_SHOW, MENU_ENUM_LABEL_VALUE_FRAMECOUNT_SHOW, - framecount_show, + DEFAULT_FRAMECOUNT_SHOW, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8290,7 +8320,7 @@ static bool setting_append_list( &settings->uints.video_monitor_index, MENU_ENUM_LABEL_VIDEO_MONITOR_INDEX, MENU_ENUM_LABEL_VALUE_VIDEO_MONITOR_INDEX, - monitor_index, + DEFAULT_MONITOR_INDEX, &group_info, &subgroup_info, parent_group, @@ -8308,7 +8338,7 @@ static bool setting_append_list( &settings->bools.video_fullscreen, MENU_ENUM_LABEL_VIDEO_FULLSCREEN, MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN, - fullscreen, + DEFAULT_FULLSCREEN, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8327,7 +8357,7 @@ static bool setting_append_list( &settings->bools.video_windowed_fullscreen, MENU_ENUM_LABEL_VIDEO_WINDOWED_FULLSCREEN, MENU_ENUM_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN, - windowed_fullscreen, + DEFAULT_WINDOWED_FULLSCREEN, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8343,7 +8373,7 @@ static bool setting_append_list( &settings->uints.video_fullscreen_x, MENU_ENUM_LABEL_VIDEO_FULLSCREEN_X, MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_X, - fullscreen_x, + DEFAULT_FULLSCREEN_X, &group_info, &subgroup_info, parent_group, @@ -8358,7 +8388,7 @@ static bool setting_append_list( &settings->uints.video_fullscreen_y, MENU_ENUM_LABEL_VIDEO_FULLSCREEN_Y, MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_Y, - fullscreen_y, + DEFAULT_FULLSCREEN_Y, &group_info, &subgroup_info, parent_group, @@ -8453,7 +8483,7 @@ static bool setting_append_list( &settings->uints.video_aspect_ratio_idx, MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_INDEX, MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX, - aspect_ratio_idx, + DEFAULT_ASPECT_RATIO_IDX, &group_info, &subgroup_info, parent_group, @@ -8602,7 +8632,7 @@ static bool setting_append_list( &settings->floats.video_scale, MENU_ENUM_LABEL_VIDEO_SCALE, MENU_ENUM_LABEL_VALUE_VIDEO_SCALE, - scale, + DEFAULT_SCALE, "%.1fx", &group_info, &subgroup_info, @@ -8617,7 +8647,7 @@ static bool setting_append_list( &settings->uints.window_position_width, MENU_ENUM_LABEL_VIDEO_WINDOW_WIDTH, MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_WIDTH, - window_width, + DEFAULT_WINDOW_WIDTH, &group_info, &subgroup_info, parent_group, @@ -8631,7 +8661,7 @@ static bool setting_append_list( &settings->uints.window_position_height, MENU_ENUM_LABEL_VIDEO_WINDOW_HEIGHT, MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_HEIGHT, - window_height, + DEFAULT_WINDOW_HEIGHT, &group_info, &subgroup_info, parent_group, @@ -8645,7 +8675,7 @@ static bool setting_append_list( &settings->uints.video_window_opacity, MENU_ENUM_LABEL_VIDEO_WINDOW_OPACITY, MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_OPACITY, - window_opacity, + DEFAULT_WINDOW_OPACITY, &group_info, &subgroup_info, parent_group, @@ -8662,7 +8692,7 @@ static bool setting_append_list( &settings->bools.video_window_show_decorations, MENU_ENUM_LABEL_VIDEO_WINDOW_SHOW_DECORATIONS, MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SHOW_DECORATIONS, - window_decorations, + DEFAULT_WINDOW_DECORATIONS, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8693,7 +8723,7 @@ static bool setting_append_list( &settings->bools.video_scale_integer, MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER, MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER, - scale_integer, + DEFAULT_SCALE_INTEGER, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8713,7 +8743,7 @@ static bool setting_append_list( &settings->uints.video_viwidth, MENU_ENUM_LABEL_VIDEO_VI_WIDTH, MENU_ENUM_LABEL_VALUE_VIDEO_VI_WIDTH, - video_viwidth, + DEFAULT_VIDEO_VI_WIDTH, &group_info, &subgroup_info, parent_group, @@ -8726,7 +8756,7 @@ static bool setting_append_list( &settings->bools.video_vfilter, MENU_ENUM_LABEL_VIDEO_VFILTER, MENU_ENUM_LABEL_VALUE_VIDEO_VFILTER, - video_vfilter, + DEFAULT_VIDEO_VFILTER, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8735,6 +8765,32 @@ static bool setting_append_list( general_write_handler, general_read_handler, SD_FLAG_NONE); + + CONFIG_UINT( + list, list_info, + &settings->uints.video_overscan_correction_top, + MENU_ENUM_LABEL_VIDEO_OVERSCAN_CORRECTION_TOP, + MENU_ENUM_LABEL_VALUE_VIDEO_OVERSCAN_CORRECTION_TOP, + DEFAULT_VIDEO_OVERSCAN_CORRECTION_TOP, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 24, 1, true, true); + + CONFIG_UINT( + list, list_info, + &settings->uints.video_overscan_correction_bottom, + MENU_ENUM_LABEL_VIDEO_OVERSCAN_CORRECTION_BOTTOM, + MENU_ENUM_LABEL_VALUE_VIDEO_OVERSCAN_CORRECTION_BOTTOM, + DEFAULT_VIDEO_OVERSCAN_CORRECTION_BOTTOM, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 24, 1, true, true); #endif CONFIG_BOOL( @@ -8742,7 +8798,7 @@ static bool setting_append_list( &settings->bools.video_smooth, MENU_ENUM_LABEL_VIDEO_SMOOTH, MENU_ENUM_LABEL_VALUE_VIDEO_SMOOTH, - video_smooth, + DEFAULT_VIDEO_SMOOTH, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8822,7 +8878,7 @@ static bool setting_append_list( &settings->bools.video_vsync, MENU_ENUM_LABEL_VIDEO_VSYNC, MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC, - vsync, + DEFAULT_VSYNC, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8838,7 +8894,7 @@ static bool setting_append_list( &settings->uints.video_swap_interval, MENU_ENUM_LABEL_VIDEO_SWAP_INTERVAL, MENU_ENUM_LABEL_VALUE_VIDEO_SWAP_INTERVAL, - swap_interval, + DEFAULT_SWAP_INTERVAL, &group_info, &subgroup_info, parent_group, @@ -8861,7 +8917,7 @@ static bool setting_append_list( &settings->uints.video_max_swapchain_images, MENU_ENUM_LABEL_VIDEO_MAX_SWAPCHAIN_IMAGES, MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, - max_swapchain_images, + DEFAULT_MAX_SWAPCHAIN_IMAGES, &group_info, &subgroup_info, parent_group, @@ -8882,7 +8938,7 @@ static bool setting_append_list( &settings->bools.video_hard_sync, MENU_ENUM_LABEL_VIDEO_HARD_SYNC, MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC, - hard_sync, + DEFAULT_HARD_SYNC, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8898,7 +8954,7 @@ static bool setting_append_list( &settings->uints.video_hard_sync_frames, MENU_ENUM_LABEL_VIDEO_HARD_SYNC_FRAMES, MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC_FRAMES, - hard_sync_frames, + DEFAULT_HARD_SYNC_FRAMES, &group_info, &subgroup_info, parent_group, @@ -8919,7 +8975,7 @@ static bool setting_append_list( &settings->bools.video_adaptive_vsync, MENU_ENUM_LABEL_VIDEO_ADAPTIVE_VSYNC, MENU_ENUM_LABEL_VALUE_VIDEO_ADAPTIVE_VSYNC, - false, + DEFAULT_ADAPTIVE_VSYNC, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8937,7 +8993,7 @@ static bool setting_append_list( &settings->uints.video_frame_delay, MENU_ENUM_LABEL_VIDEO_FRAME_DELAY, MENU_ENUM_LABEL_VALUE_VIDEO_FRAME_DELAY, - frame_delay, + DEFAULT_FRAME_DELAY, &group_info, &subgroup_info, parent_group, @@ -8958,7 +9014,7 @@ static bool setting_append_list( &settings->bools.video_black_frame_insertion, MENU_ENUM_LABEL_VIDEO_BLACK_FRAME_INSERTION, MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION, - black_frame_insertion, + DEFAULT_BLACK_FRAME_INSERTION, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -9003,7 +9059,7 @@ static bool setting_append_list( &settings->bools.video_crop_overscan, MENU_ENUM_LABEL_VIDEO_CROP_OVERSCAN, MENU_ENUM_LABEL_VALUE_VIDEO_CROP_OVERSCAN, - crop_overscan, + DEFAULT_CROP_OVERSCAN, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -9103,7 +9159,7 @@ static bool setting_append_list( &settings->bools.crt_switch_custom_refresh_enable, MENU_ENUM_LABEL_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, - audio_enable, + DEFAULT_AUDIO_ENABLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -9222,7 +9278,7 @@ static bool setting_append_list( &settings->bools.audio_enable, MENU_ENUM_LABEL_AUDIO_ENABLE, MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE, - audio_enable, + DEFAULT_AUDIO_ENABLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -9270,7 +9326,7 @@ static bool setting_append_list( &settings->floats.audio_volume, MENU_ENUM_LABEL_AUDIO_VOLUME, MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, - audio_volume, + DEFAULT_AUDIO_VOLUME, "%.1f", &group_info, &subgroup_info, @@ -9285,7 +9341,7 @@ static bool setting_append_list( &settings->floats.audio_mixer_volume, MENU_ENUM_LABEL_AUDIO_MIXER_VOLUME, MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_VOLUME, - audio_mixer_volume, + DEFAULT_AUDIO_MIXER_VOLUME, "%.1f", &group_info, &subgroup_info, @@ -9313,7 +9369,7 @@ static bool setting_append_list( &settings->bools.audio_sync, MENU_ENUM_LABEL_AUDIO_SYNC, MENU_ENUM_LABEL_VALUE_AUDIO_SYNC, - audio_sync, + DEFAULT_AUDIO_SYNC, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -9331,7 +9387,7 @@ static bool setting_append_list( MENU_ENUM_LABEL_AUDIO_LATENCY, MENU_ENUM_LABEL_VALUE_AUDIO_LATENCY, g_defaults.settings.out_latency ? - g_defaults.settings.out_latency : out_latency, + g_defaults.settings.out_latency : DEFAULT_OUT_LATENCY, &group_info, &subgroup_info, parent_group, @@ -9363,7 +9419,7 @@ static bool setting_append_list( audio_get_float_ptr(AUDIO_ACTION_RATE_CONTROL_DELTA), MENU_ENUM_LABEL_AUDIO_RATE_CONTROL_DELTA, MENU_ENUM_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA, - rate_control_delta, + DEFAULT_RATE_CONTROL_DELTA, "%.3f", &group_info, &subgroup_info, @@ -9385,7 +9441,7 @@ static bool setting_append_list( &settings->floats.audio_max_timing_skew, MENU_ENUM_LABEL_AUDIO_MAX_TIMING_SKEW, MENU_ENUM_LABEL_VALUE_AUDIO_MAX_TIMING_SKEW, - max_timing_skew, + DEFAULT_MAX_TIMING_SKEW, "%.2f", &group_info, &subgroup_info, @@ -9454,7 +9510,7 @@ static bool setting_append_list( &settings->uints.audio_out_rate, MENU_ENUM_LABEL_AUDIO_OUTPUT_RATE, MENU_ENUM_LABEL_VALUE_AUDIO_OUTPUT_RATE, - out_rate, + DEFAULT_OUTPUT_RATE, &group_info, &subgroup_info, parent_group, @@ -10138,7 +10194,7 @@ static bool setting_append_list( &settings->uints.video_record_threads, MENU_ENUM_LABEL_VIDEO_RECORD_THREADS, MENU_ENUM_LABEL_VALUE_VIDEO_RECORD_THREADS, - video_record_threads, + DEFAULT_VIDEO_RECORD_THREADS, &group_info, &subgroup_info, parent_group, @@ -10255,7 +10311,7 @@ static bool setting_append_list( &settings->floats.fastforward_ratio, MENU_ENUM_LABEL_FASTFORWARD_RATIO, MENU_ENUM_LABEL_VALUE_FASTFORWARD_RATIO, - fastforward_ratio, + DEFAULT_FASTFORWARD_RATIO, "%.1fx", &group_info, &subgroup_info, @@ -10287,7 +10343,7 @@ static bool setting_append_list( &settings->floats.slowmotion_ratio, MENU_ENUM_LABEL_SLOWMOTION_RATIO, MENU_ENUM_LABEL_VALUE_SLOWMOTION_RATIO, - slowmotion_ratio, + DEFAULT_SLOWMOTION_RATIO, "%.1fx", &group_info, &subgroup_info, @@ -10446,7 +10502,7 @@ static bool setting_append_list( &settings->floats.video_font_size, MENU_ENUM_LABEL_VIDEO_FONT_SIZE, MENU_ENUM_LABEL_VALUE_VIDEO_FONT_SIZE, - font_size, + DEFAULT_FONT_SIZE, "%.1f", &group_info, &subgroup_info, @@ -10660,7 +10716,7 @@ static bool setting_append_list( &settings->bools.input_overlay_hide_in_menu, MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU, MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU, - overlay_hide_in_menu, + DEFAULT_OVERLAY_HIDE_IN_MENU, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -10703,6 +10759,22 @@ static bool setting_append_list( (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; menu_settings_list_current_add_range(list, list_info, 0, MAX_USERS - 1, 1, true, true); + CONFIG_BOOL( + list, list_info, + &settings->bools.input_overlay_show_mouse_cursor, + MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_MOUSE_CURSOR, + MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_MOUSE_CURSOR, + DEFAULT_OVERLAY_SHOW_MOUSE_CURSOR, + MENU_ENUM_LABEL_VALUE_OFF, + MENU_ENUM_LABEL_VALUE_ON, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler, + SD_FLAG_NONE + ); + CONFIG_PATH( list, list_info, settings->paths.path_overlay, @@ -10917,7 +10989,7 @@ static bool setting_append_list( &settings->bools.menu_mouse_enable, MENU_ENUM_LABEL_MOUSE_ENABLE, MENU_ENUM_LABEL_VALUE_MOUSE_ENABLE, - def_mouse_enable, + DEFAULT_MOUSE_ENABLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -11364,7 +11436,7 @@ static bool setting_append_list( &settings->bools.threaded_data_runloop_enable, MENU_ENUM_LABEL_THREADED_DATA_RUNLOOP_ENABLE, MENU_ENUM_LABEL_VALUE_THREADED_DATA_RUNLOOP_ENABLE, - threaded_data_runloop_enable, + DEFAULT_THREADED_DATA_RUNLOOP_ENABLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -11997,7 +12069,7 @@ static bool setting_append_list( &settings->bools.menu_materialui_icons_enable, MENU_ENUM_LABEL_MATERIALUI_ICONS_ENABLE, MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE, - materialui_icons_enable, + DEFAULT_MATERIALUI_ICONS_ENABLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -12474,7 +12546,7 @@ static bool setting_append_list( &settings->bools.pause_nonactive, MENU_ENUM_LABEL_PAUSE_NONACTIVE, MENU_ENUM_LABEL_VALUE_PAUSE_NONACTIVE, - pause_nonactive, + DEFAULT_PAUSE_NONACTIVE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -12491,7 +12563,7 @@ static bool setting_append_list( &settings->bools.video_disable_composition, MENU_ENUM_LABEL_VIDEO_DISABLE_COMPOSITION, MENU_ENUM_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION, - disable_composition, + DEFAULT_DISABLE_COMPOSITION, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -13000,20 +13072,21 @@ static bool setting_append_list( general_read_handler, SD_FLAG_NONE); - CONFIG_BOOL( + CONFIG_UINT( list, list_info, - &settings->bools.playlist_entry_remove, + &settings->uints.playlist_entry_remove_enable, MENU_ENUM_LABEL_PLAYLIST_ENTRY_REMOVE, MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE, - def_playlist_entry_remove, - MENU_ENUM_LABEL_VALUE_OFF, - MENU_ENUM_LABEL_VALUE_ON, + playlist_entry_remove_enable, &group_info, &subgroup_info, parent_group, general_write_handler, - general_read_handler, - SD_FLAG_NONE); + general_read_handler); + (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; + (*list)[list_info->index - 1].get_string_representation = + &setting_get_string_representation_uint_playlist_entry_remove_enable; + menu_settings_list_current_add_range(list, list_info, 0, PLAYLIST_ENTRY_REMOVE_ENABLE_LAST-1, 1, true, true); CONFIG_BOOL( list, list_info, @@ -13128,7 +13201,7 @@ static bool setting_append_list( &settings->bools.cheevos_enable, MENU_ENUM_LABEL_CHEEVOS_ENABLE, MENU_ENUM_LABEL_VALUE_CHEEVOS_ENABLE, - cheevos_enable, + DEFAULT_CHEEVOS_ENABLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, diff --git a/msg_hash.h b/msg_hash.h index da0531855b..9e8001daa2 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -777,6 +777,7 @@ enum msg_hash_enums MENU_LABEL(INPUT_OVERLAY_HIDE_IN_MENU), MENU_LABEL(INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS), MENU_LABEL(INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT), + MENU_LABEL(INPUT_OVERLAY_SHOW_MOUSE_CURSOR), MENU_LABEL(INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE), MENU_LABEL(INPUT_SMALL_KEYBOARD_ENABLE), MENU_LABEL(INPUT_TOUCH_ENABLE), @@ -1848,6 +1849,8 @@ enum msg_hash_enums MENU_LABEL(USER_LANGUAGE), MENU_LABEL(NETPLAY_NICKNAME), MENU_LABEL(VIDEO_VI_WIDTH), + MENU_LABEL(VIDEO_OVERSCAN_CORRECTION_TOP), + MENU_LABEL(VIDEO_OVERSCAN_CORRECTION_BOTTOM), MENU_LABEL(VIDEO_ASPECT_RATIO), MENU_LABEL(VIDEO_FORCE_ASPECT), MENU_LABEL(VIDEO_ASPECT_RATIO_AUTO), @@ -2375,6 +2378,10 @@ enum msg_hash_enums MENU_ENUM_LABEL_VALUE_PLAYLIST_INLINE_CORE_DISPLAY_ALWAYS, MENU_ENUM_LABEL_VALUE_PLAYLIST_INLINE_CORE_DISPLAY_NEVER, + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_HIST_FAV, + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_ALL, + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_NONE, + MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_CORE, MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_RUNTIME, MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_LAST_PLAYED, diff --git a/pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj index 174a7b3b26..ce584f934c 100644 --- a/pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj @@ -894,6 +894,7 @@ ../../, "../../libretro-common/include", ../../deps/stb, + ../../deps/rcheevos/include, ../../deps/libz, ../../deps, ); diff --git a/qb/config.libs.sh b/qb/config.libs.sh index e0cceaa66a..9c13a12760 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -128,10 +128,8 @@ add_define MAKEFILE BIN_DIR "${BIN_DIR:-${PREFIX}/bin}" add_define MAKEFILE DOC_DIR "${DOC_DIR:-${SHARE_DIR}/doc/retroarch}" add_define MAKEFILE MAN_DIR "${MAN_DIR:-${SHARE_DIR}/man}" -if [ "$OS" = 'DOS' ]; then - HAVE_SHADERPIPELINE=no - HAVE_LANGEXTRA=no -fi +check_platform DOS SHADERPIPELINE 'Shader-based pipelines are' false +check_platform DOS LANGEXTRA 'Extra languages are' false check_lib '' THREADS "$PTHREADLIB" pthread_create check_enabled THREADS THREAD_STORAGE 'Thread Local Storage' 'Threads are' false @@ -203,10 +201,8 @@ if [ "$HAVE_OSS" != 'no' ]; then check_lib '' OSS_LIB -lossaudio fi -if [ "$OS" = 'Linux' ]; then - HAVE_TINYALSA=yes - HAVE_RPILED=yes -fi +check_platform Linux TINYALSA 'Tinyalsa is' true +check_platform Linux RPILED 'The RPI led driver is' true if [ "$OS" = 'Darwin' ]; then check_lib '' COREAUDIO "-framework AudioUnit" AudioUnitInitialize @@ -234,6 +230,7 @@ if [ "$HAVE_SDL2" = 'yes' ] && [ "$HAVE_SDL" = 'yes' ]; then HAVE_SDL=no fi +check_platform Haiku DISCORD 'Discord is' false check_enabled CXX DISCORD discord 'The C++ compiler is' false check_enabled CXX QT 'Qt companion' 'The C++ compiler is' false @@ -247,18 +244,18 @@ if [ "$HAVE_QT" != 'no' ]; then # pkg-config is needed to reliably find Qt5 libraries. - if [ "$HAVE_QT5CORE" = "no" ] || [ "$HAVE_QT5GUI" = "no" ] || [ "$HAVE_QT5WIDGETS" = "no" ] || [ "$HAVE_QT5CONCURRENT" = "no" ] || [ "$HAVE_QT5NETWORK" = "no" ]; then - die : 'Notice: Not building Qt support, required libraries were not found.' - HAVE_QT=no - else - HAVE_QT=yes + check_enabled QT5CORE QT Qt 'Qt5Core is' true + check_enabled QT5GUI QT Qt 'Qt5GUI is' true + check_enabled QT5WIDGETS QT Qt 'Qt5Widgets is' true + check_enabled QT5CONCURRENT QT Qt 'Qt5Concurrent is' true + check_enabled QT5NETWORK QT Qt 'Qt5Network is' true + #check_enabled QT5WEBENGINE QT Qt 'Qt5Webengine is' true + + if [ "$HAVE_QT" != yes ]; then + die : 'Notice: Qt support disabled, required libraries were not found.' fi check_pkgconf OPENSSL openssl 1.0.0 - - #if [ "$HAVE_QT5WEBENGINE" = "no" ]; then - # die : 'Notice: Qt5WebEngine not found, disabling web browser support.' - #fi fi if [ "$HAVE_FLAC" = 'no' ]; then @@ -303,9 +300,15 @@ check_val '' LIBUSB -lusb-1.0 libusb-1.0 libusb-1.0 1.0.13 '' false if [ "$OS" = 'Win32' ]; then check_lib '' DINPUT -ldinput8 + check_lib '' D3D8 -ld3d8 check_lib '' D3D9 -ld3d9 check_lib '' DSOUND -ldsound + if [ "$HAVE_D3DX" != 'no' ]; then + check_lib '' D3DX8 -ld3dx8 + check_lib '' D3DX9 -ld3dx9 + fi + if [ "$HAVE_DINPUT" != 'no' ]; then HAVE_XINPUT=yes fi @@ -313,13 +316,15 @@ if [ "$OS" = 'Win32' ]; then HAVE_WASAPI=yes HAVE_XAUDIO=yes HAVE_WINMM=yes -else - HAVE_D3D9=no - HAVE_D3D10=no - HAVE_D3D11=no - HAVE_D3D12=no fi +check_platform Win32 D3D8 'Direct3D 8 is' true +check_platform Win32 D3D9 'Direct3D 9 is' true +check_platform Win32 D3D10 'Direct3D 10 is' true +check_platform Win32 D3D11 'Direct3D 11 is' true +check_platform Win32 D3D12 'Direct3D 12 is' true +check_platform Win32 D3DX 'Direct3DX is' true + if [ "$HAVE_OPENGL" != 'no' ] && [ "$HAVE_OPENGLES" != 'yes' ]; then if [ "$OS" = 'Darwin' ]; then check_header OPENGL "OpenGL/gl.h" @@ -348,6 +353,7 @@ else HAVE_OPENGL='no' fi +check_enabled EGL OPENGLES3 OpenGLES3 'EGL is' false check_enabled OPENGL CG Cg 'OpenGL is' false check_enabled OPENGL OSMESA osmesa 'OpenGL is' false check_enabled OPENGL OPENGL1 OpenGL1 'OpenGL is' false @@ -360,7 +366,9 @@ elif [ "$HAVE_OPENGLES" != 'no' ] && [ "$HAVE_OPENGLES3" != 'yes' ]; then HAVE_OPENGL_CORE='no' fi -if [ "$HAVE_BUILTINZLIB" = 'yes' ]; then +if [ "$HAVE_ZLIB" = 'no' ]; then + HAVE_BUILTINZLIB=no +elif [ "$HAVE_BUILTINZLIB" = 'yes' ]; then HAVE_ZLIB=yes else check_val '' ZLIB '-lz' '' zlib '' '' false @@ -422,18 +430,36 @@ else HAVE_OPENGLES=no fi +check_pkgconf DBUS dbus-1 +check_val '' UDEV "-ludev" '' libudev '' '' false check_val '' V4L2 -lv4l2 '' libv4l2 '' '' false check_val '' FREETYPE -lfreetype freetype2 freetype2 '' '' false check_val '' X11 -lX11 '' x11 '' '' false check_val '' XCB -lxcb '' xcb '' '' false + +if [ "$HAVE_X11" != 'no' ]; then + check_val '' XEXT -lXext '' xext '' '' false + check_val '' XF86VM -lXxf86vm '' xxf86vm '' '' false +else + die : 'Notice: X11 not present. Skipping X11 code paths.' +fi + +check_enabled X11 XINERAMA Xinerama 'X11 is' false +check_enabled X11 XSHM XShm 'X11 is' false +check_enabled X11 XRANDR Xrandr 'X11 is' false +check_enabled X11 XVIDEO XVideo 'X11 is' false +check_enabled XEXT XVIDEO XVideo 'Xext is' false +check_enabled XF86VM XVIDEO XVideo 'XF86vm is' false + +check_val '' XVIDEO -lXv '' xv '' '' false +check_val '' XINERAMA -lXinerama '' xinerama '' '' false +check_lib '' XRANDR -lXrandr +check_header XSHM X11/Xlib.h X11/extensions/XShm.h +check_val '' XKBCOMMON -lxkbcommon '' xkbcommon 0.3.2 '' false check_val '' WAYLAND '-lwayland-egl -lwayland-client' '' wayland-egl 10.1.0 '' false check_val '' WAYLAND_CURSOR -lwayland-cursor '' wayland-cursor 1.12 '' false check_pkgconf WAYLAND_PROTOS wayland-protocols 1.15 check_pkgconf WAYLAND_SCANNER wayland-scanner '1.15 1.12' -check_val '' XKBCOMMON -lxkbcommon '' xkbcommon 0.3.2 '' false -check_pkgconf DBUS dbus-1 -check_val '' XEXT -lXext '' xext '' '' false -check_val '' XF86VM -lXxf86vm '' xxf86vm '' '' false if [ "$HAVE_WAYLAND_SCANNER" = yes ] && [ "$HAVE_WAYLAND_CURSOR" = yes ] && @@ -448,24 +474,6 @@ else HAVE_WAYLAND='no' fi -if [ "$HAVE_X11" = 'no' ]; then - HAVE_XEXT=no; HAVE_XF86VM=no; HAVE_XINERAMA=no; HAVE_XSHM=no; HAVE_XRANDR=no -fi - -check_lib '' XRANDR -lXrandr -check_val '' XINERAMA -lXinerama '' xinerama '' '' false - -if [ "$HAVE_X11" = 'yes' ] && [ "$HAVE_XEXT" = 'yes' ] && [ "$HAVE_XF86VM" = 'yes' ]; then - check_val '' XVIDEO -lXv '' xv '' '' false -else - die : 'Notice: X11, Xext or xf86vm not present. Skipping X11 code paths.' - HAVE_X11='no' - HAVE_XVIDEO='no' -fi - -check_val '' UDEV "-ludev" '' libudev '' '' false - -check_header XSHM X11/Xlib.h X11/extensions/XShm.h check_header PARPORT linux/parport.h check_header PARPORT linux/ppdev.h @@ -526,10 +534,5 @@ if [ "$HAVE_DEBUG" = 'yes' ]; then fi check_enabled MENU MENU_WIDGETS 'menu widgets' 'The menu is' false - -if [ "$HAVE_ZLIB" = 'no' ] && [ "$HAVE_BUILTINZLIB" = 'no' ]; then - eval "HAVE_RPNG=no" - die : "Notice: zlib disabled, rpng support will also be disabled." -fi - +check_enabled ZLIB RPNG RPNG 'zlib is' false check_enabled V4L2 VIDEOPROCESSOR 'video processor' 'Video4linux2 is' true diff --git a/qb/config.params.sh b/qb/config.params.sh index 6157f5b73a..2dbe45230a 100644 --- a/qb/config.params.sh +++ b/qb/config.params.sh @@ -48,7 +48,7 @@ HAVE_MINIUPNPC=auto # Mini UPnP client library (for NAT traversal) HAVE_BUILTINMINIUPNPC=yes # Bake in Mini UPnP client library (for NAT traversal) C89_BUILTINMINIUPNPC=no HAVE_D3D8=no # Direct3D 8 support -HAVE_D3D9=yes # Direct3D 9 support +HAVE_D3D9=auto # Direct3D 9 support C89_D3D9=no HAVE_D3D10=yes # Direct3D 10 support C89_D3D10=no @@ -56,7 +56,7 @@ HAVE_D3D11=yes # Direct3D 11 support C89_D3D11=no HAVE_D3D12=yes # Direct3D 12 support C89_D3D12=no -HAVE_D3DX=yes # Direct3DX support +HAVE_D3DX=auto # Direct3DX support HAVE_OPENGL=auto # OpenGL 2.0 support HAVE_OPENGL_CORE=yes # Modern OpenGL driver support (GLES3+/GL3.2 core+), requires OpenGL. C89_OPENGL_CORE=no @@ -78,14 +78,15 @@ HAVE_SUNXI=no # Sunxi video support HAVE_WAYLAND=auto # Wayland support C89_WAYLAND=no CXX_WAYLAND=no -HAVE_EGL=no # EGL context support +HAVE_EGL=auto # EGL context support HAVE_VG=auto # OpenVG support HAVE_CG=auto # Cg shader support HAVE_HLSL=no # HLSL9 shader support (for Direct3D9) HAVE_BUILTINZLIB=yes # Bake in zlib -HAVE_ZLIB=no # zlib support (ZIP extract, PNG decoding/encoding) +HAVE_ZLIB=auto # zlib support (ZIP extract, PNG decoding/encoding) HAVE_ALSA=auto # ALSA support C89_ALSA=no +HAVE_RPILED=auto # RPI led support HAVE_TINYALSA=auto # TinyALSA support HAVE_AUDIOIO=auto # AudioIO support HAVE_OSS=auto # OSS support diff --git a/qb/qb.libs.sh b/qb/qb.libs.sh index 30902f99b9..9e56ef5feb 100644 --- a/qb/qb.libs.sh +++ b/qb/qb.libs.sh @@ -79,6 +79,34 @@ check_enabled() die 1 "Error: $4 disabled and forced to build with $3 support." } +# check_platform: +# $1 = OS +# $2 = HAVE_$2 +# $3 = feature +# $4 = enable feature when true [checked only if non-empty] +check_platform() +{ tmpval="$(eval "printf %s \"\$HAVE_$2\"")" + [ "$tmpval" = 'no' ] && return 0 + + setval="$(eval "printf %s \"\$USER_$2\"")" + + if [ "$setval" = 'yes' ]; then + if { [ "$1" != "$OS" ] && [ "${4:-}" = 'true' ]; } || + { [ "$1" = "$OS" ] && + [ "${4:-}" != 'true' ]; }; then + die 1 "Error: $3 not supported for $OS." + fi + elif [ "$1" = "$OS" ]; then + if [ "${4:-}" = 'true' ]; then + eval "HAVE_$2=yes" + else + eval "HAVE_$2=no" + fi + elif [ "${4:-}" = 'true' ]; then + eval "HAVE_$2=" + fi +} + # check_lib: # Compiles a simple test program to check if a library is available. # $1 = language diff --git a/qb/qb.params.sh b/qb/qb.params.sh index e280400c07..66ec134c12 100644 --- a/qb/qb.params.sh +++ b/qb/qb.params.sh @@ -68,16 +68,19 @@ opt_exists() # $opt is returned if exists in OPTS parse_input() # Parse stuff :V { BUILD='' OPTS='' + config_opts='./configure' + while read -r VAR _; do TMPVAR="${VAR%=*}" NEWVAR="${TMPVAR##HAVE_}" OPTS="$OPTS $NEWVAR" - eval "USER_$NEWVAR=no" + eval "USER_$NEWVAR=auto" done < 'qb/config.params.sh' #OPTS contains all available options in config.params.sh - used to speedup #things in opt_exists() while [ $# -gt 0 ]; do + config_opts="${config_opts} $1" case "$1" in --prefix=*) PREFIX=${1##--prefix=};; --global-config-dir=*|--sysconfdir=*) GLOBAL_CONFIG_DIR="${1#*=}";; @@ -95,6 +98,7 @@ parse_input() # Parse stuff :V --disable-*) opt_exists "${1##--disable-}" "$1" eval "HAVE_$opt=no" + eval "USER_$opt=no" eval "HAVE_NO_$opt=yes" ;; --with-*) @@ -110,6 +114,17 @@ parse_input() # Parse stuff :V esac shift done + + cat > config.log << EOF +Command line invocation: + + \$ ${config_opts} + +## ----------- ## +## Core Tests. ## +## ----------- ## + +EOF } . qb/config.params.sh diff --git a/retroarch.c b/retroarch.c index 7cc81635cb..0a25316386 100644 --- a/retroarch.c +++ b/retroarch.c @@ -4606,41 +4606,41 @@ int runloop_iterate(unsigned *sleep_ms) autosave_unlock(); /* Condition for max speed x0.0 when vrr_runloop is off to skip that part */ - if (fastforward_ratio || vrr_runloop_enable) - end: - { - retro_time_t to_sleep_ms; + if (!(fastforward_ratio || vrr_runloop_enable)) + return 0; - if (vrr_runloop_enable) - { - struct retro_system_av_info *av_info = +end: + if (vrr_runloop_enable) + { + struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); - /* Sync on video only, block audio later. */ - if (fastforward_after_frames && settings->bools.audio_sync) + /* Sync on video only, block audio later. */ + if (fastforward_after_frames && settings->bools.audio_sync) + { + if (fastforward_after_frames == 1) + command_event(CMD_EVENT_AUDIO_SET_NONBLOCKING_STATE, NULL); + + fastforward_after_frames++; + + if (fastforward_after_frames == 6) { - if (fastforward_after_frames == 1) - command_event(CMD_EVENT_AUDIO_SET_NONBLOCKING_STATE, NULL); - - fastforward_after_frames++; - - if (fastforward_after_frames == 6) - { - command_event(CMD_EVENT_AUDIO_SET_BLOCKING_STATE, NULL); - fastforward_after_frames = 0; - } + command_event(CMD_EVENT_AUDIO_SET_BLOCKING_STATE, NULL); + fastforward_after_frames = 0; } - - /* Fast Forward for max speed x0.0 */ - if (!fastforward_ratio && runloop_fastmotion) - return 0; - - frame_limit_minimum_time = - (retro_time_t)roundf(1000000.0f / (av_info->timing.fps * - (runloop_fastmotion ? fastforward_ratio : 1.0f))); } - to_sleep_ms = ( + /* Fast Forward for max speed x0.0 */ + if (!fastforward_ratio && runloop_fastmotion) + return 0; + + frame_limit_minimum_time = + (retro_time_t)roundf(1000000.0f / (av_info->timing.fps * + (runloop_fastmotion ? fastforward_ratio : 1.0f))); + } + + { + retro_time_t to_sleep_ms = ( (frame_limit_last_time + frame_limit_minimum_time) - cpu_features_get_time_usec()) / 1000; @@ -4651,10 +4651,10 @@ int runloop_iterate(unsigned *sleep_ms) frame_limit_last_time += frame_limit_minimum_time; return 1; } - - frame_limit_last_time = cpu_features_get_time_usec(); } + frame_limit_last_time = cpu_features_get_time_usec(); + return 0; } @@ -5038,7 +5038,7 @@ bool rarch_write_debug_info(void) if (joypad_driver && string_is_equal(joypad_driver->ident, settings->arrays.input_joypad_driver)) filestream_printf(file, " - Joypad: %s\n", !string_is_empty(joypad_driver->ident) ? joypad_driver->ident : "n/a"); else - filestream_printf(file, " - Input: %s (configured for %s)\n", !string_is_empty(joypad_driver->ident) ? joypad_driver->ident : "n/a", !string_is_empty(settings->arrays.input_joypad_driver) ? settings->arrays.input_joypad_driver : "n/a"); + filestream_printf(file, " - Joypad: %s (configured for %s)\n", !string_is_empty(joypad_driver->ident) ? joypad_driver->ident : "n/a", !string_is_empty(settings->arrays.input_joypad_driver) ? settings->arrays.input_joypad_driver : "n/a"); } filestream_printf(file, "\n"); diff --git a/tasks/task_content.c b/tasks/task_content.c index 5b80bc9602..9d3e8bae58 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -157,6 +157,9 @@ static int pending_subsystem_rom_num = 0; static int pending_subsystem_id = 0; static unsigned pending_subsystem_rom_id = 0; +static bool pending_content_rom_crc = false; +static char pending_content_rom_crc_path[PATH_MAX_LENGTH] = {0}; + static char pending_subsystem_ident[255]; #if 0 static char pending_subsystem_extensions[PATH_MAX_LENGTH]; @@ -349,12 +352,14 @@ static bool load_content_into_memory( /* If we have a media type, ignore CRC32 calculation. */ if (type == RARCH_CONTENT_NONE) { + bool has_patch = false; + /* First content file is significant, attempt to do patching, * CRC checking, etc. */ /* Attempt to apply a patch. */ if (!content_ctx->patch_is_blocked) - patch_content( + has_patch = patch_content( content_ctx->is_ips_pref, content_ctx->is_bps_pref, content_ctx->is_ups_pref, @@ -364,9 +369,17 @@ static bool load_content_into_memory( (uint8_t**)&ret_buf, (void*)length); - content_rom_crc = encoding_crc32(0, ret_buf, (size_t)*length); - - RARCH_LOG("CRC32: 0x%x .\n", (unsigned)content_rom_crc); + if (has_patch) + { + content_rom_crc = encoding_crc32(0, ret_buf, (size_t)*length); + RARCH_LOG("CRC32: 0x%x .\n", (unsigned)content_rom_crc); + } + else + { + pending_content_rom_crc = true; + strlcpy(pending_content_rom_crc_path, + path, sizeof(pending_content_rom_crc_path)); + } } else content_rom_crc = 0; @@ -644,14 +657,14 @@ static bool content_file_load( if (string_is_empty(new_basedir) || !path_is_directory(new_basedir) || !is_path_accessible_using_standard_io(new_basedir)) { RARCH_WARN("Tried copying to cache directory, but " - "cache directory was not set or found. " - "Setting cache directory to root of " - "writable app directory...\n"); + "cache directory was not set or found. " + "Setting cache directory to root of " + "writable app directory...\n"); strlcpy(new_basedir, uwp_dir_data, new_basedir_size); } fill_pathname_join(new_path, new_basedir, - path_basename(path), new_path_size); + path_basename(path), new_path_size); free(new_basedir); /* TODO: This may fail on very large files... @@ -679,10 +692,10 @@ static bool content_file_load( free(buf); snprintf(msg, - msg_size, - "%s \"%s\". (during copy write)\n", - msg_hash_to_str(MSG_COULD_NOT_READ_CONTENT_FILE), - path); + msg_size, + "%s \"%s\". (during copy write)\n", + msg_hash_to_str(MSG_COULD_NOT_READ_CONTENT_FILE), + path); *error_string = strdup(msg); free(msg); return false; @@ -694,7 +707,7 @@ static bool content_file_load( additional_path_allocs->elems[additional_path_allocs->size - 1].data; string_list_append(content_ctx->temporary_content, - new_path, attributes); + new_path, attributes); free(new_path); @@ -702,14 +715,11 @@ static bool content_file_load( } #endif -/* It adds up to 10 seconds when loading large roms. - * It's mainly used for network play which isn't available for these platforms. */ -#if !defined(GEKKO) RARCH_LOG("%s\n", msg_hash_to_str( MSG_CONTENT_LOADING_SKIPPED_IMPLEMENTATION_WILL_DO_IT)); - content_rom_crc = file_crc32(0, path); - RARCH_LOG("CRC32: 0x%x .\n", (unsigned)content_rom_crc); -#endif + pending_content_rom_crc = true; + strlcpy(pending_content_rom_crc_path, + path, sizeof(pending_content_rom_crc_path)); } } @@ -2032,6 +2042,13 @@ void content_unset_does_not_need_content(void) uint32_t content_get_crc(void) { + if (pending_content_rom_crc) + { + pending_content_rom_crc = false; + content_rom_crc = file_crc32(0, + (const char*)pending_content_rom_crc_path); + RARCH_LOG("CRC32: 0x%x .\n", (unsigned)content_rom_crc); + } return content_rom_crc; } @@ -2069,6 +2086,7 @@ void content_deinit(void) content_rom_crc = 0; _content_is_inited = false; core_does_not_need_content = false; + pending_content_rom_crc = false; } /* Set environment variables before a subsystem load */ diff --git a/tasks/task_patch.c b/tasks/task_patch.c index 44e825f5fd..59caed0c6e 100644 --- a/tasks/task_patch.c +++ b/tasks/task_patch.c @@ -630,7 +630,7 @@ static bool try_ips_patch(bool allow_ips, * Apply patch to the content file in-memory. * **/ -static void patch_content( +static bool patch_content( bool is_ips_pref, bool is_bps_pref, bool is_ups_pref, @@ -651,7 +651,7 @@ static void patch_content( { RARCH_WARN("%s\n", msg_hash_to_str(MSG_SEVERAL_PATCHES_ARE_EXPLICITLY_DEFINED)); - return; + return false; } if ( !try_ips_patch(allow_ips, name_ips, buf, size) @@ -660,5 +660,8 @@ static void patch_content( { RARCH_LOG("%s\n", msg_hash_to_str(MSG_DID_NOT_FIND_A_VALID_CONTENT_PATCH)); + return false; } + + return true; }