mirror of
https://github.com/libretro/RetroArch
synced 2025-03-02 19:13:34 +00:00
Merge branch 'master' into 9107-playlist-name-sanitization
This commit is contained in:
commit
35e71ad786
1082
CHANGES.md
1082
CHANGES.md
File diff suppressed because it is too large
Load Diff
5
Makefile
5
Makefile
@ -1,5 +1,6 @@
|
||||
HAVE_FILE_LOGGER=1
|
||||
NEED_CXX_LINKER=0
|
||||
NEED_GOLD_LINKER=0
|
||||
MISSING_DECLS =0
|
||||
|
||||
ifneq ($(C90_BUILD),)
|
||||
@ -24,6 +25,10 @@ DEFINES += -DGLOBAL_CONFIG_DIR='"$(GLOBAL_CONFIG_DIR)"'
|
||||
|
||||
OBJDIR_BASE := obj-unix
|
||||
|
||||
ifeq ($(NEED_GOLD_LINKER), 1)
|
||||
LDFLAGS += -fuse-ld=gold
|
||||
endif
|
||||
|
||||
ifeq ($(DEBUG), 1)
|
||||
OBJDIR := $(OBJDIR_BASE)/debug
|
||||
CFLAGS ?= -O0 -g
|
||||
|
@ -1109,7 +1109,8 @@ endif
|
||||
ifeq ($(HAVE_CACA), 1)
|
||||
DEFINES += -DHAVE_CACA
|
||||
OBJ += gfx/drivers/caca_gfx.o gfx/drivers_font/caca_font.o
|
||||
LIBS += -lcaca
|
||||
LIBS += $(CACA_LIBS)
|
||||
DEF_FLAGS += $(CACA_CFLAGS)
|
||||
|
||||
ifeq ($(HAVE_MENU_COMMON), 1)
|
||||
OBJ += menu/drivers_display/menu_display_caca.o
|
||||
@ -1122,6 +1123,7 @@ ifeq ($(HAVE_SIXEL), 1)
|
||||
OBJ += gfx/drivers/sixel_gfx.o gfx/drivers_font/sixel_font.o \
|
||||
gfx/drivers_context/sixel_ctx.o
|
||||
LIBS += $(SIXEL_LIBS)
|
||||
DEF_FLAGS += $(SIXEL_CFLAGS)
|
||||
|
||||
ifeq ($(HAVE_MENU_COMMON), 1)
|
||||
OBJ += menu/drivers_display/menu_display_sixel.o
|
||||
|
@ -3389,7 +3389,7 @@ bool config_unload_override(void)
|
||||
*
|
||||
* Returns: false if there was an error or no action was performed.
|
||||
*/
|
||||
bool config_load_remap(void)
|
||||
bool config_load_remap(const char *directory_input_remapping)
|
||||
{
|
||||
size_t path_size = PATH_MAX_LENGTH * sizeof(char);
|
||||
config_file_t *new_conf = NULL;
|
||||
@ -3397,7 +3397,6 @@ bool config_load_remap(void)
|
||||
char *core_path = NULL;
|
||||
char *game_path = NULL;
|
||||
char *content_path = NULL;
|
||||
settings_t *settings = config_get_ptr();
|
||||
rarch_system_info_t *system = runloop_get_system_info();
|
||||
const char *core_name = system ? system->info.library_name : NULL;
|
||||
const char *rarch_path_basename = path_get(RARCH_PATH_BASENAME);
|
||||
@ -3409,7 +3408,7 @@ bool config_load_remap(void)
|
||||
|
||||
/* Remap directory: remap_directory.
|
||||
* Try remap directory setting, no fallbacks defined */
|
||||
if (string_is_empty(settings->paths.directory_input_remapping))
|
||||
if (string_is_empty(directory_input_remapping))
|
||||
return false;
|
||||
|
||||
if (!string_is_empty(rarch_path_basename))
|
||||
@ -3430,9 +3429,7 @@ bool config_load_remap(void)
|
||||
malloc(PATH_MAX_LENGTH * sizeof(char));
|
||||
remap_directory[0] = core_path[0] = game_path[0] = '\0';
|
||||
|
||||
strlcpy(remap_directory,
|
||||
settings->paths.directory_input_remapping,
|
||||
path_size);
|
||||
strlcpy(remap_directory, directory_input_remapping, path_size);
|
||||
RARCH_LOG("[Remaps]: remap directory: %s\n", remap_directory);
|
||||
|
||||
/* Concatenate strings into full paths for core_path, game_path */
|
||||
@ -3454,55 +3451,32 @@ bool config_load_remap(void)
|
||||
file_path_str(FILE_PATH_REMAP_EXTENSION),
|
||||
path_size);
|
||||
|
||||
/* Create a new config file from game_path */
|
||||
new_conf = config_file_new_from_path_to_string(game_path);
|
||||
input_remapping_set_defaults(false);
|
||||
|
||||
/* If a game remap file exists, load it. */
|
||||
if (new_conf)
|
||||
if ((new_conf = config_file_new_from_path_to_string(game_path)))
|
||||
{
|
||||
RARCH_LOG("[Remaps]: game-specific remap found at %s.\n", game_path);
|
||||
if (input_remapping_load_file(new_conf, game_path))
|
||||
{
|
||||
runloop_msg_queue_push(msg_hash_to_str(
|
||||
MSG_GAME_REMAP_FILE_LOADED), 1, 100, true,
|
||||
NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||
rarch_ctl(RARCH_CTL_SET_REMAPS_GAME_ACTIVE, NULL);
|
||||
goto success;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
RARCH_LOG("[Remaps]: no game-specific remap found at %s.\n", game_path);
|
||||
input_remapping_set_defaults(false);
|
||||
}
|
||||
|
||||
/* Create a new config file from content_path */
|
||||
new_conf = config_file_new_from_path_to_string(content_path);
|
||||
|
||||
/* If a content-dir remap file exists, load it. */
|
||||
if (new_conf)
|
||||
if ((new_conf = config_file_new_from_path_to_string(content_path)))
|
||||
{
|
||||
RARCH_LOG("[Remaps]: content-dir-specific remap found at %s.\n", content_path);
|
||||
if (input_remapping_load_file(new_conf, content_path))
|
||||
{
|
||||
runloop_msg_queue_push(msg_hash_to_str(
|
||||
MSG_GAME_REMAP_FILE_LOADED), 1, 100, true,
|
||||
NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||
rarch_ctl(RARCH_CTL_SET_REMAPS_CONTENT_DIR_ACTIVE, NULL);
|
||||
goto success;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
RARCH_LOG("[Remaps]: no content-dir-specific remap found at %s.\n", content_path);
|
||||
input_remapping_set_defaults(false);
|
||||
}
|
||||
|
||||
/* Create a new config file from core_path */
|
||||
new_conf = config_file_new_from_path_to_string(core_path);
|
||||
|
||||
/* If a core remap file exists, load it. */
|
||||
if (new_conf)
|
||||
if ((new_conf = config_file_new_from_path_to_string(core_path)))
|
||||
{
|
||||
RARCH_LOG("[Remaps]: core-specific remap found at %s.\n", core_path);
|
||||
if (input_remapping_load_file(new_conf, core_path))
|
||||
@ -3511,11 +3485,6 @@ bool config_load_remap(void)
|
||||
goto success;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
RARCH_LOG("[Remaps]: no core-specific remap found at %s.\n", core_path);
|
||||
input_remapping_set_defaults(false);
|
||||
}
|
||||
|
||||
new_conf = NULL;
|
||||
|
||||
@ -3526,6 +3495,9 @@ bool config_load_remap(void)
|
||||
return false;
|
||||
|
||||
success:
|
||||
runloop_msg_queue_push(msg_hash_to_str(
|
||||
MSG_GAME_REMAP_FILE_LOADED), 1, 100, true,
|
||||
NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||
free(content_path);
|
||||
free(remap_directory);
|
||||
free(core_path);
|
||||
@ -4142,23 +4114,6 @@ bool config_save_overrides(int override_type)
|
||||
snprintf(cfg, sizeof(cfg), "input_player%u_joypad_index", i + 1);
|
||||
config_set_int(conf, cfg, overrides->uints.input_joypad_map[i]);
|
||||
}
|
||||
|
||||
/* blacklist these since they are handled by remaps */
|
||||
/* to-do: add setting to control blacklisting
|
||||
if (settings->uints.input_libretro_device[i]
|
||||
!= overrides->uints.input_libretro_device[i])
|
||||
{
|
||||
snprintf(cfg, sizeof(cfg), "input_libretro_device_p%u", i + 1);
|
||||
config_set_int(conf, cfg, overrides->uints.input_libretro_device[i]);
|
||||
}
|
||||
|
||||
if (settings->uints.input_analog_dpad_mode[i]
|
||||
!= overrides->uints.input_analog_dpad_mode[i])
|
||||
{
|
||||
snprintf(cfg, sizeof(cfg), "input_player%u_analog_dpad_mode", i + 1);
|
||||
config_set_int(conf, cfg, overrides->uints.input_analog_dpad_mode[i]);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
ret = false;
|
||||
|
@ -786,7 +786,7 @@ bool config_unload_override(void);
|
||||
* Returns: false if there was an error or no action was performed.
|
||||
*
|
||||
*/
|
||||
bool config_load_remap(void);
|
||||
bool config_load_remap(const char *directory_input_remapping);
|
||||
|
||||
/**
|
||||
* config_save_autoconf_profile:
|
||||
|
6
configure
vendored
6
configure
vendored
@ -2,14 +2,12 @@
|
||||
|
||||
PACKAGE_NAME=retroarch
|
||||
|
||||
cat /dev/null > config.log
|
||||
|
||||
. qb/qb.init.sh
|
||||
|
||||
. qb/qb.system.sh
|
||||
|
||||
. qb/qb.params.sh
|
||||
|
||||
. qb/qb.system.sh
|
||||
|
||||
. qb/qb.comp.sh
|
||||
|
||||
. qb/qb.libs.sh
|
||||
|
@ -1069,6 +1069,7 @@ static bool core_info_compare_api_version(int sys_major, int sys_minor, int majo
|
||||
|
||||
bool core_info_hw_api_supported(core_info_t *info)
|
||||
{
|
||||
#ifdef RARCH_INTERNAL
|
||||
unsigned i;
|
||||
enum gfx_ctx_api sys_api;
|
||||
gfx_ctx_flags_t sys_flags = {0};
|
||||
@ -1287,4 +1288,7 @@ bool core_info_hw_api_supported(core_info_t *info)
|
||||
}
|
||||
|
||||
return false;
|
||||
#else
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
@ -553,6 +553,7 @@ static void dinput_joypad_poll(void)
|
||||
unsigned i;
|
||||
for (i = 0; i < MAX_USERS; i++)
|
||||
{
|
||||
HRESULT ret;
|
||||
struct dinput_joypad_data *pad = &g_pads[i];
|
||||
bool polled = g_xinput_pad_indexes[i] < 0;
|
||||
|
||||
@ -577,8 +578,11 @@ static void dinput_joypad_poll(void)
|
||||
}
|
||||
}
|
||||
|
||||
IDirectInputDevice8_GetDeviceState(pad->joypad,
|
||||
ret = IDirectInputDevice8_GetDeviceState(pad->joypad,
|
||||
sizeof(DIJOYSTATE2), &pad->joy_state);
|
||||
|
||||
if (ret == DIERR_INPUTLOST || ret == DIERR_NOTACQUIRED)
|
||||
input_autoconfigure_disconnect(i, g_pads[i].joy_friendly_name);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -540,10 +540,13 @@ static void xinput_joypad_poll(void)
|
||||
#ifdef HAVE_DINPUT
|
||||
if (g_xinput_states[i].connected)
|
||||
{
|
||||
if (g_XInputGetStateEx && g_XInputGetStateEx(i,
|
||||
if (g_XInputGetStateEx(i,
|
||||
&(g_xinput_states[i].xstate))
|
||||
== ERROR_DEVICE_NOT_CONNECTED)
|
||||
{
|
||||
g_xinput_states[i].connected = false;
|
||||
input_autoconfigure_disconnect(i, xinput_joypad_name(i));
|
||||
}
|
||||
}
|
||||
#else
|
||||
/* Normally, dinput handles device insertion/removal for us, but
|
||||
@ -551,7 +554,7 @@ static void xinput_joypad_poll(void)
|
||||
/* Also note that on UWP, the controllers are not available on startup
|
||||
* and are instead 'plugged in' a moment later because Microsoft reasons */
|
||||
/* TODO: This may be bad for performance? */
|
||||
bool new_connected = g_XInputGetStateEx && g_XInputGetStateEx(i, &(g_xinput_states[i].xstate)) != ERROR_DEVICE_NOT_CONNECTED;
|
||||
bool new_connected = g_XInputGetStateEx(i, &(g_xinput_states[i].xstate)) != ERROR_DEVICE_NOT_CONNECTED;
|
||||
if (new_connected != g_xinput_states[i].connected)
|
||||
{
|
||||
if (new_connected)
|
||||
@ -561,10 +564,10 @@ static void xinput_joypad_poll(void)
|
||||
xinput_joypad_init(NULL);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_xinput_states[i].connected = new_connected;
|
||||
}
|
||||
|
||||
g_xinput_states[i].connected = new_connected;
|
||||
if (!g_xinput_states[i].connected)
|
||||
input_autoconfigure_disconnect(i, xinput_joypad_name(i));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -3437,10 +3437,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
|
||||
"Pokaż pomoc")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
|
||||
"Pokaż/ukryj opcję \"Pomoc\".")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Pokaż Zamknij RetroArch")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Pokaż/ukryj opcję 'Zamknij RetroArch'.")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
"Pokaż restart")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT,
|
||||
@ -3866,9 +3862,220 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_XMB_ANIMATION_OPENING_MAIN_MENU,
|
||||
"Menu główne animacji Otwiera/Zamyka")
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_DISC_INFORMATION,
|
||||
"Disc Information"
|
||||
"Informacje o dysku"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_DISC_INFORMATION,
|
||||
"View information about inserted media discs."
|
||||
"Wyświetl informacje o włożonych dyskach multimedialnych."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
|
||||
"Pokaż Ustaw podstawowe stowarzyszenie"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
|
||||
"Pokaż/ukryj opcję „Ustaw podstawowe stowarzyszenie”."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_DOWNLOAD_THUMBNAILS,
|
||||
"Pokaż Pobierz Miniatury"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_DOWNLOAD_THUMBNAILS,
|
||||
"Pokaż/ukryj opcję „Pobierz miniatury”."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_LEGACY_THUMBNAIL_UPDATER,
|
||||
"Pokaż aktualizację starszych miniatur"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_SHOW_LEGACY_THUMBNAIL_UPDATER,
|
||||
"Pokaż/ukryj możliwość pobierania starszych pakietów miniatur."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_SUBLABELS,
|
||||
"Pokaż podpowiedzi menu"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE,
|
||||
"Styl daty/godziny"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME,
|
||||
"Wznów zawartość po użyciu stanów zapisu"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_XMB_THUMBNAIL_SCALE_FACTOR,
|
||||
"Współczynnik skali miniatur"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_THUMBNAIL_UPSCALE_THRESHOLD,
|
||||
"Próg skalowania miniatur"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_TICKER_TYPE,
|
||||
"Animacja paska tekstu"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_TICKER_SPEED,
|
||||
"Szybkość paska tekstu"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_SORT_ALPHABETICAL,
|
||||
"Sortuj listy alfabetycznie"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_USE_OLD_FORMAT,
|
||||
"Zapisz listy odtwarzania w starym formacie"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_SHOW_INLINE_CORE_NAME,
|
||||
"Pokaż powiązane rdzenie na listach odtwarzania"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_SHOW_SUBLABELS,
|
||||
"Pokaż etykiety pomocnicze listy odtwarzania"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_RUNTIME_TYPE,
|
||||
"Czas działania etykiety podrzędnej listy odtwarzania"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_FUZZY_ARCHIVE_MATCH,
|
||||
"Dopasowanie rozmycia archiwum"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LIST,
|
||||
"Zarządzanie listami odtwarzania"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_NETWORK_ON_DEMAND_THUMBNAILS,
|
||||
"Pobieranie miniatur na żądanie"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_MOUSE_CURSOR,
|
||||
"Pokaż kursor myszy z nakładką"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MEMORY_SHOW,
|
||||
"Dołącz szczegóły pamięci"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_VRR_RUNLOOP_ENABLE,
|
||||
"Synchronizuj z dokładną liczbą klatek na sekundę (G-Sync, FreeSync)"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_LOG_TO_FILE,
|
||||
"Zaloguj się do pliku"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_LOG_TO_FILE_TIMESTAMP,
|
||||
"Pliki dziennika ze znacznikami czasu"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CONTENT_RUNTIME_LOG,
|
||||
"Zapisz dziennik środowiska wykonawczego (na rdzeń)"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CONTENT_RUNTIME_LOG_AGGREGATE,
|
||||
"Zapisz dziennik czasu wykonywania (agregacja)"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_QUIT_PRESS_TWICE,
|
||||
"Naciśnij dwukrotnie quit"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_VIBRATE_ON_KEYPRESS,
|
||||
"Wibruj po naciśnięciu klawisza"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_ENABLE_DEVICE_VIBRATION,
|
||||
"Włącz wibracje urządzenia (dla obsługiwanych rdzeni)"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_BUTTON_AXIS_THRESHOLD,
|
||||
"Wprowadź próg osi przycisku"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_DEADZONE,
|
||||
"Martwa strefa analoga"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_SENSITIVITY,
|
||||
"Czułość analoga"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_SEARCH,
|
||||
"Rozpocznij lub kontynuuj wyszukiwanie kodu"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEAT_FILE_LOAD_APPEND,
|
||||
"Załaduj plik kodu (dołącz)"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEAT_RELOAD_CHEATS,
|
||||
"Odśwież Kody specyficzne dla gry"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_TOP,
|
||||
"Dodaj nowy kod do góry"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_BOTTOM,
|
||||
"Dodaj nowy kod do dołu"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEAT_DELETE_ALL,
|
||||
"Usuń wszystkie kody"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_AFTER_LOAD,
|
||||
"Automatyczne stosowanie cheatów podczas ładowania gry"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_AFTER_TOGGLE,
|
||||
"Zastosuj po przełączeniu"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_CONTENT_DIR,
|
||||
"Zapisz plik zmiany mapowania zawartości"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE,
|
||||
"Rozmiar bufora przewijania (MB)"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE_STEP,
|
||||
"Krok zmiany rozmiaru bufora (MB)"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_HELP_SEND_DEBUG_INFO,
|
||||
"Wyślij informacje o debugowaniu"
|
||||
)
|
||||
#ifdef HAVE_LAKKA
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Pokaż uruchom ponownie RetroArch"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Pokaż/ukryj opcję „Uruchom ponownie RetroArch”."
|
||||
)
|
||||
#else
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Pokaż zamknij RetroArch"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Pokaż/ukryj opcję „Zakończ RetroArch."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_RESTART_RETROARCH,
|
||||
"Pokaż uruchom ponownie RetroArch"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_SHOW_RESTART_RETROARCH,
|
||||
"Pokaż/ukryj opcję „Uruchom ponownie RetroArch”."
|
||||
)
|
||||
#endif
|
||||
|
@ -151,7 +151,7 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
||||
break;
|
||||
case RARCH_OVERLAY_NEXT:
|
||||
snprintf(s, len,
|
||||
"Mudar para a próxima Transparência.");
|
||||
"Mudar para a próxima Sobreposição.");
|
||||
break;
|
||||
case RARCH_DISK_EJECT_TOGGLE:
|
||||
snprintf(s, len,
|
||||
@ -438,7 +438,7 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
||||
break;
|
||||
case MENU_ENUM_LABEL_FILE_BROWSER_OVERLAY:
|
||||
snprintf(s, len,
|
||||
"Arquivo de Transparência.");
|
||||
"Arquivo de Sobreposição.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_FILE_BROWSER_RDB:
|
||||
snprintf(s, len,
|
||||
@ -616,7 +616,7 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
||||
break;
|
||||
case MENU_ENUM_LABEL_VIDEO_FONT_ENABLE:
|
||||
snprintf(s, len,
|
||||
"Exibir / ocultar mensagens na tela.");
|
||||
"Exibir ou ocultar mensagens na tela.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_VIDEO_MESSAGE_POS_X:
|
||||
case MENU_ENUM_LABEL_VIDEO_MESSAGE_POS_Y:
|
||||
@ -628,30 +628,30 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
||||
case MENU_ENUM_LABEL_INPUT_OVERLAY_ENABLE:
|
||||
snprintf(s, len,
|
||||
"Habilitar ou desabilitar \n"
|
||||
"a Transparência atual.");
|
||||
"a Sobreposição atual.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU:
|
||||
snprintf(s, len,
|
||||
"Ocultar a exibição de Transparência \n"
|
||||
"Ocultar a exibição de Sobreposição \n"
|
||||
"dentro do menu.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS:
|
||||
snprintf(s, len,
|
||||
"Exibir comandos do teclado/controle na \n"
|
||||
"transparência.");
|
||||
"sobreposição.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT:
|
||||
snprintf(s, len,
|
||||
"Seleciona a porta de escuta dos comandos do controle \n"
|
||||
"a serem exibidos na transparência.");
|
||||
"a serem exibidos na sobreposição.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_OVERLAY_PRESET:
|
||||
snprintf(s, len,
|
||||
"Caminho para predefinição de Transparência.");
|
||||
"Caminho para predefinição de Sobreposição.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_OVERLAY_OPACITY:
|
||||
snprintf(s, len,
|
||||
"Opacidade da Transparência.");
|
||||
"Opacidade da Sobreposição.");
|
||||
break;
|
||||
#ifdef HAVE_VIDEO_LAYOUT
|
||||
case MENU_ENUM_LABEL_VIDEO_LAYOUT_ENABLE:
|
||||
@ -682,7 +682,7 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
||||
break;
|
||||
case MENU_ENUM_LABEL_OVERLAY_SCALE:
|
||||
snprintf(s, len,
|
||||
"Escala da Transparência.");
|
||||
"Escala da Sobreposição.");
|
||||
break;
|
||||
case MENU_ENUM_LABEL_AUDIO_OUTPUT_RATE:
|
||||
snprintf(s, len,
|
||||
@ -940,7 +940,7 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
||||
" \n"
|
||||
"Este é um driver de vídeo de baixo-nível \n"
|
||||
"usando libdrm para escala por hardware \n"
|
||||
"utilizando overlay de GPU.");
|
||||
"utilizando sobreposições de GPU.");
|
||||
}
|
||||
else if (string_is_equal(settings->arrays.video_driver, "sunxi"))
|
||||
{
|
||||
@ -1417,7 +1417,7 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
||||
break;
|
||||
case MENU_ENUM_LABEL_OVERLAY_NEXT:
|
||||
snprintf(s, len,
|
||||
"Mudar para a próxima transparência.\n"
|
||||
"Mudar para a próxima sobreposição.\n"
|
||||
" \n"
|
||||
"Circula pela opções.");
|
||||
break;
|
||||
@ -1898,9 +1898,9 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
||||
break;
|
||||
case MENU_ENUM_LABEL_OVERLAY_DIRECTORY:
|
||||
snprintf(s, len,
|
||||
"Diretório de Transparências. \n"
|
||||
"Diretório de Sobreposições. \n"
|
||||
" \n"
|
||||
"Define um diretório onde as transparências \n"
|
||||
"Define um diretório onde as sobreposições \n"
|
||||
"são mantidas para fácil acesso.");
|
||||
break;
|
||||
#ifdef HAVE_VIDEO_LAYOUT
|
||||
@ -2251,14 +2251,14 @@ int menu_hash_get_help_pt_br_enum(enum msg_hash_enums msg, char *s, size_t len)
|
||||
break;
|
||||
case MENU_ENUM_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD_DESC:
|
||||
snprintf(s, len,
|
||||
"Você pode alterar a transparência de \n"
|
||||
"Você pode alterar a sobreposição de \n"
|
||||
"gamepad virtual indo em \n"
|
||||
"'%s' -> '%s'. \n"
|
||||
" \n"
|
||||
"De lá você pode alterar a transparência, \n"
|
||||
"De lá você pode alterar a sobreposição, \n"
|
||||
"mudar o tamanho e opacidade dos botões, etc. \n"
|
||||
" \n"
|
||||
"OBS: Por padrão, as transparências de gamepad \n"
|
||||
"OBS: Por padrão, as sobreposições de gamepad \n"
|
||||
"virtual ficam ocultas quando dentro do menu. \n"
|
||||
"Se você quiser alterar este comportamento, \n"
|
||||
"você pode definir '%s' como falso.",
|
||||
|
@ -685,6 +685,10 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_NAME,
|
||||
"Nome do sistema"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CORE_INFO_REQUIRED_HW_API,
|
||||
"API gráficas requeridas"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS,
|
||||
"Controles"
|
||||
@ -911,7 +915,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD,
|
||||
"Alterando a Transparência de Gamepad Virtual"
|
||||
"Alterando a Sobreposição do Gamepad Virtual"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_HELP_CONTROLS,
|
||||
@ -1343,7 +1347,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_OVERLAY_NEXT,
|
||||
"Próxima Transparência"
|
||||
"Próxima Sobreposição"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE,
|
||||
@ -1418,15 +1422,19 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_ENABLE,
|
||||
"Mostrar Transparência"
|
||||
"Mostrar Sobreposição"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU,
|
||||
"Ocultar Transparência no Menu"
|
||||
"Ocultar Sobreposição no Menu"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS,
|
||||
"Exibir Comandos Na Transparência"
|
||||
"Exibir Comandos Na Sobreposição"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_MOUSE_CURSOR,
|
||||
"Exibir Cursor do Mouse com Sobreposição"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT,
|
||||
@ -1617,9 +1625,9 @@ MSG_HASH(
|
||||
"Carregar Conteúdo"
|
||||
)
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_DISC,
|
||||
"Load Disc")
|
||||
"Carregar Disco")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_DUMP_DISC,
|
||||
"Dump Disc")
|
||||
"Dumpar Disco")
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_LOAD_STATE,
|
||||
"Carregar Estado de Jogo"
|
||||
@ -1932,6 +1940,14 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_NETWORK_REMOTE_PORT,
|
||||
"Porta Base Remota de Rede"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_NETWORK_ON_DEMAND_THUMBNAILS,
|
||||
"Baixar Miniaturas Sob Demanda"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_NETWORK_ON_DEMAND_THUMBNAILS,
|
||||
"Faça o download automático de imagens em miniatura ausentes ao navegar pelas listas de reprodução. Tem um grande impacto no desempenho."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_NETWORK_SETTINGS,
|
||||
"Rede"
|
||||
@ -2034,7 +2050,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_ONSCREEN_OVERLAY_SETTINGS,
|
||||
"Transparência na Tela"
|
||||
"Sobreposição na Tela"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_ONSCREEN_OVERLAY_SETTINGS,
|
||||
@ -2068,15 +2084,15 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_OVERLAY,
|
||||
"Transparência"
|
||||
"Sobreposição"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED,
|
||||
"Carrega Automaticamente Transparência Favorita"
|
||||
"Carrega Automaticamente Sobreposição Favorita"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_OVERLAY_DIRECTORY,
|
||||
"Transparência"
|
||||
"Sobreposição"
|
||||
)
|
||||
#ifdef HAVE_VIDEO_LAYOUT
|
||||
MSG_HASH(
|
||||
@ -2086,19 +2102,19 @@ MSG_HASH(
|
||||
#endif
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_OVERLAY_OPACITY,
|
||||
"Opacidade da Transparência"
|
||||
"Opacidade da Sobreposição"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_OVERLAY_PRESET,
|
||||
"Predefinição de Transparência"
|
||||
"Predefinição de Sobreposição"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_OVERLAY_SCALE,
|
||||
"Escala da Transparência"
|
||||
"Escala da Sobreposição"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_OVERLAY_SETTINGS,
|
||||
"Transparência na Tela"
|
||||
"Sobreposição na Tela"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PAL60_ENABLE,
|
||||
@ -2128,6 +2144,14 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO,
|
||||
"Pausar quando o menu for ativado"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SAVESTATE_RESUME,
|
||||
"Continuar o conteúdo depois de usar os estados salvos"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_SAVESTATE_RESUME,
|
||||
"Feche automaticamente o menu e continue o conteúdo atual depois de selecionar 'Salvar Estado de Jogo' ou 'Carregar Estado de Jogo' no menu rápido. Desativar isso pode melhorar o desempenho ao salvar um jogo em dispositivos muito lentos."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PAUSE_NONACTIVE,
|
||||
"Não rodar em segundo plano"
|
||||
@ -2183,6 +2207,38 @@ MSG_HASH(
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX,
|
||||
"Keep region and disc index"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LIST,
|
||||
"Gerenciamento de Listas de Reprodução"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_PLAYLIST_MANAGER_LIST,
|
||||
"Executa tarefas de manutenção na lista de reprodução selecionada (ex: definir/restaurar associações padrões do núcleo)."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_DEFAULT_CORE,
|
||||
"Núcleo Padrão"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_PLAYLIST_MANAGER_DEFAULT_CORE,
|
||||
"Especifique o núcleo a ser usado ao iniciar o conteúdo por meio de uma entrada de lista de reprodução que não tenha uma associação principal existente."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_RESET_CORES,
|
||||
"Restaurar Associações do Núcleo"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_PLAYLIST_MANAGER_RESET_CORES,
|
||||
"Remova as associações existentes dos núcleos para todas as entradas da lista de reprodução."
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_PLAYLIST_MANAGER_RESETTING_CORES,
|
||||
"Restaurando núcleos: "
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_PLAYLIST_MANAGER_CORES_RESET,
|
||||
"Restauração dos núcleos: "
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_POINTER_ENABLE,
|
||||
@ -2214,7 +2270,15 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_QUIT_RETROARCH,
|
||||
"Sair do RetroArch"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_RESTART_RETROARCH,
|
||||
"Reiniciar o RetroArch"
|
||||
)
|
||||
#endif
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_DETAIL,
|
||||
"Entrada do banco de dados")
|
||||
MSG_HASH(MENU_ENUM_SUBLABEL_RDB_ENTRY_DETAIL,
|
||||
"Exibir informações do banco de dados do conteúdo atual")
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ANALOG,
|
||||
"Analógico suportado"
|
||||
@ -2327,6 +2391,30 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_RDB_ENTRY_TGDB_RATING,
|
||||
"Classificação TGDB"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CONTENT_INFO_LABEL,
|
||||
"Nome"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CONTENT_INFO_PATH,
|
||||
"Caminho do arquivo"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CONTENT_INFO_CORE_NAME,
|
||||
"Núcleo"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CONTENT_INFO_DATABASE,
|
||||
"Banco de Dados"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CONTENT_INFO_RUNTIME,
|
||||
"Tempo de Jogo"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CONTENT_INFO_LAST_PLAYED,
|
||||
"Jogou Pela Última Vez"
|
||||
)
|
||||
#ifdef HAVE_LAKKA_SWITCH
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_REBOOT,
|
||||
@ -2418,10 +2506,6 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_RESTART_CONTENT,
|
||||
"Reiniciar"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_RESTART_RETROARCH,
|
||||
"Reiniciar RetroArch"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_RESUME,
|
||||
"Continuar"
|
||||
@ -2518,6 +2602,10 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_DOWNLOAD_PL_ENTRY_THUMBNAILS,
|
||||
"Faça o download de imagens em miniatura da captura de tela, arte da caixa ou tela de título para o conteúdo atual. Atualiza quaisquer miniaturas existentes."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_SET_CORE_ASSOCIATION,
|
||||
"Definir Associação do Núcleo"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_RESET_CORE_ASSOCIATION,
|
||||
"Redefinir Associação do Núcleo"
|
||||
@ -2782,6 +2870,10 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CORETEXT_SUPPORT,
|
||||
"Suporte a CoreText"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CPU_MODEL,
|
||||
"Modelo da CPU"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES,
|
||||
"Características de CPU"
|
||||
@ -2916,7 +3008,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OVERLAY_SUPPORT,
|
||||
"Suporte à Transparência"
|
||||
"Suporte à Sobreposição"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE,
|
||||
@ -3066,6 +3158,22 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_XMB_VERTICAL_THUMBNAILS,
|
||||
"Disposição Vertical de Miniaturas"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_XMB_THUMBNAIL_SCALE_FACTOR,
|
||||
"Fator de Escala de Miniaturas"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_XMB_THUMBNAIL_SCALE_FACTOR,
|
||||
"Reduz o tamanho da exibição de miniaturas dimensionando a largura máxima permitida."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_THUMBNAIL_UPSCALE_THRESHOLD,
|
||||
"Limite de Redimensionamento de Miniaturas"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_THUMBNAIL_UPSCALE_THRESHOLD,
|
||||
"Automaticamente redimensiona imagens em miniatura com uma largura/altura menor do que o valor especificado. Melhora a qualidade da imagem. Tem um impacto moderado no desempenho."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_RGUI_INLINE_THUMBNAILS,
|
||||
"Mostrar Miniaturas da Lista de Reprodução"
|
||||
@ -3100,7 +3208,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_RGUI_THUMB_SCALE_POINT,
|
||||
"Vizinho mais próximo (Rápido)"
|
||||
"Vizinho Mais Próximo (Rápido)"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_RGUI_THUMB_SCALE_BILINEAR,
|
||||
@ -3204,7 +3312,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_BOXARTS,
|
||||
"Arte da Embalagem"
|
||||
"Arte da Caixa"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_SCREENSHOTS,
|
||||
@ -3508,7 +3616,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_UPDATE_OVERLAYS,
|
||||
"Atualizar Transparências"
|
||||
"Atualizar Sobreposições"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_UPDATE_SLANG_SHADERS,
|
||||
@ -3808,6 +3916,22 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_VIDEO_VI_WIDTH,
|
||||
"Definir Largura de Tela do VI"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_VIDEO_OVERSCAN_CORRECTION_TOP,
|
||||
"Correção de Overscan (Superior)"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_VIDEO_OVERSCAN_CORRECTION_TOP,
|
||||
"Ajuste o corte do overscan da exibição reduzindo o tamanho da imagem pelo número especificado de linhas de varredura (tiradas da parte superior da tela). Nota: pode introduzir artefatos de dimensionamento."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_VIDEO_OVERSCAN_CORRECTION_BOTTOM,
|
||||
"Correção de Overscan (Inferior)"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_VIDEO_OVERSCAN_CORRECTION_BOTTOM,
|
||||
"Ajuste o corte do overscan da exibição reduzindo o tamanho da imagem pelo número especificado de linhas de varredura (tiradas da parte inferior da tela). Nota: pode introduzir artefatos de dimensionamento."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC,
|
||||
"Sincronização Vertical (V-Sync)"
|
||||
@ -4036,7 +4160,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_XMB_LAYOUT,
|
||||
"Layout do Menu"
|
||||
"Esquema do Menu"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_XMB_THEME,
|
||||
@ -4105,7 +4229,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_ONSCREEN_DISPLAY_SETTINGS,
|
||||
"Altera as configurações de Transparência e Transparência de teclado, e as configurações de notificação na tela."
|
||||
"Altera as configurações de sobreposição e sobreposição de teclado, e as configurações de notificação na tela."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_FRAME_THROTTLE_SETTINGS,
|
||||
@ -4299,6 +4423,10 @@ MSG_HASH(
|
||||
MSG_ADDED_TO_FAVORITES,
|
||||
"Adicionado aos favoritos"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_SET_CORE_ASSOCIATION,
|
||||
"Conjunto de núcleo: "
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_RESET_CORE_ASSOCIATION,
|
||||
"A associação do núcleo de entrada da lista de reprodução foi redefinida."
|
||||
@ -4569,7 +4697,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_FAILED_TO_LOAD_OVERLAY,
|
||||
"Falha em carregar a Transparência."
|
||||
"Falha em carregar a Sobreposição."
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_FAILED_TO_LOAD_STATE,
|
||||
@ -5503,6 +5631,10 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_QUIT_RETROARCH,
|
||||
"Sai do programa."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_RESTART_RETROARCH,
|
||||
"Reinicia o programa."
|
||||
)
|
||||
#endif
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_VIDEO_WINDOW_WIDTH,
|
||||
@ -5538,15 +5670,19 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_INPUT_OVERLAY_HIDE_IN_MENU,
|
||||
"Oculta a Transparência enquanto estiver dentro do menu e exibe novamente ao sair."
|
||||
"Oculta a Sobreposição enquanto estiver dentro do menu e exibe novamente ao sair."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS,
|
||||
"Exibe comandos de teclado/controle na transparência."
|
||||
"Exibe comandos de teclado/controle na sobreposição."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT,
|
||||
"Selecione a porta para a transparência escutar se Exibir Comandos na Transparência estiver habilitado."
|
||||
"Selecione a porta para a sobreposição escutar se Exibir Comandos na Sobreposição estiver habilitado."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_MOUSE_CURSOR,
|
||||
"Mostra o cursor do mouse ao usar uma sobreposição na tela."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_PLAYLISTS_TAB,
|
||||
@ -5862,19 +5998,19 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_OVERLAY_OPACITY,
|
||||
"Opacidade de todos os elementos de interface da Transparência."
|
||||
"Opacidade de todos os elementos de interface da Sobreposição."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_OVERLAY_SCALE,
|
||||
"Escala de todos os elementos de interface da Transparência."
|
||||
"Escala de todos os elementos de interface da Sobreposição."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_INPUT_OVERLAY_ENABLE,
|
||||
"Habilita a Transparência."
|
||||
"As Sobreposições são usadas para bordas e controles na tela"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_OVERLAY_PRESET,
|
||||
"Selecione uma Transparência pelo navegador de arquivos."
|
||||
"Selecione uma Sobreposição pelo navegador de arquivos."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_NETPLAY_IP_ADDRESS,
|
||||
@ -6226,7 +6362,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_XMB_LAYOUT,
|
||||
"Selecione um layout diferente para a interface XMB."
|
||||
"Selecione um esquema diferente para a interface XMB."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_XMB_THEME,
|
||||
@ -6368,8 +6504,14 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_OVERLAY_DIRECTORY,
|
||||
"Define um diretório onde as Transparências são mantidas para fácil acesso."
|
||||
"Define um diretório onde as sobreposições são mantidas para facilitar o acesso."
|
||||
)
|
||||
#ifdef HAVE_VIDEO_LAYOUT
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_VIDEO_LAYOUT_DIRECTORY,
|
||||
"Define um diretório onde os esquemas de vídeo são mantidos para facilitar o acesso."
|
||||
)
|
||||
#endif
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CHEAT_DATABASE_PATH,
|
||||
"Os arquivos de Trapaça são mantidos aqui."
|
||||
@ -6554,6 +6696,14 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_SHOW_ONLINE_UPDATER,
|
||||
"Exibir ou ocultar a opção 'Atualizador On-line'."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_LEGACY_THUMBNAIL_UPDATER,
|
||||
"Exibir Atualizador de Miniaturas Herdadas"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_SHOW_LEGACY_THUMBNAIL_UPDATER,
|
||||
"Exibir ou ocultar a capacidade de baixar pacotes de miniaturas herdadas."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_VIEWS_SETTINGS,
|
||||
"Visualizações"
|
||||
@ -6690,6 +6840,22 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
|
||||
"Exibir ou ocultar a opção 'Carregar Conteúdo'."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_DISC,
|
||||
"Exibir Carregar Disco"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_DISC,
|
||||
"Exibir ou ocultar a opção 'Carregar Disco'."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_DUMP_DISC,
|
||||
"Exibir Dumpar Disco"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_SHOW_DUMP_DISC,
|
||||
"Exibir ou ocultar a opção 'Dumpar Disco'."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION,
|
||||
"Exibir Informação"
|
||||
@ -6732,6 +6898,14 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
|
||||
"Exibir ou ocultar a opção 'Sair do RetroArch'."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_RESTART_RETROARCH,
|
||||
"Exibir 'Reiniciar o RetroArch'"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_MENU_SHOW_RESTART_RETROARCH,
|
||||
"Exibir ou ocultar a opção 'Reiniciar o RetroArch'"
|
||||
)
|
||||
#endif
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT,
|
||||
@ -6805,6 +6979,14 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_START_STREAMING,
|
||||
"Exibir ou ocultar a opção 'Iniciar Transmissão'."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
|
||||
"Exibir Definir Associação do Núcleo"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
|
||||
"Exibir ou ocultar a opção 'Definir Associação do Núcleo'."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_RESET_CORE_ASSOCIATION,
|
||||
"Exibir Redefinir Associação do Núcleo"
|
||||
@ -7071,11 +7253,11 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_RGUI_FULL_WIDTH_LAYOUT,
|
||||
"Usar Layout de Largura Total"
|
||||
"Usar Esquema de Largura Total"
|
||||
)
|
||||
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 o layout clássico de duas colunas de largura fixa."
|
||||
"Redimensiona e posiciona as entradas do menu para aproveitar melhor o espaço disponível na tela. Desabilite isso para usar o esquema clássico de duas colunas de largura fixa."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MENU_RGUI_SHADOWS,
|
||||
@ -8465,6 +8647,10 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_STREAMING_TOGGLE,
|
||||
"Alternar transmissão"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_META_AI_SERVICE,
|
||||
"Serviço IA"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_CHEEVOS_HARDCORE_MODE_DISABLED,
|
||||
"Um estado do jogo foi carregado, Conquistas no Modo Hardcore foram desativadas para a sessão atual. Reinicie para ativar o modo hardcore."
|
||||
@ -8629,6 +8815,18 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_INLINE_CORE_DISPLAY_NEVER,
|
||||
"Nunca"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_HIST_FAV,
|
||||
"Histórico e Favoritos"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_ALL,
|
||||
"Todas as Listas de Rprodução"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_NONE,
|
||||
"DESLIGADO"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_SORT_ALPHABETICAL,
|
||||
"Ordenar listas de reprodução por ordem alfabética"
|
||||
@ -8803,11 +9001,29 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_XMB_ANIMATION_MOVE_UP_DOWN,
|
||||
"Animação Move Para Cima/Baixo")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_XMB_ANIMATION_OPENING_MAIN_MENU,
|
||||
"Animação do Menu Principal Abre/Fecha")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_GPU_INDEX,
|
||||
"Índice da GPU")
|
||||
MSG_HASH(MSG_DUMPING_DISC,
|
||||
"Dumpando disco...")
|
||||
MSG_HASH(MSG_DRIVE_NUMBER,
|
||||
"Unidade %d")
|
||||
MSG_HASH(MSG_LOAD_CORE_FIRST,
|
||||
"Por favor, carregue um núcleo primeiro.")
|
||||
MSG_HASH(MSG_DISC_DUMP_FAILED_TO_READ_FROM_DRIVE,
|
||||
"Falha ao ler da unidade. Processo de dunpagem abortada.")
|
||||
MSG_HASH(MSG_DISC_DUMP_FAILED_TO_WRITE_TO_DISK,
|
||||
"Falha ao escrever para o disco. Processo de dunpagem abortada.")
|
||||
MSG_HASH(MSG_NO_DISC_INSERTED,
|
||||
"Nenhum disco inserido na unidade.")
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_DISC_INFORMATION,
|
||||
"Disc Information"
|
||||
"Informação do Disco"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_DISC_INFORMATION,
|
||||
"View information about inserted media discs."
|
||||
"Ver informações sobre discos de mídia inseridos."
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_INCOMPATIBLE_CORE_FOR_VIDEO_DRIVER,
|
||||
"Este núcleo não é compatível com o driver de vídeo atual."
|
||||
)
|
||||
|
@ -931,23 +931,23 @@ int cdrom_read_subq(libretro_vfs_implementation_file *stream, unsigned char *buf
|
||||
if (/*(control == 4 || control == 6) && */adr == 1 && tno == 0 && point >= 1 && point <= 99)
|
||||
{
|
||||
printf("[CDROM] - Session#: %d TNO %d POINT %d ", session_num, tno, point);
|
||||
printf("[CDROM] Track start time: (MSF %02u:%02u:%02u) ", (unsigned)pmin, (unsigned)psec, (unsigned)pframe);
|
||||
printf("Track start time: (aMSF %02u:%02u:%02u) ", (unsigned)pmin, (unsigned)psec, (unsigned)pframe);
|
||||
}
|
||||
else if (/*(control == 4 || control == 6) && */adr == 1 && tno == 0 && point == 0xA0)
|
||||
{
|
||||
printf("[CDROM] - Session#: %d TNO %d POINT %d ", session_num, tno, point);
|
||||
printf("[CDROM] First Track Number: %d ", pmin);
|
||||
printf("[CDROM] Disc Type: %d ", psec);
|
||||
printf("First Track Number: %d ", pmin);
|
||||
printf("Disc Type: %d ", psec);
|
||||
}
|
||||
else if (/*(control == 4 || control == 6) && */adr == 1 && tno == 0 && point == 0xA1)
|
||||
{
|
||||
printf("[CDROM] - Session#: %d TNO %d POINT %d ", session_num, tno, point);
|
||||
printf("[CDROM] Last Track Number: %d ", pmin);
|
||||
printf("Last Track Number: %d ", pmin);
|
||||
}
|
||||
else if (/*(control == 4 || control == 6) && */adr == 1 && tno == 0 && point == 0xA2)
|
||||
{
|
||||
printf("[CDROM] - Session#: %d TNO %d POINT %d ", session_num, tno, point);
|
||||
printf("[CDROM] Lead-out runtime: (MSF %02u:%02u:%02u) ", (unsigned)pmin, (unsigned)psec, (unsigned)pframe);
|
||||
printf("Lead-out start time: (aMSF %02u:%02u:%02u) ", (unsigned)pmin, (unsigned)psec, (unsigned)pframe);
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
|
@ -655,6 +655,7 @@ void fill_str_dated_filename(char *out_filename,
|
||||
void path_basedir(char *path)
|
||||
{
|
||||
char *last = NULL;
|
||||
|
||||
if (strlen(path) < 2)
|
||||
return;
|
||||
|
||||
|
@ -34,7 +34,8 @@ enum media_detect_cd_system
|
||||
MEDIA_CD_SYSTEM_SATURN,
|
||||
MEDIA_CD_SYSTEM_DREAMCAST,
|
||||
MEDIA_CD_SYSTEM_PSX,
|
||||
MEDIA_CD_SYSTEM_3DO
|
||||
MEDIA_CD_SYSTEM_3DO,
|
||||
MEDIA_CD_SYSTEM_PC_ENGINE_CD
|
||||
};
|
||||
|
||||
typedef struct
|
||||
@ -49,7 +50,11 @@ typedef struct
|
||||
enum media_detect_cd_system system_id;
|
||||
} media_detect_cd_info_t;
|
||||
|
||||
bool media_detect_cd_info(const char *path, media_detect_cd_info_t *info);
|
||||
/* Fill in "info" with detected CD info. Use this when you want to open a specific track file directly, and the pregap is known. */
|
||||
bool media_detect_cd_info(const char *path, uint64_t pregap_bytes, media_detect_cd_info_t *info);
|
||||
|
||||
/* Fill in "info" with detected CD info. Use this when you have a cue file and want it parsed to find the first data track and any pregap info. */
|
||||
bool media_detect_cd_info_cue(const char *path, media_detect_cd_info_t *info);
|
||||
|
||||
RETRO_END_DECLS
|
||||
|
||||
|
@ -61,7 +61,7 @@ int64_t filestream_truncate(RFILE *stream, int64_t length);
|
||||
* Opens a file for reading or writing, depending on the requested mode.
|
||||
* Returns a pointer to an RFILE if opened successfully, otherwise NULL.
|
||||
**/
|
||||
RFILE *filestream_open(const char *path, unsigned mode, unsigned hints);
|
||||
RFILE* filestream_open(const char *path, unsigned mode, unsigned hints);
|
||||
|
||||
int64_t filestream_seek(RFILE *stream, int64_t offset, int seek_position);
|
||||
|
||||
@ -77,7 +77,7 @@ int filestream_close(RFILE *stream);
|
||||
|
||||
int64_t filestream_read_file(const char *path, void **buf, int64_t *len);
|
||||
|
||||
char *filestream_gets(RFILE *stream, char *s, size_t len);
|
||||
char* filestream_gets(RFILE *stream, char *s, size_t len);
|
||||
|
||||
int filestream_getc(RFILE *stream);
|
||||
|
||||
@ -101,11 +101,12 @@ int filestream_delete(const char *path);
|
||||
|
||||
int filestream_rename(const char *old_path, const char *new_path);
|
||||
|
||||
const char *filestream_get_path(RFILE *stream);
|
||||
const char* filestream_get_path(RFILE *stream);
|
||||
|
||||
bool filestream_exists(const char *path);
|
||||
|
||||
char *filestream_getline(RFILE *stream);
|
||||
/* Returned pointer must be freed by the caller. */
|
||||
char* filestream_getline(RFILE *stream);
|
||||
|
||||
libretro_vfs_implementation_file* filestream_get_vfs_handle(RFILE *stream);
|
||||
|
||||
|
@ -23,6 +23,10 @@
|
||||
#include <media/media_detect_cd.h>
|
||||
#include <streams/file_stream.h>
|
||||
#include <string/stdstring.h>
|
||||
#include <file/file_path.h>
|
||||
#include <retro_miscellaneous.h>
|
||||
|
||||
/*#define MEDIA_CUE_PARSE_DEBUG*/
|
||||
|
||||
static void media_zero_trailing_spaces(char *buf, size_t len)
|
||||
{
|
||||
@ -42,12 +46,12 @@ static bool media_skip_spaces(const char **buf, size_t len)
|
||||
bool found = false;
|
||||
unsigned i;
|
||||
|
||||
if (!buf || !*buf)
|
||||
if (!buf || !*buf || !**buf)
|
||||
return false;
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if ((*buf)[i] == ' ')
|
||||
if ((*buf)[i] == ' ' || (*buf)[i] == '\t')
|
||||
continue;
|
||||
|
||||
*buf += i;
|
||||
@ -61,7 +65,205 @@ static bool media_skip_spaces(const char **buf, size_t len)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool media_detect_cd_info(const char *path, media_detect_cd_info_t *info)
|
||||
/* Fill in "info" with detected CD info. Use this when you have a cue file and want it parsed to find the first data track and any pregap info. */
|
||||
bool media_detect_cd_info_cue(const char *path, media_detect_cd_info_t *info)
|
||||
{
|
||||
RFILE *file = NULL;
|
||||
char *line = NULL;
|
||||
char track_path[PATH_MAX_LENGTH] = {0};
|
||||
char track_abs_path[PATH_MAX_LENGTH] = {0};
|
||||
char track_mode[11] = {0};
|
||||
bool found_file = false;
|
||||
bool found_track = false;
|
||||
unsigned first_data_track = 0;
|
||||
uint64_t data_track_pregap_bytes = 0;
|
||||
|
||||
if (string_is_empty(path) || !info)
|
||||
return false;
|
||||
|
||||
file = filestream_open(path, RETRO_VFS_FILE_ACCESS_READ, 0);
|
||||
|
||||
if (!file)
|
||||
{
|
||||
printf("[MEDIA] Could not open cue path for reading: %s\n", path);
|
||||
fflush(stdout);
|
||||
return false;
|
||||
}
|
||||
|
||||
while (!filestream_eof(file) && (line = filestream_getline(file)))
|
||||
{
|
||||
size_t len = 0;
|
||||
const char *command = NULL;
|
||||
|
||||
if (string_is_empty(line))
|
||||
{
|
||||
free(line);
|
||||
continue;
|
||||
}
|
||||
|
||||
len = strlen(line);
|
||||
|
||||
command = line;
|
||||
|
||||
media_skip_spaces(&command, len);
|
||||
|
||||
if (!found_file && !strncasecmp(command, "FILE", 4))
|
||||
{
|
||||
const char *file = command + 4;
|
||||
media_skip_spaces(&file, len - 4);
|
||||
|
||||
if (!string_is_empty(file))
|
||||
{
|
||||
const char *file_end = NULL;
|
||||
size_t file_len = 0;
|
||||
bool quoted = false;
|
||||
|
||||
if (file[0] == '"')
|
||||
{
|
||||
quoted = true;
|
||||
file++;
|
||||
}
|
||||
|
||||
if (quoted)
|
||||
file_end = strchr(file, '\"');
|
||||
else
|
||||
file_end = strchr(file, ' ');
|
||||
|
||||
if (file_end)
|
||||
{
|
||||
file_len = file_end - file;
|
||||
memcpy(track_path, file, file_len);
|
||||
found_file = true;
|
||||
#ifdef MEDIA_CUE_PARSE_DEBUG
|
||||
printf("Found file: %s\n", track_path);
|
||||
fflush(stdout);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (found_file && !found_track && !strncasecmp(command, "TRACK", 5))
|
||||
{
|
||||
const char *track = command + 5;
|
||||
media_skip_spaces(&track, len - 5);
|
||||
|
||||
if (!string_is_empty(track))
|
||||
{
|
||||
unsigned track_number = 0;
|
||||
sscanf(track, "%d", &track_number);
|
||||
#ifdef MEDIA_CUE_PARSE_DEBUG
|
||||
printf("Found track: %d\n", track_number);
|
||||
fflush(stdout);
|
||||
#endif
|
||||
track++;
|
||||
|
||||
if (track[0] && track[0] != ' ' && track[0] != '\t')
|
||||
track++;
|
||||
|
||||
if (!string_is_empty(track))
|
||||
{
|
||||
media_skip_spaces(&track, strlen(track));
|
||||
#ifdef MEDIA_CUE_PARSE_DEBUG
|
||||
printf("Found track type: %s\n", track);
|
||||
fflush(stdout);
|
||||
#endif
|
||||
if (!strncasecmp(track, "MODE", 4))
|
||||
{
|
||||
first_data_track = track_number;
|
||||
found_track = true;
|
||||
strlcpy(track_mode, track, sizeof(track_mode));
|
||||
}
|
||||
else
|
||||
found_file = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (found_file && found_track && first_data_track && !strncasecmp(command, "INDEX", 5))
|
||||
{
|
||||
const char *index = command + 5;
|
||||
media_skip_spaces(&index, len - 5);
|
||||
|
||||
if (!string_is_empty(index))
|
||||
{
|
||||
unsigned index_number = 0;
|
||||
sscanf(index, "%d", &index_number);
|
||||
|
||||
if (index_number == 1)
|
||||
{
|
||||
const char *pregap = index + 1;
|
||||
|
||||
if (pregap[0] && pregap[0] != ' ' && pregap[0] != '\t')
|
||||
pregap++;
|
||||
|
||||
if (!string_is_empty(pregap))
|
||||
{
|
||||
media_skip_spaces(&pregap, strlen(pregap));
|
||||
found_file = false;
|
||||
found_track = false;
|
||||
|
||||
if (first_data_track && !string_is_empty(track_mode))
|
||||
{
|
||||
unsigned track_sector_size = 0;
|
||||
unsigned track_mode_number = 0;
|
||||
|
||||
if (strlen(track_mode) == 10)
|
||||
{
|
||||
sscanf(track_mode, "MODE%d/%d", &track_mode_number, &track_sector_size);
|
||||
#ifdef MEDIA_CUE_PARSE_DEBUG
|
||||
printf("Found track mode %d with sector size %d\n", track_mode_number, track_sector_size);
|
||||
fflush(stdout);
|
||||
#endif
|
||||
if ((track_mode_number == 1 || track_mode_number == 2) && track_sector_size)
|
||||
{
|
||||
unsigned min = 0;
|
||||
unsigned sec = 0;
|
||||
unsigned frame = 0;
|
||||
sscanf(pregap, "%02d:%02d:%02d", &min, &sec, &frame);
|
||||
|
||||
if (min || sec || frame || strstr(pregap, "00:00:00"))
|
||||
{
|
||||
data_track_pregap_bytes = ((min * 60 + sec) * 75 + frame) * track_sector_size;
|
||||
#ifdef MEDIA_CUE_PARSE_DEBUG
|
||||
printf("Found pregap of %02d:%02d:%02d (bytes: %" PRIu64 ")\n", min, sec, frame, data_track_pregap_bytes);
|
||||
fflush(stdout);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
free(line);
|
||||
}
|
||||
|
||||
filestream_close(file);
|
||||
|
||||
if (!string_is_empty(track_path))
|
||||
{
|
||||
if (strstr(track_path, "/") || strstr(track_path, "\\"))
|
||||
{
|
||||
printf("using path %s\n", track_path);
|
||||
fflush(stdout);
|
||||
return media_detect_cd_info(track_path, data_track_pregap_bytes, info);
|
||||
}
|
||||
else
|
||||
{
|
||||
fill_pathname_basedir(track_abs_path, path, sizeof(track_abs_path));
|
||||
strlcat(track_abs_path, track_path, sizeof(track_abs_path));
|
||||
printf("using abs path %s\n", track_abs_path);
|
||||
fflush(stdout);
|
||||
return media_detect_cd_info(track_abs_path, data_track_pregap_bytes, info);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Fill in "info" with detected CD info. Use this when you want to open a specific track file directly, and the pregap is known. */
|
||||
bool media_detect_cd_info(const char *path, uint64_t pregap_bytes, media_detect_cd_info_t *info)
|
||||
{
|
||||
RFILE *file;
|
||||
|
||||
@ -87,6 +289,9 @@ bool media_detect_cd_info(const char *path, media_detect_cd_info_t *info)
|
||||
if (!buf)
|
||||
return false;
|
||||
|
||||
if (pregap_bytes)
|
||||
filestream_seek(file, pregap_bytes, RETRO_VFS_SEEK_POSITION_START);
|
||||
|
||||
read_bytes = filestream_read(file, buf, buf_size);
|
||||
|
||||
if (read_bytes != buf_size)
|
||||
@ -152,7 +357,10 @@ bool media_detect_cd_info(const char *path, media_detect_cd_info_t *info)
|
||||
serial_pos = buf + offset + 0x183;
|
||||
|
||||
if (media_skip_spaces(&serial_pos, 8))
|
||||
{
|
||||
memcpy(info->serial, serial_pos, 8 - (serial_pos - (buf + offset + 0x183)));
|
||||
media_zero_trailing_spaces(info->serial, sizeof(info->serial));
|
||||
}
|
||||
else
|
||||
strlcpy(info->serial, "N/A", sizeof(info->serial));
|
||||
}
|
||||
@ -181,21 +389,30 @@ bool media_detect_cd_info(const char *path, media_detect_cd_info_t *info)
|
||||
serial_pos = buf + offset + 0x20;
|
||||
|
||||
if (media_skip_spaces(&serial_pos, 10))
|
||||
{
|
||||
memcpy(info->serial, serial_pos, 10 - (serial_pos - (buf + offset + 0x20)));
|
||||
media_zero_trailing_spaces(info->serial, sizeof(info->serial));
|
||||
}
|
||||
else
|
||||
strlcpy(info->serial, "N/A", sizeof(info->serial));
|
||||
|
||||
version_pos = buf + offset + 0x2a;
|
||||
|
||||
if (media_skip_spaces(&version_pos, 6))
|
||||
{
|
||||
memcpy(info->version, version_pos, 6 - (version_pos - (buf + offset + 0x2a)));
|
||||
media_zero_trailing_spaces(info->version, sizeof(info->version));
|
||||
}
|
||||
else
|
||||
strlcpy(info->version, "N/A", sizeof(info->version));
|
||||
|
||||
release_date_pos = buf + offset + 0x30;
|
||||
|
||||
if (media_skip_spaces(&release_date_pos, 8))
|
||||
{
|
||||
memcpy(info->release_date, release_date_pos, 8 - (release_date_pos - (buf + offset + 0x30)));
|
||||
media_zero_trailing_spaces(info->release_date, sizeof(info->release_date));
|
||||
}
|
||||
else
|
||||
strlcpy(info->release_date, "N/A", sizeof(info->release_date));
|
||||
}
|
||||
@ -224,21 +441,30 @@ bool media_detect_cd_info(const char *path, media_detect_cd_info_t *info)
|
||||
serial_pos = buf + offset + 0x40;
|
||||
|
||||
if (media_skip_spaces(&serial_pos, 10))
|
||||
{
|
||||
memcpy(info->serial, serial_pos, 10 - (serial_pos - (buf + offset + 0x40)));
|
||||
media_zero_trailing_spaces(info->serial, sizeof(info->serial));
|
||||
}
|
||||
else
|
||||
strlcpy(info->serial, "N/A", sizeof(info->serial));
|
||||
|
||||
version_pos = buf + offset + 0x4a;
|
||||
|
||||
if (media_skip_spaces(&version_pos, 6))
|
||||
{
|
||||
memcpy(info->version, version_pos, 6 - (version_pos - (buf + offset + 0x4a)));
|
||||
media_zero_trailing_spaces(info->version, sizeof(info->version));
|
||||
}
|
||||
else
|
||||
strlcpy(info->version, "N/A", sizeof(info->version));
|
||||
|
||||
release_date_pos = buf + offset + 0x50;
|
||||
|
||||
if (media_skip_spaces(&release_date_pos, 8))
|
||||
{
|
||||
memcpy(info->release_date, release_date_pos, 8 - (release_date_pos - (buf + offset + 0x50)));
|
||||
media_zero_trailing_spaces(info->release_date, sizeof(info->release_date));
|
||||
}
|
||||
else
|
||||
strlcpy(info->release_date, "N/A", sizeof(info->release_date));
|
||||
}
|
||||
@ -255,7 +481,10 @@ bool media_detect_cd_info(const char *path, media_detect_cd_info_t *info)
|
||||
title_pos = buf + offset + (16 * sector_size) + 40;
|
||||
|
||||
if (media_skip_spaces(&title_pos, 32))
|
||||
{
|
||||
memcpy(info->title, title_pos, 32 - (title_pos - (buf + offset + (16 * sector_size) + 40)));
|
||||
media_zero_trailing_spaces(info->title, sizeof(info->title));
|
||||
}
|
||||
else
|
||||
strlcpy(info->title, "N/A", sizeof(info->title));
|
||||
}
|
||||
@ -265,6 +494,12 @@ bool media_detect_cd_info(const char *path, media_detect_cd_info_t *info)
|
||||
|
||||
strlcpy(info->system, "3DO", sizeof(info->system));
|
||||
}
|
||||
else if (!memcmp(buf + offset + 0x950, "PC Engine CD-ROM SYSTEM", 23))
|
||||
{
|
||||
info->system_id = MEDIA_CD_SYSTEM_PC_ENGINE_CD;
|
||||
|
||||
strlcpy(info->system, "TurboGrafx-CD / PC-Engine CD", sizeof(info->system));
|
||||
}
|
||||
|
||||
free(buf);
|
||||
}
|
||||
|
@ -154,7 +154,7 @@ int64_t filestream_truncate(RFILE *stream, int64_t length)
|
||||
* Opens a file for reading or writing, depending on the requested mode.
|
||||
* Returns a pointer to an RFILE if opened successfully, otherwise NULL.
|
||||
**/
|
||||
RFILE *filestream_open(const char *path, unsigned mode, unsigned hints)
|
||||
RFILE* filestream_open(const char *path, unsigned mode, unsigned hints)
|
||||
{
|
||||
struct retro_vfs_file_handle *fp = NULL;
|
||||
RFILE* output = NULL;
|
||||
@ -176,7 +176,7 @@ RFILE *filestream_open(const char *path, unsigned mode, unsigned hints)
|
||||
return output;
|
||||
}
|
||||
|
||||
char *filestream_gets(RFILE *stream, char *s, size_t len)
|
||||
char* filestream_gets(RFILE *stream, char *s, size_t len)
|
||||
{
|
||||
int c = 0;
|
||||
char *p = s;
|
||||
@ -399,7 +399,7 @@ int filestream_rename(const char *old_path, const char *new_path)
|
||||
return retro_vfs_file_rename_impl(old_path, new_path);
|
||||
}
|
||||
|
||||
const char *filestream_get_path(RFILE *stream)
|
||||
const char* filestream_get_path(RFILE *stream)
|
||||
{
|
||||
if (filestream_get_path_cb != NULL)
|
||||
return filestream_get_path_cb(stream->hfile);
|
||||
@ -572,13 +572,14 @@ bool filestream_write_file(const char *path, const void *data, int64_t size)
|
||||
return true;
|
||||
}
|
||||
|
||||
char *filestream_getline(RFILE *stream)
|
||||
/* Returned pointer must be freed by the caller. */
|
||||
char* filestream_getline(RFILE *stream)
|
||||
{
|
||||
char* newline_tmp = NULL;
|
||||
char *newline_tmp = NULL;
|
||||
size_t cur_size = 8;
|
||||
size_t idx = 0;
|
||||
int in = 0;
|
||||
char* newline = (char*)malloc(9);
|
||||
char *newline = (char*)malloc(9);
|
||||
|
||||
if (!stream || !newline)
|
||||
{
|
||||
|
@ -5120,15 +5120,29 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
|
||||
if (file)
|
||||
{
|
||||
const cdrom_toc_t *toc = retro_vfs_file_get_cdrom_toc();
|
||||
unsigned first_data_track = 1;
|
||||
|
||||
atip = cdrom_has_atip(filestream_get_vfs_handle(file));
|
||||
|
||||
filestream_close(file);
|
||||
|
||||
/* open first track */
|
||||
cdrom_device_fillpath(file_path, sizeof(file_path), drive, 1, false);
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
if (media_detect_cd_info(file_path, &cd_info))
|
||||
for (i = 0; i < toc->num_tracks; i++)
|
||||
{
|
||||
if (!toc->track[i].audio)
|
||||
{
|
||||
first_data_track = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* open first data track */
|
||||
cdrom_device_fillpath(file_path, sizeof(file_path), drive, first_data_track, false);
|
||||
|
||||
if (media_detect_cd_info(file_path, 0, &cd_info))
|
||||
{
|
||||
if (!string_is_empty(cd_info.title))
|
||||
{
|
||||
@ -5223,6 +5237,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
|
||||
{
|
||||
char atip_string[32] = {"Genuine Disc: "};
|
||||
|
||||
count++;
|
||||
|
||||
if (atip)
|
||||
strlcat(atip_string, "No", sizeof(atip_string));
|
||||
else
|
||||
@ -5238,6 +5254,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
|
||||
{
|
||||
char tracks_string[32] = {"Number of tracks: "};
|
||||
|
||||
count++;
|
||||
|
||||
snprintf(tracks_string + strlen(tracks_string), sizeof(tracks_string) - strlen(tracks_string), "%d", toc->num_tracks);
|
||||
|
||||
menu_entries_append_enum(info->list,
|
||||
@ -5259,6 +5277,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
|
||||
|
||||
snprintf(track_string + strlen(track_string), sizeof(track_string) - strlen(track_string), "%d:", i + 1);
|
||||
|
||||
count++;
|
||||
|
||||
menu_entries_append_enum(info->list,
|
||||
track_string,
|
||||
"",
|
||||
@ -5270,6 +5290,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
|
||||
else
|
||||
snprintf(mode_string + strlen(mode_string), sizeof(mode_string) - strlen(mode_string), "Mode %d", toc->track[i].mode);
|
||||
|
||||
count++;
|
||||
|
||||
menu_entries_append_enum(info->list,
|
||||
mode_string,
|
||||
"",
|
||||
@ -5278,6 +5300,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
|
||||
|
||||
snprintf(size_string + strlen(size_string), sizeof(size_string) - strlen(size_string), "%.1f MB", toc->track[i].track_bytes / 1000.0 / 1000.0);
|
||||
|
||||
count++;
|
||||
|
||||
menu_entries_append_enum(info->list,
|
||||
size_string,
|
||||
"",
|
||||
@ -5293,6 +5317,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
|
||||
|
||||
snprintf(length_string + strlen(length_string), sizeof(length_string) - strlen(length_string), "%02d:%02d.%02d", min, sec, frame);
|
||||
|
||||
count++;
|
||||
|
||||
menu_entries_append_enum(info->list,
|
||||
length_string,
|
||||
"",
|
||||
|
@ -1,3 +1,9 @@
|
||||
# Use add_opt to set HAVE_FOO variables the first time
|
||||
# example: add_opt FOO no
|
||||
#
|
||||
# Only needed when check_enabled ($2), check_platform, check_lib, check_pkgconf,
|
||||
# check_header, check_macro and check_switch are not used.
|
||||
|
||||
check_switch '' C99 -std=gnu99 "Cannot find C99 compatible compiler."
|
||||
check_switch '' NOUNUSED -Wno-unused-result
|
||||
add_define MAKEFILE NOUNUSED "$HAVE_NOUNUSED"
|
||||
@ -59,7 +65,7 @@ if [ "$HAVE_VIDEOCORE" != "no" ]; then
|
||||
[ -d /opt/vc/lib ] && add_dirs LIBRARY /opt/vc/lib /opt/vc/lib/GL
|
||||
check_lib '' VIDEOCORE -lbcm_host bcm_host_init "-lvcos -lvchiq_arm"
|
||||
else
|
||||
HAVE_VIDEOCORE="$HAVE_VC_TEST"
|
||||
add_opt VIDEOCORE "$HAVE_VC_TEST"
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -115,7 +121,7 @@ check_pkgconf EXYNOS libdrm_exynos
|
||||
|
||||
if [ "$LIBRETRO" ]; then
|
||||
die : 'Notice: Explicit libretro used, disabling dynamic libretro loading ...'
|
||||
HAVE_DYNAMIC='no'
|
||||
add_opt DYNAMIC no
|
||||
else
|
||||
LIBRETRO="-lretro"
|
||||
fi
|
||||
@ -144,7 +150,7 @@ fi
|
||||
check_platform 'Linux Win32' CDROM 'CD-ROM is' user
|
||||
|
||||
if [ "$OS" = 'Win32' ]; then
|
||||
HAVE_DYLIB=yes
|
||||
add_opt DYLIB yes
|
||||
else
|
||||
check_lib '' DYLIB "$DYLIB" dlopen
|
||||
fi
|
||||
@ -152,8 +158,8 @@ fi
|
||||
check_lib '' NETWORKING "$SOCKETLIB" socket "" "$SOCKETHEADER"
|
||||
|
||||
if [ "$HAVE_NETWORKING" != 'no' ]; then
|
||||
HAVE_GETADDRINFO=auto
|
||||
HAVE_SOCKET_LEGACY=no
|
||||
add_opt GETADDRINFO auto
|
||||
add_opt SOCKET_LEGACY no
|
||||
|
||||
# WinXP+ implements getaddrinfo()
|
||||
if [ "$OS" = 'Win32' ]; then
|
||||
@ -166,9 +172,9 @@ if [ "$HAVE_NETWORKING" != 'no' ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
HAVE_NETWORK_CMD=yes
|
||||
add_opt NETWORK_CMD yes
|
||||
else
|
||||
HAVE_NETWORK_CMD=no
|
||||
add_opt NETWORK_CMD no
|
||||
fi
|
||||
|
||||
check_enabled NETWORKING CHEEVOS cheevos 'Networking is' false
|
||||
@ -184,9 +190,9 @@ check_lib '' MINIUPNPC '-lminiupnpc'
|
||||
check_lib '' STDIN_CMD "$CLIB" fcntl
|
||||
|
||||
if [ "$HAVE_NETWORK_CMD" = "yes" ] || [ "$HAVE_STDIN_CMD" = "yes" ]; then
|
||||
HAVE_COMMAND='yes'
|
||||
add_opt COMMAND yes
|
||||
else
|
||||
HAVE_COMMAND='no'
|
||||
add_opt COMMAND no
|
||||
fi
|
||||
|
||||
check_lib '' GETOPT_LONG "$CLIB" getopt_long
|
||||
@ -196,8 +202,8 @@ if [ "$HAVE_DYLIB" = 'no' ] && [ "$HAVE_DYNAMIC" = 'yes' ]; then
|
||||
fi
|
||||
|
||||
check_val '' ALSA -lasound alsa alsa '' '' false
|
||||
check_lib '' CACA -lcaca
|
||||
check_lib '' SIXEL -lsixel
|
||||
check_val '' CACA -lcaca '' caca '' '' false
|
||||
check_val '' SIXEL -lsixel '' libsixel 1.6.0 '' false
|
||||
|
||||
check_macro AUDIOIO AUDIO_SETINFO sys/audioio.h
|
||||
|
||||
@ -348,7 +354,7 @@ if [ "$HAVE_OPENGL" != 'no' ] && [ "$HAVE_OPENGLES" != 'yes' ]; then
|
||||
check_pkgconf OSMESA osmesa
|
||||
fi
|
||||
else
|
||||
HAVE_OPENGL='no'
|
||||
add_opt OPENGL no
|
||||
fi
|
||||
|
||||
check_enabled EGL OPENGLES OpenGLES 'EGL is' false
|
||||
@ -505,13 +511,13 @@ if [ "$HAVE_MENU" != 'no' ]; then
|
||||
else
|
||||
if [ "$HAVE_CACA" != 'yes' ] && [ "$HAVE_SIXEL" != 'yes' ] &&
|
||||
[ "$HAVE_SDL" != 'yes' ] && [ "$HAVE_SDL2" != 'yes' ]; then
|
||||
HAVE_RGUI=no
|
||||
add_opt RGUI no
|
||||
fi
|
||||
HAVE_MATERIALUI=no
|
||||
HAVE_OZONE=no
|
||||
HAVE_XMB=no
|
||||
HAVE_STRIPES=no
|
||||
HAVE_MENU_WIDGETS=no
|
||||
add_opt MATERIALUI no
|
||||
add_opt OZONE no
|
||||
add_opt XMB no
|
||||
add_opt STRIPES no
|
||||
add_opt MENU_WIDGETS no
|
||||
fi
|
||||
die : 'Notice: Hardware rendering context not available.'
|
||||
fi
|
||||
|
@ -16,7 +16,7 @@ int main(void) { puts("Hai world!"); return 0; }
|
||||
EOF
|
||||
|
||||
cc_works=0
|
||||
HAVE_CC=no
|
||||
add_opt CC no
|
||||
if [ "$CC" ]; then
|
||||
"$CC" -o "$TEMP_EXE" "$TEMP_C" >/dev/null 2>&1 && cc_works=1
|
||||
else
|
||||
@ -53,7 +53,7 @@ int main() { std::cout << "Hai guise" << std::endl; return 0; }
|
||||
EOF
|
||||
|
||||
cxx_works=0
|
||||
HAVE_CXX=no
|
||||
add_opt CXX no
|
||||
if [ "$CXX" ]; then
|
||||
"$CXX" -o "$TEMP_EXE" "$TEMP_CXX" >/dev/null 2>&1 && cxx_works=1
|
||||
else
|
||||
|
@ -16,7 +16,7 @@ SHARE_DIR="${SHARE_DIR:-${PREFIX}/share}"
|
||||
# $2 = define
|
||||
# $3 = value
|
||||
add_define()
|
||||
{ eval "${1}_DEFINES=\"\${${1}_DEFINES} $2=$3\""; }
|
||||
{ eval "${1}_DEFINES=\"\${${1}_DEFINES} $2=$3\""; }
|
||||
|
||||
# add_dirs:
|
||||
# $1 = INCLUDE or LIBRARY
|
||||
@ -54,7 +54,8 @@ check_compiler()
|
||||
# $4 = feature
|
||||
# $5 = enable lib when true, disable errors with 'user' [checked only if non-empty]
|
||||
check_enabled()
|
||||
{ setval="$(eval "printf %s \"\$HAVE_$2\"")"
|
||||
{ add_opt "$2"
|
||||
setval="$(eval "printf %s \"\$HAVE_$2\"")"
|
||||
|
||||
for val in $(printf %s "$1"); do
|
||||
tmpvar="$(eval "printf %s \"\$HAVE_$val\"")"
|
||||
@ -89,7 +90,8 @@ check_enabled()
|
||||
# $3 = feature
|
||||
# $4 = enable feature when 'true', disable errors with 'user' [checked only if non-empty]
|
||||
check_platform()
|
||||
{ tmpval="$(eval "printf %s \"\$HAVE_$2\"")"
|
||||
{ add_opt "$2"
|
||||
tmpval="$(eval "printf %s \"\$HAVE_$2\"")"
|
||||
[ "$tmpval" = 'no' ] && return 0
|
||||
|
||||
error=
|
||||
@ -137,7 +139,8 @@ check_platform()
|
||||
# $7 = include directory [checked only if non-empty]
|
||||
# $8 = critical error message [checked only if non-empty]
|
||||
check_lib()
|
||||
{ tmpval="$(eval "printf %s \"\$HAVE_$2\"")"
|
||||
{ add_opt "$2"
|
||||
tmpval="$(eval "printf %s \"\$HAVE_$2\"")"
|
||||
[ "$tmpval" = 'no' ] && return 0
|
||||
|
||||
check_compiler "$1" "$4"
|
||||
@ -203,7 +206,8 @@ check_lib()
|
||||
# $4 = critical error message [checked only if non-empty]
|
||||
# $5 = force check_lib when true [checked only if non-empty, set by check_val]
|
||||
check_pkgconf()
|
||||
{ tmpval="$(eval "printf %s \"\$HAVE_$1\"")"
|
||||
{ add_opt "$1"
|
||||
tmpval="$(eval "printf %s \"\$HAVE_$1\"")"
|
||||
eval "TMP_$1=\$tmpval"
|
||||
[ "$tmpval" = 'no' ] && return 0
|
||||
|
||||
@ -263,7 +267,8 @@ check_pkgconf()
|
||||
# $1 = HAVE_$1
|
||||
# $@ = header files
|
||||
check_header()
|
||||
{ tmpval="$(eval "printf %s \"\$HAVE_$1\"")"
|
||||
{ add_opt "$1"
|
||||
tmpval="$(eval "printf %s \"\$HAVE_$1\"")"
|
||||
[ "$tmpval" = 'no' ] && return 0
|
||||
rm -f -- "$TEMP_C"
|
||||
val="$1"
|
||||
@ -292,7 +297,8 @@ check_header()
|
||||
# $2 = macro name
|
||||
# $3 = header name [included only if non-empty]
|
||||
check_macro()
|
||||
{ tmpval="$(eval "printf %s \"\$HAVE_$1\"")"
|
||||
{ add_opt "$1"
|
||||
tmpval="$(eval "printf %s \"\$HAVE_$1\"")"
|
||||
[ "$tmpval" = 'no' ] && return 0
|
||||
header_include=''
|
||||
ECHOBUF=''
|
||||
@ -328,7 +334,8 @@ EOF
|
||||
# $3 = switch
|
||||
# $4 = critical error message [checked only if non-empty]
|
||||
check_switch()
|
||||
{ check_compiler "$1" ''
|
||||
{ add_opt "$2"
|
||||
check_compiler "$1" ''
|
||||
|
||||
printf %s\\n 'int main(void) { return 0; }' > "$TEMP_CODE"
|
||||
answer='no'
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Creates config.mk and config.h.
|
||||
vars=''
|
||||
add_define MAKEFILE GLOBAL_CONFIG_DIR "$GLOBAL_CONFIG_DIR"
|
||||
set -- $(set | grep ^HAVE_)
|
||||
eval "set -- $CONFIG_OPTS"
|
||||
while [ $# -gt 0 ]; do
|
||||
tmpvar="${1%=*}"
|
||||
shift 1
|
||||
|
@ -16,7 +16,7 @@ public:
|
||||
};
|
||||
EOF
|
||||
|
||||
HAVE_MOC=no
|
||||
add_opt MOC no
|
||||
if [ "$HAVE_QT" = "yes" ]; then
|
||||
moc_works=0
|
||||
if [ "$MOC" ]; then
|
||||
|
@ -1,4 +1,23 @@
|
||||
print_help_option() # $1 = option $@ = description
|
||||
# add_opt
|
||||
# $1 = HAVE_$1
|
||||
# $2 = value ['auto', 'no' or 'yes', checked only if non-empty]
|
||||
add_opt()
|
||||
{ setval="$(eval "printf %s \"\$USER_$1\"")"
|
||||
[ "${2:-}" ] && ! match "$setval" no yes && eval "HAVE_$1=\"$2\""
|
||||
|
||||
for opt in $(printf %s "$CONFIG_OPTS"); do
|
||||
case "$opt" in
|
||||
"$1") return 0 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
CONFIG_OPTS="${CONFIG_OPTS} $1"
|
||||
}
|
||||
|
||||
# print_help_option
|
||||
# $1 = option
|
||||
# $@ = description
|
||||
print_help_option()
|
||||
{
|
||||
_opt="$1"
|
||||
shift 1
|
||||
@ -34,24 +53,23 @@ EOF
|
||||
|
||||
printf %s\\n '' 'Custom options:'
|
||||
|
||||
while read -r VAR COMMENT; do
|
||||
TMPVAR="${VAR%=*}"
|
||||
COMMENT="${COMMENT#*#}"
|
||||
VAL="${VAR#*=}"
|
||||
VAR="$(printf %s "${TMPVAR#HAVE_}" | tr '[:upper:]' '[:lower:]')"
|
||||
while read -r VAR _ COMMENT; do
|
||||
case "$VAR" in
|
||||
'c89_'*|'cxx_'*) continue;;
|
||||
'C89_'*|'CXX_'*) continue;;
|
||||
*)
|
||||
TMPVAR="${VAR%=*}"
|
||||
VAL="${VAR#*=}"
|
||||
VAR="$(printf %s "${TMPVAR#HAVE_}" | tr '[:upper:]' '[:lower:]')"
|
||||
case "$VAL" in
|
||||
'yes'*)
|
||||
print_help_option "--disable-$VAR" "Disable $COMMENT";;
|
||||
print_help_option "--disable-$VAR" "Disable $COMMENT";;
|
||||
'no'*)
|
||||
print_help_option "--enable-$VAR" "Enable $COMMENT";;
|
||||
print_help_option "--enable-$VAR" "Enable $COMMENT";;
|
||||
'auto'*)
|
||||
print_help_option "--enable-$VAR" "Enable $COMMENT"
|
||||
print_help_option "--disable-$VAR" "Disable $COMMENT";;
|
||||
print_help_option "--enable-$VAR" "Enable $COMMENT"
|
||||
print_help_option "--disable-$VAR" "Disable $COMMENT";;
|
||||
*)
|
||||
print_help_option "--with-$VAR" "Config $COMMENT";;
|
||||
print_help_option "--with-$VAR" "Config $COMMENT";;
|
||||
esac
|
||||
esac
|
||||
done < 'qb/config.params.sh'
|
||||
@ -68,12 +86,16 @@ opt_exists() # $opt is returned if exists in OPTS
|
||||
parse_input() # Parse stuff :V
|
||||
{ BUILD=''
|
||||
OPTS=''
|
||||
CONFIG_OPTS=''
|
||||
config_opts='./configure'
|
||||
|
||||
while read -r VAR _; do
|
||||
TMPVAR="${VAR%=*}"
|
||||
NEWVAR="${TMPVAR##HAVE_}"
|
||||
OPTS="$OPTS $NEWVAR"
|
||||
OPTS="${OPTS} $NEWVAR"
|
||||
case "$TMPVAR" in
|
||||
HAVE_*) CONFIG_OPTS="${CONFIG_OPTS} $NEWVAR" ;;
|
||||
esac
|
||||
eval "USER_$NEWVAR=auto"
|
||||
done < 'qb/config.params.sh'
|
||||
#OPTS contains all available options in config.params.sh - used to speedup
|
||||
@ -99,7 +121,7 @@ parse_input() # Parse stuff :V
|
||||
opt_exists "${1##--disable-}" "$1"
|
||||
eval "HAVE_$opt=no"
|
||||
eval "USER_$opt=no"
|
||||
eval "HAVE_NO_$opt=yes"
|
||||
add_opt "NO_$opt" yes
|
||||
;;
|
||||
--with-*)
|
||||
arg="${1##--with-}"
|
||||
|
70
retroarch.c
70
retroarch.c
@ -3185,7 +3185,7 @@ static bool command_event_init_core(enum rarch_core_type *data)
|
||||
|
||||
/* Auto-remap: apply remap files */
|
||||
if(settings->bools.auto_remaps_enable)
|
||||
config_load_remap();
|
||||
config_load_remap(settings->paths.directory_input_remapping);
|
||||
|
||||
/* Per-core saves: reset redirection paths */
|
||||
path_set_redirect();
|
||||
@ -5441,33 +5441,6 @@ static void core_option_manager_free(core_option_manager_t *opt)
|
||||
free(opt);
|
||||
}
|
||||
|
||||
static void core_option_manager_get(core_option_manager_t *opt,
|
||||
struct retro_variable *var)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
#ifdef HAVE_RUNAHEAD
|
||||
if (opt->updated)
|
||||
has_variable_update = true;
|
||||
#endif
|
||||
|
||||
opt->updated = false;
|
||||
|
||||
for (i = 0; i < opt->size; i++)
|
||||
{
|
||||
if (string_is_empty(opt->opts[i].key))
|
||||
continue;
|
||||
|
||||
if (string_is_equal(opt->opts[i].key, var->key))
|
||||
{
|
||||
var->value = opt->opts[i].vals->elems[opt->opts[i].index].data;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var->value = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* core_option_manager_new_vars:
|
||||
* @conf_path : Filesystem path to write core option config file to.
|
||||
@ -6507,17 +6480,39 @@ static bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
unsigned log_level = settings->uints.libretro_log_level;
|
||||
struct retro_variable *var = (struct retro_variable*)data;
|
||||
|
||||
if (!runloop_core_options || !var)
|
||||
if (!var)
|
||||
return true;
|
||||
|
||||
var->value = NULL;
|
||||
|
||||
if (!runloop_core_options)
|
||||
{
|
||||
if (var)
|
||||
{
|
||||
RARCH_LOG("Environ GET_VARIABLE %s: not implemented.\n",
|
||||
var->key);
|
||||
var->value = NULL;
|
||||
}
|
||||
RARCH_LOG("Environ GET_VARIABLE %s: not implemented.\n",
|
||||
var->key);
|
||||
return true;
|
||||
}
|
||||
core_option_manager_get(runloop_core_options, var);
|
||||
|
||||
{
|
||||
size_t i;
|
||||
|
||||
#ifdef HAVE_RUNAHEAD
|
||||
if (runloop_core_options->updated)
|
||||
has_variable_update = true;
|
||||
#endif
|
||||
|
||||
runloop_core_options->updated = false;
|
||||
|
||||
for (i = 0; i < runloop_core_options->size; i++)
|
||||
{
|
||||
if (!string_is_empty(runloop_core_options->opts[i].key))
|
||||
if (string_is_equal(runloop_core_options->opts[i].key, var->key))
|
||||
{
|
||||
var->value = runloop_core_options->opts[i].vals->elems[
|
||||
runloop_core_options->opts[i].index].data;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (log_level == RETRO_LOG_DEBUG)
|
||||
{
|
||||
@ -13783,8 +13778,7 @@ unsigned input_config_get_device_count(void)
|
||||
unsigned num_devices;
|
||||
for (num_devices = 0; num_devices < MAX_INPUT_DEVICES; ++num_devices)
|
||||
{
|
||||
const char *device_name = input_config_get_device_name(num_devices);
|
||||
if (string_is_empty(device_name))
|
||||
if (string_is_empty(input_device_names[num_devices]))
|
||||
break;
|
||||
}
|
||||
return num_devices;
|
||||
|
Loading…
x
Reference in New Issue
Block a user