Merge branch 'master' into ios13-controllers

This commit is contained in:
Yoshi Sugawara 2019-06-05 06:22:51 -10:00
commit 22d84eaef2
32 changed files with 898 additions and 783 deletions

View File

@ -31,6 +31,8 @@ matrix:
env: DISABLE_MENU=1 CC=gcc-8 CXX=g++-8 env: DISABLE_MENU=1 CC=gcc-8 CXX=g++-8
- compiler: gcc - compiler: gcc
env: ENABLE_GLES=1 CC=gcc-8 CXX=g++-8 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 - compiler: clang
env: CC=clang-6.0 CXX=clang++-6.0 env: CC=clang-6.0 CXX=clang++-6.0
- compiler: clang - compiler: clang
@ -73,7 +75,7 @@ before_install:
script: script:
- | - |
if [ -n "$CROSS_COMPILE" ]; then 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 fi
- | - |
if [ -n "$DISABLE_MENU" ]; then if [ -n "$DISABLE_MENU" ]; then

View File

@ -1342,15 +1342,14 @@ endif
ifeq ($(HAVE_D3D9), 1) ifeq ($(HAVE_D3D9), 1)
HAVE_D3D_COMMON = 1 HAVE_D3D_COMMON = 1
HAVE_D3DX = 1
DEFINES += -DHAVE_D3D9 DEFINES += -DHAVE_D3D9
ifeq ($(HAVE_D3DX), 1) ifeq ($(HAVE_D3DX9), 1)
DEFINES += -DHAVE_D3DX HAVE_D3DX_COMMON = 1
endif endif
ifneq ($(HAVE_DYLIB), 1) ifneq ($(HAVE_DYLIB), 1)
LIBS += -ld3d9 LIBS += $(D3D9_LIBS)
ifeq ($(HAVE_D3DX), 1) ifeq ($(HAVE_D3DX9), 1)
LIBS += -ld3dx9 LIBS += $(D3DX9_LIBS)
endif endif
endif endif
HAVE_DX_COMMON = 1 HAVE_DX_COMMON = 1
@ -1412,14 +1411,21 @@ ifeq ($(HAVE_D3D8), 1)
HAVE_D3D_COMMON = 1 HAVE_D3D_COMMON = 1
HAVE_DX_COMMON = 1 HAVE_DX_COMMON = 1
DEFINES += -DHAVE_D3D8 DEFINES += -DHAVE_D3D8
ifeq ($(HAVE_D3DX8), 1)
HAVE_D3DX_COMMON = 1
endif
ifneq ($(HAVE_DYLIB), 1) ifneq ($(HAVE_DYLIB), 1)
LIBS += -ld3d8 LIBS += $(D3D8_LIBS)
ifeq ($(HAVE_D3DX), 1) ifeq ($(HAVE_D3DX8), 1)
LIBS += -ld3dx8 LIBS += $(D3DX8_LIBS)
endif endif
endif endif
endif endif
ifeq ($(HAVE_D3DX_COMMON), 1)
DEFINES += -DHAVE_D3DX
endif
ifeq ($(HAVE_DX_COMMON), 1) ifeq ($(HAVE_DX_COMMON), 1)
LIBS += -ldxguid LIBS += -ldxguid
endif endif

View File

@ -60,6 +60,20 @@ HAVE_CHEEVOS := 1
HAVE_SHADERPIPELINE := 1 HAVE_SHADERPIPELINE := 1
HAVE_IMAGEVIEWER := 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 Makefile.common
INCLUDE_DIRS := $(patsubst -isystem%,-I%,$(INCLUDE_DIRS)) INCLUDE_DIRS := $(patsubst -isystem%,-I%,$(INCLUDE_DIRS))
CFLAGS := $(filter-out -Wno-unknown-pragmas,$(DEF_FLAGS)) CFLAGS := $(filter-out -Wno-unknown-pragmas,$(DEF_FLAGS))

View File

@ -56,6 +56,20 @@ SDL2_LIBS := -lSDL2
SDL2_CFLAGS := -ISDL2 -DHAVE_SDL2 SDL2_CFLAGS := -ISDL2 -DHAVE_SDL2
endif 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) ifeq ($(HAVE_RSOUND), 1)
RSOUND_CFLAGS := -DHAVE_RSOUND RSOUND_CFLAGS := -DHAVE_RSOUND
RSOUND_LIBS := -lrsound RSOUND_LIBS := -lrsound

View File

@ -70,7 +70,7 @@
#endif #endif
#ifdef HAVE_MATERIALUI #ifdef HAVE_MATERIALUI
static bool materialui_icons_enable = true; #define DEFAULT_MATERIALUI_ICONS_ENABLE true
#endif #endif
static const unsigned crt_switch_resolution = CRT_SWITCH_NONE; 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 int crt_switch_center_adjust = 0;
static const bool def_history_list_enable = true; 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 bool def_playlist_entry_rename = true;
static const unsigned int def_user_language = 0; 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) #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 #else
static const bool def_mouse_enable = false; #define DEFAULT_MOUSE_ENABLE false
#endif #endif
#ifdef HAVE_CHEEVOS #ifdef HAVE_CHEEVOS
static const bool cheevos_enable = false; #define DEFAULT_CHEEVOS_ENABLE false
#endif #endif
/* VIDEO */ /* VIDEO */
@ -105,87 +104,87 @@ static const bool cheevos_enable = false;
* Real x resolution = aspect * base_size * x scale * Real x resolution = aspect * base_size * x scale
* Real y resolution = base_size * y scale * Real y resolution = base_size * y scale
*/ */
static const float scale = 3.0; #define DEFAULT_SCALE (3.0)
/* Fullscreen */ /* Fullscreen */
/* To start in Fullscreen, or not. */ /* To start in Fullscreen, or not. */
static const bool fullscreen = false; #define DEFAULT_FULLSCREEN false
/* To use windowed mode or not when going fullscreen. */ /* 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 /* Which monitor to prefer. 0 is any monitor, 1 and up selects
* specific monitors, 1 being the first monitor. */ * specific monitors, 1 being the first monitor. */
static const unsigned monitor_index = 0; #define DEFAULT_MONITOR_INDEX 0
/* Window */ /* Window */
/* Window size. A value of 0 uses window scale /* Window size. A value of 0 uses window scale
* multiplied by the core framebuffer size. */ * multiplied by the core framebuffer size. */
static const unsigned window_width = 1280; #define DEFAULT_WINDOW_WIDTH 1280
static const unsigned window_height = 720; #define DEFAULT_WINDOW_HEIGHT 720
/* Fullscreen resolution. A value of 0 uses the desktop /* Fullscreen resolution. A value of 0 uses the desktop
* resolution. */ * resolution. */
static const unsigned fullscreen_x = 0; #define DEFAULT_FULLSCREEN_X 0
static const unsigned fullscreen_y = 0; #define DEFAULT_FULLSCREEN_Y 0
/* Number of threads to use for video recording */ /* Number of threads to use for video recording */
#define DEFAULT_VIDEO_RECORD_THREADS 2
static const unsigned video_record_threads = 2;
/* Amount of transparency to use for the main window. /* Amount of transparency to use for the main window.
* 1 is the most transparent while 100 is opaque. * 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. */ /* 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__) #if defined(RARCH_CONSOLE) || defined(__APPLE__)
static const bool load_dummy_on_core_shutdown = false; #define DEFAULT_LOAD_DUMMY_ON_CORE_SHUTDOWN false
#else #else
static const bool load_dummy_on_core_shutdown = true; #define DEFAULT_LOAD_DUMMY_ON_CORE_SHUTDOWN true
#endif #endif
static const bool check_firmware_before_loading = false; #define DEFAULT_CHECK_FIRMWARE_BEFORE_LOADING false
/* Forcibly disable composition. /* Forcibly disable composition.
* Only valid on Windows Vista/7/8 for now. */ * Only valid on Windows Vista/7/8 for now. */
static const bool disable_composition = false; #define DEFAULT_DISABLE_COMPOSITION false
/* Video VSYNC (recommended) */ /* 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. /* Attempts to hard-synchronize CPU and GPU.
* Can reduce latency at cost of performance. */ * 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. /* Configures how many frames the GPU can run ahead of CPU.
* 0: Syncs to GPU immediately. * 0: Syncs to GPU immediately.
* 1: Syncs to previous frame. * 1: Syncs to previous frame.
* 2: Etc ... * 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. /* Sets how many milliseconds to delay after VSync before running the core.
* Can reduce latency at cost of higher risk of stuttering. * 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. /* Inserts a black frame inbetween frames.
* Useful for 120 Hz monitors who want to play 60 Hz material with eliminated * 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 * ghosting. video_refresh_rate should still be configured as if it
* is a 60 Hz monitor (divide refresh rate by 2). * 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. /* Uses a custom swap interval for VSync.
* Set this to effectively halve monitor refresh rate. * 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 /* Threaded video. Will possibly increase performance significantly
* at the cost of worse synchronization and latency. * at the cost of worse synchronization and latency.
@ -199,87 +198,90 @@ static unsigned swap_interval = 1;
#if defined(HAVE_THREADS) #if defined(HAVE_THREADS)
#if defined(GEKKO) || defined(PSP) || defined(PS2) #if defined(GEKKO) || defined(PSP) || defined(PS2)
/* For single-core consoles right now it's best to have this be disabled. */ /* 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 #else
static const bool threaded_data_runloop_enable = true; #define DEFAULT_THREADED_DATA_RUNLOOP_ENABLE true
#endif #endif
#else #else
static const bool threaded_data_runloop_enable = false; #define DEFAULT_THREADED_DATA_RUNLOOP_ENABLE false
#endif #endif
/* Set to true if HW render cores should get their private context. */ /* 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. */ /* Sets GC/Wii screen width. */
static const unsigned video_viwidth = 640; #define DEFAULT_VIDEO_VI_WIDTH 640
#ifdef GEKKO #ifdef GEKKO
/* Removes 480i flicker, smooths picture a little. */ /* 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 #endif
/* Smooths picture. */ /* Smooths picture. */
static const bool video_smooth = true; #define DEFAULT_VIDEO_SMOOTH true
/* On resize and fullscreen, rendering area will stay 4:3 */ /* 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. */ /* Enable use of shaders. */
#ifdef RARCH_CONSOLE #ifdef RARCH_CONSOLE
static const bool shader_enable = true; #define DEFAULT_SHADER_ENABLE true
#else #else
static const bool shader_enable = false; #define DEFAULT_SHADER_ENABLE false
#endif #endif
/* Only scale in integer steps. /* Only scale in integer steps.
* The base size depends on system-reported geometry and aspect ratio. * 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. * 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. */ /* Controls aspect ratio handling. */
/* Automatic */
static const float aspect_ratio = DEFAULT_ASPECT_RATIO;
/* 1:1 PAR */ /* 1:1 PAR */
static const bool aspect_ratio_auto = false; #define DEFAULT_ASPECT_RATIO_AUTO false
#if defined(__CELLOS_LV2) || defined(_XBOX360) #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) #elif defined(PSP)
static unsigned aspect_ratio_idx = ASPECT_RATIO_CORE; #define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_CORE
#elif defined(_3DS) #elif defined(_3DS)
/* Previously defaulted to ASPECT_RATIO_4_3. /* Previously defaulted to ASPECT_RATIO_4_3.
* Non-4:3 content looks dreadful when stretched * Non-4:3 content looks dreadful when stretched
* to 4:3 on the 3DS screen... */ * 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) #elif defined(RARCH_CONSOLE)
static unsigned aspect_ratio_idx = ASPECT_RATIO_4_3; #define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_4_3
#else #else
static unsigned aspect_ratio_idx = ASPECT_RATIO_CORE; #define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_CORE
#endif #endif
/* Save configuration file on exit. */ /* 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 #ifdef HAKCHI
static const float default_input_overlay_opacity = 0.5f; #define DEFAULT_INPUT_OVERLAY_OPACITY 0.5f
#else #else
static const float default_input_overlay_opacity = 0.7f; #define DEFAULT_INPUT_OVERLAY_OPACITY 0.7f
#endif #endif
#ifdef HAVE_MENU #ifdef HAVE_MENU
#include "menu/menu_driver.h" #include "menu/menu_driver.h"
#include "menu/menu_animation.h" #include "menu/menu_animation.h"
static bool default_block_config_read = true; #define DEFAULT_BLOCK_CONFIG_READ true
#ifdef HAVE_LIBNX #ifdef HAVE_LIBNX
static bool menu_use_preferred_system_color_theme = true; static bool menu_use_preferred_system_color_theme = true;
@ -370,8 +372,6 @@ static bool xmb_shadows_enable = true;
#endif #endif
#endif #endif
static bool automatically_add_content_to_playlist = false;
static float menu_framebuffer_opacity = 0.900; static float menu_framebuffer_opacity = 0.900;
static float menu_wallpaper_opacity = 0.300; 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; static bool rgui_extended_ascii = false;
#else #else
static bool default_block_config_read = false; #define DEFAULT_BLOCK_CONFIG_READ false
static bool automatically_add_content_to_playlist = false;
#endif #endif
static bool automatically_add_content_to_playlist = false;
static bool default_game_specific_options = true; static bool default_game_specific_options = true;
static bool default_auto_overrides_enable = true; static bool default_auto_overrides_enable = true;
static bool default_auto_remaps_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; static bool log_to_file_timestamp = false;
/* Crop overscanned frames. */ /* Crop overscanned frames. */
static const bool crop_overscan = true; #define DEFAULT_CROP_OVERSCAN true
/* Font size for on-screen messages. */ /* Font size for on-screen messages. */
#if defined(HAVE_LIBDBGFONT) #if defined(HAVE_LIBDBGFONT)
static const float font_size = 1.0f; #define DEFAULT_FONT_SIZE 1.0f
#else #else
static const float font_size = 32; #define DEFAULT_FONT_SIZE 32
#endif #endif
/* Offset for where messages will be placed on-screen. /* 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 */ /* AUDIO */
/* Will enable audio or not. */ /* Will enable audio or not. */
static const bool audio_enable = true; #define DEFAULT_AUDIO_ENABLE true
/* Enable menu audio sounds. */ /* Enable menu audio sounds. */
static const bool audio_enable_menu = false; static const bool audio_enable_menu = false;
@ -553,11 +554,11 @@ static const bool menu_enable_widgets = false;
/* Output samplerate. */ /* Output samplerate. */
#ifdef GEKKO #ifdef GEKKO
static const unsigned out_rate = 32000; #define DEFAULT_OUTPUT_RATE 32000
#elif defined(_3DS) #elif defined(_3DS)
static const unsigned out_rate = 32730; #define DEFAULT_OUTPUT_RATE 32730
#else #else
static const unsigned out_rate = 48000; #define DEFAULT_OUTPUT_RATE 48000
#endif #endif
/* Audio device (e.g. hw:0,0 or /dev/audio). If NULL, will use defaults. */ /* 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 driver can't provide given latency. */
#if defined(ANDROID) || defined(EMSCRIPTEN) #if defined(ANDROID) || defined(EMSCRIPTEN)
/* For most Android devices, 64ms is way too low. */ /* For most Android devices, 64ms is way too low. */
static const int out_latency = 128; #define DEFAULT_OUT_LATENCY 128
#else #else
static const int out_latency = 64; #define DEFAULT_OUT_LATENCY 64
#endif #endif
/* Will sync audio. (recommended) */ /* Will sync audio. (recommended) */
static const bool audio_sync = true; #define DEFAULT_AUDIO_SYNC true
/* Audio rate control. */ /* Audio rate control. */
#if !defined(RARCH_CONSOLE) #if !defined(RARCH_CONSOLE)
static const bool rate_control = true; #define DEFAULT_RATE_CONTROL true
#else #else
static const bool rate_control = false; #define DEFAULT_RATE_CONTROL false
#endif #endif
/* Rate control delta. Defines how much rate_control /* Rate control delta. Defines how much rate_control
* is allowed to adjust input rate. */ * 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 /* Maximum timing skew. Defines how much adjust_system_rates
* is allowed to adjust input rate. */ * 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). */ /* 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). */ /* 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 #ifdef HAVE_WASAPI
/* WASAPI defaults */ /* WASAPI defaults */
@ -606,56 +607,56 @@ static const int wasapi_sh_buffer_length = -16; /* auto */
/* MISC */ /* MISC */
/* Enables displaying the current frames per second. */ /* Enables displaying the current frames per second. */
static const bool fps_show = false; #define DEFAULT_FPS_SHOW false
/* Enables displaying the current frame count. */ /* 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. */ /* 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. */ /* 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 /* Enables use of rewind. This will incur some memory footprint
* depending on the save state buffer. */ * 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. */ /* 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. */ /* 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 /* The buffer size for the rewind buffer. This needs to be about
* 15-20MB per minute. Very game dependant. */ * 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. */ /* 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. */ /* 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. */ /* Pause gameplay when gameplay loses focus. */
#ifdef EMSCRIPTEN #ifdef EMSCRIPTEN
static const bool pause_nonactive = false; #define DEFAULT_PAUSE_NONACTIVE false
#else #else
static const bool pause_nonactive = true; #define DEFAULT_PAUSE_NONACTIVE true
#endif #endif
/* Saves non-volatile SRAM at a regular interval. /* Saves non-volatile SRAM at a regular interval.
* It is measured in seconds. A value of 0 disables autosave. */ * 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) #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 */ /* Flush to file every 10 seconds on modern platforms by default */
static const unsigned autosave_interval = 10; #define DEFAULT_AUTOSAVE_INTERVAL 10
#else #else
/* Default to disabled on I/O-constrained platforms */ /* Default to disabled on I/O-constrained platforms */
static const unsigned autosave_interval = 0; #define DEFAULT_AUTOSAVE_INTERVAL 0
#endif #endif
/* Publicly announce netplay */ /* Publicly announce netplay */
static const bool netplay_public_announce = true; #define DEFAULT_NETPLAY_PUBLIC_ANNOUNCE true
/* Start netplay in spectator mode */ /* Start netplay in spectator mode */
static const bool netplay_start_as_spectator = false; 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. /* On save state load, block SRAM from being overwritten.
* This could potentially lead to buggy games. */ * 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 /* When saving savestates, state index is automatically
* incremented before saving. * incremented before saving.
@ -709,16 +710,16 @@ static const bool savestate_auto_load = false;
static const bool savestate_thumbnail_enable = false; static const bool savestate_thumbnail_enable = false;
/* Slowmotion ratio. */ /* Slowmotion ratio. */
static const float slowmotion_ratio = 3.0; #define DEFAULT_SLOWMOTION_RATIO 3.0
/* Maximum fast forward ratio. */ /* 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. */ /* 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. */ /* 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. */ /* When using the Run Ahead feature, use a secondary instance of the core. */
static const bool run_ahead_secondary_instance = true; 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 */ /* Specifies which runtime record to use on playlist sublabels */
static const unsigned playlist_sublabel_runtime_type = PLAYLIST_RUNTIME_PER_CORE; static const unsigned playlist_sublabel_runtime_type = PLAYLIST_RUNTIME_PER_CORE;
static const unsigned playlist_entry_remove_enable = PLAYLIST_ENTRY_REMOVE_ENABLE_ALL;
#endif #endif
static const bool scan_without_core_match = false; static const bool scan_without_core_match = false;

