Compare commits

...

89 commits

Author SHA1 Message Date
Marat Tanalin
54db3496fc bsnes-mt 1.3.4 2022-09-05 01:03:15 +03:00
Marat Tanalin
5ca6261f19 Fixed: state-slot number was not shown in status bar
when iterating one by one via hotkeys.
2022-09-05 00:24:35 +03:00
Marat Tanalin
382313a9c8 Readme: shorter building command 2021-06-30 00:35:30 +03:00
Marat Tanalin
c6ddc374c1 Translations: added language names, updated Spanish 2021-05-08 10:19:34 +03:00
KarLKoX-FR
d9400a53d5
Translations: added French translation by KarLKoX-FR 2021-03-01 06:25:01 +03:00
Marat Tanalin
3f5ae24489 README: fixed typo 2021-01-10 06:08:58 +03:00
Marat Tanalin
b5171a69b9 Translations > German: added translation author and bsnes-mt version info
.
2021-01-07 04:04:31 +03:00
Marat Tanalin
4f862c8a14
Translations: added German translation by merging PR #14
from Erendel/feature/german
2021-01-07 03:58:29 +03:00
Marat Tanalin
10866970ad Translations: temporarily deleted German translation 2021-01-07 03:57:14 +03:00
Marat Tanalin
45ebe36126 Translations: added German translation
By Erendel.
2021-01-07 03:49:50 +03:00
Marat Tanalin
e6f1c2c632 Translations: almost full Spanish translation 2021-01-07 03:31:23 +03:00
Erendel
50f814179a Implementation of the feedback of @Marat-Tanalin 2021-01-06 22:42:33 +01:00
Marat Tanalin
fd9d254ed1 Updated README 2021-01-06 16:58:18 +03:00
Erendel
0286e10112 Optimization 2021-01-04 22:51:43 +01:00
Erendel
b747d5a8fc Fixed some typos and the quotation marks 2021-01-04 22:48:25 +01:00
Erendel
d507e56a50 Full German translation of the English strings in "en.txt" 2021-01-04 22:04:44 +01:00
Marat Tanalin
b1ccdcc33b Updated README 2021-01-02 03:44:33 +03:00
Marat Tanalin
8f0e17fdd5 Translations: added partial Spanish translation 2021-01-02 03:12:31 +03:00
Marat Tanalin
7338e093d4 Translations: added full Italian translation
by Vecna.
2020-12-30 17:43:29 +03:00
Marat Tanalin
fdd33342a2 Translations: added author and bsnes-mt version info into translation files 2020-12-30 17:41:42 +03:00
Marat Tanalin
1992ccce5d Translations > Italian: renamed it.txt to it-partial.txt 2020-12-30 17:27:40 +03:00
Marat Tanalin
fd16e42d3a Translations > Japanese: fixed syntax 2020-12-30 01:34:09 +03:00
Marat Tanalin
dbf3d37cb8 Cartridge::load(): removed redundant condition 2020-10-28 14:30:42 +03:00
Marat Tanalin
0c1fa394b8 Moved shaders to a separate repo 2020-10-26 17:59:27 +03:00
Marat Tanalin
f975752601 bsnes-mt 1.3.3 2020-10-07 21:22:34 +03:00
Marat Tanalin
80b2d94642 Widened settings nav. for Russian items to fit into at 100%
...OS-level zoom without horizontal scrolling.
2020-10-07 21:12:39 +03:00
Marat Tanalin
3a06831464 Built-in hotkeys: unused modifiers are now taken into account
So that pressing `Alt+F11` does not trigger the `F11` hotkey anymore.
2020-10-07 20:56:41 +03:00
Marat Tanalin
66d5876cba bsnes-mt/keyboard.cpp: Got rid of one-time variables 2020-10-07 20:52:57 +03:00
Marat Tanalin
f1dc1386e4 target-bsnes/presentation/presentation.hpp: Fixed indentation 2020-10-07 20:49:50 +03:00
Marat Tanalin
ddb7672a06 Remove BOM before parsing translation for VS compatibility 2020-10-07 20:48:00 +03:00
Marat Tanalin
cdf56ef50d pt-br.txt: removed unneeded trailing empty line
Apparently not removed at the pull-request stage for some reason.
2020-09-29 05:06:02 +03:00
Marat Tanalin
a231510365
Merge pull request #8 from wtuemura/patch-1
Misspell fix and add preposition for "about"
2020-09-29 05:02:51 +03:00
Marat Tanalin
2fc173e282
pt-br.txt: removed uneeded trailing empty line 2020-09-29 05:01:53 +03:00
Wellington Uemura
1858883e92
Misspell fix and add preposition for "about" 2020-09-28 21:48:50 -03:00
Marat Tanalin
134f5b0c17 bsnes-mt 1.3.2 2020-09-28 06:35:32 +03:00
Marat Tanalin
e56bfb8471 Added Brazilian-Portuguese translation (pt-BR)
By Wellington Uemura aka wtuemura.
2020-09-28 06:13:00 +03:00
Marat Tanalin
121aa01991 Support for language subtags and custom locales 2020-09-28 06:09:38 +03:00
Marat Tanalin
78e4e80a72 bsnes-mt 1.3.1 2020-09-25 05:25:37 +03:00
Marat Tanalin
e8f19ed812 Fixed: the executable did not run on some systems
...due to the `local` compilation flag set to `true` by default. Now switched to `false`. Fixed #6.
2020-09-25 05:13:08 +03:00
Marat Tanalin
83639f8142 Disabled exclusive full-screen mode by default
VSync does not work in exclusive full-screen mode with Direct3D, and OpenGL does not have exclusive mode at all.
2020-09-15 00:28:10 +03:00
Marat Tanalin
bebefe99a1 bsnes-mt 1.3 2020-09-13 07:18:49 +03:00
Marat Tanalin
12018fb672 Updated readme 2020-09-13 07:18:09 +03:00
Marat Tanalin
3b26091bf1 Fixed: UI was localized anyway if English was specified via command line
Now embedded English strings are used in this case.
2020-09-13 07:16:07 +03:00
Marat Tanalin
dee1b4ce6d Updated bsnes-mt description in about window 2020-09-13 05:59:59 +03:00
Marat Tanalin
a1fea8e5ab Drivers' settings: one-item dropdowns are now disabled 2020-09-13 05:58:57 +03:00
Marat Tanalin
d5b8dcd523 Better layout in Input settings 2020-09-13 05:58:00 +03:00
Marat Tanalin
98cb1f3477 Formatting & cleanup 2020-09-13 05:55:09 +03:00
Marat Tanalin
4d50e8b87a Added settings for managing built-in hotkeys 2020-09-13 05:51:55 +03:00
Marat Tanalin
189b680ef9 Better logic with nonexistent translation set via command line 2020-09-13 05:45:20 +03:00
Marat Tanalin
368c611a55 Added settings' section title into window titlebar 2020-09-13 05:42:30 +03:00
Marat Tanalin
43b8a325e3 Even more built-in hotkeys: F9, F11, Ctrl+F4
* `F9` to take screenshot;
* `F11` to toggle full-screen mode;
* `Ctrl+F4` to close game.
2020-09-13 05:15:35 +03:00
Marat Tanalin
6bf2d70050 More built-in hotkeys: Esc, Ctrl+W, F5, Pause, PrnScrn
* `Escape` to exit full-screen or pseudo-full-screen mode;
* `Ctrl+W` to close game;
* `F5` to reset system;
* `Pause/Break` to pause emulation;
* `PrintScreen` to take screenshot.
2020-09-13 05:07:47 +03:00
Marat Tanalin
5d5803b530 Moved <Windows.h> out of utils.h 2020-09-13 04:53:39 +03:00
Marat Tanalin
27d172988d Scaling info is now only shown when changed 2020-09-13 04:49:28 +03:00
Marat Tanalin
97d2e78e64 Center, fixed: overscan ignored with AR correction 2020-09-13 04:32:18 +03:00
Marat Tanalin
8fd06810f8 Scale mode: potentially more precise calculations 2020-09-13 04:27:58 +03:00
Marat Tanalin
dcdfafdbee Support for optional 8:7 PAR instead of 4:3 AR 2020-09-13 04:23:29 +03:00
Marat Tanalin
f7d82b8732 New translation approach with external text files 2020-09-13 04:16:49 +03:00
Marat Tanalin
858cb3768a bsnes/out/.gitignore: Added bsnes-mt.exe 2020-09-13 03:36:36 +03:00
Marat Tanalin
1855cad188 Added version meta info into executable 2020-09-13 03:34:52 +03:00
Marat Tanalin
5f8917f5b7 Updated resource handling 2020-09-13 03:33:10 +03:00
Marat Tanalin
c82333105b bsnes/.../presentation.*: Some reformatting & refactoring. 2020-09-13 02:28:20 +03:00
Marat Tanalin
ee3bda9dec Confirmation before clearing recent games' list 2020-09-13 02:19:15 +03:00
Marat Tanalin
ab5319b1f0 nall/string/markup/node.hpp: Better VS compatibility 2020-09-13 02:07:08 +03:00
Marat Tanalin
f67d09e836 nall/windows/guard.hpp: Better VS compatibility 2020-09-13 02:04:19 +03:00
Marat Tanalin
8f74fc6826 Updated bundled PizzaPNG 2020-09-13 01:20:54 +03:00
Marat Tanalin
5cc96436ec More generic manifest and *.rc file names 2020-08-27 09:49:43 +03:00
Marat Tanalin
b9a4c099b8 Manifest reformatting, cleanup and update 2020-08-27 09:43:54 +03:00
Marat Tanalin
b741efec53 Update README.md 2020-08-20 21:28:15 +03:00
Marat Tanalin
1aa25b51a2 Removed bsnes/Locale/Japanese.bml
This project uses a different translation approach.
2020-08-20 01:04:06 +03:00
Marat Tanalin
cc02c1513b Removed libretro core
This project is focused on the standalone app.
2020-08-20 00:30:26 +03:00
Marat Tanalin
30940e3aaa Replaced JP with JA to match ISO 639-1 2020-08-15 21:46:49 +03:00
Marat Tanalin
c712991529 translations.h: removed trailing empty line
Unneeded in modern C++.
2020-08-15 21:36:14 +03:00
Marat Tanalin
e9a9bdf405 Added internal support for Italian translation 2020-08-15 21:32:15 +03:00
Marat Tanalin
5888fb862b
Added partial Italian translation
Merged pull request #5 from theheroGAC/patch-1
2020-08-15 21:18:48 +03:00
Marat Tanalin
9e61d1a41f
translations.h: fixed syntax, formatting
and IT constant value.
2020-08-15 21:09:24 +03:00
theheroGAC
4a1266f409
Update translations.h 2020-08-15 12:47:50 +02:00
Marat Tanalin
f0fbfde495 bsnes-mt/translations.h: Made Visual-Studio-compatible 2020-08-14 04:06:47 +03:00
Marat Tanalin
ee8c4e0634 bsnes-mt 1.2 2020-08-13 08:55:42 +03:00
Marat Tanalin
168d3a4bbf Added underscore prefix to names of #include'd *.cpp files 2020-08-13 06:45:41 +03:00
Marat Tanalin
c867dd422e bsnes/target-bsnes/*: Reformatted, slightly refactored and cleaned-up 2020-08-13 06:26:13 +03:00
Marat Tanalin
501dbf4f35 Added NTSC/PAL indication in status bar after opening game 2020-08-13 06:13:33 +03:00
Marat Tanalin
487a849066 Fixed bsnes bug: region detection didn't work with native file dialog 2020-08-13 06:07:09 +03:00
Marat Tanalin
9b6c234102 Fixed regression: Region autodetection with Russian UI
Region autodetection did not work even with the custom bsnes file dialog, when Russian user-interface language was used.
2020-08-13 05:55:57 +03:00
Marat Tanalin
4f219352f1 Translated 'Redo' in 'Quick States' list in state manager 2020-08-09 05:34:55 +03:00
Marat Tanalin
d7cc46c7e0 Translated 'Slot' in status-bar message after quick save 2020-08-09 05:06:08 +03:00
Marat Tanalin
051845c963 Disabled the 'No Recent Games' menu metaitem 2020-08-03 19:59:41 +03:00
Marat Tanalin
849368ba7d Moved repeating colors to variables 2020-08-03 19:56:43 +03:00
Marat Tanalin
d24652fb2c Alias for bsnesMt::app 2020-08-03 19:55:00 +03:00
638 changed files with 14582 additions and 157268 deletions

View file

@ -1,32 +1,43 @@
# bsnes-mt # bsnes-mt by Marat Tanalin
bsnes version with image-quality, user-experience and other improvements: bsnes version with image-quality, user-experience and other improvements:
* Pixel-perfect integer-ratio scaling. * Pixel-perfect integer-ratio scaling.
* Precise 4:3 in the “Center” and “Scale” modes. * Precise 4:3 in the “Center” and “Scale” modes.
* Compressed PNG screenshots. * Compressed PNG screenshots.
* User interface in both English and Russian, and more. * Multilanguage user interface.
* Built-in hotkeys for common actions, and more.
See the project [webpage](http://tanalin.com/en/projects/bsnes-mt/) for details. See the project [webpage](http://tanalin.com/en/projects/bsnes-mt/) for details.
## Contributing translations ## Contributing translations
Feel free to contribute user-interface translations. Thats easy even if you are not a programmer. Feel free to contribute user-interface translations. Thats easy even if you are not a programmer. Translations are regular text files with simple `key="value"` syntax.
The app is already available in English and Russian, and partially Japanese. English and Russian translations are complete and dont need contributions. The canonical translation is [English](https://github.com/Marat-Tanalin/bsnes-mt/blob/master/bsnes-mt/translations/en.txt), other translations should be based on&nbsp;it. Partial translations are possible: if a string is not translated, just the original English-language string is automatically used instead.
Translations are in the [`bsnes-mt/translations.h`](https://github.com/Marat-Tanalin/bsnes-mt/blob/master/bsnes-mt/translations.h) file (uses UTF-8 character encoding). The app comes with multiple translations. The default English translation is built into the executable, other translations are loaded dynamically from text files when starting the application. The English and Russian translations are complete and dont need contributions.
Partial translations are possible: if a string is not translated, just the original English-language string is automatically used instead. Each translation is in a text file in the [`bsnes-mt/translations`](https://github.com/Marat-Tanalin/bsnes-mt/blob/master/bsnes-mt/translations) folder. The files use the UTF-8 character encoding. The files have lowercase names and are named according to two-letter language codes defined in the [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) standard with optional subtags according to [BCP&nbsp;47](https://tools.ietf.org/html/bcp47), for example:
* `en.txt` for English;
* `ru.txt` for Russian;
* `pt-br.txt` for Brazilian Portuguese.
Start with translating menus (`Menu.*`), then settings (`Settings.*`) and common strings (`Common.*`) — they form the main part of the user interface. Start with translating menus (`Menu.*`), then settings (`Settings.*`) and common strings (`Common.*`) — they form the main part of the user interface.
Dont bother translating `Browser.*` strings — they are related to non-native file dialogs that are disabled by default and going to be removed from both bsnes and bsnes-mt.
Please ignore capitalization (uppercased first letter of each word) and dont try to maintain it when translating. For example, translate “Open **R**ecent **G**ame” as if it was “Open **r**ecent **g**ame” with lowercase “r” and “g”.
The “|” character in strings is a placeholder meant to be replaced with a number or word(s) — dont capitalize words after that character.
## How to compile/build ## How to compile/build
[Install MinGW](https://github.com/orlp/dev-on-windows/wiki/Installing-GCC--&-MSYS2), then execute the following command inside the folder with bsnes-mt source code: [Install MinGW](https://github.com/orlp/dev-on-windows/wiki/Installing-GCC--&-MSYS2), then execute the following command inside the folder with bsnes-mt source code:
``` ```
mingw32-make -C bsnes target=bsnes mingw32-make -C bsnes
``` ```
Like original bsnes, bsnes-mt cannot be built with Visual Studio for now. Like original bsnes, bsnes-mt cannot be built with Visual Studio for now.

View file

@ -14,8 +14,11 @@ static const uint8_t quickStatesNumber = 25;
static const uint8_t recentGamesNumber = 25; static const uint8_t recentGamesNumber = 25;
static const string title = "bsnes-mt"; static const string title = "bsnes-mt";
static const string version = "1.1.1"; static const string version = "1.3.4";
static const string copyYear = u8"© 2020"; static const string copyYearA = u8"© 2020";
static const string copyYearB = "2022";
static const string copyDashEn = u8"";
static const string copyDashRu = u8"";
static const string authorEn = "Marat Tanalin"; static const string authorEn = "Marat Tanalin";
static const string authorRu = u8"Марат Таналин"; static const string authorRu = u8"Марат Таналин";
static const string urlRoot = "http://tanalin.com"; static const string urlRoot = "http://tanalin.com";
@ -42,15 +45,21 @@ static const string infoEn = u8"Improved version of bsnes:\n\n" +
bullet + linkStartTagStart + articleUrlEn + linkStartTagEnd + bullet + linkStartTagStart + articleUrlEn + linkStartTagEnd +
u8"pixel-perfect integer-ratio scaling" + linkEndTag + ";\n" + u8"pixel-perfect integer-ratio scaling" + linkEndTag + ";\n" +
bullet + u8"precise 4:3 in the “Center” and “Scale” modes;\n" + bullet + u8"precise 4:3 in the “Center” and “Scale” modes;\n" +
bullet + u8"compressed PNG screenshots, and more.\n\n" + bullet + u8"compressed PNG screenshots;\n" +
copyYear + space + authorEn + "\n" + pageLinkEn; bullet + u8"multilanguage user interface;\n" +
bullet + u8"built-in hotkeys for common actions;\n" +
bullet + u8"and more.\n\n" +
copyYearA + copyDashEn + copyYearB + space + authorEn + "\n" + pageLinkEn;
static const string infoRu = u8"Улучшенная версия bsnes:\n\n" + static const string infoRu = u8"Улучшенная версия bsnes:\n\n" +
bullet + linkStartTagStart + articleUrlRu + linkStartTagEnd + bullet + linkStartTagStart + articleUrlRu + linkStartTagEnd +
u8"целочисленное масштабирование без размытия" + linkEndTag + ";\n" + u8"целочисленное масштабирование без размытия" + linkEndTag + ";\n" +
bullet + u8"точное 4:3 в режимах «Center» и «Scale»;\n" + bullet + u8"точное 4:3 в режимах «Center» и «Scale»;\n" +
bullet + u8"PNG-скриншоты со сжатием, и проч.\n\n" + bullet + u8"скриншоты в формате PNG со сжатием;\n" +
copyYear + space + authorRu + "\n" + pageLinkRu; bullet + u8"многоязычный пользовательский интерфейс;\n" +
bullet + u8"встроенные горячие клавиши для частых действий;\n" +
bullet + u8"и многое другое.\n\n" +
copyYearA + copyDashRu + copyYearB + space + authorRu + "\n" + pageLinkRu;
static const string windowTitle = title + space + version; static const string windowTitle = title + space + version;

71
bsnes-mt/files.cpp Normal file
View file

@ -0,0 +1,71 @@
/*! bsnes-mt by Marat Tanalin | http://tanalin.com/en/projects/bsnes-mt/ */
#include <filesystem>
#include <fstream>
#include <sstream>
#include <Windows.h>
#include "pizza-png/src/Image.h"
#include "app.h"
#include "strings.h"
#include "files.h"
namespace bsnesMt::files {
auto fileExists(const string &name) -> bool {
return std::filesystem::exists(strings::utf8ToWideString(name).data());
}
auto getTextFileContents(const string &name) -> string {
std::ifstream in(name);
std::stringstream ss;
ss << in.rdbuf();
string s = ss.str();
if (s.size() > 2 && (char)239 == s[0] && (char)187 == s[1] && (char)191 == s[2]) {
s.erase(0, 3);
}
return s;
}
auto saveFile(const string &data, const string &path) -> bool {
HANDLE handle = CreateFileW(strings::utf8ToWideString(path).data(), GENERIC_WRITE, 0,
NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
if (INVALID_HANDLE_VALUE == handle) {
return false;
}
DWORD bytesToWrite = data.size();
DWORD bytesWritten = 0;
BOOL errorFlag = WriteFile(handle, data.data(), bytesToWrite, &bytesWritten, NULL);
if (FALSE == errorFlag || bytesWritten != bytesToWrite) {
return false;
}
CloseHandle(handle);
return true;
}
auto saveBgraArrayAsPngImage(uint8_t* data, uint16_t width, uint16_t height, const string &path) -> bool {
MaratTanalin::PizzaPNG::Image image(width, height);
size_t pixelCount = width * height;
for (size_t i = 0; i < pixelCount; i++) {
size_t blueIndex = i << 2;
image.addPixel(data[blueIndex + 2], data[blueIndex + 1], data[blueIndex]);
}
image.insertChunk(strings::ucharVectorToString(app::pngInfo));
return saveFile(image, path);
}
} // namespace bsnesMt::files

20
bsnes-mt/files.h Normal file
View file

@ -0,0 +1,20 @@
/*! bsnes-mt by Marat Tanalin | http://tanalin.com/en/projects/bsnes-mt/ */
#pragma once
#include <cstdint>
#include <string>
namespace bsnesMt::files {
using std::string;
auto fileExists(const string &name) -> bool;
auto getTextFileContents(const string &name) -> string;
auto saveFile(const string &data, const string &path) -> bool;
auto saveBgraArrayAsPngImage(uint8_t* data, uint16_t width, uint16_t height, const string &path) -> bool;
} // namespace bsnesMt::files

View file

@ -5,9 +5,25 @@
namespace bsnesMt::keyboard { namespace bsnesMt::keyboard {
static HHOOK hook; static HHOOK hook;
static hookCallbackType hookCallback;
auto initHook(HOOKPROC callback) -> void { auto CALLBACK hotkeyHookCallback(int code, WPARAM wParam, LPARAM lParam) -> LRESULT {
hook = SetWindowsHookExW(WH_KEYBOARD, callback, NULL, GetCurrentThreadId()); if (HC_ACTION == code) {
hookCallback(
wParam,
!(HIWORD(lParam) & 0xC000), // keyDown
isKeyPressed(VK_SHIFT),
isKeyPressed(VK_CONTROL),
isKeyPressed(VK_MENU) // Alt key
);
}
return CallNextHookEx((HHOOK)hotkeyHookCallback, code, wParam, lParam);
}
auto initHook(hookCallbackType callback) -> void {
hookCallback = callback;
hook = SetWindowsHookExW(WH_KEYBOARD, hotkeyHookCallback, NULL, GetCurrentThreadId());
} }
auto shutdownHook() -> bool { auto shutdownHook() -> bool {

View file

@ -6,7 +6,9 @@
namespace bsnesMt::keyboard { namespace bsnesMt::keyboard {
auto initHook(HOOKPROC callback) -> void; typedef void (*hookCallbackType)(WPARAM keyCode, bool keyDown, bool shiftPressed, bool ctrlPressed, bool altPressed);
auto initHook(hookCallbackType callback) -> void;
auto shutdownHook() -> bool; auto shutdownHook() -> bool;

View file

@ -1,22 +1,19 @@
/*! bsnes-mt by Marat Tanalin | http://tanalin.com/en/projects/bsnes-mt/ */ /*! bsnes-mt by Marat Tanalin | http://tanalin.com/en/projects/bsnes-mt/ */
#include <Windows.h> #include <Windows.h>
#include <Commctrl.h>
#include "strings.h" #include "strings.h"
#include "utils.h" #include "translations.h"
#include "messagebox.h" #include "messagebox.h"
namespace bsnesMt::windows { namespace bsnesMt::windows {
using std::wstring;
auto messageBox(const string &text, const string &title, uint32_t flags, uintptr_t parentWindow) -> int { auto messageBox(const string &text, const string &title, uint32_t flags, uintptr_t parentWindow) -> int {
return MessageBoxW( return MessageBoxW(
reinterpret_cast<HWND>(parentWindow), reinterpret_cast<HWND>(parentWindow),
utf8ToWideString(text).data(), strings::utf8ToWideString(text).data(),
utf8ToWideString(title).data(), strings::utf8ToWideString(title).data(),
flags flags
); );
} }
@ -35,7 +32,7 @@ auto showMessage(const string &text, const string &title, uint32_t flags, uintpt
auto showError(const string &text, const string &title, uintptr_t parentWindow) -> void { auto showError(const string &text, const string &title, uintptr_t parentWindow) -> void {
showMessage( showMessage(
text, text,
"" == title ? strings::get("Common.Error") : title, "" == title ? translations::get("Common.Error") : title,
MB_ICONERROR, MB_ICONERROR,
parentWindow parentWindow
); );
@ -52,7 +49,7 @@ auto showInfo(const string &text, const string &title, uintptr_t parentWindow) -
auto confirm(const string &text, const string &title, uintptr_t parentWindow) -> bool { auto confirm(const string &text, const string &title, uintptr_t parentWindow) -> bool {
return IDYES == messageBox( return IDYES == messageBox(
text, text,
"" == title ? strings::get("Common.AreYouSure") : title, "" == title ? translations::get("Common.AreYouSure") : title,
MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2, MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2,
parentWindow parentWindow
); );
@ -62,8 +59,8 @@ auto confirmById(const string &textId, uintptr_t parentWindow) -> bool {
string titleId = textId + ".title"; string titleId = textId + ".title";
return confirm( return confirm(
strings::get(textId), translations::get(textId),
strings::has(titleId) ? strings::get(titleId) : strings::get("Common.AreYouSure"), translations::has(titleId) ? translations::get(titleId) : translations::get("Common.AreYouSure"),
parentWindow parentWindow
); );
} }

View file

@ -1,3 +1,5 @@
An easy-to-use GDI+ based library that generates clean PNG images free of unneeded meta chunks forcedly added by GDI+. # PizzaPNG by Marat Tanalin
Easy-to-use GDI+ based library that generates clean PNG images free of unneeded meta chunks added by GDI+.
See the project [webpage](http://tanalin.com/en/projects/pizza-png/) for details. See the project [webpage](http://tanalin.com/en/projects/pizza-png/) for details.

View file

@ -10,11 +10,6 @@ namespace MaratTanalin::PizzaPNG {
using std::string; using std::string;
class Chunk { class Chunk {
protected:
auto init(const string &fileData, const uint32_t offset = 0) -> void;
auto getFourBytesAsNumber(const string &bytes, uint32_t offset = 0) -> uint32_t;
auto toString() const -> string;
public: public:
string length, type, data, hash; string length, type, data, hash;
@ -28,6 +23,11 @@ public:
operator string() const { operator string() const {
return toString(); return toString();
} }
protected:
auto init(const string &fileData, const uint32_t offset = 0) -> void;
auto getFourBytesAsNumber(const string &bytes, uint32_t offset = 0) -> uint32_t;
auto toString() const -> string;
}; };
} // namespace MaratTanalin::PizzaPNG } // namespace MaratTanalin::PizzaPNG

View file

@ -2,23 +2,133 @@
#include <memory> #include <memory>
#include <Windows.h>
#include <gdiplus.h>
#include "Image.h" #include "Image.h"
#pragma comment(lib, "gdiplus.lib")
namespace MaratTanalin::PizzaPNG { namespace MaratTanalin::PizzaPNG {
using std::make_unique; using std::make_unique, std::wstring;
using Gdiplus::Bitmap, Gdiplus::Color;
inline auto getImageEncoderId(const wstring &type) -> CLSID {
UINT count = 0,
size = 0;
Gdiplus::GetImageEncodersSize(&count, &size);
if (size == 0) {
return {};
}
auto info = make_unique<Gdiplus::ImageCodecInfo[]>(size);
if (info == NULL) {
return {};
}
Gdiplus::GetImageEncoders(count, size, info.get());
wstring mime = L"image/" + type;
for (size_t i = 0; i < count; i++) {
auto infoItem = info[i];
if (wstring(infoItem.MimeType) == mime) {
return infoItem.Clsid;
}
}
return {};
}
inline auto bitmapToPngStream(Bitmap* &bitmap, IStream* &stream) -> void {
CLSID id = getImageEncoderId(L"png");
CreateStreamOnHGlobal(NULL, true, &stream);
bitmap->Save(stream, &id, NULL);
}
inline auto getStreamSize(IStream* &stream) -> ULONG {
STATSTG stat;
stream->Stat(&stat, STATFLAG_DEFAULT);
return stat.cbSize.LowPart;
}
inline auto streamToString(IStream* &stream) -> string {
ULONG size = getStreamSize(stream);
auto data = make_unique<char[]>(size);
LARGE_INTEGER li = {0};
ULONG bytesRead;
stream->Seek(li, STREAM_SEEK_SET, NULL);
stream->Read(data.get(), size, &bytesRead);
return string(data.get(), (int)size);
}
inline auto imageToBitmap(Image* image, Bitmap* &bitmap) -> void {
auto height = image->getHeight();
for (uint16_t y = 0; y < height; y++) {
auto width = image->getWidth();
uint32_t startIndex = width * y;
for (uint16_t x = 0; x < width; x++) {
auto px = image->getPixel(startIndex + x);
bitmap->SetPixel(x, y, Color(px.a, px.r, px.g, px.b));
}
}
}
inline auto imageToPngStream(Image* image, IStream* &stream) -> void {
Gdiplus::GdiplusStartupInput input;
ULONG_PTR token;
Gdiplus::GdiplusStartup(&token, &input, NULL);
auto width = image->getWidth();
auto height = image->getHeight();
INT stride = (width * 3 + 3) / 4 * 4;
Bitmap* bitmap = new Bitmap(width, height);
BYTE* bytes = new BYTE[stride * height];
if (!image->isTransparent()) {
bitmap = new Bitmap(width, height, stride, PixelFormat24bppRGB, bytes);
}
imageToBitmap(image, bitmap);
bitmapToPngStream(bitmap, stream);
delete bitmap;
delete[] bytes;
Gdiplus::GdiplusShutdown(token);
}
Image::Image(uint16_t aWidth, uint16_t aHeight) { Image::Image(uint16_t aWidth, uint16_t aHeight) {
width = aWidth; width = aWidth;
height = aHeight; height = aHeight;
} }
auto Image::getWidth() -> uint16_t {
return width;
}
auto Image::getHeight() -> uint16_t {
return height;
}
auto Image::isTransparent() -> bool {
return transparent;
}
auto Image::addPixel(uint8_t r, uint8_t g, uint8_t b, uint8_t a) -> void { auto Image::addPixel(uint8_t r, uint8_t g, uint8_t b, uint8_t a) -> void {
if (255 == a) { pixels.push_back(Pixel(r, g, b, a));
pixels.push_back(Color(r, g, b));
} if (255 != a) {
else {
pixels.push_back(Color(a, r, g, b));
transparent = true; transparent = true;
} }
} }
@ -86,108 +196,20 @@ auto Image::commit() -> void {
} }
} }
auto Image::getImageEncoderId(const wstring &type) const -> CLSID {
UINT count = 0,
size = 0;
Gdiplus::GetImageEncodersSize(&count, &size);
if (size == 0) {
return {};
}
auto info = make_unique<Gdiplus::ImageCodecInfo[]>(size);
if (info == NULL) {
return {};
}
Gdiplus::GetImageEncoders(count, size, info.get());
wstring mime = L"image/" + type;
for (size_t i = 0; i < count; i++) {
auto infoItem = info[i];
if (wstring(infoItem.MimeType) == mime) {
return infoItem.Clsid;
}
}
return {};
}
auto Image::toBitmap(Bitmap* &bitmap) -> void {
for (uint16_t y = 0; y < height; y++) {
uint32_t startIndex = width * y;
for (uint16_t x = 0; x < width; x++) {
bitmap->SetPixel(x, y, getPixel(startIndex + x));
}
}
}
auto Image::bitmapToPngStream(Bitmap* &bitmap, IStream* &stream) -> void {
CLSID id = getImageEncoderId(L"png");
CreateStreamOnHGlobal(NULL, true, &stream);
bitmap->Save(stream, &id, NULL);
}
auto Image::toPngStream(IStream* &stream) -> void {
Gdiplus::GdiplusStartupInput input;
ULONG_PTR token;
Gdiplus::GdiplusStartup(&token, &input, NULL);
INT stride = (width * 3 + 3) / 4 * 4;
Bitmap* bitmap = new Bitmap(width, height);
BYTE* bytes = new BYTE[stride * height];
if (!transparent) {
bitmap = new Bitmap(width, height, stride, PixelFormat24bppRGB, bytes);
}
toBitmap(bitmap);
bitmapToPngStream(bitmap, stream);
delete bitmap;
delete[] bytes;
Gdiplus::GdiplusShutdown(token);
}
auto Image::getStreamSize(IStream* &stream) -> ULONG {
STATSTG stat;
stream->Stat(&stat, STATFLAG_DEFAULT);
return stat.cbSize.LowPart;
}
auto Image::streamToString(IStream* &stream) -> string {
ULONG size = getStreamSize(stream);
auto data = make_unique<char[]>(size);
LARGE_INTEGER li = {0};
ULONG bytesRead;
stream->Seek(li, STREAM_SEEK_SET, NULL);
stream->Read(data.get(), size, &bytesRead);
return string(data.get(), (int)size);
}
auto Image::toPngString() -> string { auto Image::toPngString() -> string {
IStream* stream; IStream* stream;
toPngStream(stream); imageToPngStream(this, stream);
string pngString = streamToString(stream); string pngString = streamToString(stream);
stream->Release(); stream->Release();
return pngString; return pngString;
} }
auto Image::getPixel(uint16_t x, uint16_t y) const -> Color { auto Image::getPixel(uint16_t x, uint16_t y) const -> Pixel {
return pixels[(uint32_t)width * (uint32_t)y + (uint32_t)x]; return pixels[(uint32_t)width * (uint32_t)y + (uint32_t)x];
} }
auto Image::getPixel(uint32_t index) const -> Color { auto Image::getPixel(uint32_t index) const -> Pixel {
return pixels[index]; return pixels[index];
} }

View file

@ -6,44 +6,24 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include <Windows.h>
#include <gdiplus.h>
#include "Chunk.h" #include "Chunk.h"
#include "Pixel.h"
#pragma comment(lib, "gdiplus.lib")
namespace MaratTanalin::PizzaPNG { namespace MaratTanalin::PizzaPNG {
using Gdiplus::Bitmap, Gdiplus::Color; using std::string, std::vector;
using std::string, std::wstring, std::vector;
class Image { class Image {
protected:
uint16_t width, height;
bool transparent = false;
vector<Color> pixels;
string signature, header, end;
vector<Chunk> chunks, extraChunks;
vector<string> extraBinaryChunks;
auto addChunk(const Chunk &chunk) -> void;
auto getImageEncoderId(const wstring &type) const -> CLSID;
auto toBitmap(Bitmap* &bitmap) -> void;
auto bitmapToPngStream(Bitmap* &bitmap, IStream* &stream) -> void;
auto toPngStream(IStream* &stream) -> void;
auto getStreamSize(IStream* &stream) -> ULONG;
auto streamToString(IStream* &stream) -> string;
auto toPngString() -> string;
auto toString() -> string;
auto commit() -> void;
auto getPixel(uint16_t x, uint16_t y) const -> Color;
auto getPixel(uint32_t index) const -> Color;
public: public:
Image(uint16_t width, uint16_t height); Image(uint16_t aWidth, uint16_t aHeight);
auto getWidth() -> uint16_t;
auto getHeight() -> uint16_t;
auto isTransparent() -> bool;
auto addPixel(uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255) -> void; auto addPixel(uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255) -> void;
auto getPixel(uint32_t index) const -> Pixel;
auto insertChunk(const Chunk &chunk) -> void; auto insertChunk(const Chunk &chunk) -> void;
auto insertChunk(const string &chunk) -> void; auto insertChunk(const string &chunk) -> void;
@ -51,6 +31,20 @@ public:
operator string() { operator string() {
return toString(); return toString();
} }
protected:
uint16_t width, height;
bool transparent = false;
vector<Pixel> pixels;
string signature, header, end;
vector<Chunk> chunks, extraChunks;
vector<string> extraBinaryChunks;
auto addChunk(const Chunk &chunk) -> void;
auto toPngString() -> string;
auto toString() -> string;
auto commit() -> void;
auto getPixel(uint16_t x, uint16_t y) const -> Pixel;
}; };
} // namespace MaratTanalin::PizzaPNG } // namespace MaratTanalin::PizzaPNG

View file

@ -0,0 +1,16 @@
/*! PizzaPNG by Marat Tanalin | http://tanalin.com/en/projects/pizza-png/ */
#include <cstdint>
#include "Pixel.h"
namespace MaratTanalin::PizzaPNG {
Pixel::Pixel(uint8_t aR, uint8_t aG, uint8_t aB, uint8_t aA) {
r = aR;
g = aG;
b = aB;
a = aA;
}
} // namespace MaratTanalin::PizzaPNG

View file

@ -0,0 +1,16 @@
/*! PizzaPNG by Marat Tanalin | http://tanalin.com/en/projects/pizza-png/ */
#pragma once
#include <cstdint>
namespace MaratTanalin::PizzaPNG {
class Pixel {
public:
uint8_t r, g, b, a;
Pixel(uint8_t aR, uint8_t aG, uint8_t aB, uint8_t aA = 255);
};
} // namespace MaratTanalin::PizzaPNG

View file

@ -18,6 +18,10 @@ static constexpr double defaultAspectX = 4.0,
defaultAspectY = 3.0, defaultAspectY = 3.0,
defaultAspect = defaultAspectX / defaultAspectY; defaultAspect = defaultAspectX / defaultAspectY;
static constexpr double par = 8.0 / 7.0,
parAspect = par * origWidth / origHeight,
parOverAspect = par * origWidth / origOverHeight;
auto getWidth(bool aspectCorrection) -> uint32_t { auto getWidth(bool aspectCorrection) -> uint32_t {
return aspectCorrection ? std::round(origHeight * defaultAspect) : origWidth; return aspectCorrection ? std::round(origHeight * defaultAspect) : origWidth;
} }
@ -34,6 +38,10 @@ auto getAspectY(bool showOverscan) -> double {
return showOverscan ? defaultAspectY * overscanRatio : defaultAspectY; return showOverscan ? defaultAspectY * overscanRatio : defaultAspectY;
} }
auto getParAspect(bool showOverscan) -> double {
return showOverscan ? parOverAspect : parAspect;
}
auto getHeightForPar1(uint32_t width, uint32_t height) -> uint32_t { auto getHeightForPar1(uint32_t width, uint32_t height) -> uint32_t {
return (height == origHeight || height == origOverHeight) return (height == origHeight || height == origOverHeight)
? (width == origWidth ? origHeight : origDoubleHeight) ? (width == origWidth ? origHeight : origDoubleHeight)
@ -42,14 +50,27 @@ auto getHeightForPar1(uint32_t width, uint32_t height) -> uint32_t {
auto calculateScaledSizeScale( auto calculateScaledSizeScale(
uint32_t areaWidth, uint32_t areaHeight, uint32_t areaWidth, uint32_t areaHeight,
bool aspectCorrection, bool showOverscan bool aspectCorrection, bool showOverscan,
bool parInsteadOfAr
) -> is::Size ) -> is::Size
{ {
double aspect = aspectCorrection ? defaultAspect : (double)origWidth / origHeight; double aspect;
if (aspectCorrection) {
if (parInsteadOfAr) {
aspect = showOverscan ? parOverAspect : parAspect;
}
else {
aspect = defaultAspect;
if (showOverscan) { if (showOverscan) {
aspect /= overscanRatio; aspect /= overscanRatio;
} }
}
}
else {
aspect = (double)origWidth / (showOverscan ? origOverHeight : origHeight);
}
uint32_t width, height; uint32_t width, height;
@ -76,35 +97,11 @@ auto calculateScaledSizeScale(
auto calculateScaledSizeCenter( auto calculateScaledSizeCenter(
uint32_t areaWidth, uint32_t areaHeight, uint32_t areaWidth, uint32_t areaHeight,
uint32_t imageWidth, uint32_t imageHeight, uint32_t imageWidth, uint32_t imageHeight,
bool aspectCorrection, bool showOverscan bool aspectCorrection, bool showOverscan,
bool parInsteadOfAr
) -> is::Size ) -> is::Size
{ {
return aspectCorrection if (!aspectCorrection) {
? is::calculateSizeCorrectedPerfectY(
areaWidth, areaHeight,
imageHeight,
defaultAspectX, getAspectY(showOverscan)
)
: is::calculateSize(
areaWidth, areaHeight,
imageWidth, getHeightForPar1(imageWidth, imageHeight)
);
}
auto calculateScaledSizePerfect(
uint32_t areaWidth, uint32_t areaHeight,
uint32_t imageWidth, uint32_t imageHeight,
bool aspectCorrection, bool showOverscan
) -> is::Size
{
if (aspectCorrection) {
return is::calculateSizeCorrected(
areaWidth, areaHeight,
imageWidth, imageHeight,
defaultAspectX, getAspectY(showOverscan)
);
}
uint32_t imageHeightForPar1 = getHeightForPar1(imageWidth, imageHeight); uint32_t imageHeightForPar1 = getHeightForPar1(imageWidth, imageHeight);
uint32_t imageOverHeightForPar1 = imageHeightForPar1 == origHeight ? origOverHeight : origDoubleOverHeight; uint32_t imageOverHeightForPar1 = imageHeightForPar1 == origHeight ? origOverHeight : origDoubleOverHeight;
@ -113,6 +110,60 @@ auto calculateScaledSizePerfect(
imageWidth, imageWidth,
showOverscan ? imageOverHeightForPar1 : imageHeightForPar1 showOverscan ? imageOverHeightForPar1 : imageHeightForPar1
); );
}
double aspectX, aspectY;
if (parInsteadOfAr) {
aspectX = getParAspect(showOverscan);
aspectY = 1.0;
}
else {
aspectX = defaultAspectX;
aspectY = getAspectY(showOverscan);
}
return is::calculateSizeCorrectedPerfectY(
areaWidth, areaHeight,
imageHeight,
aspectX, aspectY
);
}
auto calculateScaledSizePerfect(
uint32_t areaWidth, uint32_t areaHeight,
uint32_t imageWidth, uint32_t imageHeight,
bool aspectCorrection, bool showOverscan,
bool parInsteadOfAr
) -> is::Size
{
if (!aspectCorrection) {
uint32_t imageHeightForPar1 = getHeightForPar1(imageWidth, imageHeight);
uint32_t imageOverHeightForPar1 = imageHeightForPar1 == origHeight ? origOverHeight : origDoubleOverHeight;
return is::calculateSize(
areaWidth, areaHeight,
imageWidth,
showOverscan ? imageOverHeightForPar1 : imageHeightForPar1
);
}
double aspectX, aspectY;
if (parInsteadOfAr) {
aspectX = getParAspect(showOverscan);
aspectY = 1.0;
}
else {
aspectX = defaultAspectX;
aspectY = getAspectY(showOverscan);
}
return is::calculateSizeCorrected(
areaWidth, areaHeight,
imageWidth, imageHeight,
aspectX, aspectY
);
}; };
} // namespace bsnesMt::scaling } // namespace bsnesMt::scaling

View file

@ -3,7 +3,6 @@
#pragma once #pragma once
#include <cstdint> #include <cstdint>
#include <utility>
#include "integer-scaling/IntegerScaling.h" #include "integer-scaling/IntegerScaling.h"
@ -17,24 +16,28 @@ auto getWidth(bool aspectCorrection, uint32_t width) -> uint32_t;
auto getHeight(bool showOverscan, uint32_t height) -> uint32_t; auto getHeight(bool showOverscan, uint32_t height) -> uint32_t;
auto getAspectY(bool showOverscan) -> double; auto getAspectY(bool showOverscan) -> double;
auto getParAspect(bool showOverscan) -> double;
auto getHeightForPar1(uint32_t width, uint32_t height) -> uint32_t; auto getHeightForPar1(uint32_t width, uint32_t height) -> uint32_t;
auto calculateScaledSizeScale( auto calculateScaledSizeScale(
uint32_t areaWidth, uint32_t areaHeight, uint32_t areaWidth, uint32_t areaHeight,
bool aspectCorrection, bool showOverscan bool aspectCorrection, bool showOverscan,
bool parInsteadOfAr
) -> is::Size; ) -> is::Size;
auto calculateScaledSizeCenter( auto calculateScaledSizeCenter(
uint32_t areaWidth, uint32_t areaHeight, uint32_t areaWidth, uint32_t areaHeight,
uint32_t imageWidth, uint32_t imageHeight, uint32_t imageWidth, uint32_t imageHeight,
bool aspectCorrection, bool showOverscan bool aspectCorrection, bool showOverscan,
bool parInsteadOfAr
) -> is::Size; ) -> is::Size;
auto calculateScaledSizePerfect( auto calculateScaledSizePerfect(
uint32_t areaWidth, uint32_t areaHeight, uint32_t areaWidth, uint32_t areaHeight,
uint32_t imageWidth, uint32_t imageHeight, uint32_t imageWidth, uint32_t imageHeight,
bool aspectCorrection, bool showOverscan bool aspectCorrection, bool showOverscan,
bool parInsteadOfAr
) -> is::Size; ) -> is::Size;
} // namespace bsnesMt::scaling } // namespace bsnesMt::scaling

View file

@ -1,133 +1,177 @@
/*! bsnes-mt by Marat Tanalin | http://tanalin.com/en/projects/bsnes-mt/ */ /*! bsnes-mt by Marat Tanalin | http://tanalin.com/en/projects/bsnes-mt/ */
#include <stdexcept> #include <algorithm>
#include <locale>
#include <memory>
#include <sstream>
#include <windows.h> #include <Windows.h>
#include "utils.h"
#include "strings.h" #include "strings.h"
namespace bsnesMt::strings { namespace bsnesMt::strings {
using std::wstring, std::out_of_range; using std::make_unique;
auto getLocale() -> uint8_t { auto utf8ToWideString(const string &utf8) -> wstring {
wstring commandLine = GetCommandLineW(); wstring wide;
wstring paramStart = L"--locale=";
auto paramPos = commandLine.find(paramStart);
if (string::npos != paramPos) { auto utf8c = utf8.data();
wstring value = commandLine.substr(paramPos + paramStart.size(), 2); int size = MultiByteToWideChar(CP_UTF8, 0, utf8c, -1, 0, 0);
if (L"ru" == value) { if (size > 0) {
return RU; auto buffer = make_unique<wchar_t[]>(size);
} MultiByteToWideChar(CP_UTF8, 0, utf8c, -1, buffer.get(), size);
else if (L"jp" == value) { wide = buffer.get();
return JP;
}
else if (L"en" == value) {
return EN;
}
} }
auto lang = getUiLang(); return wide;
}
uint8_t locale; auto wideStringToUtf8String(const wstring &wide) -> string {
string utf8;
if (LANG_RUSSIAN == lang) { auto widec = wide.data();
locale = RU; int size = WideCharToMultiByte(CP_UTF8, 0, widec, -1, 0, 0, 0, 0);
if (size > 0) {
auto buffer = std::make_unique<char[]>(size);
WideCharToMultiByte(CP_UTF8, 0, widec, -1, buffer.get(), size, 0, 0);
utf8 = buffer.get();
}
return utf8;
}
auto toLowerCase(string str) -> string {
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
return str;
};
auto replaceByRef(string &str, const string &search, const string &replacement) -> void {
if (search.empty()) {
return;
}
const auto searchLength = search.length();
const auto replaceLength = replacement.length();
string::size_type pos = 0;
while ((pos = str.find(search, pos)) != string::npos) {
str.replace(pos, searchLength, replacement);
pos += replaceLength;
}
}
auto replace(string str, const string &search, const string &replacement) -> string {
replaceByRef(str, search, replacement);
return str;
}
auto replace(const string &str, const string &search, char replacement) -> string {
return replace(str, search, string(1, replacement));
}
auto replace(const string &s, char search, char replacement) -> string {
return replace(s, string(1, search), string(1, replacement));
}
auto replaceOnce(const string &s, char search, const string &replacement) -> string {
auto pos = s.find(search);
if (string::npos == pos) {
return s;
}
return s.substr(0, pos) + replacement + s.substr(pos + 1);
}
auto replaceOnce(const string &s, const string &search, const string &replacement) -> string {
auto pos = s.find(search);
if (string::npos == pos) {
return s;
}
return s.substr(0, pos) + replacement + s.substr(pos + search.size());
}
auto unifyLineFeeds(string text) -> string {
text = replace(text, "\r\n", '\n');
text = replace(text, '\r', '\n');
return text;
}
auto trimByRef(string &s, const string &chars) -> void {
string::size_type pos = s.find_last_not_of(chars);
if (pos != string::npos) {
s.erase(pos + 1);
pos = s.find_first_not_of(chars);
if (pos != string::npos) {
s.erase(0, pos);
} }
else if (LANG_JAPANESE == lang) {
locale = JP;
} }
else { else {
locale = EN; s.erase(s.begin(), s.end());
} }
return locale;
} }
auto genericHas(const map<string, map<uint8_t, string>> &items, const string &key) -> bool { auto trim(string s, const string &chars) -> string {
try { trimByRef(s, chars);
auto test = items.at(key); return s;
}
catch (const out_of_range &e) {
return false;
}
return true;
} }
auto genericHas(const map<string, string> &items, const string &key) -> bool { auto trim(const string &s) -> string {
try { return trim(s, " \t\r\n");
auto test = items.at(key); }
}
catch (const out_of_range &e) { auto isWhiteSpace(const string &s) -> bool {
return false; return "" == trim(s);
}
auto ucharVectorToString(const vector<unsigned char> &data) -> string {
string dataString;
for (auto &byte : data) {
dataString += byte;
} }
return true; return dataString;
} }
auto has(const string &id) -> bool { auto split(string s, const string &delim) -> vector<string> {
return genericHas(strings, id); s += delim;
} vector<string> elems;
string::size_type delimLen = delim.length();
string::size_type pos = 0;
string elem;
auto valueHasLocale(const map<uint8_t, string> &value, uint8_t locale) -> bool { while ((pos = s.find(delim)) != string::npos) {
try { elem = s.substr(0, pos);
auto test = value.at(locale); elems.push_back(elem);
} s.erase(0, pos + delimLen);
catch (const out_of_range &e) {
return false;
} }
return true; return elems;
} }
auto get(const map<uint8_t, string> &value) -> string { auto join(const vector<string> &v, const string &delim) -> string {
if (valueHasLocale(value, locale)) { std::stringstream ss;
return value.at(locale); vector<string>::size_type count = v.size();
for (vector<string>::size_type i = 0; i < count; i++) {
if (i != 0) {
ss << delim;
} }
return valueHasLocale(value, EN) ? value.at(EN) : ""; ss << v[i];
}
auto get(const string &id) -> string {
return has(id) ? get(strings.at(id)) : "";
}
auto getStringOrId(const map<string, map<uint8_t, string>> &values, const string &id) -> string {
auto value = values.at(id);
if (valueHasLocale(value, locale)) {
return value.at(locale);
} }
return valueHasLocale(value, EN) ? value.at(EN) : id; return ss.str();
}
auto getDedicatedString(
const map<string, map<uint8_t, string>> &values,
const map<string, string> &dedicatedToRegularStrings,
const string &id
) -> string
{
if (genericHas(values, id)) {
return getStringOrId(values, id);
}
return genericHas(dedicatedToRegularStrings, id)
? get(dedicatedToRegularStrings.at(id))
: id;
}
auto getDeviceString(const string &id) -> string {
return getDedicatedString(deviceStrings, deviceStringsToRegularStrings, id);
}
auto getHotkeyString(const string &id) -> string {
return getDedicatedString(hotkeyStrings, hotkeyStringsToRegularStrings, id);
} }
} // namespace bsnesMt::strings } // namespace bsnesMt::strings

View file

@ -2,39 +2,36 @@
#pragma once #pragma once
#include <cstdint>
#include <map>
#include <string> #include <string>
#include <vector>
namespace bsnesMt::strings { namespace bsnesMt::strings {
using std::map, std::string; using std::string, std::wstring, std::vector;
#include "translations.h" auto utf8ToWideString(const string &utf8) -> wstring;
auto wideStringToUtf8String(const wstring &wide) -> string;
auto getLocale() -> uint8_t; auto toLowerCase(string str) -> string;
static uint8_t locale = getLocale(); auto replaceByRef(string &str, const string &search, const string &replacement) -> void;
auto replace(string str, const string &search, const string &replacement) -> string;
auto replace(const string &str, const string &search, char replacement) -> string;
auto replace(const string &s, char search, char replacement) -> string;
auto replaceOnce(const string &s, char search, const string &replacement) -> string;
auto replaceOnce(const string &s, const string &search, const string &replacement) -> string;
auto genericHas(const map<string, map<uint8_t, string>> &items, const string &key) -> bool; auto unifyLineFeeds(string text) -> string;
auto genericHas(const map<string, string> &items, const string &key) -> bool;
auto has(const string &id) -> bool; auto trimByRef(string &s, const string &chars) -> void;
auto trim(string s, const string &chars) -> string;
auto trim(const string &s) -> string;
auto valueHasLocale(const map<uint8_t, string> &value, uint8_t locale) -> bool; auto isWhiteSpace(const string &s) -> bool;
auto get(const map<uint8_t, string> &value) -> string; auto ucharVectorToString(const vector<unsigned char> &data) -> string;
auto get(const string &id) -> string;
auto getStringOrId(const map<string, map<uint8_t, string>> &values, const string &id) -> string; auto split(string s, const string &delim) -> vector<string>;
auto join(const vector<string> &v, const string &delim) -> string;
auto getDedicatedString(
const map<string, map<uint8_t, string>> &values,
const map<string, string> &dedicatedToRegularStrings,
const string &id
) -> string;
auto getDeviceString(const string &id) -> string;
auto getHotkeyString(const string &id) -> string;
} // namespace bsnesMt::strings } // namespace bsnesMt::strings

221
bsnes-mt/translations.cpp Normal file
View file

@ -0,0 +1,221 @@
/*! bsnes-mt by Marat Tanalin | http://tanalin.com/en/projects/bsnes-mt/ */
#include <stdexcept>
#include <vector>
#include <Windows.h>
#include <target-bsnes/resource/resources.h>
#include "files.h"
#include "strings.h"
#include "translations.h"
namespace bsnesMt::translations {
using std::wstring, std::vector, std::out_of_range;
using namespace strings;
string locale;
auto getSystemLocale() -> string {
wchar_t buffer[LOCALE_NAME_MAX_LENGTH];
auto length = GetUserDefaultLocaleName(buffer, LOCALE_NAME_MAX_LENGTH);
auto locale = toLowerCase(wideStringToUtf8String(wstring(buffer).substr(0, length - (size_t)1)));
return locale;
}
auto getShortSystemLocale() -> string {
auto locale = getSystemLocale();
auto sepPos = locale.find('-');
return string::npos == sepPos ? locale : locale.substr(0, sepPos);
}
auto getFileDataFromResource(int name, int type, DWORD &size, const char* &data) -> void {
HMODULE handle = GetModuleHandle(NULL);
HRSRC rc = FindResource(handle, MAKEINTRESOURCE(name), MAKEINTRESOURCE(type));
HGLOBAL rcData = LoadResource(handle, rc);
size = SizeofResource(handle, rc);
data = static_cast<const char*>(LockResource(rcData));
}
auto parseTranslation(const string &code, map<string, string> &strings) -> void {
auto size = code.size();
auto idPos = 0;
auto sepPos = code.find('=');
char quote = '"';
while (true) {
if (string::npos == sepPos) {
break;
}
auto id = trim(code.substr(idPos, sepPos - idPos));
if (isWhiteSpace(id)) {
break;
}
auto afterSepPos = sepPos + 1;
auto startQuotePos = code.find(quote, afterSepPos);
if (string::npos == startQuotePos || !isWhiteSpace(code.substr(afterSepPos, startQuotePos - afterSepPos))) {
break;
}
auto afterStartQuotePos = startQuotePos + 1;
auto endQuotePos = code.find(quote, afterStartQuotePos);
if (string::npos == endQuotePos) {
break;
}
auto value = trim(code.substr(afterStartQuotePos, endQuotePos - afterStartQuotePos));
if ("" != value) {
strings[id] = value;
}
auto afterEndQuotePos = endQuotePos + 1;
idPos = code.find('\n', afterEndQuotePos);
if (string::npos == idPos || !isWhiteSpace(code.substr(afterEndQuotePos, idPos - afterEndQuotePos))) {
break;
}
sepPos = code.find('=', idPos);
}
}
auto getLocalePath(const string &locale) -> string {
static string folder = "translations/",
extension = ".txt";
return folder + locale + extension;
}
auto localeFileExists(const string &locale) -> bool {
return files::fileExists(getLocalePath(locale));
}
auto getAvailableLocaleSlice(const string &locale) -> string {
if (localeFileExists(locale)) {
return locale;
}
auto parts = strings::split(locale, "-");
auto count = parts.size();
for (auto i = 1; i < count; i++) {
auto curLocale = join(vector<string>(parts.begin(), parts.end() - i), "-");
if (localeFileExists(curLocale)) {
return curLocale;
}
}
return "";
}
auto initInternalStrings() -> void {
DWORD size = 0;
const char* data = NULL;
string code;
getFileDataFromResource(IDR_EN_STRINGS, TEXTFILE, size, data);
code.assign(data, size);
parseTranslation(code, strings);
}
auto getCommandLineLocale() -> string {
string commandLine = wideStringToUtf8String(GetCommandLineW());
auto params = split(commandLine, " ");
string paramStart = "--locale=";
auto valuePos = paramStart.size();
for (auto &param : params) {
if (param.substr(0, valuePos) == paramStart) {
string locale = param.substr(valuePos);
return "jp" == locale ? "ja" : locale;
}
}
return "";
}
auto initLocale() -> void {
initInternalStrings();
auto commandLineLocale = getCommandLineLocale();
auto curLocale = getAvailableLocaleSlice(commandLineLocale);
if ("" == curLocale) {
if ("en" == commandLineLocale) {
locale = commandLineLocale;
return;
}
curLocale = getAvailableLocaleSlice(getSystemLocale());
}
if ("" == curLocale) {
curLocale = getShortSystemLocale();
}
else {
auto path = getLocalePath(curLocale);
auto code = files::getTextFileContents(path);
parseTranslation(code, strings);
}
locale = curLocale;
}
auto genericHas(const map<string, string> &items, const string &key) -> bool {
try {
auto test = items.at(key);
}
catch (const out_of_range &e) {
return false;
}
return true;
}
auto has(const string &id) -> bool {
return genericHas(strings, id);
}
auto get(const map<string, string> &value) -> string {
if (genericHas(value, locale)) {
return value.at(locale);
}
return genericHas(value, "en") ? value.at("en") : "";
}
auto get(const string &id) -> string {
return has(id) ? strings.at(id) : "";
}
auto getDedicatedStringId(const map<string, string> &dedicatedStrings, const string &id) -> string {
return genericHas(dedicatedStrings, id)
? dedicatedStrings.at(id)
: id;
}
auto getDeviceString(const string &id) -> string {
auto regularId = getDedicatedStringId(deviceStrings, id);
return has(regularId) ? get(regularId) : id;
}
auto getHotkeyString(const string &id) -> string {
auto regularId = getDedicatedStringId(hotkeyStrings, id);
return has(regularId) ? get(regularId) : id;
}
} // namespace bsnesMt::translations

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,622 @@
Translation.language = "German"
Translation.author = "Erendel"
Translation.version = "1.3.3"
Common.Yes = "Ja"
Common.No = "Nein"
Common.Cancel = "Abbrechen"
Common.Always = "Immer"
Common.AreYouSure = "Sind Sie sicher?"
Common.Open = "Öffnen"
Common.Load = "Laden"
Common.Save = "Speichern"
Common.Add = "Hinzufügen"
Common.Remove = "Entfernen"
Common.Delete = "Löschen"
Common.Rename = "Umbenennen"
Common.Reset = "Zurücksetzen"
Common.Clear = "Leeren"
Common.None = "Kein"
Common.Disabled = "Deaktiviert"
Common.Default = "Standard"
Common.Name = "Name"
Common.Date = "Datum"
Common.Success = "Erfolg"
Common.Failure = "Fehlschlag"
Common.Error = "Fehler"
Common.Warning = "Warnung"
Common.Auto = "Auto"
Common.Video = "Video"
Common.Audio = "Audio"
Common.Fps = "fps"
Common.Hz = "Hz"
Common.number = "#"
Menu.File = "Datei"
Menu.File.OpenGame = "Spiel öffnen"
Menu.File.OpenRecentGame = "Zuletzt gespieltes Spiel öffnen"
Menu.File.OpenRecentGame.ClearList = "Liste leeren"
Menu.File.OpenRecentGame.ClearList.confirm.title = "Die Liste zuletzt gespielter Spiele leeren?"
Menu.File.OpenRecentGame.ClearList.confirm = "Sind Sie sicher, dass sie die Liste zuletzt gespielter Spiele leeren möchten?"
Menu.File.OpenRecentGame.NoRecentGames = "Keine zuletzt gespielten Spiele"
Menu.File.CloseGame = "Spiel schließen"
Menu.File.Exit = "Verlassen"
Menu.System = "System"
Menu.System.ControllerPort = "Kontrolleranschluss"
Menu.System.ExpansionPort = "Erweiterungsanschluss"
Menu.Settings.Size = "Größe"
Menu.Settings.Size.ShrinkWindowToSize = "Fenster auf Größe verkleinern"
Menu.Settings.Size.CenterWindow = "Fenster zentrieren"
Menu.Settings.Size.FullScreenMode = "Vollbildmodus"
Menu.Settings.Size.PseudoFullScreenMode = "Pseudo-Vollbildmodus"
Menu.Settings.Output = "Ausgabe"
Menu.Settings.Output.Center = "Zentriert"
Menu.Settings.Output.PixelPerfect = "Pixelgenau"
Menu.Settings.Output.Scale = "Skaliert"
Menu.Settings.Output.Stretch = "Gestreckt"
Menu.Settings.Output.AspectRatioCorrection = "Korrektur des Seitenverhältnisses"
Menu.Settings.Output.parInsteadOfAr = "8:7 PAR anstatt 4:3 AR"
Menu.Settings.Output.ShowOverscanArea = "Overscanbereich anzeigen"
Menu.Settings.Output.scalingInfo = "Skalierungsinformationen in der Statusleiste"
Menu.Settings.Output.HiresBlurEmulation = "Hochauflösende Unschärfeemulation"
Menu.Settings.Filter = "Filter"
Menu.Settings.Shader = "Shader"
Menu.Settings.Shader.Blur = "Unschärfe"
Menu.Settings.MuteAudio = "Audio stummschalten"
Menu.Settings.ShowStatusBar = "Statusleiste anzeigen"
Menu.Settings.OpenSettingsFolder = "Einstellungsordner öffnen"
Menu.Help = "Hilfe"
Menu.Help.About = "Über |"
Settings = "Einstellungen"
Settings.Common.Assign = "Zuweisen"
Settings.Common.AssignLowercase = "zuweisen"
Settings.Common.Mapping = "Belegung"
Settings.Common.MappingAssigned = "Belegung zugewiesen."
Settings.Common.PressKeyOrButtonForMapping = "Taste oder Knopf für Belegung drücken"
Settings.Common.FrameLowercase = "Bild"
Settings.Video.ColorAdjustment = "Farbanpassung"
Settings.Video.Luminance = "Leuchtstärke"
Settings.Video.Saturation = "Sättigung"
Settings.Video.Gamma = "Gamma"
Settings.Video.DimVideoWhenIdle = "Video abdunkeln, wenn untätig"
Settings.Video.DimVideoWhenIdle.tooltip = "Dunkelt das Videosignal ab, um anzuzeigen, dass die Emulation nicht läuft."
Settings.Video.DrawSnowEffectWhenIdle = "Schneeeffekt anzeigen, wenn untätig"
Settings.Audio.Effects = "Effekte"
Settings.Audio.Skew = "Versatz"
Settings.Audio.Skew.tooltip = "
Passt die Audiofrequenz um den Versatzwert an (in Hz).
Dies ist im Wesentlichen eine statische Ratensteuerung.
Aktivieren Sie zunächst sowohl die Video- als auch die Audiosynchronisation.
Erhöhen oder senken Sie dann diesen Wert, um zu versuchen, Fehler zu reduzieren.
Eine Richtung wird Video helfen, aber Audio schaden.
Die andere Richtung wird das Gegenteil bewirken.
Die Idee ist, den besten Mittelweg zu finden.
Sie sollten diesen Wert auf 0 belassen, wenn Sie die dynamische Ratensteuerung verwenden.
"
Settings.Audio.Volume = "Lautstärke"
Settings.Audio.Volume.tooltip = "
Passt die Lautstärke der Audioausgabe an.
Sie sollten, wenn möglich, keine Werte über 100% verwenden!
Wenn Sie dies tun, können Audioschnittverzerrungen auftreten.
"
Settings.Audio.Balance = "Balance"
Settings.Audio.Balance.tooltip = "
Verschiebt die Audioausgabe nach links (niedrigere Werte) oder rechts (höhere Werte).
50% (zentriert) ist die empfohlene Einstellung.
"
Settings.Audio.MuteWhenUnfocused = "Stummschalten, wenn nicht im Vordergrund"
Settings.Input = "Eingabe"
Settings.Input.WhenFocusIsLost = "Wenn nicht im Vordergrund"
Settings.Input.WhenFocusIsLost.PauseEmulation = "Emulation pausieren"
Settings.Input.WhenFocusIsLost.BlockInput = "Eingabe blockieren"
Settings.Input.WhenFocusIsLost.AllowInput = "Eingabe erlauben"
Settings.Input.Port = "Anschluss"
Settings.Input.Device = "Gerät"
Settings.Input.TurboRate = "Turborate"
Settings.Input.TurboRate.tooltip = "Anzahl der Bilder, die zwischen dem Umschalten der Turbotasten gewartet werden soll."
Settings.Input.MouseLeft = "Linke Maustaste"
Settings.Input.MouseMiddle = "Mittlere Maustaste"
Settings.Input.MouseRight = "Rechte Maustaste"
Settings.Input.MouseXAxis = "X-Achse der Maus"
Settings.Input.MouseYAxis = "Y-Achse der Maus"
Settings.Hotkeys = "Tastenkürzel"
Settings.Hotkeys.CombinationalLogic = "Kombinatorische Logik"
Settings.Hotkeys.CombinationalLogic.tooltip = "
Legt fest, ob alle oder nur bestimmte Belegungen gedrückt werden müssen, um Tastaturkürzel zu aktivieren.
Verwenden Sie die “UND”-Logik, wenn Sie möchten, dass Tastenkombinationen wie Strg+F einen Tastenkürzel auslösen.
Verwenden Sie die “ODER”-Logik, wenn Sie möchten, dass sowohl eine Tastatur als auch ein Gamepad denselben Hotkey auslösen.
"
Settings.Hotkeys.CombinationalLogic.And = "UND"
Settings.Hotkeys.CombinationalLogic.And.tooltip = "Jede Belegung muss gedrückt werden, um einen bestimmten Tastenkürzel zu aktivieren."
Settings.Hotkeys.CombinationalLogic.Or = "ODER"
Settings.Hotkeys.CombinationalLogic.Or.tooltip = "Jede Belegung kann gedrückt werden, um einen bestimmten Hotkey zu aktivieren."
Settings.Hotkeys.Rewind.enableFirst = "Bitte aktivieren Sie zunächst die Zurückspulunterstützung unter “Einstellungen” → “Emulator”."
Settings.BuiltinHotkeys = "Tastenkürzel (eingebaut)"
Settings.Paths = "Pfade"
Settings.Paths.Games = "Spiele"
Settings.Paths.Patches = "Patches"
Settings.Paths.Saves = "Speicherstände"
Settings.Paths.Cheats = "Cheats"
Settings.Paths.States = "Zwischenstände"
Settings.Paths.Screenshots = "Screenshots"
Settings.Paths.LastRecentlyUsed = "zuletzt verwendet"
Settings.Paths.SameAsLoadedGame = "derselbe, wie das geladene Spiel"
Settings.Emulator = "Emulator"
Settings.Emulator.General = "Allgemein"
Settings.Emulator.General.warnOnUnverifiedGames = "Warnen, wenn Spiele geöffnet werden, die nicht verifiziert wurden"
Settings.Emulator.General.autoSaveMemory = "Speicher periodisch sichern"
Settings.Emulator.General.autoSaveStateOnUnload = "Zwischenstand speichern, wenn Spiele entladen werden"
Settings.Emulator.General.AutoResumeOnLoad = "Beim Laden fortsetzen"
Settings.Emulator.General.UseNativeFileDialogs = "Native Dateidialoge verwenden"
Settings.Emulator.FastForward = "Vorspulen"
Settings.Emulator.FastForward.FrameSkip = "Bildüberspringung"
Settings.Emulator.FastForward.FrameSkip.tooltip = "
Legt fest, wie viele Bilder beim Vorspulen übersprungen werden sollen.
Das Überspringen von Einzelbildern ermöglicht eine höhere maximale Bildrate beim Vorspulen.
"
Settings.Emulator.FastForward.FrameSkip.Frames2to4 = "| Bilder"
Settings.Emulator.FastForward.FrameSkip.Frames = "| Bilder"
Settings.Emulator.FastForward.Limiter = "Begrenzer"
Settings.Emulator.FastForward.Limiter.tooltip = "Legt die Maximalgeschwindigkeit beim Vorspulen fest."
Settings.Emulator.FastForward.mute = "Beim Vorspulen stummschalten"
Settings.Emulator.Rewind = "Zurückspulen"
Settings.Emulator.Rewind.Frequency = "Frequenz"
Settings.Emulator.Rewind.Frequency.everyFrames = "Alle | Bilder"
Settings.Emulator.Rewind.Length = "Länge"
Settings.Emulator.Rewind.Length.states = "| Zwischenstände"
Settings.Emulator.Rewind.mute = "Beim zurückspulen stummschalten"
Settings.Enhancements = "Verbesserungen"
Settings.Enhancements.FastMode = "Schneller Modus"
Settings.Enhancements.RunAhead = "Vorlauf"
Settings.Enhancements.RunAhead.Frames = "Bilder"
Settings.Enhancements.RunAhead.One = "Ein"
Settings.Enhancements.RunAhead.Two = "Zwei"
Settings.Enhancements.RunAhead.Three = "Drei"
Settings.Enhancements.RunAhead.Four = "Vier"
Settings.Enhancements.Overclocking = "Übertaktung"
Settings.Enhancements.Ppu.Video = "Video"
Settings.Enhancements.Ppu.Deinterlace = "Deinterlace"
Settings.Enhancements.Ppu.NoSpriteLimit = "Kein Sprite-Limit"
Settings.Enhancements.hdMode7.FastPpuOnly = "nur schnelle PPU"
Settings.Enhancements.hdMode7.Scale = "Skalierung"
Settings.Enhancements.hdMode7.PerspectiveCorrection = "Perspektivenkorrektur"
Settings.Enhancements.hdMode7.Supersampling = "Supersampling"
Settings.Enhancements.hdMode7.HdToSdMosaic = "HD→SD Mosaik"
Settings.Enhancements.Dsp.Audio = "Audio"
Settings.Enhancements.Dsp.CubicInterpolation = "Kubische Interpolation"
Settings.Enhancements.Coprocessors = "Koprozessoren"
Settings.Enhancements.Coprocessors.PreferHle = "High-Level-Emulation (HLE) bevorzugen"
Settings.Enhancements.Coprocessors.PreferHle.tooltip = "
Wenn aktiviert, wird die weniger genaue HLE-Emulation immer verwendet, wenn sie verfügbar ist.
Wenn nicht aktiviert, wird HLE nur verwendet, wenn keine Firmware mit Low-Level-Emulation (LLE) vorhanden ist.
"
Settings.Enhancements.GameEnhancements = "Spielverbesserungen"
Settings.Enhancements.GameEnhancements.Hotfixes = "Hotfixes"
Settings.Enhancements.GameEnhancements.Hotfixes.tooltip = "
Auch kommerziell lizenzierte und offiziell veröffentlichte Software wird manchmal mit Fehlern ausgeliefert.
Mit dieser Option werden bestimmte Probleme behoben, die auch auf echter Hardware aufgetreten sind.
"
Settings.Compatibility = "Kompatibilität"
Settings.Compatibility.entropy = "Entropie (Randomisierung)"
Settings.Compatibility.entropy.None.tooltip = "
Alle Speicher und Register werden beim Start auf konstante Werte initialisiert.
Verwenden Sie dies für die Kompatibilität mit sehr alten Demoszene-Homebrew-Spielen.
"
Settings.Compatibility.entropy.Low = "Niedrig"
Settings.Compatibility.entropy.Low.tooltip = "
Der gesamte Speicher wird mit sich wiederholenden Mustern randomisiert, alle Register werden beim Starten randomisiert.
Verwenden Sie dies für die genaueste Repräsentation eines echten SNES.
"
Settings.Compatibility.entropy.High = "Hoch"
Settings.Compatibility.entropy.High.tooltip = "
Alle Speicher und Register sind so weit wie möglich randomisiert.
Verwenden Sie dies bei der Entwicklung neuer SNES-Software, um eine
maximale Kompatibilität mit echter Hardware zu gewährleisten.
"
Settings.Compatibility.cpu.Processor = "Prozessor"
Settings.Compatibility.cpu.FastMath = "Schnelles Rechnen"
Settings.Compatibility.cpu.FastMath.tooltip = "
CPU-Multiplikation und -Division benötigen Zeit, um auf einem echten SNES abgeschlossen zu werden.
Ältere Emulatoren haben diese Verzögerungen nicht simuliert und lieferten sofort Ergebnisse.
Einige ältere ROM-Hacks warten nicht auf den Abschluss von mathematischen Operationen und benötigen diesen Hack.
"
Settings.Compatibility.ppu.Video = "Video"
Settings.Compatibility.ppu.NoVramBlocking = "Keine Blockierung des Videospeichers (VRAM)"
Settings.Compatibility.ppu.NoVramBlocking.tooltip = "
Mit dieser Option kann ein Fehler in älteren Versionen von ZSNES und Snes9x emuliert werden, bei dem die VRAM-Blockierung nicht emuliert wurde.
Einige ältere ROM-Hacks haben sich auf dieses Verhalten verlassen und stellen Grafiken falsch dar, wenn dies nicht aktiviert ist.
Dies ist nicht nur extrem ungenau gegenüber echter Hardware, es schadet auch der Geschwindigkeit der schnellen PPU.
Aktivieren Sie diese Option nicht, es sei denn, Sie müssen ein Spiel spielen, das sonst nicht korrekt funktioniert.
"
Settings.Compatibility.dsp.Audio = "Audio"
Settings.Compatibility.dsp.EchoShadowRam = "Echo-Schatten-RAM"
Settings.Compatibility.dsp.EchoShadowRam.tooltip = "
Diese Option ermöglicht die Emulation eines Fehlers in ZSNES, bei dem das Echo-RAM als getrennt vom APU-RAM behandelt wurde.
Viele ältere ROM-Hacks für “Super Mario World” verließen sich auf dieses Verhalten und stürzen ohne Aktivierung dieser Option ab.
Es ist jedoch extrem ungenau gegenüber echter Hardware und sollte nicht aktiviert werden, wenn es nicht erforderlich ist.
"
Settings.Drivers = "Treiber"
Settings.Drivers.Driver = "Treiber"
Settings.Drivers.Change = "Wechseln"
Settings.Drivers.Reload = "Neu laden"
Settings.Drivers.ExclusiveMode = "Exklusiver Modus"
Settings.Drivers.Synchronize = "Synchronisieren"
Settings.Drivers.ActiveDriver = "Aktiver Treiber"
Settings.Drivers.changeConfirm.title = "Treiber wechseln?"
Settings.Drivers.changeConfirm = "
Warnung: Inkompatible Treiber können die Anwendung zum Absturz bringen.
Es wird dringend empfohlen, dass Sie Ihr Spiel zur Sicherheit zuerst entladen.
Möchten Sie jetzt trotzdem mit dem Treiberwechsel fortfahren?
"
Settings.noteGameRestart = "Hinweis: Einige Einstellungen werden erst beim erneuten Laden des Spiels wirksam."
Settings.Drivers.Video.failedToInitialize = "Initialisierung des [|]-Videotreibers fehlgeschlagen"
Settings.Drivers.Video.FullScreenMonitor = "Vollbild-Monitor"
Settings.Drivers.Video.FullScreenMonitor.tooltip = "Legt fest, an welchen Monitor das Videosignal im Vollbildmodus gesendet wird."
Settings.Drivers.Video.Format = "Format"
Settings.Drivers.Video.ExclusiveMode.tooltip = "
Bewirkt, dass der Vollbildmodus alle Monitore übernimmt.
Dadurch funktioniert die adaptive Synchronisierung besser und die Eingabeverzögerung wird verringert.
Benutzer, die mehrere Monitore verwenden, sollten diese Option jedoch deaktivieren.
Hinweis: Der Direct3D-Exklusivmodus beachtet auch nicht den gewünschten Monitor.
"
Settings.Drivers.Video.Synchronize.tooltip = "
Wartet, bis die Grafikkarte bereit ist, bevor Einzelbilder gerendert werden.
Eliminiert ausgelassene oder doppelte Einzelbilder, kann aber das Audiosignal verzerren.
Mit dieser Option wird empfohlen, die Audiosynchronisation zu deaktivieren,
und die dynamische Ratensteuerung zu aktivieren. Oder passen Sie alternativ
die Option “Audioversatz” an, um Pufferunter-/-überläufe zu reduzieren.
"
Settings.Drivers.Video.GpuSync = "GPU-Synchronisation"
Settings.Drivers.Video.GpuSync.tooltip = "
(Nur OpenGL-Treiber)
Bewirkt, dass die GPU wartet, bis Frames vollständig gerendert sind.
Im besten Fall kann dies bis zu einem Einzelbild bei der Eingabeverzögerung beseitigen.
Allerdings ist dies mit einem Leistungsverlust von etwa 20% verbunden.
Sie sollten diese Option deaktivieren, wenn Sie es nicht für notwendig halten.
"
Settings.Drivers.Audio.failedToInitialize = "Initialisierung des [|]-Audiotreibers fehlgeschlagen"
Settings.Drivers.Audio.OutputDevice = "Ausgabegerät"
Settings.Drivers.Audio.SampleRate = "Abtastrate"
Settings.Drivers.Audio.Latency = "Verzögerung"
Settings.Drivers.Audio.ExclusiveMode.tooltip = "
(Nur WASAPI-Treiber)
Übernimmt die exklusive Kontrolle über das Soundkartengerät.
Dies kann die Audioverzögerung erheblich reduzieren.
Allerdings werden dadurch Töne von allen anderen Anwendungen blockiert.
"
Settings.Drivers.Audio.Synchronize.tooltip = "
Wartet, bis die Soundkarte bereit ist, bevor Samples ausgegeben werden.
Eliminiert Audioverzerrungen, kann aber das Videosignal verzerren.
Mit dieser Option wird empfohlen, die Videosynchronisation zu deaktivieren.
Die besten Ergebnisse erzielen Sie, wenn Sie diese Option mit einem adaptiven Sync-Monitor verwenden.
"
Settings.Drivers.Audio.DynamicRate = "Dynamische Rate"
Settings.Drivers.Audio.DynamicRate.tooltip = "
(Nur OSS-, XAudio2-, waveOut-Treiber)
Passt die Audiofrequenz dynamisch um kleine Beträge an.
Verwenden Sie dies mit aktivierter Bildsynchronisation und deaktivierter Audiosynchronisation.
Dies kann perfektes, flüssiges Video und sauberes Audio erzeugen,
aber nur, wenn die Bildwiederholfrequenz Ihres Monitors richtig eingestellt ist:
60 Hz für NTSC-Spiele und 50 Hz für PAL-Spiele.
"
Settings.Drivers.Input.failedToInitialize = "Initialisierung des [|]-Eingabetreibers fehlgeschlagen"
Settings.Drivers.Input.Reload.tooltip = "
Ein Treiber-Neuladen kann verwendet werden, um Hotplugged-Geräte zu erkennen.
Dies ist nützlich für APIs, die keine Auto-Hotplug-Unterstützung bieten,
wie z. B. DirectInput und SDL.
"
Settings.Drivers.syncModePresets = "Voreinstellungen für den Synchronisationsmodus"
Settings.Drivers.syncModePresets.requirements = "
Adaptive Synchronisation: Erfordert einen G-Sync- oder FreeSync-Monitor.
Dynamische Ratensteuerung: Erfordert die Übereinstimmung der Bildwiederholraten von Monitor und SNES.
"
Settings.Drivers.syncModePresets.AdaptiveSync = "Adaptive Synchronisation"
Settings.Drivers.syncModePresets.AdaptiveSync.failure = "
Die aktuelle Treiberkonfiguration ist leider nicht mit dem adaptiven Synchronisationsmodus kompatibel.
Adaptive Synchronisation erfordert die Unterstützung der Audiosynchronisation.
"
Settings.Drivers.syncModePresets.AdaptiveSync.success = "
Adaptive Synchronisation funktioniert am besten im exklusiven Vollbildmodus.
Verwenden Sie die niedrigste Audioverzögerungseinstellung, die Ihr System bewältigen kann.
Ein G-Sync- oder FreeSync-Monitor ist erforderlich.
Adaptive Synchronisation muss in Ihrem Treibereinstellungsmenü aktiviert sein.
"
Settings.Drivers.syncModePresets.DynamicRateControl = "Dynamische Ratensteuerung"
Settings.Drivers.syncModePresets.DynamicRateControl.failure = "
Die aktuelle Treiberkonfiguration ist leider nicht mit dem Modus “Dynamische Ratensteuerung” kompatibel.
Die dynamische Ratensteuerung erfordert eine Videosynchronisation und die Unterstützung von dynamischen Audioraten.
"
Settings.Drivers.syncModePresets.DynamicRateControl.success = "
Die dynamische Ratensteuerung erfordert, dass Ihr Monitor mit folgenden Bildfrequenzen läuft:
60 Hz für NTSC-Spiele, 50 Hz für PAL-Spiele.
Verwenden Sie die niedrigste Audioverzögerungseinstellung, die Ihr System bewältigen kann.
"
Settings.BuiltinHotkeys.CheckAll = "Alle auswählen"
Settings.BuiltinHotkeys.UncheckAll = "Alle abwählen"
Tools = "Werkzeuge"
Tools.SaveState = "Speichere Zwischenstand"
Tools.SaveState.Slot = "Platz"
Tools.SaveState.Slot.Empty = "leer"
Tools.LoadState = "Lade Zwischenstand"
Tools.LoadState.SelectedStateSlot = "Ausgewählter Zwischenstands-Platz"
Tools.LoadState.UndoLastSave = "Letzte Speicherung rückgängig machen"
Tools.LoadState.RedoLastUndo = "Letztes Rückgängigmachen wiederholen"
Tools.LoadState.RemoveAllStates = "Alle Zwischenstände entfernen"
Tools.LoadState.RemoveAllStates.confirm.title = "Schnelle Zwischenstände entfernen?"
Tools.LoadState.RemoveAllStates.confirm = "Sind Sie sicher, dass Sie alle schnellen Zwischenstände für dieses Spiel dauerhaft entfernen möchten?"
Tools.Speed = "Geschwindigkeit"
Tools.Speed.Slowest = "Am langsamsten"
Tools.Speed.Slow = "Langsam"
Tools.Speed.Normal = "Normal"
Tools.Speed.Fast = "Schnell"
Tools.Speed.Fastest = "Am schnellsten"
Tools.RunMode = "Betriebsmodus"
Tools.RunMode.Normal = "Normal"
Tools.RunMode.PauseEmulation = "Emulation pausieren"
Tools.RunMode.FrameAdvance = "Einzelbildvorlauf"
Tools.Movie = "Film"
Tools.Movie.Play = "Abspielen"
Tools.Movie.Record = "Aufnehmen"
Tools.Movie.ResetAndRecord = "Zurücksetzen und aufnehmen"
Tools.Movie.Stop = "Anhalten"
Tools.TakeScreenshot = "Screenshot aufnehmen"
Tools.CheatFinder = "Cheat-Finder"
Tools.CheatFinder.Address = "Addresse"
Tools.CheatFinder.Value = "Wert"
Tools.CheatFinder.Scan = "Suche"
Tools.CheatFinder.All = "Alle"
Tools.CheatEditor = "Cheat-Editor"
Tools.CheatEditor.remove.confirm.title = "Cheat(s) entfernen?"
Tools.CheatEditor.remove.confirm = "Sind Sie sicher, dass Sie den/die ausgewählten Cheat(s) dauerhaft entfernen möchten?"
Tools.CheatEditor.Codes = "Code(s)"
Tools.CheatEditor.Enable = "Aktivieren"
Tools.CheatEditor.SelectAll = "Alle auswählen"
Tools.CheatEditor.UnselectAll = "Alle abwählen"
Tools.CheatEditor.AddCheats = "Cheats hinzufügen"
Tools.CheatEditor.AddCheat = "Cheat hinzufügen"
Tools.CheatEditor.EditCheat = "Cheat bearbeiten"
Tools.CheatEditor.Edit = "Bearbeiten"
Tools.CheatEditor.FindCheats = "Cheats finden"
Tools.CheatEditor.noCheats = "Es wurden leider keine Cheats für dieses Spiel gefunden."
Tools.CheatEditor.EnableCheats = "Cheats aktivieren"
Tools.CheatEditor.EnableCheats.tooltip = "
Master-Aktivierung für alle Cheat-Codes.
Wenn diese Option nicht aktiviert ist, sind keine Cheat-Codes aktiv.
Verwenden Sie dies, um Spielbereiche zu umgehen, die Probleme mit Cheats haben.
"
Tools.CheatEditor.EnableCheats.disabled = "Alle Cheat-Codes sind deaktiviert"
Tools.CheatEditor.EnableCheats.enabled = "Aktive Cheat-Codes sind aktiviert"
Tools.CheatEditor.invalidFormat = "Ungültige(r) Code(s), bitte nur Codes in folgendem Format verwenden"
Tools.StateManager = "Zwischenstandsverwaltung"
Tools.StateManager.Category = "Kategorie"
Tools.StateManager.Category.ManagedStates = "Verwaltete Zwischenstände"
Tools.StateManager.Category.QuickStates = "Schnelle Zwischenstände"
Tools.StateManager.QuickStates.Redo = "Wiederholen"
Tools.StateManager.QuickStates.Undo = "Rückgängig"
Tools.StateManager.Preview = "Vorschau"
Tools.StateManager.AddState = "Zwischenstand hinzufügen"
Tools.StateManager.RenameState = "Zwischenstand umbenennen"
Tools.StateManager.remove.confirm.title = "Zwischenstand/-stände entfernen?"
Tools.StateManager.remove.confirm = "Sind Sie sicher, dass Sie den/die ausgewählten Zwischenstand/-stände dauerhaft entfernen möchten?"
Tools.ManifestViewer = "Manifest-Betrachter"
Tools.ManifestViewer.Manifest = "Manifest"
Game.VerifiedGameOpened = "Geprüftes Spiel geöffnet"
Game.GameOpened = "Spiel geöffnet"
Game.GameClosed = "Spiel geschlossen"
Game.GameReset = "Spiel zurückgesetzt"
Game.AndPatchApplied = " und Patch angewendet"
Game.GameOpeningCancelled = "Öffnen des Spiels abgebrochen"
Game.unverifiedGameWarning.title = "Ungeprüftes Abbild des Spiel"
Game.unverifiedGameWarning = "
Warnung: Dieses Spielabbild ist nicht geprüft.
Die Ausführung *kann* ein Sicherheitsrisiko darstellen.
Möchten Sie das Spiel trotzdem ausführen?
"
Game.unverifiedGameWarning.alwaysQuestion.title = "Warnung deaktivieren?"
Game.unverifiedGameWarning.alwaysQuestion = "Möchten Sie die Warnung, wenn Sie versuchen, nicht verifizierte Spiele auszuführen, deaktivieren?"
Program.Paused = "Pausiert"
Program.Unloaded = "Entladen"
Program.CapturedScreenshot = "Screenshot aufgenommen"
Program.Open.MissingRequiredData = "Erforderliche Daten fehlen"
Program.Load.LoadGameBoyRom = "Game Boy ROM laden"
Program.Load.GameBoyRoms = "Game Boy ROMs"
Program.Load.LoadBsMemoryRom = "BS-Speicher ROM laden"
Program.Load.BsMemoryRoms = "BS-Speicher ROMs"
Program.Load.LoadSufamiTurboRomSlot = "Sufami Turbo ROM - Platz laden"
Program.Load.SufamiTurboRoms = "Sufami Turbo ROMs"
About.Version = "Version"
About.Copyright = "Copyright"
About.License = "Lizenz"
About.Website = "Webseite"
About.SameBoy.description = "Super Game Boy Emulator"
About.Bsnes.description = "Super Nintendo Emulator"
About.Bsnes.copyright = "byuu et al"
About.Bsnes.license = "GPLv3 oder neuer"
Browser.OpenSnesRom = "SNES ROM öffnen"
Browser.SnesRoms = "SNES ROMs"
Browser.AllFiles = "Alle Dateien"
Browser.Select = "Auswählen"
Browser.SelectFolder = "Ordner auswählen"
Browser.ChooseFolder = "Wähle einen Ordner aus"
Browser.ShowHidden = "Versteckte Dateien anzeigen"
Browser.OpenFile = "Datei öffnen"
Browser.OpenFiles = "Dateien öffnen"
Browser.OpenFolder = "Ordner öffnen"
Browser.OpenObject = "Objekt öffnen"
Browser.Rename.EnterNewFolderName = "Geben Sie den neuen Ordnernamen ein"
Browser.Rename.EnterNewFileName = "Geben Sie den neuen Dateinamen ein"
Browser.Rename.FailedToRenameFolder = "Ordner konnte nicht umbenannt werden."
Browser.Rename.FailedToRenameFile = "Datei konnte nicht umbenannt werden."
Browser.Create = "Erstellen"
Browser.Create.EnterName = "Geben Sie einen Namen ein"
Browser.CreateFolder = "Ordner erstellen"
Browser.CreateFolder.EnterNewFolderName = "Geben Sie einen Namen für den neuen Ordner ein"
Browser.Delete.DeleteSelected = "Auswahl löschen"
Browser.Delete.FailedToDelete = "| konnte nicht gelöscht werden. Weiter versuchen, die verbleibenden Elemente zu entfernen?"
Browser.Delete.confirm = "Sind Sie sicher, dass Sie das/die | permanent löschen wollen"
Browser.Delete.confirm.item = "ausgewählte Element"
Browser.Delete.confirm.items = "ausgewählten Elemente"
Browser.SaveFile = "Datei speichern"
Browser.SaveFile.fileExists.title = "Datei überschreiben?"
Browser.SaveFile.fileExists = "Datei existiert bereits. Soll sie überschrieben werden?"
StatusIcon.verifiedRom.tooltip = "
Dies ist ein bekanntes, sauberes Spielabbild.
Die PCB-Emulation ist 100% genau.
"
StatusIcon.unverifiedRom.tooltip = "
Es handelt sich nicht um ein geprüftes Spielabbild.
Die PCB-Emulation verlässt sich auf Heuristiken.
"
ResetDrivers.message.title = "Treiber zurücksetzen"
ResetDrivers.message = "
Die Hardware-Treiber wurden gemäß der Kommandozeilenoption `--resetdrivers` zurückgesetzt.
Bitte konfigurieren Sie die Treiber im Fenster “Einstellungen” → “Treiber”, das sich nun öffnet, neu.
"
Rewind.HistoryExhausted = "Rückspulhistorie erschöpft"
States.incompatibleFormat = "[|] hat ein inkompatibles Format"
States.Loaded = "Geladen"
States.NotFound = "[|] nicht gefunden"
States.FailedToSave = "Speicherung von [|] fehlgeschlagen"
States.UnableToWriteToDisk = "[|] konnte nicht auf das Speichermedium geschrieben werden"
States.Saved = "[|] gespeichert"
Patch.ipsWarning = "
(Sie sehen diese Aufforderung, weil IPS ein schreckliches Patch-Dateiformat ist und sich niemand darüber einigen kann, ob SNES-ROMs mit einem Header versehen werden sollten oder nicht.
Bitte erwägen Sie, den Patch-Autor zu bitten, stattdessen BPS-Patches zu verwenden.)
Erwartet dieser IPS-Patch, dass er auf ein Headered-ROM angewendet wird?
Wenn Sie sich nicht sicher sind, versuchen Sie “Nein”, und wenn es nicht funktioniert, versuchen Sie es erneut mit “Ja”.
"
Patch.ensureHeaderless = "Bitte stellen Sie sicher, dass Sie das richtige (headerlose) ROM für diesen Patch verwenden."
Movies.PlayMovie = "Film abspielen"
Movies.Movies = "Filme"
Movies.playbackStarted = "Filmwiedergabe gestartet"
Movies.playbackStopped = "Filmwiedergabe angehalten"
Movies.formatNotSupported = "Das Filmformat wird nicht unterstützt"
Movies.recordingStarted = "Filmaufnahme gestartet"
Movies.SaveMovie = "Film speichern"
Movies.MovieRecorded = "Film aufgenommen"
Movies.MovieNotRecorded = "Film nicht aufgenommen"
Movies.cantRecord = "Film konnte nicht aufgenommen werden"
Devices.Gamepad = "Gamepad"
Devices.Mouse = "Maus"
Hotkeys.ToggleMouseCapture = "Mauseinfangen umschalten"
Hotkeys.ToggleCheatCodes = "Cheat-Codes umschalten"
Hotkeys.Rewind = "Zurückspulen"
Hotkeys.LoadUndoState = "Rückgängig-Zwischenstand laden"
Hotkeys.LoadRedoState = "Wiederholen-Zwischenstand laden"
Hotkeys.DecrementStateSlot = "Zwischenstand-Platz verringern"
Hotkeys.IncrementStateSlot = "Zwischenstand-Platz erhöhen"
Hotkeys.FastForward = "Vorspulen"
Hotkeys.FrameAdvance = "Einzelbildvorlauf"
Hotkeys.DecreaseHDMode7 = "HD Mode 7 verringern"
Hotkeys.IncreaseHDMode7 = "HD Mode 7 erhöhen"
Hotkeys.ToggleSupersampling = "Supersampling umschalten"
Hotkeys.ResetEmulation = "Emulation zurücksetzen"
Hotkeys.QuitEmulator = "Emulator verlassen"

View file

@ -0,0 +1,618 @@
Common.Yes = "Yes"
Common.No = "No"
Common.Cancel = "Cancel"
Common.Always = "Always"
Common.AreYouSure = "Are you sure?"
Common.Open = "Open"
Common.Load = "Load"
Common.Save = "Save"
Common.Add = "Add"
Common.Remove = "Remove"
Common.Delete = "Delete"
Common.Rename = "Rename"
Common.Reset = "Reset"
Common.Clear = "Clear"
Common.None = "None"
Common.Disabled = "Disabled"
Common.Default = "Default"
Common.Name = "Name"
Common.Date = "Date"
Common.Success = "Success"
Common.Failure = "Failure"
Common.Error = "Error"
Common.Warning = "Warning"
Common.Auto = "Auto"
Common.Video = "Video"
Common.Audio = "Audio"
Common.Fps = "fps"
Common.Hz = "Hz"
Common.number = "#"
Menu.File = "File"
Menu.File.OpenGame = "Open Game"
Menu.File.OpenRecentGame = "Open Recent Game"
Menu.File.OpenRecentGame.ClearList = "Clear List"
Menu.File.OpenRecentGame.ClearList.confirm.title = "Clear the list of recent games?"
Menu.File.OpenRecentGame.ClearList.confirm = "Are you sure you want to clear the list of recent games?"
Menu.File.OpenRecentGame.NoRecentGames = "No Recent Games"
Menu.File.CloseGame = "Close Game"
Menu.File.Exit = "Exit"
Menu.System = "System"
Menu.System.ControllerPort = "Controller Port"
Menu.System.ExpansionPort = "Expansion Port"
Menu.Settings.Size = "Size"
Menu.Settings.Size.ShrinkWindowToSize = "Shrink Window to Size"
Menu.Settings.Size.CenterWindow = "Center Window"
Menu.Settings.Size.FullScreenMode = "Full-Screen Mode"
Menu.Settings.Size.PseudoFullScreenMode = "Pseudo-Full-Screen Mode"
Menu.Settings.Output = "Output"
Menu.Settings.Output.Center = "Center"
Menu.Settings.Output.PixelPerfect = "Pixel-Perfect"
Menu.Settings.Output.Scale = "Scale"
Menu.Settings.Output.Stretch = "Stretch"
Menu.Settings.Output.AspectRatioCorrection = "Aspect-Ratio Correction"
Menu.Settings.Output.parInsteadOfAr = "8:7 PAR instead of 4:3 AR"
Menu.Settings.Output.ShowOverscanArea = "Show Overscan Area"
Menu.Settings.Output.scalingInfo = "Scaling Info in Status Bar"
Menu.Settings.Output.HiresBlurEmulation = "Hires Blur Emulation"
Menu.Settings.Filter = "Filter"
Menu.Settings.Shader = "Shader"
Menu.Settings.Shader.Blur = "Blur"
Menu.Settings.MuteAudio = "Mute Audio"
Menu.Settings.ShowStatusBar = "Show Status Bar"
Menu.Settings.OpenSettingsFolder = "Open Settings Folder"
Menu.Help = "Help"
Menu.Help.About = "About |"
Settings = "Settings"
Settings.Common.Assign = "Assign"
Settings.Common.AssignLowercase = "assign"
Settings.Common.Mapping = "Mapping"
Settings.Common.MappingAssigned = "Mapping assigned."
Settings.Common.PressKeyOrButtonForMapping = "Press a key or button for mapping"
Settings.Common.FrameLowercase = "frame"
Settings.Video.ColorAdjustment = "Color Adjustment"
Settings.Video.Luminance = "Luminance"
Settings.Video.Saturation = "Saturation"
Settings.Video.Gamma = "Gamma"
Settings.Video.DimVideoWhenIdle = "Dim video when idle"
Settings.Video.DimVideoWhenIdle.tooltip = "Darkens the video to indicate that the emulation is not running."
Settings.Video.DrawSnowEffectWhenIdle = "Draw snow effect when idle"
Settings.Audio.Effects = "Effects"
Settings.Audio.Skew = "Skew"
Settings.Audio.Skew.tooltip = "
Adjusts the audio frequency by the skew amount (in Hz).
This is essentially static rate control.
First, enable both video and audio sync.
Then, raise or lower this value to try to reduce errors.
One direction will help video, but hurt audio.
The other direction will do the reverse.
The idea is to find the best middle ground.
You should leave this at 0 when using dynamic rate control.
"
Settings.Audio.Volume = "Volume"
Settings.Audio.Volume.tooltip = "
Adjusts the audio output volume.
You should not use values above 100%, if possible!
If you do, audio clipping distortion can occur.
"
Settings.Audio.Balance = "Balance"
Settings.Audio.Balance.tooltip = "
Pans audio to the left (lower values) or right (higher values).
50% (centered) is the recommended setting.
"
Settings.Audio.MuteWhenUnfocused = "Mute when unfocused"
Settings.Input = "Input"
Settings.Input.WhenFocusIsLost = "When focus is lost"
Settings.Input.WhenFocusIsLost.PauseEmulation = "Pause emulation"
Settings.Input.WhenFocusIsLost.BlockInput = "Block input"
Settings.Input.WhenFocusIsLost.AllowInput = "Allow input"
Settings.Input.Port = "Port"
Settings.Input.Device = "Device"
Settings.Input.TurboRate = "Turbo rate"
Settings.Input.TurboRate.tooltip = "The number of frames to wait between toggling turbo buttons."
Settings.Input.MouseLeft = "Mouse Left"
Settings.Input.MouseMiddle = "Mouse Middle"
Settings.Input.MouseRight = "Mouse Right"
Settings.Input.MouseXAxis = "Mouse X-axis"
Settings.Input.MouseYAxis = "Mouse Y-axis"
Settings.Hotkeys = "Hotkeys"
Settings.Hotkeys.CombinationalLogic = "Combinational logic"
Settings.Hotkeys.CombinationalLogic.tooltip = "
Determines whether all or any mappings must be pressed to activate hotkeys.
Use “AND” logic if you want keyboard combinations such as Ctrl+F to trigger a hotkey.
Use “OR” logic if you want both a keyboard and joypad to trigger the same hotkey.
"
Settings.Hotkeys.CombinationalLogic.And = "AND"
Settings.Hotkeys.CombinationalLogic.And.tooltip = "Every mapping must be pressed to activate a given hotkey."
Settings.Hotkeys.CombinationalLogic.Or = "OR"
Settings.Hotkeys.CombinationalLogic.Or.tooltip = "Any mapping can be pressed to activate a given hotkey."
Settings.Hotkeys.Rewind.enableFirst = "Please enable rewind support in “Settings” → “Emulator” first"
Settings.BuiltinHotkeys = "Hotkeys (built-in)"
Settings.Paths = "Paths"
Settings.Paths.Games = "Games"
Settings.Paths.Patches = "Patches"
Settings.Paths.Saves = "Saves"
Settings.Paths.Cheats = "Cheats"
Settings.Paths.States = "States"
Settings.Paths.Screenshots = "Screenshots"
Settings.Paths.LastRecentlyUsed = "last recently used"
Settings.Paths.SameAsLoadedGame = "same as loaded game"
Settings.Emulator = "Emulator"
Settings.Emulator.General = "General"
Settings.Emulator.General.warnOnUnverifiedGames = "Warn when opening games that have not been verified"
Settings.Emulator.General.autoSaveMemory = "Save memory periodically"
Settings.Emulator.General.autoSaveStateOnUnload = "Save undo state when unloading games"
Settings.Emulator.General.AutoResumeOnLoad = "Resume on load"
Settings.Emulator.General.UseNativeFileDialogs = "Use native file dialogs"
Settings.Emulator.FastForward = "Fast Forward"
Settings.Emulator.FastForward.FrameSkip = "Frame skip"
Settings.Emulator.FastForward.FrameSkip.tooltip = "
Sets how many frames to skip while fast forwarding.
Frame skipping allows a higher maximum fast forwarding frame rate.
"
Settings.Emulator.FastForward.FrameSkip.Frames2to4 = "| frames"
Settings.Emulator.FastForward.FrameSkip.Frames = "| frames"
Settings.Emulator.FastForward.Limiter = "Limiter"
Settings.Emulator.FastForward.Limiter.tooltip = "Sets the maximum speed when fast forwarding."
Settings.Emulator.FastForward.mute = "Mute while fast forwarding"
Settings.Emulator.Rewind = "Rewind"
Settings.Emulator.Rewind.Frequency = "Frequency"
Settings.Emulator.Rewind.Frequency.everyFrames = "Every | frames"
Settings.Emulator.Rewind.Length = "Length"
Settings.Emulator.Rewind.Length.states = "| states"
Settings.Emulator.Rewind.mute = "Mute while rewinding"
Settings.Enhancements = "Enhancements"
Settings.Enhancements.FastMode = "Fast mode"
Settings.Enhancements.RunAhead = "Run-Ahead"
Settings.Enhancements.RunAhead.Frames = "frames"
Settings.Enhancements.RunAhead.One = "One"
Settings.Enhancements.RunAhead.Two = "Two"
Settings.Enhancements.RunAhead.Three = "Three"
Settings.Enhancements.RunAhead.Four = "Four"
Settings.Enhancements.Overclocking = "Overclocking"
Settings.Enhancements.Ppu.Video = "video"
Settings.Enhancements.Ppu.Deinterlace = "Deinterlace"
Settings.Enhancements.Ppu.NoSpriteLimit = "No sprite limit"
Settings.Enhancements.hdMode7.FastPpuOnly = "fast PPU only"
Settings.Enhancements.hdMode7.Scale = "Scale"
Settings.Enhancements.hdMode7.PerspectiveCorrection = "Perspective correction"
Settings.Enhancements.hdMode7.Supersampling = "Supersampling"
Settings.Enhancements.hdMode7.HdToSdMosaic = "HD→SD Mosaic"
Settings.Enhancements.Dsp.Audio = "audio"
Settings.Enhancements.Dsp.CubicInterpolation = "Cubic interpolation"
Settings.Enhancements.Coprocessors = "Coprocessors"
Settings.Enhancements.Coprocessors.PreferHle = "Prefer high-level emulation (HLE)"
Settings.Enhancements.Coprocessors.PreferHle.tooltip = "
When checked, less accurate HLE emulation will always be used when available.
When unchecked, HLE will only be used when low-level-emulation (LLE) firmware is missing.
"
Settings.Enhancements.GameEnhancements = "Game Enhancements"
Settings.Enhancements.GameEnhancements.Hotfixes = "Hotfixes"
Settings.Enhancements.GameEnhancements.Hotfixes.tooltip = "
Even commercially licensed and officially released software sometimes shipped with bugs.
This option will correct certain issues that occurred even on real hardware.
"
Settings.Compatibility = "Compatibility"
Settings.Compatibility.entropy = "Entropy (randomization)"
Settings.Compatibility.entropy.None.tooltip = "
All memory and registers are initialized to constant values at startup.
Use this for compatibility with very old demoscene homebrew games.
"
Settings.Compatibility.entropy.Low = "Low"
Settings.Compatibility.entropy.Low.tooltip = "
All memory is randomized with repeating patterns, all registers are randomized at startup.
Use this for the most accurate representation of a real SNES.
"
Settings.Compatibility.entropy.High = "High"
Settings.Compatibility.entropy.High.tooltip = "
All memory and registers are randomized as much as possible.
Use this when developing new SNES software to ensure
maximum compatibility with real hardware.
"
Settings.Compatibility.cpu.Processor = "processor"
Settings.Compatibility.cpu.FastMath = "Fast math"
Settings.Compatibility.cpu.FastMath.tooltip = "
CPU multiplication and division take time to complete on a real SNES.
Older emulators did not simulate these delays, and provided results immediately.
Some older ROM hacks do not wait for math operations to complete and need this hack.
"
Settings.Compatibility.ppu.Video = "video"
Settings.Compatibility.ppu.NoVramBlocking = "No video-memory (VRAM) blocking"
Settings.Compatibility.ppu.NoVramBlocking.tooltip = "
This option enables emulating a bug in older releases of ZSNES and Snes9x where VRAM blocking was not emulated.
A few older ROM hacks relied on this behavior, and will render graphics incorrectly if not enabled.
Not only is this extremely inaccurate to real hardware, it also hurts the speed of the fast PPU.
Do not enable this option unless you need to play a game that works incorrectly otherwise.
"
Settings.Compatibility.dsp.Audio = "audio"
Settings.Compatibility.dsp.EchoShadowRam = "Echo shadow RAM"
Settings.Compatibility.dsp.EchoShadowRam.tooltip = "
This option enables emulating a bug in ZSNES where echo RAM was treated as separate from APU RAM.
Many older ROM hacks for “Super Mario World” relied on this behavior, and will crash without enabling this.
It is, however, extremely inaccurate to real hardware and should not be enabled unless required.
"
Settings.Drivers = "Drivers"
Settings.Drivers.Driver = "Driver"
Settings.Drivers.Change = "Change"
Settings.Drivers.Reload = "Reload"
Settings.Drivers.ExclusiveMode = "Exclusive mode"
Settings.Drivers.Synchronize = "Synchronize"
Settings.Drivers.ActiveDriver = "Active driver"
Settings.Drivers.changeConfirm.title = "Change driver?"
Settings.Drivers.changeConfirm = "
Warning: incompatible drivers may cause the application to crash.
It is highly recommended you unload your game first to be safe.
Do you wish to proceed with the driver change now anyway?
"
Settings.noteGameRestart = "Note: some settings do not take effect until reloading the game."
Settings.Drivers.Video.failedToInitialize = "Failed to initialize [|] video driver"
Settings.Drivers.Video.FullScreenMonitor = "Full-screen monitor"
Settings.Drivers.Video.FullScreenMonitor.tooltip = "Sets which monitor video is sent to in full-screen mode."
Settings.Drivers.Video.Format = "Format"
Settings.Drivers.Video.ExclusiveMode.tooltip = "
Causes full-screen mode to take over all monitors.
This allows adaptive sync to work better and reduces input latency.
However, multi-monitor users should turn this option off.
Note: Direct3D exclusive mode also does not honor the requested monitor.
"
Settings.Drivers.Video.Synchronize.tooltip = "
Waits for the video card to be ready before rendering frames.
Eliminates dropped or duplicated frames, but can distort audio.
With this option, its recommended to disable audio sync,
and enable dynamic rate control. Or alternatively, adjust
the audio skew option to reduce buffer under/overflows.
"
Settings.Drivers.Video.GpuSync = "GPU sync"
Settings.Drivers.Video.GpuSync.tooltip = "
(OpenGL driver only)
Causes the GPU to wait until frames are fully rendered.
In the best case, this can remove up to one frame of input lag.
However, it incurs a roughly 20% performance penalty.
You should disable this option unless you find it necessary.
"
Settings.Drivers.Audio.failedToInitialize = "Failed to initialize [|] audio driver"
Settings.Drivers.Audio.OutputDevice = "Output device"
Settings.Drivers.Audio.SampleRate = "Sample Rate"
Settings.Drivers.Audio.Latency = "Latency"
Settings.Drivers.Audio.ExclusiveMode.tooltip = "
(WASAPI driver only)
Acquires exclusive control of the sound card device.
This can significantly reduce audio latency.
However, it will block sounds from all other applications.
"
Settings.Drivers.Audio.Synchronize.tooltip = "
Waits for the audio card to be ready before outputting samples.
Eliminates audio distortion, but can distort video.
With this option, its recommended to disable video sync.
For best results, use this with an adaptive sync monitor.
"
Settings.Drivers.Audio.DynamicRate = "Dynamic rate"
Settings.Drivers.Audio.DynamicRate.tooltip = "
(OSS, XAudio2, waveOut drivers only)
Dynamically adjusts the audio frequency by tiny amounts.
Use this with video sync enabled, and audio sync disabled.
This can produce perfectly smooth video and clean audio,
but only if your monitor refresh rate is set correctly:
60 Hz for NTSC games, and 50 Hz for PAL games.
"
Settings.Drivers.Input.failedToInitialize = "Failed to initialize [|] input driver"
Settings.Drivers.Input.Reload.tooltip = "
A driver reload can be used to detect hotplugged devices.
This is useful for APIs that lack auto-hotplug support,
such as DirectInput and SDL.
"
Settings.Drivers.syncModePresets = "Synchronization Mode Presets"
Settings.Drivers.syncModePresets.requirements = "
Adaptive Sync: requires G-Sync or FreeSync monitor.
Dynamic Rate Control: requires monitor and SNES refresh rates to match.
"
Settings.Drivers.syncModePresets.AdaptiveSync = "Adaptive Sync"
Settings.Drivers.syncModePresets.AdaptiveSync.failure = "
Sorry, the current driver configuration is not compatible with adaptive sync mode.
Adaptive sync requires audio-synchronization support.
"
Settings.Drivers.syncModePresets.AdaptiveSync.success = "
Adaptive sync works best in exclusive full-screen mode.
Use the lowest audio latency setting your system can manage.
A G-Sync or FreeSync monitor is required.
Adaptive sync must be enabled in your driver settings panel.
"
Settings.Drivers.syncModePresets.DynamicRateControl = "Dynamic Rate Control"
Settings.Drivers.syncModePresets.DynamicRateControl.failure = "
Sorry, the current driver configuration is not compatible with the dynamic-rate-control mode.
Dynamic rate control requires video synchronization and audio-dynamic-rate support.
"
Settings.Drivers.syncModePresets.DynamicRateControl.success = "
Dynamic rate control requires your monitor to be running at:
60 Hz refresh rate for NTSC games, 50 Hz refresh rate for PAL games.
Use the lowest audio latency setting your system can manage.
"
Settings.BuiltinHotkeys.CheckAll = "Check All"
Settings.BuiltinHotkeys.UncheckAll = "Uncheck All"
Tools = "Tools"
Tools.SaveState = "Save State"
Tools.SaveState.Slot = "Slot"
Tools.SaveState.Slot.Empty = "empty"
Tools.LoadState = "Load State"
Tools.LoadState.SelectedStateSlot = "Selected state slot"
Tools.LoadState.UndoLastSave = "Undo Last Save"
Tools.LoadState.RedoLastUndo = "Redo Last Undo"
Tools.LoadState.RemoveAllStates = "Remove All States"
Tools.LoadState.RemoveAllStates.confirm.title = "Remove quick states?"
Tools.LoadState.RemoveAllStates.confirm = "Are you sure you want to permanently remove all quick states for this game?"
Tools.Speed = "Speed"
Tools.Speed.Slowest = "Slowest"
Tools.Speed.Slow = "Slow"
Tools.Speed.Normal = "Normal"
Tools.Speed.Fast = "Fast"
Tools.Speed.Fastest = "Fastest"
Tools.RunMode = "Run Mode"
Tools.RunMode.Normal = "Normal"
Tools.RunMode.PauseEmulation = "Pause Emulation"
Tools.RunMode.FrameAdvance = "Frame Advance"
Tools.Movie = "Movie"
Tools.Movie.Play = "Play"
Tools.Movie.Record = "Record"
Tools.Movie.ResetAndRecord = "Reset and Record"
Tools.Movie.Stop = "Stop"
Tools.TakeScreenshot = "Take Screenshot"
Tools.CheatFinder = "Cheat Finder"
Tools.CheatFinder.Address = "Address"
Tools.CheatFinder.Value = "Value"
Tools.CheatFinder.Scan = "Scan"
Tools.CheatFinder.All = "All"
Tools.CheatEditor = "Cheat Editor"
Tools.CheatEditor.remove.confirm.title = "Remove cheat(s)?"
Tools.CheatEditor.remove.confirm = "Are you sure you want to permanently remove the selected cheat(s)?"
Tools.CheatEditor.Codes = "Code(s)"
Tools.CheatEditor.Enable = "Enable"
Tools.CheatEditor.SelectAll = "Select All"
Tools.CheatEditor.UnselectAll = "Unselect All"
Tools.CheatEditor.AddCheats = "Add Cheats"
Tools.CheatEditor.AddCheat = "Add Cheat"
Tools.CheatEditor.EditCheat = "Edit Cheat"
Tools.CheatEditor.Edit = "Edit"
Tools.CheatEditor.FindCheats = "Find Cheats"
Tools.CheatEditor.noCheats = "Sorry, no cheats were found for this game."
Tools.CheatEditor.EnableCheats = "Enable Cheats"
Tools.CheatEditor.EnableCheats.tooltip = "
Master enable for all cheat codes.
When unchecked, no cheat codes will be active.
Use this to bypass game areas that have problems with cheats.
"
Tools.CheatEditor.EnableCheats.disabled = "All cheat codes are disabled"
Tools.CheatEditor.EnableCheats.enabled = "Active cheat codes are enabled"
Tools.CheatEditor.invalidFormat = "Invalid code(s), please only use codes in the following format"
Tools.StateManager = "State Manager"
Tools.StateManager.Category = "Category"
Tools.StateManager.Category.ManagedStates = "Managed States"
Tools.StateManager.Category.QuickStates = "Quick States"
Tools.StateManager.QuickStates.Redo = "Redo"
Tools.StateManager.QuickStates.Undo = "Undo"
Tools.StateManager.Preview = "Preview"
Tools.StateManager.AddState = "Add State"
Tools.StateManager.RenameState = "Rename State"
Tools.StateManager.remove.confirm.title = "Remove state(s)?"
Tools.StateManager.remove.confirm = "Are you sure you want to permanently remove the selected state(s)?"
Tools.ManifestViewer = "Manifest Viewer"
Tools.ManifestViewer.Manifest = "Manifest"
Game.VerifiedGameOpened = "Verified game opened"
Game.GameOpened = "Game opened"
Game.GameClosed = "Game closed"
Game.GameReset = "Game reset"
Game.AndPatchApplied = " and patch applied"
Game.GameOpeningCancelled = "Game opening cancelled"
Game.unverifiedGameWarning.title = "Unverified game image"
Game.unverifiedGameWarning = "
Warning: this game image is unverified.
Running it *may* be a security risk.
Do you wish to run the game anyway?
"
Game.unverifiedGameWarning.alwaysQuestion.title = "Disable warning?"
Game.unverifiedGameWarning.alwaysQuestion = "Do you wish to disable warning when trying to run unverified games?"
Program.Paused = "Paused"
Program.Unloaded = "Unloaded"
Program.CapturedScreenshot = "Captured screenshot"
Program.Open.MissingRequiredData = "Missing required data"
Program.Load.LoadGameBoyRom = "Load Game Boy ROM"
Program.Load.GameBoyRoms = "Game Boy ROMs"
Program.Load.LoadBsMemoryRom = "Load BS Memory ROM"
Program.Load.BsMemoryRoms = "BS Memory ROMs"
Program.Load.LoadSufamiTurboRomSlot = "Load Sufami Turbo ROM Slot"
Program.Load.SufamiTurboRoms = "Sufami Turbo ROMs"
About.Version = "Version"
About.Copyright = "Copyright"
About.License = "License"
About.Website = "Website"
About.SameBoy.description = "Super Game Boy emulator"
About.Bsnes.description = "Super Nintendo emulator"
About.Bsnes.copyright = "byuu et al"
About.Bsnes.license = "GPLv3 or later"
Browser.OpenSnesRom = "Open SNES ROM"
Browser.SnesRoms = "SNES ROMs"
Browser.AllFiles = "All Files"
Browser.Select = "Select"
Browser.SelectFolder = "Select Folder"
Browser.ChooseFolder = "Choose a folder"
Browser.ShowHidden = "Show Hidden"
Browser.OpenFile = "Open File"
Browser.OpenFiles = "Open Files"
Browser.OpenFolder = "Open Folder"
Browser.OpenObject = "Open Object"
Browser.Rename.EnterNewFolderName = "Enter the new folder name"
Browser.Rename.EnterNewFileName = "Enter the new file name"
Browser.Rename.FailedToRenameFolder = "Failed to rename folder."
Browser.Rename.FailedToRenameFile = "Failed to rename file."
Browser.Create = "Create"
Browser.Create.EnterName = "Enter a name"
Browser.CreateFolder = "Create Folder"
Browser.CreateFolder.EnterNewFolderName = "Enter a new-folder name"
Browser.Delete.DeleteSelected = "Delete Selected"
Browser.Delete.FailedToDelete = "Failed to delete |. Continue trying to remove remaining items?"
Browser.Delete.confirm = "Are you sure you want to permanently delete the |"
Browser.Delete.confirm.item = "selected item"
Browser.Delete.confirm.items = "selected items"
Browser.SaveFile = "Save File"
Browser.SaveFile.fileExists.title = "Overwrite file?"
Browser.SaveFile.fileExists = "File already exists. Overwrite it?"
StatusIcon.verifiedRom.tooltip = "
This is a known clean game image.
PCB emulation is 100% accurate.
"
StatusIcon.unverifiedRom.tooltip = "
This is not a verified game image.
PCB emulation is relying on heuristics.
"
ResetDrivers.message.title = "Reset drivers"
ResetDrivers.message = "
Hardware drivers have been reset according to the `--resetdrivers` command-line option.
Please reconfigure drivers in the “Settings” → “Drivers” window that will now open.
"
Rewind.HistoryExhausted = "Rewind history exhausted"
States.incompatibleFormat = "[|] is in incompatible format"
States.Loaded = "Loaded"
States.NotFound = "[|] not found"
States.FailedToSave = "Failed to save [|]"
States.UnableToWriteToDisk = "Unable to write [|] to disk"
States.Saved = "Saved [|]"
Patch.ipsWarning = "
(Youre seeing this prompt because IPS is a terrible patch-file format, and nobody can agree on whether SNES ROMs should be headered or not.
Please consider asking the patch author to use BPS patches instead.)
Does this IPS patch expect to be applied to a headered ROM?
If youre not sure, try “No”, and if it fails to work, try again with “Yes”.
"
Patch.ensureHeaderless = "Please ensure you are using the correct (headerless) ROM for this patch."
Movies.PlayMovie = "Play Movie"
Movies.Movies = "Movies"
Movies.playbackStarted = "Movie playback started"
Movies.playbackStopped = "Movie playback stopped"
Movies.formatNotSupported = "Movie format is not supported"
Movies.recordingStarted = "Movie recording started"
Movies.SaveMovie = "Save Movie"
Movies.MovieRecorded = "Movie recorded"
Movies.MovieNotRecorded = "Movie not recorded"
Movies.cantRecord = "Movie could not be recorded"
Devices.Gamepad = "Gamepad"
Devices.Mouse = "Mouse"
Hotkeys.ToggleMouseCapture = "Toggle Mouse Capture"
Hotkeys.ToggleCheatCodes = "Toggle Cheat Codes"
Hotkeys.Rewind = "Rewind"
Hotkeys.LoadUndoState = "Load Undo State"
Hotkeys.LoadRedoState = "Load Redo State"
Hotkeys.DecrementStateSlot = "Decrement State Slot"
Hotkeys.IncrementStateSlot = "Increment State Slot"
Hotkeys.FastForward = "Fast Forward"
Hotkeys.FrameAdvance = "Frame Advance"
Hotkeys.DecreaseHDMode7 = "Decrease HD Mode 7"
Hotkeys.IncreaseHDMode7 = "Increase HD Mode 7"
Hotkeys.ToggleSupersampling = "Toggle Supersampling"
Hotkeys.ResetEmulation = "Reset Emulation"
Hotkeys.QuitEmulator = "Quit Emulator"

View file

@ -0,0 +1,622 @@
Translation.language = "Spanish"
Translation.author = "Juan Muro Diego (JuanchoES)"
Translation.version = "1.3.3"
Common.Yes = "Sí"
Common.No = "No"
Common.Cancel = "Cancelar"
Common.Always = "Siempre"
Common.AreYouSure = "¿Estás seguro?"
Common.Open = "Abrir"
Common.Load = "Cargar"
Common.Save = "Guardar"
Common.Add = "Añadir"
Common.Remove = "Quitar"
Common.Delete = "Borrar"
Common.Rename = "Renombrar"
Common.Reset = "Reiniciar"
Common.Clear = "Limpiar"
Common.None = "Nada"
Common.Disabled = "Desabilitado"
Common.Default = "Por defecto"
Common.Name = "Nombre"
Common.Date = "Fecha"
Common.Success = "Éxito"
Common.Failure = "Fallo"
Common.Error = "Error"
Common.Warning = "Atención"
Common.Auto = "Automático"
Common.Video = "Vídeo"
Common.Audio = "Audio"
Common.Fps = "fps"
Common.Hz = "Hz"
Common.number = "#"
Menu.File = "Archivo"
Menu.File.OpenGame = "Abrir juego"
Menu.File.OpenRecentGame = "Abrir juego reciente"
Menu.File.OpenRecentGame.ClearList = "Limpiar lista"
Menu.File.OpenRecentGame.ClearList.confirm.title = "¿Limpiar lista de juegos recientes?"
Menu.File.OpenRecentGame.ClearList.confirm = "¿Estás seguro que quieres borrar toda la lista de juegos recientes?"
Menu.File.OpenRecentGame.NoRecentGames = "No hay juegos recientes"
Menu.File.CloseGame = "Cerrar juego"
Menu.File.Exit = "Salir"
Menu.System = "Sistema"
Menu.System.ControllerPort = "Puerto de mando"
Menu.System.ExpansionPort = "Puerto de expansión"
Menu.Settings.Size = "Tamaño"
Menu.Settings.Size.ShrinkWindowToSize = "Ajustar la ventana a la pantalla"
Menu.Settings.Size.CenterWindow = "Centrar ventana"
Menu.Settings.Size.FullScreenMode = "Modo de pantalla completa"
Menu.Settings.Size.PseudoFullScreenMode = "Seudo-modo de pantalla completa"
Menu.Settings.Output = "Salida"
Menu.Settings.Output.Center = "Centrar"
Menu.Settings.Output.PixelPerfect = "Pixel-Perfect"
Menu.Settings.Output.Scale = "Escalar"
Menu.Settings.Output.Stretch = "Estrechar"
Menu.Settings.Output.AspectRatioCorrection = "Relación de aspecto corregida"
Menu.Settings.Output.parInsteadOfAr = "8:7 PAR en vez de 4:3 AR"
Menu.Settings.Output.ShowOverscanArea = "Mostrar area de sobreescaneo"
Menu.Settings.Output.scalingInfo = "Escalar información en la barra de estado"
Menu.Settings.Output.HiresBlurEmulation = "Activar la emulacion de difuminado"
Menu.Settings.Filter = "Filtros"
Menu.Settings.Shader = "Sombreadores"
Menu.Settings.Shader.Blur = "Difuminado"
Menu.Settings.MuteAudio = "Silenciar audio"
Menu.Settings.ShowStatusBar = "Mostrar la barra de estado"
Menu.Settings.OpenSettingsFolder = "Abrir la carpeta de configuración"
Menu.Help = "Ayuda"
Menu.Help.About = "Acerca de |"
Settings = "Ajustes"
Settings.Common.Assign = "Asignar"
Settings.Common.AssignLowercase = "asignar"
Settings.Common.Mapping = "Botón"
Settings.Common.MappingAssigned = "Botón asignado."
Settings.Common.PressKeyOrButtonForMapping = "Presiona una tecla o botón para asignar una acción"
Settings.Common.FrameLowercase = "frame"
Settings.Video.ColorAdjustment = "Ajuste de color"
Settings.Video.Luminance = "Brillo"
Settings.Video.Saturation = "Saturación"
Settings.Video.Gamma = "Gama"
Settings.Video.DimVideoWhenIdle = "Oscurecer pantalla cuando no se esté usando el emulador"
Settings.Video.DimVideoWhenIdle.tooltip = "Oscurece la pantalla para indicar que el emulador no está siendo usado."
Settings.Video.DrawSnowEffectWhenIdle = "Efecto de nieve cuando no se esté usando el emulador"
Settings.Audio.Effects = "Efectos"
Settings.Audio.Skew = "Frecuencia"
_Settings.Audio.Skew.tooltip = "
Adjusts the audio frequency by the skew amount (in Hz).
This is essentially static rate control.
First, enable both video and audio sync.
Then, raise or lower this value to try to reduce errors.
One direction will help video, but hurt audio.
The other direction will do the reverse.
The idea is to find the best middle ground.
You should leave this at 0 when using dynamic rate control.
"
Settings.Audio.Volume = "Volumen"
Settings.Audio.Volume.tooltip = "
Ajusta el volumen de salida.
You should not use values above 100%, if possible!
If you do, audio clipping distortion can occur.
"
Settings.Audio.Balance = "Balance"
_Settings.Audio.Balance.tooltip = "
Pans audio to the left (lower values) or right (higher values).
50% (centered) is the recommended setting.
"
Settings.Audio.MuteWhenUnfocused = "Silenciar cuando el emulador esté minimizado"
Settings.Input = "Mapeado"
Settings.Input.WhenFocusIsLost = "Cuando esté minimizado"
Settings.Input.WhenFocusIsLost.PauseEmulation = "Pausar emulación"
Settings.Input.WhenFocusIsLost.BlockInput = "Bloquear acción"
Settings.Input.WhenFocusIsLost.AllowInput = "Permitir acción"
Settings.Input.Port = "Puerto"
Settings.Input.Device = "Dispositivo"
Settings.Input.TurboRate = "Velocidad del turbo"
Settings.Input.TurboRate.tooltip = "El número de frames de espera entre activar los botones turbo."
Settings.Input.MouseLeft = "Clic izquierdo"
Settings.Input.MouseMiddle = "Boton central"
Settings.Input.MouseRight = "Clic derecho"
Settings.Input.MouseXAxis = "Ratón X-axis"
Settings.Input.MouseYAxis = "Ratón Y-axis"
Settings.Hotkeys = "Teclas de acceso rápido"
Settings.Hotkeys.CombinationalLogic = "Combinación de teclas/botones"
_Settings.Hotkeys.CombinationalLogic.tooltip = "
Determines whether all or any mappings must be pressed to activate hotkeys.
Use “AND” logic if you want keyboard combinations such as Ctrl+F to trigger a hotkey.
Use “OR” logic if you want both a keyboard and joypad to trigger the same hotkey.
"
Settings.Hotkeys.CombinationalLogic.And = "Y"
_Settings.Hotkeys.CombinationalLogic.And.tooltip = "Every mapping must be pressed to activate a given hotkey."
Settings.Hotkeys.CombinationalLogic.Or = "O"
_Settings.Hotkeys.CombinationalLogic.Or.tooltip = "Any mapping can be pressed to activate a given hotkey."
Settings.Hotkeys.Rewind.enableFirst = "Por favor, habilita la opción de rebobinado en “Ajustes” → “Emulador” primero."
Settings.BuiltinHotkeys = "Teclas de acceso rápido (incorporadas)"
Settings.Paths = "Directorios"
Settings.Paths.Games = "Juegos"
Settings.Paths.Patches = "Parches"
Settings.Paths.Saves = "Archivos de guardado"
Settings.Paths.Cheats = "Trucos"
Settings.Paths.States = "Archivos de cargado"
Settings.Paths.Screenshots = "Pantallazos"
Settings.Paths.LastRecentlyUsed = "Usado recientemente"
Settings.Paths.SameAsLoadedGame = "Igual que juego cargado"
Settings.Emulator = "Emulador"
Settings.Emulator.General = "General"
Settings.Emulator.General.warnOnUnverifiedGames = "Advertir cuando se abran juegos que no han sido verificados"
Settings.Emulator.General.autoSaveMemory = "Guardar memoria periódicamente"
Settings.Emulator.General.autoSaveStateOnUnload = "Guardar un archivo de cargado cuando se quita el juego"
Settings.Emulator.General.AutoResumeOnLoad = "Resumir en carga"
Settings.Emulator.General.UseNativeFileDialogs = "Usar dialogos de archivos nativos"
Settings.Emulator.FastForward = "Avance rápido"
Settings.Emulator.FastForward.FrameSkip = "Omitir fotograma"
_Settings.Emulator.FastForward.FrameSkip.tooltip = "
Sets how many frames to skip while fast forwarding.
Frame skipping allows a higher maximum fast forwarding frame rate.
"
Settings.Emulator.FastForward.FrameSkip.Frames2to4 = "| fotogramas"
Settings.Emulator.FastForward.FrameSkip.Frames = "| fotogramas"
Settings.Emulator.FastForward.Limiter = "Limitador"
_Settings.Emulator.FastForward.Limiter.tooltip = "Sets the maximum speed when fast forwarding."
Settings.Emulator.FastForward.mute = "Silenciar sonido cuando se esté avanzando fotogramas"
Settings.Emulator.Rewind = "Rebobinado"
Settings.Emulator.Rewind.Frequency = "Frecuencia"
Settings.Emulator.Rewind.Frequency.everyFrames = "Cada | fotogramas"
Settings.Emulator.Rewind.Length = "Longitud"
Settings.Emulator.Rewind.Length.states = "| estados"
Settings.Emulator.Rewind.mute = "Silenciar sonido cuando se esté rebobinando"
Settings.Enhancements = "Mejoras"
Settings.Enhancements.FastMode = "Modo rápido"
Settings.Enhancements.RunAhead = "Adelantar fotogramas"
Settings.Enhancements.RunAhead.Frames = "fotogramas"
Settings.Enhancements.RunAhead.One = "Un"
Settings.Enhancements.RunAhead.Two = "Dos"
Settings.Enhancements.RunAhead.Three = "Tres"
Settings.Enhancements.RunAhead.Four = "Cuatro"
Settings.Enhancements.Overclocking = "Overclocking"
Settings.Enhancements.Ppu.Video = "vídeo"
Settings.Enhancements.Ppu.Deinterlace = "Desentrelazar"
Settings.Enhancements.Ppu.NoSpriteLimit = "Sin limite de sprites"
Settings.Enhancements.hdMode7.FastPpuOnly = "solo con modo rápido (PPU)"
Settings.Enhancements.hdMode7.Scale = "Escala"
Settings.Enhancements.hdMode7.PerspectiveCorrection = "Correción de perspectiva"
Settings.Enhancements.hdMode7.Supersampling = "Supermuestreo"
Settings.Enhancements.hdMode7.HdToSdMosaic = "HD→SD Mosaico"
Settings.Enhancements.Dsp.Audio = "audio"
Settings.Enhancements.Dsp.CubicInterpolation = "Interpolación cúbica"
Settings.Enhancements.Coprocessors = "Coprocesadores"
Settings.Enhancements.Coprocessors.PreferHle = "Preferir el nivel alto de emulación (HLE)"
_Settings.Enhancements.Coprocessors.PreferHle.tooltip = "
When checked, less accurate HLE emulation will always be used when available.
When unchecked, HLE will only be used when low-level-emulation (LLE) firmware is missing.
"
Settings.Enhancements.GameEnhancements = "Mejoras de juego"
Settings.Enhancements.GameEnhancements.Hotfixes = "Arreglos"
_Settings.Enhancements.GameEnhancements.Hotfixes.tooltip = "
Even commercially licensed and officially released software sometimes shipped with bugs.
This option will correct certain issues that occurred even on real hardware.
"
Settings.Compatibility = "Compatibilidad"
Settings.Compatibility.entropy = "Entropía (aleatorización)"
_Settings.Compatibility.entropy.None.tooltip = "
All memory and registers are initialized to constant values at startup.
Use this for compatibility with very old demoscene homebrew games.
"
Settings.Compatibility.entropy.Low = "Baja"
_Settings.Compatibility.entropy.Low.tooltip = "
All memory is randomized with repeating patterns, all registers are randomized at startup.
Use this for the most accurate representation of a real SNES.
"
Settings.Compatibility.entropy.High = "Alta"
_Settings.Compatibility.entropy.High.tooltip = "
All memory and registers are randomized as much as possible.
Use this when developing new SNES software to ensure
maximum compatibility with real hardware.
"
Settings.Compatibility.cpu.Processor = "procesador"
Settings.Compatibility.cpu.FastMath = "Matemática rápida"
_Settings.Compatibility.cpu.FastMath.tooltip = "
CPU multiplication and division take time to complete on a real SNES.
Older emulators did not simulate these delays, and provided results immediately.
Some older ROM hacks do not wait for math operations to complete and need this hack.
"
Settings.Compatibility.ppu.Video = "vídeo"
Settings.Compatibility.ppu.NoVramBlocking = "Sin bloqueo de VRAM"
_Settings.Compatibility.ppu.NoVramBlocking.tooltip = "
This option enables emulating a bug in older releases of ZSNES and Snes9x where VRAM blocking was not emulated.
A few older ROM hacks relied on this behavior, and will render graphics incorrectly if not enabled.
Not only is this extremely inaccurate to real hardware, it also hurts the speed of the fast PPU.
Do not enable this option unless you need to play a game that works incorrectly otherwise.
"
Settings.Compatibility.dsp.Audio = "audio"
Settings.Compatibility.dsp.EchoShadowRam = "Sombra de eco RAM"
Settings.Compatibility.dsp.EchoShadowRam.tooltip = "
This option enables emulating a bug in ZSNES where echo RAM was treated as separate from APU RAM.
Many older ROM hacks for “Super Mario World” relied on this behavior, and will crash without enabling this.
It is, however, extremely inaccurate to real hardware and should not be enabled unless required.
"
Settings.Drivers = "Drivers"
Settings.Drivers.Driver = "Driver"
Settings.Drivers.Change = "Cambiar"
Settings.Drivers.Reload = "Reiniciar"
Settings.Drivers.ExclusiveMode = "Modo exclusivo"
Settings.Drivers.Synchronize = "Sincronizar"
Settings.Drivers.ActiveDriver = "Driver activo"
Settings.Drivers.changeConfirm.title = "¿Cambiar driver?"
Settings.Drivers.changeConfirm = "
Advertencia: Drivers incompatibles pueden causar que el emulador crashee.
Es altamente recomendable que cierres primero el juego antes de aplicar.
¿De verdad quieres proceder a cambiar los drivers de todas formas?
"
Settings.noteGameRestart = "Nota: algunos ajustes no tendrán efecto hasta que reinicies el juego."
Settings.Drivers.Video.failedToInitialize = "Fallo al iniciar [|] driver de vídeo"
Settings.Drivers.Video.FullScreenMonitor = "Monitor de pantalla completa"
_Settings.Drivers.Video.FullScreenMonitor.tooltip = "Sets which monitor video is sent to in full-screen mode."
Settings.Drivers.Video.Format = "Formato"
_Settings.Drivers.Video.ExclusiveMode.tooltip = "
Causes full-screen mode to take over all monitors.
This allows adaptive sync to work better and reduces input latency.
However, multi-monitor users should turn this option off.
Note: Direct3D exclusive mode also does not honor the requested monitor.
"
_Settings.Drivers.Video.Synchronize.tooltip = "
Waits for the video card to be ready before rendering frames.
Eliminates dropped or duplicated frames, but can distort audio.
With this option, its recommended to disable audio sync,
and enable dynamic rate control. Or alternatively, adjust
the audio skew option to reduce buffer under/overflows.
"
Settings.Drivers.Video.GpuSync = "Sincronización de GPU"
_Settings.Drivers.Video.GpuSync.tooltip = "
(OpenGL driver only)
Causes the GPU to wait until frames are fully rendered.
In the best case, this can remove up to one frame of input lag.
However, it incurs a roughly 20% performance penalty.
You should disable this option unless you find it necessary.
"
Settings.Drivers.Audio.failedToInitialize = "Fallo al iniciar [|] driver de audio"
Settings.Drivers.Audio.OutputDevice = "Dispositivo de salida"
Settings.Drivers.Audio.SampleRate = "Frecuencia de muestreo"
Settings.Drivers.Audio.Latency = "Latencia"
Settings.Drivers.Audio.ExclusiveMode.tooltip = "
(WASAPI driver only)
Acquires exclusive control of the sound card device.
This can significantly reduce audio latency.
However, it will block sounds from all other applications.
"
_Settings.Drivers.Audio.Synchronize.tooltip = "
Waits for the audio card to be ready before outputting samples.
Eliminates audio distortion, but can distort video.
With this option, its recommended to disable video sync.
For best results, use this with an adaptive sync monitor.
"
Settings.Drivers.Audio.DynamicRate = "Frecuencia dinámica"
_Settings.Drivers.Audio.DynamicRate.tooltip = "
(OSS, XAudio2, waveOut drivers only)
Dynamically adjusts the audio frequency by tiny amounts.
Use this with video sync enabled, and audio sync disabled.
This can produce perfectly smooth video and clean audio,
but only if your monitor refresh rate is set correctly:
60 Hz for NTSC games, and 50 Hz for PAL games.
"
Settings.Drivers.Input.failedToInitialize = "Fallo al iniciar [|] fallo de input"
_Settings.Drivers.Input.Reload.tooltip = "
A driver reload can be used to detect hotplugged devices.
This is useful for APIs that lack auto-hotplug support,
such as DirectInput and SDL.
"
Settings.Drivers.syncModePresets = "Presets de modos de sincronización"
Settings.Drivers.syncModePresets.requirements = "
Adaptive Sync: Requiere un monitor G-Sync o FreeSync.
Dynamic Rate Control: Requiere que la tasa de refresco de tu monitor y la SNES coincidan.
"
Settings.Drivers.syncModePresets.AdaptiveSync = "Adaptive Sync"
_Settings.Drivers.syncModePresets.AdaptiveSync.failure = "
Sorry, the current driver configuration is not compatible with adaptive sync mode.
Adaptive sync requires audio-synchronization support.
"
_Settings.Drivers.syncModePresets.AdaptiveSync.success = "
Adaptive sync works best in exclusive full-screen mode.
Use the lowest audio latency setting your system can manage.
A G-Sync or FreeSync monitor is required.
Adaptive sync must be enabled in your driver settings panel.
"
_Settings.Drivers.syncModePresets.DynamicRateControl = "Dynamic Rate Control"
_Settings.Drivers.syncModePresets.DynamicRateControl.failure = "
Sorry, the current driver configuration is not compatible with the dynamic-rate-control mode.
Dynamic rate control requires video synchronization and audio-dynamic-rate support.
"
_Settings.Drivers.syncModePresets.DynamicRateControl.success = "
Dynamic rate control requires your monitor to be running at:
60 Hz refresh rate for NTSC games, 50 Hz refresh rate for PAL games.
Use the lowest audio latency setting your system can manage.
"
Settings.BuiltinHotkeys.CheckAll = "Chequear todo"
Settings.BuiltinHotkeys.UncheckAll = "Deschequear todo"
Tools = "Herramientas"
Tools.SaveState = "Salvar estado"
Tools.SaveState.Slot = "Espacio de guardado"
Tools.SaveState.Slot.Empty = "vacio"
Tools.LoadState = "Cargar estado"
Tools.LoadState.SelectedStateSlot = "Seleccionar espacio de guardado"
Tools.LoadState.UndoLastSave = "Deshacer espacio de guardado"
Tools.LoadState.RedoLastUndo = "Rehacer último espacio de guardado"
Tools.LoadState.RemoveAllStates = "Quitar todos los espacios"
Tools.LoadState.RemoveAllStates.confirm.title = "¿Quitar todos los espacios rápidos?"
Tools.LoadState.RemoveAllStates.confirm = "¿Estás seguro de que quieres borrar todos los espacios rapidos de este juego?"
Tools.Speed = "Velocidad"
Tools.Speed.Slowest = "La más lenta"
Tools.Speed.Slow = "Lenta"
Tools.Speed.Normal = "Normal"
Tools.Speed.Fast = "Rapida"
Tools.Speed.Fastest = "La más rapida"
Tools.RunMode = "Modo de ejecución"
Tools.RunMode.Normal = "Normal"
Tools.RunMode.PauseEmulation = "Pausar emulación"
Tools.RunMode.FrameAdvance = "Avanze de fotograma"
Tools.Movie = "Película"
Tools.Movie.Play = "Play"
Tools.Movie.Record = "Grabar"
Tools.Movie.ResetAndRecord = "Reiniciar y grabar"
Tools.Movie.Stop = "Parar"
Tools.TakeScreenshot = "Hacer una captura de pantalla"
Tools.CheatFinder = "Buscador de trucos"
Tools.CheatFinder.Address = "Dirección"
Tools.CheatFinder.Value = "Valor"
Tools.CheatFinder.Scan = "Escanear"
Tools.CheatFinder.All = "Todo"
Tools.CheatEditor = "Editor de trucos"
Tools.CheatEditor.remove.confirm.title = "¿Quitar truco(s)?"
Tools.CheatEditor.remove.confirm = "Estás seguro de que quieres quitar todos los trucos seleccionado(s)?"
Tools.CheatEditor.Codes = "Codigo(s)"
Tools.CheatEditor.Enable = "Activar"
Tools.CheatEditor.SelectAll = "Seleccionar todos"
Tools.CheatEditor.UnselectAll = "Deseleccionar todos"
Tools.CheatEditor.AddCheats = "Añadir trucos"
Tools.CheatEditor.AddCheat = "Añadir truco"
Tools.CheatEditor.EditCheat = "Editar truco"
Tools.CheatEditor.Edit = "Editar"
Tools.CheatEditor.FindCheats = "Buscar trucos"
Tools.CheatEditor.noCheats = "Lo siento, no se encontraron trucos para este juego."
Tools.CheatEditor.EnableCheats = "Activar trucos"
_Tools.CheatEditor.EnableCheats.tooltip = "
Master enable for all cheat codes.
When unchecked, no cheat codes will be active.
Use this to bypass game areas that have problems with cheats.
"
Tools.CheatEditor.EnableCheats.disabled = "Todos los codigos de trucos estan desactivados"
Tools.CheatEditor.EnableCheats.enabled = "Todos los codigos de trucos activos estan encendidos"
Tools.CheatEditor.invalidFormat = "Codigo(s) invalidos, por favor usa solo trucos en el siguiente formato"
Tools.StateManager = "Administrador de estados"
Tools.StateManager.Category = "Categoría"
Tools.StateManager.Category.ManagedStates = "Gestión de estados"
Tools.StateManager.Category.QuickStates = "Estados rápidos"
Tools.StateManager.QuickStates.Redo = "Rehacer"
Tools.StateManager.QuickStates.Undo = "Deshacer"
Tools.StateManager.Preview = "Previsualización"
Tools.StateManager.AddState = "Añadir estado"
Tools.StateManager.RenameState = "Renombrar estado"
Tools.StateManager.remove.confirm.title = "¿Quitar estado(s)?"
Tools.StateManager.remove.confirm = "¿Estas seguro de que quieres borar permanentemente los estados seleccionados?"
Tools.ManifestViewer = "Visor de manifiestos"
Tools.ManifestViewer.Manifest = "Manifiesto"
Game.VerifiedGameOpened = "Juego verificado abierto"
Game.GameOpened = "Juego abierto"
Game.GameClosed = "Juego cerrado"
Game.GameReset = "Juego reiniciado"
Game.AndPatchApplied = " y con parche aplicado"
Game.GameOpeningCancelled = "Apertura del juego cancelada"
Game.unverifiedGameWarning.title = "Imagen de juego sin verificar"
Game.unverifiedGameWarning = "
Advertencia: este juego no está verificado.
Abrirlo *puede* llevar a un riesgo de seguridad.
¿Quieres abrirlo igualmente?
"
Game.unverifiedGameWarning.alwaysQuestion.title = "¿Desabilitar advertencia?"
Game.unverifiedGameWarning.alwaysQuestion = "¿De verdad quieres desactivar la advertencia cuando inicias juegos sin verificar?"
Program.Paused = "Pausado"
Program.Unloaded = "Descargado"
Program.CapturedScreenshot = "Pantallazo capturado"
Program.Open.MissingRequiredData = "Faltan datos obligatorios"
Program.Load.LoadGameBoyRom = "Cargar ROM de Game Boy"
Program.Load.GameBoyRoms = "ROMs de Game Boy"
Program.Load.LoadBsMemoryRom = "Cargar ROM de BS Memory"
Program.Load.BsMemoryRoms = "ROMs de BS Memory"
Program.Load.LoadSufamiTurboRomSlot = "Cargar ROM de Sufami Turbo Espacio"
Program.Load.SufamiTurboRoms = "ROMs de Sufami Turbo"
About.Version = "Versión"
About.Copyright = "Copyright"
About.License = "Licencia"
About.Website = "Página web"
About.SameBoy.description = "Emulador de Super Game Boy"
About.Bsnes.description = "Emulador de Super Nintendo"
About.Bsnes.copyright = "byuu et al"
About.Bsnes.license = "GPLv3 o posterior"
Browser.OpenSnesRom = "Abrir ROM de SNES"
Browser.SnesRoms = "ROMs de SNES"
Browser.AllFiles = "Todos los archivos"
Browser.Select = "Seleccionar"
Browser.SelectFolder = "Seleccionar carpeta"
Browser.ChooseFolder = "Elegir una carpeta"
Browser.ShowHidden = "Mostrar ocultos"
Browser.OpenFile = "Abrir archivo"
Browser.OpenFiles = "Abrir archivos"
Browser.OpenFolder = "Abrir carpeta"
Browser.OpenObject = "Abrir objeto"
Browser.Rename.EnterNewFolderName = "Pon el nombre de la nueva carpeta"
Browser.Rename.EnterNewFileName = "Pon el nombre de el nuevo archivo"
Browser.Rename.FailedToRenameFolder = "Fallo al renombrar carpeta."
Browser.Rename.FailedToRenameFile = "Fallo al renombrar archivo."
Browser.Create = "Crear"
Browser.Create.EnterName = "Pon un nombre"
Browser.CreateFolder = "Crear una carpeta"
Browser.CreateFolder.EnterNewFolderName = "Pon un nuevo nombre de carpeta"
Browser.Delete.DeleteSelected = "Borrar seleccionados"
Browser.Delete.FailedToDelete = "Fallo al intentar borrar |. ¿Continuar intentando borrar los items restantes?"
Browser.Delete.confirm = "Estás seguro de que quieres borrar el |"
Browser.Delete.confirm.item = "items seleccionados"
Browser.Delete.confirm.items = "items seleccionados"
Browser.SaveFile = "Guardar archivo"
Browser.SaveFile.fileExists.title = "¿Sobreescribir archivo?"
Browser.SaveFile.fileExists = "El archivo ya existe. ¿Deseas sobreescribirlo?"
_StatusIcon.verifiedRom.tooltip = "
This is a known clean game image.
PCB emulation is 100% accurate.
"
_StatusIcon.unverifiedRom.tooltip = "
This is not a verified game image.
PCB emulation is relying on heuristics.
"
ResetDrivers.message.title = "Drivers reiniciados"
_ResetDrivers.message = "
Hardware drivers have been reset according to the `--resetdrivers` command-line option.
Please reconfigure drivers in the “Settings” → “Drivers” window that will now open.
"
Rewind.HistoryExhausted = "Historial de rebobinado agotado"
States.incompatibleFormat = "[|] esta en un formato incompatible"
States.Loaded = "Cargado"
States.NotFound = "[|] no encontrado"
States.FailedToSave = "Fallo al guardar [|]"
States.UnableToWriteToDisk = "Incapaz de escribir [|] al disco"
States.Saved = "Guardado [|]"
Patch.ipsWarning = "
(Estás viendo este mensaje porque IPS es un formato de archivo de parche terrible y nadie puede ponerse de acuerdo sobre si las ROMs de SNES deben encabezarse o no.
Considere pedirle al autor del parche que utilice parches BPS en su lugar.)
¿Se espera que este parche IPS se aplique a una ROM con encabezado?
Si no está seguro, pruebe con “No” y, si no funciona, vuelva a intentarlo con “Sí”.
"
Patch.ensureHeaderless = "Por favor, asegurese que este usando el juego (sin encabezado) correcto para este parche."
Movies.PlayMovie = "Iniciar película"
Movies.Movies = "Películas"
Movies.playbackStarted = "Reproducción de película iniciada"
Movies.playbackStopped = "Reproducción de película parada"
Movies.formatNotSupported = "El formato de la película no es compatible"
Movies.recordingStarted = "Grabado de película empezada"
Movies.SaveMovie = "Salvar película"
Movies.MovieRecorded = "Película grabada"
Movies.MovieNotRecorded = "Película no grabada"
Movies.cantRecord = "La película no pudo ser grabada"
Devices.Gamepad = "Mando"
Devices.Mouse = "Ratón"
Hotkeys.ToggleMouseCapture = "Habilitar captura de ratón"
Hotkeys.ToggleCheatCodes = "Habilitar codigos de trucos"
Hotkeys.Rewind = "Rebobinar"
Hotkeys.LoadUndoState = "Cargar estado desecho"
Hotkeys.LoadRedoState = "Cargar estado rehecho"
_Hotkeys.DecrementStateSlot = "Decrement State Slot"
_Hotkeys.IncrementStateSlot = "Increment State Slot"
Hotkeys.FastForward = "Avance rápido"
Hotkeys.FrameAdvance = "Avanze de frame"
Hotkeys.DecreaseHDMode7 = "Disminuir modo 7 HD"
Hotkeys.IncreaseHDMode7 = "Incrementar modo 7 HD"
Hotkeys.ToggleSupersampling = "Activar Supermuestreo"
Hotkeys.ResetEmulation = "Reiniciar emulación"
Hotkeys.QuitEmulator = "Salir del emulador"

View file

@ -0,0 +1,663 @@
Translation.author = "KarLKoX-FR"
Translation.version = "1.3.3"
Common.Yes = "Oui"
Common.No = "Non"
Common.Cancel = "Annuler"
Common.Always = "Toujours"
Common.AreYouSure = "Êtes vous sûr ?"
Common.Open = "Ouvrir"
Common.Load = "Charger"
Common.Save = "Sauver"
Common.Add = "Ajouter"
Common.Remove = "Enlever"
Common.Delete = "Supprimer"
Common.Rename = "Renommer"
Common.Reset = "Réinitialiser"
Common.Clear = "Effacer"
Common.None = "Aucun"
Common.Disabled = "Désactivé"
Common.Default = "Défaut"
Common.Name = "Nom"
Common.Date = "Date"
Common.Success = "Succès"
Common.Failure = "Échec"
Common.Error = "Erreur"
Common.Warning = "Avertissement"
Common.Auto = "Auto"
Common.Video = "Vidéo"
Common.Audio = "Audio"
Common.Fps = "ips"
Common.Hz = "Hz"
Common.number = "#"
Menu.File = "Fichier"
Menu.File.OpenGame = "Ouvrir jeu"
Menu.File.OpenRecentGame = "Ouvrir jeu récent"
Menu.File.OpenRecentGame.ClearList = "Effacer liste"
Menu.File.OpenRecentGame.ClearList.confirm.title = "Effacer la liste des jeux récents ?"
Menu.File.OpenRecentGame.ClearList.confirm = "Êtes vous sûr de vouloir effacer la liste des jeux récents ?"
Menu.File.OpenRecentGame.NoRecentGames = "Aucun jeux récents"
Menu.File.CloseGame = "Fermer jeu"
Menu.File.Exit = "Quitter"
Menu.System = "Système"
Menu.System.ControllerPort = "Port du contrôleur"
Menu.System.ExpansionPort = "Port dexpansion"
Menu.Settings.Size = "Taille"
Menu.Settings.Size.ShrinkWindowToSize = "Adapter la fenêtre aux dimensions de limage"
Menu.Settings.Size.CenterWindow = "Centrer la fenêtre"
Menu.Settings.Size.FullScreenMode = "Mode plein écran"
Menu.Settings.Size.PseudoFullScreenMode = "Mode pseudo-plein écran"
Menu.Settings.Output = "Sortie"
Menu.Settings.Output.Center = "Centrer"
Menu.Settings.Output.PixelPerfect = "Pixel-parfait"
Menu.Settings.Output.Scale = "Échelle"
Menu.Settings.Output.Stretch = "Étirer"
Menu.Settings.Output.AspectRatioCorrection = "Corriger le ratio de laspect"
Menu.Settings.Output.parInsteadOfAr = "8:7 PAR au lieu de lAR 4:3"
Menu.Settings.Output.ShowOverscanArea = "Afficher la zone de surbalayage (overscan)"
Menu.Settings.Output.scalingInfo = "Info déchelle dans la barre détat"
Menu.Settings.Output.HiresBlurEmulation = "Émulation du flou haute résolution"
Menu.Settings.Filter = "Filtrer"
Menu.Settings.Shader = "Shader"
Menu.Settings.Shader.Blur = "Flou"
Menu.Settings.MuteAudio = "Désactiver le son"
Menu.Settings.ShowStatusBar = "Afficher la barre détat"
Menu.Settings.OpenSettingsFolder = "Ouvrir le dossier des paramètres"
Menu.Help = "Aide"
Menu.Help.About = "À propos de |"
Settings = "Paramètres"
Settings.Common.Assign = "Affecter"
Settings.Common.AssignLowercase = "affecter"
Settings.Common.Mapping = "Mapping"
Settings.Common.MappingAssigned = "Mapping affecté."
Settings.Common.PressKeyOrButtonForMapping = "Appuyez sur une touche ou un bouton pour mapper"
Settings.Common.FrameLowercase = "image"
Settings.Video.ColorAdjustment = "Ajuster couleur"
Settings.Video.Luminance = "Luminosité"
Settings.Video.Saturation = "Saturation"
Settings.Video.Gamma = "Gamma"
Settings.Video.DimVideoWhenIdle = "Diminuez la luminosité de lécran lorsque lémulateur nest pas utilisé"
Settings.Video.DimVideoWhenIdle.tooltip = "Assombrir lécran pour indiquer que lémulateur nest pas utilisé."
Settings.Video.DrawSnowEffectWhenIdle = "Afficher leffet de neige lorsque lémulateur nest pas utilisé"
Settings.Audio.Effects = "Effets"
Settings.Audio.Skew = "Décalage du taux"
Settings.Audio.Skew.tooltip = "
Règle la fréquence audio par la valeur de décalage du taux (en Hz).
Il sagit essentiellement dun contrôle statique du taux déchantillonage.
Tout dabord, il faut activation la synchronisation vidéo et audio.
Ensuite, augmenter ou diminuer cette valeur afin de réduire les erreurs.
Une direction pourra aider la vidéo mais nuira à laudio.
Lautre sens fera linverse.
Lidée est de trouver le meilleur compromis.
Vous devriez laisser cette valeur à 0 lorsque vous utilisez le contrôle
du taux dynamique.
"
Settings.Audio.Volume = "Volume"
Settings.Audio.Volume.tooltip = "
Règle le volume de la sortie audio.
Si possible, il est déconseillé dutiliser une valeur au delà de 100% !
Si vous le faites, une distorsion par coupure audio peut se produire.
"
Settings.Audio.Balance = "Balance"
Settings.Audio.Balance.tooltip = "
Balance audio à gauche (valeurs les plus faibles)
ou à droite (valeurs les plus élevées).
50% (centré) est la valeur recommandée.
"
Settings.Audio.MuteWhenUnfocused = "Désactiver le son si perte de focus"
Settings.Input = "Entrée"
Settings.Input.WhenFocusIsLost = "Lorsque le focus est perdu"
Settings.Input.WhenFocusIsLost.PauseEmulation = "Suspendre lémulation"
Settings.Input.WhenFocusIsLost.BlockInput = "Bloquer lentrée"
Settings.Input.WhenFocusIsLost.AllowInput = "Autoriser lentrée"
Settings.Input.Port = "Port"
Settings.Input.Device = "Périphérique"
Settings.Input.TurboRate = "Vitesse du turbo"
Settings.Input.TurboRate.tooltip = "Le nombre dimages à attendre entre lactivation des boutons turbo."
Settings.Input.MouseLeft = "Clic gauche"
Settings.Input.MouseMiddle = "Clic milieu"
Settings.Input.MouseRight = "Clic droit"
Settings.Input.MouseXAxis = "Axe-X de la souris"
Settings.Input.MouseYAxis = "Axe-Y de la souris"
Settings.Hotkeys = "Raccourcis"
Settings.Hotkeys.CombinationalLogic = "Logique combinatoire"
Settings.Hotkeys.CombinationalLogic.tooltip = "
Détermine si tout ou partie des mappings doit être appuyé
pour activer les raccourcis.
Utilisez la logique « ET » si vous souhaitez une combinaison
de touche comme Ctrl+F pour déclencher le raccourcis.
Utilisez la logique « OU » si vous souhaitez que le clavier
et le joypad déclenchent tous les deux le même raccourcis.
"
Settings.Hotkeys.CombinationalLogic.And = "ET"
Settings.Hotkeys.CombinationalLogic.And.tooltip = "Chaque mapping doit être appuyé pour activer un raccourcis en particulier."
Settings.Hotkeys.CombinationalLogic.Or = "OU"
Settings.Hotkeys.CombinationalLogic.Or.tooltip = "Nimporte quel mapping peut être appuyé pour activer un raccourcis en particulier."
Settings.Hotkeys.Rewind.enableFirst = "Veuillez dabord activer la fonctionnalité de rembobinage dans le menu « Paramètres » → « Émulateur »"
Settings.BuiltinHotkeys = "Raccourcis (intégrés)"
Settings.Paths = "Chemins"
Settings.Paths.Games = "Jeux"
Settings.Paths.Patches = "Patches"
Settings.Paths.Saves = "Sauvegardes"
Settings.Paths.Cheats = "Triches"
Settings.Paths.States = "États"
Settings.Paths.Screenshots = "Captures décran"
Settings.Paths.LastRecentlyUsed = "dernièrement utilisé"
Settings.Paths.SameAsLoadedGame = "même que le jeu chargé"
Settings.Emulator = "Émulateur"
Settings.Emulator.General = "Général"
Settings.Emulator.General.warnOnUnverifiedGames = "Avertir lors de louverture de jeux qui nont pas été vérifiés"
Settings.Emulator.General.autoSaveMemory = "Sauvegarder la mémoire périodiquement"
Settings.Emulator.General.autoSaveStateOnUnload = "Sauvegarder létat dannulation lors du déchargement des jeux"
Settings.Emulator.General.AutoResumeOnLoad = "Reprendre lors du chargement"
Settings.Emulator.General.UseNativeFileDialogs = "Utiliser les boites de dialogues natives"
Settings.Emulator.FastForward = "Avance rapide (Fast Forward)"
Settings.Emulator.FastForward.FrameSkip = "Nombre dimages à éviter"
Settings.Emulator.FastForward.FrameSkip.tooltip = "
Définit le nombre dimages à éviter lors de lavance rapide.
Éviter le rendu dimages permet une vitesse davance rapide maximale plus élevée.
"
Settings.Emulator.FastForward.FrameSkip.Frames2to4 = "| images"
Settings.Emulator.FastForward.FrameSkip.Frames = "| images"
Settings.Emulator.FastForward.Limiter = "Limiteur"
Settings.Emulator.FastForward.Limiter.tooltip = "Définit la vitesse maximale lors de lavance rapide."
Settings.Emulator.FastForward.mute = "Désactiver le son lors de lavance rapide"
Settings.Emulator.Rewind = "Rembobinage"
Settings.Emulator.Rewind.Frequency = "Fréquence"
Settings.Emulator.Rewind.Frequency.everyFrames = "Chaque | images"
Settings.Emulator.Rewind.Length = "Durée"
Settings.Emulator.Rewind.Length.states = "| états"
Settings.Emulator.Rewind.mute = "Désactiver le son lors du rembobinage"
Settings.Enhancements = "Améliorations"
Settings.Enhancements.FastMode = "Mode rapide"
Settings.Enhancements.RunAhead = "Exécution à venir (Run-Ahead)"
Settings.Enhancements.RunAhead.Frames = "images"
Settings.Enhancements.RunAhead.One = "Une"
Settings.Enhancements.RunAhead.Two = "Deux"
Settings.Enhancements.RunAhead.Three = "Trois"
Settings.Enhancements.RunAhead.Four = "Quatre"
Settings.Enhancements.Overclocking = "Overclocking"
Settings.Enhancements.Ppu.Video = "vidéo"
Settings.Enhancements.Ppu.Deinterlace = "Désentrelacer"
Settings.Enhancements.Ppu.NoSpriteLimit = "Pas de limite de sprite"
Settings.Enhancements.hdMode7.FastPpuOnly = "PPU rapide uniquement"
Settings.Enhancements.hdMode7.Scale = "Échelle"
Settings.Enhancements.hdMode7.PerspectiveCorrection = "Correction de la perspective"
Settings.Enhancements.hdMode7.Supersampling = "Suréchantillonnage"
Settings.Enhancements.hdMode7.HdToSdMosaic = "HD→SD mosaïque"
Settings.Enhancements.Dsp.Audio = "audio"
Settings.Enhancements.Dsp.CubicInterpolation = "Interpolation cubique"
Settings.Enhancements.Coprocessors = "Coprocesseurs"
Settings.Enhancements.Coprocessors.PreferHle = "Préférer lémulation de haut niveau (HLE)"
Settings.Enhancements.Coprocessors.PreferHle.tooltip = "
Lorsque coché, une émulation HLE moins précise sera
toujours utilisée lorsque cela est possible.
Lorsque décoché, le HLE sera utilisé uniquement si le micro-
programme de lémulation bas-niveau (LLE) est manquant.
"
Settings.Enhancements.GameEnhancements = "Améliorations de jeux"
Settings.Enhancements.GameEnhancements.Hotfixes = "Correctifs"
Settings.Enhancements.GameEnhancements.Hotfixes.tooltip = "
Même les logiciels sous licence commerciale et les logiciels
officiels sont parfois livrés avec des bogues.
Cette option permettra de corriger certains problèmes
qui se sont produits même sur du matériel réel.
"
Settings.Compatibility = "Compatibilité"
Settings.Compatibility.entropy = "Entropie (randomisation)"
Settings.Compatibility.entropy.None.tooltip = "
Toutes les mémoires et tous les registres sont
initialisés à des valeurs constantes au démarrage.
A utiliser pour la compatibilité avec les très anciens
jeux fait maison de la démoscene.
"
Settings.Compatibility.entropy.Low = "Bas"
Settings.Compatibility.entropy.Low.tooltip = "
Toute la mémoire est randomisée avec des motifs répétitifs,
tous les registres sont randomisés au démarrage.
A utiliser pour obtenir la représentation la plus précise
possible dune vraie SNES.
"
Settings.Compatibility.entropy.High = "Haut"
Settings.Compatibility.entropy.High.tooltip = "
Toutes les mémoires et tous les registres sont randomisés autant que possible.
Utilisez cette méthode lors du développement de nouveaux logiciels SNES
pour garantir une compatibilité maximale avec le matériel réel.
"
Settings.Compatibility.cpu.Processor = "processeur"
Settings.Compatibility.cpu.FastMath = "Mathématique rapide"
Settings.Compatibility.cpu.FastMath.tooltip = "
La multiplication et la division du CPU prennent
du temps à être réalisés sur une vraie SNES.
Les anciens émulateurs ne simulaient pas ces délais,
et fournissaient des résultats immédiatement.
Certaines anciennes ROM bidouillées nattendent pas
que les opérations mathématiques soient terminées
et ont besoin de ce bidouillage.
"
Settings.Compatibility.ppu.Video = "vidéo"
Settings.Compatibility.ppu.NoVramBlocking = "Pas de blocage de la mémoire vidéo (VRAM)"
Settings.Compatibility.ppu.NoVramBlocking.tooltip = "
Cette option permet démuler un bogue dans les anciennes versions
de ZSNES et Snes9x où le verrouillage de la VRAM nétait pas émulé.
Quelques anciennes ROM bidouillées reposaient sur ce comportement,
et afficheront les graphiques de manière incorrecte sils ne sont pas activés.
Non seulement ce comportement est extrêmement imprécis par rapport
au matériel réel, mais il nuit également à la vitesse du PPU rapide.
Nactivez pas cette option, sauf si vous avez besoin de jouer
à un jeu qui ne fonctionne pas correctement autrement.
"
Settings.Compatibility.dsp.Audio = "audio"
Settings.Compatibility.dsp.EchoShadowRam = "Echo RAM ombragée"
Settings.Compatibility.dsp.EchoShadowRam.tooltip = "
Cette option permet démuler un bogue dans ZSNES où lécho
de la RAM était traitée comme distincte de la RAM de lAPU.
De nombreuses anciennes ROM bidouillées pour « Super Mario World »
reposaient sur ce comportement, et planteront sans lactiver.
Elle est cependant extrêmement imprécise par rapport au matériel réel
et ne devrait pas être activée à moins que cela ne soit nécessaire.
"
Settings.Drivers = "Pilotes"
Settings.Drivers.Driver = "Pilote"
Settings.Drivers.Change = "Changer"
Settings.Drivers.Reload = "Recharger"
Settings.Drivers.ExclusiveMode = "Mode exclusif"
Settings.Drivers.Synchronize = "Synchroniser"
Settings.Drivers.ActiveDriver = "Pilote actif"
Settings.Drivers.changeConfirm.title = "Changer de pilote ?"
Settings.Drivers.changeConfirm = "
Attention : les pilotes incompatibles peuvent provoquer un plantage de lapplication.
Il est fortement recommandé de décharger dabord votre jeu pour être sûr.
Souhaitez-vous quand même procéder au changement de pilote malgré tout ?
"
Settings.noteGameRestart = "Note : certains paramètres ne prendront effet quau rechargement du jeu."
Settings.Drivers.Video.failedToInitialize = "Échec de linitialisation [|] du pilote vidéo"
Settings.Drivers.Video.FullScreenMonitor = "Moniteur plein écran"
Settings.Drivers.Video.FullScreenMonitor.tooltip = "Détermine vers quel moniteur le signal vidéo est envoyé en mode plein écran."
Settings.Drivers.Video.Format = "Format"
Settings.Drivers.Video.ExclusiveMode.tooltip = "
Provoque le mode plein écran à prendre le dessus sur tous les moniteurs.
Cela permet à la synchronisation adaptative de mieux fonctionner et de réduire la latence dentrée.
Toutefois, les utilisateurs de moniteurs multiples doivent désactiver cette option.
Note : Le mode exclusif Direct3D nhonore pas non plus le moniteur demandé.
"
Settings.Drivers.Video.Synchronize.tooltip = "
Attend que la carte vidéo soit prête avant dafficher les images.
Élimine les images perdues ou dupliquées, mais peut déformer le son.
Avec cette option, il est recommandé de désactiver la synchronisation
audio, et dactiver le contrôle dynamique du taux. Ou alors, ajuster
loption de compensation audio pour réduire les sous-débits
et les débordements de la mémoire tampon.
"
Settings.Drivers.Video.GpuSync = "Synchronisation du GPU"
Settings.Drivers.Video.GpuSync.tooltip = "
(Pilote OpenGL uniquement)
Fait attendre le GPU jusquà ce que les images soient entièrement affichées.
Dans le meilleur des cas, cela peut supprimer jusquà une image de retard dentrée.
Cependant, cela entraîne une perte de performance denviron 20%.
Vous devriez désactiver cette option, sauf si vous lestimez nécessaire.
"
Settings.Drivers.Audio.failedToInitialize = "Échec de linitialisation [|] du pilote audio"
Settings.Drivers.Audio.OutputDevice = "Périphérique de sortie"
Settings.Drivers.Audio.SampleRate = "Taux déchantillonage"
Settings.Drivers.Audio.Latency = "Latence"
Settings.Drivers.Audio.ExclusiveMode.tooltip = "
(Pilote WASAPI uniquement)
Acquiert le contrôle exclusif du périphérique audio.
Cela peut réduire considérablement la latence audio.
Cependant, cela bloquera les sons provenant de toutes les autres applications.
"
Settings.Drivers.Audio.Synchronize.tooltip = "
Attend que la carte audio soit prête avant de produire des échantillons.
Élimine la distorsion audio, mais peut déformer la vidéo.
Avec cette option, il est recommandé de désactiver la synchronisation vidéo.
Pour de meilleurs résultats, utilisez cette option avec un moniteur à synchronisation adaptative.
"
Settings.Drivers.Audio.DynamicRate = "Taux dynamique"
Settings.Drivers.Audio.DynamicRate.tooltip = "
(Pilotes OSS, XAudio2, waveOut uniquement)
Ajuste dynamiquement la fréquence audio par de minuscules quantités.
Utilisez-le avec la synchronisation vidéo activée, et la synchronisation audio désactivée.
Cela permet de produire une vidéo parfaitement fluide et un son propre, mais
seulement si le taux de rafraîchissement de votre moniteur est correctement réglé :
60 Hz pour les jeux NTSC, et 50 Hz pour les jeux PAL.
"
Settings.Drivers.Input.failedToInitialize = "Échec de linitialisation [|] du pilote dentrée"
Settings.Drivers.Input.Reload.tooltip = "
La recharge dun pilote peut être utilisée pour détecter
les appareils branchés à chaud.
Cela est utile pour les API qui ne prennent pas en charge
lauto-hotplug, tels que DirectInput et SDL.
"
Settings.Drivers.syncModePresets = "Préréglages du mode de synchronisation"
Settings.Drivers.syncModePresets.requirements = "
Synchronisation adaptative : nécessite un moniteur G-Sync ou FreeSync.
Contrôle dynamique du taux : nécessite que le moniteur et les taux de rafraîchissement SNES correspondent.
"
Settings.Drivers.syncModePresets.AdaptiveSync = "Synchronisation adaptative"
Settings.Drivers.syncModePresets.AdaptiveSync.failure = "
Désolé, la configuration actuelle du pilote nest pas compatible avec le mode de synchronisation adaptative.
La synchronisation adaptative nécessite la prise en charge de la synchronisation audio.
"
Settings.Drivers.syncModePresets.AdaptiveSync.success = "
La synchronisation adaptative fonctionne mieux en mode plein écran exclusif.
Utilisez le réglage de latence audio le plus faible que vôtre système peut gérer.
Un moniteur G-Sync ou FreeSync est nécessaire.
La synchronisation adaptative doit être activée dans le panneau de configuration de vôtre pilote.
"
Settings.Drivers.syncModePresets.DynamicRateControl = "Contrôle dynamique du taux"
Settings.Drivers.syncModePresets.DynamicRateControl.failure = "
Désolé, la configuration actuelle du pilote nest pas compatible avec le mode de contrôle dynamique du taux.
Le contrôle dynamique du taux nécessite la synchronisation vidéo et la prise en charge du taux audio-dynamique.
"
Settings.Drivers.syncModePresets.DynamicRateControl.success = "
Le contrôle dynamique du taux exige que votre moniteur fonctionne à ces taux de rafraîchissement :
60 Hz pour les jeux NTSC, 50 Hz pour les jeux PAL.
Utilisez le réglage de latence audio le plus bas que vôtre système peut gérer.
"
Settings.BuiltinHotkeys.CheckAll = "Cocher tout"
Settings.BuiltinHotkeys.UncheckAll = "Décocher tout"
Tools = "Outils"
Tools.SaveState = "Sauvegarder état"
Tools.SaveState.Slot = "Emplacement"
Tools.SaveState.Slot.Empty = "vide"
Tools.LoadState = "Charger état"
Tools.LoadState.SelectedStateSlot = "Emplacement détat sélectionné"
Tools.LoadState.UndoLastSave = "Annuler la précédente sauvegarde"
Tools.LoadState.RedoLastUndo = "Refaire la dernière annulation"
Tools.LoadState.RemoveAllStates = "Enlever tous les états"
Tools.LoadState.RemoveAllStates.confirm.title = "Enlever les états rapides ?"
Tools.LoadState.RemoveAllStates.confirm = "Êtes vous sûr de vouloir enlever de manière permanente tous les états rapides pour ce jeu ?"
Tools.Speed = "Vitesse"
Tools.Speed.Slowest = "Le plus lent"
Tools.Speed.Slow = "Lent"
Tools.Speed.Normal = "Normal"
Tools.Speed.Fast = "Rapide"
Tools.Speed.Fastest = "Le plus rapide"
Tools.RunMode = "Mode dexécution"
Tools.RunMode.Normal = "Normal"
Tools.RunMode.PauseEmulation = "Pause émulation"
Tools.RunMode.FrameAdvance = "Image par image (Frame Advance)"
Tools.Movie = "Film"
Tools.Movie.Play = "Jouer"
Tools.Movie.Record = "Enregistrer"
Tools.Movie.ResetAndRecord = "Réinitialiser et enregistrer"
Tools.Movie.Stop = "Arrêter"
Tools.TakeScreenshot = "Prendre une capture décran"
Tools.CheatFinder = "Recherche de triche"
Tools.CheatFinder.Address = "Adresse"
Tools.CheatFinder.Value = "Valeur"
Tools.CheatFinder.Scan = "Analyser"
Tools.CheatFinder.All = "Tout"
Tools.CheatEditor = "Éditeur de triches"
Tools.CheatEditor.remove.confirm.title = "Enlever triche(s) ?"
Tools.CheatEditor.remove.confirm = "Êtes vous sûr de vouloir enlever de manière permanente la ou les triche(s) sélectionnée(s) ?"
Tools.CheatEditor.Codes = "Code(s)"
Tools.CheatEditor.Enable = "Activer"
Tools.CheatEditor.SelectAll = "Sélectionner tout"
Tools.CheatEditor.UnselectAll = "Désélectionner tout"
Tools.CheatEditor.AddCheats = "Ajouter triches"
Tools.CheatEditor.AddCheat = "Ajouter triche"
Tools.CheatEditor.EditCheat = "Éditer triche"
Tools.CheatEditor.Edit = "Éditer"
Tools.CheatEditor.FindCheats = "Rechercher triches"
Tools.CheatEditor.noCheats = "Désolé, aucunes triches na été trouvé pour ce jeu."
Tools.CheatEditor.EnableCheats = "Activer triches"
Tools.CheatEditor.EnableCheats.tooltip = "
Activation des codes de triche.
Lorsque décoché, aucun code de triche ne sera actif.
À utiliser pour contourner les zones de jeux qui ont
des problèmes avec les triches.
"
Tools.CheatEditor.EnableCheats.disabled = "Tous les codes de triche sont désactivés"
Tools.CheatEditor.EnableCheats.enabled = "Les codes de triche actifs sont activés"
Tools.CheatEditor.invalidFormat = "Code(s) invalide(s), veuillez nutiliser des codes que dans le format suivant"
Tools.StateManager = "Gestionnaire détat"
Tools.StateManager.Category = "Catégorie"
Tools.StateManager.Category.ManagedStates = "États gérés"
Tools.StateManager.Category.QuickStates = "États rapides"
Tools.StateManager.QuickStates.Redo = "Refaire"
Tools.StateManager.QuickStates.Undo = "Annuler"
Tools.StateManager.Preview = "Prévisualiser"
Tools.StateManager.AddState = "Ajouter état"
Tools.StateManager.RenameState = "Renommer état"
Tools.StateManager.remove.confirm.title = "Enlever état(s) ?"
Tools.StateManager.remove.confirm = "Êtes vous sûr de vouloir enlever de manière permanente la ou les état(s) sélectionné(s) ?"
Tools.ManifestViewer = "Visionneuse de manifeste"
Tools.ManifestViewer.Manifest = "Manifeste"
Game.VerifiedGameOpened = "Jeu vérifié ouvert"
Game.GameOpened = "Jeu ouvert"
Game.GameClosed = "Jeu fermé"
Game.GameReset = "Jeu réinitialisé"
Game.AndPatchApplied = " et patch appliqué"
Game.GameOpeningCancelled = "Ouverture du jeu annulée"
Game.unverifiedGameWarning.title = "Image de jeu non vérifiée"
Game.unverifiedGameWarning = "
Attention : cette image de jeu nest pas vérifiée.
Son exécution *peut* constituer un risque pour la sécurité.
Souhaitez-vous quand même lancer le jeu ?
"
Game.unverifiedGameWarning.alwaysQuestion.title = "Désactiver lavertissement ?"
Game.unverifiedGameWarning.alwaysQuestion = "Souhaitez-vous désactiver lavertissement lors de lexécution de jeux non vérifiés ?"
Program.Paused = "En pause"
Program.Unloaded = "Déchargé"
Program.CapturedScreenshot = "Capture décran effectuée"
Program.Open.MissingRequiredData = "Données requises manquantes"
Program.Load.LoadGameBoyRom = "Charger ROM Game Boy"
Program.Load.GameBoyRoms = "ROMs Game Boy"
Program.Load.LoadBsMemoryRom = "Charger ROM BS Memory"
Program.Load.BsMemoryRoms = "ROMs BS Memory"
Program.Load.LoadSufamiTurboRomSlot = "Charger ROM Sufami Turbo Slot"
Program.Load.SufamiTurboRoms = "ROMs Sufami Turbo"
About.Version = "Version"
About.Copyright = "Copyright"
About.License = "Licence"
About.Website = "Site web"
About.SameBoy.description = "Émulateur de Super Game Boy"
About.Bsnes.description = "Émulateur de Super Nintendo"
About.Bsnes.copyright = "Équipe bsnes"
About.Bsnes.license = "GPLv3 ou ultérieur"
Browser.OpenSnesRom = "Ouvrir ROM SNES"
Browser.SnesRoms = "ROMs SNES"
Browser.AllFiles = "Tous les fichiers"
Browser.Select = "Sélectionner"
Browser.SelectFolder = "Sélectionner dossier"
Browser.ChooseFolder = "Choisir un dossier"
Browser.ShowHidden = "Montrer caché"
Browser.OpenFile = "Ouvrir fichier"
Browser.OpenFiles = "Ouvrir fichiers"
Browser.OpenFolder = "Ouvrir dossier"
Browser.OpenObject = "Ouvrir objet"
Browser.Rename.EnterNewFolderName = "Saisir le nom du nouveau dossier"
Browser.Rename.EnterNewFileName = "Saisir le nom du nouveau fichier"
Browser.Rename.FailedToRenameFolder = "Échec lors du renommage du dossier."
Browser.Rename.FailedToRenameFile = "Échec lors du renommage du fichier."
Browser.Create = "Créer"
Browser.Create.EnterName = "Saisir un nom"
Browser.CreateFolder = "Créer dossier"
Browser.CreateFolder.EnterNewFolderName = "Saisir un nom pour le nouveau-dossier"
Browser.Delete.DeleteSelected = "Supprimer la sélection"
Browser.Delete.FailedToDelete = "Échec lors de la suppression |. Continuer à essayer de supprimer les éléments restants ?"
Browser.Delete.confirm = "Êtes-vous sûr de vouloir supprimer de manière permanente |"
Browser.Delete.confirm.item = "lélément selectionné"
Browser.Delete.confirm.items = "les éléments sélectionnés"
Browser.SaveFile = "Enregistrer fichier"
Browser.SaveFile.fileExists.title = "Écraser le fichier ?"
Browser.SaveFile.fileExists = "Le fichier existe déjà. Voulez-vous lécraser ?"
StatusIcon.verifiedRom.tooltip = "
Il sagit dune image de jeu propre connue.
Lémulation de la carte du circuit imprimé (PCB) est précise à 100%.
"
StatusIcon.unverifiedRom.tooltip = "
Il ne sagit pas dune image de jeu vérifiée.
Lémulation du PCB repose sur lheuristique.
"
ResetDrivers.message.title = "Réinitialiser les pilotes"
ResetDrivers.message = "
Les pilotes de matériel ont été réinitialisés selon loption de ligne de commande `--resetdrivers`.
Veuillez reconfigurer les pilotes dans la fenêtre « Paramètres » → « Pilotes » qui va maintenant souvrir.
"
Rewind.HistoryExhausted = "Historique du rembobinage saturé"
States.incompatibleFormat = "[|] est dans un format incompatible"
States.Loaded = "Chargé"
States.NotFound = "[|] introuvable"
States.FailedToSave = "Échec de la sauvegarde [|]"
States.UnableToWriteToDisk = "Impossible décrire [|] sur le disque"
States.Saved = "Sauvegardé [|]"
Patch.ipsWarning = "
(Vous voyez cette invite parce que lIPS est un format de fichier patch terrible, et personne ne peut se mettre daccord sur le fait que les ROMs SNES doivent contenir une en-tête ou non.
Veuillez envisager de demander à lauteur du patch dutiliser plutôt des patchs BPS).
Est-ce que ce patch IPS sattend à être appliqué à une ROM avec une en-tête ?
Si vous nêtes pas sûr, essayez « Non », et si cela ne fonctionne pas, essayez à nouveau avec « Oui ».
"
Patch.ensureHeaderless = "Veuillez vous assurer que vous utilisez la bonne ROM (sans en-tête) pour ce patch."
Movies.PlayMovie = "Jouer film"
Movies.Movies = "Films"
Movies.playbackStarted = "Début de la lecture du film"
Movies.playbackStopped = "Arrêt de la lecture du film"
Movies.formatNotSupported = "Le format du film nest pas pris en charge"
Movies.recordingStarted = "Début de lenregistrement du film"
Movies.SaveMovie = "Sauvegarder le film"
Movies.MovieRecorded = "Film enregistré"
Movies.MovieNotRecorded = "Film non enregistré"
Movies.cantRecord = "Le film ne peut être enregistré"
Devices.Gamepad = "Gamepad"
Devices.Mouse = "Souris"
Hotkeys.ToggleMouseCapture = "Basculer la capture de souris"
Hotkeys.ToggleCheatCodes = "Basculer les codes de triche"
Hotkeys.Rewind = "Rembobinage"
Hotkeys.LoadUndoState = "Charger annulation détat"
Hotkeys.LoadRedoState = "Charger refaire état"
Hotkeys.DecrementStateSlot = "Décrémenter lemplacement détat"
Hotkeys.IncrementStateSlot = "Incrémenter lemplacement détat"
Hotkeys.FastForward = "Avance rapide (Fast Forward)"
Hotkeys.FrameAdvance = "Image suivante (Frame Advance)"
Hotkeys.DecreaseHDMode7 = "Diminuer le Mode 7 HD"
Hotkeys.IncreaseHDMode7 = "Augmenter le mode 7 HD"
Hotkeys.ToggleSupersampling = "Basculer le superéchantillonnage"
Hotkeys.ResetEmulation = "Réinitialiser lémulation"
Hotkeys.QuitEmulator = "Quitter lémulateur"

View file

@ -0,0 +1,52 @@
Translation.language = "Italian"
Translation.author = "theheroGAC"
Translation.version = "1.2"
Common.Yes = "Si"
Common.No = "No"
Common.Cancel = "Cancella"
Common.Always = "Sempre"
Common.AreYouSure = "Sei sicuro?"
Common.Open = "Apri"
Common.Load = "Carica"
Common.Save = "Salva"
Common.Add = "Aggiungi"
Common.Remove = "Rimuovi"
Common.Delete = "Cancella"
Common.Rename = "Rinomina"
Common.Reset = "Resetta"
Common.Clear = "Pulisci"
Common.None = "Niente"
Common.Disabled = "Disabilita"
Common.Default = "Predefinito"
Common.Name = "Nome"
Common.Date = "Data"
Common.Success = "Successo"
Common.Failure = "Fallito"
Common.Error = "Errore"
Common.Warning = "Attenzione"
Common.Auto = "Automatico"
Common.Video = "Video"
Common.Audio = "Audio"
Common.Fps = "FPS"
Common.Hz = "Hz"
Common.number = "#"
Menu.File = "File"
Menu.File.OpenGame = "Apri un Gioco"
Menu.File.OpenRecentGame = "Apri un gioco lanciato di recente"
Menu.File.OpenRecentGame.ClearList = "Pulisci Lista"
Menu.File.OpenRecentGame.NoRecentGames = "Nessun Gioco Recente"
Menu.File.CloseGame = "Chiudi Gioco"
Menu.File.Exit = "Esci"
Menu.System = "Sistema"
Menu.System.ControllerPort = "Porta del Controller"
Menu.System.ExpansionPort = "Espansione della Porta"
Menu.Settings.Size = "Dimensione"
Menu.Settings.Size.ShrinkWindowToSize = "Riduci la finestra alle dimensioni"
Menu.Settings.Size.CenterWindow = "Finestra centrata"
Menu.Settings.Size.FullScreenMode = "Modalità Schermo intero"
Menu.Settings.Size.PseudoFullScreenMode = "Modalità Pseudo schermo intero"
Menu.Settings.Output = "Output"

View file

@ -0,0 +1,623 @@
Translation.language = "Italian"
Translation.author = "Vecna"
Translation.version = "1.3.3"
Common.Yes = "Sì"
Common.No = "No"
Common.Cancel = "Annulla"
Common.Always = "Sempre"
Common.AreYouSure = "Sei sicuro?"
Common.Open = "Apri"
Common.Load = "Carica"
Common.Save = "Salva"
Common.Add = "Aggiungi"
Common.Remove = "Rimuovi"
Common.Delete = "Elimina"
Common.Rename = "Rinomina"
Common.Reset = "Resetta"
Common.Clear = "Pulisci"
Common.None = "Nessuno"
Common.Disabled = "Disabilita"
Common.Default = "Predefinito"
Common.Name = "Nome"
Common.Date = "Data"
Common.Success = "Successo"
Common.Failure = "Fallito"
Common.Error = "Errore"
Common.Warning = "Attenzione"
Common.Auto = "Automatico"
Common.Video = "Video"
Common.Audio = "Audio"
Common.Fps = "FPS"
Common.Hz = "Hz"
Common.number = "#"
Menu.File = "File"
Menu.File.OpenGame = "Apri un Gioco"
Menu.File.OpenRecentGame = "Apri un gioco avviato di recente"
Menu.File.OpenRecentGame.ClearList = "Svuota Lista"
Menu.File.OpenRecentGame.ClearList.confirm.title = "Svuotare la lista dei giochi recenti?"
Menu.File.OpenRecentGame.ClearList.confirm = "Vuoi davvero svuotare la lista dei giochi recenti?"
Menu.File.OpenRecentGame.NoRecentGames = "Nessun Gioco Recente"
Menu.File.CloseGame = "Chiudi Gioco"
Menu.File.Exit = "Esci"
Menu.System = "Sistema"
Menu.System.ControllerPort = "Porta del Controller"
Menu.System.ExpansionPort = "Porta di Espansione"
Menu.Settings.Size = "Dimensioni finestra"
Menu.Settings.Size.ShrinkWindowToSize = "Riduci la finestra alle dimensioni"
Menu.Settings.Size.CenterWindow = "Finestra centrata"
Menu.Settings.Size.FullScreenMode = "Modalità Schermo intero"
Menu.Settings.Size.PseudoFullScreenMode = "Modalità Pseudo schermo intero"
Menu.Settings.Output = "Uscita video"
Menu.Settings.Output.Center = "Centra"
Menu.Settings.Output.PixelPerfect = "Pixel-Perfect"
Menu.Settings.Output.Scale = "Scala"
Menu.Settings.Output.Stretch = "Allarga"
Menu.Settings.Output.AspectRatioCorrection = "Correzione rapporti aspetto"
Menu.Settings.Output.parInsteadOfAr = "8:7 PAR invece di 4:3 AR"
Menu.Settings.Output.ShowOverscanArea = "Mostra larea Overscan"
Menu.Settings.Output.scalingInfo = "Informazioni di scaling nella barra di stato"
Menu.Settings.Output.HiresBlurEmulation = "Emulazione sfocatura in alta risoluzione"
Menu.Settings.Filter = "Filtro video"
Menu.Settings.Shader = "Shader"
Menu.Settings.Shader.Blur = "Sfocatura"
Menu.Settings.MuteAudio = "Muta lAudio"
Menu.Settings.ShowStatusBar = "Mostra la Barra di stato"
Menu.Settings.OpenSettingsFolder = "Apri la cartella delle Impostazioni"
Menu.Help = "Aiuto"
Menu.Help.About = "Informazioni su |"
Settings = "Impostazioni"
Settings.Common.Assign = "Assegna"
Settings.Common.AssignLowercase = "assegna"
Settings.Common.Mapping = "Mappatura"
Settings.Common.MappingAssigned = "Mappatura assegnata."
Settings.Common.PressKeyOrButtonForMapping = "Premi un tasto o un pulsante per mapparlo"
Settings.Common.FrameLowercase = "frame"
Settings.Video.ColorAdjustment = "Regolazione del Colore"
Settings.Video.Luminance = "Luminanza"
Settings.Video.Saturation = "Saturazione"
Settings.Video.Gamma = "Gamma"
Settings.Video.DimVideoWhenIdle = "Video scuro se inattivo"
Settings.Video.DimVideoWhenIdle.tooltip = "Scurisce il video per indicare che lemulazione non è in esecuzione."
Settings.Video.DrawSnowEffectWhenIdle = "Effetto neve se inattivo"
Settings.Audio.Effects = "Effetti"
Settings.Audio.Skew = "Distorsione"
Settings.Audio.Skew.tooltip = "
Regola la frequenza audio della quantità di distorsione (in Hz).
Questo è essenzialmente un controllo statico della frequenza.
Innanzitutto, abilita la sincronizzazione video e audio.
Poi, aumenta o riduci questo valore per cercare di ridurre gli errori.
Da un lato migliorerà il video, ma danneggerà laudio.
Dallaltro lato farà il contrario.
Lidea è trovare la migliore via di mezzo.
Dovresti lasciarlo a 0 quando usi il controllo dinamico della frequenza.
"
Settings.Audio.Volume = "Volume"
Settings.Audio.Volume.tooltip = "
Regola il volume delluscita audio.
Non dovresti usare valori superiori al 100%, se possibile!
In caso contrario, potrebbe verificarsi una distorsione del clipping audio.
"
Settings.Audio.Balance = "Bilanciamento"
Settings.Audio.Balance.tooltip = "
Sposta laudio verso sinistra (valori inferiori) o destra (valori superiori).
50% (centrato) è limpostazione consigliata.
"
Settings.Audio.MuteWhenUnfocused = "Audio muto se si perde il focus"
Settings.Input = "Controlli"
Settings.Input.WhenFocusIsLost = "Quando si perde il focus"
Settings.Input.WhenFocusIsLost.PauseEmulation = "Pausa lemulazione"
Settings.Input.WhenFocusIsLost.BlockInput = "Blocca input"
Settings.Input.WhenFocusIsLost.AllowInput = "Permetti input"
Settings.Input.Port = "Porta"
Settings.Input.Device = "Dispositivo"
Settings.Input.TurboRate = "Turbo rate"
Settings.Input.TurboRate.tooltip = "È il numero di fotogrammi da attendere tra i pulsanti turbo."
Settings.Input.MouseLeft = "Tasto sinistro del mouse"
Settings.Input.MouseMiddle = "Tasto centrale del mouse"
Settings.Input.MouseRight = "Tasto destro del mouse"
Settings.Input.MouseXAxis = "Asse X del mouse"
Settings.Input.MouseYAxis = "Asse Y del mouse"
Settings.Hotkeys = "Scorciatoie"
Settings.Hotkeys.CombinationalLogic = "Logica combinatoria"
Settings.Hotkeys.CombinationalLogic.tooltip = "
Determina se è necessario premere tutte o alcune mappature per attivare le scorciatoie.
Usa “E” se desideri che combinazioni di tasti come Ctrl+F attivino una scorciatoia.
Usa “O” se vuoi che sia la tastiera che un joypad attivino la stessa scorciatoia.
"
Settings.Hotkeys.CombinationalLogic.And = "E"
Settings.Hotkeys.CombinationalLogic.And.tooltip = "Ogni mappatura deve essere premuta per attivare una data scorciatoia."
Settings.Hotkeys.CombinationalLogic.Or = "O"
Settings.Hotkeys.CombinationalLogic.Or.tooltip = "È possibile premere qualsiasi mappatura per attivare una data scorciatoia."
Settings.Hotkeys.Rewind.enableFirst = "Prima, abilita il supporto al riavvolgimento in “Impostazioni” → “Emulatore”"
Settings.BuiltinHotkeys = "Scorciatoie (integrate)"
Settings.Paths = "Percorsi"
Settings.Paths.Games = "Giochi"
Settings.Paths.Patches = "Patch"
Settings.Paths.Saves = "Salvataggi batteria"
Settings.Paths.Cheats = "Cheat"
Settings.Paths.States = "Salvataggi di stato"
Settings.Paths.Screenshots = "Screenshot"
Settings.Paths.LastRecentlyUsed = "lultima usata di recente"
Settings.Paths.SameAsLoadedGame = "la stessa del gioco caricato"
Settings.Emulator = "Emulatore"
Settings.Emulator.General = "Generali"
Settings.Emulator.General.warnOnUnverifiedGames = "Avvisa quando si aprono giochi che non sono stati verificati"
Settings.Emulator.General.autoSaveMemory = "Salva memoria periodicamente"
Settings.Emulator.General.autoSaveStateOnUnload = "Salva lo stato annullato durante il de-caricamento dei giochi"
Settings.Emulator.General.AutoResumeOnLoad = "Ripristina al caricamento"
Settings.Emulator.General.UseNativeFileDialogs = "Usa il file dialog nativo"
Settings.Emulator.FastForward = "Avanti-veloce"
Settings.Emulator.FastForward.FrameSkip = "Salto rame"
Settings.Emulator.FastForward.FrameSkip.tooltip = "
Imposta il numero di fotogrammi da saltare durante lavanzamento veloce.
Il salto dei fotogrammi consente una velocità più elevata nellavanzamento rapido.
"
Settings.Emulator.FastForward.FrameSkip.Frames2to4 = "| frames"
Settings.Emulator.FastForward.FrameSkip.Frames = "| frames"
Settings.Emulator.FastForward.Limiter = "Limitatore"
Settings.Emulator.FastForward.Limiter.tooltip = "Imposta la velocità massima durante lavanti-veloce."
Settings.Emulator.FastForward.mute = "Audio muto se avanti-veloce è attivo"
Settings.Emulator.Rewind = "Riavvolgi"
Settings.Emulator.Rewind.Frequency = "Frequenza"
Settings.Emulator.Rewind.Frequency.everyFrames = "Ogni | frames"
Settings.Emulator.Rewind.Length = "Durata"
Settings.Emulator.Rewind.Length.states = "| stati"
Settings.Emulator.Rewind.mute = "Audio muto mentre riavvolgi"
Settings.Enhancements = "Migliorie"
Settings.Enhancements.FastMode = "Modalità veloce"
Settings.Enhancements.RunAhead = "Esegui in anticipo di"
Settings.Enhancements.RunAhead.Frames = "frame"
Settings.Enhancements.RunAhead.One = "Un"
Settings.Enhancements.RunAhead.Two = "Due"
Settings.Enhancements.RunAhead.Three = "Tre"
Settings.Enhancements.RunAhead.Four = "Quattro"
Settings.Enhancements.Overclocking = "Overclocking"
Settings.Enhancements.Ppu.Video = "video"
Settings.Enhancements.Ppu.Deinterlace = "Deinterlaccia"
Settings.Enhancements.Ppu.NoSpriteLimit = "Nessun limite sprite"
Settings.Enhancements.hdMode7.FastPpuOnly = "solo PPU rapida"
Settings.Enhancements.hdMode7.Scale = "Scalatura"
Settings.Enhancements.hdMode7.PerspectiveCorrection = "Correzione prospettiva"
Settings.Enhancements.hdMode7.Supersampling = "Super-campionamento"
Settings.Enhancements.hdMode7.HdToSdMosaic = "Mosaico HD→SD"
Settings.Enhancements.Dsp.Audio = "audio"
Settings.Enhancements.Dsp.CubicInterpolation = "Interpolazione cubica"
Settings.Enhancements.Coprocessors = "Coprocessori"
Settings.Enhancements.Coprocessors.PreferHle = "Preferire lemulazione di alto livello (HLE)"
Settings.Enhancements.Coprocessors.PreferHle.tooltip = "
Se selezionata, quando disponibile, verrà sempre utilizzata unemulazione HLE meno accurata.
Se deselezionata, HLE verrà utilizzato solo quando manca il firmware per lemulazione di basso livello (LLE).
"
Settings.Enhancements.GameEnhancements = "Migliorie del Gioco"
Settings.Enhancements.GameEnhancements.Hotfixes = "Correzioni"
Settings.Enhancements.GameEnhancements.Hotfixes.tooltip = "
Anche il software con licenza commerciale e rilasciato ufficialmente a volte aveva dei bug.
Questopzione correggerà alcuni problemi che si verificavano anche sullhardware reale.
"
Settings.Compatibility = "Compatibilità"
Settings.Compatibility.entropy = "Entropia (randomizzazione)"
Settings.Compatibility.entropy.None.tooltip = "
Tutta la memoria e i registri vengono inizializzati su valori costanti allavvio.
Usala per migliorare la compatibilità con giochi homebrew demoscene molto vecchi.
"
Settings.Compatibility.entropy.Low = "Bassa"
Settings.Compatibility.entropy.Low.tooltip = "
Tutta la memoria è randomizzata con schemi ripetuti, tutti i registri
sono randomizzati allavvio.
Usala per una più accurata emulazione di un vero SNES.
"
Settings.Compatibility.entropy.High = "Alta"
Settings.Compatibility.entropy.High.tooltip = "
Tutta la memoria e i registri vengono randomizzati il più possibile.
Usala quando sviluppi un nuovo software SNES per assicurarti la massima
compatibilità con lhardware reale.
"
Settings.Compatibility.cpu.Processor = "processore"
Settings.Compatibility.cpu.FastMath = "Matematica rapida"
Settings.Compatibility.cpu.FastMath.tooltip = "
La moltiplicazione e la divisione della CPU richiedono tempo per essere completate su un vero SNES.
I vecchi emulatori non simulavano questi ritardi e fornivano risultati immediatamente.
Alcuni vecchi hack della ROM non aspettano il completamento delle operazioni matematiche e richiedono questo hack.
"
Settings.Compatibility.ppu.Video = "video"
Settings.Compatibility.ppu.NoVramBlocking = "Nessun blocco sulla memoria video (VRAM)"
Settings.Compatibility.ppu.NoVramBlocking.tooltip = "
Questopzione abilita lemulazione di un bug nelle versioni precedenti di ZSNES e Snes9x in cui il blocco VRAM non era emulato.
Alcuni vecchi hack della ROM si basavano su questo comportamento e visualizzeranno la grafica in modo errato se non abilitata.
Non solo questo è estremamente impreciso per lhardware reale, ma danneggia anche la velocità della PPU rapida.
Non abilitare questopzione a meno che non sia necessario giocare a un gioco che, altrimenti, funziona in modo errato.
"
Settings.Compatibility.dsp.Audio = "audio"
Settings.Compatibility.dsp.EchoShadowRam = "Ombreggiatura RAM Echo"
Settings.Compatibility.dsp.EchoShadowRam.tooltip = "
Questopzione abilita lemulazione di un bug in ZSNES in cui la RAM Echo veniva considerata separata dalla RAM APU.
Molti vecchi hack della ROM per “Super Mario World” si basavano su questo comportamento e andranno in crash senza abilitarla.
Tuttavia, è estremamente impreciso per lhardware reale e non dovrebbe essere abilitata se non richiesto.
"
Settings.Drivers = "Driver"
Settings.Drivers.Driver = "Driver"
Settings.Drivers.Change = "Cambia"
Settings.Drivers.Reload = "Ricarica"
Settings.Drivers.ExclusiveMode = "Modalità esclusiva"
Settings.Drivers.Synchronize = "Sincronizza"
Settings.Drivers.ActiveDriver = "Driver attivo"
Settings.Drivers.changeConfirm.title = "Cambiare il driver?"
Settings.Drivers.changeConfirm = "
Attenzione: driver incompatibili possono causare il crash dellapplicazione.
Si consiglia vivamente di scaricare prima il gioco per sicurezza.
Desideri comunque procedere con il cambio driver adesso?
"
Settings.noteGameRestart = "Nota: alcune impostazioni non avranno effetto finché non si ricarica il gioco."
Settings.Drivers.Video.failedToInitialize = "Impossibile inizializzare [|] driver video"
Settings.Drivers.Video.FullScreenMonitor = "Monitor a Schermo Intero"
Settings.Drivers.Video.FullScreenMonitor.tooltip = "Imposta a quale monitor viene inviato il video in modalità a Schermo Intero."
Settings.Drivers.Video.Format = "Formato"
Settings.Drivers.Video.ExclusiveMode.tooltip = "
Fa in modo che la modalità a Schermo Intero occupi tutti i monitor.
Ciò consente alla sincronizzazione adattativa di funzionare meglio e riduce la latenza dellinput.
Tuttavia, gli utenti con più monitor dovrebbero disattivare questopzione.
Nota: anche la modalità esclusiva Direct3D non rispetta il monitor richiesto.
"
Settings.Drivers.Video.Synchronize.tooltip = "
Attende che la scheda video sia pronta prima di eseguire il rendering dei frame.
Elimina i fotogrammi persi o duplicati, ma può distorcere laudio.
Con questopzione, si consiglia di disabilitare la sincronizzazione audio,
e abilitare il controllo dinamico della frequenza. O in alternativa, regola
lopzione audio distorsione per ridurre il buffer under/overflow.
"
Settings.Drivers.Video.GpuSync = "Sincronia GPU"
Settings.Drivers.Video.GpuSync.tooltip = "
(solo driver OpenGL)
Fa sì che la GPU attenda fino al completo rendering dei fotogrammi.
Nel migliore dei casi, questo può rimuovere fino a un frame di input lag.
Tuttavia, causa una riduzione delle prestazioni di circa il 20%.
Dovresti disabilitare questopzione a meno che non la trovi necessaria.
"
Settings.Drivers.Audio.failedToInitialize = "Impossibile inizializzare [|] driver audio"
Settings.Drivers.Audio.OutputDevice = "Dispositivo di uscita"
Settings.Drivers.Audio.SampleRate = "Campionamento"
Settings.Drivers.Audio.Latency = "Latenza"
Settings.Drivers.Audio.ExclusiveMode.tooltip = "
(solo driver WASAPI)
Prende il controllo esclusivo della scheda audio.
Questo può ridurre significativamente la latenza audio.
Tuttavia, bloccherà i suoni di tutte le altre applicazioni.
"
Settings.Drivers.Audio.Synchronize.tooltip = "
Attende che la scheda audio sia pronta prima di inviare i campioni.
Elimina la distorsione audio, ma può distorcere il video.
Con questopzione attivata, si consiglia di disabilitare la sincronizzazione video.
Per ottenere i migliori risultati, usala con un monitor dotato di sincronizzazione adattativa.
"
Settings.Drivers.Audio.DynamicRate = "Frequenza dinamica"
Settings.Drivers.Audio.DynamicRate.tooltip = "
(solo driver OSS, XAudio2, waveOut)
Regola dinamicamente la frequenza audio di piccole quantità.
Usala con la sincronizzazione video abilitata e la sincronizzazione audio disabilitata.
Questo può produrre video perfettamente fluidi e audio pulito,
ma solo se la frequenza di aggiornamento del monitor è impostata correttamente:
60 Hz per i giochi NTSC e 50 Hz per i giochi PAL.
"
Settings.Drivers.Input.failedToInitialize = "Impossibile inizializzare [|] driver input"
Settings.Drivers.Input.Reload.tooltip = "
È possibile utilizzare un ricaricamento del driver per rilevare i dispositivi hotplugged.
Questo è utile per le API che non supportano lauto-hotplug,
come le DirectInput e le SDL.
"
Settings.Drivers.syncModePresets = "Profili Modalità Sincronizzazione"
Settings.Drivers.syncModePresets.requirements = "
Sincronia adattativa: richiede un monitor G-Sync o FreeSync.
Controllo dinamico della frequenza: richiede che le frequenze di aggiornamento di monitor e SNES corrispondano.
"
Settings.Drivers.syncModePresets.AdaptiveSync = "Sincronia adattativa"
Settings.Drivers.syncModePresets.AdaptiveSync.failure = "
Spiacente, la configurazione del driver corrente non è compatibile con la modalità di sincronizzazione adattativa.
La sincronizzazione adattativa richiede il supporto della sincronizzazione audio.
"
Settings.Drivers.syncModePresets.AdaptiveSync.success = "
La sincronizzazione adattativa funziona al meglio nella modalità esclusiva a Schermo Intero.
Usa limpostazione di latenza audio più bassa che il tuo sistema può gestire.
È necessario un monitor G-Sync o FreeSync.
La sincronizzazione adattativa deve essere abilitata nel pannello delle impostazioni del driver.
"
Settings.Drivers.syncModePresets.DynamicRateControl = "Controllo dinamico della frequenza"
Settings.Drivers.syncModePresets.DynamicRateControl.failure = "
Spiacente, lattuale configurazione del driver non è compatibile con la modalità di controllo dinamico della frequenza.
Il controllo dinamico della frequenza richiede la sincronizzazione video e il supporto della frequenza dinamica dellaudio.
"
Settings.Drivers.syncModePresets.DynamicRateControl.success = "
Il controllo dinamico della frequenza richiede che il monitor funzioni a:
60 Hz per i giochi NTSC, 50 Hz per i giochi PAL.
Usa limpostazione di latenza audio più bassa che il tuo sistema può gestire.
"
Settings.BuiltinHotkeys.CheckAll = "Seleziona tutti"
Settings.BuiltinHotkeys.UncheckAll = "Deseleziona tutti"
Tools = "Strumenti"
Tools.SaveState = "Salva Stato"
Tools.SaveState.Slot = "Slot"
Tools.SaveState.Slot.Empty = "vuoto"
Tools.LoadState = "Carica Stato"
Tools.LoadState.SelectedStateSlot = "Slot di stato selezionato"
Tools.LoadState.UndoLastSave = "Annulla ultimo salvataggio"
Tools.LoadState.RedoLastUndo = "Ripeti ultimo salvataggio"
Tools.LoadState.RemoveAllStates = "Rimuovi tutti gli stati"
Tools.LoadState.RemoveAllStates.confirm.title = "Rimuovere gli stati rapidi?"
Tools.LoadState.RemoveAllStates.confirm = "Vuoi davvero rimuovere definitivamente tutti gli stati rapidi per questo gioco?"
Tools.Speed = "Velocità"
Tools.Speed.Slowest = "Bassissima"
Tools.Speed.Slow = "Bassa"
Tools.Speed.Normal = "Normale"
Tools.Speed.Fast = "Alta"
Tools.Speed.Fastest = "Altissima"
Tools.RunMode = "Run Mode"
Tools.RunMode.Normal = "Normale"
Tools.RunMode.PauseEmulation = "Pausa lEmulazione"
Tools.RunMode.FrameAdvance = "Avanzamento frame"
Tools.Movie = "Filmato"
Tools.Movie.Play = "Riproduci"
Tools.Movie.Record = "Registra"
Tools.Movie.ResetAndRecord = "Reset e Registra"
Tools.Movie.Stop = "Interrompi"
Tools.TakeScreenshot = "Acquisisci Screenshot"
Tools.CheatFinder = "Trova Cheat"
Tools.CheatFinder.Address = "Indirizzo"
Tools.CheatFinder.Value = "Valore"
Tools.CheatFinder.Scan = "Scansione"
Tools.CheatFinder.All = "Tutti"
Tools.CheatEditor = "Editor dei Cheat"
Tools.CheatEditor.remove.confirm.title = "Rimuovi cheat?"
Tools.CheatEditor.remove.confirm = "Sei sicuro di voler rimuovere definitivamente i cheat selezionati?"
Tools.CheatEditor.Codes = "Codice(i)"
Tools.CheatEditor.Enable = "Attiva"
Tools.CheatEditor.SelectAll = "Seleziona tutto"
Tools.CheatEditor.UnselectAll = "Deseleziona tutto"
Tools.CheatEditor.AddCheats = "Aggiungi i Cheat"
Tools.CheatEditor.AddCheat = "Aggiungi un Cheat"
Tools.CheatEditor.EditCheat = "Modifica Cheat"
Tools.CheatEditor.Edit = "Modifica"
Tools.CheatEditor.FindCheats = "Trova Cheat"
Tools.CheatEditor.noCheats = "Spiacente, non sono stati trovati cheat per questo gioco."
Tools.CheatEditor.EnableCheats = "Attiva i Cheat"
Tools.CheatEditor.EnableCheats.tooltip = "
Abilitazione principale per tutti i codici cheat.
Se deselezionata, nessun cheat sarà attivo.
Usala per bypassare le aree di gioco che hanno problemi con i cheat.
"
Tools.CheatEditor.EnableCheats.disabled = "Tutti i cheat sono disattivati"
Tools.CheatEditor.EnableCheats.enabled = "I cheat attivi sono abilitati"
Tools.CheatEditor.invalidFormat = "Codici non validi, prego, usare solo i codici nel seguente formato"
Tools.StateManager = "State Manager"
Tools.StateManager.Category = "Categoria"
Tools.StateManager.Category.ManagedStates = "Gestione degli Stati"
Tools.StateManager.Category.QuickStates = "Stati rapidi"
Tools.StateManager.QuickStates.Redo = "Ripeti"
Tools.StateManager.QuickStates.Undo = "Annulla"
Tools.StateManager.Preview = "Anteprima"
Tools.StateManager.AddState = "Aggiungi Stato"
Tools.StateManager.RenameState = "Rinomina Stato"
Tools.StateManager.remove.confirm.title = "Rimuovere stati?"
Tools.StateManager.remove.confirm = "Vuoi davvero rimuovere permanentemente gli stati selezionati?"
Tools.ManifestViewer = "Visualizzatore Manifest"
Tools.ManifestViewer.Manifest = "Manifest"
Game.VerifiedGameOpened = "Gioco avviato e verificato"
Game.GameOpened = "Gioco avviato"
Game.GameClosed = "Gioco chiuso"
Game.GameReset = "Gioco resettato"
Game.AndPatchApplied = " e patch applicata"
Game.GameOpeningCancelled = "Avvio del gioco annullato"
Game.unverifiedGameWarning.title = "Immagine di gioco non verificata"
Game.unverifiedGameWarning = "
Attenzione: questa immagine del gioco non è verificata.
Lesecuzione *potrebbe* essere un rischio per la sicurezza.
Desideri comunque avviare il gioco?
"
Game.unverifiedGameWarning.alwaysQuestion.title = "Disattivare gli avvisi?"
Game.unverifiedGameWarning.alwaysQuestion = "Vuoi disabilitare gli avvisi quando provi ad eseguire giochi non verificati?"
Program.Paused = "In pausa"
Program.Unloaded = "Non caricato"
Program.CapturedScreenshot = "Screenshot acquisito"
Program.Open.MissingRequiredData = "Dati richiesti mancanti"
Program.Load.LoadGameBoyRom = "Carica ROM Game Boy"
Program.Load.GameBoyRoms = "ROM Game Boy"
Program.Load.LoadBsMemoryRom = "Carica ROM BS Memory"
Program.Load.BsMemoryRoms = "ROM BS Memory"
Program.Load.LoadSufamiTurboRomSlot = "Carica ROM Sufami Turbo Slot"
Program.Load.SufamiTurboRoms = "ROM Sufami Turbo"
About.Version = "Versione"
About.Copyright = "Copyright"
About.License = "Licenza"
About.Website = "Sito web"
About.SameBoy.description = "Emulatore Super Game Boy"
About.Bsnes.description = "Emulatore Super Nintendo"
About.Bsnes.copyright = "byuu et al"
About.Bsnes.license = "GPLv3 o successivi"
Browser.OpenSnesRom = "Apri ROM per SNES"
Browser.SnesRoms = "SNES ROM"
Browser.AllFiles = "Tutti i file"
Browser.Select = "Seleziona"
Browser.SelectFolder = "Seleziona cartella"
Browser.ChooseFolder = "Scegli una cartella"
Browser.ShowHidden = "Mostra le cartelle nascoste"
Browser.OpenFile = "Apri un file"
Browser.OpenFiles = "Apri i file"
Browser.OpenFolder = "Apri Cartella"
Browser.OpenObject = "Apri Oggetto"
Browser.Rename.EnterNewFolderName = "Inserire nome nuova cartella"
Browser.Rename.EnterNewFileName = "Inserire nome nuovo file"
Browser.Rename.FailedToRenameFolder = "Impossibile rinominare la cartella."
Browser.Rename.FailedToRenameFile = "Impossibile rinominare il file."
Browser.Create = "Crea"
Browser.Create.EnterName = "Inserire un nome"
Browser.CreateFolder = "Crea cartella"
Browser.CreateFolder.EnterNewFolderName = "Inserire nome nuova cartella"
Browser.Delete.DeleteSelected = "Elimina selezionato"
Browser.Delete.FailedToDelete = "Impossibile eliminare |. Continuare a provare a rimuovere gli elementi rimanenti?"
Browser.Delete.confirm = "Sei sicuro di voler eliminare definitivamente: |"
Browser.Delete.confirm.item = "elemento selezionato"
Browser.Delete.confirm.items = "elementi selezionati"
Browser.SaveFile = "Salva file"
Browser.SaveFile.fileExists.title = "Sovrascrivere il file?"
Browser.SaveFile.fileExists = "File già esistente. Sovrascriverlo?"
StatusIcon.verifiedRom.tooltip = "
Questa è unimmagine del gioco pulita.
Lemulazione PCB è accurata al 100%.
"
StatusIcon.unverifiedRom.tooltip = "
Questa non è unimmagine del gioco verificata.
Lemulazione PCB si basa sulleuristica.
"
ResetDrivers.message.title = "Reset driver"
ResetDrivers.message = "
I driver hardware sono stati ripristinati secondo lopzione della riga di comando: `--resetdrivers`.
Si prega di riconfigurare i driver dalla finestra “Impostazioni” → “Driver” che si aprirà.
"
Rewind.HistoryExhausted = "Riavvolgimento cronologia esaurito"
States.incompatibleFormat = "[|] è in un formato non compatibile"
States.Loaded = "Caricato"
States.NotFound = "[|] non trovato"
States.FailedToSave = "Impossibile salvare [|]"
States.UnableToWriteToDisk = "Impossibile scrivere [|] nel disco"
States.Saved = "Salvato [|]"
Patch.ipsWarning = "
(Vedi questo messaggio perché IPS è un terribile formato di patch e nessuno può essere daccordo sul fatto che le ROM SNES debbano avere lheader o meno.
Considera lidea di chiedere allautore della patch di utilizzare invece il formato BPS.)
Questa patch IPS richiede di essere applicata ad una ROM con lheader?
Se non sei sicuro, prova “No” e se non funziona, riprova con “Sì”.
"
Patch.ensureHeaderless = "Assicurati di utilizzare la ROM corretta (senza header) per questa patch."
Movies.PlayMovie = "Riproduci filmato"
Movies.Movies = "Filmati"
Movies.playbackStarted = "Riproduzione filmato iniziata"
Movies.playbackStopped = "Riproduzione filmato interrotta"
Movies.formatNotSupported = "Formato del filmato non supportata"
Movies.recordingStarted = "Registrazione filmato iniziata"
Movies.SaveMovie = "Salva filmato"
Movies.MovieRecorded = "Filmato registrato"
Movies.MovieNotRecorded = "Filmato non registrato"
Movies.cantRecord = "Il filmato non può essere registrato"
Devices.Gamepad = "Gamepad"
Devices.Mouse = "Mouse"
Hotkeys.ToggleMouseCapture = "Attiva/Disattiva Acquisizione Mouse"
Hotkeys.ToggleCheatCodes = "Attiva/Disattiva i Cheat"
Hotkeys.Rewind = "Riavvolgi"
Hotkeys.LoadUndoState = "Carica Stato Annullato"
Hotkeys.LoadRedoState = "Carica Stato Ripetuto"
Hotkeys.DecrementStateSlot = "Riduci Slot di Stato"
Hotkeys.IncrementStateSlot = "Aumenta Slot di Stato"
Hotkeys.FastForward = "Avanti-veloce"
Hotkeys.FrameAdvance = "Avanzamento frame"
Hotkeys.DecreaseHDMode7 = "Riduci HD Mode 7"
Hotkeys.IncreaseHDMode7 = "Aumenta HD Mode 7"
Hotkeys.ToggleSupersampling = "Attiva/Disattiva Super-campionamento"
Hotkeys.ResetEmulation = "Reset emulazione"
Hotkeys.QuitEmulator = "Chiudi lemulatore"

View file

@ -0,0 +1,46 @@
Translation.language = "Japanese"
Translation.author = "byuu"
Translation.version = "1.0"
Common.Yes = "はい"
Common.No = "いいえ"
Common.Cancel = "キャンセル"
Common.Open = "開く"
Common.Save = "保存"
Common.Reset = "リセット"
Common.None = "なし"
Menu.File.OpenGame = "ゲームを読み込み"
Menu.File.OpenRecentGame = "最新ゲームを読み込み"
Menu.File.OpenRecentGame.ClearList = "全部を消す"
Menu.File.CloseGame = "ゲームをアンロード"
Menu.File.Exit = "終了"
Menu.System = "システム"
Menu.System.ControllerPort = "コントローラポート"
Menu.System.ExpansionPort = "拡張ポート"
Menu.Help = "ヘルプ"
Menu.Help.About = "| について"
Settings = "設定"
Tools = "ツール"
Tools.SaveState.Slot.Empty = "なし"
Program.Paused = "ポーズ"
Program.Unloaded = "アンロードされる"
About.Version = "バージョン"
About.License = "ライセンス"
About.Website = "公式サイト"
Browser.Select = "選択"
Devices.Gamepad = "ゲームパッド"
Devices.Mouse = "マウス"
Devices.SuperMultitap = "スーパーマルチタップ"
Devices.SuperScope = "スーパースコップ"
Devices.Justifier = "1挺のジャスティファイアー"
Devices.Justifiers = "2挺のジャスティファイアー"
Devices.Satellaview = "サテラビュー"

View file

@ -0,0 +1,641 @@
Translation.language = "Brazilian Portuguese"
Translation.author = "Wellington Uemura (wtuemura)"
Translation.version = "1.3.2"
Common.Yes = "Sim"
Common.No = "Não"
Common.Cancel = "Cancelar"
Common.Always = "Sempre"
Common.AreYouSure = "Tem certeza?"
Common.Open = "Abrir"
Common.Load = "Carregar"
Common.Save = "Salvar"
Common.Add = "Adicionar"
Common.Remove = "Remover"
Common.Delete = "Excluir"
Common.Rename = "Renomear"
Common.Reset = "Redefinir"
Common.Clear = "Limpar"
Common.None = "Nenhum"
Common.Disabled = "Desativado"
Common.Default = "Predefinido"
Common.Name = "Nome"
Common.Date = "Data"
Common.Success = "Successo"
Common.Failure = "Falhou"
Common.Error = "Erro"
Common.Warning = "Atenção"
Common.Auto = "Auto"
Common.Video = "Vídeo"
Common.Audio = "Áudio"
Common.Fps = "fps"
Common.Hz = "Hz"
Common.number = "#"
Menu.File = "File"
Menu.File.OpenGame = "Carregar o Jogo"
Menu.File.OpenRecentGame = "Carregar o Último Jogo"
Menu.File.OpenRecentGame.ClearList = "Limpar a Lista"
Menu.File.OpenRecentGame.ClearList.confirm.title = "Limpar a lista dos jogos recentes?"
Menu.File.OpenRecentGame.ClearList.confirm = "Tem certeza que deseja realmente limpar a lista dos jogos recentes?"
Menu.File.OpenRecentGame.NoRecentGames = "Nenhum Jogo Recente"
Menu.File.CloseGame = "Fechar o Jogo"
Menu.File.Exit = "Encerrar"
Menu.System = "Sistema"
Menu.System.ControllerPort = "Porta do Controle"
Menu.System.ExpansionPort = "Porta de Expansão"
Menu.Settings.Size = "Tamanho"
Menu.Settings.Size.ShrinkWindowToSize = "Encolher a Janela para o Tamanho Ideal"
Menu.Settings.Size.CenterWindow = "Centralizar a Janela na Tela"
Menu.Settings.Size.FullScreenMode = "Modo de Tela Inteira"
Menu.Settings.Size.PseudoFullScreenMode = "Pseudo Modo de Tela Inteira"
Menu.Settings.Output = "Saída"
Menu.Settings.Output.Center = "Centralizado"
Menu.Settings.Output.PixelPerfect = "Pixel-Perfeito"
Menu.Settings.Output.Scale = "Escala"
Menu.Settings.Output.Stretch = "Esticar"
Menu.Settings.Output.AspectRatioCorrection = "Correção da Relação de Aspecto"
Menu.Settings.Output.parInsteadOfAr = "PAR 8:7 em vez de AR 4:3"
Menu.Settings.Output.ShowOverscanArea = "Exibir a Área Excedente"
Menu.Settings.Output.scalingInfo = "Exibir a Informação da Escala na Barra de Status"
Menu.Settings.Output.HiresBlurEmulation = "Hires Blur Emulation"
Menu.Settings.Filter = "Filtro"
Menu.Settings.Shader = "Shader"
Menu.Settings.Shader.Blur = "Blur"
Menu.Settings.MuteAudio = "Silenciar o Áudio"
Menu.Settings.ShowStatusBar = "Exibir a Barra de Status"
Menu.Settings.OpenSettingsFolder = "Abrir o Diretório das Configurações"
Menu.Help = "Ajuda"
Menu.Help.About = "Sobre o |"
Settings = "Configurações"
Settings.Common.Assign = "Atribuir"
Settings.Common.AssignLowercase = "atribuir"
Settings.Common.Mapping = "Mapear"
Settings.Common.MappingAssigned = "O Mapeamento foi Atribuído."
Settings.Common.PressKeyOrButtonForMapping = "Pressione uma tecla ou botão para fazer o mapeamento"
Settings.Common.FrameLowercase = "quadro"
Settings.Video.ColorAdjustment = "Ajuste de Cores"
Settings.Video.Luminance = "Luminância"
Settings.Video.Saturation = "Saturação"
Settings.Video.Gamma = "Gamma"
Settings.Video.DimVideoWhenIdle = "Escurecer o vídeo enquanto estiver inativo"
Settings.Video.DimVideoWhenIdle.tooltip = "Escurece o vídeo para indicar que a emulação não está em execução."
Settings.Video.DrawSnowEffectWhenIdle = "Criar efeitos de neve enquanto estiver inativo"
Settings.Audio.Effects = "Efeitos"
Settings.Audio.Skew = "Desvio"
Settings.Audio.Skew.tooltip = "
Ajusta a quantidade do desvio da frequência (em Hz).
Este é um controle da taxa estática.
Primeiro, ative a sincronização do vídeo e do áudio.
Depois, aumente ou diminua este valor para tentar reduzir os erros.
Em uma direção ajudará o vídeo mas prejudicará o áudio.
Na outra direção fará o contrário.
A idéia é encontrar o melhor meio-termo entre ambos.
Quando for usar o controle de taxa dinâmica, procure manter este valor em 0.
"
Settings.Audio.Volume = "Volume"
Settings.Audio.Volume.tooltip = "
Ajusta a saída do volume do áudio.
Se possível, não utilize valores acima de 100%!
Caso contrário ocorrerá distorções e o ceifamento
(clipping) do áudio.
"
Settings.Audio.Balance = "Balanço"
Settings.Audio.Balance.tooltip = "
Desvia o áudio para o canal esquerdo (valores baixos) ou para
o canal direito (valores altos).
Fica centralizado quando for 50%, esta é a configuração recomendada.
"
Settings.Audio.MuteWhenUnfocused = "Muta o áudio quando estiver fora de foco"
Settings.Input = "Entrada"
Settings.Input.WhenFocusIsLost = "Quando o foco da janela for perdido"
Settings.Input.WhenFocusIsLost.PauseEmulation = "Pausa a emulação"
Settings.Input.WhenFocusIsLost.BlockInput = "Bloqueia a entrada"
Settings.Input.WhenFocusIsLost.AllowInput = "Permite a entrada"
Settings.Input.Port = "Porta"
Settings.Input.Device = "Dispositivo"
Settings.Input.TurboRate = "Taxa do turbo"
Settings.Input.TurboRate.tooltip = "A quantidade de frames para esperar enquanto aguarda entre o acionamento dos botões de turbo."
Settings.Input.MouseLeft = "Mouse Esquerdo"
Settings.Input.MouseMiddle = "Mouse Meio"
Settings.Input.MouseRight = "Mouse Direito"
Settings.Input.MouseXAxis = "Mouse eixo-X"
Settings.Input.MouseYAxis = "Mouse eixo-Y"
Settings.Hotkeys = "Atalhos"
Settings.Hotkeys.CombinationalLogic = "Lógica combinacional"
Settings.Hotkeys.CombinationalLogic.tooltip = "
Determina se todos ou quaisquer um dos mapeamentos devem ser pressionados para ativar as teclas de atalho.
Use a lógica “AND” caso queira que as combinações do teclado como Ctrl+F seja usado para acionar uma tecla de atalho.
Use a lógica “OR” caso queira que tanto o teclado quanto o joypad acionem a mesma tecla de atalho.
"
Settings.Hotkeys.CombinationalLogic.And = "AND"
Settings.Hotkeys.CombinationalLogic.And.tooltip = "Para cada mapeamento, deve ser pressionado para ativar um determinado atalho."
Settings.Hotkeys.CombinationalLogic.Or = "OR"
Settings.Hotkeys.CombinationalLogic.Or.tooltip = "Para qualquer mapeamento, pode pode ser pressionado para ativar um determinado atalho."
Settings.Hotkeys.Rewind.enableFirst = "Primeiro ative a opção de retrocesso em “Configurações” → “Emulador”"
Settings.BuiltinHotkeys = "Atalhos (predefinidos)"
Settings.Paths = "Caminhos"
Settings.Paths.Games = "Games"
Settings.Paths.Patches = "Patches"
Settings.Paths.Saves = "Saves"
Settings.Paths.Cheats = "Cheats"
Settings.Paths.States = "States"
Settings.Paths.Screenshots = "Screenshots"
Settings.Paths.LastRecentlyUsed = "recentemente usado por último"
Settings.Paths.SameAsLoadedGame = "o mesmo que jogo carregado"
Settings.Emulator = "Emulador"
Settings.Emulator.General = "Geral"
Settings.Emulator.General.warnOnUnverifiedGames = "Avise quando for abrir jogos que não foram verificados"
Settings.Emulator.General.autoSaveMemory = "Salve a memória periodicamente"
Settings.Emulator.General.autoSaveStateOnUnload = "Salve um estado para desfazer (undo) quando descarregar os jogos"
Settings.Emulator.General.AutoResumeOnLoad = "Continuar ao carregar o jogo"
Settings.Emulator.General.UseNativeFileDialogs = "Utilizar diálogos nativos do arquivo"
Settings.Emulator.FastForward = "Avanço rápido"
Settings.Emulator.FastForward.FrameSkip = "Ignorar quadro"
Settings.Emulator.FastForward.FrameSkip.tooltip = "
Define a quantidade de quadros que serão ignorados durante o avanço rápido.
Isto permite a máxima taxa de avanço rápido dos quadros.
"
Settings.Emulator.FastForward.FrameSkip.Frames2to4 = "| quadros"
Settings.Emulator.FastForward.FrameSkip.Frames = "| quadros"
Settings.Emulator.FastForward.Limiter = "Limitador"
Settings.Emulator.FastForward.Limiter.tooltip = "Define a velocidade máxima do avanço rápido."
Settings.Emulator.FastForward.mute = "Mutar enquanto estiver em avanço rápido"
Settings.Emulator.Rewind = "Retroceder"
Settings.Emulator.Rewind.Frequency = "Frequência"
Settings.Emulator.Rewind.Frequency.everyFrames = "Todo | quadros"
Settings.Emulator.Rewind.Length = "Comprimento"
Settings.Emulator.Rewind.Length.states = "| estados"
Settings.Emulator.Rewind.mute = "Mutar enquanto estiver retrocedendo"
Settings.Enhancements = "Aprimoramentos"
Settings.Enhancements.FastMode = "Modo rápido"
Settings.Enhancements.RunAhead = "Executar com Antecedência"
Settings.Enhancements.RunAhead.Frames = "quadros"
Settings.Enhancements.RunAhead.One = "Um"
Settings.Enhancements.RunAhead.Two = "Dois"
Settings.Enhancements.RunAhead.Three = "Três"
Settings.Enhancements.RunAhead.Four = "Quatro"
Settings.Enhancements.Overclocking = "Overclocking"
Settings.Enhancements.Ppu.Video = "vídeo"
Settings.Enhancements.Ppu.Deinterlace = "Desentrelaçamento"
Settings.Enhancements.Ppu.NoSpriteLimit = "Sem limite do sprite"
Settings.Enhancements.hdMode7.FastPpuOnly = "somente a PPU rápida"
Settings.Enhancements.hdMode7.Scale = "Escala"
Settings.Enhancements.hdMode7.PerspectiveCorrection = "Correção da perspectiva"
Settings.Enhancements.hdMode7.Supersampling = "Super amostragem"
Settings.Enhancements.hdMode7.HdToSdMosaic = "Mosaico HD→SD"
Settings.Enhancements.Dsp.Audio = "áudio"
Settings.Enhancements.Dsp.CubicInterpolation = "Interpolação Cúbica"
Settings.Enhancements.Coprocessors = "Co-processadores"
Settings.Enhancements.Coprocessors.PreferHle = "Prefira emulação de alto nível (HLE)"
Settings.Enhancements.Coprocessors.PreferHle.tooltip = "
Quando estiver selecionado, uma emulação HLE menos precisa será utilizada quando estiver disponível.
Quando não estiver selecionado, a emulação HLE apenas será utilizada quando o firmware de uma emulação
de baixo nível (LLE) estiver faltando.
"
Settings.Enhancements.GameEnhancements = "Aprimoramentos do Jogo"
Settings.Enhancements.GameEnhancements.Hotfixes = "Correções (Hotfix)"
Settings.Enhancements.GameEnhancements.Hotfixes.tooltip = "
Até mesmo o software que foi licenciado e disponibilizado comercialmente possuí erros.
Está opção irá corrigir certos problemas que até mesmo ocorrem em um hardware físico.
"
Settings.Compatibility = "Compatibilidade"
Settings.Compatibility.entropy = "Entropia (randomização)"
Settings.Compatibility.entropy.None.tooltip = "
Toda a memória e os registros são inicializados com valores constantes durante a iniciação.
Utilize esta opção para ativar a compatibilidade com demonstrações da comunidade e jogos homebrew.
"
Settings.Compatibility.entropy.Low = "Baixo"
Settings.Compatibility.entropy.Low.tooltip = "
Toda a memória é randomizada com padrões repetidos, todos os registros são randomizados durante a iniciação.
Utilize esta opção para obter uma representação precisa de um SNES real.
"
Settings.Compatibility.entropy.High = "Alto"
Settings.Compatibility.entropy.High.tooltip = "
Toda a memória e os registros são randomizados o máximo possível.
Para garantir o máximo de compatibilidade possível com o hardware real,
utilize esta opção quando estiver desenvolvendo um novo software para o SNES.
"
Settings.Compatibility.cpu.Processor = "processador"
Settings.Compatibility.cpu.FastMath = "Matemática rápida"
Settings.Compatibility.cpu.FastMath.tooltip = "
As multiplicações e divisões feitas pelo processador levam tempo para serem concluídas em um SNES real.
Emuladores mais antigos não simulavam estes atrasos dando resultados instantâneos.
Alguns hacks das ROMS antigas não esperam pelas operações matemáticas para serem concluídas e precisam deste hack.
"
Settings.Compatibility.ppu.Video = "vídeo"
Settings.Compatibility.ppu.NoVramBlocking = "Nenhum bloqueio na memória de vídeo (VRAM)"
Settings.Compatibility.ppu.NoVramBlocking.tooltip = "
Esta opção permite emular um bug das versões mais antigas do ZSNES e do Snes9x onde o bloqueio da VRAM não foi emulado.
Alguns hacks das ROMS mais antigas dependem deste comportamento e renderizarão os gráficos de forma errada caso não seja ativado.
Isto não só é extremamente impreciso para o hardware real como também prejudica a velocidade da PPU rápida.
Não ative esta opção a menos que você precise jogar um jogo que funcione de forma incorreta.
"
Settings.Compatibility.dsp.Audio = "áudio"
Settings.Compatibility.dsp.EchoShadowRam = "Ecoa o sombreamento da RAM"
Settings.Compatibility.dsp.EchoShadowRam.tooltip = "
Esta opção ativa a emulação de um erro no ZSNES onde o ecoamento da RAM foi tratada como uma APU RAM separada.
Muitos hacks das ROMS antigas para “Super Mario World” dependem deste comportamento, e irão travar se a opção não for ativada.
É no entanto extremamente impreciso para o hardware real e não deve ser ativada a não ser que seja necessário.
"
Settings.Drivers = "Controladores"
Settings.Drivers.Driver = "Controlador"
Settings.Drivers.Change = "Alterar"
Settings.Drivers.Reload = "Recarregar"
Settings.Drivers.ExclusiveMode = "Modo exclusivo"
Settings.Drivers.Synchronize = "Sincronizar"
Settings.Drivers.ActiveDriver = "Ativa o controlador"
Settings.Drivers.changeConfirm.title = "Alternar o controlador?"
Settings.Drivers.changeConfirm = "
Atenção: controladores que não sejam compatíveis podem causar o travamento do programa.
É altamente recomendável que você descarregue o seu jogo primeiro, por garantia.
Ainda assim deseja prosseguir com a troca do controlador?
"
Settings.noteGameRestart = "Observação: algumas configurações não serão aplicadas caso o jogo não seja recarregado."
Settings.Drivers.Video.failedToInitialize = "Falha ao inicializar [|] o controlador do vídeo"
Settings.Drivers.Video.FullScreenMonitor = "Monitor da tela inteira"
Settings.Drivers.Video.FullScreenMonitor.tooltip = "Define qual o monitor de vídeo será colocado em modo de tela inteira."
Settings.Drivers.Video.Format = "Formato"
Settings.Drivers.Video.ExclusiveMode.tooltip = "
Faz com que o modo de tela inteira assuma todos os monitores.
Permite que o sincronismo adaptativo trabalhe melhor e reduza a latência na entrada.
Contudo, usuários que usem mais de um monitor devem desativar esta opção.
Observação: O modo exclusivo do Direct3D também não respeita o monitor que foi requisitado.
"
Settings.Drivers.Video.Synchronize.tooltip = "
Antes que os quadros sejam renderizados, aguarda a disponibilidade
da placa de vídeo.
Elimina a queda ou a duplicação dos quadros, porém pode distorcer
o áudio.
Para esta opção é aconselhável desativar a sincronização do áudio
e ative o controle da taxa dinâmica. Ou ajuste o desvio do áudio
para reduzir o esvaziamento ou o transbordamento da memória
intermediária (buffer).
"
Settings.Drivers.Video.GpuSync = "Sincronização da GPU"
Settings.Drivers.Video.GpuSync.tooltip = "
(Apenas para o controlador OpenGL)
Faz com que a GPU aguarde até que os quadros estejam
totalmente renderizados.
Na melhor hipótese, isso pode remover até um quadro de atraso
(lag) da entrada.
No entanto, isso ocorre com uma penalidade de 20% no desempenho.
Mantenha esta opção desativada a menos que sinta a necessidade de utilizá-la.
"
Settings.Drivers.Audio.failedToInitialize = "Falha ao inicializar [|] o controlador do áudio"
Settings.Drivers.Audio.OutputDevice = "Dispositivo de Saída"
Settings.Drivers.Audio.SampleRate = "Taxa de Amostragem"
Settings.Drivers.Audio.Latency = "Latência"
Settings.Drivers.Audio.ExclusiveMode.tooltip = "
(Apenas para o controlador WASAPI)
Obtém o controle exclusivo do dispositivo da placa de som.
Isto redu consideravelmente a latência do áudio.
No entanto, bloqueia o áudio dos outros aplicativos.
"
Settings.Drivers.Audio.Synchronize.tooltip = "
Aguarda até que a placa de som esteja pronta para gerar as amostragens.
Elimina a distorção do áudio, porém pode distorcer o vídeo.
Para esta opção é recomendável desativar a sincronização do vídeo.
Utilize esta opção com monitores com sincronismo adaptativo para obter
um melhor desemprenho.
"
Settings.Drivers.Audio.DynamicRate = "Taxa dinâmica"
Settings.Drivers.Audio.DynamicRate.tooltip = "
(Apenas para os controladores OSS, XAudio2 e waveOut)
Ajusta de forma dinâmica a frequência do áudio em pequenas quantidades.
Utilize com a opção de sincronização do vídeo ativada e a
sincronização do áudio desativada.
Esta opção pode produzir vídeos sem travamentos e áudio limpo,
apenas se a taxa de atualização do seu monitor estiver
configurado de forma correta:
60 Hz para jogos NTSC e 50 Hz para jogos PAL.
"
Settings.Drivers.Input.failedToInitialize = "Falha ao inicializar [|] o controlador da entrada"
Settings.Drivers.Input.Reload.tooltip = "
A atualização do controlador pode ser utilizado para
detectar dispositivos recém conectados.
É útil para APIs que não sejam compatíveis com a auto
detecção dos dispositivos recém conectados, como o
DirectInput e o SDL.
"
Settings.Drivers.syncModePresets = "Predefinição do Modo de Sincronização"
Settings.Drivers.syncModePresets.requirements = "
Sincronismo Adaptativo: requer monitores com tecnologia G-Sync ou FreeSync.
Taxa de Controle Dinâmico: requer um monitor e para que as taxas de atualização de um SNES coincidam.
"
Settings.Drivers.syncModePresets.AdaptiveSync = "Sincronismo Adaptativo"
Settings.Drivers.syncModePresets.AdaptiveSync.failure = "
A configuração do controlador atual não é compatível com o modo de sincronismo adaptativo.
O sincronismo adaptativo requer que a sincronização do áudio seja compatível.
"
Settings.Drivers.syncModePresets.AdaptiveSync.success = "
O sincronismo adaptativo funciona melhor em modo exclusivo
de tela inteira.
Use a menor configuração de latência de áudio que o seu sistema suportar.
É necessário o uso de um monitor G-Sync ou FreeSync.
O sincronismo adaptativo deve estar ativo no painel de
configuração do seu controlador.
"
Settings.Drivers.syncModePresets.DynamicRateControl = "Controle de Taxa Dinâmica"
Settings.Drivers.syncModePresets.DynamicRateControl.failure = "
A configuração do controlador atual não é compatível com o modo de controle de taxa dinâmica.
O controle da taxa dinâmica requer a sincronização do vídeo e compatibilidade da taxa
dinâmica do áudio.
"
Settings.Drivers.syncModePresets.DynamicRateControl.success = "
O controle da taxa dinâmica requer que o seu monitor trabalhe com:
Uma taxa de atualização de 60 Hz para jogos NTSC e 50 Hz para jogos PAL.
Use a menor configuração de latência de áudio que o seu sistema suportar.
"
Settings.BuiltinHotkeys.CheckAll = "Selecionat Todos"
Settings.BuiltinHotkeys.UncheckAll = "De-selecionar Todos"
Tools = "Tools"
Tools.SaveState = "Salvar o Estado"
Tools.SaveState.Slot = "Slot"
Tools.SaveState.Slot.Empty = "vazio"
Tools.LoadState = "Carregar o Estado"
Tools.LoadState.SelectedStateSlot = "Selecionar o slot do estado"
Tools.LoadState.UndoLastSave = "Desfazer o Último Salvamento"
Tools.LoadState.RedoLastUndo = "Refazer o Último Salvamento"
Tools.LoadState.RemoveAllStates = "Excluir Todos os Estados"
Tools.LoadState.RemoveAllStates.confirm.title = "Remover os estados rápidos?"
Tools.LoadState.RemoveAllStates.confirm = "Tem certeza que deseja remover todos os estados rápidos de forma permanente para este jogo?"
Tools.Speed = "Velocidade"
Tools.Speed.Slowest = "Mais lento"
Tools.Speed.Slow = "Lento"
Tools.Speed.Normal = "Normal"
Tools.Speed.Fast = "Rápido"
Tools.Speed.Fastest = "Mais rápido"
Tools.RunMode = "Modo de Execução"
Tools.RunMode.Normal = "Normal"
Tools.RunMode.PauseEmulation = "Pausar a Emulação"
Tools.RunMode.FrameAdvance = "Avançar Quadro"
Tools.Movie = "Movie"
Tools.Movie.Play = "Reproduzir"
Tools.Movie.Record = "Gravar"
Tools.Movie.ResetAndRecord = "Reiniciar e Gravar"
Tools.Movie.Stop = "Parar"
Tools.TakeScreenshot = "Tirar uma foto da tela"
Tools.CheatFinder = "Localizador de Trapaças"
Tools.CheatFinder.Address = "Endereço"
Tools.CheatFinder.Value = "Valor"
Tools.CheatFinder.Scan = "Scan"
Tools.CheatFinder.All = "Todos"
Tools.CheatEditor = "Editor de Trapaças"
Tools.CheatEditor.remove.confirm.title = "Remover a(s) Trapaça(s)?"
Tools.CheatEditor.remove.confirm = "Tem certeza que deseja remover a(s) trapaça(s) selecionada(s) de forma permanente?"
Tools.CheatEditor.Codes = "Código(s)"
Tools.CheatEditor.Enable = "Ativar"
Tools.CheatEditor.SelectAll = "Selecionar Todos"
Tools.CheatEditor.UnselectAll = "De-selecionar Todos"
Tools.CheatEditor.AddCheats = "Adicionar Trapaças"
Tools.CheatEditor.AddCheat = "Adicionar Trapaça"
Tools.CheatEditor.EditCheat = "Editar Trapaça"
Tools.CheatEditor.Edit = "Editar"
Tools.CheatEditor.FindCheats = "Localizar Trapaças"
Tools.CheatEditor.noCheats = "Sinto mas nenhuma trapaça foi encontrada para este jogo."
Tools.CheatEditor.EnableCheats = "Ativar Trapaças"
Tools.CheatEditor.EnableCheats.tooltip = "
O mestre ativa todas as trapaças.
Nenhuma trapaça será ativada quando não estiver selecionado.
Use para contornar as áreas do jogo que tenham problemas com trapaças.
"
Tools.CheatEditor.EnableCheats.disabled = "All cheat codes are disabled"
Tools.CheatEditor.EnableCheats.enabled = "Active cheat codes are enabled"
Tools.CheatEditor.invalidFormat = "Invalid code(s), please only use codes in the following format"
Tools.StateManager = "Gerenciador de Estado"
Tools.StateManager.Category = "Categoria"
Tools.StateManager.Category.ManagedStates = "Estados que já Foram Gerenciados"
Tools.StateManager.Category.QuickStates = "Estados Rápidos"
Tools.StateManager.QuickStates.Redo = "Refazer"
Tools.StateManager.QuickStates.Undo = "Desfazer"
Tools.StateManager.Preview = "Prever"
Tools.StateManager.AddState = "Adicionar um Estado"
Tools.StateManager.RenameState = "Renomear um Estado"
Tools.StateManager.remove.confirm.title = "Remover o(s) Estado(s)?"
Tools.StateManager.remove.confirm = "Tem certeza que deseja apagar de forma permanente o(s) estado(s) selecionado(s)?"
Tools.ManifestViewer = "Visualizador do Manifesto"
Tools.ManifestViewer.Manifest = "Manifesto"
Game.VerifiedGameOpened = "Um jogo verificado foi aberto"
Game.GameOpened = "O jogo foi aberto"
Game.GameClosed = "O jogo foi fechado"
Game.GameReset = "Reiniciar o Jogo"
Game.AndPatchApplied = " e uma correção foi aplicada"
Game.GameOpeningCancelled = "A abertura do jogo foi cancelada"
Game.unverifiedGameWarning.title = "Imagem de um jogo ainda não verificado"
Game.unverifiedGameWarning = "
Aviso: a imagem deste jogo não foi verificada.
Rodá-la pode ser um risco de segurança.
Deseja rodar o jogo mesmo assim?
"
Game.unverifiedGameWarning.alwaysQuestion.title = "Desativar os avisos?"
Game.unverifiedGameWarning.alwaysQuestion = "Deseja desativar os avisos quando tentar rodar jogos não verificados?"
Program.Paused = "Pausado"
Program.Unloaded = "Descarregado"
Program.CapturedScreenshot = "Um captura da tela foi feita"
Program.Open.MissingRequiredData = "Faltam dados necessários"
Program.Load.LoadGameBoyRom = "Carregar uma ROM do Game Boy"
Program.Load.GameBoyRoms = "ROMs do Game Boy"
Program.Load.LoadBsMemoryRom = "Carregar ROM BS Memory"
Program.Load.BsMemoryRoms = "ROMs BS Memory"
Program.Load.LoadSufamiTurboRomSlot = "Carregar Sufami Turbo ROM Slot"
Program.Load.SufamiTurboRoms = "ROMs Sufami Turbo"
About.Version = "Versão"
About.Copyright = "Direito Autoral"
About.License = "Licença"
About.Website = "Página da web"
About.SameBoy.description = "Emulador do Super Game Boy"
About.Bsnes.description = "Emulador do Super Nintendo"
About.Bsnes.copyright = "byuu et al"
About.Bsnes.license = "GPLv3 ou mais recente"
Browser.OpenSnesRom = "Abrir uma ROM do SNES"
Browser.SnesRoms = "ROMs do SNES"
Browser.AllFiles = "Todos os Arquivos"
Browser.Select = "Selecionar"
Browser.SelectFolder = "Selecionar uma Pasta"
Browser.ChooseFolder = "Escolha uma pasta"
Browser.ShowHidden = "Exibir Itens Escondidos"
Browser.OpenFile = "Abrir um Arquivo"
Browser.OpenFiles = "Abrir os Arquivos"
Browser.OpenFolder = "Abrir uma Pasta"
Browser.OpenObject = "Abrir um Objeto"
Browser.Rename.EnterNewFolderName = "Digite um nome para a nova pasta"
Browser.Rename.EnterNewFileName = "Digite um nome para o novo arquivo"
Browser.Rename.FailedToRenameFolder = "Houve uma falha ao renomear a pasta."
Browser.Rename.FailedToRenameFile = "Houve uma falha ao renomear o arquivo."
Browser.Create = "Criar"
Browser.Create.EnterName = "Digite um nome"
Browser.CreateFolder = "Criar um Diretório"
Browser.CreateFolder.EnterNewFolderName = "Digite um nome para o novo diretório"
Browser.Delete.DeleteSelected = "Excluir os Selecionados"
Browser.Delete.FailedToDelete = "Falha ao excluir |. Continuar tentando a remoção dos itens restantes?"
Browser.Delete.confirm = "Tem certeza que deseja apagar de forma permanente o |"
Browser.Delete.confirm.item = "o item selecionado"
Browser.Delete.confirm.items = "os itens selecionados"
Browser.SaveFile = "Salvar o Arquivo"
Browser.SaveFile.fileExists.title = "Sobrescrever o arquivo?"
Browser.SaveFile.fileExists = "O arquivo já existe. Sobrescrever?"
StatusIcon.verifiedRom.tooltip = "
Esta é a imagem de um jogo conhecido.
A emulação da PCB será 100% precisa.
"
StatusIcon.unverifiedRom.tooltip = "
Esta é uma imagem de jogo não verificada.
A emulação da PCB depende de investigação.
"
ResetDrivers.message.title = "Redefinir os controladores"
ResetDrivers.message = "
Os controladores do hardware foram redefinidos de acordo com a opção da
linha de comando `--resetdrivers`.
Reconfigure os controladores na janela que vai abrir em
“Configurações” → “Controladores”.
"
Rewind.HistoryExhausted = "Esgotamento do histórico da retrocedência"
States.incompatibleFormat = "[|] está em um formato incompatível"
States.Loaded = "Carregado"
States.NotFound = "[|] não foi encontrado"
States.FailedToSave = "Falha ao salvar [|]"
States.UnableToWriteToDisk = "Impossível escrever [|] no disco"
States.Saved = "Salvo [|]"
Patch.ipsWarning = "
(Você está vendo esta mensagem porque o o IPS é um formato terrível para um arquivo patch e ninguém consegue concordar se
as ROMs do SNES devem conter cabeçalhos ou não.
Considere falar com o autor da correção da possibilidade dele usar correções em formato BPS.)
Esta correção IPS espera que seja aplicada em uma ROM com cabeçalho?
Na incerteza tente “Não”, caso falhe, tente novamente com “Sim”.
"
Patch.ensureHeaderless = "Tenha certeza de estar utilizando a ROM (sem cabeçalho) para esta correção."
Movies.PlayMovie = "Reproduzir o Filme"
Movies.Movies = "Filmes"
Movies.playbackStarted = "A reprodução do filme foi iniciada"
Movies.playbackStopped = "A reprodução do filme foi parada"
Movies.formatNotSupported = "O formato do filme não é compatível"
Movies.recordingStarted = "A gravação do filme foi iniciada"
Movies.SaveMovie = "Salvar o Filme"
Movies.MovieRecorded = "Filme Gravado"
Movies.MovieNotRecorded = "O filme não foi gravado"
Movies.cantRecord = "O filme não pode ser gravado"
Devices.Gamepad = "Gamepad"
Devices.Mouse = "Mouse"
Hotkeys.ToggleMouseCapture = "Alterna a Captura do Mouse"
Hotkeys.ToggleCheatCodes = "Alterna os Códigos de Trapaça"
Hotkeys.Rewind = "Retroceder"
Hotkeys.LoadUndoState = "Carregar o Arquivo Desfazer"
Hotkeys.LoadRedoState = "Carregar o Arquivo Refazer"
Hotkeys.DecrementStateSlot = "Decréscimo do Slot de Estado"
Hotkeys.IncrementStateSlot = "Acréscimo do Slot de Estado"
Hotkeys.FastForward = "Avanço Rápido"
Hotkeys.FrameAdvance = "Avanço do Quadro"
Hotkeys.DecreaseHDMode7 = "Decréscimo do HD Mode 7"
Hotkeys.IncreaseHDMode7 = "Acréscimo do HD Mode 7"
Hotkeys.ToggleSupersampling = "Alternar a Super Amostragem"
Hotkeys.ResetEmulation = "Reiniciar a Emulação"
Hotkeys.QuitEmulator = "Encerrar o Emulador"

View file

@ -0,0 +1,625 @@
Translation.language = "Russian"
Translation.author = "Marat Tanalin"
Translation.version = "1.3"
Common.Yes = "Да"
Common.No = "Нет"
Common.Cancel = "Отмена"
Common.Always = "Всегда"
Common.AreYouSure = "Вы уверены?"
Common.Open = "Открыть"
Common.Load = "Загрузить"
Common.Save = "Сохранить"
Common.Add = "Добавить"
Common.Remove = "Удалить"
Common.Delete = "Удалить"
Common.Rename = "Переименовать"
Common.Reset = "Сброс"
Common.Clear = "Очистить"
Common.None = "Нет"
Common.Disabled = "Отключено"
Common.Default = "По умолчанию"
Common.Name = "Название"
Common.Date = "Дата"
Common.Success = "Успех"
Common.Failure = "Неудача"
Common.Error = "Ошибка"
Common.Warning = "Внимание"
Common.Auto = "Авто"
Common.Video = "Видео"
Common.Audio = "Звук"
Common.Fps = "к/с"
Common.Hz = "Гц"
Common.number = "№"
Menu.File = "Файл"
Menu.File.OpenGame = "Открыть игру"
Menu.File.OpenRecentGame = "Открыть недавнюю игру"
Menu.File.OpenRecentGame.ClearList = "Очистить список"
Menu.File.OpenRecentGame.ClearList.confirm.title = "Очистить список недавних игр?"
Menu.File.OpenRecentGame.ClearList.confirm = "Вы уверены, что хотите очистить список недавних игр?"
Menu.File.OpenRecentGame.NoRecentGames = "Нет недавних игр"
Menu.File.CloseGame = "Закрыть игру"
Menu.File.Exit = "Выход"
Menu.System = "Система"
Menu.System.ControllerPort = "Порт контроллера"
Menu.System.ExpansionPort = "Порт расширения"
Menu.Settings.Size = "Размер"
Menu.Settings.Size.ShrinkWindowToSize = "Подогнать окно под размер"
Menu.Settings.Size.CenterWindow = "Центрировать окно"
Menu.Settings.Size.FullScreenMode = "Полноэкранный режим"
Menu.Settings.Size.PseudoFullScreenMode = "Псевдополноэкранный режим"
Menu.Settings.Output = "Изображение"
Menu.Settings.Output.Center = "По центру"
Menu.Settings.Output.PixelPerfect = "Целочисленное масштабирование"
Menu.Settings.Output.Scale = "Масштабирование с сохранением пропорций"
Menu.Settings.Output.Stretch = "Растяжение без сохранения пропорций"
Menu.Settings.Output.AspectRatioCorrection = "Коррекция соотношения сторон"
Menu.Settings.Output.parInsteadOfAr = "PAR 8:7 вместо AR 4:3"
Menu.Settings.Output.ShowOverscanArea = "Показать область «overscan»"
Menu.Settings.Output.scalingInfo = "Информация о масштабировании в строке состояния"
Menu.Settings.Output.HiresBlurEmulation = "Эмуляция размытия в режиме высокого разрешения"
Menu.Settings.Filter = "Фильтр"
Menu.Settings.Shader = "Шейдер"
Menu.Settings.Shader.Blur = "Размытие"
Menu.Settings.MuteAudio = "Выключить звук"
Menu.Settings.ShowStatusBar = "Показать строку состояния"
Menu.Settings.OpenSettingsFolder = "Открыть папку настроек"
Menu.Help = "Справка"
Menu.Help.About = "О программе |"
Settings = "Настройки"
Settings.Common.Assign = "Задать"
Settings.Common.AssignLowercase = "задать"
Settings.Common.Mapping = "Привязка"
Settings.Common.MappingAssigned = "Привязка задана."
Settings.Common.PressKeyOrButtonForMapping = "Нажмите клавишу или кнопку для привязки"
Settings.Common.FrameLowercase = "кадр"
Settings.Video.ColorAdjustment = "Настройка цвета"
Settings.Video.Luminance = "Яркость"
Settings.Video.Saturation = "Насыщенность"
Settings.Video.Gamma = "Контрастность"
Settings.Video.DimVideoWhenIdle = "Затемнять изображение при простое"
Settings.Video.DimVideoWhenIdle.tooltip = "Затемняет изображение, чтобы показать, что эмуляция приостановлена."
Settings.Video.DrawSnowEffectWhenIdle = "Применять эффект снега при простое"
Settings.Audio.Effects = "Эффекты"
Settings.Audio.Skew = "Частота"
Settings.Audio.Skew.tooltip = "
Изменяет частоту дискретизации на заданную величину (в Гц).
По сути это статическое управление частотой.
Сначала включите синхронизацию как для видео, так и для звука.
Затем попробуйте увеличить или уменьшить это значение для уменьшения ошибок.
Изменение в одном направлении положительно скажется на видео, но отрицательно — на звуке.
Изменение в другом направлении приведёт к обратному результату.
Смысл в том, чтобы найти наилучший компромисс.
При динамическом управлении частотой используйте значение 0.
"
Settings.Audio.Volume = "Громкость"
Settings.Audio.Volume.tooltip = "
Изменяет громкость звука.
По возможности не следует использовать значения выше 100%!
В противном случае возможны искажения из-за превышения максимально возможного уровня.
"
Settings.Audio.Balance = "Панорама"
Settings.Audio.Balance.tooltip = "
Панорамирует звук влево (меньшие значения) или вправо (более высокие значения).
Рекомендуемое значение — 50% (по центру).
"
Settings.Audio.MuteWhenUnfocused = "Отключать звук при неактивном окне программы"
Settings.Input = "Устройства ввода"
Settings.Input.WhenFocusIsLost = "При неактивном окне программы"
Settings.Input.WhenFocusIsLost.PauseEmulation = "Приостановить эмуляцию"
Settings.Input.WhenFocusIsLost.BlockInput = "Блокировать ввод"
Settings.Input.WhenFocusIsLost.AllowInput = "Разрешить ввод"
Settings.Input.Port = "Порт"
Settings.Input.Device = "Устройство"
Settings.Input.TurboRate = "Частота турбо"
Settings.Input.TurboRate.tooltip = "Количество кадров между срабатываниями турбо-кнопок."
Settings.Input.MouseLeft = "Левая кнопка мыши"
Settings.Input.MouseMiddle = "Средняя кнопка мыши"
Settings.Input.MouseRight = "Правая кнопка мыши"
Settings.Input.MouseXAxis = "Мышь по оси X"
Settings.Input.MouseYAxis = "Мышь по оси Y"
Settings.Hotkeys = "Горячие клавиши"
Settings.Hotkeys.CombinationalLogic = "Комбинационная логика"
Settings.Hotkeys.CombinationalLogic.tooltip = "
Определяет, все или любое из соответствий требуется нажать для активации горячих клавиш.
Используйте логику «И», если для активации горячих клавиш вам нужны такие сочетания клавиш, как Ctrl+F.
Используйте логику «ИЛИ», если для активации одних и тех же горячих клавиш вы хотите использовать как клавиатуру, так и геймпад.
"
Settings.Hotkeys.CombinationalLogic.And = "И"
Settings.Hotkeys.CombinationalLogic.And.tooltip = "Для активации заданных горячих клавиш требуется нажать все соответствия."
Settings.Hotkeys.CombinationalLogic.Or = "ИЛИ"
Settings.Hotkeys.CombinationalLogic.Or.tooltip = "Для активации заданных горячих клавиш можно нажать любое из соответствий."
Settings.Hotkeys.Rewind.enableFirst = "Пожалуйста, сначала включите поддержку перемотки: «Настройки» → «Эмулятор»"
Settings.BuiltinHotkeys = "Горячие клавиши (встроенные)"
Settings.Paths = "Пути"
Settings.Paths.Games = "Игры"
Settings.Paths.Patches = "Патчи"
Settings.Paths.Saves = "Сохранения"
Settings.Paths.Cheats = "Читы"
Settings.Paths.States = "Быстрые сохранения"
Settings.Paths.Screenshots = "Скриншоты"
Settings.Paths.LastRecentlyUsed = "последняя использованная папка"
Settings.Paths.SameAsLoadedGame = "папка текущей игры"
Settings.Emulator = "Эмулятор"
Settings.Emulator.General = "Общие"
Settings.Emulator.General.warnOnUnverifiedGames = "Предупреждать при открытии непроверенных игр"
Settings.Emulator.General.autoSaveMemory = "Периодически сохранять память"
Settings.Emulator.General.autoSaveStateOnUnload = "Сохранять состояние отмены действия при закрытии игр"
Settings.Emulator.General.AutoResumeOnLoad = "Возобновлять при загрузке"
Settings.Emulator.General.UseNativeFileDialogs = "Использовать стандартные окна открытия/сохранения файлов"
Settings.Emulator.FastForward = "Перемотка вперёд (Fast Forward)"
Settings.Emulator.FastForward.FrameSkip = "Пропуск кадров"
Settings.Emulator.FastForward.FrameSkip.tooltip = "
Задаёт, сколько кадров пропускать при перемотке вперёд.
Пропуск кадров позволяет увеличить скорость перемотки.
"
Settings.Emulator.FastForward.FrameSkip.Frames2to4 = "| кадра"
Settings.Emulator.FastForward.FrameSkip.Frames = "| кадров"
Settings.Emulator.FastForward.Limiter = "Ограничение"
Settings.Emulator.FastForward.Limiter.tooltip = "Задаёт максимальную скорость при перемотке вперёд."
Settings.Emulator.FastForward.mute = "Отключать звук при перемотке вперёд"
Settings.Emulator.Rewind = "Перемотка назад (Rewind)"
Settings.Emulator.Rewind.Frequency = "Частота"
Settings.Emulator.Rewind.Frequency.everyFrames = "Каждые | кадров"
Settings.Emulator.Rewind.Length = "Длина"
Settings.Emulator.Rewind.Length.states = "| состояний"
Settings.Emulator.Rewind.mute = "Отключать звук при перемотке назад"
Settings.Enhancements = "Улучшения"
Settings.Enhancements.FastMode = "Быстрый режим"
Settings.Enhancements.RunAhead = "Опережающая эмуляция (Run-Ahead)"
Settings.Enhancements.RunAhead.Frames = "кадра"
Settings.Enhancements.RunAhead.One = "Один"
Settings.Enhancements.RunAhead.Two = "Два"
Settings.Enhancements.RunAhead.Three = "Три"
Settings.Enhancements.RunAhead.Four = "Четыре"
Settings.Enhancements.Overclocking = "Разгон"
Settings.Enhancements.Ppu.Video = "видео"
Settings.Enhancements.Ppu.Deinterlace = "Устранение чересстрочности"
Settings.Enhancements.Ppu.NoSpriteLimit = "Не ограничивать количество спрайтов"
Settings.Enhancements.hdMode7.FastPpuOnly = "только в быстром режиме PPU"
Settings.Enhancements.hdMode7.Scale = "Масштаб"
Settings.Enhancements.hdMode7.PerspectiveCorrection = "Коррекция перспективы"
Settings.Enhancements.hdMode7.Supersampling = "Избыточная выборка"
Settings.Enhancements.hdMode7.HdToSdMosaic = "Мозаичность HD→SD"
Settings.Enhancements.Dsp.Audio = "звук"
Settings.Enhancements.Dsp.CubicInterpolation = "Кубическая интерполяция"
Settings.Enhancements.Coprocessors = "Сопроцессоры"
Settings.Enhancements.Coprocessors.PreferHle = "Предпочитать высокоуровневую эмуляцию (HLE)"
Settings.Enhancements.Coprocessors.PreferHle.tooltip = "
Когда включено, менее точная высокоуровневая эмуляция будет использоваться всегда, когда возможно.
Когда выключено, высокоуровневая эмуляция будет использоваться только при отсутствии низкоуровневой (LLE) прошивки.
"
Settings.Enhancements.GameEnhancements = "Улучшения игр"
Settings.Enhancements.GameEnhancements.Hotfixes = "Исправления ошибок"
Settings.Enhancements.GameEnhancements.Hotfixes.tooltip = "
Даже в коммерчески лицензированных и официально выпущенных программах иногда есть ошибки.
Этот параметр исправит определённые проблемы, которые имели место на реальном оборудовании.
"
Settings.Compatibility = "Совместимость"
Settings.Compatibility.entropy = "Энтропия (степень случайности)"
Settings.Compatibility.entropy.None.tooltip = "
При запуске вся память и регистры устанавливаются в постоянные значения.
Используйте этот вариант для совместимости с очень старыми самодельными играми демосцены.
"
Settings.Compatibility.entropy.Low = "Низкая"
Settings.Compatibility.entropy.Low.tooltip = "
При запуске вся память заполняется повторяющимися случайными значениями, все регистры устанавливаются в случайные значения.
Используйте этот вариант для наиболее точного соответствия реальной SNES.
"
Settings.Compatibility.entropy.High = "Высокая"
Settings.Compatibility.entropy.High.tooltip = "
Вся память и регистры устанавливаются в максимально случайные значения.
Используйте этот вариант при разработке новых программ для SNES,
чтобы гарантировать максимальную совместимость с реальным оборудованием.
"
Settings.Compatibility.cpu.Processor = "процессор"
Settings.Compatibility.cpu.FastMath = "Быстрая математика"
Settings.Compatibility.cpu.FastMath.tooltip = "
На реальной SNES умножение и деление средствами процессора занимает время.
Старые эмуляторы не учитывали эти задержки и возвращали результат сразу.
Этот параметр нужен некоторым старым ROM-хакам, которые не ждали завершения математических операций.
"
Settings.Compatibility.ppu.Video = "видео"
Settings.Compatibility.ppu.NoVramBlocking = "Не блокировать видеопамять (VRAM)"
Settings.Compatibility.ppu.NoVramBlocking.tooltip = "
Этот параметр включает эмуляцию ошибки старых версий ZSNES and Snes9x, где не было эмуляции блокировки видеопамяти.
Некоторые старые ROM-хаки рассчитывали на это поведение и будут отрисовываться неправильно, если этот параметр не включить.
Это не только сильно отличается от поведения реального оборудования, но и снижает быстродействие быстрого PPU.
Не включайте этот параметр, если вам не требуется поиграть в игру, в противном случае работающую неправильно.
"
Settings.Compatibility.dsp.Audio = "звук"
Settings.Compatibility.dsp.EchoShadowRam = "Отображать теневую память (echo shadow RAM)"
Settings.Compatibility.dsp.EchoShadowRam.tooltip = "
Этот параметр включает эмуляцию ошибки ZSNES, где отображаемая память (echo RAM) рассматривалась отдельно от памяти APU.
Многие старые ROM-хаки «Super Mario World» рассчитывали на это поведение и не будут работать без включения этого параметра.
Однако это сильно отличается от поведения реального оборудования, и не следует включать этот параметр без необходимости.
"
Settings.Drivers = "Драйверы"
Settings.Drivers.Driver = "Драйвер"
Settings.Drivers.Change = "Изменить"
Settings.Drivers.Reload = "Перезагрузить"
Settings.Drivers.ExclusiveMode = "Эксклюзивный режим"
Settings.Drivers.Synchronize = "Синхронизация"
Settings.Drivers.ActiveDriver = "Активный драйвер"
Settings.Drivers.changeConfirm.title = "Изменить драйвер?"
Settings.Drivers.changeConfirm = "
Внимание: несовместимые драйверы могут привести к невозможности работы программы.
Для безопасности настоятельно рекомендуется сначала закрыть вашу игру.
Хотите ли вы изменить драйвер в любом случае?
"
Settings.noteGameRestart = "Примечание: некоторые настройки применяются только после перезагрузки игры."
Settings.Drivers.Video.failedToInitialize = "Не удалось инициализировать видеодрайвер [|]"
Settings.Drivers.Video.FullScreenMonitor = "Монитор для полноэкранного режима"
Settings.Drivers.Video.FullScreenMonitor.tooltip = "Задаёт, на какой монитор выводится изображение в полноэкранном режиме."
Settings.Drivers.Video.Format = "Формат"
Settings.Drivers.Video.ExclusiveMode.tooltip = "
Приводит к тому, что в полноэкранном режиме изображение занимает все мониторы.
Улучшает работу адаптивной синхронизации (adaptive sync) и уменьшает задержку ввода.
Однако пользователям многомониторных конфигураций имеет смысл отключить этот параметр.
Примечание: для Direct3D в эксклюзивном режиме также не учитывается выбранный монитор.
"
Settings.Drivers.Video.Synchronize.tooltip = "
Ожидает готовности видеокарты перед отрисовкой кадров.
Устраняет пропуск или повторение кадров, но может искажать звук.
При использовании этого параметра рекомендуется отключить синхронизацию
звука и включить динамическое управление частотой. Как вариант,
подстройте звуковой параметр «Частота» для снижения вероятности
опустошения или переполнения буфера.
"
Settings.Drivers.Video.GpuSync = "Синхронизация GPU"
Settings.Drivers.Video.GpuSync.tooltip = "
(Только для драйвера OpenGL)
Заставляет видеокарту ожидать, пока кадры не будут полностью отрисованы.
В лучшем случае это может устранить до одного кадра задержки ввода.
Однако при этом быстродействие снижается примерно на 20%.
Следует отключить этот параметр, если он вам не требуется.
"
Settings.Drivers.Audio.failedToInitialize = "Не удалось инициализировать аудиодрайвер [|]"
Settings.Drivers.Audio.OutputDevice = "Устройство вывода"
Settings.Drivers.Audio.SampleRate = "Частота дискретизации"
Settings.Drivers.Audio.Latency = "Задержка"
Settings.Drivers.Audio.ExclusiveMode.tooltip = "
(Только для драйвера WASAPI)
Включает исключительный доступ к звуковой карте.
Это может существенно снизить задержку вывода звука.
Однако звуки от всех других приложений заблокируются.
"
Settings.Drivers.Audio.Synchronize.tooltip = "
Ожидает готовности звуковой карты перед выводом звука.
Устраняет искажения звука, но может искажать видео.
При использовании этого параметра рекомендуется отключить синхронизацию видео.
Для наилучших результатов используйте этот параметр
с монитором, поддерживающим адаптивную синхронизацию.
"
Settings.Drivers.Audio.DynamicRate = "Динамическая частота"
Settings.Drivers.Audio.DynamicRate.tooltip = "
(Только для драйверов OSS, XAudio2, waveOut)
Динамически подстраивает частоту звука на небольшие величины.
Используйте при включённой синхронизации видео
и отключённой синхронизации звука.
Может обеспечить идеально плавное видео и чистый звук,
но только при правильно установленной частоте обновления монитора:
60 Гц для игр NTSC и 50 Гц для игр PAL.
"
Settings.Drivers.Input.failedToInitialize = "Не удалось инициализировать драйвер устройства ввода [|]"
Settings.Drivers.Input.Reload.tooltip = "
Перезагрузку драйвера можно использовать для обнаружения
устройств, подключённых в «горячем» режиме.
Полезно для программных интерфейсов (API), не поддерживающих
«горячее» подключение, таких как DirectInput и SDL.
"
Settings.Drivers.syncModePresets = "Предустановки режимов синхронизации"
Settings.Drivers.syncModePresets.requirements = "
Адаптивная синхронизация: требуется монитор с поддержкой G-Sync или FreeSync.
Динамическое управление частотой: частоты обновления монитора и SNES должны совпадать.
"
Settings.Drivers.syncModePresets.AdaptiveSync = "Адаптивная синхронизация"
Settings.Drivers.syncModePresets.AdaptiveSync.failure = "
Извините, текущая конфигурация драйверов несовместима с режимом адаптивной синхронизации.
Для адаптивной синхронизации требуется поддержка синхронизации звука.
"
Settings.Drivers.syncModePresets.AdaptiveSync.success = "
Адаптивная синхронизация лучше всего работает в эксклюзивном полноэкранном режиме.
Используйте минимальную задержку звука, которая возможна на вашей системе.
Требуется монитор с поддержкой G-Sync или FreeSync.
Требуется включить адаптивную синхронизацию в панели управления вашего видеодрайвера.
"
Settings.Drivers.syncModePresets.DynamicRateControl = "Динамическое управление частотой"
Settings.Drivers.syncModePresets.DynamicRateControl.failure = "
Извините, текущая конфигруация драйверов несовместима с режимом динамического управления частотой.
Для динамического управления частотой требуется поддержка вертикальной синхронизации и динамического изменения частоты звука.
"
Settings.Drivers.syncModePresets.DynamicRateControl.success = "
Для динамического управления частотой требуется, чтобы частота обновления вашего монитора была:
60 Гц для игр NTSC, 50 Гц для игр PAL.
Используйте минимальную задержку звука, которая возможна на вашей системе.
"
Settings.BuiltinHotkeys.CheckAll = "Включить всё"
Settings.BuiltinHotkeys.UncheckAll = "Выключить всё"
Tools = "Инструменты"
Tools.SaveState = "Сохранить состояние"
Tools.SaveState.Slot = "Слот"
Tools.SaveState.Slot.Empty = "пусто"
Tools.LoadState = "Загрузить состояние"
Tools.LoadState.SelectedStateSlot = "Выбран слот быстрого сохранения"
Tools.LoadState.UndoLastSave = "Отменить последнее сохранение"
Tools.LoadState.RedoLastUndo = "Вернуть последнее отменённое сохранение"
Tools.LoadState.RemoveAllStates = "Удалить все сохранения"
Tools.LoadState.RemoveAllStates.confirm.title = "Удалить быстрые сохранения?"
Tools.LoadState.RemoveAllStates.confirm = "Вы уверены, что хотите навсегда удалить все быстрые сохранения для этой игры?"
Tools.Speed = "Скорость"
Tools.Speed.Slowest = "Очень медленно"
Tools.Speed.Slow = "Медленно"
Tools.Speed.Normal = "Обычная скорость"
Tools.Speed.Fast = "Быстро"
Tools.Speed.Fastest = "Очень быстро"
Tools.RunMode = "Режим исполнения"
Tools.RunMode.Normal = "Обычный"
Tools.RunMode.PauseEmulation = "Приостановить эмуляцию"
Tools.RunMode.FrameAdvance = "Покадрово (Frame Advance)"
Tools.Movie = "Видеозапись"
Tools.Movie.Play = "Воспроизведение"
Tools.Movie.Record = "Запись"
Tools.Movie.ResetAndRecord = "Сброс и запись"
Tools.Movie.Stop = "Стоп"
Tools.TakeScreenshot = "Снять скриншот"
Tools.CheatFinder = "Поиск читов"
Tools.CheatFinder.Address = "Адрес"
Tools.CheatFinder.Value = "Значение"
Tools.CheatFinder.Scan = "Сканировать"
Tools.CheatFinder.All = "Все"
Tools.CheatEditor = "Редактор читов"
Tools.CheatEditor.remove.confirm.title = "Удалить читы?"
Tools.CheatEditor.remove.confirm = "Вы уверены, что хотите навсегда удалить выделенные читы?"
Tools.CheatEditor.Codes = "Код(ы)"
Tools.CheatEditor.Enable = "Включить"
Tools.CheatEditor.SelectAll = "Выделить всё"
Tools.CheatEditor.UnselectAll = "Снять выделение"
Tools.CheatEditor.AddCheats = "Добавить читы"
Tools.CheatEditor.AddCheat = "Добавить чит"
Tools.CheatEditor.EditCheat = "Изменить чит"
Tools.CheatEditor.Edit = "Изменить"
Tools.CheatEditor.FindCheats = "Найти читы"
Tools.CheatEditor.noCheats = "К сожалению, читы для этой игры не найдены."
Tools.CheatEditor.EnableCheats = "Включить читы"
Tools.CheatEditor.EnableCheats.tooltip = "
Включает все чит-коды.
Когда выключено, ни один чит-код не будет активен.
Используйте при прохождении частей игр, где читы приводят к проблемам.
"
Tools.CheatEditor.EnableCheats.disabled = "Все чит-коды выключены"
Tools.CheatEditor.EnableCheats.enabled = "Активные чит-коды включены"
Tools.CheatEditor.invalidFormat = "Некорректный код(ы), пожалуста, используйте следующий формат"
Tools.StateManager = "Менеджер сохранений"
Tools.StateManager.Category = "Категория"
Tools.StateManager.Category.ManagedStates = "Управляемые состояния"
Tools.StateManager.Category.QuickStates = "Быстрые сохранения"
Tools.StateManager.QuickStates.Redo = "Вернуть"
Tools.StateManager.QuickStates.Undo = "Отменить"
Tools.StateManager.Preview = "Предпросмотр"
Tools.StateManager.AddState = "Добавить состояние"
Tools.StateManager.RenameState = "Переименовать состояние"
Tools.StateManager.remove.confirm.title = "Удалить сохранения?"
Tools.StateManager.remove.confirm = "Вы уверены, что хотите навсегда удалить выделенные сохранения?"
Tools.ManifestViewer = "Просмотр манифеста"
Tools.ManifestViewer.Manifest = "Манифест"
Game.VerifiedGameOpened = "Открыта проверенная игра"
Game.GameOpened = "Открыта игра"
Game.GameClosed = "Закрыта игра"
Game.GameReset = "Игра сброшена"
Game.AndPatchApplied = ", и применён патч"
Game.GameOpeningCancelled = "Открытие игры отменено"
Game.unverifiedGameWarning.title = "Непроверенный образ игры"
Game.unverifiedGameWarning = "
Внимание: этот образ игры не проверен.
Запуск игры *может* быть небезопасным.
Хотите ли вы запустить игру в любом случае?
"
Game.unverifiedGameWarning.alwaysQuestion.title = "Отключить предупреждение?"
Game.unverifiedGameWarning.alwaysQuestion = "Отключить предупреждение при запуске непроверенных игр?"
Program.Paused = "Пауза"
Program.Unloaded = "Простой"
Program.CapturedScreenshot = "Снят скриншот"
Program.Open.MissingRequiredData = "Отсутствуют необходимые данные"
Program.Load.LoadGameBoyRom = "Загрузить игру Game Boy"
Program.Load.GameBoyRoms = "Игры Game Boy"
Program.Load.LoadBsMemoryRom = "Загрузить образ BS-памяти"
Program.Load.BsMemoryRoms = "Образы BS-памяти"
Program.Load.LoadSufamiTurboRomSlot = "Загрузить игру Sufami Turbo — слот"
Program.Load.SufamiTurboRoms = "Игры Sufami Turbo"
About.Version = "Версия"
About.Copyright = "Авторские права"
About.License = "Лицензия"
About.Website = "Сайт"
About.SameBoy.description = "Эмулятор Super Game Boy"
About.Bsnes.description = "Эмулятор Super Nintendo"
About.Bsnes.copyright = "byuu и другие"
About.Bsnes.license = "GPLv3 или новее"
Browser.OpenSnesRom = "Открыть игру SNES"
Browser.SnesRoms = "Игры SNES"
Browser.AllFiles = "Все файлы"
Browser.Select = "Выбрать"
Browser.SelectFolder = "Выбрать папку"
Browser.ChooseFolder = "Выберите папку"
Browser.ShowHidden = "Показать скрытые"
Browser.OpenFile = "Открыть файл"
Browser.OpenFiles = "Открыть файлы"
Browser.OpenFolder = "Открыть папку"
Browser.OpenObject = "Открыть объект"
Browser.Rename.EnterNewFolderName = "Введите новое имя папки"
Browser.Rename.EnterNewFileName = "Введите новое имя файла"
Browser.Rename.FailedToRenameFolder = "Не удалось переименовать папку."
Browser.Rename.FailedToRenameFile = "Не удалось переименовать файл."
Browser.Create = "Создать"
Browser.Create.EnterName = "Введите имя"
Browser.CreateFolder = "Создать папку"
Browser.CreateFolder.EnterNewFolderName = "Введите имя новой папки"
Browser.Delete.DeleteSelected = "Удалить выделенные"
Browser.Delete.FailedToDelete = "Не удалось удалить |. Попытаться удалить остальные элементы?"
Browser.Delete.confirm = "Вы уверены, что хотите навсегда удалить |"
Browser.Delete.confirm.item = "выделенный элемент"
Browser.Delete.confirm.items = "выделенные элементы"
Browser.SaveFile = "Сохранить файл"
Browser.SaveFile.fileExists.title = "Заменить файл?"
Browser.SaveFile.fileExists = "Файл уже существует. Заменить его?"
StatusIcon.verifiedRom.tooltip = "
Это известный качественный образ игры.
Эмуляция платы (PCB) на 100% точная.
"
StatusIcon.unverifiedRom.tooltip = "
Этот образ игры не проверен.
При эмуляции платы (PCB) будет использоваться эвристика.
"
ResetDrivers.message.title = "Сброс драйверов"
ResetDrivers.message = "
Драйверы оборудования были сброшены согласно параметру командной строки `--resetdrivers`.
Пожалуйста, выберите новые настройки драйверов в окне «Настройки» → «Драйверы», которое сейчас откроется.
"
Rewind.HistoryExhausted = "История перемотки исчерпана"
States.incompatibleFormat = "[|] имеет несовместимый формат"
States.Loaded = "Загружено"
States.NotFound = "[|] не найдено"
States.FailedToSave = "Не удалось сохранить [|]"
States.UnableToWriteToDisk = "Не удаётся записать [|] на диск"
States.Saved = "Сохранено [|]"
Patch.ipsWarning = "
(Вы видите этот запрос потому, что IPS — ужасный формат файлов патчей, и нет единого мнения, должны ли SNES-игры снабжаться заголовками.
Пожалуйста, попробуйте попросить автора патча использовать формат BPS.)
Предусмотрена ли в этом IPS-патче возможность применения к игре с заголовком?
Если вы не уверены, попробуйте «Нет», а если не сработает, попробуйте снова с ответом «Да».
"
Patch.ensureHeaderless = "Пожалуйста, удостоверьтесь, что используете для этого патча правильный (без заголовка) образ."
Movies.PlayMovie = "Воспроизвести видео"
Movies.Movies = "Видеозаписи"
Movies.playbackStarted = "Началось воспроизведение видео"
Movies.playbackStopped = "Воспроизведение видео остановлено"
Movies.formatNotSupported = "Формат видео не поддерживается"
Movies.recordingStarted = "Началась запись видео"
Movies.SaveMovie = "Сохранить видео"
Movies.MovieRecorded = "Видео записано"
Movies.MovieNotRecorded = "Видео не записано"
Movies.cantRecord = "Не удаётся записать видео"
Devices.Gamepad = "Геймпад"
Devices.Mouse = "Мышь"
Hotkeys.ToggleMouseCapture = "Захватить указатель мыши"
Hotkeys.ToggleCheatCodes = "Включить чит-коды"
Hotkeys.Rewind = "Перемотать назад (Rewind)"
Hotkeys.LoadUndoState = "Загрузить состояние отмены действия"
Hotkeys.LoadRedoState = "Загрузить состояния повтора действия"
Hotkeys.DecrementStateSlot = "Предыдущий слот быстрого сохранения"
Hotkeys.IncrementStateSlot = "Следующий слот быстрого сохранения"
Hotkeys.FastForward = "Перемотать вперёд (Fast Forward)"
Hotkeys.FrameAdvance = "Следующий кадр в покадровом режиме"
Hotkeys.DecreaseHDMode7 = "Уменьшить разрешение HD Mode 7"
Hotkeys.IncreaseHDMode7 = "Увеличить разрешение HD Mode 7"
Hotkeys.ToggleSupersampling = "Включить избыточную выборку"
Hotkeys.ResetEmulation = "Сбросить эмуляцию"
Hotkeys.QuitEmulator = "Выйти из эмулятора"

View file

@ -1,37 +1,31 @@
/*! bsnes-mt by Marat Tanalin | http://tanalin.com/en/projects/bsnes-mt/ */ /*! bsnes-mt by Marat Tanalin | http://tanalin.com/en/projects/bsnes-mt/ */
#include <memory> #include <algorithm>
#include <vector>
#include "pizza-png/Image.h" #include <Windows.h>
#include "app.h" #include "strings.h"
#include "windows.h"
#include "utils.h" #include "utils.h"
namespace bsnesMt { namespace bsnesMt {
using std::make_unique; using std::vector;
auto utf8ToWideString(const string &utf8) -> wstring { auto getTime() -> time {
wstring wide; SYSTEMTIME value;
GetLocalTime(&value);
auto utf8c = utf8.data(); return {
int size = MultiByteToWideChar(CP_UTF8, 0, utf8c, -1, 0, 0); value.wYear,
value.wMonth,
if (size > 0) { value.wDay,
auto buffer = make_unique<wchar_t[]>(size); value.wHour,
MultiByteToWideChar(CP_UTF8, 0, utf8c, -1, buffer.get(), size); value.wMinute,
wide = buffer.get(); value.wSecond,
} value.wMilliseconds
};
return wide;
}
auto getTime() -> SYSTEMTIME {
SYSTEMTIME time;
GetLocalTime(&time);
return time;
} }
auto open(const wstring &path) -> void { auto open(const wstring &path) -> void {
@ -39,67 +33,23 @@ auto open(const wstring &path) -> void {
} }
auto open(const string &path) -> void { auto open(const string &path) -> void {
open(utf8ToWideString(path)); open(strings::utf8ToWideString(path));
} }
auto saveFile(const string &data, const string &path) -> bool { auto generateMenuItemHotkey(map<string, bool> hotkeys) -> string {
HANDLE handle = CreateFileW(utf8ToWideString(path).data(), GENERIC_WRITE, 0, vector<string> enabledHotkeys;
NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
if (INVALID_HANDLE_VALUE == handle) { for (auto const& [hotkey, enabled] : hotkeys) {
return false; if (enabled) {
enabledHotkeys.push_back(hotkey);
}
} }
DWORD bytesToWrite = data.size(); return enabledHotkeys.size() ? string("\t") + strings::join(enabledHotkeys, ", ") : "";
DWORD bytesWritten = 0;
BOOL errorFlag = WriteFile(handle, data.data(), bytesToWrite, &bytesWritten, NULL);
if (FALSE == errorFlag || bytesWritten != bytesToWrite) {
return false;
}
CloseHandle(handle);
return true;
} }
auto saveBgraArrayAsPngImage(uint8_t* data, uint16_t width, uint16_t height, const string &path) -> bool { auto inArray(const vector<string> &items, const string &search) -> bool {
MaratTanalin::PizzaPNG::Image image(width, height); return end(items) != std::find(begin(items), end(items), search);
size_t pixelCount = width * height;
for (size_t i = 0; i < pixelCount; i++) {
size_t blueIndex = i << 2;
image.addPixel(data[blueIndex + 2], data[blueIndex + 1], data[blueIndex]);
}
image.insertChunk(ucharVectorToString(app::pngInfo));
return saveFile(image, path);
}
auto ucharVectorToString(const vector<unsigned char> &data) -> string {
string dataString;
for (auto &byte : data) {
dataString += byte;
}
return dataString;
}
auto getUiLang() -> BYTE {
return LOBYTE(GetUserDefaultUILanguage());
}
auto replace(const string &s, char search, const string replace) -> string {
auto pos = s.find(search);
if (string::npos == pos) {
return s;
}
return s.substr(0, pos) + replace + s.substr(pos + 1);
} }
} // namespace bsnesMt } // namespace bsnesMt

View file

@ -2,31 +2,25 @@
#pragma once #pragma once
#include <cstdint> #include <map>
#include <string> #include <string>
#include <vector> #include <vector>
#include <Windows.h>
namespace bsnesMt { namespace bsnesMt {
using std::string, std::wstring, std::vector; using std::map, std::string, std::wstring, std::vector;
auto utf8ToWideString(const string &utf8) -> wstring; struct time {
uint16_t year, month, day, hours, minutes, seconds, ms;
};
auto getTime() -> SYSTEMTIME; auto getTime() -> time;
auto open(const wstring &path) -> void; auto open(const wstring &path) -> void;
auto open(const string &path) -> void; auto open(const string &path) -> void;
auto saveFile(const string &data, const string &path) -> bool; auto generateMenuItemHotkey(map<string, bool> hotkeys) -> string;
auto saveBgraArrayAsPngImage(uint8_t* data, uint16_t width, uint16_t height, const string &path) -> bool; auto inArray(const vector<string> &items, const string &search) -> bool;
auto ucharVectorToString(const vector<unsigned char> &data) -> string;
auto getUiLang() -> BYTE;
auto replace(const string &s, char search, const string replace) -> string;
} // namespace bsnesMt } // namespace bsnesMt

View file

@ -1,17 +1,23 @@
/*! bsnes-mt by Marat Tanalin | http://tanalin.com/en/projects/bsnes-mt/ */ /*! bsnes-mt by Marat Tanalin | http://tanalin.com/en/projects/bsnes-mt/ */
#include <string>
#include <Windows.h> #include <Windows.h>
#include <Commctrl.h> #include <Commctrl.h>
#include <target-bsnes/resource/resources.h>
#include "app.h" #include "app.h"
#include "strings.h" #include "strings.h"
#include "translations.h"
#include "utils.h" #include "utils.h"
#include "windows.h" #include "windows.h"
namespace bsnesMt::windows { namespace bsnesMt::windows {
using std::wstring; using std::string, std::wstring;
using namespace strings;
auto getWorkAreaSize() -> SIZE { auto getWorkAreaSize() -> SIZE {
RECT rect; RECT rect;
@ -43,17 +49,17 @@ auto showAbout(HWND parentWindow) -> void {
TASKDIALOGCONFIG config{}; TASKDIALOGCONFIG config{};
// Variables are needed, otherwise `TaskDialogIndirect()` may display random garbage. // Variables are needed, otherwise `TaskDialogIndirect()` may display random garbage.
const wstring windowTitleWide = utf8ToWideString(replace(strings::get("Menu.Help.About"), '|', appTitle)); const wstring windowTitleWide = utf8ToWideString(replaceOnce(translations::get("Menu.Help.About"), '|', appTitle));
const wstring headingWide = utf8ToWideString(appTitle + " " + app::version); const wstring headingWide = utf8ToWideString(appTitle + " " + app::version);
const wstring textWide = utf8ToWideString(strings::get({ const wstring textWide = utf8ToWideString(translations::get({
{strings::EN, app::infoEn}, {"en", app::infoEn},
{strings::RU, app::infoRu} {"ru", app::infoRu}
})); }));
config.cbSize = sizeof(config); config.cbSize = sizeof(config);
config.dwFlags = TDF_USE_HICON_MAIN | TDF_ENABLE_HYPERLINKS | TDF_ALLOW_DIALOG_CANCELLATION; config.dwFlags = TDF_USE_HICON_MAIN | TDF_ENABLE_HYPERLINKS | TDF_ALLOW_DIALOG_CANCELLATION;
config.hMainIcon = LoadIconW(GetModuleHandleW(NULL), MAKEINTRESOURCEW(2)); config.hMainIcon = LoadIconW(GetModuleHandleW(NULL), MAKEINTRESOURCEW(IDI_APPICON));
config.hwndParent = parentWindow; config.hwndParent = parentWindow;
config.pszWindowTitle = windowTitleWide.data(); config.pszWindowTitle = windowTitleWide.data();
config.pszMainInstruction = headingWide.data(); config.pszMainInstruction = headingWide.data();

View file

@ -2,15 +2,10 @@
#pragma once #pragma once
#include <cstdint>
#include <string>
#include <Windows.h> #include <Windows.h>
namespace bsnesMt::windows { namespace bsnesMt::windows {
using std::string;
auto getWorkAreaSize() -> SIZE; auto getWorkAreaSize() -> SIZE;
auto isTopLevelWindow(HWND window) -> bool; auto isTopLevelWindow(HWND window) -> bool;

View file

@ -2,7 +2,7 @@ target := bsnes
binary := application binary := application
build := performance build := performance
openmp := true openmp := true
local := true local := false
flags += -I. -I.. flags += -I. -I..
# in order for this to work, obj/lzma.o must be omitted or bsnes will hang on startup. # in order for this to work, obj/lzma.o must be omitted or bsnes will hang on startup.
@ -47,17 +47,20 @@ else ifneq ($(filter $(platform),linux bsd),)
endif endif
# `bsnes-mt-*` are added by MT. # `bsnes-mt-*` are added by MT.
objects := libco emulator filter lzma bsnes-mt-scaling bsnes-mt-windows bsnes-mt-messagebox bsnes-mt-is bsnes-mt-png-chunk bsnes-mt-png-image bsnes-mt-strings bsnes-mt-utils bsnes-mt-kb objects := libco emulator filter lzma bsnes-mt-scaling bsnes-mt-windows bsnes-mt-messagebox bsnes-mt-is bsnes-mt-png-pixel bsnes-mt-png-chunk bsnes-mt-png-image bsnes-mt-strings bsnes-mt-translations bsnes-mt-utils bsnes-mt-kb bsnes-mt-files
obj/bsnes-mt-scaling.o: ../bsnes-mt/scaling.cpp # MT. obj/bsnes-mt-scaling.o: ../bsnes-mt/scaling.cpp # MT.
obj/bsnes-mt-windows.o: ../bsnes-mt/windows.cpp # MT. obj/bsnes-mt-windows.o: ../bsnes-mt/windows.cpp # MT.
obj/bsnes-mt-messagebox.o: ../bsnes-mt/messagebox.cpp # MT. obj/bsnes-mt-messagebox.o: ../bsnes-mt/messagebox.cpp # MT.
obj/bsnes-mt-is.o: ../bsnes-mt/integer-scaling/IntegerScaling.cpp # MT. obj/bsnes-mt-is.o: ../bsnes-mt/integer-scaling/IntegerScaling.cpp # MT.
obj/bsnes-mt-png-chunk.o: ../bsnes-mt/pizza-png/Chunk.cpp # MT. obj/bsnes-mt-png-pixel.o: ../bsnes-mt/pizza-png/src/Pixel.cpp # MT.
obj/bsnes-mt-png-image.o: ../bsnes-mt/pizza-png/Image.cpp # MT. obj/bsnes-mt-png-chunk.o: ../bsnes-mt/pizza-png/src/Chunk.cpp # MT.
obj/bsnes-mt-png-image.o: ../bsnes-mt/pizza-png/src/Image.cpp # MT.
obj/bsnes-mt-strings.o: ../bsnes-mt/strings.cpp # MT. obj/bsnes-mt-strings.o: ../bsnes-mt/strings.cpp # MT.
obj/bsnes-mt-translations.o: ../bsnes-mt/translations.cpp # MT.
obj/bsnes-mt-utils.o: ../bsnes-mt/utils.cpp # MT. obj/bsnes-mt-utils.o: ../bsnes-mt/utils.cpp # MT.
obj/bsnes-mt-kb.o: ../bsnes-mt/keyboard.cpp # MT. obj/bsnes-mt-kb.o: ../bsnes-mt/keyboard.cpp # MT.
obj/bsnes-mt-files.o: ../bsnes-mt/files.cpp # MT.
obj/libco.o: ../libco/libco.c obj/libco.o: ../libco/libco.c
obj/emulator.o: emulator/emulator.cpp obj/emulator.o: emulator/emulator.cpp
obj/filter.o: filter/filter.cpp obj/filter.o: filter/filter.cpp

View file

@ -1,127 +0,0 @@
locale
language: 日本語
namespace: MessageDialog
map
input: Yes
value: はい
map
input: No
value: いいえ
map
input: Cancel
value: キャンセル
namespace: BrowserDialog
map
input: Open
value: 開く
map
input: Save
value: 保存
map
input: Select
value: 選択
map
input: Cancel
value: キャンセル
namespace: Program
map
input: Unloaded
value: アンロードされる
map
input: Paused
value: ポーズ
namespace: Presentation
map
input: System
value: システム
map
input: Load Game
value: ゲームを読み込み
map
input: Load Recent Game
value: 最新ゲームを読み込み
map
input: empty
value: なし
map
input: Clear List
value: 全部を消す
map
input: Reset System
value: システムをリセット
map
input: Unload Game
value: ゲームをアンロード
map
input: Controller Port 1
value: コントローラポート1
map
input: Controller Port 2
value: コントローラポート2
map
input: Expansion Port
value: 拡張ポート
map
input: Gamepad
value: ゲームパッド
map
input: Mouse
value: マウス
map
input: Super Multitap
value: スーパーマルチタップ
map
input: Super Scope
value: スーパースコップ
map
input: Justifier
value: 1挺のジャスティファイアー
map
input: Justifiers
value: 2挺のジャスティファイアー
map
input: None
value: なし
map
input: Satellaview
value: サテラビュー
map
input: Quit
value: 終了
map
input: Settings
value: 設定
map
input: Tools
value: ツール
map
input: Help
value: ヘルプ
map
input: Documentation
value: オンラインマニュアル
map
input: About
value: 情報
namespace: AboutWindow
map
input: About {0}
value: {0}について
map
input: Version
value: バージョン
map
input: Author
value: 作者
map
input: License
value: ライセンス
map
input: Website
value: 公式サイト

View file

@ -5,7 +5,7 @@
namespace Emulator { namespace Emulator {
#include "stream.cpp" #include "_stream.cpp"
Audio audio; Audio audio;
Audio::~Audio() { Audio::~Audio() {

View file

@ -1,5 +1,6 @@
#include <emulator/emulator.hpp> #include <emulator/emulator.hpp>
#include <emulator/audio/audio.cpp>
#include <emulator/audio/_audio.cpp>
namespace Emulator { namespace Emulator {

View file

@ -2,24 +2,24 @@
#undef register #undef register
#define register #define register
#include "sai/sai.cpp" #include "sai/_sai.cpp"
uint32_t* colortable; uint32_t* colortable;
#include "snes_ntsc/snes_ntsc.h" #include "snes_ntsc/snes_ntsc.h"
#include "snes_ntsc/snes_ntsc.c" #include "snes_ntsc/_snes_ntsc.c"
#include "none.cpp" #include "_none.cpp"
#include "scanlines-light.cpp" #include "_scanlines-light.cpp"
#include "scanlines-dark.cpp" #include "_scanlines-dark.cpp"
#include "scanlines-black.cpp" #include "_scanlines-black.cpp"
#include "pixellate2x.cpp" #include "_pixellate2x.cpp"
#include "scale2x.cpp" #include "_scale2x.cpp"
#include "2xsai.cpp" #include "_2xsai.cpp"
#include "super-2xsai.cpp" #include "_super-2xsai.cpp"
#include "super-eagle.cpp" #include "_super-eagle.cpp"
#include "lq2x.cpp" #include "_lq2x.cpp"
#include "hq2x.cpp" #include "_hq2x.cpp"
#include "ntsc-rf.cpp" #include "_ntsc-rf.cpp"
#include "ntsc-composite.cpp" #include "_ntsc-composite.cpp"
#include "ntsc-svideo.cpp" #include "_ntsc-svideo.cpp"
#include "ntsc-rgb.cpp" #include "_ntsc-rgb.cpp"

View file

@ -1 +1 @@
bsnes bsnes-mt.exe

View file

@ -3,14 +3,14 @@
namespace Processor { namespace Processor {
#include "registers.cpp" #include "_registers.cpp"
#include "memory.cpp" #include "_memory.cpp"
#include "algorithms.cpp" #include "_algorithms.cpp"
#include "instruction.cpp" #include "_instruction.cpp"
#include "instructions-arm.cpp" #include "_instructions-arm.cpp"
#include "instructions-thumb.cpp" #include "_instructions-thumb.cpp"
#include "serialization.cpp" #include "_serialization.cpp"
#include "disassembler.cpp" #include "_disassembler.cpp"
ARM7TDMI::ARM7TDMI() { ARM7TDMI::ARM7TDMI() {
armInitialize(); armInitialize();

View file

@ -7,10 +7,10 @@
namespace Processor { namespace Processor {
#include "instruction.cpp" #include "_instruction.cpp"
#include "instructions.cpp" #include "_instructions.cpp"
#include "serialization.cpp" #include "_serialization.cpp"
#include "disassembler.cpp" #include "_disassembler.cpp"
auto GSU::power() -> void { auto GSU::power() -> void {
for(auto& r : regs.r) { for(auto& r : regs.r) {

View file

@ -3,10 +3,10 @@
namespace Processor { namespace Processor {
#include "registers.cpp" #include "_registers.cpp"
#include "instruction.cpp" #include "_instruction.cpp"
#include "instructions.cpp" #include "_instructions.cpp"
#include "serialization.cpp" #include "_serialization.cpp"
auto HG51B::lock() -> void { auto HG51B::lock() -> void {
io.lock = 1; io.lock = 1;

View file

@ -3,13 +3,13 @@
namespace Processor { namespace Processor {
#include "registers.cpp" #include "_registers.cpp"
#include "memory.cpp" #include "_memory.cpp"
#include "algorithms.cpp" #include "_algorithms.cpp"
#include "instruction.cpp" #include "_instruction.cpp"
#include "instructions.cpp" #include "_instructions.cpp"
#include "serialization.cpp" #include "_serialization.cpp"
#include "disassembler.cpp" #include "_disassembler.cpp"
auto SM83::power() -> void { auto SM83::power() -> void {
r = {}; r = {};

View file

@ -22,12 +22,12 @@ namespace Processor {
#define alu (this->*op) #define alu (this->*op)
#include "memory.cpp" #include "_memory.cpp"
#include "algorithms.cpp" #include "_algorithms.cpp"
#include "instructions.cpp" #include "_instructions.cpp"
#include "instruction.cpp" #include "_instruction.cpp"
#include "serialization.cpp" #include "_serialization.cpp"
#include "disassembler.cpp" #include "_disassembler.cpp"
auto SPC700::power() -> void { auto SPC700::power() -> void {
PC = 0x0000; PC = 0x0000;

Some files were not shown because too many files have changed in this diff Show more