@pkg-nec/emulatorjs 4.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +1 -0
- package/CHANGES.md +528 -0
- package/CODE_OF_CONDUCT.md +128 -0
- package/CONTRIBUTING.md +31 -0
- package/LICENSE +674 -0
- package/README.md +284 -0
- package/data/compression/README.md +11 -0
- package/data/compression/extract7z.js +1 -0
- package/data/compression/extractzip.js +1 -0
- package/data/compression/libunrar.js +519 -0
- package/data/compression/libunrar.wasm +0 -0
- package/data/cores/README.md +22 -0
- package/data/cores/package.json +65 -0
- package/data/emulator.css +1614 -0
- package/data/loader.js +170 -0
- package/data/localization/README.md +63 -0
- package/data/localization/af-FR.json +339 -0
- package/data/localization/ar-AR.json +301 -0
- package/data/localization/ben-BEN.json +301 -0
- package/data/localization/de-GER.json +301 -0
- package/data/localization/el-GR.json +301 -0
- package/data/localization/en-US.json +339 -0
- package/data/localization/es-ES.json +310 -0
- package/data/localization/fa-AF.json +310 -0
- package/data/localization/hi-HI.json +301 -0
- package/data/localization/it-IT.json +302 -0
- package/data/localization/ja-JA.json +301 -0
- package/data/localization/jv-JV.json +301 -0
- package/data/localization/ko-KO.json +336 -0
- package/data/localization/pt-BR.json +361 -0
- package/data/localization/retroarch.json +617 -0
- package/data/localization/ro-RO.json +310 -0
- package/data/localization/ru-RU.json +301 -0
- package/data/localization/tr-TR.json +310 -0
- package/data/localization/vi-VN.json +302 -0
- package/data/localization/zh-CN.json +351 -0
- package/data/src/GameManager.js +464 -0
- package/data/src/compression.js +142 -0
- package/data/src/emulator.js +6158 -0
- package/data/src/gamepad.js +167 -0
- package/data/src/nipplejs.js +1 -0
- package/data/src/shaders.js +236 -0
- package/data/src/socket.io.min.js +7 -0
- package/data/src/storage.js +125 -0
- package/data/version.json +5 -0
- package/docs/Logo-light.png +0 -0
- package/docs/Logo.png +0 -0
- package/docs/Logo.svg +4487 -0
- package/docs/contributors.json +46 -0
- package/docs/contributors.md +125 -0
- package/docs/favicon.ico +0 -0
- package/index.html +269 -0
- package/package.json +35 -0
package/data/loader.js
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
(async function() {
|
|
2
|
+
const scripts = [
|
|
3
|
+
"emulator.js",
|
|
4
|
+
"nipplejs.js",
|
|
5
|
+
"shaders.js",
|
|
6
|
+
"storage.js",
|
|
7
|
+
"gamepad.js",
|
|
8
|
+
"GameManager.js",
|
|
9
|
+
"socket.io.min.js",
|
|
10
|
+
"compression.js"
|
|
11
|
+
];
|
|
12
|
+
|
|
13
|
+
const folderPath = (path) => path.substring(0, path.length - path.split("/").pop().length);
|
|
14
|
+
let scriptPath = (typeof window.EJS_pathtodata === "string") ? window.EJS_pathtodata : folderPath((new URL(document.currentScript.src)).pathname);
|
|
15
|
+
if (!scriptPath.endsWith("/")) scriptPath += "/";
|
|
16
|
+
//console.log(scriptPath);
|
|
17
|
+
function loadScript(file) {
|
|
18
|
+
return new Promise(function(resolve) {
|
|
19
|
+
let script = document.createElement("script");
|
|
20
|
+
script.src = function() {
|
|
21
|
+
if ("undefined" != typeof EJS_paths && typeof EJS_paths[file] === "string") {
|
|
22
|
+
return EJS_paths[file];
|
|
23
|
+
} else if (file.endsWith("emulator.min.js")) {
|
|
24
|
+
return scriptPath + file;
|
|
25
|
+
} else {
|
|
26
|
+
return scriptPath + "src/" + file;
|
|
27
|
+
}
|
|
28
|
+
}();
|
|
29
|
+
script.onload = resolve;
|
|
30
|
+
script.onerror = () => {
|
|
31
|
+
filesmissing(file).then(e => resolve());
|
|
32
|
+
}
|
|
33
|
+
document.head.appendChild(script);
|
|
34
|
+
})
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function loadStyle(file) {
|
|
38
|
+
return new Promise(function(resolve) {
|
|
39
|
+
let css = document.createElement("link");
|
|
40
|
+
css.rel = "stylesheet";
|
|
41
|
+
css.href = function() {
|
|
42
|
+
if ("undefined" != typeof EJS_paths && typeof EJS_paths[file] === "string") {
|
|
43
|
+
return EJS_paths[file];
|
|
44
|
+
} else {
|
|
45
|
+
return scriptPath + file;
|
|
46
|
+
}
|
|
47
|
+
}();
|
|
48
|
+
css.onload = resolve;
|
|
49
|
+
css.onerror = () => {
|
|
50
|
+
filesmissing(file).then(e => resolve());
|
|
51
|
+
}
|
|
52
|
+
document.head.appendChild(css);
|
|
53
|
+
})
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
async function filesmissing(file) {
|
|
57
|
+
console.error("Failed to load " + file);
|
|
58
|
+
let minifiedFailed = file.includes(".min.") && !file.includes("socket");
|
|
59
|
+
console[minifiedFailed ? "warn" : "error"]("Failed to load " + file + " beacuse it's likly that the minified files are missing.\nTo fix this you have 3 options:\n1. You can download the zip from the latest release here: https://github.com/EmulatorJS/EmulatorJS/releases/latest - Stable\n2. You can download the zip from here: https://cdn.emulatorjs.org/latest/data/emulator.min.zip and extract it to the data/ folder. (easiest option) - Beta\n3. You can build the files by running `npm i && npm run build` in the data/minify folder. (hardest option) - Beta\nNote: you will probably need to do the same for the cores, extract them to the data/cores/ folder.");
|
|
60
|
+
if (minifiedFailed) {
|
|
61
|
+
console.log("Attempting to load non-minified files");
|
|
62
|
+
if (file === "emulator.min.js") {
|
|
63
|
+
for (let i = 0; i < scripts.length; i++) {
|
|
64
|
+
await loadScript(scripts[i]);
|
|
65
|
+
}
|
|
66
|
+
} else {
|
|
67
|
+
await loadStyle("emulator.css");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (("undefined" != typeof EJS_DEBUG_XX && true === EJS_DEBUG_XX)) {
|
|
73
|
+
for (let i = 0; i < scripts.length; i++) {
|
|
74
|
+
await loadScript(scripts[i]);
|
|
75
|
+
}
|
|
76
|
+
await loadStyle("emulator.css");
|
|
77
|
+
} else {
|
|
78
|
+
await loadScript("emulator.min.js");
|
|
79
|
+
await loadStyle("emulator.min.css");
|
|
80
|
+
}
|
|
81
|
+
const config = {};
|
|
82
|
+
config.gameUrl = window.EJS_gameUrl;
|
|
83
|
+
config.dataPath = scriptPath;
|
|
84
|
+
config.system = window.EJS_core;
|
|
85
|
+
config.biosUrl = window.EJS_biosUrl;
|
|
86
|
+
config.gameName = window.EJS_gameName;
|
|
87
|
+
config.color = window.EJS_color;
|
|
88
|
+
config.adUrl = window.EJS_AdUrl;
|
|
89
|
+
config.adMode = window.EJS_AdMode;
|
|
90
|
+
config.adTimer = window.EJS_AdTimer;
|
|
91
|
+
config.adSize = window.EJS_AdSize;
|
|
92
|
+
config.alignStartButton = window.EJS_alignStartButton;
|
|
93
|
+
config.VirtualGamepadSettings = window.EJS_VirtualGamepadSettings;
|
|
94
|
+
config.buttonOpts = window.EJS_Buttons;
|
|
95
|
+
config.volume = window.EJS_volume;
|
|
96
|
+
config.defaultControllers = window.EJS_defaultControls;
|
|
97
|
+
config.startOnLoad = window.EJS_startOnLoaded;
|
|
98
|
+
config.fullscreenOnLoad = window.EJS_fullscreenOnLoaded;
|
|
99
|
+
config.filePaths = window.EJS_paths;
|
|
100
|
+
config.loadState = window.EJS_loadStateURL;
|
|
101
|
+
config.cacheLimit = window.EJS_CacheLimit;
|
|
102
|
+
config.cheats = window.EJS_cheats;
|
|
103
|
+
config.defaultOptions = window.EJS_defaultOptions;
|
|
104
|
+
config.gamePatchUrl = window.EJS_gamePatchUrl;
|
|
105
|
+
config.gameParentUrl = window.EJS_gameParentUrl;
|
|
106
|
+
config.netplayUrl = window.EJS_netplayServer;
|
|
107
|
+
config.gameId = window.EJS_gameID;
|
|
108
|
+
config.backgroundImg = window.EJS_backgroundImage;
|
|
109
|
+
config.backgroundBlur = window.EJS_backgroundBlur;
|
|
110
|
+
config.backgroundColor = window.EJS_backgroundColor;
|
|
111
|
+
config.controlScheme = window.EJS_controlScheme;
|
|
112
|
+
config.threads = window.EJS_threads;
|
|
113
|
+
config.disableCue = window.EJS_disableCue;
|
|
114
|
+
config.startBtnName = window.EJS_startButtonName;
|
|
115
|
+
config.softLoad = window.EJS_softLoad;
|
|
116
|
+
config.capture = window.EJS_screenCapture;
|
|
117
|
+
config.externalFiles = window.EJS_externalFiles;
|
|
118
|
+
config.dontExtractBIOS = window.EJS_dontExtractBIOS;
|
|
119
|
+
config.disableDatabases = window.EJS_disableDatabases;
|
|
120
|
+
config.disableLocalStorage = window.EJS_disableLocalStorage;
|
|
121
|
+
config.forceLegacyCores = window.EJS_forceLegacyCores;
|
|
122
|
+
config.noAutoFocus = window.EJS_noAutoFocus;
|
|
123
|
+
config.videoRotation = window.EJS_videoRotation;
|
|
124
|
+
config.hideSettings = window.EJS_hideSettings;
|
|
125
|
+
config.shaders = Object.assign({}, window.EJS_SHADERS, window.EJS_shaders ? window.EJS_shaders : {});
|
|
126
|
+
|
|
127
|
+
let systemLang;
|
|
128
|
+
try {
|
|
129
|
+
systemLang = Intl.DateTimeFormat().resolvedOptions().locale;
|
|
130
|
+
} catch(e) {} //Ignore
|
|
131
|
+
if ((typeof window.EJS_language === "string" && window.EJS_language !== "en-US") || (systemLang && window.EJS_disableAutoLang !== false)) {
|
|
132
|
+
const language = window.EJS_language || systemLang;
|
|
133
|
+
try {
|
|
134
|
+
let path;
|
|
135
|
+
console.log("Loading language", language);
|
|
136
|
+
if ("undefined" != typeof EJS_paths && typeof EJS_paths[language] === "string") {
|
|
137
|
+
path = EJS_paths[language];
|
|
138
|
+
} else {
|
|
139
|
+
path = scriptPath + "localization/" + language + ".json";
|
|
140
|
+
}
|
|
141
|
+
config.language = language;
|
|
142
|
+
config.langJson = JSON.parse(await (await fetch(path)).text());
|
|
143
|
+
} catch(e) {
|
|
144
|
+
console.log("Missing language", language, "!!");
|
|
145
|
+
delete config.language;
|
|
146
|
+
delete config.langJson;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
window.EJS_emulator = new EmulatorJS(EJS_player, config);
|
|
151
|
+
window.EJS_adBlocked = (url, del) => window.EJS_emulator.adBlocked(url, del);
|
|
152
|
+
if (typeof window.EJS_ready === "function") {
|
|
153
|
+
window.EJS_emulator.on("ready", window.EJS_ready);
|
|
154
|
+
}
|
|
155
|
+
if (typeof window.EJS_onGameStart === "function") {
|
|
156
|
+
window.EJS_emulator.on("start", window.EJS_onGameStart);
|
|
157
|
+
}
|
|
158
|
+
if (typeof window.EJS_onLoadState === "function") {
|
|
159
|
+
window.EJS_emulator.on("loadState", window.EJS_onLoadState);
|
|
160
|
+
}
|
|
161
|
+
if (typeof window.EJS_onSaveState === "function") {
|
|
162
|
+
window.EJS_emulator.on("saveState", window.EJS_onSaveState);
|
|
163
|
+
}
|
|
164
|
+
if (typeof window.EJS_onLoadSave === "function") {
|
|
165
|
+
window.EJS_emulator.on("loadSave", window.EJS_onLoadSave);
|
|
166
|
+
}
|
|
167
|
+
if (typeof window.EJS_onSaveSave === "function") {
|
|
168
|
+
window.EJS_emulator.on("saveSave", window.EJS_onSaveSave);
|
|
169
|
+
}
|
|
170
|
+
})();
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Localization
|
|
2
|
+
|
|
3
|
+
Supported languages
|
|
4
|
+
|
|
5
|
+
`en-US` - English US<br>
|
|
6
|
+
`pt-BR` - Portuguese<br>
|
|
7
|
+
`es-ES` - Spanish<br>
|
|
8
|
+
`el-GR` - Greek<br>
|
|
9
|
+
`ja-JA` - Japanese<br>
|
|
10
|
+
`zh-CN` - Chinese<br>
|
|
11
|
+
`hi-HI` - Hindi<br>
|
|
12
|
+
`ar-AR` - Arabic<br>
|
|
13
|
+
`jv-JV` - Javanese<br>
|
|
14
|
+
`ben-BEN` - Bengali<br>
|
|
15
|
+
`ru-RU` - Russian<br>
|
|
16
|
+
`de-GER` - German<br>
|
|
17
|
+
`ko-KO` - Korean<br>
|
|
18
|
+
`af-FR` - French<br>
|
|
19
|
+
`it-IT` - Italian<br>
|
|
20
|
+
`tr-Tr` - Turkish<br>
|
|
21
|
+
`fa-AF` - Persian<br>
|
|
22
|
+
`ro-RO` - Romanian<br>
|
|
23
|
+
|
|
24
|
+
default: `en-US`
|
|
25
|
+
|
|
26
|
+
add the line to your code to use
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
EJS_language = ''; //language
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
If the language file is not found or there was an error fetching the file, the emulator will default to english.
|
|
33
|
+
|
|
34
|
+
## Credits
|
|
35
|
+
|
|
36
|
+
Translated for `es-ES` originally by [@cesarcristianodeoliveira](https://github.com/cesarcristianodeoliveira) and updated by [@angelmarfil](https://github.com/angelmarfil) <br>
|
|
37
|
+
Translated for `el-GR` by [@imneckro](https://github.com/imneckro) <br>
|
|
38
|
+
Translated for `pt-BR` by [@zmarteline](https://github.com/zmarteline)<br>
|
|
39
|
+
Translated for `zh-CN` by [@eric183](https://github.com/eric183)<br>
|
|
40
|
+
Translated for `pt-BR` by [@zmarteline](https://github.com/zmarteline) <br>
|
|
41
|
+
Translated for `it-IT` by [@IvanMazzoli](https://github.com/IvanMazzoli) <br>
|
|
42
|
+
Translated for `tr-Tr` by [@iGoodie](https://github.com/iGoodie) <br>
|
|
43
|
+
Translated for `fa-AF` by [@rezamohdev](https://github.com/rezamohdev) <br>
|
|
44
|
+
Translated for `af-FR` by [@t3chnob0y](https://github.com/t3chnob0y) <br>
|
|
45
|
+
Translated for `ro-RO` by [@jurcaalexandrucristian](https://github.com/jurcaalexandrucristian) <br>
|
|
46
|
+
Translated for `ja-JA` by [@noel-forester](https://github.com/noel-forester) <br>
|
|
47
|
+
Translated for `hi-HI`, `ar-AR`, `jv-JV`, `ben-BEN`, `ru-RU`, `de-GER`, `ko-KO` by [@allancoding](https://github.com/allancoding), using a translate application <br>
|
|
48
|
+
|
|
49
|
+
## Contributing
|
|
50
|
+
|
|
51
|
+
To contribute, please download the default `en-US.json` language file to use as a template, translate the strings and then submit the file with a Pull Request or Issue.
|
|
52
|
+
|
|
53
|
+
The EmulatorJS team will review and add your changes.
|
|
54
|
+
|
|
55
|
+
The `retroarch.json` are all the setting names for the menu. They will default to english if not found. You can set `EJS_settingsLanguage` to `true` to see the missing retroarch settings names for the current language. You can translate them and add the to the language file.
|
|
56
|
+
|
|
57
|
+
The control mapping translations for controllers are diffrent for each controller. They will need to be added to the language file if they are not in the default `en-US.json` file.
|
|
58
|
+
|
|
59
|
+
You can also use the [Translation Helper](https://emulatorjs.org/translate) tool to help you translate the file.
|
|
60
|
+
|
|
61
|
+
Please contribute!!
|
|
62
|
+
|
|
63
|
+
Enything that is incorrect or needs to be fix please perform a pull request!
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
{
|
|
2
|
+
"0": "0",
|
|
3
|
+
"1": "1",
|
|
4
|
+
"2": "2",
|
|
5
|
+
"3": "3",
|
|
6
|
+
"4": "4",
|
|
7
|
+
"5": "5",
|
|
8
|
+
"6": "6",
|
|
9
|
+
"7": "7",
|
|
10
|
+
"8": "8",
|
|
11
|
+
"9": "9",
|
|
12
|
+
"Restart": "Redémarrer",
|
|
13
|
+
"Pause": "Mettre en pause",
|
|
14
|
+
"Play": "Jouer",
|
|
15
|
+
"Save State": "Enregistrer l'état",
|
|
16
|
+
"Load State": "Ouvrir un état",
|
|
17
|
+
"Control Settings": "Paramètres des contrôles",
|
|
18
|
+
"Cheats": "Triches",
|
|
19
|
+
"Cache Manager": "Gestionnaire du cache",
|
|
20
|
+
"Export Save File": "Exporter vers une sauvegarde",
|
|
21
|
+
"Import Save File": "Importer une sauvegarde",
|
|
22
|
+
"Netplay": "Jouer en ligne",
|
|
23
|
+
"Mute": "Désactiver le son",
|
|
24
|
+
"Unmute": "Réactiver le son",
|
|
25
|
+
"Settings": "Paramètres",
|
|
26
|
+
"Enter Fullscreen": "Passer en mode plein écran",
|
|
27
|
+
"Exit Fullscreen": "Quitter le mode plein écran",
|
|
28
|
+
"Context Menu": "Menu contextuel",
|
|
29
|
+
"Reset": "Réinitialiser",
|
|
30
|
+
"Clear": "Effacer",
|
|
31
|
+
"Close": "Fermer",
|
|
32
|
+
"QUICK SAVE STATE": "ENREGISTREMENT RAPIDE DE L'ÉTAT",
|
|
33
|
+
"QUICK LOAD STATE": "CHARGEMENT RAPIDE DE L'ÉTAT",
|
|
34
|
+
"CHANGE STATE SLOT": "CHANGER L'EMPLACEMENT DE L'ÉTAT",
|
|
35
|
+
"FAST FORWARD": "AVANCE RAPIDE",
|
|
36
|
+
"Player": "Joueur",
|
|
37
|
+
"Connected Gamepad": "Manette de jeu connectée",
|
|
38
|
+
"Gamepad": "Manette de jeu",
|
|
39
|
+
"Keyboard": "Clavier",
|
|
40
|
+
"Set": "Définir",
|
|
41
|
+
"Add Cheat": "Ajouter une triche",
|
|
42
|
+
"Note that some cheats require a restart to disable": "Notez que certaines triches nécessitent un redémarrage pour être désactivées",
|
|
43
|
+
"Create a Room": "Créer un salon",
|
|
44
|
+
"Rooms": "Salons",
|
|
45
|
+
"Start Game": "Démarrer le jeu",
|
|
46
|
+
"Click to resume Emulator": "Cliquez pour reprendre avec l'émulateur",
|
|
47
|
+
"Drop save state here to load": "Déposez un état enregistré ici pour le charger",
|
|
48
|
+
"Loading...": "Chargement...",
|
|
49
|
+
"Download Game Core": "Téléchargement du noyau pour le jeu...",
|
|
50
|
+
"Outdated graphics driver": "Pilote graphique obsolète",
|
|
51
|
+
"Decompress Game Core": "Décompression du noyau pour le jeu...",
|
|
52
|
+
"Download Game Data": "Téléchargement des données du jeu...",
|
|
53
|
+
"Decompress Game Data": "Décompression des données du jeu...",
|
|
54
|
+
"Shaders": "Shaders",
|
|
55
|
+
"Disabled": "Désactivé",
|
|
56
|
+
"2xScaleHQ": "2xScaleHQ",
|
|
57
|
+
"4xScaleHQ": "4xScaleHQ",
|
|
58
|
+
"CRT easymode": "CRT easymode",
|
|
59
|
+
"CRT aperture": "CRT aperture",
|
|
60
|
+
"CRT geom": "CRT geom",
|
|
61
|
+
"CRT mattias": "CRT mattias",
|
|
62
|
+
"FPS": "FPS",
|
|
63
|
+
"show": "Afficher",
|
|
64
|
+
"hide": "Masquer",
|
|
65
|
+
"Fast Forward Ratio": "Vitesse de l'avance rapide",
|
|
66
|
+
"Fast Forward": "Avance rapide",
|
|
67
|
+
"Enabled": "Activé",
|
|
68
|
+
"Save State Slot": "Emplacement de l'état",
|
|
69
|
+
"Save State Location": "Stockage des états",
|
|
70
|
+
"Download": "Télécharger",
|
|
71
|
+
"Keep in Browser": "Dans le navigateur",
|
|
72
|
+
"Auto": "Auto",
|
|
73
|
+
"NTSC": "NTSC",
|
|
74
|
+
"PAL": "PAL",
|
|
75
|
+
"Dendy": "Dendy",
|
|
76
|
+
"8:7 PAR": "8:7 PAR",
|
|
77
|
+
"4:3": "4:3",
|
|
78
|
+
"Low": "Basse",
|
|
79
|
+
"High": "Élevée",
|
|
80
|
+
"Very High": "Très élevée",
|
|
81
|
+
"None": "Aucun",
|
|
82
|
+
"Player 1": "Joueur 1",
|
|
83
|
+
"Player 2": "Joueur 2",
|
|
84
|
+
"Both": "Les deux",
|
|
85
|
+
"SAVED STATE TO SLOT": "ÉTAT ENREGISTRÉ VERS L'EMPLACEMENT",
|
|
86
|
+
"LOADED STATE FROM SLOT": "ÉTAT CHARGÉ À PARTIR DE L'EMPLACEMENT",
|
|
87
|
+
"SET SAVE STATE SLOT TO": "DÉFINIR L'EMPLACEMENT DE L'ÉTAT ENREGISTRÉ À",
|
|
88
|
+
"Network Error": "Erreur réseau",
|
|
89
|
+
"Submit": "Soumettre",
|
|
90
|
+
"Description": "Description",
|
|
91
|
+
"Code": "Code",
|
|
92
|
+
"Add Cheat Code": "Ajouter un code de triche",
|
|
93
|
+
"Leave Room": "Sortir du salon",
|
|
94
|
+
"Password": "Mot de passe",
|
|
95
|
+
"Password (optional)": "Mot de passe (facultatif)",
|
|
96
|
+
"Max Players": "Nombre maximal de joueurs",
|
|
97
|
+
"Room Name": "Nom du salon",
|
|
98
|
+
"Join": "Rejoindre",
|
|
99
|
+
"Player Name": "Nom du joueur",
|
|
100
|
+
"Set Player Name": "Définir le nom du joueur",
|
|
101
|
+
"Left Handed Mode": "Mode gaucher",
|
|
102
|
+
"Virtual Gamepad": "Manette de jeu virtuelle",
|
|
103
|
+
"Disk": "Disque",
|
|
104
|
+
"Press Keyboard": "Appuyez sur le clavier",
|
|
105
|
+
"INSERT COIN": "INSÉRER UNE PIÈCE",
|
|
106
|
+
"Remove": "Retirer",
|
|
107
|
+
"SAVE LOADED FROM BROWSER": "SAUVEGARDE CHARGÉE À PARTIR DU NAVIGATEUR",
|
|
108
|
+
"SAVE SAVED TO BROWSER": "SAUVEGARDE ENREGISTRÉE DANS LE NAVIGATEUR",
|
|
109
|
+
"Join the discord": "Rejoindre le serveur Discord",
|
|
110
|
+
"View on GitHub": "Afficher sur GitHub",
|
|
111
|
+
"Failed to start game": "Échec au démarrage du jeu",
|
|
112
|
+
"Download Game BIOS": "Téléchargement du BIOS du jeu...",
|
|
113
|
+
"Decompress Game BIOS": "Décompression du BIOS du jeu...",
|
|
114
|
+
"Download Game Parent": "Téléchargement du jeu parent...",
|
|
115
|
+
"Decompress Game Parent": "Décompression du jeu parent...",
|
|
116
|
+
"Download Game Patch": "Téléchargement du correctif du jeu...",
|
|
117
|
+
"Decompress Game Patch": "Décompression du correctif du jeu...",
|
|
118
|
+
"Download Game State": "Téléchargement de l'état enregistré...",
|
|
119
|
+
"Check console": "Vérifier la console",
|
|
120
|
+
"Error for site owner": "Erreur pour le propriétaire du site",
|
|
121
|
+
"EmulatorJS": "EmulatorJS",
|
|
122
|
+
"Clear All": "Effacer tout",
|
|
123
|
+
"Take Screenshot": "Prendre une capture d'écran",
|
|
124
|
+
"Start Screen Recording": "Démarrer l'enregistrement de l'écran",
|
|
125
|
+
"Stop Screen Recording": "Arrêter l'enregistrement de l'écran",
|
|
126
|
+
"Quick Save": "Enregistrement rapide",
|
|
127
|
+
"Quick Load": "Chargement rapide",
|
|
128
|
+
"REWIND": "REMBOBINER",
|
|
129
|
+
"Rewind Enabled (requires restart)": "Rembobinage activé (nécessite un redémarrage)",
|
|
130
|
+
"Rewind Granularity": "Granularité du rembobinage",
|
|
131
|
+
"Slow Motion Ratio": "Vitesse du ralenti",
|
|
132
|
+
"Slow Motion": "Au ralenti",
|
|
133
|
+
"Home": "Accueil",
|
|
134
|
+
"EmulatorJS License": "Licence EmulatorJS",
|
|
135
|
+
"RetroArch License": "Licence RetroArch",
|
|
136
|
+
"This project is powered by": "Ce projet est propulsé par",
|
|
137
|
+
"View the RetroArch license here": "Consulter la licence de RetroArch",
|
|
138
|
+
"SLOW MOTION": "AU RALENTI",
|
|
139
|
+
"A": "A",
|
|
140
|
+
"B": "B",
|
|
141
|
+
"SELECT": "SELECT",
|
|
142
|
+
"START": "START",
|
|
143
|
+
"UP": "HAUT",
|
|
144
|
+
"DOWN": "BAS",
|
|
145
|
+
"LEFT": "GAUCHE",
|
|
146
|
+
"RIGHT": "DROITE",
|
|
147
|
+
"X": "X",
|
|
148
|
+
"Y": "Y",
|
|
149
|
+
"L": "L",
|
|
150
|
+
"R": "R",
|
|
151
|
+
"Z": "Z",
|
|
152
|
+
"STICK UP": "STICK HAUT",
|
|
153
|
+
"STICK DOWN": "STICK BAS",
|
|
154
|
+
"STICK LEFT": "STICK GAUCHE",
|
|
155
|
+
"STICK RIGHT": "STICK DROITE",
|
|
156
|
+
"C-PAD UP": "C-PAD HAUT",
|
|
157
|
+
"C-PAD DOWN": "C-PAD BAS",
|
|
158
|
+
"C-PAD LEFT": "C-PAD GAUCHE",
|
|
159
|
+
"C-PAD RIGHT": "C-PAD DROITE",
|
|
160
|
+
"MICROPHONE": "MICROPHONE",
|
|
161
|
+
"BUTTON 1 / START": "BOUTON 1 / START",
|
|
162
|
+
"BUTTON 2": "BOUTON 2",
|
|
163
|
+
"BUTTON": "BOUTON",
|
|
164
|
+
"LEFT D-PAD UP": "D-PAD GAUCHE HAUT",
|
|
165
|
+
"LEFT D-PAD DOWN": "D-PAD GAUCHE BAS",
|
|
166
|
+
"LEFT D-PAD LEFT": "D-PAD GAUCHE GAUCHE",
|
|
167
|
+
"LEFT D-PAD RIGHT": "D-PAD GAUCHE DROITE",
|
|
168
|
+
"RIGHT D-PAD UP": "D-PAD DROIT HAUT",
|
|
169
|
+
"RIGHT D-PAD DOWN": "D-PAD DROIT BAS",
|
|
170
|
+
"RIGHT D-PAD LEFT": "D-PAD DROIT GAUCHE",
|
|
171
|
+
"RIGHT D-PAD RIGHT": "D-PAD DROIT DROITE",
|
|
172
|
+
"C": "C",
|
|
173
|
+
"MODE": "MODE",
|
|
174
|
+
"FIRE": "FIRE",
|
|
175
|
+
"RESET": "RESET",
|
|
176
|
+
"LEFT DIFFICULTY A": "LEFT DIFFICULTY A",
|
|
177
|
+
"LEFT DIFFICULTY B": "LEFT DIFFICULTY B",
|
|
178
|
+
"RIGHT DIFFICULTY A": "RIGHT DIFFICULTY A",
|
|
179
|
+
"RIGHT DIFFICULTY B": "RIGHT DIFFICULTY A",
|
|
180
|
+
"COLOR": "COLOR",
|
|
181
|
+
"B/W": "B/W",
|
|
182
|
+
"PAUSE": "PAUSE",
|
|
183
|
+
"OPTION": "OPTION",
|
|
184
|
+
"OPTION 1": "OPTION 1",
|
|
185
|
+
"OPTION 2": "OPTION 2",
|
|
186
|
+
"L2": "L2",
|
|
187
|
+
"R2": "R2",
|
|
188
|
+
"L3": "L3",
|
|
189
|
+
"R3": "R3",
|
|
190
|
+
"L STICK UP": "STICK G HAUT",
|
|
191
|
+
"L STICK DOWN": "STICK G BAS",
|
|
192
|
+
"L STICK LEFT": "STICK G GAUCHE",
|
|
193
|
+
"L STICK RIGHT": "STICK G DROITE",
|
|
194
|
+
"R STICK UP": "STICK D HAUT",
|
|
195
|
+
"R STICK DOWN": "STICK D BAS",
|
|
196
|
+
"R STICK LEFT": "STICK D GAUCHE",
|
|
197
|
+
"R STICK RIGHT": "STICK D DROITE",
|
|
198
|
+
"Start": "START",
|
|
199
|
+
"Select": "SELECT",
|
|
200
|
+
"Fast": "FAST",
|
|
201
|
+
"Slow": "SLOW",
|
|
202
|
+
"a": "A",
|
|
203
|
+
"b": "B",
|
|
204
|
+
"c": "C",
|
|
205
|
+
"d": "D",
|
|
206
|
+
"e": "E",
|
|
207
|
+
"f": "F",
|
|
208
|
+
"g": "G",
|
|
209
|
+
"h": "H",
|
|
210
|
+
"i": "I",
|
|
211
|
+
"j": "J",
|
|
212
|
+
"k": "K",
|
|
213
|
+
"l": "L",
|
|
214
|
+
"m": "M",
|
|
215
|
+
"n": "N",
|
|
216
|
+
"o": "O",
|
|
217
|
+
"p": "P",
|
|
218
|
+
"q": "Q",
|
|
219
|
+
"r": "R",
|
|
220
|
+
"s": "S",
|
|
221
|
+
"t": "T",
|
|
222
|
+
"u": "U",
|
|
223
|
+
"v": "V",
|
|
224
|
+
"w": "W",
|
|
225
|
+
"x": "X",
|
|
226
|
+
"y": "Y",
|
|
227
|
+
"z": "Z",
|
|
228
|
+
"enter": "Entrée",
|
|
229
|
+
"escape": "Échap",
|
|
230
|
+
"space": "Espace",
|
|
231
|
+
"tab": "Tab.",
|
|
232
|
+
"backspace": "Retour arrière",
|
|
233
|
+
"delete": "Suppr.",
|
|
234
|
+
"arrowup": "Flèche vers le haut",
|
|
235
|
+
"arrowdown": "Flèche vers le bas",
|
|
236
|
+
"arrowleft": "Flèche vers la gauche",
|
|
237
|
+
"arrowright": "Flèche vers la droite",
|
|
238
|
+
"f1": "F1",
|
|
239
|
+
"f2": "F2",
|
|
240
|
+
"f3": "F3",
|
|
241
|
+
"f4": "F4",
|
|
242
|
+
"f5": "F5",
|
|
243
|
+
"f6": "F6",
|
|
244
|
+
"f7": "F7",
|
|
245
|
+
"f8": "F8",
|
|
246
|
+
"f9": "F9",
|
|
247
|
+
"f10": "F10",
|
|
248
|
+
"f11": "F11",
|
|
249
|
+
"f12": "F12",
|
|
250
|
+
"shift": "Maj",
|
|
251
|
+
"control": "Ctrl",
|
|
252
|
+
"alt": "Alt",
|
|
253
|
+
"meta": "Méta",
|
|
254
|
+
"capslock": "Verr. maj",
|
|
255
|
+
"insert": "Insér.",
|
|
256
|
+
"home": "Début",
|
|
257
|
+
"end": "Fin",
|
|
258
|
+
"pageup": "Pg préc",
|
|
259
|
+
"pagedown": "Pg suiv",
|
|
260
|
+
"!": "!",
|
|
261
|
+
"@": "@",
|
|
262
|
+
"#": "#",
|
|
263
|
+
"$": "$",
|
|
264
|
+
"%": "%",
|
|
265
|
+
"^": "^",
|
|
266
|
+
"&": "&",
|
|
267
|
+
"*": "*",
|
|
268
|
+
"(": "(",
|
|
269
|
+
")": ")",
|
|
270
|
+
"-": "-",
|
|
271
|
+
"_": "_",
|
|
272
|
+
"+": "+",
|
|
273
|
+
"=": "=",
|
|
274
|
+
"[": "[",
|
|
275
|
+
"]": "]",
|
|
276
|
+
"{": "{",
|
|
277
|
+
"}": "}",
|
|
278
|
+
";": ";",
|
|
279
|
+
":": ":",
|
|
280
|
+
"'": "'",
|
|
281
|
+
"\"": "\"",
|
|
282
|
+
",": ",",
|
|
283
|
+
".": ".",
|
|
284
|
+
"<": "<",
|
|
285
|
+
">": ">",
|
|
286
|
+
"/": "/",
|
|
287
|
+
"?": "?",
|
|
288
|
+
"LEFT_STICK_X": "STICK_GAUCHE_X",
|
|
289
|
+
"LEFT_STICK_Y": "STICK_GAUCHE_Y",
|
|
290
|
+
"RIGHT_STICK_X": "STICK_DROIT_X",
|
|
291
|
+
"RIGHT_STICK_Y": "STICK_DROIT_Y",
|
|
292
|
+
"LEFT_TRIGGER": "GACHETTE_GAUCHE",
|
|
293
|
+
"RIGHT_TRIGGER": "GACHETTE_DROITE",
|
|
294
|
+
"A_BUTTON": "BOUTON_A",
|
|
295
|
+
"B_BUTTON": "BOUTON_B",
|
|
296
|
+
"X_BUTTON": "BOUTON_X",
|
|
297
|
+
"Y_BUTTON": "BOUTON_Y",
|
|
298
|
+
"START_BUTTON": "BOUTON_START",
|
|
299
|
+
"SELECT_BUTTON": "BOUTON_SELECT",
|
|
300
|
+
"L1_BUTTON": "BOUTON_L1",
|
|
301
|
+
"R1_BUTTON": "BOUTON_R1",
|
|
302
|
+
"L2_BUTTON": "BOUTON_L2",
|
|
303
|
+
"R2_BUTTON": "BOUTON_R2",
|
|
304
|
+
"LEFT_THUMB_BUTTON": "BOUTON_L3",
|
|
305
|
+
"RIGHT_THUMB_BUTTON": "BOUTON_R3",
|
|
306
|
+
"DPAD_UP": "DPAD_HAUT",
|
|
307
|
+
"DPAD_DOWN": "DPAD_BAS",
|
|
308
|
+
"DPAD_LEFT": "DPAD_GAUCHE",
|
|
309
|
+
"DPAD_RIGHT": "DPAD_DROITE",
|
|
310
|
+
"Disks": "Disques",
|
|
311
|
+
"Exit EmulatorJS": "Quitter EmulatorJS",
|
|
312
|
+
"BUTTON_1": "BOUTON_1",
|
|
313
|
+
"BUTTON_2": "BOUTON_2",
|
|
314
|
+
"BUTTON_3": "BOUTON_3",
|
|
315
|
+
"BUTTON_4": "BOUTON_4",
|
|
316
|
+
"up arrow": "Flèche haut",
|
|
317
|
+
"down arrow": "Flèche bas",
|
|
318
|
+
"left arrow": "Flèche gauche",
|
|
319
|
+
"right arrow": "Flèche droite",
|
|
320
|
+
"LEFT_TOP_SHOULDER": "SHOULDER_GAUCHE_HAUT",
|
|
321
|
+
"RIGHT_TOP_SHOULDER": "SHOULDER_DROITE_HAUT",
|
|
322
|
+
"CRT beam": "CRT beam",
|
|
323
|
+
"CRT caligari": "CRT caligari",
|
|
324
|
+
"CRT lottes": "CRT lottes",
|
|
325
|
+
"CRT yeetron": "CRT yeetron",
|
|
326
|
+
"CRT zfast": "CRT zfast",
|
|
327
|
+
"SABR": "SABR",
|
|
328
|
+
"Bicubic": "Bicubique",
|
|
329
|
+
"Mix frames": "Mix frames",
|
|
330
|
+
"WebGL2": "WebGL2",
|
|
331
|
+
"Requires restart": "Redémarrage requis",
|
|
332
|
+
"VSync": "VSync",
|
|
333
|
+
"Video Rotation": "Rotation vidéo",
|
|
334
|
+
"Rewind Enabled (Requires restart)": "Rembobinage activé (Redémarrage requis)",
|
|
335
|
+
"System Save interval": "Intervalle de sauvegarde du système",
|
|
336
|
+
"Menu Bar Button": "Bouton de la barre de menu",
|
|
337
|
+
"visible": "visible",
|
|
338
|
+
"hidden": "masqué"
|
|
339
|
+
}
|