View File

@ -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("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); 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 #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_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_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); 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 #endif
SETTING_BOOL("input_descriptor_label_show", &settings->bools.input_descriptor_label_show, true, input_descriptor_label_show, false); 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("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("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, check_firmware_before_loading, 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_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("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("fps_show", &settings->bools.video_fps_show, true, DEFAULT_FPS_SHOW, false);
SETTING_BOOL("statistics_show", &settings->bools.video_statistics_show, true, statistics_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, framecount_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, memory_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("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("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("rewind_enable", &settings->bools.rewind_enable, true, DEFAULT_REWIND_ENABLE, false);
SETTING_BOOL("vrr_runloop_enable", &settings->bools.vrr_runloop_enable, true, vrr_runloop_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, apply_cheats_after_toggle, 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, apply_cheats_after_load, 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_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_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("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("audio_sync", &settings->bools.audio_sync, true, DEFAULT_AUDIO_SYNC, false);
SETTING_BOOL("video_shader_enable", &settings->bools.video_shader_enable, true, shader_enable, 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); 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. */ /* 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_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_windowed_fullscreen", &settings->bools.video_windowed_fullscreen, true, DEFAULT_WINDOWED_FULLSCREEN, false);
SETTING_BOOL("video_crop_overscan", &settings->bools.video_crop_overscan, true, crop_overscan, 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, scale_integer, 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, video_smooth, 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, force_aspect, 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_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("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_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("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_vsync", &settings->bools.video_vsync, true, DEFAULT_VSYNC, false);
SETTING_BOOL("video_adaptive_vsync", &settings->bools.video_adaptive_vsync, true, adaptive_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, hard_sync, 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, black_frame_insertion, 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, disable_composition, 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, pause_nonactive, 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_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("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("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("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("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", &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); 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); SETTING_BOOL("small_keyboard_enable", &settings->bools.input_small_keyboard_enable, true, false, false);
#endif #endif
#ifdef GEKKO #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 #endif
#ifdef HAVE_THREADS #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 #endif
#ifdef HAVE_MENU #ifdef HAVE_MENU
SETTING_BOOL("menu_unified_controls", &settings->bools.menu_unified_controls, true, false, false); 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("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("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_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_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_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); 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); &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); SETTING_BOOL("menu_show_advanced_settings", &settings->bools.menu_show_advanced_settings, true, show_advanced_settings, false);
#ifdef HAVE_MATERIALUI #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 #endif
#ifdef HAVE_RGUI #ifdef HAVE_RGUI
SETTING_BOOL("rgui_background_filler_thickness_enable", &settings->bools.menu_rgui_background_filler_thickness_enable, true, true, false); 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
#endif #endif
#ifdef HAVE_CHEEVOS #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_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_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); 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", &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_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_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 #endif
#ifdef HAVE_VIDEO_LAYOUT #ifdef HAVE_VIDEO_LAYOUT
SETTING_BOOL("video_layout_enable", &settings->bools.video_layout_enable, true, true, false); 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 #ifdef HAVE_NETWORKING
SETTING_BOOL("netplay_nat_traversal", &settings->bools.netplay_nat_traversal, true, true, false); SETTING_BOOL("netplay_nat_traversal", &settings->bools.netplay_nat_traversal, true, true, false);
#endif #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_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_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_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("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("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("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("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); 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("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_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("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("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, show_hidden_files, 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("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 #ifdef HAVE_WASAPI
SETTING_BOOL("audio_wasapi_exclusive_mode", &settings->bools.audio_wasapi_exclusive_mode, true, wasapi_exclusive_mode, false); 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); 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("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_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("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); 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) if (!tmp)
return NULL; 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("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("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("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_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, max_timing_skew, 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, audio_volume, 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, audio_mixer_volume, false); SETTING_FLOAT("audio_mixer_volume", &settings->floats.audio_mixer_volume, true, DEFAULT_AUDIO_MIXER_VOLUME, false);
#ifdef HAVE_OVERLAY #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); SETTING_FLOAT("input_overlay_scale", &settings->floats.input_overlay_scale, true, 1.0f, false);
#endif #endif
#ifdef HAVE_MENU #ifdef HAVE_MENU
@ -1676,9 +1676,9 @@ static struct config_float_setting *populate_settings_float(settings_t *settings
#endif #endif
SETTING_FLOAT("video_message_pos_x", &settings->floats.video_msg_pos_x, true, message_pos_offset_x, false); 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_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("video_font_size", &settings->floats.video_font_size, true, DEFAULT_FONT_SIZE, false);
SETTING_FLOAT("fastforward_ratio", &settings->floats.fastforward_ratio, true, fastforward_ratio, false); SETTING_FLOAT("fastforward_ratio", &settings->floats.fastforward_ratio, true, DEFAULT_FASTFORWARD_RATIO, false);
SETTING_FLOAT("slowmotion_ratio", &settings->floats.slowmotion_ratio, true, slowmotion_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_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_deadzone", &settings->floats.input_analog_deadzone, true, analog_deadzone, false);
SETTING_FLOAT("input_analog_sensitivity", &settings->floats.input_analog_sensitivity, true, analog_sensitivity, 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 #ifdef ANDROID
SETTING_UINT("input_block_timeout", &settings->uints.input_block_timeout, true, 1, false); SETTING_UINT("input_block_timeout", &settings->uints.input_block_timeout, true, 1, false);
#endif #endif
SETTING_UINT("rewind_granularity", &settings->uints.rewind_granularity, true, rewind_granularity, 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, rewind_buffer_size_step, 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, autosave_interval, 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("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("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("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_monitor_index", &settings->uints.video_monitor_index, true, DEFAULT_MONITOR_INDEX, false);
SETTING_UINT("video_fullscreen_x", &settings->uints.video_fullscreen_x, true, fullscreen_x, 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, fullscreen_y, 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, window_opacity, false); SETTING_UINT("video_window_opacity", &settings->uints.video_window_opacity, true, DEFAULT_WINDOW_OPACITY, false);
#ifdef HAVE_VIDEO_LAYOUT #ifdef HAVE_VIDEO_LAYOUT
SETTING_UINT("video_layout_selected_view", &settings->uints.video_layout_selected_view, true, 0, false); SETTING_UINT("video_layout_selected_view", &settings->uints.video_layout_selected_view, true, 0, false);
#endif #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); SETTING_UINT("network_remote_base_port", &settings->uints.network_remote_base_port, true, network_remote_base_port, false);
#endif #endif
#ifdef GEKKO #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 #endif
#ifdef HAVE_MENU #ifdef HAVE_MENU
SETTING_UINT("dpi_override_value", &settings->uints.menu_dpi_override_value, true, menu_dpi_override_value, false); 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); SETTING_UINT("ozone_menu_color_theme", &settings->uints.menu_ozone_color_theme, true, 1, false);
#endif #endif
#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("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("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_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_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("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("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_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, frame_delay, 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, max_swapchain_images, 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, swap_interval, 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("video_rotation", &settings->uints.video_rotation, true, ORIENTATION_NORMAL, false);
SETTING_UINT("screen_orientation", &settings->uints.screen_orientation, 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 #ifdef HAVE_NETWORKING
SETTING_UINT("netplay_ip_port", &settings->uints.netplay_port, true, RARCH_DEFAULT_PORT, false); SETTING_UINT("netplay_ip_port", &settings->uints.netplay_port, true, RARCH_DEFAULT_PORT, false);
SETTING_OVERRIDE(RARCH_OVERRIDE_SETTING_NETPLAY_IP_PORT); 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_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_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_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_width", &settings->uints.window_position_width, true, DEFAULT_WINDOW_WIDTH, false);
SETTING_UINT("video_windowed_position_height", &settings->uints.window_position_height, true, window_height, 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 #ifdef HAVE_LIBNX
SETTING_UINT("libnx_overclock", &settings->uints.libnx_overclock, true, SWITCH_DEFAULT_CPU_PROFILE, false); 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 #endif
#ifdef HAVE_MENU #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_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); SETTING_UINT("playlist_sublabel_runtime_type", &settings->uints.playlist_sublabel_runtime_type, true, playlist_sublabel_runtime_type, false);
#endif #endif
@ -1853,7 +1856,7 @@ static struct config_size_setting *populate_settings_size(settings_t *settings,
if (!tmp) if (!tmp)
return NULL; 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; *size = count;
@ -2038,7 +2041,7 @@ void config_set_defaults(void)
#else #else
configuration_set_bool(settings, settings->bools.multimedia_builtin_mediaplayer_enable, false); configuration_set_bool(settings, settings->bools.multimedia_builtin_mediaplayer_enable, false);
#endif #endif
settings->floats.video_scale = scale; settings->floats.video_scale = DEFAULT_SCALE;
if (g_defaults.settings.video_threaded_enable != DEFAULT_VIDEO_THREADED) if (g_defaults.settings.video_threaded_enable != DEFAULT_VIDEO_THREADED)
video_driver_set_threaded(g_defaults.settings.video_threaded_enable); 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)); audio_device, sizeof(settings->arrays.audio_device));
if (!g_defaults.settings.out_latency) 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; 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)); midi_output, sizeof(settings->arrays.midi_output));
/* Avoid reloading config on every content load */ /* 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); rarch_ctl(RARCH_CTL_SET_BLOCK_CONFIG_READ, NULL);
else else
rarch_ctl(RARCH_CTL_UNSET_BLOCK_CONFIG_READ, NULL); rarch_ctl(RARCH_CTL_UNSET_BLOCK_CONFIG_READ, NULL);

View File

@ -129,6 +129,7 @@ typedef struct settings
bool input_overlay_enable_autopreferred; bool input_overlay_enable_autopreferred;
bool input_overlay_hide_in_menu; bool input_overlay_hide_in_menu;
bool input_overlay_show_physical_inputs; bool input_overlay_show_physical_inputs;
bool input_overlay_show_mouse_cursor;
bool input_descriptor_label_show; bool input_descriptor_label_show;
bool input_descriptor_hide_unbound; bool input_descriptor_hide_unbound;
bool input_all_users_control_menu; bool input_all_users_control_menu;
@ -275,7 +276,6 @@ typedef struct settings
bool set_supports_no_game_enable; bool set_supports_no_game_enable;
bool auto_screenshot_filename; bool auto_screenshot_filename;
bool history_list_enable; bool history_list_enable;
bool playlist_entry_remove;
bool playlist_entry_rename; bool playlist_entry_rename;
bool rewind_enable; bool rewind_enable;
bool vrr_runloop_enable; bool vrr_runloop_enable;
@ -449,6 +449,10 @@ typedef struct settings
#ifdef HAVE_VIDEO_LAYOUT #ifdef HAVE_VIDEO_LAYOUT
unsigned video_layout_selected_view; unsigned video_layout_selected_view;
#endif #endif
#ifdef GEKKO
unsigned video_overscan_correction_top;
unsigned video_overscan_correction_bottom;
#endif
unsigned menu_timedate_style; unsigned menu_timedate_style;
unsigned menu_thumbnails; unsigned menu_thumbnails;
@ -477,6 +481,7 @@ typedef struct settings
unsigned menu_rgui_particle_effect; unsigned menu_rgui_particle_effect;
unsigned menu_ticker_type; unsigned menu_ticker_type;
unsigned playlist_entry_remove_enable;
unsigned playlist_show_inline_core_name; unsigned playlist_show_inline_core_name;
unsigned playlist_sublabel_runtime_type; unsigned playlist_sublabel_runtime_type;

299
dynamic.c
View File

@ -473,6 +473,33 @@ bool libretro_get_system_info(const char *path,
return true; 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: * load_symbols:
* @type : Type of core to be loaded. * @type : Type of core to be loaded.
@ -542,296 +569,40 @@ bool init_libretro_sym_custom(enum rarch_core_type type,
#endif #endif
#endif #endif
SYMBOL(retro_init); CORE_SYMBOLS(SYMBOL);
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);
} }
break; break;
case CORE_TYPE_DUMMY: case CORE_TYPE_DUMMY:
SYMBOL_DUMMY(retro_init); CORE_SYMBOLS(SYMBOL_DUMMY);
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);
break; break;
case CORE_TYPE_FFMPEG: case CORE_TYPE_FFMPEG:
#ifdef HAVE_FFMPEG #ifdef HAVE_FFMPEG
SYMBOL_FFMPEG(retro_init); CORE_SYMBOLS(SYMBOL_FFMPEG);
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);
#endif #endif
break; break;
case CORE_TYPE_MPV: case CORE_TYPE_MPV:
#ifdef HAVE_MPV #ifdef HAVE_MPV
SYMBOL_MPV(retro_init); CORE_SYMBOLS(SYMBOL_MPV);
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);
#endif #endif
break; break;
case CORE_TYPE_IMAGEVIEWER: case CORE_TYPE_IMAGEVIEWER:
#ifdef HAVE_IMAGEVIEWER #ifdef HAVE_IMAGEVIEWER
SYMBOL_IMAGEVIEWER(retro_init); CORE_SYMBOLS(SYMBOL_IMAGEVIEWER);
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);
#endif #endif
break; break;
case CORE_TYPE_NETRETROPAD: case CORE_TYPE_NETRETROPAD:
#if defined(HAVE_NETWORKING) && defined(HAVE_NETWORKGAMEPAD) #if defined(HAVE_NETWORKING) && defined(HAVE_NETWORKGAMEPAD)
SYMBOL_NETRETROPAD(retro_init); CORE_SYMBOLS(SYMBOL_NETRETROPAD);
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);
#endif #endif
break; break;
case CORE_TYPE_VIDEO_PROCESSOR: case CORE_TYPE_VIDEO_PROCESSOR:
#if defined(HAVE_VIDEOPROCESSOR) #if defined(HAVE_VIDEOPROCESSOR)
SYMBOL_VIDEOPROCESSOR(retro_init); CORE_SYMBOLS(SYMBOL_VIDEOPROCESSOR);
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);
#endif #endif
break; break;
case CORE_TYPE_GONG: case CORE_TYPE_GONG:
#ifdef HAVE_EASTEREGG #ifdef HAVE_EASTEREGG
SYMBOL_GONG(retro_init); CORE_SYMBOLS(SYMBOL_GONG);
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);
#endif #endif
break; break;
} }

View File

@ -1987,21 +1987,12 @@ static int frontend_unix_parse_drive_list(void *data, bool load_content)
enum_idx, enum_idx,
FILE_TYPE_DIRECTORY, 0, 0); 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 #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 #endif
return 0; return 0;

View File

@ -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.format = GX2_SURFACE_FORMAT_UNORM_R4_G4_B4_A4;
wiiu->menu.texture.surface.tileMode = GX2_TILE_MODE_LINEAR_ALIGNED; wiiu->menu.texture.surface.tileMode = GX2_TILE_MODE_LINEAR_ALIGNED;
wiiu->menu.texture.viewNumSlices = 1; 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); GX2CalcSurfaceSizeAndAlignment(&wiiu->menu.texture.surface);
GX2InitTextureRegs(&wiiu->menu.texture); 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.v = 0.0f;
wiiu->menu.v->coord.width = 1.0f; wiiu->menu.v->coord.width = 1.0f;
wiiu->menu.v->coord.height = 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)); GX2Invalidate(GX2_INVALIDATE_MODE_CPU_ATTRIBUTE_BUFFER, wiiu->menu.v, 4 * sizeof(*wiiu->menu.v));
wiiu->vertex_cache.size = 0x1000; 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); GX2SetAttribBuffer(0, 4 * sizeof(*wiiu->menu.v), sizeof(*wiiu->menu.v), wiiu->menu.v);
GX2SetPixelTexture(&wiiu->menu.texture, sprite_shader.ps.samplerVars[0].location); 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); sprite_shader.ps.samplerVars[0].location);
GX2DrawEx(GX2_PRIMITIVE_MODE_POINTS, 1, 0, 1); 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, GX2Invalidate(GX2_INVALIDATE_MODE_CPU_TEXTURE, wiiu->menu.texture.surface.image,
wiiu->menu.texture.surface.imageSize); wiiu->menu.texture.surface.imageSize);
wiiu->menu.v->pos.x = 0.0f; wiiu->menu.v->pos.x = wiiu->vp.x;
wiiu->menu.v->pos.y = 0.0f; wiiu->menu.v->pos.y = wiiu->vp.y;
wiiu->menu.v->pos.width = width; wiiu->menu.v->pos.width = wiiu->vp.width;
wiiu->menu.v->pos.height = height; wiiu->menu.v->pos.height = wiiu->vp.height;
wiiu->menu.v->coord.u = 0.0f; wiiu->menu.v->coord.u = 0.0f;
wiiu->menu.v->coord.v = 0.0f; wiiu->menu.v->coord.v = 0.0f;
wiiu->menu.v->coord.width = (float)width / wiiu->texture.surface.width; wiiu->menu.v->coord.width = (float)width / wiiu->menu.texture.surface.width;
wiiu->menu.v->coord.height = (float)height / wiiu->texture.surface.height; 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)); GX2Invalidate(GX2_INVALIDATE_MODE_CPU_ATTRIBUTE_BUFFER, wiiu->menu.v, 4 * sizeof(*wiiu->menu.v));
} }

View File

@ -95,6 +95,8 @@ typedef struct gx_video
bool menu_texture_enable; bool menu_texture_enable;
video_viewport_t vp; video_viewport_t vp;
unsigned scale; unsigned scale;
unsigned overscan_correction_top;
unsigned overscan_correction_bottom;
#ifdef HAVE_OVERLAY #ifdef HAVE_OVERLAY
struct gx_overlay_data *overlay; struct gx_overlay_data *overlay;
unsigned overlays; 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; int gamma;
unsigned degrees; unsigned degrees;
@ -918,10 +920,9 @@ static void gx_resize(void *data)
float top = 1, bottom = -1, left = -1, right = 1; float top = 1, bottom = -1, left = -1, right = 1;
int x = 0, y = 0; int x = 0, y = 0;
gx_video_t *gx = (gx_video_t*)data; gx_video_t *gx = (gx_video_t*)data;
settings_t *settings = config_get_ptr();
const global_t *global = global_get_ptr(); const global_t *global = global_get_ptr();
if (!gx) if (!gx || !settings)
return; return;
width = gx->vp.full_width; 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)) if(gx_isValidXOrigin(gx_xOrigin + x))
{ {
gx_mode.viXOrigin = 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) video_frame_info_t *video_info)
{ {
char fps_text_buf[128]; char fps_text_buf[128];
settings_t *settings = config_get_ptr();
gx_video_t *gx = (gx_video_t*)data; gx_video_t *gx = (gx_video_t*)data;
u8 clear_efb = GX_FALSE; u8 clear_efb = GX_FALSE;
uint32_t level = 0; uint32_t level = 0;
fps_text_buf[0] = '\0'; fps_text_buf[0] = '\0';
if(!gx || (!frame && !gx->menu_texture_enable)) if(!gx || (!frame && !gx->menu_texture_enable) || !settings)
return true; return true;
if (!frame) if (!frame)
width = height = 4; /* draw a black square in the background */ 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) if(gx->should_resize)
{ {
gx_resize(gx); gx_resize(gx, settings);
clear_efb = GX_TRUE; clear_efb = GX_TRUE;
} }

View File

@ -909,6 +909,13 @@ static uint32_t gfx_ctx_drm_get_flags(void *data)
if (drm->core_hw_context_enable) if (drm->core_hw_context_enable)
BIT32_SET(flags, GFX_CTX_FLAGS_GL_CORE_CONTEXT); BIT32_SET(flags, GFX_CTX_FLAGS_GL_CORE_CONTEXT);
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); BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_GLSL);
return flags; return flags;

View File

@ -14,6 +14,7 @@
*/ */
#include <compat/strl.h> #include <compat/strl.h>
#include <string/stdstring.h>
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
#include "../../config.h" #include "../../config.h"
@ -154,9 +155,42 @@ error:
} }
static void gfx_ctx_khr_display_input_driver(void *data, 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) 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 = NULL;
*input_data = NULL; *input_data = NULL;
} }

