diff --git a/.github/workflows/PS3-PSL1GHT.yml b/.github/workflows/PS3-PSL1GHT.yml new file mode 100644 index 000000000000..f98b4594543e --- /dev/null +++ b/.github/workflows/PS3-PSL1GHT.yml @@ -0,0 +1,44 @@ +name: CI PS3/PSL1GHT + +on: + push: + pull_request: + repository_dispatch: + types: [run_build] + +permissions: + contents: read + +env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + +jobs: + build: + runs-on: ubuntu-latest + container: + image: git.libretro.com:5050/libretro-infrastructure/libretro-build-psl1ght:latest + options: --user root + + steps: + - uses: actions/checkout@v3 + + - name: Compile Salamander + run: | + make -f Makefile.psl1ght.salamander -j$(getconf _NPROCESSORS_ONLN) clean + make -f Makefile.psl1ght.salamander -j$(getconf _NPROCESSORS_ONLN) + + - name: Compile RA + run: | + make -f Makefile.psl1ght -j$(getconf _NPROCESSORS_ONLN) clean + make -f Makefile.psl1ght -j$(getconf _NPROCESSORS_ONLN) HAVE_STATIC_DUMMY=1 + + - name: Get short SHA + id: slug + run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)" + + - uses: actions/upload-artifact@v4 + with: + name: RA-psl1ght-dummy-${{ steps.slug.outputs.sha8 }} + path: | + retroarch_psl1ght_salamander.elf + retroarch_psl1ght.elf diff --git a/AUTHORS.h b/AUTHORS.h index 0987b0a24210..4bd15142d368 100644 --- a/AUTHORS.h +++ b/AUTHORS.h @@ -315,7 +315,7 @@ Mike Swanson (chungy) mikeOSX minucce misson20000 -Mohmoud (esoptron) (Hedonium) +esoptron Monroe88 Morgane (MorganeAD) mprobinson diff --git a/Makefile.common b/Makefile.common index 7226db8f143a..8c04f8900d48 100644 --- a/Makefile.common +++ b/Makefile.common @@ -923,13 +923,16 @@ endif ifeq ($(HAVE_PIPEWIRE), 1) OBJ += audio/drivers/pipewire.o \ - audio/common/pipewire.o \ - camera/drivers/pipewire.o + audio/common/pipewire.o ifeq ($(HAVE_MICROPHONE), 1) OBJ += audio/drivers_microphone/pipewire.o endif + ifeq ($(HAVE_PIPEWIRE_STABLE), 1) + OBJ += camera/drivers/pipewire.o + endif + LIBS += $(PIPEWIRE_LIBS) DEF_FLAGS += $(PIPEWIRE_CFLAGS) endif @@ -979,6 +982,12 @@ ifeq ($(HAVE_WINMM), 1) LIBS += -lwinmm endif +ifeq ($(HAVE_COREMIDI), 1) + OBJ += midi/drivers/coremidi.o + DEFINES += -DHAVE_COREMIDI + LIBS += -framework CoreMIDI +endif + # Audio Resamplers ifeq ($(HAVE_NEON),1) @@ -1527,7 +1536,10 @@ ifeq ($(HAVE_GL_CONTEXT), 1) endif ifeq ($(HAVE_EMSCRIPTEN), 1) - OBJ += gfx/drivers_context/emscriptenegl_ctx.o + ifeq ($(HAVE_EGL), 1) + OBJ += gfx/drivers_context/emscriptenegl_ctx.o + endif + OBJ += gfx/drivers_context/emscriptenwebgl_ctx.o endif ifeq ($(HAVE_MALI_FBDEV), 1) @@ -2194,11 +2206,16 @@ ifeq ($(HAVE_NETWORKING), 1) $(LIBRETRO_COMM_DIR)/net/net_socket.o \ core_updater_list.o \ network/natt.o \ - tasks/task_http.o \ tasks/task_netplay_lan_scan.o \ tasks/task_netplay_nat_traversal.o \ tasks/task_netplay_find_content.o + ifeq ($(HAVE_EMSCRIPTEN), 1) + OBJ += tasks/task_http_emscripten.o + else + OBJ += tasks/task_http.o + endif + ifeq ($(HAVE_MENU), 1) OBJ += tasks/task_pl_thumbnail_download.o endif diff --git a/Makefile.emscripten b/Makefile.emscripten index 164db24cf38d..22118d8baf8b 100644 --- a/Makefile.emscripten +++ b/Makefile.emscripten @@ -19,12 +19,18 @@ HAVE_PATCH = 1 HAVE_DSP_FILTER = 1 HAVE_VIDEO_FILTER = 1 HAVE_OVERLAY = 1 +HAVE_NETWORKING = 1 +HAVE_LIBRETRODB = 1 +HAVE_COMPRESSION = 1 +HAVE_UPDATE_ASSETS = 1 +HAVE_ONLINE_UPDATER = 1 HAVE_GLSL = 1 HAVE_SCREENSHOTS = 1 HAVE_REWIND = 1 HAVE_AUDIOMIXER = 1 HAVE_CC_RESAMPLER = 1 -HAVE_EGL = 1 +HAVE_EGL ?= 1 +HAVE_OPENGLES = 1 HAVE_RJPEG = 0 HAVE_RPNG = 1 HAVE_EMSCRIPTEN = 1 @@ -48,6 +54,12 @@ HAVE_7ZIP = 1 HAVE_BSV_MOVIE = 1 HAVE_AL = 1 HAVE_CHD ?= 0 +HAVE_WASMFS ?= 0 +PROXY_TO_PTHREAD ?= 0 +HAVE_NETPLAYDISCOVERY ?= 0 + +DEFINES += -DHAVE_NETWORKING -DHAVE_ONLINE_UPDATER -DHAVE_UPDATE_ASSETS -DHAVE_COMPRESSION +DEFINES += -DHAVE_UPDATE_CORE_INFO # WARNING -- READ BEFORE ENABLING # The rwebaudio driver is known to have several audio bugs, such as @@ -61,12 +73,12 @@ HAVE_RWEBAUDIO = 0 GL_DEBUG ?= 0 # enable javascript filesystem tracking -FS_DEBUG = 1 +FS_DEBUG = 0 HAVE_OPENGLES ?= 1 HAVE_OPENGLES3 ?= 0 -ASYNC ?= 0 +ASYNC ?= 1 LTO ?= 0 PTHREAD ?= 0 @@ -90,63 +102,88 @@ OBJDIR := obj-emscripten EXPORTED_FUNCTIONS = _main,_malloc,_free,_cmd_savefiles,_cmd_save_state,_cmd_load_state,_cmd_undo_save_state,_cmd_undo_load_state,_cmd_take_screenshot,\ _cmd_toggle_menu,_cmd_reload_config,_cmd_toggle_grab_mouse,_cmd_toggle_game_focus,_cmd_reset,_cmd_toggle_pause,_cmd_pause,_cmd_unpause,\ _cmd_set_volume,_cmd_set_shader,_cmd_cheat_set_code,_cmd_cheat_get_code,_cmd_cheat_toggle_index,_cmd_cheat_get_code_state,_cmd_cheat_realloc,\ -_cmd_cheat_get_size,_cmd_cheat_apply_cheats +_cmd_cheat_get_size,_cmd_cheat_apply_cheats,EmscriptenSendCommand,EmscriptenReceiveCommandReply + +EXPORTS := callMain,FS,PATH,ERRNO_CODES,ENV,stringToNewUTF8,UTF8ToString,Browser,GL,EmscriptenSendCommand,EmscriptenReceiveCommandReply -LIBS := -s USE_ZLIB=1 -LDFLAGS := -L. --no-heap-copy -s $(LIBS) -s STACK_SIZE=$(STACK_SIZE) -s INITIAL_MEMORY=$(INITIAL_HEAP) \ - -s EXPORTED_RUNTIME_METHODS=callMain,FS,PATH,ERRNO_CODES,stringToNewUTF8,UTF8ToString \ +LIBS := -s USE_ZLIB=1 -lbrowser.js + +ifeq ($(HAVE_WASMFS), 1) + DEFINES += -DHAVE_WASMFS=1 + LIBS += -sWASMFS -sFORCE_FILESYSTEM=1 -lfetchfs.js -lopfs.js + EXPORTS := $(EXPORTS),FETCHFS,OPFS + ifeq ($(PTHREAD),0) + $(error ERROR: WASMFS requires threading support) + endif +endif + +ifeq ($(PROXY_TO_PTHREAD),1) + LIBS += -sUSE_ES6_IMPORT_META=0 -sENVIRONMENT=worker,web + LIBS += -sPROXY_TO_PTHREAD -sOFFSCREENCANVAS_SUPPORT + DEFINES += -DUSE_OFFSCREENCANVAS=1 -DPROXY_TO_PTHREAD=1 +else + override ASYNC = 1 +endif + +ifeq ($(HAVE_SDL2), 1) + LIBS += -s USE_SDL=2 + DEFINES += -DHAVE_SDL2 +endif + + +LDFLAGS := -L. --no-heap-copy -s STACK_SIZE=$(STACK_SIZE) -s INITIAL_MEMORY=$(INITIAL_HEAP) \ + -s EXPORTED_RUNTIME_METHODS=$(EXPORTS) \ -s ALLOW_MEMORY_GROWTH=1 -s EXPORTED_FUNCTIONS="$(EXPORTED_FUNCTIONS)" \ -s MODULARIZE=1 -s EXPORT_ES6=1 -s EXPORT_NAME="libretro_$(subst -,_,$(LIBRETRO))" \ + -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=0 \ --extern-pre-js emscripten/pre.js \ --js-library emscripten/library_rwebcam.js \ + -gsource-map -g2 \ --js-library emscripten/library_platform_emscripten.js +ifeq ($(HAVE_OPENGLES), 1) + ifeq ($(HAVE_OPENGLES3), 1) + LDFLAGS += -s FULL_ES3=1 -s MIN_WEBGL_VERSION=2 -s MAX_WEBGL_VERSION=2 -lGL + else + LDFLAGS += -s FULL_ES2=1 -s MIN_WEBGL_VERSION=1 -s MAX_WEBGL_VERSION=2 -lGL + endif +endif + +ifeq ($(GL_DEBUG), 1) + LDFLAGS += -s GL_ASSERTIONS=1 -s GL_DEBUG=1 -DHAVE_GL_DEBUG_ES=1 +endif + +ifeq ($(FS_DEBUG), 1) + LDFLAGS += -s FS_DEBUG=1 +endif + ifeq ($(HAVE_RWEBAUDIO), 1) LDFLAGS += --js-library emscripten/library_rwebaudio.js DEFINES += -DHAVE_RWEBAUDIO endif + ifeq ($(HAVE_AL), 1) LDFLAGS += -lopenal DEFINES += -DHAVE_AL - override ASYNC = 1 endif ifneq ($(PTHREAD), 0) - LDFLAGS += -s MAXIMUM_MEMORY=1073741824 -pthread -s PTHREAD_POOL_SIZE=$(PTHREAD) - CFLAGS += -pthread + LDFLAGS += -s WASM_MEM_MAX=1073741824 -pthread -s PTHREAD_POOL_SIZE=$(PTHREAD) + CFLAGS += -pthread -s SHARED_MEMORY HAVE_THREADS=1 else HAVE_THREADS=0 endif + ifeq ($(ASYNC), 1) + DEFINES += -DEMSCRIPTEN_ASYNCIFY LDFLAGS += -s ASYNCIFY=$(ASYNC) -s ASYNCIFY_STACK_SIZE=8192 ifeq ($(DEBUG), 1) LDFLAGS += -s ASYNCIFY_DEBUG=1 # -s ASYNCIFY_ADVISE endif endif -ifeq ($(HAVE_OPENGLES), 1) - ifeq ($(HAVE_OPENGLES3), 1) - LDFLAGS += -s FULL_ES3=1 -s MIN_WEBGL_VERSION=2 -s MAX_WEBGL_VERSION=2 - else - LDFLAGS += -s FULL_ES2=1 - endif -endif - -ifeq ($(GL_DEBUG), 1) - LDFLAGS += -s GL_ASSERTIONS=1 -s GL_DEBUG=1 -endif - -ifeq ($(FS_DEBUG), 1) - LDFLAGS += -s FS_DEBUG=1 -endif - -ifeq ($(HAVE_SDL2), 1) - LIBS += -s USE_SDL=2 - DEFINES += -DHAVE_SDL2 -endif - include Makefile.common CFLAGS += $(DEF_FLAGS) -Ideps -Ideps/stb @@ -183,8 +220,10 @@ RARCH_OBJ := $(addprefix $(OBJDIR)/,$(OBJ)) all: $(TARGET) -$(TARGET): $(RARCH_OBJ) $(libretro) - @$(if $(libretro), mv -f $(libretro) $(libretro_new),) +$(libretro_new) : $(libretro) + mv -f $(libretro) $(libretro_new) + +$(TARGET): $(RARCH_OBJ) $(libretro_new) @$(if $(Q), $(shell echo echo "LD $@ \ $(libretro_new) $(LIBS) $(LDFLAGS)"),) $(Q)$(LD) -o $@ $(RARCH_OBJ) $(libretro_new) $(LIBS) $(LDFLAGS) diff --git a/Makefile.libnx b/Makefile.libnx index 56e2247ec4e5..7f52f506df65 100644 --- a/Makefile.libnx +++ b/Makefile.libnx @@ -49,7 +49,6 @@ HAVE_PATCH = 1 HAVE_CHEATS = 1 HAVE_RUNAHEAD = 1 HAVE_NETWORKING = 1 -HAVE_CLOUDSYNC = 1 HAVE_IFINFO = 1 HAVE_NETPLAYDISCOVERY = 1 HAVE_STB_FONT = 1 diff --git a/Makefile.psl1ght b/Makefile.psl1ght index ca570535c1cf..dd23cba27117 100644 --- a/Makefile.psl1ght +++ b/Makefile.psl1ght @@ -6,7 +6,7 @@ ifeq ($(strip $(PSL1GHT)),) $(error "Please set PSL1GHT in your environment. export PSL1GHT=") endif - + include $(PSL1GHT)/ppu_rules include version.all @@ -30,10 +30,17 @@ CORE_PATH = pkg/psl1ght/pkg/USRDIR/cores/CORE.SELF INCLUDE += -I. -Ideps -Ideps/stb -Ilibretro-common/include/compat/zlib -Ilibretro-common/include $(LIBPSL1GHT_INC) -Iinclude -Idefines -I$(PORTLIBS)/include -I$(PORTLIBS)/include/freetype2 LIBDIRS += -L. -L$(PORTLIBS)/lib +ifeq ($(HAVE_STATIC_DUMMY),1) + DEFINES += -DHAVE_STATIC_DUMMY + LIBS := +else + LIBS := -lretro_psl1ght +endif + MACHDEP := -D__PSL1GHT__ -D__PS3__ -mcpu=cell -CFLAGS += -Wall $(MACHDEP) $(INCLUDE) +CFLAGS += -Wall $(DEFINES) $(MACHDEP) $(INCLUDE) LDFLAGS := $(MACHDEP) -LIBS := -lretro_psl1ght -lrt -laudio -lrsx -lgcm_sys -lnet -lio -lsysutil -lsysmodule -lm -ljpgdec -lpngdec -llv2 -lnet -lnetctl -lsysfs -lfreetype -lcamera -lgem -lspurs +LIBS += -lrt -laudio -lrsx -lgcm_sys -lnet -lio -lsysutil -lsysmodule -lm -ljpgdec -lpngdec -llv2 -lnet -lnetctl -lsysfs -lfreetype -lcamera -lgem -lspurs # system platform system_platform = unix @@ -125,7 +132,7 @@ $(ELF_TARGET): $(OBJ) $(CXX) -o $@ $(LDFLAGS) $(LIBDIRS) $(OBJ) $(LIBS) create-core: $(SELF_TARGET) - cp $(SELF_TARGET) $(CORE_PATH) + cp $(SELF_TARGET) $(CORE_PATH) pkg: create-core $(PKG) --contentid $(CONTENTID) pkg/psl1ght/pkg/ $(PACKAGE_BASENAME).pkg diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000000..51ecbab70c57 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,26 @@ +# Security Policy + +## Reasonable expectations + +RetroArch is a frontend for the libretro API. The main functionality is fulfilled by invoking other binary libraries ("cores") which are not restricted by RetroArch in any way. Cores are able to read/write/delete files, spawn processes, communicate over the network. Also, source for cores is not necessarily in control by libretro team, and core binaries / RetroArch binaries are not signed. For this reason, it is a bad idea to use RetroArch or any other libretro frontend on security critical systems. + +Also, RetroArch and cores have been packaged in several ways. Content on the [official download site](https://buildbot.libretro.com/) is built from a direct mirror of the original RetroArch and core repositories, no binaries are reused. Note that source for the core repositories may be outside libretro team control. + +## Supported Versions + +For most delivery channels, libretro team does not have control over the version. The exceptions are: +- [official download site](https://buildbot.libretro.com/) +- Steam release +- Apple App Store release +- various Android app store releases +- note that Google Play Store version is years behind and can not be updated + +You may report vulnerability against any recent version, but be reasonable. + +## Reporting a Vulnerability + +Please report security vulnerabilities at libretro@gmail.com + +## Possible remediation + +Due to the variety of delivery channels, RetroArch team can not recall any given version universally. Security fixes are accepted for next release, and notice may be posted in the channels controlled by RetroArch team, depending on the severity assessed by RetroArch team. diff --git a/ai/game_ai.c b/ai/game_ai.c index e8f01968a913..6a029a8d4d0b 100644 --- a/ai/game_ai.c +++ b/ai/game_ai.c @@ -11,6 +11,7 @@ #endif #include +#include #include "../deps/game_ai_lib/GameAI.h" @@ -51,65 +52,60 @@ void game_ai_debug_log(int level, const char *fmt, ...) va_end(vp); } -void array_to_bits_16(volatile signed short * result, const bool b[16]) +void array_to_bits_16(volatile signed short *result, const bool b[16]) { for (int bit = 0; bit <= 15; bit++) - { *result |= b[bit] ? (1 << bit) : 0; - } } /* Interface to RA */ -extern signed short int game_ai_input(unsigned int port, unsigned int device, unsigned int idx, unsigned int id, signed short int result) +signed short int game_ai_input(unsigned int port, unsigned int device, + unsigned int idx, unsigned int id, signed short int result) { - if (ga == NULL) - return 0; - - if (port < GAME_AI_MAX_PLAYERS) + if (ga && (port < GAME_AI_MAX_PLAYERS)) return g_buttons_bits[port]; - return 0; } -extern void game_ai_init() +void game_ai_init(void) { - if (create_game_ai == NULL) + if (!create_game_ai) { #ifdef _WIN32 - BOOL fFreeResult, fRunTimeLinkSuccess = FALSE; + BOOL fFreeResult, fRunTimeLinkSuccess = FALSE; - g_lib_handle = LoadLibrary(TEXT("game_ai.dll")); - retro_assert(hinstLib); + g_lib_handle = LoadLibrary(TEXT("game_ai.dll")); + retro_assert(hinstLib); - char full_module_path[MAX_PATH]; - DWORD dwLen = GetModuleFileNameA(g_lib_handle, static_cast(&full_module_path), MAX_PATH); + char full_module_path[MAX_PATH]; + DWORD dwLen = GetModuleFileNameA(g_lib_handle, static_cast(&full_module_path), MAX_PATH); - if (hinstLib != NULL) - { - create_game_ai = (create_game_ai_t) GetProcAddress(hinstLib, "create_game_ai"); - retro_assert(create_game_ai); + if (hinstLib) + { + create_game_ai = (create_game_ai_t) GetProcAddress(hinstLib, "create_game_ai"); + retro_assert(create_game_ai); - destroy_game_ai = (destroy_game_ai_t) GetProcAddress(hinstLib, "destroy_game_ai"); - retro_assert(destroy_game_ai); + destroy_game_ai = (destroy_game_ai_t) GetProcAddress(hinstLib, "destroy_game_ai"); + retro_assert(destroy_game_ai); - game_ai_lib_init = (game_ai_lib_init_t) GetProcAddress(hinstLib, "game_ai_lib_init"); - retro_assert(game_ai_lib_init); + game_ai_lib_init = (game_ai_lib_init_t) GetProcAddress(hinstLib, "game_ai_lib_init"); + retro_assert(game_ai_lib_init); - game_ai_lib_think = (game_ai_lib_think_t) GetProcAddress(hinstLib, "game_ai_lib_think"); - retro_assert(game_ai_lib_think); + game_ai_lib_think = (game_ai_lib_think_t) GetProcAddress(hinstLib, "game_ai_lib_think"); + retro_assert(game_ai_lib_think); - game_ai_lib_set_show_debug = (game_ai_lib_set_show_debug_t) GetProcAddress(hinstLib, "game_ai_lib_set_show_debug"); - retro_assert(game_ai_lib_set_show_debug); + game_ai_lib_set_show_debug = (game_ai_lib_set_show_debug_t) GetProcAddress(hinstLib, "game_ai_lib_set_show_debug"); + retro_assert(game_ai_lib_set_show_debug); - game_ai_lib_set_debug_log = (game_ai_lib_set_debug_log_t) GetProcAddress(hinstLib, "game_ai_lib_set_debug_log"); - retro_assert(game_ai_lib_set_debug_log); - } + game_ai_lib_set_debug_log = (game_ai_lib_set_debug_log_t) GetProcAddress(hinstLib, "game_ai_lib_set_debug_log"); + retro_assert(game_ai_lib_set_debug_log); + } #else g_lib_handle = dlopen("./libgame_ai.so", RTLD_NOW); retro_assert(g_lib_handle); - if(g_lib_handle != NULL) + if (g_lib_handle) { dlinfo(g_lib_handle, RTLD_DI_ORIGIN, (void *) &game_ai_lib_path); @@ -135,7 +131,7 @@ extern void game_ai_init() } } -extern void game_ai_shutdown() +void game_ai_shutdown(void) { if (g_lib_handle) { @@ -152,14 +148,14 @@ extern void game_ai_shutdown() } } -extern void game_ai_load(const char * name, void * ram_ptr, int ram_size, retro_log_printf_t log) +void game_ai_load(const char * name, void * ram_ptr, int ram_size, retro_log_printf_t log) { strcpy((char *) &g_game_name[0], name); - g_ram_ptr = ram_ptr; + g_ram_ptr = ram_ptr; g_ram_size = ram_size; - g_log = log; + g_log = log; if (ga) { @@ -168,12 +164,14 @@ extern void game_ai_load(const char * name, void * ram_ptr, int ram_size, retro_ } } -extern void game_ai_think(bool override_p1, bool override_p2, bool show_debug, const void *frame_data, unsigned int frame_width, unsigned int frame_height, unsigned int frame_pitch, unsigned int pixel_format) +void game_ai_think(bool override_p1, bool override_p2, bool show_debug, + const void *frame_data, unsigned int frame_width, unsigned int frame_height, + unsigned int frame_pitch, unsigned int pixel_format) { if (ga) game_ai_lib_set_show_debug(ga, show_debug); - if (ga == NULL && g_ram_ptr != NULL) + if (!ga && g_ram_ptr) { ga = create_game_ai((char *) &g_game_name[0]); retro_assert(ga); @@ -214,7 +212,5 @@ extern void game_ai_think(bool override_p1, bool override_p2, bool show_debug, c g_frameCount=0; } else - { g_frameCount++; - } } diff --git a/ai/game_ai.h b/ai/game_ai.h index 53f39530f423..725e8f77be3f 100644 --- a/ai/game_ai.h +++ b/ai/game_ai.h @@ -1,9 +1,44 @@ -#pragma once +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * Copyright (C) 2021 - David G.F. + * + * 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 . + */ + +#ifndef RARCH_GAME_AI_H__ +#define RARCH_GAME_AI_H__ + +#include +#include #include -signed short int game_ai_input(unsigned int port, unsigned int device, unsigned int idx, unsigned int id, signed short int result); -void game_ai_init(); -void game_ai_shutdown(); -void game_ai_load(const char * name, void * ram_ptr, int ram_size, retro_log_printf_t log); -void game_ai_think(bool override_p1, bool override_p2, bool show_debug, const void *frame_data, unsigned int frame_width, unsigned int frame_height, unsigned int frame_pitch, unsigned int pixel_format); \ No newline at end of file +RETRO_BEGIN_DECLS + +signed short int game_ai_input(unsigned int port, unsigned int device, + unsigned int idx, unsigned int id, signed short int result); + +void game_ai_init(void); + +void game_ai_shutdown(void); + +void game_ai_load(const char * name, void * ram_ptr, + int ram_size, retro_log_printf_t log); + +void game_ai_think(bool override_p1, bool override_p2, bool show_debug, + const void *frame_data, unsigned int frame_w, unsigned int frame_h, + unsigned int frame_pitch, unsigned int pixel_format); + +RETRO_END_DECLS + +#endif diff --git a/audio/audio_defines.h b/audio/audio_defines.h index 18de5f033820..ca2a8e162ac6 100644 --- a/audio/audio_defines.h +++ b/audio/audio_defines.h @@ -161,7 +161,13 @@ enum audio_driver_state_flags * @see audio_driver_t::write_avail * @see audio_driver_t::buffer_size */ - AUDIO_FLAG_CONTROL = (1 << 5) + AUDIO_FLAG_CONTROL = (1 << 5), + + /** + * Indicates that the audio driver is forcing gain to 0. + * Used for temporary rewind and fast-forward muting. + */ + AUDIO_FLAG_MUTED = (1 << 6) }; typedef struct audio_statistics diff --git a/audio/audio_driver.c b/audio/audio_driver.c index 01a727eb95f6..52d9643ff4c9 100644 --- a/audio/audio_driver.c +++ b/audio/audio_driver.c @@ -216,14 +216,6 @@ bool audio_driver_is_ai_service_speech_running(void) } #endif -static enum resampler_quality audio_driver_get_resampler_quality( - settings_t *settings) -{ - if (settings) - return (enum resampler_quality)settings->uints.audio_resampler_quality; - return RESAMPLER_QUALITY_DONTCARE; -} - static bool audio_driver_free_devices_list(void) { audio_driver_state_t *audio_st = &audio_driver_st; @@ -344,24 +336,17 @@ static void audio_driver_mixer_deinit(void) bool audio_driver_deinit(void) { - settings_t *settings = config_get_ptr(); #ifdef HAVE_AUDIOMIXER audio_driver_mixer_deinit(); #endif audio_driver_free_devices_list(); - return audio_driver_deinit_internal( - settings->bools.audio_enable); + return audio_driver_deinit_internal(config_get_ptr()->bools.audio_enable); } -bool audio_driver_find_driver( - void *settings_data, - const char *prefix, - bool verbosity_enabled) +bool audio_driver_find_driver(const char *audio_drv, + const char *prefix, bool verbosity_enabled) { - settings_t *settings = (settings_t*)settings_data; - int i = (int)driver_find_index( - "audio_driver", - settings->arrays.audio_driver); + int i = (int)driver_find_index("audio_driver", audio_drv); if (i >= 0) audio_driver_st.current_audio = (const audio_driver_t*) @@ -372,8 +357,7 @@ bool audio_driver_find_driver( if (verbosity_enabled) { unsigned d; - RARCH_ERR("Couldn't find any %s named \"%s\"\n", prefix, - settings->arrays.audio_driver); + RARCH_ERR("Couldn't find any %s named \"%s\"\n", prefix, audio_drv); RARCH_LOG_OUTPUT("Available %ss are:\n", prefix); for (d = 0; audio_drivers[d]; d++) { @@ -400,22 +384,20 @@ bool audio_driver_find_driver( * @param audio_st The overall state of the audio driver. * @param slowmotion_ratio The factor by which slow motion extends the core's runtime * (e.g. a value of 2 means the core is running at half speed). - * @param audio_fastforward_mute True if no audio should be output while the game is in fast-forward. * @param data Audio output data that was most recently provided by the core. * @param samples The size of \c data, in samples. - * @param is_slowmotion True if the player is currently running the game in slow motion. - * @param is_fastmotion True if the player is currently running the game in fast-forward. + * @param is_slowmotion True if the core is currently running in slow motion. + * @param is_fastmotion True if the core is currently running in fast-forward. **/ static void audio_driver_flush( audio_driver_state_t *audio_st, float slowmotion_ratio, - bool audio_fastforward_mute, const int16_t *data, size_t samples, bool is_slowmotion, bool is_fastforward) { struct resampler_data src_data; - float audio_volume_gain = (audio_st->mute_enable || - (audio_fastforward_mute && is_fastforward)) + float audio_volume_gain = + (audio_st->mute_enable || audio_st->flags & AUDIO_FLAG_MUTED) ? 0.0f : audio_st->volume_gain; @@ -598,9 +580,7 @@ const char *audio_driver_mixer_get_stream_name(unsigned i) #endif -bool audio_driver_init_internal( - void *settings_data, - bool audio_cb_inited) +bool audio_driver_init_internal(void *settings_data, bool audio_cb_inited) { unsigned new_rate = 0; float *out_samples_buf = NULL; @@ -612,8 +592,8 @@ bool audio_driver_init_internal( float slowmotion_ratio = settings->floats.slowmotion_ratio; unsigned setting_audio_latency = settings->uints.audio_latency; unsigned runloop_audio_latency = runloop_state_get_ptr()->audio_latency; - unsigned audio_latency = (runloop_audio_latency > setting_audio_latency) ? - runloop_audio_latency : setting_audio_latency; + unsigned audio_latency = (runloop_audio_latency > setting_audio_latency) + ? runloop_audio_latency : setting_audio_latency; #ifdef HAVE_REWIND int16_t *rewind_buf = NULL; #endif @@ -658,7 +638,7 @@ bool audio_driver_init_internal( else audio_driver_st.flags |= AUDIO_FLAG_ACTIVE; - if (!(audio_driver_find_driver(settings, + if (!(audio_driver_find_driver(settings->arrays.audio_driver, "audio driver", verbosity_enabled))) { RARCH_ERR("Failed to initialize audio driver.\n"); @@ -679,7 +659,7 @@ bool audio_driver_init_internal( if (!audio_init_thread( &audio_driver_st.current_audio, &audio_driver_st.context_audio_data, - *settings->arrays.audio_device + *settings->arrays.audio_device ? settings->arrays.audio_device : NULL, settings->uints.audio_output_sample_rate, &new_rate, audio_latency, @@ -694,8 +674,8 @@ bool audio_driver_init_internal( #endif { audio_driver_st.context_audio_data = - audio_driver_st.current_audio->init(*settings->arrays.audio_device ? - settings->arrays.audio_device : NULL, + audio_driver_st.current_audio->init(*settings->arrays.audio_device + ? settings->arrays.audio_device : NULL, settings->uints.audio_output_sample_rate, audio_latency, settings->uints.audio_block_frames, @@ -704,7 +684,8 @@ bool audio_driver_init_internal( } if (new_rate != 0) - configuration_set_int(settings, settings->uints.audio_output_sample_rate, new_rate); + configuration_set_int(settings, + settings->uints.audio_output_sample_rate, new_rate); if (!audio_driver_st.context_audio_data) { @@ -735,7 +716,8 @@ bool audio_driver_init_internal( /* Should never happen. */ RARCH_WARN("[Audio]: Input rate is invalid (%.3f Hz)." " Using output rate (%u Hz).\n", - audio_driver_st.input, settings->uints.audio_output_sample_rate); + audio_driver_st.input, + settings->uints.audio_output_sample_rate); audio_driver_st.input = settings->uints.audio_output_sample_rate; } @@ -751,8 +733,7 @@ bool audio_driver_init_internal( else audio_driver_st.resampler_ident[0] = '\0'; - audio_driver_st.resampler_quality = - audio_driver_get_resampler_quality(settings); + audio_driver_st.resampler_quality = (enum resampler_quality)settings->uints.audio_resampler_quality; if (!retro_resampler_realloc( &audio_driver_st.resampler_data, @@ -850,7 +831,6 @@ void audio_driver_sample(int16_t left, int16_t right) || !(audio_st->output_samples_buf))) audio_driver_flush(audio_st, config_get_ptr()->floats.slowmotion_ratio, - config_get_ptr()->bools.audio_fastforward_mute, audio_st->output_samples_conv_buf, audio_st->data_ptr, (runloop_flags & RUNLOOP_FLAG_SLOWMOTION) ? true : false, @@ -900,7 +880,6 @@ size_t audio_driver_sample_batch(const int16_t *data, size_t frames) || !(audio_st->output_samples_buf))) audio_driver_flush(audio_st, config_get_ptr()->floats.slowmotion_ratio, - config_get_ptr()->bools.audio_fastforward_mute, data, frames_to_write << 1, (runloop_flags & RUNLOOP_FLAG_SLOWMOTION) ? true : false, @@ -1487,7 +1466,8 @@ void audio_driver_mixer_play_scroll_sound(bool direction_up) bool audio_enable_menu = settings->bools.audio_enable_menu; bool audio_enable_menu_scroll = settings->bools.audio_enable_menu_scroll; if (audio_enable_menu && audio_enable_menu_scroll) - audio_driver_mixer_play_menu_sound(direction_up ? AUDIO_MIXER_SYSTEM_SLOT_UP : AUDIO_MIXER_SYSTEM_SLOT_DOWN); + audio_driver_mixer_play_menu_sound(direction_up + ? AUDIO_MIXER_SYSTEM_SLOT_UP : AUDIO_MIXER_SYSTEM_SLOT_DOWN); } void audio_driver_mixer_play_stream_looped(unsigned i) @@ -1615,18 +1595,18 @@ bool audio_driver_disable_callback(void) bool audio_driver_callback(void) { - settings_t *settings = config_get_ptr(); + bool menu_pause_libretro = config_get_ptr()->bools.menu_pause_libretro; uint32_t runloop_flags = runloop_get_flags(); bool runloop_paused = (runloop_flags & RUNLOOP_FLAG_PAUSED) ? true : false; #ifdef HAVE_MENU #ifdef HAVE_NETWORKING bool core_paused = runloop_paused - || (settings->bools.menu_pause_libretro + || (menu_pause_libretro && (menu_state_get_ptr()->flags & MENU_ST_FLAG_ALIVE) && netplay_driver_ctl(RARCH_NETPLAY_CTL_ALLOW_PAUSE, NULL)); #else bool core_paused = runloop_paused - || (settings->bools.menu_pause_libretro + || (menu_pause_libretro && (menu_state_get_ptr()->flags & MENU_ST_FLAG_ALIVE)); #endif #else @@ -1737,18 +1717,14 @@ void audio_driver_frame_is_reverse(void) || !(audio_st->flags & AUDIO_FLAG_ACTIVE) || !(audio_st->output_samples_buf))) if (!(audio_st->flags & AUDIO_FLAG_SUSPENDED)) - { - settings_t *settings = config_get_ptr(); audio_driver_flush(audio_st, - settings->floats.slowmotion_ratio, - settings->bools.audio_fastforward_mute, + config_get_ptr()->floats.slowmotion_ratio, audio_st->rewind_buf + audio_st->rewind_ptr, audio_st->rewind_size - audio_st->rewind_ptr, (runloop_flags & RUNLOOP_FLAG_SLOWMOTION) ? true : false, (runloop_flags & RUNLOOP_FLAG_FASTMOTION) ? true : false); - } } #endif @@ -1880,6 +1856,7 @@ void audio_driver_menu_sample(void) { static int16_t samples_buf[1024] = {0}; settings_t *settings = config_get_ptr(); + float slowmotion_ratio = settings->floats.slowmotion_ratio; video_driver_state_t *video_st = video_state_get_ptr(); uint32_t runloop_flags = runloop_get_flags(); recording_state_t *recording_st = recording_state_get_ptr(); @@ -1910,17 +1887,16 @@ void audio_driver_menu_sample(void) } if (check_flush) audio_driver_flush(audio_st, - settings->floats.slowmotion_ratio, - settings->bools.audio_fastforward_mute, + slowmotion_ratio, samples_buf, 1024, (runloop_flags & RUNLOOP_FLAG_SLOWMOTION) ? true : false, (runloop_flags & RUNLOOP_FLAG_FASTMOTION) ? true : false); sample_count -= 1024; } - if ( recording_st->data && - recording_st->driver && - recording_st->driver->push_audio) + if ( recording_st->data + && recording_st->driver + && recording_st->driver->push_audio) { struct record_audio_data ffemu_data; @@ -1932,10 +1908,7 @@ void audio_driver_menu_sample(void) } if (check_flush) audio_driver_flush(audio_st, - settings->floats.slowmotion_ratio, - settings->bools.audio_fastforward_mute, - samples_buf, - sample_count, + slowmotion_ratio, samples_buf, sample_count, (runloop_flags & RUNLOOP_FLAG_SLOWMOTION) ? true : false, (runloop_flags & RUNLOOP_FLAG_FASTMOTION) ? true : false); } diff --git a/audio/audio_driver.h b/audio/audio_driver.h index 1a0275863e31..8e2492decc1f 100644 --- a/audio/audio_driver.h +++ b/audio/audio_driver.h @@ -110,7 +110,7 @@ typedef struct audio_driver * Unless said otherwise with set_nonblock_state(), all writes * are blocking, and it should block till it has written all frames. */ - ssize_t (*write)(void *data, const void *buf, size_t len); + ssize_t (*write)(void *data, const void *s, size_t len); /** * Temporarily pauses the audio driver. @@ -350,10 +350,8 @@ bool audio_driver_init_internal( bool audio_driver_deinit(void); -bool audio_driver_find_driver( - void *settings_data, - const char *prefix, - bool verbosity_enabled); +bool audio_driver_find_driver(const char *audio_drv, + const char *prefix, bool verbosity_enabled); /** * audio_driver_sample: diff --git a/audio/common/pipewire.c b/audio/common/pipewire.c index e931254f52d5..4a3c970bbd34 100644 --- a/audio/common/pipewire.c +++ b/audio/common/pipewire.c @@ -214,8 +214,11 @@ void pipewire_core_deinit(pipewire_core_t *pw) pw_core_disconnect(pw->core); } - spa_clear_ptr(pw->ctx, pw_context_destroy); - spa_clear_ptr(pw->thread_loop, pw_thread_loop_destroy); + if (pw->ctx) + pw_context_destroy(pw->ctx); + + if (pw->thread_loop) + pw_thread_loop_destroy(pw->thread_loop); if (pw->devicelist) string_list_free(pw->devicelist); diff --git a/audio/drivers/alsathread.c b/audio/drivers/alsathread.c index c836a9aeec6f..c9c13d21c78e 100644 --- a/audio/drivers/alsathread.c +++ b/audio/drivers/alsathread.c @@ -157,7 +157,7 @@ static void *alsa_thread_init(const char *device, return NULL; } -static ssize_t alsa_thread_write(void *data, const void *buf, size_t len) +static ssize_t alsa_thread_write(void *data, const void *s, size_t len) { ssize_t written = 0; alsa_thread_t *alsa = (alsa_thread_t*)data; @@ -173,12 +173,12 @@ static ssize_t alsa_thread_write(void *data, const void *buf, size_t len) avail = FIFO_WRITE_AVAIL(alsa->info.buffer); written = MIN(avail, len); - fifo_write(alsa->info.buffer, buf, written); + fifo_write(alsa->info.buffer, s, written); slock_unlock(alsa->info.fifo_lock); } else { - while (written < len && !alsa->info.thread_dead) + while (written < (ssize_t)len && !alsa->info.thread_dead) { size_t avail; slock_lock(alsa->info.fifo_lock); @@ -196,7 +196,7 @@ static ssize_t alsa_thread_write(void *data, const void *buf, size_t len) { size_t write_amt = MIN(len - written, avail); fifo_write(alsa->info.buffer, - (const char*)buf + written, write_amt); + (const char*)s + written, write_amt); slock_unlock(alsa->info.fifo_lock); written += write_amt; } diff --git a/audio/drivers/audioio.c b/audio/drivers/audioio.c index bec10582e54b..910b5c6a2438 100644 --- a/audio/drivers/audioio.c +++ b/audio/drivers/audioio.c @@ -82,7 +82,7 @@ static void *audioio_init(const char *device, unsigned rate, unsigned latency, return NULL; } -static ssize_t audioio_write(void *data, const void *buf, size_t len) +static ssize_t audioio_write(void *data, const void *s, size_t len) { ssize_t written; int *fd = (int*)data; @@ -90,7 +90,7 @@ static ssize_t audioio_write(void *data, const void *buf, size_t len) if (len == 0) return 0; - if ((written = write(*fd, buf, len)) < 0) + if ((written = write(*fd, s, len)) < 0) { if (errno == EAGAIN && (fcntl(*fd, F_GETFL) & O_NONBLOCK)) return 0; diff --git a/audio/drivers/oss.c b/audio/drivers/oss.c index 70cf801f97a7..1bda5b63feb5 100644 --- a/audio/drivers/oss.c +++ b/audio/drivers/oss.c @@ -103,7 +103,7 @@ static void *oss_init(const char *device, return NULL; } -static ssize_t oss_write(void *data, const void *buf, size_t len) +static ssize_t oss_write(void *data, const void *s, size_t len) { ssize_t ret; oss_audio_t *ossaudio = (oss_audio_t*)data; @@ -111,7 +111,7 @@ static ssize_t oss_write(void *data, const void *buf, size_t len) if (len == 0) return 0; - if ((ret = write(ossaudio->fd, buf, len)) < 0) + if ((ret = write(ossaudio->fd, s, len)) < 0) { if (errno == EAGAIN && (fcntl(ossaudio->fd, F_GETFL) & O_NONBLOCK)) return 0; diff --git a/audio/drivers/ps2_audio.c b/audio/drivers/ps2_audio.c index d073d1aa766f..4c841b09feac 100644 --- a/audio/drivers/ps2_audio.c +++ b/audio/drivers/ps2_audio.c @@ -71,12 +71,12 @@ static void ps2_audio_free(void *data) free(ps2); } -static ssize_t ps2_audio_write(void *data, const void *buf, size_t len) +static ssize_t ps2_audio_write(void *data, const void *s, size_t len) { ps2_audio_t* ps2 = (ps2_audio_t*)data; if (!ps2->running) return -1; - return audsrv_play_audio(buf, len); + return audsrv_play_audio(s, len); } static bool ps2_audio_alive(void *data) diff --git a/audio/drivers/ps3_audio.c b/audio/drivers/ps3_audio.c index eb2c9a08c811..9168629a68bd 100644 --- a/audio/drivers/ps3_audio.c +++ b/audio/drivers/ps3_audio.c @@ -142,7 +142,7 @@ static void *ps3_audio_init(const char *device, return data; } -static ssize_t ps3_audio_write(void *data, const void *buf, size_t len) +static ssize_t ps3_audio_write(void *data, const void *s, size_t len) { ps3_audio_t *aud = data; @@ -156,9 +156,8 @@ static ssize_t ps3_audio_write(void *data, const void *buf, size_t len) sysLwCondWait(&aud->cond, 0); sysLwMutexLock(&aud->lock, PS3_SYS_NO_TIMEOUT); - fifo_write(aud->buffer, buf, len); + fifo_write(aud->buffer, s, len); sysLwMutexUnlock(&aud->lock); - return len; } diff --git a/audio/drivers/psp_audio.c b/audio/drivers/psp_audio.c index 7a2e29aa1af6..9bd2089d7b9c 100644 --- a/audio/drivers/psp_audio.c +++ b/audio/drivers/psp_audio.c @@ -202,7 +202,7 @@ static void psp_audio_free(void *data) } -static ssize_t psp_audio_write(void *data, const void *buf, size_t len) +static ssize_t psp_audio_write(void *data, const void *s, size_t len) { psp_audio_t* psp = (psp_audio_t*)data; uint16_t write_pos = psp->write_pos; @@ -227,14 +227,14 @@ static ssize_t psp_audio_write(void *data, const void *buf, size_t len) slock_lock(psp->fifo_lock); if ((write_pos + sampleCount) > AUDIO_BUFFER_SIZE) { - memcpy(psp->buffer + write_pos, buf, + memcpy(psp->buffer + write_pos, s, (AUDIO_BUFFER_SIZE - write_pos) * sizeof(uint32_t)); - memcpy(psp->buffer, (uint32_t*) buf + + memcpy(psp->buffer, (uint32_t*)s + (AUDIO_BUFFER_SIZE - write_pos), (write_pos + sampleCount - AUDIO_BUFFER_SIZE) * sizeof(uint32_t)); } else - memcpy(psp->buffer + write_pos, buf, len); + memcpy(psp->buffer + write_pos, s, len); write_pos += sampleCount; write_pos &= AUDIO_BUFFER_SIZE_MASK; diff --git a/audio/drivers/sdl_audio.c b/audio/drivers/sdl_audio.c index 3be72b79044f..708cfee40939 100644 --- a/audio/drivers/sdl_audio.c +++ b/audio/drivers/sdl_audio.c @@ -110,8 +110,6 @@ static void *sdl_audio_init(const char *device, sdl_audio_t *sdl = NULL; uint32_t sdl_subsystem_flags = SDL_WasInit(0); - (void)device; - /* Initialise audio subsystem, if required */ if (sdl_subsystem_flags == 0) { @@ -210,7 +208,7 @@ static void *sdl_audio_init(const char *device, return NULL; } -static ssize_t sdl_audio_write(void *data, const void *buf, size_t len) +static ssize_t sdl_audio_write(void *data, const void *s, size_t len) { ssize_t ret = 0; sdl_audio_t *sdl = (sdl_audio_t*)data; @@ -222,7 +220,7 @@ static ssize_t sdl_audio_write(void *data, const void *buf, size_t len) SDL_LockAudioDevice(sdl->speaker_device); /* Stop the SDL speaker thread from running */ avail = FIFO_WRITE_AVAIL(sdl->speaker_buffer); write_amt = (avail > len) ? len : avail; /* Enqueue as much data as we can */ - fifo_write(sdl->speaker_buffer, buf, write_amt); + fifo_write(sdl->speaker_buffer, s, write_amt); SDL_UnlockAudioDevice(sdl->speaker_device); /* Let the speaker thread run again */ ret = write_amt; /* If the queue was full...well, too bad. */ } @@ -256,7 +254,7 @@ static ssize_t sdl_audio_write(void *data, const void *buf, size_t len) else { size_t write_amt = len - written > avail ? avail : len - written; - fifo_write(sdl->speaker_buffer, (const char*)buf + written, write_amt); + fifo_write(sdl->speaker_buffer, (const char*)s + written, write_amt); /* Enqueue as many samples as we have available without overflowing the queue */ SDL_UnlockAudioDevice(sdl->speaker_device); /* Let the SDL speaker thread run again */ written += write_amt; diff --git a/audio/drivers/switch_audio.c b/audio/drivers/switch_audio.c index c622e8ac063b..7a91b5aa5a90 100644 --- a/audio/drivers/switch_audio.c +++ b/audio/drivers/switch_audio.c @@ -73,10 +73,10 @@ static size_t switch_audio_buffer_size(void *data) #endif } -static ssize_t switch_audio_write(void *data, const void *buf, size_t len) +static ssize_t switch_audio_write(void *data, const void *s, size_t len) { size_t to_write = len; - switch_audio_t *swa = (switch_audio_t*) data; + switch_audio_t *swa = (switch_audio_t*)data; if (!swa) return -1; @@ -125,9 +125,9 @@ static ssize_t switch_audio_write(void *data, const void *buf, size_t len) to_write = switch_audio_buffer_size(NULL) - swa->current_buffer->data_size; #ifndef HAVE_LIBNX - memcpy(((uint8_t*) swa->current_buffer->sample_data) + swa->current_buffer->data_size, buf, to_write); + memcpy(((uint8_t*) swa->current_buffer->sample_data) + swa->current_buffer->data_size, s, to_write); #else - memcpy(((uint8_t*) swa->current_buffer->buffer) + swa->current_buffer->data_size, buf, to_write); + memcpy(((uint8_t*) swa->current_buffer->buffer) + swa->current_buffer->data_size, s, to_write); #endif swa->current_buffer->data_size += to_write; swa->current_buffer->buffer_size = switch_audio_buffer_size(NULL); diff --git a/audio/drivers/switch_libnx_audren_audio.c b/audio/drivers/switch_libnx_audren_audio.c index 3f445eeeba64..e638da66ee7a 100644 --- a/audio/drivers/switch_libnx_audren_audio.c +++ b/audio/drivers/switch_libnx_audren_audio.c @@ -186,7 +186,7 @@ static ssize_t libnx_audren_audio_get_free_wavebuf_idx(libnx_audren_t* aud) } static size_t libnx_audren_audio_append( - libnx_audren_t* aud, const void *buf, size_t len) + libnx_audren_t* aud, const void *s, size_t len) { void *dstbuf = NULL; ssize_t free_idx = -1; @@ -206,7 +206,7 @@ static size_t libnx_audren_audio_append( len = aud->buffer_size - aud->current_size; dstbuf = aud->current_pool_ptr + aud->current_size; - memcpy(dstbuf, buf, len); + memcpy(dstbuf, s, len); armDCacheFlush(dstbuf, len); aud->current_size += len; diff --git a/audio/drivers/switch_thread_audio.c b/audio/drivers/switch_thread_audio.c index 37491f86f161..b11edf976b92 100644 --- a/audio/drivers/switch_thread_audio.c +++ b/audio/drivers/switch_thread_audio.c @@ -338,7 +338,7 @@ static void switch_thread_audio_free(void *data) swa = NULL; } -static ssize_t switch_thread_audio_write(void *data, const void *buf, size_t len) +static ssize_t switch_thread_audio_write(void *data, const void *s, size_t len) { size_t avail, written; switch_thread_audio_t *swa = (switch_thread_audio_t *)data; @@ -352,7 +352,7 @@ static ssize_t switch_thread_audio_write(void *data, const void *buf, size_t len avail = FIFO_WRITE_AVAIL(swa->fifo); written = MIN(avail, len); if (written > 0) - fifo_write(swa->fifo, buf, written); + fifo_write(swa->fifo, s, written); compat_mutex_unlock(&swa->fifoLock); } else @@ -373,7 +373,7 @@ static ssize_t switch_thread_audio_write(void *data, const void *buf, size_t len else { size_t write_amt = MIN(len - written, avail); - fifo_write(swa->fifo, (const char*)buf + written, write_amt); + fifo_write(swa->fifo, (const char*)s + written, write_amt); compat_mutex_unlock(&swa->fifoLock); written += write_amt; } diff --git a/audio/drivers/wasapi.c b/audio/drivers/wasapi.c index 49f588010146..434640763fd2 100644 --- a/audio/drivers/wasapi.c +++ b/audio/drivers/wasapi.c @@ -59,6 +59,7 @@ static void *wasapi_init(const char *dev_id, unsigned rate, unsigned latency, settings_t *settings = config_get_ptr(); bool float_format = settings->bools.audio_wasapi_float_format; bool exclusive_mode = settings->bools.audio_wasapi_exclusive_mode; + bool audio_sync = settings->bools.audio_sync; unsigned sh_buffer_length = settings->uints.audio_wasapi_sh_buffer_length; wasapi_t *w = (wasapi_t*)calloc(1, sizeof(wasapi_t)); @@ -140,7 +141,7 @@ static void *wasapi_init(const char *dev_id, unsigned rate, unsigned latency, goto error; w->flags |= WASAPI_FLG_RUNNING; - if (settings->bools.audio_sync) + if (audio_sync) w->flags &= ~(WASAPI_FLG_NONBLOCK); else w->flags |= (WASAPI_FLG_NONBLOCK); diff --git a/audio/drivers/xaudio.c b/audio/drivers/xaudio.c index 0e0cc6508eb3..ac9f85e81a1a 100644 --- a/audio/drivers/xaudio.c +++ b/audio/drivers/xaudio.c @@ -341,12 +341,12 @@ static void *xa_init(const char *device, unsigned rate, unsigned latency, return xa; } -static ssize_t xa_write(void *data, const void *buf, size_t len) +static ssize_t xa_write(void *data, const void *s, size_t len) { unsigned bytes = len; xa_t *xa = (xa_t*)data; xaudio2_t *handle = xa->xa; - const uint8_t *buffer = (const uint8_t*)buf; + const uint8_t *buffer = (const uint8_t*)s; if (xa->flags & XA2_FLAG_NONBLOCK) { diff --git a/audio/drivers/xenon360_audio.c b/audio/drivers/xenon360_audio.c index 04bce07d8225..c6f38b8f4df4 100644 --- a/audio/drivers/xenon360_audio.c +++ b/audio/drivers/xenon360_audio.c @@ -57,11 +57,11 @@ static INLINE uint32_t bswap_32(uint32_t val) ((val >> 8) & 0xff00) | ((val << 8) & 0xff0000); } -static ssize_t xenon360_audio_write(void *data, const void *buf, size_t len) +static ssize_t xenon360_audio_write(void *data, const void *s, size_t len) { size_t written = 0, i; - const uint32_t *in_buf = buf; - xenon_audio_t *xa = data; + const uint32_t *in_buf = s; + xenon_audio_t *xa = data; for (i = 0; i < (len >> 2); i++) xa->buffer[i] = bswap_32(in_buf[i]); diff --git a/audio/drivers_microphone/alsa.c b/audio/drivers_microphone/alsa.c index 1e29ae4d3aca..139e3b09d593 100644 --- a/audio/drivers_microphone/alsa.c +++ b/audio/drivers_microphone/alsa.c @@ -21,7 +21,6 @@ #include "audio/microphone_driver.h" #include "verbosity.h" - #define BYTES_TO_FRAMES(bytes, frame_bits) ((bytes) * 8 / frame_bits) #define FRAMES_TO_BYTES(frames, frame_bits) ((frames) * frame_bits / 8) diff --git a/audio/drivers_microphone/wasapi.c b/audio/drivers_microphone/wasapi.c index 94bdd74b6340..775a7c9743a2 100644 --- a/audio/drivers_microphone/wasapi.c +++ b/audio/drivers_microphone/wasapi.c @@ -90,18 +90,14 @@ static void wasapi_microphone_close_mic(void *driver_context, void *mic_context) static void *wasapi_microphone_init(void) { - settings_t *settings = config_get_ptr(); wasapi_microphone_t *wasapi = (wasapi_microphone_t*)calloc(1, sizeof(wasapi_microphone_t)); - if (!wasapi) { RARCH_ERR("[WASAPI mic]: Failed to allocate microphone driver context\n"); return NULL; } - - wasapi->nonblock = !settings->bools.audio_sync; + wasapi->nonblock = !config_get_ptr()->bools.audio_sync; RARCH_DBG("[WASAPI mic]: Initialized microphone driver context.\n"); - return wasapi; } diff --git a/audio/microphone_driver.c b/audio/microphone_driver.c index 874704a3e8eb..f3f7dc3d11a6 100644 --- a/audio/microphone_driver.c +++ b/audio/microphone_driver.c @@ -143,9 +143,7 @@ const char *config_get_microphone_driver_options(void) return char_list_new_special(STRING_LIST_MICROPHONE_DRIVERS, NULL); } -bool microphone_driver_find_driver( - void *settings_data, - const char *prefix, +bool microphone_driver_find_driver(void *settings_data, const char *prefix, bool verbosity_enabled) { settings_t *settings = (settings_t*)settings_data; @@ -184,21 +182,23 @@ bool microphone_driver_find_driver( return true; } -static void mic_driver_microphone_handle_init(retro_microphone_t *microphone, const retro_microphone_params_t *params) +static void mic_driver_microphone_handle_init(retro_microphone_t *microphone, + const retro_microphone_params_t *params) { if (microphone) { - const settings_t *settings = config_get_ptr(); - microphone->microphone_context = NULL; - microphone->flags = MICROPHONE_FLAG_ACTIVE; - microphone->sample_buffer = NULL; - microphone->sample_buffer_length = 0; - - microphone->requested_params.rate = params ? params->rate : settings->uints.microphone_sample_rate; - microphone->actual_params.rate = 0; + const settings_t *settings = config_get_ptr(); + unsigned microphone_sample_rate = settings->uints.microphone_sample_rate; + microphone->microphone_context = NULL; + microphone->flags = MICROPHONE_FLAG_ACTIVE; + microphone->sample_buffer = NULL; + microphone->sample_buffer_length = 0; + + microphone->requested_params.rate = params ? params->rate : microphone_sample_rate; + microphone->actual_params.rate = 0; /* We don't set the actual parameters until we actually open the mic. * (Remember, the core can request one before the driver is ready.) */ - microphone->effective_params.rate = params ? params->rate : settings->uints.microphone_sample_rate; + microphone->effective_params.rate = params ? params->rate : microphone_sample_rate; /* We set the effective parameters because * the frontend has to do what it can * to give the core what it asks for. */ @@ -253,14 +253,6 @@ static void mic_driver_microphone_handle_free(retro_microphone_t *microphone, bo /* Do NOT free the microphone handle itself! It's allocated statically! */ } -static enum resampler_quality microphone_driver_get_resampler_quality( - settings_t *settings) -{ - if (settings) - return (enum resampler_quality)settings->uints.microphone_resampler_quality; - return RESAMPLER_QUALITY_DONTCARE; -} - bool microphone_driver_init_internal(void *settings_data) { settings_t *settings = (settings_t*)settings_data; @@ -329,7 +321,7 @@ bool microphone_driver_init_internal(void *settings_data) else mic_st->resampler_ident[0] = '\0'; - mic_st->resampler_quality = microphone_driver_get_resampler_quality(settings); + mic_st->resampler_quality = (enum resampler_quality)settings->uints.microphone_resampler_quality; RARCH_LOG("[Microphone]: Initialized microphone driver.\n"); @@ -710,15 +702,13 @@ retro_microphone_t *microphone_driver_open_mic(const retro_microphone_params_t * void *driver_context = mic_st->driver_context; if (!settings) - { - RARCH_ERR("[Microphone]: Failed to open microphone due to uninitialized config.\n"); return NULL; - } + /* Not checking mic_st->flags because they might not be set yet; + * don't forget, the core can ask for a mic + * before the audio driver is ready to create one. */ if (!settings->bools.microphone_enable) - { /* Not checking mic_st->flags because they might not be set yet; - * don't forget, the core can ask for a mic - * before the audio driver is ready to create one. */ + { RARCH_DBG("[Microphone]: Refused to open microphone because it's disabled in the settings.\n"); return NULL; } @@ -729,8 +719,8 @@ retro_microphone_t *microphone_driver_open_mic(const retro_microphone_params_t * return NULL; } - if (!mic_driver && - (string_is_equal(settings->arrays.microphone_driver, "null") + if ( !mic_driver + && (string_is_equal(settings->arrays.microphone_driver, "null") || string_is_empty(settings->arrays.microphone_driver))) { /* If the mic driver hasn't been initialized, but it's not going to be... */ RARCH_ERR("[Microphone]: Cannot open microphone as the driver won't be initialized.\n"); @@ -756,8 +746,9 @@ retro_microphone_t *microphone_driver_open_mic(const retro_microphone_params_t * * But the user still wants a handle, so we'll give them one. */ mic_driver_microphone_handle_init(&mic_st->microphone, params); - /* If driver_context is NULL, the handle won't have a valid microphone context (but we'll create one later) */ + /* If driver_context is NULL, the handle won't have + * a valid microphone context (but we'll create one later) */ if (driver_context) { /* If the microphone driver is ready to open a microphone... */ diff --git a/autosave.h b/autosave.h index 1421d6043683..12324b819f96 100644 --- a/autosave.h +++ b/autosave.h @@ -37,7 +37,7 @@ void autosave_lock(void); **/ void autosave_unlock(void); -bool autosave_init(void); +bool autosave_init(bool compress_files, unsigned autosave_interval); void autosave_deinit(void); diff --git a/bluetooth/drivers/bluetoothctl.c b/bluetooth/drivers/bluetoothctl.c index 20e3919d0e56..16d04cc2924d 100644 --- a/bluetooth/drivers/bluetoothctl.c +++ b/bluetooth/drivers/bluetoothctl.c @@ -225,8 +225,14 @@ static bool bluetoothctl_remove_device(void *data, unsigned idx) string_list_free(list); snprintf(btctl->command, sizeof(btctl->command), "\ - echo -e \"disconnect %s\\nremove %s\\n\" | bluetoothctl", - device, device); + bluetoothctl -- disconnect %s", + device); + + pclose(popen(btctl->command, "r")); + + snprintf(btctl->command, sizeof(btctl->command), "\ + bluetoothctl -- remove %s", + device); pclose(popen(btctl->command, "r")); diff --git a/camera/camera_driver.c b/camera/camera_driver.c index 6925328ad2a7..68703321e688 100644 --- a/camera/camera_driver.c +++ b/camera/camera_driver.c @@ -49,7 +49,7 @@ const camera_driver_t *camera_drivers[] = { #ifdef HAVE_V4L2 &camera_v4l2, #endif -#ifdef HAVE_PIPEWIRE +#ifdef HAVE_PIPEWIRE_STABLE &camera_pipewire, #endif #ifdef EMSCRIPTEN diff --git a/cheat_manager.c b/cheat_manager.c index a855ab25b6f5..95d3a5c12596 100644 --- a/cheat_manager.c +++ b/cheat_manager.c @@ -43,7 +43,6 @@ #include "cheat_manager.h" #include "msg_hash.h" -#include "configuration.h" #include "retroarch.h" #include "runloop.h" #include "dynamic.h" @@ -77,10 +76,9 @@ static void cheat_manager_pause_cheevos(void) } #endif -void cheat_manager_apply_cheats(void) +void cheat_manager_apply_cheats(bool notification_show_cheats_applied) { unsigned i, idx = 0; - settings_t *settings = config_get_ptr(); cheat_manager_t *cheat_st = &cheat_manager_state; if (!cheat_st->cheats) @@ -104,7 +102,7 @@ void cheat_manager_apply_cheats(void) } } - if (cheat_st->size > 0 && settings->bools.notification_show_cheats_applied) + if (cheat_st->size > 0 && notification_show_cheats_applied) { char msg[128]; size_t _len = strlcpy(msg, msg_hash_to_str(MSG_APPLYING_CHEAT), sizeof(msg)); @@ -394,25 +392,24 @@ static void cheat_manager_load_cb_first_pass(char *key, char *value) } } -static void cheat_manager_load_cb_second_pass(char *key, char *value) +static void cheat_manager_load_cb_second_pass(char *s, char *value) { + size_t _len; char cheat_num_str[20]; - unsigned cheat_num; - unsigned cheat_idx; + unsigned cheat_num, cheat_idx; unsigned idx = 5; - size_t key_length = 0; cheat_manager_t *cheat_st = &cheat_manager_state; errno = 0; - if (strncmp(key, "cheat", 5) != 0) + if (strncmp(s, "cheat", 5) != 0) return; - key_length = strlen((const char*)key); + _len = strlen((const char*)s); - while (idx < key_length && key[idx] >= '0' && key[idx] <= '9' && idx < 24) + while (idx < _len && s[idx] >= '0' && s[idx] <= '9' && idx < 24) { - cheat_num_str[idx - 5] = key[idx]; + cheat_num_str[idx - 5] = s[idx]; idx++; } @@ -423,55 +420,55 @@ static void cheat_manager_load_cb_second_pass(char *key, char *value) if (cheat_num + cheat_st->loading_cheat_offset >= cheat_st->size) return; - key = key + idx + 1; + s = s + idx + 1; cheat_idx = cheat_num + cheat_st->loading_cheat_offset; - if (string_is_equal(key, "address")) + if (string_is_equal(s, "address")) cheat_st->cheats[cheat_idx].address = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "address_bit_position")) + else if (string_is_equal(s, "address_bit_position")) cheat_st->cheats[cheat_idx].address_mask = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "big_endian")) + else if (string_is_equal(s, "big_endian")) cheat_st->cheats[cheat_idx].big_endian = (string_is_equal(value, "true") || string_is_equal(value, "1")); - else if (string_is_equal(key, "cheat_type")) + else if (string_is_equal(s, "cheat_type")) cheat_st->cheats[cheat_idx].cheat_type = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "code")) + else if (string_is_equal(s, "code")) cheat_st->cheats[cheat_idx].code = strdup(value); - else if (string_is_equal(key, "desc")) + else if (string_is_equal(s, "desc")) cheat_st->cheats[cheat_idx].desc = strdup(value); - else if (string_is_equal(key, "enable")) + else if (string_is_equal(s, "enable")) cheat_st->cheats[cheat_idx].state = (string_is_equal(value, "true") || string_is_equal(value, "1")); - else if (string_is_equal(key, "handler")) + else if (string_is_equal(s, "handler")) cheat_st->cheats[cheat_idx].handler = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "memory_search_size")) + else if (string_is_equal(s, "memory_search_size")) cheat_st->cheats[cheat_idx].memory_search_size = (unsigned)strtoul(value, NULL, 0); - else if (string_starts_with_size(key, "repeat_", STRLEN_CONST("repeat_"))) + else if (string_starts_with_size(s, "repeat_", STRLEN_CONST("repeat_"))) { - if (string_is_equal(key, "repeat_add_to_address")) + if (string_is_equal(s, "repeat_add_to_address")) cheat_st->cheats[cheat_idx].repeat_add_to_address = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "repeat_add_to_value")) + else if (string_is_equal(s, "repeat_add_to_value")) cheat_st->cheats[cheat_idx].repeat_add_to_value = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "repeat_count")) + else if (string_is_equal(s, "repeat_count")) cheat_st->cheats[cheat_idx].repeat_count = (unsigned)strtoul(value, NULL, 0); } - else if (string_starts_with_size(key, "rumble", STRLEN_CONST("rumble"))) + else if (string_starts_with_size(s, "rumble", STRLEN_CONST("rumble"))) { - if (string_is_equal(key, "rumble_port")) + if (string_is_equal(s, "rumble_port")) cheat_st->cheats[cheat_idx].rumble_port = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "rumble_primary_duration")) + else if (string_is_equal(s, "rumble_primary_duration")) cheat_st->cheats[cheat_idx].rumble_primary_duration = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "rumble_primary_strength")) + else if (string_is_equal(s, "rumble_primary_strength")) cheat_st->cheats[cheat_idx].rumble_primary_strength = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "rumble_secondary_duration")) + else if (string_is_equal(s, "rumble_secondary_duration")) cheat_st->cheats[cheat_idx].rumble_secondary_duration = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "rumble_secondary_strength")) + else if (string_is_equal(s, "rumble_secondary_strength")) cheat_st->cheats[cheat_idx].rumble_secondary_strength = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "rumble_type")) + else if (string_is_equal(s, "rumble_type")) cheat_st->cheats[cheat_idx].rumble_type = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "rumble_value")) + else if (string_is_equal(s, "rumble_value")) cheat_st->cheats[cheat_idx].rumble_value = (unsigned)strtoul(value, NULL, 0); } - else if (string_is_equal(key, "value")) + else if (string_is_equal(s, "value")) cheat_st->cheats[cheat_idx].value = (unsigned)strtoul(value, NULL, 0); } @@ -634,6 +631,7 @@ void cheat_manager_update(cheat_manager_t *handle, unsigned handle_idx) } void cheat_manager_toggle_index(bool apply_cheats_after_toggle, + bool notification_show_cheats_applied, unsigned i) { cheat_manager_t *cheat_st = &cheat_manager_state; @@ -644,17 +642,17 @@ void cheat_manager_toggle_index(bool apply_cheats_after_toggle, cheat_manager_update(cheat_st, i); if (apply_cheats_after_toggle) - cheat_manager_apply_cheats(); + cheat_manager_apply_cheats(notification_show_cheats_applied); } -void cheat_manager_toggle(void) +void cheat_manager_toggle(bool notification_show_cheats_applied) { cheat_manager_t *cheat_st = &cheat_manager_state; if (!cheat_st->cheats || cheat_st->size == 0) return; cheat_st->cheats[cheat_st->ptr].state ^= true; - cheat_manager_apply_cheats(); + cheat_manager_apply_cheats(notification_show_cheats_applied); cheat_manager_update(cheat_st, cheat_st->ptr); } @@ -708,8 +706,7 @@ bool cheat_manager_get_code_state(unsigned i) static size_t cheat_manager_get_game_specific_filename( char *s, size_t len, - const char *path_cheat_database, - bool saving) + const char *path_cheat_database, bool saving) { char s1[PATH_MAX_LENGTH]; struct retro_system_info sysinfo; diff --git a/cheat_manager.h b/cheat_manager.h index 9f52e115dbb3..c3646a9e811e 100644 --- a/cheat_manager.h +++ b/cheat_manager.h @@ -215,13 +215,14 @@ void cheat_manager_index_next(void); void cheat_manager_index_prev(void); -void cheat_manager_toggle(void); +void cheat_manager_toggle(bool notification_show_cheats_applied); -void cheat_manager_apply_cheats(void); +void cheat_manager_apply_cheats(bool notification_show_cheats_applied); void cheat_manager_update(cheat_manager_t *handle, unsigned handle_idx); void cheat_manager_toggle_index(bool apply_cheats_after_toggle, + bool notification_show_cheats_applied, unsigned i); unsigned cheat_manager_get_buf_size(void); diff --git a/cheevos/cheevos.c b/cheevos/cheevos.c index 68acaaac56b6..257b594c04c4 100644 --- a/cheevos/cheevos.c +++ b/cheevos/cheevos.c @@ -242,7 +242,7 @@ static void rcheevos_show_mastery_placard(void) char msg[128]; char badge_name[32]; const char* displayname = rc_client_get_user_info(rcheevos_locals.client)->display_name; - const bool content_runtime_log = settings->bools.content_runtime_log; + const bool content_runtime_log = settings->bools.content_runtime_log; const bool content_runtime_log_aggr = settings->bools.content_runtime_log_aggregate; size_t __len = strlcpy(msg, displayname, sizeof(msg)); @@ -344,17 +344,19 @@ static void rcheevos_award_achievement(const rc_client_achievement_t* cheevo) if (shotname) { + const char *path_directory_screenshot = settings->paths.directory_screenshot; video_driver_state_t* video_st = video_state_get_ptr();; snprintf(shotname, shotname_len, "%s/%s-cheevo-%u", - settings->paths.directory_screenshot, + path_directory_screenshot, path_basename(path_get(RARCH_PATH_BASENAME)), (unsigned)cheevo->id); shotname[shotname_len - 1] = '\0'; - if (take_screenshot(settings->paths.directory_screenshot, + if (take_screenshot(path_directory_screenshot, shotname, true, - video_st->frame_cache_data && (video_st->frame_cache_data == RETRO_HW_FRAME_BUFFER_VALID), + video_st->frame_cache_data + && (video_st->frame_cache_data == RETRO_HW_FRAME_BUFFER_VALID), false, true)) CHEEVOS_LOG(RCHEEVOS_TAG @@ -371,7 +373,8 @@ static void rcheevos_award_achievement(const rc_client_achievement_t* cheevo) #endif } -static void rcheevos_lboard_submitted(const rc_client_leaderboard_t* lboard, const rc_client_leaderboard_scoreboard_t* scoreboard) +static void rcheevos_lboard_submitted(const rc_client_leaderboard_t* lboard, + const rc_client_leaderboard_scoreboard_t* scoreboard) { const settings_t* settings = config_get_ptr(); if (lboard && settings->bools.cheevos_visibility_lboard_submit) @@ -401,8 +404,9 @@ static void rcheevos_lboard_submitted(const rc_client_leaderboard_t* lboard, con static void rcheevos_lboard_canceled(const rc_client_leaderboard_t* lboard) { - const settings_t* settings = config_get_ptr(); - if (lboard && settings->bools.cheevos_visibility_lboard_cancel) + const settings_t* settings = config_get_ptr(); + bool cheevos_visibility_lboard_cancel = settings->bools.cheevos_visibility_lboard_cancel; + if (cheevos_visibility_lboard_cancel) { char buffer[256]; size_t _len = strlcpy(buffer, msg_hash_to_str(MSG_LEADERBOARD_FAILED), sizeof(buffer)); @@ -415,8 +419,9 @@ static void rcheevos_lboard_canceled(const rc_client_leaderboard_t* lboard) static void rcheevos_lboard_started(const rc_client_leaderboard_t* lboard) { - const settings_t* settings = config_get_ptr(); - if (settings->bools.cheevos_visibility_lboard_start) + const settings_t *settings = config_get_ptr(); + bool cheevos_visibility_lboard_start = settings->bools.cheevos_visibility_lboard_start; + if (cheevos_visibility_lboard_start) { char buffer[256]; size_t _len = strlcpy(buffer, msg_hash_to_str(MSG_LEADERBOARD_STARTED), @@ -464,7 +469,9 @@ static void rcheevos_progress_updated(rcheevos_locals_t* locals, const rc_client_achievement_t* cheevo) { settings_t* settings = config_get_ptr(); - if (cheevo && gfx_widgets_ready() && settings->bools.cheevos_visibility_progress_tracker) + if ( cheevo + && gfx_widgets_ready() + && settings->bools.cheevos_visibility_progress_tracker) gfx_widget_set_achievement_progress(cheevo->badge_name, cheevo->measured_progress); } @@ -673,7 +680,6 @@ void rcheevos_pause_hardcore(void) bool rcheevos_unload(void) { - settings_t* settings = config_get_ptr(); const bool was_loaded = rcheevos_is_game_loaded(); #ifdef HAVE_GFX_WIDGETS @@ -709,7 +715,7 @@ bool rcheevos_unload(void) rcheevos_locals.queued_command = CMD_EVENT_NONE; #endif - if (!settings->arrays.cheevos_token[0]) + if (!config_get_ptr()->arrays.cheevos_token[0]) { /* If the config-level token has been cleared, we need to re-login on * loading the next game. Easiest way to do that is to destroy the client */ @@ -725,31 +731,26 @@ bool rcheevos_unload(void) void rcheevos_leaderboard_trackers_visibility_changed(void) { #if defined(HAVE_GFX_WIDGETS) - const settings_t* settings = config_get_ptr(); - if (!settings->bools.cheevos_visibility_lboard_trackers) - { - /* Hide any visible trackers */ + bool cheevos_visibility_lboard_trackers = config_get_ptr()->bools.cheevos_visibility_lboard_trackers; + /* Hide any visible trackers */ + if (!cheevos_visibility_lboard_trackers) gfx_widgets_clear_leaderboard_displays(); - } - else - { - /* No way to immediately request trackers be reshown, but they - * will reappear the next time they're updated */ - } #endif } +/* Disable slowdown */ static void rcheevos_enforce_hardcore_settings(void) { - /* disable slowdown */ runloop_state_get_ptr()->flags &= ~RUNLOOP_FLAG_SLOWMOTION; } static void rcheevos_toggle_hardcore_active(rcheevos_locals_t* locals) { - settings_t* settings = config_get_ptr(); - bool rewind_enable = settings->bools.rewind_enable; - const bool was_enabled = rcheevos_hardcore_active(); + settings_t* settings = config_get_ptr(); + bool rewind_enable = settings->bools.rewind_enable; + const bool was_enabled = rcheevos_hardcore_active(); + bool notification_show_cheats_applied = + settings->bools.notification_show_cheats_applied; if (!was_enabled) { @@ -766,7 +767,7 @@ static void rcheevos_toggle_hardcore_active(rcheevos_locals_t* locals) #ifdef HAVE_CHEATS /* If one or more emulator managed cheats is active, abort */ - cheat_manager_apply_cheats(); + cheat_manager_apply_cheats(notification_show_cheats_applied); if (!locals->hardcore_allowed) { locals->hardcore_being_enabled = false; @@ -834,9 +835,8 @@ static void rcheevos_toggle_hardcore_active(rcheevos_locals_t* locals) void rcheevos_toggle_hardcore_paused(void) { - settings_t* settings = config_get_ptr(); /* if hardcore mode is not enabled, we can't toggle whether its active */ - if (settings->bools.cheevos_hardcore_mode_enable) + if (config_get_ptr()->bools.cheevos_hardcore_mode_enable) rcheevos_toggle_hardcore_active(&rcheevos_locals); } @@ -866,13 +866,13 @@ void rcheevos_hardcore_enabled_changed(void) void rcheevos_validate_config_settings(void) { int i; + unsigned console_id; const rc_disallowed_setting_t *disallowed_settings = NULL; core_option_manager_t* coreopts = NULL; struct retro_system_info *sysinfo = &runloop_state_get_ptr()->system.info; const settings_t* settings = config_get_ptr(); - unsigned console_id; if (!rcheevos_hardcore_active()) return; @@ -883,10 +883,13 @@ void rcheevos_validate_config_settings(void) * it'll wait for the next vsync event, effectively halfing the fps. the * auto setting should achieve the most accurate frame rate anyway, so * disallow any manual values */ - if (!settings->bools.video_frame_delay_auto && settings->uints.video_frame_delay != 0) + if ( !settings->bools.video_frame_delay_auto + && settings->uints.video_frame_delay != 0) { - const char* error = msg_hash_to_str(MSG_CHEEVOS_HARDCORE_PAUSED_MANUAL_FRAME_DELAY); - CHEEVOS_LOG(RCHEEVOS_TAG "%s\n", msg_hash_to_str_us(MSG_CHEEVOS_HARDCORE_PAUSED_MANUAL_FRAME_DELAY)); + const char* error = msg_hash_to_str( + MSG_CHEEVOS_HARDCORE_PAUSED_MANUAL_FRAME_DELAY); + CHEEVOS_LOG(RCHEEVOS_TAG "%s\n", + msg_hash_to_str_us(MSG_CHEEVOS_HARDCORE_PAUSED_MANUAL_FRAME_DELAY)); rcheevos_pause_hardcore(); runloop_msg_queue_push(error, strlen(error), 0, 4 * 60, false, NULL, @@ -904,8 +907,10 @@ void rcheevos_validate_config_settings(void) * wouldn't know how to change it to auto. */ if (settings->uints.video_swap_interval > 1) { - const char* error = msg_hash_to_str(MSG_CHEEVOS_HARDCORE_PAUSED_VSYNC_SWAP_INTERVAL); - CHEEVOS_LOG(RCHEEVOS_TAG "%s\n", msg_hash_to_str_us(MSG_CHEEVOS_HARDCORE_PAUSED_VSYNC_SWAP_INTERVAL)); + const char* error = msg_hash_to_str( + MSG_CHEEVOS_HARDCORE_PAUSED_VSYNC_SWAP_INTERVAL); + CHEEVOS_LOG(RCHEEVOS_TAG "%s\n", + msg_hash_to_str_us(MSG_CHEEVOS_HARDCORE_PAUSED_VSYNC_SWAP_INTERVAL)); rcheevos_pause_hardcore(); runloop_msg_queue_push(error, strlen(error), 0, 4 * 60, false, NULL, @@ -917,8 +922,10 @@ void rcheevos_validate_config_settings(void) * can slow down the actual number of rendered frames per second. */ if (settings->uints.video_black_frame_insertion > 0) { - const char* error = msg_hash_to_str(MSG_CHEEVOS_HARDCORE_PAUSED_BLACK_FRAME_INSERTION); - CHEEVOS_LOG(RCHEEVOS_TAG "%s\n", msg_hash_to_str_us(MSG_CHEEVOS_HARDCORE_PAUSED_BLACK_FRAME_INSERTION)); + const char* error = msg_hash_to_str( + MSG_CHEEVOS_HARDCORE_PAUSED_BLACK_FRAME_INSERTION); + CHEEVOS_LOG(RCHEEVOS_TAG "%s\n", + msg_hash_to_str_us(MSG_CHEEVOS_HARDCORE_PAUSED_BLACK_FRAME_INSERTION)); rcheevos_pause_hardcore(); runloop_msg_queue_push(error, strlen(error), 0, 4 * 60, false, NULL, @@ -930,7 +937,8 @@ void rcheevos_validate_config_settings(void) return; disallowed_settings = rc_libretro_get_disallowed_settings(sysinfo->library_name); - if (disallowed_settings && retroarch_ctl(RARCH_CTL_CORE_OPTIONS_LIST_GET, &coreopts)) + if ( disallowed_settings + && retroarch_ctl(RARCH_CTL_CORE_OPTIONS_LIST_GET, &coreopts)) { for (i = 0; i < (int)coreopts->size; i++) { @@ -958,7 +966,8 @@ void rcheevos_validate_config_settings(void) console_id = game ? game->console_id : 0; } - if (console_id && !rc_libretro_is_system_allowed(sysinfo->library_name, console_id)) + if ( console_id + && !rc_libretro_is_system_allowed(sysinfo->library_name, console_id)) { char buffer[256]; size_t _len = snprintf(buffer, sizeof(buffer), @@ -1202,7 +1211,8 @@ static void rcheevos_show_game_placard(void) size_t _len; char msg[256]; rc_client_user_game_summary_t summary; - const settings_t* settings = config_get_ptr(); + const settings_t* settings = config_get_ptr(); + unsigned cheevos_visibility_summary = settings->uints.cheevos_visibility_summary; const rc_client_game_t* game = rc_client_get_game_info(rcheevos_locals.client); if (!game) /* Make sure there's actually a game loaded */ return; @@ -1212,7 +1222,8 @@ static void rcheevos_show_game_placard(void) if (summary.num_core_achievements == 0) { if (summary.num_unofficial_achievements == 0) - _len = snprintf(msg, sizeof(msg), "%s", msg_hash_to_str(MSG_CHEEVOS_GAME_HAS_NO_ACHIEVEMENTS)); + _len = strlcpy(msg, msg_hash_to_str(MSG_CHEEVOS_GAME_HAS_NO_ACHIEVEMENTS), + sizeof(msg)); else _len = snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_CHEEVOS_UNOFFICIAL_ACHIEVEMENTS_ACTIVATED), @@ -1250,8 +1261,8 @@ static void rcheevos_show_game_placard(void) msg[sizeof(msg) - 1] = 0; CHEEVOS_LOG(RCHEEVOS_TAG "%s\n", msg); - if ( settings->uints.cheevos_visibility_summary == RCHEEVOS_SUMMARY_ALLGAMES - || (settings->uints.cheevos_visibility_summary == RCHEEVOS_SUMMARY_HASCHEEVOS + if ( cheevos_visibility_summary == RCHEEVOS_SUMMARY_ALLGAMES + || (cheevos_visibility_summary == RCHEEVOS_SUMMARY_HASCHEEVOS && (summary.num_core_achievements || summary.num_unofficial_achievements))) { #if defined (HAVE_GFX_WIDGETS) @@ -1345,7 +1356,6 @@ static void rcheevos_client_login_callback(int result, else { settings_t* settings = config_get_ptr(); - if (user->token[0]) { /* store the token, clear the password */ @@ -1372,7 +1382,18 @@ static void rcheevos_client_login_callback(int result, static void rcheevos_finalize_game_load(rc_client_t* client) { - rcheevos_client_download_achievement_badges(client); +#if defined(HAVE_GFX_WIDGETS) /* We always want badges if widgets are enabled */ + bool want_badges = true; +#else + settings_t* settings = config_get_ptr(); + bool want_badges = settings->bools.cheevos_badges_enable; + /* Badges are only needed for xmb and ozone menus */ + want_badges = want_badges && + ( string_is_equal(settings->arrays.menu_driver, "xmb") + || string_is_equal(settings->arrays.menu_driver, "ozone")); +#endif + if (want_badges) + rcheevos_client_download_achievement_badges(client); if (!rc_client_is_processing_required(client)) { @@ -1388,9 +1409,9 @@ static void rcheevos_finalize_game_load_on_ui_thread(void) #if HAVE_REWIND if (!rcheevos_hardcore_active()) { - const settings_t* settings = config_get_ptr(); - /* Re-enable rewind. Additional space will be allocated for the achievement state data */ - if (settings->bools.rewind_enable) + /* Re-enable rewind. Additional space will be + * allocated for the achievement state data */ + if (config_get_ptr()->bools.rewind_enable) command_event(CMD_EVENT_REWIND_REINIT, NULL); } #endif @@ -1403,9 +1424,9 @@ static void rcheevos_finalize_game_load_on_ui_thread(void) static void rcheevos_client_load_game_callback(int result, const char* error_message, rc_client_t* client, void* userdata) { - const settings_t* settings = config_get_ptr(); - const rc_client_game_t* game = rc_client_get_game_info(client); char msg[256]; + const settings_t *settings = config_get_ptr(); + const rc_client_game_t *game = rc_client_get_game_info(client); #if defined(HAVE_GFX_WIDGETS) gfx_widget_set_cheevos_set_loading(false); @@ -1449,7 +1470,8 @@ static void rcheevos_client_load_game_callback(int result, if (settings && settings->bools.cheevos_verbose_enable) { - const char *_msg = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CANNOT_ACTIVATE_ACHIEVEMENTS_WITH_THIS_CORE); + const char *_msg = msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_CANNOT_ACTIVATE_ACHIEVEMENTS_WITH_THIS_CORE); runloop_msg_queue_push(_msg, strlen(_msg), 0, 4 * 60, false, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_WARNING); @@ -1466,10 +1488,10 @@ static void rcheevos_client_load_game_callback(int result, rcheevos_finalize_game_load(client); + /* Hardcore is active. we're going to start processing + * achievements. make sure restrictions are enforced */ if (rcheevos_hardcore_active()) { - /* hardcore is active. we're going to start processing - * achievements. make sure restrictions are enforced */ rcheevos_validate_config_settings(); rcheevos_enforce_hardcore_settings(); } @@ -1477,11 +1499,10 @@ static void rcheevos_client_load_game_callback(int result, rcheevos_spectating_changed(); /* synchronize spectating state */ #ifdef HAVE_THREADS + /* Have to "schedule" this. Game image should not be + * loaded into memory on background thread */ if (!task_is_on_main_thread()) - { - /* have to "schedule" this. game image should not be loaded into memory on background thread */ rcheevos_locals.queued_command = CMD_CHEEVOS_FINALIZE_LOAD; - } else #endif rcheevos_finalize_game_load_on_ui_thread(); @@ -1492,8 +1513,6 @@ static rc_clock_t rcheevos_client_get_time_millisecs(const rc_client_t* client) return cpu_features_get_time_usec() / 1000; } - - bool rcheevos_load(const void *data) { const struct retro_game_info *info = (const struct retro_game_info*)data; @@ -1531,9 +1550,7 @@ bool rcheevos_load(const void *data) sizeof(rcheevos_locals.user_agent_core)); if (rcheevos_locals.client) - { rc_client_unload_game(rcheevos_locals.client); - } else { rcheevos_locals.client = rc_client_create(rcheevos_client_read_memory, rcheevos_client_server_call); @@ -1572,23 +1589,17 @@ bool rcheevos_load(const void *data) { /* user not logged in, do so now */ if (settings->arrays.cheevos_token[0]) - { rc_client_begin_login_with_token(rcheevos_locals.client, settings->arrays.cheevos_username, settings->arrays.cheevos_token, rcheevos_client_login_callback, NULL); - } else - { rc_client_begin_login_with_password(rcheevos_locals.client, settings->arrays.cheevos_username, settings->arrays.cheevos_password, rcheevos_client_login_callback, NULL); - } } if (rcheevos_hardcore_active()) - { rcheevos_enforce_hardcore_settings(); - } /* provide hooks for reading files */ rc_hash_reset_cdreader_hooks(); @@ -1601,8 +1612,6 @@ bool rcheevos_load(const void *data) rc_client_begin_identify_and_load_game(rcheevos_locals.client, RC_CONSOLE_UNKNOWN, info->path, (const uint8_t*)info->data, info->size, rcheevos_client_load_game_callback, NULL); - - return true; } diff --git a/cheevos/cheevos_client.c b/cheevos/cheevos_client.c index 77206c92c0f3..1b8c95fdb463 100644 --- a/cheevos/cheevos_client.c +++ b/cheevos/cheevos_client.c @@ -17,12 +17,6 @@ #include "cheevos.h" -#include "../configuration.h" -#include "../file_path_special.h" -#include "../paths.h" -#include "../retroarch.h" -#include "../version.h" - #include #include #include @@ -31,6 +25,11 @@ #include "../frontend/frontend_driver.h" #include "../tasks/tasks_internal.h" +#include "../file_path_special.h" +#include "../paths.h" +#include "../runloop.h" +#include "../version.h" + #ifdef HAVE_PRESENCE #include "../network/presence.h" #endif @@ -598,25 +597,13 @@ void rcheevos_client_download_game_badge(const rc_client_game_t* game) void rcheevos_client_download_achievement_badges(rc_client_t* client) { - rc_client_download_queue_t* queue; uint32_t i; + rc_client_download_queue_t *queue = (rc_client_download_queue_t*) + calloc(1, sizeof(*queue)); -#if !defined(HAVE_GFX_WIDGETS) /* we always want badges if widgets are enabled */ - settings_t* settings = config_get_ptr(); - /* User has explicitly disabled badges */ - if (!settings->bools.cheevos_badges_enable) - return; - - /* badges are only needed for xmb and ozone menus */ - if (!string_is_equal(settings->arrays.menu_driver, "xmb") && - !string_is_equal(settings->arrays.menu_driver, "ozone")) - return; -#endif /* !defined(HAVE_GFX_WIDGETS) */ - - queue = (rc_client_download_queue_t*)calloc(1, sizeof(*queue)); queue->client = client; - queue->game = rc_client_get_game_info(client); - queue->list = rc_client_create_achievement_list(client, + queue->game = rc_client_get_game_info(client); + queue->list = rc_client_create_achievement_list(client, RC_CLIENT_ACHIEVEMENT_CATEGORY_CORE_AND_UNOFFICIAL, RC_CLIENT_ACHIEVEMENT_LIST_GROUPING_PROGRESS); queue->outstanding_requests = RCHEEVOS_CONCURRENT_BADGE_DOWNLOADS; diff --git a/cheevos/cheevos_menu.c b/cheevos/cheevos_menu.c index a182d909a8e2..d7ec053c2b48 100644 --- a/cheevos/cheevos_menu.c +++ b/cheevos/cheevos_menu.c @@ -45,55 +45,49 @@ #if HAVE_MENU -bool rcheevos_menu_get_state(unsigned menu_offset, char* buffer, size_t buffer_size) +size_t rcheevos_menu_get_state(unsigned menu_offset, char *s, size_t len) { const rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals(); if (menu_offset < rcheevos_locals->menuitem_count) { - const rcheevos_menuitem_t* menuitem = &rcheevos_locals->menuitems[menu_offset]; + const rcheevos_menuitem_t* menuitem = &rcheevos_locals->menuitems[menu_offset]; const rc_client_achievement_t* cheevo = menuitem->achievement; if (cheevo) { + size_t _len; if (cheevo->state != RC_CLIENT_ACHIEVEMENT_STATE_ACTIVE) - strlcpy(buffer, msg_hash_to_str(menuitem->state_label_idx), buffer_size); + _len = strlcpy(s, msg_hash_to_str(menuitem->state_label_idx), len); else { - const char* missable = cheevo->type == RC_CLIENT_ACHIEVEMENT_TYPE_MISSABLE ? "[m] " : ""; - size_t _len = strlcpy(buffer, missable, buffer_size); - _len += strlcpy(buffer + _len, msg_hash_to_str(menuitem->state_label_idx), buffer_size - _len); + const char* missable = (cheevo->type == RC_CLIENT_ACHIEVEMENT_TYPE_MISSABLE) ? "[m] " : ""; + _len = strlcpy(s, missable, len); + _len += strlcpy(s + _len, msg_hash_to_str(menuitem->state_label_idx), len - _len); if (cheevo->measured_progress[0]) { - _len += strlcpy(buffer + _len, " - ", buffer_size - _len); - strlcpy(buffer + _len, cheevo->measured_progress, buffer_size - _len); + _len += strlcpy(s + _len, " - ", len - _len); + _len += strlcpy(s + _len, cheevo->measured_progress, len - _len); } } - return true; + return _len; } } - - if (buffer) - buffer[0] = '\0'; - - return false; + if (s) + s[0] = '\0'; + return 0; } -bool rcheevos_menu_get_sublabel(unsigned menu_offset, char* buffer, size_t buffer_size) +size_t rcheevos_menu_get_sublabel(unsigned menu_offset, char *s, size_t len) { const rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals(); - if (menu_offset < rcheevos_locals->menuitem_count && buffer) + if (menu_offset < rcheevos_locals->menuitem_count && s) { const rcheevos_menuitem_t* menuitem = &rcheevos_locals->menuitems[menu_offset]; if (menuitem->achievement) - { - strlcpy(buffer, menuitem->achievement->description, buffer_size); - return true; - } + return strlcpy(s, menuitem->achievement->description, len); } - - if (buffer) - buffer[0] = '\0'; - - return false; + if (s) + s[0] = '\0'; + return 0; } void rcheevos_menu_reset_badges(void) @@ -250,12 +244,10 @@ uintptr_t rcheevos_menu_get_badge_texture(unsigned menu_offset) return 0; } -void rcheevos_menu_populate_hardcore_pause_submenu(void* data) +void rcheevos_menu_populate_hardcore_pause_submenu(void* data, bool cheevos_hardcore_mode_enable) { const rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals(); - menu_displaylist_info_t* info = (menu_displaylist_info_t*)data; - const settings_t* settings = config_get_ptr(); - const bool cheevos_hardcore_mode_enable = settings->bools.cheevos_hardcore_mode_enable; + menu_displaylist_info_t* info = (menu_displaylist_info_t*)data; if (cheevos_hardcore_mode_enable && rc_client_get_game_info(rcheevos_locals->client)) { @@ -288,12 +280,12 @@ void rcheevos_menu_populate_hardcore_pause_submenu(void* data) } } -void rcheevos_menu_populate(void* data) +void rcheevos_menu_populate(void* data, bool cheevos_enable, + bool cheevos_hardcore_mode_enable) { menu_displaylist_info_t* info = (menu_displaylist_info_t*)data; rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals(); const rc_client_game_t* game = rc_client_get_game_info(rcheevos_locals->client); - const settings_t* settings = config_get_ptr(); rc_client_achievement_list_t* list = rc_client_create_achievement_list(rcheevos_locals->client, RC_CLIENT_ACHIEVEMENT_CATEGORY_CORE_AND_UNOFFICIAL, @@ -314,8 +306,10 @@ void rcheevos_menu_populate(void* data) if (game && game->id != 0) { - /* first menu item is the Pause/Resume Hardcore option (unless hardcore is completely disabled) */ - if (settings->bools.cheevos_enable && settings->bools.cheevos_hardcore_mode_enable) + /* First menu item is the Pause/Resume Hardcore option + * (unless hardcore is completely disabled) */ + if ( cheevos_enable + && cheevos_hardcore_mode_enable) { if (rc_client_get_hardcore_enabled(rcheevos_locals->client)) menu_entries_append(info->list, diff --git a/cheevos/cheevos_menu.h b/cheevos/cheevos_menu.h index 9813557299fc..64725ebda7b0 100644 --- a/cheevos/cheevos_menu.h +++ b/cheevos/cheevos_menu.h @@ -28,10 +28,11 @@ RETRO_BEGIN_DECLS -void rcheevos_menu_populate(void* data); -void rcheevos_menu_populate_hardcore_pause_submenu(void* data); -bool rcheevos_menu_get_state(unsigned menu_offset, char* buffer, size_t buffer_size); -bool rcheevos_menu_get_sublabel(unsigned menu_offset, char* buffer, size_t buffer_size); +void rcheevos_menu_populate(void* data, bool cheevos_enable, + bool cheevos_hardcore_mode_enable); +void rcheevos_menu_populate_hardcore_pause_submenu(void* data, bool cheevos_hardcore_mode_enable); +size_t rcheevos_menu_get_state(unsigned menu_offset, char *s, size_t len); +size_t rcheevos_menu_get_sublabel(unsigned menu_offset, char *s, size_t len); uintptr_t rcheevos_menu_get_badge_texture(unsigned menu_offset); void rcheevos_menu_reset_badges(void); diff --git a/command.c b/command.c index ff962d4d44dc..b4594aa64f1d 100644 --- a/command.c +++ b/command.c @@ -84,11 +84,10 @@ static void command_post_state_loaded(void) netplay_driver_ctl(RARCH_NETPLAY_CTL_LOAD_SAVESTATE, NULL); #endif { - settings_t *settings = config_get_ptr(); video_driver_state_t *video_st = video_state_get_ptr(); bool frame_time_counter_reset_after_load_state = - settings->bools.frame_time_counter_reset_after_load_state; + config_get_ptr()->bools.frame_time_counter_reset_after_load_state; if (frame_time_counter_reset_after_load_state) video_st->frame_time_count = 0; } @@ -183,13 +182,12 @@ typedef struct socklen_t cmd_source_len; } command_network_t; -static void network_command_reply( - command_t *cmd, - const char * data, size_t len) +static void network_command_reply(command_t *cmd, + const char *s, size_t len) { command_network_t *netcmd = (command_network_t*)cmd->userptr; /* Respond (fire and forget since it's UDP) */ - sendto(netcmd->net_fd, data, len, 0, + sendto(netcmd->net_fd, s, len, 0, (struct sockaddr*)&netcmd->cmd_source, netcmd->cmd_source_len); } @@ -280,12 +278,11 @@ typedef struct char stdin_buf[CMD_BUF_SIZE]; } command_stdin_t; -static void stdin_command_reply( - command_t *cmd, - const char * data, size_t len) +static void stdin_command_reply(command_t *cmd, + const char *s, size_t len) { /* Just write to stdout! */ - fwrite(data, 1, len, stdout); + fwrite(s, 1, len, stdout); fflush(stdout); } @@ -340,7 +337,7 @@ command_t* command_stdin_new(void) command_t *cmd; command_stdin_t *stdincmd; -#ifndef _WIN32 +#if !(defined(_WIN32) || defined(EMSCRIPTEN)) #ifdef HAVE_NETWORKING if (!socket_nonblock(STDIN_FILENO)) return NULL; @@ -366,6 +363,61 @@ command_t* command_stdin_new(void) } #endif +#if defined(EMSCRIPTEN) +void PlatformEmscriptenCommandReply(const char *, size_t); +int PlatformEmscriptenCommandRead(char **, size_t); +typedef struct +{ + char command_buf[CMD_BUF_SIZE]; +} command_emscripten_t; + +static void emscripten_command_reply(command_t *_cmd, + const char *s, size_t len) +{ + PlatformEmscriptenCommandReply(s, len); +} + +static void emscripten_command_free(command_t *handle) +{ + free(handle->userptr); + free(handle); +} + +static void command_emscripten_poll(command_t *handle) +{ + command_emscripten_t *emscriptencmd = (command_emscripten_t*)handle->userptr; + ptrdiff_t msg_len = PlatformEmscriptenCommandRead((char **)(&emscriptencmd->command_buf), CMD_BUF_SIZE); + if (msg_len == 0) + return; + command_parse_msg(handle, emscriptencmd->command_buf); +} + +command_t* command_emscripten_new(void) +{ + command_t *cmd; + command_emscripten_t *emscriptencmd; + + cmd = (command_t*)calloc(1, sizeof(command_t)); + emscriptencmd = (command_emscripten_t*)calloc(1, sizeof(command_emscripten_t)); + + if (!cmd) + return NULL; + if (!emscriptencmd) + { + free(cmd); + return NULL; + } + cmd->userptr = emscriptencmd; + cmd->poll = command_emscripten_poll; + cmd->replier = emscripten_command_reply; + cmd->destroy = emscripten_command_free; + + return cmd; +} +#endif + + + bool command_get_config_param(command_t *cmd, const char* arg) { size_t _len; @@ -445,12 +497,11 @@ typedef struct int last_fd; } command_uds_t; -static void uds_command_reply( - command_t *cmd, - const char * data, size_t len) +static void uds_command_reply(command_t *cmd, + const char *s, size_t len) { command_uds_t *subcmd = (command_uds_t*)cmd->userptr; - write(subcmd->last_fd, data, len); + write(subcmd->last_fd, s, len); } static void uds_command_free(command_t *handle) @@ -1165,8 +1216,8 @@ void command_event_init_controllers(rarch_system_info_t *sys_info, } #ifdef HAVE_CONFIGFILE -static size_t command_event_save_config( - const char *config_path, char *s, size_t len) +static size_t command_event_save_config(const char *config_path, + char *s, size_t len) { size_t _len = 0; bool path_exists = !string_is_empty(config_path); @@ -1238,8 +1289,8 @@ static size_t command_event_undo_load_state(char *s, size_t len) bool command_event_resize_windowed_scale(settings_t *settings, unsigned window_scale) { - unsigned idx = 0; - bool video_fullscreen = settings->bools.video_fullscreen; + unsigned idx = 0; + bool video_fullscreen = settings->bools.video_fullscreen; if (window_scale == 0) return false; @@ -1258,15 +1309,15 @@ size_t command_event_save_auto_state(void) { size_t _len; runloop_state_t *runloop_st = runloop_state_get_ptr(); + const char *name_savestate = runloop_st->name.savestate; char savestate_name_auto[PATH_MAX_LENGTH]; - if (runloop_st->entry_state_slot) + if (runloop_st->entry_state_slot > -1) return 0; if (!core_info_current_supports_savestate()) return 0; if (string_is_empty(path_basename(path_get(RARCH_PATH_BASENAME)))) return 0; - _len = strlcpy(savestate_name_auto, - runloop_st->name.savestate, + _len = strlcpy(savestate_name_auto, name_savestate, sizeof(savestate_name_auto)); _len += strlcpy(savestate_name_auto + _len, ".auto", sizeof(savestate_name_auto) - _len); @@ -1304,7 +1355,8 @@ void command_event_init_cheats( cheat_manager_load_game_specific_cheats(path_cheat_db); if (apply_cheats_after_load) - cheat_manager_apply_cheats(); + cheat_manager_apply_cheats( + config_get_ptr()->bools.notification_show_cheats_applied); } #endif @@ -1330,9 +1382,17 @@ bool command_event_load_entry_state(settings_t *settings) entry_state_path[0] = '\0'; if (!runloop_get_entry_state_path( + entry_state_path, sizeof(entry_state_path), + runloop_st->entry_state_slot)) + return false; + + if (!path_is_valid(entry_state_path)) + { + if (!runloop_get_savestate_path( entry_state_path, sizeof(entry_state_path), runloop_st->entry_state_slot)) - return false; + return false; + } entry_path_stats = path_stat(entry_state_path); @@ -1361,6 +1421,7 @@ void command_event_load_auto_state(void) size_t _len; char savestate_name_auto[PATH_MAX_LENGTH]; runloop_state_t *runloop_st = runloop_state_get_ptr(); + const char *name_savestate = runloop_st->name.savestate; if (!core_info_current_supports_savestate()) return; @@ -1374,8 +1435,7 @@ void command_event_load_auto_state(void) return; #endif - _len = strlcpy(savestate_name_auto, - runloop_st->name.savestate, + _len = strlcpy(savestate_name_auto, name_savestate, sizeof(savestate_name_auto)); strlcpy(savestate_name_auto + _len, ".auto", sizeof(savestate_name_auto) - _len); @@ -1406,7 +1466,10 @@ void command_event_load_auto_state(void) * @param last_index Return value for load slot. * @param @s Return value for file name that should be removed. */ -static void scan_states(settings_t *settings, +static void command_scan_states( + bool show_hidden_files, + unsigned savestate_max_keep, + int curr_state_slot, unsigned *last_index, char *s) { /* Base name of 128 may be too short for some (<<1%) of the @@ -1415,9 +1478,7 @@ static void scan_states(settings_t *settings, char state_base[128]; char state_dir[DIR_MAX_LENGTH]; runloop_state_t *runloop_st = runloop_state_get_ptr(); - bool show_hidden_files = settings->bools.show_hidden_files; - unsigned savestate_max_keep = settings->uints.savestate_max_keep; - int curr_state_slot = settings->ints.state_slot; + const char *name_savestate = runloop_st->name.savestate; unsigned max_idx = 0; unsigned loa_idx = 0; @@ -1433,15 +1494,14 @@ static void scan_states(settings_t *settings, size_t i, cnt = 0; size_t cnt_in_range = 0; - fill_pathname_basedir(state_dir, runloop_st->name.savestate, + fill_pathname_basedir(state_dir, name_savestate, sizeof(state_dir)); if (!(dir_list = dir_list_new_special(state_dir, DIR_LIST_PLAIN, NULL, show_hidden_files))) return; - fill_pathname_base(state_base, runloop_st->name.savestate, - sizeof(state_base)); + fill_pathname_base(state_base, name_savestate, sizeof(state_base)); for (i = 0; i < dir_list->size; i++) { @@ -1633,7 +1693,10 @@ void command_event_set_savestate_auto_index(settings_t *settings) configuration_set_int(settings, settings->ints.state_slot, 0); return; } - scan_states(settings, &max_idx, NULL); + command_scan_states( + settings->bools.show_hidden_files, + settings->uints.savestate_max_keep, + settings->ints.state_slot, &max_idx, NULL); configuration_set_int(settings, settings->ints.state_slot, max_idx); RARCH_LOG("[State]: %s: #%d.\n", msg_hash_to_str(MSG_FOUND_LAST_STATE_SLOT), @@ -1649,7 +1712,10 @@ static void command_event_set_savestate_garbage_collect(settings_t *settings) { size_t i; char state_to_delete[PATH_MAX_LENGTH] = {0}; - scan_states(settings, NULL, state_to_delete); + command_scan_states( + settings->bools.show_hidden_files, + settings->uints.savestate_max_keep, + settings->ints.state_slot, NULL, state_to_delete); /* Only delete one save state per save action * > Conservative behaviour, designed to minimise * the risk of deleting multiple incorrect files @@ -1670,37 +1736,37 @@ static void command_event_set_savestate_garbage_collect(settings_t *settings) void command_event_set_replay_auto_index(settings_t *settings) { size_t i; + char elem_base[128]; char state_base[128]; char state_dir[DIR_MAX_LENGTH]; struct string_list *dir_list = NULL; unsigned max_idx = 0; runloop_state_t *runloop_st = runloop_state_get_ptr(); + const char *name_replay = runloop_st->name.replay; bool replay_auto_index = settings->bools.replay_auto_index; bool show_hidden_files = settings->bools.show_hidden_files; if (!replay_auto_index) return; - /* Find the file in the same directory as runloop_st->names.replay + /* Find the file in the same directory as runloop_st->name.replay * with the largest numeral suffix. * * E.g. /foo/path/content.replay will try to find * /foo/path/content.replay%d, where %d is the largest number available. */ - fill_pathname_basedir(state_dir, runloop_st->name.replay, + fill_pathname_basedir(state_dir, name_replay, sizeof(state_dir)); if (!(dir_list = dir_list_new_special(state_dir, DIR_LIST_PLAIN, NULL, show_hidden_files))) return; - fill_pathname_base(state_base, runloop_st->name.replay, - sizeof(state_base)); + fill_pathname_base(state_base, name_replay, sizeof(state_base)); for (i = 0; i < dir_list->size; i++) { unsigned idx; - char elem_base[128] = {0}; const char *end = NULL; const char *dir_elem = dir_list->elems[i].data; size_t _len = fill_pathname_base(elem_base, dir_elem, sizeof(elem_base)); @@ -1737,21 +1803,20 @@ void command_event_set_replay_garbage_collect( size_t i, cnt = 0; char tmp[DIR_MAX_LENGTH]; runloop_state_t *runloop_st = runloop_state_get_ptr(); + const char *name_replay = runloop_st->name.replay; struct string_list *dir_list = NULL; unsigned min_idx = UINT_MAX; const char *oldest_save = NULL; /* Similar to command_event_set_replay_auto_index(), * this will find the lowest numbered replay */ - fill_pathname_basedir(tmp, runloop_st->name.replay, - sizeof(tmp)); + fill_pathname_basedir(tmp, name_replay, sizeof(tmp)); if (!(dir_list = dir_list_new_special(tmp, DIR_LIST_PLAIN, NULL, show_hidden_files))) return; - fill_pathname_base(tmp, runloop_st->name.replay, - sizeof(tmp)); + fill_pathname_base(tmp, name_replay, sizeof(tmp)); for (i = 0; i < dir_list->size; i++) { diff --git a/command.h b/command.h index 8f869adea79c..d1aa67651ae8 100644 --- a/command.h +++ b/command.h @@ -329,11 +329,20 @@ struct rarch_state; bool command_event(enum event_command action, void *data); /* Constructors for the supported drivers */ +#ifdef HAVE_NETWORK_CMD command_t* command_network_new(uint16_t port); +bool command_network_send(const char *cmd_); +#endif +#ifdef HAVE_STDIN_CMD command_t* command_stdin_new(void); +#endif +#ifdef LAKKA command_t* command_uds_new(void); +#endif +#ifdef EMSCRIPTEN +command_t* command_emscripten_new(void); +#endif -bool command_network_send(const char *cmd_); void command_event_set_mixer_volume( settings_t *settings, diff --git a/config.def.h b/config.def.h index fc5744f2d36d..f6c9948a105e 100644 --- a/config.def.h +++ b/config.def.h @@ -811,6 +811,7 @@ #define DEFAULT_MENU_CONTENT_SHOW_ADD_ENTRY MENU_ADD_CONTENT_ENTRY_DISPLAY_MAIN_TAB #define DEFAULT_CONTENT_SHOW_PLAYLISTS true +#define DEFAULT_CONTENT_SHOW_PLAYLIST_TABS true #if defined(HAVE_LIBRETRODB) #define DEFAULT_MENU_CONTENT_SHOW_EXPLORE true @@ -1215,12 +1216,12 @@ #define DEFAULT_AUDIO_RESPECT_SILENT_MODE true #endif -/* Automatically mute audio when fast forward - * is enabled */ +/* Automatically mute audio when fast forward is enabled. */ #define DEFAULT_AUDIO_FASTFORWARD_MUTE false -/* Speed up audio to match fast-forward speed up. - * Avoids crackling */ +/* Speed up audio to match fast forward speed up. */ #define DEFAULT_AUDIO_FASTFORWARD_SPEEDUP false +/* Automatically mute audio when rewind is enabled. */ +#define DEFAULT_AUDIO_REWIND_MUTE false #ifdef HAVE_MICROPHONE /* Microphone support */ @@ -1832,7 +1833,11 @@ #define DEFAULT_BUILDBOT_SERVER_URL "" #endif +#ifdef EMSCRIPTEN +#define DEFAULT_BUILDBOT_ASSETS_SERVER_URL "https://buildbot.libretro.com/assets/" +#else #define DEFAULT_BUILDBOT_ASSETS_SERVER_URL "http://buildbot.libretro.com/assets/" +#endif #define DEFAULT_DISCORD_APP_ID "475456035851599874" diff --git a/configuration.c b/configuration.c index 19fec6392471..ffca74e8e3fa 100644 --- a/configuration.c +++ b/configuration.c @@ -285,6 +285,7 @@ enum midi_driver_enum { MIDI_WINMM = RECORD_NULL + 1, MIDI_ALSA, + MIDI_COREMIDI, MIDI_NULL }; @@ -597,6 +598,8 @@ static const enum record_driver_enum RECORD_DEFAULT_DRIVER = RECORD_WAV; #ifdef HAVE_WINMM static const enum midi_driver_enum MIDI_DEFAULT_DRIVER = MIDI_WINMM; +#elif defined(HAVE_COREMIDI) +static const enum midi_driver_enum MIDI_DEFAULT_DRIVER = MIDI_COREMIDI; #elif defined(HAVE_ALSA) && !defined(HAVE_HAKCHI) && !defined(HAVE_SEGAM) && !defined(DINGUX) static const enum midi_driver_enum MIDI_DEFAULT_DRIVER = MIDI_ALSA; #else @@ -743,6 +746,8 @@ static const enum wifi_driver_enum WIFI_DEFAULT_DRIVER = WIFI_NULL; #if defined(ANDROID) static const enum location_driver_enum LOCATION_DEFAULT_DRIVER = LOCATION_ANDROID; +#elif defined(HAVE_CORELOCATION) +static const enum location_driver_enum LOCATION_DEFAULT_DRIVER = LOCATION_CORELOCATION; #else static const enum location_driver_enum LOCATION_DEFAULT_DRIVER = LOCATION_NULL; #endif @@ -1455,6 +1460,8 @@ const char *config_get_default_midi(void) return "winmm"; case MIDI_ALSA: return "alsa"; + case MIDI_COREMIDI: + return "coremidi"; case MIDI_NULL: break; } @@ -1838,6 +1845,7 @@ static struct config_bool_setting *populate_settings_bool( #endif SETTING_BOOL("audio_fastforward_mute", &settings->bools.audio_fastforward_mute, true, DEFAULT_AUDIO_FASTFORWARD_MUTE, false); SETTING_BOOL("audio_fastforward_speedup", &settings->bools.audio_fastforward_speedup, true, DEFAULT_AUDIO_FASTFORWARD_SPEEDUP, false); + SETTING_BOOL("audio_rewind_mute", &settings->bools.audio_rewind_mute, true, DEFAULT_AUDIO_REWIND_MUTE, false); #ifdef HAVE_WASAPI SETTING_BOOL("audio_wasapi_exclusive_mode", &settings->bools.audio_wasapi_exclusive_mode, true, DEFAULT_WASAPI_EXCLUSIVE_MODE, false); @@ -2010,6 +2018,7 @@ static struct config_bool_setting *populate_settings_bool( #endif SETTING_BOOL("content_show_history", &settings->bools.menu_content_show_history, true, DEFAULT_CONTENT_SHOW_HISTORY, false); SETTING_BOOL("content_show_playlists", &settings->bools.menu_content_show_playlists, true, DEFAULT_CONTENT_SHOW_PLAYLISTS, false); + SETTING_BOOL("content_show_playlist_tabs", &settings->bools.menu_content_show_playlist_tabs, true, DEFAULT_CONTENT_SHOW_PLAYLIST_TABS, false); #if defined(HAVE_LIBRETRODB) SETTING_BOOL("content_show_explore", &settings->bools.menu_content_show_explore, true, DEFAULT_MENU_CONTENT_SHOW_EXPLORE, false); #endif @@ -3734,6 +3743,14 @@ static bool config_load_file(global_t *global, } #endif + /* Special case for perfcnt_enable */ + { + bool tmp = false; + config_get_bool(conf, "perfcnt_enable", &tmp); + if (tmp) + retroarch_ctl(RARCH_CTL_SET_PERFCNT_ENABLE, NULL); + } + /* Overrides */ if (rarch_flags & RARCH_FLAGS_HAS_SET_USERNAME) diff --git a/configuration.h b/configuration.h index 185c7a833c63..c286af623044 100644 --- a/configuration.h +++ b/configuration.h @@ -662,6 +662,7 @@ typedef struct settings bool audio_rate_control; bool audio_fastforward_mute; bool audio_fastforward_speedup; + bool audio_rewind_mute; #ifdef IOS bool audio_respect_silent_mode; #endif @@ -823,6 +824,7 @@ typedef struct settings bool menu_content_show_history; bool menu_content_show_add; bool menu_content_show_playlists; + bool menu_content_show_playlist_tabs; bool menu_content_show_explore; bool menu_use_preferred_system_color_theme; bool menu_preferred_system_color_theme_set; @@ -1270,8 +1272,7 @@ bool config_load_remap(const char *directory_input_remapping, **/ void config_get_autoconf_profile_filename( - const char *device_name, unsigned user, - char *buf, size_t len_buf); + const char *device_name, unsigned user, char *s, size_t len); /** * config_save_autoconf_profile: * @device_name : Input device name diff --git a/core_info.c b/core_info.c index b4d96d735a64..d9f561c1165d 100644 --- a/core_info.c +++ b/core_info.c @@ -2784,72 +2784,64 @@ void core_info_qsort(core_info_list_t *core_info_list, bool core_info_current_supports_savestate(void) { - core_info_state_t *p_coreinfo = &core_info_st; - settings_t *settings = config_get_ptr(); - - if (settings->bools.core_info_savestate_bypass) + core_info_state_t *p_coreinfo = &core_info_st; + settings_t *settings = config_get_ptr(); + bool core_info_savestate_bypass = settings->bools.core_info_savestate_bypass; + if (core_info_savestate_bypass) return true; - /* If no core is currently loaded, assume * by default that all savestate functionality * is supported */ if (!p_coreinfo->current) return true; - return p_coreinfo->current->savestate_support_level >= CORE_INFO_SAVESTATE_BASIC; } bool core_info_current_supports_rewind(void) { - core_info_state_t *p_coreinfo = &core_info_st; - settings_t *settings = config_get_ptr(); - - if (settings->bools.core_info_savestate_bypass) + core_info_state_t *p_coreinfo = &core_info_st; + settings_t *settings = config_get_ptr(); + bool core_info_savestate_bypass = settings->bools.core_info_savestate_bypass; + if (core_info_savestate_bypass) return true; - /* If no core is currently loaded, assume * by default that all savestate functionality * is supported */ if (!p_coreinfo->current) return true; - return p_coreinfo->current->savestate_support_level >= CORE_INFO_SAVESTATE_SERIALIZED; } bool core_info_current_supports_netplay(void) { - core_info_state_t *p_coreinfo = &core_info_st; - settings_t *settings = config_get_ptr(); - - if (settings->bools.core_info_savestate_bypass) + core_info_state_t *p_coreinfo = &core_info_st; + settings_t *settings = config_get_ptr(); + bool core_info_savestate_bypass = settings->bools.core_info_savestate_bypass; + if (core_info_savestate_bypass) return true; - /* If no core is currently loaded, assume * by default that all savestate functionality * is supported */ if (!p_coreinfo->current) return true; - return p_coreinfo->current->savestate_support_level >= CORE_INFO_SAVESTATE_DETERMINISTIC; } bool core_info_current_supports_runahead(void) { - core_info_state_t *p_coreinfo = &core_info_st; - settings_t *settings = config_get_ptr(); - - if (settings->bools.core_info_savestate_bypass) + core_info_state_t *p_coreinfo = &core_info_st; + settings_t *settings = config_get_ptr(); + bool core_info_savestate_bypass = settings->bools.core_info_savestate_bypass; + if (core_info_savestate_bypass) return true; - /* If no core is currently loaded, assume * by default that all savestate functionality * is supported */ if (!p_coreinfo->current) return true; - return p_coreinfo->current->savestate_support_level >= CORE_INFO_SAVESTATE_DETERMINISTIC; } diff --git a/cores/libretro-video-processor/video_processor_v4l2.c b/cores/libretro-video-processor/video_processor_v4l2.c index b8a5695b21a7..1056162bb062 100644 --- a/cores/libretro-video-processor/video_processor_v4l2.c +++ b/cores/libretro-video-processor/video_processor_v4l2.c @@ -146,17 +146,14 @@ static void audio_callback(void) static void audio_set_state(bool enable) { } #endif -static void -appendstr(char *dst, const char *src, size_t dstsize) +static void appendstr(char *s, const char *in, size_t len) { - size_t resid = dstsize - (strlen(dst) + 1); - if (resid == 0) - return; - strncat(dst, src, resid); + size_t resid = len - (strlen(s) + 1); + if (resid != 0) + strncat(s, in, resid); } -static void -enumerate_video_devices(char *buf, size_t buflen) +static void enumerate_video_devices(char *s, size_t len) { #ifdef HAVE_UDEV int ndevs; @@ -167,9 +164,8 @@ enumerate_video_devices(char *buf, size_t buflen) struct udev *udev = NULL; #endif - memset(buf, 0, buflen); - - appendstr(buf, "Video capture device; ", buflen); + memset(s, 0, len); + appendstr(s, "Video capture device; ", len); #ifdef HAVE_UDEV /* Get a list of devices matching the "video4linux" subsystem from udev */ @@ -211,8 +207,8 @@ enumerate_video_devices(char *buf, size_t buflen) if (strncmp(name, "/dev/video", strlen("/dev/video")) == 0) { if (ndevs > 0) - appendstr(buf, "|", buflen); - appendstr(buf, name, buflen); + appendstr(s, "|", len); + appendstr(s, name, len); ndevs++; } @@ -223,23 +219,22 @@ enumerate_video_devices(char *buf, size_t buflen) udev_unref(udev); #else /* Just return a few options. We'll fail later if the device is not found. */ - appendstr(buf, "/dev/video0|/dev/video1|/dev/video2|/dev/video3", buflen); + appendstr(s, "/dev/video0|/dev/video1|/dev/video2|/dev/video3", len); #endif - } -static void -enumerate_audio_devices(char *buf, size_t buflen) +static void enumerate_audio_devices(char *s, size_t len) { - memset(buf, 0, buflen); - - appendstr(buf, "Audio capture device; ", buflen); - #ifdef HAVE_ALSA + int ndevs; void **hints, **n; char *ioid, *name; - int ndevs; +#endif + memset(s, 0, len); + appendstr(s, "Audio capture device; ", len); + +#ifdef HAVE_ALSA if (snd_device_name_hint(-1, "pcm", &hints) < 0) return; @@ -248,13 +243,14 @@ enumerate_audio_devices(char *buf, size_t buflen) { name = snd_device_name_get_hint(*n, "NAME"); ioid = snd_device_name_get_hint(*n, "IOID"); - if ((ioid == NULL || string_is_equal(ioid, "Input")) && - (!strncmp(name, "hw:", strlen("hw:")) || - !strncmp(name, "default:", strlen("default:")))) + if ( (ioid == NULL + || string_is_equal(ioid, "Input")) + && ( !strncmp(name, "hw:", strlen("hw:")) + || !strncmp(name, "default:", strlen("default:")))) { if (ndevs > 0) - appendstr(buf, "|", buflen); - appendstr(buf, name, buflen); + appendstr(s, "|", len); + appendstr(s, name, len); ++ndevs; } free(name); diff --git a/emscripten/library_platform_emscripten.js b/emscripten/library_platform_emscripten.js index 99dce4595c13..a2d71057d3c6 100644 --- a/emscripten/library_platform_emscripten.js +++ b/emscripten/library_platform_emscripten.js @@ -12,29 +12,9 @@ var LibraryPlatformEmscripten = { RPE.powerState.dischargeTime = Number.isFinite(e.target.dischargingTime) ? e.target.dischargingTime : 0x7FFFFFFF; RPE.powerState.level = e.target.level; RPE.powerState.charging = e.target.charging; - } - }, - - PlatformEmscriptenWatchCanvasSize: function() { - RPE.observer = new ResizeObserver(function(e) { - var width, height; - var entry = e.find(i => i.target == Module.canvas); - if (!entry) return; - if (entry.devicePixelContentBoxSize) { - width = entry.devicePixelContentBoxSize[0].inlineSize; - height = entry.devicePixelContentBoxSize[0].blockSize; - } else { - width = Math.round(entry.contentRect.width * window.devicePixelRatio); - height = Math.round(entry.contentRect.height * window.devicePixelRatio); - } - Module.setCanvasSize(width, height); - Module.print("Setting real canvas size: " + width + " x " + height); - }); - RPE.observer.observe(Module.canvas); - window.addEventListener("resize", function(e) { - RPE.observer.unobserve(Module.canvas); - RPE.observer.observe(Module.canvas); - }, false); + }, + command_queue:[], + command_reply_queue:[], }, PlatformEmscriptenPowerStateInit: function() { @@ -71,6 +51,15 @@ var LibraryPlatformEmscripten = { PlatformEmscriptenGetFreeMem: function() { if (!performance.memory) return 0; return (performance.memory.jsHeapSizeLimit || 0) - (performance.memory.usedJSHeapSize || 0); + }, + + $EmscriptenSendCommand__deps:["PlatformEmscriptenCommandRaiseFlag"], + $EmscriptenSendCommand: function(str) { + RPE.command_queue.push(str); + _PlatformEmscriptenCommandRaiseFlag(); + }, + $EmscriptenReceiveCommandReply: function() { + return RPE.command_reply_queue.shift(); } }; diff --git a/frontend/drivers/platform_emscripten.c b/frontend/drivers/platform_emscripten.c index 0657d139ecab..8463ff891be3 100644 --- a/frontend/drivers/platform_emscripten.c +++ b/frontend/drivers/platform_emscripten.c @@ -17,7 +17,13 @@ #include #include +#if HAVE_WASMFS +#include +#endif #include +#include +#include +#include #include #include @@ -50,7 +56,33 @@ #include "../../audio/audio_driver.h" void emscripten_mainloop(void); -void PlatformEmscriptenWatchCanvasSize(void); +void PlatformEmscriptenWatchCanvasSize(void) { + MAIN_THREAD_ASYNC_EM_ASM( + RPE.observer = new ResizeObserver(function(_e) { + var container = Module.canvas.parentElement; + var width = container.offsetWidth; + var height = container.offsetHeight; + var w = Module.canvas.width; + var h = Module.canvas.height; + if (w == 0 || h == 0 || width == 0 || height == 0) { return; } + /* Module.print("Setting real canvas size: " + width + " x " + height); */ + var new_w = `${width}px`; + var new_h = `${height}px`; + if (Module.canvas.style.width != new_w || Module.canvas.style.height != new_h) { + Module.canvas.style.width = new_w; + Module.canvas.style.height = new_h; + } + if (!Module.canvas.controlTransferredOffscreen) { + Module.Browser.setCanvasSize(width, height); + } + }); + RPE.observer.observe(Module.canvas.parentElement); + window.addEventListener("resize", function(e) { + RPE.observer.unobserve(Module.canvas.parentElement); + RPE.observer.observe(Module.canvas.parentElement); + }, false); + ); +} void PlatformEmscriptenPowerStateInit(void); bool PlatformEmscriptenPowerStateGetSupported(void); int PlatformEmscriptenPowerStateGetDischargeTime(void); @@ -59,9 +91,36 @@ bool PlatformEmscriptenPowerStateGetCharging(void); uint64_t PlatformEmscriptenGetTotalMem(void); uint64_t PlatformEmscriptenGetFreeMem(void); -//// begin exported functions +void PlatformEmscriptenCommandReply(const char *msg, size_t len) { + MAIN_THREAD_EM_ASM({ + var message = UTF8ToString($0,$1); + RPE.command_reply_queue.push(message); + }, msg, len); +} +static bool command_flag = false; +size_t PlatformEmscriptenCommandRead(char **into, size_t max_len) { + if(!command_flag) { return 0; } + return MAIN_THREAD_EM_ASM_INT({ + var next_command = RPE.command_queue.shift(); + var length = lengthBytesUTF8(next_command); + if(length > $2) { + console.error("[CMD] Command too long, skipping",next_command); + return 0; + } + stringToUTF8(next_command, $1, $2); + if(RPE.command_queue.length == 0) { + setValue($0, 0, 'i8'); + } + return length; + }, &command_flag, into, max_len); +} +void PlatformEmscriptenCommandRaiseFlag() { + command_flag = true; +} + +/* begin exported functions */ -// saves and states +/* saves and states */ void cmd_savefiles(void) { @@ -88,7 +147,7 @@ void cmd_undo_load_state(void) command_event(CMD_EVENT_UNDO_LOAD_STATE, NULL); } -// misc +/* misc */ void cmd_take_screenshot(void) { @@ -135,7 +194,8 @@ void cmd_unpause(void) command_event(CMD_EVENT_UNPAUSE, NULL); } -void cmd_set_volume(float volume) { +void cmd_set_volume(float volume) +{ audio_set_float(AUDIO_ACTION_VOLUME_GAIN, volume); } @@ -146,7 +206,7 @@ bool cmd_set_shader(const char *path) } #endif -// cheats +/* cheats */ void cmd_cheat_set_code(unsigned index, const char *str) { @@ -160,7 +220,9 @@ const char *cmd_cheat_get_code(unsigned index) void cmd_cheat_toggle_index(bool apply_cheats_after_toggle, unsigned index) { - cheat_manager_toggle_index(apply_cheats_after_toggle, index); + cheat_manager_toggle_index(apply_cheats_after_toggle, + config_get_ptr()->bools.notification_show_cheats_applied, + index); } bool cmd_cheat_get_code_state(unsigned index) @@ -180,10 +242,11 @@ unsigned cmd_cheat_get_size(void) void cmd_cheat_apply_cheats(void) { - cheat_manager_apply_cheats(); + cheat_manager_apply_cheats( + config_get_ptr()->bools.notification_show_cheats_applied); } -//// end exported functions +/* end exported functions */ static void frontend_emscripten_get_env(int *argc, char *argv[], void *args, void *params_data) @@ -258,17 +321,115 @@ static void frontend_emscripten_get_env(int *argc, char *argv[], fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CACHE], "/tmp/", "retroarch", sizeof(g_defaults.dirs[DEFAULT_DIR_CACHE])); - /* history and main config */ + /* history */ strlcpy(g_defaults.dirs[DEFAULT_DIR_CONTENT_HISTORY], user_path, sizeof(g_defaults.dirs[DEFAULT_DIR_CONTENT_HISTORY])); - fill_pathname_join(g_defaults.path_config, user_path, - FILE_PATH_MAIN_CONFIG, sizeof(g_defaults.path_config)); #ifndef IS_SALAMANDER dir_check_defaults("custom.ini"); #endif } +typedef struct args { + int argc; + char **argv; +} args_t; +static bool retro_started = false; +static bool filesystem_ready = false; + +#if HAVE_WASMFS +void PlatformEmscriptenMountFilesystems(void *info) { + char *opfs_mount = getenv("OPFS"); + char *fetch_manifest = getenv("FETCH_MANIFEST"); + if(opfs_mount) { + int res; + printf("[OPFS] Mount OPFS at %s\n", opfs_mount); + backend_t opfs = wasmfs_create_opfs_backend(); + { + char *parent = strdup(opfs_mount); + path_parent_dir(parent, strlen(parent)); + if(!path_mkdir(parent)) { + printf("mkdir error %d\n",errno); + abort(); + } + free(parent); + } + res = wasmfs_create_directory(opfs_mount, 0777, opfs); + if(res) { + printf("[OPFS] error result %d\n",res); + if(errno) { + printf("[OPFS] errno %d\n",errno); + abort(); + } + abort(); + } + } + if(fetch_manifest) { + /* fetch_manifest should be a path to a manifest file. + manifest files have this format: + + URL PATH + URL PATH + URL PATH + ... + + Where URL may not contain spaces, but PATH may. + */ + int max_line_len = 1024; + printf("[FetchFS] read fetch manifest from %s\n",fetch_manifest); + FILE *file = fopen(fetch_manifest, "r"); + if(!file) { + printf("[FetchFS] missing manifest file\n"); + abort(); + } + char *line = calloc(sizeof(char), max_line_len); + size_t len = max_line_len; + while (getline(&line, &len, file) != -1) { + char *path = strstr(line, " "); + backend_t fetch; + int fd; + if(len <= 2 || !path) { + printf("[FetchFS] Manifest file has invalid line %s\n",line); + continue; + } + *path = '\0'; + path += 1; + path[strcspn(path, "\r\n")] = '\0'; + printf("[FetchFS] Fetch %s from %s\n", path, line); + { + char *parent = strdup(path); + path_parent_dir(parent, strlen(parent)); + if(!path_mkdir(parent)) { + printf("[FetchFS] mkdir error %d\n",errno); + abort(); + } + free(parent); + } + fetch = wasmfs_create_fetch_backend(line, 16*1024*1024); + if(!fetch) { + printf("[FetchFS] couldn't create fetch backend\n"); + abort(); + } + fd = wasmfs_create_file(path, 0777, fetch); + if(!fd) { + printf("[FetchFS] couldn't create fetch file\n"); + abort(); + } + close(fd); + len = max_line_len; + } + fclose(file); + free(line); + } + filesystem_ready = true; +#if !PROXY_TO_PTHREAD + while (!retro_started) { + retro_sleep(1); + } +#endif +} +#endif /* HAVE_WASMFS */ + static enum frontend_powerstate frontend_emscripten_get_powerstate(int *seconds, int *percent) { enum frontend_powerstate ret = FRONTEND_POWERSTATE_NONE; @@ -299,17 +460,44 @@ static uint64_t frontend_emscripten_get_free_mem(void) return PlatformEmscriptenGetFreeMem(); } +void emscripten_bootup_mainloop(void *argptr) { + if(filesystem_ready) { + args_t *args = (args_t*)argptr; + emscripten_set_main_loop(emscripten_mainloop, 0, 0); + emscripten_set_main_loop_timing(EM_TIMING_RAF, 1); + rarch_main(args->argc, args->argv, NULL); + retro_started = true; + free(args); + } +} + int main(int argc, char *argv[]) { + args_t *args = calloc(sizeof(args_t), 1); + args->argc = argc; + args->argv = argv; + PlatformEmscriptenWatchCanvasSize(); PlatformEmscriptenPowerStateInit(); - EM_ASM({ - specialHTMLTargets["!canvas"] = Module.canvas; - }); - - emscripten_set_main_loop(emscripten_mainloop, 0, 0); - rarch_main(argc, argv, NULL); + emscripten_set_canvas_element_size("#canvas", 800, 600); + emscripten_set_element_css_size("#canvas", 800.0, 600.0); +#if HAVE_WASMFS +#if PROXY_TO_PTHREAD + { + PlatformEmscriptenMountFilesystems(NULL); + } +#else /* !PROXY_TO_PTHREAD */ + { + sthread_t *thread = sthread_create(PlatformEmscriptenMountFilesystems, NULL); + sthread_detach(thread); + } +#endif /* PROXY_TO_PTHREAD */ +#else /* !HAVE_WASMFS */ + filesystem_ready = true; +#endif /* HAVE_WASMFS */ + emscripten_set_main_loop_arg(emscripten_bootup_mainloop, (void *)args, 0, 0); + emscripten_set_main_loop_timing(EM_TIMING_RAF, 1); return 0; } diff --git a/gfx/common/vulkan_common.c b/gfx/common/vulkan_common.c index 55c7dee14ccb..c1b3fe3dab6e 100644 --- a/gfx/common/vulkan_common.c +++ b/gfx/common/vulkan_common.c @@ -1533,7 +1533,7 @@ bool vulkan_surface_create(gfx_ctx_vulkan_data_t *vk, enum vulkan_wsi_type type, void *display, void *surface, unsigned width, unsigned height, - unsigned swap_interval) + int8_t swap_interval) { switch (type) { @@ -1914,7 +1914,7 @@ bool vulkan_is_hdr10_format(VkFormat format) bool vulkan_create_swapchain(gfx_ctx_vulkan_data_t *vk, unsigned width, unsigned height, - unsigned swap_interval) + int8_t swap_interval) { unsigned i; uint32_t format_count; @@ -1932,6 +1932,7 @@ bool vulkan_create_swapchain(gfx_ctx_vulkan_data_t *vk, VkCompositeAlphaFlagBitsKHR composite = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR; settings_t *settings = config_get_ptr(); bool vsync = settings->bools.video_vsync; + bool adaptive_vsync = settings->bools.video_adaptive_vsync; format.format = VK_FORMAT_UNDEFINED; format.colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR; @@ -1951,7 +1952,7 @@ bool vulkan_create_swapchain(gfx_ctx_vulkan_data_t *vk, && (vk->flags & VK_DATA_FLAG_EMULATE_MAILBOX) && vsync) { - swap_interval = 1; + swap_interval = (adaptive_vsync) ? -1 : 1; vk->flags |= VK_DATA_FLAG_EMULATING_MAILBOX; } else @@ -2028,6 +2029,9 @@ bool vulkan_create_swapchain(gfx_ctx_vulkan_data_t *vk, vk->context.swap_interval = swap_interval; + for (i = 0; i < present_mode_count; i++) + vk->context.present_modes[i] = present_modes[i]; + /* Prefer IMMEDIATE without vsync */ for (i = 0; i < present_mode_count; i++) { @@ -2038,6 +2042,13 @@ bool vulkan_create_swapchain(gfx_ctx_vulkan_data_t *vk, swapchain_present_mode = VK_PRESENT_MODE_IMMEDIATE_KHR; break; } + + if ( swap_interval < 0 + && present_modes[i] == VK_PRESENT_MODE_FIFO_RELAXED_KHR) + { + swapchain_present_mode = VK_PRESENT_MODE_FIFO_RELAXED_KHR; + break; + } } /* If still in FIFO with no swap interval, try MAILBOX */ diff --git a/gfx/common/vulkan_common.h b/gfx/common/vulkan_common.h index 714960d63280..3a6dc9dd91ea 100644 --- a/gfx/common/vulkan_common.h +++ b/gfx/common/vulkan_common.h @@ -363,6 +363,7 @@ typedef struct vulkan_context VkPhysicalDeviceProperties gpu_properties; VkPhysicalDeviceMemoryProperties memory_properties; + VkPresentModeKHR present_modes[16]; VkImage swapchain_images[VULKAN_MAX_SWAPCHAIN_IMAGES]; VkFence swapchain_fences[VULKAN_MAX_SWAPCHAIN_IMAGES]; VkFormat swapchain_format; @@ -385,9 +386,9 @@ typedef struct vulkan_context unsigned swapchain_width; unsigned swapchain_height; - unsigned swap_interval; unsigned num_recycled_acquire_semaphores; + int8_t swap_interval; uint8_t flags; bool swapchain_fences_signalled[VULKAN_MAX_SWAPCHAIN_IMAGES]; @@ -723,7 +724,7 @@ bool vulkan_surface_create(gfx_ctx_vulkan_data_t *vk, enum vulkan_wsi_type type, void *display, void *surface, unsigned width, unsigned height, - unsigned swap_interval); + int8_t swap_interval); void vulkan_present(gfx_ctx_vulkan_data_t *vk, unsigned index); @@ -731,7 +732,7 @@ void vulkan_acquire_next_image(gfx_ctx_vulkan_data_t *vk); bool vulkan_create_swapchain(gfx_ctx_vulkan_data_t *vk, unsigned width, unsigned height, - unsigned swap_interval); + int8_t swap_interval); void vulkan_debug_mark_image(VkDevice device, VkImage image); void vulkan_debug_mark_memory(VkDevice device, VkDeviceMemory memory); diff --git a/gfx/common/win32_common.c b/gfx/common/win32_common.c index 4291d4e25f1b..f11535e4c347 100644 --- a/gfx/common/win32_common.c +++ b/gfx/common/win32_common.c @@ -349,6 +349,8 @@ static INT_PTR_COMPAT CALLBACK pick_core_proc( SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM)info->display_name); } + /* Select the first item in the list */ + SendMessage(hwndList, LB_SETCURSEL, 0, 0); SetFocus(hwndList); return TRUE; } @@ -2117,7 +2119,7 @@ static void win32_localize_menu(HMENU menu) memset(&menu_item_info, 0, sizeof(menu_item_info)); menu_item_info.cbSize = sizeof(menu_item_info); menu_item_info.dwTypeData = NULL; -#if(WINVER >= 0x0500) +#if (WINVER >= 0x0500) menu_item_info.fMask = MIIM_STRING | MIIM_FTYPE | MIIM_ID | MIIM_STATE | MIIM_SUBMENU; #else menu_item_info.fMask = MIIM_ID | MIIM_STATE | MIIM_SUBMENU; diff --git a/gfx/drivers/d3d10.c b/gfx/drivers/d3d10.c index 5c6261264625..1184ecf8d824 100644 --- a/gfx/drivers/d3d10.c +++ b/gfx/drivers/d3d10.c @@ -1336,7 +1336,7 @@ static bool d3d10_gfx_set_shader(void* data, &d3d10->pass[i].frame_count, /* FrameCount */ &d3d10->pass[i].frame_direction, /* FrameDirection */ &d3d10->pass[i].frame_time_delta,/* FrameTimeDelta */ - &d3d10->pass[i].original_fps, /* OriginalFPS */ + &d3d10->pass[i].original_fps, /* OriginalFPS */ &d3d10->pass[i].rotation, /* Rotation */ &d3d10->pass[i].core_aspect, /* OriginalAspect */ &d3d10->pass[i].core_aspect_rot, /* OriginalAspectRotated */ @@ -2324,28 +2324,23 @@ static bool d3d10_gfx_frame( d3d10_set_shader(context, &d3d10->pass[i].shader); if (d3d10->shader_preset->pass[i].frame_count_mod) - d3d10->pass[i].frame_count = + d3d10->pass[i].frame_count = frame_count % d3d10->shader_preset->pass[i].frame_count_mod; else - d3d10->pass[i].frame_count = frame_count; + d3d10->pass[i].frame_count = frame_count; #ifdef HAVE_REWIND - d3d10->pass[i].frame_direction = state_manager_frame_is_reversed() + d3d10->pass[i].frame_direction = state_manager_frame_is_reversed() ? -1 : 1; #else - d3d10->pass[i].frame_direction = 1; + d3d10->pass[i].frame_direction = 1; #endif - - d3d10->pass[i].frame_time_delta = video_driver_get_frame_time_delta_usec(); - - d3d10->pass[i].original_fps = video_driver_get_original_fps(); - - d3d10->pass[i].rotation = retroarch_get_rotation(); - - d3d10->pass[i].core_aspect = video_driver_get_core_aspect(); - - /* OriginalAspectRotated: return 1/aspect for 90 and 270 rotated content */ - d3d10->pass[i].core_aspect_rot = video_driver_get_core_aspect(); + d3d10->pass[i].frame_time_delta = (uint32_t)video_driver_get_frame_time_delta_usec(); + d3d10->pass[i].original_fps = video_driver_get_original_fps(); + d3d10->pass[i].rotation = retroarch_get_rotation(); + d3d10->pass[i].core_aspect = video_driver_get_core_aspect(); + /* OriginalAspectRotated: return 1 / aspect for 90 and 270 rotated content */ + d3d10->pass[i].core_aspect_rot = video_driver_get_core_aspect(); uint32_t rot = retroarch_get_rotation(); if (rot == 1 || rot == 3) d3d10->pass[i].core_aspect_rot = 1/d3d10->pass[i].core_aspect_rot; diff --git a/gfx/drivers/d3d11.c b/gfx/drivers/d3d11.c index 143877e296af..29e81d591d88 100644 --- a/gfx/drivers/d3d11.c +++ b/gfx/drivers/d3d11.c @@ -1538,7 +1538,7 @@ static bool d3d11_gfx_set_shader(void* data, enum rarch_shader_type type, const &d3d11->pass[i].frame_count, /* FrameCount */ &d3d11->pass[i].frame_direction, /* FrameDirection */ &d3d11->pass[i].frame_time_delta,/* FrameTimeDelta */ - &d3d11->pass[i].original_fps, /* OriginalFPS */ + &d3d11->pass[i].original_fps, /* OriginalFPS */ &d3d11->pass[i].rotation, /* Rotation */ &d3d11->pass[i].core_aspect, /* OriginalAspect */ &d3d11->pass[i].core_aspect_rot, /* OriginalAspectRotated */ @@ -3081,25 +3081,21 @@ static bool d3d11_gfx_frame( } if (d3d11->shader_preset->pass[i].frame_count_mod) - d3d11->pass[i].frame_count = + d3d11->pass[i].frame_count = frame_count % d3d11->shader_preset->pass[i].frame_count_mod; else - d3d11->pass[i].frame_count = frame_count; + d3d11->pass[i].frame_count = frame_count; #ifdef HAVE_REWIND - d3d11->pass[i].frame_direction = state_manager_frame_is_reversed() ? -1 : 1; + d3d11->pass[i].frame_direction = state_manager_frame_is_reversed() ? -1 : 1; #else - d3d11->pass[i].frame_direction = 1; + d3d11->pass[i].frame_direction = 1; #endif - d3d11->pass[i].frame_time_delta = video_driver_get_frame_time_delta_usec(); - - d3d11->pass[i].original_fps = video_driver_get_original_fps(); - - d3d11->pass[i].rotation = retroarch_get_rotation(); - - d3d11->pass[i].core_aspect = video_driver_get_core_aspect(); - - /* OriginalAspectRotated: return 1/aspect for 90 and 270 rotated content */ + d3d11->pass[i].frame_time_delta = (uint32_t)video_driver_get_frame_time_delta_usec(); + d3d11->pass[i].original_fps = video_driver_get_original_fps(); + d3d11->pass[i].rotation = retroarch_get_rotation(); + d3d11->pass[i].core_aspect = video_driver_get_core_aspect(); + /* OriginalAspectRotated: return 1 / aspect for 90 and 270 rotated content */ d3d11->pass[i].core_aspect_rot = video_driver_get_core_aspect(); uint32_t rot = retroarch_get_rotation(); if (rot == 1 || rot == 3) diff --git a/gfx/drivers/d3d12.c b/gfx/drivers/d3d12.c index 77bfd78d1439..1a702fafc628 100644 --- a/gfx/drivers/d3d12.c +++ b/gfx/drivers/d3d12.c @@ -1725,7 +1725,7 @@ static bool d3d12_gfx_set_shader(void* data, enum rarch_shader_type type, const &d3d12->pass[i].frame_count, /* FrameCount */ &d3d12->pass[i].frame_direction, /* FrameDirection */ &d3d12->pass[i].frame_time_delta,/* FrameTimeDelta */ - &d3d12->pass[i].original_fps, /* OriginalFPS */ + &d3d12->pass[i].original_fps, /* OriginalFPS */ &d3d12->pass[i].rotation, /* Rotation */ &d3d12->pass[i].core_aspect, /* OriginalAspect */ &d3d12->pass[i].core_aspect_rot, /* OriginalAspectRotated */ @@ -2373,11 +2373,11 @@ static bool d3d12_init_swapchain(d3d12_video_t* d3d12, if (max_latency == 0) { - d3d12->flags |= D3D12_ST_FLAG_WAIT_FOR_VBLANK; - max_latency = 1; + d3d12->flags |= D3D12_ST_FLAG_WAIT_FOR_VBLANK; + max_latency = 1; } else - d3d12->flags &= ~D3D12_ST_FLAG_WAIT_FOR_VBLANK; + d3d12->flags &= ~D3D12_ST_FLAG_WAIT_FOR_VBLANK; DXGISetMaximumFrameLatency(d3d12->chain.handle, max_latency); DXGIGetMaximumFrameLatency(d3d12->chain.handle, &cur_latency); @@ -2911,7 +2911,8 @@ static void *d3d12_gfx_init(const video_info_t* video, else d3d12->flags &= ~D3D12_ST_FLAG_WAITABLE_SWAPCHAINS; - d3d_input_driver(settings->arrays.input_driver, settings->arrays.input_joypad_driver, input, input_data); + d3d_input_driver(settings->arrays.input_driver, + settings->arrays.input_joypad_driver, input, input_data); d3d12_init_base(d3d12); d3d12_init_descriptors(d3d12); @@ -3513,7 +3514,7 @@ static bool d3d12_gfx_frame( if (d3d12->flags & D3D12_ST_FLAG_RESIZE_RTS) d3d12_init_render_targets(d3d12, width, height); - if(frame == RETRO_HW_FRAME_BUFFER_VALID) + if (frame == RETRO_HW_FRAME_BUFFER_VALID) { D3D12_BOX src_box; D3D12_TEXTURE_COPY_LOCATION src, dst; @@ -3595,21 +3596,16 @@ static bool d3d12_gfx_frame( d3d12->pass[i].frame_direction = -1; else #endif - d3d12->pass[i].frame_direction = 1; - - d3d12->pass[i].frame_time_delta = video_driver_get_frame_time_delta_usec(); - - d3d12->pass[i].original_fps = video_driver_get_original_fps(); - - d3d12->pass[i].rotation = retroarch_get_rotation(); - - d3d12->pass[i].core_aspect = video_driver_get_core_aspect(); - - /* OriginalAspectRotated: return 1/aspect for 90 and 270 rotated content */ - d3d12->pass[i].core_aspect_rot = video_driver_get_core_aspect(); + d3d12->pass[i].frame_direction = 1; + d3d12->pass[i].frame_time_delta = (uint32_t)video_driver_get_frame_time_delta_usec(); + d3d12->pass[i].original_fps = video_driver_get_original_fps(); + d3d12->pass[i].rotation = retroarch_get_rotation(); + d3d12->pass[i].core_aspect = video_driver_get_core_aspect(); + /* OriginalAspectRotated: return 1 / aspect for 90 and 270 rotated content */ + d3d12->pass[i].core_aspect_rot = video_driver_get_core_aspect(); uint32_t rot = retroarch_get_rotation(); if (rot == 1 || rot == 3) - d3d12->pass[i].core_aspect_rot = 1/d3d12->pass[i].core_aspect_rot; + d3d12->pass[i].core_aspect_rot = 1 / d3d12->pass[i].core_aspect_rot; /* Sub-frame info for multiframe shaders (per real content frame). Should always be 1 for non-use of subframes */ diff --git a/gfx/drivers/gl2.c b/gfx/drivers/gl2.c index 563651bbaff1..c0915e33830f 100644 --- a/gfx/drivers/gl2.c +++ b/gfx/drivers/gl2.c @@ -320,7 +320,8 @@ static const GLfloat white_color[16] = { */ static void gl2_set_viewport(gl2_t *gl, unsigned vp_width, unsigned vp_height, - bool force_full, bool allow_rotate); + bool force_full, bool allow_rotate, + bool video_scale_integer); #ifdef IOS /* There is no default frame buffer on iOS. */ @@ -943,9 +944,10 @@ static void gl2_raster_font_setup_viewport( gl2_t *gl, gl2_raster_t *font, unsigned width, unsigned height, - bool full_screen) + bool full_screen, + bool video_scale_integer) { - gl2_set_viewport(gl, width, height, full_screen, true); + gl2_set_viewport(gl, width, height, full_screen, true, video_scale_integer); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); @@ -973,6 +975,7 @@ static void gl2_raster_font_render_msg( gl2_t *gl = (gl2_t*)userdata; unsigned width = gl->video_width; unsigned height = gl->video_height; + bool video_scale_integer = config_get_ptr()->bools.video_scale_integer; if (!font || string_is_empty(msg) || !gl) return; @@ -1026,7 +1029,8 @@ static void gl2_raster_font_render_msg( if (font->block) font->block->fullscreen = full_screen; else - gl2_raster_font_setup_viewport(gl, font, width, height, full_screen); + gl2_raster_font_setup_viewport(gl, font, width, height, full_screen, + config_get_ptr()->bools.video_scale_integer); if ( !string_is_empty(msg) && font->font_data @@ -1055,7 +1059,7 @@ static void gl2_raster_font_render_msg( /* Restore viewport */ glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); glDisable(GL_BLEND); - gl2_set_viewport(gl, width, height, false, true); + gl2_set_viewport(gl, width, height, false, true, video_scale_integer); } } @@ -1074,18 +1078,20 @@ static void gl2_raster_font_flush_block(unsigned width, unsigned height, gl2_raster_t *font = (gl2_raster_t*)data; video_font_raster_block_t *block = font ? font->block : NULL; gl2_t *gl = font ? font->gl : NULL; + bool video_scale_integer = config_get_ptr()->bools.video_scale_integer; if (!font || !block || !block->carr.coords.vertices || !gl) return; - gl2_raster_font_setup_viewport(gl, font, width, height, block->fullscreen); + gl2_raster_font_setup_viewport(gl, font, width, height, block->fullscreen, + video_scale_integer); gl2_raster_font_draw_vertices(gl, font, (video_coords_t*)&block->carr.coords); /* Restore viewport */ glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); glDisable(GL_BLEND); - gl2_set_viewport(gl, width, height, block->fullscreen, true); + gl2_set_viewport(gl, width, height, block->fullscreen, true, video_scale_integer); } static void gl2_raster_font_bind_block(void *data, void *userdata) @@ -1268,16 +1274,16 @@ static void gl2_set_projection(gl2_t *gl, static void gl2_set_viewport(gl2_t *gl, unsigned vp_width, unsigned vp_height, - bool force_full, bool allow_rotate) + bool force_full, bool allow_rotate, + bool video_scale_integer) { - settings_t *settings = config_get_ptr(); float device_aspect = (float)vp_width / (float)vp_height; if (gl->ctx_driver->translate_aspect) device_aspect = gl->ctx_driver->translate_aspect( gl->ctx_data, vp_width, vp_height); - if (settings->bools.video_scale_integer && !force_full) + if (video_scale_integer && !force_full) { video_viewport_get_scaled_integer(&gl->vp, vp_width, vp_height, @@ -1322,7 +1328,8 @@ static void gl2_renderchain_render( gl2_renderchain_data_t *chain, uint64_t frame_count, const struct video_tex_info *tex_info, - const struct video_tex_info *feedback_info) + const struct video_tex_info *feedback_info, + bool video_scale_integer) { int i; video_shader_ctx_params_t params; @@ -1379,7 +1386,8 @@ static void gl2_renderchain_render( /* Render to FBO with certain size. */ gl2_set_viewport(gl, - rect->img_width, rect->img_height, true, false); + rect->img_width, rect->img_height, true, false, + video_scale_integer); params.data = gl; params.width = prev_rect->img_width; @@ -1444,8 +1452,7 @@ static void gl2_renderchain_render( glGenerateMipmap(GL_TEXTURE_2D); glClear(GL_COLOR_BUFFER_BIT); - gl2_set_viewport(gl, - width, height, false, true); + gl2_set_viewport(gl, width, height, false, true, video_scale_integer); params.data = gl; params.width = prev_rect->img_width; @@ -1602,20 +1609,13 @@ static GLenum gl2_min_filter_to_mag(GLenum type) static void gl2_create_fbo_texture(gl2_t *gl, gl2_renderchain_data_t *chain, - unsigned i, GLuint texture) + unsigned i, GLuint texture, + bool video_smooth, bool force_srgb_disable) { GLenum mag_filter, wrap_enum; enum gfx_wrap_type wrap_type; bool fp_fbo = false; bool smooth = false; - settings_t *settings = config_get_ptr(); - bool video_smooth = settings->bools.video_smooth; -#if HAVE_ODROIDGO2 - bool video_ctx_scaling = settings->bools.video_ctx_scaling; - if (video_ctx_scaling) - video_smooth = false; -#endif - bool force_srgb_disable = settings->bools.video_force_srgb_disable; GLuint base_filt = video_smooth ? GL_LINEAR : GL_NEAREST; GLuint base_mip_filt = video_smooth ? GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST; @@ -1719,20 +1719,29 @@ static void gl2_create_fbo_textures(gl2_t *gl, gl2_renderchain_data_t *chain) { int i; + settings_t *settings = config_get_ptr(); +#if HAVE_ODROIDGO2 + bool video_smooth = settings->bools.video_ctx_scaling ? false : settings->bools.video_smooth; +#else + bool video_smooth = settings->bools.video_smooth; +#endif + bool force_srgb_disable = settings->bools.video_force_srgb_disable; glGenTextures(chain->fbo_pass, chain->fbo_texture); for (i = 0; i < chain->fbo_pass; i++) gl2_create_fbo_texture(gl, (gl2_renderchain_data_t*)gl->renderchain_data, - i, chain->fbo_texture[i]); + i, chain->fbo_texture[i], + video_smooth, force_srgb_disable); if (gl->flags & GL2_FLAG_FBO_FEEDBACK_ENABLE) { glGenTextures(1, &gl->fbo_feedback_texture); gl2_create_fbo_texture(gl, (gl2_renderchain_data_t*)gl->renderchain_data, - gl->fbo_feedback_pass, gl->fbo_feedback_texture); + gl->fbo_feedback_pass, gl->fbo_feedback_texture, + video_smooth, force_srgb_disable); } glBindTexture(GL_TEXTURE_2D, 0); @@ -1842,9 +1851,8 @@ static void gl2_renderchain_recompute_pass_sizes( } } -static void gl2_renderchain_start_render( - gl2_t *gl, - gl2_renderchain_data_t *chain) +static void gl2_renderchain_start_render(gl2_t *gl, + gl2_renderchain_data_t *chain, bool video_scale_integer) { /* Used when rendering to an FBO. * Texture coords have to be aligned @@ -1860,7 +1868,8 @@ static void gl2_renderchain_start_render( gl2_set_viewport(gl, gl->fbo_rect[0].img_width, - gl->fbo_rect[0].img_height, true, false); + gl->fbo_rect[0].img_height, true, false, + video_scale_integer); /* Need to preserve the "flipped" state when in FBO * as well to have consistent texture coordinates. @@ -2759,7 +2768,10 @@ static void gl2_set_viewport_wrapper(void *data, unsigned vp_width, unsigned vp_height, bool force_full, bool allow_rotate) { gl2_t *gl = (gl2_t*)data; - gl2_set_viewport(gl, vp_width, vp_height, force_full, allow_rotate); + gl2_set_viewport(gl, + vp_width, vp_height, force_full, allow_rotate, + config_get_ptr()->bools.video_scale_integer + ); } /* Shaders */ @@ -3084,7 +3096,7 @@ static void gl2_init_textures(gl2_t *gl) glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); } -static INLINE void gl2_set_shader_viewports(gl2_t *gl) +static INLINE void gl2_set_shader_viewports(gl2_t *gl, bool video_scale_integer) { int i; unsigned width = gl->video_width; @@ -3093,7 +3105,8 @@ static INLINE void gl2_set_shader_viewports(gl2_t *gl) for (i = 0; i < 2; i++) { gl->shader->use(gl, gl->shader_data, i, true); - gl2_set_viewport(gl, width, height, false, true); + gl2_set_viewport(gl, width, height, false, true, + video_scale_integer); } } @@ -3147,7 +3160,7 @@ static void gl2_set_texture_enable(void *data, bool state, bool full_screen) gl->flags &= ~GL2_FLAG_MENU_TEXTURE_FULLSCREEN; } -static void gl2_render_osd_background(gl2_t *gl, const char *msg) +static void gl2_render_osd_background(gl2_t *gl, bool video_scale_integer, const char *msg) { video_coords_t coords; struct uniform_info uniform_param; @@ -3174,9 +3187,9 @@ static void gl2_render_osd_background(gl2_t *gl, const char *msg) width += x2; height += y2; - colors[0] = settings->uints.video_msg_bgcolor_red / 255.0f; + colors[0] = settings->uints.video_msg_bgcolor_red / 255.0f; colors[1] = settings->uints.video_msg_bgcolor_green / 255.0f; - colors[2] = settings->uints.video_msg_bgcolor_blue / 255.0f; + colors[2] = settings->uints.video_msg_bgcolor_blue / 255.0f; colors[3] = settings->floats.video_msg_bgcolor_opacity; /* triangle 1 */ @@ -3207,7 +3220,8 @@ static void gl2_render_osd_background(gl2_t *gl, const char *msg) gl2_set_viewport(gl, gl->video_width, - gl->video_height, true, false); + gl->video_height, true, false, + video_scale_integer); gl->shader->use(gl, gl->shader_data, VIDEO_SHADER_STOCK_BLEND, true); @@ -3255,7 +3269,7 @@ static void gl2_render_osd_background(gl2_t *gl, const char *msg) gl2_set_viewport(gl, gl->video_width, - gl->video_height, false, true); + gl->video_height, false, true, video_scale_integer); } static void gl2_show_mouse(void *data, bool state) @@ -3384,6 +3398,7 @@ static bool gl2_frame(void *data, const void *frame, bool widgets_active = video_info->widgets_active; #endif bool overlay_behind_menu = video_info->overlay_behind_menu; + bool video_scale_integer = config_get_ptr()->bools.video_scale_integer; if (!gl) return false; @@ -3400,7 +3415,7 @@ static bool gl2_frame(void *data, const void *frame, #ifdef IOS /* Apparently the viewport is lost each frame, thanks Apple. */ - gl2_set_viewport(gl, width, height, false, true); + gl2_set_viewport(gl, width, height, false, true, video_scale_integer); #endif /* Render to texture in first pass. */ @@ -3411,7 +3426,7 @@ static bool gl2_frame(void *data, const void *frame, frame_width, frame_height, gl->out_vp_width, gl->out_vp_height); - gl2_renderchain_start_render(gl, chain); + gl2_renderchain_start_render(gl, chain, video_scale_integer); } if (gl->flags & GL2_FLAG_SHOULD_RESIZE) @@ -3472,10 +3487,10 @@ static bool gl2_frame(void *data, const void *frame, /* Go back to what we're supposed to do, * render to FBO #0. */ - gl2_renderchain_start_render(gl, chain); + gl2_renderchain_start_render(gl, chain, video_scale_integer); } else - gl2_set_viewport(gl, width, height, false, true); + gl2_set_viewport(gl, width, height, false, true, video_scale_integer); } if (frame) @@ -3509,7 +3524,7 @@ static bool gl2_frame(void *data, const void *frame, if (!(gl->flags & GL2_FLAG_FBO_INITED)) { gl2_renderchain_bind_backbuffer(); - gl2_set_viewport(gl, width, height, false, true); + gl2_set_viewport(gl, width, height, false, true, video_scale_integer); } gl2_renderchain_restore_default_state(gl); @@ -3573,7 +3588,8 @@ static bool gl2_frame(void *data, const void *frame, if (gl->flags & GL2_FLAG_FBO_INITED) gl2_renderchain_render(gl, chain, - frame_count, &gl->tex_info, &feedback_info); + frame_count, &gl->tex_info, &feedback_info, + video_scale_integer); /* Set prev textures. */ gl2_renderchain_bind_prev_texture(gl, @@ -3613,7 +3629,7 @@ static bool gl2_frame(void *data, const void *frame, if (!string_is_empty(msg)) { if (msg_bgcolor_enable) - gl2_render_osd_background(gl, msg); + gl2_render_osd_background(gl, video_scale_integer, msg); font_driver_render_msg(gl, msg, NULL, NULL); } @@ -4193,6 +4209,7 @@ static void *gl2_init(const video_info_t *video, unsigned shader_info_num; settings_t *settings = config_get_ptr(); bool video_gpu_record = settings->bools.video_gpu_record; + bool video_scale_integer = settings->bools.video_scale_integer; int interval = 0; unsigned mip_level = 0; unsigned mode_width = 0; @@ -4501,7 +4518,7 @@ static void *gl2_init(const video_info_t *video, #endif /* Apparently need to set viewport for passes * when we aren't using FBOs. */ - gl2_set_shader_viewports(gl); + gl2_set_shader_viewports(gl, video_scale_integer); mip_level = 1; if (gl->shader->mipmap_input(gl->shader_data, mip_level)) @@ -4657,20 +4674,13 @@ static bool gl2_suppress_screensaver(void *data, bool enable) return false; } -static void gl2_update_tex_filter_frame(gl2_t *gl) +static void gl2_update_tex_filter_frame(gl2_t *gl, bool video_smooth) { unsigned i, mip_level; GLenum wrap_mode; GLuint new_filt; enum gfx_wrap_type wrap_type; bool smooth = false; - settings_t *settings = config_get_ptr(); - bool video_smooth = settings->bools.video_smooth; -#ifdef HAVE_ODROIDGO2 - bool video_ctx_scaling = settings->bools.video_ctx_scaling; - if (video_ctx_scaling) - video_smooth = false; -#endif if (gl->flags & GL2_FLAG_SHARED_CONTEXT_USE) gl->ctx_driver->bind_hw_render(gl->ctx_data, false); @@ -4719,7 +4729,14 @@ static bool gl2_set_shader(void *data, unsigned textures; video_shader_ctx_init_t init_data; enum rarch_shader_type fallback; - gl2_t *gl = (gl2_t*)data; + gl2_t *gl = (gl2_t*)data; + settings_t *settings = config_get_ptr(); + bool video_scale_integer = settings->bools.video_scale_integer; +#ifdef HAVE_ODROIDGO2 + bool video_smooth = settings->bools.video_ctx_scaling ? false : settings->bools.video_smooth; +#else + bool video_smooth = settings->bools.video_smooth; +#endif if (!gl) return false; @@ -4777,7 +4794,7 @@ static bool gl2_set_shader(void *data, gl->shader = init_data.shader; gl->shader_data = init_data.shader_data; - gl2_update_tex_filter_frame(gl); + gl2_update_tex_filter_frame(gl, video_smooth); { unsigned texture_info_id = gl->shader->get_prev_textures(gl->shader_data); @@ -4812,7 +4829,7 @@ static bool gl2_set_shader(void *data, gl->tex_w, gl->tex_h); /* Apparently need to set viewport for passes when we aren't using FBOs. */ - gl2_set_shader_viewports(gl); + gl2_set_shader_viewports(gl, video_scale_integer); if (gl->flags & GL2_FLAG_SHARED_CONTEXT_USE) gl->ctx_driver->bind_hw_render(gl->ctx_data, true); diff --git a/gfx/drivers/gl3.c b/gfx/drivers/gl3.c index 3fdace418a56..5d7bef333226 100644 --- a/gfx/drivers/gl3.c +++ b/gfx/drivers/gl3.c @@ -2740,7 +2740,7 @@ static bool gl3_frame(void *data, const void *frame, #else gl3_filter_chain_set_frame_direction(gl->filter_chain, 1); #endif - gl3_filter_chain_set_frame_time_delta(gl->filter_chain, video_driver_get_frame_time_delta_usec()); + gl3_filter_chain_set_frame_time_delta(gl->filter_chain, (uint32_t)video_driver_get_frame_time_delta_usec()); gl3_filter_chain_set_original_fps(gl->filter_chain, video_driver_get_original_fps()); diff --git a/gfx/drivers/gl_shaders/pipeline_snowflake.glsl.frag.h b/gfx/drivers/gl_shaders/pipeline_snowflake.glsl.frag.h index 64ed81a0f76c..db69949c0b77 100644 --- a/gfx/drivers/gl_shaders/pipeline_snowflake.glsl.frag.h +++ b/gfx/drivers/gl_shaders/pipeline_snowflake.glsl.frag.h @@ -28,17 +28,13 @@ static const char* stock_fragment_xmb_snowflake = GLSL( float dist = d.x*d.x + d.y*d.y; - if(dist < pos.z/400.0) + if (dist < pos.z/400.0) { float col = 0.0; - if(sin(a * 8.0) < 0.0) - { + if (sin(a * 8.0) < 0.0) col=1.0; - } - if(dist < pos.z/800.0) - { + if (dist < pos.z/800.0) col+=1.0; - } return col * pos.z; } diff --git a/gfx/drivers/gx2_gfx.c b/gfx/drivers/gx2_gfx.c index 2ac624afbe4b..1df7a4f36e6e 100644 --- a/gfx/drivers/gx2_gfx.c +++ b/gfx/drivers/gx2_gfx.c @@ -1958,23 +1958,18 @@ static bool gx2_frame(void *data, const void *frame, { unsigned i; #ifdef HAVE_REWIND - int32_t frame_direction = state_manager_frame_is_reversed() ? -1 : 1; + int32_t frame_direction = state_manager_frame_is_reversed() ? -1 : 1; #else - int32_t frame_direction = 1; + int32_t frame_direction = 1; #endif - - uint32_t frame_time_delta = video_driver_get_frame_time_delta_usec(); - - float original_fps = video_driver_get_original_fps(); - - uint32_t rotation = retroarch_get_rotation(); - - float core_aspect = video_driver_get_core_aspect(); - + uint32_t frame_time_delta = (uint32_t)video_driver_get_frame_time_delta_usec(); + float original_fps = video_driver_get_original_fps(); + uint32_t rotation = retroarch_get_rotation(); + float core_aspect = video_driver_get_core_aspect(); /* OriginalAspectRotated: return 1/aspect for 90 and 270 rotated content */ - float core_aspect_rot = core_aspect; + float core_aspect_rot = core_aspect; if (rotation == 1 || rotation == 3) - core_aspect_rot = 1/core_aspect; + core_aspect_rot = 1 / core_aspect; for (i = 0; i < wiiu->shader_preset->passes; i++) { @@ -1986,7 +1981,8 @@ static bool gx2_frame(void *data, const void *frame, gx2_update_uniform_block(wiiu, i, wiiu->pass[i].vs_ubos[j], j, wiiu->pass[i].gfd->vs->uniformBlocks[j].size, wiiu->pass[i].gfd->vs->uniformVarCount, wiiu->pass[i].gfd->vs->uniformVars, - frame_count, frame_direction, rotation, core_aspect, core_aspect_rot,frame_time_delta, original_fps); + frame_count, frame_direction, rotation, core_aspect, core_aspect_rot, + frame_time_delta, original_fps); GX2SetVertexUniformBlock(wiiu->pass[i].gfd->vs->uniformBlocks[j].offset, wiiu->pass[i].gfd->vs->uniformBlocks[j].size, wiiu->pass[i].vs_ubos[j]); @@ -1999,7 +1995,8 @@ static bool gx2_frame(void *data, const void *frame, gx2_update_uniform_block(wiiu, i, wiiu->pass[i].ps_ubos[j], j, wiiu->pass[i].gfd->ps->uniformBlocks[j].size, wiiu->pass[i].gfd->ps->uniformVarCount, wiiu->pass[i].gfd->ps->uniformVars, - frame_count, frame_direction, rotation, core_aspect, core_aspect_rot,frame_time_delta, original_fps); + frame_count, frame_direction, rotation, core_aspect, core_aspect_rot, + frame_time_delta, original_fps); GX2SetPixelUniformBlock(wiiu->pass[i].gfd->ps->uniformBlocks[j].offset, wiiu->pass[i].gfd->ps->uniformBlocks[j].size, wiiu->pass[i].ps_ubos[j]); } diff --git a/gfx/drivers/gx2_shaders/bokeh.frag b/gfx/drivers/gx2_shaders/bokeh.frag index 29a8d481166b..5462baab42d4 100644 --- a/gfx/drivers/gx2_shaders/bokeh.frag +++ b/gfx/drivers/gx2_shaders/bokeh.frag @@ -11,26 +11,25 @@ layout(location = 0) out vec4 FragColor; void main(void) { + float speed = global.time * 4.0; + vec2 uv = -1.0 + 2.0 * gl_FragCoord.xy / global.OutputSize; + uv.x *= global.OutputSize.x / global.OutputSize.y; + vec3 color = vec3(0.0); - float speed = global.time * 4.0; - vec2 uv = -1.0 + 2.0 * gl_FragCoord.xy / global.OutputSize; - uv.x *= global.OutputSize.x / global.OutputSize.y; - vec3 color = vec3(0.0); - -for( int i=0; i < 6; i++ ) + for( int i=0; i < 6; i++ ) + { + float pha = sin(float(i) * 546.13 + 1.0) * 0.5 + 0.5; + float siz = pow(sin(float(i) * 651.74 + 5.0) * 0.5 + 0.5, 4.0); + float pox = sin(float(i) * 321.55 + 4.1) * global.OutputSize.x / global.OutputSize.y; + float rad = 0.1 + 0.5 * siz + sin(pha + siz) / 4.0; + vec2 pos = vec2(pox + sin(speed / 15. + pha + siz), - 1.0 - rad + (2.0 + 2.0 * rad) * fract(pha + 0.3 * (speed / 7.) * (0.2 + 0.8 * siz))); + float dis = length(uv - pos); + if (dis < rad) { - float pha = sin(float(i) * 546.13 + 1.0) * 0.5 + 0.5; - float siz = pow(sin(float(i) * 651.74 + 5.0) * 0.5 + 0.5, 4.0); - float pox = sin(float(i) * 321.55 + 4.1) * global.OutputSize.x / global.OutputSize.y; - float rad = 0.1 + 0.5 * siz + sin(pha + siz) / 4.0; - vec2 pos = vec2(pox + sin(speed / 15. + pha + siz), - 1.0 - rad + (2.0 + 2.0 * rad) * fract(pha + 0.3 * (speed / 7.) * (0.2 + 0.8 * siz))); - float dis = length(uv - pos); - if(dis < rad) - { - vec3 col = mix(vec3(0.194 * sin(speed / 6.0) + 0.3, 0.2, 0.3 * pha), vec3(1.1 * sin(speed / 9.0) + 0.3, 0.2 * pha, 0.4), 0.5 + 0.5 * sin(float(i))); - color += col.zyx * (1.0 - smoothstep(rad * 0.15, rad, dis)); - } + vec3 col = mix(vec3(0.194 * sin(speed / 6.0) + 0.3, 0.2, 0.3 * pha), vec3(1.1 * sin(speed / 9.0) + 0.3, 0.2 * pha, 0.4), 0.5 + 0.5 * sin(float(i))); + color += col.zyx * (1.0 - smoothstep(rad * 0.15, rad, dis)); } - color *= sqrt(1.5 - 0.5 * length(uv)); + } + color *= sqrt(1.5 - 0.5 * length(uv)); FragColor = vec4(color.r, color.g, color.b , 0.5); } diff --git a/gfx/drivers/gx2_shaders/snowflake.frag b/gfx/drivers/gx2_shaders/snowflake.frag index a3934e4f24c1..a8bf1db1079c 100644 --- a/gfx/drivers/gx2_shaders/snowflake.frag +++ b/gfx/drivers/gx2_shaders/snowflake.frag @@ -29,17 +29,13 @@ float snow(vec3 pos, vec2 uv, float o) float dist = d.x*d.x + d.y*d.y; - if(dist < pos.z/400.0) + if (dist < pos.z/400.0) { float col = 0.0; if(sin(a * 8.0) < 0.0) - { col=1.0; - } if(dist < pos.z/800.0) - { col+=1.0; - } return col * pos.z; } diff --git a/gfx/drivers/metal.m b/gfx/drivers/metal.m index 9916dcd322b6..53b4eee15bee 100644 --- a/gfx/drivers/metal.m +++ b/gfx/drivers/metal.m @@ -1578,23 +1578,19 @@ - (void)drawWithContext:(Context *)ctx _engine.pass[i].frame_direction = -1; else #else - _engine.pass[i].frame_direction = 1; + _engine.pass[i].frame_direction = 1; #endif - - _engine.pass[i].frame_time_delta = video_driver_get_frame_time_delta_usec(); - - _engine.pass[i].original_fps = video_driver_get_original_fps(); - - _engine.pass[i].rotation = retroarch_get_rotation(); - - _engine.pass[i].core_aspect = video_driver_get_core_aspect(); - - /* OriginalAspectRotated: return 1/aspect for 90 and 270 rotated content */ - int rot = retroarch_get_rotation(); - float core_aspect_rot = video_driver_get_core_aspect(); + _engine.pass[i].frame_time_delta = (uint32_t)video_driver_get_frame_time_delta_usec(); + _engine.pass[i].original_fps = video_driver_get_original_fps(); + _engine.pass[i].rotation = retroarch_get_rotation(); + _engine.pass[i].core_aspect = video_driver_get_core_aspect(); + + /* OriginalAspectRotated: return 1 / aspect for 90 and 270 rotated content */ + int rot = retroarch_get_rotation(); + float core_aspect_rot = video_driver_get_core_aspect(); if (rot == 1 || rot == 3) - core_aspect_rot = 1/core_aspect_rot; - _engine.pass[i].core_aspect_rot = core_aspect_rot; + core_aspect_rot = 1 / core_aspect_rot; + _engine.pass[i].core_aspect_rot = core_aspect_rot; for (j = 0; j < SLANG_CBUFFER_MAX; j++) { diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index 203e144e0125..7063b3e8722e 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -3257,19 +3257,15 @@ static void vulkan_init_hw_render(vk_t *vk) iface->get_instance_proc_addr = vulkan_symbol_wrapper_instance_proc_addr(); } -static void vulkan_init_readback(vk_t *vk, settings_t *settings) +static void vulkan_init_readback(vk_t *vk, bool video_gpu_record) { /* Only bother with this if we're doing GPU recording. - * Check recording_st->enable and not - * driver.recording_data, because recording is - * not initialized yet. + * Check rec_st->enable and not driver.recording_data, + * because recording is not initialized yet. */ - recording_state_t - *recording_st = recording_state_get_ptr(); - bool recording_enabled = recording_st->enable; - bool video_gpu_record = settings->bools.video_gpu_record; + recording_state_t *rec_st = recording_state_get_ptr(); - if (!(video_gpu_record && recording_enabled)) + if (!(video_gpu_record && rec_st->enable)) { vk->flags &= ~VK_FLAG_READBACK_STREAMED; return; @@ -3335,10 +3331,10 @@ static void *vulkan_init(const video_info_t *video, } #ifdef VULKAN_HDR_SWAPCHAIN - vk->hdr.max_output_nits = settings->floats.video_hdr_max_nits; - vk->hdr.min_output_nits = 0.001f; - vk->hdr.max_cll = 0.0f; - vk->hdr.max_fall = 0.0f; + vk->hdr.max_output_nits = settings->floats.video_hdr_max_nits; + vk->hdr.min_output_nits = 0.001f; + vk->hdr.max_cll = 0.0f; + vk->hdr.max_fall = 0.0f; #endif /* VULKAN_HDR_SWAPCHAIN */ vk->video = *video; @@ -3552,7 +3548,7 @@ static void *vulkan_init(const video_info_t *video, is the simplest solution unless reinit tracking is done */ vk->flags |= VK_FLAG_SHOULD_RESIZE; - vulkan_init_readback(vk, settings); + vulkan_init_readback(vk, settings->bools.video_gpu_record); return vk; error: @@ -3830,8 +3826,7 @@ static void vulkan_set_viewport(void *data, unsigned vp_width, { float device_aspect = (float)vp_width / vp_height; struct video_ortho ortho = {0, 1, 0, 1, -1, 1}; - settings_t *settings = config_get_ptr(); - bool video_scale_integer = settings->bools.video_scale_integer; + bool video_scale_integer = config_get_ptr()->bools.video_scale_integer; vk_t *vk = (vk_t*)data; if (vk->ctx_driver->translate_aspect) @@ -4572,7 +4567,7 @@ static bool vulkan_frame(void *data, const void *frame, 1); #endif vulkan_filter_chain_set_frame_time_delta( - (vulkan_filter_chain_t*)vk->filter_chain, video_driver_get_frame_time_delta_usec()); + (vulkan_filter_chain_t*)vk->filter_chain, (uint32_t)video_driver_get_frame_time_delta_usec()); vulkan_filter_chain_set_original_fps( (vulkan_filter_chain_t*)vk->filter_chain, video_driver_get_original_fps()); diff --git a/gfx/drivers_context/cocoa_gl_ctx.m b/gfx/drivers_context/cocoa_gl_ctx.m index 65899de61b30..bbe17c3f5a48 100644 --- a/gfx/drivers_context/cocoa_gl_ctx.m +++ b/gfx/drivers_context/cocoa_gl_ctx.m @@ -174,6 +174,7 @@ static void cocoa_gl_gfx_ctx_destroy(void *data) #else [EAGLContext setCurrentContext:nil]; #endif + g_hw_ctx = nil; g_ctx = nil; free(cocoa_ctx); @@ -481,12 +482,20 @@ static bool cocoa_gl_gfx_ctx_set_video_mode(void *data, #if defined(HAVE_OPENGLES3) if (cocoa_ctx->flags & COCOA_CTX_FLAG_USE_HW_CTX) + { g_hw_ctx = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; - g_ctx = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; + g_ctx = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3 sharegroup:g_hw_ctx.sharegroup]; + } + else + g_ctx = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; #elif defined(HAVE_OPENGLES2) if (cocoa_ctx->flags & COCOA_CTX_FLAG_USE_HW_CTX) + { g_hw_ctx = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; - g_ctx = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; + g_ctx = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2 sharegroup:g_hw_ctx.sharegroup]; + } + else + g_ctx = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; #endif #ifdef OSX diff --git a/gfx/drivers_context/emscriptenegl_ctx.c b/gfx/drivers_context/emscriptenegl_ctx.c index 797999227cd1..b1097498f1d9 100644 --- a/gfx/drivers_context/emscriptenegl_ctx.c +++ b/gfx/drivers_context/emscriptenegl_ctx.c @@ -52,7 +52,7 @@ static void gfx_ctx_emscripten_swap_interval(void *data, int interval) static void gfx_ctx_emscripten_get_canvas_size(int *width, int *height) { - EMSCRIPTEN_RESULT r = emscripten_get_canvas_element_size("!canvas", width, height); + EMSCRIPTEN_RESULT r = emscripten_get_canvas_element_size("#canvas", width, height); if (r != EMSCRIPTEN_RESULT_SUCCESS) { @@ -70,11 +70,10 @@ static void gfx_ctx_emscripten_check_window(void *data, bool *quit, emscripten_ctx_data_t *emscripten = (emscripten_ctx_data_t*)data; gfx_ctx_emscripten_get_canvas_size(&input_width, &input_height); - + *resize = (emscripten->fb_width != input_width || emscripten->fb_height != input_height); *width = emscripten->fb_width = (unsigned)input_width; *height = emscripten->fb_height = (unsigned)input_height; *quit = false; - *resize = false; } static void gfx_ctx_emscripten_swap_buffers(void *data) @@ -94,9 +93,10 @@ static void gfx_ctx_emscripten_get_video_size(void *data, if (!emscripten) return; - - *width = emscripten->fb_width; - *height = emscripten->fb_height; + int w, h; + gfx_ctx_emscripten_get_canvas_size(&w, &h); + *width = w; + *height = h; } static bool gfx_ctx_emscripten_get_metrics(void *data, @@ -124,11 +124,9 @@ static void gfx_ctx_emscripten_destroy(void *data) if (!emscripten) return; - #ifdef HAVE_EGL egl_destroy(&emscripten->egl); #endif - free(data); } @@ -191,7 +189,6 @@ static void *gfx_ctx_emscripten_init(void *video_driver) #endif return emscripten; - error: gfx_ctx_emscripten_destroy(video_driver); return NULL; diff --git a/gfx/drivers_context/emscriptenwebgl_ctx.c b/gfx/drivers_context/emscriptenwebgl_ctx.c new file mode 100644 index 000000000000..32702a6510d0 --- /dev/null +++ b/gfx/drivers_context/emscriptenwebgl_ctx.c @@ -0,0 +1,298 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2017 - Daniel De Matteis + * Copyright (C) 2012-2015 - Michael Lelli + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include + +#include +#include + +#ifdef HAVE_CONFIG_H +#include "../../config.h" +#endif + +#include "../../retroarch.h" +#include "../../verbosity.h" + +typedef struct +{ + EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx; + unsigned fb_width; + unsigned fb_height; +} emscripten_ctx_data_t; + +static void gfx_ctx_emscripten_webgl_swap_interval(void *data, int interval) +{ + if (interval == 0) + emscripten_set_main_loop_timing(EM_TIMING_SETIMMEDIATE, 0); + else + emscripten_set_main_loop_timing(EM_TIMING_RAF, interval); +} + +static void gfx_ctx_emscripten_webgl_get_canvas_size(int *width, int *height) +{ + EmscriptenFullscreenChangeEvent fullscreen_status; + bool is_fullscreen = false; + EMSCRIPTEN_RESULT r = emscripten_get_fullscreen_status(&fullscreen_status); + + if (r == EMSCRIPTEN_RESULT_SUCCESS) + { + if (fullscreen_status.isFullscreen) + { + is_fullscreen = true; + *width = fullscreen_status.screenWidth; + *height = fullscreen_status.screenHeight; + } + } + if (!is_fullscreen) + { + double w, h; + r = emscripten_get_element_css_size("#canvas", &w, &h); + *width = (int)w; + *height = (int)h; + + if (r != EMSCRIPTEN_RESULT_SUCCESS) + { + *width = 800; + *height = 600; + RARCH_ERR("[EMSCRIPTEN/WebGL]: Could not get screen dimensions: %d\n",r); + } + } +} + +static void gfx_ctx_emscripten_webgl_check_window(void *data, bool *quit, + bool *resize, unsigned *width, unsigned *height) +{ + int input_width=0; + int input_height=0; + emscripten_ctx_data_t *emscripten = (emscripten_ctx_data_t*)data; + + gfx_ctx_emscripten_webgl_get_canvas_size(&input_width, &input_height); + *width = (unsigned)input_width; + *height = (unsigned)input_height; + *resize = (*width != emscripten->fb_width || *height != emscripten->fb_height); + emscripten->fb_width = *width; + emscripten->fb_height = *height; + *quit = false; +} + +static void gfx_ctx_emscripten_webgl_swap_buffers(void *data) +{ +#ifdef USE_OFFSCREENCANVAS + emscripten_webgl_commit_frame(); +#endif +} + +static void gfx_ctx_emscripten_webgl_get_video_size(void *data, + unsigned *width, unsigned *height) +{ + emscripten_ctx_data_t *emscripten = (emscripten_ctx_data_t*)data; + int s_width, s_height; + if (!emscripten) + return; + gfx_ctx_emscripten_webgl_get_canvas_size(&s_width, &s_height); + *width = (unsigned)s_width; + *height = (unsigned)s_height; +} + +static void gfx_ctx_emscripten_webgl_destroy(void *data) +{ + emscripten_ctx_data_t *emscripten = (emscripten_ctx_data_t*)data; + + if (!emscripten) + return; + + emscripten_webgl_destroy_context(emscripten->ctx); + + free(data); +} + +static void *gfx_ctx_emscripten_webgl_init(void *video_driver) +{ + int width, height; + emscripten_ctx_data_t *emscripten = (emscripten_ctx_data_t*) + calloc(1, sizeof(*emscripten)); + + EmscriptenWebGLContextAttributes attrs={0}; + emscripten_webgl_init_context_attributes(&attrs); + attrs.alpha = false; + attrs.depth = true; + attrs.stencil = true; + attrs.antialias = false; + attrs.powerPreference = EM_WEBGL_POWER_PREFERENCE_HIGH_PERFORMANCE; + attrs.majorVersion = 2; + attrs.minorVersion = 0; + attrs.enableExtensionsByDefault = true; +#ifdef USE_OFFSCREENCANVAS + attrs.explicitSwapControl = true; +#else + attrs.explicitSwapControl = false; +#endif + attrs.renderViaOffscreenBackBuffer = false; + attrs.proxyContextToMainThread = EMSCRIPTEN_WEBGL_CONTEXT_PROXY_DISALLOW; + + if (!emscripten) + return NULL; + + emscripten->ctx = emscripten_webgl_create_context("#canvas", &attrs); + if(!emscripten->ctx) { + RARCH_ERR("[EMSCRIPTEN/WEBGL]: Failed to initialize webgl\n"); + goto error; + } + emscripten_webgl_get_drawing_buffer_size(emscripten->ctx, &width, &height); + emscripten_webgl_make_context_current(emscripten->ctx); + emscripten->fb_width = (unsigned)width; + emscripten->fb_height = (unsigned)height; + + return emscripten; + +error: + gfx_ctx_emscripten_webgl_destroy(video_driver); + return NULL; +} + +static bool gfx_ctx_emscripten_webgl_set_video_mode(void *data, + unsigned width, unsigned height, + bool fullscreen) +{ + emscripten_ctx_data_t *emscripten = (emscripten_ctx_data_t*)data; + EMSCRIPTEN_RESULT r; + if(!emscripten || !emscripten->ctx) return false; + + if (width != 0 && height != 0) { + r = emscripten_set_canvas_element_size("#canvas", + (int)width, (int)height); + + if (r != EMSCRIPTEN_RESULT_SUCCESS) { + RARCH_ERR("[EMSCRIPTEN/WebGL]: error resizing canvas: %d\n", r); + return false; + } + } + emscripten->fb_width = width; + emscripten->fb_height = height; + + return true; +} + +bool gfx_ctx_emscripten_webgl_set_resize(void *data, unsigned width, unsigned height) { + emscripten_ctx_data_t *emscripten = (emscripten_ctx_data_t*)data; + EMSCRIPTEN_RESULT r; + if(!emscripten || !emscripten->ctx) return false; + r = emscripten_set_canvas_element_size("#canvas", + (int)width, (int)height); + if (r != EMSCRIPTEN_RESULT_SUCCESS) { + RARCH_ERR("[EMSCRIPTEN/WebGL]: error resizing canvas: %d\n", r); + return false; + } + return true; +} + +static enum gfx_ctx_api gfx_ctx_emscripten_webgl_get_api(void *data) { return GFX_CTX_OPENGL_ES_API; } + +static bool gfx_ctx_emscripten_webgl_bind_api(void *data, + enum gfx_ctx_api api, unsigned major, unsigned minor) +{ + return true; +} + +static void gfx_ctx_emscripten_webgl_input_driver(void *data, + const char *name, + input_driver_t **input, void **input_data) +{ + void *rwebinput = input_driver_init_wrap(&input_rwebinput, name); + *input = rwebinput ? &input_rwebinput : NULL; + *input_data = rwebinput; +} + +static bool gfx_ctx_emscripten_webgl_get_metrics(void *data, + enum display_metric_types type, float *value) +{ + switch (type) + { + // there is no way to get the actual DPI in emscripten, so return a standard value instead. + // this is needed for menu touch/pointer swipe scrolling to work. + case DISPLAY_METRIC_DPI: + *value = 150.0f; + break; + + default: + *value = 0.0f; + return false; + } + + return true; +} + +static bool gfx_ctx_emscripten_webgl_has_focus(void *data) { + emscripten_ctx_data_t *emscripten = (emscripten_ctx_data_t*)data; + return emscripten && emscripten->ctx; +} + +static bool gfx_ctx_emscripten_webgl_suppress_screensaver(void *data, bool enable) { return false; } + +static float gfx_ctx_emscripten_webgl_translate_aspect(void *data, + unsigned width, unsigned height) { return (float)width / height; } + +static void gfx_ctx_emscripten_webgl_bind_hw_render(void *data, bool enable) +{ + emscripten_ctx_data_t *emscripten = (emscripten_ctx_data_t*)data; + emscripten_webgl_make_context_current(emscripten->ctx); +} + +static uint32_t gfx_ctx_emscripten_webgl_get_flags(void *data) +{ + uint32_t flags = 0; + BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_GLSL); + return flags; +} + +static void gfx_ctx_emscripten_webgl_set_flags(void *data, uint32_t flags) { } + +const gfx_ctx_driver_t gfx_ctx_emscripten_webgl = { + gfx_ctx_emscripten_webgl_init, + gfx_ctx_emscripten_webgl_destroy, + gfx_ctx_emscripten_webgl_get_api, + gfx_ctx_emscripten_webgl_bind_api, + gfx_ctx_emscripten_webgl_swap_interval, + gfx_ctx_emscripten_webgl_set_video_mode, + gfx_ctx_emscripten_webgl_get_video_size, + NULL, /* get_refresh_rate */ + NULL, /* get_video_output_size */ + NULL, /* get_video_output_prev */ + NULL, /* get_video_output_next */ + gfx_ctx_emscripten_webgl_get_metrics, + gfx_ctx_emscripten_webgl_translate_aspect, + NULL, /* update_title */ + gfx_ctx_emscripten_webgl_check_window, + gfx_ctx_emscripten_webgl_set_resize, /* set_resize */ + gfx_ctx_emscripten_webgl_has_focus, + gfx_ctx_emscripten_webgl_suppress_screensaver, + false, + gfx_ctx_emscripten_webgl_swap_buffers, + gfx_ctx_emscripten_webgl_input_driver, + NULL, + NULL, + NULL, + NULL, + "webgl_emscripten", + gfx_ctx_emscripten_webgl_get_flags, + gfx_ctx_emscripten_webgl_set_flags, + gfx_ctx_emscripten_webgl_bind_hw_render, + NULL, /* get_context_data */ + NULL /* make_current */ +}; diff --git a/gfx/drivers_context/w_vk_ctx.c b/gfx/drivers_context/w_vk_ctx.c index 8f2d40bf06a9..2e0b9469764b 100644 --- a/gfx/drivers_context/w_vk_ctx.c +++ b/gfx/drivers_context/w_vk_ctx.c @@ -271,10 +271,24 @@ static void *gfx_ctx_w_vk_get_context_data(void *data) { return &win32_vk.contex static uint32_t gfx_ctx_w_vk_get_flags(void *data) { - uint32_t flags = 0; + uint32_t flags = 0; + uint8_t present_mode_count = 16; + uint8_t i = 0; + + /* Check for FIFO_RELAXED_KHR capability */ + for (i = 0; i < present_mode_count; i++) + { + if (win32_vk.context.present_modes[i] == VK_PRESENT_MODE_FIFO_RELAXED_KHR) + { + BIT32_SET(flags, GFX_CTX_FLAGS_ADAPTIVE_VSYNC); + break; + } + } + #if defined(HAVE_SLANG) && defined(HAVE_SPIRV_CROSS) BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_SLANG); #endif + return flags; } diff --git a/gfx/drivers_context/x_vk_ctx.c b/gfx/drivers_context/x_vk_ctx.c index 38e8654a85c4..b1eb9094589f 100644 --- a/gfx/drivers_context/x_vk_ctx.c +++ b/gfx/drivers_context/x_vk_ctx.c @@ -526,8 +526,20 @@ static void *gfx_ctx_x_vk_get_context_data(void *data) static uint32_t gfx_ctx_x_vk_get_flags(void *data) { - uint32_t flags = 0; - gfx_ctx_x_vk_data_t *x = (gfx_ctx_x_vk_data_t*)data; + gfx_ctx_x_vk_data_t *x = (gfx_ctx_x_vk_data_t*)data; + uint32_t flags = 0; + uint8_t present_mode_count = 16; + uint8_t i = 0; + + /* Check for FIFO_RELAXED_KHR capability */ + for (i = 0; i < present_mode_count; i++) + { + if (x->vk.context.present_modes[i] == VK_PRESENT_MODE_FIFO_RELAXED_KHR) + { + BIT32_SET(flags, GFX_CTX_FLAGS_ADAPTIVE_VSYNC); + break; + } + } #if defined(HAVE_SLANG) && defined(HAVE_SPIRV_CROSS) BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_SLANG); diff --git a/gfx/drivers_shader/shader_glsl.c b/gfx/drivers_shader/shader_glsl.c index 7a17ade1a17b..d8e97d8be58b 100644 --- a/gfx/drivers_shader/shader_glsl.c +++ b/gfx/drivers_shader/shader_glsl.c @@ -1368,7 +1368,7 @@ static void gl_glsl_set_params(void *dat, void *shader_data) } if (uni->frame_time_delta >= 0) - glUniform1i(uni->frame_time_delta, video_driver_get_frame_time_delta_usec()); + glUniform1i(uni->frame_time_delta, (GLint)video_driver_get_frame_time_delta_usec()); if (uni->original_fps >= 0) glUniform1f(uni->original_fps, video_driver_get_original_fps()); diff --git a/gfx/gfx_display.c b/gfx/gfx_display.c index 67063efade8b..63cd804bae0b 100644 --- a/gfx/gfx_display.c +++ b/gfx/gfx_display.c @@ -289,7 +289,9 @@ float gfx_display_get_dpi_scale( menu_scale_factor = 1.0f; else #endif +#ifdef HAVE_GFX_WIDGETS menu_scale_factor = settings->floats.menu_scale_factor; +#endif } } #endif diff --git a/gfx/gfx_display.h b/gfx/gfx_display.h index fc2bcdd2438f..79aac74114a2 100644 --- a/gfx/gfx_display.h +++ b/gfx/gfx_display.h @@ -32,7 +32,7 @@ #include "../retroarch.h" #include "../gfx/font_driver.h" -#define GFX_SHADOW_ALPHA 0.75f +#define GFX_SHADOW_ALPHA 1.00f /* Number of pixels corner-to-corner on a 1080p * display: diff --git a/gfx/gfx_thumbnail.c b/gfx/gfx_thumbnail.c index 4e1a54351900..7cfc3798f7a2 100644 --- a/gfx/gfx_thumbnail.c +++ b/gfx/gfx_thumbnail.c @@ -35,7 +35,7 @@ #include "../tasks/tasks_internal.h" -#define DEFAULT_GFX_THUMBNAIL_STREAM_DELAY 83.333333f +#define DEFAULT_GFX_THUMBNAIL_STREAM_DELAY 16.66667f * 3 #define DEFAULT_GFX_THUMBNAIL_FADE_DURATION 166.66667f /* Utility structure, sent as userdata when pushing @@ -282,8 +282,11 @@ static bool gfx_thumbnail_get_path( * on-demand thumbnail download support * (an annoyance...) */ void gfx_thumbnail_request( - gfx_thumbnail_path_data_t *path_data, enum gfx_thumbnail_id thumbnail_id, - playlist_t *playlist, size_t idx, gfx_thumbnail_t *thumbnail, + gfx_thumbnail_path_data_t *path_data, + enum gfx_thumbnail_id thumbnail_id, + playlist_t *playlist, + size_t idx, + gfx_thumbnail_t *thumbnail, unsigned gfx_thumbnail_upscale_threshold, bool network_on_demand_thumbnails) { @@ -332,7 +335,7 @@ void gfx_thumbnail_request( { enum playlist_thumbnail_name_flags curr_flag; static char last_img_name[PATH_MAX_LENGTH] = {0}; - settings_t *settings = config_get_ptr(); + bool playlist_use_filename = config_get_ptr()->bools.playlist_use_filename; if (!playlist) goto end; /* Only trigger a thumbnail download if image @@ -364,7 +367,7 @@ void gfx_thumbnail_request( || curr_flag & PLAYLIST_THUMBNAIL_FLAG_SHORT_NAME) goto end; /* Do not try to fetch full names here, if it is not explicitly wanted */ - if ( !settings->bools.playlist_use_filename + if ( !playlist_use_filename && !playlist_thumbnail_match_with_filename(playlist) && curr_flag == PLAYLIST_THUMBNAIL_FLAG_INVALID) playlist_update_thumbnail_name_flag(playlist, idx, PLAYLIST_THUMBNAIL_FLAG_FULL_NAME); @@ -883,6 +886,16 @@ void gfx_thumbnail_get_draw_dimensions( *draw_width = *draw_width / (thumbnail_aspect / core_aspect); } + /* Final overwidth check */ + if (*draw_width > width) + { + *draw_width = (float)width; + *draw_height = (float)thumbnail->height * (*draw_width / (float)thumbnail->width); + + if (thumbnail->flags & GFX_THUMB_FLAG_CORE_ASPECT) + *draw_height = *draw_height * (thumbnail_aspect / core_aspect); + } + /* Account for scale factor * > Side note: We cannot use the gfx_display_ctx_draw_t * 'scale_factor' parameter for scaling thumbnails, diff --git a/gfx/gfx_thumbnail_path.c b/gfx/gfx_thumbnail_path.c index 0a78dc0543c6..76d609f724c7 100644 --- a/gfx/gfx_thumbnail_path.c +++ b/gfx/gfx_thumbnail_path.c @@ -39,15 +39,15 @@ * Named_Titles, Named_Boxarts, Named_Logos) for specified thumbnail * identifier (right, left) */ static const char *gfx_thumbnail_get_type( - settings_t *settings, + unsigned gfx_thumbnails, + unsigned left_thumbnails, + unsigned icon_thumbnails, gfx_thumbnail_path_data_t *path_data, enum gfx_thumbnail_id thumbnail_id) { if (path_data) { unsigned type = 0; - unsigned menu_left_thumbnails = settings->uints.menu_left_thumbnails; - unsigned gfx_thumbnails = settings->uints.gfx_thumbnails; switch (thumbnail_id) { case GFX_THUMBNAIL_RIGHT: @@ -60,10 +60,13 @@ static const char *gfx_thumbnail_get_type( if (path_data->playlist_left_mode != PLAYLIST_THUMBNAIL_MODE_DEFAULT) type = (unsigned)path_data->playlist_left_mode - 1; else - type = menu_left_thumbnails; + type = left_thumbnails; break; case GFX_THUMBNAIL_ICON: - type = 4; + if (path_data->playlist_icon_mode != PLAYLIST_THUMBNAIL_MODE_DEFAULT) + type = (unsigned)path_data->playlist_icon_mode - 1; + else + type = icon_thumbnails; break; default: goto end; @@ -139,9 +142,11 @@ void gfx_thumbnail_path_reset(gfx_thumbnail_path_data_t *path_data) path_data->content_img_short[0] = '\0'; path_data->right_path[0] = '\0'; path_data->left_path[0] = '\0'; + path_data->icon_path[0] = '\0'; path_data->playlist_right_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT; path_data->playlist_left_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT; + path_data->playlist_icon_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT; } /* Initialisation */ @@ -166,7 +171,8 @@ gfx_thumbnail_path_data_t *gfx_thumbnail_path_init(void) /* Returns true if specified thumbnail is enabled * (i.e. if 'type' is not equal to MENU_ENUM_LABEL_VALUE_OFF) */ -bool gfx_thumbnail_is_enabled(gfx_thumbnail_path_data_t *path_data, enum gfx_thumbnail_id thumbnail_id) +bool gfx_thumbnail_is_enabled(gfx_thumbnail_path_data_t *path_data, + enum gfx_thumbnail_id thumbnail_id) { if (path_data) { @@ -187,7 +193,7 @@ bool gfx_thumbnail_is_enabled(gfx_thumbnail_path_data_t *path_data, enum gfx_thu return menu_left_thumbnails != 0; case GFX_THUMBNAIL_ICON: if (path_data->playlist_icon_mode != PLAYLIST_THUMBNAIL_MODE_DEFAULT) - return path_data->playlist_left_mode != PLAYLIST_THUMBNAIL_MODE_OFF; + return path_data->playlist_icon_mode != PLAYLIST_THUMBNAIL_MODE_OFF; return menu_icon_thumbnails != 0; default: break; @@ -488,7 +494,7 @@ bool gfx_thumbnail_set_content_playlist( sizeof(path_data->content_img), path_data->content_label, false); /* Explicit zero if full name is same as standard name - saves some queries later. */ - if(string_is_equal(path_data->content_img, path_data->content_img_full)) + if (string_is_equal(path_data->content_img, path_data->content_img_full)) path_data->content_img_full[0] = '\0'; gfx_thumbnail_fill_content_img(path_data->content_img_short, @@ -559,10 +565,14 @@ bool gfx_thumbnail_update_path( enum gfx_thumbnail_id thumbnail_id) { char content_dir[DIR_MAX_LENGTH]; - settings_t *settings = config_get_ptr(); - const char *system_name = NULL; - char *thumbnail_path = NULL; - const char *dir_thumbnails = NULL; + settings_t *settings = config_get_ptr(); + const char *system_name = NULL; + char *thumbnail_path = NULL; + const char *dir_thumbnails = settings->paths.directory_thumbnails; + bool playlist_allow_non_png = settings->bools.playlist_allow_non_png; + unsigned gfx_thumbnails = settings->uints.gfx_thumbnails; + unsigned menu_left_thumbnails = settings->uints.menu_left_thumbnails; + unsigned menu_icon_thumbnails = settings->uints.menu_icon_thumbnails; /* Thumbnail extension order. The default (i.e. png) is always the first. */ #define MAX_SUPPORTED_THUMBNAIL_EXTENSIONS 5 const char* const SUPPORTED_THUMBNAIL_EXTENSIONS[] = { ".png", ".jpg", ".jpeg", ".bmp", ".tga", 0 }; @@ -588,9 +598,6 @@ bool gfx_thumbnail_update_path( content_dir[0] = '\0'; - if (settings) - dir_thumbnails = settings->paths.directory_thumbnails; - /* Sundry error checking */ if (string_is_empty(dir_thumbnails)) return false; @@ -641,10 +648,10 @@ bool gfx_thumbnail_update_path( } else { - char tmp_buf[DIR_MAX_LENGTH]; - const char *type = gfx_thumbnail_get_type(settings, - path_data, thumbnail_id); int i; + char tmp_buf[DIR_MAX_LENGTH]; + const char *type = gfx_thumbnail_get_type(gfx_thumbnails, + menu_left_thumbnails, menu_icon_thumbnails, path_data, thumbnail_id); bool thumbnail_found = false; /* > Normal content: assemble path */ @@ -664,12 +671,13 @@ bool gfx_thumbnail_update_path( /* Try alternative file extensions in turn, if wanted */ for (i = 1; - settings->bools.playlist_allow_non_png + playlist_allow_non_png && !thumbnail_found && thumbnail_path[0]!='\0' && i < MAX_SUPPORTED_THUMBNAIL_EXTENSIONS; i++ ) { - strlcpy(path_get_extension_mutable(thumbnail_path),SUPPORTED_THUMBNAIL_EXTENSIONS[i],6); + strlcpy(path_get_extension_mutable(thumbnail_path), + SUPPORTED_THUMBNAIL_EXTENSIONS[i], 6); thumbnail_found = path_is_valid(thumbnail_path); } @@ -683,11 +691,12 @@ bool gfx_thumbnail_update_path( } for (i = 1; - settings->bools.playlist_allow_non_png + playlist_allow_non_png && !thumbnail_found && i < MAX_SUPPORTED_THUMBNAIL_EXTENSIONS ; i++ ) { - strlcpy(path_get_extension_mutable(thumbnail_path),SUPPORTED_THUMBNAIL_EXTENSIONS[i],6); + strlcpy(path_get_extension_mutable(thumbnail_path), + SUPPORTED_THUMBNAIL_EXTENSIONS[i], 6); thumbnail_found = path_is_valid(thumbnail_path); } @@ -701,11 +710,12 @@ bool gfx_thumbnail_update_path( } for( i = 1 ; - settings->bools.playlist_allow_non_png + playlist_allow_non_png && !thumbnail_found && i < MAX_SUPPORTED_THUMBNAIL_EXTENSIONS ; i++ ) { - strlcpy(path_get_extension_mutable(thumbnail_path),SUPPORTED_THUMBNAIL_EXTENSIONS[i],6); + strlcpy(path_get_extension_mutable(thumbnail_path), + SUPPORTED_THUMBNAIL_EXTENSIONS[i], 6); thumbnail_found = path_is_valid(thumbnail_path); } /* This logic is valid for locally stored thumbnails. For optional downloads, @@ -720,11 +730,11 @@ bool gfx_thumbnail_update_path( /* Fetches current content directory. * Returns true if content directory is valid. */ -size_t gfx_thumbnail_get_content_dir( - gfx_thumbnail_path_data_t *path_data, char *s, size_t len) +size_t gfx_thumbnail_get_content_dir(gfx_thumbnail_path_data_t *path_data, + char *s, size_t len) { - char *last_slash; size_t _len; + char *last_slash; char tmp_buf[NAME_MAX_LENGTH]; if (!path_data || string_is_empty(path_data->content_path)) return 0; diff --git a/gfx/gfx_widgets.c b/gfx/gfx_widgets.c index b36f3abc0930..a35cd5dfb92c 100644 --- a/gfx/gfx_widgets.c +++ b/gfx/gfx_widgets.c @@ -212,6 +212,11 @@ void gfx_widgets_msg_queue_push( msg_widget->unfold = 1.0f; } + if (category == MESSAGE_QUEUE_CATEGORY_WARNING) + msg_widget->flags |= DISPWIDG_FLAG_CATEGORY_WARNING; + else if (category == MESSAGE_QUEUE_CATEGORY_ERROR) + msg_widget->flags |= DISPWIDG_FLAG_CATEGORY_ERROR; + if (task) { len = strlen(task->title); @@ -1361,24 +1366,30 @@ static void gfx_widgets_draw_regular_msg( unsigned video_width, unsigned video_height) { - static float msg_queue_info[16] = COLOR_HEX_TO_FLOAT(0x0C99D6, 1.0f); - static float msg_queue_bar[16] = COLOR_HEX_TO_FLOAT(0xCCCCCC, 1.0f); + static float msg_queue_info_blue[16] = COLOR_HEX_TO_FLOAT(0x0C99D6, 1.0f); + static float msg_queue_info_yellow[16] = COLOR_HEX_TO_FLOAT(0xD6C10C, 1.0f); + static float msg_queue_info_red[16] = COLOR_HEX_TO_FLOAT(0xD6160C, 1.0f); + static float msg_queue_bar[16] = COLOR_HEX_TO_FLOAT(0xCCCCCC, 1.0f); + float* msg_queue_info; unsigned rect_width; unsigned rect_margin; unsigned text_color; - static float last_alpha = 0.0f; msg->flags &= ~DISPWIDG_FLAG_UNFOLDING; msg->flags |= DISPWIDG_FLAG_UNFOLDED; - if (last_alpha != msg->alpha) - { - /* Icon */ - gfx_display_set_alpha(msg_queue_info, msg->alpha); - gfx_display_set_alpha(p_dispwidget->pure_white, msg->alpha); - gfx_display_set_alpha(p_dispwidget->msg_queue_bg, msg->alpha); - last_alpha = msg->alpha; - } + /* Tint icon yellow for warnings and red for errors, otherwise use blue */ + if (msg->flags & DISPWIDG_FLAG_CATEGORY_WARNING) + msg_queue_info = msg_queue_info_yellow; + else if (msg->flags & DISPWIDG_FLAG_CATEGORY_ERROR) + msg_queue_info = msg_queue_info_red; + else + msg_queue_info = msg_queue_info_blue; + + /* Icon */ + gfx_display_set_alpha(msg_queue_info, msg->alpha); + gfx_display_set_alpha(p_dispwidget->pure_white, msg->alpha); + gfx_display_set_alpha(p_dispwidget->msg_queue_bg, msg->alpha); if ( !(msg->flags & DISPWIDG_FLAG_UNFOLDED) || (msg->flags & DISPWIDG_FLAG_UNFOLDING)) @@ -1461,6 +1472,10 @@ static void gfx_widgets_draw_regular_msg( if (p_dispwidget->flags & DISPGFX_WIDGET_FLAG_MSG_QUEUE_HAS_ICONS) { + /* For warnings and errors, flip the 'i' upside down so it becomes '!' */ + bool invert_y = (msg->flags & ( DISPWIDG_FLAG_CATEGORY_WARNING + | DISPWIDG_FLAG_CATEGORY_ERROR)) != 0; + if (dispctx && dispctx->blend_begin) dispctx->blend_begin(userdata); @@ -1476,7 +1491,7 @@ static void gfx_widgets_draw_regular_msg( + (p_dispwidget->simple_widget_padding / 4.0f), video_height - msg->offset_y - p_dispwidget->msg_queue_icon_offset_y, 0.0f, /* rad */ - 1.0f, /* cos(rad) = cos(0) = 1.0f */ + (invert_y ? -1.0f : 1.0f), /* cosine */ 0.0f, /* sine(rad) = sine(0) = 0.0f */ msg_queue_info); diff --git a/gfx/gfx_widgets.h b/gfx/gfx_widgets.h index 7b0a02ebde07..99c6bfbefc1d 100644 --- a/gfx/gfx_widgets.h +++ b/gfx/gfx_widgets.h @@ -116,7 +116,9 @@ enum disp_widget_flags_enum DISPWIDG_FLAG_UNFOLDING = (1 << 7), /* Color style */ DISPWIDG_FLAG_POSITIVE = (1 << 8), - DISPWIDG_FLAG_NEGATIVE = (1 << 9) + DISPWIDG_FLAG_NEGATIVE = (1 << 9), + DISPWIDG_FLAG_CATEGORY_WARNING = (1 << 10), + DISPWIDG_FLAG_CATEGORY_ERROR = (1 << 11) }; /* There can only be one message animation at a time to diff --git a/gfx/video_crt_switch.c b/gfx/video_crt_switch.c index 352538ac41c1..c1f72f70b686 100644 --- a/gfx/video_crt_switch.c +++ b/gfx/video_crt_switch.c @@ -23,7 +23,6 @@ #include #include -#include "../retroarch.h" #include #include "video_crt_switch.h" #include "video_display_server.h" @@ -78,15 +77,15 @@ static void crt_store_temp_changes(videocrt_switch_t *p_switch) static void crt_aspect_ratio_switch( videocrt_switch_t *p_switch, unsigned width, unsigned height, - float srm_width, float srm_height) + float srm_width, float srm_height, + unsigned video_aspect_ratio_idx) { - settings_t *settings = config_get_ptr(); float fly_aspect = (float)width / (float)height; p_switch->fly_aspect = fly_aspect; video_driver_state_t *video_st = video_state_get_ptr(); /* We only force aspect ratio for the core provided setting */ - if (settings->uints.video_aspect_ratio_idx != ASPECT_RATIO_CORE) + if (video_aspect_ratio_idx != ASPECT_RATIO_CORE) { RARCH_LOG("[CRT]: Aspect ratio forced by user: %f\n", video_st->aspect_ratio); return; @@ -145,7 +144,9 @@ static void crt_switch_set_aspect( scaled_width = roundf(patched_width * srm_xscale); scaled_height = roundf(patched_height * srm_yscale); - crt_aspect_ratio_switch(p_switch, scaled_width, scaled_height, srm_width, srm_height); + crt_aspect_ratio_switch(p_switch, scaled_width, scaled_height, + srm_width, srm_height, + config_get_ptr()->uints.video_aspect_ratio_idx); } #if !defined(HAVE_VIDEOCORE) @@ -384,9 +385,9 @@ void crt_switch_res_core( int crt_switch_center_adjust, int crt_switch_porch_adjust, int monitor_index, bool dynamic, - int super_width, bool hires_menu) + int super_width, bool hires_menu, + unsigned video_aspect_ratio_idx) { - settings_t *settings = config_get_ptr(); if (height <= 4) { hz = 60; @@ -444,8 +445,8 @@ void crt_switch_res_core( crt_store_temp_changes(p_switch); } - if ( (settings->uints.video_aspect_ratio_idx == ASPECT_RATIO_CORE) - && video_driver_get_aspect_ratio() != p_switch->fly_aspect) + if ( (video_aspect_ratio_idx == ASPECT_RATIO_CORE) + && video_driver_get_aspect_ratio() != p_switch->fly_aspect) { video_driver_state_t *video_st = video_state_get_ptr(); float fly_aspect = (float)p_switch->fly_aspect; @@ -558,7 +559,8 @@ static void crt_rpi_switch(videocrt_switch_t *p_switch, width = w; - crt_aspect_ratio_switch(p_switch, width,height,width,height); + crt_aspect_ratio_switch(p_switch, width, height, width, height, + config_get_ptr()->uints.video_aspect_ratio_idx); /* following code is the mode line generator */ hfp = ((width * 0.044f) + (width / 112)); diff --git a/gfx/video_crt_switch.h b/gfx/video_crt_switch.h index 860443be39ac..1b354d80f8b0 100644 --- a/gfx/video_crt_switch.h +++ b/gfx/video_crt_switch.h @@ -84,7 +84,8 @@ void crt_switch_res_core( int monitor_index, bool dynamic, int super_width, - bool hires_menu); + bool hires_menu, + unsigned video_aspect_ratio_idx); void crt_destroy_modes(videocrt_switch_t *p_switch); diff --git a/gfx/video_driver.c b/gfx/video_driver.c index fde66068d428..be6c830e0d40 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -162,8 +162,11 @@ static const gfx_ctx_driver_t *gfx_ctx_gl_drivers[] = { #ifdef HAVE_OSMESA &gfx_ctx_osmesa, #endif -#ifdef EMSCRIPTEN +#if (defined(EMSCRIPTEN) && defined(HAVE_EGL)) &gfx_ctx_emscripten, +#endif +#ifdef EMSCRIPTEN + &gfx_ctx_emscripten_webgl, #endif &gfx_ctx_null, NULL @@ -1924,7 +1927,7 @@ void video_driver_unset_stub_frame(void) } /* Get time diff between frames in usec (microseconds) */ -uint32_t video_driver_get_frame_time_delta_usec(void) +retro_time_t video_driver_get_frame_time_delta_usec(void) { static retro_time_t last_time; retro_time_t now_time = cpu_features_get_time_usec(); @@ -2509,11 +2512,15 @@ void video_viewport_get_scaled_integer(struct video_viewport *vp, if (overscale_h_diff <= underscale_h_diff) max_scale_h = overscale_h; + /* Limit width overscale */ + if (max_scale_w * content_width >= width + ((int)content_width / 2)) + max_scale_w = underscale_w; + /* Allow overscale when it is close enough */ if (scale_h_diff > 0 && scale_h_diff < 64) max_scale_h = overscale_h; /* Overscale will be too much even if it is closer */ - else if ((scale_h_diff < -155 && scale_h_diff > (int)-content_height / 2) + else if ((scale_h_diff < -140 && scale_h_diff >= (int)-content_height / 2) || (scale_h_diff < -30 && scale_h_diff > -50) || (scale_h_diff > 20)) max_scale_h = underscale_h; @@ -2614,7 +2621,7 @@ void video_viewport_get_scaled_integer(struct video_viewport *vp, || axis == VIDEO_SCALE_INTEGER_AXIS_XHALF) { if ( max_scale_h == (height / content_height) - && content_height / 300 + && content_height / ((rotation % 2) ? 288 : 300) && content_height * max_scale_h < height * 0.90f ) { @@ -3793,7 +3800,7 @@ void video_driver_frame(const void *data, unsigned width, /* Consider frame dropped when frame time exceeds 1.75x target */ if ( video_st->frame_count > 4 && !menu_is_alive - && frame_time > 1000000.0f / video_info.refresh_rate * 1.75f) + && frame_time > 1000000.0f / video_st->av_info.timing.fps * 1.75f) video_st->frame_drop_count++; if (video_info.fps_show) @@ -4129,17 +4136,17 @@ void video_driver_frame(const void *data, unsigned width, " Viewport: %u x %u\n" " - Scale: %u x %u\n" " - Scale X/Y: %2.2f / %2.2f\n" - " Refresh: %5.2f hz\n" - " Frame Rate: %5.2f fps\n" - " Frame Time: %5.2f ms\n" - " - Deviation: %5.2f %%\n" + " Refresh: %6.2f hz\n" + " Frame Rate:%7.2f fps\n" + " Frame Time: %6.2f ms\n" + " - Deviation:%6.2f %%\n" " Frames: %8" PRIu64"\n" " - Dropped: %5u\n" "AUDIO: %s\n" - " Saturation: %5.2f %%\n" - " Deviation: %5.2f %%\n" - " Underrun: %5.2f %%\n" - " Blocking: %5.2f %%\n" + " Saturation: %6.2f %%\n" + " Deviation: %6.2f %%\n" + " Underrun: %6.2f %%\n" + " Blocking: %6.2f %%\n" " Samples: %8d\n" , video_st->frame_cache_width, @@ -4300,7 +4307,9 @@ void video_driver_frame(const void *data, unsigned width, video_info.monitor_index, dynamic_super_width, video_info.crt_switch_resolution_super, - video_info.crt_switch_hires_menu); + video_info.crt_switch_hires_menu, + config_get_ptr()->uints.video_aspect_ratio_idx + ); } else if (!video_info.crt_switch_resolution) #endif diff --git a/gfx/video_driver.h b/gfx/video_driver.h index 7dfc555d5ed1..a5cb80d98697 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -915,7 +915,7 @@ void video_driver_unset_stub_frame(void); float video_driver_get_core_aspect(void); -uint32_t video_driver_get_frame_time_delta_usec(void); +retro_time_t video_driver_get_frame_time_delta_usec(void); float video_driver_get_original_fps(void); @@ -1384,6 +1384,7 @@ extern const gfx_ctx_driver_t gfx_ctx_cgl; extern const gfx_ctx_driver_t gfx_ctx_cocoagl; extern const gfx_ctx_driver_t gfx_ctx_cocoavk; extern const gfx_ctx_driver_t gfx_ctx_emscripten; +extern const gfx_ctx_driver_t gfx_ctx_emscripten_webgl; extern const gfx_ctx_driver_t gfx_ctx_opendingux_fbdev; extern const gfx_ctx_driver_t gfx_ctx_khr_display; extern const gfx_ctx_driver_t gfx_ctx_gdi; diff --git a/gfx/video_shader_parse.c b/gfx/video_shader_parse.c index a4cbff748468..1309e9d34c18 100644 --- a/gfx/video_shader_parse.c +++ b/gfx/video_shader_parse.c @@ -1890,7 +1890,7 @@ static bool video_shader_write_referenced_preset( **/ static bool video_shader_load_root_config_into_shader( config_file_t *conf, - settings_t *settings, + bool video_shader_watch_files, struct video_shader *shader) { size_t i; @@ -1921,7 +1921,7 @@ static bool video_shader_load_root_config_into_shader( strlcpy(shader->loaded_preset_path, conf->path, sizeof(shader->loaded_preset_path)); - if (settings->bools.video_shader_watch_files) + if (video_shader_watch_files) { union string_list_elem_attr attr; int flags = @@ -2255,7 +2255,8 @@ bool video_shader_load_preset_into_shader(const char *path, if (string_is_equal(root_conf->path, path)) { /* Load the config from the shader chain from the first reference into the shader */ - video_shader_load_root_config_into_shader(root_conf, config_get_ptr(), shader); + video_shader_load_root_config_into_shader(root_conf, + config_get_ptr()->bools.video_shader_watch_files, shader); goto end; } @@ -2308,7 +2309,8 @@ bool video_shader_load_preset_into_shader(const char *path, } /* Load the config from the shader chain from the first reference into the shader */ - video_shader_load_root_config_into_shader(root_conf, config_get_ptr(), shader); + video_shader_load_root_config_into_shader(root_conf, + config_get_ptr()->bools.video_shader_watch_files, shader); /* Set Path for originally loaded preset because it is different than the root preset path */ strlcpy(shader->loaded_preset_path, path, sizeof(shader->loaded_preset_path)); @@ -2531,14 +2533,13 @@ static bool video_shader_dir_init_shader_internal( static void video_shader_dir_init_shader( void *menu_driver_data_, - settings_t *settings, + const char *directory_video_shader, + const char *directory_menu_config, + bool show_hidden_files, + bool shader_remember_last_dir, + bool video_shader_remember_last_dir, struct rarch_dir_shader_list *dir_list) { - bool show_hidden_files = settings->bools.show_hidden_files; - bool shader_remember_last_dir = settings->bools.video_shader_remember_last_dir; - const char *directory_video_shader = settings->paths.directory_video_shader; - const char *directory_menu_config = settings->paths.directory_menu_config; - bool video_shader_remember_last_dir = settings->bools.video_shader_remember_last_dir; const char *last_shader_preset_dir = NULL; const char *last_shader_preset_file_name = NULL; video_driver_state_t *video_st = video_state_get_ptr(); @@ -2643,7 +2644,18 @@ void video_shader_dir_check_shader( && (last_shader_preset_type != RARCH_SHADER_NONE) && !string_is_equal(dir_list->directory, last_shader_preset_dir))) { - video_shader_dir_init_shader(menu_ptr, settings, dir_list); + const char *directory_video_shader = settings->paths.directory_video_shader; + const char *directory_menu_config = settings->paths.directory_menu_config; + bool show_hidden_files = settings->bools.show_hidden_files; + bool shader_remember_last_dir = settings->bools.video_shader_remember_last_dir; + bool video_shader_remember_last_dir = settings->bools.video_shader_remember_last_dir; + video_shader_dir_init_shader(menu_ptr, + directory_video_shader, + directory_menu_config, + show_hidden_files, + shader_remember_last_dir, + video_shader_remember_last_dir, + dir_list); dir_list_initialised = true; } @@ -2827,12 +2839,13 @@ static bool video_shader_load_shader_preset_internal( * * Returns: false if there was an error or no action was performed. */ -static bool video_shader_load_auto_shader_preset(settings_t *settings, const char *core_name, +static bool video_shader_load_auto_shader_preset( + const char *video_shader_directory, + const char *menu_config_directory, + const char *core_name, char *s, size_t len) { size_t i; - const char *video_shader_directory = settings->paths.directory_video_shader; - const char *menu_config_directory = settings->paths.directory_menu_config; const char *rarch_path_basename = path_get(RARCH_PATH_BASENAME); bool has_content = !string_is_empty(rarch_path_basename); @@ -2917,7 +2930,6 @@ static bool video_shader_load_auto_shader_preset(settings_t *settings, const cha } bool video_shader_combine_preset_and_apply( - settings_t *settings, enum rarch_shader_type type, struct video_shader *menu_shader, const char *preset_path, @@ -3111,7 +3123,8 @@ const char *video_shader_get_current_shader_preset(void) if (auto_shaders_enable) /* sets runtime_shader_preset_path */ { if (video_shader_load_auto_shader_preset( - settings, + settings->paths.directory_video_shader, + settings->paths.directory_menu_config, runloop_st->system.info.library_name, runloop_st->runtime_shader_preset_path, sizeof(runloop_st->runtime_shader_preset_path))) diff --git a/gfx/video_shader_parse.h b/gfx/video_shader_parse.h index 002734c62e0e..3a35463647e4 100644 --- a/gfx/video_shader_parse.h +++ b/gfx/video_shader_parse.h @@ -275,7 +275,6 @@ void video_shader_dir_check_shader( bool pressed_prev); bool video_shader_combine_preset_and_apply( - settings_t *settings, enum rarch_shader_type type, struct video_shader *menu_shader, const char *preset_path, diff --git a/griffin/griffin.c b/griffin/griffin.c index 22fbd7dca3bf..71adf7d03f61 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -961,6 +961,10 @@ MIDI #include "../midi/drivers/winmm_midi.c" #endif +#ifdef HAVE_COREMIDI +#include "../midi/drivers/coremidi.c" +#endif + /*============================================================ DRIVERS ============================================================ */ @@ -1691,4 +1695,4 @@ GAME AI ============================================================ */ #if defined(HAVE_GAME_AI) #include "../ai/game_ai.c" -#endif \ No newline at end of file +#endif diff --git a/griffin/griffin_objc.m b/griffin/griffin_objc.m index 68c6ac6e477f..c6ce46992091 100644 --- a/griffin/griffin_objc.m +++ b/griffin/griffin_objc.m @@ -61,6 +61,10 @@ #include "../audio/drivers/coreaudio3.m" #endif +#ifdef HAVE_CORELOCATION +#include "../location/drivers/corelocation.m" +#endif + #if defined(HAVE_DISCORD) #include "../deps/discord-rpc/src/discord_register_osx.m" #endif diff --git a/input/drivers/cocoa_input.m b/input/drivers/cocoa_input.m index 1470fe549f33..b9fe7333676d 100644 --- a/input/drivers/cocoa_input.m +++ b/input/drivers/cocoa_input.m @@ -401,6 +401,12 @@ static void cocoa_input_poll(void *data) if (!apple) return; + apple->mouse_rel_x = apple->window_pos_x - apple->mouse_x_last; + apple->mouse_x_last = apple->window_pos_x; + + apple->mouse_rel_y = apple->window_pos_y - apple->mouse_y_last; + apple->mouse_y_last = apple->window_pos_y; + for (i = 0; i < apple->touch_count || i == 0; i++) { struct video_viewport vp; @@ -573,75 +579,40 @@ static int16_t cocoa_input_state( return (id && id < RETROK_LAST) && apple_key_state[rarch_keysym_lut[(enum retro_key)id]]; case RETRO_DEVICE_MOUSE: case RARCH_DEVICE_MOUSE_SCREEN: + switch (id) { - int16_t val = 0; - switch (id) + case RETRO_DEVICE_ID_MOUSE_X: + if (device == RARCH_DEVICE_MOUSE_SCREEN) { - case RETRO_DEVICE_ID_MOUSE_X: - if (device == RARCH_DEVICE_MOUSE_SCREEN) - { -#ifdef IOS - return apple->window_pos_x; -#else - return apple->window_pos_x * cocoa_screen_get_backing_scale_factor(); -#endif - } #ifdef IOS -#ifdef HAVE_IOS_TOUCHMOUSE - if (apple->window_pos_x > 0 || apple->mouse_grabbed) - { - val = apple->window_pos_x - apple->mouse_x_last; - apple->mouse_x_last = apple->window_pos_x; - } - else - val = apple->mouse_rel_x; -#else - val = apple->mouse_rel_x; -#endif + return apple->window_pos_x; #else - val = apple->window_pos_x - apple->mouse_x_last; - apple->mouse_x_last = apple->window_pos_x; + return apple->window_pos_x * cocoa_screen_get_backing_scale_factor(); #endif - return val; - case RETRO_DEVICE_ID_MOUSE_Y: - if (device == RARCH_DEVICE_MOUSE_SCREEN) - { -#ifdef IOS - return apple->window_pos_y; -#else - return apple->window_pos_y * cocoa_screen_get_backing_scale_factor(); -#endif - } + } + return apple->mouse_rel_x; + case RETRO_DEVICE_ID_MOUSE_Y: + if (device == RARCH_DEVICE_MOUSE_SCREEN) + { #ifdef IOS -#ifdef HAVE_IOS_TOUCHMOUSE - if (apple->window_pos_y > 0 || apple->mouse_grabbed) - { - val = apple->window_pos_y - apple->mouse_y_last; - apple->mouse_y_last = apple->window_pos_y; - } - else - val = apple->mouse_rel_y; -#else - val = apple->mouse_rel_y; -#endif + return apple->window_pos_y; #else - val = apple->window_pos_y - apple->mouse_y_last; - apple->mouse_y_last = apple->window_pos_y; + return apple->window_pos_y * cocoa_screen_get_backing_scale_factor(); #endif - return val; - case RETRO_DEVICE_ID_MOUSE_LEFT: - return apple->mouse_buttons & 1; - case RETRO_DEVICE_ID_MOUSE_RIGHT: - return apple->mouse_buttons & 2; - case RETRO_DEVICE_ID_MOUSE_WHEELUP: - return apple->mouse_wu; - case RETRO_DEVICE_ID_MOUSE_WHEELDOWN: - return apple->mouse_wd; - case RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP: - return apple->mouse_wl; - case RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELDOWN: - return apple->mouse_wr; } + return apple->mouse_rel_y; + case RETRO_DEVICE_ID_MOUSE_LEFT: + return apple->mouse_buttons & 1; + case RETRO_DEVICE_ID_MOUSE_RIGHT: + return apple->mouse_buttons & 2; + case RETRO_DEVICE_ID_MOUSE_WHEELUP: + return apple->mouse_wu; + case RETRO_DEVICE_ID_MOUSE_WHEELDOWN: + return apple->mouse_wd; + case RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP: + return apple->mouse_wl; + case RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELDOWN: + return apple->mouse_wr; } break; case RETRO_DEVICE_POINTER: @@ -700,13 +671,13 @@ static int16_t cocoa_input_state( case RETRO_DEVICE_ID_LIGHTGUN_PAUSE: { unsigned new_id = input_driver_lightgun_id_convert(id); - const uint64_t bind_joykey = input_config_binds[port][new_id].joykey; - const uint64_t bind_joyaxis = input_config_binds[port][new_id].joyaxis; - const uint64_t autobind_joykey = input_autoconf_binds[port][new_id].joykey; - const uint64_t autobind_joyaxis= input_autoconf_binds[port][new_id].joyaxis; + const uint32_t bind_joykey = input_config_binds[port][new_id].joykey; + const uint32_t bind_joyaxis = input_config_binds[port][new_id].joyaxis; + const uint32_t autobind_joykey = input_autoconf_binds[port][new_id].joykey; + const uint32_t autobind_joyaxis= input_autoconf_binds[port][new_id].joyaxis; uint16_t joyport = joypad_info->joy_idx; float axis_threshold = joypad_info->axis_threshold; - const uint64_t joykey = (bind_joykey != NO_BTN) ? bind_joykey : autobind_joykey; + const uint32_t joykey = (bind_joykey != NO_BTN) ? bind_joykey : autobind_joykey; const uint32_t joyaxis = (bind_joyaxis != AXIS_NONE) ? bind_joyaxis : autobind_joyaxis; if (binds[port][new_id].valid) diff --git a/input/drivers/dinput.c b/input/drivers/dinput.c index 10c8dc6f1ef6..13a5f14a9fcd 100644 --- a/input/drivers/dinput.c +++ b/input/drivers/dinput.c @@ -172,10 +172,10 @@ static void *dinput_init(const char *joypad_driver) if (di->keyboard) { - settings_t *settings = config_get_ptr(); - DWORD flags = DISCL_NONEXCLUSIVE | DISCL_FOREGROUND; - if (settings->bools.input_nowinkey_enable) - flags |= DISCL_NOWINKEY; + bool input_nowinkey_enable = config_get_ptr()->bools.input_nowinkey_enable; + DWORD flags = DISCL_NONEXCLUSIVE | DISCL_FOREGROUND; + if (input_nowinkey_enable) + flags |= DISCL_NOWINKEY; IDirectInputDevice8_SetDataFormat(di->keyboard, &c_dfDIKeyboard); IDirectInputDevice8_SetCooperativeLevel(di->keyboard, diff --git a/input/drivers/rwebinput_input.c b/input/drivers/rwebinput_input.c index 67823f16e227..914aa039d9b8 100644 --- a/input/drivers/rwebinput_input.c +++ b/input/drivers/rwebinput_input.c @@ -417,7 +417,7 @@ static void *rwebinput_input_init(const char *joypad_driver) rwebinput_generate_lut(); r = emscripten_set_keydown_callback( - "!canvas", rwebinput, false, + "#canvas", rwebinput, false, rwebinput_keyboard_cb); if (r != EMSCRIPTEN_RESULT_SUCCESS) { @@ -426,7 +426,7 @@ static void *rwebinput_input_init(const char *joypad_driver) } r = emscripten_set_keyup_callback( - "!canvas", rwebinput, false, + "#canvas", rwebinput, false, rwebinput_keyboard_cb); if (r != EMSCRIPTEN_RESULT_SUCCESS) { @@ -435,7 +435,7 @@ static void *rwebinput_input_init(const char *joypad_driver) } r = emscripten_set_keypress_callback( - "!canvas", rwebinput, false, + "#canvas", rwebinput, false, rwebinput_keyboard_cb); if (r != EMSCRIPTEN_RESULT_SUCCESS) { @@ -443,7 +443,7 @@ static void *rwebinput_input_init(const char *joypad_driver) "[EMSCRIPTEN/INPUT] failed to create keypress callback: %d\n", r); } - r = emscripten_set_mousedown_callback("!canvas", rwebinput, false, + r = emscripten_set_mousedown_callback("#canvas", rwebinput, false, rwebinput_mouse_cb); if (r != EMSCRIPTEN_RESULT_SUCCESS) { @@ -451,7 +451,7 @@ static void *rwebinput_input_init(const char *joypad_driver) "[EMSCRIPTEN/INPUT] failed to create mousedown callback: %d\n", r); } - r = emscripten_set_mouseup_callback("!canvas", rwebinput, false, + r = emscripten_set_mouseup_callback("#canvas", rwebinput, false, rwebinput_mouse_cb); if (r != EMSCRIPTEN_RESULT_SUCCESS) { @@ -459,7 +459,7 @@ static void *rwebinput_input_init(const char *joypad_driver) "[EMSCRIPTEN/INPUT] failed to create mouseup callback: %d\n", r); } - r = emscripten_set_mousemove_callback("!canvas", rwebinput, false, + r = emscripten_set_mousemove_callback("#canvas", rwebinput, false, rwebinput_mouse_cb); if (r != EMSCRIPTEN_RESULT_SUCCESS) { @@ -468,7 +468,7 @@ static void *rwebinput_input_init(const char *joypad_driver) } r = emscripten_set_wheel_callback( - "!canvas", rwebinput, false, + "#canvas", rwebinput, false, rwebinput_wheel_cb); if (r != EMSCRIPTEN_RESULT_SUCCESS) { @@ -476,7 +476,7 @@ static void *rwebinput_input_init(const char *joypad_driver) "[EMSCRIPTEN/INPUT] failed to create wheel callback: %d\n", r); } - r = emscripten_set_touchstart_callback("!canvas", rwebinput, false, + r = emscripten_set_touchstart_callback("#canvas", rwebinput, false, rwebinput_touch_cb); if (r != EMSCRIPTEN_RESULT_SUCCESS) { @@ -484,7 +484,7 @@ static void *rwebinput_input_init(const char *joypad_driver) "[EMSCRIPTEN/INPUT] failed to create touchstart callback: %d\n", r); } - r = emscripten_set_touchend_callback("!canvas", rwebinput, false, + r = emscripten_set_touchend_callback("#canvas", rwebinput, false, rwebinput_touch_cb); if (r != EMSCRIPTEN_RESULT_SUCCESS) { @@ -492,7 +492,7 @@ static void *rwebinput_input_init(const char *joypad_driver) "[EMSCRIPTEN/INPUT] failed to create touchend callback: %d\n", r); } - r = emscripten_set_touchmove_callback("!canvas", rwebinput, false, + r = emscripten_set_touchmove_callback("#canvas", rwebinput, false, rwebinput_touch_cb); if (r != EMSCRIPTEN_RESULT_SUCCESS) { @@ -500,7 +500,7 @@ static void *rwebinput_input_init(const char *joypad_driver) "[EMSCRIPTEN/INPUT] failed to create touchmove callback: %d\n", r); } - r = emscripten_set_touchcancel_callback("!canvas", rwebinput, false, + r = emscripten_set_touchcancel_callback("#canvas", rwebinput, false, rwebinput_touch_cb); if (r != EMSCRIPTEN_RESULT_SUCCESS) { @@ -819,7 +819,7 @@ static void rwebinput_input_poll(void *data) static void rwebinput_grab_mouse(void *data, bool state) { if (state) - emscripten_request_pointerlock("!canvas", EM_TRUE); + emscripten_request_pointerlock("#canvas", EM_TRUE); else emscripten_exit_pointerlock(); } diff --git a/input/drivers/test_input.c b/input/drivers/test_input.c index c20a20291906..bc66f861556b 100644 --- a/input/drivers/test_input.c +++ b/input/drivers/test_input.c @@ -412,9 +412,9 @@ static void test_input_poll(void *data) { if (!input_test_steps[i].handled && curr_frame > input_test_steps[i].frame) { - if( input_test_steps[i].action == INPUT_TEST_COMMAND_PRESS_KEY) + if (input_test_steps[i].action == INPUT_TEST_COMMAND_PRESS_KEY) { - if(input_test_steps[i].param_num < RETROK_LAST) + if (input_test_steps[i].param_num < RETROK_LAST) { test_key_state[DEFAULT_MAX_PADS][input_test_steps[i].param_num] = 1; input_keyboard_event(true, input_test_steps[i].param_num, 0, 0, RETRO_DEVICE_KEYBOARD); @@ -424,9 +424,9 @@ static void test_input_poll(void *data) "[Test input driver]: Pressing keyboard button %d at frame %d\n", input_test_steps[i].param_num, curr_frame); } - else if( input_test_steps[i].action == INPUT_TEST_COMMAND_RELEASE_KEY) + else if (input_test_steps[i].action == INPUT_TEST_COMMAND_RELEASE_KEY) { - if(input_test_steps[i].param_num < RETROK_LAST) + if (input_test_steps[i].param_num < RETROK_LAST) { test_key_state[DEFAULT_MAX_PADS][input_test_steps[i].param_num] = 0; input_keyboard_event(false, input_test_steps[i].param_num, 0, 0, RETRO_DEVICE_KEYBOARD); @@ -436,9 +436,9 @@ static void test_input_poll(void *data) "[Test input driver]: Releasing keyboard button %d at frame %d\n", input_test_steps[i].param_num, curr_frame); } - else if(input_test_steps[i].action == INPUT_TEST_COMMAND_SET_SENSOR_ACC_X || - input_test_steps[i].action == INPUT_TEST_COMMAND_SET_SENSOR_ACC_Y || - input_test_steps[i].action == INPUT_TEST_COMMAND_SET_SENSOR_ACC_Z) + else if ( input_test_steps[i].action == INPUT_TEST_COMMAND_SET_SENSOR_ACC_X + || input_test_steps[i].action == INPUT_TEST_COMMAND_SET_SENSOR_ACC_Y + || input_test_steps[i].action == INPUT_TEST_COMMAND_SET_SENSOR_ACC_Z) { float setval = test_input_unsigned_to_float_acc(input_test_steps[i].param_num); switch (input_test_steps[i].action) @@ -458,9 +458,9 @@ static void test_input_poll(void *data) "[Test input driver]: Setting accelerometer axis %d to %f at frame %d\n", input_test_steps[i].action - INPUT_TEST_COMMAND_SET_SENSOR_ACC_X, setval, curr_frame); } - else if(input_test_steps[i].action == INPUT_TEST_COMMAND_SET_SENSOR_GYR_X || - input_test_steps[i].action == INPUT_TEST_COMMAND_SET_SENSOR_GYR_Y || - input_test_steps[i].action == INPUT_TEST_COMMAND_SET_SENSOR_GYR_Z) + else if ( input_test_steps[i].action == INPUT_TEST_COMMAND_SET_SENSOR_GYR_X + || input_test_steps[i].action == INPUT_TEST_COMMAND_SET_SENSOR_GYR_Y + || input_test_steps[i].action == INPUT_TEST_COMMAND_SET_SENSOR_GYR_Z) { float setval = test_input_unsigned_to_float_gyro(input_test_steps[i].param_num); switch (input_test_steps[i].action) @@ -480,7 +480,7 @@ static void test_input_poll(void *data) "[Test input driver]: Setting gyroscope axis %d to %f at frame %d\n", input_test_steps[i].action - INPUT_TEST_COMMAND_SET_SENSOR_GYR_X, setval, curr_frame); } - else if(input_test_steps[i].action == INPUT_TEST_COMMAND_SET_SENSOR_LUX) + else if (input_test_steps[i].action == INPUT_TEST_COMMAND_SET_SENSOR_LUX) { float setval = test_input_unsigned_to_float_lux(input_test_steps[i].param_num); test_input_values.lux_sensor_state = setval; @@ -510,23 +510,23 @@ static bool test_input_set_sensor_state(void *data, unsigned port, static float test_input_get_sensor_input(void *data, unsigned port, unsigned id) { - switch (id) - { - case RETRO_SENSOR_ACCELEROMETER_X: - return test_input_values.accelerometer_state.x; - case RETRO_SENSOR_ACCELEROMETER_Y: - return test_input_values.accelerometer_state.y; - case RETRO_SENSOR_ACCELEROMETER_Z: - return test_input_values.accelerometer_state.z; - case RETRO_SENSOR_GYROSCOPE_X: - return test_input_values.gyroscope_state.x; - case RETRO_SENSOR_GYROSCOPE_Y: - return test_input_values.gyroscope_state.y; - case RETRO_SENSOR_GYROSCOPE_Z: - return test_input_values.gyroscope_state.z; - case RETRO_SENSOR_ILLUMINANCE: - return test_input_values.lux_sensor_state; - } + switch (id) + { + case RETRO_SENSOR_ACCELEROMETER_X: + return test_input_values.accelerometer_state.x; + case RETRO_SENSOR_ACCELEROMETER_Y: + return test_input_values.accelerometer_state.y; + case RETRO_SENSOR_ACCELEROMETER_Z: + return test_input_values.accelerometer_state.z; + case RETRO_SENSOR_GYROSCOPE_X: + return test_input_values.gyroscope_state.x; + case RETRO_SENSOR_GYROSCOPE_Y: + return test_input_values.gyroscope_state.y; + case RETRO_SENSOR_GYROSCOPE_Z: + return test_input_values.gyroscope_state.z; + case RETRO_SENSOR_ILLUMINANCE: + return test_input_values.lux_sensor_state; + } return 0.0f; } diff --git a/input/drivers/winraw_input.c b/input/drivers/winraw_input.c index 42e0fefa8aee..2054907403fe 100644 --- a/input/drivers/winraw_input.c +++ b/input/drivers/winraw_input.c @@ -558,7 +558,7 @@ static LRESULT CALLBACK winraw_callback( static void *winraw_init(const char *joypad_driver) { RAWINPUTDEVICE rid; - settings_t *settings = config_get_ptr(); + bool input_nowinkey_enable = config_get_ptr()->bools.input_nowinkey_enable; winraw_input_t *wr = (winraw_input_t *) calloc(1, sizeof(winraw_input_t)); @@ -585,7 +585,7 @@ static void *winraw_init(const char *joypad_driver) rid.hwndTarget = wr->window; rid.usUsagePage = 0x01; /* Generic desktop */ rid.usUsage = 0x06; /* Keyboard */ - if (settings->bools.input_nowinkey_enable) + if (input_nowinkey_enable) rid.dwFlags |= RIDEV_NOHOTKEYS; /* Disable win keys while focused */ if (!RegisterRawInputDevices(&rid, 1, sizeof(RAWINPUTDEVICE))) @@ -617,7 +617,7 @@ static void *winraw_init(const char *joypad_driver) rid.hwndTarget = NULL; rid.usUsagePage = 0x01; /* Generic desktop */ rid.usUsage = 0x06; /* Keyboard */ - if (settings->bools.input_nowinkey_enable) + if (input_nowinkey_enable) rid.dwFlags |= RIDEV_NOHOTKEYS; /* Disable win keys while focused */ RegisterRawInputDevices(&rid, 1, sizeof(RAWINPUTDEVICE)); @@ -992,8 +992,8 @@ bool winraw_handle_message(UINT msg, static void winraw_free(void *data) { RAWINPUTDEVICE rid; - settings_t *settings = config_get_ptr(); - winraw_input_t *wr = (winraw_input_t*)data; + winraw_input_t *wr = (winraw_input_t*)data; + bool input_nowinkey_enable = config_get_ptr()->bools.input_nowinkey_enable; rid.dwFlags = RIDEV_REMOVE; rid.hwndTarget = NULL; @@ -1006,7 +1006,7 @@ static void winraw_free(void *data) rid.hwndTarget = NULL; rid.usUsagePage = 0x01; /* Generic desktop */ rid.usUsage = 0x06; /* Keyboard */ - if (settings->bools.input_nowinkey_enable) + if (input_nowinkey_enable) rid.dwFlags |= RIDEV_NOHOTKEYS; /* Disable win keys while focused */ RegisterRawInputDevices(&rid, 1, sizeof(RAWINPUTDEVICE)); diff --git a/input/drivers_hid/btstack_hid.c b/input/drivers_hid/btstack_hid.c index e9bcbd0c83fc..865de315f9e8 100644 --- a/input/drivers_hid/btstack_hid.c +++ b/input/drivers_hid/btstack_hid.c @@ -766,12 +766,11 @@ static void btpad_increment_position(uint32_t *ptr) } static void btpad_connection_send_control(void *data, - uint8_t* data_buf, size_t len) + uint8_t *s, size_t len) { struct btstack_hid_adapter *connection = (struct btstack_hid_adapter*)data; - if (connection) - bt_send_l2cap_ptr(connection->channels[0], data_buf, len); + bt_send_l2cap_ptr(connection->channels[0], s, len); } static void btpad_queue_process_cmd(struct btpad_queue_command *cmd) diff --git a/input/drivers_hid/iohidmanager_hid.c b/input/drivers_hid/iohidmanager_hid.c index 0d347d09d390..58fb87617751 100644 --- a/input/drivers_hid/iohidmanager_hid.c +++ b/input/drivers_hid/iohidmanager_hid.c @@ -585,13 +585,12 @@ static uint32_t iohidmanager_hid_device_get_location_id(IOHIDDeviceRef device) } static void iohidmanager_hid_device_get_product_string( - IOHIDDeviceRef device, char *buf, size_t len) + IOHIDDeviceRef device, char *s, size_t len) { CFStringRef ref = (CFStringRef) IOHIDDeviceGetProperty(device, CFSTR(kIOHIDProductKey)); - if (ref) - CFStringGetCString(ref, buf, len, kCFStringEncodingUTF8); + CFStringGetCString(ref, s, len, kCFStringEncodingUTF8); } static void iohidmanager_hid_device_add_autodetect(unsigned idx, diff --git a/input/drivers_hid/wiiu_hid.c b/input/drivers_hid/wiiu_hid.c index 821863244170..0acf8fa0ab2b 100644 --- a/input/drivers_hid/wiiu_hid.c +++ b/input/drivers_hid/wiiu_hid.c @@ -147,8 +147,7 @@ static int16_t wiiu_hid_joypad_axis(void *data, unsigned slot, uint32_t joyaxis) return 0; } -static int16_t wiiu_hid_joypad_state( - void *data, +static int16_t wiiu_hid_joypad_state(void *data, rarch_joypad_info_t *joypad_info, const void *binds_data, unsigned port) @@ -748,7 +747,7 @@ static void wiiu_hid_poll(void *data) synchronized_process_adapters(hid); } -static void wiiu_hid_send_control(void *data, uint8_t *buf, size_t len) +static void wiiu_hid_send_control(void *data, uint8_t *s, size_t len) { wiiu_adapter_t *adapter = (wiiu_adapter_t *)data; int32_t result; @@ -760,7 +759,7 @@ static void wiiu_hid_send_control(void *data, uint8_t *buf, size_t len) } memset(adapter->tx_buffer, 0, adapter->tx_size); - memcpy(adapter->tx_buffer, buf, len); + memcpy(adapter->tx_buffer, s, len); /* From testing, HIDWrite returns an error that looks like it's two * int16_t's bitmasked together. For example, one error I saw when trying @@ -775,12 +774,12 @@ static void wiiu_hid_send_control(void *data, uint8_t *buf, size_t len) } } -static void _fixup_report_buffer(uint8_t **buffer, uint8_t report_id, size_t *length) +static void _fixup_report_buffer(uint8_t **s, uint8_t report_id, size_t *len) { - if ((*buffer)[0] == report_id) + if ((*s)[0] == report_id) { - *buffer = (*buffer)+ 1; - *length = *length - 1; + *s = (*s)+ 1; + *len = *len - 1; } } @@ -804,7 +803,8 @@ static int32_t wiiu_hid_set_report(void *data, uint8_t report_type, NULL, NULL); } -static int32_t wiiu_hid_get_report(void *handle, uint8_t report_type, uint8_t report_id, uint8_t *report_data, size_t report_length) +static int32_t wiiu_hid_get_report(void *handle, uint8_t report_type, uint8_t report_id, + uint8_t *report_data, size_t report_length) { wiiu_adapter_t *adapter = (wiiu_adapter_t *)handle; if (!adapter || report_length > adapter->tx_size) @@ -860,7 +860,8 @@ static int32_t wiiu_hid_read(void *data, void *buffer, size_t len) return result; } -static void wiiu_hid_init_cachealigned_buffer(int32_t min_size, uint8_t **out_buf_ptr, int32_t *actual_size) +static void wiiu_hid_init_cachealigned_buffer(int32_t min_size, + uint8_t **out_buf_ptr, int32_t *actual_size) { *actual_size = (min_size + 0x3f) & ~0x3f; *out_buf_ptr = wiiu_hid_alloc_zeroed(64, *actual_size); diff --git a/input/drivers_joypad/dinput_joypad_inl.h b/input/drivers_joypad/dinput_joypad_inl.h index a4b3b9b1dae1..53163ae997ee 100644 --- a/input/drivers_joypad/dinput_joypad_inl.h +++ b/input/drivers_joypad/dinput_joypad_inl.h @@ -124,9 +124,9 @@ static int32_t dinput_joypad_button_state( static const unsigned check1 = (JOY_POVRIGHT/2); static const unsigned check2 = (JOY_POVLEFT+JOY_POVRIGHT/2); return ( - (pov == JOY_POVFORWARD) || - (pov == check1) || - (pov == check2) + (pov == JOY_POVFORWARD) + || (pov == check1) + || (pov == check2) ); } case HAT_RIGHT_MASK: @@ -134,20 +134,20 @@ static int32_t dinput_joypad_button_state( static const unsigned check1 = (JOY_POVRIGHT/2); static const unsigned check2 = (JOY_POVRIGHT+JOY_POVRIGHT/2); return ( - (pov == JOY_POVRIGHT) || - (pov == check1) || - (pov == check2) + (pov == JOY_POVRIGHT) + || (pov == check1) + || (pov == check2) ); } case HAT_DOWN_MASK: { static const unsigned check1 = (JOY_POVRIGHT+JOY_POVRIGHT/2); static const unsigned check2 = (JOY_POVBACKWARD+JOY_POVRIGHT/2); - return + return ( - (pov == JOY_POVBACKWARD) || - (pov == check1) || - (pov == check2) + (pov == JOY_POVBACKWARD) + || (pov == check1) + || (pov == check2) ); } case HAT_LEFT_MASK: @@ -157,9 +157,9 @@ static int32_t dinput_joypad_button_state( return ( - (pov == JOY_POVLEFT) || - (pov == check1) || - (pov == check2) + (pov == JOY_POVLEFT) + || (pov == check1) + || (pov == check2) ); } default: @@ -284,12 +284,12 @@ static int16_t dinput_joypad_state( const uint32_t joyaxis = (binds[i].joyaxis != AXIS_NONE) ? binds[i].joyaxis : joypad_info->auto_binds[i].joyaxis; if ( - (uint16_t)joykey != NO_BTN + (uint16_t)joykey != NO_BTN && dinput_joypad_button_state( pad, (uint16_t)joykey)) ret |= ( 1 << i); else if (joyaxis != AXIS_NONE && - ((float)abs(dinput_joypad_axis_state(pad, joyaxis)) + ((float)abs(dinput_joypad_axis_state(pad, joyaxis)) / 0x8000) > joypad_info->axis_threshold) ret |= (1 << i); } diff --git a/input/drivers_joypad/rwebpad_joypad.c b/input/drivers_joypad/rwebpad_joypad.c index 1c63cf690fe2..72777334fdd6 100644 --- a/input/drivers_joypad/rwebpad_joypad.c +++ b/input/drivers_joypad/rwebpad_joypad.c @@ -26,6 +26,12 @@ #include "../../verbosity.h" #define CLAMPDOUBLE(x) MIN(1.0, MAX(-1.0, (x))) +#define NUM_BUTTONS 64 +#define NUM_AXES 64 + +/* TODO/FIXME - static globals */ +static struct EmscriptenGamepadEvent _pads[DEFAULT_MAX_PADS]; +static bool _live_pads[DEFAULT_MAX_PADS] = {0}; static EM_BOOL rwebpad_gamepad_cb(int event_type, const EmscriptenGamepadEvent *gamepad_event, void *user_data) @@ -36,6 +42,8 @@ static EM_BOOL rwebpad_gamepad_cb(int event_type, switch (event_type) { case EMSCRIPTEN_EVENT_GAMEPADCONNECTED: + _pads[gamepad_event->index] = *gamepad_event; + _live_pads[gamepad_event->index] = true; input_autoconfigure_connect( gamepad_event->id, /* name */ NULL, /* display name */ @@ -45,6 +53,7 @@ static EM_BOOL rwebpad_gamepad_cb(int event_type, pid); /* pid */ break; case EMSCRIPTEN_EVENT_GAMEPADDISCONNECTED: + _live_pads[gamepad_event->index] = false; input_autoconfigure_disconnect(gamepad_event->index, rwebpad_joypad.ident); break; @@ -68,28 +77,23 @@ static void *rwebpad_joypad_init(void *data) r = emscripten_set_gamepaddisconnected_callback(NULL, false, rwebpad_gamepad_cb); - return (void*)-1; + return (void*)(-1); } static const char *rwebpad_joypad_name(unsigned pad) { - static EmscriptenGamepadEvent gamepad_state; - EMSCRIPTEN_RESULT r = emscripten_get_gamepad_status(pad, &gamepad_state); - if (r == EMSCRIPTEN_RESULT_SUCCESS) - return gamepad_state.id; - return ""; + if (pad >= DEFAULT_MAX_PADS || !_live_pads[pad]) { + return ""; + } + return _pads[pad].id; } static int32_t rwebpad_joypad_button(unsigned port, uint16_t joykey) { EmscriptenGamepadEvent gamepad_state; - EMSCRIPTEN_RESULT r = emscripten_get_gamepad_status( - port, &gamepad_state); - - if (port >= DEFAULT_MAX_PADS) - return 0; - if (r != EMSCRIPTEN_RESULT_SUCCESS) + if (port >= DEFAULT_MAX_PADS || !_live_pads[port]) return 0; + gamepad_state = _pads[port]; if (joykey < gamepad_state.numButtons) return gamepad_state.digitalButton[joykey]; return 0; @@ -98,21 +102,17 @@ static int32_t rwebpad_joypad_button(unsigned port, uint16_t joykey) static void rwebpad_joypad_get_buttons(unsigned port_num, input_bits_t *state) { EmscriptenGamepadEvent gamepad_state; - EMSCRIPTEN_RESULT r = emscripten_get_gamepad_status( - port_num, &gamepad_state); - - if (r == EMSCRIPTEN_RESULT_SUCCESS) + unsigned i; + if (port_num >= DEFAULT_MAX_PADS || !_live_pads[port_num]) { + BIT256_CLEAR_ALL_PTR(state); + return; + } + gamepad_state = _pads[port_num]; + for (i = 0; i < gamepad_state.numButtons; i++) { - unsigned i; - - for (i = 0; i < gamepad_state.numButtons; i++) - { - if (gamepad_state.digitalButton[i]) - BIT256_SET_PTR(state, i); - } + if (gamepad_state.digitalButton[i]) + BIT256_SET_PTR(state, i); } - else - BIT256_CLEAR_ALL_PTR(state); } static int16_t rwebpad_joypad_axis_state( @@ -138,11 +138,10 @@ static int16_t rwebpad_joypad_axis_state( static int16_t rwebpad_joypad_axis(unsigned port, uint32_t joyaxis) { - EmscriptenGamepadEvent gamepad_state; - EMSCRIPTEN_RESULT r = emscripten_get_gamepad_status(port, &gamepad_state); - if (r != EMSCRIPTEN_RESULT_SUCCESS) + if (port >= DEFAULT_MAX_PADS || !_live_pads[port]) { return 0; - return rwebpad_joypad_axis_state(&gamepad_state, port, joyaxis); + } + return rwebpad_joypad_axis_state(&_pads[port], port, joyaxis); } static int16_t rwebpad_joypad_state( @@ -154,13 +153,9 @@ static int16_t rwebpad_joypad_state( EmscriptenGamepadEvent gamepad_state; int16_t ret = 0; uint16_t port_idx = joypad_info->joy_idx; - EMSCRIPTEN_RESULT r = emscripten_get_gamepad_status( - port_idx, &gamepad_state); - if (r != EMSCRIPTEN_RESULT_SUCCESS) + if (port_idx >= DEFAULT_MAX_PADS || !_live_pads[port]) return 0; - if (port_idx >= DEFAULT_MAX_PADS) - return 0; - + gamepad_state = _pads[port]; for (i = 0; i < RARCH_FIRST_CUSTOM_BIND; i++) { /* Auto-binds are per joypad, not per user. */ @@ -187,16 +182,16 @@ static int16_t rwebpad_joypad_state( static void rwebpad_joypad_poll(void) { emscripten_sample_gamepad_data(); + for (int i = 0; i < DEFAULT_MAX_PADS; i++) { + if (_live_pads[i]) { + emscripten_get_gamepad_status(i, &_pads[i]); + } + } } static bool rwebpad_joypad_query_pad(unsigned pad) { - EmscriptenGamepadEvent gamepad_state; - EMSCRIPTEN_RESULT r = emscripten_get_gamepad_status(pad, &gamepad_state); - - if (r == EMSCRIPTEN_RESULT_SUCCESS) - return gamepad_state.connected == EM_TRUE; - return false; + return _live_pads[pad]; } static void rwebpad_joypad_destroy(void) { } diff --git a/input/drivers_joypad/sdl_dingux_joypad.c b/input/drivers_joypad/sdl_dingux_joypad.c index b110b9d121cb..b8a80ec41f36 100644 --- a/input/drivers_joypad/sdl_dingux_joypad.c +++ b/input/drivers_joypad/sdl_dingux_joypad.c @@ -194,8 +194,8 @@ static bool sdl_dingux_rumble_init(dingux_joypad_rumble_t *rumble) /* Check whether shake device has the required * feature set */ - if (!Shake_QueryEffectSupport(rumble->device, SHAKE_EFFECT_PERIODIC) || - !Shake_QueryWaveformSupport(rumble->device, SHAKE_PERIODIC_SINE)) + if ( !Shake_QueryEffectSupport(rumble->device, SHAKE_EFFECT_PERIODIC) + || !Shake_QueryWaveformSupport(rumble->device, SHAKE_PERIODIC_SINE)) goto error; /* In most cases it is recommended to use SHAKE_EFFECT_PERIODIC @@ -311,8 +311,7 @@ static bool sdl_dingux_joypad_set_rumble(unsigned pad, { dingux_joypad_t *joypad = (dingux_joypad_t*)&dingux_joypad; - if ((pad != 0) || - !joypad->rumble.device) + if ((pad != 0) || !joypad->rumble.device) return false; switch (effect) @@ -336,8 +335,7 @@ static bool sdl_dingux_joypad_set_rumble_gain(unsigned pad, unsigned gain) { dingux_joypad_t *joypad = (dingux_joypad_t*)&dingux_joypad; - if ((pad != 0) || - !joypad->rumble.device) + if ((pad != 0) || !joypad->rumble.device) return false; /* Gain is automatically capped by Shake_SetGain(), diff --git a/input/drivers_joypad/test_joypad.c b/input/drivers_joypad/test_joypad.c index d5a72b8822ca..c4c93c2b07d6 100644 --- a/input/drivers_joypad/test_joypad.c +++ b/input/drivers_joypad/test_joypad.c @@ -394,9 +394,7 @@ static int16_t test_joypad_state( ? binds[i].joykey : joypad_info->auto_binds[i].joykey; /* Test input driver uses same button layout internally as RA, so no conversion is needed */ if (joykey != NO_BTN && (test_joypads[port_idx].button_state & (1 << i))) - { ret |= ( 1 << i); - } } } @@ -426,8 +424,8 @@ static void test_joypad_poll(void) test_joypad_autodetect_remove(input_test_steps[i].param_num); input_test_steps[i].handled = true; } - else if( input_test_steps[i].action >= JOYPAD_TEST_COMMAND_BUTTON_PRESS_FIRST && - input_test_steps[i].action <= JOYPAD_TEST_COMMAND_BUTTON_PRESS_LAST) + else if ( input_test_steps[i].action >= JOYPAD_TEST_COMMAND_BUTTON_PRESS_FIRST + && input_test_steps[i].action <= JOYPAD_TEST_COMMAND_BUTTON_PRESS_LAST) { unsigned targetpad = input_test_steps[i].action - JOYPAD_TEST_COMMAND_BUTTON_PRESS_FIRST; test_joypads[targetpad].button_state |= input_test_steps[i].param_num; @@ -436,8 +434,8 @@ static void test_joypad_poll(void) "[Test joypad driver]: Pressing device %d buttons %x, new state %x.\n", targetpad,input_test_steps[i].param_num,test_joypads[targetpad].button_state); } - else if( input_test_steps[i].action >= JOYPAD_TEST_COMMAND_BUTTON_RELEASE_FIRST && - input_test_steps[i].action <= JOYPAD_TEST_COMMAND_BUTTON_RELEASE_LAST) + else if ( input_test_steps[i].action >= JOYPAD_TEST_COMMAND_BUTTON_RELEASE_FIRST + && input_test_steps[i].action <= JOYPAD_TEST_COMMAND_BUTTON_RELEASE_LAST) { unsigned targetpad = input_test_steps[i].action - JOYPAD_TEST_COMMAND_BUTTON_RELEASE_FIRST; test_joypads[targetpad].button_state &= ~input_test_steps[i].param_num; @@ -446,8 +444,8 @@ static void test_joypad_poll(void) "[Test joypad driver]: Releasing device %d buttons %x, new state %x.\n", targetpad,input_test_steps[i].param_num,test_joypads[targetpad].button_state); } - else if( input_test_steps[i].action >= JOYPAD_TEST_COMMAND_BUTTON_AXIS_FIRST && - input_test_steps[i].action <= JOYPAD_TEST_COMMAND_BUTTON_AXIS_LAST) + else if ( input_test_steps[i].action >= JOYPAD_TEST_COMMAND_BUTTON_AXIS_FIRST + && input_test_steps[i].action <= JOYPAD_TEST_COMMAND_BUTTON_AXIS_LAST) { unsigned targetpad = (input_test_steps[i].action - JOYPAD_TEST_COMMAND_BUTTON_AXIS_FIRST) / MAX_AXIS; @@ -482,10 +480,7 @@ static bool test_joypad_query_pad(unsigned pad) return (pad < MAX_USERS); } -static void test_joypad_destroy(void) -{ - -} +static void test_joypad_destroy(void) { } input_device_driver_t test_joypad = { test_joypad_init, diff --git a/input/include/hid_driver.h b/input/include/hid_driver.h index b7c6d953bcc8..c3c6d1441bac 100644 --- a/input/include/hid_driver.h +++ b/input/include/hid_driver.h @@ -49,12 +49,12 @@ struct hid_driver bool (*set_rumble)(void *handle, unsigned pad, enum retro_rumble_effect effect, uint16_t); const char *(*name)(void *handle, unsigned pad); const char *ident; - void (*send_control)(void *handle, uint8_t *buf, size_t len); + void (*send_control)(void *handle, uint8_t *s, size_t len); int32_t (*set_report)(void *handle, uint8_t report_type, uint8_t report_id, uint8_t *data, size_t len); int32_t (*get_report)(void *handle, uint8_t report_type, uint8_t report_id, uint8_t *data, size_t len); int32_t (*set_idle)(void *handle, uint8_t amount); int32_t (*set_protocol)(void *handle, uint8_t protocol); - int32_t (*read)(void *handle, void *buf, size_t len); + int32_t (*read)(void *handle, void *s, size_t len); }; #endif /* HID_DRIVER_H__ */ diff --git a/input/input_driver.c b/input/input_driver.c index 031698221516..613fc9f50f1a 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -1076,16 +1076,16 @@ static int16_t input_joypad_analog_axis( ? joypad_info->auto_binds[ident_y_plus].joyaxis : bind_y_plus->joyaxis; /* normalized magnitude for radial scaled analog deadzone */ - if (x_axis_plus != AXIS_NONE) + if (x_axis_plus != AXIS_NONE && drv->axis) x = drv->axis( joypad_info->joy_idx, x_axis_plus); - if (x_axis_minus != AXIS_NONE) + if (x_axis_minus != AXIS_NONE && drv->axis) x += drv->axis(joypad_info->joy_idx, x_axis_minus); - if (y_axis_plus != AXIS_NONE) + if (y_axis_plus != AXIS_NONE && drv->axis) y = drv->axis( joypad_info->joy_idx, y_axis_plus); - if (y_axis_minus != AXIS_NONE) + if (y_axis_minus != AXIS_NONE && drv->axis) y += drv->axis( joypad_info->joy_idx, y_axis_minus); normal_mag = (1.0f / 0x7fff) * sqrt(x * x + y * y); @@ -1113,9 +1113,9 @@ static int16_t input_joypad_analog_axis( uint16_t key_plus = (bind_plus->joykey == NO_BTN) ? joypad_info->auto_binds[ident_plus].joykey : bind_plus->joykey; - if (drv->button(joypad_info->joy_idx, key_plus)) + if (drv->button && drv->button(joypad_info->joy_idx, key_plus)) res = 0x7fff; - if (drv->button(joypad_info->joy_idx, key_minus)) + if (drv->button && drv->button(joypad_info->joy_idx, key_minus)) res += -0x7fff; } @@ -1199,12 +1199,10 @@ static int16_t input_overlay_device_mouse_state( ptr_st->device_mask |= (1 << RETRO_DEVICE_MOUSE); res = (ptr_st->mouse.scale_x) * (ptr_st->screen_x - ptr_st->mouse.prev_screen_x); - ptr_st->mouse.prev_screen_x = ptr_st->screen_x; return res; case RETRO_DEVICE_ID_MOUSE_Y: res = (ptr_st->mouse.scale_y) * (ptr_st->screen_y - ptr_st->mouse.prev_screen_y); - ptr_st->mouse.prev_screen_y = ptr_st->screen_y; return res; case RETRO_DEVICE_ID_MOUSE_LEFT: return (ptr_st->mouse.click & 0x1) @@ -1222,7 +1220,8 @@ static int16_t input_overlay_device_mouse_state( return 0; } -static int16_t input_overlay_lightgun_state(settings_t *settings, +static int16_t input_overlay_lightgun_state( + bool input_overlay_lightgun_allow_offscreen, input_overlay_t *ol, unsigned id) { unsigned rarch_id; @@ -1235,19 +1234,19 @@ static int16_t input_overlay_lightgun_state(settings_t *settings, case RETRO_DEVICE_ID_LIGHTGUN_SCREEN_X: ptr_st->device_mask |= (1 << RETRO_DEVICE_LIGHTGUN); if ( ( ptr_st->ptr[0].x > -0x7fff && ptr_st->ptr[0].x != 0x7fff) - || !settings->bools.input_overlay_lightgun_allow_offscreen) + || !input_overlay_lightgun_allow_offscreen) return ptr_st->ptr[0].x; else return -0x8000; case RETRO_DEVICE_ID_LIGHTGUN_SCREEN_Y: if ( ( ptr_st->ptr[0].y > -0x7fff && ptr_st->ptr[0].y != 0x7fff) - || !settings->bools.input_overlay_lightgun_allow_offscreen) + || !input_overlay_lightgun_allow_offscreen) return ptr_st->ptr[0].y; else return -0x8000; case RETRO_DEVICE_ID_LIGHTGUN_IS_OFFSCREEN: ptr_st->device_mask |= (1 << RETRO_DEVICE_LIGHTGUN); - return ( settings->bools.input_overlay_lightgun_allow_offscreen + return ( input_overlay_lightgun_allow_offscreen && input_driver_pointer_is_offscreen(ptr_st->ptr[0].x, ptr_st->ptr[0].y)); case RETRO_DEVICE_ID_LIGHTGUN_AUX_A: case RETRO_DEVICE_ID_LIGHTGUN_AUX_B: @@ -1298,7 +1297,9 @@ static int16_t input_overlay_pointer_state(input_overlay_t *ol, return 0; } -static int16_t input_overlay_pointing_device_state(settings_t *settings, +static int16_t input_overlay_pointing_device_state( + int input_overlay_lightgun_port, + bool input_overlay_lightgun_allow_offscreen, input_overlay_t *ol, unsigned port, unsigned device, unsigned idx, unsigned id) { @@ -1307,9 +1308,11 @@ static int16_t input_overlay_pointing_device_state(settings_t *settings, case RETRO_DEVICE_MOUSE: return input_overlay_device_mouse_state(ol, id); case RETRO_DEVICE_LIGHTGUN: - if ( settings->ints.input_overlay_lightgun_port == -1 - || settings->ints.input_overlay_lightgun_port == (int)port) - return input_overlay_lightgun_state(settings, ol, id); + if ( input_overlay_lightgun_port == -1 + || input_overlay_lightgun_port == (int)port) + return input_overlay_lightgun_state( + input_overlay_lightgun_allow_offscreen, + ol, id); break; case RETRO_DEVICE_POINTER: return input_overlay_pointer_state(ol, @@ -1419,10 +1422,8 @@ input_remote_t *input_driver_init_remote( settings_t *settings, unsigned num_active_users) { - unsigned network_remote_base_port = settings->uints.network_remote_base_port; - return input_remote_new( - settings, - network_remote_base_port, + return input_remote_new(settings, + settings->uints.network_remote_base_port, num_active_users); } #endif @@ -1784,11 +1785,13 @@ static int16_t input_state_device( if ( (input_st->overlay_ptr) && (input_st->overlay_ptr->flags & INPUT_OVERLAY_ENABLE) && (settings->bools.input_overlay_pointer_enable)) - res = input_overlay_pointing_device_state(settings, + res = input_overlay_pointing_device_state( + settings->ints.input_overlay_lightgun_port, + settings->bools.input_overlay_lightgun_allow_offscreen, input_st->overlay_ptr, port, device, idx, id); #endif - if (input_st->flags & INP_FLAG_BLOCK_POINTER_INPUT) + if (res && input_st->flags & INP_FLAG_BLOCK_POINTER_INPUT) break; if (id < RARCH_FIRST_META_KEY) @@ -1824,14 +1827,14 @@ static int16_t input_state_internal( rarch_joypad_info_t joypad_info; float input_analog_deadzone = settings->floats.input_analog_deadzone; float input_analog_sensitivity = settings->floats.input_analog_sensitivity; + unsigned *input_remap_port_map = settings->uints.input_remap_port_map[port]; + uint8_t max_users = settings->uints.input_max_users; const input_device_driver_t *joypad = input_st->primary_joypad; #ifdef HAVE_MFI const input_device_driver_t *sec_joypad = input_st->secondary_joypad; #else const input_device_driver_t *sec_joypad = NULL; #endif - unsigned *input_remap_port_map = settings->uints.input_remap_port_map[port]; - uint8_t max_users = settings->uints.input_max_users; uint8_t mapped_port = 0; int16_t result = 0; #ifdef HAVE_MENU @@ -3183,18 +3186,15 @@ static void input_overlay_get_mouse_scale(settings_t *settings, { video_driver_state_t *video_st = video_state_get_ptr(); struct retro_game_geometry *geom = &video_st->av_info.geometry; - float swipe_thres; - float adj_x, adj_y; - float display_aspect, core_aspect; - float speed; if (geom->base_height) { - speed = settings->floats.input_overlay_mouse_speed; - swipe_thres = + float adj_x, adj_y; + float speed = settings->floats.input_overlay_mouse_speed; + float swipe_thres = 655.35f * settings->floats.input_overlay_mouse_swipe_threshold; - display_aspect = (float)video_st->width / video_st->height; - core_aspect = (float)geom->base_width / geom->base_height; + float display_aspect = (float)video_st->width / video_st->height; + float core_aspect = (float)geom->base_width / geom->base_height; if (display_aspect > core_aspect) { @@ -3466,11 +3466,13 @@ static void input_overlay_update_pointer_coords( if ( !ptr_st->count && (ptr_st->device_mask & (1 << RETRO_DEVICE_MOUSE))) { + ptr_st->mouse.prev_screen_x = ptr_st->screen_x; ptr_st->screen_x = current_input->input_state( input_data, NULL, NULL, NULL, NULL, true, 0, RARCH_DEVICE_POINTER_SCREEN, touch_idx, RETRO_DEVICE_ID_POINTER_X); + ptr_st->mouse.prev_screen_y = ptr_st->screen_y; ptr_st->screen_y = current_input->input_state( input_data, NULL, NULL, NULL, NULL, true, 0, RARCH_DEVICE_POINTER_SCREEN, @@ -4449,8 +4451,7 @@ void input_mapper_reset(void *data) bool input_set_sensor_state(unsigned port, enum retro_sensor_action action, unsigned rate) { - settings_t *settings = config_get_ptr(); - bool input_sensors_enable = settings->bools.input_sensors_enable; + bool input_sensors_enable = config_get_ptr()->bools.input_sensors_enable; return input_driver_set_sensor( port, input_sensors_enable, action, rate); } @@ -4499,9 +4500,7 @@ void joypad_driver_reinit(void *data, const char *joypad_driver_name) **/ float input_get_sensor_state(unsigned port, unsigned id) { - settings_t *settings = config_get_ptr(); - bool input_sensors_enable = settings->bools.input_sensors_enable; - + bool input_sensors_enable = config_get_ptr()->bools.input_sensors_enable; return input_driver_get_sensor(port, input_sensors_enable, id); } @@ -4544,17 +4543,14 @@ bool input_set_rumble_state(unsigned port, **/ bool input_set_rumble_gain(unsigned gain) { - settings_t *settings = config_get_ptr(); - if (input_driver_set_rumble_gain( - gain, settings->uints.input_max_users)) - return true; - return false; + return (input_driver_set_rumble_gain( + gain, config_get_ptr()->uints.input_max_users)); } uint64_t input_driver_get_capabilities(void) { - if ( !input_driver_st.current_driver || - !input_driver_st.current_driver->get_capabilities) + if ( !input_driver_st.current_driver + || !input_driver_st.current_driver->get_capabilities) return 0; return input_driver_st.current_driver->get_capabilities(input_driver_st.current_data); } @@ -4585,7 +4581,6 @@ bool input_key_pressed(int key, bool keyboard_pressed) ) ) { - settings_t *settings = config_get_ptr(); const input_device_driver_t *joypad = (const input_device_driver_t*) input_driver_st.primary_joypad; @@ -4594,7 +4589,7 @@ bool input_key_pressed(int key, bool keyboard_pressed) const uint64_t autobind_joykey = input_autoconf_binds[0][key].joykey; const uint64_t autobind_joyaxis= input_autoconf_binds[0][key].joyaxis; uint16_t port = 0; - float axis_threshold = settings->floats.input_axis_threshold; + float axis_threshold = config_get_ptr()->floats.input_axis_threshold; const uint64_t joykey = (bind_joykey != NO_BTN) ? bind_joykey : autobind_joykey; const uint64_t joyaxis = (bind_joyaxis != AXIS_NONE) @@ -4656,8 +4651,8 @@ bool video_driver_init_input( /* This should never really happen as tmp (driver.input) is always * found before this in find_driver_input(), or we have aborted * in a similar fashion anyways. */ - if ( !input_driver_st.current_driver || - !(new_data = input_driver_init_wrap( + if ( !input_driver_st.current_driver + || !(new_data = input_driver_init_wrap( input_driver_st.current_driver, settings->arrays.input_joypad_driver))) { @@ -4722,7 +4717,6 @@ void input_config_reset(void) void input_config_set_device(unsigned port, unsigned id) { settings_t *settings = config_get_ptr(); - if (settings && (port < MAX_USERS)) configuration_set_uint(settings, settings->uints.input_libretro_device[port], id); @@ -4731,10 +4725,8 @@ void input_config_set_device(unsigned port, unsigned id) unsigned input_config_get_device(unsigned port) { settings_t *settings = config_get_ptr(); - if (settings && (port < MAX_USERS)) return settings->uints.input_libretro_device[port]; - return RETRO_DEVICE_NONE; } @@ -4752,10 +4744,8 @@ const struct retro_keybind *input_config_get_bind_auto( unsigned *input_config_get_device_ptr(unsigned port) { settings_t *settings = config_get_ptr(); - if (settings && (port < MAX_USERS)) return &settings->uints.input_libretro_device[port]; - return NULL; } @@ -5114,10 +5104,14 @@ void input_driver_init_command(input_driver_state_t *input_st, } #endif -#ifdef HAVE_LAKKA +#if defined(HAVE_LAKKA) if (!(input_st->command[2] = command_uds_new())) RARCH_ERR("Failed to initialize the UDS command interface.\n"); +#elif defined(EMSCRIPTEN) + if (!(input_st->command[2] = command_emscripten_new())) + RARCH_ERR("Failed to initialize the emscripten command interface.\n"); #endif + } void input_driver_deinit_command(input_driver_state_t *input_st) @@ -5272,11 +5266,11 @@ static void input_overlay_swap_with_cached(void) void input_overlay_unload(void) { - settings_t *settings = config_get_ptr(); + bool input_overlay_enable = config_get_ptr()->bools.input_overlay_enable; runloop_state_t *runloop_st = runloop_state_get_ptr(); /* Free if overlays disabled or initing/deiniting core */ - if ( !settings->bools.input_overlay_enable + if ( !input_overlay_enable || !(runloop_st->flags & RUNLOOP_FLAG_IS_INITED) || (runloop_st->flags & RUNLOOP_FLAG_SHUTDOWN_INITIATED)) input_overlay_deinit(); @@ -5325,7 +5319,6 @@ static bool input_overlay_want_hidden(void) void input_overlay_check_mouse_cursor(void) { - settings_t *settings = config_get_ptr(); input_driver_state_t *input_st = &input_driver_st; video_driver_state_t *video_st = video_state_get_ptr(); input_overlay_t *ol = input_st->overlay_ptr; @@ -5334,7 +5327,7 @@ void input_overlay_check_mouse_cursor(void) && video_st->poke && video_st->poke->show_mouse) { - if (settings->bools.input_overlay_show_mouse_cursor) + if (config_get_ptr()->bools.input_overlay_show_mouse_cursor) video_st->poke->show_mouse(video_st->data, true); else if (input_st->flags & INP_FLAG_GRAB_MOUSE_STATE) video_st->poke->show_mouse(video_st->data, false); @@ -5345,15 +5338,14 @@ void input_overlay_check_mouse_cursor(void) static void input_overlay_loaded(retro_task_t *task, void *task_data, void *user_data, const char *err) { - settings_t *settings = config_get_ptr(); +#ifdef HAVE_MENU + uint16_t overlay_types; +#endif overlay_task_data_t *data = (overlay_task_data_t*)task_data; input_overlay_t *ol = NULL; input_driver_state_t *input_st = &input_driver_st; bool enable_overlay = !input_overlay_want_hidden() - && settings->bools.input_overlay_enable; -#ifdef HAVE_MENU - uint16_t overlay_types; -#endif + && config_get_ptr()->bools.input_overlay_enable; if (err) return; @@ -5609,7 +5601,7 @@ static void input_keys_pressed( const input_device_driver_t *joypad, const input_device_driver_t *sec_joypad, rarch_joypad_info_t *joypad_info, - settings_t *settings) + bool input_hotkey_device_merge) { unsigned i; input_driver_state_t *input_st = &input_driver_st; @@ -5625,7 +5617,7 @@ static void input_keys_pressed( if (!binds) return; - if ( settings->bools.input_hotkey_device_merge + if ( input_hotkey_device_merge && (libretro_hotkey_set || keyboard_hotkey_set)) libretro_hotkey_set = keyboard_hotkey_set = true; @@ -6170,15 +6162,14 @@ void bsv_movie_read_next_events(bsv_movie_t *handle) void bsv_movie_next_frame(input_driver_state_t *input_st) { - settings_t *settings = config_get_ptr(); - unsigned checkpoint_interval = settings->uints.replay_checkpoint_interval; + unsigned checkpoint_interval = config_get_ptr()->uints.replay_checkpoint_interval; /* if bsv_movie_state_next_handle is not null, deinit and set bsv_movie_state_handle to bsv_movie_state_next_handle and clear next_handle */ bsv_movie_t *handle = input_st->bsv_movie_state_handle; if (input_st->bsv_movie_state_next_handle) { - if(handle) + if (handle) bsv_movie_deinit(input_st); handle = input_st->bsv_movie_state_next_handle; input_st->bsv_movie_state_handle = handle; @@ -6391,6 +6382,7 @@ void input_driver_poll(void) *sec_joypad = NULL; #endif bool input_remap_binds_enable = settings->bools.input_remap_binds_enable; + float input_axis_threshold = settings->floats.input_axis_threshold; uint8_t max_users = (uint8_t)settings->uints.input_max_users; if (joypad && joypad->poll) @@ -6415,7 +6407,7 @@ void input_driver_poll(void) * when mapping analog stick to dpad input. */ for (i = 0; i < max_users; i++) { - joypad_info[i].axis_threshold = settings->floats.input_axis_threshold; + joypad_info[i].axis_threshold = input_axis_threshold; joypad_info[i].joy_idx = settings->uints.input_joypad_index[i]; joypad_info[i].auto_binds = input_autoconf_binds[joypad_info[i].joy_idx]; @@ -6889,14 +6881,10 @@ int16_t input_driver_state_wrapper(unsigned port, unsigned device, #endif #ifdef HAVE_GAME_AI - if(settings->bools.game_ai_override_p1 && port == 0) - { + if (settings->bools.game_ai_override_p1 && port == 0) result |= game_ai_input(port, device, idx, id, result); - } - if(settings->bools.game_ai_override_p2 && port == 1) - { + if (settings->bools.game_ai_override_p2 && port == 1) result |= game_ai_input(port, device, idx, id, result); - } #endif return result; @@ -6912,10 +6900,7 @@ void *hid_driver_get_data(void) * HID driver; the memory will have already been freed, so we need to * reset the pointer. */ -void hid_driver_reset_data(void) -{ - input_driver_st.hid_data = NULL; -} +void hid_driver_reset_data(void) { input_driver_st.hid_data = NULL; } /** * config_get_hid_driver_options: @@ -7211,7 +7196,7 @@ void input_driver_collect_system_input(input_driver_state_t *input_st, joypad, sec_joypad, &joypad_info, - settings); + settings->bools.input_hotkey_device_merge); #ifdef HAVE_MENU if (menu_is_alive) diff --git a/input/input_keymaps.c b/input/input_keymaps.c index 83e77136d8e3..5afaab5ad95c 100644 --- a/input/input_keymaps.c +++ b/input/input_keymaps.c @@ -2091,12 +2091,6 @@ enum retro_key rarch_keysym_lut[RETROK_LAST]; static unsigned *rarch_keysym_rlut = NULL; static unsigned rarch_keysym_rlut_size = 0; -/** - * input_keymaps_init_keyboard_lut: - * @map : Keyboard map. - * - * Initializes and sets the keyboard layout to a keyboard map (@map). - **/ void input_keymaps_init_keyboard_lut(const struct rarch_key_map *map) { const struct rarch_key_map *map_start = map; @@ -2124,15 +2118,6 @@ void input_keymaps_init_keyboard_lut(const struct rarch_key_map *map) rarch_keysym_rlut_size = 0; } -/** - * input_keymaps_translate_keysym_to_rk: - * @sym : Key symbol. - * - * Translates a key symbol from the keyboard layout table - * to an associated retro key identifier. - * - * Returns: Retro key identifier. - **/ enum retro_key input_keymaps_translate_keysym_to_rk(unsigned sym) { unsigned i; @@ -2153,25 +2138,16 @@ enum retro_key input_keymaps_translate_keysym_to_rk(unsigned sym) return RETROK_UNKNOWN; } -/** - * input_keymaps_translate_rk_to_str: - * @key : Retro key identifier. - * @buf : Buffer. - * @size : Size of @buf. - * - * Translates a retro key identifier to a human-readable - * identifier string. - **/ -void input_keymaps_translate_rk_to_str(enum retro_key key, char *buf, size_t len) +void input_keymaps_translate_rk_to_str(enum retro_key key, char *s, size_t len) { unsigned i; - *buf = '\0'; + *s = '\0'; if (key >= RETROK_a && key <= RETROK_z) { - buf[0] = (key - RETROK_a) + 'a'; - buf[1] = '\0'; + s[0] = (key - RETROK_a) + 'a'; + s[1] = '\0'; return; } @@ -2180,7 +2156,7 @@ void input_keymaps_translate_rk_to_str(enum retro_key key, char *buf, size_t len if (input_config_key_map[i].key != key) continue; - strlcpy(buf, input_config_key_map[i].str, len); + strlcpy(s, input_config_key_map[i].str, len); break; } } diff --git a/input/input_keymaps.h b/input/input_keymaps.h index 473a708d3a58..fecbe00abd7a 100644 --- a/input/input_keymaps.h +++ b/input/input_keymaps.h @@ -223,13 +223,13 @@ enum retro_key input_keymaps_translate_keysym_to_rk(unsigned sym); /** * input_keymaps_translate_rk_to_str: * @key : Retro key identifier. - * @buf : Buffer. - * @len : Size of @buf. + * @s : Buffer. + * @len : Size of @s. * * Translates a retro key identifier to a human-readable * identifier string. **/ -void input_keymaps_translate_rk_to_str(enum retro_key key, char *buf, size_t len); +void input_keymaps_translate_rk_to_str(enum retro_key key, char *s, size_t len); /** * input_translate_rk_to_ascii: diff --git a/intl/msg_hash_ar.h b/intl/msg_hash_ar.h index 6945b64f46d1..b11c968d75d4 100644 --- a/intl/msg_hash_ar.h +++ b/intl/msg_hash_ar.h @@ -2004,10 +2004,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_MIXER_MUTE, "كتم صوت المزيج." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "كتم الصوت عند إعادة التوجيه السريع" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, "كتم الصوت تلقائياً عند استخدام السرعة إلى الأمام." @@ -2422,10 +2418,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, "تبديل القائمة" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "تبديل العرض الحالي بين القائمة ومحتوى التشغيل." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, "خروج" @@ -2478,10 +2470,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, "إرجاع" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "قم بتبديل المحتوى قيد التشغيل بين حالات الإيقاف المؤقت والوضع غير المؤقت." - ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_MUTE, @@ -3093,13 +3081,17 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "تصفية ملحقات غير معروفة" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, + "تصفية حسب النواة الحالية" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, "استخدام مشغل الوسائط المدمج" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, - "تصفية حسب النواة الحالية" + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "استخدام عارض الصور المدمج" ) /* Settings > Frame Throttle */ @@ -4296,7 +4288,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "مستعرض الملفات" + "مجلد البداية" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LIBRETRO_INFO_PATH, @@ -4715,10 +4707,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, "استئناف" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "استأنف المحتوى قيد التشغيل حاليا و اترك القائمة السريعة." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, "إعادة التشغيل" @@ -4791,18 +4779,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_OPTIONS, "الخيارات الأساسية" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "تغيير الإعدادات للمحتوى النشط حاليا." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, "التحكم" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "تغيير الإعدادات للمحتوى النشط حاليا." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, "شفرات الغش" @@ -6502,6 +6482,23 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_COLLAPSE_SIDEBAR, "اجعل الشريط الجانبي الأيسر مطويًا دائمًا." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "الصورة المصغرة الثانوية" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "استخدام نص المؤشر للبيانات الوصفية للمحتوى" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "عند التمكين، كل عنصر من عناصر بيانات التعريف الخاصة بالمحتوى تظهر على الشريط الجانبي الأيمن لقوائم التشغيل (النواة المرتبطة بها، وقت التشغيل) سيشغل سطراً واحداً؛ المقاطع التي تتجاوز عرض الشريط الجانبي سيتم عرضها كنص شريط تمرير. عند التعطيل، سيتم عرض كل عنصر من بيانات التعر[...]" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "عامل المقياس المصغرة" + ) + MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "حدد سمة لون مختلفة." @@ -6534,22 +6531,7 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SOLARIZED_LIGHT, "النور المشمس" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "الصورة المصغرة الثانوية" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "استخدام نص المؤشر للبيانات الوصفية للمحتوى" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "عند التمكين، كل عنصر من عناصر بيانات التعريف الخاصة بالمحتوى تظهر على الشريط الجانبي الأيمن لقوائم التشغيل (النواة المرتبطة بها، وقت التشغيل) سيشغل سطراً واحداً؛ المقاطع التي تتجاوز عرض الشريط الجانبي سيتم عرضها كنص شريط تمرير. عند التعطيل، سيتم عرض كل عنصر من بيانات التعر[...]" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "عامل المقياس المصغرة" - ) + /* MaterialUI: Settings > User Interface > Appearance */ @@ -7450,10 +7432,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_USER, "المستخدم" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "استخدام عارض الصور المدمج" - ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_MAX_SWAPCHAIN_IMAGES, "يلغي مشغل الفيديو أن يستخدم صراحة وضع التخزين المؤقت المحدد." @@ -7557,14 +7535,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "حدد من قائمة التشغيل" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "استئناف" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "استأنف المحتوى قيد التشغيل حاليا و اترك القائمة السريعة." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "عرض قائمة %u مباريات" diff --git a/intl/msg_hash_ast.h b/intl/msg_hash_ast.h index e6e56d1c2028..2f40877b08b7 100644 --- a/intl/msg_hash_ast.h +++ b/intl/msg_hash_ast.h @@ -546,6 +546,26 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL2_SUPPORT, "Compatibilidá con SDL 2" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_D3D8_SUPPORT, + "Compatibilidá con Direct3D 8" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_D3D9_SUPPORT, + "Compatibilidá con Direct3D 9" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_D3D10_SUPPORT, + "Compatibilidá con Direct3D 10" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_D3D11_SUPPORT, + "Compatibilidá con Direct3D 11" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_D3D12_SUPPORT, + "Compatibilidá con Direct3D 12" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_VULKAN_SUPPORT, "Compatibilidá con Vulkan" @@ -690,6 +710,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_V4L2_SUPPORT, "Compatibilidá con Video4Linux2" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SSL_SUPPORT, + "Compatibilidá con SSL" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBUSB_SUPPORT, "Compatibilidá con libusb" @@ -1263,7 +1287,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_RATE_CONTROL_DELTA, - "Ayuda a amenorgar les imperfeiciones na sincronización del audiu y videu. Ten curiáu si esta opción ta desactivada, la sincronización afayadiza ye cuasi imposible de consiguir." + "Ayuda a amenorgar les imperfeiciones na sincronización del audiu y videu. Ten curiáu si esta opción ta desactivada, la sincronización correuta ye cuasi imposible de consiguir." ) /* Settings > Audio > MIDI */ @@ -1573,6 +1597,10 @@ MSG_HASH( /* Settings > File Browser */ +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Usar el visor d'imáxenes integráu" + ) /* Settings > Frame Throttle */ @@ -2223,7 +2251,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_ACCOUNTS_LIST, - "Xestiona les cuentes configuraes anguaño." + "Xestiona les cuentes que tán configuraes." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_NETPLAY_NICKNAME, @@ -2246,7 +2274,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_DISCORD_ALLOW, - "Permite que l'aplicación Discord amuese datos tocante al conteníu que ta en reproducción.\nEsta función namás ta disponible pal veceru nativu pa ordenadores." + "Permite que l'aplicación Discord amuese datos tocante al conteníu que ta en reproducción.\nEsta función namás ta disponible pal veceru nativu d'ordenador." ) /* Settings > User > Accounts */ @@ -2320,7 +2348,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Restolador de ficheros" + "Direutoriu inicial" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_CONFIG_DIRECTORY, @@ -2611,10 +2639,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, "Siguir" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Sigue col conteníu n'execución y cola del menú rápidu." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT, "Zarrar el conteníu" @@ -2705,7 +2729,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_PRIMARY_STRENGTH, - "Fuercia del vibrador primariu" + "Intensidá del vibrador primariu" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_PRIMARY_DURATION, @@ -2713,7 +2737,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_SECONDARY_STRENGTH, - "Fuercia del vibrador secundariu" + "Intensidá del vibrador secundariu" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_SECONDARY_DURATION, @@ -2838,7 +2862,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_NO_ITEMS, - "Nun hai elementos" + "Nun hai nengún elementu" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MORE, @@ -3250,6 +3274,11 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "Miniatura secundaria" + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, "Blancu básico" @@ -3270,10 +3299,7 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, "Seleniu" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "Miniatura secundaria" - ) + /* MaterialUI: Settings > User Interface > Appearance */ @@ -3734,10 +3760,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_USER, "Usuariu" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Usar el visor d'imáxenes integráu" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_BROWSE_START, "Aniciar" @@ -3753,14 +3775,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_NETPLAY_ROOM_NICKNAME_LAN, "Nomatu (LAN): %s" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Siguir" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Sigue col conteníu n'execución y cola del menú rápidu." - ) MSG_HASH( /* FIXME Still exists in a comment about being removed */ MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_FOOTER_OPACITY, "Opacidá del pié" diff --git a/intl/msg_hash_be.h b/intl/msg_hash_be.h index 6b22d4746c39..b266fd7d48ac 100644 --- a/intl/msg_hash_be.h +++ b/intl/msg_hash_be.h @@ -2930,7 +2930,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Сцішванне пры перамотцы наперад" + "Перамотка наперад з адключаным гукам" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, @@ -2938,12 +2938,20 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Паскарэнне пры перамотцы наперад" + "Перамотка наперад з паскораным гукам" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "Паскараць гук пры перамотцы наперад. Прадухіляе патрэскванне, але змяняе вышыню." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_REWIND_MUTE, + "Перамотка назад з адключанымі гукам" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_REWIND_MUTE, + "Аўтаматычна адключаць гук пры выкарыстанні перамотцы назад." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, "Узмацненне гучнасці (дБ)" @@ -3764,7 +3772,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Пераключае паміж меню ды бягучым змесцівам на бягучым дысплэі." + "Пераключае бягучы дысплэй паміж меню ды змесцівам." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, @@ -3844,7 +3852,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Прыпыняе ці аднаўляе бягучы кантэнт." + "Пераключае змесціва паміж станамі з прыпыненнем ды без." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, @@ -4995,16 +5003,16 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, - "Фільтраваць файлы, якія паказваюцца файлавым браўзерам, па пашырэннях, якія падтрымліваюцца." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Выкарыстанне ўбудаванага медыяпрайгравальніка" + "Фільтраваць паказ файлаў файлавым браўзерам паводле падтрымкі пашырэння." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Фільтраванне па бягучаму ядру" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_FILTER_BY_CURRENT_CORE, + "Фільтраваць паказ файлаў файлавым браўзерам па бягучаму ядру." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY, "Памятаць апошні выкарыстаны пачатковы каталог" @@ -5013,6 +5021,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, "Адкрываць файлавы браўзер на апошнім выкарыстаным месцы пры загрузцы змесціва з пачатковага каталога. Заўвага: месца будзе скінута да прадвызначанага пры перазапуску RetroArch." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Выкарыстанне ўбудаванага медыяпрайгравальніка" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Убудаваны прагляд малюнкаў" + ) /* Settings > Frame Throttle */ @@ -6128,7 +6144,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Прыпыняць запушчаны кантэнт пры выкліку меню." + "Прыпыняць змесціва пры выкліку меню." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, @@ -6401,7 +6417,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_SETTINGS, - "Паказваць меню 'Налады' (патрабуецца перазапуск на Ozone/XMB)" + "Паказваць меню 'Налады'. (Патрабуецца перазапуск на Ozone/XMB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_SETTINGS_PASSWORD, @@ -6417,7 +6433,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_FAVORITES, - "Паказваць меню 'Упадабанае' (патрабуецца перазапуск на Ozone/XMB)" + "Паказваць меню 'Упадабанае'. (Патрабуецца перазапуск на Ozone/XMB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_IMAGES, @@ -6425,7 +6441,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_IMAGES, - "Паказваць меню 'Відарысы' (патрабуецца перазапуск на Ozone/XMB)" + "Паказваць меню 'Відарысы'. (Патрабуецца перазапуск на Ozone/XMB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_MUSIC, @@ -6433,7 +6449,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_MUSIC, - "Паказваць меню 'Музыка' (патрабуецца перазапуск на Ozone/XMB)" + "Паказваць меню 'Музыка'. (Патрабуецца перазапуск на Ozone/XMB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_VIDEO, @@ -6441,7 +6457,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_VIDEO, - "Паказваць меню 'Відэа' (патрабуецца перазапуск на Ozone/XMB)" + "Паказваць меню 'Відэа'. (Патрабуецца перазапуск на Ozone/XMB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_NETPLAY, @@ -6449,7 +6465,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_NETPLAY, - "Паказваць меню 'Сеткавая гульня' (патрабуецца перазапуск на Ozone/XMB)" + "Паказваць меню 'Сеткавая гульня'. (Патрабуецца перазапуск на Ozone/XMB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_HISTORY, @@ -6457,7 +6473,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_HISTORY, - "Паказваць меню нядаўняй гісторыі (патрабуецца перазапуск на Ozone/XMB)" + "Паказваць меню нядаўняй гісторыі. (Патрабуецца перазапуск на Ozone/XMB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_ADD, @@ -6465,7 +6481,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_ADD, - "Паказваць меню 'Імпартаваць змесціва' (патрабуецца перазапуск на Ozone/XMB)" + "Паказваць меню 'Імпартаваць змесціва'. (Патрабуецца перазапуск на Ozone/XMB)" ) MSG_HASH( /* FIXME can now be replaced with MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_ADD */ MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_ADD_ENTRY, @@ -6489,7 +6505,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "Паказваць плэй-лісты (патрабуецца перазапуск на Ozone/XMB)" + "Паказваць плэй-лісты ў галоўным меню. Ігнаруецца ў GLUI, калі ўключаныя карткі плэй-лістоў ды панэлі навігацыі." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLIST_TABS, + "Паказ картак плэй-лістоў" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLIST_TABS, + "Паказваць карткі плэй-лістоў. Не мае ўплыву на RGUI. Панэль навігацыі мае быць уключаная ў GLUI. (Патрабуецца перазапуск на Ozone/XMB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, @@ -6497,7 +6521,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_EXPLORE, - "Паказваць опцыю даследчыка змесціва (патрабуецца перазапуск на Ozone/XMB)" + "Паказваць опцыю даследчыка змесціва. (Патрабуецца перазапуск на Ozone/XMB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_CONTENTLESS_CORES, @@ -6969,14 +6993,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "Паказ 'Карыстальнік'" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "Значкі плэй-ліста" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "Тып мініяцюры для адлюстравання значкоў плэй-ліста." - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "Паказваць налады 'Карыстальнік'." @@ -7083,11 +7099,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_REMEMBER_SELECTION, - "Запамінаць выбар пры змене ўкладак" + "Запамінаць выбар пры змене картак" ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_REMEMBER_SELECTION, - "Запамінаць пазіцыю курсора на ўкладках. RGUI не мае ўкладак, але Плэйлісты і Налады паводзяць сябе як такія." + "Запамінаць пазіцыю курсора ў картках. RGUI не мае картак, але плэй-лісты ды налады паводзяць сябе гэтаксама." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_REMEMBER_SELECTION_ALWAYS, @@ -8204,7 +8220,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Файлавы браўзер" + "Пачатковы каталог" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, @@ -8449,7 +8465,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "Выбраць якая інфармацыя аб запушчаным кантэнце будзе перададзена." + "Выбраць, якія звесткі пра змесціва будуць перададзеныя." ) MSG_HASH( @@ -9049,7 +9065,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Закрыць хуткае меню і аднавіць бягучы кантэнт." + "Закрыць хуткае меню і аднавіць змесціва." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, @@ -9065,7 +9081,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Закрыць бягучае змесціва. Любыя незахаваныя змены могуць страціцца." + "Закрыць змесціва. Любыя незахаваныя змены могуць быць страчаныя." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, @@ -9201,7 +9217,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Змяніць опцыі бягучага выканання змесціва." + "Змена опцый для змесціва." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, @@ -9209,7 +9225,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Змяніць кіраванне бягучым выкананнем змесціва." + "Змяніць кіраванне для змесціва." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, @@ -9835,7 +9851,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_HELP_SHADER_WATCH_FOR_CHANGES, - "Адсочваць змены ў файлах шэйдара. Пасля захавання змен шэйдара ў памяць, ён будзе аўтаматычна перакампіляваны і ўжыты да запушчанага кантэнту." + "Адсочваць змены ў файлах шэйдара. Пасля захавання змен шэйдара на дыск ён будзе аўтаматычна перакампіляваны і ўжыты да змесціва." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_REMEMBER_LAST_DIR, @@ -11088,7 +11104,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "Адлюстроўваць у фоне запушчаны кантэнт пры выкліку хуткага меню. Адключэнне празрыстасці можа змяніць колеры тэмы." + "Адлюстроўваць у фоне змесціва пры выкліку хуткага меню. Адключэнне празрыстасці можа змяніць колеры тэмы." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, @@ -11388,6 +11404,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS, "Тып мініяцюры для адлюстравання злева." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, + "Значок мініяцюры" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, + "Тып значка мініяцюры, які адлюстроўваецца ў плэй-лісце." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER, "Дынамічны фон" @@ -11410,7 +11434,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_XMB_ANIMATION_HORIZONTAL_HIGHLIGHT, - "Эфект анімацыі пры пераключэнні ўкладак." + "Эфект анімацыі пры прагортцы картак." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_XMB_ANIMATION_MOVE_UP_DOWN, @@ -11667,6 +11691,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_MIDGAR, "Мідгар" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Цёмна-шэрая" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Светла-шэрая" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -11694,6 +11726,31 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "Плэйлісты будуць перасартаваны ў алфавітным парадку пасля выдалення назваў кампаній." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "Другарадная мініяцюра" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "Замяняе вобласць метададзеных дадатковай мініяцюрай." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "Скролінг метададзеных кантэнту" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "Калі ўключана, метададзеныя ў правай частцы плэйліста (прывязка ядра, час працы) займаюць адзін радок; запісы больш шырыні бакавой панэлі будуць адлюстраваны бягучым радком. Калі выключана, усе метададзеныя будуць адлюстраваны статычна, займаючы неабходную колькасць рад[...]" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Каэфіцыент маштабавання мініяцюр" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "Змяняе памер вобласці мініяцюр." + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Колеравая тэма" @@ -11718,10 +11775,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_TWILIGHT_ZONE, "Змрочная зона" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, - "Сэлен" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SOLARIZED_DARK, "Solarized цёмная" @@ -11739,30 +11792,11 @@ MSG_HASH( "Светла-шэрая" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "Другарадная мініяцюра" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "Замяняе вобласць метададзеных дадатковай мініяцюрай." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "Скролінг метададзеных кантэнту" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "Калі ўключана, метададзеныя ў правай частцы плэйліста (прывязка ядра, час працы) займаюць адзін радок; запісы больш шырыні бакавой панэлі будуць адлюстраваны бягучым радком. Калі выключана, усе метададзеныя будуць адлюстраваны статычна, займаючы неабходную колькасць рад[...]" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Каэфіцыент маштабавання мініяцюр" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "Змяняе памер вобласці мініяцюр." + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, + "Сэлен" ) + /* MaterialUI: Settings > User Interface > Appearance */ MSG_HASH( @@ -12726,10 +12760,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_KEYBOARD, "Клавіятура" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Убудаваны прагляд малюнкаў" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, "Максімум малюнкаў у свопчэйне" @@ -12865,14 +12895,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Выбраць з плэйліста" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Працягнуць" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Закрыць хуткае меню і аднавіць бягучы кантэнт." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "Прагляд спісу %u супадзенняў" @@ -15897,5 +15919,13 @@ MSG_HASH( +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GAME_AI_SHOW_DEBUG, + "Паказ адладкі" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_GAME_AI_SHOW_DEBUG, + "Паказваць адладку" + ) #endif \ No newline at end of file diff --git a/intl/msg_hash_bg.h b/intl/msg_hash_bg.h index cb0f9da4ff0a..ce433275c8d4 100644 --- a/intl/msg_hash_bg.h +++ b/intl/msg_hash_bg.h @@ -1236,7 +1236,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Разглеждане на файловете" + "Начална Директория" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_DIRECTORY, @@ -1419,6 +1419,8 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ diff --git a/intl/msg_hash_ca.h b/intl/msg_hash_ca.h index 647e8500bcbc..99e293260dea 100644 --- a/intl/msg_hash_ca.h +++ b/intl/msg_hash_ca.h @@ -2768,18 +2768,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_MIXER_MUTE, "Silencia l'àudio del mesclador." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Silencia en l'avanç ràpid" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, "Silencia automàticament el so quan s’usa l’avançament ràpid." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Accelerar a l'usar l'avançament ràpid" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "Accelera l'àudio a l'emprar l'avançament ràpid. Defugirá sorolls en l'àudio però canviant la seva tonalitat." @@ -3366,10 +3358,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, "Commuta el menú" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Canvia la visualització actual entre el menú i el contingut en execució." - ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_QUIT_GAMEPAD_COMBO, "Combinació de botons del controlador per sortir de RetroArch." @@ -3434,10 +3422,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, "Fer pausa" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Canvia entre estats de pausa i no pausa del contingut executat." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Avançar fotograma" @@ -4157,6 +4141,10 @@ MSG_HASH( /* Settings > File Browser */ +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Fes servir el visualitzador d’imatges integrat" + ) /* Settings > Frame Throttle */ @@ -5269,10 +5257,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "Mostrar 'Usuari'" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "Icones de les llistes de reproducció" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_STEAM, @@ -5860,7 +5844,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Navegador de fitxers" + "Directori d'inici" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH, @@ -7955,6 +7939,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_ICE_COLD, "Glaçat" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Gris fosc" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Gris clar" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -7966,6 +7958,19 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_COLLAPSE_SIDEBAR, "Manté la barra lateral sempre replegada." ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "Substitueix el plafó de metadades per una altra miniatura." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Factor d’escala de les miniatures" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "Ajusta la mida de la barra de miniatures." + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Color del tema" @@ -8014,18 +8019,7 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_PURPLE_RAIN, "Pluja lila" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "Substitueix el plafó de metadades per una altra miniatura." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Factor d’escala de les miniatures" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "Ajusta la mida de la barra de miniatures." - ) + /* MaterialUI: Settings > User Interface > Appearance */ @@ -8670,10 +8664,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_KEYBOARD, "Teclat" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Fes servir el visualitzador d’imatges integrat" - ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_WAITABLE_SWAPCHAINS, "Sincronització rígida de la CPU i GPU. Redueix la latència a cost de rendiment." @@ -8745,10 +8735,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_ASPECT, "Força la relació d’aspecte" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Continua" - ) MSG_HASH( /* FIXME Still exists in a comment about being removed */ MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_FOOTER_OPACITY, "Opacitat del peu de pàgina" diff --git a/intl/msg_hash_chs.h b/intl/msg_hash_chs.h index a3b54bc76070..3413c2e70e45 100644 --- a/intl/msg_hash_chs.h +++ b/intl/msg_hash_chs.h @@ -2820,18 +2820,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_RESPECT_SILENT_MODE, "静音模式下静音所有音频。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "快进时静音" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, "快进时自动静音。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "快进时的加速声音" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "快进时加快音频速度。防止噼啪声,但会改变音调。" @@ -3606,10 +3598,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, "菜单开关" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "在菜单和游戏之间切换显示。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, "退出 (控制器组合)" @@ -3686,10 +3674,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, "暂停" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "切换暂停游戏/继续游戏状态。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "框架进度" @@ -4805,10 +4789,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "按支持的扩展名过滤文件管理器中显示的文件。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "使用内建媒体播放器" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "过滤当前核心支持文件" @@ -4821,6 +4801,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, "在起始目录加载游戏时,于最后打开的位置开启文件浏览器。注:重启全能模拟器后,此位置将重置。" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "使用内建媒体播放器" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "使用内建图像查看器" + ) /* Settings > Frame Throttle */ @@ -5926,10 +5914,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO, "菜单激活时暂停游戏" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "激活菜单后暂停当前运行的游戏。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, "使用保存存档后继续游戏" @@ -6287,10 +6271,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLISTS, "显示「游戏列表」" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "显示「游戏列表」。(在 Ozone/XMB 中需要重启)" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, "显示「探索」页" @@ -6769,14 +6749,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "显示「用户」" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "游戏列表图标" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "要显示的游戏列表图标缩略图类型。" - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "显示「用户」设置。" @@ -7739,10 +7711,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_WITHOUT_CORE_MATCH, "允许扫描还没有安装游戏核心的游戏文件并将其添加到游戏列表中。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SCAN_SERIAL_AND_CRC, - "扫描CRC 是否可能重复" - ) MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_SERIAL_AND_CRC, "ISO有时重复序列,特别是使用 PSP/PSN 标题。仅仅依靠序列有时会导致扫描器将内容放入错误的系统。 这里增加了一个 CRC 检查,虽然大大减慢了扫描速度,但是扫描会更加准确。" @@ -8008,7 +7976,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "文件浏览器" + "开始文件夹" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, @@ -8251,10 +8219,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT, "Steam个人状态格式" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "决定与运行内容相关的信息将共享。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT, @@ -8851,10 +8815,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, "继续" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "退出快捷菜单并继续游戏。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, "重启" @@ -8867,10 +8827,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT, "关闭游戏" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "关闭当前游戏。未保存的进度可能会丢失。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, "截屏" @@ -9003,18 +8959,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_OPTIONS, "核心选项" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "更改当前游戏的核心选项设置。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, "控制" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "更改当前游戏的键位设置。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, "金手指" @@ -9645,10 +9593,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SHADER_WATCH_FOR_CHANGES, "自动对磁盘上的着色器文件进行更改。" ) -MSG_HASH( - MENU_ENUM_LABEL_HELP_SHADER_WATCH_FOR_CHANGES, - "着色器文件进行新的更改。在磁盘上保存更改后,它将自动重新编译并应用到运行的内容。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_REMEMBER_LAST_DIR, "记住上次使用的着色器文件夹" @@ -10786,10 +10730,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_TRANSPARENCY, "透明度" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "当点击“快捷菜单”上的按钮,允许正在运行中的游戏在后台显示。 禁用透明度可能会改变主题的颜色。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, "阴影效果" @@ -11411,6 +11351,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_MIDGAR, "米德加" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "暗灰" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "亮灰" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -11438,6 +11386,31 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "移除主机生产厂商名字之后,播放列表会重新排序。" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "次要缩略图" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "用另一个缩略图替换元数据面板。" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "使用滚动字幕显示内容元数据" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "启用后,列表的游戏元数据项 (绑定核心,游戏时间) 只占用一行文字;超出宽度的文字会滚动显示。禁用后,游戏元数据项静态显示,在到达最大宽度后换行。" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "缩略图缩放倍数" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "缩放缩略图栏的大小。" + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "色彩主题" @@ -11494,30 +11467,7 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_GRAY_LIGHT, "亮灰" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "次要缩略图" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "用另一个缩略图替换元数据面板。" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "使用滚动字幕显示内容元数据" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "启用后,列表的游戏元数据项 (绑定核心,游戏时间) 只占用一行文字;超出宽度的文字会滚动显示。禁用后,游戏元数据项静态显示,在到达最大宽度后换行。" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "缩略图缩放倍数" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "缩放缩略图栏的大小。" - ) + /* MaterialUI: Settings > User Interface > Appearance */ @@ -12478,10 +12428,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_KEYBOARD, "键盘" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "使用内建图像查看器" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, "最大的交换链图像" @@ -12617,14 +12563,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "从列表中选择" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "继续" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "退出菜单并继续游戏。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "查看匹配的 %u 个列表" diff --git a/intl/msg_hash_cht.h b/intl/msg_hash_cht.h index ba2993618ca4..3feb2d083c4c 100644 --- a/intl/msg_hash_cht.h +++ b/intl/msg_hash_cht.h @@ -2856,18 +2856,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_RESPECT_SILENT_MODE, "靜音模式下靜音所有音源" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "快轉時靜音" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, "開啟快轉模式時音量自動設定為靜音。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "快轉時變調" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "開啟快轉模式時音訊變調並加速播放。" @@ -3654,10 +3646,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, "快捷選單" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "執行項目時選單的開關。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, "結束應用程式 (控制器組合鍵)" @@ -3734,10 +3722,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, "暫停" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "暫停模式和繼續遊戲的切換開關。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "逐格播放" @@ -4829,10 +4813,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "在檔案瀏覽器中只顯示支援的檔案。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "使用內建的媒體播放器" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "只顯示目前核心支援格式" @@ -4845,6 +4825,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, "記住本次執行「開始資料夾」最後載入的檔案位置。 注意: 重新啟動後會還原為預設位置。" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "使用內建的媒體播放器" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "使用內建的圖像瀏覽器" + ) /* Settings > Frame Throttle */ @@ -5858,10 +5846,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO, "當開啟選單時暫停核心" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "當開啟快捷選單操作時暫停執行中的項目。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, "操作即時存檔後關閉" @@ -6219,10 +6203,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLISTS, "顯示「列表」" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "顯示一般列表。 (Ozone和XMB主題需要重新啟動)" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, "顯示「搜尋」" @@ -6701,14 +6681,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "顯示「使用者」" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "列表圖示" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "設定列表圖示顯示的類型。" - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "顯示「使用者」選項。" @@ -7671,10 +7643,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_WITHOUT_CORE_MATCH, "開啟時「匯入遊戲」忽略支援核心的資訊, 允許未安裝核心時掃描檔案並建立列表。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SCAN_SERIAL_AND_CRC, - "掃描校驗避免重複" - ) MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_SERIAL_AND_CRC, "ISO映像檔有時會使用重複產品序號, 尤其是PSP和PSN的作品, 僅依靠產品序號掃描檔案, 可能會導致將項目加入到錯誤的系統中。\n開啟時增加了循環冗餘校驗(CRC), 會嚴重降低掃描速度, 但可能會更準確。" @@ -8195,10 +8163,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT, "Steam個人狀態格式" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "設定分享執行中相關的訊息。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT, @@ -8791,10 +8755,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, "繼續" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "繼續執行。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, "重開" @@ -8807,10 +8767,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT, "關閉" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "關閉目前執行的項目。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, "螢幕截圖" @@ -8943,18 +8899,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_OPTIONS, "核心選項" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "變更核心相關的設定。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, "控制器 (核心預設)" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "變更遊戲控制器相關的設定。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, "金手指" @@ -9585,10 +9533,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SHADER_WATCH_FOR_CHANGES, "著色器設定變更時, 自動應用變化, 儲存配置檔到儲存空間。" ) -MSG_HASH( - MENU_ENUM_LABEL_HELP_SHADER_WATCH_FOR_CHANGES, - "著色器設定變更時, 自動應用變化, 儲存配置檔到儲存空間。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_REMEMBER_LAST_DIR, "記住最後載入著色器的位置" @@ -10826,10 +10770,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_TRANSPARENCY, "透明度" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "開啟時選單可顯示執行的內容。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, "陰影效果" @@ -11511,6 +11451,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_MIDGAR, "三原色" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "暗灰色" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "亮灰色" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -11538,6 +11486,31 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "截斷列表名稱開啟時, 連接號之後的文字依字母順序重新排序。" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "次要的預覽縮圖" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "設定次要的預覽縮圖顯示類型, 開啟時覆蓋列表資訊欄並且支援按鍵切換。" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "套用滾動文字到列表資訊欄" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "開啟時列表的資訊欄每個項目只占用一行, 超出欄位的文字使用滾動效果顯示, 關閉時則自動換行顯示。" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "預覽縮圖欄位大小" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "設定預覽縮圖的欄位大小。" + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "自訂選單色彩主題" @@ -11578,10 +11551,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_DRACULA, "德古拉紫" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, - "硒元素灰" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SOLARIZED_DARK, "暗青色" @@ -11603,30 +11572,11 @@ MSG_HASH( "紫雨紫" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "次要的預覽縮圖" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "設定次要的預覽縮圖顯示類型, 開啟時覆蓋列表資訊欄並且支援按鍵切換。" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "套用滾動文字到列表資訊欄" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "開啟時列表的資訊欄每個項目只占用一行, 超出欄位的文字使用滾動效果顯示, 關閉時則自動換行顯示。" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "預覽縮圖欄位大小" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "設定預覽縮圖的欄位大小。" + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, + "硒元素灰" ) + /* MaterialUI: Settings > User Interface > Appearance */ MSG_HASH( @@ -12602,10 +12552,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_KEYBOARD, "鍵盤" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "使用內建的圖像瀏覽器" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, "最大交換鏈結圖像" @@ -12741,14 +12687,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "從列表中選擇" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "繼續" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "繼續執行。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "查看 %u個 搜尋結果列表" diff --git a/intl/msg_hash_cs.h b/intl/msg_hash_cs.h index 81e7d0234da8..bab590a37db8 100644 --- a/intl/msg_hash_cs.h +++ b/intl/msg_hash_cs.h @@ -2740,18 +2740,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_RESPECT_SILENT_MODE, "Ztlumení veškerého zvuku v tichém režimu." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Ztlumení při rychlém převíjení" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, "Automatické ztlumení zvuku při použití rychlého převíjení vpřed." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Zrychlení při rychlém přeposílání" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "Zrychlení zvuku při rychlém převíjení vpřed. Zabraňuje praskání, ale mění výšku tónu." @@ -3510,10 +3502,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, "Přepínač menu" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Přepíná aktuální zobrazení mezi nabídkou a běžícím obsahem." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, "Ukončit (kombo ovladač)" @@ -3590,10 +3578,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, "Pozastavit" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Přepíná spuštěný obsah mezi pozastavenými a nepozastavenými stavy." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Předstih snímku" @@ -4633,10 +4617,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "Filtrování neznámých rozšíření" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Použití vestavěného mediálního přehrávače" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Filtrování podle aktuálního jádra" @@ -4645,6 +4625,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY, "Zapamatovat si naposledy použitý úvodní adresář" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Použití vestavěného mediálního přehrávače" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Použít vestavěný prohlížeč obrázků" + ) /* Settings > Frame Throttle */ @@ -5646,10 +5634,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO, "Pozastavení obsahu když je aktivované menu" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Pozastavení aktuálně spuštěného obsahu, pokud je nabídka aktivní." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, "Obnovení obsahu po použití funkce Uložit pozice" @@ -7640,7 +7624,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Správce souborů" + "Startovací adresář" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_CONFIG_DIRECTORY, @@ -7871,10 +7855,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT, "Formát bohatého prezenčního obsahu" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "Rozhodněte, jaké informace týkající se běžícího obsahu budou sdíleny." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT, @@ -8451,10 +8431,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, "Pokračovat" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Pokračujte v aktuálně spuštěném obsahu a opusťte rychlou nabídku." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, "Restartovat" @@ -8467,10 +8443,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT, "Zavřít obsah" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Zavřít aktuální obsah. Všechny neuložené změny mohou být ztraceny." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, "Pořídit snímek obrazovky" @@ -8603,18 +8575,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_OPTIONS, "Možnosti jádra" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Změna možností aktuálně spuštěného obsahu." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, "Her. ovladače" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Změna ovládacích prvků aktuálně spuštěného obsahu." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, "Cheaty" @@ -9229,10 +9193,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SHADER_WATCH_FOR_CHANGES, "Automatické použití změn provedených v souborech shaderů na disku." ) -MSG_HASH( - MENU_ENUM_LABEL_HELP_SHADER_WATCH_FOR_CHANGES, - "Sledujte soubory shaderů, zda v nich nedošlo k novým změnám. Po uložení změn v shaderu na disk se automaticky překompilují a použijí na spuštěný obsah." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_REMEMBER_LAST_DIR, "Zapamatování naposledy použitého adresáře shaderů" @@ -10374,10 +10334,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_TRANSPARENCY, "Průhlednost" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "Povolení zobrazení spuštěného obsahu na pozadí, když je aktivní rychlá nabídka. Zakázání průhlednosti může změnit barvy motivu." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, "Efekty stínů" @@ -10975,6 +10931,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_ICE_COLD, "Studená ledová" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Tmavě šedá" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Světle šedá" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -10994,6 +10958,31 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "Playlisty budou po odstranění složky výrobce z jejich názvu seřazeny podle abecedy." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "Sekundární miniatura" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "Nahraďte panel metadat obsahu jinou miniaturou." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "Použít text oznámení pro metadata obsahu" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "Je-li tato funkce povolena, každá položka metadat obsahu zobrazená na pravém postranním panelu playlistu (přidružené jádro, čas přehrávání) zabere jeden řádek; řetězce přesahující šířku postranního panelu se zobrazí jako rolovací text. Je-li vypnuta, bude každá položka metadat obsahu zobrazena staticky, zabalená tak, aby zabírala tolik řádků, kolik je potřeba." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Faktor měřítka miniatur" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "Měřítko velikosti panelu miniatur." + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Barevný motiv" @@ -11050,30 +11039,7 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_PURPLE_RAIN, "Fialový déšť" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "Sekundární miniatura" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "Nahraďte panel metadat obsahu jinou miniaturou." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "Použít text oznámení pro metadata obsahu" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "Je-li tato funkce povolena, každá položka metadat obsahu zobrazená na pravém postranním panelu playlistu (přidružené jádro, čas přehrávání) zabere jeden řádek; řetězce přesahující šířku postranního panelu se zobrazí jako rolovací text. Je-li vypnuta, bude každá položka metadat obsahu zobrazena staticky, zabalená tak, aby zabírala tolik řádků, kolik je potřeba." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Faktor měřítka miniatur" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "Měřítko velikosti panelu miniatur." - ) + /* MaterialUI: Settings > User Interface > Appearance */ @@ -12030,10 +11996,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_USER, "Uživatel" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Použít vestavěný prohlížeč obrázků" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, "Max. stabilizace snímku" @@ -12165,14 +12127,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Vybrat z playlistu" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Pokračovat" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Pokračujte v aktuálně spuštěném obsahu a opusťte rychlou nabídku." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "Zobrazit seznam %u shod" diff --git a/intl/msg_hash_cy.h b/intl/msg_hash_cy.h index a8fd2fdba49c..81266e54cf3b 100644 --- a/intl/msg_hash_cy.h +++ b/intl/msg_hash_cy.h @@ -1286,6 +1286,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIRECTORY, "Lawrlwythiadau" ) +MSG_HASH( /* FIXME Not RGUI specific */ + MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, + "Cyfeiriadur Cychwynnol" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_DIRECTORY, "Rhestri Chwarae" @@ -1519,6 +1523,8 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ diff --git a/intl/msg_hash_da.h b/intl/msg_hash_da.h index 75841650b1bb..374fbc98abb5 100644 --- a/intl/msg_hash_da.h +++ b/intl/msg_hash_da.h @@ -1216,7 +1216,7 @@ MSG_HASH( MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Filhåndtering" + "Start Mappe" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_DIRECTORY, @@ -1355,6 +1355,8 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ diff --git a/intl/msg_hash_de.h b/intl/msg_hash_de.h index 64aa61e575f5..e0a52372e558 100644 --- a/intl/msg_hash_de.h +++ b/intl/msg_hash_de.h @@ -2838,7 +2838,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Beim Vorspulen stummschalten" + "Auto-stumm bei schnellem Vorspulen" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, @@ -2846,12 +2846,20 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Beim Vorspulen beschleunigen" + "Audiobeschleunigung bei schnellem Vorspulen" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "Audio beim schnellen Vorlauf beschleunigen. Verhindert Knackgeräusche, verändert aber die Tonhöhe." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_REWIND_MUTE, + "Auto-stumm bei Rückspulen" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_REWIND_MUTE, + "Audio beim Zurückspulen automatisch stumm stellen." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, "Lautstärkeanpassung (dB)" @@ -3660,7 +3668,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Wechselt die aktuelle Anzeige zwischen dem Menü und dem laufenden Inhalt." + "Schaltet die aktuelle Anzeige zwischen Menü und Inhalt um." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, @@ -3736,7 +3744,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Schaltet den Inhalt zwischen pausierten und nicht-pausierten Zuständen um." + "Schaltet den Inhalt zwischen pausiert und nicht-pausiert um." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, @@ -4877,14 +4885,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "Im Dateibrowser nur Dateien mit unterstützten Dateitypen anzeigen." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Eingebauten Mediaplayer verwenden" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Nach aktuellem Core filtern" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_FILTER_BY_CURRENT_CORE, + "Die im Dateibrowser anzuzeigenden Dateien durch aktuellen Core filtern." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY, "Letztes Startverzeichnis merken" @@ -4893,6 +4901,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, "Den Dateibrowser im zuletzt verwendeten Pfad öffnen, wenn Inhalte aus dem Startverzeichnis geladen werden. Hinweis: Der Pfad wird beim Neustart von RetroArch zurückgesetzt." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Eingebauten Mediaplayer verwenden" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Integrierten Bildbetrachter verwenden" + ) /* Settings > Frame Throttle */ @@ -6000,7 +6016,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Den aktuell laufenden Inhalt pausieren, wenn das Menü aktiv ist." + "Pausiert den Inhalt, wenn das Menü aktiv ist." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, @@ -6357,7 +6373,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "Die Wiedergabelisten anzeigen. (Neustart erforderlich bei Ozone/XMB)" + "Wiedergabelisten im Hauptmenü anzeigen. Wird in GLUI ignoriert, wenn Wiedergabelisten und Navigationsleiste aktiviert sind." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLIST_TABS, + "Wiedergabelisten-Tabs anzeigen" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLIST_TABS, + "Wiedergabelisten-Tabs anzeigen. Wirkt sich nicht auf RGUI aus. Navigationsleiste muss in GLUI aktiviert sein. (Neustart erforderlich auf Ozone/XMB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, @@ -6837,14 +6861,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "\"Benutzer\" anzeigen" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "Wiedergabelistensymbole" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "Art des anzuzeigenden Playlist-Symbols." - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "Die \"Benutzer\"-Einstellungen anzeigen." @@ -7797,7 +7813,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SCAN_SERIAL_AND_CRC, - "Prüft CRC auf mögliche Duplikate" + "Per Checksumme auf mögliche Duplikate scannen" ) MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_SERIAL_AND_CRC, @@ -8032,7 +8048,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Dateibrowser" + "Startverzeichnis" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, @@ -8265,7 +8281,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "Entscheiden, welche Informationen zum laufenden Inhalt geteilt werden." + "Festlegen, welche Informationen über den Inhalt geteilt werden sollen." ) MSG_HASH( @@ -8853,7 +8869,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Das Schnellmenü verlassen und den aktuellen Inhalt fortsetzen." + "Den Inhalt fortsetzen und das Schnellmenü verlassen." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, @@ -8869,7 +8885,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Den aktuellen Inhalt schließen. Nicht gespeicherte Änderungen können verloren gehen." + "Den Inhalt schließen. Alle nicht gespeicherte Änderungen können verloren gehen." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, @@ -9005,7 +9021,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Die Einstellungen für die aktuell laufende Anwendung ändern." + "Die Optionen für den Inhalt ändern." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, @@ -9013,7 +9029,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Die Steuerung für den aktuell laufenden Inhalt ändern." + "Die Steuerung für den Inhalt ändern." ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_CHEAT_OPTIONS, @@ -9619,7 +9635,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_HELP_SHADER_WATCH_FOR_CHANGES, - "Shaderdateien auf Änderungen überwachen. Nach dem Speichern von Änderungen an einem Shader wird dieser automatisch neu kompiliert und auf den laufenden Inhalt angewendet." + "Shaderdateien auf neue Änderungen beobachten. Nach dem Speichern von Änderungen an einem Shader auf den Datenträger, wird dieser automatisch neu kompiliert und auf den Inhalt angewendet." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_REMEMBER_LAST_DIR, @@ -10804,7 +10820,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "Laufende Inhalte im Hintergrund anzeigen, während das Schnellmenü aktiv ist. Das Deaktivieren der Transparenz kann die Farben des Designs verändern." + "Die Hintergrundanzeige des Inhalts aktivieren, wenn das Schnellmenü aktiv ist. Das Deaktivieren der Transparenz kann die Farben des Themas verändern." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, @@ -11096,6 +11112,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS, "Art des Vorschaubildes, das auf der linken Seite gezeigt werden soll." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, + "Symbolminiaturbild" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, + "Art des anzuzeigenden Miniaturbildes für die Wiedergabeliste." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER, "Dynamisches Hintergrundbild" @@ -11355,6 +11379,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_ICE_COLD, "Eiskalt" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Dunkelgrau" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Hellgrau" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -11382,6 +11414,31 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "Wiedergabelisten werden in alphabetischer Reihenfolge neu sortiert, nachdem die Herstellerkomponente ihrer Namen entfernt wurde." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "Sekundäres Vorschaubild" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "Das Inhaltsmetadatenfenster durch ein zusätzliches Vorschaubild ersetzen." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "Lauftext für Inhaltsmetadaten verwenden" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "Wenn aktiviert, belegen alle Inhaltsmetadaten in der rechten Seitenleiste der Wiedergabelisten (zugeordneter Core, Spielzeit) eine einzelne Zeile. Text, der die Breite der Seitenleiste überschreitet, wird als Lauftext angezeigt. Wenn deaktiviert, werden alle Inhaltsmetadaten statisch angezeigt und so umbrochen, dass sie so viele Zeilen wie erforderlich belegen." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Vorschaubilder-Skalierungsfaktor" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "Vorschaubilderleiste skalieren." + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Farbschema" @@ -11430,30 +11487,7 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_PURPLE_RAIN, "Violetter Regen" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "Sekundäres Vorschaubild" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "Das Inhaltsmetadatenfenster durch ein zusätzliches Vorschaubild ersetzen." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "Lauftext für Inhaltsmetadaten verwenden" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "Wenn aktiviert, belegen alle Inhaltsmetadaten in der rechten Seitenleiste der Wiedergabelisten (zugeordneter Core, Spielzeit) eine einzelne Zeile. Text, der die Breite der Seitenleiste überschreitet, wird als Lauftext angezeigt. Wenn deaktiviert, werden alle Inhaltsmetadaten statisch angezeigt und so umbrochen, dass sie so viele Zeilen wie erforderlich belegen." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Vorschaubilder-Skalierungsfaktor" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "Vorschaubilderleiste skalieren." - ) + /* MaterialUI: Settings > User Interface > Appearance */ @@ -12342,10 +12376,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_KEYBOARD, "Tastatur" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Integrierten Bildbetrachter verwenden" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, "Maximale Anzahl von Zwischenbildern" @@ -12469,14 +12499,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Wähle aus Wiedergabenliste" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Fortsetzen" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Das Schnellmenü verlassen und den aktuellen Inhalt fortsetzen." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "Liste von %u Treffern ansehen" @@ -15526,4 +15548,12 @@ MSG_HASH( "Fehlerinformation anzeigen" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_GAME_AI, + "„Spiel-KI“ anzeigen" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_GAME_AI, + "Die Option „Spiel-KI“ anzeigen." + ) #endif \ No newline at end of file diff --git a/intl/msg_hash_el.h b/intl/msg_hash_el.h index 4b60c8c01b39..210b1ce2b1c3 100644 --- a/intl/msg_hash_el.h +++ b/intl/msg_hash_el.h @@ -2330,10 +2330,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, "Επιστροφή" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Εναλλάσσει εκτελούμενο περιεχόμενο μεταξύ καταστάσεων σε παύση και μη παύση." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, @@ -2705,13 +2701,17 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "Φιλτράρισμα άγνωστων επεκτάσεων" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, + "Φιλτράρισμα με βάση τον τρέχων πυρήνα" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, "Χρήση Ενσωματωμένου Αναπαραγωγέα Πολυμέσων Use Builtin Media Player" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, - "Φιλτράρισμα με βάση τον τρέχων πυρήνα" + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Χρήση Ενσωματωμένου Προβολέα Εικόνων" ) /* Settings > Frame Throttle */ @@ -3352,7 +3352,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Περιηγητής Αρχείων" + "Ευρετήριο έναρξης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LIBRETRO_INFO_PATH, @@ -3667,10 +3667,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, "Συνέχιση" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Συνέχιση εκτέλεσης του τρέχοντος περιεχομένου και έξοδος από το Γρήγορο Μενού." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, "Επανεκκίνηση" @@ -3743,18 +3739,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_OPTIONS, "Επιλογές Πυρήνα" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Αλλαγή επιλογών για το τρέχον εκτελούμενο περιεχόμενο." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, "Χειρισμοί" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Αλλαγή χειρισμών για το τρέχον εκτελούμενο περιεχόμενο." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, "Απάτες" @@ -4571,6 +4559,8 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ MSG_HASH( @@ -4990,10 +4980,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_USER, "Χρήστης" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Χρήση Ενσωματωμένου Προβολέα Εικόνων" - ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_WAITABLE_SWAPCHAINS, "Σκληρός συγχρονισμός επεξεργαστή και κάρτας γραφικών. Μειώνει την καθυστέρηση με τίμημα την επίδοση." @@ -5045,14 +5031,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_ASPECT, "Εξαναγκασμένη αναλογία απεικόνισης" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Συνέχιση" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Συνέχιση εκτέλεσης του τρέχοντος περιεχομένου και έξοδος από το Γρήγορο Μενού." - ) MSG_HASH( /* FIXME Still exists in a comment about being removed */ MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_FOOTER_OPACITY, "Αδιαφάνεια Υποσέλιδου" diff --git a/intl/msg_hash_en.h b/intl/msg_hash_en.h index 197dcc1373db..09890e08acb6 100644 --- a/intl/msg_hash_en.h +++ b/intl/msg_hash_en.h @@ -1636,7 +1636,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "Enable background display of running content while Quick Menu is active. Disabling transparency may alter theme colours." + "Enable background display of content while Quick Menu is active. Disabling transparency may alter theme colours." ) /* RGUI: Settings Options */ @@ -1723,9 +1723,18 @@ MSG_HASH( /* XMB: Settings Options */ +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Grey Dark" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Grey Light" + ) /* Ozone: Settings > User Interface > Appearance */ + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Colour Theme" @@ -1751,6 +1760,7 @@ MSG_HASH( "Grey Light" ) + /* MaterialUI: Settings > User Interface > Appearance */ MSG_HASH( diff --git a/intl/msg_hash_eo.h b/intl/msg_hash_eo.h index 059c58917476..9b04532924f0 100644 --- a/intl/msg_hash_eo.h +++ b/intl/msg_hash_eo.h @@ -1039,6 +1039,8 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ diff --git a/intl/msg_hash_es.h b/intl/msg_hash_es.h index cbbab40ead9c..6fb193684d65 100644 --- a/intl/msg_hash_es.h +++ b/intl/msg_hash_es.h @@ -2052,7 +2052,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_HELP_VIDEO_SHADER_SUBFRAMES, - "Inserta fotogramas adicionales entre fotogramas para cualquier efecto shader que esté diseñado para ejecutarse más rápido que la velocidad del contenido. Solo use la opción designada para la frecuencia de actualización de la pantalla actual. No debe usarse en frecuencias de actualización que no sean múltiplos de 60 Hz, como 144 Hz, 165 Hz, etc. No combine con Intervalo de intercambio superior a 1, BFI, Retraso de fotogramas o Sincronizar con la velocidad de fotogramas exacta del contenid[...]" + "Introduce uno o varios fotogramas adicionales para cualquier efecto de shaders pensado para una velocidad de actualización superior a la del contenido. Utiliza únicamente la opción designada para la frecuencia de actualización actual de tu monitor. No se debe utilizar con frecuencias que no sean múltiplos de 60 Hz, como 144 Hz, 165 Hz, etc. No combinar con un intervalo de intercambio de VSync superior a 1, con inserción de fotogramas negros, con el retraso de fotogramas o con Sincroniza[...]" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_SUBFRAMES_VALUE_120, @@ -2797,7 +2797,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_FRAME_DELAY_AUTO, - "Ajusta el 'Retraso de fotogramas' efectivo de forma dinámica." + "Ajusta el retraso de fotogramas real de forma dinámica." ) MSG_HASH( MENU_ENUM_LABEL_HELP_VIDEO_FRAME_DELAY_AUTO, @@ -2926,7 +2926,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Silenciar sonido al usar el avance rápido" + "Silenciar audio durante el avance rápido" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, @@ -2934,12 +2934,20 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Acelerar al usar el avance rápido" + "Acelerar audio durante el avance rápido" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "Acelera el audio al usar el avance rápido. Evitará los chasquidos en el audio, pero cambiará su tono." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_REWIND_MUTE, + "Silenciar audio durante el rebobinado" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_REWIND_MUTE, + "Silencia automáticamente el audio al utilizar la función de rebobinado." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, "Ganancia de volumen (dB)" @@ -3756,7 +3764,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Muestra el menú o el contenido en ejecución." + "Muestra el menú o el contenido." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, @@ -3836,7 +3844,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Pone el contenido en ejecución en pausa o la desactiva." + "Pausa o reanuda el contenido." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, @@ -4985,14 +4993,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "Muestra en el explorador de archivos únicamente a aquellos archivos que tengan extensiones conocidas." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Usar visor de medios integrado" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Filtrar por núcleo actual" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_FILTER_BY_CURRENT_CORE, + "Muestra en el explorador de archivos únicamente los archivos relacionados con el núcleo actual." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY, "Recordar el último directorio usado" @@ -5001,6 +5009,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, "Abre el explorador de archivos en el último directorio usado al cargar contenidos desde el directorio inicial. Nota: la posición volverá a su valor predeterminado al reiniciar RetroArch." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Usar visor de medios integrado" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Usar visor de imágenes integrado" + ) /* Settings > Frame Throttle */ @@ -6112,7 +6128,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Si el menú es activado, pausará el contenido que se esté ejecutando." + "Pausa el contenido si el menú está activo." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, @@ -6473,7 +6489,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "Muestra las listas de reproducción (es necesario reiniciar en Ozone/XMB)." + "Muestra las listas de reproducción en el menú principal. Se ignorará esta opción en GLUI si se activan las secciones de la lista de reproducción y la barra de navegación." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLIST_TABS, + "Mostrar secciones de listas de reproducción" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLIST_TABS, + "Muestra las secciones de las listas de reproducción. No afecta a RGUI. Es necesario activar la barra de navegación en GLUI (es necesario reiniciar en Ozone/XMB)." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, @@ -6953,14 +6977,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "Mostrar Usuario" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "Iconos de las listas de reproducción" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "El tipo de miniatura que se mostrará como icono de las listas de reproducción." - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "Muestra los ajustes de usuario." @@ -8184,7 +8200,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Explorador de archivos" + "Directorio inicial" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, @@ -8429,7 +8445,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "Decide la información que se compartirá de los contenidos que ejecutes." + "Decide la información que se compartirá de los contenidos." ) MSG_HASH( @@ -9029,7 +9045,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Reanuda el contenido ejecutado y abandona el menú rápido." + "Reanuda el contenido y abandona el menú rápido." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, @@ -9045,7 +9061,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Cierra el contenido actual. Se perderá cualquier progreso no guardado." + "Cierra el contenido. Se perderá cualquier progreso no guardado." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, @@ -9181,7 +9197,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Cambia las opciones del contenido cargado." + "Cambia las opciones del contenido." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, @@ -9189,7 +9205,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Cambia los controles del contenido cargado." + "Cambia los controles del contenido." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, @@ -9811,7 +9827,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_HELP_SHADER_WATCH_FOR_CHANGES, - "Busca cambios en los archivos de shaders. Una vez hayas guardado los cambios de un shader del disco, el shader se recompilará automáticamente y se aplicará al contenido ejecutado." + "Busca cambios en los archivos de shaders. Una vez hayas guardado los cambios de un shader del disco, el shader se recompilará automáticamente y se aplicará al contenido." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_REMEMBER_LAST_DIR, @@ -10996,7 +11012,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "Muestra el contenido ejecutado en el fondo del menú rápido. Desactivar la transparencia podría alterar los colores del tema." + "Muestra el contenido en el fondo del menú rápido. Desactivar la transparencia podría alterar los colores del tema." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, @@ -11320,6 +11336,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS, "Indica el tipo de miniatura que se mostrará en la parte izquierda de la pantalla." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, + "Miniatura de icono" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, + "El tipo de miniatura que se mostrará como icono de las listas de reproducción." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER, "Fondo dinámico" @@ -11599,6 +11623,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_ICE_COLD, "Gélido" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Gris oscuro" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Gris claro" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -11626,6 +11658,31 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "Reordena las listas de reproducción por orden alfabético quitando la parte del fabricante de sus nombres." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "Miniatura secundaria" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "Sustituye el panel de metadatos por otra miniatura." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "Mostrar metadatos de contenidos en movimiento" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "Si se activa esta opción, cada uno de los elementos de los metadatos de un contenido que se muestren en la barra derecha de las listas de reproducción (núcleo asociado, tiempo de juego...) ocupará únicamente una línea, y las cadenas que superen el ancho disponible se desplazarán automáticamente. Al desactivarla, cada elemento de los metadatos se mostrará de forma estática, ocupando las líneas que sean necesarias." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Factor de escala de miniaturas" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "Cambia el tamaño de la barra de miniaturas." + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Tema de colores" @@ -11658,10 +11715,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_DRACULA, "Drácula" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, - "Selenio" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SOLARIZED_DARK, "Solarized (oscuro)" @@ -11683,30 +11736,11 @@ MSG_HASH( "Lluvia violeta" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "Miniatura secundaria" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "Sustituye el panel de metadatos por otra miniatura." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "Mostrar metadatos de contenidos en movimiento" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "Si se activa esta opción, cada uno de los elementos de los metadatos de un contenido que se muestren en la barra derecha de las listas de reproducción (núcleo asociado, tiempo de juego...) ocupará únicamente una línea, y las cadenas que superen el ancho disponible se desplazarán automáticamente. Al desactivarla, cada elemento de los metadatos se mostrará de forma estática, ocupando las líneas que sean necesarias." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Factor de escala de miniaturas" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "Cambia el tamaño de la barra de miniaturas." + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, + "Selenio" ) + /* MaterialUI: Settings > User Interface > Appearance */ MSG_HASH( @@ -12662,10 +12696,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_KEYBOARD, "Teclado" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Usar visor de imágenes integrado" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, "Máximo de imágenes en swap chain" @@ -12801,14 +12831,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Seleccionar de una lista de reproducción" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Reanudar" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Reanuda el contenido actual y abandona el menú rápido." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "Ver lista de %u coincidencias" diff --git a/intl/msg_hash_fa.h b/intl/msg_hash_fa.h index 35aa4f274e04..1fd0692d3a03 100644 --- a/intl/msg_hash_fa.h +++ b/intl/msg_hash_fa.h @@ -2092,10 +2092,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_MIXER_MUTE, "صدای ترکیب‌کننده را ساکت کنید." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "ساکت کردن در زمان جلو کشیدن تصویر" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_DSP_PLUGIN, "افزونهٔ DSP" @@ -2972,7 +2968,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "مرورگر فایل" + "مسیر شروع" ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_DATABASE_DIRECTORY, @@ -3531,6 +3527,8 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ @@ -3673,10 +3671,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RECORD_USE_OUTPUT_DIRECTORY, "ذخیرهٔ ضبط‌ها در پوشهٔ خروجی" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "ادامه" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE, "بازی تحت شبکه" diff --git a/intl/msg_hash_fi.h b/intl/msg_hash_fi.h index 95200df31092..65bdd43aed92 100644 --- a/intl/msg_hash_fi.h +++ b/intl/msg_hash_fi.h @@ -2656,18 +2656,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_RESPECT_SILENT_MODE, "Mykistä kaikki äänet äänettömässä tilassa." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Mykistä pikakelattaessa" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, "Mykistä ääni automaattisesti, kun pikakelaus on käytössä." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Nopeuta pikakelattaessa" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "Nopeuta ääni pikakelatessa. Estää säröilyä, mutta nostaa taajuutta." @@ -3326,10 +3318,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, "Valikon vaihto" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Vaihtaa valikon ja käynnissä olevan sisällön välillä nykyisellä näytöllä." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, "Lopeta (näppäin yhdistelmä)" @@ -3402,10 +3390,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, "Keskeytä" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Vaihtaa käynnissä olevan sisällön keskeytyksen päälle tai pois." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Seuraava kuva" @@ -4361,10 +4345,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "Suodata tiedostoja tiedostoselaimessa tuettujen tiedostopäätteiden mukaan." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Käytä sisäänrakennettua mediasoitinta" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Suodata nykyisen ytimen mukaan" @@ -4377,6 +4357,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, "Avaa tiedostoselain viimeksi käytetyssä sijainnissa, kun lataat sisältöä aloitushakemistosta. Huom: sijainti palautetaan oletusarvoon RetroArchin uudelleenkäynnistyessä." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Käytä sisäänrakennettua mediasoitinta" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Käytä sisäänrakennettua kuvankatselinta" + ) /* Settings > Frame Throttle */ @@ -5254,10 +5242,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO, "Keskeytä sisältö kun valikko on aktiivisena" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Keskeytä käynnissä oleva sisältö, jos valikko on aktiivinen." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, "Jatka sisältöä tilatallennusten käyttämisen jälkeen" @@ -6029,10 +6013,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "Näytä \"Käyttäjä\"" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "Soittolistan kuvakkeet" - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "Näytä \"Käyttäjä\"-asetukset." @@ -7116,7 +7096,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Tiedostoselain" + "Aloituskansio" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_CONFIG_DIRECTORY, @@ -7931,10 +7911,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, "Jatka" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Jatka käynnissä olevaa sisältöä ja poistu pikavalikosta." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, "Käynnistä uudelleen" @@ -7947,10 +7923,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT, "Sulje sisältö" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Sulje nykyinen sisältö. Tallentamattomat muutokset saattavat kadota." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, "Ota kuvakaappaus" @@ -8083,18 +8055,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_OPTIONS, "Ytimen asetukset" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Muuta käynnissä olevan sisällön asetuksia." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, "Ohjaus" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Muuta käynnissä olevan sisällön ohjausasetuksia." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, "Huijauskoodit" @@ -9830,10 +9794,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_TRANSPARENCY, "Läpinäkyvyys" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "Ota käyttöön sisällön taustanäyttö, kun pikavalikko on aktiivisena. Läpinäkyvyyden poistaminen voi muuttaa teeman värejä." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, "Varjotehosteet" @@ -10407,6 +10367,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_ICE_COLD, "Jäänkylmä" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Tumman harmaa" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Vaalean harmaa" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -10426,6 +10394,31 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "Soittolistat järjestetään uudelleen aakkosjärjestykseen sen jälkeen, kun valmistajan nimi soittolistojen nimistä on poistettu." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "Toissijainen esikatselukuva" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "Korvaa sisällön metatieto toisella esikatselukuvalla." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "Käytä tekstinauhaa sisällön metatietoon" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "Kun käytössä, soittolistojen oikean sivun metatietojen jokainen kohde (liitetty ydin, toistoaika) on yhdellä rivillä; merkkijonot, jotka ylittävät sivupalkin leveyden, näytetään vieritettävänä tekstinauhana. Kun pois päältä, kaikki sisällön metatiedot näytetään kiinteästi rivitettynä niin monella riville kuin tarvitaan." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Esikatselukuvan skaalauskerroin" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "Skaalaa esikatselukuvien palkin koko." + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Väriteema" @@ -10482,30 +10475,7 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_PURPLE_RAIN, "Violetti sade" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "Toissijainen esikatselukuva" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "Korvaa sisällön metatieto toisella esikatselukuvalla." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "Käytä tekstinauhaa sisällön metatietoon" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "Kun käytössä, soittolistojen oikean sivun metatietojen jokainen kohde (liitetty ydin, toistoaika) on yhdellä rivillä; merkkijonot, jotka ylittävät sivupalkin leveyden, näytetään vieritettävänä tekstinauhana. Kun pois päältä, kaikki sisällön metatiedot näytetään kiinteästi rivitettynä niin monella riville kuin tarvitaan." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Esikatselukuvan skaalauskerroin" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "Skaalaa esikatselukuvien palkin koko." - ) + /* MaterialUI: Settings > User Interface > Appearance */ @@ -11458,10 +11428,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_KEYBOARD, "Näp" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Käytä sisäänrakennettua kuvankatselinta" - ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_MAX_SWAPCHAIN_IMAGES, "Määrää videoajurin käyttämään yksiselitteisesti määritettyä puskurointitilaa." @@ -11581,14 +11547,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Valitse soittolistalta" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Jatka" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Jatka käynnissä olevaa sisältöä ja poistu pikavalikosta." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "Näytä luettelo %u vastaavuuksista" diff --git a/intl/msg_hash_fr.h b/intl/msg_hash_fr.h index 1592cfbb2bf5..e2ed565c17e7 100644 --- a/intl/msg_hash_fr.h +++ b/intl/msg_hash_fr.h @@ -1112,7 +1112,7 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_HELP_CONTROLS, - "Contrôles de base du menu" + "Touches de base du menu" ) /* Main Menu > Help > Basic Menu Controls */ @@ -2894,7 +2894,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Couper le son lors de l'avance rapide" + "Couper le son pour l'avance rapide" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, @@ -2902,12 +2902,20 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Accélération lors de l'avance rapide" + "Accélérer le son pour l'avance rapide" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "Accélérer l'audio lors de l'avance rapide. Empêche les crépitents audio mais réhausse le pitch." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_REWIND_MUTE, + "Couper le son pour le rembobinage" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_REWIND_MUTE, + "Coupe automatiquement le son lors du rembobinage." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, "Gain de volume (dB)" @@ -3716,7 +3724,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Bascule l'affichage actuel entre le menu et l'exécution de contenu." + "Bascule l'affichage actuel entre le menu et le contenu." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, @@ -3796,7 +3804,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Met en pause/reprend le contenu en cours d'exécution." + "Met en pause/reprend le contenu." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, @@ -4945,14 +4953,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "Filtrer les fichiers affichés dans le navigateur de fichiers selon les extensions prises en charge." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Utiliser le lecteur média intégré" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Filtrer par cœur actif" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_FILTER_BY_CURRENT_CORE, + "Filtrer les fichiers affichés dans le navigateur de fichiers selon le cœur actuel." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY, "Recharger le dernier dossier de démarrage utilisé" @@ -4961,6 +4969,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, "Ouvrir le navigateur de fichiers au dernier emplacement utilisé lors du chargement du contenu depuis le dossier de démarrage. Remarque : L'emplacement sera réinitialisé par défaut au redémarrage de RetroArch." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Utiliser le lecteur média intégré" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Utiliser le lecteur d'images intégré" + ) /* Settings > Frame Throttle */ @@ -6076,7 +6092,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Mettre en pause le contenu en cours d'exécution si le menu est actif." + "Met en pause le contenu si le menu est actif." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, @@ -6433,7 +6449,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "Afficher les listes de lecture. (Redémarrage requis sur Ozone/XMB)" + "Afficher les listes de lecture dans le menu principal. Option ignorée dans GLUI si les onglets de liste de lecture et la barre de navigation sont activés." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLIST_TABS, + "Afficher les onglets de liste de lecture" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLIST_TABS, + "Afficher les onglets de liste de lecture. Cela n'affecte pas RGUI. La barre de navigation doit être activée dans GLUI. (Redémarrage requis pour Ozone/XMB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, @@ -6913,14 +6937,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "Afficher 'Utilisateur'" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "Icônes dans la liste de lecture" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "Type de miniature pour l'icône dans la liste de lecture à afficher." - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "Afficher les réglages pour 'Utilisateur'." @@ -8140,7 +8156,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Navigateur de fichiers " + "Dossier de démarrage" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, @@ -8385,7 +8401,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "Décidez quelles informations relatives au contenu en cours d'exécution seront partagées." + "Décidez quelles informations relatives au contenu seront partagées." ) MSG_HASH( @@ -8981,7 +8997,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Reprendre le contenu en cours et quitter le menu rapide." + "Reprendre le contenu et quitter le menu rapide." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, @@ -8997,7 +9013,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Fermer le contenu actuel. Toute modification non enregistrée pourrait être perdue." + "Fermer le contenu. Toute modification non enregistrée pourrait être perdue." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, @@ -9133,7 +9149,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Modifier les options pour le contenu en cours d'exécution." + "Modifier les options pour le contenu." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, @@ -9141,7 +9157,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Modifier les contrôles pour le contenu en cours d'exécution." + "Modifier les touches pour le contenu." ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_CHEAT_OPTIONS, @@ -9747,7 +9763,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_HELP_SHADER_WATCH_FOR_CHANGES, - "Verifie les changements dans les fichiers de shaders. Après avoir enregistré les modifications à un shader sur le disque, il sera automatiquement recompilé et appliqué au contenu en cours d'exécution." + "Verifie les changements dans les fichiers de shaders. Après avoir enregistré les modifications à un shader sur le disque, il sera automatiquement recompilé et appliqué au contenu." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_REMEMBER_LAST_DIR, @@ -10960,7 +10976,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "Activer l'affichage en arrière-plan du contenu en cours d'exécution lorsque le Menu rapide est actif. Désactiver la transparence peut modifier les couleurs du thème." + "Activer l'affichage en arrière-plan du contenu lorsque le Menu rapide est actif. Désactiver la transparence peut modifier les couleurs du thème." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, @@ -11292,6 +11308,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS, "Type de miniatures à afficher à gauche." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, + "Miniature icône" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, + "Type de miniature pour l'icône dans la liste de lecture à afficher." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER, "Arrière-plan dynamique" @@ -11575,6 +11599,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_ICE_COLD, "Glacial" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Gris foncé" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Gris clair" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -11602,6 +11634,31 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "Les listes de lecture seront re-triées par ordre alphabétique après avoir supprimé le composant fabricant de leurs noms." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "Miniature secondaire" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "Remplace le panneau des métadonnées du contenu par une autre miniature." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "Utiliser le défilement de texte pour les métadonnées du contenu" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "Si activée, cette option affichera chaque élément de métadonnées du contenu sur la barre latérale droite des listes de lectures (cœur associé, temps de jeu) sur une seule ligne; défilant si le texte est trop long pour la barre latérale. Si désactivée, chaque élément de métadonnées sera affiché statiquement, allant à la ligne si besoin." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Facteur de mise à l'échelle des miniatures " + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "Mettre à l'échelle la taille de la barre des miniatures." + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Thème de couleurs" @@ -11634,10 +11691,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_TWILIGHT_ZONE, "Quatrième dimension (Twilight Zone)" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, - "Sélénium" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SOLARIZED_DARK, "Solarisé sombre" @@ -11659,30 +11712,11 @@ MSG_HASH( "Purple rain" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "Miniature secondaire" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "Remplace le panneau des métadonnées du contenu par une autre miniature." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "Utiliser le défilement de texte pour les métadonnées du contenu" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "Si activée, cette option affichera chaque élément de métadonnées du contenu sur la barre latérale droite des listes de lectures (cœur associé, temps de jeu) sur une seule ligne; défilant si le texte est trop long pour la barre latérale. Si désactivée, chaque élément de métadonnées sera affiché statiquement, allant à la ligne si besoin." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Facteur de mise à l'échelle des miniatures " - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "Mettre à l'échelle la taille de la barre des miniatures." + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, + "Sélénium" ) + /* MaterialUI: Settings > User Interface > Appearance */ MSG_HASH( @@ -12626,10 +12660,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_KEYBOARD, "Clavier" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Utiliser le lecteur d'images intégré" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, "Nombre d'images max en mémoire tampon " @@ -12765,14 +12795,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Sélectionner depuis une liste de lecture" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Reprendre" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Reprendre le contenu en cours et quitter le menu rapide." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "Voir la liste des %u correspondances" diff --git a/intl/msg_hash_gl.h b/intl/msg_hash_gl.h index efbe555e6673..8424955c5305 100644 --- a/intl/msg_hash_gl.h +++ b/intl/msg_hash_gl.h @@ -2896,18 +2896,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_RESPECT_SILENT_MODE, "Acala todo o audio en modo silencioso." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Acalar ao avanzar rápido" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, "Acalar automaticamente o audio ao utilizar o avance rápido." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Acelerar ao avanzar rápido" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "Acelera o audio ao avanzar rápido. Evita crepitar pero cambia de ton." @@ -3702,10 +3694,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, "Alternar menú" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Cambia a visualización actual entre menú e contido en execución." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, "Saír (Combo de controlador)" @@ -3782,10 +3770,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, "En pausa" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Cambia o contido en execución entre estados en pausa e non pausa." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Avance de Fotograma" @@ -4925,10 +4909,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "Filtra os ficheiros que se mostran no Explorador de ficheiros polas extensións compatibles." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Usa o reprodutor multimedia integrado" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Filtrar por núcleo actual" @@ -4941,6 +4921,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, "Abre o explorador de ficheiros na última localización utilizada ao cargar contido do directorio de inicio. Nota: a localización restablecerase ao valor predeterminado ao reiniciar RetroArch." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Usa o reprodutor multimedia integrado" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Use o visor de imaxes integrado" + ) /* Settings > Frame Throttle */ @@ -6026,10 +6014,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO, "Pausa o contido cando o menú estea activo" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Pausa o contido en execución se o menú está activo." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, "Retomar o contido despois de usar os estados de gardar" @@ -6363,10 +6347,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLISTS, "Mostrar \"Listas de reprodución\"" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "Mostra as listas de reprodución. (Requírese reiniciar en Ozone/XMB)" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, "Mostrar \"Explorar\"" @@ -6837,14 +6817,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "Mostrar \"Usuario\"" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "Iconas de listas de reprodución" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "Tipo de miniatura da icona da lista de reprodución a amosar." - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "Mostrar a configuración de \"Usuario\"." @@ -7799,10 +7771,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_WITHOUT_CORE_MATCH, "Permitir que o contido sexa dixitalizado e engadido a unha lista de reprodución sen un núcleo instalado que o admita." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SCAN_SERIAL_AND_CRC, - "A exploración verifica CRC sobre posibles duplicados" - ) MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_SERIAL_AND_CRC, "Ás veces, as ISO duplican series, especialmente con títulos de PSP/PSN. Confiar só no serial ás veces pode facer que o escáner poña contido no sistema incorrecto. Isto engade unha comprobación CRC, que ralentiza considerablemente a exploración, pero pode ser máis precisa." @@ -8060,7 +8028,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Explorador de ficheiros" + "Directorio inicial" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, @@ -8303,10 +8271,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT, "Formato de contido enriquecido Presente" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "Decida que información relacionada co contido en execución se compartirá." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT, @@ -8903,10 +8867,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, "Retomar" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Retoma o contido en execución e sae do menú rápido." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, "Reiniciar" @@ -8919,10 +8879,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT, "Pechar contido" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Pecha o contido actual. É posible que se perdan os cambios non gardados." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, "Facer captura de pantalla" @@ -9055,18 +9011,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_OPTIONS, "Opcións do Núcleo" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Cambia as opcións do contido en execución." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, "Controis" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Cambia os controis do contido en execución." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, "Trucos" @@ -9685,10 +9633,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SHADER_WATCH_FOR_CHANGES, "Aplicar automaticamente os cambios feitos aos ficheiros de sombreadores no disco." ) -MSG_HASH( - MENU_ENUM_LABEL_HELP_SHADER_WATCH_FOR_CHANGES, - "Observa os ficheiros do sombreador para ver novos cambios. Despois de gardar os cambios nun sombreador no disco, recompilarase automaticamente e aplicarase ao contido en execución." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_REMEMBER_LAST_DIR, "Lembra o último directorio de Sombreadores usado" @@ -10826,10 +10770,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_TRANSPARENCY, "Transparencia" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "Activa a visualización en segundo plano do contido en execución mentres o menú rápido está activo. A desactivación da transparencia pode alterar as cores do tema." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, "Efectos de sombra" @@ -11435,6 +11375,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_ICE_COLD, "Xeo frío" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Gris Escuro" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Gris Claro" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -11462,6 +11410,31 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "As listas de reprodución volveranse ordenar por orde alfabética despois de eliminar o compoñente do fabricante dos seus nomes." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "Miniatura secundaria" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "Substitúe o panel de metadatos do contido por outra miniatura." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "Usa o texto do ticker para os metadatos do contido" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "Cando está activado, cada elemento de metadatos de contido que se mostra na barra lateral dereita das listas de reprodución (núcleo asociado, tempo de reprodución) ocupará unha única liña; as cadeas que superen o ancho da barra lateral mostraranse como texto de desprazamento. Cando estea desactivado, cada elemento de metadatos de contido mostrarase de forma estática, envolto para ocupar tantas liñas como sexa necesario." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Factor de escala de miniaturas" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "Escala o tamaño da barra de miniaturas." + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Cor do tema" @@ -11514,30 +11487,7 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_PURPLE_RAIN, "Choiva Morada" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "Miniatura secundaria" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "Substitúe o panel de metadatos do contido por outra miniatura." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "Usa o texto do ticker para os metadatos do contido" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "Cando está activado, cada elemento de metadatos de contido que se mostra na barra lateral dereita das listas de reprodución (núcleo asociado, tempo de reprodución) ocupará unha única liña; as cadeas que superen o ancho da barra lateral mostraranse como texto de desprazamento. Cando estea desactivado, cada elemento de metadatos de contido mostrarase de forma estática, envolto para ocupar tantas liñas como sexa necesario." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Factor de escala de miniaturas" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "Escala o tamaño da barra de miniaturas." - ) + /* MaterialUI: Settings > User Interface > Appearance */ @@ -12498,10 +12448,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_USER, "Usuario" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Use o visor de imaxes integrado" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, "Max Swapchain Imaxes" @@ -12637,14 +12583,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Selecciona dunha lista de reprodución" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Retomar" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Retoma o contido en execución e sae do menú rápido." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "Ver a lista de %u coincidencias" diff --git a/intl/msg_hash_he.h b/intl/msg_hash_he.h index 4a892a32b77d..d3cbf3d2f81d 100644 --- a/intl/msg_hash_he.h +++ b/intl/msg_hash_he.h @@ -1576,7 +1576,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "סייר קבצים" + "תיקיית ההתחלה" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_DIRECTORY, @@ -1735,6 +1735,8 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ diff --git a/intl/msg_hash_hr.h b/intl/msg_hash_hr.h index 47212ec322fb..1e043c1a84ed 100644 --- a/intl/msg_hash_hr.h +++ b/intl/msg_hash_hr.h @@ -1268,7 +1268,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Preglednik datoteka" + "Početna mapa" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_DIRECTORY, @@ -1491,6 +1491,8 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ diff --git a/intl/msg_hash_hu.h b/intl/msg_hash_hu.h index 47898feabc23..b93c81970111 100644 --- a/intl/msg_hash_hu.h +++ b/intl/msg_hash_hu.h @@ -2912,18 +2912,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_RESPECT_SILENT_MODE, "Minden hang letiltása Csendes módban." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Hang kikapcsolása gyorsításkor" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, "A hang automatikus elnémítása gyorsításkor." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Hang gyorsított lejátszása gyorsításkor" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "A hang gyorsított lejátszása gyorsításkor. Megakadályozza a recsegést, de megemeli a hangmagasságot." @@ -3746,10 +3738,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, "Menü váltógomb" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "A menü és a futó tartalom megjelenítése közt vált." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, "Kontroller kombináció a kilépéshez" @@ -3826,10 +3814,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, "Szünet" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Váltás a futó tartalom megállítása és továbbengedése közt." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Képkocka léptetés" @@ -4977,10 +4961,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "A nem támogatott kiterjesztésű fájlok nem jelennek meg a Fájlböngészőben." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "A beépített médialejátszó használata" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Szűrés az aktuális mag szerint" @@ -4993,6 +4973,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, "A Fájlböngésző az utoljára használt helyen nyílik meg a kezdő könyvtárból töltésnél. A RetroArch újraindításakor visszaáll az alapállapotra." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "A beépített médialejátszó használata" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "A beépített képnézegető használata" + ) /* Settings > Frame Throttle */ @@ -6102,10 +6090,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO, "Tartalom megállítása, amikor a menü aktív" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Megállítja az éppen futó tartalmat, ha a menü aktiválódik." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, "Visszatérés a tartalomhoz játékállások kezelése után" @@ -6459,10 +6443,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLISTS, "\"Játéklisták\" látható" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "A \"Játéklisták\" menü jelenjen meg. (Ozone / XMB esetén újraindítás szükséges.)" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, "\"Felfedezés\" látható" @@ -6941,14 +6921,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "\"Felhasználók\" látható" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "Játéklista ikonok" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "A játéklista elemeinek ikonjai." - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "A felhasználó beállításai jelenjenek meg." @@ -7911,10 +7883,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_WITHOUT_CORE_MATCH, "A tartalom beolvasása és játéklistához adása anélkül, hogy lenne azt támogató mag telepítve." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SCAN_SERIAL_AND_CRC, - "CRC ellenőrzés duplikált azonosítók esetén" - ) MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_SERIAL_AND_CRC, "Az ISO fájlok sorozatszáma néha megegyezik, különösen a PSP/PSN lemezeknél. Ilyenkor ha a beolvasó csak a sorozatszámra hagyatkozik, rossz rendszert társíthat a tartalomhoz. A CRC ellenőrzést bekapcsolva a beolvasás jóval lassabb, de pontosabb lehet." @@ -8176,7 +8144,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Fájlkezelő" + "Kezdő könyvtár" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, @@ -8419,10 +8387,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT, "Állapotüzenetek tartalmának formátuma" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "A futó tartalommal kapcsolatosan megosztott információk." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT, @@ -9019,10 +8983,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, "Folytatás" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "A futó tartalom folytatása és a gyorsmenü elhagyása." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, "Újraindítás" @@ -9035,10 +8995,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT, "Tartalom bezárása" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Az aktuális tartalom bezárása. Az el nem mentett változtatások elveszhetnek." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, "Képernyőkép készítése" @@ -9171,18 +9127,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_OPTIONS, "Mag beállításai" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "A futó tartalom beállításai." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, "Irányítás" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "A futó tartalom irányításának változtatása." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, "Csalások" @@ -9805,10 +9753,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SHADER_WATCH_FOR_CHANGES, "A shader fájlok változásainak automatikus alkalmazása." ) -MSG_HASH( - MENU_ENUM_LABEL_HELP_SHADER_WATCH_FOR_CHANGES, - "A shader fájl változásainak észlelése. A lemezen található shaderbe mentett változtatások után ez automatikusan újra lesz fordítva és alkalmazva a futó tartalomra." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_REMEMBER_LAST_DIR, "Utoljára használt shader könyvtár megjegyzése" @@ -11026,10 +10970,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_TRANSPARENCY, "Átlátszóság" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "Amikor a gyorsmenü aktív, a futó tartalom látszódik a háttérben. Az átlátszóság kikapcsolása módosíthatja a menü színösszeállítását." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, "Árnyék effekt" @@ -11470,26 +11410,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "A játéklisták a gyártó neve nélküli betűrend szerint lesznek ábécésorrendben." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, - "Színösszeállítás" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, - "A színösszeállítás lecserélése." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, - "Egyszerű fehér" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, - "Egyszerű fekete" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_DRACULA, - "Drakula" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, "Másodlagos bélyegkép" @@ -11515,6 +11435,28 @@ MSG_HASH( "A bélyegkép oszlop méretezése." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Színösszeállítás" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "A színösszeállítás lecserélése." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Egyszerű fehér" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Egyszerű fekete" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_DRACULA, + "Drakula" + ) + + /* MaterialUI: Settings > User Interface > Appearance */ MSG_HASH( @@ -12418,10 +12360,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_KEYBOARD, "Bill" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "A beépített képnézegető használata" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, "Swapchain képek maximális száma" @@ -12557,14 +12495,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Kiválasztás játéklistáról" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Folytatás" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "A futó tartalom folytatása és a gyorsmenü elhagyása." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "A %u találatból álló lista megtekintése" diff --git a/intl/msg_hash_id.h b/intl/msg_hash_id.h index 05320e62a95a..3b1d25eba9b4 100644 --- a/intl/msg_hash_id.h +++ b/intl/msg_hash_id.h @@ -2084,10 +2084,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_MIXER_MUTE, "Senyapkan suara Mixer." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Senyapkan saat dipercepat" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, "Otomatis senyapkan audio saat menggunakan percepat." @@ -2773,6 +2769,10 @@ MSG_HASH( /* Settings > File Browser */ +MSG_HASH( + MENU_ENUM_SUBLABEL_FILTER_BY_CURRENT_CORE, + "Menyaring berkas sesuai Core saat ini di Peramban Berkas." + ) /* Settings > Frame Throttle */ @@ -3316,7 +3316,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Perambah Berkas" + "Direktori Awal" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, @@ -3887,6 +3887,8 @@ MSG_HASH( "Urut Daftar Main Setelah Pemenggalan Nama (Perlu Mulai Ulang)" ) + + /* MaterialUI: Settings > User Interface > Appearance */ MSG_HASH( diff --git a/intl/msg_hash_it.h b/intl/msg_hash_it.h index 2bee247f58d6..2237c6e08dd2 100644 --- a/intl/msg_hash_it.h +++ b/intl/msg_hash_it.h @@ -2878,7 +2878,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Disattiva quando avanzi rapidamente" + "Muta Audio per la velocizzazione" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, @@ -2886,12 +2886,20 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Accelerazione In Rapida Inoltro" + "Velocizzazione Audio Rapida" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "Accelera l'audio quando si inoltra veloce. Previene crackling ma sposta il passo." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_REWIND_MUTE, + "Muta audio per riavvolgimento" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_REWIND_MUTE, + "Disattiva automaticamente l'audio quando si utilizza la velocizzazione." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, "Livello del volume audio (dB)" @@ -3686,10 +3694,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, "Attiva/Disattiva Menu" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Cambia la visualizzazione attuale tra il menu e il contenuto in esecuzione." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, "Esci (Controller Combo)" @@ -3766,10 +3770,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, "Pausa" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Consente di mettere in pausa o riprendere la riproduzione del contenuto." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Avanzamento fotogrammi" @@ -4905,14 +4905,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "Filtra i file che vengono mostrati nel File Browser per le estensioni supportate." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Usa Lettore Multimediale Integrato" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Filtra per core corrente" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_FILTER_BY_CURRENT_CORE, + "Filtra i file mostrati in Esplora file per nucleo corrente." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY, "Ricorda L'Ultima Directory Di Avvio Usata" @@ -4921,6 +4921,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, "Aprire l'esplorazione file all'ultima posizione usata durante il caricamento del contenuto dalla cartella di avvio. Nota: la posizione sarà ripristinata a quella predefinita dopo il riavvio di RetroArch." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Usa Lettore Multimediale Integrato" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Usa Visualizzatore Di Immagini Integrato" + ) /* Settings > Frame Throttle */ @@ -6034,10 +6042,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO, "Pausa il contenuto quando il menu è attivo" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Metti in pausa il contenuto attualmente in esecuzione se il menu è attivo." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, "Riprendi il contenuto dopo aver utilizzato i salvataggi di stato" @@ -6395,10 +6399,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLISTS, "Mostra 'Playlists'" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "Mostra le playlist. (Riavvio richiesto su Ozone/XMB)" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, "Mostra 'Esplora'" @@ -6873,14 +6873,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "Mostra 'Utente'" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "Icone Playlist" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "Tipo di miniatura dell'icona della playlist da visualizzare." - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "Mostra impostazioni 'Utente'." @@ -8092,7 +8084,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Esplorazione File" + "Cartella predefinita" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, @@ -8331,10 +8323,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT, "Formato Del Contenuto Rich Presence" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "Decidi quali informazioni relative al contenuto in esecuzione saranno condivise." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT, @@ -8919,10 +8907,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, "Riprendi" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Riprende il contenuto corrente e chiude il menu rapido." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, "Riavvia" @@ -8935,10 +8919,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT, "Chiudi contenuto" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Chiude il contenuto corrente. Eventuali modifiche non salvate potrebbero andare perse." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, "Effettua uno screenshot" @@ -9071,18 +9051,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_OPTIONS, "Opzioni Core" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Modifica le opzioni per il contenuto attualmente in esecuzione." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, "Controlli" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Modifica i controlli per il contenuto attualmente in esecuzione." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, "Trucchi" @@ -9705,10 +9677,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SHADER_WATCH_FOR_CHANGES, "Applicare automaticamente le modifiche apportate ai file shader sul disco." ) -MSG_HASH( - MENU_ENUM_LABEL_HELP_SHADER_WATCH_FOR_CHANGES, - "Guardare i file shader per le nuove modifiche. Dopo aver salvato le modifiche a uno shader sul disco, verrà automaticamente ricompilato e applicato al contenuto in esecuzione." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_REMEMBER_LAST_DIR, "Ricorda L'Ultima Directory Shader usata" @@ -10870,10 +10838,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_TRANSPARENCY, "Trasparenza" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "Abilita la visualizzazione dello sfondo dei contenuti in esecuzione mentre il Menu Veloce è attivo. La disabilitazione della trasparenza può alterare i colori dei temi." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, "Effetti Ombra" @@ -11180,6 +11144,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS, "Tipo di copertina da visualizzare a sinistra." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, + "Miniatura Icona" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, + "Tipo di miniatura icona della playlist da visualizzare." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER, "Sfondo dinamico" @@ -11459,6 +11431,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_ICE_COLD, "Freddo glaciale" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Grigio Scuro" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Grigio Chiaro" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -11486,6 +11466,31 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "Le scalette saranno riordinate in ordine alfabetico dopo aver rimosso il componente produttore dei loro nomi." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "Miniatura Secondaria" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "Sostituire il pannello dei metadati del contenuto con un'altra copertina." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "Usa l'animazione del testo per i Metadati del Contenuto" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "Se abilitata, ogni elemento di metadati di contenuto mostrato nella barra laterale destra delle playlist (nucleo associato, tempo di riproduzione) occuperà una singola riga; le stringhe che superano la larghezza della barra laterale saranno visualizzate come testo dell'animazione di scorrimento. Quando disabilitato, ogni elemento di metadati di contenuto verrà visualizzato staticamente, confezionato per occupare quante righe richieste." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Fattore scala delle copertine" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "Scala la dimensione della barra delle miniature." + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Colore del Tema" @@ -11514,10 +11519,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_TWILIGHT_ZONE, "Zona Crepuscolare" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, - "Selenio" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SOLARIZED_DARK, "Scuro Solarizzato" @@ -11539,30 +11540,11 @@ MSG_HASH( "Pioggia Viola" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "Miniatura Secondaria" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "Sostituire il pannello dei metadati del contenuto con un'altra copertina." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "Usa l'animazione del testo per i Metadati del Contenuto" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "Se abilitata, ogni elemento di metadati di contenuto mostrato nella barra laterale destra delle playlist (nucleo associato, tempo di riproduzione) occuperà una singola riga; le stringhe che superano la larghezza della barra laterale saranno visualizzate come testo dell'animazione di scorrimento. Quando disabilitato, ogni elemento di metadati di contenuto verrà visualizzato staticamente, confezionato per occupare quante righe richieste." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Fattore scala delle copertine" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "Scala la dimensione della barra delle miniature." + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, + "Selenio" ) + /* MaterialUI: Settings > User Interface > Appearance */ MSG_HASH( @@ -12478,10 +12460,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_USER, "Utente" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Usa Visualizzatore Di Immagini Integrato" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, "Massimo di immagini in swapchain" @@ -12605,14 +12583,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Seleziona da Playlist" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Riprendi" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Riprendi il contenuto corrente e chiude il menu rapido." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "Visualizza la lista delle %u partite" diff --git a/intl/msg_hash_ja.h b/intl/msg_hash_ja.h index 9535bb9d74a9..e571508c6831 100644 --- a/intl/msg_hash_ja.h +++ b/intl/msg_hash_ja.h @@ -2533,6 +2533,18 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER, "整数倍拡大" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER_AXIS, + "整数倍拡大軸" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER_SCALING_UNDERSCALE, + "アンダースケール" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER_SCALING_OVERSCALE, + "オーバースケール" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER_SCALING_SMART, "スマート" @@ -2872,18 +2884,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_RESPECT_SILENT_MODE, "サイレントモードですべてのオーディオを消音にします。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "早送り時に消音" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, "早送りを使用中に自動的にオーディオを消音にします。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "早送り時に高速化" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "早送り時にオーディオを高速化します。音割れを防ぎますが、ピッチがずれます。" @@ -3658,10 +3662,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, "メニュー切り替え" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "現在の表示をメニューと実行中のコンテンツの間で切り替えます。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, "終了 (コントローラー同時押し)" @@ -3738,10 +3738,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, "一時停止" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "実行中のコンテンツの一時停止と非一時停止の状態を切り替えます。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "コマ送り" @@ -4865,10 +4861,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "ファイルブラウザに表示されるファイルを対応する拡張子でフィルタリングします。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "内蔵メディアプレイヤーを使用" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "現在のコアでフィルター" @@ -4881,6 +4873,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, "コンテンツをロードする際に、最後に使用したディレクトリでファイルブラウザを開きます。注意: 再起動すると場所はデフォルトにリセットされます。" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "内蔵メディアプレイヤーを使用" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "内蔵画像ビューアを使用" + ) /* Settings > Frame Throttle */ @@ -5982,10 +5982,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO, "メニュー表示時にコンテンツを一時停止" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "メニューを表示している間、現在実行中のコンテンツを一時停止します。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, "ステートセーブ後にコンテンツを再開" @@ -6331,10 +6327,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLISTS, "[プレイリスト] を表示" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "[プレイリスト] メニューを表示します。 (Ozone/XMB で再起動が必要)" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, "[エクスプローラー] を表示" @@ -6813,14 +6805,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "[ユーザー] を表示" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "プレイリストアイコン" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "表示するプレイリストアイコンサムネイルの種類です。" - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "[ユーザー] 設定を表示します。" @@ -7779,10 +7763,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_WITHOUT_CORE_MATCH, "対応するコアがインストールされていないコンテンツをスキャンし、プレイリストに追加することを許可します。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SCAN_SERIAL_AND_CRC, - "スキャン時に重複の可能性がある場合 CRC をチェック" - ) MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_SERIAL_AND_CRC, "特に PSP/PSN タイトルで、ISO が重複するシリアルを持つ場合があります。シリアルにのみ依存すると、スキャナーがコンテンツを間違ったシステムに入れてしまうことがあります。これにより CRC チェックが追加され、スキャンが大幅に遅くなりますが、より正確になる可能性があります。" @@ -8040,7 +8020,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "ファイルブラウザ" + "開始ディレクトリ" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, @@ -8283,10 +8263,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT, "Rich Presence コンテンツ形式" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "実行中のコンテンツに関連する情報について、どのような情報を共有するかを決定します。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT, @@ -8883,10 +8859,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, "再開" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "クイックメニューを閉じて現在動作中のアプリを再開します。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, "再起動" @@ -8899,10 +8871,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT, "コンテンツを閉じる" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "現在のコンテンツを閉じます。すべての保存されていない設定は失われる可能性があります。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, "スクリーンショットを撮影" @@ -9035,18 +9003,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_OPTIONS, "コアオプション" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "現在動作中のコンテンツのオプションを変更します。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, "コントロール" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "現在動作中のコンテンツのコントロールを変更します。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, "チート" @@ -9677,10 +9637,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SHADER_WATCH_FOR_CHANGES, "ディスク上のシェーダーファイルに加えられた変更を自動的に適用します。" ) -MSG_HASH( - MENU_ENUM_LABEL_HELP_SHADER_WATCH_FOR_CHANGES, - "シェーダーファイルの新しい変更を監視します。シェーダーの変更をディスクに保存すると、自動的に再コンパイルされ実行中のコンテンツに適用されます。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_REMEMBER_LAST_DIR, "最後に使用したシェーダーディレクトリを記憶" @@ -10922,10 +10878,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_TRANSPARENCY, "透明度" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "クイックメニューがアクティブな間、実行中のコンテンツの背景表示を有効にします。透明度を無効にするとテーマカラーが変わることがあります。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, "影のエフェクト" @@ -11463,6 +11415,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_MIDGAR, "ミッドガル" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "グレーダーク" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "グレーライト" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -11490,6 +11450,31 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "メーカー名が削除されたプレイリストをアルファベット順に並べ替えます。" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "セカンダリーサムネイル" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "コンテンツのメタデータパネルを、選択したサムネイルを表示するパネルに置き換えます。" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "コンテンツのメタデータ表示にティッカーテキストを使用" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "有効にすると、プレイリストの右サイドバーに表示されるコンテンツメタデータの各項目 (関連付けされたコア、プレイ時間) が 1 行で表示されます。サイドバーの幅を超える文字列はスクロールティッカーテキストとして表示されます。無効にすると、コンテンツメタデータの各項目は静的に表示され、必要な行数に応じて折り返されます。" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "サムネイル表示倍率" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "サムネイルバーのサイズの表示倍率です。" + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "カラーテーマ" @@ -11518,30 +11503,7 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_PURPLE_RAIN, "パープルレイン" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "セカンダリーサムネイル" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "コンテンツのメタデータパネルを、選択したサムネイルを表示するパネルに置き換えます。" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "コンテンツのメタデータ表示にティッカーテキストを使用" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "有効にすると、プレイリストの右サイドバーに表示されるコンテンツメタデータの各項目 (関連付けされたコア、プレイ時間) が 1 行で表示されます。サイドバーの幅を超える文字列はスクロールティッカーテキストとして表示されます。無効にすると、コンテンツメタデータの各項目は静的に表示され、必要な行数に応じて折り返されます。" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "サムネイル表示倍率" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "サムネイルバーのサイズの表示倍率です。" - ) + /* MaterialUI: Settings > User Interface > Appearance */ @@ -12462,10 +12424,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_KEYBOARD, "キーボード" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "内蔵画像ビューアを使用" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, "最大スワップチェーンイメージ" @@ -12601,14 +12559,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "プレイリストから選択" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "再開" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "クイックメニューを閉じて現在動作中のアプリを再開します。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "%u 一致リストを表示" diff --git a/intl/msg_hash_ko.h b/intl/msg_hash_ko.h index 2dc512569741..720899ddca47 100644 --- a/intl/msg_hash_ko.h +++ b/intl/msg_hash_ko.h @@ -2954,7 +2954,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "빨리 감기 중 음소거" + "빨리 감기 중 오디오 음소거" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, @@ -2968,6 +2968,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "빨리 감기 중 오디오의 속도를 올립니다. 소리 깨짐 효과를 방지하지만 음높이가 올라갑니다." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_REWIND_MUTE, + "뒤로 감기 중 오디오 음소거" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_REWIND_MUTE, + "뒤로 감기를 사용할 때 오디오를 음소거합니다." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, "오디오 볼륨 레벨 (dB)" @@ -3788,7 +3796,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "실행중인 콘텐츠와 메뉴 사이를 전환합니다." + "콘텐츠와 메뉴 사이를 전환합니다." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, @@ -5021,14 +5029,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "파일 탐색기에서 지원되는 확장자의 파일만 표시합니다." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "내장 미디어 플레이어 사용" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "현재 코어에 따라 필터" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_FILTER_BY_CURRENT_CORE, + "현재 코어에서 사용 가능한 파일만 표시합니다." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY, "최근 사용한 시작 디렉토리 기억" @@ -5037,6 +5045,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, "시작 디렉토리에서 콘텐츠를 불러올 경우 최근 사용한 위치에서 파일 탐색기를 시작합니다. 참고: RetroArch를 재시작하면 기본 위치로 초기화 됩니다." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "내장 미디어 플레이어 사용" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "내장 이미지 뷰어 사용" + ) /* Settings > Frame Throttle */ @@ -6156,7 +6172,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "RetroArch 메뉴가 활성화되면 실행중인 콘텐츠를 일시정지합니다." + "메뉴가 활성화되면 컨텐츠를 일시정지합니다." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, @@ -6517,7 +6533,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "실행목록을 표시합니다. (Ozone/XMB 사용시 재시작 필요)" + "메인 메뉴에 실행목록을 표시합니다. GLUI에서는 실행목록 탭과 내비게이션 바가 활성화된 경우 무시됩니다." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLIST_TABS, + "실행목록 탭 표시" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLIST_TABS, + "실행목록 탭을 표시합니다. RGUI에서는 무시됩니다. GLUI에서는 내비게이션 바가 활성화되어 있어야 합니다. (Ozone/XMB 사용시 재시작 필요)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, @@ -6997,14 +7021,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "'사용자' 표시" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "실행목록 아이콘" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "표시할 실행목록 아이콘 섬네일의 종류입니다." - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "'사용자' 설정을 표시합니다." @@ -7969,11 +7985,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SCAN_SERIAL_AND_CRC, - "스캔은 가능한 중복에 대해 CRC를 확인" + "CRC 검사로 중복 여부 확인" ) MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_SERIAL_AND_CRC, - "때때로 ISO는 특히 PSP/PSN 타이틀의 경우 시리즈를 복제합니다. 시리즈에만 의존하면 스캐너가 콘텐츠를 잘못된 시스템에 배치하는 경우가 있습니다. 이렇게 하면 CRC 검사가 추가되어 스캔 속도가 상당히 느려지지만 더 정확할 수 있습니다." + "종종 내용은 다르지만 같은 시리얼 값을 가지는 ISO들이 존재하며, 이는 특히 PSP/PSN 타이틀에서 빈번히 발견됩니다. 시리얼 값만으로 콘텐츠를 구분할 경우 콘텐츠가 잘못된 시스템으로 분류될 수 있습니다. 이 옵션을 활성화하면 CRC 검사 과정이 추가되며, 검사 속도가 현저히 느려지지만, 더 정확한 결과를 얻을 수 있습니다." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LIST, @@ -8228,7 +8244,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "파일 탐색기" + "시작 디렉토리" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, @@ -8473,7 +8489,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "실행중인 콘텐츠에 대해 어떤 정보를 공유할지 결정합니다." + "콘텐츠에 대한 어떤 정보를 공유할지 결정합니다." ) MSG_HASH( @@ -9073,7 +9089,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "빠른 메뉴를 종료하고 현재 실행 중인 콘텐츠를 이어합니다" + "빠른 메뉴를 종료하고 콘텐츠로 돌아갑니다." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, @@ -9089,7 +9105,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "현재 콘텐츠를 종료합니다. 저장되지 않은 내용은 사라지게 됩니다." + "콘텐츠를 종료합니다. 저장되지 않은 내용은 사라지게 됩니다." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, @@ -9225,7 +9241,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "현재 실행중인 콘텐츠의 옵션을 변경합니다." + "콘텐츠의 옵션을 변경합니다." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, @@ -9233,7 +9249,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "현재 실행중인 콘텐츠의 조작방법 설정을 변경합니다." + "콘텐츠의 조작 방법을 변경합니다." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, @@ -9867,7 +9883,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_HELP_SHADER_WATCH_FOR_CHANGES, - "셰이더 파일에서 변경 사항을 확인합니다. 셰이더 변경 사항을 디스크에 저장하면 자동으로 다시 컴파일되어 실행 중인 콘텐츠에 적용됩니다." + "셰이더 파일의 변경을 감지합니다. 셰이더의 변경 사항이 디스크에 저장되면 셰이더가 자동으로 다시 컴파일되어 콘텐츠에 적용됩니다." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_REMEMBER_LAST_DIR, @@ -11012,7 +11028,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "빠른 메뉴 활성 시 실행 중인 컨텐츠를 배경 화면으로 표시합니다. 이 설정을 변경하면 테마 색상이 달라질 수 있습니다." + "빠른 메뉴 활성 시 콘텐츠를 배경 화면으로 표시합니다. 이 설정을 변경하면 테마 색상이 달라질 수 있습니다." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, @@ -11356,6 +11372,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS, "왼쪽에 표시할 미리보기의 종류입니다." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, + "아이콘 미리보기" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, + "표시할 실행목록 아이콘 미리보기의 종류입니다." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER, "다이나믹 백그라운드" @@ -11663,6 +11687,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_MIDGAR, "미드가르" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "어두운 회색" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "밝은 회색" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -11690,6 +11722,31 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "이름에서 제조사 항목을 삭제한 후 실행목록을 알파벳 순으로 다시 정렬합니다." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "두 번째 미리보기" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "콘텐츠 메타데이터 패널 대신 다른 미리보기를 표시합니다." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "콘텐츠 메타데이터 한 줄로 표시" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "사용할 경우, 오른쪽 사이드바에 표시되는 콘텐츠 메타데이터(코어, 실행 시간 등)를 항목당 한 줄씩으로 표시합니다. 사이드바 너비를 초과하는 길이의 문구는 스크롤됩니다. 사용하지 않을 경우, 컨텐츠 메타데이터는 필요한 만큼 줄 수를 늘려가며 정적으로 표시됩니다." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "미리보기 배율" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "섬네일 바의 크기 배율을 설정합니다." + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "색상 테마" @@ -11730,10 +11787,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_DRACULA, "드라큘라" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, - "셀레늄" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SOLARIZED_DARK, "솔라라이즈 다크" @@ -11755,30 +11808,11 @@ MSG_HASH( "자줏빛 비" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "두 번째 미리보기" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "콘텐츠 메타데이터 패널 대신 다른 미리보기를 표시합니다." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "콘텐츠 메타데이터 한 줄로 표시" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "사용할 경우, 오른쪽 사이드바에 표시되는 콘텐츠 메타데이터(코어, 실행 시간 등)를 항목당 한 줄씩으로 표시합니다. 사이드바 너비를 초과하는 길이의 문구는 스크롤됩니다. 사용하지 않을 경우, 컨텐츠 메타데이터는 필요한 만큼 줄 수를 늘려가며 정적으로 표시됩니다." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "미리보기 배율" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "섬네일 바의 크기 배율을 설정합니다." + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, + "셀레늄" ) + /* MaterialUI: Settings > User Interface > Appearance */ MSG_HASH( @@ -12758,10 +12792,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_KEYBOARD, "키보드" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "내장 이미지 뷰어 사용" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, "최대 스왑체인 이미지" @@ -12897,14 +12927,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "실행목록에서 선택" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "이어하기" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "빠른 메뉴를 종료하고 현재 실행 중인 콘텐츠를 이어합니다." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "%u 일치 목록 확인" diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index eecdf071e25e..0455c167970d 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -1550,6 +1550,10 @@ MSG_HASH( MENU_ENUM_LABEL_DISK_OPTIONS, "core_disk_options" ) +MSG_HASH( + MENU_ENUM_LABEL_DISK_INDEX, + "core_disk_index" + ) MSG_HASH( MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST, "downloaded_file_detect_core_list" @@ -3402,10 +3406,6 @@ MSG_HASH( MENU_ENUM_LABEL_RESTART_RETROARCH, "restart_retroarch" ) -MSG_HASH( - MENU_ENUM_LABEL_RESUME, - "resume" - ) MSG_HASH( MENU_ENUM_LABEL_RESUME_CONTENT, "resume_content" @@ -3502,6 +3502,22 @@ MSG_HASH( MENU_ENUM_LABEL_CREATE_NEW_PLAYLIST, "playlist_create" ) +MSG_HASH( + MENU_ENUM_LABEL_ADD_TO_PLAYLIST_QUICKMENU, + "playlist_add_quickmenu" + ) +MSG_HASH( + MENU_ENUM_LABEL_DEFERRED_ADD_TO_PLAYLIST_QUICKMENU, + "deferred_add_to_playlist_quickmenu" + ) +MSG_HASH( + MENU_ENUM_LABEL_ADD_ENTRY_TO_PLAYLIST_QUICKMENU, + "add_entry_to_playlist_quickmenu" + ) +MSG_HASH( + MENU_ENUM_LABEL_CREATE_NEW_PLAYLIST_QUICKMENU, + "playlist_create_quickmenu" + ) MSG_HASH( MENU_ENUM_LABEL_SET_CORE_ASSOCIATION, "set_core_association" diff --git a/intl/msg_hash_mt.h b/intl/msg_hash_mt.h index b94f29140121..88b95f049553 100644 --- a/intl/msg_hash_mt.h +++ b/intl/msg_hash_mt.h @@ -415,6 +415,8 @@ /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ diff --git a/intl/msg_hash_nl.h b/intl/msg_hash_nl.h index cd8e2a814d44..3f560c500bf9 100644 --- a/intl/msg_hash_nl.h +++ b/intl/msg_hash_nl.h @@ -2256,18 +2256,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_MIXER_MUTE, "Demp audio van mixer." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Dempen bij Vooruitspoelen" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, "Audio automatisch dempen bij gebruik van Vooruitspoelen." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Versnelling bij snel vooruitspoelen" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "Versnel de audio wanneer je snel vooruitgaat. Voorkomt kraken maar verschuift de pitch." @@ -2898,10 +2890,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, "Menu-schakel" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Schakelt de huidige weergave tussen het menu en de actieve inhoud." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, "Afsluiten (Bedieningscombinatie)" @@ -2978,10 +2966,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, "Pauzeren" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Schakelt om inhoud uit te voeren tussen onderbroken en niet-onderbroken staten." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Frame-voortgang" @@ -3877,10 +3861,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "Filtreer onbekende extensies" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Gebruik ingebouwde media speler" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Filter op Huidige Core" @@ -3889,6 +3869,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY, "Onthoud de Laatst Gebruikte Startmap" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Gebruik ingebouwde media speler" + ) /* Settings > Frame Throttle */ @@ -5152,7 +5136,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Bestandsbeheer" + "Favorieten" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_DIRECTORY, @@ -5858,6 +5842,7 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ + MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Selecteer een ander kleurenschema." @@ -5871,6 +5856,7 @@ MSG_HASH( "Zwart" ) + /* MaterialUI: Settings > User Interface > Appearance */ MSG_HASH( @@ -6129,10 +6115,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_ASPECT, "Forceer beeldverhouding" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Hervatten" - ) MSG_HASH( /* FIXME Still exists in a comment about being removed */ MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_FOOTER_OPACITY, "Voettekst Zichtbaarheid" diff --git a/intl/msg_hash_no.h b/intl/msg_hash_no.h index 03c1cb002a46..15346da7a898 100644 --- a/intl/msg_hash_no.h +++ b/intl/msg_hash_no.h @@ -2425,10 +2425,6 @@ MSG_HASH( /* Settings > File Browser */ -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Bruk innebygd mediespiller" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Filtrer etter gjeldende kjerne" @@ -2437,6 +2433,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY, "Husk sist brukte startmappe" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Bruk innebygd mediespiller" + ) /* Settings > Frame Throttle */ @@ -2658,10 +2658,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO, "Sett innholdet på pause når menyen er aktiv" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Pauser det nåværende innholdet som kjører når menyen er aktiv." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_QUIT_ON_CLOSE_CONTENT, "Avslutt ved stenging av innhold" @@ -2811,10 +2807,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLISTS, "Vis 'Spillelister'" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "Vis spillelistene. (Omstart kreves på Ozone/XMB)" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, "Vis \"Utforsk\"" @@ -3424,7 +3416,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Filutforsker" + "Startmappe" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_CONFIG_DIRECTORY, @@ -3783,18 +3775,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, "Gjenoppta" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Gjenoppta gjeldende innhold og forlat hurtigmenyen." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT, "Lukk innhold" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Lukk dette innholdet. Eventuelle ulagrede endringer vil gå tapt." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, "Ta skjermbilde" @@ -4387,6 +4371,8 @@ MSG_HASH( "Sekundært miniatyrbilde" ) + + /* MaterialUI: Settings > User Interface > Appearance */ MSG_HASH( @@ -4785,14 +4771,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Velg fra en spilleliste" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Gjenoppta" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Gjenoppta gjeldende innhold og forlat hurtigmenyen." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE, "Nettspill" diff --git a/intl/msg_hash_oc.h b/intl/msg_hash_oc.h index bff5d8286f44..4c4b6dc5cebc 100644 --- a/intl/msg_hash_oc.h +++ b/intl/msg_hash_oc.h @@ -611,6 +611,8 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ diff --git a/intl/msg_hash_or.h b/intl/msg_hash_or.h index b737817fa777..0a71d99f2ac8 100644 --- a/intl/msg_hash_or.h +++ b/intl/msg_hash_or.h @@ -779,6 +779,8 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ MSG_HASH( diff --git a/intl/msg_hash_pl.h b/intl/msg_hash_pl.h index 461855fb7549..20b1940bb984 100644 --- a/intl/msg_hash_pl.h +++ b/intl/msg_hash_pl.h @@ -2804,18 +2804,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_RESPECT_SILENT_MODE, "Wycisz wszystkie dźwięki w trybie cichym." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Wycisz podczas przyspieszania" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, "Automatycznie wycisz dźwięk podczas używania przyspieszenia." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Przyspiesz podczas przewijania do przodu" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, "Poziom głośności (dB)" @@ -3450,10 +3442,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, "Przełączanie menu" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Przełącza bieżący wyświetlacz pomiędzy menu i uruchomioną treścią." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, "Wyjście (Kontroler Combo)" @@ -3526,10 +3514,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, "Pauza" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Przełącza uruchomioną zawartość pomiędzy stanami wstrzymanymi i niewstrzymanymi." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, @@ -4429,14 +4413,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "Filtruj pliki wyświetlane w przeglądarce plików przez obsługiwane rozszerzenia." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Użyj wbudowanego odtwarzacza multimedialnego" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Filtruj według bieżącego rdzenia" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_FILTER_BY_CURRENT_CORE, + "Filtruj pliki wyświetlane w przeglądarce plików według aktualnego rdzenia." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY, "Zapamiętaj ostatnio używany katalog startowy" @@ -4445,6 +4429,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, "Otwórz przeglądarkę plików w ostatnio używanej lokalizacji podczas ładowania zawartości z katalogu startowego. Uwaga: Lokalizacja zostanie przywrócona do wartości domyślnych po ponownym uruchomieniu RetroArch." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Użyj wbudowanego odtwarzacza multimedialnego" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Użyj wbudowanej przeglądarki zdjęć" + ) /* Settings > Frame Throttle */ @@ -5362,10 +5354,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO, "Wstrzymaj zawartość, gdy Menu jest aktywne" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Zatrzymaj aktualnie uruchomioną zawartość, jeśli menu jest aktywne." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, "Wznów zawartość po użyciu zapisów stanu" @@ -5713,7 +5701,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "Pokaż listy odtwarzania. (Wymagane estart na Ozone/XMB)" + "Pokaż listy odtwarzania w menu głównym. Ignorowane w GLUI, jeśli karty playlisty i pasek nawigacji są włączone." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLIST_TABS, + "Pokaż karty playlist" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLIST_TABS, + "Pokaż karty playlisty. Nie ma wpływu na RGUI. Pasek nawigacyjny musi być włączony w GLUI. (Pestart wymagany w Ozone/XMB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, @@ -6137,14 +6133,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "Pokaż 'Użytkownik'" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "Ikony listy odtwarzania" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "Typ miniatury ikony listy odtwarzania do wyświetlenia." - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "Pokaż ustawienia 'Użytkownika'." @@ -7236,7 +7224,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Przeglądarka plików" + "Katalog startowy" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH, @@ -7983,10 +7971,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, "Wznów zawartość" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Wznów aktualnie uruchomioną zawartość i opuść szybkie menu." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, "Uruchom ponownie" @@ -7999,10 +7983,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT, "Zamknij zawartość" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Zamknij bieżącą zawartość. Wszelkie niezapisane zmiany mogą zostać utracone." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, "Zrób zrzut ekranu" @@ -8119,18 +8099,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_OPTIONS, "Opcje rdzenia" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Zmień opcje aktualnie wyświetlanej treści." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, "Elementy sterujące" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Zmień elementy sterujące dla aktualnie uruchomionej zawartości." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, "Kody" @@ -9710,10 +9682,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RGUI_MENU_THEME_PRESET, "Wybierz predefiniowany motyw menu z przeglądarki plików." ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "Włącz wyświetlanie w tle uruchomionych treści, gdy szybkie menu jest aktywne. Wyłączenie przezroczystości może zmienić kolory motywu." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, "Efekty cienia" @@ -10004,6 +9972,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS, "Typ miniatury do wyświetlenia po lewej stronie." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, + "Miniatura ikony" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, + "Typ miniatury ikony listy odtwarzania do wyświetlenia." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER, "Dynamiczne tło" @@ -10231,6 +10207,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_ICE_COLD, "Lodowy zimny" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Ciemny szary" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Jasno szary" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -10254,6 +10238,27 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "Listy odtwarzania zostaną ponownie posortowane w kolejności alfabetycznej po usunięciu składnika producenta ich nazw." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "Drugorzędna miniatura" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "Zastąp panel metadanych na inną miniaturę." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "Użyj paska tekstu dla metadanych zawartości" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "Gdy włączony, każdy element metadanych zawartości wyświetlany na prawym pasku bocznym playlisty (powiązany rdzeń, czas odtwarzania) będzie zajmował pojedynczą linię; ciągi przekraczające szerokość paska bocznego będą wyświetlane jako przewijany tekst. Po wyłączeniu, każdy element metadanych zawartości będzie wyświetlany statycznie, zawinięty i zajmujący tyle wierszy, ile jest wymagane." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Współczynnik skali miniatur" + ) + MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Wybierz inny motyw koloru." @@ -10302,26 +10307,7 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_PURPLE_RAIN, "Fioletowy deszcz" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "Drugorzędna miniatura" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "Zastąp panel metadanych na inną miniaturę." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "Użyj paska tekstu dla metadanych zawartości" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "Gdy włączony, każdy element metadanych zawartości wyświetlany na prawym pasku bocznym playlisty (powiązany rdzeń, czas odtwarzania) będzie zajmował pojedynczą linię; ciągi przekraczające szerokość paska bocznego będą wyświetlane jako przewijany tekst. Po wyłączeniu, każdy element metadanych zawartości będzie wyświetlany statycznie, zawinięty i zajmujący tyle wierszy, ile jest wymagane." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Współczynnik skali miniatur" - ) + /* MaterialUI: Settings > User Interface > Appearance */ @@ -11250,10 +11236,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_USER, "Użytkownik" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Użyj wbudowanej przeglądarki zdjęć" - ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_MAX_SWAPCHAIN_IMAGES, "Informuje sterownik wideo, aby jawnie użył określonego trybu buforowania." @@ -11373,14 +11355,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Wybierz z playlisty" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Wznów" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Wznów aktualnie uruchomioną zawartość i opuść szybkie menu." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "Zobacz listę %u dopasowań" diff --git a/intl/msg_hash_pt_br.h b/intl/msg_hash_pt_br.h index 53ee27625ffd..1fcf8223e015 100644 --- a/intl/msg_hash_pt_br.h +++ b/intl/msg_hash_pt_br.h @@ -143,7 +143,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_ONLINE_UPDATER, - "Atualizador on-line" + "Atualizador online" ) MSG_HASH( MENU_ENUM_SUBLABEL_ONLINE_UPDATER, @@ -207,7 +207,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_HELP_QUIT_RETROARCH, - "Sair do RetroArch. Matar o programa de qualquer maneira difícil (SIGKILL, etc.) encerrará o RetroArch sem salvar a configuração. Em Unix-likes, SIGINT/SIGTERM permite uma desinicialização limpa que inclui salvamento de configuração se ativado." + "Sair do RetroArch. Matar o programa de qualquer maneira difícil (SIGKILL, etc.) encerrará o RetroArch sem salvar a configuração. Em sistemas baseados em Unix, SIGINT/SIGTERM permite uma 'desinicialização' limpa que inclui salvamento de configuração se ativado." ) /* Main Menu > Load Core */ @@ -292,7 +292,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_GOTO_EXPLORE, - "Navegue por todo o conteúdo correspondente ao banco de dados por meio de uma interface de pesquisa categorizada." + "Navegue por todo o conteúdo correspondente ao banco de dados por uma interface com pesquisa categorizada." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_GOTO_CONTENTLESS_CORES, @@ -491,9 +491,13 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INFO_REQUIRED_HW_API, "API gráficas necessárias" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_CORE_PATH, + "Caminho completo" +) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INFO_SAVESTATE_SUPPORT_LEVEL, - "Suporte ao jogo salvo" + "Suporte a Salvar Estado (Save State)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INFO_SAVESTATE_DISABLED, @@ -501,7 +505,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INFO_SAVESTATE_BASIC, - "Básico (salva/carrega)" + "Básico (Salva/Carrega)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INFO_SAVESTATE_SERIALIZED, @@ -509,11 +513,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INFO_SAVESTATE_DETERMINISTIC, - "Determinístico (salva/carrega, rebobina, execução antecipada, Netplay)" + "Determinístico (Salva/Carrega, Rebobina, Execução antecipada, Netplay)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INFO_FIRMWARE_IN_CONTENT_DIRECTORY, - "- Nota: Os arquivos do sistema estão no Diretório de Conteúdo' está ativado no momento." + "- Nota: 'Arquivos de sistema estão no Diretório de Conteúdo' está ativado no momento." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_FIRMWARE_PATH, + "- Pesquisando em: \"%s\"" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MISSING_REQUIRED, @@ -545,7 +553,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_SET_STANDALONE_EXEMPT, - "Impede que este núcleo seja exibido na aba / menu 'Núcleos sem conteúdo. Aplica-se somente quando o modo de exibição é definido como 'Personalizado'." + "Impede que este núcleo seja exibido na aba/menu 'Núcleos sem conteúdo'. Aplica-se somente quando o modo de exibição é definido como 'Personalizado'." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_DELETE, @@ -946,7 +954,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RDB_ENTRY_SCORE, - "Nota" + "Pontuação" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RDB_ENTRY_MEDIA, @@ -1544,6 +1552,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_DRIVER, "Define o driver de entrada.\nOs drivers de vídeo podem forçar um driver de entrada diferente." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_INPUT_DRIVER_UDEV, + "O driver udev lê eventos evdev para suporte ao teclado. Ele também suporta callback de teclado, mouses e touchpads.\nPor padrão na maioria das distros, os nós /dev/input são root-only (modo 600). Você pode configurar uma regra udev que os torna acessíveis para non-root." + ) MSG_HASH( MENU_ENUM_LABEL_HELP_INPUT_DRIVER_LINUXRAW, "O driver de entrada linuxraw requer um TTY. Os eventos do teclado são lidos diretamente do TTY, o que o torna mais simples, mas não tão flexível quanto o udev. Mouses, etc não são suportados. Este driver usa a API mais antiga do joystick (/dev/input/js*)." @@ -1741,6 +1753,10 @@ MSG_HASH( MENU_ENUM_LABEL_HELP_AUDIO_DRIVER_PULSE, "Driver PulseAudio. Se o sistema usa PulseAudio, certifique-se de usar este driver em vez de, por exemplo, ALSA." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_AUDIO_DRIVER_PIPEWIRE, + "Driver do PipeWire. Se o sistema usa PipeWire, lembre-se de usar esse driver em vez de e.g. PulseAudio." + ) MSG_HASH( MENU_ENUM_LABEL_HELP_AUDIO_DRIVER_JACK, "Driver de Kit de Conexão Jack Áudio." @@ -1918,10 +1934,22 @@ MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_THREADED, "Melhora o desempenho ao custo de uma maior latência e mais engasgadas no sinal de vídeo. Use apenas caso não seja possível obter a velocidade máxima de outra forma." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VIDEO_THREADED, + "Use um driver de vídeo multitarefa. Usar isto pode melhorar o desempenho a custo de possível latência e mais travamentos de vídeo." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION, "Inserção de quadro opaco" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_BLACK_FRAME_INSERTION, + "AVISO: Tremulação rápida pode causar persistência de imagem em algumas telas. Use por sua conta em risco // Insira quadro(s) preto(s) entre os quadros. Pode reduzir significativamente o desfoque de movimento emulando a varredura de CRT, mas ao custo do brilho." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VIDEO_BLACK_FRAME_INSERTION, + "Insere quadro(s) preto(s) entre quadros para maior clareza de movimento. Utilize apenas a opção designada para a sua taxa de atualização de exibição atual. Não é para uso em taxas de atualização que não são múltiplos de 60Hz, como 144Hz, 165Hz, etc. Não combine com o intervalo de troca > 1, sub-frames, Delay de Frame ou Sincronizar para Framerate de Conteúdo Exato. Deixar o sistema com o VRR está certo, apenas não está configurado. Se você notar a retenção de imagens em qual[...]" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_120, "1 - Para taxa de atualização de 120Hz" @@ -1942,6 +1970,70 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_360, "5 - Para taxa de atualização de 360Hz" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_420, + "6 - Para taxa de atualização de 420Hz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_480, + "7 - Para taxa de atualização de 480Hz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_540, + "8 - Para taxa de atualização de 540Hz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_600, + "9 - Para taxa de atualização de 600Hz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_660, + "10 - Para taxa de atualização de 660Hz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_720, + "11 - Para taxa de atualização de 720Hz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_780, + "12 - Para taxa de atualização de 780Hz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_840, + "13 - Para taxa de atualização de 840Hz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_900, + "14 - Para taxa de atualização de 900Hz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_960, + "15 - Para taxa de atualização de 960Hz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BFI_DARK_FRAMES, + "Inserção de Quadros Pretos - Quadros Escuros" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_BFI_DARK_FRAMES, + "Ajuste o número de quadros pretos na sequência total de escaneamento BFI. Mais equivalea maior nitidez, menos é igual a maior brilho. Não se aplica ao 120hz, pois há apenas 1 quadro BFI para trabalhar com o total. As configurações maiores que o possível vão limitar ao máximo possível para a taxa de atualização escolhida." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VIDEO_BFI_DARK_FRAMES, + "Ajusta o número de quadros exibidos na sequência BFI que são pretos. Mais quadros pretos aumentam a nitidez, mas reduzem o brilho. Não aplicável ao 120hz, pois há apenas um quadro extra de 60hz no total, por isso, deve ser preto, caso contrário o BFI não estaria de modo algum ativa." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_SUBFRAMES, + "Subquadros de sombreamento" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_SUBFRAMES, + "AVISO: Tremulação rápida pode causar persistência de imagem em algumas telas. Use por sua conta em risco // Simula uma varredura básica sobre vários subquadros dividindo a tela verticalmente e renderizando cada parte da tela de acordo com quantos subquadros há." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VIDEO_SHADER_SUBFRAMES, + "Insere quadro(s) preto(s) entre quadros para maior nitidez. Utilize apenas a opção designada para a sua taxa de atualização de exibição atual. Não use em taxas de atualização que não são múltiplos de 60Hz, como 144Hz, 165Hz, etc. Não combine com o intervalo de troca > 1, subquadros, Delay de Frame ou Sincronizar para Framerate de Conteúdo Exato. Deixar o sistema com o VRR está certo, apenas não está configurado. Se você notar a retenção de imagens em qualquer momento, você d[...]" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_SUBFRAMES_VALUE_120, "2 - Para taxa de atualização de 120Hz" @@ -1974,6 +2066,34 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_SUBFRAMES_VALUE_540, "9 - Para taxa de atualização de 540Hz" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_SUBFRAMES_VALUE_600, + "10 - Para taxa de atualização de 600Hz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_SUBFRAMES_VALUE_660, + "11 - Para taxa de atualização de 660Hz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_SUBFRAMES_VALUE_720, + "12 - Para taxa de atualização de 720Hz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_SUBFRAMES_VALUE_780, + "13 - Para taxa de atualização de 780Hz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_SUBFRAMES_VALUE_840, + "14 - Para taxa de atualização de 840Hz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_SUBFRAMES_VALUE_900, + "15 - Para taxa de atualização de 900Hz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_SUBFRAMES_VALUE_960, + "16 - Para taxa de atualização de 960Hz" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_GPU_SCREENSHOT, "Habilitar captura de tela da GPU" @@ -1982,6 +2102,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SCAN_SUBFRAMES, "Simulação do rolamento da linha de varredura" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SCAN_SUBFRAMES, + "AVISO: Tremulação rápida pode causar persistência de imagem em algumas telas. Use por sua conta em risco // Simula uma varredura básica sobre vários subquadros dividindo a tela verticalmente e renderizando cada parte da tela de acordo com quantos subquadros há." + ) MSG_HASH( MENU_ENUM_LABEL_HELP_VIDEO_SCAN_SUBFRAMES, "Simula o rolamento básico da linha de varredura em múltiplos sub-quadros, dividindo a tela verticalmente e renderizando cada parte conforme a quantidade de sub-quadros existente no canto superior da tela para baixo." @@ -2050,6 +2174,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_FILTER, "Aplica um filtro de vídeo processado pela CPU. Afeta muito o desempenho. Alguns filtros de vídeo podem funcionar apenas nos núcleos que usam cores com 32 ou 16 bits." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VIDEO_FILTER, + "Aplica um filtro de vídeo processado pela CPU. Afeta muito o desempenho. Alguns filtros de vídeo podem funcionar apenas nos núcleos que usam cores com 32 ou 16 bits. Bibliotecas de filtros de vídeo, vinculadas dinamicamente, podem ser selecionadas." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FILTER_REMOVE, "Remover o filtro do vídeo" @@ -2058,6 +2186,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_FILTER_REMOVE, "Descarregue qualquer filtro de vídeo ativo que utilize processamento da CPU." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_NOTCH_WRITE_OVER, + "Habilitar tela cheia sobre o entalhe (“notch”) em dispositivos Android" +) /* Settings > Video > CRT SwitchRes */ @@ -2120,6 +2252,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_MONITOR_INDEX, "Selecione qual a tela será usada." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VIDEO_MONITOR_INDEX, + "Monitor preferido. 0 (padrão) significa que nenhum monitor tem a preferência, 1 e acima (1 sendo primeiro monitor), sugere ao RetroArch para usar esse monitor em particular." + ) #if defined (WIIU) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_WIIU_PREFER_DRC, @@ -2373,6 +2509,18 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER, "Dimensionar com valores inteiros" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SCALE_INTEGER_SCALING, + "Arredonde para baixo ou para cima para o próximo inteiro. 'Inteligente' reduzirá a escala quando a imagem é cortada demais." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER_SCALING_UNDERSCALE, + "Reduzir escala" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER_SCALING_OVERSCALE, + "Aumentar escala" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER_SCALING_SMART, "Inteligente" @@ -2397,6 +2545,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CONFIG, "Configuração" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_SQUARE_PIXEL, + "PAR 1:1 (%u:%u DAR)" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CORE_PROVIDED, "Fornecida pelo núcleo" @@ -2427,6 +2579,22 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y, "Posição Y personalizada da proporção de tela" ) +MSG_HASH( + MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_X, + "Deslocamento do eixo X do ponto de âncora da viewport" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_X, + "Deslocamento do eixo X do ponto de âncora da viewport" + ) +MSG_HASH( + MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_Y, + "Deslocamento do eixo Y do ponto de âncora da viewport" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_Y, + "Deslocamento do eixo Y do ponto de âncora da viewport" + ) #if defined(RARCH_MOBILE) #endif MSG_HASH( @@ -2527,6 +2695,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_ADAPTIVE_VSYNC, "A sincronização vertical está ativada até que o desempenho caia abaixo da taxa de atualização alvo. Pode minimizar os travamentos quando o desempenho cai abaixo do tempo real e seja mais eficiente em termos de energia." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FRAME_DELAY, + "Atraso de Quadro" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FRAME_DELAY_AUTO, "Atraso automático de quadro" @@ -2640,10 +2812,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_RESPECT_SILENT_MODE, "Silenciar todo o áudio no Modo Silencioso." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Silenciar no avanço rápido" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, "Silenciar automaticamente o áudio ao usar o avanço rápido." @@ -2903,6 +3071,18 @@ MSG_HASH( MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME, "Ajuste o volume do fluxo de áudio." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_STREAM_STATE_NONE, + "Estado: N/A" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_STREAM_STATE_STOPPED, + "Estado: Parado" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_STREAM_STATE_PLAYING, + "Estado: Reproduzindo" + ) /* Settings > Audio > Menu Sounds */ @@ -2957,6 +3137,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_REMAP_BINDS_ENABLE, "Substitua os vínculos da entrada com os vínculos definidos para o núcleo atual." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_REMAP_SORT_BY_CONTROLLER_ENABLE, + "Ordenar remapeamento por controle" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_REMAP_SORT_BY_CONTROLLER_ENABLE, + "Os remapeamento só serão aplicados ao controle ativo no qual foram salvos." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_AUTODETECT_ENABLE, "Auto configuração" @@ -2966,12 +3154,28 @@ MSG_HASH( "Configura automaticamente os controles que possuem um perfil, estilo Plug-and-Play." ) #if defined(HAVE_DINPUT) || defined(HAVE_WINRAWINPUT) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_NOWINKEY_ENABLE, + "Desativar teclas de atalho do Windows (requer reinício)" + ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_NOWINKEY_ENABLE, "Mantenha as combinações das teclas de atalho dentro do aplicativo." ) #endif #ifdef ANDROID +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_SELECT_PHYSICAL_KEYBOARD, + "Selecione teclado físico" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_SELECT_PHYSICAL_KEYBOARD, + "Use este dispositivo como teclado físico e não como um controle." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_INPUT_SELECT_PHYSICAL_KEYBOARD, + "Se RetroArch identificar um teclado como algum tipo de controle, esta configuração pode ser usada para forçar RetroArch ajustar o dispositivo mal identificado como um teclado.\nIsso pode ser útil se você estiver tentando emular um computador em algum dispositivo Android TV e também possuir um teclado físico que pode ser anexado ao dispositivo." + ) #endif MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_SENSORS_ENABLE, @@ -3061,6 +3265,18 @@ MSG_HASH( MSG_INPUT_BIND_PRESS, "Pressione uma tecla do teclado, mouse ou controle" ) +MSG_HASH( + MSG_INPUT_BIND_RELEASE, + "Solte todas as teclas e os botões!" + ) +MSG_HASH( + MSG_INPUT_BIND_TIMEOUT, + "Tempo de espera" + ) +MSG_HASH( + MSG_INPUT_BIND_HOLD, + "Segurar" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_TURBO_PERIOD, "Período do turbo" @@ -3085,6 +3301,38 @@ MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_TURBO_MODE, "Selecione o comportamento geral do modo turbo." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TURBO_MODE_CLASSIC, + "Clássico" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TURBO_MODE_CLASSIC_TOGGLE, + "Clássico (Alternar)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TURBO_MODE_SINGLEBUTTON, + "Botão Único (Alternar)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TURBO_MODE_SINGLEBUTTON_HOLD, + "Botão Único (Segurar)" + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_TURBO_MODE_CLASSIC, + "Modo clássico, operação com dois botões. Segure um botão aperte o botão Turbo para ativar a sequência de pressionar-soltar.\nO botão Turbo pode ser atribuído em Configurações/Entrada/Controles da Porta 1." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_TURBO_MODE_CLASSIC_TOGGLE, + "Modo alternar clássico, operação com dois botões. Segure um botão e aperte o botão Turbo para ativar o turbo para esse botão. Para desativar o Turbo: segure o botão e aperte o botão Turbo novamente.\nO Turbo pode ser atribuído em Configurações/Entrada/Controles da Porta 1." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_TURBO_MODE_SINGLEBUTTON, + "Modo Alternar. Pressione o botão Turbo uma vez para ativar a sequência de pressionar-soltar, pressione mais uma vez para desligar.\nO Turbo pode ser atribuído em Configurações/Entrada/Controles da Porta 1." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_TURBO_MODE_SINGLEBUTTON_HOLD, + "Modo segurar. A sequência de pressionar-soltar para o botão padrão fica ativa enquanto o botão Turbo for pressionado.\nO Turbo pode ser atribuído em Configurações/Entrada/Controles da Porta 1.\nPara emular a função autofire da era do computador doméstico, defina o Turbo e os botões padrão para serem iguais ao botão de disparo do joystick." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_TURBO_DEFAULT_BUTTON, "Botão padrão de turbo" @@ -3105,6 +3353,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_TURBO_FIRE_SETTINGS, "Modo turbo" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_TURBO_FIRE_SETTINGS, + "Alterar configurações do turbo.\nNota: a função turbo requer um mapeamento de um botão turbo para seu dispositivo de entrada no menu correspondente 'Controles da porta x'." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_HAPTIC_FEEDBACK_SETTINGS, "Resposta háptica e vibração" @@ -3125,6 +3377,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_HOTKEY_BINDS, "Teclas de atalho" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_HOTKEY_BINDS, + "Altera as configurações e as atribuições das teclas de atalho, como ativar o menu durante o jogo." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_USER_BINDS, "Controle da porta %u" @@ -3238,10 +3494,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, "Ativar menu" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Alterna a exibição atual entre menu e conteúdo em execução." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, "Sair (atalho do controle)" @@ -3318,10 +3570,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, "Pausar" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Alterna entre os estados pausado ​​e não pausado do conteúdo em execução." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, "Avanço do Quadro" @@ -3488,6 +3736,38 @@ MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_STREAMING_TOGGLE, "Inicia ou interrompe o transmissão da sessão atual para uma plataforma de vídeo online." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_PLAY_REPLAY_KEY, + "Reproduzir Replay" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_META_PLAY_REPLAY_KEY, + "Reproduzir arquivo de replay do slot selecionado." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_RECORD_REPLAY_KEY, + "Gravar replay" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_META_RECORD_REPLAY_KEY, + "Gravar arquivo de replay no slot selecionado." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_HALT_REPLAY_KEY, + "Interromper Gravação/Replay" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_META_HALT_REPLAY_KEY, + "Interrompe gravação/reprodução do replay atual." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_REPLAY_SLOT_PLUS, + "Próximo Slot de Replay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_REPLAY_SLOT_MINUS, + "Slot de Replay Anterior" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE, "Captura do mouse (alternar)" @@ -4075,6 +4355,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_SAVE, "Salvar jogo automaticamente" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_LOAD, + "Carregar jogo automaticamente" + ) MSG_HASH( MENU_ENUM_SUBLABEL_SAVESTATE_AUTO_LOAD, "Carrega o último jogo salvo automaticamente na inicialização do RetroArch." @@ -4178,6 +4462,18 @@ MSG_HASH( MENU_ENUM_SUBLABEL_LIBRETRO_LOG_LEVEL, "Define o nível de registro de eventos para os núcleos. Se o nível do registro enviado por um núcleo for abaixo deste valor, este é ignorado." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOG_VERBOSITY_DEBUG, + "0 (Depuração)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOG_VERBOSITY_WARNING, + "2 (Aviso)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOG_VERBOSITY_ERROR, + "3 (Erro)" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LOG_TO_FILE, "Registrar em arquivo" @@ -4213,10 +4509,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "Filtrar extensões desconhecidas" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Utilizar o reprodutor de mídia integrado" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Filtrar por núcleo atual" @@ -4225,6 +4517,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY, "Lembrar do último diretório usado" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Utilizar o reprodutor de mídia integrado" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Utilizar o visualizador de imagem integrado" + ) /* Settings > Frame Throttle */ @@ -5082,10 +5382,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO, "Pausar conteúdo quando o menu estiver ativado" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Pause o conteúdo em execução no momento caso o menu esteja ativo." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, "Retornar ao conteúdo ao usar salvamento" @@ -6131,6 +6427,34 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEEVOS_APPEARANCE_ANCHOR, "Posição" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_APPEARANCE_ANCHOR_TOPLEFT, + "Superior Esquerdo" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_APPEARANCE_ANCHOR_TOPCENTER, + "Centro Superior" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_APPEARANCE_ANCHOR_TOPRIGHT, + "Superior Direito" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_APPEARANCE_ANCHOR_BOTTOMLEFT, + "Inferior esquerdo" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_APPEARANCE_ANCHOR_BOTTOMCENTER, + "Centro inferior" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_APPEARANCE_ANCHOR_BOTTOMRIGHT, + "Inferior direito" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_APPEARANCE_PADDING_AUTO, + "Preenchimento alinhado" + ) /* Settings > Achievements > Visibility */ @@ -6138,6 +6462,18 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SETTINGS, "Visibilidade" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SUMMARY, + "Resumo de inicialização" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SUMMARY_ALLGAMES, + "Todos os jogos identificados" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_VERBOSE_ENABLE, + "Mensagens detalhadas" + ) /* Settings > Network */ @@ -6868,7 +7204,11 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Navegador de arquivos" + "Diretório inicial" + ) +MSG_HASH( /* FIXME Not RGUI specific */ + MENU_ENUM_LABEL_VALUE_RGUI_CONFIG_DIRECTORY, + "Arquivos de configuração" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH, @@ -7079,10 +7419,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT, "Formato da presença rica do conteúdo" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "Define as informações que serão compartilhadas do conteúdo em execução." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT, @@ -7247,6 +7583,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_LIST, "Análise configurável com base nos nomes do conteúdo. Não requer que os conteúdos coincidam ao banco de dados." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SCAN_ENTRY, + "Escanear" + ) /* Import Content > Scan File */ @@ -7743,6 +8083,26 @@ MSG_HASH( MENU_ENUM_SUBLABEL_REPLAY_SLOT, "Altera o compartimento do jogo salvo selecionado atualmente." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAY_REPLAY, + "Reproduzir Replay" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAY_REPLAY, + "Reproduzir arquivo de replay do slot selecionado." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORD_REPLAY, + "Gravar replay" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RECORD_REPLAY, + "Gravar arquivo de replay no slot selecionado." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HALT_REPLAY, + "Interromper Gravação/Replay" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES, "Adicionar aos favoritos" @@ -7795,18 +8155,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_OPTIONS, "Configurações do núcleo" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Altera as opções para o conteúdo que está sendo executado." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, "Controles" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Altera os controles para o conteúdo que está sendo executado." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, "Trapaças" @@ -8523,6 +8875,26 @@ MSG_HASH( /* Quick Menu > Overrides */ +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERRIDE_FILE_INFO, + "Arquivo de predefinição ativo" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OVERRIDE_FILE_INFO, + "O arquivo de predefinição atual está em uso." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERRIDE_FILE_LOAD, + "Carregar arquivo de predefinição" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OVERRIDE_FILE_LOAD, + "Carregar e substituir configuração atual." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERRIDE_FILE_SAVE_AS, + "Salvar arquivo de predefinição como" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CORE, "Salvar personalizações do núcleo" @@ -8539,6 +8911,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR, "Salva um arquivo de configuração que será aplicado a todo o conteúdo carregado no mesmo diretório que o arquivo atual. Terá prioridade sobre a configuração principal." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMOVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR, + "Remover predefinição do diretório de conteúdo" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_GAME, "Salvar personalizações de jogo" @@ -9326,6 +9702,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_MENU_RGUI_FULL_WIDTH_LAYOUT, "Redimensiona e posiciona as entradas do menu para aproveitar melhor o espaço disponível na tela. Desabilite isso para usar a disposição clássica de duas colunas de largura fixa." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_LINEAR_FILTER, + "Filtro linear" + ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_LINEAR_FILTER, "Adiciona um leve desfoque para suavizar arestas dos pixels no menu." @@ -9346,17 +9726,25 @@ MSG_HASH( MENU_ENUM_SUBLABEL_MENU_RGUI_ASPECT_RATIO, "Seleciona a proporção do menu. As proporções widescreen aumentam a resolução horizontal da interface do menu. (pode exigir uma reinicialização se a opção \"Bloquear proporção de exibição do menu\" estiver desabilitada)" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_RGUI_ASPECT_RATIO_LOCK, + "Bloquear proporção de tela" + ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_RGUI_ASPECT_RATIO_LOCK, "Garante que o menu seja sempre exibido com a proporção correta. Se desativado, o menu rápido será esticado para corresponder ao conteúdo atualmente carregado." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RGUI_MENU_COLOR_THEME, + "Cor do Tema" + ) MSG_HASH( MENU_ENUM_SUBLABEL_RGUI_MENU_COLOR_THEME, "Define o tema de cores. \"Personalizado\" permite o uso dos arquivos de predefinição de temas." ) MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "Habilita o conteúdo executado no fundo do Menu Rápido. Desativar a transparência pode alterar as cores do tema." + MENU_ENUM_LABEL_VALUE_MENU_RGUI_TRANSPARENCY, + "Transparência" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, @@ -9473,6 +9861,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RGUI_ASPECT_RATIO_16_10_CENTRE, "16:10 (centralizado)" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RGUI_ASPECT_RATIO_21_9_CENTRE, + "21:9 (centralizado)" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RGUI_ASPECT_RATIO_3_2_CENTRE, "3:2 (centralizado)" @@ -9752,6 +10144,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_XMB_RIBBON_ENABLE, "Seleciona um efeito de plano de fundo animado. Pode exigir mais processamento gráfico. Se o desempenho for insatisfatório, desligue este efeito ou reverta para um mais simples." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME, + "Cor do Tema" + ) MSG_HASH( MENU_ENUM_SUBLABEL_XMB_VERTICAL_THUMBNAILS, "Exibe a miniatura esquerda sob a direita, no lado direito da tela." @@ -9907,6 +10303,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_ICE_COLD, "Gelado" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Cinza escuro" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Cinza claro" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -9926,6 +10330,35 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "As listas de reprodução serão reorganizadas em ordem alfabética após remover o componente do fabricante de seus nomes." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "Miniatura secundária" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "Substitui o painel de metadados do conteúdo por outra miniatura." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "Reduzir textos longos dos metadados" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "Ao habilitar esta opção, cada elemento dos metadados de um conteúdo a ser exibido na barra direita das listas de reprodução (núcleo associado, tempo de jogo...) vai ocupar apenas uma linha, cadeias que excedem a largura da barra se moverão automaticamente. Desabilitando, cada elemento dos metadados é apresentado estaticamente, estendendo as linhas conforme necessário." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Fator de escala de miniaturas" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "Altera o tamanho da barra de miniaturas." + ) + +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Cor do Tema" + ) MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Define o tema de cores." @@ -9974,30 +10407,7 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_PURPLE_RAIN, "Chuva Roxa" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "Miniatura secundária" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "Substitui o painel de metadados do conteúdo por outra miniatura." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "Reduzir textos longos dos metadados" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "Ao habilitar esta opção, cada elemento dos metadados de um conteúdo a ser exibido na barra direita das listas de reprodução (núcleo associado, tempo de jogo...) vai ocupar apenas uma linha, cadeias que excedem a largura da barra se moverão automaticamente. Desabilitando, cada elemento dos metadados é apresentado estaticamente, estendendo as linhas conforme necessário." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Fator de escala de miniaturas" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "Altera o tamanho da barra de miniaturas." - ) + /* MaterialUI: Settings > User Interface > Appearance */ @@ -10045,6 +10455,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_MATERIALUI_AUTO_ROTATE_NAV_BAR, "Move automaticamente a barra de navegação no lado direito da tela na orientação em modo retrato." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME, + "Cor do Tema" + ) MSG_HASH( MENU_ENUM_SUBLABEL_MATERIALUI_MENU_TRANSITION_ANIMATION, "Habilita os efeitos de animação ao navegar entre diferentes opções de menu." @@ -10918,10 +11332,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_USER, "Usuário" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Utilizar o visualizador de imagem integrado" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, "Máximo de imagens na cadeia de troca" @@ -11045,14 +11455,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Selecionar de uma lista de reprodução" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Continuar" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Continua a execução do conteúdo atual e sai do menu rápido." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "Ver lista de %u coincidências" @@ -12527,6 +12929,26 @@ MSG_HASH( MSG_ACHIEVEMENT_UNLOCKED, "Conquista desbloqueada" ) +MSG_HASH( + MSG_LEADERBOARD_STARTED, + "Tentativa do ranking iniciou" + ) +MSG_HASH( + MSG_LEADERBOARD_FAILED, + "Tentativa do ranking falhou" + ) +MSG_HASH( + MSG_LEADERBOARD_SUBMISSION, + "Enviado %s para %s" /* Submitted [value] for [leaderboard name] */ + ) +MSG_HASH( + MSG_LEADERBOARD_RANK, + "Classificação: %d" /* Rank: [leaderboard rank] */ + ) +MSG_HASH( + MSG_LEADERBOARD_BEST, + "Melhor: %s" /* Best: [value] */ + ) MSG_HASH( MSG_CHANGE_THUMBNAIL_TYPE, "Alterar o tipo de miniatura" @@ -12835,6 +13257,30 @@ MSG_HASH( MSG_CHEEVOS_HARDCORE_MODE_ENABLE, "Modo Hardcore habilitado: jogos salvos e rebobinamento foram desativados." ) +MSG_HASH( + MSG_CHEEVOS_UNSUPPORTED_COUNT, + "%d não suportado" +) +MSG_HASH( + MSG_CHEEVOS_HARDCORE_PAUSED_MANUAL_FRAME_DELAY, + "Hardcore pausado. Não é permitido definir manualmente o atraso de quadro de vídeo." + ) +MSG_HASH( + MSG_CHEEVOS_HARDCORE_PAUSED_SYSTEM_NOT_FOR_CORE, + "Hardcore pausado. Você não pode ganhar conquistas de hardcore para %s usando %s" + ) +MSG_HASH( + MSG_CHEEVOS_GAME_NOT_IDENTIFIED, + "RetroAchievements: Jogo não pôde ser identificado." + ) +MSG_HASH( + MSG_CHEEVOS_GAME_LOAD_FAILED, + "RetroAchievements: falha ao carregar jogo %s" + ) +MSG_HASH( + MSG_CHEEVOS_CHANGE_MEDIA_FAILED, + "RetroAchievements: falha ao alterar a mídia %s" + ) MSG_HASH( MSG_RESAMPLER_QUALITY_LOWEST, "Muito baixa" @@ -12887,6 +13333,10 @@ MSG_HASH( MSG_MANUAL_CONTENT_SCAN_DAT_FILE_LOAD_ERROR, "Falha ao carregar o arquivo DAT do arcade (o formato é inválido?)" ) +MSG_HASH( + MSG_MANUAL_CONTENT_SCAN_INVALID_CONTENT, + "Nenhum conteúdo válido encontrado." + ) MSG_HASH( MSG_MANUAL_CONTENT_SCAN_START, "Analisando conteúdo: " diff --git a/intl/msg_hash_pt_pt.h b/intl/msg_hash_pt_pt.h index a2d102e02073..521e95fe3667 100644 --- a/intl/msg_hash_pt_pt.h +++ b/intl/msg_hash_pt_pt.h @@ -3037,14 +3037,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "Extensões de filtro desconhecidas" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Usar o reprodutor multimédia integrado" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Filtrar pelo núcleo atual" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Usar o reprodutor multimédia integrado" + ) /* Settings > Frame Throttle */ @@ -3740,7 +3740,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Explorador de ficheiros" + "Pasta inicial" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_CONFIG_DIRECTORY, @@ -3939,10 +3939,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, "Retomar" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Retomar a execução do conteúdo atual e deixar o 'Menu rápido'." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, "Reiniciar" @@ -3991,18 +3987,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_UNDO_SAVE_STATE, "Se o estado foi sobrescrito, ele voltará ao estado de gravação anterior." ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Altera as opções para a execução de conteúdo atual." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, "Mapeamento de teclas" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Altera as teclas para a execução de conteúdo atual." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, "Batota" @@ -4619,6 +4607,8 @@ MSG_HASH( "Quando ativado, cada item de metadados de conteúdo apresentado na barra lateral direita das listas de reprodução (núcleo associado, tempo de reprodução) ocupará uma única linha, e as cadeias que excedam a largura disponível serão automaticamente deslocadas. Quando desativado, cada item de metadados será exibido estaticamente, ocupando tantas linhas quantas forem necessárias." ) + + /* MaterialUI: Settings > User Interface > Appearance */ @@ -4949,14 +4939,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Selecionar da Lista de Reprodução" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Retomar" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Retomar a execução do conteúdo atual e sair do 'Menu rápido'." - ) MSG_HASH( /* FIXME Still exists in a comment about being removed */ MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_FOOTER_OPACITY, "Opacidade do rodapé" diff --git a/intl/msg_hash_ro.h b/intl/msg_hash_ro.h index b94f29140121..88b95f049553 100644 --- a/intl/msg_hash_ro.h +++ b/intl/msg_hash_ro.h @@ -415,6 +415,8 @@ /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ diff --git a/intl/msg_hash_ru.h b/intl/msg_hash_ru.h index 7673349a2e6f..fcba7670cff8 100644 --- a/intl/msg_hash_ru.h +++ b/intl/msg_hash_ru.h @@ -2938,23 +2938,31 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_RESPECT_SILENT_MODE, - "Приглушать все звуки в беззвучном режиме." + "Заглушать аудио в беззвучном режиме." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Заглушать при ускорении" + "Заглушать звук при перемотке вперёд" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, - "Автоматически заглушать звук при ускоренной перемотке." + "Автоматически заглушать аудио при перемотке вперёд." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Ускорять при перемотке вперёд" + "Ускорять звук при перемотке вперёд" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, - "Ускорять звук при перемотке вперёд. Предотвращает искажения, но смещает высоту звука." + "Ускорять аудио при использовании перемотки вперёд. Предотвращает треск, но изменяет высоту звука." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_REWIND_MUTE, + "Заглушать звук при перемотке назад" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_REWIND_MUTE, + "Автоматически заглушать аудио при обратной перемотке." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, @@ -3776,7 +3784,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Переключает экран между отображением меню и запущенным контентом." + "Переключение между отображением меню и контентом." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, @@ -3856,7 +3864,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Приостанавливает или возобновляет текущий контент." + "Переключение между приостановкой и выполнением контента." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, @@ -5009,14 +5017,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "Фильтровать файлы в браузере файлов по поддерживаемым расширениям." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Встроенный медиаплеер" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Фильтрация по текущему ядру" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_FILTER_BY_CURRENT_CORE, + "Фильтровать отображаемые в браузере файлы по текущему ядру." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY, "Запоминать путь к начальному каталогу" @@ -5025,6 +5033,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, "При загрузке контента открывать браузер файлов в последнем использованном каталоге. Путь будет сброшен к стандартному значению при перезапуске RetroArch." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Встроенный медиаплеер" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Встроенный просмотр изображений" + ) /* Settings > Frame Throttle */ @@ -6144,7 +6160,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Приостанавливать запущенный контент при вызове меню." + "Приостанавливать контент при вызове меню." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, @@ -6505,7 +6521,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "Показывать плейлисты (требуется перезапуск для Ozone/XMB)" + "Показывать опцию 'Плейлисты' в главном меню. Игнорируется в GLUI, если включены вкладки плейлистов и панель навигации." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLIST_TABS, + "Показывать вкладки плейлистов" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLIST_TABS, + "Показывать плейлисты на вкладках. Не влияет на RGUI. Для GLUI должна быть включена панель навигации. Требуется перезапуск для Ozone/XMB." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, @@ -6985,14 +7009,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "Показывать 'Пользователь'" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "Значки в плейлистах" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "Тип иконки, отображаемый для плейлиста." - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "Показать настройки 'Пользователя'." @@ -7957,11 +7973,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SCAN_SERIAL_AND_CRC, - "Сверять CRC при сканировании возможных дублей" + "Сканировать с CRC для исключения повторов" ) MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_SERIAL_AND_CRC, - "Иногда серийные номера образов дублируются, в частности для игр PSP/PSN. При сканировании только по серийным номерам возможна привязка контента к неправильной системе. Опция добавляет проверку CRC, которая ощутимо замедляет сканирование, но повышает его точность." + "Некоторые образы могут иметь одинаковый серийный номер, в частности игры PSP/PSN. Сканирование только по серийным номерам может соотносить контент с неправильной системой. Опция добавляет проверку CRC, которая существенно замедляет сканирование, но делает его точней." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LIST, @@ -8220,7 +8236,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Браузер файлов" + "Начальный каталог" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, @@ -8465,7 +8481,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "Выбор передаваемой информации о запущенном контенте." + "Выбор передаваемой информации о контенте." ) MSG_HASH( @@ -9065,7 +9081,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Закрыть быстрое меню и возобновить текущий контент." + "Закрыть быстрое меню и возобновить контент." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, @@ -9081,7 +9097,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Закрывает текущий контент. Несохранённые данные могут быть утеряны." + "Закрыть контент. Может привести к потере несохранённых данных." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, @@ -9217,7 +9233,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Настройка опций для загруженного контента." + "Изменение настроек для контента." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, @@ -9225,7 +9241,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Настройка управления для текущего контента." + "Изменение управления для контента." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, @@ -9851,7 +9867,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_HELP_SHADER_WATCH_FOR_CHANGES, - "Отслеживать изменения в файлах шейдера. После сохранения изменений шейдера в память, он будет автоматически перекомпилирован и применён к запущенному контенту." + "Отслеживать изменения в файлах шейдера. При сохранении изменений шейдера в память он автоматически будет повторно скомпилирован и применён к контенту." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_REMEMBER_LAST_DIR, @@ -11080,7 +11096,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "Отображать в фоне запущенный контент при вызове быстрого меню. Отключение прозрачности может изменить цвета темы." + "Включить отображение контента в фоне при вызове быстрого меню. Отключение прозрачности может влиять на цвета темы." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, @@ -11376,6 +11392,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS, "Тип миниатюры для отображения слева." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, + "Иконка миниатюр" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, + "Тип отображаемой в плейлистах иконки миниатюр." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER, "Динамические обои" @@ -11643,6 +11667,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_MIDGAR, "Мидгар" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Тёмно-серая" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Светло-серая" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -11670,6 +11702,31 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "Плейлисты будут пересортированы в алфавитном порядке после удаления названий компаний." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "Дополнительный эскиз" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "Заменяет область метаданных дополнительной миниатюрой." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "Скроллинг метаданных контента" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "Если включено, метаданные в правой части плейлиста (привязка ядра, время работы) занимают одну строку; записи больше ширины боковой панели будут отображены бегущей строкой. Если выкл., все метаданные будут отображены статически, занимая необходимое число строк." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Коэффициент масштабирования миниатюр" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "Изменяет размер области миниатюр." + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Цветовая тема" @@ -11690,10 +11747,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_GRUVBOX_DARK, "Gruvbox тёмная" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, - "Селен" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SOLARIZED_DARK, "Solarized тёмная" @@ -11711,30 +11764,11 @@ MSG_HASH( "Светло-серая" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "Дополнительный эскиз" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "Заменяет область метаданных дополнительной миниатюрой." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "Скроллинг метаданных контента" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "Если включено, метаданные в правой части плейлиста (привязка ядра, время работы) занимают одну строку; записи больше ширины боковой панели будут отображены бегущей строкой. Если выкл., все метаданные будут отображены статически, занимая необходимое число строк." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Коэффициент масштабирования миниатюр" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "Изменяет размер области миниатюр." + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, + "Селен" ) + /* MaterialUI: Settings > User Interface > Appearance */ MSG_HASH( @@ -12698,10 +12732,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_KEYBOARD, "Клавиатура" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Встроенный просмотр изображений" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, "Максимум изображений в свопчейне" @@ -12837,14 +12867,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Выбрать из плейлиста" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Продолжить" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Закрыть быстрое меню и возобновить текущий контент." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "Просмотр списка %u совпадений" diff --git a/intl/msg_hash_si.h b/intl/msg_hash_si.h index fd8445ed98e1..a7690e5bcb9e 100644 --- a/intl/msg_hash_si.h +++ b/intl/msg_hash_si.h @@ -491,6 +491,8 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ diff --git a/intl/msg_hash_sk.h b/intl/msg_hash_sk.h index fc14578d52fb..c1f435fde96a 100644 --- a/intl/msg_hash_sk.h +++ b/intl/msg_hash_sk.h @@ -2538,10 +2538,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, "Pauza" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Zapína/vypína pozastavenie bežiaceho obsahu." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, @@ -4128,7 +4124,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Správca súborov" + "Hlavný adresár" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH, @@ -5547,9 +5543,26 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_FAMICOM_RED, "Rodinná červená" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Šedá tmavá" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Šedá svetlá" + ) /* Ozone: Settings > User Interface > Appearance */ +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "Sekundárna miniatúra" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Mierka zväčšenia miniatúry" + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Farebná téma" @@ -5578,14 +5591,7 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_GRAY_LIGHT, "Šedá svetlá" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "Sekundárna miniatúra" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Mierka zväčšenia miniatúry" - ) + /* MaterialUI: Settings > User Interface > Appearance */ @@ -6165,10 +6171,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_ASPECT, "Vynútiť pomer strán" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Pokračovať" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_DELETE_OPTION, "Vymazať túto zhodu" diff --git a/intl/msg_hash_sr.h b/intl/msg_hash_sr.h index 1474715c2394..51ca2db8a61e 100644 --- a/intl/msg_hash_sr.h +++ b/intl/msg_hash_sr.h @@ -2104,7 +2104,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Pregledač datoteka" + "Početni direktorijum" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_DIRECTORY, @@ -2271,6 +2271,8 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ diff --git a/intl/msg_hash_sv.h b/intl/msg_hash_sv.h index e0e936581193..a7b84fbabc25 100644 --- a/intl/msg_hash_sv.h +++ b/intl/msg_hash_sv.h @@ -1705,6 +1705,10 @@ MSG_HASH( MENU_ENUM_LABEL_HELP_AUDIO_DRIVER_PULSE, "PulseAudio-drivrutin. Om systemet använder PulseAudio, se till att använda denna drivrutin istället för t.ex. ALSA." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_AUDIO_DRIVER_PIPEWIRE, + "PipeWire-drivrutin. Om systemet använder PipeWire, se till att använda den här drivrutinen istället för t.ex. PulseAudio." + ) MSG_HASH( MENU_ENUM_LABEL_HELP_AUDIO_DRIVER_JACK, "Drivrutinen för Jack Audio anslutningssats." @@ -1890,10 +1894,106 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION, "Insättning av svart bildruta" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_BLACK_FRAME_INSERTION, + "VARNING: Snabbt flimmer kan orsaka kvarstående bild på vissa skärmar. Använd på egen risk // Infoga svarta ramar mellan bildrutorna. Kan kraftigt minska rörelseoskärpa genom att emulera CRT-scanning, men på bekostnad av ljusstyrkan." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VIDEO_BLACK_FRAME_INSERTION, + "Infogar svart(a) ram(ar) mellan bildrutorna för ökad rörelseklarhet. Använd endast det alternativ som är avsett för din aktuella bildskärms uppdateringsfrekvens. Används inte vid uppdateringsfrekvenser som inte är multiplar av 60 Hz, t. ex. 144 Hz, 165 Hz osv. Kombinera inte med Swap Interval > 1, subframes, Frame Delay eller Sync to Exact Content Framerate. Att låta systemets VRR vara på är ok, men inte med den inställningen. Om du märker - någon - tillfällig bildretention bör [...]" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_120, + "1 - För 120Hz skärmuppdateringsfrekvens" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_180, + "2 - För 180Hz skärmuppdateringsfrekvens" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_240, + "3 - För 240Hz skärmuppdateringsfrekvens" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_300, + "4 - För 300Hz skärmuppdateringsfrekvens" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_360, + "5 - För 360Hz skärmuppdateringsfrekvens" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_420, + "6 - För 420Hz skärmuppdateringsfrekvens" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_480, + "7 - För 480Hz skärmuppdateringsfrekvens" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_540, + "8 - För 540Hz skärmuppdateringsfrekvens" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_600, + "9 - För 600Hz skärmuppdateringsfrekvens" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_660, + "10 - För 660Hz skärmuppdateringsfrekvens" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_720, + "11 - För 720Hz skärmuppdateringsfrekvens" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_780, + "12 - För 780Hz skärmuppdateringsfrekvens" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_840, + "13 - För 840Hz skärmuppdateringsfrekvens" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_900, + "14 - För 900Hz skärmuppdateringsfrekvens" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION_VALUE_960, + "15 - För 960Hz skärmuppdateringsfrekvens" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_BFI_DARK_FRAMES, + "Justera antalet svarta bildrutor i den totala BFI-sekvensen för utskanning. Fler motsvarar högre rörelseklarhet, färre motsvarar högre ljusstyrka. Inte tillämpligt vid 120 Hz eftersom det bara finns totalt 1 BFI-bildruta att arbeta med. Inställningar som är högre än möjligt begränsar dig till det högsta möjliga för din valda uppdateringsfrekvens." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VIDEO_BFI_DARK_FRAMES, + "Justerar antalet svarta bildrutor som visas i BFI-sekvensen. Fler svarta bildrutor ökar rörelseklarheten men minskar ljusstyrkan. Inte tillämpligt vid 120 Hz eftersom det bara finns en enda extra 60 Hz-bildruta, så den måste vara svart, annars skulle BFI inte vara aktiv alls." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_SUBFRAMES, + "VARNING: Snabbt flimmer kan orsaka bildbeständighet på vissa skärmar. Använd på egen risk // Simulerar en grundläggande rullande scanline över flera underrutor genom att dela upp skärmen vertikalt och rendera varje del av skärmen beroende på hur många underrutor det finns." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VIDEO_SHADER_SUBFRAMES, + "Infogar extra shader-ram(ar) mellan bildrutorna för eventuella shader-effekter som är utformade för att köras snabbare än innehållshastigheten. Använd endast det alternativ som är avsett för din aktuella bildskärmsuppdateringsfrekvens. Används inte vid uppdateringsfrekvenser som inte är multiplar av 60 Hz, t. ex. 144 Hz, 165 Hz osv. Kombinera inte med Swap Interval > 1, BFI, Frame Delay eller Sync to Exact Content Framerate. Att låta systemets VRR vara på är ok, men inte den inst[...]" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_SUBFRAMES_VALUE_960, + "16 - För 960Hz skärmuppdateringsfrekvens" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_GPU_SCREENSHOT, "GPU-skärmdump" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SCAN_SUBFRAMES, + "VARNING: Snabbt flimmer kan orsaka bildbeständighet på vissa skärmar. Använd på egen risk // Simulerar en grundläggande rullande scanline över flera underrutor genom att dela upp skärmen vertikalt och rendera varje del av skärmen beroende på hur många underrutor det finns." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VIDEO_SCAN_SUBFRAMES, + "Simulerar en grundläggande rullande scanline över flera subframes genom att dela upp skärmen vertikalt och rendera varje del av skärmen enligt hur många subframes det finns från toppen av skärmen och nedåt." + ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_GPU_SCREENSHOT, "Skärmdumpar fångar GPU-skuggat material om det finns." @@ -2301,6 +2401,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER, "Heltalsskala" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SCALE_INTEGER, + "Skala video endast i heltalssteg. Basstorleken beror på core-rapporterad geometri och bildförhållande." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SCALE_INTEGER_AXIS, + "Skala antingen höjd eller bredd, eller både höjd och bredd. Halva steg gäller endast för källor med hög upplösning." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER_SCALING_UNDERSCALE, "Underskala" @@ -2447,6 +2555,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_ADAPTIVE_VSYNC, "VSynk är aktiverat tills prestandan faller under måluppdateringsfrekvensen. Kan minimera lagg när prestandan sjunker under realtid och vara mer energieffektiv." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VIDEO_FRAME_DELAY, + "Ställer in hur många millisekunder som ska sovas innan kärnan körs efter videopresentation. Minskar latensen på bekostnad av högre risk för stuttering.\nVärden 20 och högre behandlas som procentandelar för bildtid." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FRAME_DELAY_AUTO, "Automatisk bildfördröjning" @@ -2479,6 +2591,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_VRR_RUNLOOP_ENABLE, "Ingen avvikelse från kärnans efterfrågade timing. Använd för skärmar med variabel uppdateringsfrekvens (G-sync, FreeSync, HDMI 2.1 VRR)." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VRR_RUNLOOP_ENABLE, + "Synkronisera till exakt innehållsframerate. Det här alternativet motsvarar att tvinga fram x1-hastighet samtidigt som snabbspolning tillåts. Ingen avvikelse från den begärda uppdateringsfrekvensen, inget ljud Dynamic Rate Control." + ) /* Settings > Audio */ @@ -2556,18 +2672,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_RESPECT_SILENT_MODE, "Stäng av allt ljud i tyst läge." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Tyst vid Snabbspola framåt" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, "Stäng av ljudet automatiskt när snabbspolning framåt används." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Fortare vid Snabbspola framåt" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "Snabba upp ljudet vid snabbspolning framåt. Förhindrar knastrande men ändrar tonhöjd." @@ -2671,6 +2779,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_LATENCY, "Ljudfördröjning (ms)" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_LATENCY, + "Maximal ljudfördröjning i millisekunder. Drivrutinen strävar efter att hålla den faktiska latensen på 50 % av detta värde. Det kan hända att värdet inte uppfylls om ljuddrivrutinen inte kan tillhandahålla den angivna latensen." + ) #ifdef HAVE_MICROPHONE /* Settings > Audio > Input */ @@ -2678,6 +2790,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_MICROPHONE_ENABLE, "Mikrofon" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MICROPHONE_ENABLE, + "Aktivera ljudinmatning i kärnor som stöds. Har ingen overhead om kärnan inte använder en mikrofon." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MICROPHONE_DEVICE, "Enhet" @@ -2761,6 +2877,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_SYNC, "Synkronisera ljud. Rekommenderas." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_AUDIO_MAX_TIMING_SKEW, + "Maximum audio timing skew.\nDefinierar den maximala förändringen i ingångshastighet. Du kanske vill öka detta för att möjliggöra mycket stora förändringar i timing, till exempel att köra PAL-kärnor på NTSC-skärmar, på bekostnad av felaktig ljudhöjd.\nIngångshastighet definieras som:\ninput rate * (1,0 +/- (max timing skew))" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA, "Dynamisk ljudfrekvenskontroll" @@ -2769,6 +2889,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_RATE_CONTROL_DELTA, "Hjälper till att jämna ut brister i timing när ljud och video synkroniseras. Tänk på att korrekt synkronisering är nästan omöjlig att få till om den är inaktiverad." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_AUDIO_RATE_CONTROL_DELTA, + "Om detta värde sätts till 0 inaktiveras hastighetskontrollen. Alla andra värden styr delta för ljudfrekvensreglering.\nDefinierar hur mycket ingångsfrekvensen kan justeras dynamiskt. Inmatningshastigheten definieras som:\\inmatningshastighet * (1,0 +/- (hastighetskontroll delta))" + ) /* Settings > Audio > MIDI */ @@ -2859,6 +2983,26 @@ MSG_HASH( MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME, "Justera volymen på ljudströmmen." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_STREAM_STATE_NONE, + "Tillstånd: Inte tillgängligt" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_STREAM_STATE_STOPPED, + "Tillstånd: Stoppad" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_STREAM_STATE_PLAYING, + "Tillstånd: Spelar" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_STREAM_STATE_PLAYING_LOOPED, + "Tillstånd: Spelar (slinga)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_STREAM_STATE_PLAYING_SEQUENTIAL, + "Tillstånd: Spelar (sekventiellt)" + ) /* Settings > Audio > Menu Sounds */ @@ -2897,6 +3041,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_MAX_USERS, "Maximalt antal användare som stöds av RetroArch." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_INPUT_POLL_TYPE_BEHAVIOR, + "Påverkar hur input polling utförs i RetroArch.\nEarly - Input polling utförs innan ramen bearbetas.\nNormal - Input polling utförs när polling begärs.\nLate - Input polling utförs vid första begäran om inputstatus per ram.\nAtt ställa in den på 'Early' eller 'Late' kan resultera i mindre latens, beroende på din konfiguration. Kommer att ignoreras när du använder netplay." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_REMAP_BINDS_ENABLE, "Mappa om kontroller för denna kärna" @@ -3053,6 +3201,22 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_TURBO_MODE_SINGLEBUTTON_HOLD, "Singel knapp (Intryckt)" ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_TURBO_MODE_CLASSIC, + "Klassiskt läge, manövrering med två knappar. Håll in en knapp och tryck på Turbo-knappen för att aktivera tryck-släpp-sekvensen.\nTurbo-knappen kan tilldelas i Inställningar/Input/Port 1 Controls." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_TURBO_MODE_CLASSIC_TOGGLE, + "Klassiskt växlingsläge, tvåknappsmanövrering. Håll in en knapp och tryck på Turbo-knappen för att aktivera turbo för den knappen. För att inaktivera turbo: håll in knappen och tryck på Turbo-knappen igen.\nTurbo-knappen kan tilldelas i Inställningar/Input/Port 1 Controls." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_TURBO_MODE_SINGLEBUTTON, + "Växla läge. Tryck en gång på Turbo-knappen för att aktivera trycksekvensen för den valda standardknappen, tryck en gång till för att stänga av den.\nTurbo-knappen kan tilldelas i Inställningar/Input/Port 1 Controls." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_TURBO_MODE_SINGLEBUTTON_HOLD, + "Hållläge. Tryck-släpp-sekvensen för den valda standardknappen är aktiv så länge som Turbo-knappen hålls nedtryckt.\nTurbo-knappen kan tilldelas i Inställningar/Input/Port 1 Controls.\nFör att efterlikna autofire-funktionen från hemdatortiden, ställ in Turbo- och standardknapparna så att de är desamma som joystickens avfyrningsknapp." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_HAPTIC_FEEDBACK_SETTINGS, "Haptisk feedback/vibration" @@ -3218,10 +3382,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, "Visa/dölj meny" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Växlar den aktuella visningen mellan meny och innehåll som körs." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, "Avsluta (spelkontroll kombo)" @@ -3234,6 +3394,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, "Avsluta" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_META_QUIT_KEY, + "Stänger RetroArch och ser till att alla sparade data och konfigurationsfiler sparas på hårddisken." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_CLOSE_CONTENT_KEY, "Stäng Innehåll" @@ -3294,10 +3458,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, "Pausa" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Växlar innehåll som körs mellan pausat och icke pausat läge." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, @@ -3627,6 +3787,34 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_INDEX, "Enhetindex" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_RESERVED_DEVICE_NAME, + "Reserverad enhet för denna spelare" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_DEVICE_RESERVED_DEVICE_NAME, + "Den här kontrollenheten kommer att tilldelas den här spelaren, enligt reservationsläget." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DEVICE_RESERVATION_NONE, + "Ingen reservation" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DEVICE_RESERVATION_PREFERRED, + "Föredragen" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DEVICE_RESERVATION_RESERVED, + "Reserverad" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_RESERVATION_TYPE, + "Typ av enhetsreservation" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_DEVICE_RESERVATION_TYPE, + "Föredragen: om angiven enhet finns, kommer den att allokeras till denna spelare. Reserverad: ingen annan styrenhet kommer att tilldelas för denna spelare." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_REMAP_PORT, "Mappad Port" @@ -3794,8 +3982,24 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Antal bildrutor att köra före" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RUNAHEAD_MODE, + "Kör ytterligare kärnlogik för att minska latenstiden. Single Instance körs till en framtida bildruta och laddar sedan om det aktuella tillståndet. Second Instance behåller en kärninstans för enbart video i en framtida bildruta för att undvika problem med ljudstatus. Preemptive Frames kör tidigare bildrutor med ny indata när det behövs, för effektivitet." + ) #if !(defined(HAVE_DYNAMIC) || defined(HAVE_DYLIB)) +MSG_HASH( + MENU_ENUM_SUBLABEL_RUNAHEAD_MODE_NO_SECOND_INSTANCE, + "Kör ytterligare kärnlogik för att minska latenstiden. Single Instance körs till en framtida frame och laddar sedan om det aktuella tillståndet. Preemptive Frames kör tidigare ramar med ny indata när det behövs, för effektivitet." + ) #endif +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RUNAHEAD_MODE_SINGLE_INSTANCE, + "Enstaka instansläge" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RUNAHEAD_MODE_SECOND_INSTANCE, + "Läge för andra instans" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Dölj Run-Ahead Varningar" @@ -4027,6 +4231,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUTOSAVE_INTERVAL, "Spara automatiskt icke-flyktigt SaveRAM vid fasta intervaller (i sekunder)." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_REPLAY_CHECKPOINT_INTERVAL, + "Sparar automatiskt speltillståndet under inspelning av repriser med ett regelbundet intervall. Detta är inaktiverat som standard om inget annat anges. Intervallet mäts i sekunder. Ett värde på 0 avaktiverar inspelning av kontrollpunkter." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_INDEX, "Öka sparstatus-index automatiskt" @@ -4043,6 +4251,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SAVESTATE_MAX_KEEP, "Begränsa antalet sparstatusar som kommer att skapas när 'Öka statusindex automatiskt' är aktiverat. Om gränsen överskrids vid sparande av en ny status kommer den befintliga statusen med lägst index att raderas. Ett värde av '0' innebär att obegränsade statusar kommer att sparas." ) +MSG_HASH( + MENU_ENUM_SUBLABEL_REPLAY_MAX_KEEP, + "Begränsa antalet uppspelningar som skapas när ”Increment Replay Index Automatically” är aktiverat. Om gränsen överskrids vid inspelning av en ny uppspelning raderas den befintliga uppspelningen med lägst index. Ett värde på ”0” innebär att obegränsat antal repriser spelas in." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_SAVE, "Autospara status" @@ -4146,6 +4358,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_LIBRETRO_LOG_LEVEL, "Ange loggnivå för kärnor. Om en loggnivå som utfärdats av en kärna är under detta värde ignoreras den." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_LIBRETRO_LOG_LEVEL, + "Ställer in loggnivån för libretro-kärnor (GET_LOG_INTERFACE). Om en loggnivå som utfärdas av en libretro-kärna är lägre än libretro_log-nivån ignoreras den. DEBUG-loggar ignoreras alltid om inte verbose-läget är aktiverat (--verbose).\nDEBUG = 0\nINFO = 1\nWARN = 2\nERROR = 3" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LOG_VERBOSITY_DEBUG, "0 (Felsök)" @@ -4201,10 +4417,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "Filtrera filer som visas i filbläddraren till filändelser som stöds." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Använd intern mediaspelare" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Filtrera efter Kärna" @@ -4213,6 +4425,18 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY, "Kom ihåg senaste använda startkatalog" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, + "Öppna filbläddraren på den senast använda platsen när du laddar innehåll från startkatalogen. Obs: Platsen återställs till standard när RetroArch startas om." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Använd intern mediaspelare" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Använd inbyggd bildvisare" + ) /* Settings > Frame Throttle */ @@ -4228,6 +4452,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_FASTFORWARD_RATIO, "Snabbspola framåt-hastighet" ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_FASTFORWARD_RATIO, + "Den maximala hastighet med vilken innehållet körs när snabbspolning används. (T.ex. 5.0 för 60 fps innehåll => 300 fps tak).\nRetroArch kommer att gå i viloläge för att säkerställa att den maximala hastigheten inte överskrids. Lita inte på att detta tak är helt korrekt." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FASTFORWARD_FRAMESKIP, "Snabbspola framåt-bildrutshopp" @@ -4418,6 +4646,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_INPUTS, "Visa inmatningar på överlager" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_INPUTS, + "Visa registrerade ingångar på överlägget på skärmen. ”Touched” markerar överläggselement som trycks/klickas på. ”Fysisk (styrenhet)” visar faktiska indata som skickas till kärnorna, vanligtvis från en ansluten styrenhet/tangentbord." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_INPUTS_PHYSICAL, "Fysiska (spelkontroller)" @@ -4537,6 +4769,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_WIDGET_SCALE_AUTO, "Auto-skala Grafikwidgets" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_WIDGET_SCALE_FACTOR_FULLSCREEN, + "Tillämpa en manuell skalningsfaktor när du ritar grafikwidgets i helskärmsläge. Gäller endast när ”Skala grafikwidgets automatiskt” är inaktiverat. Kan användas för att öka eller minska storleken på dekorerade meddelanden, indikatorer och kontroller oberoende av själva menyn." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_WIDGET_SCALE_FACTOR_WINDOWED, + "Använd en manuell skalningsfaktor när du ritar displaywidgets i fönsterläge. Gäller endast när ”Skala grafikwidgets automatiskt” är inaktiverat. Kan användas för att öka eller minska storleken på dekorerade meddelanden, indikatorer och kontroller oberoende av själva menyn." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FPS_SHOW, "Visa bildhastighet" @@ -4838,10 +5078,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO, "Pausa innehåll när menyn är aktiv" ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Pausa innehållet som körs för närvarande om menyn är aktiv." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, "Återuppta innehållet efter att använt Spara status" @@ -5075,30 +5311,58 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_SETTINGS, "Visa 'Inställningar'" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_SETTINGS, + "Visa menyn ”Inställningar”. (Omstart krävs på Ozone/XMB)" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_SETTINGS_PASSWORD, "Ange lösenord för 'Inställningar'" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_SETTINGS_PASSWORD, + "Om du anger ett lösenord när du döljer inställningsfliken kan du senare återställa den från menyn genom att gå till fliken Huvudmeny, välja ”Aktivera inställningsfliken” och ange lösenordet." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_FAVORITES, "Visa 'Favoriter'" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_FAVORITES, + "Visa menyn ”Favoriter”. (Omstart krävs på Ozone/XMB)" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_IMAGES, "Visa 'Bilder'" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_IMAGES, + "Visa menyn ”Bilder”. (Omstart krävs på Ozone/XMB)" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_MUSIC, "Visa 'Musik'" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_MUSIC, + "Visa menyn ”Musik”. (Omstart krävs på Ozone/XMB)" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_VIDEO, "Visa 'Videor'" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_VIDEO, + "Visa menyn ”Videor”. (Omstart krävs på Ozone/XMB)" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_NETPLAY, "Visa 'Netplay'" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_NETPLAY, + "Visa menyn ”Netplay”. (Omstart krävs på Ozone/XMB)" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_HISTORY, "Visa 'Historik'" @@ -5107,6 +5371,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_ADD, "Visa 'Importera Innehåll'" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_ADD, + "Visa menyn ”Importera innehåll”. (Omstart krävs på Ozone/XMB)" + ) MSG_HASH( /* FIXME can now be replaced with MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_ADD */ MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_ADD_ENTRY, "Visa 'Importera Innehåll'" @@ -5129,7 +5397,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "Visa spellistor. (Omstart krävs på Ozone/XMB)" + "Visa spellistorna i huvudmenyn. Ignoreras i GLUI om flikar och navfält för spellistor är aktiverade." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLIST_TABS, + "Visa spellistflikar" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, @@ -5545,14 +5817,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "Visa 'Användare'" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "Spellistikoner" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "Typ av miniatyrbild för spellistikonen att visa." - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "Visa inställningar för 'Användare'." @@ -5707,6 +5971,18 @@ MSG_HASH( /* Settings > Accessibility */ +MSG_HASH( + MENU_ENUM_SUBLABEL_ACCESSIBILITY_ENABLED, + "Aktivera text-till-tal för att underlätta navigering i menyn." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCESSIBILITY_NARRATOR_SPEECH_SPEED, + "Text-till-tal-hastighet" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ACCESSIBILITY_NARRATOR_SPEECH_SPEED, + "Hastigheten för text-till-tal-rösten." + ) /* Settings > Power Management */ @@ -5724,10 +6000,18 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEEVOS_HARDCORE_MODE_ENABLE, "Hardcore läge" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_HARDCORE_MODE_ENABLE, + "Avaktiverar fusk, spola tillbaka, slowmotion och ladda sparade tillstånd. Prestationer som uppnås i hardcore-läget är unikt markerade så att du kan visa andra vad du har uppnått utan emulatorns hjälpfunktioner. Om du växlar den här inställningen under spelets gång startas spelet om." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEEVOS_LEADERBOARDS_ENABLE, "Topplistor" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_RICHPRESENCE_ENABLE, + "Skickar regelbundet kontextuell spelinformation till RetroAchievements webbplats. Har ingen effekt om ”Hardcore-läge” är aktiverat." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEEVOS_BADGES_ENABLE, "Prestationsemblem" @@ -5764,6 +6048,10 @@ MSG_HASH( /* suggestion for translators: translate as 'Play Again Mode' */ MENU_ENUM_LABEL_VALUE_CHEEVOS_START_ACTIVE, "Encore-läge" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_START_ACTIVE, + "Starta sessionen med alla prestationer aktiva (även de som tidigare har låsts upp)." + ) /* Settings > Achievements > Appearance */ @@ -5814,6 +6102,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_SETTINGS, "Ändra vilka meddelanden och element på skärmen som visas. Inaktiverar inte funktionalitet." ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_SUMMARY, + "Visar information om spelet som laddas och användarens aktuella framsteg.\n”Alla identifierade spel” visar en sammanfattning för spel utan publicerade prestationer." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SUMMARY_ALLGAMES, "Alla identifierade spel" @@ -5969,6 +6261,26 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NETPLAY_ALLOW_PAUSING, "Tillåt spelare att pausa under Netplay." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_NETPLAY_CHECK_FRAMES, + "Frekvensen i bildrutor med vilken netplay kommer att verifiera att värden och klienten är synkroniserade. Med de flesta kärnor har detta värde ingen synlig effekt och kan ignoreras. Med icke-bestämbara kärnor avgör detta värde hur ofta netplay-peers kommer att synkroniseras. Med buggiga kärnor kommer det att orsaka allvarliga prestandaproblem om detta värde sätts till något annat än noll. Ställ in på noll för att inte utföra några kontroller. Detta värde används endast på ne[...]" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN, + "Antalet bildrutor med inmatningslatens som netplay ska använda för att dölja nätverkslatens. Minskar jitter och gör netplay mindre CPU-krävande, men på bekostnad av märkbar fördröjning i inmatningen." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_NETPLAY_INPUT_LATENCY_FRAMES_MIN, + "Antalet bildrutor med inmatningsfördröjning som netplay ska använda för att dölja nätverksfördröjning.\nNär det här alternativet används i netplay fördröjer det lokal inmatning så att den bildruta som körs ligger närmare de bildrutor som tas emot från nätverket. Detta minskar jitter och gör netplay mindre CPU-intensivt, men till priset av en märkbar fördröjning av inmatningen." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, + "Det intervall av bildrutor med inmatningslatens som kan användas för att dölja nätverkslatens. Minskar jitter och gör netplay mindre CPU-krävande, men på bekostnad av oförutsägbar fördröjning i inmatningen." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, + "Det intervall av bildrutor med inmatningslatens som kan användas av netplay för att dölja nätverkslatens.\nOm det är inställt kommer netplay att justera antalet bildrutor med inmatningslatens dynamiskt för att balansera CPU-tid, inmatningslatens och nätverkslatens. Detta minskar jitter och gör netplay mindre CPU-intensivt, men till priset av oförutsägbar inmatningsfördröjning." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_NETPLAY_REQUEST_DEVICE_I, "Begär enhet %u" @@ -6031,6 +6343,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_FAVORITES_SIZE, "Favoriters storlek" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_FAVORITES_SIZE, + "Begränsa antalet poster i spellistan ”Favoriter”. När gränsen har nåtts förhindras nya poster att läggas till tills gamla poster har tagits bort. Om du ställer in ett värde på -1 tillåts ”obegränsade” poster.\nVARNING: Om du minskar värdet raderas befintliga poster!" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_SORT_ALPHABETICAL, "Sortera spellistor alfabetiskt" @@ -6051,6 +6367,18 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_SHOW_INLINE_CORE_NAME, "Visa associerade Kärnor i spellistor" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_SHOW_INLINE_CORE_NAME, + "Ange när poster i spellistan ska taggas med den aktuella associerade kärnan (om någon).\nDen här inställningen ignoreras när underetiketter för spellistor är aktiverade." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_SHOW_SUBLABELS, + "Visa ytterligare information för varje spellistepost, t. ex. aktuell kärnassociation och körtid (om tillgänglig). Har en varierande prestandapåverkan." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_SHOW_HISTORY_ICONS, + "Visa specifika ikoner för varje post i historik- och favoritspellistan. Har en varierande prestandapåverkan." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_CORE, "Kärna:" @@ -6124,8 +6452,12 @@ MSG_HASH( "sedan" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_SCAN_SERIAL_AND_CRC, - "Skanna kontrollerar CRC om det finns dubbletter" + MENU_ENUM_SUBLABEL_PLAYLIST_SUBLABEL_LAST_PLAYED_STYLE, + "Ställ in stilen för datum och tid som visas för tidsstämpelinformation för ”Senast spelad”. Alternativet ”(AM/PM)” har en liten påverkan på prestandan på vissa plattformar." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_FUZZY_ARCHIVE_MATCH, + "Vid sökning i spellistor efter poster som är associerade med komprimerade filer matchas endast arkivets filnamn istället för [filnamn]+[innehåll]. Aktivera detta för att undvika dubbla poster i innehållshistoriken när du laddar komprimerade filer." ) MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_SERIAL_AND_CRC, @@ -6139,6 +6471,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_PORTABLE_PATHS, "Portabla spellistor" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_PORTABLE_PATHS, + "Om alternativet är aktiverat och ”Filbläddrare”-katalogen också är vald sparas det aktuella värdet för parametern ”Filbläddrare” i spellistan. När spellistan laddas på ett annat system där samma alternativ är aktiverat jämförs värdet på parametern ”Filbläddrare” med spellistans värde; om det skiljer sig åt fixas spellistans sökvägar automatiskt." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_ALLOW_NON_PNG, "Tillåt alla bildtyper som stöds för miniatyrbilder" @@ -6154,10 +6490,18 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_DEFAULT_CORE, "Standard Kärna" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_MANAGER_DEFAULT_CORE, + "Ange vilken kärna som ska användas när innehåll startas via en spellistepost som inte har någon befintlig kärn-association." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_RESET_CORES, "Återställ kärnassociationer" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_MANAGER_RESET_CORES, + "Ta bort befintliga kärnassociationer för alla spellisteposter." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE, "Visningsläge för Titlar" @@ -6174,6 +6518,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_REFRESH_PLAYLIST, "Uppdatera spellista" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_MANAGER_REFRESH_PLAYLIST, + "Lägg till nytt innehåll och ta bort ogiltiga poster genom att upprepa ”Manuell skanning” som senast användes för att skapa eller redigera spellistan." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DELETE_PLAYLIST, "Radera Spellista" @@ -6197,6 +6545,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST, "Konton" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ACCOUNTS_LIST, + "Hantera aktuella konfigurerade konton." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_NETPLAY_NICKNAME, "Användarnamn" @@ -6213,6 +6565,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USER_LANGUAGE, "Ställ in språket för användargränssnittet." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_USER_LANGUAGE, + "Lokalanpassar menyn och alla meddelanden på skärmen enligt det språk du har valt här. Kräver en omstart för att ändringarna ska träda i kraft.\nÖversättningens fullständighet visas bredvid varje alternativ. Om ett språk inte är implementerat för ett menyalternativ återgår vi till engelska." + ) /* Settings > User > Privacy */ @@ -6224,6 +6580,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_CAMERA_ALLOW, "Tillåt Kärnor att komma åt kameran." ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DISCORD_ALLOW, + "Tillåt Discord-appen att visa data om det innehåll som spelas upp. Endast tillgänglig med den inbyggda skrivbordsklienten." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LOCATION_ALLOW, "Tillåt plats" @@ -6239,6 +6599,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_ACCOUNTS_RETRO_ACHIEVEMENTS, "Samla prestationframgångar i klassiska spel. För mer information, besök 'https://retroachievements.org'." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_ACCOUNTS_RETRO_ACHIEVEMENTS, + "Inloggningsuppgifter för ditt RetroAchievements-konto. Besök retroachievements.org och registrera dig för ett gratis konto.\nNNär du är klar med registreringen måste du ange användarnamn och lösenord i RetroArch." + ) /* Settings > User > Accounts > RetroAchievements */ @@ -6246,10 +6610,18 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_USERNAME, "Användarnamn" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_USERNAME, + "Ange ditt användarnamn för RetroAchievements-kontot." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_PASSWORD, "Lösenord" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_PASSWORD, + "Ange lösenordet för ditt RetroAchievements-konto. Max längd: 255 tecken." + ) /* Settings > User > Accounts > YouTube */ @@ -6276,7 +6648,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Filhanterare" + "Start katalog" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, @@ -6451,10 +6823,6 @@ MSG_HASH( "Dela din aktuella status i RetroArch på Steam." ) -MSG_HASH( - MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "Bestäm vilken information relaterad till innehållet som körs som ska delas." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_STEAM_RICH_PRESENCE_FORMAT_CONTENT, @@ -6898,10 +7266,18 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESET_CORE_ASSOCIATION, "Återställ kärnassociation" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INFORMATION, + "Visa mer information om innehållet." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DOWNLOAD_PL_ENTRY_THUMBNAILS, "Ladda ner miniatyrer" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DOWNLOAD_PL_ENTRY_THUMBNAILS, + "Ladda ner miniatyrbilder för skärmdump/boxart/titelskärm för aktuellt innehåll. Uppdaterar eventuella befintliga miniatyrbilder." + ) /* Playlist Item > Set Core Association */ @@ -6949,7 +7325,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Återupptar det pågående innehållet och lämnar Snabbmenyn." + "Återuppta innehållet och lämna snabbmenyn." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, @@ -6965,7 +7341,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Stäng det aktuella innehållet. Eventuella osparade ändringar kan gå förlorade." + "Stäng innehållet. Eventuella osparade ändringar kan gå förlorade." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, @@ -7059,6 +7435,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_QUICK_MENU_START_STREAMING, "Börja streama" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_STOP_STREAMING, + "Avsluta ström." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SAVESTATE_LIST, "Sparade statusar" @@ -7149,6 +7529,10 @@ MSG_HASH( /* Quick Menu > Controls > Manage Remap Files */ +MSG_HASH( + MENU_ENUM_SUBLABEL_REMAP_FILE_LOAD, + "Ladda och ersätt nuvarande inmatningsmappningar." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_GAME, "Spara spelommappningsfil" @@ -7477,6 +7861,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET, "Ladda en förinställd Shader. Shader pipelinen kommer automatiskt att konfigureras." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VIDEO_SHADER_PRESET, + "Ladda en shader-förinställning direkt. Shader-menyn uppdateras i enlighet med detta.\nSkaleringsfaktorn som visas i menyn är tillförlitlig endast om förinställningen använder enkla skalningsmetoder (dvs. källskalning, samma skalningsfaktor för X/Y)." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE, "Spara förinställning" @@ -7493,10 +7881,26 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PARAMETERS, "Shader parametrar" ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VIDEO_SHADER_NUM_PASSES, + "RetroArch gör det möjligt att blanda och matcha olika shaders med godtyckliga shaderpass, med anpassade hårdvarufilter och skalfaktorer.\nDetta alternativ anger antalet shaderpass som ska användas. Om du ställer in det på 0 och använder Apply Shader Changes använder du en ”tom” shader." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VIDEO_SHADER_PASS, + "Sökväg till shader. Alla shaders måste vara av samma typ (t.ex. Cg, GLSL eller Slang). Ställ in Shader Directory för att ange var webbläsaren börjar leta efter shaders." + ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VIDEO_SHADER_FILTER_PASS, + "Hårdvarufilter för detta pass. Om ”Default” är inställt kommer filtret att vara antingen ”Linear” eller ”Nearest” beroende på inställningen ”Bilinear Filtering” under Video settings." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SCALE, "Skala" ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_VIDEO_SHADER_SCALE_PASS, + "Skala för detta pass. Skalfaktorn ackumuleras, dvs. 2x för första passet och 2x för andra passet ger dig en total skala på 4x.\nOm det finns en skalfaktor för sista passet sträcks resultatet till skärmen med standardfiltret, beroende på inställningen Bilineär filtrering under Videoinställningar.\nOm ”Standard” är inställt används antingen 1x skala eller sträckning till fullskärm beroende på om det inte är sista passet eller inte." + ) /* Quick Menu > Shaders > Save */ @@ -7505,19 +7909,39 @@ MSG_HASH( "Enkla förinställningar" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_REFERENCE, + "Spara en shader-förinställning som har en länk till den ursprungliga förinställningen och som endast innehåller de parameterändringar som du har gjort." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_AS, "Spara förinställd Shader som" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_AS, + "Spara de aktuella shaderinställningarna som en ny shaderförinställning." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_GLOBAL, "Spara globalt förval" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_GLOBAL, + "Spara de aktuella shaderinställningarna som global standardinställning." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_CORE, "Spara kärnförval" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_CORE, + "Spara de aktuella shaderinställningarna som standard för den här kärnan." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_PARENT, + "Spara de aktuella shaderinställningarna som standard för alla filer i den aktuella innehållskatalogen." + ) /* Quick Menu > Shaders > Remove */ @@ -7567,6 +7991,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OVERRIDE_FILE_SAVE_AS, "Spara aktuell konfiguration som en ny åsidosättningsfil." ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE, + "Spara en åsidosatt konfigurationsfil som kommer att gälla för allt innehåll som laddas med denna kärna. Kommer att ha företräde framför huvudkonfigurationen." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR, + "Spara en överordnad konfigurationsfil som kommer att gälla för allt innehåll som laddas från samma katalog som den aktuella filen. Kommer att ha företräde framför huvudkonfigurationen." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OVERRIDE_UNLOAD, "Läs ur åsidosättning" @@ -7582,6 +8014,22 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_NO_ACHIEVEMENTS_TO_DISPLAY, "Inga prestationer att visa" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ACHIEVEMENT_RESUME, + "Återuppta hardcore-läget för prestationer för den aktuella sessionen. Den här åtgärden inaktiverar fusk, spola tillbaka, slowmotion och ladda sparade tillstånd och återställer det aktuella spelet." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ACHIEVEMENT_SERVER_UNREACHABLE, + "En eller flera upplåsningar av prestationer nådde inte fram till servern. Upplåsningarna kommer att försöka igen så länge du lämnar appen öppen." +) +MSG_HASH( + MENU_ENUM_LABEL_CHEEVOS_SERVER_DISCONNECTED, + "RetroAchievements server går inte att nå. Kommer att försöka igen tills det lyckas eller appen stängs." +) +MSG_HASH( + MENU_ENUM_LABEL_CHEEVOS_SERVER_RECONNECTED, + "Alla väntande förfrågningar har synkroniserats till RetroAchievements-servern." +) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEEVOS_IDENTIFYING_GAME, "Identifierar spelet" @@ -8226,6 +8674,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_PARTICLE_EFFECT_SPEED, "Animerad bakgrunds hastighet" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_RGUI_INLINE_THUMBNAILS, + "Aktivera visning av nedskalade miniatyrbilder inline när du visar spellistor. Växlingsbar med RetroPad Select. När funktionen är inaktiverad kan miniatyrbilderna fortfarande växlas till helskärm med RetroPad Start." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_THUMBNAILS_RGUI, "Övre miniatyrbild" @@ -8238,6 +8690,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SWAP_THUMBNAILS, "Växla miniatyrbilder" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_RGUI_THUMBNAIL_DELAY, + "Tillämpar en tidsfördröjning mellan valet av en spellistepost och laddningen av dess tillhörande miniatyrbilder. Om du ställer in detta till ett värde på minst 256 ms möjliggörs snabb och fördröjningsfri rullning även på de långsammaste enheterna." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_EXTENDED_ASCII, "Utökat ASCII-stöd" @@ -8607,6 +9063,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_ICE_COLD, "Iskall" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Grå Mörk" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Grå Ljus" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -8626,6 +9090,23 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_TRUNCATE_PLAYLIST_NAME, "Ta bort tillverkarens namn från spellistorna. Till exempel, 'Sony - PlayStation' blir 'PlayStation'." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "Sekundär miniatyrbild" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "När den är aktiverad kommer varje metadataobjekt som visas i spellistornas högra sidofält (associerad kärna, speltid) att uppta en enda rad; strängar som överskrider sidofältets bredd kommer att visas som rullande tickertext. När den är inaktiverad visas varje innehållsmetadata statiskt, omslaget så att det upptar så många rader som krävs." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Miniatyrskalfaktor" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "Skala storleken på miniatyrfältet." + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Färgtema" @@ -8662,18 +9143,7 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_GRAY_LIGHT, "Grå Ljus" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "Sekundär miniatyrbild" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Miniatyrskalfaktor" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "Skala storleken på miniatyrfältet." - ) + /* MaterialUI: Settings > User Interface > Appearance */ @@ -9402,6 +9872,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, "Historik" ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_LOAD_CONTENT_HISTORY, + "När innehåll laddas sparas innehåll och libretro core-kombinationer i historiken. Historiken sparas i en fil i samma katalog som konfigurationsfilen för RetroArch. Om ingen konfigurationsfil laddades vid uppstart sparas eller laddas inte historiken och den finns inte i huvudmenyn." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SUBSYSTEM_SETTINGS, "Delsystem" @@ -9470,10 +9944,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_KEYBOARD, "Tgb" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Använd inbyggd bildvisare" - ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_WAITABLE_SWAPCHAINS, "Hårdsynkronisera CPU och GPU. Minskar latens på bekostnad av prestanda." @@ -9553,14 +10023,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Välj från en spellista" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Återuppta" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Återupptar det pågående innehållet och lämnar Snabbmenyn." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "Visa listan över %u träffar" @@ -9894,6 +10356,34 @@ MSG_HASH( MSG_NETPLAY_S_HAS_JOINED_WITH_INPUT_DEVICES_S, "%.*s är ansluten, med inmatningsenheter %.*s" ) +MSG_HASH( + MSG_NETPLAY_NOT_RETROARCH, + "Ett försök till Netplay-anslutning misslyckades eftersom motparten inte kör RetroArch eller kör en gammal version av RetroArch." + ) +MSG_HASH( + MSG_NETPLAY_OUT_OF_DATE, + "En netplay-peer kör en gammal version av RetroArch. Det går inte att ansluta." + ) +MSG_HASH( + MSG_NETPLAY_DIFFERENT_VERSIONS, + "VARNING: En netplay-peer kör en annan version av RetroArch. Om problem uppstår, använd samma version." + ) +MSG_HASH( + MSG_NETPLAY_DIFFERENT_CORES, + "En netplay-peer kör en annan kärna. Det går inte att ansluta." + ) +MSG_HASH( + MSG_NETPLAY_DIFFERENT_CORE_VERSIONS, + "VARNING: En netplay-peer kör en annan version av kärnan. Om problem uppstår ska du använda samma version." + ) +MSG_HASH( + MSG_NETPLAY_ENDIAN_DEPENDENT, + "Denna kärna stöder inte netplay mellan dessa plattformar" + ) +MSG_HASH( + MSG_NETPLAY_PLATFORM_DEPENDENT, + "Denna kärna stöder inte netplay mellan olika plattformar" + ) MSG_HASH( MSG_NETPLAY_ENTER_PASSWORD, "Ange Netplay-serverlösenord:" @@ -9930,10 +10420,18 @@ MSG_HASH( MSG_NETPLAY_CANNOT_PLAY_NO_SLOTS, "Detfinns inga lediga spelarplatser" ) +MSG_HASH( + MSG_NETPLAY_CANNOT_PLAY_NOT_AVAILABLE, + "De begärda inmatningsenheterna är inte tillgängliga" + ) MSG_HASH( MSG_NETPLAY_CANNOT_PLAY, "Kan inte växla till spelläget" ) +MSG_HASH( + MSG_NETPLAY_PEER_PAUSED, + "Netplay-peer ”%s” pausad" + ) MSG_HASH( MSG_NETPLAY_CHANGED_NICK, "Ditt nicknamn ändrades till \"%s\"" @@ -9970,6 +10468,10 @@ MSG_HASH( MSG_NETPLAY_CHAT_SUPPORTED, "Chatt stöds" ) +MSG_HASH( + MSG_NETPLAY_SLOWDOWNS_CAUSED, + "Fördröjningar orsakade" + ) MSG_HASH( MSG_AUDIO_VOLUME, @@ -10187,6 +10689,10 @@ MSG_HASH( MSG_COULD_NOT_READ_CONTENT_FILE, "Kunde inte läsa innehållsfilen" ) +MSG_HASH( + MSG_CRC32_CHECKSUM_MISMATCH, + "CRC32-kontrollsumman stämmer inte överens mellan innehållsfilen och kontrollsumman för sparat innehåll i uppspelningsfilens huvud. Uppspelningen kommer med stor sannolikhet att desynkroniseras vid uppspelning." + ) MSG_HASH( MSG_DECOMPRESSION_FAILED, "Dekomprimeringen misslyckades." @@ -10387,6 +10893,10 @@ MSG_HASH( MSG_GAME_FOCUS_OFF, "Game Focus inaktiv" ) +MSG_HASH( + MSG_HW_RENDERED_MUST_USE_POSTSHADED_RECORDING, + "Libretro core är hårdvarurenderad. Måste använda post-shaded inspelning också." + ) MSG_HASH( MSG_INPUT_CHEAT, "Mata in fusk" @@ -10503,6 +11013,10 @@ MSG_HASH( MSG_NO_STATE_HAS_BEEN_LOADED_YET, "Inget tillstånd har lästs in än." ) +MSG_HASH( + MSG_OVERRIDES_NOT_SAVED, + "Inget att spara. Åsidosättningar inte sparade." + ) MSG_HASH( MSG_PAUSED, "Pausad." @@ -10623,6 +11137,10 @@ MSG_HASH( MSG_NO_THUMBNAIL_AVAILABLE, "Ingen miniatyrbild tillgänglig" ) +MSG_HASH( + MSG_NO_THUMBNAIL_DOWNLOAD_POSSIBLE, + "Alla möjliga nedladdningar av miniatyrbilder har redan provats för den här spellisteposten." + ) MSG_HASH( MSG_PRESS_AGAIN_TO_QUIT, "Tryck igen för att avsluta..." @@ -10647,6 +11165,10 @@ MSG_HASH( MSG_VALUE_CONNECT_DEVICE_FROM_A_VALID_PORT, "Anslut enhet från en giltig port." ) +MSG_HASH( + MSG_VALUE_DISCONNECTING_DEVICE_FROM_PORT, + "Kopplar bort enheten från porten" + ) MSG_HASH( MSG_VALUE_REBOOTING, "Startar om..." @@ -10843,6 +11365,10 @@ MSG_HASH( MSG_CHEEVOS_LOGGED_IN_AS_USER, "RetroAchievements: Inloggad som \"%s\"." ) +MSG_HASH( + MSG_CHEEVOS_LOAD_STATE_PREVENTED_BY_HARDCORE_MODE, + "Du måste pausa eller inaktivera Achievements Hardcore-läget för att ladda tillstånd." + ) MSG_HASH( MSG_CHEEVOS_MASTERED_GAME, "Bemästrat: %s" @@ -10989,6 +11515,10 @@ MSG_HASH( /* Environment Specific Settings */ +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_WIDGET_SCALE_FACTOR, + "Tillämpa en manuell skalningsfaktor vid ritning av displaywidgets. Gäller endast när ”Skala grafikwidgets automatiskt” är inaktiverat. Kan användas för att öka eller minska storleken på dekorerade meddelanden, indikatorer och kontroller oberoende av själva menyn." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SCREEN_RESOLUTION, "Skärmupplösning" @@ -11109,6 +11639,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_GAMEMODE_ENABLE, "Spelläge" ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_GAMEMODE_ENABLE, + "Om du aktiverar Linux GameMode kan du förbättra latensen, åtgärda problem med sprakande ljud och maximera den totala prestandan genom att automatiskt konfigurera CPU och GPU för bästa prestanda.\nProgramvaran GameMode måste installeras för att detta ska fungera. Se https://github.com/FeralInteractive/gamemode för information om hur du installerar GameMode." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PAL60_ENABLE, "Använd PAL60-läget" @@ -11117,6 +11651,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_RESTART_KEY, "Starta om RetroArch" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_META_RESTART_KEY, + "Avsluta och starta sedan om RetroArch. Krävs för aktivering av vissa menyinställningar (t. ex. vid byte av menydrivrutin)." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_SMALL_KEYBOARD_ENABLE, "Litet tangentbord" @@ -11351,6 +11889,10 @@ MSG_HASH( ) #endif #ifdef HAVE_QT +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SCAN_FINISHED, + "Skanning slutförd.

\nFör att innehållet ska skannas korrekt måste du:\n
  • ha en kompatibel kärna redan nedladdad
  • \n
  • ha ”Core Info Files” uppdaterat via Online Updater
  • \n
  • ha ”Databases” uppdaterat via Online Updater
  • \n
  • starta om RetroArch om något av ovanstående just har gjorts
\nSlutligen måste innehållet matcha befintliga databaser från här. Om det fortfarande inte fungerar kan du överväga att skicka in en felrapport." + ) #endif MSG_HASH( MSG_AI_SERVICE_STOPPED, diff --git a/intl/msg_hash_tr.h b/intl/msg_hash_tr.h index 1c50218c60fb..2fe8fe2a5d71 100644 --- a/intl/msg_hash_tr.h +++ b/intl/msg_hash_tr.h @@ -1474,7 +1474,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_RETRO_ACHIEVEMENTS_SETTINGS, - "Başarı ayarlarını değiştir." + "Başarım ayarlarını değiştir." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_NETWORK_SETTINGS, @@ -2922,7 +2922,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Hızlı İleri Sararken Sesi Kapat" + "Hızlı İleri Sarmada Sesi Kapat" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, @@ -2930,12 +2930,20 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Hızlı İleri Sarmada Sesi Hızlandır" + "Hızlı İleri Sarmada Seside Hızlandır" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "Hızlı ileri sarma sırasında sesi hızlandırın. Cızırtıyı önler, ancak perdeyi değiştirir." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_REWIND_MUTE, + "Geri Sarmada Sesi Kapat" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_REWIND_MUTE, + "Geri sarmayı kullanırken sesi otomatik olarak kapatır." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, "Ses Artışı (dB)" @@ -3756,7 +3764,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Mevcut ekranı menü ve çalışan içerik arasında değiştirir." + "Mevcut ekranı menü ve içerik arasında değiştirir." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, @@ -3836,7 +3844,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Çalışan içeriği duraklatılmış ve duraklatılmamış durumlar arasında değiştirir." + "İçeriği duraklatılmış ve duraklatılmamış durumlar arasında değiştirir." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, @@ -4985,14 +4993,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "Dosya tarayıcısında gösterilen dosyaları desteklenen uzantılara göre süzgeçle." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Dahili Medya Oynatıcı Kullan" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Mevcut Çekirdeğe Göre Süzgeçle" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_FILTER_BY_CURRENT_CORE, + "Dosya tarayıcısında gösterilen dosyaları mevcut çekirdeğe göre filtreleyin." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY, "Son Kullanılan Başlangıç ​​Dizinini Hatırla" @@ -5001,6 +5009,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, "Başlangıç ​​Dizininden içerik yüklerken son kullanılan konumda dosya tarayıcısını açın. Not: RetroArch yeniden başlatıldığında konum varsayılana sıfırlanacaktır." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Dahili Medya Oynatıcı Kullan" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Dahili Resim Görüntüleyici Kullan" + ) /* Settings > Frame Throttle */ @@ -6116,7 +6132,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Menü etkinse, o anda çalışan içeriği duraklatın." + "Menü etkinse içeriği duraklatır." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, @@ -6477,7 +6493,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "Oynatma listesini gösterin. (Ozon/XMB'de Yeniden Başlatılmalı)" + "Ana Menü üstünde oynatma listelerini gösterin. Oynatma listesi sekmeleri ve gezinme çubuğu etkinse GLUI yok sayılır." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLIST_TABS, + "Oynatma Listesi Sekmesini Göster" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLIST_TABS, + "Oynatma listesi sekmelerini gösterin. RGUI etkilenmez. Gezinme çubuğu GLUI ile etkinleştirilmelidir. (Ozon/XMB yeniden başlatılmalı)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, @@ -6931,11 +6955,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_ACHIEVEMENTS, - "'Başarıları' Göster" + "'Başarımları' Göster" ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_ACHIEVEMENTS, - "'Başarılar' ayarlarını gösterin." + "'Başarımlar' ayarlarını göster." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_NETWORK, @@ -6957,14 +6981,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "'Kullanıcıyı' Göster" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "Oynatma Listesi Simgeleri" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "Görüntülenecek Oynatma Listesi simgesinin küçük resminin türü." - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "'Kullanıcı' ayarlarını gösterin." @@ -7166,11 +7182,11 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEEVOS_ENABLE, - "Başarılar" + "Başarımlar" ) MSG_HASH( MENU_ENUM_SUBLABEL_CHEEVOS_ENABLE, - "Klasik oyunlarda başarılar kazanın. Daha fazla bilgi için 'https://retroachievements.org' adresini ziyaret edin." + "Klasik oyunlarda başarımlar kazanın. Daha fazla bilgi için 'https://retroachievements.org' adresini ziyaret edin." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEEVOS_HARDCORE_MODE_ENABLE, @@ -7194,15 +7210,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEEVOS_BADGES_ENABLE, - "Başarı Rozetleri" + "Başarım Rozetleri" ) MSG_HASH( MENU_ENUM_SUBLABEL_CHEEVOS_BADGES_ENABLE, - "Başarı listesindeki rozetleri görüntüle." + "Başarım listesindeki rozetleri görüntüle." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEEVOS_TEST_UNOFFICIAL, - "Resmi Olmayan Başarıları Test Et" + "Resmi Olmayan Başarımları Test Et" ) MSG_HASH( MENU_ENUM_SUBLABEL_CHEEVOS_TEST_UNOFFICIAL, @@ -7214,7 +7230,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CHEEVOS_UNLOCK_SOUND_ENABLE, - "Bir başarının kilidi açıldığında bir ses çalın." + "Bir başarım kilidi açıldığında bir ses çalar." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEEVOS_AUTO_SCREENSHOT, @@ -7324,7 +7340,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SUMMARY_HASCHEEVOS, - "Başarıları Olan Oyunlar" + "Başarımları Olan Oyunlar" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_UNLOCK, @@ -7332,15 +7348,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_UNLOCK, - "Bir başarının kilidi açıldığında bir bildirim gösterir." + "Bir başarım kilidi açıldığında bir bildirim gösterir." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_MASTERY, - "Başarı Tamamlama Bildirimlerini Aç" + "Ustalık Bildirimleri" ) MSG_HASH( MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_MASTERY, - "Bir oyun için tüm başarıların kilidi açıldığında bir bildirim gösterir." + "Bir oyun için tüm başarımların kilidi açıldığında bir bildirim gösterir." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEEVOS_CHALLENGE_INDICATORS, @@ -7929,7 +7945,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SCAN_SERIAL_AND_CRC, - "Tarama esnasında olası kopyalarda crc kontrol eder" + "Tarama Olası Kopyalarda CRC Kontrol Eder" ) MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_SERIAL_AND_CRC, @@ -8192,7 +8208,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Dosya Tarayıcısı" + "Başlangıç Dizini" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, @@ -8437,7 +8453,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "Çalışan içerikle ilgili hangi bilgilerin paylaşılacağına karar verin." + "İçerikle ilgili hangi bilgilerin paylaşılacağına karar verin." ) MSG_HASH( @@ -8789,7 +8805,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_EXPLORE_BY_ACHIEVEMENTS, - "Başarılara Göre" + "Başarımlara Göre" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_EXPLORE_BY_CATEGORY, @@ -9037,7 +9053,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Çalışan içeriği devam ettirip Hızlı Menüden çıkın." + "İçeriği devam ettirin ve Hızlı Menüden çıkın." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, @@ -9053,7 +9069,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Mevcut içeriği kapatın. Kaydedilmemiş tüm değişiklikler kaybolabilir." + "İçeriği kapatın. Kaydedilmemiş tüm değişiklikler yok olabilir." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, @@ -9189,7 +9205,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Çalışan içeriğin seçeneklerini değiştirin." + "İçerik seçeneklerini değiştirin." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, @@ -9197,7 +9213,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Çalışan içerik için kontrolcüleri değiştirin." + "İçerik denetimlerini değiştirin." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, @@ -9233,7 +9249,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST, - "Başarılar" + "Başarımlar" ) MSG_HASH( MENU_ENUM_SUBLABEL_ACHIEVEMENT_LIST, @@ -9827,7 +9843,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_HELP_SHADER_WATCH_FOR_CHANGES, - "Yeni değişiklikler için gölgelendirici dosyalarını izleyin. Değişiklikleri diskteki gölgelendiriciye kaydettikten sonra, otomatik olarak yeniden derlenecek ve çalışan içeriğe uygulanacaktır." + "Yeni değişiklikler için gölgelendirici dosyalarını izleyin. Değişiklikleri diskteki gölgelendiriciye kaydettikten sonra, otomatik olarak yeniden derlenecek ve içeriğe uygulanacaktır." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_REMEMBER_LAST_DIR, @@ -11040,7 +11056,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "Hızlı Menü etkinken çalışan içeriğin arka planda görüntülenmesini etkinleştirin. Şeffaflığın devre dışı bırakılması tema renklerini değiştirebilir." + "Hızlı Menü etkinken içeriğin arka planda görüntülenmesini etkinleştirin. Şeffaflığın devre dışı bırakılması tema renklerini değiştirebilir." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, @@ -11231,7 +11247,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RGUI_MENU_COLOR_THEME_CLASSIC_GREY, - "Klasik Gri" + "Klasik Boz" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RGUI_MENU_COLOR_THEME_LEGACY_RED, @@ -11323,11 +11339,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RGUI_MENU_COLOR_THEME_GRAY_DARK, - "Koyu Gri" + "Koyu Boz" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RGUI_MENU_COLOR_THEME_GRAY_LIGHT, - "Açık Gri" + "Açık Boz" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RGUI_PARTICLE_EFFECT_NONE, @@ -11364,6 +11380,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS, "Solda görüntülenecek küçük resim türü." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, + "Simge Küçük Resim" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, + "Görüntülenecek oynatma listesi simgesi küçük resminin türü." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER, "Dinamik Arkaplan" @@ -11667,6 +11691,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_ICE_COLD, "Buz Soğuğu" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Koyu Boz" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Açık Boz" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -11694,6 +11726,31 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "Oynatma listeleri, adlarının üretici bileşeni kaldırıldıktan sonra alfabetik olarak yeniden sıralanacaktır." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "İkincil Küçük Resim" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "İçerik üst veri panelini başka bir küçük resimle değiştirin." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "İçerik Üst Verileri İçin Kayan Metin Kullan" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "Etkinleştirildiğinde, çalma listelerinin sağ kenar çubuğunda gösterilen içerik meta verilerinin her bir maddesi (ilişkili çekirdek, çalma süresi) tek bir satır kaplar; Kenar çubuğunun genişliğini aşan dizeler kayan yazı metni olarak görüntülenir. Devre dışı bırakıldığında, içerik meta verilerinin her bir öğesi, gerektiği kadar satır tutacak şekilde kaydırılarak statik olarak görüntülenir." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Küçük Resim Ölçek Etkeni" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "Küçük resim çubuğunun boyutunu ölçeklendirin." + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Tema Rengi" @@ -11734,10 +11791,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_DRACULA, "Drakula" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, - "Selenyum" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SOLARIZED_DARK, "Solar Koyu" @@ -11748,41 +11801,22 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_GRAY_DARK, - "Koyu Gri" + "Koyu Boz" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_GRAY_LIGHT, - "Açık Gri" + "Açık Boz" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_PURPLE_RAIN, "Mor Yağmur" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "İkincil Küçük Resim" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "İçerik üst veri panelini başka bir küçük resimle değiştirin." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "İçerik Üst Verileri İçin Kayan Metin Kullan" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "Etkinleştirildiğinde, çalma listelerinin sağ kenar çubuğunda gösterilen içerik meta verilerinin her bir maddesi (ilişkili çekirdek, çalma süresi) tek bir satır kaplar; Kenar çubuğunun genişliğini aşan dizeler kayan yazı metni olarak görüntülenir. Devre dışı bırakıldığında, içerik meta verilerinin her bir öğesi, gerektiği kadar satır tutacak şekilde kaydırılarak statik olarak görüntülenir." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Küçük Resim Ölçek Etkeni" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "Küçük resim çubuğunun boyutunu ölçeklendirin." + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, + "Selenyum" ) + /* MaterialUI: Settings > User Interface > Appearance */ MSG_HASH( @@ -11906,7 +11940,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_BLUE_GREY, - "Mavi Gri" + "Mavi Boz" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_DARK_BLUE, @@ -11962,7 +11996,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_CUTIE_GREEN, - "Tatlı Gri" + "Tatlı Boz" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_CUTIE_ORANGE, @@ -11986,11 +12020,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_GRAY_DARK, - "Koyu Gri" + "Koyu Boz" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_GRAY_LIGHT, - "Açık Gri" + "Açık Boz" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_TRANSITION_ANIM_AUTO, @@ -12746,10 +12780,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_USER, "Kullanıcı" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Dahili Resim Görüntüleyici Kullan" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, "Azami Takas Zinciri Görüntüleri" @@ -12885,14 +12915,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Bir oynatma listesinden seç" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Devam" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Çalışan içeriği devam ettirip Hızlı Menüden çıkın." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "%u Eşleşmelerinin Listesini Görüntüle" @@ -13023,7 +13045,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST_HARDCORE, - "Başarılar (Zorlu)" + "Başarımlar (Zorlu)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_DETAILS, @@ -14925,7 +14947,7 @@ MSG_HASH( ) MSG_HASH( MSG_CHEEVOS_NUMBER_ACHIEVEMENTS_UNLOCKED, - "%d başarımdan %d tanesinin kilidi açıldı" + "Kilidi açılan başarım %d Toplam başarım %d" ) MSG_HASH( MSG_CHEEVOS_UNSUPPORTED_COUNT, @@ -15905,9 +15927,53 @@ MSG_HASH( "durduruldu." ) #ifdef HAVE_GAME_AI +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GAME_AI_MENU_OPTION, + "YZ oyuncuyu özelleştir" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_GAME_AI_MENU_OPTION, + "YZ oyuncu alt etiketi özelleştir" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_GAME_AI_OPTIONS, + "Oyun YZ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GAME_AI_OVERRIDE_P1, + "P1 özelleştir" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_GAME_AI_OVERRIDE_P1, + "Oyuncu 01 özelleştir" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GAME_AI_OVERRIDE_P2, + "P2 özelleştir" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_GAME_AI_OVERRIDE_P2, + "Oyuncu 02 özelleştir" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GAME_AI_SHOW_DEBUG, + "Hata Ayıklamayı Göster" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_GAME_AI_SHOW_DEBUG, + "Hata Ayıklamayı Göster" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_GAME_AI, + "'Oyun YZ' göster" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_GAME_AI, + "'Oyun YZ' seçeneğini gösterin." + ) #endif \ No newline at end of file diff --git a/intl/msg_hash_tt.h b/intl/msg_hash_tt.h index dae9e787a74c..3defb4ccbe28 100644 --- a/intl/msg_hash_tt.h +++ b/intl/msg_hash_tt.h @@ -599,6 +599,8 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ diff --git a/intl/msg_hash_uk.h b/intl/msg_hash_uk.h index 6b4bcb989226..d72ad421554f 100644 --- a/intl/msg_hash_uk.h +++ b/intl/msg_hash_uk.h @@ -2942,7 +2942,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Вимкнути звук при перемотуванні" + "Вимкнення звуку швидкого переходу" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, @@ -2950,12 +2950,20 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Прискорити Під Час Перемотування Вперед" + "Прискорення звуку Швидкого Вперед" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "Прискорювати звук під час перемотування вперед. Запобігає потріскуванню, але змінює висоту тону." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_REWIND_MUTE, + "Вимкнення звуку назад" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_REWIND_MUTE, + "Автоматично вимикати звук під час перемотування назад." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, "Збільшення гучності (дБ)" @@ -3772,7 +3780,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Перемикає поточний вигляд між меню та запущеним контентом." + "Перемикає поточний дисплей між меню та вмістом." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, @@ -3852,7 +3860,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Перемикає запущений зміст між зупиненим та не зупиненими станом." + "Перемикає вміст між станами призупинення та без паузи." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, @@ -4993,14 +5001,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, "Фільтрація файлів, що відображаються у браузері файлів, підтримуючи розширення." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Використовувати вбудований медіа-програвач" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, "Фільтрувати за поточним ядром" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_FILTER_BY_CURRENT_CORE, + "Фільтр файлів, що відображаються в браузері файлу по поточному ядру." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY, "Запам’ятайте Останній Використаний Стартовий Каталог" @@ -5009,6 +5017,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY, "Відкрити Файловий браузер в останньому використаному місці при завантаженні вмісту з папки Старт. Примітка: Місцезнаходження буде скинуто при перезапуску RetroArch." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Використовувати вбудований медіа-програвач" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Використовувати вбудований переглядач зображень" + ) /* Settings > Frame Throttle */ @@ -6100,7 +6116,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Призупиняти запущений вміст, якщо меню активне." + "Призупинити вміст, якщо меню активне." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, @@ -6457,7 +6473,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "Показати список відтворення. (Потрібно перезапустити в Ozone/XMB)" + "Показати списки відтворення в головному меню. Ігнорується в GLUI, якщо ввімкнено вкладки списку відтворення та навігаційну панель." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLIST_TABS, + "Показати вкладки списку відтворення" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLIST_TABS, + "Показати вкладки списку відтворення. Не впливає на RGUI. Панель навігації має бути ввімкнена в GLUI. (Потрібен перезапуск Ozone/XMB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, @@ -6937,14 +6961,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "Показати 'Користувач'" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "Значки списку відтворення" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "Тип ескізу іконок у плейлісті для відображення." - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "Показувати налаштування \"Користувач\"." @@ -7889,7 +7905,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SCAN_SERIAL_AND_CRC, - "Сканувати перевірки CRC на можливі дублікати" + "Сканування перевіряє CRC на можливі дублікати" ) MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_SERIAL_AND_CRC, @@ -8160,7 +8176,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Файловий менеджер" + "Початковий каталог" ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, @@ -8405,7 +8421,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "Визначте, яку інформацію, пов'язану з запущеним змістом, буде надано контент." + "Вирішіть, яку інформацію, пов’язану з вмістом, буде надано." ) MSG_HASH( @@ -9005,7 +9021,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Відновити актуальний вміст та залишити панель швидкого меню." + "Відновити вміст і вийти зі швидкого меню." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, @@ -9021,7 +9037,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Закрити поточний вміст. Будь-які незбережені зміни можуть бути втрачені." + "Закрийте вміст. Усі незбережені зміни можуть бути втрачені." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, @@ -9157,7 +9173,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Змінити параметри, які зараз працюють." + "Змініть параметри вмісту." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, @@ -9165,7 +9181,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Змінити параметри елементів керування на даний момент." + "Змініть елементи керування вмістом." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, @@ -9791,7 +9807,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_HELP_SHADER_WATCH_FOR_CHANGES, - "Перегляд файлів шейдерів для нових змін. Після збереження змін у тінню на диску він буде автоматично перекомпільований і застосований до запущеного вмісту." + "Слідкуйте за новими змінами у файлах шейдерів. Після збереження змін шейдера на диску його буде автоматично перекомпільовано та застосовано до вмісту." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_REMEMBER_LAST_DIR, @@ -11008,7 +11024,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "Увімкнути фонове відображення запущеного вмісту, коли активне Швидке Меню. Вимкнення прозорості може змінити кольори теми." + "Увімкнути фонове відображення вмісту під час активного швидкого меню. Вимкнення прозорості може змінити кольори теми." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, @@ -11384,6 +11400,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS, "Тип ескізу для відображення вліво." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, + "Мініатюра значка" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, + "Тип мініатюри значка списку відтворення." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER, "Динамічне тло" @@ -11679,6 +11703,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_MIDGAR, "Веселка" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Темно-сірий" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Світло-сірий" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -11706,6 +11738,31 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "Плейлісти будуть повторно сортовані в алфавітному порядку після видалення компонента виконавців їх імен." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "Додаткова мініатюра" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "Замінити панель метаданих вмісту іншою мініатюрою." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "Використовувати тікер для вмісту метаданих" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "Коли увімкнено, кожен елемент метаданих, що відображаються на правій бічній панелі списків відтворення (пов’язаний з ядром, час гри) буде займати одну лінію; рядки, що перевищують ширину бічної панелі, будуть відображатися як текст прокрутки тікета. Коли вимкнено, кожен ел[...]" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Фактор масштабування мініатюр" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "Масштабувати розмір мініатюри (основного розміру)." + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Колір теми" @@ -11766,30 +11823,7 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_PURPLE_RAIN, "Фіолетовий Дощ" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "Додаткова мініатюра" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "Замінити панель метаданих вмісту іншою мініатюрою." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "Використовувати тікер для вмісту метаданих" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "Коли увімкнено, кожен елемент метаданих, що відображаються на правій бічній панелі списків відтворення (пов’язаний з ядром, час гри) буде займати одну лінію; рядки, що перевищують ширину бічної панелі, будуть відображатися як текст прокрутки тікета. Коли вимкнено, кожен ел[...]" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Фактор масштабування мініатюр" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "Масштабувати розмір мініатюри (основного розміру)." - ) + /* MaterialUI: Settings > User Interface > Appearance */ @@ -12762,10 +12796,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_USER, "Користувач" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Використовувати вбудований переглядач зображень" - ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_MAX_SWAPCHAIN_IMAGES, "Задає прийом відео чітка використовувати вказаний режим буферизації." @@ -12893,14 +12923,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Вибір зі списку відтворення" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Продовжити" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Відновити актуальний вміст та залишити панель швидкого меню." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "Переглянути список матчів %u" diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index f31243d012f8..b96279341c8d 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -2986,7 +2986,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Mute When Fast-Forwarding" + "Fast-Forward Audio Mute" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, @@ -2994,12 +2994,20 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Speedup When Fast-Forwarding" + "Fast-Forward Audio Speedup" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "Speed up audio when fast-forwarding. Prevents crackling but shifts pitch." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_REWIND_MUTE, + "Rewind Audio Mute" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_REWIND_MUTE, + "Automatically mute audio when using rewind." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, "Volume Gain (dB)" @@ -3820,7 +3828,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE, - "Switches the current display between menu and running content." + "Switches the current display between menu and content." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO, @@ -3900,7 +3908,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_PAUSE_TOGGLE, - "Switches running content between paused and non-paused states." + "Switches content between paused and non-paused states." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, @@ -6216,7 +6224,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Pause the currently running content if the menu is active." + "Pause the content if the menu is active." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME, @@ -6577,7 +6585,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "Show the playlists. (Restart required on Ozone/XMB)" + "Show the playlists in Main Menu. Ignored in GLUI if playlist tabs and navbar are enabled." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLIST_TABS, + "Show Playlist Tabs" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLIST_TABS, + "Show the playlist tabs. Does not affect RGUI. Navbar must be enabled in GLUI. (Restart required on Ozone/XMB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE, @@ -7057,14 +7073,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "Show 'User'" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, - "Playlist Icons" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, - "Type of Playlist icon thumbnail to display." - ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "Show 'User' settings." @@ -8029,7 +8037,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SCAN_SERIAL_AND_CRC, - "Scan checks CRC on possible duplicates" + "Scan Checks CRC on Possible Duplicates" ) MSG_HASH( MENU_ENUM_SUBLABEL_SCAN_SERIAL_AND_CRC, @@ -8553,7 +8561,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_STEAM_RICH_PRESENCE_FORMAT, - "Decide what information related to the running content will be shared." + "Decide what information related to the content will be shared." ) MSG_HASH( @@ -9153,7 +9161,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Resume the currently running content and leave the Quick Menu." + "Resume the content and leave the Quick Menu." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, @@ -9169,7 +9177,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Close the current content. Any unsaved changes might be lost." + "Close the content. Any unsaved changes might be lost." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, @@ -9305,7 +9313,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Change the options for the currently running content." + "Change the options for the content." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, @@ -9313,7 +9321,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Change the controls for the currently running content." + "Change the controls for the content." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, @@ -9995,7 +10003,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_HELP_SHADER_WATCH_FOR_CHANGES, - "Watch shader files for new changes. After saving changes to a shader on disk, it will automatically be recompiled and applied to the running content." + "Watch shader files for new changes. After saving changes to a shader on disk, it will automatically be recompiled and applied to the content." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_REMEMBER_LAST_DIR, @@ -11624,7 +11632,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_RGUI_TRANSPARENCY, - "Enable background display of running content while Quick Menu is active. Disabling transparency may alter theme colors." + "Enable background display of content while Quick Menu is active. Disabling transparency may alter theme colors." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS, @@ -12024,6 +12032,14 @@ MSG_HASH( MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS, "Type of thumbnail to display at the left." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, + "Icon Thumbnail" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, + "Type of playlist icon thumbnail to display." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER, "Dynamic Background" @@ -12331,6 +12347,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_MIDGAR, "Midgar" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_DARK, + "Gray Dark" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GRAY_LIGHT, + "Gray Light" + ) /* Ozone: Settings > User Interface > Appearance */ @@ -12358,6 +12382,31 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME, "Playlists will be re-sorted in alphabetical order after removing the manufacturer component of their names." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, + "Secondary Thumbnail" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, + "Replace the content metadata panel with another thumbnail." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, + "Use Ticker Text for Content Metadata" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, + "When enabled, each item of content metadata shown on the right sidebar of playlists (associated core, play time) will occupy a single line; strings exceeding the width of the sidebar will be displayed as scrolling ticker text. When disabled, each item of content metadata will be displayed statically, wrapped to occupy as many lines as required." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, + "Thumbnail Scale Factor" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, + "Scale the size of the thumbnail bar." + ) + MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Color Theme" @@ -12398,10 +12447,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_DRACULA, "Dracula" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, - "Selenium" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SOLARIZED_DARK, "Solarized Dark" @@ -12423,30 +12468,11 @@ MSG_HASH( "Purple Rain" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE, - "Secondary Thumbnail" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS_OZONE, - "Replace the content metadata panel with another thumbnail." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_SCROLL_CONTENT_METADATA, - "Use Ticker Text for Content Metadata" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_SCROLL_CONTENT_METADATA, - "When enabled, each item of content metadata shown on the right sidebar of playlists (associated core, play time) will occupy a single line; strings exceeding the width of the sidebar will be displayed as scrolling ticker text. When disabled, each item of content metadata will be displayed statically, wrapped to occupy as many lines as required." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR, - "Thumbnail Scale Factor" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR, - "Scale the size of the thumbnail bar." + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_SELENIUM, + "Selenium" ) + /* MaterialUI: Settings > User Interface > Appearance */ MSG_HASH( @@ -13565,14 +13591,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FROM_PLAYLIST, "Select from a playlist" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Resume" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Resume the currently running content and leave the Quick Menu." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, "View the List of %u Matches" diff --git a/intl/msg_hash_val.h b/intl/msg_hash_val.h index 3a0558c49aaf..00ef836ff5cf 100644 --- a/intl/msg_hash_val.h +++ b/intl/msg_hash_val.h @@ -1988,18 +1988,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_MIXER_MUTE, "Silencia el mesclador d'àudio." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE, - "Silenciar el so quan s'use l'avançament ràpid" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE, "Automàticament silencia l'àudio quan s'usa l'avançament ràpid." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP, - "Accelerar a l'usar l'avançament ràpid" - ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP, "Accelera l'àudio a l'emprar l'avançament ràpid. Defugirá sorolls en l'àudio a canvi de la seua tonalitat." @@ -2796,7 +2788,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Navegador d'arxius" + "Directori inicial" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_DIRECTORY, @@ -3055,6 +3047,8 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ diff --git a/intl/msg_hash_vn.h b/intl/msg_hash_vn.h index cc076bdc8d71..edd142f9e6b5 100644 --- a/intl/msg_hash_vn.h +++ b/intl/msg_hash_vn.h @@ -1932,7 +1932,7 @@ MSG_HASH( ) MSG_HASH( /* FIXME Not RGUI specific */ MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Quản lý tập tin" + "Yêu thích" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LIBRETRO_INFO_PATH, @@ -2283,6 +2283,8 @@ MSG_HASH( /* Ozone: Settings > User Interface > Appearance */ + + /* MaterialUI: Settings > User Interface > Appearance */ diff --git a/intl/progress.h b/intl/progress.h index 81a52a323e2b..bd11e81aea62 100644 --- a/intl/progress.h +++ b/intl/progress.h @@ -19,7 +19,7 @@ #define LANGUAGE_PROGRESS_CATALAN_APPROVED 0 /* Czech */ -#define LANGUAGE_PROGRESS_CZECH_TRANSLATED 93 +#define LANGUAGE_PROGRESS_CZECH_TRANSLATED 92 #define LANGUAGE_PROGRESS_CZECH_APPROVED 0 /* Welsh */ @@ -31,8 +31,8 @@ #define LANGUAGE_PROGRESS_DANISH_APPROVED 0 /* German */ -#define LANGUAGE_PROGRESS_GERMAN_TRANSLATED 99 -#define LANGUAGE_PROGRESS_GERMAN_APPROVED 14 +#define LANGUAGE_PROGRESS_GERMAN_TRANSLATED 100 +#define LANGUAGE_PROGRESS_GERMAN_APPROVED 13 /* Greek */ #define LANGUAGE_PROGRESS_GREEK_TRANSLATED 19 @@ -48,15 +48,15 @@ /* Spanish */ #define LANGUAGE_PROGRESS_SPANISH_TRANSLATED 100 -#define LANGUAGE_PROGRESS_SPANISH_APPROVED 90 +#define LANGUAGE_PROGRESS_SPANISH_APPROVED 91 /* Persian */ #define LANGUAGE_PROGRESS_PERSIAN_TRANSLATED 11 #define LANGUAGE_PROGRESS_PERSIAN_APPROVED 0 /* Finnish */ -#define LANGUAGE_PROGRESS_FINNISH_TRANSLATED 76 -#define LANGUAGE_PROGRESS_FINNISH_APPROVED 46 +#define LANGUAGE_PROGRESS_FINNISH_TRANSLATED 75 +#define LANGUAGE_PROGRESS_FINNISH_APPROVED 45 /* French */ #define LANGUAGE_PROGRESS_FRENCH_TRANSLATED 100 @@ -83,11 +83,11 @@ #define LANGUAGE_PROGRESS_INDONESIAN_APPROVED 0 /* Italian */ -#define LANGUAGE_PROGRESS_ITALIAN_TRANSLATED 100 +#define LANGUAGE_PROGRESS_ITALIAN_TRANSLATED 99 #define LANGUAGE_PROGRESS_ITALIAN_APPROVED 0 /* Japanese */ -#define LANGUAGE_PROGRESS_JAPANESE_TRANSLATED 97 +#define LANGUAGE_PROGRESS_JAPANESE_TRANSLATED 96 #define LANGUAGE_PROGRESS_JAPANESE_APPROVED 0 /* Korean */ @@ -111,7 +111,7 @@ #define LANGUAGE_PROGRESS_POLISH_APPROVED 22 /* Portuguese, Brazilian */ -#define LANGUAGE_PROGRESS_PORTUGUESE_BRAZILIAN_TRANSLATED 75 +#define LANGUAGE_PROGRESS_PORTUGUESE_BRAZILIAN_TRANSLATED 79 #define LANGUAGE_PROGRESS_PORTUGUESE_BRAZILIAN_APPROVED 9 /* Portuguese */ @@ -120,10 +120,10 @@ /* Russian */ #define LANGUAGE_PROGRESS_RUSSIAN_TRANSLATED 99 -#define LANGUAGE_PROGRESS_RUSSIAN_APPROVED 13 +#define LANGUAGE_PROGRESS_RUSSIAN_APPROVED 12 /* Slovak */ -#define LANGUAGE_PROGRESS_SLOVAK_TRANSLATED 22 +#define LANGUAGE_PROGRESS_SLOVAK_TRANSLATED 21 #define LANGUAGE_PROGRESS_SLOVAK_APPROVED 0 /* Serbian (Latin) */ @@ -131,12 +131,12 @@ #define LANGUAGE_PROGRESS_SERBIAN_LATIN_APPROVED 0 /* Swedish */ -#define LANGUAGE_PROGRESS_SWEDISH_TRANSLATED 57 +#define LANGUAGE_PROGRESS_SWEDISH_TRANSLATED 70 #define LANGUAGE_PROGRESS_SWEDISH_APPROVED 46 /* Turkish */ -#define LANGUAGE_PROGRESS_TURKISH_TRANSLATED 99 -#define LANGUAGE_PROGRESS_TURKISH_APPROVED 99 +#define LANGUAGE_PROGRESS_TURKISH_TRANSLATED 100 +#define LANGUAGE_PROGRESS_TURKISH_APPROVED 100 /* Tatar */ #define LANGUAGE_PROGRESS_TATAR_TRANSLATED 0 @@ -155,10 +155,10 @@ #define LANGUAGE_PROGRESS_VIETNAMESE_APPROVED 0 /* Chinese Simplified */ -#define LANGUAGE_PROGRESS_CHINESE_SIMPLIFIED_TRANSLATED 96 +#define LANGUAGE_PROGRESS_CHINESE_SIMPLIFIED_TRANSLATED 95 #define LANGUAGE_PROGRESS_CHINESE_SIMPLIFIED_APPROVED 43 /* Chinese Traditional */ -#define LANGUAGE_PROGRESS_CHINESE_TRADITIONAL_TRANSLATED 93 +#define LANGUAGE_PROGRESS_CHINESE_TRADITIONAL_TRANSLATED 92 #define LANGUAGE_PROGRESS_CHINESE_TRADITIONAL_APPROVED 73 diff --git a/libretro-common/audio/audio_mix.c b/libretro-common/audio/audio_mix.c index eb138edd44c0..812f0dd9ae5b 100644 --- a/libretro-common/audio/audio_mix.c +++ b/libretro-common/audio/audio_mix.c @@ -38,29 +38,29 @@ #include