mirror of
https://github.com/libretro/RetroArch
synced 2025-02-07 12:39:54 +00:00
commit
ff9ebb3998
6
.gitignore
vendored
6
.gitignore
vendored
@ -163,3 +163,9 @@ retroarch_switch.lst
|
||||
retroarch_switch.nacp
|
||||
retroarch_switch.nro
|
||||
retroarch_switch.nso
|
||||
|
||||
# Wayland
|
||||
gfx/common/wayland/idle-inhibit-unstable-v1.c
|
||||
gfx/common/wayland/idle-inhibit-unstable-v1.h
|
||||
gfx/common/wayland/xdg-shell.c
|
||||
gfx/common/wayland/xdg-shell.h
|
||||
|
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@ -41,6 +41,8 @@
|
||||
"ozone_texture.h": "c",
|
||||
"string_list.h": "c",
|
||||
"core_info.h": "c"
|
||||
"thread": "c",
|
||||
"xlocale": "c"
|
||||
},
|
||||
"C_Cpp.dimInactiveRegions": false,
|
||||
}
|
@ -903,7 +903,7 @@ ifeq ($(HAVE_X11), 1)
|
||||
gfx/common/xinerama_common.o \
|
||||
gfx/display_servers/dispserv_x11.o
|
||||
|
||||
LIBS += $(X11_LIBS) $(XEXT_LIBS) $(XF86VM_LIBS) $(XINERAMA_LIBS)
|
||||
LIBS += $(X11_LIBS) $(XEXT_LIBS) $(XF86VM_LIBS) $(XINERAMA_LIBS) $(XRANDR_LIBS)
|
||||
DEFINES += -DHAVE_X11 $(X11_CFLAGS) $(XEXT_CFLAGS) $(XF86VM_CFLAGS) $(XINERAMA_CFLAGS)
|
||||
ifeq ($(HAVE_XCB),1)
|
||||
LIBS += -lX11-xcb
|
||||
|
@ -39,7 +39,6 @@ typedef struct
|
||||
volatile unsigned dma_write;
|
||||
size_t write_ptr;
|
||||
|
||||
OSCond cond;
|
||||
bool nonblock;
|
||||
bool is_paused;
|
||||
} gx_audio_t;
|
||||
@ -63,8 +62,6 @@ static void dma_callback(void)
|
||||
DCFlushRange(wa->data[wa->dma_next], CHUNK_SIZE);
|
||||
|
||||
AIInitDMA((uint32_t)wa->data[wa->dma_next], CHUNK_SIZE);
|
||||
|
||||
OSSignalCond(wa->cond);
|
||||
}
|
||||
|
||||
static void *gx_audio_init(const char *device,
|
||||
@ -95,8 +92,6 @@ static void *gx_audio_init(const char *device,
|
||||
*new_rate = 48000;
|
||||
}
|
||||
|
||||
OSInitThreadQueue(&wa->cond);
|
||||
|
||||
wa->dma_write = BLOCKS - 1;
|
||||
DCFlushRange(wa->data, sizeof(wa->data));
|
||||
stop_audio = false;
|
||||
@ -133,8 +128,7 @@ static ssize_t gx_audio_write(void *data, const void *buf_, size_t size)
|
||||
/* FIXME: Nonblocking audio should break out of loop
|
||||
* when it has nothing to write. */
|
||||
while ((wa->dma_write == wa->dma_next ||
|
||||
wa->dma_write == wa->dma_busy) && !wa->nonblock)
|
||||
OSSleepThread(wa->cond);
|
||||
wa->dma_write == wa->dma_busy) && !wa->nonblock);
|
||||
|
||||
copy_swapped(wa->data[wa->dma_write] + wa->write_ptr, buf, to_write);
|
||||
|
||||
@ -205,10 +199,6 @@ static void gx_audio_free(void *data)
|
||||
AIStopDMA();
|
||||
AIRegisterDMACallback(NULL);
|
||||
|
||||
if (wa->cond)
|
||||
OSCloseThreadQueue(wa->cond);
|
||||
wa->cond = 0;
|
||||
|
||||
free(data);
|
||||
}
|
||||
|
||||
|
19
command.c
19
command.c
@ -220,6 +220,7 @@ static const struct cmd_map map[] = {
|
||||
{ "SCREENSHOT", RARCH_SCREENSHOT },
|
||||
{ "MUTE", RARCH_MUTE },
|
||||
{ "OSK", RARCH_OSK },
|
||||
{ "FPS_TOGGLE", RARCH_FPS_TOGGLE },
|
||||
{ "NETPLAY_GAME_WATCH", RARCH_NETPLAY_GAME_WATCH },
|
||||
{ "VOLUME_UP", RARCH_VOLUME_UP },
|
||||
{ "VOLUME_DOWN", RARCH_VOLUME_DOWN },
|
||||
@ -1899,7 +1900,10 @@ bool command_event(enum event_command cmd, void *data)
|
||||
break;
|
||||
case CMD_EVENT_LOAD_CORE:
|
||||
{
|
||||
bool success = command_event(CMD_EVENT_LOAD_CORE_PERSIST, NULL);
|
||||
bool success = false;
|
||||
subsystem_size = 0;
|
||||
content_clear_subsystem();
|
||||
success = command_event(CMD_EVENT_LOAD_CORE_PERSIST, NULL);
|
||||
(void)success;
|
||||
|
||||
#ifndef HAVE_DYNAMIC
|
||||
@ -2019,8 +2023,10 @@ bool command_event(enum event_command cmd, void *data)
|
||||
command_event(CMD_EVENT_RESTORE_REMAPS, NULL);
|
||||
|
||||
if (is_inited)
|
||||
{
|
||||
if (!task_push_start_dummy_core(&content_info))
|
||||
return false;
|
||||
}
|
||||
#ifdef HAVE_DYNAMIC
|
||||
path_clear(RARCH_PATH_CORE);
|
||||
rarch_ctl(RARCH_CTL_SYSTEM_INFO_FREE, NULL);
|
||||
@ -2037,6 +2043,11 @@ bool command_event(enum event_command cmd, void *data)
|
||||
command_event(CMD_EVENT_DISCORD_UPDATE, &userdata);
|
||||
}
|
||||
#endif
|
||||
if (is_inited)
|
||||
{
|
||||
subsystem_size = 0;
|
||||
content_clear_subsystem();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case CMD_EVENT_QUIT:
|
||||
@ -2177,6 +2188,12 @@ TODO: Add a setting for these tweaks */
|
||||
RARCH_LOG("%s\n", msg);
|
||||
}
|
||||
break;
|
||||
case CMD_EVENT_FPS_TOGGLE:
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
settings->bools.video_fps_show = !(settings->bools.video_fps_show);
|
||||
}
|
||||
break;
|
||||
case CMD_EVENT_OVERLAY_DEINIT:
|
||||
#ifdef HAVE_OVERLAY
|
||||
input_overlay_free(overlay_ptr);
|
||||
|
@ -85,6 +85,8 @@ enum event_command
|
||||
CMD_EVENT_AUDIO_START,
|
||||
/* Mutes audio. */
|
||||
CMD_EVENT_AUDIO_MUTE_TOGGLE,
|
||||
/* Toggles FPS counter. */
|
||||
CMD_EVENT_FPS_TOGGLE,
|
||||
/* Initializes overlay. */
|
||||
CMD_EVENT_OVERLAY_INIT,
|
||||
/* Deinitializes overlay. */
|
||||
|
15
config.def.h
15
config.def.h
@ -240,7 +240,7 @@ static const float aspect_ratio = DEFAULT_ASPECT_RATIO;
|
||||
/* 1:1 PAR */
|
||||
static const bool aspect_ratio_auto = false;
|
||||
|
||||
#if defined(__CELLOS_LV2) || defined(_XBOX360) || defined(ANDROID_AARCH64)
|
||||
#if defined(__CELLOS_LV2) || defined(_XBOX360)
|
||||
static unsigned aspect_ratio_idx = ASPECT_RATIO_16_9;
|
||||
#elif defined(PSP)
|
||||
static unsigned aspect_ratio_idx = ASPECT_RATIO_CORE;
|
||||
@ -549,8 +549,11 @@ static const int wasapi_sh_buffer_length = -16; /* auto */
|
||||
/* Enables displaying the current frames per second. */
|
||||
static const bool fps_show = false;
|
||||
|
||||
/* Show frame count on FPS display */
|
||||
static const bool framecount_show = true;
|
||||
/* Enables displaying the current frame count. */
|
||||
static const bool framecount_show = false;
|
||||
|
||||
/* Includes displaying the current memory usage/total with FPS/Frames. */
|
||||
static const bool memory_show = false;
|
||||
|
||||
/* Enables use of rewind. This will incur some memory footprint
|
||||
* depending on the save state buffer. */
|
||||
@ -581,7 +584,13 @@ static const bool pause_nonactive = true;
|
||||
|
||||
/* Saves non-volatile SRAM at a regular interval.
|
||||
* It is measured in seconds. A value of 0 disables autosave. */
|
||||
#if defined(__i386__) || defined(__i486__) || defined(__i686__) || defined(__x86_64__) || defined(_M_X64) || defined(_WIN32) || defined(OSX) || defined(ANDROID) || defined(IOS)
|
||||
/* Flush to file every 10 seconds on modern platforms by default */
|
||||
static const unsigned autosave_interval = 10;
|
||||
#else
|
||||
/* Default to disabled on I/O-constrained platforms */
|
||||
static const unsigned autosave_interval = 0;
|
||||
#endif
|
||||
|
||||
/* Publicly announce netplay */
|
||||
static const bool netplay_public_announce = true;
|
||||
|
@ -87,6 +87,7 @@ static const struct retro_keybind retro_keybinds_1[] = {
|
||||
{ true, RARCH_SCREENSHOT, MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_FPS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_VOLUME_UP, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
|
||||
@ -165,6 +166,7 @@ static const struct retro_keybind retro_keybinds_1[] = {
|
||||
{ true, RARCH_SCREENSHOT, MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT, RETROK_F8, NO_BTN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_F9, NO_BTN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_F12, NO_BTN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_FPS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE, RETROK_F3, NO_BTN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_i, NO_BTN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_VOLUME_UP, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, RETROK_KP_PLUS, NO_BTN, NO_BTN, 0, AXIS_NONE },
|
||||
|
@ -1317,7 +1317,8 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
|
||||
SETTING_BOOL("builtin_imageviewer_enable", &settings->bools.multimedia_builtin_imageviewer_enable, true, true, false);
|
||||
SETTING_BOOL("fps_show", &settings->bools.video_fps_show, true, false, false);
|
||||
SETTING_BOOL("statistics_show", &settings->bools.video_statistics_show, true, false, false);
|
||||
SETTING_BOOL("framecount_show", &settings->bools.video_framecount_show, true, true, false);
|
||||
SETTING_BOOL("framecount_show", &settings->bools.video_framecount_show, true, false, false);
|
||||
SETTING_BOOL("memory_show", &settings->bools.video_memory_show, true, false, false);
|
||||
SETTING_BOOL("ui_menubar_enable", &settings->bools.ui_menubar_enable, true, true, false);
|
||||
SETTING_BOOL("suspend_screensaver_enable", &settings->bools.ui_suspend_screensaver_enable, true, true, false);
|
||||
SETTING_BOOL("rewind_enable", &settings->bools.rewind_enable, true, rewind_enable, false);
|
||||
@ -1678,6 +1679,10 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
|
||||
|
||||
SETTING_UINT("video_record_threads", &settings->uints.video_record_threads, true, video_record_threads, false);
|
||||
|
||||
#ifdef HAVE_LIBNX
|
||||
SETTING_UINT("libnx_overclock", &settings->uints.libnx_overclock, true, SWITCH_DEFAULT_CPU_PROFILE, false);
|
||||
#endif
|
||||
|
||||
*size = count;
|
||||
|
||||
return tmp;
|
||||
@ -3132,6 +3137,12 @@ static bool config_load_file(const char *path, bool set_defaults,
|
||||
strlcpy(settings->arrays.menu_driver, "rgui", sizeof(settings->arrays.menu_driver));
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LIBNX
|
||||
// Apply initial clocks
|
||||
extern void libnx_apply_overclock();
|
||||
libnx_apply_overclock();
|
||||
#endif
|
||||
|
||||
frontend_driver_set_sustained_performance_mode(settings->bools.sustained_performance_mode);
|
||||
recording_driver_update_streaming_url();
|
||||
|
||||
|
@ -103,6 +103,7 @@ typedef struct settings
|
||||
bool video_fps_show;
|
||||
bool video_statistics_show;
|
||||
bool video_framecount_show;
|
||||
bool video_memory_show;
|
||||
bool video_msg_bgcolor_enable;
|
||||
bool video_3ds_lcd_bottom;
|
||||
|
||||
@ -445,6 +446,8 @@ typedef struct settings
|
||||
unsigned window_position_height;
|
||||
|
||||
unsigned video_record_threads;
|
||||
|
||||
unsigned libnx_overclock;
|
||||
} uints;
|
||||
|
||||
struct
|
||||
|
70
dynamic.c
70
dynamic.c
@ -176,12 +176,81 @@ void libretro_free_system_info(struct retro_system_info *info)
|
||||
|
||||
static bool environ_cb_get_system_info(unsigned cmd, void *data)
|
||||
{
|
||||
rarch_system_info_t *system = runloop_get_system_info();
|
||||
switch (cmd)
|
||||
{
|
||||
case RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME:
|
||||
*load_no_content_hook = *(const bool*)data;
|
||||
break;
|
||||
case RETRO_ENVIRONMENT_SET_SUBSYSTEM_INFO:
|
||||
{
|
||||
unsigned i, j;
|
||||
unsigned size = i;
|
||||
const struct retro_subsystem_info *info =
|
||||
(const struct retro_subsystem_info*)data;
|
||||
subsystem_size = 0;
|
||||
RARCH_LOG("Environ SET_SUBSYSTEM_INFO.\n");
|
||||
|
||||
for (i = 0; info[i].ident; i++)
|
||||
{
|
||||
RARCH_LOG("Subsystem ID: %d\n", i);
|
||||
RARCH_LOG("Special game type: %s\n", info[i].desc);
|
||||
RARCH_LOG(" Ident: %s\n", info[i].ident);
|
||||
RARCH_LOG(" ID: %u\n", info[i].id);
|
||||
RARCH_LOG(" Content:\n");
|
||||
for (j = 0; j < info[i].num_roms; j++)
|
||||
{
|
||||
RARCH_LOG(" %s (%s)\n",
|
||||
info[i].roms[j].desc, info[i].roms[j].required ?
|
||||
"required" : "optional");
|
||||
}
|
||||
}
|
||||
|
||||
RARCH_LOG("Subsystems: %d\n", i);
|
||||
size = i;
|
||||
|
||||
if (system)
|
||||
{
|
||||
for (i = 0; i < size; i++)
|
||||
{
|
||||
subsystem_data[i].desc = strdup(info[i].desc);
|
||||
subsystem_data[i].ident = strdup(info[i].ident);
|
||||
subsystem_data[i].id = info[i].id;
|
||||
subsystem_data[i].num_roms = info[i].num_roms;
|
||||
|
||||
for (j = 0; j < subsystem_data[i].num_roms; j++)
|
||||
{
|
||||
subsystem_data_roms[i][j].desc = strdup(info[i].roms[j].desc);
|
||||
subsystem_data_roms[i][j].valid_extensions = strdup(info[i].roms[j].valid_extensions);
|
||||
subsystem_data_roms[i][j].required = info[i].roms[j].required;
|
||||
subsystem_data_roms[i][j].block_extract = info[i].roms[j].block_extract;
|
||||
subsystem_data_roms[i][j].need_fullpath = info[i].roms[j].need_fullpath;
|
||||
}
|
||||
subsystem_data[i].roms = subsystem_data_roms[i];
|
||||
}
|
||||
|
||||
for (i = 0; i < size; i++)
|
||||
{
|
||||
#if 1
|
||||
RARCH_LOG("Subsystem ID: %d\n", i);
|
||||
RARCH_LOG("Special game type: %s\n", subsystem_data[i].desc);
|
||||
RARCH_LOG(" Ident: %s\n", subsystem_data[i].ident);
|
||||
RARCH_LOG(" ID: %u\n", subsystem_data[i].id);
|
||||
RARCH_LOG(" Content:\n");
|
||||
#endif
|
||||
for (j = 0; j < subsystem_data[i].num_roms; j++)
|
||||
{
|
||||
RARCH_LOG(" %s (%s)\n",
|
||||
subsystem_data[i].roms[j].desc, subsystem_data[i].roms[j].required ?
|
||||
"required" : "optional");
|
||||
}
|
||||
}
|
||||
RARCH_LOG("Subsystems: %d\n", subsystem_size);
|
||||
subsystem_size = size;
|
||||
RARCH_LOG("Subsystems: %d\n", subsystem_size);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
@ -396,7 +465,6 @@ bool libretro_get_system_info(const char *path,
|
||||
#ifdef HAVE_DYNAMIC
|
||||
dylib_close(lib);
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -146,6 +146,10 @@ bool init_libretro_sym_custom(enum rarch_core_type type, struct retro_core_t *cu
|
||||
**/
|
||||
void uninit_libretro_sym(struct retro_core_t *core);
|
||||
|
||||
struct retro_subsystem_info subsystem_data[20];
|
||||
struct retro_subsystem_rom_info subsystem_data_roms[10][10];
|
||||
unsigned subsystem_size;
|
||||
|
||||
RETRO_END_DECLS
|
||||
|
||||
#endif
|
||||
|
@ -13,6 +13,9 @@
|
||||
|
||||
#ifdef HAVE_LIBNX
|
||||
#include <switch.h>
|
||||
#include "../../switch_performance_profiles.h"
|
||||
#include "../../configuration.h"
|
||||
#include <unistd.h>
|
||||
#else
|
||||
#include <libtransistor/nx.h>
|
||||
#include <libtransistor/ipc_helpers.h>
|
||||
@ -55,6 +58,8 @@ static const char *elf_path_cst = "/switch/retroarch_switch.nro";
|
||||
|
||||
static uint64_t frontend_switch_get_mem_used(void);
|
||||
|
||||
bool platform_switch_has_focus = true;
|
||||
|
||||
#ifdef HAVE_LIBNX
|
||||
|
||||
/* Splash */
|
||||
@ -68,10 +73,46 @@ static AppletHookCookie applet_hook_cookie;
|
||||
extern bool nxlink_connected;
|
||||
#endif
|
||||
|
||||
static void on_applet_hook(AppletHookType hook, void* param) {
|
||||
if(hook == AppletHookType_OnExitRequest) {
|
||||
void libnx_apply_overclock() {
|
||||
const size_t profiles_count = sizeof(SWITCH_CPU_PROFILES) / sizeof(SWITCH_CPU_PROFILES[1]);
|
||||
if (config_get_ptr()->uints.libnx_overclock >= 0 && config_get_ptr()->uints.libnx_overclock <= profiles_count)
|
||||
pcvSetClockRate(PcvModule_Cpu, SWITCH_CPU_SPEEDS_VALUES[config_get_ptr()->uints.libnx_overclock]);
|
||||
}
|
||||
|
||||
static void on_applet_hook(AppletHookType hook, void *param) {
|
||||
u32 performance_mode;
|
||||
AppletFocusState focus_state;
|
||||
|
||||
/* Exit request */
|
||||
switch (hook)
|
||||
{
|
||||
case AppletHookType_OnExitRequest:
|
||||
RARCH_LOG("Got AppletHook OnExitRequest, exiting.\n");
|
||||
retroarch_main_quit();
|
||||
break;
|
||||
|
||||
/* Focus state*/
|
||||
case AppletHookType_OnFocusState:
|
||||
focus_state = appletGetFocusState();
|
||||
RARCH_LOG("Got AppletHook OnFocusState - new focus state is %d\n", focus_state);
|
||||
platform_switch_has_focus = focus_state == AppletFocusState_Focused;
|
||||
if(!platform_switch_has_focus) {
|
||||
pcvSetClockRate(PcvModule_Cpu, 1020000000);
|
||||
} else {
|
||||
libnx_apply_overclock();
|
||||
}
|
||||
break;
|
||||
|
||||
/* Performance mode */
|
||||
case AppletHookType_OnPerformanceMode:
|
||||
// 0 == Handheld, 1 == Docked
|
||||
// Since CPU doesn't change we just re-apply
|
||||
performance_mode = appletGetPerformanceMode();
|
||||
libnx_apply_overclock();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -201,6 +242,8 @@ static void frontend_switch_deinit(void *data)
|
||||
|
||||
#ifdef HAVE_LIBNX
|
||||
nifmExit();
|
||||
pcvSetClockRate(PcvModule_Cpu, 1020000000); // Always 1020 MHz, unless SDEV
|
||||
pcvExit();
|
||||
#if defined(SWITCH) && defined(NXLINK)
|
||||
socketExit();
|
||||
#endif
|
||||
@ -225,7 +268,7 @@ static void frontend_switch_deinit(void *data)
|
||||
#ifdef HAVE_LIBNX
|
||||
static void frontend_switch_exec(const char *path, bool should_load_game)
|
||||
{
|
||||
char game_path[PATH_MAX];
|
||||
char game_path[PATH_MAX-4];
|
||||
const char *arg_data[3];
|
||||
char error_string[200 + PATH_MAX];
|
||||
int args = 0;
|
||||
@ -613,14 +656,20 @@ static void frontend_switch_shutdown(bool unused)
|
||||
/* runloop_get_system_info isnt initialized that early.. */
|
||||
extern void retro_get_system_info(struct retro_system_info *info);
|
||||
|
||||
|
||||
static void frontend_switch_init(void *data)
|
||||
{
|
||||
|
||||
(void)data;
|
||||
|
||||
#ifdef HAVE_LIBNX
|
||||
nifmInitialize();
|
||||
pcvInitialize();
|
||||
|
||||
appletLockExit();
|
||||
appletHook(&applet_hook_cookie, on_applet_hook, NULL);
|
||||
appletSetFocusHandlingMode(AppletFocusHandlingMode_NoSuspend);
|
||||
|
||||
#ifndef HAVE_OPENGL
|
||||
/* Init Resolution before initDefault */
|
||||
gfxInitResolution(1280, 720);
|
||||
@ -631,7 +680,10 @@ static void frontend_switch_init(void *data)
|
||||
gfxConfigureTransform(0);
|
||||
#endif /* HAVE_OPENGL */
|
||||
|
||||
appletInitializeGamePlayRecording();
|
||||
bool recording_supported = false;
|
||||
appletIsGamePlayRecordingSupported(&recording_supported);
|
||||
if(recording_supported)
|
||||
appletInitializeGamePlayRecording();
|
||||
|
||||
#ifdef NXLINK
|
||||
socketInitializeDefault();
|
||||
@ -776,6 +828,8 @@ static enum frontend_powerstate frontend_switch_get_powerstate(int *seconds, int
|
||||
case ChargerType_Charger:
|
||||
case ChargerType_Usb:
|
||||
return FRONTEND_POWERSTATE_CHARGING;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return FRONTEND_POWERSTATE_NO_SOURCE;
|
||||
|
@ -305,8 +305,9 @@ void dxgi_copy(
|
||||
void dxgi_update_title(video_frame_info_t* video_info)
|
||||
{
|
||||
const ui_window_t* window = ui_companion_driver_get_window_ptr();
|
||||
const settings_t *settings = config_get_ptr();
|
||||
|
||||
if (video_info->fps_show)
|
||||
if (settings->bools.video_memory_show)
|
||||
{
|
||||
MEMORYSTATUS stat;
|
||||
char mem[128];
|
||||
@ -315,7 +316,7 @@ void dxgi_update_title(video_frame_info_t* video_info)
|
||||
|
||||
GlobalMemoryStatus(&stat);
|
||||
snprintf(
|
||||
mem, sizeof(mem), "|| MEM: %.2f/%.2fMB", stat.dwAvailPhys / (1024.0f * 1024.0f),
|
||||
mem, sizeof(mem), " || MEM: %.2f/%.2fMB", stat.dwAvailPhys / (1024.0f * 1024.0f),
|
||||
stat.dwTotalPhys / (1024.0f * 1024.0f));
|
||||
strlcat(video_info->fps_text, mem, sizeof(video_info->fps_text));
|
||||
}
|
||||
|
@ -76,6 +76,7 @@ typedef struct
|
||||
/*! @brief end commits the command buffer */
|
||||
- (void)end;
|
||||
|
||||
- (void)setRotation:(unsigned)rotation;
|
||||
- (bool)readBackBuffer:(uint8_t *)buffer;
|
||||
|
||||
@end
|
||||
|
@ -53,10 +53,16 @@
|
||||
|
||||
id<MTLRenderPipelineState> _states[GFX_MAX_SHADERS][2];
|
||||
id<MTLRenderPipelineState> _clearState;
|
||||
Uniforms _uniforms;
|
||||
|
||||
bool _captureEnabled;
|
||||
id<MTLTexture> _backBuffer;
|
||||
|
||||
unsigned _rotation;
|
||||
matrix_float4x4 _mvp_no_rot;
|
||||
matrix_float4x4 _mvp;
|
||||
|
||||
Uniforms _uniforms;
|
||||
Uniforms _uniformsNoRotate;
|
||||
}
|
||||
|
||||
- (instancetype)initWithDevice:(id<MTLDevice>)d
|
||||
@ -75,6 +81,11 @@
|
||||
_commandQueue = [_device newCommandQueue];
|
||||
_clearColor = MTLClearColorMake(0, 0, 0, 1);
|
||||
_uniforms.projectionMatrix = matrix_proj_ortho(0, 1, 0, 1);
|
||||
|
||||
_rotation = 0;
|
||||
[self setRotation:0];
|
||||
_mvp_no_rot = matrix_proj_ortho(0, 1, 0, 1);
|
||||
_mvp = matrix_proj_ortho(0, 1, 0, 1);
|
||||
|
||||
{
|
||||
MTLSamplerDescriptor *sd = [MTLSamplerDescriptor new];
|
||||
@ -130,6 +141,27 @@
|
||||
return &_uniforms;
|
||||
}
|
||||
|
||||
- (void)setRotation:(unsigned)rotation
|
||||
{
|
||||
_rotation = 270 * rotation;
|
||||
|
||||
/* Calculate projection. */
|
||||
_mvp_no_rot = matrix_proj_ortho(0, 1, 0, 1);
|
||||
|
||||
bool allow_rotate = true;
|
||||
if (!allow_rotate)
|
||||
{
|
||||
_mvp = _mvp_no_rot;
|
||||
return;
|
||||
}
|
||||
|
||||
matrix_float4x4 rot = matrix_rotate_z((float)(M_PI * _rotation / 180.0f));
|
||||
_mvp = simd_mul(rot, _mvp_no_rot);
|
||||
|
||||
_uniforms.projectionMatrix = _mvp;
|
||||
_uniformsNoRotate.projectionMatrix = _mvp_no_rot;
|
||||
}
|
||||
|
||||
- (void)setDisplaySyncEnabled:(bool)displaySyncEnabled
|
||||
{
|
||||
#if TARGET_OS_OSX
|
||||
|
@ -55,6 +55,7 @@ typedef NS_ENUM(NSUInteger, RTextureFilter)
|
||||
};
|
||||
|
||||
extern matrix_float4x4 matrix_proj_ortho(float left, float right, float top, float bottom);
|
||||
extern matrix_float4x4 matrix_rotate_z(float rot);
|
||||
extern matrix_float4x4 make_matrix_float4x4(const float *v);
|
||||
|
||||
#endif /* RendererCommon_h */
|
||||
|
@ -86,3 +86,17 @@ matrix_float4x4 matrix_proj_ortho(float left, float right, float top, float bott
|
||||
matrix_float4x4 mat = {P, Q, R, S};
|
||||
return mat;
|
||||
}
|
||||
|
||||
matrix_float4x4 matrix_rotate_z(float rot)
|
||||
{
|
||||
float cz, sz;
|
||||
__sincosf(rot, &sz, &cz);
|
||||
|
||||
simd_float4 P = simd_make_float4(cz, -sz, 0, 0);
|
||||
simd_float4 Q = simd_make_float4(sz, cz, 0, 0);
|
||||
simd_float4 R = simd_make_float4( 0, 0, 1, 0);
|
||||
simd_float4 S = simd_make_float4( 0, 0, 0, 1);
|
||||
|
||||
matrix_float4x4 mat = {P, Q, R, S};
|
||||
return mat;
|
||||
}
|
||||
|
@ -96,6 +96,8 @@ extern MTLPixelFormat SelectOptimalPixelFormat(MTLPixelFormat fmt);
|
||||
|
||||
/*! @brief setNeedsResize triggers a display resize */
|
||||
- (void)setNeedsResize;
|
||||
- (void)setViewportWidth:(unsigned)width height:(unsigned)height forceFull:(BOOL)forceFull allowRotate:(BOOL)allowRotate;
|
||||
- (void)setRotation:(unsigned)rotation;
|
||||
|
||||
@end
|
||||
|
||||
|
@ -216,21 +216,19 @@
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)_updateUniforms
|
||||
- (void)setViewportWidth:(unsigned)width height:(unsigned)height forceFull:(BOOL)forceFull allowRotate:(BOOL)allowRotate
|
||||
{
|
||||
_uniforms.projectionMatrix = matrix_proj_ortho(0, 1, 0, 1);
|
||||
}
|
||||
|
||||
- (void)_updateViewport:(CGSize)size
|
||||
{
|
||||
RARCH_LOG("[Metal]: _updateViewport size %.0fx%.0f\n", size.width, size.height);
|
||||
#if 0
|
||||
RARCH_LOG("[Metal]: setViewportWidth size %dx%d\n", width, height);
|
||||
#endif
|
||||
|
||||
_viewport->full_width = (unsigned int)size.width;
|
||||
_viewport->full_height = (unsigned int)size.height;
|
||||
_viewport->full_width = width;
|
||||
_viewport->full_height = height;
|
||||
video_driver_set_size(&_viewport->full_width, &_viewport->full_height);
|
||||
_layer.drawableSize = size;
|
||||
video_driver_update_viewport(_viewport, NO, _keepAspect);
|
||||
_layer.drawableSize = CGSizeMake(width, height);
|
||||
video_driver_update_viewport(_viewport, forceFull, _keepAspect);
|
||||
|
||||
// update matrix
|
||||
_context.viewport = _viewport;
|
||||
|
||||
_viewportMVP.outputSize = simd_make_float2(_viewport->full_width, _viewport->full_height);
|
||||
@ -256,8 +254,10 @@
|
||||
[self _beginFrame];
|
||||
|
||||
_frameView.frameCount = frameCount;
|
||||
_frameView.size = CGSizeMake(width, height);
|
||||
[_frameView updateFrame:data pitch:pitch];
|
||||
if (data && width && height) {
|
||||
_frameView.size = CGSizeMake(width, height);
|
||||
[_frameView updateFrame:data pitch:pitch];
|
||||
}
|
||||
|
||||
[self _drawViews:video_info];
|
||||
|
||||
@ -277,7 +277,7 @@
|
||||
id<MTLRenderCommandEncoder> rce = _context.rce;
|
||||
[rce pushDebugGroup:@"overlay"];
|
||||
[rce setRenderPipelineState:[_context getStockShader:VIDEO_SHADER_STOCK_BLEND blend:YES]];
|
||||
[rce setVertexBytes:&_uniforms length:sizeof(_uniforms) atIndex:BufferIndexUniforms];
|
||||
[rce setVertexBytes:_context.uniforms length:sizeof(*_context.uniforms) atIndex:BufferIndexUniforms];
|
||||
[rce setFragmentSamplerState:_samplerStateLinear atIndex:SamplerIndexDraw];
|
||||
[_overlay drawWithEncoder:rce];
|
||||
[rce popDebugGroup];
|
||||
@ -338,7 +338,6 @@
|
||||
_context.viewport = _viewport;
|
||||
}
|
||||
[_context begin];
|
||||
[self _updateUniforms];
|
||||
}
|
||||
|
||||
- (void)_drawViews:(video_frame_info_t *)video_info
|
||||
@ -351,7 +350,7 @@
|
||||
|
||||
if ((_frameView.drawState & ViewDrawStateEncoder) != 0)
|
||||
{
|
||||
[rce setVertexBytes:&_uniforms length:sizeof(_uniforms) atIndex:BufferIndexUniforms];
|
||||
[rce setVertexBytes:_context.uniforms length:sizeof(*_context.uniforms) atIndex:BufferIndexUniforms];
|
||||
[rce setRenderPipelineState:_t_pipelineStateNoAlpha];
|
||||
if (_frameView.filter == RTextureFilterNearest)
|
||||
{
|
||||
@ -410,6 +409,11 @@
|
||||
// TODO(sgc): resize all drawables
|
||||
}
|
||||
|
||||
- (void)setRotation:(unsigned)rotation
|
||||
{
|
||||
[_context setRotation:rotation];
|
||||
}
|
||||
|
||||
- (Uniforms *)viewportMVP
|
||||
{
|
||||
return &_viewportMVP;
|
||||
@ -419,7 +423,7 @@
|
||||
|
||||
- (void)mtkView:(MTKView *)view drawableSizeWillChange:(CGSize)size
|
||||
{
|
||||
[self _updateViewport:size];
|
||||
[self setViewportWidth:(unsigned int)size.width height:(unsigned int)size.height forceFull:NO allowRotate:YES];
|
||||
}
|
||||
|
||||
- (void)drawInMTKView:(MTKView *)view
|
||||
@ -897,7 +901,7 @@ typedef struct MTLALIGN(16)
|
||||
rce = [cb renderCommandEncoderWithDescriptor:rpd];
|
||||
}
|
||||
|
||||
#if METAL_DEBUG
|
||||
#if DEBUG && METAL_DEBUG
|
||||
rce.label = [NSString stringWithFormat:@"pass %d", i];
|
||||
#endif
|
||||
|
||||
@ -1126,6 +1130,8 @@ typedef struct MTLALIGN(16)
|
||||
texture_t *source = &_engine.frame.texture[0];
|
||||
for (unsigned i = 0; i < shader->passes; source = &_engine.pass[i++].rt)
|
||||
{
|
||||
matrix_float4x4 *mvp = (i == shader->passes-1) ? &_context.uniforms->projectionMatrix : &_engine.mvp;
|
||||
|
||||
/* clang-format off */
|
||||
semantics_map_t semantics_map = {
|
||||
{
|
||||
@ -1154,7 +1160,7 @@ typedef struct MTLALIGN(16)
|
||||
&_engine.luts[0].size_data, sizeof(*_engine.luts)},
|
||||
},
|
||||
{
|
||||
&_engine.mvp, /* MVP */
|
||||
mvp, /* MVP */
|
||||
&_engine.pass[i].rt.size_data, /* OutputSize */
|
||||
&_engine.frame.output_size, /* FinalViewportSize */
|
||||
&_engine.pass[i].frame_count, /* FrameCount */
|
||||
|
@ -42,7 +42,7 @@
|
||||
#define VENDOR_ID_NV 0x10DE
|
||||
#define VENDOR_ID_INTEL 0x8086
|
||||
|
||||
#ifdef _WIN32
|
||||
#if defined(_WIN32) || defined(ANDROID)
|
||||
#define VULKAN_EMULATE_MAILBOX
|
||||
#endif
|
||||
|
||||
|
@ -14,9 +14,18 @@
|
||||
* You should have received a copy of the GNU General Public License along with RetroArch.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <compat/strl.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "../../config.h"
|
||||
|
||||
#ifdef HAVE_XRANDR
|
||||
#include <X11/extensions/Xrandr.h>
|
||||
#endif
|
||||
|
||||
#include "../video_display_server.h"
|
||||
#include "../common/x11_common.h"
|
||||
#include "../../configuration.h"
|
||||
@ -284,8 +293,37 @@ static bool x11_display_server_set_resolution(void *data,
|
||||
|
||||
const char *x11_display_server_get_output_options(void *data)
|
||||
{
|
||||
#ifdef HAVE_XRANDR
|
||||
Display *dpy;
|
||||
XRRScreenResources *res;
|
||||
XRROutputInfo *info;
|
||||
Window root;
|
||||
int i;
|
||||
static char s[PATH_MAX_LENGTH];
|
||||
|
||||
if (!(dpy = XOpenDisplay(0)))
|
||||
return NULL;
|
||||
|
||||
root = RootWindow(dpy, DefaultScreen(dpy));
|
||||
|
||||
if (!(res = XRRGetScreenResources(dpy, root)))
|
||||
return NULL;
|
||||
|
||||
for (i = 0; i < res->noutput; i++)
|
||||
{
|
||||
if (!(info = XRRGetOutputInfo(dpy, res, res->outputs[i])))
|
||||
return NULL;
|
||||
|
||||
strlcat(s, info->name, sizeof(s));
|
||||
if ((i+1) < res->noutput)
|
||||
strlcat(s, "|", sizeof(s));
|
||||
}
|
||||
|
||||
return s;
|
||||
#else
|
||||
/* TODO/FIXME - hardcoded for now; list should be built up dynamically later */
|
||||
return "HDMI-0|HDMI-1|HDMI-2|HDMI-3|DVI-0|DVI-1|DVI-2|DVI-3|VGA-0|VGA-1|VGA-2|VGA-3|Config";
|
||||
#endif
|
||||
}
|
||||
|
||||
const video_display_server_t dispserv_x11 = {
|
||||
|
@ -1990,14 +1990,14 @@ static void d3d9_video_texture_load_d3d(
|
||||
*id = (uintptr_t)tex;
|
||||
}
|
||||
|
||||
static int64_t d3d9_video_texture_load_wrap_d3d(void *data)
|
||||
static int d3d9_video_texture_load_wrap_d3d(void *data)
|
||||
{
|
||||
uintptr_t id = 0;
|
||||
struct d3d9_texture_info *info = (struct d3d9_texture_info*)data;
|
||||
if (!info)
|
||||
return 0;
|
||||
d3d9_video_texture_load_d3d(info, &id);
|
||||
return (int64_t)(uintptr_t)id;
|
||||
return id;
|
||||
}
|
||||
|
||||
static uintptr_t d3d9_load_texture(void *video_data, void *data,
|
||||
|
@ -957,12 +957,6 @@ static bool gl_frame(void *data, const void *frame,
|
||||
if (!gl)
|
||||
return false;
|
||||
|
||||
#ifdef HAVE_LIBNX
|
||||
// Should be called once per frame
|
||||
if(!appletMainLoop())
|
||||
return false;
|
||||
#endif
|
||||
|
||||
gl_context_bind_hw_render(gl, false);
|
||||
|
||||
if (gl->core_context_in_use && gl->renderchain_driver->bind_vao)
|
||||
@ -2509,7 +2503,7 @@ static void video_texture_load_gl(
|
||||
}
|
||||
|
||||
#ifdef HAVE_THREADS
|
||||
static int64_t video_texture_load_wrap_gl_mipmap(void *data)
|
||||
static int video_texture_load_wrap_gl_mipmap(void *data)
|
||||
{
|
||||
uintptr_t id = 0;
|
||||
|
||||
@ -2517,10 +2511,10 @@ static int64_t video_texture_load_wrap_gl_mipmap(void *data)
|
||||
return 0;
|
||||
video_texture_load_gl((struct texture_image*)data,
|
||||
TEXTURE_FILTER_MIPMAP_LINEAR, &id);
|
||||
return (int64_t)(uintptr_t)id;
|
||||
return (int)id;
|
||||
}
|
||||
|
||||
static int64_t video_texture_load_wrap_gl(void *data)
|
||||
static int video_texture_load_wrap_gl(void *data)
|
||||
{
|
||||
uintptr_t id = 0;
|
||||
|
||||
@ -2528,7 +2522,7 @@ static int64_t video_texture_load_wrap_gl(void *data)
|
||||
return 0;
|
||||
video_texture_load_gl((struct texture_image*)data,
|
||||
TEXTURE_FILTER_LINEAR, &id);
|
||||
return (int64_t)(uintptr_t)id;
|
||||
return (int)id;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -151,16 +151,22 @@ static void metal_free(void *data)
|
||||
static void metal_set_viewport(void *data, unsigned viewport_width,
|
||||
unsigned viewport_height, bool force_full, bool allow_rotate)
|
||||
{
|
||||
#if 0
|
||||
RARCH_LOG("[Metal]: set_viewport size: %dx%d full: %s rotate: %s\n",
|
||||
viewport_width, viewport_height,
|
||||
force_full ? "YES" : "NO",
|
||||
allow_rotate ? "YES" : "NO");
|
||||
#endif
|
||||
MetalDriver *md = (__bridge MetalDriver *)data;
|
||||
if (md == nil) {
|
||||
return;
|
||||
}
|
||||
|
||||
[md setViewportWidth:viewport_width height:viewport_height forceFull:force_full allowRotate:allow_rotate];
|
||||
}
|
||||
|
||||
static void metal_set_rotation(void *data, unsigned rotation)
|
||||
{
|
||||
MetalDriver *md = (__bridge MetalDriver *)data;
|
||||
if (md == nil) {
|
||||
return;
|
||||
}
|
||||
|
||||
[md setRotation:rotation];
|
||||
}
|
||||
|
||||
static void metal_viewport_info(void *data, struct video_viewport *vp)
|
||||
|
@ -27,6 +27,8 @@
|
||||
static enum gfx_ctx_api ctx_nx_api = GFX_CTX_OPENGL_API;
|
||||
switch_ctx_data_t *nx_ctx_ptr = NULL;
|
||||
|
||||
extern bool platform_switch_has_focus;
|
||||
|
||||
void switch_ctx_destroy(void *data)
|
||||
{
|
||||
switch_ctx_data_t *ctx_nx = (switch_ctx_data_t *)data;
|
||||
@ -190,7 +192,7 @@ static bool switch_ctx_bind_api(void *data,
|
||||
static bool switch_ctx_has_focus(void *data)
|
||||
{
|
||||
(void)data;
|
||||
return true;
|
||||
return platform_switch_has_focus;
|
||||
}
|
||||
|
||||
static bool switch_ctx_suppress_screensaver(void *data, bool enable)
|
||||
|
@ -986,7 +986,8 @@ static bool video_driver_init_internal(bool *video_is_threaded)
|
||||
else
|
||||
{
|
||||
/* To-Do: remove when the new window resizing core is hooked */
|
||||
if (settings->uints.window_position_width || settings->uints.window_position_height)
|
||||
if (settings->bools.video_window_save_positions &&
|
||||
(settings->uints.window_position_width || settings->uints.window_position_height))
|
||||
{
|
||||
width = settings->uints.window_position_width;
|
||||
height = settings->uints.window_position_height;
|
||||
@ -2448,10 +2449,13 @@ void video_driver_frame(const void *data, unsigned width,
|
||||
char frames_text[64];
|
||||
last_fps = TIME_TO_FPS(curr_time, new_time, FPS_UPDATE_INTERVAL);
|
||||
|
||||
if (video_info.fps_show)
|
||||
if (video_info.fps_show || video_info.framecount_show)
|
||||
{
|
||||
snprintf(video_info.fps_text, sizeof(video_info.fps_text),
|
||||
"|| FPS: %6.1f ", last_fps);
|
||||
if (video_info.fps_show)
|
||||
{
|
||||
snprintf(video_info.fps_text, sizeof(video_info.fps_text),
|
||||
" || FPS: %6.1f ", last_fps);
|
||||
}
|
||||
if (video_info.framecount_show)
|
||||
{
|
||||
snprintf(frames_text,
|
||||
@ -2460,7 +2464,8 @@ void video_driver_frame(const void *data, unsigned width,
|
||||
(uint64_t)video_driver_frame_count);
|
||||
}
|
||||
snprintf(video_driver_window_title, sizeof(video_driver_window_title),
|
||||
"%s%s%s", title, video_info.fps_text,
|
||||
"%s%s%s", title,
|
||||
video_info.fps_show ? video_info.fps_text : "",
|
||||
video_info.framecount_show ? frames_text : "");
|
||||
}
|
||||
else
|
||||
@ -2490,6 +2495,28 @@ void video_driver_frame(const void *data, unsigned width,
|
||||
"FPS: %6.1f",
|
||||
last_fps);
|
||||
}
|
||||
|
||||
if (video_info.fps_show && video_info.framecount_show)
|
||||
snprintf(
|
||||
video_info.fps_text,
|
||||
sizeof(video_info.fps_text),
|
||||
"FPS: %6.1f || %s: %" PRIu64,
|
||||
last_fps,
|
||||
msg_hash_to_str(MSG_FRAMES),
|
||||
(uint64_t)video_driver_frame_count);
|
||||
else if (video_info.framecount_show)
|
||||
snprintf(
|
||||
video_info.fps_text,
|
||||
sizeof(video_info.fps_text),
|
||||
"%s: %" PRIu64,
|
||||
msg_hash_to_str(MSG_FRAMES),
|
||||
(uint64_t)video_driver_frame_count);
|
||||
else if (video_info.fps_show)
|
||||
snprintf(
|
||||
video_info.fps_text,
|
||||
sizeof(video_info.fps_text),
|
||||
"FPS: %6.1f",
|
||||
last_fps);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2619,7 +2646,7 @@ void video_driver_frame(const void *data, unsigned width,
|
||||
video_driver_frame_count++;
|
||||
|
||||
/* Display the FPS, with a higher priority. */
|
||||
if (video_info.fps_show)
|
||||
if (video_info.fps_show || video_info.framecount_show)
|
||||
runloop_msg_queue_push(video_info.fps_text, 2, 1, true);
|
||||
|
||||
/* trigger set resolution*/
|
||||
|
@ -27,7 +27,7 @@
|
||||
|
||||
RETRO_BEGIN_DECLS
|
||||
|
||||
typedef int64_t (*custom_command_method_t)(void*);
|
||||
typedef int (*custom_command_method_t)(void*);
|
||||
|
||||
typedef bool (*custom_font_command_method_t)(const void **font_driver,
|
||||
void **font_handle, void *video_data, const char *font_path,
|
||||
|
@ -97,6 +97,7 @@ enum
|
||||
RARCH_SCREENSHOT,
|
||||
RARCH_MUTE,
|
||||
RARCH_OSK,
|
||||
RARCH_FPS_TOGGLE,
|
||||
RARCH_NETPLAY_GAME_WATCH,
|
||||
RARCH_ENABLE_HOTKEY,
|
||||
RARCH_VOLUME_UP,
|
||||
|
@ -343,6 +343,7 @@ const struct input_bind_map input_config_bind_map[RARCH_BIND_LIST_END_NULL] = {
|
||||
DECLARE_META_BIND(2, screenshot, RARCH_SCREENSHOT, MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT),
|
||||
DECLARE_META_BIND(2, audio_mute, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE),
|
||||
DECLARE_META_BIND(2, osk_toggle, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK),
|
||||
DECLARE_META_BIND(2, fps_toggle, RARCH_FPS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE),
|
||||
DECLARE_META_BIND(2, netplay_game_watch, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH),
|
||||
DECLARE_META_BIND(2, enable_hotkey, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY),
|
||||
DECLARE_META_BIND(2, volume_up, RARCH_VOLUME_UP, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP),
|
||||
|
@ -3432,7 +3432,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_GREEN,
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_BLUE,
|
||||
"Notification Blue Color")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FRAMECOUNT_SHOW,
|
||||
"Show frame count on FPS display")
|
||||
"Display Frame Count")
|
||||
MSG_HASH(MSG_CONFIG_OVERRIDE_LOADED,
|
||||
"Configuration override loaded.")
|
||||
MSG_HASH(MSG_GAME_REMAP_FILE_LOADED,
|
||||
|
@ -15,6 +15,8 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_SWITCH_BACKLIGHT_CONTROL,
|
||||
"调整 Switch 的屏幕亮度"
|
||||
)
|
||||
#endif
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_SWITCH_CPU_PROFILE,
|
||||
"CPU 超频"
|
||||
|
@ -15,6 +15,8 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_SWITCH_BACKLIGHT_CONTROL,
|
||||
"Anpassen der Switch Bildschirmhelligkeit"
|
||||
)
|
||||
#endif
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_SWITCH_CPU_PROFILE,
|
||||
"CPU Übertakten"
|
||||
|
@ -6224,7 +6224,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_FRAMECOUNT_SHOW,
|
||||
"Show frame count on FPS display"
|
||||
"Display Frame Count"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_CONFIG_OVERRIDE_LOADED,
|
||||
|
@ -15,6 +15,8 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_SWITCH_BACKLIGHT_CONTROL,
|
||||
"Ajusta el brillo de la pantalla"
|
||||
)
|
||||
#endif
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_SWITCH_CPU_PROFILE,
|
||||
"CPU Overclock"
|
||||
|
@ -3,6 +3,8 @@ MSG_HASH(MENU_ENUM_LABEL_SWITCH_GPU_PROFILE,
|
||||
"switch_gpu_profile")
|
||||
MSG_HASH(MENU_ENUM_LABEL_SWITCH_BACKLIGHT_CONTROL,
|
||||
"switch_backlight_control")
|
||||
#endif
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
MSG_HASH(MENU_ENUM_LABEL_SWITCH_CPU_PROFILE,
|
||||
"switch_cpu_profile")
|
||||
#endif
|
||||
@ -1551,6 +1553,8 @@ MSG_HASH(MENU_ENUM_LABEL_VIDEO_MESSAGE_COLOR_BLUE,
|
||||
"video_msg_color_blue")
|
||||
MSG_HASH(MENU_ENUM_LABEL_FRAMECOUNT_SHOW,
|
||||
"framecount_show")
|
||||
MSG_HASH(MENU_ENUM_LABEL_MEMORY_SHOW,
|
||||
"memory_show")
|
||||
MSG_HASH(MENU_ENUM_LABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST,
|
||||
"automatically_add_content_to_playlist")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VIDEO_WINDOW_OPACITY,
|
||||
|
@ -15,6 +15,8 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_SWITCH_BACKLIGHT_CONTROL,
|
||||
"Aumentar ou diminuir o brilho da tela do Switch"
|
||||
)
|
||||
#endif
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_SWITCH_CPU_PROFILE,
|
||||
"Overclock da CPU"
|
||||
|
@ -104,6 +104,10 @@ int menu_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len)
|
||||
snprintf(s, len,
|
||||
"Toggles onscreen keyboard.");
|
||||
break;
|
||||
case RARCH_FPS_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggles frames per second counter.");
|
||||
break;
|
||||
case RARCH_NETPLAY_GAME_WATCH:
|
||||
snprintf(s, len,
|
||||
"Netplay toggle play/spectate mode.");
|
||||
@ -567,6 +571,11 @@ int menu_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len)
|
||||
"Enables displaying the current frames \n"
|
||||
"per second.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_MEMORY_SHOW:
|
||||
snprintf(s, len,
|
||||
"Includes displaying the current memory \n"
|
||||
"usage/total with FPS/Frames.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_VIDEO_FONT_ENABLE:
|
||||
snprintf(s, len,
|
||||
"Show and/or hide onscreen messages.");
|
||||
|
@ -15,6 +15,8 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_SWITCH_BACKLIGHT_CONTROL,
|
||||
"Increase or decrease the Switch screen brightness"
|
||||
)
|
||||
#endif
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_SWITCH_CPU_PROFILE,
|
||||
"CPU Overclock"
|
||||
@ -843,6 +845,10 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_FPS_SHOW,
|
||||
"Display Framerate"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MEMORY_SHOW,
|
||||
"Include Memory Details"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_FRAME_THROTTLE_ENABLE,
|
||||
"Limit Maximum Run Speed"
|
||||
@ -1247,6 +1253,10 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE,
|
||||
"Frameadvance"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE,
|
||||
"FPS toggle"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY,
|
||||
"Fullscreen toggle"
|
||||
@ -3630,6 +3640,14 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_FPS_SHOW,
|
||||
"Displays the current framerate per second onscreen."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_FRAMECOUNT_SHOW,
|
||||
"Displays the current frame count onscreen."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MEMORY_SHOW,
|
||||
"Includes the current memory usage/total onscreen with FPS/Frames."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_INPUT_HOTKEY_BINDS,
|
||||
"Configure hotkey settings."
|
||||
@ -6265,7 +6283,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_FRAMECOUNT_SHOW,
|
||||
"Show frame count on FPS display"
|
||||
"Display Frame Count"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_CONFIG_OVERRIDE_LOADED,
|
||||
@ -7789,4 +7807,4 @@ MSG_HASH(
|
||||
"Warning: Missing assets, use the Online Updater if available"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
|
||||
"Remember Window Positions")
|
||||
"Remember Window Position and Size")
|
||||
|
63
lakka.h
63
lakka.h
@ -24,67 +24,6 @@
|
||||
#define LAKKA_UPDATE_DIR "/storage/.update/"
|
||||
#define LAKKA_CONNMAN_DIR "/storage/.cache/connman/"
|
||||
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
static char* SWITCH_GPU_PROFILES[] = {
|
||||
"docked-overclock-3",
|
||||
"docked-overclock-2",
|
||||
"docked-overclock-1",
|
||||
"docked",
|
||||
"non-docked-overclock-5",
|
||||
"non-docked-overclock-4",
|
||||
"non-docked-overclock-3",
|
||||
"non-docked-overclock-2",
|
||||
"non-docked-overclock-1",
|
||||
"non-docked",
|
||||
"non-docked-underclock-1",
|
||||
"non-docked-underclock-2",
|
||||
"non-docked-underclock-3",
|
||||
};
|
||||
|
||||
static char* SWITCH_GPU_SPEEDS[] = {
|
||||
"998 Mhz",
|
||||
"921 Mhz",
|
||||
"844 Mhz",
|
||||
"768 Mhz",
|
||||
"691 Mhz",
|
||||
"614 Mhz",
|
||||
"537 Mhz",
|
||||
"460 Mhz",
|
||||
"384 Mhz",
|
||||
"307 Mhz",
|
||||
"230 Mhz",
|
||||
"153 Mhz",
|
||||
"76 Mhz"
|
||||
};
|
||||
|
||||
static int SWITCH_BRIGHTNESS[] = {
|
||||
10,
|
||||
20,
|
||||
30,
|
||||
40,
|
||||
50,
|
||||
60,
|
||||
70,
|
||||
80,
|
||||
90,
|
||||
100
|
||||
};
|
||||
|
||||
static char* SWITCH_CPU_PROFILES[] = {
|
||||
"overclock-4",
|
||||
"overclock-3",
|
||||
"overclock-2",
|
||||
"overclock-1",
|
||||
"default",
|
||||
};
|
||||
|
||||
static char* SWITCH_CPU_SPEEDS[] = {
|
||||
"1912 MHz",
|
||||
"1734 MHz",
|
||||
"1530 MHz",
|
||||
"1224 MHz",
|
||||
"1020 MHz"
|
||||
};
|
||||
#endif
|
||||
#include "switch_performance_profiles.h"
|
||||
|
||||
#endif
|
||||
|
@ -187,10 +187,13 @@ generic_deferred_push(deferred_push_core_content_dirs_subdir_list, DISPLAYLIST_
|
||||
generic_deferred_push(deferred_push_lakka_list, DISPLAYLIST_LAKKA)
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
generic_deferred_push(deferred_push_switch_cpu_profile, DISPLAYLIST_SWITCH_CPU_PROFILE)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
generic_deferred_push(deferred_push_switch_gpu_profile, DISPLAYLIST_SWITCH_GPU_PROFILE)
|
||||
generic_deferred_push(deferred_push_switch_backlight_control, DISPLAYLIST_SWITCH_BACKLIGHT_CONTROL)
|
||||
generic_deferred_push(deferred_push_switch_cpu_profile, DISPLAYLIST_SWITCH_CPU_PROFILE)
|
||||
#endif
|
||||
|
||||
static int deferred_push_cursor_manager_list_deferred(
|
||||
@ -906,6 +909,8 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_switch_backlight_control);
|
||||
}
|
||||
#endif
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
else if (strstr(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_SWITCH_CPU_PROFILE)))
|
||||
{
|
||||
|
@ -2524,25 +2524,34 @@ static int action_ok_deferred_list_stub(const char *path,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
static int action_ok_set_switch_cpu_profile(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
char* profile_name = SWITCH_CPU_PROFILES[entry_idx];
|
||||
|
||||
char command[PATH_MAX_LENGTH] = {0};
|
||||
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
snprintf(command, sizeof(command), "cpu-profile set %s", profile_name);
|
||||
|
||||
system(command);
|
||||
|
||||
snprintf(command, sizeof(command), "Current profile set to %s", profile_name);
|
||||
|
||||
#else
|
||||
config_get_ptr()->uints.libnx_overclock = entry_idx;
|
||||
|
||||
unsigned profile_clock = SWITCH_CPU_SPEEDS_VALUES[entry_idx];
|
||||
pcvSetClockRate(PcvModule_Cpu, (u32)profile_clock);
|
||||
snprintf(command, sizeof(command), "Current Clock set to %i", profile_clock);
|
||||
#endif
|
||||
|
||||
runloop_msg_queue_push(command, 1, 90, true);
|
||||
|
||||
return menu_cbs_exit();
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
|
||||
static int action_ok_set_switch_gpu_profile(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
@ -5187,6 +5196,8 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
case MENU_ENUM_LABEL_SWITCH_GPU_PROFILE:
|
||||
case MENU_ENUM_LABEL_SWITCH_BACKLIGHT_CONTROL:
|
||||
#endif
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
case MENU_ENUM_LABEL_SWITCH_CPU_PROFILE:
|
||||
#endif
|
||||
BIND_ACTION_OK(cbs, action_ok_push_default);
|
||||
@ -5640,6 +5651,8 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
|
||||
case MENU_SET_SWITCH_BRIGHTNESS:
|
||||
BIND_ACTION_OK(cbs, action_ok_set_switch_backlight);
|
||||
break;
|
||||
#endif
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
case MENU_SET_SWITCH_CPU_PROFILE:
|
||||
BIND_ACTION_OK(cbs, action_ok_set_switch_cpu_profile);
|
||||
break;
|
||||
|
@ -40,6 +40,7 @@
|
||||
|
||||
#include "../../retroarch.h"
|
||||
#include "../../content.h"
|
||||
#include "../../dynamic.h"
|
||||
#include "../../configuration.h"
|
||||
#include "../../managers/cheat_manager.h"
|
||||
|
||||
@ -123,6 +124,8 @@ default_sublabel_macro(action_bind_sublabel_user_language, MENU_
|
||||
default_sublabel_macro(action_bind_sublabel_max_swapchain_images, MENU_ENUM_SUBLABEL_VIDEO_MAX_SWAPCHAIN_IMAGES )
|
||||
default_sublabel_macro(action_bind_sublabel_online_updater, MENU_ENUM_SUBLABEL_ONLINE_UPDATER)
|
||||
default_sublabel_macro(action_bind_sublabel_fps_show, MENU_ENUM_SUBLABEL_FPS_SHOW)
|
||||
default_sublabel_macro(action_bind_sublabel_framecount_show, MENU_ENUM_SUBLABEL_FRAMECOUNT_SHOW)
|
||||
default_sublabel_macro(action_bind_sublabel_memory_show, MENU_ENUM_SUBLABEL_MEMORY_SHOW)
|
||||
default_sublabel_macro(action_bind_sublabel_statistics_show, MENU_ENUM_SUBLABEL_STATISTICS_SHOW)
|
||||
default_sublabel_macro(action_bind_sublabel_netplay_settings, MENU_ENUM_SUBLABEL_NETPLAY)
|
||||
default_sublabel_macro(action_bind_sublabel_user_bind_settings, MENU_ENUM_SUBLABEL_INPUT_USER_BINDS)
|
||||
@ -482,9 +485,12 @@ default_sublabel_macro(action_bind_sublabel_show_wimp,
|
||||
#endif
|
||||
default_sublabel_macro(action_bind_sublabel_discord_allow, MENU_ENUM_SUBLABEL_DISCORD_ALLOW)
|
||||
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
default_sublabel_macro(action_bind_sublabel_switch_cpu_profile, MENU_ENUM_SUBLABEL_SWITCH_CPU_PROFILE)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
default_sublabel_macro(action_bind_sublabel_switch_gpu_profile, MENU_ENUM_SUBLABEL_SWITCH_GPU_PROFILE)
|
||||
default_sublabel_macro(action_bind_sublabel_switch_cpu_profile, MENU_ENUM_SUBLABEL_SWITCH_CPU_PROFILE)
|
||||
default_sublabel_macro(action_bind_sublabel_switch_backlight_control, MENU_ENUM_SUBLABEL_SWITCH_BACKLIGHT_CONTROL)
|
||||
#endif
|
||||
|
||||
@ -514,14 +520,14 @@ static int action_bind_sublabel_subsystem_add(
|
||||
char *s, size_t len)
|
||||
{
|
||||
rarch_system_info_t *system = runloop_get_system_info();
|
||||
const struct retro_subsystem_info *subsystem = (system && system->subsystem.data) ?
|
||||
system->subsystem.data + (type - MENU_SETTINGS_SUBSYSTEM_ADD) : NULL;
|
||||
const struct retro_subsystem_info *subsystem = (system && subsystem_size > 0) ?
|
||||
subsystem_data + (type - MENU_SETTINGS_SUBSYSTEM_ADD) : NULL;
|
||||
|
||||
if (subsystem && content_get_subsystem_rom_id() < subsystem->num_roms)
|
||||
if (subsystem_size > 0 && content_get_subsystem_rom_id() < subsystem->num_roms)
|
||||
snprintf(s, len, " Current Content: %s",
|
||||
content_get_subsystem() == type - MENU_SETTINGS_SUBSYSTEM_ADD
|
||||
? subsystem->roms[content_get_subsystem_rom_id()].desc
|
||||
: subsystem->roms[0].desc);
|
||||
content_get_subsystem() == type - MENU_SETTINGS_SUBSYSTEM_ADD
|
||||
? subsystem->roms[content_get_subsystem_rom_id()].desc
|
||||
: subsystem->roms[0].desc);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -540,8 +546,8 @@ static int action_bind_sublabel_remap_kbd_sublabel(
|
||||
input_config_get_device_display_name(user_idx) ?
|
||||
input_config_get_device_display_name(user_idx) :
|
||||
(input_config_get_device_name(user_idx) ?
|
||||
input_config_get_device_name(user_idx) :
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE)));
|
||||
input_config_get_device_name(user_idx) :
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE)));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1872,6 +1878,12 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_FPS_SHOW:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_fps_show);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_FRAMECOUNT_SHOW:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_framecount_show);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_MEMORY_SHOW:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_memory_show);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_MENU_VIEWS_SETTINGS:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_views_settings_list);
|
||||
break;
|
||||
@ -2027,10 +2039,12 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_show_wimp);
|
||||
break;
|
||||
#endif
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
case MENU_ENUM_LABEL_SWITCH_CPU_PROFILE:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_switch_cpu_profile);
|
||||
break;
|
||||
#endif
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
case MENU_ENUM_LABEL_SWITCH_GPU_PROFILE:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_switch_gpu_profile);
|
||||
break;
|
||||
|
@ -210,9 +210,12 @@ default_title_copy_macro(action_get_title_cheevos_list, MENU_ENUM_LABE
|
||||
default_title_copy_macro(action_get_title_video_shader_parameters,MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PARAMETERS)
|
||||
default_title_copy_macro(action_get_title_video_shader_preset_parameters,MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_PARAMETERS)
|
||||
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
default_title_macro(action_get_title_switch_cpu_profile, MENU_ENUM_LABEL_VALUE_SWITCH_CPU_PROFILE)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
default_title_macro(action_get_title_switch_gpu_profile, MENU_ENUM_LABEL_VALUE_SWITCH_GPU_PROFILE)
|
||||
default_title_macro(action_get_title_switch_cpu_profile, MENU_ENUM_LABEL_VALUE_SWITCH_CPU_PROFILE)
|
||||
default_title_macro(action_get_title_switch_backlight_control, MENU_ENUM_LABEL_VALUE_SWITCH_BACKLIGHT_CONTROL)
|
||||
#endif
|
||||
|
||||
@ -879,13 +882,15 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_LIBRETRO_INFO_PATH:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_core_info_directory);
|
||||
break;
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
case MENU_ENUM_LABEL_SWITCH_CPU_PROFILE:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_switch_cpu_profile);
|
||||
break;
|
||||
#endif
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
case MENU_ENUM_LABEL_SWITCH_GPU_PROFILE:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_switch_gpu_profile);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_SWITCH_CPU_PROFILE:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_switch_cpu_profile);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_SWITCH_BACKLIGHT_CONTROL:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_switch_backlight_control);
|
||||
break;
|
||||
@ -1176,13 +1181,15 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
|
||||
case MENU_LABEL_LIBRETRO_INFO_PATH:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_core_info_directory);
|
||||
break;
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
case MENU_ENUM_LABEL_SWITCH_CPU_PROFILE:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_switch_cpu_profile);
|
||||
break;
|
||||
#endif
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
case MENU_ENUM_LABEL_SWITCH_GPU_PROFILE:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_switch_gpu_profile);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_SWITCH_CPU_PROFILE:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_switch_cpu_profile);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_SWITCH_BACKLIGHT_CONTROL:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_switch_backlight_control);
|
||||
break;
|
||||
|
@ -45,6 +45,7 @@
|
||||
#include "../../../core.h"
|
||||
#include "../../../verbosity.h"
|
||||
#include "../../../tasks/tasks_internal.h"
|
||||
#include "../../../dynamic.h"
|
||||
|
||||
ozone_node_t *ozone_alloc_node()
|
||||
{
|
||||
@ -108,7 +109,7 @@ void ozone_free_list_nodes(file_list_t *list, bool actiondata)
|
||||
}
|
||||
}
|
||||
|
||||
static void *ozone_init(void **userdata, bool video_is_threaded)
|
||||
static void *ozone_init(void **userdata, bool video_is_threaded)
|
||||
{
|
||||
bool fallback_color_theme = false;
|
||||
unsigned width, height, color_theme = 0;
|
||||
@ -183,7 +184,7 @@ static void *ozone_init(void **userdata, bool video_is_threaded)
|
||||
if (settings->bools.menu_use_preferred_system_color_theme)
|
||||
{
|
||||
#ifdef HAVE_LIBNX
|
||||
if (R_SUCCEEDED(setsysInitialize()))
|
||||
if (R_SUCCEEDED(setsysInitialize()))
|
||||
{
|
||||
ColorSetId theme;
|
||||
setsysGetColorSetId(&theme);
|
||||
@ -205,7 +206,7 @@ static void *ozone_init(void **userdata, bool video_is_threaded)
|
||||
color_theme = settings->uints.menu_ozone_color_theme;
|
||||
ozone_set_color_theme(ozone, color_theme);
|
||||
}
|
||||
|
||||
|
||||
ozone->need_compute = false;
|
||||
ozone->animations.scroll_y = 0.0f;
|
||||
ozone->animations.scroll_y_sidebar = 0.0f;
|
||||
@ -351,7 +352,10 @@ static void ozone_context_reset(void *data, bool is_threaded)
|
||||
strlcat(filename, ".png", sizeof(filename));
|
||||
|
||||
if (!menu_display_reset_textures_list(filename, ozone->png_path, &ozone->textures[i], TEXTURE_FILTER_MIPMAP_LINEAR))
|
||||
{
|
||||
ozone->has_all_assets = false;
|
||||
RARCH_WARN("[OZONE] Asset missing: %s%s%s\n", ozone->png_path, path_default_slash(), filename);
|
||||
}
|
||||
}
|
||||
|
||||
/* Sidebar textures */
|
||||
@ -362,7 +366,10 @@ static void ozone_context_reset(void *data, bool is_threaded)
|
||||
strlcat(filename, ".png", sizeof(filename));
|
||||
|
||||
if (!menu_display_reset_textures_list(filename, ozone->tab_path, &ozone->tab_textures[i], TEXTURE_FILTER_MIPMAP_LINEAR))
|
||||
{
|
||||
ozone->has_all_assets = false;
|
||||
RARCH_WARN("[OZONE] Asset missing: %s%s%s\n", ozone->tab_path, path_default_slash(), filename);
|
||||
}
|
||||
}
|
||||
|
||||
/* Theme textures */
|
||||
@ -371,8 +378,11 @@ static void ozone_context_reset(void *data, bool is_threaded)
|
||||
|
||||
/* Icons textures init */
|
||||
for (i = 0; i < OZONE_ENTRIES_ICONS_TEXTURE_LAST; i++)
|
||||
if (!menu_display_reset_textures_list(ozone_entries_icon_texture_path(ozone, i), ozone->icons_path, &ozone->icons_textures[i], TEXTURE_FILTER_MIPMAP_LINEAR))
|
||||
if (!menu_display_reset_textures_list(ozone_entries_icon_texture_path(i), ozone->icons_path, &ozone->icons_textures[i], TEXTURE_FILTER_MIPMAP_LINEAR))
|
||||
{
|
||||
ozone->has_all_assets = false;
|
||||
RARCH_WARN("[OZONE] Asset missing: %s%s%s\n", ozone->icons_path, path_default_slash(), ozone_entries_icon_texture_path(i));
|
||||
}
|
||||
|
||||
menu_display_allocate_white_texture();
|
||||
|
||||
@ -427,7 +437,7 @@ static void ozone_context_destroy(void *data)
|
||||
/* Textures */
|
||||
for (i = 0; i < OZONE_TEXTURE_LAST; i++)
|
||||
video_driver_texture_unload(&ozone->textures[i]);
|
||||
|
||||
|
||||
/* Icons */
|
||||
for (i = 0; i < OZONE_TAB_TEXTURE_LAST; i++)
|
||||
video_driver_texture_unload(&ozone->tab_textures[i]);
|
||||
@ -583,16 +593,13 @@ static int ozone_list_push(void *data, void *userdata,
|
||||
|
||||
if (settings->bools.menu_show_load_content)
|
||||
{
|
||||
const struct retro_subsystem_info* subsystem = NULL;
|
||||
|
||||
entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_LIST;
|
||||
menu_displaylist_setting(&entry);
|
||||
|
||||
subsystem = system->subsystem.data;
|
||||
|
||||
if (subsystem)
|
||||
if (subsystem_size > 0)
|
||||
{
|
||||
for (i = 0; i < (unsigned)system->subsystem.size; i++, subsystem++)
|
||||
const struct retro_subsystem_info* subsystem = subsystem_data;
|
||||
for (i = 0; i < subsystem_size; i++, subsystem++)
|
||||
{
|
||||
char s[PATH_MAX_LENGTH];
|
||||
if (content_get_subsystem() == i)
|
||||
@ -675,10 +682,12 @@ static int ozone_list_push(void *data, void *userdata,
|
||||
menu_displaylist_setting(&entry);
|
||||
}
|
||||
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
entry.enum_idx = MENU_ENUM_LABEL_SWITCH_CPU_PROFILE;
|
||||
menu_displaylist_setting(&entry);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
entry.enum_idx = MENU_ENUM_LABEL_SWITCH_GPU_PROFILE;
|
||||
menu_displaylist_setting(&entry);
|
||||
|
||||
@ -774,15 +783,14 @@ static void ozone_update_scroll(ozone_handle_t *ozone, bool allow_animation, ozo
|
||||
bottom_boundary = video_info_height - 87 - 78;
|
||||
entries_middle = video_info_height/2;
|
||||
|
||||
if (current_selection_middle_onscreen != entries_middle)
|
||||
new_scroll = ozone->animations.scroll_y - (current_selection_middle_onscreen - entries_middle);
|
||||
|
||||
new_scroll = ozone->animations.scroll_y - (current_selection_middle_onscreen - entries_middle);
|
||||
|
||||
if (new_scroll + ozone->entries_height < bottom_boundary)
|
||||
new_scroll = -(78 + ozone->entries_height - bottom_boundary);
|
||||
|
||||
if (new_scroll > 0)
|
||||
new_scroll = 0;
|
||||
|
||||
|
||||
if (allow_animation)
|
||||
{
|
||||
/* Cursor animation */
|
||||
@ -848,7 +856,7 @@ static void ozone_compute_entries_position(ozone_handle_t *ozone)
|
||||
/* Entry */
|
||||
menu_entry_t entry;
|
||||
ozone_node_t *node = NULL;
|
||||
|
||||
|
||||
menu_entry_init(&entry);
|
||||
menu_entry_get(&entry, 0, (unsigned)i, NULL, true);
|
||||
|
||||
@ -911,7 +919,7 @@ static void ozone_render(void *data, bool is_idle)
|
||||
ozone_handle_t *ozone = (ozone_handle_t*)data;
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
|
||||
if (ozone->need_compute)
|
||||
{
|
||||
ozone_compute_entries_position(ozone);
|
||||
@ -1066,12 +1074,12 @@ static void ozone_draw_footer(ozone_handle_t *ozone, video_frame_info_t *video_i
|
||||
menu_display_blend_end(video_info);
|
||||
|
||||
ozone_draw_text(video_info, ozone,
|
||||
do_swap ?
|
||||
do_swap ?
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK) :
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK),
|
||||
video_info->width - back_width, video_info->height - back_height + FONT_SIZE_FOOTER, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba, false);
|
||||
ozone_draw_text(video_info, ozone,
|
||||
do_swap ?
|
||||
do_swap ?
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK) :
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK),
|
||||
video_info->width - ok_width, video_info->height - ok_height + FONT_SIZE_FOOTER, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba, false);
|
||||
@ -1200,9 +1208,9 @@ static void ozone_frame(void *data, video_frame_info_t *video_info)
|
||||
ozone->raster_blocks.sidebar.carr.coords.vertices = 0;
|
||||
|
||||
/* Background */
|
||||
menu_display_draw_quad(video_info,
|
||||
0, 0, video_info->width, video_info->height,
|
||||
video_info->width, video_info->height,
|
||||
menu_display_draw_quad(video_info,
|
||||
0, 0, video_info->width, video_info->height,
|
||||
video_info->width, video_info->height,
|
||||
!video_info->libretro_running ? ozone->theme->background : ozone->theme->background_libretro_running
|
||||
);
|
||||
|
||||
@ -1226,7 +1234,7 @@ static void ozone_frame(void *data, video_frame_info_t *video_info)
|
||||
ozone->animations.scroll_y,
|
||||
ozone->is_playlist
|
||||
);
|
||||
|
||||
|
||||
/* Old list */
|
||||
if (ozone->draw_old_list)
|
||||
ozone_draw_entries(ozone,
|
||||
@ -1436,7 +1444,7 @@ static int ozone_menu_iterate(menu_handle_t *menu, void *userdata, enum menu_act
|
||||
|
||||
if (!ozone)
|
||||
return generic_menu_iterate(menu, userdata, action);
|
||||
|
||||
|
||||
selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
tag = (uintptr_t)selection_buf;
|
||||
new_action = action;
|
||||
@ -1466,7 +1474,7 @@ static int ozone_menu_iterate(menu_handle_t *menu, void *userdata, enum menu_act
|
||||
tag = (uintptr_t)ozone;
|
||||
|
||||
new_selection = ozone->categories_selection_ptr - 1;
|
||||
|
||||
|
||||
if (new_selection < 0)
|
||||
new_selection = horizontal_list_size + ozone->system_tab_end;
|
||||
|
||||
@ -1706,7 +1714,7 @@ static void ozone_list_cache(void *data,
|
||||
bottom_boundary = video_info_height - 87 - 78;
|
||||
|
||||
for (i = 0; i < entries_end; i++)
|
||||
{
|
||||
{
|
||||
ozone_node_t *node = (ozone_node_t*) file_list_get_userdata_at_offset(selection_buf, i);
|
||||
|
||||
if (!node)
|
||||
|
@ -211,7 +211,10 @@ menu_texture_item ozone_entries_icon_get_texture(ozone_handle_t *ozone,
|
||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_UI];
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
case MENU_ENUM_LABEL_SWITCH_GPU_PROFILE:
|
||||
#endif
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
case MENU_ENUM_LABEL_SWITCH_CPU_PROFILE:
|
||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_POWER];
|
||||
#endif
|
||||
case MENU_ENUM_LABEL_POWER_MANAGEMENT_SETTINGS:
|
||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_POWER];
|
||||
@ -274,6 +277,10 @@ menu_texture_item ozone_entries_icon_get_texture(ozone_handle_t *ozone,
|
||||
case MENU_ENUM_LABEL_CHEAT_ADD_NEW_TOP:
|
||||
case MENU_ENUM_LABEL_CHEAT_ADD_NEW_BOTTOM:
|
||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_MENU_ADD];
|
||||
case MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_TOGGLE:
|
||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_MENU_APPLY_TOGGLE];
|
||||
case MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_LOAD:
|
||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_MENU_APPLY_COG];
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -307,6 +314,7 @@ menu_texture_item ozone_entries_icon_get_texture(ozone_handle_t *ozone,
|
||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CURSOR];
|
||||
case FILE_TYPE_PLAYLIST_ENTRY:
|
||||
case MENU_SETTING_ACTION_RUN:
|
||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_RUN];
|
||||
case MENU_SETTING_ACTION_RESUME_ACHIEVEMENTS:
|
||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_RESUME];
|
||||
case MENU_SETTING_ACTION_CLOSE:
|
||||
@ -448,351 +456,234 @@ menu_texture_item ozone_entries_icon_get_texture(ozone_handle_t *ozone,
|
||||
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_SUBSETTING];
|
||||
}
|
||||
|
||||
const char *ozone_entries_icon_texture_path(ozone_handle_t *ozone, unsigned id)
|
||||
const char *ozone_entries_icon_texture_path(unsigned id)
|
||||
{
|
||||
char icon_fullpath[255];
|
||||
char *icon_name = NULL;
|
||||
|
||||
switch (id)
|
||||
{
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_MAIN_MENU:
|
||||
#if defined(HAVE_LAKKA)
|
||||
icon_name = "lakka.png";
|
||||
break;
|
||||
return "lakka.png";
|
||||
#else
|
||||
icon_name = "retroarch.png";
|
||||
break;
|
||||
return "retroarch.png";
|
||||
#endif
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_SETTINGS:
|
||||
icon_name = "settings.png";
|
||||
break;
|
||||
return "settings.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_HISTORY:
|
||||
icon_name = "history.png";
|
||||
break;
|
||||
return "history.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_FAVORITES:
|
||||
icon_name = "favorites.png";
|
||||
break;
|
||||
return "favorites.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_ADD_FAVORITE:
|
||||
icon_name = "add-favorite.png";
|
||||
break;
|
||||
return "add-favorite.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_MUSICS:
|
||||
icon_name = "musics.png";
|
||||
break;
|
||||
return "musics.png";
|
||||
#if defined(HAVE_FFMPEG) || defined(HAVE_MPV)
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_MOVIES:
|
||||
icon_name = "movies.png";
|
||||
break;
|
||||
return "movies.png";
|
||||
#endif
|
||||
#ifdef HAVE_IMAGEVIEWER
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_IMAGES:
|
||||
icon_name = "images.png";
|
||||
break;
|
||||
return "images.png";
|
||||
#endif
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_SETTING:
|
||||
icon_name = "setting.png";
|
||||
break;
|
||||
return "setting.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_SUBSETTING:
|
||||
icon_name = "subsetting.png";
|
||||
break;
|
||||
return "subsetting.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_ARROW:
|
||||
icon_name = "arrow.png";
|
||||
break;
|
||||
return "arrow.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_RUN:
|
||||
icon_name = "run.png";
|
||||
break;
|
||||
return "run.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_CLOSE:
|
||||
icon_name = "close.png";
|
||||
break;
|
||||
return "close.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_RESUME:
|
||||
icon_name = "resume.png";
|
||||
break;
|
||||
return "resume.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_CLOCK:
|
||||
icon_name = "clock.png";
|
||||
break;
|
||||
return "clock.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_BATTERY_FULL:
|
||||
icon_name = "battery-full.png";
|
||||
break;
|
||||
return "battery-full.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_BATTERY_CHARGING:
|
||||
icon_name = "battery-charging.png";
|
||||
break;
|
||||
return "battery-charging.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_POINTER:
|
||||
icon_name = "pointer.png";
|
||||
break;
|
||||
return "pointer.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_SAVESTATE:
|
||||
icon_name = "savestate.png";
|
||||
break;
|
||||
return "savestate.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_LOADSTATE:
|
||||
icon_name = "loadstate.png";
|
||||
break;
|
||||
return "loadstate.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_UNDO:
|
||||
icon_name = "undo.png";
|
||||
break;
|
||||
return "undo.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_CORE_INFO:
|
||||
icon_name = "core-infos.png";
|
||||
break;
|
||||
return "core-infos.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_WIFI:
|
||||
icon_name = "wifi.png";
|
||||
break;
|
||||
return "wifi.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_CORE_OPTIONS:
|
||||
icon_name = "core-options.png";
|
||||
break;
|
||||
return "core-options.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_REMAPPING_OPTIONS:
|
||||
icon_name = "core-input-remapping-options.png";
|
||||
break;
|
||||
return "core-input-remapping-options.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_CHEAT_OPTIONS:
|
||||
icon_name = "core-cheat-options.png";
|
||||
break;
|
||||
return "core-cheat-options.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_DISK_OPTIONS:
|
||||
icon_name = "core-disk-options.png";
|
||||
break;
|
||||
return "core-disk-options.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_SHADER_OPTIONS:
|
||||
icon_name = "core-shader-options.png";
|
||||
break;
|
||||
return "core-shader-options.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_ACHIEVEMENT_LIST:
|
||||
icon_name = "achievement-list.png";
|
||||
break;
|
||||
return "achievement-list.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_SCREENSHOT:
|
||||
icon_name = "screenshot.png";
|
||||
break;
|
||||
return "screenshot.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_RELOAD:
|
||||
icon_name = "reload.png";
|
||||
break;
|
||||
return "reload.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_RENAME:
|
||||
icon_name = "rename.png";
|
||||
break;
|
||||
return "rename.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_FILE:
|
||||
icon_name = "file.png";
|
||||
break;
|
||||
return "file.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_FOLDER:
|
||||
icon_name = "folder.png";
|
||||
break;
|
||||
return "folder.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_ZIP:
|
||||
icon_name = "zip.png";
|
||||
break;
|
||||
return "zip.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_MUSIC:
|
||||
icon_name = "music.png";
|
||||
break;
|
||||
return "music.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_FAVORITE:
|
||||
icon_name = "favorites-content.png";
|
||||
break;
|
||||
return "favorites-content.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_IMAGE:
|
||||
icon_name = "image.png";
|
||||
break;
|
||||
return "image.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_MOVIE:
|
||||
icon_name = "movie.png";
|
||||
break;
|
||||
return "movie.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_CORE:
|
||||
icon_name = "core.png";
|
||||
break;
|
||||
return "core.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_RDB:
|
||||
icon_name = "database.png";
|
||||
break;
|
||||
return "database.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_CURSOR:
|
||||
icon_name = "cursor.png";
|
||||
break;
|
||||
return "cursor.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_SWITCH_ON:
|
||||
icon_name = "on.png";
|
||||
break;
|
||||
return "on.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_SWITCH_OFF:
|
||||
icon_name = "off.png";
|
||||
break;
|
||||
return "off.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_ADD:
|
||||
icon_name = "add.png";
|
||||
break;
|
||||
return "add.png";
|
||||
#ifdef HAVE_NETWORKING
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_NETPLAY:
|
||||
icon_name = "netplay.png";
|
||||
break;
|
||||
return "netplay.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_ROOM:
|
||||
icon_name = "menu_room.png";
|
||||
break;
|
||||
return "menu_room.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_ROOM_LAN:
|
||||
icon_name = "menu_room_lan.png";
|
||||
break;
|
||||
return "menu_room_lan.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_ROOM_RELAY:
|
||||
icon_name = "menu_room_relay.png";
|
||||
break;
|
||||
return "menu_room_relay.png";
|
||||
#endif
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_KEY:
|
||||
icon_name = "key.png";
|
||||
break;
|
||||
return "key.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_KEY_HOVER:
|
||||
icon_name = "key-hover.png";
|
||||
break;
|
||||
return "key-hover.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_DIALOG_SLICE:
|
||||
icon_name = "dialog-slice.png";
|
||||
break;
|
||||
return "dialog-slice.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_ACHIEVEMENTS:
|
||||
icon_name = "menu_achievements.png";
|
||||
break;
|
||||
return "menu_achievements.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_AUDIO:
|
||||
icon_name = "menu_audio.png";
|
||||
break;
|
||||
return "menu_audio.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_DRIVERS:
|
||||
icon_name = "menu_drivers.png";
|
||||
break;
|
||||
return "menu_drivers.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_EXIT:
|
||||
icon_name = "menu_exit.png";
|
||||
break;
|
||||
return "menu_exit.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_FRAMESKIP:
|
||||
icon_name = "menu_frameskip.png";
|
||||
break;
|
||||
return "menu_frameskip.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_HELP:
|
||||
icon_name = "menu_help.png";
|
||||
break;
|
||||
return "menu_help.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INFO:
|
||||
icon_name = "menu_info.png";
|
||||
break;
|
||||
return "menu_info.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_SETTINGS:
|
||||
icon_name = "Libretro - Pad.png";
|
||||
break;
|
||||
return "Libretro - Pad.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_LATENCY:
|
||||
icon_name = "menu_latency.png";
|
||||
break;
|
||||
return "menu_latency.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_NETWORK:
|
||||
icon_name = "menu_network.png";
|
||||
break;
|
||||
return "menu_network.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_POWER:
|
||||
icon_name = "menu_power.png";
|
||||
break;
|
||||
return "menu_power.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_RECORD:
|
||||
icon_name = "menu_record.png";
|
||||
break;
|
||||
return "menu_record.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_SAVING:
|
||||
icon_name = "menu_saving.png";
|
||||
break;
|
||||
return "menu_saving.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_UPDATER:
|
||||
icon_name = "menu_updater.png";
|
||||
break;
|
||||
return "menu_updater.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_VIDEO:
|
||||
icon_name = "menu_video.png";
|
||||
break;
|
||||
return "menu_video.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_MIXER:
|
||||
icon_name = "menu_mixer.png";
|
||||
break;
|
||||
return "menu_mixer.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_LOG:
|
||||
icon_name = "menu_log.png";
|
||||
break;
|
||||
return "menu_log.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_OSD:
|
||||
icon_name = "menu_osd.png";
|
||||
break;
|
||||
return "menu_osd.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_UI:
|
||||
icon_name = "menu_ui.png";
|
||||
break;
|
||||
return "menu_ui.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_USER:
|
||||
icon_name = "menu_user.png";
|
||||
break;
|
||||
return "menu_user.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_PRIVACY:
|
||||
icon_name = "menu_privacy.png";
|
||||
break;
|
||||
return "menu_privacy.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_PLAYLIST:
|
||||
icon_name = "menu_playlist.png";
|
||||
break;
|
||||
return "menu_playlist.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_QUICKMENU:
|
||||
icon_name = "menu_quickmenu.png";
|
||||
break;
|
||||
return "menu_quickmenu.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_REWIND:
|
||||
icon_name = "menu_rewind.png";
|
||||
break;
|
||||
return "menu_rewind.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_OVERLAY:
|
||||
icon_name = "menu_overlay.png";
|
||||
break;
|
||||
return "menu_overlay.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_OVERRIDE:
|
||||
icon_name = "menu_override.png";
|
||||
break;
|
||||
return "menu_override.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_NOTIFICATIONS:
|
||||
icon_name = "menu_notifications.png";
|
||||
break;
|
||||
return "menu_notifications.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_STREAM:
|
||||
icon_name = "menu_stream.png";
|
||||
break;
|
||||
return "menu_stream.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_SHUTDOWN:
|
||||
icon_name = "menu_shutdown.png";
|
||||
break;
|
||||
return "menu_shutdown.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_DPAD_U:
|
||||
icon_name = "input_DPAD-U.png";
|
||||
break;
|
||||
return "input_DPAD-U.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_DPAD_D:
|
||||
icon_name = "input_DPAD-D.png";
|
||||
break;
|
||||
return "input_DPAD-D.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_DPAD_L:
|
||||
icon_name = "input_DPAD-L.png";
|
||||
break;
|
||||
return "input_DPAD-L.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_DPAD_R:
|
||||
icon_name = "input_DPAD-R.png";
|
||||
break;
|
||||
return "input_DPAD-R.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_STCK_U:
|
||||
icon_name = "input_STCK-U.png";
|
||||
break;
|
||||
return "input_STCK-U.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_STCK_D:
|
||||
icon_name = "input_STCK-D.png";
|
||||
break;
|
||||
return "input_STCK-D.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_STCK_L:
|
||||
icon_name = "input_STCK-L.png";
|
||||
break;
|
||||
return "input_STCK-L.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_STCK_R:
|
||||
icon_name = "input_STCK-R.png";
|
||||
break;
|
||||
return "input_STCK-R.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_STCK_P:
|
||||
icon_name = "input_STCK-P.png";
|
||||
break;
|
||||
return "input_STCK-P.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_BTN_U:
|
||||
icon_name = "input_BTN-U.png";
|
||||
break;
|
||||
return "input_BTN-U.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_BTN_D:
|
||||
icon_name = "input_BTN-D.png";
|
||||
break;
|
||||
return "input_BTN-D.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_BTN_L:
|
||||
icon_name = "input_BTN-L.png";
|
||||
break;
|
||||
return "input_BTN-L.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_BTN_R:
|
||||
icon_name = "input_BTN-R.png";
|
||||
break;
|
||||
return "input_BTN-R.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_LB:
|
||||
icon_name = "input_LB.png";
|
||||
break;
|
||||
return "input_LB.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_RB:
|
||||
icon_name = "input_RB.png";
|
||||
break;
|
||||
return "input_RB.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_LT:
|
||||
icon_name = "input_LT.png";
|
||||
break;
|
||||
return "input_LT.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_RT:
|
||||
icon_name = "input_RT.png";
|
||||
break;
|
||||
return "input_RT.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_SELECT:
|
||||
icon_name = "input_SELECT.png";
|
||||
break;
|
||||
return "input_SELECT.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_START:
|
||||
icon_name = "input_START.png";
|
||||
break;
|
||||
return "input_START.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_CHECKMARK:
|
||||
icon_name = "menu_check.png";
|
||||
break;
|
||||
return "menu_check.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_MENU_ADD:
|
||||
icon_name = "menu_add.png";
|
||||
break;
|
||||
return "menu_add.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_BRIGHTNESS:
|
||||
icon_name = "menu_brightnes.png";
|
||||
break;
|
||||
return "menu_brightness.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_PAUSE:
|
||||
icon_name = "menu_pause.png";
|
||||
break;
|
||||
return "menu_pause.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_MENU_APPLY_TOGGLE:
|
||||
return "menu_apply_toggle.png";
|
||||
case OZONE_ENTRIES_ICONS_TEXTURE_MENU_APPLY_COG:
|
||||
return "menu_apply_cog.png";
|
||||
}
|
||||
|
||||
fill_pathname_join(
|
||||
icon_fullpath,
|
||||
ozone->icons_path,
|
||||
icon_name,
|
||||
sizeof(icon_fullpath)
|
||||
);
|
||||
|
||||
if (!filestream_exists(icon_fullpath))
|
||||
{
|
||||
return "subsetting.png";
|
||||
}
|
||||
else
|
||||
return icon_name;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void ozone_unload_theme_textures(ozone_handle_t *ozone)
|
||||
@ -838,4 +729,4 @@ bool ozone_reset_theme_textures(ozone_handle_t *ozone)
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
@ -196,10 +196,12 @@ enum
|
||||
OZONE_ENTRIES_ICONS_TEXTURE_MENU_ADD,
|
||||
OZONE_ENTRIES_ICONS_TEXTURE_BRIGHTNESS,
|
||||
OZONE_ENTRIES_ICONS_TEXTURE_PAUSE,
|
||||
OZONE_ENTRIES_ICONS_TEXTURE_MENU_APPLY_TOGGLE,
|
||||
OZONE_ENTRIES_ICONS_TEXTURE_MENU_APPLY_COG,
|
||||
OZONE_ENTRIES_ICONS_TEXTURE_LAST
|
||||
};
|
||||
|
||||
const char *ozone_entries_icon_texture_path(ozone_handle_t *ozone, unsigned id);
|
||||
const char *ozone_entries_icon_texture_path(unsigned id);
|
||||
|
||||
menu_texture_item ozone_entries_icon_get_texture(ozone_handle_t *ozone,
|
||||
enum msg_hash_enums enum_idx, unsigned type, bool active);
|
||||
@ -207,4 +209,4 @@ menu_texture_item ozone_entries_icon_get_texture(ozone_handle_t *ozone,
|
||||
bool ozone_reset_theme_textures(ozone_handle_t *ozone);
|
||||
void ozone_unload_theme_textures(ozone_handle_t *ozone);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
@ -55,6 +55,7 @@
|
||||
#include "../widgets/menu_filebrowser.h"
|
||||
|
||||
#include "../../verbosity.h"
|
||||
#include "../../dynamic.h"
|
||||
#include "../../configuration.h"
|
||||
#include "../../playlist.h"
|
||||
#include "../../retroarch.h"
|
||||
@ -204,6 +205,10 @@ enum
|
||||
XMB_TEXTURE_MENU_ADD,
|
||||
XMB_TEXTURE_BRIGHTNESS,
|
||||
XMB_TEXTURE_PAUSE,
|
||||
XMB_TEXTURE_DEFAULT,
|
||||
XMB_TEXTURE_DEFAULT_CONTENT,
|
||||
XMB_TEXTURE_MENU_APPLY_TOGGLE,
|
||||
XMB_TEXTURE_MENU_APPLY_COG,
|
||||
XMB_TEXTURE_LAST
|
||||
};
|
||||
|
||||
@ -233,6 +238,7 @@ typedef struct xmb_handle
|
||||
{
|
||||
bool mouse_show;
|
||||
bool use_ps3_layout;
|
||||
bool assets_missing;
|
||||
|
||||
uint8_t system_tab_end;
|
||||
uint8_t tabs[XMB_SYSTEM_TAB_MAX_LENGTH];
|
||||
@ -2449,7 +2455,10 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
|
||||
return xmb->textures.list[XMB_TEXTURE_UI];
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
case MENU_ENUM_LABEL_SWITCH_GPU_PROFILE:
|
||||
#endif
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
case MENU_ENUM_LABEL_SWITCH_CPU_PROFILE:
|
||||
return xmb->textures.list[XMB_TEXTURE_POWER];
|
||||
#endif
|
||||
case MENU_ENUM_LABEL_POWER_MANAGEMENT_SETTINGS:
|
||||
return xmb->textures.list[XMB_TEXTURE_POWER];
|
||||
@ -2511,6 +2520,10 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
|
||||
case MENU_ENUM_LABEL_CHEAT_ADD_NEW_TOP:
|
||||
case MENU_ENUM_LABEL_CHEAT_ADD_NEW_BOTTOM:
|
||||
return xmb->textures.list[XMB_TEXTURE_MENU_ADD];
|
||||
case MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_TOGGLE:
|
||||
return xmb->textures.list[XMB_TEXTURE_MENU_APPLY_TOGGLE];
|
||||
case MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_LOAD:
|
||||
return xmb->textures.list[XMB_TEXTURE_MENU_APPLY_COG];
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -2570,6 +2583,7 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
|
||||
return xmb->textures.list[XMB_TEXTURE_CURSOR];
|
||||
case FILE_TYPE_PLAYLIST_ENTRY:
|
||||
case MENU_SETTING_ACTION_RUN:
|
||||
return xmb->textures.list[XMB_TEXTURE_RUN];
|
||||
case MENU_SETTING_ACTION_RESUME_ACHIEVEMENTS:
|
||||
return xmb->textures.list[XMB_TEXTURE_RESUME];
|
||||
case MENU_SETTING_ACTION_CLOSE:
|
||||
@ -2953,7 +2967,14 @@ static int xmb_draw_item(
|
||||
|
||||
menu_display_set_alpha(color, MIN(node->alpha, xmb->alpha));
|
||||
|
||||
if (color[3] != 0)
|
||||
if (
|
||||
(!xmb->assets_missing) &&
|
||||
(color[3] != 0) &&
|
||||
(
|
||||
(entry->checked) ||
|
||||
!((entry_type >= MENU_SETTING_DROPDOWN_ITEM) && (entry_type <= MENU_SETTING_DROPDOWN_SETTING_UINT_ITEM_SPECIAL))
|
||||
)
|
||||
)
|
||||
{
|
||||
math_matrix_4x4 mymat_tmp;
|
||||
menu_display_ctx_rotate_draw_t rotate_draw;
|
||||
@ -2974,31 +2995,24 @@ static int xmb_draw_item(
|
||||
menu_display_rotate_z(&rotate_draw, video_info);
|
||||
|
||||
|
||||
if (
|
||||
(entry->checked) ||
|
||||
!((entry_type >= MENU_SETTING_DROPDOWN_ITEM) &&
|
||||
(entry_type <= MENU_SETTING_DROPDOWN_SETTING_UINT_ITEM_SPECIAL))
|
||||
)
|
||||
{
|
||||
xmb_draw_icon(video_info,
|
||||
xmb->icon_size,
|
||||
&mymat_tmp,
|
||||
texture,
|
||||
x,
|
||||
y,
|
||||
width,
|
||||
height,
|
||||
1.0,
|
||||
rotation,
|
||||
scale_factor,
|
||||
&color[0],
|
||||
xmb->shadow_offset);
|
||||
}
|
||||
xmb_draw_icon(video_info,
|
||||
xmb->icon_size,
|
||||
&mymat_tmp,
|
||||
texture,
|
||||
x,
|
||||
y,
|
||||
width,
|
||||
height,
|
||||
1.0,
|
||||
rotation,
|
||||
scale_factor,
|
||||
&color[0],
|
||||
xmb->shadow_offset);
|
||||
}
|
||||
|
||||
menu_display_set_alpha(color, MIN(node->alpha, xmb->alpha));
|
||||
|
||||
if (texture_switch != 0 && color[3] != 0)
|
||||
if (texture_switch != 0 && color[3] != 0 && !xmb->assets_missing)
|
||||
xmb_draw_icon(video_info,
|
||||
xmb->icon_size,
|
||||
mymat,
|
||||
@ -3751,7 +3765,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
||||
size_t x_pos = xmb->icon_size / 6;
|
||||
size_t x_pos_icon = xmb->margins_title_left;
|
||||
|
||||
if (coord_white[3] != 0)
|
||||
if (coord_white[3] != 0 && !xmb->assets_missing)
|
||||
xmb_draw_icon(video_info,
|
||||
xmb->icon_size,
|
||||
&mymat,
|
||||
@ -3780,7 +3794,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
||||
}
|
||||
}
|
||||
|
||||
if (video_info->timedate_enable)
|
||||
if (video_info->timedate_enable && !xmb->assets_missing)
|
||||
{
|
||||
menu_display_ctx_datetime_t datetime;
|
||||
char timedate[255];
|
||||
@ -3829,7 +3843,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
||||
menu_display_set_alpha(coord_white,
|
||||
MIN(xmb->textures_arrow_alpha, xmb->alpha));
|
||||
|
||||
if (coord_white[3] != 0)
|
||||
if (coord_white[3] != 0 && !xmb->assets_missing)
|
||||
xmb_draw_icon(video_info,
|
||||
xmb->icon_size,
|
||||
&mymat,
|
||||
@ -3851,52 +3865,55 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
||||
menu_display_blend_begin(video_info);
|
||||
|
||||
/* Horizontal tab icons */
|
||||
for (i = 0; i <= xmb_list_get_size(xmb, MENU_LIST_HORIZONTAL)
|
||||
+ xmb->system_tab_end; i++)
|
||||
if (!xmb->assets_missing)
|
||||
{
|
||||
xmb_node_t *node = xmb_get_node(xmb, i);
|
||||
|
||||
if (!node)
|
||||
continue;
|
||||
|
||||
menu_display_set_alpha(item_color, MIN(node->alpha, xmb->alpha));
|
||||
|
||||
if (item_color[3] != 0)
|
||||
for (i = 0; i <= xmb_list_get_size(xmb, MENU_LIST_HORIZONTAL)
|
||||
+ xmb->system_tab_end; i++)
|
||||
{
|
||||
menu_display_ctx_rotate_draw_t rotate_draw;
|
||||
math_matrix_4x4 mymat;
|
||||
uintptr_t texture = node->icon;
|
||||
float x = xmb->x + xmb->categories_x_pos +
|
||||
xmb->margins_screen_left +
|
||||
xmb->icon_spacing_horizontal
|
||||
* (i + 1) - xmb->icon_size / 2.0;
|
||||
float y = xmb->margins_screen_top
|
||||
+ xmb->icon_size / 2.0;
|
||||
float rotation = 0;
|
||||
float scale_factor = node->zoom;
|
||||
xmb_node_t *node = xmb_get_node(xmb, i);
|
||||
|
||||
rotate_draw.matrix = &mymat;
|
||||
rotate_draw.rotation = rotation;
|
||||
rotate_draw.scale_x = scale_factor;
|
||||
rotate_draw.scale_y = scale_factor;
|
||||
rotate_draw.scale_z = 1;
|
||||
rotate_draw.scale_enable = true;
|
||||
if (!node)
|
||||
continue;
|
||||
|
||||
menu_display_rotate_z(&rotate_draw, video_info);
|
||||
menu_display_set_alpha(item_color, MIN(node->alpha, xmb->alpha));
|
||||
|
||||
xmb_draw_icon(video_info,
|
||||
xmb->icon_size,
|
||||
&mymat,
|
||||
texture,
|
||||
x,
|
||||
y,
|
||||
width,
|
||||
height,
|
||||
1.0,
|
||||
rotation,
|
||||
scale_factor,
|
||||
&item_color[0],
|
||||
xmb->shadow_offset);
|
||||
if (item_color[3] != 0)
|
||||
{
|
||||
menu_display_ctx_rotate_draw_t rotate_draw;
|
||||
math_matrix_4x4 mymat;
|
||||
uintptr_t texture = node->icon;
|
||||
float x = xmb->x + xmb->categories_x_pos +
|
||||
xmb->margins_screen_left +
|
||||
xmb->icon_spacing_horizontal
|
||||
* (i + 1) - xmb->icon_size / 2.0;
|
||||
float y = xmb->margins_screen_top
|
||||
+ xmb->icon_size / 2.0;
|
||||
float rotation = 0;
|
||||
float scale_factor = node->zoom;
|
||||
|
||||
rotate_draw.matrix = &mymat;
|
||||
rotate_draw.rotation = rotation;
|
||||
rotate_draw.scale_x = scale_factor;
|
||||
rotate_draw.scale_y = scale_factor;
|
||||
rotate_draw.scale_z = 1;
|
||||
rotate_draw.scale_enable = true;
|
||||
|
||||
menu_display_rotate_z(&rotate_draw, video_info);
|
||||
|
||||
xmb_draw_icon(video_info,
|
||||
xmb->icon_size,
|
||||
&mymat,
|
||||
texture,
|
||||
x,
|
||||
y,
|
||||
width,
|
||||
height,
|
||||
1.0,
|
||||
rotation,
|
||||
scale_factor,
|
||||
&item_color[0],
|
||||
xmb->shadow_offset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -4619,354 +4636,236 @@ static bool xmb_load_image(void *userdata, void *data, enum menu_image_type type
|
||||
|
||||
static const char *xmb_texture_path(unsigned id)
|
||||
{
|
||||
char *iconpath = (char*) malloc(PATH_MAX_LENGTH * sizeof(char));
|
||||
char *icon_name = (char*) malloc(PATH_MAX_LENGTH * sizeof(char));
|
||||
char *icon_fullpath = (char*) malloc(PATH_MAX_LENGTH * sizeof(char));
|
||||
|
||||
iconpath[0] = icon_name[0] = icon_fullpath[0] = '\0';
|
||||
|
||||
switch (id)
|
||||
{
|
||||
case XMB_TEXTURE_MAIN_MENU:
|
||||
#if defined(HAVE_LAKKA)
|
||||
icon_name = "lakka.png";
|
||||
break;
|
||||
return "lakka.png";
|
||||
#else
|
||||
icon_name = "retroarch.png";
|
||||
break;
|
||||
return "retroarch.png";
|
||||
#endif
|
||||
case XMB_TEXTURE_SETTINGS:
|
||||
icon_name = "settings.png";
|
||||
break;
|
||||
return "settings.png";
|
||||
case XMB_TEXTURE_HISTORY:
|
||||
icon_name = "history.png";
|
||||
break;
|
||||
return "history.png";
|
||||
case XMB_TEXTURE_FAVORITES:
|
||||
icon_name = "favorites.png";
|
||||
break;
|
||||
return "favorites.png";
|
||||
case XMB_TEXTURE_ADD_FAVORITE:
|
||||
icon_name = "add-favorite.png";
|
||||
break;
|
||||
return "add-favorite.png";
|
||||
case XMB_TEXTURE_MUSICS:
|
||||
icon_name = "musics.png";
|
||||
break;
|
||||
return "musics.png";
|
||||
#if defined(HAVE_FFMPEG) || defined(HAVE_MPV)
|
||||
case XMB_TEXTURE_MOVIES:
|
||||
icon_name = "movies.png";
|
||||
break;
|
||||
return "movies.png";
|
||||
#endif
|
||||
#ifdef HAVE_IMAGEVIEWER
|
||||
case XMB_TEXTURE_IMAGES:
|
||||
icon_name = "images.png";
|
||||
break;
|
||||
return "images.png";
|
||||
#endif
|
||||
case XMB_TEXTURE_SETTING:
|
||||
icon_name = "setting.png";
|
||||
break;
|
||||
return "setting.png";
|
||||
case XMB_TEXTURE_SUBSETTING:
|
||||
icon_name = "subsetting.png";
|
||||
break;
|
||||
return "subsetting.png";
|
||||
case XMB_TEXTURE_ARROW:
|
||||
icon_name = "arrow.png";
|
||||
break;
|
||||
return "arrow.png";
|
||||
case XMB_TEXTURE_RUN:
|
||||
icon_name = "run.png";
|
||||
break;
|
||||
return "run.png";
|
||||
case XMB_TEXTURE_CLOSE:
|
||||
icon_name = "close.png";
|
||||
break;
|
||||
return "close.png";
|
||||
case XMB_TEXTURE_RESUME:
|
||||
icon_name = "resume.png";
|
||||
break;
|
||||
return "resume.png";
|
||||
case XMB_TEXTURE_CLOCK:
|
||||
icon_name = "clock.png";
|
||||
break;
|
||||
return "clock.png";
|
||||
case XMB_TEXTURE_BATTERY_FULL:
|
||||
icon_name = "battery-full.png";
|
||||
break;
|
||||
return "battery-full.png";
|
||||
case XMB_TEXTURE_BATTERY_CHARGING:
|
||||
icon_name = "battery-charging.png";
|
||||
break;
|
||||
return "battery-charging.png";
|
||||
case XMB_TEXTURE_POINTER:
|
||||
icon_name = "pointer.png";
|
||||
break;
|
||||
return "pointer.png";
|
||||
case XMB_TEXTURE_SAVESTATE:
|
||||
icon_name = "savestate.png";
|
||||
break;
|
||||
return "savestate.png";
|
||||
case XMB_TEXTURE_LOADSTATE:
|
||||
icon_name = "loadstate.png";
|
||||
break;
|
||||
return "loadstate.png";
|
||||
case XMB_TEXTURE_UNDO:
|
||||
icon_name = "undo.png";
|
||||
break;
|
||||
return "undo.png";
|
||||
case XMB_TEXTURE_CORE_INFO:
|
||||
icon_name = "core-infos.png";
|
||||
break;
|
||||
return "core-infos.png";
|
||||
case XMB_TEXTURE_WIFI:
|
||||
icon_name = "wifi.png";
|
||||
break;
|
||||
return "wifi.png";
|
||||
case XMB_TEXTURE_CORE_OPTIONS:
|
||||
icon_name = "core-options.png";
|
||||
break;
|
||||
return "core-options.png";
|
||||
case XMB_TEXTURE_INPUT_REMAPPING_OPTIONS:
|
||||
icon_name = "core-input-remapping-options.png";
|
||||
break;
|
||||
return "core-input-remapping-options.png";
|
||||
case XMB_TEXTURE_CHEAT_OPTIONS:
|
||||
icon_name = "core-cheat-options.png";
|
||||
break;
|
||||
return "core-cheat-options.png";
|
||||
case XMB_TEXTURE_DISK_OPTIONS:
|
||||
icon_name = "core-disk-options.png";
|
||||
break;
|
||||
return "core-disk-options.png";
|
||||
case XMB_TEXTURE_SHADER_OPTIONS:
|
||||
icon_name = "core-shader-options.png";
|
||||
break;
|
||||
return "core-shader-options.png";
|
||||
case XMB_TEXTURE_ACHIEVEMENT_LIST:
|
||||
icon_name = "achievement-list.png";
|
||||
break;
|
||||
return "achievement-list.png";
|
||||
case XMB_TEXTURE_SCREENSHOT:
|
||||
icon_name = "screenshot.png";
|
||||
break;
|
||||
return "screenshot.png";
|
||||
case XMB_TEXTURE_RELOAD:
|
||||
icon_name = "reload.png";
|
||||
break;
|
||||
return "reload.png";
|
||||
case XMB_TEXTURE_RENAME:
|
||||
icon_name = "rename.png";
|
||||
break;
|
||||
return "rename.png";
|
||||
case XMB_TEXTURE_FILE:
|
||||
icon_name = "file.png";
|
||||
break;
|
||||
return "file.png";
|
||||
case XMB_TEXTURE_FOLDER:
|
||||
icon_name = "folder.png";
|
||||
break;
|
||||
return "folder.png";
|
||||
case XMB_TEXTURE_ZIP:
|
||||
icon_name = "zip.png";
|
||||
break;
|
||||
return "zip.png";
|
||||
case XMB_TEXTURE_MUSIC:
|
||||
icon_name = "music.png";
|
||||
break;
|
||||
return "music.png";
|
||||
case XMB_TEXTURE_FAVORITE:
|
||||
icon_name = "favorites-content.png";
|
||||
break;
|
||||
return "favorites-content.png";
|
||||
case XMB_TEXTURE_IMAGE:
|
||||
icon_name = "image.png";
|
||||
break;
|
||||
return "image.png";
|
||||
case XMB_TEXTURE_MOVIE:
|
||||
icon_name = "movie.png";
|
||||
break;
|
||||
return "movie.png";
|
||||
case XMB_TEXTURE_CORE:
|
||||
icon_name = "core.png";
|
||||
break;
|
||||
return "core.png";
|
||||
case XMB_TEXTURE_RDB:
|
||||
icon_name = "database.png";
|
||||
break;
|
||||
return "database.png";
|
||||
case XMB_TEXTURE_CURSOR:
|
||||
icon_name = "cursor.png";
|
||||
break;
|
||||
return "cursor.png";
|
||||
case XMB_TEXTURE_SWITCH_ON:
|
||||
icon_name = "on.png";
|
||||
break;
|
||||
return "on.png";
|
||||
case XMB_TEXTURE_SWITCH_OFF:
|
||||
icon_name = "off.png";
|
||||
break;
|
||||
return "off.png";
|
||||
case XMB_TEXTURE_ADD:
|
||||
icon_name = "add.png";
|
||||
break;
|
||||
return "add.png";
|
||||
#ifdef HAVE_NETWORKING
|
||||
case XMB_TEXTURE_NETPLAY:
|
||||
icon_name = "netplay.png";
|
||||
break;
|
||||
return "netplay.png";
|
||||
case XMB_TEXTURE_ROOM:
|
||||
icon_name = "menu_room.png";
|
||||
break;
|
||||
return "menu_room.png";
|
||||
case XMB_TEXTURE_ROOM_LAN:
|
||||
icon_name = "menu_room_lan.png";
|
||||
break;
|
||||
return "menu_room_lan.png";
|
||||
case XMB_TEXTURE_ROOM_RELAY:
|
||||
icon_name = "menu_room_relay.png";
|
||||
break;
|
||||
return "menu_room_relay.png";
|
||||
#endif
|
||||
case XMB_TEXTURE_KEY:
|
||||
icon_name = "key.png";
|
||||
break;
|
||||
return "key.png";
|
||||
case XMB_TEXTURE_KEY_HOVER:
|
||||
icon_name = "key-hover.png";
|
||||
break;
|
||||
return "key-hover.png";
|
||||
case XMB_TEXTURE_DIALOG_SLICE:
|
||||
icon_name = "dialog-slice.png";
|
||||
break;
|
||||
return "dialog-slice.png";
|
||||
case XMB_TEXTURE_ACHIEVEMENTS:
|
||||
icon_name = "menu_achievements.png";
|
||||
break;
|
||||
return "menu_achievements.png";
|
||||
case XMB_TEXTURE_AUDIO:
|
||||
icon_name = "menu_audio.png";
|
||||
break;
|
||||
return "menu_audio.png";
|
||||
case XMB_TEXTURE_DRIVERS:
|
||||
icon_name = "menu_drivers.png";
|
||||
break;
|
||||
return "menu_drivers.png";
|
||||
case XMB_TEXTURE_EXIT:
|
||||
icon_name = "menu_exit.png";
|
||||
break;
|
||||
return "menu_exit.png";
|
||||
case XMB_TEXTURE_FRAMESKIP:
|
||||
icon_name = "menu_frameskip.png";
|
||||
break;
|
||||
return "menu_frameskip.png";
|
||||
case XMB_TEXTURE_HELP:
|
||||
icon_name = "menu_help.png";
|
||||
break;
|
||||
return "menu_help.png";
|
||||
case XMB_TEXTURE_INFO:
|
||||
icon_name = "menu_info.png";
|
||||
break;
|
||||
return "menu_info.png";
|
||||
case XMB_TEXTURE_INPUT_SETTINGS:
|
||||
icon_name = "Libretro - Pad.png";
|
||||
break;
|
||||
return "Libretro - Pad.png";
|
||||
case XMB_TEXTURE_LATENCY:
|
||||
icon_name = "menu_latency.png";
|
||||
break;
|
||||
return "menu_latency.png";
|
||||
case XMB_TEXTURE_NETWORK:
|
||||
icon_name = "menu_network.png";
|
||||
break;
|
||||
return "menu_network.png";
|
||||
case XMB_TEXTURE_POWER:
|
||||
icon_name = "menu_power.png";
|
||||
break;
|
||||
return "menu_power.png";
|
||||
case XMB_TEXTURE_RECORD:
|
||||
icon_name = "menu_record.png";
|
||||
break;
|
||||
return "menu_record.png";
|
||||
case XMB_TEXTURE_SAVING:
|
||||
icon_name = "menu_saving.png";
|
||||
break;
|
||||
return "menu_saving.png";
|
||||
case XMB_TEXTURE_UPDATER:
|
||||
icon_name = "menu_updater.png";
|
||||
break;
|
||||
return "menu_updater.png";
|
||||
case XMB_TEXTURE_VIDEO:
|
||||
icon_name = "menu_video.png";
|
||||
break;
|
||||
return "menu_video.png";
|
||||
case XMB_TEXTURE_MIXER:
|
||||
icon_name = "menu_mixer.png";
|
||||
break;
|
||||
return "menu_mixer.png";
|
||||
case XMB_TEXTURE_LOG:
|
||||
icon_name = "menu_log.png";
|
||||
break;
|
||||
return "menu_log.png";
|
||||
case XMB_TEXTURE_OSD:
|
||||
icon_name = "menu_osd.png";
|
||||
break;
|
||||
return "menu_osd.png";
|
||||
case XMB_TEXTURE_UI:
|
||||
icon_name = "menu_ui.png";
|
||||
break;
|
||||
return "menu_ui.png";
|
||||
case XMB_TEXTURE_USER:
|
||||
icon_name = "menu_user.png";
|
||||
break;
|
||||
return "menu_user.png";
|
||||
case XMB_TEXTURE_PRIVACY:
|
||||
icon_name = "menu_privacy.png";
|
||||
break;
|
||||
return "menu_privacy.png";
|
||||
case XMB_TEXTURE_PLAYLIST:
|
||||
icon_name = "menu_playlist.png";
|
||||
break;
|
||||
return "menu_playlist.png";
|
||||
case XMB_TEXTURE_QUICKMENU:
|
||||
icon_name = "menu_quickmenu.png";
|
||||
break;
|
||||
return "menu_quickmenu.png";
|
||||
case XMB_TEXTURE_REWIND:
|
||||
icon_name = "menu_rewind.png";
|
||||
break;
|
||||
return "menu_rewind.png";
|
||||
case XMB_TEXTURE_OVERLAY:
|
||||
icon_name = "menu_overlay.png";
|
||||
break;
|
||||
return "menu_overlay.png";
|
||||
case XMB_TEXTURE_OVERRIDE:
|
||||
icon_name = "menu_override.png";
|
||||
break;
|
||||
return "menu_override.png";
|
||||
case XMB_TEXTURE_NOTIFICATIONS:
|
||||
icon_name = "menu_notifications.png";
|
||||
break;
|
||||
return "menu_notifications.png";
|
||||
case XMB_TEXTURE_STREAM:
|
||||
icon_name = "menu_stream.png";
|
||||
break;
|
||||
return "menu_stream.png";
|
||||
case XMB_TEXTURE_SHUTDOWN:
|
||||
icon_name = "menu_shutdown.png";
|
||||
break;
|
||||
return "menu_shutdown.png";
|
||||
case XMB_TEXTURE_INPUT_DPAD_U:
|
||||
icon_name = "input_DPAD-U.png";
|
||||
break;
|
||||
return "input_DPAD-U.png";
|
||||
case XMB_TEXTURE_INPUT_DPAD_D:
|
||||
icon_name = "input_DPAD-D.png";
|
||||
break;
|
||||
return "input_DPAD-D.png";
|
||||
case XMB_TEXTURE_INPUT_DPAD_L:
|
||||
icon_name = "input_DPAD-L.png";
|
||||
break;
|
||||
return "input_DPAD-L.png";
|
||||
case XMB_TEXTURE_INPUT_DPAD_R:
|
||||
icon_name = "input_DPAD-R.png";
|
||||
break;
|
||||
return "input_DPAD-R.png";
|
||||
case XMB_TEXTURE_INPUT_STCK_U:
|
||||
icon_name = "input_STCK-U.png";
|
||||
break;
|
||||
return "input_STCK-U.png";
|
||||
case XMB_TEXTURE_INPUT_STCK_D:
|
||||
icon_name = "input_STCK-D.png";
|
||||
break;
|
||||
return "input_STCK-D.png";
|
||||
case XMB_TEXTURE_INPUT_STCK_L:
|
||||
icon_name = "input_STCK-L.png";
|
||||
break;
|
||||
return "input_STCK-L.png";
|
||||
case XMB_TEXTURE_INPUT_STCK_R:
|
||||
icon_name = "input_STCK-R.png";
|
||||
break;
|
||||
return "input_STCK-R.png";
|
||||
case XMB_TEXTURE_INPUT_STCK_P:
|
||||
icon_name = "input_STCK-P.png";
|
||||
break;
|
||||
return "input_STCK-P.png";
|
||||
case XMB_TEXTURE_INPUT_BTN_U:
|
||||
icon_name = "input_BTN-U.png";
|
||||
break;
|
||||
return "input_BTN-U.png";
|
||||
case XMB_TEXTURE_INPUT_BTN_D:
|
||||
icon_name = "input_BTN-D.png";
|
||||
break;
|
||||
return "input_BTN-D.png";
|
||||
case XMB_TEXTURE_INPUT_BTN_L:
|
||||
icon_name = "input_BTN-L.png";
|
||||
break;
|
||||
return "input_BTN-L.png";
|
||||
case XMB_TEXTURE_INPUT_BTN_R:
|
||||
icon_name = "input_BTN-R.png";
|
||||
break;
|
||||
return "input_BTN-R.png";
|
||||
case XMB_TEXTURE_INPUT_LB:
|
||||
icon_name = "input_LB.png";
|
||||
break;
|
||||
return "input_LB.png";
|
||||
case XMB_TEXTURE_INPUT_RB:
|
||||
icon_name = "input_RB.png";
|
||||
break;
|
||||
return "input_RB.png";
|
||||
case XMB_TEXTURE_INPUT_LT:
|
||||
icon_name = "input_LT.png";
|
||||
break;
|
||||
return "input_LT.png";
|
||||
case XMB_TEXTURE_INPUT_RT:
|
||||
icon_name = "input_RT.png";
|
||||
break;
|
||||
return "input_RT.png";
|
||||
case XMB_TEXTURE_INPUT_SELECT:
|
||||
icon_name = "input_SELECT.png";
|
||||
break;
|
||||
return "input_SELECT.png";
|
||||
case XMB_TEXTURE_INPUT_START:
|
||||
icon_name = "input_START.png";
|
||||
break;
|
||||
return "input_START.png";
|
||||
case XMB_TEXTURE_CHECKMARK:
|
||||
icon_name = "menu_check.png";
|
||||
break;
|
||||
return "menu_check.png";
|
||||
case XMB_TEXTURE_MENU_ADD:
|
||||
icon_name = "menu_add.png";
|
||||
break;
|
||||
return "menu_add.png";
|
||||
case XMB_TEXTURE_BRIGHTNESS:
|
||||
icon_name = "menu_brightness.png";
|
||||
break;
|
||||
return "menu_brightness.png";
|
||||
case XMB_TEXTURE_PAUSE:
|
||||
icon_name = "menu_pause.png";
|
||||
break;
|
||||
return "menu_pause.png";
|
||||
case XMB_TEXTURE_DEFAULT:
|
||||
return "default.png";
|
||||
case XMB_TEXTURE_DEFAULT_CONTENT:
|
||||
return "default-content.png";
|
||||
case XMB_TEXTURE_MENU_APPLY_TOGGLE:
|
||||
return "menu_apply_toggle.png";
|
||||
case XMB_TEXTURE_MENU_APPLY_COG:
|
||||
return "menu_apply_cog.png";
|
||||
}
|
||||
|
||||
fill_pathname_application_special(iconpath,
|
||||
PATH_MAX_LENGTH * sizeof(char),
|
||||
APPLICATION_SPECIAL_DIRECTORY_ASSETS_XMB_ICONS);
|
||||
|
||||
icon_fullpath = iconpath;
|
||||
strlcat(icon_fullpath, icon_name, PATH_MAX_LENGTH * sizeof(char));
|
||||
|
||||
if (!filestream_exists(icon_fullpath))
|
||||
{
|
||||
RARCH_WARN("[XMB] Asset missing: %s\n", icon_fullpath);
|
||||
return NULL;
|
||||
}
|
||||
else
|
||||
return icon_name;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void xmb_context_reset_textures(
|
||||
@ -4974,25 +4873,42 @@ static void xmb_context_reset_textures(
|
||||
{
|
||||
unsigned i;
|
||||
settings_t *settings = config_get_ptr();
|
||||
xmb->assets_missing = false;
|
||||
|
||||
for (i = 0; i < XMB_TEXTURE_LAST; i++)
|
||||
{
|
||||
if (xmb_texture_path(i) == NULL)
|
||||
if (!menu_display_reset_textures_list(xmb_texture_path(i), iconpath, &xmb->textures.list[i], TEXTURE_FILTER_MIPMAP_LINEAR))
|
||||
{
|
||||
/* If the icon doesn't exist at least try to return the subsetting icon*/
|
||||
if (!(i == XMB_TEXTURE_DIALOG_SLICE || i == XMB_TEXTURE_KEY_HOVER || i == XMB_TEXTURE_KEY_HOVER))
|
||||
menu_display_reset_textures_list(xmb_texture_path(XMB_TEXTURE_SUBSETTING), iconpath, &xmb->textures.list[i], TEXTURE_FILTER_MIPMAP_LINEAR);
|
||||
continue;
|
||||
RARCH_WARN("[XMB] Asset missing: %s%s\n", iconpath, xmb_texture_path(i));
|
||||
/* If the icon is missing return the subsetting (because some themes are incomplete) */
|
||||
if (!(i == XMB_TEXTURE_DIALOG_SLICE || i == XMB_TEXTURE_KEY_HOVER || i == XMB_TEXTURE_KEY))
|
||||
{
|
||||
/* OSD Warning only if subsetting icon is missing */
|
||||
if (
|
||||
!menu_display_reset_textures_list(xmb_texture_path(XMB_TEXTURE_SUBSETTING), iconpath, &xmb->textures.list[i], TEXTURE_FILTER_MIPMAP_LINEAR)
|
||||
&& !(settings->uints.menu_xmb_theme == XMB_ICON_THEME_CUSTOM)
|
||||
)
|
||||
{
|
||||
runloop_msg_queue_push(msg_hash_to_str(MSG_MISSING_ASSETS), 1, 256, false);
|
||||
/* Do not draw icons if subsetting is missing */
|
||||
goto error;
|
||||
}
|
||||
/* Do not draw icons if this ones are is missing */
|
||||
switch (i)
|
||||
{
|
||||
case XMB_TEXTURE_POINTER:
|
||||
case XMB_TEXTURE_ARROW:
|
||||
case XMB_TEXTURE_CLOCK:
|
||||
case XMB_TEXTURE_BATTERY_CHARGING:
|
||||
case XMB_TEXTURE_BATTERY_FULL:
|
||||
case XMB_TEXTURE_DEFAULT:
|
||||
case XMB_TEXTURE_DEFAULT_CONTENT:
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
}
|
||||
menu_display_reset_textures_list(xmb_texture_path(i), iconpath, &xmb->textures.list[i], TEXTURE_FILTER_MIPMAP_LINEAR);
|
||||
}
|
||||
|
||||
/* Warn only if critical assets are missing, some themes are incomplete */
|
||||
if (
|
||||
((xmb_texture_path(XMB_TEXTURE_SUBSETTING) == NULL)) && !(settings->uints.menu_xmb_theme == XMB_ICON_THEME_CUSTOM)
|
||||
)
|
||||
runloop_msg_queue_push(msg_hash_to_str(MSG_MISSING_ASSETS), 1, 256, false);
|
||||
|
||||
menu_display_allocate_white_texture();
|
||||
|
||||
xmb->main_menu_node.icon = xmb->textures.list[XMB_TEXTURE_MAIN_MENU];
|
||||
@ -5037,6 +4953,12 @@ static void xmb_context_reset_textures(
|
||||
xmb->netplay_tab_node.zoom = xmb->categories_active_zoom;
|
||||
#endif
|
||||
|
||||
return;
|
||||
|
||||
error:
|
||||
xmb->assets_missing = true ;
|
||||
RARCH_WARN("[XMB] Critical asset missing, no icons will be drawn\n");
|
||||
return;
|
||||
}
|
||||
|
||||
static void xmb_context_reset_background(const char *iconpath)
|
||||
@ -5622,16 +5544,14 @@ static int xmb_list_push(void *data, void *userdata,
|
||||
|
||||
if (settings->bools.menu_show_load_content)
|
||||
{
|
||||
const struct retro_subsystem_info* subsystem = NULL;
|
||||
|
||||
|
||||
entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_LIST;
|
||||
menu_displaylist_setting(&entry);
|
||||
|
||||
subsystem = system->subsystem.data;
|
||||
|
||||
if (subsystem)
|
||||
if (subsystem_size > 0)
|
||||
{
|
||||
for (i = 0; i < (unsigned)system->subsystem.size; i++, subsystem++)
|
||||
const struct retro_subsystem_info* subsystem = subsystem_data;
|
||||
for (i = 0; i < subsystem_size; i++, subsystem++)
|
||||
{
|
||||
char s[PATH_MAX_LENGTH];
|
||||
if (content_get_subsystem() == i)
|
||||
@ -5714,10 +5634,12 @@ static int xmb_list_push(void *data, void *userdata,
|
||||
menu_displaylist_setting(&entry);
|
||||
}
|
||||
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
entry.enum_idx = MENU_ENUM_LABEL_SWITCH_CPU_PROFILE;
|
||||
menu_displaylist_setting(&entry);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
entry.enum_idx = MENU_ENUM_LABEL_SWITCH_GPU_PROFILE;
|
||||
menu_displaylist_setting(&entry);
|
||||
|
||||
|
@ -51,6 +51,11 @@
|
||||
#include "../../lakka.h"
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LIBNX
|
||||
#include <switch.h>
|
||||
#include "../../switch_performance_profiles.h"
|
||||
#endif
|
||||
|
||||
#if defined(__linux__) || (defined(BSD) && !defined(__MACH__))
|
||||
#include "../frontend/drivers/platform_unix.h"
|
||||
#endif
|
||||
@ -2584,25 +2589,6 @@ static int menu_displaylist_parse_load_content_settings(
|
||||
#endif
|
||||
rarch_system_info_t *system = runloop_get_system_info();
|
||||
|
||||
#if 0
|
||||
const struct retro_subsystem_info* subsystem = system ? system->subsystem.data : NULL;
|
||||
|
||||
if (subsystem)
|
||||
{
|
||||
unsigned p;
|
||||
|
||||
for (p = 0; p < system->subsystem.size; p++, subsystem++)
|
||||
{
|
||||
char s[PATH_MAX_LENGTH];
|
||||
snprintf(s, sizeof(s), "%s (%s)", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST), subsystem->desc);
|
||||
menu_entries_append_enum(info->list,
|
||||
s,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_LOAD_CONTENT_SPECIAL),
|
||||
MENU_ENUM_LABEL_LOAD_CONTENT_SPECIAL,
|
||||
MENU_SETTING_ACTION, 0, 0);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_RESUME_CONTENT),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_RESUME_CONTENT),
|
||||
@ -2633,7 +2619,7 @@ static int menu_displaylist_parse_load_content_settings(
|
||||
|
||||
if (settings->bools.quick_menu_show_save_load_state
|
||||
#ifdef HAVE_CHEEVOS
|
||||
&& !cheevos_hardcore_active
|
||||
&& !cheevos_hardcore_active
|
||||
#endif
|
||||
)
|
||||
{
|
||||
@ -4284,7 +4270,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist
|
||||
|
||||
switch (type)
|
||||
{
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
case DISPLAYLIST_SWITCH_CPU_PROFILE:
|
||||
{
|
||||
unsigned i;
|
||||
@ -4293,17 +4279,22 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist
|
||||
FILE *profile = NULL;
|
||||
const size_t profiles_count = sizeof(SWITCH_CPU_PROFILES)/sizeof(SWITCH_CPU_PROFILES[1]);
|
||||
|
||||
runloop_msg_queue_push("Warning : extented overclocking can damage the Switch", 1, 90, true);
|
||||
runloop_msg_queue_push("Warning : extended overclocking can damage the Switch", 1, 90, true);
|
||||
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
|
||||
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
profile = popen("cpu-profile get", "r");
|
||||
fgets(current_profile, PATH_MAX_LENGTH, profile);
|
||||
pclose(profile);
|
||||
|
||||
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
|
||||
|
||||
snprintf(text, sizeof(text),
|
||||
"Current profile : %s", current_profile);
|
||||
|
||||
snprintf(text, sizeof(text), "Current profile : %s", current_profile);
|
||||
#else
|
||||
u32 currentClock = 0;
|
||||
pcvGetClockRate(PcvModule_Cpu, ¤tClock);
|
||||
snprintf(text, sizeof(text), "Current Clock : %i", currentClock);
|
||||
#endif
|
||||
menu_entries_append_enum(info->list,
|
||||
text,
|
||||
"",
|
||||
@ -4332,6 +4323,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist
|
||||
|
||||
break;
|
||||
}
|
||||
#if defined(HAVE_LAKKA_SWITCH)
|
||||
case DISPLAYLIST_SWITCH_GPU_PROFILE:
|
||||
{
|
||||
unsigned i;
|
||||
@ -4349,7 +4341,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
|
||||
|
||||
snprintf(text, sizeof(text), "Current profile : %s", current_profile);
|
||||
|
||||
|
||||
menu_entries_append_enum(info->list,
|
||||
text,
|
||||
"",
|
||||
@ -4402,7 +4394,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist
|
||||
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#endif // HAVE_LAKKA_SWITCH
|
||||
#endif // HAVE_LAKKA_SWITCH || HAVE_LIBNX
|
||||
case DISPLAYLIST_MUSIC_LIST:
|
||||
{
|
||||
char combined_path[PATH_MAX_LENGTH];
|
||||
@ -5619,11 +5612,14 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_FPS_SHOW,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_FRAMECOUNT_SHOW,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_STATISTICS_SHOW,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_FRAMECOUNT_SHOW,
|
||||
MENU_ENUM_LABEL_MEMORY_SHOW,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_VIDEO_FONT_PATH,
|
||||
|
@ -183,6 +183,8 @@ enum menu_displaylist_ctl_state
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
DISPLAYLIST_SWITCH_GPU_PROFILE,
|
||||
DISPLAYLIST_SWITCH_BACKLIGHT_CONTROL,
|
||||
#endif
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
DISPLAYLIST_SWITCH_CPU_PROFILE,
|
||||
#endif
|
||||
DISPLAYLIST_PENDING_CLEAR
|
||||
|
@ -245,6 +245,8 @@ enum menu_settings_type
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
MENU_SET_SWITCH_GPU_PROFILE,
|
||||
MENU_SET_SWITCH_BRIGHTNESS,
|
||||
#endif
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
MENU_SET_SWITCH_CPU_PROFILE,
|
||||
#endif
|
||||
|
||||
|
@ -3750,8 +3750,7 @@ static bool setting_append_list(
|
||||
menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_QUIT);
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_LAKKA)
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
CONFIG_ACTION(
|
||||
list, list_info,
|
||||
MENU_ENUM_LABEL_SWITCH_CPU_PROFILE,
|
||||
@ -3759,7 +3758,10 @@ static bool setting_append_list(
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group);
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_LAKKA)
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
CONFIG_ACTION(
|
||||
list, list_info,
|
||||
MENU_ENUM_LABEL_SWITCH_GPU_PROFILE,
|
||||
@ -5102,6 +5104,21 @@ static bool setting_append_list(
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.video_memory_show,
|
||||
MENU_ENUM_LABEL_MEMORY_SHOW,
|
||||
MENU_ENUM_LABEL_VALUE_MEMORY_SHOW,
|
||||
memory_show,
|
||||
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_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.video_statistics_show,
|
||||
@ -5390,13 +5407,20 @@ static bool setting_append_list(
|
||||
CMD_EVENT_VIDEO_APPLY_STATE_CHANGES);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_LAKKA_ADVANCED);
|
||||
|
||||
CONFIG_ACTION(
|
||||
list, list_info,
|
||||
MENU_ENUM_LABEL_SCREEN_RESOLUTION,
|
||||
MENU_ENUM_LABEL_VALUE_SCREEN_RESOLUTION,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group);
|
||||
#if defined(GEKKO) || defined(__CELLOS_LV2__)
|
||||
if (true)
|
||||
#else
|
||||
if (!string_is_equal(video_display_server_get_ident(), "null"))
|
||||
#endif
|
||||
{
|
||||
CONFIG_ACTION(
|
||||
list, list_info,
|
||||
MENU_ENUM_LABEL_SCREEN_RESOLUTION,
|
||||
MENU_ENUM_LABEL_VALUE_SCREEN_RESOLUTION,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group);
|
||||
}
|
||||
|
||||
CONFIG_UINT(
|
||||
list, list_info,
|
||||
|
@ -39,6 +39,7 @@
|
||||
#include "../../core.h"
|
||||
#include "../../content.h"
|
||||
#include "../../verbosity.h"
|
||||
#include "../../dynamic.h"
|
||||
|
||||
static enum filebrowser_enums filebrowser_types = FILEBROWSER_NONE;
|
||||
|
||||
@ -83,10 +84,9 @@ void filebrowser_parse(menu_displaylist_info_t *info, unsigned type_data)
|
||||
str_list = file_archive_get_file_list(path, info->exts);
|
||||
else
|
||||
{
|
||||
rarch_system_info_t *system = runloop_get_system_info();
|
||||
const struct retro_subsystem_info *subsystem = system->subsystem.data + content_get_subsystem();
|
||||
const struct retro_subsystem_info *subsystem = &subsystem_data[content_get_subsystem()];
|
||||
|
||||
if (subsystem)
|
||||
if (subsystem_size > 0)
|
||||
str_list = file_archive_get_file_list(path, subsystem->roms[content_get_subsystem_rom_id()].valid_extensions);
|
||||
}
|
||||
}
|
||||
@ -94,11 +94,9 @@ void filebrowser_parse(menu_displaylist_info_t *info, unsigned type_data)
|
||||
{
|
||||
if (filebrowser_types == FILEBROWSER_SELECT_FILE_SUBSYSTEM)
|
||||
{
|
||||
rarch_system_info_t *system = runloop_get_system_info();
|
||||
const struct retro_subsystem_info *subsystem =
|
||||
system->subsystem.data + content_get_subsystem();
|
||||
const struct retro_subsystem_info *subsystem = &subsystem_data[content_get_subsystem()];
|
||||
|
||||
if (subsystem && content_get_subsystem_rom_id() < subsystem->num_roms)
|
||||
if (subsystem_size > 0 && content_get_subsystem_rom_id() < subsystem->num_roms)
|
||||
str_list = dir_list_new(path,
|
||||
(filter_ext && info) ? subsystem->roms[content_get_subsystem_rom_id()].valid_extensions : NULL,
|
||||
true, settings->bools.show_hidden_files, true, false);
|
||||
|
@ -671,6 +671,7 @@ enum msg_hash_enums
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT,
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE,
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_OSK,
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_FPS_TOGGLE,
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH,
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY,
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP,
|
||||
@ -1231,6 +1232,7 @@ enum msg_hash_enums
|
||||
MENU_LABEL(SHADER_PREV),
|
||||
MENU_LABEL(FRAME_ADVANCE),
|
||||
MENU_LABEL(FPS_SHOW),
|
||||
MENU_LABEL(MEMORY_SHOW),
|
||||
MENU_LABEL(STATISTICS_SHOW),
|
||||
MENU_LABEL(FRAMECOUNT_SHOW),
|
||||
MENU_LABEL(BSV_RECORD_TOGGLE),
|
||||
@ -2170,7 +2172,8 @@ enum msg_hash_enums
|
||||
MENU_ENUM_LABEL_SWITCH_BACKLIGHT_CONTROL,
|
||||
MENU_ENUM_LABEL_VALUE_SWITCH_BACKLIGHT_CONTROL,
|
||||
MENU_ENUM_SUBLABEL_SWITCH_BACKLIGHT_CONTROL,
|
||||
|
||||
#endif
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
MENU_ENUM_LABEL_SWITCH_CPU_PROFILE,
|
||||
MENU_ENUM_LABEL_VALUE_SWITCH_CPU_PROFILE,
|
||||
MENU_ENUM_SUBLABEL_SWITCH_CPU_PROFILE,
|
||||
|
2
paths.c
2
paths.c
@ -311,7 +311,7 @@ static bool path_init_subsystem(void)
|
||||
/* For subsystems, we know exactly which RAM types are supported. */
|
||||
|
||||
info = libretro_find_subsystem_info(
|
||||
system->subsystem.data,
|
||||
subsystem_data,
|
||||
system->subsystem.size,
|
||||
path_get(RARCH_PATH_SUBSYSTEM));
|
||||
|
||||
|
@ -88,6 +88,17 @@
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
05132C6621A74D7A00379846 /* ozone_texture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ozone_texture.c; sourceTree = "<group>"; };
|
||||
05132C6721A74D7B00379846 /* ozone_theme.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ozone_theme.h; sourceTree = "<group>"; };
|
||||
05132C6821A74D7B00379846 /* ozone.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ozone.h; sourceTree = "<group>"; };
|
||||
05132C6921A74D7B00379846 /* ozone_entries.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ozone_entries.c; sourceTree = "<group>"; };
|
||||
05132C6A21A74D7B00379846 /* ozone.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ozone.c; sourceTree = "<group>"; };
|
||||
05132C6B21A74D7B00379846 /* ozone_theme.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ozone_theme.c; sourceTree = "<group>"; };
|
||||
05132C6C21A74D7B00379846 /* ozone_sidebar.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ozone_sidebar.c; sourceTree = "<group>"; };
|
||||
05132C6D21A74D7B00379846 /* ozone_sidebar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ozone_sidebar.h; sourceTree = "<group>"; };
|
||||
05132C6E21A74D7B00379846 /* ozone_display.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ozone_display.c; sourceTree = "<group>"; };
|
||||
05132C6F21A74D7B00379846 /* ozone_texture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ozone_texture.h; sourceTree = "<group>"; };
|
||||
05132C7021A74D7B00379846 /* ozone_display.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ozone_display.h; sourceTree = "<group>"; };
|
||||
05269A6120ABF20500C29F1E /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = System/Library/Frameworks/MetalKit.framework; sourceTree = SDKROOT; };
|
||||
05366512213F8BE5007E7EA0 /* thumbnailpackdownload.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = thumbnailpackdownload.cpp; sourceTree = "<group>"; };
|
||||
05366513213F8BE5007E7EA0 /* ui_qt_application.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ui_qt_application.cpp; sourceTree = "<group>"; };
|
||||
@ -514,7 +525,6 @@
|
||||
05D7753320A5678300646447 /* griffin_cpp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = griffin_cpp.cpp; path = ../../griffin/griffin_cpp.cpp; sourceTree = "<group>"; };
|
||||
05D7753420A5678400646447 /* griffin_glslang.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = griffin_glslang.cpp; path = ../../griffin/griffin_glslang.cpp; sourceTree = "<group>"; };
|
||||
05EFAFC22191D64200D27059 /* stripes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stripes.c; sourceTree = "<group>"; };
|
||||
05EFAFC32191D64200D27059 /* ozone.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ozone.c; sourceTree = "<group>"; };
|
||||
05F2872F20F2BEEA00632D47 /* task_autodetect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = task_autodetect.c; sourceTree = "<group>"; };
|
||||
05F2873020F2BEEA00632D47 /* task_netplay_find_content.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = task_netplay_find_content.c; sourceTree = "<group>"; };
|
||||
05F2873120F2BEEA00632D47 /* task_netplay_nat_traversal.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = task_netplay_nat_traversal.c; sourceTree = "<group>"; };
|
||||
@ -610,6 +620,24 @@
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
05132C6521A74D5100379846 /* ozone */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
05132C6E21A74D7B00379846 /* ozone_display.c */,
|
||||
05132C7021A74D7B00379846 /* ozone_display.h */,
|
||||
05132C6921A74D7B00379846 /* ozone_entries.c */,
|
||||
05132C6C21A74D7B00379846 /* ozone_sidebar.c */,
|
||||
05132C6D21A74D7B00379846 /* ozone_sidebar.h */,
|
||||
05132C6621A74D7A00379846 /* ozone_texture.c */,
|
||||
05132C6F21A74D7B00379846 /* ozone_texture.h */,
|
||||
05132C6B21A74D7B00379846 /* ozone_theme.c */,
|
||||
05132C6721A74D7B00379846 /* ozone_theme.h */,
|
||||
05132C6A21A74D7B00379846 /* ozone.c */,
|
||||
05132C6821A74D7B00379846 /* ozone.h */,
|
||||
);
|
||||
path = ozone;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
05366511213F8BE5007E7EA0 /* qt */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@ -801,12 +829,12 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
05A8C53520DB72F000FF7857 /* nuklear */,
|
||||
05132C6521A74D5100379846 /* ozone */,
|
||||
05A8C54020DB72F000FF7857 /* materialui.c */,
|
||||
05A8C53420DB72F000FF7857 /* menu_generic.c */,
|
||||
05A8C53320DB72F000FF7857 /* menu_generic.h */,
|
||||
05A8C53D20DB72F000FF7857 /* nuklear.c */,
|
||||
05A8C53E20DB72F000FF7857 /* null.c */,
|
||||
05EFAFC32191D64200D27059 /* ozone.c */,
|
||||
05A8C53C20DB72F000FF7857 /* rgui.c */,
|
||||
05EFAFC22191D64200D27059 /* stripes.c */,
|
||||
05A8C53220DB72F000FF7857 /* xmb.c */,
|
||||
|
@ -482,9 +482,10 @@ else
|
||||
fi
|
||||
|
||||
if [ "$HAVE_X11" = 'no' ]; then
|
||||
HAVE_XEXT=no; HAVE_XF86VM=no; HAVE_XINERAMA=no; HAVE_XSHM=no
|
||||
HAVE_XEXT=no; HAVE_XF86VM=no; HAVE_XINERAMA=no; HAVE_XSHM=no; HAVE_XRANDR=no
|
||||
fi
|
||||
|
||||
check_lib '' XRANDR -lXrandr
|
||||
check_pkgconf XINERAMA xinerama
|
||||
check_val '' XINERAMA -lXinerama
|
||||
|
||||
|
@ -59,6 +59,7 @@ HAVE_OPENDINGUX_FBDEV=no # Opendingux fbdev context support
|
||||
HAVE_OPENGLES=no # Use GLESv2 instead of desktop GL
|
||||
HAVE_OPENGLES3=no # OpenGLES3 support
|
||||
HAVE_X11=auto # everything X11.
|
||||
HAVE_XRANDR=auto # Xrandr support.
|
||||
HAVE_OMAP=no # OMAP video support
|
||||
HAVE_XINERAMA=auto # Xinerama support.
|
||||
HAVE_KMS=auto # KMS context support
|
||||
|
18
retroarch.c
18
retroarch.c
@ -2522,6 +2522,12 @@ static enum runloop_state runloop_check_state(
|
||||
bool menu_is_alive = menu_driver_is_alive();
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LIBNX
|
||||
// Should be called once per frame
|
||||
if(!appletMainLoop())
|
||||
return RUNLOOP_STATE_QUIT;
|
||||
#endif
|
||||
|
||||
BIT256_CLEAR_ALL_PTR(¤t_input);
|
||||
|
||||
#ifdef HAVE_MENU
|
||||
@ -2924,6 +2930,18 @@ static enum runloop_state runloop_check_state(
|
||||
old_pressed = pressed;
|
||||
}
|
||||
|
||||
/* Check FPS toggle */
|
||||
{
|
||||
static bool old_pressed = false;
|
||||
bool pressed = BIT256_GET(
|
||||
current_input, RARCH_FPS_TOGGLE);
|
||||
|
||||
if (pressed && !old_pressed)
|
||||
command_event(CMD_EVENT_FPS_TOGGLE, NULL);
|
||||
|
||||
old_pressed = pressed;
|
||||
}
|
||||
|
||||
/* Check recording toggle */
|
||||
{
|
||||
static bool old_pressed = false;
|
||||
|
@ -124,6 +124,9 @@
|
||||
# Display framerate.
|
||||
# fps_show = false
|
||||
|
||||
# Display memory.
|
||||
# memory_show = false
|
||||
|
||||
# Display total number of frames rendered. (only displays if fps_show is enabled)
|
||||
# framecount_show =
|
||||
|
||||
|
125
switch_performance_profiles.h
Normal file
125
switch_performance_profiles.h
Normal file
@ -0,0 +1,125 @@
|
||||
/* RetroArch - A frontend for libretro.
|
||||
* Copyright (C) 2018-2018 - Natinusala
|
||||
* Copyright (C) 2018-2018 - M4xw
|
||||
*
|
||||
* RetroArch is free software: you can redistribute it and/or modify it under the terms
|
||||
* of the GNU General Public License as published by the Free Software Found-
|
||||
* ation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with RetroArch.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __SWITCH_PERFORMANCE_PROFILES_H
|
||||
#define __SWITCH_PERFORMANCE_PROFILES_H
|
||||
|
||||
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
static char *SWITCH_GPU_PROFILES[] = {
|
||||
"docked-overclock-3",
|
||||
"docked-overclock-2",
|
||||
"docked-overclock-1",
|
||||
"docked",
|
||||
"non-docked-overclock-5",
|
||||
"non-docked-overclock-4",
|
||||
"non-docked-overclock-3",
|
||||
"non-docked-overclock-2",
|
||||
"non-docked-overclock-1",
|
||||
"non-docked",
|
||||
"non-docked-underclock-1",
|
||||
"non-docked-underclock-2",
|
||||
"non-docked-underclock-3",
|
||||
};
|
||||
|
||||
static char *SWITCH_GPU_SPEEDS[] = {
|
||||
"998 Mhz",
|
||||
"921 Mhz",
|
||||
"844 Mhz",
|
||||
"768 Mhz",
|
||||
"691 Mhz",
|
||||
"614 Mhz",
|
||||
"537 Mhz",
|
||||
"460 Mhz",
|
||||
"384 Mhz",
|
||||
"307 Mhz",
|
||||
"230 Mhz",
|
||||
"153 Mhz",
|
||||
"76 Mhz"};
|
||||
|
||||
static int SWITCH_BRIGHTNESS[] = {
|
||||
10,
|
||||
20,
|
||||
30,
|
||||
40,
|
||||
50,
|
||||
60,
|
||||
70,
|
||||
80,
|
||||
90,
|
||||
100};
|
||||
#endif
|
||||
|
||||
static char *SWITCH_CPU_PROFILES[] = {
|
||||
#ifndef HAVE_LIBNX
|
||||
"overclock-4",
|
||||
"overclock-3",
|
||||
"overclock-2",
|
||||
"overclock-1",
|
||||
"default",
|
||||
#else
|
||||
"Maximum Performance",
|
||||
"High Performance",
|
||||
"Boost Performance",
|
||||
"Stock Performance",
|
||||
"Powersaving Mode 1",
|
||||
"Powersaving Mode 2",
|
||||
"Powersaving Mode 3",
|
||||
#endif
|
||||
};
|
||||
|
||||
#define SWITCH_DEFAULT_CPU_PROFILE 3 /* Stock Performance */
|
||||
#define LIBNX_MAX_CPU_PROFILE 0 /* Max Performance */
|
||||
|
||||
static char *SWITCH_CPU_SPEEDS[] = {
|
||||
#ifndef HAVE_LIBNX
|
||||
"1912 MHz",
|
||||
"1734 MHz",
|
||||
"1530 MHz",
|
||||
"1224 MHz",
|
||||
"1020 MHz"
|
||||
#else
|
||||
"1785 MHz",
|
||||
"1581 MHz",
|
||||
"1224 MHz",
|
||||
"1020 MHz",
|
||||
"918 MHz",
|
||||
"816 MHz",
|
||||
"714 MHz"
|
||||
#endif
|
||||
};
|
||||
|
||||
static unsigned SWITCH_CPU_SPEEDS_VALUES[] = {
|
||||
#ifndef HAVE_LIBNX
|
||||
1912000000,
|
||||
1734000000,
|
||||
1530000000,
|
||||
1224000000,
|
||||
1020000000
|
||||
#else
|
||||
1785000000,
|
||||
1581000000,
|
||||
1224000000,
|
||||
1020000000,
|
||||
918000000,
|
||||
816000000,
|
||||
714000000
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
@ -114,6 +114,11 @@ static bool input_autoconfigured[MAX_USERS];
|
||||
static unsigned input_device_name_index[MAX_INPUT_DEVICES];
|
||||
static bool input_autoconfigure_swap_override;
|
||||
|
||||
/* TODO/FIXME - Not thread safe to access this
|
||||
* on main thread as well in its current state -
|
||||
* menu_input.c - menu_event calls this function
|
||||
* right now, while the underlying variable can
|
||||
* be modified by a task thread. */
|
||||
bool input_autoconfigure_get_swap_override(void)
|
||||
{
|
||||
return input_autoconfigure_swap_override;
|
||||
|
@ -1782,11 +1782,11 @@ void content_set_subsystem(unsigned idx)
|
||||
{
|
||||
rarch_system_info_t *system = runloop_get_system_info();
|
||||
const struct retro_subsystem_info *subsystem = system ?
|
||||
system->subsystem.data + idx : NULL;
|
||||
subsystem_data + idx : NULL;
|
||||
|
||||
pending_subsystem_id = idx;
|
||||
|
||||
if (subsystem)
|
||||
if (subsystem_size > 0)
|
||||
{
|
||||
strlcpy(pending_subsystem_ident,
|
||||
subsystem->ident, sizeof(pending_subsystem_ident));
|
||||
|
@ -126,9 +126,12 @@ void retro_main_log_file_init(const char *path)
|
||||
void retro_main_log_file_deinit(void)
|
||||
{
|
||||
if (log_file_fp && log_file_fp != stderr)
|
||||
{
|
||||
fclose(log_file_fp);
|
||||
if (log_file_buf) free(log_file_buf);
|
||||
log_file_fp = NULL;
|
||||
log_file_fp = NULL;
|
||||
}
|
||||
if (log_file_buf)
|
||||
free(log_file_buf);
|
||||
log_file_buf = NULL;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user