View File

@ -816,7 +816,12 @@ static uint32_t gfx_ctx_wgl_get_flags(void *data)
} }
if (string_is_equal(video_driver_get_ident(), "gl1")) { } 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 else
{ {
#ifdef HAVE_CG #ifdef HAVE_CG

View File

@ -41,15 +41,17 @@ const blissbox_pad_type_t blissbox_pad_types[] =
{"A5200", 6}, {"A5200", 6},
{"A5200_TB", 50}, {"A5200_TB", 50},
{"A7800", 4}, {"A7800", 4},
{"ATARI_KEYPAD", 43},
{"ATARI", 0}, {"ATARI", 0},
{"ATARI_KEYPAD", 43},
{"ATMARK", 10}, {"ATMARK", 10},
{"BALLY", 42}, {"BALLY", 42},
{"CD32", 24}, {"CD32", 24},
{"CDI", 33}, {"CDI", 33},
{"COL", 1}, {"COL", 1},
{"COL_FLASHBACK", 48}, /* 3.0 */
{"DC_ASCI", 15}, {"DC_ASCI", 15},
{"DC_PAD", 16}, {"DC_PAD", 16},
{"DC_TWIN", 35}, /* 3.0 */
{"FC_ARKANOID", 53}, {"FC_ARKANOID", 53},
{"FC_NES", 52}, {"FC_NES", 52},
{"GC", 9}, {"GC", 9},
@ -57,7 +59,6 @@ const blissbox_pad_type_t blissbox_pad_types[] =
{"GEN_3", 20}, {"GEN_3", 20},
{"GEN_6", 21}, {"GEN_6", 21},
{"GRAVIS_EX", 38}, {"GRAVIS_EX", 38},
{"gx4000", 2},
{"HAMMERHEAD", 40}, {"HAMMERHEAD", 40},
{"HPD", 7}, {"HPD", 7},
{"INTELI", 14}, {"INTELI", 14},
@ -66,6 +67,9 @@ const blissbox_pad_type_t blissbox_pad_types[] =
{"N64", 19}, {"N64", 19},
{"NEO", 49}, {"NEO", 49},
{"NES", 17}, {"NES", 17},
{"NES_ARKANOID", 30},
{"NES_GUN", 28},
{"NES_POWERPAD", 36},
{"PADDLES", 41}, {"PADDLES", 41},
{"PC_FX", 26}, {"PC_FX", 26},
{"PC_GAMEPAD", 46}, {"PC_GAMEPAD", 46},
@ -73,27 +77,28 @@ const blissbox_pad_type_t blissbox_pad_types[] =
{"PSX_DS", 115}, {"PSX_DS", 115},
{"PSX_DS2", 121}, {"PSX_DS2", 121},
{"PSX_FS", 83}, {"PSX_FS", 83},
{"PSX_JOGCON", 227}, /* 3.0 */
{"PSX_NEGCON", 51}, {"PSX_NEGCON", 51},
{"PSX_WHEEL", 12}, {"PSX_WHEEL", 12},
{"SAC", 34}, {"SAC", 34},
{"SATURN_ANALOG", 8}, {"SATURN_ANALOG", 8},
{"SATURN_DIGITAL", 3}, {"SATURN_DIGITAL", 3},
{"SMS", 22}, {"SMS", 22},
{"SNES", 27},
{"SNESS_NTT", 47}, /* 3.0 */
{"SPEEK", 45}, {"SPEEK", 45},
{"TG16", 23}, {"TG16", 23},
{"TG16_6BUTTON", 54}, /* 3.0 */
{"THREE_DO", 25}, {"THREE_DO", 25},
{"THREE_DO_ANALOG", 37}, {"THREE_DO_ANALOG", 37},
{"VEC", 5}, {"VEC", 5},
{"WII_NUNCHUK", 13},
{"ZXSINC", 44},
{"NES_ARKANOID", 30},
{"NES_GUN", 28},
{"NES_POWERPAD", 36},
{"SNES", 27},
{"V_BOY", 29}, {"V_BOY", 29},
{"WII_CLASSIC", 31}, {"WII_CLASSIC", 31},
{"WII_DRUM", 55}, /* 3.0 */
{"WII_MPLUS", 32}, {"WII_MPLUS", 32},
{"PSX_JOGCON", 227}, {"WII_NUNCHUK", 13},
{"ZXSINC", 44},
{"gx4000", 2},
{NULL, 0}, /* used to mark unconnected ports, do not remove */ {NULL, 0}, /* used to mark unconnected ports, do not remove */
}; };

View File

