/* RetroArch - A frontend for libretro. * Copyright (C) 2011-2017 - Daniel De Matteis * * 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 #include "../msg_hash.h" #include "../../configuration.h" int menu_hash_get_help_pt_pt_enum(enum msg_hash_enums msg, char *s, size_t len) { uint32_t driver_hash = 0; settings_t *settings = config_get_ptr(); switch (msg) { case MENU_ENUM_LABEL_CORE_LIST: snprintf(s, len, "Carregar Core. \n" " \n" "Busca uma implementação de um core \n" "libretro. Onde a busca inicia depende \n" "do caminho do seu Diretório de Cores. \n" "Se não definido, começará no raiz. \n" " \n" "Se o Diretório de Cores estiver definido, \n" "o menu o usará como pasta inicial. Se for um \n" "caminho completo, ele começará na pasta onde \n" "o arquivo estiver."); break; case MENU_ENUM_LABEL_INPUT_DRIVER: if (settings) driver_hash = msg_hash_calculate(settings->arrays.input_driver); switch (driver_hash) { case MENU_LABEL_INPUT_DRIVER_UDEV: snprintf(s, len, "Driver de entrada udev. \n" " \n" "Esse driver funciona sem o X. \n" " \n" "Ele usa a recente API de joypads \n" "evdev para supporte a joystick. \n" "Suporta Hot-Swap e force feedback \n" "(se suportado pelo dispositivo). \n" " \n" "O driver lê os eventos evdev para suporte a \n" "teclado. Suporta também callback de teclado, \n" "mouses e touchpads. \n" " \n" "Em geral, na maioria das distribuições, os nós \n" "/dev/input são root-only (modo 600). Mas você pode \n" "definir uma regra udev para dar acesso a non-roots." ); break; case MENU_LABEL_INPUT_DRIVER_LINUXRAW: snprintf(s, len, "Driver de Entrada linuxraw. \n" " \n" "Esse driver requer um TTY ativo. Eventos de \n" "teclado são lidos diretamente do TTY, tornando-o \n" "simples, mas não tão flexível quanto o udev. \n" "Mouses, etc, não são suportados. \n" " \n" "Esse driver usa a antiga API de joysticks \n" "(/dev/input/js*)."); break; default: snprintf(s, len, "Driver de Entrada.\n" " \n" "Dependendo do driver de vídeo, pode ser necessário \n" "forçar um driver de entrada diferente."); break; } break; case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY: snprintf(s, len, "Carregando conteúdo do histórico. \n" " \n" "Ao carregar conteúdos, suas combinações com \n" "cores são salvas no histórico. \n" " \n" "O histórico é salvo em um arquivo no mesmo \n" "diretório do arquivo de configuração. Se nenhuma \n" "configuração tiver sido carregada, o histórico \n" "não será salvo ou carregado e não vai existir no \n" "menu principal." ); break; case MENU_ENUM_LABEL_VIDEO_DRIVER: snprintf(s, len, "Driver de Vídeo em uso."); if (string_is_equal_fast(settings->arrays.video_driver, "gl", 2)) { snprintf(s, len, "Driver de Vídeo OpenGL. \n" " \n" "Esse driver permite o uso de cores libretro GL \n" "em adição às implementações de cores de \n" "renderização por software.\n" " \n" "O desempenho das implementações dos cores de\n" "renderização por software e libretro GL \n" "depende do driver GL instalado em sua \n" "placa de vídeo."); } else if (string_is_equal_fast(settings->arrays.video_driver, "sdl2", 4)) { snprintf(s, len, "Driver de Vídeo SDL 2.\n" " \n" "Esse é um driver de vídeo SDL 2 de \n" "renderização por software.\n" " \n" "O desempenho das implementações dos cores de \n" "renderização por software depende da \n" "implementação SDL de sua plataforma."); } else if (string_is_equal_fast(settings->arrays.video_driver, "sdl1", 4)) { snprintf(s, len, "Driver de Vídeo SDL.\n" " \n" "Esse é um driver de vídeo SDL 1.2 de \n" "renderização por software.\n" " \n" "O desemprenho é considerado subótimo. \n" "Considere seu uso apenas em último caso."); } else if (string_is_equal_fast(settings->arrays.video_driver, "d3d", 3)) { snprintf(s, len, "Driver de Vídeo Direct3D. \n" " \n" "O desempenho das implementações dos cores de\n" "renderização por software depende do driver \n" "D3D instalado em sua placa de vídeo."); } else if (string_is_equal_fast(settings->arrays.video_driver, "exynos", 6)) { snprintf(s, len, "Driver de Vídeo Exynos-G2D. \n" " \n" "Esse é um driver de vídeo Exynos de baixo nível. \n" "Usa o bloco G2D do SoC Samsung Exynos \n" "para operações de blit. \n" " \n" "O desempenho para cores de renderização por \n" "software deve ser ótimo."); } else if (string_is_equal_fast(settings->arrays.video_driver, "sunxi", 5)) { snprintf(s, len, "Driver de Vídeo Sunxi-G2D. \n" " \n" "Esse é um driver de vídeo Sunxi de baixo nível. \n" "Usa o bloco G2D dos SoCs Allwinner."); } break; case MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN: snprintf(s, len, "Plugin de DSP de Áudio.\n" "Processa áudio antes de ser enviado ao \n" "driver." ); break; case MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER: if (settings) driver_hash = msg_hash_calculate(settings->arrays.audio_resampler); switch (driver_hash) { case MENU_LABEL_AUDIO_RESAMPLER_DRIVER_SINC: snprintf(s, len, "Implementação Windowed SINC."); break; case MENU_LABEL_AUDIO_RESAMPLER_DRIVER_CC: snprintf(s, len, "Implementação Convoluted Cosine."); break; } break; case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET: snprintf(s, len, "Carregar Predefinições de Shader. \n" " \n" " Carregar predefinições em " #ifdef HAVE_CG "Cg" #endif #ifdef HAVE_GLSL #ifdef HAVE_CG "/" #endif "GLSL" #endif #ifdef HAVE_HLSL #if defined(HAVE_CG) || defined(HAVE_HLSL) "/" #endif "HLSL" #endif " diretamente. \n" "O menu de shaders é atualizado de acordo. \n" " \n" "Se o CGP usar métodos de interpolação complexos, \n" "(fator de escala diferente para X e Y) o fator \n" "de escala mostrado no menu poderá não ser \n" "correto." ); break; case MENU_ENUM_LABEL_VIDEO_SHADER_SCALE_PASS: snprintf(s, len, "Escala para este passo. \n" " \n" "O fator de escala se acumula, i.e. 2x \n" "para o primeiro passo e 2x para o segundo \n" "vai lhe fornecer uma escala total de 4x. \n" " \n" "Se houver um fator de escala no último \n" "passo, o resultado será esticado na tela \n" "com o filtro especificado em 'Filtro \n" "Padrão'. \n" " \n" "Se 'Tanto faz' estiver definido, a escala \n" "de 1x ou o esticamento para tela cheia serão \n" "usados dependendo se o primeiro foi ou não \n" "definido no último passo." ); break; case MENU_ENUM_LABEL_VIDEO_SHADER_NUM_PASSES: snprintf(s, len, "Número de Shaders. \n" " \n" "O RetroArch permite que você combine vários \n" "shaders com número arbitrário de passos, filtros \n" "de hardware e fatores de escala personalizados. \n" " \n" "Essa opção especifica o número de passos a usar. \n" "Se for definido como 0 e usada a opção Aplicar \n" "Alterações de Shaders, será usado um shader vazio. \n" " \n" "A opção Filtro Padrão irá afetar o filtro \n" "de esticamento."); break; case MENU_ENUM_LABEL_VIDEO_SHADER_PARAMETERS: snprintf(s, len, "Parâmetros de Shaders. \n" " \n" "Modifica o shader em uso diretamente. Não será \n" "salvo no arquivo de predefinições CGP/GLSLP."); break; case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_PARAMETERS: snprintf(s, len, "Parâmetros de Predefinições de Shader. \n" " \n" "Modifica as predefinições de shader em uso no menu." ); break; case MENU_ENUM_LABEL_VIDEO_SHADER_PASS: snprintf(s, len, "Caminho do shader. \n" " \n" "Todos os shaders devem ser do mesmo \n" "tipo (i.e. CG, GLSL ou HLSL). \n" " \n" "Defina o Diretório de Shaders para indicar \n" "onde o buscador começa a procurar pelos \n" "shaders." ); break; case MENU_ENUM_LABEL_CONFIG_SAVE_ON_EXIT: snprintf(s, len, "Salva configuração ao sair. Útil para\n" "o menu, pois as definições podem ser\n" "modificadas. Sobrescreve a configuração.\n" " \n" "#includes e comentários não são \n" "preservados. \n" " \n" "Por design, o arquivo de configuração \n" "é considerado imutável, pois ele é \n" "provavelmente mantido pelo usuário, \n" "e não deve ser sobrescrito sem o \n" "seu conhecimento." #if defined(RARCH_CONSOLE) || defined(RARCH_MOBILE) "\nPorém, isso não funciona assim nos \n" "consoles, pois abrir o arquivo de \n" "configuração manualmente não é \n" "realmente uma opção." #endif ); break; case MENU_ENUM_LABEL_VIDEO_SHADER_FILTER_PASS: snprintf(s, len, "Filtro de hardware para este passo. \n" " \n" "Se 'Tanto faz' estiver definido, o 'Filtro \n" "Padrão' será usado." ); break; case MENU_ENUM_LABEL_AUTOSAVE_INTERVAL: snprintf(s, len, "Salva automaticamente a SRAM \n" "em intervalos regulares.\n" " \n" "Está desativado por padrão. O intervalo é \n" "medido em segundos. \n" " \n" "Um valor de 0 desativa o salvamento \n" "automático."); break; case MENU_ENUM_LABEL_INPUT_BIND_DEVICE_TYPE: snprintf(s, len, "Tipo de Dispositivo de Entrada. \n" " \n" "Escolhe o dispositivo a usar. Isso é \n" "relevante para o core libretro." ); break; case MENU_ENUM_LABEL_LIBRETRO_LOG_LEVEL: snprintf(s, len, "Define o nível de registro para os cores \n" "(GET_LOG_INTERFACE). \n" " \n" " Se o nível de registro de um core \n" " libretro estiver abaixo de libretro_log, \n" " esse será ignorado.\n" " \n" " Registros DEBUG são sempre ignorados a menos \n" " que o modo prolixo seja ativado (--verbose).\n" " \n" " DEBUG = 0\n" " INFO = 1\n" " WARN = 2\n" " ERROR = 3" ); break; case MENU_ENUM_LABEL_STATE_SLOT_INCREASE: case MENU_ENUM_LABEL_STATE_SLOT_DECREASE: snprintf(s, len, "Slot de Savestates.\n" " \n" " Com o slot definido em 0, o nome do Savestate \n" " será *.state (ou o que estiver definido em commandline).\n" "Se diferente de 0, o nome será (caminho)(d), \n" "em que (d) é o número do slot."); break; case MENU_ENUM_LABEL_SHADER_APPLY_CHANGES: snprintf(s, len, "Aplicar Alterações de Shaders. \n" " \n" "Após alterar definições de shaders, use-o para \n" "aplicar as mudanças. \n" " \n" "Mudar definições de shaders é uma operação \n" "computacionalmente cara e deve ser \n" "realizada explicitamente. \n" " \n" "Quando se aplicam shaders, as definições do menu \n" "de shaders são salvas em um arquivo temporário \n" "(menu.cgp ou menu.glslp) e carregadas. O arquivo \n" "persiste ao fechar o RetroArch. Ele é salvo \n" "no Diretório de Shaders." ); break; case MENU_ENUM_LABEL_MENU_TOGGLE: snprintf(s, len, "Alterna menu."); break; case MENU_ENUM_LABEL_GRAB_MOUSE_TOGGLE: snprintf(s, len, "Alterna uso de mouse.\n" " \n" "Quando o mouse é usado, RetroArch o esconde e \n" "mantém o seu ponteiro dentro da janela para \n" "permitir que a entrada relativa do mouse \n" "funcione melhor."); break; case MENU_ENUM_LABEL_DISK_NEXT: snprintf(s, len, "Circula por imagens de discos. Usar \n" "após ejetar. \n" " \n" " Finaliza ao usar ejetar novamente."); break; case MENU_ENUM_LABEL_VIDEO_FILTER: #ifdef HAVE_FILTERS_BUILTIN snprintf(s, len, "Filtro de vídeo baseado em CPU."); #else snprintf(s, len, "Filtro de vídeo baseado em CPU.\n" " \n" "Caminho para uma biblioteca dinâmica."); #endif break; case MENU_ENUM_LABEL_AUDIO_DEVICE: snprintf(s, len, "Sobrepõe-se ao dispositivo de áudio padrão \n" "que está em uso.\n" "É dependente do driver. \n" #ifdef HAVE_ALSA " \n" "ALSA precisa de um dispositivo PCM." #endif #ifdef HAVE_OSS " \n" "OSS precisa de um caminho (ex.: /dev/dsp)." #endif #ifdef HAVE_JACK " \n" "JACK precisa de portas (ex.: system:playback1\n" ",system:playback_2)." #endif #ifdef HAVE_RSOUND " \n" "RSound precisa de um endereço IP para \n" "servidor RSound." #endif ); break; case MENU_ENUM_LABEL_DISK_EJECT_TOGGLE: snprintf(s, len, "Alterna ejeção para discos.\n" " \n" "Usado para conteúdos multidiscos."); break; case MENU_ENUM_LABEL_ENABLE_HOTKEY: snprintf(s, len, "Ativar outras hotkeys.\n" " \n" " Se esta hotkey é usada por teclado, joybutton \n" "ou joyaxis, todas as outras hotkeys serão \n" "desativadas a menos que esta hotkey esteja sendo \n" "usada ao mesmo tempo. \n" " \n" "Isso é útil para implementações RETRO_KEYBOARD que \n" "consultam uma grande área do teclado, cujo caminho \n" "deve estar livre das hotkeys."); break; case MENU_ENUM_LABEL_REWIND_ENABLE: snprintf(s, len, "Ativa retrocesso.\n" " \n" "Essa opção causa uma perda de desempenho, \n" "por isso está desativada por padrão."); break; case MENU_ENUM_LABEL_LIBRETRO_DIR_PATH: snprintf(s, len, "Diretórios de Cores. \n" " \n" "Um diretório onde são buscadas as \n" "implementações de cores libretro."); break; case MENU_ENUM_LABEL_VIDEO_REFRESH_RATE_AUTO: { /* Work around C89 limitations */ const char * u = "Taxa de Atualização Automática.\n" " \n" "A taxa de atualização exata de nosso monitor (Hz).\n" "É usada para calcular a taxa de entrada de áudio \n" "com a fórmula: \n" " \n" "audio_input_rate = game input rate * display \n" "refresh rate / game refresh rate\n" " \n"; const char * t = "Se a implementação não informar valores, \n" "valores NTSC serão assumidos por questão de \n" "compatibilidade.\n" " \n" "Esse valor deve ficar próximo de 60Hz para \n" "evitar grande mudanças de pitch. Se o monitor \n" "não rodar a 60Hz, ou algo próximo a isso, desative\n" "o VSync, e deixe-o com valores padrão."; strlcpy(s, u, len); strlcat(s, t, len); } break; case MENU_ENUM_LABEL_VIDEO_ROTATION: snprintf(s, len, "Força uma certa rotação da tela. \n" " \n" "A rotação é adicionada a outras definidas\n" "por conjuntos de cores (veja Permitir\n" "Rotação de Vídeo)."); break; case MENU_ENUM_LABEL_VIDEO_SCALE: snprintf(s, len, "Resolução de tela cheia.\n" " \n" "Resolução 0 usa a resolução \n" "do ambiente.\n"); break; case MENU_ENUM_LABEL_FASTFORWARD_RATIO: snprintf(s, len, "Taxa de Avanço Rápido." " \n" "A taxa máxima na qual o conteúdo será\n" "executado ao se usar o Avanço Rápido.\n" " \n" " (Ex.: 5.0 para conteúdo 60 fps => 300 fps \n" "máximo).\n" " \n" "RetroArch entra em modo sleep para assegurar \n" "que a taxa máxima não será excedida.\n" "Não confie que esse teto tenha exatidão \n" "perfeita."); break; case MENU_ENUM_LABEL_VIDEO_MONITOR_INDEX: snprintf(s, len, "Preferência de monitor.\n" " \n" "0 (padrão) significa nenhum monitor é \n" "preferido, 1 e demais (1 é o primeiro \n" "monitor), sugere ao RetroArch usar esse \n" "monitor em particular."); break; case MENU_ENUM_LABEL_VIDEO_CROP_OVERSCAN: snprintf(s, len, "Força o descarte de quadros overscanned. \n" " \n" "O comportamento exato dessa opção é \n" "específico da implementação do core."); break; case MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER: snprintf(s, len, "Só interpola vídeo em escalas múltiplas \n" "inteiras da resolução nativa.\n" " \n" "O tamanho base depende da geometria e da \n" "relação de aspecto informadas pelo sistema.\n" " \n" "Se Forçar Aspecto não estiver definida, X/Y \n" "serão escalonados em inteiros independentemente."); break; case MENU_ENUM_LABEL_AUDIO_VOLUME: snprintf(s, len, "Volume de Áudio, em dB.\n" " \n" " 0 dB é o volume normal. Nenhum ganho aplicado.\n" "O ganho pode ser controlado em execução com \n" "Aumentar Volume / Baixar Volume."); break; case MENU_ENUM_LABEL_AUDIO_RATE_CONTROL_DELTA: snprintf(s, len, "Controle de taxa de áudio.\n" " \n" "Definindo como 0 desativa o controle de taxa.\n" "Outros valores controlam a variação da taxa \n" "de áudio.\n" " \n" "Define quanto de taxa de entrada pode ser \n" "regulada dinamicamente.\n" " \n" " Taxa de entrada é definida como: \n" " input rate * (1.0 +/- (rate control delta))"); break; case MENU_ENUM_LABEL_AUDIO_MAX_TIMING_SKEW: snprintf(s, len, "Distorção de áudio máxima.\n" " \n" "Define a máxima variação da taxa de entrada.\n" "Você pode querer aumentá-la para obter grandes\n" "variações no compasso, por exemplo, ao rodar\n" "cores PAL em telas NTSC, ao custo de um pitch\n" "de áudio inexato.\n" " \n" " A taxa de entrada é definida como: \n" " input rate * (1.0 +/- (max timing skew))"); break; case MENU_ENUM_LABEL_OVERLAY_NEXT: snprintf(s, len, "Alterna para o próximo overlay.\n" " \n" "Navegação circular."); break; case MENU_ENUM_LABEL_LOG_VERBOSITY: snprintf(s, len, "Ativa ou desativa nível de prolixidade \n" "do frontend."); break; case MENU_ENUM_LABEL_VOLUME_UP: snprintf(s, len, "Aumenta o volume de áudio."); break; case MENU_ENUM_LABEL_VOLUME_DOWN: snprintf(s, len, "Baixa o volume de áudio."); break; case MENU_ENUM_LABEL_VIDEO_DISABLE_COMPOSITION: snprintf(s, len, "Desativa composition à força.\n" "Válido somente para Windows Vista/7 atualmente."); break; case MENU_ENUM_LABEL_PERFCNT_ENABLE: snprintf(s, len, "Ativa ou desativa contadores de desempenho \n" "do frontend."); break; case MENU_ENUM_LABEL_SYSTEM_DIRECTORY: snprintf(s, len, "Diretório system. \n" " \n" "Define o diretório 'system'.\n" "Cores podem consultar esse diretório\n" "para carregar BIOS, configurações\n" "específicas de sistemas, etc."); break; case MENU_ENUM_LABEL_SAVESTATE_AUTO_SAVE: snprintf(s, len, "Automaticamente salva um Savestate ao fechar \n" "o RetroArch.\n" " \n" "RetroArch carregará automaticamente qualquer\n" "Savestate com esse caminho ao iniciar se 'Carregar\n" "Savestate Automaticamente' estiver ativado."); break; case MENU_ENUM_LABEL_VIDEO_THREADED: snprintf(s, len, "Usa driver de vídeo em thread.\n" " \n" "Usando isso pode melhorar o desempenho ao \n" "possível custo de latência e mais engasgos \n" "de vídeo."); break; case MENU_ENUM_LABEL_VIDEO_VSYNC: snprintf(s, len, "Sincronismo Vertical de vídeo.\n"); break; case MENU_ENUM_LABEL_VIDEO_HARD_SYNC: snprintf(s, len, "Tenta sincronizar CPU com GPU via \n" "hardware.\n" " \n" "Pode reduzir a latência ao custo de \n" "desempenho."); break; case MENU_ENUM_LABEL_REWIND_GRANULARITY: snprintf(s, len, "Granularidade do retrocesso.\n" " \n" " Ao retroceder um número definido de \n" "quadros, você pode retroceder vários \n" "quadros por vez, aumentando a velocidade \n" "de retrocesso."); break; case MENU_ENUM_LABEL_SCREENSHOT: snprintf(s, len, "Tira uma foto da tela."); break; case MENU_ENUM_LABEL_VIDEO_FRAME_DELAY: snprintf(s, len, "Define quantos milissegundos retardar \n" "após o VSync antes de executar o core.\n" "\n" "Pode reduzir a latência ao custo de\n" "um maior risco de engasgo de vídeo.\n" " \n" "O valor máximo é 15."); break; case MENU_ENUM_LABEL_VIDEO_HARD_SYNC_FRAMES: snprintf(s, len, "Define quantos quadros a CPU pode rodar \n" "adiante da GPU com a opção 'Sincronismo \n" "de GPU via Hardware' ativada.\n" " \n" "O valor máximo é 3.\n" " \n" " 0: Sincroniza com GPU de imediato.\n" " 1: Sincroniza com quadro anterior.\n" " 2: Etc ..."); break; case MENU_ENUM_LABEL_VIDEO_BLACK_FRAME_INSERTION: snprintf(s, len, "Insere um quadro preto entre quadros. \n" " \n" "Útil para monitores de 120 Hz ao rodar \n" "material de 60 Hz com eliminação do efeito \n" "'ghosting'.\n" " \n" "A taxa de atualização de vídeo deve ainda \n" "ser configurada como se fosse um monitor de \n" "60 Hz (divida a taxa de atualização por 2)."); break; case MENU_ENUM_LABEL_RGUI_SHOW_START_SCREEN: snprintf(s, len, "Mostra a tela inicial no menu.\n" "É definida automaticamente como falso quando\n" "vista pela primeira vez.\n" " \n" "É atualizada na configuração apenas quando a\n" "opção 'Salvar Configuração ao Sair' está ativada.\n"); break; case MENU_ENUM_LABEL_VIDEO_FULLSCREEN: snprintf(s, len, "Alterna tela cheia."); break; case MENU_ENUM_LABEL_BLOCK_SRAM_OVERWRITE: snprintf(s, len, "Previne SRAM de ser sobrescrita ao \n" "carregar Savestates.\n" " \n" "Pode potencialmente levar a jogos bugados."); break; case MENU_ENUM_LABEL_PAUSE_NONACTIVE: snprintf(s, len, "Pausa a jogatina quando o foco da janela \n" "é perdido."); break; case MENU_ENUM_LABEL_VIDEO_GPU_SCREENSHOT: snprintf(s, len, "Captura material gráfico de saída da \n" "GPU se estiver disponível."); break; case MENU_ENUM_LABEL_SCREENSHOT_DIRECTORY: snprintf(s, len, "Diretório de Capturas de Tela. \n" " \n" "Diretório para guardar as capturas de tela." ); break; case MENU_ENUM_LABEL_VIDEO_SWAP_INTERVAL: snprintf(s, len, "Intervalo de Troca de VSync.\n" " \n" "Usa um intervalo de troca personalizado. \n" "Use-e para reduzir à metade a taxa de \n" "atualização do monitor."); break; case MENU_ENUM_LABEL_SAVEFILE_DIRECTORY: snprintf(s, len, "Diretório de Saves. \n" " \n" "Salva todos os arquivos de save (*.srm) nesse \n" "diretório. Isso inclui arquivos relacionados \n" "como .bsv, .rt, .psrm, etc...\n" " \n" "Pode ser sobreposto por opções explícitas de\n" "linha de comando."); break; case MENU_ENUM_LABEL_SAVESTATE_DIRECTORY: snprintf(s, len, "Diretório de Savestates. \n" " \n" "Salva todos os Savestates (*.state) nesse \n" "diretório.\n" " \n" "Pode ser sobreposto por opções explícitas de\n" "linha de comando."); break; case MENU_ENUM_LABEL_ASSETS_DIRECTORY: snprintf(s, len, "Diretório de Recursos (Assets). \n" " \n" " Essa localização é consultada quando se \n" "tenta buscar pelo menu recursos (assets) \n" "carregáveis, etc."); break; case MENU_ENUM_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY: snprintf(s, len, "Diretório de Papéis de Parede Dinâmicos. \n" " \n" " O lugar para armazenar papéis de parede que \n" "serão carregados dinamicamente pelo menu \n" "dependendo do contexto."); break; case MENU_ENUM_LABEL_SLOWMOTION_RATIO: snprintf(s, len, "Taxa de câmera lenta." " \n" "Quando ativado, o conteúdo rodará em velocidade\n" "reduzida por um fator."); break; case MENU_ENUM_LABEL_INPUT_AXIS_THRESHOLD: snprintf(s, len, "Define o limiar de eixo.\n" " \n" "O quanto deve ser torcido um eixo para\n" "resultar em um botão pressionado.\n" " Valores possíveis são [0.0, 1.0]."); break; case MENU_ENUM_LABEL_INPUT_TURBO_PERIOD: snprintf(s, len, "Período de turbo.\n" " \n" "Descreve a velocidade na qual se alternam\n" "os botões com turbo ativado." ); break; case MENU_ENUM_LABEL_INPUT_AUTODETECT_ENABLE: snprintf(s, len, "Ativa autodetecção de entrada.\n" " \n" "Tentará autoconfigurar joypads \n" "em um estilo Plug-and-Play."); break; case MENU_ENUM_LABEL_CAMERA_ALLOW: snprintf(s, len, "Autorizar ou desautorizar o acesso da câmera \n" "pelos cores."); break; case MENU_ENUM_LABEL_LOCATION_ALLOW: snprintf(s, len, "Autorizar ou desautorizar o acesso de \n" "serviços de localização pelos cores."); break; case MENU_ENUM_LABEL_TURBO: snprintf(s, len, "Ativar turbo.\n" " \n" "Segurando o turbo enquanto se pressiona outro \n" "botão permitirá que o botão entre em modo \n" "turbo em que o seu estado será modulado com \n" "um sinal periódico. \n" " \n" "A modulação pára quando o próprio botão \n" "(não é o botão de turbo) é solto."); break; case MENU_ENUM_LABEL_OSK_ENABLE: snprintf(s, len, "Ativar/desativar teclado na tela."); break; case MENU_ENUM_LABEL_AUDIO_MUTE: snprintf(s, len, "Ligar/desligar áudio."); break; case MENU_ENUM_LABEL_REWIND: snprintf(s, len, "Segure o botão para retroceder.\n" " \n" "Retrocesso deve estar ativado."); break; case MENU_ENUM_LABEL_EXIT_EMULATOR: snprintf(s, len, "Tecla para sair corretamente do RetroArch." #if !defined(RARCH_MOBILE) && !defined(RARCH_CONSOLE) "\nFechando-o de outra forma mais agressiva \n" "(SIGKILL, etc) sairá sem salvar RAM, etc.\n" "Em sistemas baseados em Unix,\n" "SIGINT/SIGTERM permite um\n" "fechamento correto." #endif ); break; case MENU_ENUM_LABEL_LOAD_STATE: snprintf(s, len, "Carrega Savestates."); break; case MENU_ENUM_LABEL_SAVE_STATE: snprintf(s, len, "Salva Savestates."); break; case MENU_ENUM_LABEL_NETPLAY_FLIP_PLAYERS: snprintf(s, len, "Netplay inverte usuários."); break; case MENU_ENUM_LABEL_CHEAT_INDEX_PLUS: snprintf(s, len, "Incrementa o índice de cheats.\n"); break; case MENU_ENUM_LABEL_CHEAT_INDEX_MINUS: snprintf(s, len, "Decrementa o índice de cheats.\n"); break; case MENU_ENUM_LABEL_SHADER_PREV: snprintf(s, len, "Aplica o shader anterior no diretório."); break; case MENU_ENUM_LABEL_SHADER_NEXT: snprintf(s, len, "Aplica o próximo shader no diretório."); break; case MENU_ENUM_LABEL_RESET: snprintf(s, len, "Reinicia o conteúdo.\n"); break; case MENU_ENUM_LABEL_PAUSE_TOGGLE: snprintf(s, len, "Alterna estado de pausado e não pausado."); break; case MENU_ENUM_LABEL_CHEAT_TOGGLE: snprintf(s, len, "Alterna índice de cheats.\n"); break; case MENU_ENUM_LABEL_HOLD_FAST_FORWARD: snprintf(s, len, "Segure para avanço rápido. Soltando o botão \n" "desativa o avanço rápido."); break; case MENU_ENUM_LABEL_SLOWMOTION: snprintf(s, len, "Segure para câmera lenta."); break; case MENU_ENUM_LABEL_FRAME_ADVANCE: snprintf(s, len, "O quadro avança quando o conteúdo está pausado."); break; case MENU_ENUM_LABEL_MOVIE_RECORD_TOGGLE: snprintf(s, len, "Alterna entre estar gravando ou não."); break; case MENU_ENUM_LABEL_L_X_PLUS: case MENU_ENUM_LABEL_L_X_MINUS: case MENU_ENUM_LABEL_L_Y_PLUS: case MENU_ENUM_LABEL_L_Y_MINUS: case MENU_ENUM_LABEL_R_X_PLUS: case MENU_ENUM_LABEL_R_X_MINUS: case MENU_ENUM_LABEL_R_Y_PLUS: case MENU_ENUM_LABEL_R_Y_MINUS: snprintf(s, len, "Eixo para o analógico (esquema DualShock).\n" " \n" "Associa normalmente, porém, se um analógico real \n" "é associado, pode ser lido como um analógico\n" "verdadeiro. \n" " \n" "Eixo positivo X é para direita. \n" "Eixo positivo Y é para baixo."); break; case MSG_UNKNOWN: default: if (s[0] == '\0') strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len); return -1; } return 0; } const char *msg_hash_to_str_pt_pt(enum msg_hash_enums msg) { switch (msg) { #include "msg_hash_pt_pt.h" default: break; } return "null"; }