@ -602,6 +602,7 @@ void input_overlay_loaded(retro_task_t *task,
overlay_task_data_t *data = (overlay_task_data_t*)task_data; overlay_task_data_t *data = (overlay_task_data_t*)task_data;
input_overlay_t *ol = NULL; input_overlay_t *ol = NULL;
const video_overlay_interface_t *iface = NULL; const video_overlay_interface_t *iface = NULL;
settings_t *settings = config_get_ptr();
if (err) if (err)
return; return;
@ -642,6 +643,10 @@ void input_overlay_loaded(retro_task_t *task,
overlay_ptr = ol; overlay_ptr = ol;
free(data); free(data);
if (!settings->bools.input_overlay_show_mouse_cursor)
video_driver_hide_mouse();
return; return;
abort_load: abort_load:

View File

@ -202,7 +202,7 @@ MSG_HASH(MENU_ENUM_LABEL_CONTENT_DATABASE_DIRECTORY,
MSG_HASH(MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE, MSG_HASH(MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE,
"content_history_size") "content_history_size")
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_REMOVE, MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_REMOVE,
"playlist_entry_remove") "playlist_entry_remove_enable")
MSG_HASH(MENU_ENUM_LABEL_CONTENT_SETTINGS, MSG_HASH(MENU_ENUM_LABEL_CONTENT_SETTINGS,
"quick_menu") "quick_menu")
MSG_HASH(MENU_ENUM_LABEL_CORE_ASSETS_DIRECTORY, 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") "overlay_show_physical_inputs")
MSG_HASH(MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, MSG_HASH(MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT,
"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, MSG_HASH(MENU_ENUM_LABEL_INPUT_PLAYER_ANALOG_DPAD_MODE,
"input_player%u_analog_dpad_mode") "input_player%u_analog_dpad_mode")
MSG_HASH(MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR, 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") "video_viewport_custom_y")
MSG_HASH(MENU_ENUM_LABEL_VIDEO_VI_WIDTH, MSG_HASH(MENU_ENUM_LABEL_VIDEO_VI_WIDTH,
"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, MSG_HASH(MENU_ENUM_LABEL_VIDEO_VSYNC,
"video_vsync") "video_vsync")
MSG_HASH(MENU_ENUM_LABEL_VIDEO_ADAPTIVE_VSYNC, MSG_HASH(MENU_ENUM_LABEL_VIDEO_ADAPTIVE_VSYNC,

View File

@ -1420,6 +1420,10 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS,
"Show Inputs On Overlay" "Show Inputs On Overlay"
) )
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_MOUSE_CURSOR,
"Show Mouse Cursor With Overlay"
)
MSG_HASH( MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT,
"Show Inputs Listen Port" "Show Inputs Listen Port"
@ -2174,6 +2178,10 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUIT_RETROARCH, MENU_ENUM_LABEL_VALUE_QUIT_RETROARCH,
"Quit RetroArch" "Quit RetroArch"
) )
MSG_HASH(
MENU_ENUM_LABEL_VALUE_RESTART_RETROARCH,
"Restart RetroArch"
)
#endif #endif
MSG_HASH( MSG_HASH(
MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ANALOG, MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ANALOG,
@ -2378,10 +2386,6 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, MENU_ENUM_LABEL_VALUE_RESTART_CONTENT,
"Restart" "Restart"
) )
MSG_HASH(
MENU_ENUM_LABEL_VALUE_RESTART_RETROARCH,
"Restart RetroArch"
)
MSG_HASH( MSG_HASH(
MENU_ENUM_LABEL_VALUE_RESUME, MENU_ENUM_LABEL_VALUE_RESUME,
"Resume" "Resume"
@ -3772,6 +3776,22 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_VI_WIDTH, MENU_ENUM_LABEL_VALUE_VIDEO_VI_WIDTH,
"Set VI Screen 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( MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC, MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC,
"Vertical Sync (Vsync)" "Vertical Sync (Vsync)"
@ -5516,6 +5536,10 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, 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." "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( MSG_HASH(
MENU_ENUM_SUBLABEL_PLAYLISTS_TAB, MENU_ENUM_SUBLABEL_PLAYLISTS_TAB,
"Scanned content matching the database will appear here." "Scanned content matching the database will appear here."
@ -8619,6 +8643,18 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_PLAYLIST_INLINE_CORE_DISPLAY_NEVER, MENU_ENUM_LABEL_VALUE_PLAYLIST_INLINE_CORE_DISPLAY_NEVER,
"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( MSG_HASH(
MENU_ENUM_LABEL_VALUE_PLAYLIST_SORT_ALPHABETICAL, MENU_ENUM_LABEL_VALUE_PLAYLIST_SORT_ALPHABETICAL,
"Sort playlists alphabetically" "Sort playlists alphabetically"

View File

@ -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_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_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_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_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_scale_integer, MENU_ENUM_SUBLABEL_VIDEO_SCALE_INTEGER)
default_sublabel_macro(action_bind_sublabel_video_gpu_screenshot, MENU_ENUM_SUBLABEL_VIDEO_GPU_SCREENSHOT) 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) default_sublabel_macro(action_bind_sublabel_video_3ds_display_mode, MENU_ENUM_SUBLABEL_VIDEO_3DS_DISPLAY_MODE)
#endif #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_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_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) 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: case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_overlay_show_physical_inputs_port); BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_overlay_show_physical_inputs_port);
break; 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: case MENU_ENUM_LABEL_VIDEO_FONT_SIZE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_font_size); BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_font_size);
break; 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: case MENU_ENUM_LABEL_VIDEO_3DS_DISPLAY_MODE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_3ds_display_mode); BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_3ds_display_mode);
break; 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 #endif
case MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_LOAD: case MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_LOAD:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheat_apply_after_load); BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheat_apply_after_load);

View File

@ -63,18 +63,6 @@
#include <gfx/scaler/scaler.h> #include <gfx/scaler/scaler.h>
#include <features/features_cpu.h> #include <features/features_cpu.h>
#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 MAX_FB_WIDTH 426
#define RGUI_ENTRY_VALUE_MAXLEN 19 #define RGUI_ENTRY_VALUE_MAXLEN 19
@ -533,7 +521,7 @@ typedef struct
unsigned particle_effect; unsigned particle_effect;
bool extended_ascii_enable; bool extended_ascii_enable;
float scroll_y; float scroll_y;
char *msgbox; char msgbox[1024];
unsigned color_theme; unsigned color_theme;
rgui_colors_t colors; rgui_colors_t colors;
bool is_playlist; bool is_playlist;
@ -761,7 +749,7 @@ typedef struct
unsigned width; unsigned width;
unsigned height; unsigned height;
bool is_valid; bool is_valid;
char *path; char path[PATH_MAX_LENGTH];
uint16_t *data; uint16_t *data;
} thumbnail_t; } thumbnail_t;
@ -771,7 +759,7 @@ static thumbnail_t fs_thumbnail = {
0, 0,
0, 0,
false, false,
NULL, {0},
NULL NULL
}; };
@ -781,7 +769,7 @@ static thumbnail_t mini_thumbnail = {
0, 0,
0, 0,
false, false,
NULL, {0},
NULL NULL
}; };
@ -791,7 +779,7 @@ static thumbnail_t mini_left_thumbnail = {
0, 0,
0, 0,
false, false,
NULL, {0},
NULL NULL
}; };
@ -1603,13 +1591,12 @@ static bool request_thumbnail(
thumbnail->width = 0; thumbnail->width = 0;
thumbnail->height = 0; thumbnail->height = 0;
thumbnail->is_valid = false; thumbnail->is_valid = false;
free(thumbnail->path); thumbnail->path[0] = '\0';
thumbnail->path = NULL;
/* Ensure that new path is valid... */ /* Ensure that new path is valid... */
if (!string_is_empty(path)) if (!string_is_empty(path))
{ {
thumbnail->path = strdup(path); strlcpy(thumbnail->path, path, sizeof(thumbnail->path));
if (path_is_valid(path)) if (path_is_valid(path))
{ {
/* Would like to cancel any existing image load tasks /* 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); menu_display_get_fb_size(&fb_width, &fb_height, &fb_pitch);
term_width = RGUI_TERM_WIDTH(fb_width) * FONT_WIDTH_STRIDE; term_width = rgui_term_layout.width * FONT_WIDTH_STRIDE;
term_height = RGUI_TERM_HEIGHT(fb_height) * FONT_HEIGHT_STRIDE; term_height = rgui_term_layout.height * FONT_HEIGHT_STRIDE;
/* Sanity check (this can never, ever happen, so just return /* Sanity check (this can never, ever happen, so just return
* instead of trying to crop the thumbnail image...) */ * instead of trying to crop the thumbnail image...) */
if ((thumbnail_fullwidth > term_width) || (thumbnail->height > term_height)) if ((thumbnail_fullwidth > term_width) || (thumbnail->height > term_height))
return; 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)); (thumbnail->width + ((thumbnail_fullwidth - thumbnail->width) >> 1));
if (((thumbnail_id == MENU_THUMBNAIL_RIGHT) && !settings->bools.menu_rgui_swap_thumbnails) || if (((thumbnail_id == MENU_THUMBNAIL_RIGHT) && !settings->bools.menu_rgui_swap_thumbnails) ||
((thumbnail_id == MENU_THUMBNAIL_LEFT) && 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 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)); (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; rgui_t *rgui = (rgui_t*)data;
if (!rgui || !message || !*message) if (!rgui || !message)
return; return;
if (!string_is_empty(rgui->msgbox)) rgui->msgbox[0] = '\0';
free(rgui->msgbox);
rgui->msgbox = strdup(message); if (!string_is_empty(message))
strlcpy(rgui->msgbox, message, sizeof(rgui->msgbox));
rgui->force_redraw = true; 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; char *msg = list->elems[i].data;
unsigned msglen = (unsigned)utf8len(msg); 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_layout.width - 2] = '.';
msg[RGUI_TERM_WIDTH(fb_width) - 1] = '.'; msg[rgui_term_layout.width - 1] = '.';
msg[RGUI_TERM_WIDTH(fb_width) - 0] = '.'; msg[rgui_term_layout.width - 0] = '.';
msg[RGUI_TERM_WIDTH(fb_width) + 1] = '\0'; msg[rgui_term_layout.width + 1] = '\0';
msglen = RGUI_TERM_WIDTH(fb_width); msglen = rgui_term_layout.width;
} }
line_width = msglen * FONT_WIDTH_STRIDE - 1 + 6 + 10; 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. */ /* 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; size_t start = 0;
menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start); 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); menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &old_start);
if (old_start > (unsigned)bottom) if (old_start > (unsigned)bottom)
@ -3186,8 +3175,8 @@ static void rgui_render(void *data, bool is_idle)
entries_end = menu_entries_get_size(); entries_end = menu_entries_get_size();
end = ((old_start + RGUI_TERM_HEIGHT(fb_height)) <= (entries_end)) ? end = ((old_start + rgui_term_layout.height) <= (entries_end)) ?
old_start + RGUI_TERM_HEIGHT(fb_height) : entries_end; old_start + rgui_term_layout.height : entries_end;
/* Render background */ /* Render background */
rgui_render_background(); rgui_render_background();
@ -3228,13 +3217,13 @@ static void rgui_render(void *data, bool is_idle)
{ {
/* Format thumbnail title */ /* Format thumbnail title */
ticker.s = thumbnail_title_buf; 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.str = thumbnail_title;
ticker.selected = true; ticker.selected = true;
menu_animation_ticker(&ticker); menu_animation_ticker(&ticker);
title_width = (unsigned)(utf8len(thumbnail_title_buf) * FONT_WIDTH_STRIDE); 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 */ /* Draw thumbnail title background */
rgui_fill_rect(rgui_frame_buf.data, fb_width, fb_height, 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_max_len;
size_t title_len; size_t title_len;
unsigned title_x; unsigned title_x;
unsigned title_y = RGUI_TERM_START_Y(fb_height) - FONT_HEIGHT_STRIDE; unsigned title_y = rgui_term_layout.start_y - FONT_HEIGHT_STRIDE;
unsigned term_end_x = RGUI_TERM_START_X(fb_width) + (RGUI_TERM_WIDTH(fb_width) * FONT_WIDTH_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 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_mini_thumbnails = rgui->is_playlist && settings->bools.menu_rgui_inline_thumbnails;
bool show_thumbnail = false; bool show_thumbnail = false;
bool show_left_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' * the vertical centre of RGUI's 'terminal'
* (required to determine whether a particular entry * (required to determine whether a particular entry
* is adjacent to the 'right' or 'left' thumbnail) */ * 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 */ /* Show battery indicator, if required */
@ -3354,7 +3343,7 @@ static void rgui_render(void *data, bool is_idle)
} }
/* Print title */ /* 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'; title_buf[0] = '\0';
ticker.s = title_buf; ticker.s = title_buf;
@ -3367,8 +3356,8 @@ static void rgui_render(void *data, bool is_idle)
string_to_upper(title_buf); string_to_upper(title_buf);
title_len = utf8len(title_buf); title_len = utf8len(title_buf);
title_x = RGUI_TERM_START_X(fb_width) + title_x = rgui_term_layout.start_x +
(RGUI_TERM_WIDTH(fb_width) - title_len) * FONT_WIDTH_STRIDE / 2; (rgui_term_layout.width - title_len) * FONT_WIDTH_STRIDE / 2;
/* Title is always centred, unless it is long enough /* Title is always centred, unless it is long enough
* to infringe upon the battery indicator, in which case * 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); title_buf, rgui->colors.title_color, rgui->colors.shadow_color);
/* Print menu entries */ /* Print menu entries */
x = RGUI_TERM_START_X(fb_width); x = rgui_term_layout.start_x;
y = RGUI_TERM_START_Y(fb_height); y = rgui_term_layout.start_y;
menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &new_start); 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); menu_entry_get_value(&entry, &entry_value);
/* Get base length of entry title field */ /* 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 showing mini thumbnails, reduce title field length accordingly */
if (show_mini_thumbnails) if (show_mini_thumbnails)
{ {
unsigned term_offset = settings->bools.menu_rgui_swap_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; unsigned thumbnail_width = 0;
/* Note: /* Note:
@ -3436,7 +3425,7 @@ static void rgui_render(void *data, bool is_idle)
* standard layout (even though it always will...), * standard layout (even though it always will...),
* so have to check whether there are an odd or even * so have to check whether there are an odd or even
* number of entries... */ * number of entries... */
if((RGUI_TERM_HEIGHT(fb_height) & 1) == 0) if((rgui_term_layout.height & 1) == 0)
{ {
/* Even number of entries */ /* Even number of entries */
if ((show_thumbnail && (term_offset <= term_mid_point)) || if ((show_thumbnail && (term_offset <= term_mid_point)) ||
@ -3535,9 +3524,9 @@ static void rgui_render(void *data, bool is_idle)
blit_line( blit_line(
fb_width, fb_width,
RGUI_TERM_START_X(fb_width) + FONT_WIDTH_STRIDE, rgui_term_layout.start_x + FONT_WIDTH_STRIDE,
(RGUI_TERM_HEIGHT(fb_height) * FONT_HEIGHT_STRIDE) + (rgui_term_layout.height * FONT_HEIGHT_STRIDE) +
RGUI_TERM_START_Y(fb_height) + 2, sublabel_buf, rgui_term_layout.start_y + 2, sublabel_buf,
rgui->colors.hover_color, rgui->colors.shadow_color); rgui->colors.hover_color, rgui->colors.shadow_color);
} }
else if (settings->bools.menu_core_enable) else if (settings->bools.menu_core_enable)
@ -3557,9 +3546,9 @@ static void rgui_render(void *data, bool is_idle)
blit_line( blit_line(
fb_width, fb_width,
RGUI_TERM_START_X(fb_width) + FONT_WIDTH_STRIDE, rgui_term_layout.start_x + FONT_WIDTH_STRIDE,
(RGUI_TERM_HEIGHT(fb_height) * FONT_HEIGHT_STRIDE) + (rgui_term_layout.height * FONT_HEIGHT_STRIDE) +
RGUI_TERM_START_Y(fb_height) + 2, core_title_buf, rgui_term_layout.start_y + 2, core_title_buf,
rgui->colors.hover_color, rgui->colors.shadow_color); rgui->colors.hover_color, rgui->colors.shadow_color);
} }
@ -3580,8 +3569,8 @@ static void rgui_render(void *data, bool is_idle)
blit_line( blit_line(
fb_width, fb_width,
timedate_x, timedate_x,
(RGUI_TERM_HEIGHT(fb_height) * FONT_HEIGHT_STRIDE) + (rgui_term_layout.height * FONT_HEIGHT_STRIDE) +
RGUI_TERM_START_Y(fb_height) + 2, timedate, rgui_term_layout.start_y + 2, timedate,
rgui->colors.hover_color, rgui->colors.shadow_color); 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)) if (!string_is_empty(rgui->msgbox))
{ {
rgui_render_messagebox(rgui, rgui->msgbox); rgui_render_messagebox(rgui, rgui->msgbox);
free(rgui->msgbox); rgui->msgbox[0] = '\0';
rgui->msgbox = NULL;
rgui->force_redraw = true; rgui->force_redraw = true;
} }
@ -3634,10 +3622,7 @@ static void rgui_thumbnail_free(thumbnail_t *thumbnail)
thumbnail->width = 0; thumbnail->width = 0;
thumbnail->height = 0; thumbnail->height = 0;
thumbnail->is_valid = false; thumbnail->is_valid = false;
thumbnail->path[0] = '\0';
if (!string_is_empty(thumbnail->path))
free(thumbnail->path);
thumbnail->path = NULL;
if (thumbnail->data) if (thumbnail->data)
free(thumbnail->data); free(thumbnail->data);
@ -4281,16 +4266,14 @@ static void rgui_update_thumbnail_image(void *userdata)
mini_thumbnail.width = 0; mini_thumbnail.width = 0;
mini_thumbnail.height = 0; mini_thumbnail.height = 0;
mini_thumbnail.is_valid = false; mini_thumbnail.is_valid = false;
free(mini_thumbnail.path); mini_thumbnail.path[0] = '\0';
mini_thumbnail.path = NULL;
} }
else else
{ {
fs_thumbnail.width = 0; fs_thumbnail.width = 0;
fs_thumbnail.height = 0; fs_thumbnail.height = 0;
fs_thumbnail.is_valid = false; fs_thumbnail.is_valid = false;
free(fs_thumbnail.path); fs_thumbnail.path[0] = '\0';
fs_thumbnail.path = NULL;
} }
} }
@ -4316,20 +4299,17 @@ static void rgui_refresh_thumbnail_image(void *userdata)
fs_thumbnail.width = 0; fs_thumbnail.width = 0;
fs_thumbnail.height = 0; fs_thumbnail.height = 0;
fs_thumbnail.is_valid = false; fs_thumbnail.is_valid = false;
free(fs_thumbnail.path); fs_thumbnail.path[0] = '\0';
fs_thumbnail.path = NULL;
mini_thumbnail.width = 0; mini_thumbnail.width = 0;
mini_thumbnail.height = 0; mini_thumbnail.height = 0;
mini_thumbnail.is_valid = false; mini_thumbnail.is_valid = false;
free(mini_thumbnail.path); mini_thumbnail.path[0] = '\0';
mini_thumbnail.path = NULL;
mini_left_thumbnail.width = 0; mini_left_thumbnail.width = 0;
mini_left_thumbnail.height = 0; mini_left_thumbnail.height = 0;
mini_left_thumbnail.is_valid = false; mini_left_thumbnail.is_valid = false;
free(mini_left_thumbnail.path); mini_left_thumbnail.path[0] = '\0';
mini_left_thumbnail.path = NULL;
/* Only load thumbnails if currently viewing a /* Only load thumbnails if currently viewing a
* playlist (note that thumbnails are loaded * 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) static void rgui_navigation_set(void *data, bool scroll)
{ {
size_t start, fb_pitch; size_t start;
unsigned fb_width, fb_height;
bool do_set_start = false; bool do_set_start = false;
size_t end = menu_entries_get_size(); size_t end = menu_entries_get_size();
size_t selection = menu_navigation_get_selection(); size_t selection = menu_navigation_get_selection();
@ -4409,23 +4388,20 @@ static void rgui_navigation_set(void *data, bool scroll)
if (!scroll) if (!scroll)
return; return;
menu_display_get_fb_size(&fb_width, &fb_height, if (selection < rgui_term_layout.height /2)
&fb_pitch);
if (selection < RGUI_TERM_HEIGHT(fb_height) /2)
{ {
start = 0; start = 0;
do_set_start = true; do_set_start = true;
} }
else if (selection >= (RGUI_TERM_HEIGHT(fb_height) /2) else if (selection >= (rgui_term_layout.height /2)
&& selection < (end - RGUI_TERM_HEIGHT(fb_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; 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; do_set_start = true;
} }

View File

@ -349,6 +349,14 @@ enum playlist_inline_core_display_type
PLAYLIST_INLINE_CORE_DISPLAY_LAST 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 uintptr_t menu_texture_item;
typedef struct menu_display_ctx_clearcolor typedef struct menu_display_ctx_clearcolor

View File

@ -2042,13 +2042,34 @@ static int menu_displaylist_parse_horizontal_content_actions(
MENU_ENUM_LABEL_RENAME_ENTRY, MENU_ENUM_LABEL_RENAME_ENTRY,
FILE_TYPE_PLAYLIST_ENTRY, 0, idx); FILE_TYPE_PLAYLIST_ENTRY, 0, idx);
if (settings->bools.playlist_entry_remove && if (!settings->bools.kiosk_mode_enable)
!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, menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY),
msg_hash_to_str(MENU_ENUM_LABEL_DELETE_ENTRY), msg_hash_to_str(MENU_ENUM_LABEL_DELETE_ENTRY),
MENU_ENUM_LABEL_DELETE_ENTRY, MENU_ENUM_LABEL_DELETE_ENTRY,
MENU_SETTING_ACTION_DELETE_ENTRY, 0, 0); MENU_SETTING_ACTION_DELETE_ENTRY, 0, 0);
}
if (settings->bools.quick_menu_show_add_to_favorites) 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_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, PARSE_ONLY_BOOL },
{MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT,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_PRESET, PARSE_ONLY_PATH },
{MENU_ENUM_LABEL_OVERLAY_OPACITY, PARSE_ONLY_FLOAT }, {MENU_ENUM_LABEL_OVERLAY_OPACITY, PARSE_ONLY_FLOAT },
{MENU_ENUM_LABEL_OVERLAY_SCALE, 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_HISTORY_LIST_ENABLE, PARSE_ONLY_BOOL},
{MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE, PARSE_ONLY_UINT}, {MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE, PARSE_ONLY_UINT},
{MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME, PARSE_ONLY_BOOL}, {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_SORT_ALPHABETICAL, PARSE_ONLY_BOOL},
{MENU_ENUM_LABEL_PLAYLIST_USE_OLD_FORMAT, PARSE_ONLY_BOOL}, {MENU_ENUM_LABEL_PLAYLIST_USE_OLD_FORMAT, PARSE_ONLY_BOOL},
{MENU_ENUM_LABEL_PLAYLIST_SHOW_INLINE_CORE_NAME, PARSE_ONLY_UINT}, {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_displaylist_parse_settings_enum(info->list,
MENU_ENUM_LABEL_VIDEO_VFILTER, MENU_ENUM_LABEL_VIDEO_VFILTER,
PARSE_ONLY_BOOL, false); 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_displaylist_parse_settings_enum(info->list,
MENU_ENUM_LABEL_VIDEO_ROTATION, MENU_ENUM_LABEL_VIDEO_ROTATION,
PARSE_ONLY_UINT, false); PARSE_ONLY_UINT, false);

View File

@ -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) #if defined(_3DS)
static void setting_get_string_representation_uint_video_3ds_display_mode( static void setting_get_string_representation_uint_video_3ds_display_mode(
rarch_setting_t *setting, rarch_setting_t *setting,
@ -6649,7 +6679,7 @@ static bool setting_append_list(
&subgroup_info, &subgroup_info,
parent_group); parent_group);
#if !defined(IOS) #if !defined(IOS) && !defined(HAVE_LAKKA)
if (frontend_driver_has_fork()) if (frontend_driver_has_fork())
{ {
CONFIG_ACTION( CONFIG_ACTION(
@ -7293,13 +7323,13 @@ static bool setting_append_list(
bool_entries[0].target = &settings->bools.video_shared_context; bool_entries[0].target = &settings->bools.video_shared_context;
bool_entries[0].name_enum_idx = MENU_ENUM_LABEL_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].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[0].flags = SD_FLAG_ADVANCED;
bool_entries[1].target = &settings->bools.load_dummy_on_core_shutdown; 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].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].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[1].flags = SD_FLAG_ADVANCED;
bool_entries[2].target = &settings->bools.set_supports_no_game_enable; 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].target = &settings->bools.config_save_on_exit;
bool_entries[0].name_enum_idx = MENU_ENUM_LABEL_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].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[0].flags = SD_FLAG_NONE;
bool_entries[1].target = &settings->bools.show_hidden_files; bool_entries[1].target = &settings->bools.show_hidden_files;
bool_entries[1].name_enum_idx = MENU_ENUM_LABEL_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].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[1].flags = SD_FLAG_NONE;
bool_entries[2].target = &settings->bools.game_specific_options; bool_entries[2].target = &settings->bools.game_specific_options;
@ -7413,7 +7443,7 @@ static bool setting_append_list(
&settings->bools.video_shader_enable, &settings->bools.video_shader_enable,
MENU_ENUM_LABEL_VIDEO_SHADERS_ENABLE, MENU_ENUM_LABEL_VIDEO_SHADERS_ENABLE,
MENU_ENUM_LABEL_VALUE_VIDEO_SHADERS_ENABLE, MENU_ENUM_LABEL_VALUE_VIDEO_SHADERS_ENABLE,
shader_enable, DEFAULT_SHADER_ENABLE,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -7552,7 +7582,7 @@ static bool setting_append_list(
bool_entries[2].target = &settings->bools.block_sram_overwrite; bool_entries[2].target = &settings->bools.block_sram_overwrite;
bool_entries[2].name_enum_idx = MENU_ENUM_LABEL_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].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[2].flags = SD_FLAG_NONE;
bool_entries[3].target = &settings->bools.savestate_auto_index; bool_entries[3].target = &settings->bools.savestate_auto_index;
@ -7627,7 +7657,7 @@ static bool setting_append_list(
&settings->uints.autosave_interval, &settings->uints.autosave_interval,
MENU_ENUM_LABEL_AUTOSAVE_INTERVAL, MENU_ENUM_LABEL_AUTOSAVE_INTERVAL,
MENU_ENUM_LABEL_VALUE_AUTOSAVE_INTERVAL, MENU_ENUM_LABEL_VALUE_AUTOSAVE_INTERVAL,
autosave_interval, DEFAULT_AUTOSAVE_INTERVAL,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -7703,7 +7733,7 @@ static bool setting_append_list(
&settings->bools.rewind_enable, &settings->bools.rewind_enable,
MENU_ENUM_LABEL_REWIND_ENABLE, MENU_ENUM_LABEL_REWIND_ENABLE,
MENU_ENUM_LABEL_VALUE_REWIND_ENABLE, MENU_ENUM_LABEL_VALUE_REWIND_ENABLE,
rewind_enable, DEFAULT_REWIND_ENABLE,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -7719,7 +7749,7 @@ static bool setting_append_list(
&settings->uints.rewind_granularity, &settings->uints.rewind_granularity,
MENU_ENUM_LABEL_REWIND_GRANULARITY, MENU_ENUM_LABEL_REWIND_GRANULARITY,
MENU_ENUM_LABEL_VALUE_REWIND_GRANULARITY, MENU_ENUM_LABEL_VALUE_REWIND_GRANULARITY,
rewind_granularity, DEFAULT_REWIND_GRANULARITY,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -7734,7 +7764,7 @@ static bool setting_append_list(
&settings->sizes.rewind_buffer_size, &settings->sizes.rewind_buffer_size,
MENU_ENUM_LABEL_REWIND_BUFFER_SIZE, MENU_ENUM_LABEL_REWIND_BUFFER_SIZE,
MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE, MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE,
rewind_buffer_size, DEFAULT_REWIND_BUFFER_SIZE,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -7748,7 +7778,7 @@ static bool setting_append_list(
&settings->uints.rewind_buffer_size_step, &settings->uints.rewind_buffer_size_step,
MENU_ENUM_LABEL_REWIND_BUFFER_SIZE_STEP, MENU_ENUM_LABEL_REWIND_BUFFER_SIZE_STEP,
MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE_STEP, MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE_STEP,
rewind_buffer_size_step, DEFAULT_REWIND_BUFFER_SIZE_STEP,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -7774,7 +7804,7 @@ static bool setting_append_list(
&settings->bools.apply_cheats_after_load, &settings->bools.apply_cheats_after_load,
MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_LOAD, MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_LOAD,
MENU_ENUM_LABEL_VALUE_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_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -7789,7 +7819,7 @@ static bool setting_append_list(
&settings->bools.apply_cheats_after_toggle, &settings->bools.apply_cheats_after_toggle,
MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_TOGGLE, MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_TOGGLE,
MENU_ENUM_LABEL_VALUE_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_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -8220,7 +8250,7 @@ static bool setting_append_list(
&settings->bools.video_fps_show, &settings->bools.video_fps_show,
MENU_ENUM_LABEL_FPS_SHOW, MENU_ENUM_LABEL_FPS_SHOW,
MENU_ENUM_LABEL_VALUE_FPS_SHOW, MENU_ENUM_LABEL_VALUE_FPS_SHOW,
fps_show, DEFAULT_FPS_SHOW,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -8235,7 +8265,7 @@ static bool setting_append_list(
&settings->bools.video_memory_show, &settings->bools.video_memory_show,
MENU_ENUM_LABEL_MEMORY_SHOW, MENU_ENUM_LABEL_MEMORY_SHOW,
MENU_ENUM_LABEL_VALUE_MEMORY_SHOW, MENU_ENUM_LABEL_VALUE_MEMORY_SHOW,
memory_show, DEFAULT_MEMORY_SHOW,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -8250,7 +8280,7 @@ static bool setting_append_list(
&settings->bools.video_statistics_show, &settings->bools.video_statistics_show,
MENU_ENUM_LABEL_STATISTICS_SHOW, MENU_ENUM_LABEL_STATISTICS_SHOW,
MENU_ENUM_LABEL_VALUE_STATISTICS_SHOW, MENU_ENUM_LABEL_VALUE_STATISTICS_SHOW,
statistics_show, DEFAULT_STATISTICS_SHOW,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -8265,7 +8295,7 @@ static bool setting_append_list(
&settings->bools.video_framecount_show, &settings->bools.video_framecount_show,
MENU_ENUM_LABEL_FRAMECOUNT_SHOW, MENU_ENUM_LABEL_FRAMECOUNT_SHOW,
MENU_ENUM_LABEL_VALUE_FRAMECOUNT_SHOW, MENU_ENUM_LABEL_VALUE_FRAMECOUNT_SHOW,
framecount_show, DEFAULT_FRAMECOUNT_SHOW,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -8290,7 +8320,7 @@ static bool setting_append_list(
&settings->uints.video_monitor_index, &settings->uints.video_monitor_index,
MENU_ENUM_LABEL_VIDEO_MONITOR_INDEX, MENU_ENUM_LABEL_VIDEO_MONITOR_INDEX,
MENU_ENUM_LABEL_VALUE_VIDEO_MONITOR_INDEX, MENU_ENUM_LABEL_VALUE_VIDEO_MONITOR_INDEX,
monitor_index, DEFAULT_MONITOR_INDEX,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -8308,7 +8338,7 @@ static bool setting_append_list(
&settings->bools.video_fullscreen, &settings->bools.video_fullscreen,
MENU_ENUM_LABEL_VIDEO_FULLSCREEN, MENU_ENUM_LABEL_VIDEO_FULLSCREEN,
MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN, MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN,
fullscreen, DEFAULT_FULLSCREEN,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -8327,7 +8357,7 @@ static bool setting_append_list(
&settings->bools.video_windowed_fullscreen, &settings->bools.video_windowed_fullscreen,
MENU_ENUM_LABEL_VIDEO_WINDOWED_FULLSCREEN, MENU_ENUM_LABEL_VIDEO_WINDOWED_FULLSCREEN,
MENU_ENUM_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN, MENU_ENUM_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN,
windowed_fullscreen, DEFAULT_WINDOWED_FULLSCREEN,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -8343,7 +8373,7 @@ static bool setting_append_list(
&settings->uints.video_fullscreen_x, &settings->uints.video_fullscreen_x,
MENU_ENUM_LABEL_VIDEO_FULLSCREEN_X, MENU_ENUM_LABEL_VIDEO_FULLSCREEN_X,
MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_X, MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_X,
fullscreen_x, DEFAULT_FULLSCREEN_X,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -8358,7 +8388,7 @@ static bool setting_append_list(
&settings->uints.video_fullscreen_y, &settings->uints.video_fullscreen_y,
MENU_ENUM_LABEL_VIDEO_FULLSCREEN_Y, MENU_ENUM_LABEL_VIDEO_FULLSCREEN_Y,
MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_Y, MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_Y,
fullscreen_y, DEFAULT_FULLSCREEN_Y,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -8453,7 +8483,7 @@ static bool setting_append_list(
&settings->uints.video_aspect_ratio_idx, &settings->uints.video_aspect_ratio_idx,
MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_INDEX, MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_INDEX,
MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX, MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX,
aspect_ratio_idx, DEFAULT_ASPECT_RATIO_IDX,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -8602,7 +8632,7 @@ static bool setting_append_list(
&settings->floats.video_scale, &settings->floats.video_scale,
MENU_ENUM_LABEL_VIDEO_SCALE, MENU_ENUM_LABEL_VIDEO_SCALE,
MENU_ENUM_LABEL_VALUE_VIDEO_SCALE, MENU_ENUM_LABEL_VALUE_VIDEO_SCALE,
scale, DEFAULT_SCALE,
"%.1fx", "%.1fx",
&group_info, &group_info,
&subgroup_info, &subgroup_info,
@ -8617,7 +8647,7 @@ static bool setting_append_list(
&settings->uints.window_position_width, &settings->uints.window_position_width,
MENU_ENUM_LABEL_VIDEO_WINDOW_WIDTH, MENU_ENUM_LABEL_VIDEO_WINDOW_WIDTH,
MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_WIDTH, MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_WIDTH,
window_width, DEFAULT_WINDOW_WIDTH,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -8631,7 +8661,7 @@ static bool setting_append_list(
&settings->uints.window_position_height, &settings->uints.window_position_height,
MENU_ENUM_LABEL_VIDEO_WINDOW_HEIGHT, MENU_ENUM_LABEL_VIDEO_WINDOW_HEIGHT,
MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_HEIGHT, MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_HEIGHT,
window_height, DEFAULT_WINDOW_HEIGHT,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -8645,7 +8675,7 @@ static bool setting_append_list(
&settings->uints.video_window_opacity, &settings->uints.video_window_opacity,
MENU_ENUM_LABEL_VIDEO_WINDOW_OPACITY, MENU_ENUM_LABEL_VIDEO_WINDOW_OPACITY,
MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_OPACITY, MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_OPACITY,
window_opacity, DEFAULT_WINDOW_OPACITY,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -8662,7 +8692,7 @@ static bool setting_append_list(
&settings->bools.video_window_show_decorations, &settings->bools.video_window_show_decorations,
MENU_ENUM_LABEL_VIDEO_WINDOW_SHOW_DECORATIONS, MENU_ENUM_LABEL_VIDEO_WINDOW_SHOW_DECORATIONS,
MENU_ENUM_LABEL_VALUE_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_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -8693,7 +8723,7 @@ static bool setting_append_list(
&settings->bools.video_scale_integer, &settings->bools.video_scale_integer,
MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER, MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER,
MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER, MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER,
scale_integer, DEFAULT_SCALE_INTEGER,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -8713,7 +8743,7 @@ static bool setting_append_list(
&settings->uints.video_viwidth, &settings->uints.video_viwidth,
MENU_ENUM_LABEL_VIDEO_VI_WIDTH, MENU_ENUM_LABEL_VIDEO_VI_WIDTH,
MENU_ENUM_LABEL_VALUE_VIDEO_VI_WIDTH, MENU_ENUM_LABEL_VALUE_VIDEO_VI_WIDTH,
video_viwidth, DEFAULT_VIDEO_VI_WIDTH,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -8726,7 +8756,7 @@ static bool setting_append_list(
&settings->bools.video_vfilter, &settings->bools.video_vfilter,
MENU_ENUM_LABEL_VIDEO_VFILTER, MENU_ENUM_LABEL_VIDEO_VFILTER,
MENU_ENUM_LABEL_VALUE_VIDEO_VFILTER, MENU_ENUM_LABEL_VALUE_VIDEO_VFILTER,
video_vfilter, DEFAULT_VIDEO_VFILTER,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -8735,6 +8765,32 @@ static bool setting_append_list(
general_write_handler, general_write_handler,
general_read_handler, general_read_handler,
SD_FLAG_NONE); 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 #endif
CONFIG_BOOL( CONFIG_BOOL(
@ -8742,7 +8798,7 @@ static bool setting_append_list(
&settings->bools.video_smooth, &settings->bools.video_smooth,
MENU_ENUM_LABEL_VIDEO_SMOOTH, MENU_ENUM_LABEL_VIDEO_SMOOTH,
MENU_ENUM_LABEL_VALUE_VIDEO_SMOOTH, MENU_ENUM_LABEL_VALUE_VIDEO_SMOOTH,
video_smooth, DEFAULT_VIDEO_SMOOTH,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -8822,7 +8878,7 @@ static bool setting_append_list(
&settings->bools.video_vsync, &settings->bools.video_vsync,
MENU_ENUM_LABEL_VIDEO_VSYNC, MENU_ENUM_LABEL_VIDEO_VSYNC,
MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC, MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC,
vsync, DEFAULT_VSYNC,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -8838,7 +8894,7 @@ static bool setting_append_list(
&settings->uints.video_swap_interval, &settings->uints.video_swap_interval,
MENU_ENUM_LABEL_VIDEO_SWAP_INTERVAL, MENU_ENUM_LABEL_VIDEO_SWAP_INTERVAL,
MENU_ENUM_LABEL_VALUE_VIDEO_SWAP_INTERVAL, MENU_ENUM_LABEL_VALUE_VIDEO_SWAP_INTERVAL,
swap_interval, DEFAULT_SWAP_INTERVAL,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -8861,7 +8917,7 @@ static bool setting_append_list(
&settings->uints.video_max_swapchain_images, &settings->uints.video_max_swapchain_images,
MENU_ENUM_LABEL_VIDEO_MAX_SWAPCHAIN_IMAGES, MENU_ENUM_LABEL_VIDEO_MAX_SWAPCHAIN_IMAGES,
MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES,
max_swapchain_images, DEFAULT_MAX_SWAPCHAIN_IMAGES,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -8882,7 +8938,7 @@ static bool setting_append_list(
&settings->bools.video_hard_sync, &settings->bools.video_hard_sync,
MENU_ENUM_LABEL_VIDEO_HARD_SYNC, MENU_ENUM_LABEL_VIDEO_HARD_SYNC,
MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC, MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC,
hard_sync, DEFAULT_HARD_SYNC,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -8898,7 +8954,7 @@ static bool setting_append_list(
&settings->uints.video_hard_sync_frames, &settings->uints.video_hard_sync_frames,
MENU_ENUM_LABEL_VIDEO_HARD_SYNC_FRAMES, MENU_ENUM_LABEL_VIDEO_HARD_SYNC_FRAMES,
MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC_FRAMES, MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC_FRAMES,
hard_sync_frames, DEFAULT_HARD_SYNC_FRAMES,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -8919,7 +8975,7 @@ static bool setting_append_list(
&settings->bools.video_adaptive_vsync, &settings->bools.video_adaptive_vsync,
MENU_ENUM_LABEL_VIDEO_ADAPTIVE_VSYNC, MENU_ENUM_LABEL_VIDEO_ADAPTIVE_VSYNC,
MENU_ENUM_LABEL_VALUE_VIDEO_ADAPTIVE_VSYNC, MENU_ENUM_LABEL_VALUE_VIDEO_ADAPTIVE_VSYNC,
false, DEFAULT_ADAPTIVE_VSYNC,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -8937,7 +8993,7 @@ static bool setting_append_list(
&settings->uints.video_frame_delay, &settings->uints.video_frame_delay,
MENU_ENUM_LABEL_VIDEO_FRAME_DELAY, MENU_ENUM_LABEL_VIDEO_FRAME_DELAY,
MENU_ENUM_LABEL_VALUE_VIDEO_FRAME_DELAY, MENU_ENUM_LABEL_VALUE_VIDEO_FRAME_DELAY,
frame_delay, DEFAULT_FRAME_DELAY,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -8958,7 +9014,7 @@ static bool setting_append_list(
&settings->bools.video_black_frame_insertion, &settings->bools.video_black_frame_insertion,
MENU_ENUM_LABEL_VIDEO_BLACK_FRAME_INSERTION, MENU_ENUM_LABEL_VIDEO_BLACK_FRAME_INSERTION,
MENU_ENUM_LABEL_VALUE_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_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -9003,7 +9059,7 @@ static bool setting_append_list(
&settings->bools.video_crop_overscan, &settings->bools.video_crop_overscan,
MENU_ENUM_LABEL_VIDEO_CROP_OVERSCAN, MENU_ENUM_LABEL_VIDEO_CROP_OVERSCAN,
MENU_ENUM_LABEL_VALUE_VIDEO_CROP_OVERSCAN, MENU_ENUM_LABEL_VALUE_VIDEO_CROP_OVERSCAN,
crop_overscan, DEFAULT_CROP_OVERSCAN,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -9103,7 +9159,7 @@ static bool setting_append_list(
&settings->bools.crt_switch_custom_refresh_enable, &settings->bools.crt_switch_custom_refresh_enable,
MENU_ENUM_LABEL_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, MENU_ENUM_LABEL_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE,
MENU_ENUM_LABEL_VALUE_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_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -9222,7 +9278,7 @@ static bool setting_append_list(
&settings->bools.audio_enable, &settings->bools.audio_enable,
MENU_ENUM_LABEL_AUDIO_ENABLE, MENU_ENUM_LABEL_AUDIO_ENABLE,
MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE, MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE,
audio_enable, DEFAULT_AUDIO_ENABLE,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -9270,7 +9326,7 @@ static bool setting_append_list(
&settings->floats.audio_volume, &settings->floats.audio_volume,
MENU_ENUM_LABEL_AUDIO_VOLUME, MENU_ENUM_LABEL_AUDIO_VOLUME,
MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME,
audio_volume, DEFAULT_AUDIO_VOLUME,
"%.1f", "%.1f",
&group_info, &group_info,
&subgroup_info, &subgroup_info,
@ -9285,7 +9341,7 @@ static bool setting_append_list(
&settings->floats.audio_mixer_volume, &settings->floats.audio_mixer_volume,
MENU_ENUM_LABEL_AUDIO_MIXER_VOLUME, MENU_ENUM_LABEL_AUDIO_MIXER_VOLUME,
MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_VOLUME, MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_VOLUME,
audio_mixer_volume, DEFAULT_AUDIO_MIXER_VOLUME,
"%.1f", "%.1f",
&group_info, &group_info,
&subgroup_info, &subgroup_info,
@ -9313,7 +9369,7 @@ static bool setting_append_list(
&settings->bools.audio_sync, &settings->bools.audio_sync,
MENU_ENUM_LABEL_AUDIO_SYNC, MENU_ENUM_LABEL_AUDIO_SYNC,
MENU_ENUM_LABEL_VALUE_AUDIO_SYNC, MENU_ENUM_LABEL_VALUE_AUDIO_SYNC,
audio_sync, DEFAULT_AUDIO_SYNC,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -9331,7 +9387,7 @@ static bool setting_append_list(
MENU_ENUM_LABEL_AUDIO_LATENCY, MENU_ENUM_LABEL_AUDIO_LATENCY,
MENU_ENUM_LABEL_VALUE_AUDIO_LATENCY, MENU_ENUM_LABEL_VALUE_AUDIO_LATENCY,
g_defaults.settings.out_latency ? g_defaults.settings.out_latency ?
g_defaults.settings.out_latency : out_latency, g_defaults.settings.out_latency : DEFAULT_OUT_LATENCY,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -9363,7 +9419,7 @@ static bool setting_append_list(
audio_get_float_ptr(AUDIO_ACTION_RATE_CONTROL_DELTA), audio_get_float_ptr(AUDIO_ACTION_RATE_CONTROL_DELTA),
MENU_ENUM_LABEL_AUDIO_RATE_CONTROL_DELTA, MENU_ENUM_LABEL_AUDIO_RATE_CONTROL_DELTA,
MENU_ENUM_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA, MENU_ENUM_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA,
rate_control_delta, DEFAULT_RATE_CONTROL_DELTA,
"%.3f", "%.3f",
&group_info, &group_info,
&subgroup_info, &subgroup_info,
@ -9385,7 +9441,7 @@ static bool setting_append_list(
&settings->floats.audio_max_timing_skew, &settings->floats.audio_max_timing_skew,
MENU_ENUM_LABEL_AUDIO_MAX_TIMING_SKEW, MENU_ENUM_LABEL_AUDIO_MAX_TIMING_SKEW,
MENU_ENUM_LABEL_VALUE_AUDIO_MAX_TIMING_SKEW, MENU_ENUM_LABEL_VALUE_AUDIO_MAX_TIMING_SKEW,
max_timing_skew, DEFAULT_MAX_TIMING_SKEW,
"%.2f", "%.2f",
&group_info, &group_info,
&subgroup_info, &subgroup_info,
@ -9454,7 +9510,7 @@ static bool setting_append_list(
&settings->uints.audio_out_rate, &settings->uints.audio_out_rate,
MENU_ENUM_LABEL_AUDIO_OUTPUT_RATE, MENU_ENUM_LABEL_AUDIO_OUTPUT_RATE,
MENU_ENUM_LABEL_VALUE_AUDIO_OUTPUT_RATE, MENU_ENUM_LABEL_VALUE_AUDIO_OUTPUT_RATE,
out_rate, DEFAULT_OUTPUT_RATE,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -10138,7 +10194,7 @@ static bool setting_append_list(
&settings->uints.video_record_threads, &settings->uints.video_record_threads,
MENU_ENUM_LABEL_VIDEO_RECORD_THREADS, MENU_ENUM_LABEL_VIDEO_RECORD_THREADS,
MENU_ENUM_LABEL_VALUE_VIDEO_RECORD_THREADS, MENU_ENUM_LABEL_VALUE_VIDEO_RECORD_THREADS,
video_record_threads, DEFAULT_VIDEO_RECORD_THREADS,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
@ -10255,7 +10311,7 @@ static bool setting_append_list(
&settings->floats.fastforward_ratio, &settings->floats.fastforward_ratio,
MENU_ENUM_LABEL_FASTFORWARD_RATIO, MENU_ENUM_LABEL_FASTFORWARD_RATIO,
MENU_ENUM_LABEL_VALUE_FASTFORWARD_RATIO, MENU_ENUM_LABEL_VALUE_FASTFORWARD_RATIO,
fastforward_ratio, DEFAULT_FASTFORWARD_RATIO,
"%.1fx", "%.1fx",
&group_info, &group_info,
&subgroup_info, &subgroup_info,
@ -10287,7 +10343,7 @@ static bool setting_append_list(
&settings->floats.slowmotion_ratio, &settings->floats.slowmotion_ratio,
MENU_ENUM_LABEL_SLOWMOTION_RATIO, MENU_ENUM_LABEL_SLOWMOTION_RATIO,
MENU_ENUM_LABEL_VALUE_SLOWMOTION_RATIO, MENU_ENUM_LABEL_VALUE_SLOWMOTION_RATIO,
slowmotion_ratio, DEFAULT_SLOWMOTION_RATIO,
"%.1fx", "%.1fx",
&group_info, &group_info,
&subgroup_info, &subgroup_info,
@ -10446,7 +10502,7 @@ static bool setting_append_list(
&settings->floats.video_font_size, &settings->floats.video_font_size,
MENU_ENUM_LABEL_VIDEO_FONT_SIZE, MENU_ENUM_LABEL_VIDEO_FONT_SIZE,
MENU_ENUM_LABEL_VALUE_VIDEO_FONT_SIZE, MENU_ENUM_LABEL_VALUE_VIDEO_FONT_SIZE,
font_size, DEFAULT_FONT_SIZE,
"%.1f", "%.1f",
&group_info, &group_info,
&subgroup_info, &subgroup_info,
@ -10660,7 +10716,7 @@ static bool setting_append_list(
&settings->bools.input_overlay_hide_in_menu, &settings->bools.input_overlay_hide_in_menu,
MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU, MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU,
MENU_ENUM_LABEL_VALUE_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_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -10703,6 +10759,22 @@ static bool setting_append_list(
(*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; (*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); 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( CONFIG_PATH(
list, list_info, list, list_info,
settings->paths.path_overlay, settings->paths.path_overlay,
@ -10917,7 +10989,7 @@ static bool setting_append_list(
&settings->bools.menu_mouse_enable, &settings->bools.menu_mouse_enable,
MENU_ENUM_LABEL_MOUSE_ENABLE, MENU_ENUM_LABEL_MOUSE_ENABLE,
MENU_ENUM_LABEL_VALUE_MOUSE_ENABLE, MENU_ENUM_LABEL_VALUE_MOUSE_ENABLE,
def_mouse_enable, DEFAULT_MOUSE_ENABLE,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -11364,7 +11436,7 @@ static bool setting_append_list(
&settings->bools.threaded_data_runloop_enable, &settings->bools.threaded_data_runloop_enable,
MENU_ENUM_LABEL_THREADED_DATA_RUNLOOP_ENABLE, MENU_ENUM_LABEL_THREADED_DATA_RUNLOOP_ENABLE,
MENU_ENUM_LABEL_VALUE_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_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -11997,7 +12069,7 @@ static bool setting_append_list(
&settings->bools.menu_materialui_icons_enable, &settings->bools.menu_materialui_icons_enable,
MENU_ENUM_LABEL_MATERIALUI_ICONS_ENABLE, MENU_ENUM_LABEL_MATERIALUI_ICONS_ENABLE,
MENU_ENUM_LABEL_VALUE_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_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -12474,7 +12546,7 @@ static bool setting_append_list(
&settings->bools.pause_nonactive, &settings->bools.pause_nonactive,
MENU_ENUM_LABEL_PAUSE_NONACTIVE, MENU_ENUM_LABEL_PAUSE_NONACTIVE,
MENU_ENUM_LABEL_VALUE_PAUSE_NONACTIVE, MENU_ENUM_LABEL_VALUE_PAUSE_NONACTIVE,
pause_nonactive, DEFAULT_PAUSE_NONACTIVE,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -12491,7 +12563,7 @@ static bool setting_append_list(
&settings->bools.video_disable_composition, &settings->bools.video_disable_composition,
MENU_ENUM_LABEL_VIDEO_DISABLE_COMPOSITION, MENU_ENUM_LABEL_VIDEO_DISABLE_COMPOSITION,
MENU_ENUM_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION, MENU_ENUM_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION,
disable_composition, DEFAULT_DISABLE_COMPOSITION,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
@ -13000,20 +13072,21 @@ static bool setting_append_list(
general_read_handler, general_read_handler,
SD_FLAG_NONE); SD_FLAG_NONE);
CONFIG_BOOL( CONFIG_UINT(
list, list_info, list, list_info,
&settings->bools.playlist_entry_remove, &settings->uints.playlist_entry_remove_enable,
MENU_ENUM_LABEL_PLAYLIST_ENTRY_REMOVE, MENU_ENUM_LABEL_PLAYLIST_ENTRY_REMOVE,
MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE, MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE,
def_playlist_entry_remove, playlist_entry_remove_enable,
MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group, parent_group,
general_write_handler, general_write_handler,
general_read_handler, general_read_handler);
SD_FLAG_NONE); (*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( CONFIG_BOOL(
list, list_info, list, list_info,
@ -13128,7 +13201,7 @@ static bool setting_append_list(
&settings->bools.cheevos_enable, &settings->bools.cheevos_enable,
MENU_ENUM_LABEL_CHEEVOS_ENABLE, MENU_ENUM_LABEL_CHEEVOS_ENABLE,
MENU_ENUM_LABEL_VALUE_CHEEVOS_ENABLE, MENU_ENUM_LABEL_VALUE_CHEEVOS_ENABLE,
cheevos_enable, DEFAULT_CHEEVOS_ENABLE,
MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON, MENU_ENUM_LABEL_VALUE_ON,
&group_info, &group_info,

View File

@ -777,6 +777,7 @@ enum msg_hash_enums
MENU_LABEL(INPUT_OVERLAY_HIDE_IN_MENU), MENU_LABEL(INPUT_OVERLAY_HIDE_IN_MENU),
MENU_LABEL(INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS), MENU_LABEL(INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS),
MENU_LABEL(INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT), 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_KEYBOARD_GAMEPAD_MAPPING_TYPE),
MENU_LABEL(INPUT_SMALL_KEYBOARD_ENABLE), MENU_LABEL(INPUT_SMALL_KEYBOARD_ENABLE),
MENU_LABEL(INPUT_TOUCH_ENABLE), MENU_LABEL(INPUT_TOUCH_ENABLE),
@ -1848,6 +1849,8 @@ enum msg_hash_enums
MENU_LABEL(USER_LANGUAGE), MENU_LABEL(USER_LANGUAGE),
MENU_LABEL(NETPLAY_NICKNAME), MENU_LABEL(NETPLAY_NICKNAME),
MENU_LABEL(VIDEO_VI_WIDTH), 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_ASPECT_RATIO),
MENU_LABEL(VIDEO_FORCE_ASPECT), MENU_LABEL(VIDEO_FORCE_ASPECT),
MENU_LABEL(VIDEO_ASPECT_RATIO_AUTO), 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_ALWAYS,
MENU_ENUM_LABEL_VALUE_PLAYLIST_INLINE_CORE_DISPLAY_NEVER, 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_CORE,
MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_RUNTIME, MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_RUNTIME,
MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_LAST_PLAYED, MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_LAST_PLAYED,

View File

@ -894,6 +894,7 @@
../../, ../../,
"../../libretro-common/include", "../../libretro-common/include",
../../deps/stb, ../../deps/stb,
../../deps/rcheevos/include,
../../deps/libz, ../../deps/libz,
../../deps, ../../deps,
); );

View File

@ -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 DOC_DIR "${DOC_DIR:-${SHARE_DIR}/doc/retroarch}"
add_define MAKEFILE MAN_DIR "${MAN_DIR:-${SHARE_DIR}/man}" add_define MAKEFILE MAN_DIR "${MAN_DIR:-${SHARE_DIR}/man}"
if [ "$OS" = 'DOS' ]; then check_platform DOS SHADERPIPELINE 'Shader-based pipelines are' false
HAVE_SHADERPIPELINE=no check_platform DOS LANGEXTRA 'Extra languages are' false
HAVE_LANGEXTRA=no
fi
check_lib '' THREADS "$PTHREADLIB" pthread_create check_lib '' THREADS "$PTHREADLIB" pthread_create
check_enabled THREADS THREAD_STORAGE 'Thread Local Storage' 'Threads are' false 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 check_lib '' OSS_LIB -lossaudio
fi fi
if [ "$OS" = 'Linux' ]; then check_platform Linux TINYALSA 'Tinyalsa is' true
HAVE_TINYALSA=yes check_platform Linux RPILED 'The RPI led driver is' true
HAVE_RPILED=yes
fi
if [ "$OS" = 'Darwin' ]; then if [ "$OS" = 'Darwin' ]; then
check_lib '' COREAUDIO "-framework AudioUnit" AudioUnitInitialize check_lib '' COREAUDIO "-framework AudioUnit" AudioUnitInitialize
@ -234,6 +230,7 @@ if [ "$HAVE_SDL2" = 'yes' ] && [ "$HAVE_SDL" = 'yes' ]; then
HAVE_SDL=no HAVE_SDL=no
fi fi
check_platform Haiku DISCORD 'Discord is' false
check_enabled CXX DISCORD discord 'The C++ compiler is' false check_enabled CXX DISCORD discord 'The C++ compiler is' false
check_enabled CXX QT 'Qt companion' '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. # 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 check_enabled QT5CORE QT Qt 'Qt5Core is' true
die : 'Notice: Not building Qt support, required libraries were not found.' check_enabled QT5GUI QT Qt 'Qt5GUI is' true
HAVE_QT=no check_enabled QT5WIDGETS QT Qt 'Qt5Widgets is' true
else check_enabled QT5CONCURRENT QT Qt 'Qt5Concurrent is' true
HAVE_QT=yes 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 fi
check_pkgconf OPENSSL openssl 1.0.0 check_pkgconf OPENSSL openssl 1.0.0
#if [ "$HAVE_QT5WEBENGINE" = "no" ]; then
# die : 'Notice: Qt5WebEngine not found, disabling web browser support.'
#fi
fi fi
if [ "$HAVE_FLAC" = 'no' ]; then 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 if [ "$OS" = 'Win32' ]; then
check_lib '' DINPUT -ldinput8 check_lib '' DINPUT -ldinput8
check_lib '' D3D8 -ld3d8
check_lib '' D3D9 -ld3d9 check_lib '' D3D9 -ld3d9
check_lib '' DSOUND -ldsound check_lib '' DSOUND -ldsound
if [ "$HAVE_D3DX" != 'no' ]; then
check_lib '' D3DX8 -ld3dx8
check_lib '' D3DX9 -ld3dx9
fi
if [ "$HAVE_DINPUT" != 'no' ]; then if [ "$HAVE_DINPUT" != 'no' ]; then
HAVE_XINPUT=yes HAVE_XINPUT=yes
fi fi
@ -313,13 +316,15 @@ if [ "$OS" = 'Win32' ]; then
HAVE_WASAPI=yes HAVE_WASAPI=yes
HAVE_XAUDIO=yes HAVE_XAUDIO=yes
HAVE_WINMM=yes HAVE_WINMM=yes
else
HAVE_D3D9=no
HAVE_D3D10=no
HAVE_D3D11=no
HAVE_D3D12=no
fi 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 [ "$HAVE_OPENGL" != 'no' ] && [ "$HAVE_OPENGLES" != 'yes' ]; then
if [ "$OS" = 'Darwin' ]; then if [ "$OS" = 'Darwin' ]; then
check_header OPENGL "OpenGL/gl.h" check_header OPENGL "OpenGL/gl.h"
@ -348,6 +353,7 @@ else
HAVE_OPENGL='no' HAVE_OPENGL='no'
fi fi
check_enabled EGL OPENGLES3 OpenGLES3 'EGL is' false
check_enabled OPENGL CG Cg 'OpenGL is' false check_enabled OPENGL CG Cg 'OpenGL is' false
check_enabled OPENGL OSMESA osmesa 'OpenGL is' false check_enabled OPENGL OSMESA osmesa 'OpenGL is' false
check_enabled OPENGL OPENGL1 OpenGL1 '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' HAVE_OPENGL_CORE='no'
fi fi
if [ "$HAVE_BUILTINZLIB" = 'yes' ]; then if [ "$HAVE_ZLIB" = 'no' ]; then
HAVE_BUILTINZLIB=no
elif [ "$HAVE_BUILTINZLIB" = 'yes' ]; then
HAVE_ZLIB=yes HAVE_ZLIB=yes
else else
check_val '' ZLIB '-lz' '' zlib '' '' false check_val '' ZLIB '-lz' '' zlib '' '' false
@ -422,18 +430,36 @@ else
HAVE_OPENGLES=no HAVE_OPENGLES=no
fi fi
check_pkgconf DBUS dbus-1
check_val '' UDEV "-ludev" '' libudev '' '' false
check_val '' V4L2 -lv4l2 '' libv4l2 '' '' false check_val '' V4L2 -lv4l2 '' libv4l2 '' '' false
check_val '' FREETYPE -lfreetype freetype2 freetype2 '' '' false check_val '' FREETYPE -lfreetype freetype2 freetype2 '' '' false
check_val '' X11 -lX11 '' x11 '' '' false check_val '' X11 -lX11 '' x11 '' '' false
check_val '' XCB -lxcb '' xcb '' '' 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 '-lwayland-egl -lwayland-client' '' wayland-egl 10.1.0 '' false
check_val '' WAYLAND_CURSOR -lwayland-cursor '' wayland-cursor 1.12 '' false check_val '' WAYLAND_CURSOR -lwayland-cursor '' wayland-cursor 1.12 '' false
check_pkgconf WAYLAND_PROTOS wayland-protocols 1.15 check_pkgconf WAYLAND_PROTOS wayland-protocols 1.15
check_pkgconf WAYLAND_SCANNER wayland-scanner '1.15 1.12' 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 ] && if [ "$HAVE_WAYLAND_SCANNER" = yes ] &&
[ "$HAVE_WAYLAND_CURSOR" = yes ] && [ "$HAVE_WAYLAND_CURSOR" = yes ] &&
@ -448,24 +474,6 @@ else
HAVE_WAYLAND='no' HAVE_WAYLAND='no'
fi 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/parport.h
check_header PARPORT linux/ppdev.h check_header PARPORT linux/ppdev.h
@ -526,10 +534,5 @@ if [ "$HAVE_DEBUG" = 'yes' ]; then
fi fi
check_enabled MENU MENU_WIDGETS 'menu widgets' 'The menu is' false check_enabled MENU MENU_WIDGETS 'menu widgets' 'The menu is' false
check_enabled ZLIB RPNG RPNG 'zlib 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 V4L2 VIDEOPROCESSOR 'video processor' 'Video4linux2 is' true check_enabled V4L2 VIDEOPROCESSOR 'video processor' 'Video4linux2 is' true

View File

@ -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) HAVE_BUILTINMINIUPNPC=yes # Bake in Mini UPnP client library (for NAT traversal)
C89_BUILTINMINIUPNPC=no C89_BUILTINMINIUPNPC=no
HAVE_D3D8=no # Direct3D 8 support HAVE_D3D8=no # Direct3D 8 support
HAVE_D3D9=yes # Direct3D 9 support HAVE_D3D9=auto # Direct3D 9 support
C89_D3D9=no C89_D3D9=no
HAVE_D3D10=yes # Direct3D 10 support HAVE_D3D10=yes # Direct3D 10 support
C89_D3D10=no C89_D3D10=no
@ -56,7 +56,7 @@ HAVE_D3D11=yes # Direct3D 11 support
C89_D3D11=no C89_D3D11=no
HAVE_D3D12=yes # Direct3D 12 support HAVE_D3D12=yes # Direct3D 12 support
C89_D3D12=no C89_D3D12=no
HAVE_D3DX=yes # Direct3DX support HAVE_D3DX=auto # Direct3DX support
HAVE_OPENGL=auto # OpenGL 2.0 support HAVE_OPENGL=auto # OpenGL 2.0 support
HAVE_OPENGL_CORE=yes # Modern OpenGL driver support (GLES3+/GL3.2 core+), requires OpenGL. HAVE_OPENGL_CORE=yes # Modern OpenGL driver support (GLES3+/GL3.2 core+), requires OpenGL.
C89_OPENGL_CORE=no C89_OPENGL_CORE=no
@ -78,14 +78,15 @@ HAVE_SUNXI=no # Sunxi video support
HAVE_WAYLAND=auto # Wayland support HAVE_WAYLAND=auto # Wayland support
C89_WAYLAND=no C89_WAYLAND=no
CXX_WAYLAND=no CXX_WAYLAND=no
HAVE_EGL=no # EGL context support HAVE_EGL=auto # EGL context support
HAVE_VG=auto # OpenVG support HAVE_VG=auto # OpenVG support
HAVE_CG=auto # Cg shader support HAVE_CG=auto # Cg shader support
HAVE_HLSL=no # HLSL9 shader support (for Direct3D9) HAVE_HLSL=no # HLSL9 shader support (for Direct3D9)
HAVE_BUILTINZLIB=yes # Bake in zlib 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 HAVE_ALSA=auto # ALSA support
C89_ALSA=no C89_ALSA=no
HAVE_RPILED=auto # RPI led support
HAVE_TINYALSA=auto # TinyALSA support HAVE_TINYALSA=auto # TinyALSA support
HAVE_AUDIOIO=auto # AudioIO support HAVE_AUDIOIO=auto # AudioIO support
HAVE_OSS=auto # OSS support HAVE_OSS=auto # OSS support

View File

@ -79,6 +79,34 @@ check_enabled()
die 1 "Error: $4 disabled and forced to build with $3 support." 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: # check_lib:
# Compiles a simple test program to check if a library is available. # Compiles a simple test program to check if a library is available.
# $1 = language # $1 = language

View File

@ -68,16 +68,19 @@ opt_exists() # $opt is returned if exists in OPTS
parse_input() # Parse stuff :V parse_input() # Parse stuff :V
{ BUILD='' { BUILD=''
OPTS='' OPTS=''
config_opts='./configure'
while read -r VAR _; do while read -r VAR _; do
TMPVAR="${VAR%=*}" TMPVAR="${VAR%=*}"
NEWVAR="${TMPVAR##HAVE_}" NEWVAR="${TMPVAR##HAVE_}"
OPTS="$OPTS $NEWVAR" OPTS="$OPTS $NEWVAR"
eval "USER_$NEWVAR=no" eval "USER_$NEWVAR=auto"
done < 'qb/config.params.sh' done < 'qb/config.params.sh'
#OPTS contains all available options in config.params.sh - used to speedup #OPTS contains all available options in config.params.sh - used to speedup
#things in opt_exists() #things in opt_exists()
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
config_opts="${config_opts} $1"
case "$1" in case "$1" in
--prefix=*) PREFIX=${1##--prefix=};; --prefix=*) PREFIX=${1##--prefix=};;
--global-config-dir=*|--sysconfdir=*) GLOBAL_CONFIG_DIR="${1#*=}";; --global-config-dir=*|--sysconfdir=*) GLOBAL_CONFIG_DIR="${1#*=}";;
@ -95,6 +98,7 @@ parse_input() # Parse stuff :V
--disable-*) --disable-*)
opt_exists "${1##--disable-}" "$1" opt_exists "${1##--disable-}" "$1"
eval "HAVE_$opt=no" eval "HAVE_$opt=no"
eval "USER_$opt=no"
eval "HAVE_NO_$opt=yes" eval "HAVE_NO_$opt=yes"
;; ;;
--with-*) --with-*)
@ -110,6 +114,17 @@ parse_input() # Parse stuff :V
esac esac
shift shift
done done
cat > config.log << EOF
Command line invocation:
\$ ${config_opts}
## ----------- ##
## Core Tests. ##
## ----------- ##
EOF
} }
. qb/config.params.sh . qb/config.params.sh

View File

@ -4606,11 +4606,10 @@ int runloop_iterate(unsigned *sleep_ms)
autosave_unlock(); autosave_unlock();
/* Condition for max speed x0.0 when vrr_runloop is off to skip that part */ /* Condition for max speed x0.0 when vrr_runloop is off to skip that part */
if (fastforward_ratio || vrr_runloop_enable) if (!(fastforward_ratio || vrr_runloop_enable))
end: return 0;
{
retro_time_t to_sleep_ms;
end:
if (vrr_runloop_enable) if (vrr_runloop_enable)
{ {
struct retro_system_av_info *av_info = struct retro_system_av_info *av_info =
@ -4640,7 +4639,8 @@ int runloop_iterate(unsigned *sleep_ms)
(runloop_fastmotion ? fastforward_ratio : 1.0f))); (runloop_fastmotion ? fastforward_ratio : 1.0f)));
} }
to_sleep_ms = ( {
retro_time_t to_sleep_ms = (
(frame_limit_last_time + frame_limit_minimum_time) (frame_limit_last_time + frame_limit_minimum_time)
- cpu_features_get_time_usec()) / 1000; - cpu_features_get_time_usec()) / 1000;
@ -4651,9 +4651,9 @@ int runloop_iterate(unsigned *sleep_ms)
frame_limit_last_time += frame_limit_minimum_time; frame_limit_last_time += frame_limit_minimum_time;
return 1; return 1;
} }
}
frame_limit_last_time = cpu_features_get_time_usec(); frame_limit_last_time = cpu_features_get_time_usec();
}
return 0; 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)) 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"); filestream_printf(file, " - Joypad: %s\n", !string_is_empty(joypad_driver->ident) ? joypad_driver->ident : "n/a");
else 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"); filestream_printf(file, "\n");

View File

@ -157,6 +157,9 @@ static int pending_subsystem_rom_num = 0;
static int pending_subsystem_id = 0; static int pending_subsystem_id = 0;
static unsigned pending_subsystem_rom_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]; static char pending_subsystem_ident[255];
#if 0 #if 0
static char pending_subsystem_extensions[PATH_MAX_LENGTH]; 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 we have a media type, ignore CRC32 calculation. */
if (type == RARCH_CONTENT_NONE) if (type == RARCH_CONTENT_NONE)
{ {
bool has_patch = false;
/* First content file is significant, attempt to do patching, /* First content file is significant, attempt to do patching,
* CRC checking, etc. */ * CRC checking, etc. */
/* Attempt to apply a patch. */ /* Attempt to apply a patch. */
if (!content_ctx->patch_is_blocked) if (!content_ctx->patch_is_blocked)
patch_content( has_patch = patch_content(
content_ctx->is_ips_pref, content_ctx->is_ips_pref,
content_ctx->is_bps_pref, content_ctx->is_bps_pref,
content_ctx->is_ups_pref, content_ctx->is_ups_pref,
@ -364,10 +369,18 @@ static bool load_content_into_memory(
(uint8_t**)&ret_buf, (uint8_t**)&ret_buf,
(void*)length); (void*)length);
if (has_patch)
{
content_rom_crc = encoding_crc32(0, ret_buf, (size_t)*length); content_rom_crc = encoding_crc32(0, ret_buf, (size_t)*length);
RARCH_LOG("CRC32: 0x%x .\n", (unsigned)content_rom_crc); 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 else
content_rom_crc = 0; content_rom_crc = 0;
} }
@ -702,14 +715,11 @@ static bool content_file_load(
} }
#endif #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( RARCH_LOG("%s\n", msg_hash_to_str(
MSG_CONTENT_LOADING_SKIPPED_IMPLEMENTATION_WILL_DO_IT)); MSG_CONTENT_LOADING_SKIPPED_IMPLEMENTATION_WILL_DO_IT));
content_rom_crc = file_crc32(0, path); pending_content_rom_crc = true;
RARCH_LOG("CRC32: 0x%x .\n", (unsigned)content_rom_crc); strlcpy(pending_content_rom_crc_path,
#endif 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) 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; return content_rom_crc;
} }
@ -2069,6 +2086,7 @@ void content_deinit(void)
content_rom_crc = 0; content_rom_crc = 0;
_content_is_inited = false; _content_is_inited = false;
core_does_not_need_content = false; core_does_not_need_content = false;
pending_content_rom_crc = false;
} }
/* Set environment variables before a subsystem load */ /* Set environment variables before a subsystem load */

View File

@ -630,7 +630,7 @@ static bool try_ips_patch(bool allow_ips,
* Apply patch to the content file in-memory. * Apply patch to the content file in-memory.
* *
**/ **/
static void patch_content( static bool patch_content(
bool is_ips_pref, bool is_ips_pref,
bool is_bps_pref, bool is_bps_pref,
bool is_ups_pref, bool is_ups_pref,
@ -651,7 +651,7 @@ static void patch_content(
{ {
RARCH_WARN("%s\n", RARCH_WARN("%s\n",
msg_hash_to_str(MSG_SEVERAL_PATCHES_ARE_EXPLICITLY_DEFINED)); msg_hash_to_str(MSG_SEVERAL_PATCHES_ARE_EXPLICITLY_DEFINED));
return; return false;
} }
if ( !try_ips_patch(allow_ips, name_ips, buf, size) if ( !try_ips_patch(allow_ips, name_ips, buf, size)
@ -660,5 +660,8 @@ static void patch_content(
{ {
RARCH_LOG("%s\n", RARCH_LOG("%s\n",
msg_hash_to_str(MSG_DID_NOT_FIND_A_VALID_CONTENT_PATCH)); msg_hash_to_str(MSG_DID_NOT_FIND_A_VALID_CONTENT_PATCH));
return false;
} }
return true;
} }