add ruffle and emulatorjs and amazing rope police

This commit is contained in:
skysthelimitt 2023-10-09 16:20:56 -04:00
parent 545e83213c
commit 07de7eefb3
110 changed files with 13826 additions and 21 deletions

View File

@ -22,8 +22,8 @@
// connect to canvas
var Module = {
TOTAL_MEMORY: 201326592,
filePackagePrefixURL: "https://raw.githubusercontent.com/EmulatorOS/gfile/main/adcap/Release/",
memoryInitializerPrefixURL: "https://rawcdn.githack.com/EmulatorOS/gfile/main/adcap/Release/",
filePackagePrefixURL: "https://rawcdn.githack.com/EmulatorOS/gfile/a353d35ac44f2c72439d6d765636765f0fd9b0f0/adcap/Release/",
memoryInitializerPrefixURL: "https://rawcdn.githack.com/EmulatorOS/gfile/a353d35ac44f2c72439d6d765636765f0fd9b0f0/adcap/Release/",
preRun: [],
postRun: [],
print: (function() {
@ -62,16 +62,16 @@
};
Module.setStatus('Downloading (0.0/1)');
</script>
<script src="https://rawcdn.githack.com/EmulatorOS/gfile/main/adcap/Release/UnityConfig.js"></script>
<script src="https://rawcdn.githack.com/EmulatorOS/gfile/main/adcap/Release/fileloader.js"></script>
<script src="https://cdn.jsdelivr.net/gh/EmulatorOS/gfile@main/adcap/Release/UnityConfig.js"></script>
<script src="https://cdn.jsdelivr.net/gh/EmulatorOS/gfile@main/adcap/Release/fileloader.js"></script>
<script>
if (!(!Math.fround)) {
var script = document.createElement('script');
script.src = "https://rawcdn.githack.com/EmulatorOS/gfile/main/adcap/Release/webgl.js";
script.src = "https://rawcdn.githack.com/EmulatorOS/gfile/a353d35ac44f2c72439d6d765636765f0fd9b0f0/adcap/Release/webgl.js";
document.body.appendChild(script);
} else {
var codeXHR = new XMLHttpRequest();
codeXHR.open('GET', 'https://rawcdn.githack.com/EmulatorOS/gfile/main/adcap/Release/webgl.js', true);
codeXHR.open('GET', 'https://rawcdn.githack.com/EmulatorOS/gfile/a353d35ac44f2c72439d6d765636765f0fd9b0f0/adcap/Release/webgl.js', true);
codeXHR.onload = function() {
var code = codeXHR.responseText;
if (!Math.fround) {

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1 @@
body{padding:0;margin:0;font-family:open sans,sans-serif}#game-root{position:relative;margin-left:auto;margin-right:auto;background-color:#434448}.game-overlay{background-color:#434448;background-position:center;background-size:cover;z-index:1;position:absolute;left:0;top:0;right:0;bottom:0;overflow:hidden}#adWrapper{width:100%;height:100%}#adContainer{width:100%;height:100%}#videoContent{overflow:hidden;position:absolute;width:100%;height:100%}#game-container{z-index:0;position:absolute;left:0;right:0;top:0;bottom:45px;background-color:#434448;box-shadow:0 5px 5px #888}#game-container.fullscreen{bottom:0}#game-container.has-own-toolbar{bottom:0}.game-footer{z-index:0;position:absolute;bottom:0;left:0;right:0;height:45px;background-color:#434448}.game-button{background:#3498db;background:linear-gradient(to bottom,#0086cb 0%,#0282c5 100%);cursor:pointer;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;text-shadow:1px 1px 3px #666;color:#fff;font-size:20px;font-weight:700;text-decoration:none;border:solid #1f628d 3px;text-transform:uppercase;padding:10px;display:block;margin:0 auto}.game-button:hover{background:#00a6e7;background-image:linear-gradient(to bottom,#00a6e7,#1a91cf);text-decoration:none}.game-button-link:hover{text-decoration:none}.game-footer{-webkit-user-select:none;-moz-user-select:none;box-sizing:content-box}.game-footer .game-footer-logo{font-size:24px;line-height:45px;padding:0 10px;margin:0}.game-footer .game-footer-logo a,.game-footer .game-footer-logo a:hover,.game-footer .game-footer-logo a:active{text-decoration:none;color:inherit}.game-footer .game-footer-fullscreen-button img{transition:all .2s ease-in-out}.game-footer .game-footer-fullscreen-button:hover img{transform:scale(1.15)}.game-footer .game-footer-button{color:#fff;height:45px;overflow-y:hidden;margin-left:5px;cursor:hand;font-weight:700}.game-footer .game-footer-button.game-footer-logo{margin:0}.game-footer .game-footer-button:hover{background-color:#353435}.game-footer .game-footer-button a.game-footer-link{line-height:15px;height:15px;display:inline-block}.game-footer .game-footer-button a.game-footer-link:link,.game-footer .game-footer-button a.game-footer-link:visited{color:inherit;text-decoration:none}.game-footer .game-footer-button a.game-footer-link:hover{background-color:#353435}.game-footer .game-footer-more{text-transform:uppercase;padding:0 10px;font-size:16px}.game-footer .game-footer-image-button{width:70px;overflow-x:hidden;height:45px;cursor:pointer}.game-footer .game-footer-image-button div{height:45px;text-align:center}.game-footer .game-footer-image-button div a{font-size:0}.preloader{-webkit-user-select:none;-moz-user-select:none;overflow:hidden}.preloader .preloader-game-name{font-size:20px;font-weight:700;text-transform:uppercase;color:#fff;margin-left:auto;margin-right:auto;text-align:center}.preloader .preloader-thumbnail{margin-left:auto;margin-right:auto;margin:8px 0 15px;width:300px}.preloader .preloader-progressbar{height:5px;background-color:rgba(10,10,10,.5)}.preloader .preloader-progressbar .preloader-progressbar-progress{width:0;height:100%;background-color:rgba(255,255,255,.5)}.preloader .preloader-progress-info{margin-left:auto;margin-right:auto;margin-top:10px;font-size:20px;color:grey;font-weight:700;text-align:center}@keyframes rotate_pacman_half_up{0%{transform:rotate(270deg)}50%{transform:rotate(360deg)}100%{transform:rotate(270deg)}}@keyframes rotate_pacman_half_down{0%{transform:rotate(90deg)}50%{transform:rotate(0deg)}100%{transform:rotate(90deg)}}@keyframes pacman-balls{75%{opacity:.7}100%{transform:translate(-100px,-6.25px)}}.pacman{position:relative}.pacman>div:nth-child(2){animation:pacman-balls 1s -.99s infinite linear}.pacman>div:nth-child(3){animation:pacman-balls 1s -.66s infinite linear}.pacman>div:nth-child(4){animation:pacman-balls 1s -.33s infinite linear}.pacman>div:nth-child(5){animation:pacman-balls 1s 0s infinite linear}.pacman>div:first-of-type{width:0;height:0;border-right:25px solid transparent;border-top:25px solid #fff;border-left:25px solid #fff;border-bottom:25px solid #fff;border-radius:25px;animation:rotate_pacman_half_up .5s 0s infinite;position:relative;left:-30px}.pacman>div:nth-child(2){width:0;height:0;border-right:25px solid transparent;border-top:25px solid #fff;border-left:25px solid #fff;border-bottom:25px solid #fff;border-radius:25px;animation:rotate_pacman_half_down .5s 0s infinite;margin-top:-50px;position:relative;left:-30px}.pacman>div:nth-child(3),.pacman>div:nth-child(4),.pacman>div:nth-child(5),.pacman>div:nth-child(6){background-color:#fff;width:15px;height:15px;border-radius:100%;margin:2px;width:10px;height:10px;position:absolute;transform:translate(0,-6.25px);top:25px;left:70px}.loader-hidden{display:none}.loader-active{display:block}.czy--text-bold{font-weight:700!important}a{text-decoration:none}a:hover{text-decoration:none}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,38 @@
<!DOCTYPE html>
<html>
<head>
<title>Amazing Strange Rope Police | 3kh0</title>
<link rel="stylesheet" href="crazygames-gameframe-v1.bundle.css" />
<script src="crazygames-gameframe-v1.bundle.js"></script>
<script src="/js/all.js"></script>
<script src="sdk.js"></script>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en_US" />
<meta http-equiv="Accept-CH" content="DPR">
<meta name="viewport" content="width=device-width, maximum-scale=1.0, initial-scale=1.0, user-scalable=no, minimal-ui" /><style>.game-footer { display: none } #game-container { width: 100%; height: 100% }</style></head>
<body>
<script type="text/javascript">
var options = {
author: "HGames-ArtWorks", thumbnail: decodeURIComponent("amazing-strange-rope-police-vice-spider-vegas.jpg"),
gameName: "Amazing Strange Rope Police",
gameSlug: "amazing-strange-rope-police-vice-spider",
dollarRate: 0.87854470826166,
gameHttps: true,
category: "Spiderman",
categoryLink: decodeURIComponent("https://sites.google.com/site/unblockedgames77/"),
allowFullscreen: true,
locale: "en_US",
noAdInFirstMinutes: 3,
loader: "5.6.x",
loaderOptions: {"moduleJsonUrl": "spider.json", "unityLoaderUrl": "spiderUnityLoader.js"},
videoThumbnail: decodeURIComponent("amazing-strange-rope-police-vice-spider-vegasb.mp4"),
playStoreLink: decodeURIComponent("https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.hgamesart.ropeboy"),
totalSize: "70.9 MB",
gameStatus: "published",
releaseDate: "2018-12-03",
};
Crazygames.load(options);
</script>
</body>
</html>

View File

@ -0,0 +1 @@
!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n.r(t);var r=function(){function e(){this.gameFrame=this.getGameframe(),this.eventHandler=this.eventHandler.bind(this),this.initialized=!1}return e.getInstance=function(){return this.instance||(this.instance=new e),this.instance},e.prototype.init=function(e){if(!this.initialized){this.initialized=!0;var t=e.crazySDKObjectName;this.crazySDKObjectName=t,this.registerEventHandlers()}},e.prototype.requestAd=function(e){this.gameFrame.requestAd(e)},e.prototype.getGameframe=function(){return window.Crazygames},e.prototype.registerEventHandlers=function(){var e=this,t=this.gameFrame.constants;[t.AD_STARTED,t.AD_COMPLETED,t.AD_ERROR,t.AD_FINISHED].forEach(function(t){e.registerEventHandler(t)})},e.prototype.registerEventHandler=function(e){var t=this;document.addEventListener(e,function(e){return t.eventHandler(e)},!1)},e.prototype.eventHandler=function(e){var t=this.gameFrame.getUnityInstance();if(t&&this.crazySDKObjectName){var n=this.createUnityEventString(e);t.SendMessage(this.crazySDKObjectName,"AdEvent",n)}},e.prototype.createUnityEventString=function(e){var t=this.gameFrame.constants,n=t.AD_STARTED,r=t.AD_COMPLETED,i=t.AD_ERROR,a=t.AD_FINISHED;switch(e.type){case n:return"adStarted";case r:return"adCompleted";case i:return"adError";case a:return"adFinished";default:throw new Error("[CrazySDK] Unexpected Event Type "+e.type)}},e}().getInstance();window.CrazySDK=r}]);

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,13 @@
{
"companyName": "hgamesartspider",
"productName": "Amazing Strange Rope Police - Vice Spider Vegas",
"dataUrl": "https://raw.githubusercontent.com/3kh0/3kh0-Assets/main/amazing-rope-police/spider.data.unityweb",
"asmCodeUrl": "spider.asm.code.unityweb",
"asmMemoryUrl": "spider.asm.memory.unityweb",
"asmFrameworkUrl": "spider.asm.framework.unityweb",
"TOTAL_MEMORY": 536870912,
"graphicsAPI": ["WebGL 2.0", "WebGL 1.0"],
"webglContextAttributes": {"preserveDrawingBuffer": false},
"splashScreenStyle": "Dark",
"backgroundColor": "#231F20"
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,38 @@
<!DOCTYPE html>
<html>
<head>
<title>Amazing Strange Rope Police Game Files | Crazy Games</title>
<link rel="stylesheet" href="crazygames-gameframe-v1.bundle.css" />
<link rel="canonical" href="https://gamasexual.com/amazing-strange-rope-police-vice-spider-vegas-game/" />
<script src="crazygames-gameframe-v1.bundle.js"></script>
<script src="sdk.js"></script>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en_US" />
<meta http-equiv="Accept-CH" content="DPR">
<meta name="viewport" content="width=device-width, maximum-scale=1.0, initial-scale=1.0, user-scalable=no, minimal-ui" /><style>.game-footer { display: none } #game-container { width: 100%; height: 100% }</style></head>
<body>
<script type="text/javascript">
var options = {
author: "HGames-ArtWorks", thumbnail: decodeURIComponent("https%3A%2F%2Fimages.crazygames.com%2Famazing-strange-rope-police-vice-spider-vegas.png%3Fauto%3Dformat%2Ccompress%26ch%3DDPR%26q%3D90%26cs%3Dstrip%26w%3D360"),
gameName: "Amazing Strange Rope Police",
gameSlug: "amazing-strange-rope-police-vice-spider",
dollarRate: 0.87854470826166,
gameHttps: true,
category: "Spiderman",
categoryLink: decodeURIComponent("https%3A%2F%2Fwww.crazygames.com%2Ft%2Fspiderman"),
allowFullscreen: true,
locale: "en_US",
noAdInFirstMinutes: 3,
loader: "5.6.x",
loaderOptions: {"moduleJsonUrl": "Build/spider.json", "unityLoaderUrl": "Build/UnityLoader.js"},
videoThumbnail: decodeURIComponent("https%3A%2F%2Fvideos.crazygames.com%2Famazing-strange-rope-police-vice-spider-vegasb.mp4"),
playStoreLink: decodeURIComponent("https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.hgamesart.ropeboy"),
totalSize: "70.9 MB",
gameStatus: "published",
releaseDate: "2018-12-03",
};
Crazygames.load(options);
</script>
</body>
</html>

View File

@ -0,0 +1,38 @@
<!DOCTYPE html>
<html>
<head>
<title>Amazing Strange Rope Police Game Files | Crazy Games</title>
<link rel="stylesheet" href="crazygames-gameframe-v1.bundle.css" />
<link rel="canonical" href="https://gamasexual.com/amazing-strange-rope-police-vice-spider-vegas-game/" />
<script src="crazygames-gameframe-v1.bundle.js"></script>
<script src="sdk.js"></script>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en_US" />
<meta http-equiv="Accept-CH" content="DPR">
<meta name="viewport" content="width=device-width, maximum-scale=1.0, initial-scale=1.0, user-scalable=no, minimal-ui" /><style>.game-footer { display: none } #game-container { width: 100%; height: 100% }</style></head>
<body>
<script type="text/javascript">
var options = {
author: "HGames-ArtWorks", thumbnail: decodeURIComponent("https%3A%2F%2Fimages.crazygames.com%2Famazing-strange-rope-police-vice-spider-vegas.png%3Fauto%3Dformat%2Ccompress%26ch%3DDPR%26q%3D90%26cs%3Dstrip%26w%3D360"),
gameName: "Amazing Strange Rope Police",
gameSlug: "amazing-strange-rope-police-vice-spider",
dollarRate: 0.87854470826166,
gameHttps: true,
category: "Spiderman",
categoryLink: decodeURIComponent("https%3A%2F%2Fwww.crazygames.com%2Ft%2Fspiderman"),
allowFullscreen: true,
locale: "en_US",
noAdInFirstMinutes: 3,
loader: "5.6.x",
loaderOptions: {"moduleJsonUrl": "Build/spider.json", "unityLoaderUrl": "spiderUnityLoader.js"},
videoThumbnail: decodeURIComponent("https%3A%2F%2Fvideos.crazygames.com%2Famazing-strange-rope-police-vice-spider-vegasb.mp4"),
playStoreLink: decodeURIComponent("https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.hgamesart.ropeboy"),
totalSize: "70.9 MB",
gameStatus: "published",
releaseDate: "2018-12-03",
};
Crazygames.load(options);
</script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,38 @@
<!DOCTYPE html>
<html>
<head>
<title>Amazing Strange Rope Police Game Files | Crazy Games</title>
<link rel="stylesheet" href="crazygames-gameframe-v1.bundle.css" />
<link rel="canonical" href="https://gamasexual.com/amazing-strange-rope-police-vice-spider-vegas-game/" />
<script src="crazygames-gameframe-v1.bundle.js"></script>
<script src="sdk.js"></script>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en_US" />
<meta http-equiv="Accept-CH" content="DPR">
<meta name="viewport" content="width=device-width, maximum-scale=1.0, initial-scale=1.0, user-scalable=no, minimal-ui" /><style>.game-footer { display: none } #game-container { width: 100%; height: 100% }</style></head>
<body>
<script type="text/javascript">
var options = {
author: "HGames-ArtWorks", thumbnail: decodeURIComponent("https%3A%2F%2Fimages.crazygames.com%2Famazing-strange-rope-police-vice-spider-vegas.png%3Fauto%3Dformat%2Ccompress%26ch%3DDPR%26q%3D90%26cs%3Dstrip%26w%3D360"),
gameName: "Amazing Strange Rope Police",
gameSlug: "amazing-strange-rope-police-vice-spider",
dollarRate: 0.87854470826166,
gameHttps: true,
category: "Spiderman",
categoryLink: decodeURIComponent("https%3A%2F%2Fwww.crazygames.com%2Ft%2Fspiderman"),
allowFullscreen: true,
locale: "en_US",
noAdInFirstMinutes: 3,
loader: "5.6.x",
loaderOptions: {"moduleJsonUrl": "Build/spider.json", "unityLoaderUrl": "spiderUnityLoader.js"},
videoThumbnail: decodeURIComponent("https%3A%2F%2Fvideos.crazygames.com%2Famazing-strange-rope-police-vice-spider-vegasb.mp4"),
playStoreLink: decodeURIComponent("https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.hgamesart.ropeboy"),
totalSize: "70.9 MB",
gameStatus: "published",
releaseDate: "2018-12-03",
};
Crazygames.load(options);
</script>
</body>
</html>

View File

@ -1,7 +1,7 @@
{
"companyName": "Mofunzone",
"productName": "Duck Life: Space",
"dataUrl": "https://rawcdn.githack.com/Edward358-AI/HTML5-games/3c35856e44aea5d93ebe781cb1af84570dd8512c/html5/ducklife5/play/Build/WebGL5MP-DATA.unityweb",
"dataUrl": "https://raw.githubusercontent.com/Edward358-AI/HTML5-games/3c35856e44aea5d93ebe781cb1af84570dd8512c/html5/ducklife5/play/Build/WebGL5MP-DATA.unityweb",
"asmCodeUrl": "WebGL5MP-CODE.unityweb",
"asmMemoryUrl": "WebGL5MP-MEMORY.unityweb",
"asmFrameworkUrl": "WebGL5MP-FRAMEWORK.unityweb",

View File

@ -0,0 +1,345 @@
class EJS_GameManager {
constructor(Module, EJS) {
this.EJS = EJS;
this.Module = Module;
this.FS = this.Module.FS;
this.functions = {
restart: this.Module.cwrap('system_restart', '', []),
getStateInfo: this.Module.cwrap('get_state_info', 'string', []), //these names are dumb
saveStateInfo: this.Module.cwrap('save_state_info', 'null', []),
loadState: this.Module.cwrap('load_state', 'number', ['string', 'number']),
screenshot: this.Module.cwrap('cmd_take_screenshot', '', []),
simulateInput: this.Module.cwrap('simulate_input', 'null', ['number', 'number', 'number']),
toggleMainLoop: this.Module.cwrap('toggleMainLoop', 'null', ['number']),
getCoreOptions: this.Module.cwrap('get_core_options', 'string', []),
setVariable: this.Module.cwrap('ejs_set_variable', 'null', ['string', 'string']),
setCheat: this.Module.cwrap('set_cheat', 'null', ['number', 'number', 'string']),
resetCheat: this.Module.cwrap('reset_cheat', 'null', []),
toggleShader: this.Module.cwrap('shader_enable', 'null', ['number']),
getDiskCount: this.Module.cwrap('get_disk_count', 'number', []),
getCurrentDisk: this.Module.cwrap('get_current_disk', 'number', []),
setCurrentDisk: this.Module.cwrap('set_current_disk', 'null', ['number']),
getSaveFilePath: this.Module.cwrap('save_file_path', 'string', []),
saveSaveFiles: this.Module.cwrap('cmd_savefiles', '', []),
supportsStates: this.Module.cwrap('supports_states', 'number', []),
loadSaveFiles: this.Module.cwrap('refresh_save_files', 'null', []),
toggleFastForward: this.Module.cwrap('toggle_fastforward', 'null', ['number']),
setFastForwardRatio: this.Module.cwrap('set_ff_ratio', 'null', ['number']),
toggleRewind: this.Module.cwrap('toggle_rewind', 'null', ['number']),
setRewindGranularity: this.Module.cwrap('set_rewind_granularity', 'null', ['number']),
toggleSlowMotion: this.Module.cwrap('toggle_slow_motion', 'null', ['number']),
setSlowMotionRatio: this.Module.cwrap('set_sm_ratio', 'null', ['number']),
getFrameNum: this.Module.cwrap('get_current_frame_count', 'number', [''])
}
this.mkdir("/home");
this.mkdir("/home/web_user");
this.mkdir("/home/web_user/retroarch");
this.mkdir("/home/web_user/retroarch/userdata");
this.mkdir("/home/web_user/retroarch/userdata/config");
this.mkdir("/home/web_user/retroarch/userdata/config/Beetle PSX HW");
this.FS.writeFile("/home/web_user/retroarch/userdata/config/Beetle PSX HW/Beetle PSX HW.opt", 'beetle_psx_hw_renderer = "software"\n');
this.mkdir("/data");
this.mkdir("/data/saves");
this.FS.writeFile("/home/web_user/retroarch/userdata/retroarch.cfg", this.getRetroArchCfg());
this.FS.mount(IDBFS, {}, '/data/saves');
this.FS.syncfs(true, () => {});
this.initShaders();
this.EJS.addEventListener(window, "beforeunload", () => {
this.saveSaveFiles();
this.FS.syncfs(() => {});
})
}
mkdir(path) {
try {
this.FS.mkdir(path);
} catch(e) {}
}
getRetroArchCfg() {
return "autosave_interval = 60\n" +
"screenshot_directory = \"/\"\n" +
"block_sram_overwrite = false\n" +
"video_gpu_screenshot = false\n" +
"audio_latency = 64\n" +
"video_top_portrait_viewport = true\n" +
"video_vsync = true\n" +
"video_smooth = false\n" +
"fastforward_ratio = 3.0\n" +
"slowmotion_ratio = 3.0\n" +
(this.EJS.rewindEnabled ? "rewind_enable = true\n" : "") +
(this.EJS.rewindEnabled ? "rewind_granularity = 6\n" : "") +
"savefile_directory = \"/data/saves\"\n";
}
initShaders() {
if (!window.EJS_SHADERS) return;
this.mkdir("/shader");
for (const shader in window.EJS_SHADERS) {
this.FS.writeFile('/shader/'+shader, window.EJS_SHADERS[shader]);
}
}
clearEJSResetTimer() {
if (this.EJS.resetTimeout) {
clearTimeout(this.EJS.resetTimeout);
delete this.EJS.resetTimeout;
}
}
restart() {
this.clearEJSResetTimer();
this.functions.restart();
}
getState() {
return new Promise(async (resolve, reject) => {
const stateInfo = (await this.getStateInfo()).split('|')
let state;
let size = stateInfo[0] >> 0;
if (size > 0) {
state = new Uint8Array(size);
let start = stateInfo[1] >> 0;
for (let i=0; i<size; i++) state[i] = this.Module.getValue(start + i);
}
resolve(state);
})
}
getStateInfo() {
this.functions.saveStateInfo();
return new Promise((resolve, reject) => {
let a;
let b = setInterval(() => {
a = this.functions.getStateInfo();
if (a) {
clearInterval(b);
resolve(a);
}
}, 50)
});
}
loadState(state) {
try {
this.FS.unlink('game.state');
} catch(e){}
this.FS.writeFile('/game.state', state);
this.clearEJSResetTimer();
this.functions.loadState("game.state", 0);
setTimeout(() => {
try {
this.FS.unlink('game.state');
} catch(e){}
}, 5000)
}
screenshot() {
this.functions.screenshot();
return this.FS.readFile('screenshot.png');
}
quickSave(slot) {
if (!slot) slot = 1;
(async () => {
let name = slot + '-quick.state';
try {
this.FS.unlink(name);
} catch (e) {}
let data = await this.getState();
this.FS.writeFile('/'+name, data);
})();
}
quickLoad(slot) {
if (!slot) slot = 1;
(async () => {
let name = slot + '-quick.state';
this.clearEJSResetTimer();
this.functions.loadState(name, 0);
})();
}
simulateInput(player, index, value) {
if (this.EJS.isNetplay) {
this.EJS.netplay.simulateInput(player, index, value);
return;
}
if ([24, 25, 26, 27, 28, 29].includes(index)) {
if (index === 24 && value === 1) {
const slot = this.EJS.settings['save-state-slot'] ? this.EJS.settings['save-state-slot'] : "1";
this.quickSave(slot);
this.EJS.displayMessage(this.EJS.localization("SAVED STATE TO SLOT")+" "+slot);
}
if (index === 25 && value === 1) {
const slot = this.EJS.settings['save-state-slot'] ? this.EJS.settings['save-state-slot'] : "1";
this.quickLoad(slot);
this.EJS.displayMessage(this.EJS.localization("LOADED STATE FROM SLOT")+" "+slot);
}
if (index === 26 && value === 1) {
let newSlot;
try {
newSlot = parseFloat(this.EJS.settings['save-state-slot'] ? this.EJS.settings['save-state-slot'] : "1") + 1;
} catch(e) {
newSlot = 1;
}
if (newSlot > 9) newSlot = 1;
this.EJS.displayMessage(this.EJS.localization("SET SAVE STATE SLOT TO")+" "+newSlot);
this.EJS.changeSettingOption('save-state-slot', newSlot.toString());
}
if (index === 27) {
this.functions.toggleFastForward(this.EJS.isFastForward ? !value : value);
}
if (index === 29) {
this.functions.toggleSlowMotion(this.EJS.isSlowMotion ? !value : value);
}
if (index === 28) {
if (this.EJS.rewindEnabled) {
this.functions.toggleRewind(value);
}
}
return;
}
this.functions.simulateInput(player, index, value);
}
getFileNames() {
if (this.EJS.getCore() === "picodrive") {
return ["bin", "gen", "smd", "md", "32x", "cue", "iso", "sms", "68k", "chd"];
} else {
return ["toc", "ccd", "exe", "pbp", "chd", "img", "bin", "iso"];
}
}
createCueFile(fileNames) {
try {
if (fileNames.length > 1) {
fileNames = fileNames.filter((item) => {
return this.getFileNames().includes(item.split(".").pop().toLowerCase());
})
fileNames = fileNames.sort((a, b) => {
if (isNaN(a.charAt()) || isNaN(b.charAt())) throw new Error("Incorrect file name format");
return (parseInt(a.charAt()) > parseInt(b.charAt())) ? 1 : -1;
})
}
} catch(e) {
if (fileNames.length > 1) {
console.warn("Could not auto-create cue file(s).");
return null;
}
}
for (let i=0; i<fileNames.length; i++) {
if (fileNames[i].split(".").pop().toLowerCase() === "ccd") {
console.warn("Did not auto-create cue file(s). Found a ccd.");
return null;
}
}
if (fileNames.length === 0) {
console.warn("Could not auto-create cue file(s).");
return null;
}
let baseFileName = fileNames[0].split("/").pop();
if (baseFileName.includes(".")) {
baseFileName = baseFileName.substring(0, baseFileName.length - baseFileName.split(".").pop().length - 1);
}
for (let i=0; i<fileNames.length; i++) {
const contents = " FILE \""+fileNames[i]+"\" BINARY\n TRACK 01 MODE1/2352\n INDEX 01 00:00:00";
FS.writeFile("/"+baseFileName+"-"+i+".cue", contents);
}
if (fileNames.length > 1) {
let contents = "";
for (let i=0; i<fileNames.length; i++) {
contents += "/"+baseFileName+"-"+i+".cue\n";
}
FS.writeFile("/"+baseFileName+".m3u", contents);
}
return (fileNames.length === 1) ? baseFileName+"-0.cue" : baseFileName+".m3u";
}
loadPpssppAssets() {
return new Promise(resolve => {
this.EJS.downloadFile('cores/ppsspp-assets.zip', (res) => {
this.EJS.checkCompression(new Uint8Array(res.data), this.EJS.localization("Decompress Game Data")).then((pspassets) => {
if (pspassets === -1) {
this.EJS.textElem.innerText = this.localization('Network Error');
this.EJS.textElem.style.color = "red";
return;
}
this.mkdir("/PPSSPP");
for (const file in pspassets) {
const data = pspassets[file];
const path = "/PPSSPP/"+file;
const paths = path.split("/");
let cp = "";
for (let i=0; i<paths.length-1; i++) {
if (paths[i] === "") continue;
cp += "/"+paths[i];
if (!FS.analyzePath(cp).exists) {
FS.mkdir(cp);
}
}
this.FS.writeFile(path, data);
}
resolve();
})
}, null, false, {responseType: "arraybuffer", method: "GET"});
})
}
toggleMainLoop(playing) {
this.functions.toggleMainLoop(playing);
}
getCoreOptions() {
return this.functions.getCoreOptions();
}
setVariable(option, value) {
this.functions.setVariable(option, value);
}
setCheat(index, enabled, code) {
this.functions.setCheat(index, enabled, code);
}
resetCheat() {
this.functions.resetCheat();
}
toggleShader(active) {
this.functions.toggleShader(active);
}
getDiskCount() {
return this.functions.getDiskCount();
}
getCurrentDisk() {
return this.functions.getCurrentDisk();
}
setCurrentDisk(disk) {
this.functions.setCurrentDisk(disk);
}
getSaveFilePath() {
return this.functions.getSaveFilePath();
}
saveSaveFiles() {
this.functions.saveSaveFiles();
this.FS.syncfs(false, () => {});
}
supportsStates() {
return !!this.functions.supportsStates();
}
getSaveFile() {
this.saveSaveFiles();
const exists = FS.analyzePath(this.getSaveFilePath()).exists;
return (exists ? FS.readFile(this.getSaveFilePath()) : null);
}
loadSaveFiles() {
this.clearEJSResetTimer();
this.functions.loadSaveFiles();
}
setFastForwardRatio(ratio) {
this.functions.setFastForwardRatio(ratio);
}
toggleFastForward(active) {
this.functions.toggleFastForward(active);
}
setSlowMotionRatio(ratio) {
this.functions.setSlowMotionRatio(ratio);
}
toggleSlowMotion(active) {
this.functions.toggleSlowMotion(active);
}
setRewindGranularity(value) {
this.functions.setRewindGranularity(value);
}
getFrameNum() {
return this.functions.getFrameNum();
}
}
window.EJS_GameManager = EJS_GameManager;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,519 @@
var c;c||(c=typeof Module !== 'undefined' ? Module : {});var ba={},g;for(g in c)c.hasOwnProperty(g)&&(ba[g]=c[g]);var ca="./this.program",da=!1,m=!1,ea=!1,fa=!1;da="object"===typeof window;m="function"===typeof importScripts;ea="object"===typeof process&&"object"===typeof process.versions&&"string"===typeof process.versions.node;fa=!da&&!ea&&!m;var p="",r,ha,ia,ja;
if(ea)p=m?require("path").dirname(p)+"/":__dirname+"/",r=function(a,b){ia||(ia=require("fs"));ja||(ja=require("path"));a=ja.normalize(a);return ia.readFileSync(a,b?null:"utf8")},ha=function(a){a=r(a,!0);a.buffer||(a=new Uint8Array(a));assert(a.buffer);return a},1<process.argv.length&&(ca=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),"undefined"!==typeof module&&(module.exports=c),process.on("uncaughtException",function(a){throw a;}),process.on("unhandledRejection",u),c.inspect=function(){return"[Emscripten Module object]"};
else if(fa)"undefined"!=typeof read&&(r=function(a){return read(a)}),ha=function(a){if("function"===typeof readbuffer)return new Uint8Array(readbuffer(a));a=read(a,"binary");assert("object"===typeof a);return a},"undefined"!==typeof print&&("undefined"===typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!==typeof printErr?printErr:print);else if(da||m)m?p=self.location.href:document.currentScript&&(p=document.currentScript.src),p=0!==p.indexOf("blob:")?p.substr(0,
p.lastIndexOf("/")+1):"",r=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},m&&(ha=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)});var ka=c.print||console.log.bind(console),v=c.printErr||console.warn.bind(console);for(g in ba)ba.hasOwnProperty(g)&&(c[g]=ba[g]);ba=null;c.thisProgram&&(ca=c.thisProgram);var la=[],x,ma;c.wasmBinary&&(ma=c.wasmBinary);var noExitRuntime;
c.noExitRuntime&&(noExitRuntime=c.noExitRuntime);"object"!==typeof WebAssembly&&v("no native wasm support detected");var y,z=new WebAssembly.Table({initial:38,maximum:58,element:"anyfunc"}),na=!1;function assert(a,b){a||u("Assertion failed: "+b)}var oa="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;
function D(a,b,d){var e=b+d;for(d=b;a[d]&&!(d>=e);)++d;if(16<d-b&&a.subarray&&oa)return oa.decode(a.subarray(b,d));for(e="";b<d;){var f=a[b++];if(f&128){var h=a[b++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|h);else{var k=a[b++]&63;f=224==(f&240)?(f&15)<<12|h<<6|k:(f&7)<<18|h<<12|k<<6|a[b++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}return e}function F(a,b){return a?D(pa,a,b):""}
function qa(a,b,d,e){if(!(0<e))return 0;var f=d;e=d+e-1;for(var h=0;h<a.length;++h){var k=a.charCodeAt(h);if(55296<=k&&57343>=k){var l=a.charCodeAt(++h);k=65536+((k&1023)<<10)|l&1023}if(127>=k){if(d>=e)break;b[d++]=k}else{if(2047>=k){if(d+1>=e)break;b[d++]=192|k>>6}else{if(65535>=k){if(d+2>=e)break;b[d++]=224|k>>12}else{if(d+3>=e)break;b[d++]=240|k>>18;b[d++]=128|k>>12&63}b[d++]=128|k>>6&63}b[d++]=128|k&63}}b[d]=0;return d-f}function ra(a,b,d){return qa(a,pa,b,d)}
function sa(a){for(var b=0,d=0;d<a.length;++d){var e=a.charCodeAt(d);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++b:b=2047>=e?b+2:65535>=e?b+3:b+4}return b}function ta(a){var b=sa(a)+1,d=ua(b);d&&qa(a,G,d,b);return d}var va,G,pa,H;
function wa(a){va=a;c.HEAP8=G=new Int8Array(a);c.HEAP16=new Int16Array(a);c.HEAP32=H=new Int32Array(a);c.HEAPU8=pa=new Uint8Array(a);c.HEAPU16=new Uint16Array(a);c.HEAPU32=new Uint32Array(a);c.HEAPF32=new Float32Array(a);c.HEAPF64=new Float64Array(a)}var xa=c.INITIAL_MEMORY||16777216;c.wasmMemory?y=c.wasmMemory:y=new WebAssembly.Memory({initial:xa/65536,maximum:32768});y&&(va=y.buffer);xa=va.byteLength;wa(va);H[16784]=5310176;
function ya(a){for(;0<a.length;){var b=a.shift();if("function"==typeof b)b(c);else{var d=b.Jc;"number"===typeof d?void 0===b.rb?c.dynCall_v(d):c.dynCall_vi(d,b.rb):d(void 0===b.rb?null:b.rb)}}}var za=[],Aa=[],Ba=[],Ca=[],Da=!1;function Ea(){var a=c.preRun.shift();za.unshift(a)}var Fa=Math.abs,Ga=Math.ceil,Ha=Math.floor,Ia=Math.min,K=0,Ja=null,Ka=null;function La(){K++;c.monitorRunDependencies&&c.monitorRunDependencies(K)}
function Ma(){K--;c.monitorRunDependencies&&c.monitorRunDependencies(K);if(0==K&&(null!==Ja&&(clearInterval(Ja),Ja=null),Ka)){var a=Ka;Ka=null;a()}}c.preloadedImages={};c.preloadedAudios={};function u(a){if(c.onAbort)c.onAbort(a);ka(a);v(a);na=!0;throw new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");}function Na(a){var b=L;return String.prototype.startsWith?b.startsWith(a):0===b.indexOf(a)}function Oa(){return Na("data:application/octet-stream;base64,")}
var L="libunrar.wasm";if(!Oa()){var Pa=L;L=c.locateFile?c.locateFile(Pa,p):p+Pa}function Qa(){try{if(ma)return new Uint8Array(ma);if(ha)return ha(L);throw"both async and sync fetching of the wasm failed";}catch(a){u(a)}}function Ra(){return ma||!da&&!m||"function"!==typeof fetch||Na("file://")?new Promise(function(a){a(Qa())}):fetch(L,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+L+"'";return a.arrayBuffer()}).catch(function(){return Qa()})}
var M,N;Aa.push({Jc:function(){Sa()}});function Ta(a){return a.replace(/\b_Z[\w\d_]+/g,function(b){return b===b?b:b+" ["+b+"]"})}function Ua(){return 0<Ua.Ea}function Va(a,b){for(var d=0,e=a.length-1;0<=e;e--){var f=a[e];"."===f?a.splice(e,1):".."===f?(a.splice(e,1),d++):d&&(a.splice(e,1),d--)}if(b)for(;d;d--)a.unshift("..");return a}
function O(a){var b="/"===a.charAt(0),d="/"===a.substr(-1);(a=Va(a.split("/").filter(function(e){return!!e}),!b).join("/"))||b||(a=".");a&&d&&(a+="/");return(b?"/":"")+a}function Wa(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function P(a){if("/"===a)return"/";var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)}
function Xa(){var a=Array.prototype.slice.call(arguments,0);return O(a.join("/"))}function Q(a,b){return O(a+"/"+b)}function Ya(a){return H[Za()>>2]=a}function R(){for(var a="",b=!1,d=arguments.length-1;-1<=d&&!b;d--){b=0<=d?arguments[d]:S.cwd();if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=Va(a.split("/").filter(function(e){return!!e}),!b).join("/");return(b?"/":"")+a||"."}
function $a(a,b){function d(k){for(var l=0;l<k.length&&""===k[l];l++);for(var q=k.length-1;0<=q&&""===k[q];q--);return l>q?[]:k.slice(l,q-l+1)}a=R(a).substr(1);b=R(b).substr(1);a=d(a.split("/"));b=d(b.split("/"));for(var e=Math.min(a.length,b.length),f=e,h=0;h<e;h++)if(a[h]!==b[h]){f=h;break}e=[];for(h=f;h<a.length;h++)e.push("..");e=e.concat(b.slice(f));return e.join("/")}var ab=[];function bb(a,b){ab[a]={input:[],output:[],Ta:b};S.Hb(a,cb)}
var cb={open:function(a){var b=ab[a.node.rdev];if(!b)throw new S.ra(43);a.tty=b;a.seekable=!1},close:function(a){a.tty.Ta.flush(a.tty)},flush:function(a){a.tty.Ta.flush(a.tty)},read:function(a,b,d,e){if(!a.tty||!a.tty.Ta.ec)throw new S.ra(60);for(var f=0,h=0;h<e;h++){try{var k=a.tty.Ta.ec(a.tty)}catch(l){throw new S.ra(29);}if(void 0===k&&0===f)throw new S.ra(6);if(null===k||void 0===k)break;f++;b[d+h]=k}f&&(a.node.timestamp=Date.now());return f},write:function(a,b,d,e){if(!a.tty||!a.tty.Ta.Db)throw new S.ra(60);
try{for(var f=0;f<e;f++)a.tty.Ta.Db(a.tty,b[d+f])}catch(h){throw new S.ra(29);}e&&(a.node.timestamp=Date.now());return f}},eb={ec:function(a){if(!a.input.length){var b=null;if(ea){var d=Buffer.Ea?Buffer.Ea(256):new Buffer(256),e=0;try{e=ia.readSync(process.stdin.fd,d,0,256,null)}catch(f){if(-1!=f.toString().indexOf("EOF"))e=0;else throw f;}0<e?b=d.slice(0,e).toString("utf-8"):b=null}else"undefined"!=typeof window&&"function"==typeof window.prompt?(b=window.prompt("Input: "),null!==b&&(b+="\n")):"function"==
typeof readline&&(b=readline(),null!==b&&(b+="\n"));if(!b)return null;a.input=db(b,!0)}return a.input.shift()},Db:function(a,b){null===b||10===b?(ka(D(a.output,0)),a.output=[]):0!=b&&a.output.push(b)},flush:function(a){a.output&&0<a.output.length&&(ka(D(a.output,0)),a.output=[])}},fb={Db:function(a,b){null===b||10===b?(v(D(a.output,0)),a.output=[]):0!=b&&a.output.push(b)},flush:function(a){a.output&&0<a.output.length&&(v(D(a.output,0)),a.output=[])}},T={Ma:null,Aa:function(){return T.createNode(null,
"/",16895,0)},createNode:function(a,b,d,e){if(S.Mc(d)||S.isFIFO(d))throw new S.ra(63);T.Ma||(T.Ma={dir:{node:{Ga:T.ta.Ga,Ca:T.ta.Ca,lookup:T.ta.lookup,Ka:T.ta.Ka,rename:T.ta.rename,unlink:T.ta.unlink,rmdir:T.ta.rmdir,readdir:T.ta.readdir,symlink:T.ta.symlink},stream:{Ha:T.ua.Ha}},file:{node:{Ga:T.ta.Ga,Ca:T.ta.Ca},stream:{Ha:T.ua.Ha,read:T.ua.read,write:T.ua.write,Xa:T.ua.Xa,ab:T.ua.ab,eb:T.ua.eb}},link:{node:{Ga:T.ta.Ga,Ca:T.ta.Ca,readlink:T.ta.readlink},stream:{}},Sb:{node:{Ga:T.ta.Ga,Ca:T.ta.Ca},
stream:S.yc}});d=S.createNode(a,b,d,e);S.Ba(d.mode)?(d.ta=T.Ma.dir.node,d.ua=T.Ma.dir.stream,d.sa={}):S.isFile(d.mode)?(d.ta=T.Ma.file.node,d.ua=T.Ma.file.stream,d.za=0,d.sa=null):S.Sa(d.mode)?(d.ta=T.Ma.link.node,d.ua=T.Ma.link.stream):S.jb(d.mode)&&(d.ta=T.Ma.Sb.node,d.ua=T.Ma.Sb.stream);d.timestamp=Date.now();a&&(a.sa[b]=d);return d},gd:function(a){if(a.sa&&a.sa.subarray){for(var b=[],d=0;d<a.za;++d)b.push(a.sa[d]);return b}return a.sa},hd:function(a){return a.sa?a.sa.subarray?a.sa.subarray(0,
a.za):new Uint8Array(a.sa):new Uint8Array(0)},ac:function(a,b){var d=a.sa?a.sa.length:0;d>=b||(b=Math.max(b,d*(1048576>d?2:1.125)>>>0),0!=d&&(b=Math.max(b,256)),d=a.sa,a.sa=new Uint8Array(b),0<a.za&&a.sa.set(d.subarray(0,a.za),0))},Wc:function(a,b){if(a.za!=b)if(0==b)a.sa=null,a.za=0;else{if(!a.sa||a.sa.subarray){var d=a.sa;a.sa=new Uint8Array(b);d&&a.sa.set(d.subarray(0,Math.min(b,a.za)))}else if(a.sa||(a.sa=[]),a.sa.length>b)a.sa.length=b;else for(;a.sa.length<b;)a.sa.push(0);a.za=b}},ta:{Ga:function(a){var b=
{};b.dev=S.jb(a.mode)?a.id:1;b.ino=a.id;b.mode=a.mode;b.nlink=1;b.uid=0;b.gid=0;b.rdev=a.rdev;S.Ba(a.mode)?b.size=4096:S.isFile(a.mode)?b.size=a.za:S.Sa(a.mode)?b.size=a.link.length:b.size=0;b.atime=new Date(a.timestamp);b.mtime=new Date(a.timestamp);b.ctime=new Date(a.timestamp);b.Qb=4096;b.blocks=Math.ceil(b.size/b.Qb);return b},Ca:function(a,b){void 0!==b.mode&&(a.mode=b.mode);void 0!==b.timestamp&&(a.timestamp=b.timestamp);void 0!==b.size&&T.Wc(a,b.size)},lookup:function(){throw S.ub[44];},Ka:function(a,
b,d,e){return T.createNode(a,b,d,e)},rename:function(a,b,d){if(S.Ba(a.mode)){try{var e=S.Na(b,d)}catch(h){}if(e)for(var f in e.sa)throw new S.ra(55);}delete a.parent.sa[a.name];a.name=d;b.sa[d]=a;a.parent=b},unlink:function(a,b){delete a.sa[b]},rmdir:function(a,b){var d=S.Na(a,b),e;for(e in d.sa)throw new S.ra(55);delete a.sa[b]},readdir:function(a){var b=[".",".."],d;for(d in a.sa)a.sa.hasOwnProperty(d)&&b.push(d);return b},symlink:function(a,b,d){a=T.createNode(a,b,41471,0);a.link=d;return a},readlink:function(a){if(!S.Sa(a.mode))throw new S.ra(28);
return a.link}},ua:{read:function(a,b,d,e,f){var h=a.node.sa;if(f>=a.node.za)return 0;a=Math.min(a.node.za-f,e);if(8<a&&h.subarray)b.set(h.subarray(f,f+a),d);else for(e=0;e<a;e++)b[d+e]=h[f+e];return a},write:function(a,b,d,e,f,h){b.buffer===G.buffer&&(h=!1);if(!e)return 0;a=a.node;a.timestamp=Date.now();if(b.subarray&&(!a.sa||a.sa.subarray)){if(h)return a.sa=b.subarray(d,d+e),a.za=e;if(0===a.za&&0===f)return a.sa=b.slice(d,d+e),a.za=e;if(f+e<=a.za)return a.sa.set(b.subarray(d,d+e),f),e}T.ac(a,f+
e);if(a.sa.subarray&&b.subarray)a.sa.set(b.subarray(d,d+e),f);else for(h=0;h<e;h++)a.sa[f+h]=b[d+h];a.za=Math.max(a.za,f+e);return e},Ha:function(a,b,d){1===d?b+=a.position:2===d&&S.isFile(a.node.mode)&&(b+=a.node.za);if(0>b)throw new S.ra(28);return b},Xa:function(a,b,d){T.ac(a.node,b+d);a.node.za=Math.max(a.node.za,b+d)},ab:function(a,b,d,e,f,h,k){if(!S.isFile(a.node.mode))throw new S.ra(43);a=a.node.sa;if(k&2||a.buffer!==b.buffer){if(0<f||f+e<a.length)a.subarray?a=a.subarray(f,f+e):a=Array.prototype.slice.call(a,
f,f+e);f=!0;k=b.buffer==G.buffer;e=ua(e);if(!e)throw new S.ra(48);(k?G:b).set(a,e)}else f=!1,e=a.byteOffset;return{va:e,cd:f}},eb:function(a,b,d,e,f){if(!S.isFile(a.node.mode))throw new S.ra(43);if(f&2)return 0;T.ua.write(a,b,0,e,d,!1);return 0}}},U={ob:16895,Va:33279,Fb:null,Aa:function(a){function b(h){h=h.split("/");for(var k=e,l=0;l<h.length-1;l++){var q=h.slice(0,l+1).join("/");f[q]||(f[q]=U.createNode(k,h[l],U.ob,0));k=f[q]}return k}function d(h){h=h.split("/");return h[h.length-1]}assert(m);
U.Fb||(U.Fb=new FileReaderSync);var e=U.createNode(null,"/",U.ob,0),f={};Array.prototype.forEach.call(a.Cb.files||[],function(h){U.createNode(b(h.name),d(h.name),U.Va,0,h,h.lastModifiedDate)});(a.Cb.blobs||[]).forEach(function(h){U.createNode(b(h.name),d(h.name),U.Va,0,h.data)});(a.Cb.packages||[]).forEach(function(h){h.metadata.files.forEach(function(k){var l=k.filename.substr(1);U.createNode(b(l),d(l),U.Va,0,h.blob.slice(k.start,k.end))})});return e},createNode:function(a,b,d,e,f,h){e=S.createNode(a,
b,d);e.mode=d;e.ta=U.ta;e.ua=U.ua;e.timestamp=(h||new Date).getTime();assert(U.Va!==U.ob);d===U.Va?(e.size=f.size,e.sa=f):(e.size=4096,e.sa={});a&&(a.sa[b]=e);return e},ta:{Ga:function(a){return{dev:1,ino:a.id,mode:a.mode,nlink:1,uid:0,gid:0,rdev:void 0,size:a.size,atime:new Date(a.timestamp),mtime:new Date(a.timestamp),ctime:new Date(a.timestamp),Qb:4096,blocks:Math.ceil(a.size/4096)}},Ca:function(a,b){void 0!==b.mode&&(a.mode=b.mode);void 0!==b.timestamp&&(a.timestamp=b.timestamp)},lookup:function(){throw new S.ra(44);
},Ka:function(){throw new S.ra(63);},rename:function(){throw new S.ra(63);},unlink:function(){throw new S.ra(63);},rmdir:function(){throw new S.ra(63);},readdir:function(a){var b=[".",".."],d;for(d in a.sa)a.sa.hasOwnProperty(d)&&b.push(d);return b},symlink:function(){throw new S.ra(63);},readlink:function(){throw new S.ra(63);}},ua:{read:function(a,b,d,e,f){if(f>=a.node.size)return 0;a=a.node.sa.slice(f,f+e);e=U.Fb.readAsArrayBuffer(a);b.set(new Uint8Array(e),d);return a.size},write:function(){throw new S.ra(29);
},Ha:function(a,b,d){1===d?b+=a.position:2===d&&S.isFile(a.node.mode)&&(b+=a.node.size);if(0>b)throw new S.ra(28);return b}}},S={root:null,cb:[],Zb:{},streams:[],Rc:1,La:null,Yb:"/",xb:!1,jc:!0,Da:{},oc:{mc:{tc:1,uc:2}},ra:null,ub:{},Gc:null,nb:0,Lc:function(a){if(!(a instanceof S.ra)){a:{var b=Error();if(!b.stack){try{throw Error();}catch(d){b=d}if(!b.stack){b="(no stack trace available)";break a}}b=b.stack.toString()}c.extraStackTrace&&(b+="\n"+c.extraStackTrace());b=Ta(b);throw a+" : "+b;}return Ya(a.wa)},
ya:function(a,b){a=R(S.cwd(),a);b=b||{};if(!a)return{path:"",node:null};var d={tb:!0,Gb:0},e;for(e in d)void 0===b[e]&&(b[e]=d[e]);if(8<b.Gb)throw new S.ra(32);a=Va(a.split("/").filter(function(k){return!!k}),!1);var f=S.root;d="/";for(e=0;e<a.length;e++){var h=e===a.length-1;if(h&&b.parent)break;f=S.Na(f,a[e]);d=Q(d,a[e]);S.Pa(f)&&(!h||h&&b.tb)&&(f=f.bb.root);if(!h||b.Fa)for(h=0;S.Sa(f.mode);)if(f=S.readlink(d),d=R(Wa(d),f),f=S.ya(d,{Gb:b.Gb}).node,40<h++)throw new S.ra(32);}return{path:d,node:f}},
Ja:function(a){for(var b;;){if(S.kb(a))return a=a.Aa.lc,b?"/"!==a[a.length-1]?a+"/"+b:a+b:a;b=b?a.name+"/"+b:a.name;a=a.parent}},wb:function(a,b){for(var d=0,e=0;e<b.length;e++)d=(d<<5)-d+b.charCodeAt(e)|0;return(a+d>>>0)%S.La.length},hc:function(a){var b=S.wb(a.parent.id,a.name);a.Ra=S.La[b];S.La[b]=a},ic:function(a){var b=S.wb(a.parent.id,a.name);if(S.La[b]===a)S.La[b]=a.Ra;else for(b=S.La[b];b;){if(b.Ra===a){b.Ra=a.Ra;break}b=b.Ra}},Na:function(a,b){var d=S.Oc(a);if(d)throw new S.ra(d,a);for(d=
S.La[S.wb(a.id,b)];d;d=d.Ra){var e=d.name;if(d.parent.id===a.id&&e===b)return d}return S.lookup(a,b)},createNode:function(a,b,d,e){a=new S.rc(a,b,d,e);S.hc(a);return a},sb:function(a){S.ic(a)},kb:function(a){return a===a.parent},Pa:function(a){return!!a.bb},isFile:function(a){return 32768===(a&61440)},Ba:function(a){return 16384===(a&61440)},Sa:function(a){return 40960===(a&61440)},jb:function(a){return 8192===(a&61440)},Mc:function(a){return 24576===(a&61440)},isFIFO:function(a){return 4096===(a&
61440)},isSocket:function(a){return 49152===(a&49152)},Hc:{r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218},Qc:function(a){var b=S.Hc[a];if("undefined"===typeof b)throw Error("Unknown file open mode: "+a);return b},bc:function(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b},Oa:function(a,b){if(S.jc)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return 2}else return 2;
return 0},Oc:function(a){var b=S.Oa(a,"x");return b?b:a.ta.lookup?0:2},Bb:function(a,b){try{return S.Na(a,b),20}catch(d){}return S.Oa(a,"wx")},lb:function(a,b,d){try{var e=S.Na(a,b)}catch(f){return f.wa}if(a=S.Oa(a,"wx"))return a;if(d){if(!S.Ba(e.mode))return 54;if(S.kb(e)||S.Ja(e)===S.cwd())return 10}else if(S.Ba(e.mode))return 31;return 0},Pc:function(a,b){return a?S.Sa(a.mode)?32:S.Ba(a.mode)&&("r"!==S.bc(b)||b&512)?31:S.Oa(a,S.bc(b)):44},sc:4096,Sc:function(a,b){b=b||S.sc;for(a=a||0;a<=b;a++)if(!S.streams[a])return a;
throw new S.ra(33);},Ya:function(a){return S.streams[a]},Fc:function(a,b,d){S.pb||(S.pb=function(){},S.pb.prototype={object:{get:function(){return this.node},set:function(h){this.node=h}}});var e=new S.pb,f;for(f in a)e[f]=a[f];a=e;b=S.Sc(b,d);a.fd=b;return S.streams[b]=a},zc:function(a){S.streams[a]=null},yc:{open:function(a){a.ua=S.Kc(a.node.rdev).ua;a.ua.open&&a.ua.open(a)},Ha:function(){throw new S.ra(70);}},Ab:function(a){return a>>8},ld:function(a){return a&255},Qa:function(a,b){return a<<8|
b},Hb:function(a,b){S.Zb[a]={ua:b}},Kc:function(a){return S.Zb[a]},dc:function(a){var b=[];for(a=[a];a.length;){var d=a.pop();b.push(d);a.push.apply(a,d.cb)}return b},nc:function(a,b){function d(k){S.nb--;return b(k)}function e(k){if(k){if(!e.Ea)return e.Ea=!0,d(k)}else++h>=f.length&&d(null)}"function"===typeof a&&(b=a,a=!1);S.nb++;1<S.nb&&v("warning: "+S.nb+" FS.syncfs operations in flight at once, probably just doing extra work");var f=S.dc(S.root.Aa),h=0;f.forEach(function(k){if(!k.type.nc)return e(null);
k.type.nc(k,a,e)})},Aa:function(a,b,d){var e="/"===d,f=!d;if(e&&S.root)throw new S.ra(10);if(!e&&!f){var h=S.ya(d,{tb:!1});d=h.path;h=h.node;if(S.Pa(h))throw new S.ra(10);if(!S.Ba(h.mode))throw new S.ra(54);}b={type:a,Cb:b,lc:d,cb:[]};a=a.Aa(b);a.Aa=b;b.root=a;e?S.root=a:h&&(h.bb=b,h.Aa&&h.Aa.cb.push(b));return a},$c:function(a){a=S.ya(a,{tb:!1});if(!S.Pa(a.node))throw new S.ra(28);a=a.node;var b=a.bb,d=S.dc(b);Object.keys(S.La).forEach(function(e){for(e=S.La[e];e;){var f=e.Ra;-1!==d.indexOf(e.Aa)&&
S.sb(e);e=f}});a.bb=null;a.Aa.cb.splice(a.Aa.cb.indexOf(b),1)},lookup:function(a,b){return a.ta.lookup(a,b)},Ka:function(a,b,d){var e=S.ya(a,{parent:!0}).node;a=P(a);if(!a||"."===a||".."===a)throw new S.ra(28);var f=S.Bb(e,a);if(f)throw new S.ra(f);if(!e.ta.Ka)throw new S.ra(63);return e.ta.Ka(e,a,b,d)},create:function(a,b){return S.Ka(a,(void 0!==b?b:438)&4095|32768,0)},mkdir:function(a,b){return S.Ka(a,(void 0!==b?b:511)&1023|16384,0)},md:function(a,b){a=a.split("/");for(var d="",e=0;e<a.length;++e)if(a[e]){d+=
"/"+a[e];try{S.mkdir(d,b)}catch(f){if(20!=f.wa)throw f;}}},mb:function(a,b,d){"undefined"===typeof d&&(d=b,b=438);return S.Ka(a,b|8192,d)},symlink:function(a,b){if(!R(a))throw new S.ra(44);var d=S.ya(b,{parent:!0}).node;if(!d)throw new S.ra(44);b=P(b);var e=S.Bb(d,b);if(e)throw new S.ra(e);if(!d.ta.symlink)throw new S.ra(63);return d.ta.symlink(d,b,a)},rename:function(a,b){var d=Wa(a),e=Wa(b),f=P(a),h=P(b);try{var k=S.ya(a,{parent:!0});var l=k.node;k=S.ya(b,{parent:!0});var q=k.node}catch(t){throw new S.ra(10);
}if(!l||!q)throw new S.ra(44);if(l.Aa!==q.Aa)throw new S.ra(75);k=S.Na(l,f);e=$a(a,e);if("."!==e.charAt(0))throw new S.ra(28);e=$a(b,d);if("."!==e.charAt(0))throw new S.ra(55);try{var n=S.Na(q,h)}catch(t){}if(k!==n){d=S.Ba(k.mode);if(f=S.lb(l,f,d))throw new S.ra(f);if(f=n?S.lb(q,h,d):S.Bb(q,h))throw new S.ra(f);if(!l.ta.rename)throw new S.ra(63);if(S.Pa(k)||n&&S.Pa(n))throw new S.ra(10);if(q!==l&&(f=S.Oa(l,"w")))throw new S.ra(f);try{S.Da.willMovePath&&S.Da.willMovePath(a,b)}catch(t){v("FS.trackingDelegate['willMovePath']('"+
a+"', '"+b+"') threw an exception: "+t.message)}S.ic(k);try{l.ta.rename(k,q,h)}catch(t){throw t;}finally{S.hc(k)}try{if(S.Da.onMovePath)S.Da.onMovePath(a,b)}catch(t){v("FS.trackingDelegate['onMovePath']('"+a+"', '"+b+"') threw an exception: "+t.message)}}},rmdir:function(a){var b=S.ya(a,{parent:!0}).node,d=P(a),e=S.Na(b,d),f=S.lb(b,d,!0);if(f)throw new S.ra(f);if(!b.ta.rmdir)throw new S.ra(63);if(S.Pa(e))throw new S.ra(10);try{S.Da.willDeletePath&&S.Da.willDeletePath(a)}catch(h){v("FS.trackingDelegate['willDeletePath']('"+
a+"') threw an exception: "+h.message)}b.ta.rmdir(b,d);S.sb(e);try{if(S.Da.onDeletePath)S.Da.onDeletePath(a)}catch(h){v("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+h.message)}},readdir:function(a){a=S.ya(a,{Fa:!0}).node;if(!a.ta.readdir)throw new S.ra(54);return a.ta.readdir(a)},unlink:function(a){var b=S.ya(a,{parent:!0}).node,d=P(a),e=S.Na(b,d),f=S.lb(b,d,!1);if(f)throw new S.ra(f);if(!b.ta.unlink)throw new S.ra(63);if(S.Pa(e))throw new S.ra(10);try{S.Da.willDeletePath&&
S.Da.willDeletePath(a)}catch(h){v("FS.trackingDelegate['willDeletePath']('"+a+"') threw an exception: "+h.message)}b.ta.unlink(b,d);S.sb(e);try{if(S.Da.onDeletePath)S.Da.onDeletePath(a)}catch(h){v("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+h.message)}},readlink:function(a){a=S.ya(a).node;if(!a)throw new S.ra(44);if(!a.ta.readlink)throw new S.ra(28);return R(S.Ja(a.parent),a.ta.readlink(a))},stat:function(a,b){a=S.ya(a,{Fa:!b}).node;if(!a)throw new S.ra(44);if(!a.ta.Ga)throw new S.ra(63);
return a.ta.Ga(a)},lstat:function(a){return S.stat(a,!0)},chmod:function(a,b,d){var e;"string"===typeof a?e=S.ya(a,{Fa:!d}).node:e=a;if(!e.ta.Ca)throw new S.ra(63);e.ta.Ca(e,{mode:b&4095|e.mode&-4096,timestamp:Date.now()})},lchmod:function(a,b){S.chmod(a,b,!0)},fchmod:function(a,b){a=S.Ya(a);if(!a)throw new S.ra(8);S.chmod(a.node,b)},chown:function(a,b,d,e){var f;"string"===typeof a?f=S.ya(a,{Fa:!e}).node:f=a;if(!f.ta.Ca)throw new S.ra(63);f.ta.Ca(f,{timestamp:Date.now()})},lchown:function(a,b,d){S.chown(a,
b,d,!0)},fchown:function(a,b,d){a=S.Ya(a);if(!a)throw new S.ra(8);S.chown(a.node,b,d)},truncate:function(a,b){if(0>b)throw new S.ra(28);var d;"string"===typeof a?d=S.ya(a,{Fa:!0}).node:d=a;if(!d.ta.Ca)throw new S.ra(63);if(S.Ba(d.mode))throw new S.ra(31);if(!S.isFile(d.mode))throw new S.ra(28);if(a=S.Oa(d,"w"))throw new S.ra(a);d.ta.Ca(d,{size:b,timestamp:Date.now()})},Ic:function(a,b){a=S.Ya(a);if(!a)throw new S.ra(8);if(0===(a.flags&2097155))throw new S.ra(28);S.truncate(a.node,b)},ad:function(a,
b,d){a=S.ya(a,{Fa:!0}).node;a.ta.Ca(a,{timestamp:Math.max(b,d)})},open:function(a,b,d,e,f){if(""===a)throw new S.ra(44);b="string"===typeof b?S.Qc(b):b;d=b&64?("undefined"===typeof d?438:d)&4095|32768:0;if("object"===typeof a)var h=a;else{a=O(a);try{h=S.ya(a,{Fa:!(b&131072)}).node}catch(l){}}var k=!1;if(b&64)if(h){if(b&128)throw new S.ra(20);}else h=S.Ka(a,d,0),k=!0;if(!h)throw new S.ra(44);S.jb(h.mode)&&(b&=-513);if(b&65536&&!S.Ba(h.mode))throw new S.ra(54);if(!k&&(d=S.Pc(h,b)))throw new S.ra(d);
b&512&&S.truncate(h,0);b&=-131713;e=S.Fc({node:h,path:S.Ja(h),flags:b,seekable:!0,position:0,ua:h.ua,Zc:[],error:!1},e,f);e.ua.open&&e.ua.open(e);!c.logReadFiles||b&1||(S.Eb||(S.Eb={}),a in S.Eb||(S.Eb[a]=1,v("FS.trackingDelegate error on read file: "+a)));try{S.Da.onOpenFile&&(f=0,1!==(b&2097155)&&(f|=S.oc.mc.tc),0!==(b&2097155)&&(f|=S.oc.mc.uc),S.Da.onOpenFile(a,f))}catch(l){v("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+l.message)}return e},close:function(a){if(S.$a(a))throw new S.ra(8);
a.vb&&(a.vb=null);try{a.ua.close&&a.ua.close(a)}catch(b){throw b;}finally{S.zc(a.fd)}a.fd=null},$a:function(a){return null===a.fd},Ha:function(a,b,d){if(S.$a(a))throw new S.ra(8);if(!a.seekable||!a.ua.Ha)throw new S.ra(70);if(0!=d&&1!=d&&2!=d)throw new S.ra(28);a.position=a.ua.Ha(a,b,d);a.Zc=[];return a.position},read:function(a,b,d,e,f){if(0>e||0>f)throw new S.ra(28);if(S.$a(a))throw new S.ra(8);if(1===(a.flags&2097155))throw new S.ra(8);if(S.Ba(a.node.mode))throw new S.ra(31);if(!a.ua.read)throw new S.ra(28);
var h="undefined"!==typeof f;if(!h)f=a.position;else if(!a.seekable)throw new S.ra(70);b=a.ua.read(a,b,d,e,f);h||(a.position+=b);return b},write:function(a,b,d,e,f,h){if(0>e||0>f)throw new S.ra(28);if(S.$a(a))throw new S.ra(8);if(0===(a.flags&2097155))throw new S.ra(8);if(S.Ba(a.node.mode))throw new S.ra(31);if(!a.ua.write)throw new S.ra(28);a.seekable&&a.flags&1024&&S.Ha(a,0,2);var k="undefined"!==typeof f;if(!k)f=a.position;else if(!a.seekable)throw new S.ra(70);b=a.ua.write(a,b,d,e,f,h);k||(a.position+=
b);try{if(a.path&&S.Da.onWriteToFile)S.Da.onWriteToFile(a.path)}catch(l){v("FS.trackingDelegate['onWriteToFile']('"+a.path+"') threw an exception: "+l.message)}return b},Xa:function(a,b,d){if(S.$a(a))throw new S.ra(8);if(0>b||0>=d)throw new S.ra(28);if(0===(a.flags&2097155))throw new S.ra(8);if(!S.isFile(a.node.mode)&&!S.Ba(a.node.mode))throw new S.ra(43);if(!a.ua.Xa)throw new S.ra(138);a.ua.Xa(a,b,d)},ab:function(a,b,d,e,f,h,k){if(0!==(h&2)&&0===(k&2)&&2!==(a.flags&2097155))throw new S.ra(2);if(1===
(a.flags&2097155))throw new S.ra(2);if(!a.ua.ab)throw new S.ra(43);return a.ua.ab(a,b,d,e,f,h,k)},eb:function(a,b,d,e,f){return a&&a.ua.eb?a.ua.eb(a,b,d,e,f):0},nd:function(){return 0},kc:function(a,b,d){if(!a.ua.kc)throw new S.ra(59);return a.ua.kc(a,b,d)},readFile:function(a,b){b=b||{};b.flags=b.flags||"r";b.encoding=b.encoding||"binary";if("utf8"!==b.encoding&&"binary"!==b.encoding)throw Error('Invalid encoding type "'+b.encoding+'"');var d,e=S.open(a,b.flags);a=S.stat(a).size;var f=new Uint8Array(a);
S.read(e,f,0,a,0);"utf8"===b.encoding?d=D(f,0):"binary"===b.encoding&&(d=f);S.close(e);return d},writeFile:function(a,b,d){d=d||{};d.flags=d.flags||"w";a=S.open(a,d.flags,d.mode);if("string"===typeof b){var e=new Uint8Array(sa(b)+1);b=qa(b,e,0,e.length);S.write(a,e,0,b,void 0,d.xc)}else if(ArrayBuffer.isView(b))S.write(a,b,0,b.byteLength,void 0,d.xc);else throw Error("Unsupported data type");S.close(a)},cwd:function(){return S.Yb},chdir:function(a){a=S.ya(a,{Fa:!0});if(null===a.node)throw new S.ra(44);
if(!S.Ba(a.node.mode))throw new S.ra(54);var b=S.Oa(a.node,"x");if(b)throw new S.ra(b);S.Yb=a.path},Bc:function(){S.mkdir("/tmp");S.mkdir("/home");S.mkdir("/home/web_user")},Ac:function(){S.mkdir("/dev");S.Hb(S.Qa(1,3),{read:function(){return 0},write:function(e,f,h,k){return k}});S.mb("/dev/null",S.Qa(1,3));bb(S.Qa(5,0),eb);bb(S.Qa(6,0),fb);S.mb("/dev/tty",S.Qa(5,0));S.mb("/dev/tty1",S.Qa(6,0));if("object"===typeof crypto&&"function"===typeof crypto.getRandomValues){var a=new Uint8Array(1);var b=
function(){crypto.getRandomValues(a);return a[0]}}else if(ea)try{var d=require("crypto");b=function(){return d.randomBytes(1)[0]}}catch(e){}b||(b=function(){u("random_device")});S.Ia("/dev","random",b);S.Ia("/dev","urandom",b);S.mkdir("/dev/shm");S.mkdir("/dev/shm/tmp")},Dc:function(){S.mkdir("/proc");S.mkdir("/proc/self");S.mkdir("/proc/self/fd");S.Aa({Aa:function(){var a=S.createNode("/proc/self","fd",16895,73);a.ta={lookup:function(b,d){var e=S.Ya(+d);if(!e)throw new S.ra(8);b={parent:null,Aa:{lc:"fake"},
ta:{readlink:function(){return e.path}}};return b.parent=b}};return a}},{},"/proc/self/fd")},Ec:function(){c.stdin?S.Ia("/dev","stdin",c.stdin):S.symlink("/dev/tty","/dev/stdin");c.stdout?S.Ia("/dev","stdout",null,c.stdout):S.symlink("/dev/tty","/dev/stdout");c.stderr?S.Ia("/dev","stderr",null,c.stderr):S.symlink("/dev/tty1","/dev/stderr");S.open("/dev/stdin","r");S.open("/dev/stdout","w");S.open("/dev/stderr","w")},$b:function(){S.ra||(S.ra=function(a,b){this.node=b;this.Xc=function(d){this.wa=d};
this.Xc(a);this.message="FS error"},S.ra.prototype=Error(),S.ra.prototype.constructor=S.ra,[44].forEach(function(a){S.ub[a]=new S.ra(a);S.ub[a].stack="<generic error, no stack>"}))},Yc:function(){S.$b();S.La=Array(4096);S.Aa(T,{},"/");S.Bc();S.Ac();S.Dc();S.Gc={MEMFS:T,WORKERFS:U}},Za:function(a,b,d){S.Za.xb=!0;S.$b();c.stdin=a||c.stdin;c.stdout=b||c.stdout;c.stderr=d||c.stderr;S.Ec()},quit:function(){S.Za.xb=!1;var a=c._fflush;a&&a(0);for(a=0;a<S.streams.length;a++){var b=S.streams[a];b&&S.close(b)}},
ib:function(a,b){var d=0;a&&(d|=365);b&&(d|=146);return d},jd:function(a,b){a=Xa.apply(null,a);b&&"/"==a[0]&&(a=a.substr(1));return a},bd:function(a,b){return R(b,a)},pd:function(a){return O(a)},ed:function(a,b){a=S.qb(a,b);if(a.exists)return a.object;Ya(a.error);return null},qb:function(a,b){try{var d=S.ya(a,{Fa:!b});a=d.path}catch(f){}var e={kb:!1,exists:!1,error:0,name:null,path:null,object:null,Tc:!1,Vc:null,Uc:null};try{d=S.ya(a,{parent:!0}),e.Tc=!0,e.Vc=d.path,e.Uc=d.node,e.name=P(a),d=S.ya(a,
{Fa:!b}),e.exists=!0,e.path=d.path,e.object=d.node,e.name=d.node.name,e.kb="/"===d.path}catch(f){e.error=f.wa}return e},Tb:function(a,b,d,e){a=Q("string"===typeof a?a:S.Ja(a),b);return S.mkdir(a,S.ib(d,e))},Wb:function(a,b){a="string"===typeof a?a:S.Ja(a);for(b=b.split("/").reverse();b.length;){var d=b.pop();if(d){var e=Q(a,d);try{S.mkdir(e)}catch(f){}a=e}}return e},Cc:function(a,b,d,e,f){a=Q("string"===typeof a?a:S.Ja(a),b);return S.create(a,S.ib(e,f))},hb:function(a,b,d,e,f,h){a=b?Q("string"===
typeof a?a:S.Ja(a),b):a;e=S.ib(e,f);f=S.create(a,e);if(d){if("string"===typeof d){a=Array(d.length);b=0;for(var k=d.length;b<k;++b)a[b]=d.charCodeAt(b);d=a}S.chmod(f,e|146);a=S.open(f,"w");S.write(a,d,0,d.length,0,h);S.close(a);S.chmod(f,e)}return f},Ia:function(a,b,d,e){a=Q("string"===typeof a?a:S.Ja(a),b);b=S.ib(!!d,!!e);S.Ia.Ab||(S.Ia.Ab=64);var f=S.Qa(S.Ia.Ab++,0);S.Hb(f,{open:function(h){h.seekable=!1},close:function(){e&&e.buffer&&e.buffer.length&&e(10)},read:function(h,k,l,q){for(var n=0,t=
0;t<q;t++){try{var w=d()}catch(C){throw new S.ra(29);}if(void 0===w&&0===n)throw new S.ra(6);if(null===w||void 0===w)break;n++;k[l+t]=w}n&&(h.node.timestamp=Date.now());return n},write:function(h,k,l,q){for(var n=0;n<q;n++)try{e(k[l+n])}catch(t){throw new S.ra(29);}q&&(h.node.timestamp=Date.now());return n}});return S.mb(a,b,f)},Vb:function(a,b,d){a=Q("string"===typeof a?a:S.Ja(a),b);return S.symlink(d,a)},cc:function(a){if(a.yb||a.Nc||a.link||a.sa)return!0;var b=!0;if("undefined"!==typeof XMLHttpRequest)throw Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
if(r)try{a.sa=db(r(a.url),!0),a.za=a.sa.length}catch(d){b=!1}else throw Error("Cannot load without read() or XMLHttpRequest.");b||Ya(29);return b},Ub:function(a,b,d,e,f){function h(){this.zb=!1;this.Ea=[]}h.prototype.get=function(n){if(!(n>this.length-1||0>n)){var t=n%this.chunkSize;return this.fc(n/this.chunkSize|0)[t]}};h.prototype.fb=function(n){this.fc=n};h.prototype.Rb=function(){var n=new XMLHttpRequest;n.open("HEAD",d,!1);n.send(null);if(!(200<=n.status&&300>n.status||304===n.status))throw Error("Couldn't load "+
d+". Status: "+n.status);var t=Number(n.getResponseHeader("Content-length")),w,C=(w=n.getResponseHeader("Accept-Ranges"))&&"bytes"===w;n=(w=n.getResponseHeader("Content-Encoding"))&&"gzip"===w;var B=1048576;C||(B=t);var A=this;A.fb(function(I){var J=I*B,aa=(I+1)*B-1;aa=Math.min(aa,t-1);if("undefined"===typeof A.Ea[I]){var bc=A.Ea;if(J>aa)throw Error("invalid range ("+J+", "+aa+") or no bytes requested!");if(aa>t-1)throw Error("only "+t+" bytes available! programmer error!");var E=new XMLHttpRequest;
E.open("GET",d,!1);t!==B&&E.setRequestHeader("Range","bytes="+J+"-"+aa);"undefined"!=typeof Uint8Array&&(E.responseType="arraybuffer");E.overrideMimeType&&E.overrideMimeType("text/plain; charset=x-user-defined");E.send(null);if(!(200<=E.status&&300>E.status||304===E.status))throw Error("Couldn't load "+d+". Status: "+E.status);J=void 0!==E.response?new Uint8Array(E.response||[]):db(E.responseText||"",!0);bc[I]=J}if("undefined"===typeof A.Ea[I])throw Error("doXHR failed!");return A.Ea[I]});if(n||!t)B=
t=1,B=t=this.fc(0).length,ka("LazyFiles on gzip forces download of the whole file when length is accessed");this.wc=t;this.vc=B;this.zb=!0};if("undefined"!==typeof XMLHttpRequest){if(!m)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var k=new h;Object.defineProperties(k,{length:{get:function(){this.zb||this.Rb();return this.wc}},chunkSize:{get:function(){this.zb||this.Rb();return this.vc}}});k={yb:!1,sa:k}}else k={yb:!1,url:d};
var l=S.Cc(a,b,k,e,f);k.sa?l.sa=k.sa:k.url&&(l.sa=null,l.url=k.url);Object.defineProperties(l,{za:{get:function(){return this.sa.length}}});var q={};Object.keys(l.ua).forEach(function(n){var t=l.ua[n];q[n]=function(){if(!S.cc(l))throw new S.ra(29);return t.apply(null,arguments)}});q.read=function(n,t,w,C,B){if(!S.cc(l))throw new S.ra(29);n=n.node.sa;if(B>=n.length)return 0;C=Math.min(n.length-B,C);if(n.slice)for(var A=0;A<C;A++)t[w+A]=n[B+A];else for(A=0;A<C;A++)t[w+A]=n.get(B+A);return C};l.ua=q;
return l},Xb:function(a,b,d,e,f,h,k,l,q,n){function t(B){function A(J){n&&n();l||S.hb(a,b,J,e,f,q);h&&h();Ma(C)}var I=!1;c.preloadPlugins.forEach(function(J){!I&&J.canHandle(w)&&(J.handle(B,w,A,function(){k&&k();Ma(C)}),I=!0)});I||A(B)}gb.Za();var w=b?R(Q(a,b)):a,C="cp "+w;La(C);"string"==typeof d?gb.dd(d,function(B){t(B)},k):t(d)},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},Ob:function(){return"EM_FS_"+window.location.pathname},Pb:20,
Ua:"FILE_DATA",od:function(a,b,d){b=b||function(){};d=d||function(){};var e=S.indexedDB();try{var f=e.open(S.Ob(),S.Pb)}catch(h){return d(h)}f.onupgradeneeded=function(){ka("creating db");f.result.createObjectStore(S.Ua)};f.onsuccess=function(){var h=f.result.transaction([S.Ua],"readwrite"),k=h.objectStore(S.Ua),l=0,q=0,n=a.length;a.forEach(function(t){t=k.put(S.qb(t).object.sa,t);t.onsuccess=function(){l++;l+q==n&&(0==q?b():d())};t.onerror=function(){q++;l+q==n&&(0==q?b():d())}});h.onerror=d};f.onerror=
d},kd:function(a,b,d){b=b||function(){};d=d||function(){};var e=S.indexedDB();try{var f=e.open(S.Ob(),S.Pb)}catch(h){return d(h)}f.onupgradeneeded=d;f.onsuccess=function(){var h=f.result;try{var k=h.transaction([S.Ua],"readonly")}catch(w){d(w);return}var l=k.objectStore(S.Ua),q=0,n=0,t=a.length;a.forEach(function(w){var C=l.get(w);C.onsuccess=function(){S.qb(w).exists&&S.unlink(w);S.hb(Wa(w),P(w),C.result,!0,!0,!0);q++;q+n==t&&(0==n?b():d())};C.onerror=function(){n++;q+n==t&&(0==n?b():d())}});k.onerror=
d};f.onerror=d}},hb=511;
function ib(a,b,d){try{var e=a(b)}catch(f){if(f&&f.node&&O(b)!==O(S.Ja(f.node)))return-54;throw f;}H[d>>2]=e.dev;H[d+4>>2]=0;H[d+8>>2]=e.ino;H[d+12>>2]=e.mode;H[d+16>>2]=e.nlink;H[d+20>>2]=e.uid;H[d+24>>2]=e.gid;H[d+28>>2]=e.rdev;H[d+32>>2]=0;N=[e.size>>>0,(M=e.size,1<=+Fa(M)?0<M?(Ia(+Ha(M/4294967296),4294967295)|0)>>>0:~~+Ga((M-+(~~M>>>0))/4294967296)>>>0:0)];H[d+40>>2]=N[0];H[d+44>>2]=N[1];H[d+48>>2]=4096;H[d+52>>2]=e.blocks;H[d+56>>2]=e.atime.getTime()/1E3|0;H[d+60>>2]=0;H[d+64>>2]=e.mtime.getTime()/
1E3|0;H[d+68>>2]=0;H[d+72>>2]=e.ctime.getTime()/1E3|0;H[d+76>>2]=0;N=[e.ino>>>0,(M=e.ino,1<=+Fa(M)?0<M?(Ia(+Ha(M/4294967296),4294967295)|0)>>>0:~~+Ga((M-+(~~M>>>0))/4294967296)>>>0:0)];H[d+80>>2]=N[0];H[d+84>>2]=N[1];return 0}var jb=void 0;function kb(a){a=S.Ya(a);if(!a)throw new S.ra(8);return a}var lb={};
function mb(){if(!nb){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"===typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:ca||"./this.program"},b;for(b in lb)a[b]=lb[b];var d=[];for(b in a)d.push(b+"="+a[b]);nb=d}return nb}var nb;ra("GMT",67200,4);
function ob(){function a(h){return(h=h.toTimeString().match(/\(([A-Za-z ]+)\)$/))?h[1]:"GMT"}if(!pb){pb=!0;H[qb()>>2]=60*(new Date).getTimezoneOffset();var b=(new Date).getFullYear(),d=new Date(b,0,1);b=new Date(b,6,1);H[rb()>>2]=Number(d.getTimezoneOffset()!=b.getTimezoneOffset());var e=a(d),f=a(b);e=ta(e);f=ta(f);b.getTimezoneOffset()<d.getTimezoneOffset()?(H[sb()>>2]=e,H[sb()+4>>2]=f):(H[sb()>>2]=f,H[sb()+4>>2]=e)}}var pb;
function tb(a,b,d,e){a||(a=this);this.parent=a;this.Aa=a.Aa;this.bb=null;this.id=S.Rc++;this.name=b;this.mode=d;this.ta={};this.ua={};this.rdev=e}Object.defineProperties(tb.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}},Nc:{get:function(){return S.Ba(this.mode)}},yb:{get:function(){return S.jb(this.mode)}}});S.rc=tb;S.Yc();var gb;
c.FS_createFolder=S.Tb;c.FS_createPath=S.Wb;c.FS_createDataFile=S.hb;c.FS_createPreloadedFile=S.Xb;c.FS_createLazyFile=S.Ub;c.FS_createLink=S.Vb;c.FS_createDevice=S.Ia;c.FS_unlink=S.unlink;function db(a,b){var d=Array(sa(a)+1);a=qa(a,d,0,d.length);b&&(d.length=a);return d}
var ub={b:function(a){return ua(a)},a:function(a){"uncaught_exception"in Ua?Ua.Ea++:Ua.Ea=1;throw a;},A:function(a,b){try{a=F(a);if(b&-8)var d=-28;else{var e;(e=S.ya(a,{Fa:!0}).node)?(a="",b&4&&(a+="r"),b&2&&(a+="w"),b&1&&(a+="x"),d=a&&S.Oa(e,a)?-2:0):d=-44}return d}catch(f){return"undefined"!==typeof S&&f instanceof S.ra||u(f),-f.wa}},F:function(a,b){try{return a=F(a),S.chmod(a,b),0}catch(d){return"undefined"!==typeof S&&d instanceof S.ra||u(d),-d.wa}},z:function(a){try{var b=kb(a);return S.open(b.path,
b.flags,0).fd}catch(d){return"undefined"!==typeof S&&d instanceof S.ra||u(d),-d.wa}},t:function(a,b,d){try{return S.Ic(a,d),0}catch(e){return"undefined"!==typeof S&&e instanceof S.ra||u(e),-e.wa}},c:function(){return 42},x:function(a,b,d){try{return a=F(a),S.chown(a,b,d),0}catch(e){return"undefined"!==typeof S&&e instanceof S.ra||u(e),-e.wa}},B:function(){return-34},E:function(a,b){try{return a=F(a),ib(S.lstat,a,b)}catch(d){return"undefined"!==typeof S&&d instanceof S.ra||u(d),-d.wa}},G:function(a,
b){try{return a=F(a),a=O(a),"/"===a[a.length-1]&&(a=a.substr(0,a.length-1)),S.mkdir(a,b,0),0}catch(d){return"undefined"!==typeof S&&d instanceof S.ra||u(d),-d.wa}},j:function(a,b,d){jb=d;try{var e=F(a);jb+=4;return S.open(e,b,H[jb-4>>2]).fd}catch(f){return"undefined"!==typeof S&&f instanceof S.ra||u(f),-f.wa}},w:function(a,b,d){try{var e=kb(a);return S.read(e,G,b,d)}catch(f){return"undefined"!==typeof S&&f instanceof S.ra||u(f),-f.wa}},r:function(a){try{return a=F(a),S.rmdir(a),0}catch(b){return"undefined"!==
typeof S&&b instanceof S.ra||u(b),-b.wa}},D:function(a,b){try{return a=F(a),ib(S.stat,a,b)}catch(d){return"undefined"!==typeof S&&d instanceof S.ra||u(d),-d.wa}},v:function(a,b){try{return a=F(a),b=F(b),S.symlink(a,b),0}catch(d){return"undefined"!==typeof S&&d instanceof S.ra||u(d),-d.wa}},H:function(a){try{var b=hb;hb=a;return b}catch(d){return"undefined"!==typeof S&&d instanceof S.ra||u(d),-d.wa}},s:function(a){try{return a=F(a),S.unlink(a),0}catch(b){return"undefined"!==typeof S&&b instanceof S.ra||
u(b),-b.wa}},o:function(){u()},m:function(a,b,d){pa.copyWithin(a,b,b+d)},n:function(a){a>>>=0;var b=pa.length;if(2147483648<a)return!1;for(var d=1;4>=d;d*=2){var e=b*(1+.2/d);e=Math.min(e,a+100663296);e=Math.max(16777216,a,e);0<e%65536&&(e+=65536-e%65536);a:{try{y.grow(Math.min(2147483648,e)-va.byteLength+65535>>>16);wa(y.buffer);var f=1;break a}catch(h){}f=void 0}if(f)return!0}return!1},p:function(a,b){var d=0;mb().forEach(function(e,f){var h=b+d;f=H[a+4*f>>2]=h;for(h=0;h<e.length;++h)G[f++>>0]=
e.charCodeAt(h);G[f>>0]=0;d+=e.length+1});return 0},q:function(a,b){var d=mb();H[a>>2]=d.length;var e=0;d.forEach(function(f){e+=f.length+1});H[b>>2]=e;return 0},C:function(a){try{var b=kb(a);S.close(b);return 0}catch(d){return"undefined"!==typeof S&&d instanceof S.ra||u(d),d.wa}},u:function(a,b){try{var d=kb(a);G[b>>0]=d.tty?2:S.Ba(d.mode)?3:S.Sa(d.mode)?7:4;return 0}catch(e){return"undefined"!==typeof S&&e instanceof S.ra||u(e),e.wa}},l:function(a,b,d,e,f){try{var h=kb(a);a=4294967296*d+(b>>>0);
if(-9007199254740992>=a||9007199254740992<=a)return-61;S.Ha(h,a,e);N=[h.position>>>0,(M=h.position,1<=+Fa(M)?0<M?(Ia(+Ha(M/4294967296),4294967295)|0)>>>0:~~+Ga((M-+(~~M>>>0))/4294967296)>>>0:0)];H[f>>2]=N[0];H[f+4>>2]=N[1];h.vb&&0===a&&0===e&&(h.vb=null);return 0}catch(k){return"undefined"!==typeof S&&k instanceof S.ra||u(k),k.wa}},y:function(a,b,d,e){try{a:{for(var f=kb(a),h=a=0;h<d;h++){var k=S.write(f,G,H[b+8*h>>2],H[b+(8*h+4)>>2],void 0);if(0>k){var l=-1;break a}a+=k}l=a}H[e>>2]=l;return 0}catch(q){return"undefined"!==
typeof S&&q instanceof S.ra||u(q),q.wa}},I:function(){return 0},d:function(){throw"getgrnam: TODO";},e:function(){throw"getpwnam: TODO";},h:function(a){ob();a=new Date(1E3*H[a>>2]);H[16788]=a.getSeconds();H[16789]=a.getMinutes();H[16790]=a.getHours();H[16791]=a.getDate();H[16792]=a.getMonth();H[16793]=a.getFullYear()-1900;H[16794]=a.getDay();var b=new Date(a.getFullYear(),0,1);H[16795]=(a.getTime()-b.getTime())/864E5|0;H[16797]=-(60*a.getTimezoneOffset());var d=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();
b=b.getTimezoneOffset();a=(d!=b&&a.getTimezoneOffset()==Math.min(b,d))|0;H[16796]=a;a=H[sb()+(a?4:0)>>2];H[16798]=a;return 67152},memory:y,g:function(a){ob();var b=new Date(H[a+20>>2]+1900,H[a+16>>2],H[a+12>>2],H[a+8>>2],H[a+4>>2],H[a>>2],0),d=H[a+32>>2],e=b.getTimezoneOffset(),f=new Date(b.getFullYear(),0,1),h=(new Date(b.getFullYear(),6,1)).getTimezoneOffset(),k=f.getTimezoneOffset(),l=Math.min(k,h);0>d?H[a+32>>2]=Number(h!=k&&l==e):0<d!=(l==e)&&(h=Math.max(k,h),b.setTime(b.getTime()+6E4*((0<d?
l:h)-e)));H[a+24>>2]=b.getDay();H[a+28>>2]=(b.getTime()-f.getTime())/864E5|0;return b.getTime()/1E3|0},f:function(){},table:z,k:function(a){var b=Date.now()/1E3|0;a&&(H[a>>2]=b);return b},i:function(a,b){b?(b=H[b+4>>2],b*=1E3):b=Date.now();a=F(a);try{return S.ad(a,b,b),0}catch(d){return S.Lc(d),-1}}},vb=function(){function a(f){c.asm=f.exports;Ma("wasm-instantiate")}function b(f){a(f.instance)}function d(f){return Ra().then(function(h){return WebAssembly.instantiate(h,e)}).then(f,function(h){v("failed to asynchronously prepare wasm: "+
h);u(h)})}var e={a:ub};La("wasm-instantiate");if(c.instantiateWasm)try{return c.instantiateWasm(e,a)}catch(f){return v("Module.instantiateWasm callback failed with error: "+f),!1}(function(){if(ma||"function"!==typeof WebAssembly.instantiateStreaming||Oa()||Na("file://")||"function"!==typeof fetch)return d(b);fetch(L,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,e).then(b,function(h){v("wasm streaming compile failed: "+h);v("falling back to ArrayBuffer instantiation");
d(b)})})})();return{}}();c.asm=vb;
var Sa=c.___wasm_call_ctors=function(){return(Sa=c.___wasm_call_ctors=c.asm.J).apply(null,arguments)},wb=c._emscripten_bind_RARHeaderDataEx_RARHeaderDataEx_0=function(){return(wb=c._emscripten_bind_RARHeaderDataEx_RARHeaderDataEx_0=c.asm.K).apply(null,arguments)},xb=c._emscripten_bind_RARHeaderDataEx_set_UnpSize_1=function(){return(xb=c._emscripten_bind_RARHeaderDataEx_set_UnpSize_1=c.asm.L).apply(null,arguments)},yb=c._emscripten_bind_RARHeaderDataEx_set_PackSize_1=function(){return(yb=c._emscripten_bind_RARHeaderDataEx_set_PackSize_1=
c.asm.M).apply(null,arguments)},zb=c._emscripten_bind_RARHeaderDataEx_get_Flags_0=function(){return(zb=c._emscripten_bind_RARHeaderDataEx_get_Flags_0=c.asm.N).apply(null,arguments)},Ab=c._emscripten_bind_RARHeaderDataEx_set_Flags_1=function(){return(Ab=c._emscripten_bind_RARHeaderDataEx_set_Flags_1=c.asm.O).apply(null,arguments)},Bb=c._emscripten_bind_RARHeaderDataEx___destroy___0=function(){return(Bb=c._emscripten_bind_RARHeaderDataEx___destroy___0=c.asm.P).apply(null,arguments)},Cb=c._emscripten_bind_RAROpenArchiveDataEx_RAROpenArchiveDataEx_0=
function(){return(Cb=c._emscripten_bind_RAROpenArchiveDataEx_RAROpenArchiveDataEx_0=c.asm.Q).apply(null,arguments)},Db=c._emscripten_bind_RAROpenArchiveDataEx_get_ArcName_0=function(){return(Db=c._emscripten_bind_RAROpenArchiveDataEx_get_ArcName_0=c.asm.R).apply(null,arguments)},Eb=c._emscripten_bind_RAROpenArchiveDataEx_set_ArcName_1=function(){return(Eb=c._emscripten_bind_RAROpenArchiveDataEx_set_ArcName_1=c.asm.S).apply(null,arguments)},Fb=c._emscripten_bind_RAROpenArchiveDataEx_get_OpenMode_0=
function(){return(Fb=c._emscripten_bind_RAROpenArchiveDataEx_get_OpenMode_0=c.asm.T).apply(null,arguments)},Gb=c._emscripten_bind_RAROpenArchiveDataEx_set_OpenMode_1=function(){return(Gb=c._emscripten_bind_RAROpenArchiveDataEx_set_OpenMode_1=c.asm.U).apply(null,arguments)},Hb=c._emscripten_bind_RAROpenArchiveDataEx_get_Callback_0=function(){return(Hb=c._emscripten_bind_RAROpenArchiveDataEx_get_Callback_0=c.asm.V).apply(null,arguments)},Ib=c._emscripten_bind_RAROpenArchiveDataEx_set_Callback_1=function(){return(Ib=
c._emscripten_bind_RAROpenArchiveDataEx_set_Callback_1=c.asm.W).apply(null,arguments)},Jb=c._emscripten_bind_RAROpenArchiveDataEx_get_OpenResult_0=function(){return(Jb=c._emscripten_bind_RAROpenArchiveDataEx_get_OpenResult_0=c.asm.X).apply(null,arguments)},Kb=c._emscripten_bind_RAROpenArchiveDataEx_set_OpenResult_1=function(){return(Kb=c._emscripten_bind_RAROpenArchiveDataEx_set_OpenResult_1=c.asm.Y).apply(null,arguments)},Lb=c._emscripten_bind_RAROpenArchiveDataEx_get_Flags_0=function(){return(Lb=
c._emscripten_bind_RAROpenArchiveDataEx_get_Flags_0=c.asm.Z).apply(null,arguments)},Mb=c._emscripten_bind_RAROpenArchiveDataEx_set_Flags_1=function(){return(Mb=c._emscripten_bind_RAROpenArchiveDataEx_set_Flags_1=c.asm._).apply(null,arguments)},Nb=c._emscripten_bind_RAROpenArchiveDataEx___destroy___0=function(){return(Nb=c._emscripten_bind_RAROpenArchiveDataEx___destroy___0=c.asm.$).apply(null,arguments)},Ob=c._emscripten_bind_VoidPtr___destroy___0=function(){return(Ob=c._emscripten_bind_VoidPtr___destroy___0=
c.asm.aa).apply(null,arguments)},Pb=c._emscripten_bind_RARHeaderDataEx_get_FileNameW_0=function(){return(Pb=c._emscripten_bind_RARHeaderDataEx_get_FileNameW_0=c.asm.ba).apply(null,arguments)},Qb=c._emscripten_bind_RARHeaderDataEx_set_FileNameW_1=function(){return(Qb=c._emscripten_bind_RARHeaderDataEx_set_FileNameW_1=c.asm.ca).apply(null,arguments)},Rb=c._emscripten_bind_RARHeaderDataEx_get_UnpSize_0=function(){return(Rb=c._emscripten_bind_RARHeaderDataEx_get_UnpSize_0=c.asm.da).apply(null,arguments)},
Sb=c._emscripten_bind_RARHeaderDataEx_get_PackSize_0=function(){return(Sb=c._emscripten_bind_RARHeaderDataEx_get_PackSize_0=c.asm.ea).apply(null,arguments)};c._free=function(){return(c._free=c.asm.fa).apply(null,arguments)};var ua=c._malloc=function(){return(ua=c._malloc=c.asm.ga).apply(null,arguments)},Za=c.___errno_location=function(){return(Za=c.___errno_location=c.asm.ha).apply(null,arguments)};c._RAROpenArchiveEx=function(){return(c._RAROpenArchiveEx=c.asm.ia).apply(null,arguments)};
c._RARCloseArchive=function(){return(c._RARCloseArchive=c.asm.ja).apply(null,arguments)};c._RARReadHeaderEx=function(){return(c._RARReadHeaderEx=c.asm.ka).apply(null,arguments)};c._RARProcessFileW=function(){return(c._RARProcessFileW=c.asm.la).apply(null,arguments)};c._RARSetPassword=function(){return(c._RARSetPassword=c.asm.ma).apply(null,arguments)};
var sb=c.__get_tzname=function(){return(sb=c.__get_tzname=c.asm.na).apply(null,arguments)},rb=c.__get_daylight=function(){return(rb=c.__get_daylight=c.asm.oa).apply(null,arguments)},qb=c.__get_timezone=function(){return(qb=c.__get_timezone=c.asm.pa).apply(null,arguments)};c.dynCall_vi=function(){return(c.dynCall_vi=c.asm.qa).apply(null,arguments)};c.asm=vb;c.getMemory=function(a){if(Da)a=ua(a);else{var b=H[16784];H[16784]=b+a+15&-16;a=b}return a};c.UTF8ToString=F;c.stringToUTF8=ra;
c.addRunDependency=La;c.removeRunDependency=Ma;c.FS_createFolder=S.Tb;c.FS_createPath=S.Wb;c.FS_createDataFile=S.hb;c.FS_createPreloadedFile=S.Xb;c.FS_createLazyFile=S.Ub;c.FS_createLink=S.Vb;c.FS_createDevice=S.Ia;c.FS_unlink=S.unlink;
c.addFunction=function(a,b){if(!x){x=new WeakMap;for(var d=0;d<z.length;d++){var e=z.get(d);e&&x.set(e,d)}}if(x.has(a))a=x.get(a);else{if(la.length)d=la.pop();else{d=z.length;try{z.grow(1)}catch(l){if(!(l instanceof RangeError))throw l;throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.";}}try{z.set(d,a)}catch(l){if(!(l instanceof TypeError))throw l;if("function"===typeof WebAssembly.Function){var f={i:"i32",j:"i64",f:"f32",d:"f64"},h={parameters:[],results:"v"==b[0]?[]:[f[b[0]]]};for(e=1;e<
b.length;++e)h.parameters.push(f[b[e]]);b=new WebAssembly.Function(h,a)}else{f=[1,0,1,96];h=b.slice(0,1);b=b.slice(1);var k={i:127,j:126,f:125,d:124};f.push(b.length);for(e=0;e<b.length;++e)f.push(k[b[e]]);"v"==h?f.push(0):f=f.concat([1,k[h]]);f[1]=f.length-2;b=new Uint8Array([0,97,115,109,1,0,0,0].concat(f,[2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0]));b=new WebAssembly.Module(b);b=(new WebAssembly.Instance(b,{e:{f:a}})).exports.f}z.set(d,b)}x.set(a,d);a=d}return a};
c.removeFunction=function(a){x.delete(z.get(a));la.push(a)};c.FS=S;c.WORKERFS=U;var Tb;Ka=function Ub(){Tb||Vb();Tb||(Ka=Ub)};
function Vb(){function a(){if(!Tb&&(Tb=!0,c.calledRun=!0,!na)){Da=!0;c.noFSInit||S.Za.xb||S.Za();ya(Aa);S.jc=!1;ya(Ba);if(c.onRuntimeInitialized)c.onRuntimeInitialized();if(c.postRun)for("function"==typeof c.postRun&&(c.postRun=[c.postRun]);c.postRun.length;){var b=c.postRun.shift();Ca.unshift(b)}ya(Ca)}}if(!(0<K)){if(c.preRun)for("function"==typeof c.preRun&&(c.preRun=[c.preRun]);c.preRun.length;)Ea();ya(za);0<K||(c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},
1);a()},1)):a())}}c.run=Vb;if(c.preInit)for("function"==typeof c.preInit&&(c.preInit=[c.preInit]);0<c.preInit.length;)c.preInit.pop()();noExitRuntime=!0;Vb();function V(){}V.prototype=Object.create(V.prototype);V.prototype.constructor=V;V.prototype.Wa=V;V.gb={};c.WrapperObject=V;function Wb(a){return(a||V).gb}c.getCache=Wb;function Xb(a,b){var d=Wb(b),e=d[a];if(e)return e;e=Object.create((b||V).prototype);e.va=a;return d[a]=e}c.wrapPointer=Xb;c.castObject=function(a,b){return Xb(a.va,b)};c.NULL=Xb(0);
c.destroy=function(a){if(!a.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";a.__destroy__();delete Wb(a.Wa)[a.va]};c.compare=function(a,b){return a.va===b.va};c.getPointer=function(a){return a.va};c.getClass=function(a){return a.Wa};var W=0,Yb=0,Zb=0,$b=[],ac=0;function cc(){if(ac){for(var a=0;a<$b.length;a++)c._free($b[a]);$b.length=0;c._free(W);W=0;Yb+=ac;ac=0}W||(Yb+=128,W=c._malloc(Yb),assert(W));Zb=0}
function dc(a){if("string"===typeof a){a=db(a);var b=G;assert(W);b=a.length*b.BYTES_PER_ELEMENT;b=b+7&-8;if(Zb+b>=Yb){assert(0<b);ac+=b;var d=c._malloc(b);$b.push(d)}else d=W+Zb,Zb+=b;b=d;d=G;var e=b;switch(d.BYTES_PER_ELEMENT){case 2:e>>=1;break;case 4:e>>=2;break;case 8:e>>=3}for(var f=0;f<a.length;f++)d[e+f]=a[f];return b}return a}function X(){this.va=wb();Wb(X)[this.va]=this}X.prototype=Object.create(V.prototype);X.prototype.constructor=X;X.prototype.Wa=X;X.gb={};c.RARHeaderDataEx=X;
X.prototype.get_FileNameW=X.prototype.Ib=function(){return F(Pb(this.va))};X.prototype.set_FileNameW=X.prototype.Lb=function(a){var b=this.va;cc();a=a&&"object"===typeof a?a.va:dc(a);Qb(b,a)};Object.defineProperty(X.prototype,"FileNameW",{get:X.prototype.Ib,set:X.prototype.Lb});X.prototype.get_UnpSize=X.prototype.Kb=function(){return Rb(this.va)};X.prototype.set_UnpSize=X.prototype.Nb=function(a){var b=this.va;a&&"object"===typeof a&&(a=a.va);xb(b,a)};
Object.defineProperty(X.prototype,"UnpSize",{get:X.prototype.Kb,set:X.prototype.Nb});X.prototype.get_PackSize=X.prototype.Jb=function(){return Sb(this.va)};X.prototype.set_PackSize=X.prototype.Mb=function(a){var b=this.va;a&&"object"===typeof a&&(a=a.va);yb(b,a)};Object.defineProperty(X.prototype,"PackSize",{get:X.prototype.Jb,set:X.prototype.Mb});X.prototype.get_Flags=X.prototype.Ea=function(){return zb(this.va)};
X.prototype.set_Flags=X.prototype.fb=function(a){var b=this.va;a&&"object"===typeof a&&(a=a.va);Ab(b,a)};Object.defineProperty(X.prototype,"Flags",{get:X.prototype.Ea,set:X.prototype.fb});X.prototype.__destroy__=function(){Bb(this.va)};function Y(){this.va=Cb();Wb(Y)[this.va]=this}Y.prototype=Object.create(V.prototype);Y.prototype.constructor=Y;Y.prototype.Wa=Y;Y.gb={};c.RAROpenArchiveDataEx=Y;Y.prototype.get_ArcName=Y.prototype.Ib=function(){return F(Db(this.va))};
Y.prototype.set_ArcName=Y.prototype.Mb=function(a){var b=this.va;cc();a=a&&"object"===typeof a?a.va:dc(a);Eb(b,a)};Object.defineProperty(Y.prototype,"ArcName",{get:Y.prototype.Ib,set:Y.prototype.Mb});Y.prototype.get_OpenMode=Y.prototype.Kb=function(){return Fb(this.va)};Y.prototype.set_OpenMode=Y.prototype.pc=function(a){var b=this.va;a&&"object"===typeof a&&(a=a.va);Gb(b,a)};Object.defineProperty(Y.prototype,"OpenMode",{get:Y.prototype.Kb,set:Y.prototype.pc});
Y.prototype.get_Callback=Y.prototype.Jb=function(){return Hb(this.va)};Y.prototype.set_Callback=Y.prototype.Nb=function(a){var b=this.va;a&&"object"===typeof a&&(a=a.va);Ib(b,a)};Object.defineProperty(Y.prototype,"Callback",{get:Y.prototype.Jb,set:Y.prototype.Nb});Y.prototype.get_OpenResult=Y.prototype.Lb=function(){return Jb(this.va)};Y.prototype.set_OpenResult=Y.prototype.qc=function(a){var b=this.va;a&&"object"===typeof a&&(a=a.va);Kb(b,a)};
Object.defineProperty(Y.prototype,"OpenResult",{get:Y.prototype.Lb,set:Y.prototype.qc});Y.prototype.get_Flags=Y.prototype.Ea=function(){return Lb(this.va)};Y.prototype.set_Flags=Y.prototype.fb=function(a){var b=this.va;a&&"object"===typeof a&&(a=a.va);Mb(b,a)};Object.defineProperty(Y.prototype,"Flags",{get:Y.prototype.Ea,set:Y.prototype.fb});Y.prototype.__destroy__=function(){Nb(this.va)};function Z(){throw"cannot construct a VoidPtr, no constructor in IDL";}Z.prototype=Object.create(V.prototype);
Z.prototype.constructor=Z;Z.prototype.Wa=Z;Z.gb={};c.VoidPtr=Z;Z.prototype.__destroy__=function(){Ob(this.va)};(function(){function a(){}Da||Ba.unshift(a)})();c.ensureString=dc;c.WORKERFS=U;S.mount=S.Aa;S.unmount=S.$c;
//var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';
//if(ENVIRONMENT_IS_WORKER) importScripts('libunrar.js')
// wcchoi Code:
/* ----------------
* CONSTANTS (from dll.hpp)
* -------------- */
'use strict'
var ERAR_SUCCESS = 0
var ERAR_END_ARCHIVE = 10
var ERAR_NO_MEMORY = 11
var ERAR_BAD_DATA = 12
var ERAR_BAD_ARCHIVE = 13
var ERAR_UNKNOWN_FORMAT = 14
var ERAR_EOPEN = 15
var ERAR_ECREATE = 16
var ERAR_ECLOSE = 17
var ERAR_EREAD = 18
var ERAR_EWRITE = 19
var ERAR_SMALL_BUF = 20
var ERAR_UNKNOWN = 21
var ERAR_MISSING_PASSWORD = 22
var ERAR_EREFERENCE = 23
var ERAR_BAD_PASSWORD = 24
var RAR_OM_LIST = 0
var RAR_OM_EXTRACT = 1
var RAR_OM_LIST_INCSPLIT = 2
var RAR_SKIP = 0
var RAR_TEST = 1
var RAR_EXTRACT = 2
var RAR_VOL_ASK = 0
var RAR_VOL_NOTIFY = 1
var RAR_DLL_VERSION = 6
var RAR_HASH_NONE = 0
var RAR_HASH_CRC32 = 1
var RAR_HASH_BLAKE2 = 2
var RHDF_SPLITBEFORE = 0x01
var RHDF_SPLITAFTER = 0x02
var RHDF_ENCRYPTED = 0x04
var RHDF_SOLID = 0x10
var RHDF_DIRECTORY = 0x20
var UCM_CHANGEVOLUME = 0
var UCM_PROCESSDATA = 1
var UCM_NEEDPASSWORD = 2
var UCM_CHANGEVOLUMEW = 3
var UCM_NEEDPASSWORDW = 4
/* -----------------
* Error Reporting
* ---------------- */
var reportOpenError = function (code) {
switch (code) {
case ERAR_NO_MEMORY:
throw 'Not enough memory to initialize data structures'
break
case ERAR_BAD_DATA:
throw 'Archive header broken'
break
case ERAR_UNKNOWN_FORMAT:
throw 'Unknown encryption used for archive headers'
break
case ERAR_EOPEN:
throw 'File open error'
break
case ERAR_BAD_PASSWORD:
throw 'Entered password is invalid. This code is returned only for archives in RAR 5.0 format'
break
case ERAR_BAD_ARCHIVE:
throw 'Bad archive'
break
default:
throw 'Unknown open error code'
break
}
}
var reportReadHeaderError = function (code) {
switch (code) {
case ERAR_BAD_DATA:
throw 'File header broken'
break
case ERAR_MISSING_PASSWORD:
throw 'Password was not provided for encrypted file header'
break
case ERAR_BAD_PASSWORD:
throw 'Bad password'
break
default:
throw 'Unknown read header error code'
break
}
}
var reportProcessFileError = function (code) {
switch (code) {
case ERAR_BAD_DATA:
throw 'File CRC error'
break
case ERAR_UNKNOWN_FORMAT:
throw 'Unknown archive format'
break
case ERAR_EOPEN:
throw 'Volume open error'
break
case ERAR_ECREATE:
throw 'File create error'
break
case ERAR_ECLOSE:
throw 'File close error'
break
case ERAR_EREAD:
throw 'Read error'
break
case ERAR_EWRITE:
throw 'Write error'
break
case ERAR_NO_MEMORY:
throw 'Not enough memory'
break
case ERAR_EREFERENCE:
throw 'When attempting to unpack a reference record (see RAR -oi switch), source file for this reference was not found. Entire archive needs to be unpacked to properly create file references. This error is returned when attempting to unpack the reference record without its source file.'
break
case ERAR_BAD_PASSWORD:
throw 'Entered password is invalid. This code is returned only for archives in RAR 5.0 format'
break
case ERAR_MISSING_PASSWORD:
throw 'Missing password'
break
default:
throw 'Unknown Process File error code'
break
}
}
/* --------------------------
* Actual extraction code
*------------------------- */
/**
Get the content of file(s) inside a RAR archive or archives(for multi-part RAR)
@param data: Array of {name:filename in string, content: UTF8string|ArrayBufferView for non WorkerFS version, or File|Blob for WorkerFS version}
In case of single RAR archive, data = [
{name: 'test.rar', content: content of test.rar}
]
In case of multi-part RAR, it would be like this:
[
{name: 'test.part1.rar', content: content of test.part1.rar},
...
{name: 'test.partN.rar', content: content of test.partN.rar}
]
@param password: string
@param callbackFn: function(currFileName, currFileSize, currProcessed)
It is used to show progress(of a single file only, whole archive progress not implemented)
Result is an array of JS Object representing RAR archive content
@fullFileName "full file name including the directory path"
@is_file true -file, false-directory
@name "FileName"
@readData Uint8Array or promise returning Uint8Array
@size_compressed
@size_uncompressed
*/
/**WORKERFS version, only works in web workers.
//data: Array of [{ name: 'arc_name.txt', content: File|Blob }] */
let start=false;
var readRARContentWorkerFS = function (data, password,callbackFn) {
if(data == null || data.length==0 || data.length<1) return null;
let files=[];
let blobs=[];
for (let d of data) if(d.content instanceof File) files.push(d.content); else blobs.push({ name: d.name, data: d.content });
if(!start) Module.FS.mkdir('/x')
Module.FS.mount(Module.WORKERFS, {
files: files,
blobs: blobs,
encoding: 'binary',
canOwn: true,
flags: 'w+'
}, '/x')
if(!start) Module.FS.chdir('/x');
start = true;
return _readRARContent(data, password,'W',callbackFn)
}
/**Everything is loaded to the memory so make sure you have enough free memory to hold BOTH the RAR file AND the decompressed content
data: Array of [{ name: 'arc_name.txt', content: UTF8string|ArrayBufferView }] */
var readRARContent = function (data, password, callbackFn) {
if(data == null || data.length==0 || data.length<1) return null;
// write the byte arrays to a file first
// because the library operates on files
// the canOwn flag reduces the memory usage
for (var i = 0; i < data.length; i++) {
Module.FS.writeFile(data[i].name, data[i].content, { encoding: 'binary', canOwn: true, flags: 'w+' })
}
return _readRARContent(data, password,'',callbackFn)
}
//-----------------------------------------------------
//data = array of (File | {name:"filename", content:UTF8string|ArrayBufferView} )
//string|ArrayBufferView
var _readRARContent = function (data, password,type,callbackFn) {
var data = data
//console.log('Current working directory: ', Module.FS.cwd())
var returnVal = []
var arcData = new Module.RAROpenArchiveDataEx()
arcData.set_ArcName(data[0].name)
arcData.set_OpenMode(RAR_OM_EXTRACT)
var pars= {
password:password,
currFileName:null,
currFileSize:null,
currPackedFileSize:null,
currFileBuffer:null,
currFileBufferEnd:null,
currFileFlags:null,
}
var cb = Module.addFunction(RARcb(pars,callbackFn), 'iiiii')
arcData.set_Callback(cb)
var handle = Module._RAROpenArchiveEx(Module.getPointer(arcData))
var or = arcData.get_OpenResult()
if (or !== ERAR_SUCCESS || !handle) {
cleanup(data,handle,cb,type)
reportOpenError(or)
return null
}
//ShowArcInfo(arcData.get_Flags())
if (password) {
Module._RARSetPassword(handle, Module.ensureString(password))
}
var header = new Module.RARHeaderDataEx()
var res = Module._RARReadHeaderEx(handle, Module.getPointer(header))
let i=0;
while (res === ERAR_SUCCESS) { i++
pars.currFileName = header.get_FileNameW()// getFileName()
if(i % 1000 ==0){console.log('filename: ', pars.currFileName);console.log(i);}
pars.currFileSize = header.get_UnpSize()
pars.currPackedFileSize = header.get_PackSize()
pars.currFileBuffer = new ArrayBuffer(pars.currFileSize)
pars.currFileBufferEnd = 0
pars.currFileFlags = header.get_Flags()
//console.log('File continued from previous volume? ', pars.currFileFlags & RHDF_SPLITBEFORE ? 'yes' : 'no')
//console.log('File continued on next volume? ', pars.currFileFlags & RHDF_SPLITAFTER ? 'yes' : 'no')
//console.log('Previous files data is used (solid flag)? ', pars.currFileFlags & RHDF_SOLID ? 'yes' : 'no')
// ***process file***
// use RAR_TEST instead of RAR_EXTRACT
// because there is some problem reading from
// the extracted file in Emscripten file system
var PFCode = Module._RARProcessFileW(handle, RAR_TEST, 0, 0)
if (PFCode === ERAR_SUCCESS) {
returnVal.push({
type: (pars.currFileFlags & RHDF_DIRECTORY) ? 'dir' : 'file',
fileName: pars.currFileName,
fileNameSplit: pars.currFileName.split('/'),
fileSize: pars.currFileSize,
packedFileSize: pars.currPackedFileSize,
content: new Uint8Array(pars.currFileBuffer)
})
} else {
cleanup(data,handle,cb,type)
reportProcessFileError(PFCode)
return null
}
res = Module._RARReadHeaderEx(handle, Module.getPointer(header))
}
//console.log(res)
if (res !== ERAR_END_ARCHIVE) {
cleanup(data,handle,cb,type)
reportReadHeaderError(res)
return null
}
cleanup(data,handle,cb,type)
return makeDirTree(returnVal)
}
function cleanup (data,handle,cb,type) {
Module._RARCloseArchive(handle)
if(type=='W') Module.FS.unmount('/x')
else for (var i = 0; i < data.length; i++) {
Module.FS.unlink(data[i].name)
}
Module.removeFunction(cb)
}
// build up a directory tree-like structure
function makeDirTree(returnVal){
var dirs = returnVal.filter(function (en) { return en.type === 'dir' }).sort(function (a, b) { return a.fileNameSplit.length - b.fileNameSplit.length })
var files = returnVal.filter(function (en) { return en.type === 'file' }).sort(function (a, b) { return a.fileNameSplit.length - b.fileNameSplit.length })
var rootDir = { type: 'dir', ls: {} }
var mkdir = function (path) {
var dir = rootDir
path.forEach(function (p) {
if (!(p in dir.ls)) {
dir.ls[p] = {
type: 'dir',
ls: {}
}
}
dir = dir.ls[p]
})
}
dirs.forEach(function (e) { mkdir(e.fileNameSplit) })
var putFile = function (entry) {
var fileName = entry.fileNameSplit.pop()
var dir = rootDir
entry.fileNameSplit.forEach(function (p) {
dir = dir.ls[p]
})
dir.ls[fileName] = {
type: 'file',
fullFileName: entry.fileName,
fileSize: entry.fileSize,
packedFileSize: entry.packedFileSize,
fileContent: entry.content
}
}
files.forEach(putFile)
//console.log(rootDir)
return rootDir
}
function RARcb(pars,callbackFn) {
return function (msg, UserData, P1, P2) {
// volume change event
if (msg === UCM_CHANGEVOLUMEW) return 0
if (msg === UCM_CHANGEVOLUME) {
if (P2 === RAR_VOL_ASK) {
return -1
} else if (P2 === RAR_VOL_NOTIFY) {
console.log('... volume is :', /* Pointer_stringify */ Module.UTF8ToString(P1))
return 1
}
throw 'Unknown P2 value in volume change event'
}
if (msg === UCM_NEEDPASSWORDW) return 0
if (msg === UCM_NEEDPASSWORD) {
if (pars.password) {
Module.stringToUTF8(pars.password, P1, P2)
return 1
} else return -1
}
if (msg !== UCM_PROCESSDATA) {
return -1 // abort operation
}
if(callbackFn){callbackFn(pars.currFileName, pars.currFileSize, pars.currFileBufferEnd)}
// directly access the HEAP
var block = Module.HEAPU8.subarray(P1, P1 + P2)
var view = new Uint8Array(pars.currFileBuffer, pars.currFileBufferEnd, P2)
view.set(block)
pars.currFileBufferEnd += P2
return 1
}
}
function ShowArcInfo(Flags) {
// console.log("\nArchive %s\n",ArcName);
console.log('Volume:\t\t%s', (Flags & 1) ? 'yes' : 'no')
console.log('Comment:\t%s', (Flags & 2) ? 'yes' : 'no')
console.log('Locked:\t\t%s', (Flags & 4) ? 'yes' : 'no')
console.log('Solid:\t\t%s', (Flags & 8) ? 'yes' : 'no')
console.log('New naming:\t%s', (Flags & 16) ? 'yes' : 'no')
console.log('Recovery:\t%s', (Flags & 64) ? 'yes' : 'no')
console.log('Encr.headers:\t%s', (Flags & 128) ? 'yes' : 'no')
console.log('First volume:\t%s', (Flags & 256) ? 'yes' : 'no or older than 3.0')
console.log('---------------------------\n')
}
// export
if (typeof process === 'object' && typeof require === 'function') { // NODE
module.exports = readRARContent
} else if (typeof define === 'function' && define.amd) { // AMD
define('readRARContent', [], function () { return readRARContent })
} else if (typeof window === 'object') { // WEB
window['readRARContent'] = readRARContent
} else if (typeof importScripts === 'function') { // WORKER
this['readRARContent'] = readRARContent
this['readRARContentWorkerFS'] = readRARContentWorkerFS
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

1408
emulatorjs/data/emulator.css Normal file

File diff suppressed because it is too large Load Diff

4790
emulatorjs/data/emulator.js Normal file

File diff suppressed because one or more lines are too long

1
emulatorjs/data/emulator.min.css vendored Normal file

File diff suppressed because one or more lines are too long

1
emulatorjs/data/emulator.min.js vendored Normal file

File diff suppressed because one or more lines are too long

159
emulatorjs/data/gamepad.js Normal file
View File

@ -0,0 +1,159 @@
class GamepadHandler {
gamepads;
timeout;
listeners;
constructor() {
this.buttonLabels = {
0: 'BUTTON_1',
1: 'BUTTON_2',
2: 'BUTTON_3',
3: 'BUTTON_4',
4: 'LEFT_TOP_SHOULDER',
5: 'RIGHT_TOP_SHOULDER',
6: 'LEFT_BOTTOM_SHOULDER',
7: 'RIGHT_BOTTOM_SHOULDER',
8: 'SELECT',
9: 'START',
10: 'LEFT_STICK',
11: 'RIGHT_STICK',
12: 'DPAD_UP',
13: 'DPAD_DOWN',
14: 'DPAD_LEFT',
15: 'DPAD_RIGHT',
};
this.gamepads = [];
this.listeners = {};
this.timeout = null;
this.loop();
}
terminate() {
window.clearTimeout(this.timeout);
}
getGamepads() {
return navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);
}
loop() {
this.updateGamepadState();
this.timeout = setTimeout(this.loop.bind(this), 10);
}
updateGamepadState() {
let gamepads = this.getGamepads();
if (!gamepads) return;
if (!Array.isArray(gamepads) && gamepads.length) {
let gp = [];
for (let i=0; i<gamepads.length; i++) {
gp.push(gamepads[i]);
}
gamepads = gp;
} else if (!Array.isArray(gamepads)) return;
gamepads.forEach((gamepad, index) => {
if (!gamepad) return;
let hasGamepad = false;
this.gamepads.forEach((oldGamepad, oldIndex) => {
if (oldGamepad.index !== gamepad.index) return;
const gamepadToSave = {
axes: [],
buttons: {},
index: oldGamepad.index,
id: oldGamepad.id
}
hasGamepad = true;
oldGamepad.axes.forEach((axis, axisIndex) => {
const val = (axis < 0.01 && axis > -0.01) ? 0 : axis;
const newVal = (gamepad.axes[axisIndex] < 0.01 && gamepad.axes[axisIndex] > -0.01) ? 0 : gamepad.axes[axisIndex];
if (newVal !== val) {
const axis = ['LEFT_STICK_X', 'LEFT_STICK_Y', 'RIGHT_STICK_X', 'RIGHT_STICK_Y'][axisIndex];
if (!axis) return;
this.dispatchEvent('axischanged', {
axis: axis,
value: newVal,
index: gamepad.index,
label: this.getAxisLabel(axis, newVal),
gamepadIndex: gamepad.index,
});
}
gamepadToSave.axes[axisIndex] = newVal;
})
gamepad.buttons.forEach((button, buttonIndex) => {
let pressed = oldGamepad.buttons[buttonIndex] === 1.0;
if (typeof oldGamepad.buttons[buttonIndex] === "object") {
pressed = oldGamepad.buttons[buttonIndex].pressed;
}
let pressed2 = button === 1.0;
if (typeof button === "object") {
pressed2 = button.pressed;
}
gamepadToSave.buttons[buttonIndex] = {pressed:pressed2};
if (pressed !== pressed2) {
if (pressed2) {
this.dispatchEvent('buttondown', {index: buttonIndex, label: this.getButtonLabel(buttonIndex), gamepadIndex: gamepad.index});
} else {
this.dispatchEvent('buttonup', {index: buttonIndex, label:this.getButtonLabel(buttonIndex), gamepadIndex: gamepad.index});
}
}
})
this.gamepads[oldIndex] = gamepadToSave;
})
if (!hasGamepad) {
this.gamepads.push(gamepads[index]);
this.dispatchEvent('connected', {gamepadIndex: gamepad.index});
}
});
for (let j=0; j<this.gamepads.length; j++) {
if (!this.gamepads[j]) continue;
let has = false;
for (let i=0; i<gamepads.length; i++) {
if (!gamepads[i]) continue;
if (this.gamepads[j].index === gamepads[i].index) {
has = true;
break;
}
}
if (!has) {
this.dispatchEvent('disconnected', {gamepadIndex: this.gamepads[j].index});
this.gamepads.splice(j, 1);
j--;
}
}
}
dispatchEvent(name, arg) {
if (typeof this.listeners[name] !== 'function') return;
if (!arg) arg={};
arg.type = name;
this.listeners[name](arg);
}
on(name, cb) {
this.listeners[name.toLowerCase()] = cb;
}
getButtonLabel(index) {
if (index === null || index === undefined) {
return null;
}
if (this.buttonLabels[index] === undefined) {
return `GAMEPAD_${index}`;
}
return this.buttonLabels[index];
}
getAxisLabel(axis, value) {
let valueLabel = null;
if (value > 0.5 || value < -0.5) {
if (value > 0) {
valueLabel = '+1';
} else {
valueLabel = '-1';
}
}
if (!axis || !valueLabel) {
return null;
}
return `${axis}:${valueLabel}`;
}
}
window.GamepadHandler = GamepadHandler;

115
emulatorjs/data/loader.js Normal file
View File

@ -0,0 +1,115 @@
(async function() {
const folderPath = (path) => path.substring(0, path.length - path.split('/').pop().length);
let scriptPath = (typeof window.EJS_pathtodata === "string") ? window.EJS_pathtodata : folderPath((new URL(document.currentScript.src)).pathname);
if (!scriptPath.endsWith('/')) scriptPath+='/';
//console.log(scriptPath);
function loadScript(file) {
return new Promise(function (resolve, reject) {
let script = document.createElement('script');
script.src = function() {
if ('undefined' != typeof EJS_paths && typeof EJS_paths[file] === 'string') {
return EJS_paths[file];
} else {
return scriptPath+file;
}
}();
script.onload = resolve;
document.head.appendChild(script);
})
}
function loadStyle(file) {
return new Promise(function(resolve, reject) {
let css = document.createElement('link');
css.rel = 'stylesheet';
css.href = function() {
if ('undefined' != typeof EJS_paths && typeof EJS_paths[file] === 'string') {
return EJS_paths[file];
} else {
return scriptPath+file;
}
}();
css.onload = resolve;
document.head.appendChild(css);
})
}
if (('undefined' != typeof EJS_DEBUG_XX && true === EJS_DEBUG_XX)) {
await loadScript('emulator.js');
await loadScript('nipplejs.js');
await loadScript('shaders.js');
await loadScript('storage.js');
await loadScript('gamepad.js');
await loadScript('GameManager.js');
await loadScript('socket.io.min.js');
await loadStyle('emulator.css');
} else {
await loadScript('emulator.min.js');
await loadStyle('emulator.min.css');
}
const config = {};
config.gameUrl = window.EJS_gameUrl;
config.dataPath = scriptPath;
config.system = window.EJS_core;
config.biosUrl = window.EJS_biosUrl;
config.gameName = window.EJS_gameName;
config.color = window.EJS_color;
config.adUrl = window.EJS_AdUrl;
config.adMode = window.EJS_AdMode;
config.adTimer = window.EJS_AdTimer;
config.adSize = window.EJS_AdSize;
config.alignStartButton = window.EJS_alignStartButton;
config.VirtualGamepadSettings = window.EJS_VirtualGamepadSettings;
config.buttonOpts = window.EJS_Buttons;
config.volume = window.EJS_volume;
config.defaultControllers = window.EJS_defaultControls;
config.startOnLoad = window.EJS_startOnLoaded;
config.fullscreenOnLoad = window.EJS_fullscreenOnLoaded;
config.filePaths = window.EJS_paths;
config.loadState = window.EJS_loadStateURL;
config.cacheLimit = window.EJS_CacheLimit;
config.cheats = window.EJS_cheats;
config.defaultOptions = window.EJS_defaultOptions;
config.gamePatchUrl = window.EJS_gamePatchUrl;
config.gameParentUrl = window.EJS_gameParentUrl;
config.netplayUrl = window.EJS_netplayServer;
config.gameId = window.EJS_gameID;
config.backgroundImg = window.EJS_backgroundImage;
config.backgroundBlur = window.EJS_backgroundBlur;
config.backgroundColor = window.EJS_backgroundColor;
config.controlScheme = window.EJS_controlScheme;
config.threads = window.EJS_threads;
config.disableCue = window.EJS_disableCue;
config.startBtnName = window.EJS_startButtonName;
config.softLoad = window.EJS_softLoad;
if (typeof window.EJS_language === "string" && window.EJS_language !== "en-US") {
try {
let path;
if ('undefined' != typeof EJS_paths && typeof EJS_paths[window.EJS_language] === 'string') {
path = EJS_paths[window.EJS_language];
} else {
path = scriptPath+"localization/"+window.EJS_language+".json";
}
config.language = window.EJS_language;
config.langJson = JSON.parse(await (await fetch(path)).text());
} catch(e) {
config.langJson = {};
}
}
window.EJS_emulator = new EmulatorJS(EJS_player, config);
window.EJS_adBlocked = (url, del) => window.EJS_emulator.adBlocked(url, del);
if (typeof window.EJS_ready === "function") {
window.EJS_emulator.on("ready", window.EJS_ready);
}
if (typeof window.EJS_onGameStart === "function") {
window.EJS_emulator.on("start", window.EJS_onGameStart);
}
if (typeof window.EJS_onLoadState === "function") {
window.EJS_emulator.on("load", window.EJS_onLoadState);
}
if (typeof window.EJS_onSaveState === "function") {
window.EJS_emulator.on("save", window.EJS_onSaveState);
}
})();

View File

@ -0,0 +1,347 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>EmulalorJS | Translate Languages</title>
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAb1BMVEVHcEwJNVMBkbwDi7cJNVMJNVMIN1UAlsIGZIcAlcEBs+kJNVMDn9EHVXYEc5kJNVMEgasFdZ0HUnMBk78EdZ0GfacFaIwHW3wINVMJNVMJNVMGYoUJNVMEeJ4JNVMDgakJNVMChwAAl8QCpNcCh7CQzQKfAAAAIXRSTlMAEvv+Py9y+L/2/Ev+q99H3s6R/u3+5r8hm82HYLpk+2GSUqJjAAAAgElEQVQY022PyQ6DMAxEHRM7KZCwdQG6ys3/f2MT1IMleLcZacZjgGOo6UjJpm/ruh3sJoy1XH03LmytgYAnBQbwItGfJVONg4gHP6U73FLWV3i8i5E+BuaXQ6Z1MbEYPAOxm8ZuXSiqCOZIKhGR/vkvjaU0oFPks7thu+mHz2l+F+sLcletMXIAAAAASUVORK5CYII=">
</head>
<body>
<center>
<h1>Translate Languages</h1>
<img style="width: 150px;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPkAAADjCAMAAABw3EJfAAAAQlBMVEUCFicBFSQHM1EAAAAINFIAAAAINFIAAAAINVMFYogCd54AAAAAkb4BhbAGTXAHQGAINVMAruQAufEAl8QJNVMAAABDiqgaAAAAEnRSTlMAEDtHZm2Ur9Hi5ent7/Ly8vMp07OrAAALHElEQVR42u2di5qjKgyAC1oLFAWr8/6vup+1KCggeAXczJ49O05p/SchShLi43GqAAAgzPPiK6j/X55DCAB4pCoAwLwoEGr1whEqcpgcfweNeOsgCBUwGfqOuvURngQ99KQe6IscRI3N2w2CIoVfq23V7qODB7nFoXGOGO6EdH9VFeLcZvYwAXVzhAmhtP50X4PUn09dU0JwxSNn185uzjChtcSrkbquS6LFR3mc3B31ArSMTzX04U/4OTevCHWlHvFLzObsMXHzyl3ZU3g6hecIhuvP1VNlmK7EFpqvWAy+DqrcfCN2L5RM2MOb7hNDZ7tw/xSvuvmwbuknhs7wTti/Ga/4el4EhA6K47g17OF4OkXhfHfunp2Fp3Ygz3CO6ecYqRVfF4LaFZfOaP05TGqsOPmQwDk5kPt7javCsfhcUsNhhm4weQTC8OmHK3yu9usmO5AsHdHPOVKT0aFyePkUP+ZSZlK7ZPH51eDkc6bU1aXocDQ6VH9OFjKiFxeC49PBPx86fvzJV7cR/CSfbpnsp6JfDq5M9uIScPq5Sg5AB3BBxrUZx/Q6KZkUpVqWxRBDgTjnLW9tf6Q7t0u/lBOx/uGcI5TDQ1NhIYspag+2ZT4jYdeE8SBq7yDz1W3O25uIurq9g6XrV7eKxjlLUAxal8AZJiVNT0olRznM9dG5MUybVIWSara4HYJKVdmkLBRPojlwAKdN4jJEMPtbfXQb8KYhstLFyovdALxpsKR0McvJHcAbEdLgYDD2e6h8sHcOH4DfSeVNI5b1hZjmvLwJeVMJ8vxexj74OCTIq7uADxNduPb/5P/J/5OHueoiGFddgXxJb0ReYqkmlDPsDR8p+bQUtjtzcgPyEmsDa35hhbXkhJSOfw5cXU+F4ePJKXONcO5vRNjyaR5RtPjIsf3jaLLkeLJ9t9vLzNegx0ZO5J1McNjyKsHjNMlLbtizKRVakyTJK2PN55gYc1xobyTnFjmAnNjKgYYMET6B3FZ3ecStEbPWQQmtu8WVoiInC+XNhY/SoyKvFip8RRS1pYmR08Wav9zDvcdELowdLhac48TIq+VNDL8PZWmSFw7bSmha5Hy5lt0jXxIT+eI0Hyc6SYpcuHZwO/Lytjp3snaeJLm7h2t38XC2onIXcu14n+ldElx1grn7Ve03wpaCWCbHFZt/Me5KznXD3ePD8+4iLncyUji2InQ1ua1iGHqchCyO5KTSDYauTS5ECoLGRl5W+sHLKxaX9EvA5IT7fqq5Nh/HRI5dS9MNfS6W4vDBklsTCoZolFcKIlRyNaFQFLmaUNChS7sShhHcjO5MjnKdWC4wUDvAkRzrmiHKffZm2+0lU5dGQOnXVa0k32cDIHAjJ6aGAqMP46ZMw6SZmOT1cPjkYx5jbtWFpnGWtF1SM2LcqUGDJ8e2nabyXptuPqv9gq0jqtDJKbNusc29nf6AXgZOLlSOvK8aPimIEMnZUkIB+V5khxE0aPJycTt53q69oSdBk+PFeJtB6Xw5BVEFTV7ZZ7l5pjss3HnI5MKz5459qtw6q8DZRA+PXGyzgG7NXFq3djpgFqAL0No9QqyusRpdODpAnXskFG5InrTOb2jtDr7d38OJESH7duqRJne/quURXNUOvZNhQd/DLZfDQEM8Ol90DDjyFYupAwqKfMUyFLdCT5Wb+96KETzw9flCqSNAbi1iNHFZHEs0CnknFBZG0NAjkNaS5kIJQObdQ9q4Hb3QFkGHGW+vzAkFpEkoPGDROqQgWPhR50bu8weUjn2mJMvIbhwxKZ5xzy4VOrHcO+TaAY7ZJaI8iQP8UkWFJaEgIQ6PJlNGTDPJoWYUSTvZo4SU9GAOrCkIPh8xS6GnlEW29rbD8VQOEL46oeBUNBFwtYipTGZFCoKRuCqEKGaeq1H96pXjMrqqsFLH7pBQUCviypX1cKTSiTM50w53LoKkpJo+Zs1n4c4q4zbwCOpeaVl2T1okhLknFEg/wtaCIcKKX4cURGJ7Gu5b337fPQ30/54G2zxPk9wjBZHYfrX77tTDt92d6Z6CSG1HLl28ffXp3Brjzvt2KaHAmtTIiX21NqzUzui2kJsffHJEh43KFpQZwstubVWO66pyRD8ZYolHjXH1M7qqnN5JBxsTClLbfZoiOWXzuv5e4YORsbJJkVxqHNUlFL45CABhwZPvmDVPQSCkNElzBo+wMx6xfjRuDidnjHGH/9j+3RBt6KQ5mrwpXaXZX4wpCFY2x5NfK1q1ez5EJtJOt3TGznC5ylXG192Ylnh4ihJjmHh3do66lzctCenyCWsaWv/vYv6f/D/5ncjz+zxuSiFHN34eC7zZ04fokI0H3HexE7eUYxy3WHHXH7FI9S75rZQuYjtI3gNGbjTL+6RF0d7G3qkauB9SFIzcBVzkqfKxaDDpq/q4thcJC6kBESOpmjwl4+N7xvyc3F+NVZikJ/LDmpRNXjd57LvIVLh11Usc/Ebo8/2MN3nsvXY3I0yfHZla+kH1UUaJmTlHtlaGAOYFWhLpEnil8Elq1SqF2P22ab/heOOD689lMqZ1EXycJEGgU+6yqWZ3dGl77EXo5BJwFZ1eAY7ba8AVg+fkdO66ugxcRT97skslK+h0cLWN9Lno0sbVK8DVLZHsvMleY7cWOsei8/MtXi7OKq4CVxZ4/BS1ywrnxeNCkde2J6hdLo7i+eNSUda2jNRnKfwq32ZqdcDxcSZfK1VRF05xQzTnKJOvlSpAnocAPo3mHGHyNa3asCxdH8Tbm72myh78UBSuDeIxUtcHcYekcKF2rja3oPU+fq1yC6RdqfYcTRp7bDb6etpkRN3JEazJf4uQ6/3U3XIUJrc2bs1Xwtc1mXYWmT51JHj2tkXY09/VdI4d5AR3yFfwClM3+lpO9kbFbc7VcIaJVfk1JZhxfWbkEYtM/byS6Pg2uqG1EEpLUuKKGTuaFvARleT7JOlQAR7RifyErLWZbviIVOAGeLRHIuxaza8wex49tpSf9aNOAXugh8Vich6hbpdxQtQjPoCwe8qh2pa061TaPf4Qpgmt/gIAgEC0pei+u5g40wkQx4H6ssXjJurhnbUHJz/VHTS+WPtB8yGa177+5vLOxPFMfZn5OOgHGtQI3uKdgebg+LlAc7w/+Jyd5EurR+lHmf3FwIf8vZ384U3+B6YYu5K/VAEC6fm1ZJhlG3QOsuz5/nu/Xq/udzcaHug/6086gX7WvKXz6d68G9JjvMXh7iXSnJuTdx86vF7/4gnJfBZk47/X6bzX4RuIfxh+qnw73L+Kn2aq6p4GTQ4vmyv/pde5G/nfYeR/j9PJl3X+BHCLzgdTB1/zVg3+JJ33Nu+tc1n8yadgJj93pM4N4kO+QueT48BwbTtU54brze/UwSjB6xw8n68lctD7fzDjsuk221Xn7/11/jRfpU3Xc7Nvn+DtqPO//XW+D/nv1N+SQPn412j6v7fo/Clko86/79FdIJ6v5+uZWcmBfG/2PYfMw7f3qNn6+/b5LeoWndtvXc2Xbu1xH/LVvl17f75C53uSO+j89d6s8/frZ+yvbTp/D15dmC5QF6Gjb/9+XLZJ5w+wZa22u2+fuLcJkul6vkrn29bnu/v23cjH1egkJmNanz/FErGX13dFOZA/p2ETb51/3398n34BK5FnYmH76levw1pAnM779Xo+pDXCV57i+MrIhP4mJzN7Mv97OFNMxnI9Nzk/t+u5e0zGl9zzvt0ek9mTvLOuuYCvVX/NWCwRpG8nQ7LZbcMgw3GgxmEUozMckU9GrDSf8qpz9q18cP4+v+P/AIaTnnYxBPRwAAAAAElFTkSuQmCC">
</center>
<br>
<textarea id="box1" rows="39.5" cols="30"></textarea>
<textarea id="box2" placeholder="Copy what is on the left into google translate, then translate it into the language you whant and paste the translation here." rows="39.5" cols="50"></textarea>
<button onclick="startc()">Next</button>
<textarea id="box3" placeholder="Then click next and you are done copy this box in to a .json file" rows="39.5" cols="50"></textarea>
</body>
<script type="text/javascript">
var data = {
"0": "-0",
"1": "-1",
"2": "-2",
"3": "-3",
"4": "-4",
"5": "-5",
"6": "-6",
"7": "-7",
"8": "-8",
"9": "-9",
"Restart": "-Restart",
"Pause": "-Pause",
"Play": "-Play",
"Save State": "-Save State",
"Load State": "-Load State",
"Control Settings": "-Control Settings",
"Cheats": "-Cheats",
"Cache Manager": "-Cache Manager",
"Export Save File": "-Export Save File",
"Import Save File": "-Import Save File",
"Netplay": "-Netplay",
"Mute": "-Mute",
"Unmute": "-Unmute",
"Settings": "-Settings",
"Enter Fullscreen": "-Enter Fullscreen",
"Exit Fullscreen": "-Exit Fullscreen",
"Reset": "-Reset",
"Clear": "-Clear",
"Close": "-Close",
"QUICK SAVE STATE": "-QUICK SAVE STATE",
"QUICK LOAD STATE": "-QUICK LOAD STATE",
"CHANGE STATE SLOT": "-CHANGE STATE SLOT",
"FAST FORWARD": "-FAST FORWARD",
"Player": "-Player",
"Connected Gamepad": "-Connected Gamepad",
"Gamepad": "-Gamepad",
"Keyboard": "-Keyboard",
"Set": "-Set",
"Add Cheat": "-Add Cheat",
"Create a Room": "-Create a Room",
"Rooms": "-Rooms",
"Start Game": "-Start Game",
"Loading...": "-Loading...",
"Download Game Core": "-Download Game Core",
"Decompress Game Core": "-Decompress Game Core",
"Download Game Data": "-Download Game Data",
"Decompress Game Data": "-Decompress Game Data",
"Shaders": "-Shaders",
"Disabled": "-Disabled",
"2xScaleHQ": "-2xScaleHQ",
"4xScaleHQ": "-4xScaleHQ",
"CRT easymode": "-CRT easymode",
"CRT aperture": "-CRT aperture",
"CRT geom": "-CRT geom",
"CRT mattias": "-CRT mattias",
"FPS": "-FPS",
"show": "-show",
"hide": "-hide",
"Fast Forward Ratio": "-Fast Forward Ratio",
"Fast Forward": "-Fast Forward",
"Enabled": "-Enabled",
"Save State Slot": "-Save State Slot",
"Save State Location": "-Save State Location",
"Download": "-Download",
"Keep in Browser": "-Keep in Browser",
"Auto": "-Auto",
"NTSC": "-NTSC",
"PAL": "-PAL",
"Dendy": "-Dendy",
"8:7 PAR": "-8:7 PAR",
"4:3": "-4:3",
"Low": "-Low",
"High": "-High",
"Very High": "-Very High",
"None": "-None",
"Player 1": "-Player 1",
"Player 2": "-Player 2",
"Both": "-Both",
"SAVED STATE TO SLOT": "-SAVED STATE TO SLOT",
"LOADED STATE FROM SLOT": "-LOADED STATE FROM SLOT",
"SET SAVE STATE SLOT TO": "-SET SAVE STATE SLOT TO",
"Network Error": "-Network Error",
"Submit": "-Submit",
"Description": "-Description",
"Code": "-Code",
"Add Cheat Code": "-Add Cheat Code",
"Leave Room": "-Leave Room",
"Password": "-Password",
"Password (optional)": "-Password (optional)",
"Max Players": "-Max Players",
"Room Name": "-Room Name",
"Join": "-Join",
"Player Name": "-Player Name",
"Set Player Name": "-Set Player Name",
"Left Handed Mode": "-Left Handed Mode",
"Virtual Gamepad": "-Virtual Gamepad",
"Disk": "-Disk",
"Press Keyboard": "-Press Keyboard",
"INSERT COIN": "-INSERT COIN",
"Remove": "-Remove",
"SAVE LOADED FROM BROWSER": "-SAVE LOADED FROM BROWSER",
"SAVE SAVED TO BROWSER": "-SAVE SAVED TO BROWSER",
"Join the discord": "-Join the discord",
"View on GitHub": "-View on GitHub",
"Failed to start game": "-Failed to start game",
"Download Game BIOS": "-Download Game BIOS",
"Decompress Game BIOS": "-Decompress Game BIOS",
"Download Game Parent": "-Download Game Parent",
"Decompress Game Parent": "-Decompress Game Parent",
"Download Game Patch": "-Download Game Patch",
"Decompress Game Patch": "-Decompress Game Patch",
"Download Game State": "-Download Game State",
"Check console": "-Check console",
"Error for site owner": "-Error for site owner",
"EmulatorJS": "-EmulatorJS",
"Clear All": "-Clear All",
"Take Screenshot": "-Take Screenshot",
"Quick Save": "-Quick Save",
"Quick Load": "-Quick Load",
"REWIND": "-REWIND",
"Rewind Enabled (requires restart)": "-Rewind Enabled (requires restart)",
"Rewind Granularity": "-Rewind Granularity",
"Slow Motion Ratio": "-Slow Motion Ratio",
"Slow Motion": "-Slow Motion",
"Home": "-Home",
"EmulatorJS License": "-EmulatorJS License",
"RetroArch License": "-RetroArch License",
"SLOW MOTION": "-SLOW MOTION",
"A": "-A",
"B": "-B",
"SELECT": "-SELECT",
"START": "-START",
"UP": "-UP",
"DOWN": "-DOWN",
"LEFT": "-LEFT",
"RIGHT": "-RIGHT",
"X": "-X",
"Y": "-Y",
"L": "-L",
"R": "-R",
"Z": "-Z",
"STICK UP": "-STICK UP",
"STICK DOWN": "-STICK DOWN",
"STICK LEFT": "-STICK LEFT",
"STICK RIGHT": "-STICK RIGHT",
"C-PAD UP": "-C-PAD UP",
"C-PAD DOWN": "-C-PAD DOWN",
"C-PAD LEFT": "-C-PAD LEFT",
"C-PAD RIGHT": "-C-PAD RIGHT",
"MICROPHONE": "-MICROPHONE",
"BUTTON 1 / START": "-BUTTON 1 / START",
"BUTTON 2": "-BUTTON 2",
"BUTTON": "-BUTTON",
"LEFT D-PAD UP": "-LEFT D-PAD UP",
"LEFT D-PAD DOWN": "-LEFT D-PAD DOWN",
"LEFT D-PAD LEFT": "-LEFT D-PAD LEFT",
"LEFT D-PAD RIGHT": "-LEFT D-PAD RIGHT",
"RIGHT D-PAD UP": "-RIGHT D-PAD UP",
"RIGHT D-PAD DOWN": "-RIGHT D-PAD DOWN",
"RIGHT D-PAD LEFT": "-RIGHT D-PAD LEFT",
"RIGHT D-PAD RIGHT": "-RIGHT D-PAD RIGHT",
"C": "-C",
"MODE": "-MODE",
"FIRE": "-FIRE",
"RESET": "-RESET",
"LEFT DIFFICULTY A": "-LEFT DIFFICULTY A",
"LEFT DIFFICULTY B": "-LEFT DIFFICULTY B",
"RIGHT DIFFICULTY A": "-RIGHT DIFFICULTY A",
"RIGHT DIFFICULTY B": "-RIGHT DIFFICULTY B",
"COLOR": "-COLOR",
"B/W": "-B/W",
"PAUSE": "-PAUSE",
"OPTION": "-OPTION",
"OPTION 1": "-OPTION 1",
"OPTION 2": "-OPTION 2",
"L2": "-L2",
"R2": "-R2",
"L3": "-L3",
"R3": "-R3",
"L STICK UP": "-L STICK UP",
"L STICK DOWN": "-L STICK DOWN",
"L STICK LEFT": "-L STICK LEFT",
"L STICK RIGHT": "-L STICK RIGHT",
"R STICK UP": "-R STICK UP",
"R STICK DOWN": "-R STICK DOWN",
"R STICK LEFT": "-R STICK LEFT",
"R STICK RIGHT": "-R STICK RIGHT",
"Start": "-Start",
"Select": "-Select",
"Fast": "-Fast",
"Slow": "-Slow",
"a": "-a",
"b": "-b",
"c": "-c",
"d": "-d",
"e": "-e",
"f": "-f",
"g": "-g",
"h": "-h",
"i": "-i",
"j": "-j",
"k": "-k",
"l": "-l",
"m": "-m",
"n": "-n",
"o": "-o",
"p": "-p",
"q": "-q",
"r": "-r",
"s": "-s",
"t": "-t",
"u": "-u",
"v": "-v",
"w": "-w",
"x": "-x",
"y": "-y",
"z": "-z",
"enter": "-enter",
"escape": "-escape",
"space": "-space",
"tab": "-tab",
"backspace": "-backspace",
"delete": "-delete",
"arrowup": "-arrowup",
"arrowdown": "-arrowdown",
"arrowleft": "-arrowleft",
"arrowright": "-arrowright",
"f1": "-f1",
"f2": "-f2",
"f3": "-f3",
"f4": "-f4",
"f5": "-f5",
"f6": "-f6",
"f7": "-f7",
"f8": "-f8",
"f9": "-f9",
"f10": "-f10",
"f11": "-f11",
"f12": "-f12",
"shift": "-shift",
"control": "-control",
"alt": "-alt",
"meta": "-meta",
"capslock": "-capslock",
"insert": "-insert",
"home": "-home",
"end": "-end",
"pageup": "-pageup",
"pagedown": "-pagedown",
"!": "-!",
"@": "-@",
"#": "-#",
"$": "-$",
"%": "-%",
"^": "-^",
"&": "-&",
"*": "-*",
"(": "-(",
")": "-)",
"-": "--",
"_": "-_",
"+": "-+",
"=": "-=",
"[": "-[",
"]": "-]",
"{": "-{",
"}": "-}",
";": "-;",
":": "-:",
"'": "-'",
"\"": "-\"",
",": "-,",
".": "-.",
"<": "-<",
">": "->",
"/": "-/",
"?": "-?",
"LEFT_STICK_X": "-LEFT_STICK_X",
"LEFT_STICK_Y": "-LEFT_STICK_Y",
"RIGHT_STICK_X": "-RIGHT_STICK_X",
"RIGHT_STICK_Y": "-RIGHT_STICK_Y",
"LEFT_TRIGGER": "-LEFT_TRIGGER",
"RIGHT_TRIGGER": "-RIGHT_TRIGGER",
"A_BUTTON": "-A_BUTTON",
"B_BUTTON": "-B_BUTTON",
"X_BUTTON": "-X_BUTTON",
"Y_BUTTON": "-Y_BUTTON",
"START_BUTTON": "-START_BUTTON",
"SELECT_BUTTON": "-SELECT_BUTTON",
"L1_BUTTON": "-L1_BUTTON",
"R1_BUTTON": "-R1_BUTTON",
"L2_BUTTON": "-L2_BUTTON",
"R2_BUTTON": "-R2_BUTTON",
"LEFT_THUMB_BUTTON": "-LEFT_THUMB_BUTTON",
"RIGHT_THUMB_BUTTON": "-RIGHT_THUMB_BUTTON",
"DPAD_UP": "-DPAD_UP",
"DPAD_DOWN": "-DPAD_DOWN",
"DPAD_LEFT": "-DPAD_LEFT",
"DPAD_RIGHT": "-DPAD_RIGHT"
}
let data1 = '';
for (let i = 0; i < Object.keys(data).length; i++) {
data1 = data1+Object.keys(data)[i]+'\n';
}
data1 = data1.slice(0, -1);
document.getElementById('box1').value = data1;
function startc(){
var data2 = document.getElementById('box1').value;
var data3 = document.getElementById('box2').value;
var data4 = data2.split('\n').map(function(line){ return line.split(/\n/g);});
var data5 = data3.split('\n').map(function(line){ return line.split(/\n/g);});
var data6 = new Map();
for (var i = 0; i < data4.length; i++) {
data6.set(data4[i], data5[i]);
}
var data7 = {};
data6.forEach(function(value, key) {
data7[key] = value[0];
});
data7 = JSON.stringify(data7,null,4);
document.getElementById('box3').value = data7;
navigator.clipboard.writeText(document.getElementById('box3').value);
console.log(data7);
}
</script>
</html>

View File

@ -0,0 +1,301 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"Restart": "Redémarrage",
"Pause": "Pause",
"Play": "Jouer",
"Save State": "Enregistrer l'état",
"Load State": "État de chargement",
"Control Settings": "Paramètres de contrôle",
"Cheats": "Astuces",
"Cache Manager": "Gestionnaire de cache",
"Export Save File": "Exporter le fichier de sauvegarde",
"Import Save File": "Importer le fichier de sauvegarde",
"Netplay": "Jeu en réseau",
"Mute": "Muet",
"Unmute": "Rétablir le son",
"Settings": "Paramètres",
"Enter Fullscreen": "Passer en mode plein écran",
"Exit Fullscreen": "Quitter le mode plein écran",
"Reset": "Réinitialiser",
"Clear": "Clair",
"Close": "Fermer",
"QUICK SAVE STATE": "ÉTAT DE SAUVEGARDE RAPIDE",
"QUICK LOAD STATE": "ÉTAT DE CHARGEMENT RAPIDE",
"CHANGE STATE SLOT": "CHANGER L'EMPLACEMENT D'ÉTAT",
"FAST FORWARD": "AVANCE RAPIDE",
"Player": "Joueur",
"Connected Gamepad": "Manette connectée",
"Gamepad": "Manette de jeu",
"Keyboard": "Clavier",
"Set": "Ensemble",
"Add Cheat": "Ajouter une triche",
"Create a Room": "Créer une pièce",
"Rooms": "Pièces",
"Start Game": "Démarrer jeu",
"Loading...": "Chargement...",
"Download Game Core": "Télécharger le noyau du jeu",
"Decompress Game Core": "Décompresser le noyau du jeu",
"Download Game Data": "Télécharger les données du jeu",
"Decompress Game Data": "Décompresser les données de jeu",
"Shaders": "Shaders",
"Disabled": "Désactivé",
"2xScaleHQ": "2xScaleHQ",
"4xScaleHQ": "4xScaleHQ",
"CRT easymode": "Mode facile CRT",
"CRT aperture": "Ouverture CRT",
"CRT geom": "géomètre CRT",
"CRT mattias": "Mattias CRT",
"FPS": "FPS",
"show": "montrer",
"hide": "cacher",
"Fast Forward Ratio": "Rapport d'avance rapide",
"Fast Forward": "Avance rapide",
"Enabled": "Activé",
"Save State Slot": "Enregistrer l'emplacement d'état",
"Save State Location": "Enregistrer l'emplacement de l'état",
"Download": "Télécharger",
"Keep in Browser": "Conserver dans le navigateur",
"Auto": "Auto",
"NTSC": "NTSC",
"PAL": "COPAIN",
"Dendy": "Dendy",
"8:7 PAR": "PAR 8:7",
"4:3": "4:3",
"Low": "Faible",
"High": "Haut",
"Very High": "Très haut",
"None": "Aucun",
"Player 1": "Joueur 1",
"Player 2": "Joueur 2",
"Both": "Les deux",
"SAVED STATE TO SLOT": "ÉTAT SAUVEGARDÉ DANS L'EMPLACEMENT",
"LOADED STATE FROM SLOT": "ÉTAT CHARGÉ À PARTIR DE L'EMPLACEMENT",
"SET SAVE STATE SLOT TO": "SET SAVE STATE SLOT TO",
"Network Error": "Erreur réseau",
"Submit": "Soumettre",
"Description": "Description",
"Code": "Code",
"Add Cheat Code": "Ajouter un code de triche",
"Leave Room": "Quitter la pièce",
"Password": "Mot de passe",
"Password (optional)": "Mot de passe (facultatif)",
"Max Players": "Le maximum de joueurs",
"Room Name": "Nom de la salle",
"Join": "Rejoindre",
"Player Name": "Nom de joueur",
"Set Player Name": "Définir le nom du joueur",
"Left Handed Mode": "Mode gaucher",
"Virtual Gamepad": "Manette de jeu virtuelle",
"Disk": "Disque",
"Press Keyboard": "Appuyez sur le clavier",
"INSERT COIN": "INSÉRER UNE PIÈCE",
"Remove": "Retirer",
"SAVE LOADED FROM BROWSER": "ENREGISTRER CHARGÉ À PARTIR DU NAVIGATEUR",
"SAVE SAVED TO BROWSER": "ENREGISTRER ENREGISTRÉ DANS LE NAVIGATEUR",
"Join the discord": "Rejoignez la discorde",
"View on GitHub": "Afficher sur GitHub",
"Failed to start game": "Impossible de démarrer le jeu",
"Download Game BIOS": "Télécharger le BIOS du jeu",
"Decompress Game BIOS": "Décompresser le BIOS du jeu",
"Download Game Parent": "Télécharger le jeu Parent",
"Decompress Game Parent": "Décompresser le jeu parent",
"Download Game Patch": "Télécharger le patch du jeu",
"Decompress Game Patch": "Décompresser le patch du jeu",
"Download Game State": "Télécharger l'état du jeu",
"Check console": "Vérifier la console",
"Error for site owner": "Erreur pour le propriétaire du site",
"EmulatorJS": "EmulatorJS",
"Clear All": "Tout effacer",
"Take Screenshot": "Prendre une capture d'écran",
"Quick Save": "Sauvegarde rapide",
"Quick Load": "Chargement rapide",
"REWIND": "REMBOBINER",
"Rewind Enabled (requires restart)": "Rewind activé (nécessite un redémarrage)",
"Rewind Granularity": "Rembobiner la granularité",
"Slow Motion Ratio": "Rapport de ralenti",
"Slow Motion": "Ralenti",
"Home": "Maison",
"EmulatorJS License": "Licence EmulatorJS",
"RetroArch License": "Licence RetroArch",
"SLOW MOTION": "RALENTI",
"A": "UN",
"B": "B",
"SELECT": "SÉLECTIONNER",
"START": "COMMENCER",
"UP": "EN HAUT",
"DOWN": "VERS LE BAS",
"LEFT": "GAUCHE",
"RIGHT": "DROITE",
"X": "X",
"Y": "Oui",
"L": "L",
"R": "R",
"Z": "Z",
"STICK UP": "BÂTON VERS LE HAUT",
"STICK DOWN": "COLLER",
"STICK LEFT": "BÂTON GAUCHE",
"STICK RIGHT": "COLLEZ À DROITE",
"C-PAD UP": "C-PAD VERS LE HAUT",
"C-PAD DOWN": "C-PAD EN BAS",
"C-PAD LEFT": "C-PAD GAUCHE",
"C-PAD RIGHT": "C-PAD DROIT",
"MICROPHONE": "MICROPHONE",
"BUTTON 1 / START": "BOUTON 1 / DÉMARRER",
"BUTTON 2": "BOUTON 2",
"BUTTON": "BOUTON",
"LEFT D-PAD UP": "D-PAD GAUCHE HAUT",
"LEFT D-PAD DOWN": "D-PAD GAUCHE BAS",
"LEFT D-PAD LEFT": "D-PAD GAUCHE GAUCHE",
"LEFT D-PAD RIGHT": "D-PAD GAUCHE DROITE",
"RIGHT D-PAD UP": "D-PAD DROIT VERS LE HAUT",
"RIGHT D-PAD DOWN": "D-PAD DROIT BAS",
"RIGHT D-PAD LEFT": "D-PAD DROIT GAUCHE",
"RIGHT D-PAD RIGHT": "DROITE D-PAD DROITE",
"C": "C",
"MODE": "MODE",
"FIRE": "FEU",
"RESET": "RÉINITIALISER",
"LEFT DIFFICULTY A": "GAUCHE DIFFICULTÉ A",
"LEFT DIFFICULTY B": "GAUCHE DIFFICULTÉ B",
"RIGHT DIFFICULTY A": "BONNE DIFFICULTÉ A",
"RIGHT DIFFICULTY B": "DROITE DIFFICULTE B",
"COLOR": "COULEUR",
"B/W": "N/B",
"PAUSE": "PAUSE",
"OPTION": "OPTION",
"OPTION 1": "OPTION 1",
"OPTION 2": "OPTION 2",
"L2": "L2",
"R2": "R2",
"L3": "L3",
"R3": "R3",
"L STICK UP": "L BÂTON VERS LE HAUT",
"L STICK DOWN": "L BÂTON VERS LE BAS",
"L STICK LEFT": "BÂTON L GAUCHE",
"L STICK RIGHT": "L BÂTON DROIT",
"R STICK UP": "R STICK UP",
"R STICK DOWN": "BÂTON R ENFONCÉ",
"R STICK LEFT": "R STICK GAUCHE",
"R STICK RIGHT": "BÂTON R DROIT",
"Start": "Commencer",
"Select": "Sélectionner",
"Fast": "Rapide",
"Slow": "Lent",
"a": "un",
"b": "b",
"c": "c",
"d": "d",
"e": "e",
"f": "F",
"g": "g",
"h": "h",
"i": "je",
"j": "j",
"k": "k",
"l": "je",
"m": "m",
"n": "n",
"o": "o",
"p": "p",
"q": "q",
"r": "r",
"s": "s",
"t": "t",
"u": "tu",
"v": "v",
"w": "w",
"x": "X",
"y": "y",
"z": "z",
"enter": "entrer",
"escape": "s'échapper",
"space": "espace",
"tab": "languette",
"backspace": "retour arrière",
"delete": "supprimer",
"arrowup": "flèche vers le haut",
"arrowdown": "flèche vers le bas",
"arrowleft": "flèche gauche",
"arrowright": "flèche droite",
"f1": "f1",
"f2": "f2",
"f3": "f3",
"f4": "f4",
"f5": "f5",
"f6": "f6",
"f7": "f7",
"f8": "f8",
"f9": "f9",
"f10": "f10",
"f11": "f11",
"f12": "f12",
"shift": "changement",
"control": "contrôle",
"alt": "autre",
"meta": "méta",
"capslock": "verrouillage des majuscules",
"insert": "insérer",
"home": "maison",
"end": "fin",
"pageup": "pageup",
"pagedown": "bas de page",
"!": "!",
"@": "@",
"#": "#",
"$": "$",
"%": "%",
"^": "^",
"&": "&",
"*": "*",
"(": "(",
")": ")",
"-": "-",
"_": "_",
"+": "+",
"=": "=",
"[": "[",
"]": "]",
"{": "{",
"}": "}",
";": ";",
":": ":",
"'": "'",
"\"": "\"",
",": ",",
".": ".",
"<": "<",
">": ">",
"/": "/",
"?": "?",
"LEFT_STICK_X": "LEFT_STICK_X",
"LEFT_STICK_Y": "LEFT_STICK_Y",
"RIGHT_STICK_X": "RIGHT_STICK_X",
"RIGHT_STICK_Y": "RIGHT_STICK_Y",
"LEFT_TRIGGER": "GÂCHETTE GAUCHE",
"RIGHT_TRIGGER": "RIGHT_TRIGGER",
"A_BUTTON": "UN BOUTON",
"B_BUTTON": "B_BUTTON",
"X_BUTTON": "X_BUTTON",
"Y_BUTTON": "Y_BUTTON",
"START_BUTTON": "BOUTON START",
"SELECT_BUTTON": "SELECT_BUTTON",
"L1_BUTTON": "L1_BUTTON",
"R1_BUTTON": "R1_BUTTON",
"L2_BUTTON": "L2_BUTTON",
"R2_BUTTON": "R2_BUTTON",
"LEFT_THUMB_BUTTON": "LEFT_THUMB_BUTTON",
"RIGHT_THUMB_BUTTON": "RIGHT_THUMB_BUTTON",
"DPAD_UP": "DPAD_UP",
"DPAD_DOWN": "DPAD_DOWN",
"DPAD_LEFT": "DPAD_LEFT",
"DPAD_RIGHT": "DPAD_RIGHT"
}

View File

@ -0,0 +1,301 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"Restart": "إعادة تشغيل",
"Pause": "يوقف",
"Play": "يلعب",
"Save State": "حالة الحفظ",
"Load State": "الدولة الحمل",
"Control Settings": "إعدادات التحكم",
"Cheats": "غش",
"Cache Manager": "مدير ذاكرة التخزين المؤقت",
"Export Save File": "تصدير حفظ الملف",
"Import Save File": "استيراد حفظ ملف",
"Netplay": "نيت بلاي",
"Mute": "صامت",
"Unmute": "إعادة الصوت",
"Settings": "إعدادات",
"Enter Fullscreen": "أدخل ملء الشاشة",
"Exit Fullscreen": "الخروج من الشاشة الكاملة",
"Reset": "إعادة ضبط",
"Clear": "واضح",
"Close": "يغلق",
"QUICK SAVE STATE": "حالة الحفظ السريع",
"QUICK LOAD STATE": "حالة التحميل السريع",
"CHANGE STATE SLOT": "تغيير فتحة الدولة",
"FAST FORWARD": "تقدم سريع",
"Player": "لاعب",
"Connected Gamepad": "Gamepad متصل",
"Gamepad": "لوحة الألعاب",
"Keyboard": "لوحة المفاتيح",
"Set": "تعيين",
"Add Cheat": "أضف الغش",
"Create a Room": "أنشئ غرفة",
"Rooms": "غرف",
"Start Game": "بدء اللعبة",
"Loading...": "تحميل...",
"Download Game Core": "تحميل Game Core",
"Decompress Game Core": "فك ضغط جوهر اللعبة",
"Download Game Data": "تنزيل بيانات اللعبة",
"Decompress Game Data": "فك ضغط بيانات اللعبة",
"Shaders": "شادر",
"Disabled": "عاجز",
"2xScaleHQ": "2xScaleHQ",
"4xScaleHQ": "4xScaleHQ",
"CRT easymode": "وضع CRT السهل",
"CRT aperture": "فتحة CRT",
"CRT geom": "CRT geom",
"CRT mattias": "CRT ماتياس",
"FPS": "FPS",
"show": "يعرض",
"hide": "يخفي",
"Fast Forward Ratio": "نسبة التقديم السريع",
"Fast Forward": "تقديم سريع",
"Enabled": "ممكن",
"Save State Slot": "حفظ الدولة فتحة",
"Save State Location": "حفظ موقع الدولة",
"Download": "تحميل",
"Keep in Browser": "ابق في المتصفح",
"Auto": "آلي",
"NTSC": "NTSC",
"PAL": "صديق",
"Dendy": "دندي",
"8:7 PAR": "8: 7 PAR",
"4:3": "4: 3",
"Low": "قليل",
"High": "عالي",
"Very High": "عالي جدا",
"None": "لا أحد",
"Player 1": "اللاعب 1",
"Player 2": "اللاعب 2",
"Both": "كلاهما",
"SAVED STATE TO SLOT": "الدولة المحفوظة في فتحة",
"LOADED STATE FROM SLOT": "حالة محملة من الفتحة",
"SET SAVE STATE SLOT TO": "تعيين فتحة حفظ الحالة إلى",
"Network Error": "خطأ في الشبكة",
"Submit": "يُقدِّم",
"Description": "وصف",
"Code": "شفرة",
"Add Cheat Code": "أضف كود الغش",
"Leave Room": "غادر الغرفة",
"Password": "كلمة المرور",
"Password (optional)": "كلمة المرور (اختياري)",
"Max Players": "ماكس لاعبين",
"Room Name": "اسم الغرفة",
"Join": "ينضم",
"Player Name": "اسم اللاعب",
"Set Player Name": "تعيين اسم اللاعب",
"Left Handed Mode": "وضع اليد اليسرى",
"Virtual Gamepad": "لوحة الألعاب الافتراضية",
"Disk": "القرص",
"Press Keyboard": "اضغط على لوحة المفاتيح",
"INSERT COIN": "إدراج عملة",
"Remove": "يزيل",
"SAVE LOADED FROM BROWSER": "وفر محملًا من المتصفح",
"SAVE SAVED TO BROWSER": "تم الحفظ في المتصفح",
"Join the discord": "انضم إلى الفتنة",
"View on GitHub": "عرض على جيثب",
"Failed to start game": "فشل بدء اللعبة",
"Download Game BIOS": "تنزيل Game BIOS",
"Decompress Game BIOS": "فك ضغط Game BIOS",
"Download Game Parent": "تحميل Game Parent",
"Decompress Game Parent": "فك ضغط لعبة الوالد",
"Download Game Patch": "تنزيل Game Patch",
"Decompress Game Patch": "فك ضغط لعبة التصحيح",
"Download Game State": "تنزيل Game State",
"Check console": "تحقق من وحدة التحكم",
"Error for site owner": "خطأ لمالك الموقع",
"EmulatorJS": "المحاكي JS",
"Clear All": "امسح الكل",
"Take Screenshot": "خد لقطة للشاشة",
"Quick Save": "الحفظ السريع",
"Quick Load": "تحميل سريع",
"REWIND": "الترجيع",
"Rewind Enabled (requires restart)": "تم تمكين الترجيع (يتطلب إعادة التشغيل)",
"Rewind Granularity": "الترجيع المحبب",
"Slow Motion Ratio": "نسبة الحركة البطيئة",
"Slow Motion": "حركة بطيئة",
"Home": "بيت",
"EmulatorJS License": "رخصة EmulatorJS",
"RetroArch License": "ترخيص RetroArch",
"SLOW MOTION": "حركة بطيئة",
"A": "أ",
"B": "ب",
"SELECT": "يختار",
"START": "يبدأ",
"UP": "أعلى",
"DOWN": "تحت",
"LEFT": "غادر",
"RIGHT": "يمين",
"X": "X",
"Y": "ص",
"L": "إل",
"R": "ص",
"Z": "ض",
"STICK UP": "التصق",
"STICK DOWN": "التصق اسفل",
"STICK LEFT": "العصا اليسرى",
"STICK RIGHT": "العصا لليمين",
"C-PAD UP": "C-PAD UP",
"C-PAD DOWN": "C-PAD لأسفل",
"C-PAD LEFT": "يسار C-PAD",
"C-PAD RIGHT": "حق C-PAD",
"MICROPHONE": "ميكروفون",
"BUTTON 1 / START": "زر 1 / بدء",
"BUTTON 2": "الزر 2",
"BUTTON": "زر",
"LEFT D-PAD UP": "اليسار D-PAD UP",
"LEFT D-PAD DOWN": "اليسار D-PAD لأسفل",
"LEFT D-PAD LEFT": "اليسار D-PAD اليسار",
"LEFT D-PAD RIGHT": "اليسار D-PAD لليمين",
"RIGHT D-PAD UP": "حق D-PAD UP",
"RIGHT D-PAD DOWN": "لليمين D-PAD لأسفل",
"RIGHT D-PAD LEFT": "اليمين D-PAD اليسار",
"RIGHT D-PAD RIGHT": "حق D-PAD لليمين",
"C": "ج",
"MODE": "وضع",
"FIRE": "نار",
"RESET": "إعادة ضبط",
"LEFT DIFFICULTY A": "الصعوبة اليسرى أ",
"LEFT DIFFICULTY B": "الصعوبة اليسرى ب",
"RIGHT DIFFICULTY A": "الصعوبة الصحيحة أ",
"RIGHT DIFFICULTY B": "الصعوبة الصحيحة ب",
"COLOR": "لون",
"B/W": "ب / دبليو",
"PAUSE": "يوقف",
"OPTION": "خيار",
"OPTION 1": "الخيار 1",
"OPTION 2": "الخيار 2",
"L2": "L2",
"R2": "R2",
"L3": "L3",
"R3": "R3",
"L STICK UP": "إلصاق",
"L STICK DOWN": "العصا لأسفل",
"L STICK LEFT": "L العصا اليسار",
"L STICK RIGHT": "L العصا لليمين",
"R STICK UP": "R التصق",
"R STICK DOWN": "R العصا لأسفل",
"R STICK LEFT": "R العصا اليسار",
"R STICK RIGHT": "R العصا لليمين",
"Start": "يبدأ",
"Select": "يختار",
"Fast": "سريع",
"Slow": "بطيء",
"a": "أ",
"b": "ب",
"c": "ج",
"d": "د",
"e": "ه",
"f": "F",
"g": "ز",
"h": "ح",
"i": "أنا",
"j": "ي",
"k": "ك",
"l": "ل",
"m": "م",
"n": "ن",
"o": "ا",
"p": "ص",
"q": "ف",
"r": "ص",
"s": "س",
"t": "ر",
"u": "ش",
"v": "الخامس",
"w": "ث",
"x": "x",
"y": "ذ",
"z": "ض",
"enter": "يدخل",
"escape": "يهرب",
"space": "فضاء",
"tab": "فاتورة غير مدفوعة",
"backspace": "مسافة للخلف",
"delete": "يمسح",
"arrowup": "السهم",
"arrowdown": "السهم للاسفل",
"arrowleft": "السهم",
"arrowright": "السهم",
"f1": "و 1",
"f2": "f2",
"f3": "f3",
"f4": "f4",
"f5": "f5",
"f6": "و 6",
"f7": "f7",
"f8": "و ٨",
"f9": "و 9",
"f10": "f10",
"f11": "و 11",
"f12": "f12",
"shift": "يحول",
"control": "يتحكم",
"alt": "بديل",
"meta": "ميتا",
"capslock": "caps lock",
"insert": "إدراج",
"home": "بيت",
"end": "نهاية",
"pageup": "pageup",
"pagedown": "اسفل الصفحة",
"!": "!",
"@": "@",
"#": "#",
"$": "$",
"%": "٪",
"^": "^",
"&": "&",
"*": "*",
"(": "(",
")": ")",
"-": "-",
"_": "_",
"+": "+",
"=": "=",
"[": "[",
"]": "]",
"{": "{",
"}": "}",
";": "؛",
":": ":",
"'": "\"",
"\"": "\"",
",": "و",
".": ".",
"<": "<",
">": ">",
"/": "/",
"?": "؟",
"LEFT_STICK_X": "LEFT_STICK_X",
"LEFT_STICK_Y": "LEFT_STICK_Y",
"RIGHT_STICK_X": "RIGHT_STICK_X",
"RIGHT_STICK_Y": "RIGHT_STICK_Y",
"LEFT_TRIGGER": "الزناد الأيسر",
"RIGHT_TRIGGER": "الزناد الأيمن",
"A_BUTTON": "الزر",
"B_BUTTON": "B_BUTTON",
"X_BUTTON": "X_BUTTON",
"Y_BUTTON": "Y_BUTTON",
"START_BUTTON": "START_BUTTON",
"SELECT_BUTTON": "حدد زر",
"L1_BUTTON": "L1_BUTTON",
"R1_BUTTON": "R1_BUTTON",
"L2_BUTTON": "L2_BUTTON",
"R2_BUTTON": "R2_BUTTON",
"LEFT_THUMB_BUTTON": "LEFT_THUMB_BUTTON",
"RIGHT_THUMB_BUTTON": "RIGHT_THUMB_BUTTON",
"DPAD_UP": "DPAD_UP",
"DPAD_DOWN": "DPAD_DOWN",
"DPAD_LEFT": "DPAD_LEFT",
"DPAD_RIGHT": "DPAD_RIGHT"
}

View File

@ -0,0 +1,301 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"Restart": "আবার শুরু",
"Pause": "বিরতি",
"Play": "খেলা",
"Save State": "রাষ্ট্র সংরক্ষণ",
"Load State": "লোড স্টেট",
"Control Settings": "নিয়ন্ত্রণ সেটিংস",
"Cheats": "প্রতারণা করে",
"Cache Manager": "ক্যাশে ম্যানেজার",
"Export Save File": "সেভ ফাইল রপ্তানি করুন",
"Import Save File": "সেভ ফাইল ইম্পোর্ট করুন",
"Netplay": "নেটপ্লে",
"Mute": "নিঃশব্দ",
"Unmute": "আনমিউট করুন",
"Settings": "সেটিংস",
"Enter Fullscreen": "পূর্ণ পর্দায়ই যান",
"Exit Fullscreen": "পূর্ণ পর্দা সরান",
"Reset": "রিসেট",
"Clear": "পরিষ্কার",
"Close": "বন্ধ",
"QUICK SAVE STATE": "দ্রুত সেভ স্টেট",
"QUICK LOAD STATE": "দ্রুত লোড অবস্থা",
"CHANGE STATE SLOT": "রাজ্য স্লট পরিবর্তন করুন",
"FAST FORWARD": "দ্রুত অগ্রগামী",
"Player": "প্লেয়ার",
"Connected Gamepad": "সংযুক্ত গেমপ্যাড",
"Gamepad": "গেমপ্যাড",
"Keyboard": "কীবোর্ড",
"Set": "সেট",
"Add Cheat": "প্রতারণা যোগ করুন",
"Create a Room": "একটি রুম তৈরি করুন",
"Rooms": "রুম",
"Start Game": "খেলা শুরু কর",
"Loading...": "লোড হচ্ছে...",
"Download Game Core": "গেম কোর ডাউনলোড করুন",
"Decompress Game Core": "ডিকম্প্রেস গেম কোর",
"Download Game Data": "গেম ডেটা ডাউনলোড করুন",
"Decompress Game Data": "গেম ডেটা ডিকম্প্রেস করুন",
"Shaders": "শেডার্স",
"Disabled": "অক্ষম",
"2xScaleHQ": "2xScaleHQ",
"4xScaleHQ": "4xScaleHQ",
"CRT easymode": "সিআরটি ইজিমোড",
"CRT aperture": "CRT অ্যাপারচার",
"CRT geom": "CRT geom",
"CRT mattias": "সিআরটি ম্যাটিয়াস",
"FPS": "FPS",
"show": "প্রদর্শন",
"hide": "লুকান",
"Fast Forward Ratio": "দ্রুত ফরোয়ার্ড অনুপাত",
"Fast Forward": "দ্রুত অগ্রগামী",
"Enabled": "সক্রিয়",
"Save State Slot": "রাজ্য স্লট সংরক্ষণ করুন",
"Save State Location": "রাজ্য অবস্থান সংরক্ষণ করুন",
"Download": "ডাউনলোড করুন",
"Keep in Browser": "ব্রাউজারে রাখুন",
"Auto": "অটো",
"NTSC": "এনটিএসসি",
"PAL": "অন্তরঙ্গ বন্ধু",
"Dendy": "ডেন্ডি",
"8:7 PAR": "8:7 PAR",
"4:3": "4:3",
"Low": "কম",
"High": "উচ্চ",
"Very High": "সুউচ্চ",
"None": "কোনোটিই নয়",
"Player 1": "খেলোয়াড় 1",
"Player 2": "প্লেয়ার 2",
"Both": "উভয়",
"SAVED STATE TO SLOT": "স্লটে রাজ্য সংরক্ষণ করা হয়েছে",
"LOADED STATE FROM SLOT": "স্লট থেকে রাজ্য লোড",
"SET SAVE STATE SLOT TO": "সেভ স্টেট স্লট সেট করুন",
"Network Error": "নেটওয়ার্ক ত্রুটি",
"Submit": "জমা দিন",
"Description": "বর্ণনা",
"Code": "কোড",
"Add Cheat Code": "চিট কোড যোগ করুন",
"Leave Room": "ছুটি রুম",
"Password": "পাসওয়ার্ড",
"Password (optional)": "পাসওয়ার্ড (ঐচ্ছিক)",
"Max Players": "সর্বোচ্চ খেলোয়াড়",
"Room Name": "রুমের নাম",
"Join": "যোগদান করুন",
"Player Name": "প্লেয়ারের নাম",
"Set Player Name": "প্লেয়ারের নাম সেট করুন",
"Left Handed Mode": "বাম হাতের মোড",
"Virtual Gamepad": "ভার্চুয়াল গেমপ্যাড",
"Disk": "ডিস্ক",
"Press Keyboard": "কীবোর্ড টিপুন",
"INSERT COIN": "মুদ্রা প্রবেশ করান",
"Remove": "অপসারণ",
"SAVE LOADED FROM BROWSER": "ব্রাউজার থেকে লোড সংরক্ষণ করুন",
"SAVE SAVED TO BROWSER": "ব্রাউজারে সংরক্ষণ করুন",
"Join the discord": "বিরোধে যোগ দিন",
"View on GitHub": "GitHub এ দেখুন",
"Failed to start game": "খেলা শুরু করতে ব্যর্থ",
"Download Game BIOS": "গেম BIOS ডাউনলোড করুন",
"Decompress Game BIOS": "গেম BIOS ডিকম্প্রেস করুন",
"Download Game Parent": "গেম প্যারেন্ট ডাউনলোড করুন",
"Decompress Game Parent": "ডিকম্প্রেস গেম প্যারেন্ট",
"Download Game Patch": "গেম প্যাচ ডাউনলোড করুন",
"Decompress Game Patch": "ডিকম্প্রেস গেম প্যাচ",
"Download Game State": "গেম স্টেট ডাউনলোড করুন",
"Check console": "কনসোল চেক করুন",
"Error for site owner": "সাইটের মালিকের জন্য ত্রুটি",
"EmulatorJS": "এমুলেটরজেএস",
"Clear All": "সব পরিষ্কার করে দাও",
"Take Screenshot": "স্ক্রিনশট নাও",
"Quick Save": "দ্রুত সংরক্ষণ",
"Quick Load": "দ্রুত লোড",
"REWIND": "রিওয়াইন্ড করুন",
"Rewind Enabled (requires restart)": "রিওয়াইন্ড সক্ষম (রিস্টার্ট প্রয়োজন)",
"Rewind Granularity": "রিওয়াইন্ড গ্রানুলারিটি",
"Slow Motion Ratio": "ধীর গতির অনুপাত",
"Slow Motion": "ধীর গতি",
"Home": "বাড়ি",
"EmulatorJS License": "এমুলেটরজেএস লাইসেন্স",
"RetroArch License": "রেট্রোআর্ক লাইসেন্স",
"SLOW MOTION": "ধীর গতি",
"A": "ক",
"B": "খ",
"SELECT": "নির্বাচন করুন",
"START": "শুরু",
"UP": "ইউপি",
"DOWN": "নিচে",
"LEFT": "বাম",
"RIGHT": "ডান",
"X": "এক্স",
"Y": "Y",
"L": "এল",
"R": "আর",
"Z": "জেড",
"STICK UP": "লেগে থাকা",
"STICK DOWN": "নিচে লাঠি",
"STICK LEFT": "স্টিক বাম",
"STICK RIGHT": "ডানে থাকুন",
"C-PAD UP": "সি-প্যাড ইউপি",
"C-PAD DOWN": "সি-প্যাড ডাউন",
"C-PAD LEFT": "সি-প্যাড বাম",
"C-PAD RIGHT": "সি-প্যাড ডান",
"MICROPHONE": "মাইক্রোফোন",
"BUTTON 1 / START": "বোতাম 1 / শুরু করুন",
"BUTTON 2": "বোতাম 2",
"BUTTON": "বোতাম",
"LEFT D-PAD UP": "বাম ডি-প্যাড আপ",
"LEFT D-PAD DOWN": "বাম ডি-প্যাড নিচে",
"LEFT D-PAD LEFT": "বাম ডি-প্যাড বাম",
"LEFT D-PAD RIGHT": "বাম ডি-প্যাড ডান",
"RIGHT D-PAD UP": "ডান ডি-প্যাড আপ",
"RIGHT D-PAD DOWN": "ডানদিকে ডি-প্যাড ডাউন",
"RIGHT D-PAD LEFT": "ডান ডি-প্যাড বাম",
"RIGHT D-PAD RIGHT": "ডান ডি-প্যাড ডান",
"C": "গ",
"MODE": "মোড",
"FIRE": "আগুন",
"RESET": "রিসেট",
"LEFT DIFFICULTY A": "বাম অসুবিধা ক",
"LEFT DIFFICULTY B": "বাম অসুবিধা বি",
"RIGHT DIFFICULTY A": "ডান অসুবিধা ক",
"RIGHT DIFFICULTY B": "সঠিক অসুবিধা বি",
"COLOR": "রঙ",
"B/W": "B/W",
"PAUSE": "বিরতি",
"OPTION": "বিকল্প",
"OPTION 1": "বিকল্প 1",
"OPTION 2": "বিকল্প 2",
"L2": "L2",
"R2": "R2",
"L3": "L3",
"R3": "R3",
"L STICK UP": "এল স্টিক আপ",
"L STICK DOWN": "এল স্টিক ডাউন",
"L STICK LEFT": "L স্টিক বাম",
"L STICK RIGHT": "L স্টিক ডান",
"R STICK UP": "আর স্টিক আপ",
"R STICK DOWN": "আর স্টিক ডাউন",
"R STICK LEFT": "R স্টিক বাম",
"R STICK RIGHT": "R স্টিক ডান",
"Start": "শুরু করুন",
"Select": "নির্বাচন করুন",
"Fast": "দ্রুত",
"Slow": "ধীর",
"a": "ক",
"b": "খ",
"c": "গ",
"d": "d",
"e": "e",
"f": "চ",
"g": "g",
"h": "জ",
"i": "i",
"j": "j",
"k": "k",
"l": "l",
"m": "মি",
"n": "n",
"o": "o",
"p": "পি",
"q": "q",
"r": "r",
"s": "s",
"t": "t",
"u": "u",
"v": "v",
"w": "w",
"x": "এক্স",
"y": "y",
"z": "z",
"enter": "প্রবেশ করা",
"escape": "পলায়ন",
"space": "স্থান",
"tab": "ট্যাব",
"backspace": "ব্যাকস্পেস",
"delete": "মুছে ফেলা",
"arrowup": "তীরচিহ্ন",
"arrowdown": "তীর নিচে",
"arrowleft": "তীর বাম",
"arrowright": "তীর ডান",
"f1": "f1",
"f2": "f2",
"f3": "f3",
"f4": "f4",
"f5": "f5",
"f6": "f6",
"f7": "f7",
"f8": "f8",
"f9": "f9",
"f10": "f10",
"f11": "f11",
"f12": "f12",
"shift": "স্থানান্তর",
"control": "নিয়ন্ত্রণ",
"alt": "alt",
"meta": "মেটা",
"capslock": "ক্যাপস লক",
"insert": "সন্নিবেশ",
"home": "বাড়ি",
"end": "শেষ",
"pageup": "উপরের পাতা",
"pagedown": "পৃষ্ঠা নিচে নামানো",
"!": "!",
"@": "@",
"#": "#",
"$": "$",
"%": "%",
"^": "^",
"&": "এবং",
"*": "*",
"(": "(",
")": ")",
"-": "-",
"_": "_",
"+": "+",
"=": "=",
"[": "[",
"]": "]",
"{": "{",
"}": "}",
";": ";",
":": ":",
"'": "'",
"\"": "\"",
",": ",",
".": ".",
"<": "<",
">": ">",
"/": "/",
"?": "?",
"LEFT_STICK_X": "LEFT_STICK_X",
"LEFT_STICK_Y": "LEFT_STICK_Y",
"RIGHT_STICK_X": "RIGHT_STICK_X",
"RIGHT_STICK_Y": "RIGHT_STICK_Y",
"LEFT_TRIGGER": "LEFT_TRIGGER",
"RIGHT_TRIGGER": "RIGHT_TRIGGER",
"A_BUTTON": "একটি বোতাম",
"B_BUTTON": "B_BUTTON",
"X_BUTTON": "X_BUTTON",
"Y_BUTTON": "Y_BUTTON",
"START_BUTTON": "শুরু বোতাম",
"SELECT_BUTTON": "SELECT_BUTTON",
"L1_BUTTON": "L1_BUTTON",
"R1_BUTTON": "R1_BUTTON",
"L2_BUTTON": "L2_BUTTON",
"R2_BUTTON": "R2_BUTTON",
"LEFT_THUMB_BUTTON": "LEFT_THUMB_BUTTON",
"RIGHT_THUMB_BUTTON": "RIGHT_THUMB_BUTTON",
"DPAD_UP": "DPAD_UP",
"DPAD_DOWN": "DPAD_DOWN",
"DPAD_LEFT": "DPAD_LEFT",
"DPAD_RIGHT": "DPAD_RIGHT"
}

View File

@ -0,0 +1,301 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"Restart": "Neu starten",
"Pause": "Pause",
"Play": "Spielen",
"Save State": "Sicherer Staat",
"Load State": "Ladezustand",
"Control Settings": "Kontrolleinstellungen",
"Cheats": "Betrüger",
"Cache Manager": "Cache-Manager",
"Export Save File": "Speichern Sie die Datei exportieren",
"Import Save File": "Speicherdatei importieren",
"Netplay": "Spiel am Netz",
"Mute": "Stumm",
"Unmute": "Stummschaltung aufheben",
"Settings": "Einstellungen",
"Enter Fullscreen": "Vollbildmodus aktivieren",
"Exit Fullscreen": "Beenden Sie den Vollbildmodus",
"Reset": "Zurücksetzen",
"Clear": "Klar",
"Close": "Schließen",
"QUICK SAVE STATE": "SCHNELLER SPEICHERENZUSTAND",
"QUICK LOAD STATE": "SCHNELLER LADEZUSTAND",
"CHANGE STATE SLOT": "STATUS-SLOT ÄNDERN",
"FAST FORWARD": "SCHNELLER VORLAUF",
"Player": "Spieler",
"Connected Gamepad": "Verbundenes Gamepad",
"Gamepad": "Gamepad",
"Keyboard": "Tastatur",
"Set": "Satz",
"Add Cheat": "Cheat hinzufügen",
"Create a Room": "Erstellen Sie einen Raum",
"Rooms": "Räume",
"Start Game": "Spiel beginnen",
"Loading...": "Wird geladen...",
"Download Game Core": "Laden Sie Game Core herunter",
"Decompress Game Core": "Game Core entpacken",
"Download Game Data": "Spieldaten herunterladen",
"Decompress Game Data": "Spieldaten entpacken",
"Shaders": "Shader",
"Disabled": "Deaktiviert",
"2xScaleHQ": "2xScaleHQ",
"4xScaleHQ": "4xScaleHQ",
"CRT easymode": "CRT-Easymode",
"CRT aperture": "CRT-Blende",
"CRT geom": "CRT-geom",
"CRT mattias": "CRT Mattias",
"FPS": "FPS",
"show": "zeigen",
"hide": "verstecken",
"Fast Forward Ratio": "Schnellvorlaufverhältnis",
"Fast Forward": "Schneller Vorlauf",
"Enabled": "Ermöglicht",
"Save State Slot": "Status-Slot speichern",
"Save State Location": "Bundeslandstandort speichern",
"Download": "Herunterladen",
"Keep in Browser": "Im Browser behalten",
"Auto": "Auto",
"NTSC": "NTSC",
"PAL": "KUMPEL",
"Dendy": "Dendy",
"8:7 PAR": "8:7 PAR",
"4:3": "4:3",
"Low": "Niedrig",
"High": "Hoch",
"Very High": "Sehr hoch",
"None": "Keiner",
"Player 1": "Spieler 1",
"Player 2": "Spieler 2",
"Both": "Beide",
"SAVED STATE TO SLOT": "STATUS FÜR SLOT GESPEICHERT",
"LOADED STATE FROM SLOT": "GELADENER STATUS VON SLOT",
"SET SAVE STATE SLOT TO": "SAVE STATE SLOT EINSTELLEN AUF",
"Network Error": "Netzwerkfehler",
"Submit": "Einreichen",
"Description": "Beschreibung",
"Code": "Code",
"Add Cheat Code": "Cheat-Code hinzufügen",
"Leave Room": "Zimmer verlassen",
"Password": "Passwort",
"Password (optional)": "Passwort (optional)",
"Max Players": "Maximale Spieleranzahl",
"Room Name": "Raumname",
"Join": "Verbinden",
"Player Name": "Spielername",
"Set Player Name": "Legen Sie den Spielernamen fest",
"Left Handed Mode": "Linkshänder-Modus",
"Virtual Gamepad": "Virtuelles Gamepad",
"Disk": "Scheibe",
"Press Keyboard": "Drücken Sie Tastatur",
"INSERT COIN": "MÜNZE EINWERFEN",
"Remove": "Entfernen",
"SAVE LOADED FROM BROWSER": "SPEICHERN VOM BROWSER GELADEN",
"SAVE SAVED TO BROWSER": "SPEICHERN IM BROWSER GESPEICHERT",
"Join the discord": "Treten Sie dem Discord bei",
"View on GitHub": "Auf GitHub ansehen",
"Failed to start game": "Das Spiel konnte nicht gestartet werden",
"Download Game BIOS": "Laden Sie das Spiel-BIOS herunter",
"Decompress Game BIOS": "Dekomprimieren Sie das Spiel-BIOS",
"Download Game Parent": "Laden Sie Game Parent herunter",
"Decompress Game Parent": "Dekomprimieren Sie das übergeordnete Spiel",
"Download Game Patch": "Laden Sie den Spiel-Patch herunter",
"Decompress Game Patch": "Dekomprimieren Sie den Spiel-Patch",
"Download Game State": "Spielstatus herunterladen",
"Check console": "Überprüfen Sie die Konsole",
"Error for site owner": "Fehler für Websitebesitzer",
"EmulatorJS": "EmulatorJS",
"Clear All": "Alles löschen",
"Take Screenshot": "Einen Screenshot machen",
"Quick Save": "Schnellspeichern",
"Quick Load": "Schnell laden",
"REWIND": "ZURÜCKSPULEN",
"Rewind Enabled (requires restart)": "Rücklauf aktiviert (Neustart erforderlich)",
"Rewind Granularity": "Granularität zurückspulen",
"Slow Motion Ratio": "Zeitlupenverhältnis",
"Slow Motion": "Zeitlupe",
"Home": "Heim",
"EmulatorJS License": "EmulatorJS-Lizenz",
"RetroArch License": "RetroArch-Lizenz",
"SLOW MOTION": "ZEITLUPE",
"A": "A",
"B": "B",
"SELECT": "WÄHLEN",
"START": "START",
"UP": "HOCH",
"DOWN": "RUNTER",
"LEFT": "LINKS",
"RIGHT": "RECHTS",
"X": "X",
"Y": "Y",
"L": "L",
"R": "R",
"Z": "Z",
"STICK UP": "Bleiben Sie dran",
"STICK DOWN": "HALTE DICH",
"STICK LEFT": "LINKS STEHEN",
"STICK RIGHT": "HALTEN SIE SICH NACH RECHTS",
"C-PAD UP": "C-PAD nach oben",
"C-PAD DOWN": "C-PAD NACH UNTEN",
"C-PAD LEFT": "C-PAD LINKS",
"C-PAD RIGHT": "C-PAD RECHTS",
"MICROPHONE": "MIKROFON",
"BUTTON 1 / START": "TASTE 1 / START",
"BUTTON 2": "TASTE 2",
"BUTTON": "TASTE",
"LEFT D-PAD UP": "LINKES D-PAD NACH OBEN",
"LEFT D-PAD DOWN": "LINKES D-PAD NACH UNTEN",
"LEFT D-PAD LEFT": "LINKES D-PAD LINKS",
"LEFT D-PAD RIGHT": "LINKES D-PAD RECHTS",
"RIGHT D-PAD UP": "RECHTES D-PAD NACH OBEN",
"RIGHT D-PAD DOWN": "RECHTES D-PAD NACH UNTEN",
"RIGHT D-PAD LEFT": "RECHTES D-PAD LINKS",
"RIGHT D-PAD RIGHT": "RECHTES D-PAD RECHTS",
"C": "C",
"MODE": "MODUS",
"FIRE": "FEUER",
"RESET": "ZURÜCKSETZEN",
"LEFT DIFFICULTY A": "SCHWIERIGKEIT LINKS A",
"LEFT DIFFICULTY B": "SCHWIERIGKEIT LINKS B",
"RIGHT DIFFICULTY A": "RECHTER SCHWIERIGKEIT A",
"RIGHT DIFFICULTY B": "RECHTER SCHWIERIGKEIT B",
"COLOR": "FARBE",
"B/W": "S/W",
"PAUSE": "PAUSE",
"OPTION": "MÖGLICHKEIT",
"OPTION 1": "OPTION 1",
"OPTION 2": "OPTION 2",
"L2": "L2",
"R2": "R2",
"L3": "L3",
"R3": "R3",
"L STICK UP": "L BLEIB DURCH",
"L STICK DOWN": "L HALTE DICH",
"L STICK LEFT": "L STICK LINKS",
"L STICK RIGHT": "L HALTE NACH RECHTS",
"R STICK UP": "R HALTEN SIE SICH AUF",
"R STICK DOWN": "R HALTEN SIE SICH NACH UNTEN",
"R STICK LEFT": "R STICK LINKS",
"R STICK RIGHT": "R STICK NACH RECHTS",
"Start": "Start",
"Select": "Wählen",
"Fast": "Schnell",
"Slow": "Langsam",
"a": "A",
"b": "B",
"c": "C",
"d": "D",
"e": "e",
"f": "F",
"g": "G",
"h": "H",
"i": "ich",
"j": "J",
"k": "k",
"l": "l",
"m": "M",
"n": "N",
"o": "Ö",
"p": "P",
"q": "Q",
"r": "R",
"s": "S",
"t": "T",
"u": "u",
"v": "v",
"w": "w",
"x": "X",
"y": "j",
"z": "z",
"enter": "eingeben",
"escape": "Flucht",
"space": "Raum",
"tab": "Tab",
"backspace": "Rücktaste",
"delete": "löschen",
"arrowup": "Pfeil nach oben",
"arrowdown": "Pfeil nach unten",
"arrowleft": "Pfeil nach links",
"arrowright": "Pfeil nach rechts",
"f1": "f1",
"f2": "f2",
"f3": "f3",
"f4": "f4",
"f5": "f5",
"f6": "f6",
"f7": "f7",
"f8": "f8",
"f9": "f9",
"f10": "f10",
"f11": "f11",
"f12": "f12",
"shift": "Schicht",
"control": "Kontrolle",
"alt": "alt",
"meta": "Meta",
"capslock": "Feststelltaste",
"insert": "einfügen",
"home": "heim",
"end": "Ende",
"pageup": "Seite nach oben",
"pagedown": "Bild nach unten",
"!": "!",
"@": "@",
"#": "#",
"$": "$",
"%": "%",
"^": "^",
"&": "&",
"*": "*",
"(": "(",
")": ")",
"-": "-",
"_": "_",
"+": "+",
"=": "=",
"[": "[",
"]": "]",
"{": "{",
"}": "}",
";": ";",
":": ":",
"'": "'",
"\"": "\"",
",": ",",
".": ".",
"<": "<",
">": ">",
"/": "/",
"?": "?",
"LEFT_STICK_X": "LEFT_STICK_X",
"LEFT_STICK_Y": "LEFT_STICK_Y",
"RIGHT_STICK_X": "RIGHT_STICK_X",
"RIGHT_STICK_Y": "RIGHT_STICK_Y",
"LEFT_TRIGGER": "LINKER TRIGGER",
"RIGHT_TRIGGER": "RIGHT_TRIGGER",
"A_BUTTON": "EIN KNOPF",
"B_BUTTON": "B_BUTTON",
"X_BUTTON": "X_BUTTON",
"Y_BUTTON": "Y_BUTTON",
"START_BUTTON": "START KNOPF",
"SELECT_BUTTON": "AUSWAHLKNOPF",
"L1_BUTTON": "L1_TASTE",
"R1_BUTTON": "R1_BUTTON",
"L2_BUTTON": "L2_TASTE",
"R2_BUTTON": "R2_BUTTON",
"LEFT_THUMB_BUTTON": "LEFT_THUMB_BUTTON",
"RIGHT_THUMB_BUTTON": "RIGHT_THUMB_BUTTON",
"DPAD_UP": "DPAD_UP",
"DPAD_DOWN": "DPAD_DOWN",
"DPAD_LEFT": "DPAD_LEFT",
"DPAD_RIGHT": "DPAD_RIGHT"
}

View File

@ -0,0 +1,301 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"Restart": "Επανεκκίνηση",
"Pause": "Παύση",
"Play": "Παίζω",
"Save State": "Save State",
"Load State": "Κατάσταση φόρτωσης",
"Control Settings": "Ρυθμίσεις ελέγχου",
"Cheats": "Απατεώνες",
"Cache Manager": "Διαχειριστής προσωρινής μνήμης",
"Export Save File": "Εξαγωγή Αποθήκευση αρχείου",
"Import Save File": "Εισαγωγή Αποθήκευση αρχείου",
"Netplay": "Netplay",
"Mute": "Βουβός",
"Unmute": "Κατάργηση σίγασης",
"Settings": "Ρυθμίσεις",
"Enter Fullscreen": "Εισέλθετε σε πλήρη οθόνη",
"Exit Fullscreen": "Έξοδος από την πλήρη οθόνη",
"Reset": "Επαναφορά",
"Clear": "Σαφή",
"Close": "Κλείσε",
"QUICK SAVE STATE": "ΓΡΗΓΟΡΗ ΑΠΟΘΗΚΕΥΣΗ ΚΑΤΑΣΤΑΣΗΣ",
"QUICK LOAD STATE": "ΚΑΤΑΣΤΑΣΗ ΓΡΗΓΟΡΗΣ ΦΟΡΤΩΣΗΣ",
"CHANGE STATE SLOT": "ΑΛΛΑΓΗ ΚΑΤΑΣΤΑΣΗΣ ΣΛΟΤ",
"FAST FORWARD": "ΓΡΗΓΟΡΗ ΠΡΟΩΘΗΣΗ",
"Player": "Παίχτης",
"Connected Gamepad": "Συνδεδεμένο Gamepad",
"Gamepad": "Gamepad",
"Keyboard": "Πληκτρολόγιο",
"Set": "Σειρά",
"Add Cheat": "Προσθήκη εξαπάτησης",
"Create a Room": "Δημιουργήστε ένα δωμάτιο",
"Rooms": "Δωμάτια",
"Start Game": "Ξεκίνα το παιχνίδι",
"Loading...": "Φόρτωση...",
"Download Game Core": "Κατεβάστε το Game Core",
"Decompress Game Core": "Αποσυμπιέστε τον πυρήνα του παιχνιδιού",
"Download Game Data": "Λήψη δεδομένων παιχνιδιού",
"Decompress Game Data": "Αποσυμπίεση δεδομένων παιχνιδιού",
"Shaders": "Shaders",
"Disabled": "άτομα με ειδικές ανάγκες",
"2xScaleHQ": "2xScaleHQ",
"4xScaleHQ": "4xScaleHQ",
"CRT easymode": "CRT easymode",
"CRT aperture": "Διάφραγμα CRT",
"CRT geom": "CRT γεωμ",
"CRT mattias": "CRT mattias",
"FPS": "FPS",
"show": "προβολή",
"hide": "κρύβω",
"Fast Forward Ratio": "Αναλογία Fast Forward",
"Fast Forward": "Γρήγορη προώθηση",
"Enabled": "Ενεργοποιημένο",
"Save State Slot": "Save State Slot",
"Save State Location": "Αποθήκευση τοποθεσίας κατάστασης",
"Download": "Κατεβάστε",
"Keep in Browser": "Διατήρηση στο πρόγραμμα περιήγησης",
"Auto": "Αυτο",
"NTSC": "NTSC",
"PAL": "ΦΙΛΑΡΑΚΟΣ",
"Dendy": "Dendy",
"8:7 PAR": "8:7 ΠΑΡ",
"4:3": "4:3",
"Low": "Χαμηλός",
"High": "Υψηλός",
"Very High": "Πολύ ψηλά",
"None": "Κανένας",
"Player 1": "Παίκτης 1",
"Player 2": "Παίκτης 2",
"Both": "Και τα δυο",
"SAVED STATE TO SLOT": "ΣΩΘΗΚΕ ΠΟΛΙΤΕΙΑ ΣΤΟ ΣΛΟΤ",
"LOADED STATE FROM SLOT": "ΦΟΡΤΩΜΕΝΗ ΚΑΤΑΣΤΑΣΗ ΑΠΟ ΣΛΟΤ",
"SET SAVE STATE SLOT TO": "ΡΥΘΜΙΣΗ ΑΠΟΘΗΚΕΥΣΗ ΚΑΤΑΣΤΑΣΗΣ ΣΤΟΙΧΗΣ ΣΤΟ",
"Network Error": "Σφάλμα δικτύου",
"Submit": "υποβάλλουν",
"Description": "Περιγραφή",
"Code": "Κώδικας",
"Add Cheat Code": "Προσθέστε τον κωδικό εξαπάτησης",
"Leave Room": "Έξοδος από το δωμάτιο",
"Password": "Κωδικός πρόσβασης",
"Password (optional)": "Κωδικός πρόσβασης (προαιρετικό)",
"Max Players": "Μέγιστος αριθμός παικτών",
"Room Name": "Ονομα δωματίου",
"Join": "Συμμετοχή",
"Player Name": "Ονομα παίκτη",
"Set Player Name": "Ορισμός ονόματος παίκτη",
"Left Handed Mode": "Λειτουργία Αριστερόχειρας",
"Virtual Gamepad": "Εικονικό Gamepad",
"Disk": "Δίσκος",
"Press Keyboard": "Πατήστε Πληκτρολόγιο",
"INSERT COIN": "ΕΙΣΑΓΕΤΕ ΝΟΜΙΣΜΑ",
"Remove": "Αφαιρώ",
"SAVE LOADED FROM BROWSER": "ΑΠΟΘΗΚΕΥΣΗ ΦΟΡΤΩΜΕΝΟΥ ΑΠΟ ΤΟ BROWSER",
"SAVE SAVED TO BROWSER": "ΑΠΟΘΗΚΕΥΣΗ ΑΠΟΘΗΚΕΥΤΗΚΕ ΣΤΟ BROWSER",
"Join the discord": "Συμμετάσχετε στη διχόνοια",
"View on GitHub": "Προβολή στο GitHub",
"Failed to start game": "Απέτυχε η έναρξη του παιχνιδιού",
"Download Game BIOS": "Κατεβάστε το παιχνίδι BIOS",
"Decompress Game BIOS": "Αποσυμπίεση του BIOS του παιχνιδιού",
"Download Game Parent": "Κατεβάστε το παιχνίδι Parent",
"Decompress Game Parent": "Αποσυμπίεση γονέα παιχνιδιού",
"Download Game Patch": "Κατεβάστε το Patch παιχνιδιού",
"Decompress Game Patch": "Αποσυμπιέστε το Patch παιχνιδιού",
"Download Game State": "Λήψη κατάστασης παιχνιδιού",
"Check console": "Ελέγξτε την κονσόλα",
"Error for site owner": "Σφάλμα για τον ιδιοκτήτη του ιστότοπου",
"EmulatorJS": "EmulatorJS",
"Clear All": "Τα καθαρίζω όλα",
"Take Screenshot": "Λήψη στιγμιότυπου οθόνης",
"Quick Save": "ΓΡΗΓΟΡΗ ΑΠΟΘΗΚΕΥΣΗ",
"Quick Load": "Γρήγορη φόρτωση",
"REWIND": "ΠΙΣΩ ΠΙΣΩ",
"Rewind Enabled (requires restart)": "Το Rewind Enabled (απαιτεί επανεκκίνηση)",
"Rewind Granularity": "Rewind Granularity",
"Slow Motion Ratio": "Αναλογία αργής κίνησης",
"Slow Motion": "Αργή κίνηση",
"Home": "Σπίτι",
"EmulatorJS License": "Άδεια EmulatorJS",
"RetroArch License": "Άδεια RetroArch",
"SLOW MOTION": "ΑΡΓΗ ΚΙΝΗΣΗ",
"A": "ΕΝΑ",
"B": "σι",
"SELECT": "ΕΠΙΛΕΓΩ",
"START": "ΑΡΧΗ",
"UP": "ΠΑΝΩ",
"DOWN": "ΚΑΤΩ",
"LEFT": "ΑΡΙΣΤΕΡΑ",
"RIGHT": "ΣΩΣΤΑ",
"X": "Χ",
"Y": "Υ",
"L": "μεγάλο",
"R": "R",
"Z": "Ζ",
"STICK UP": "ΜΕΝΩ ΠΙΣΤΟΣ ΣΕ ΚΑΤΙ",
"STICK DOWN": "ΚΟΛΛΗΤΕ ΚΑΤΩ",
"STICK LEFT": "ΚΟΛΛΑ ΑΡΙΣΤΕΡΑ",
"STICK RIGHT": "ΚΟΛΛΗ ΣΩΣΤΟ",
"C-PAD UP": "C-PAD UP",
"C-PAD DOWN": "C-PAD DOWN",
"C-PAD LEFT": "C-PAD ΑΡΙΣΤΕΡΑ",
"C-PAD RIGHT": "C-PAD ΔΕΞΙΑ",
"MICROPHONE": "ΜΙΚΡΟΦΩΝΟ",
"BUTTON 1 / START": "ΚΟΥΜΠΙ 1 / ΕΝΑΡΞΗ",
"BUTTON 2": "ΚΟΥΜΠΙ 2",
"BUTTON": "ΚΟΥΜΠΙ",
"LEFT D-PAD UP": "ΑΡΙΣΤΕΡΟ D-PAD ΕΠΑΝΩ",
"LEFT D-PAD DOWN": "ΑΡΙΣΤΕΡΟ D-PAD ΚΑΤΩ",
"LEFT D-PAD LEFT": "ΑΡΙΣΤΕΡΟ D-PAD ΑΡΙΣΤΕΡΑ",
"LEFT D-PAD RIGHT": "ΑΡΙΣΤΕΡΟ D-PAD ΔΕΞΙΑ",
"RIGHT D-PAD UP": "ΔΕΞΙ D-PAD UP",
"RIGHT D-PAD DOWN": "ΔΕΞΙΟ D-PAD ΚΑΤΩ",
"RIGHT D-PAD LEFT": "ΔΕΞΙ D-PAD ΑΡΙΣΤΕΡΑ",
"RIGHT D-PAD RIGHT": "ΔΕΞΙΟ D-PAD ΔΕΞΙΑ",
"C": "ντο",
"MODE": "ΤΡΟΠΟΣ",
"FIRE": "ΦΩΤΙΑ",
"RESET": "ΕΠΑΝΑΦΟΡΑ",
"LEFT DIFFICULTY A": "ΑΡΙΣΤΕΡΑ ΔΥΣΚΟΛΙΑ Α",
"LEFT DIFFICULTY B": "ΑΡΙΣΤΕΡΑ ΔΥΣΚΟΛΙΑ Β",
"RIGHT DIFFICULTY A": "ΣΩΣΤΗ ΔΥΣΚΟΛΙΑ Α",
"RIGHT DIFFICULTY B": "ΣΩΣΤΗ ΔΥΣΚΟΛΙΑ Β",
"COLOR": "ΧΡΩΜΑ",
"B/W": "Β/Δ",
"PAUSE": "ΠΑΥΣΗ",
"OPTION": "ΕΠΙΛΟΓΗ",
"OPTION 1": "ΕΠΙΛΟΓΗ 1",
"OPTION 2": "ΕΠΙΛΟΓΗ 2",
"L2": "L2",
"R2": "R2",
"L3": "L3",
"R3": "R3",
"L STICK UP": "L ΚΟΛΛΗΣΗ",
"L STICK DOWN": "L ΚΟΛΛΗΤΕ ΚΑΤΩ",
"L STICK LEFT": "L STICK ΑΡΙΣΤΕΡΑ",
"L STICK RIGHT": "L ΚΟΛΛΑ ΔΕΞΙΑ",
"R STICK UP": "R ΚΟΛΛΗΣΗ",
"R STICK DOWN": "R ΚΟΛΛΗΤΕ ΚΑΤΩ",
"R STICK LEFT": "R STICK ΑΡΙΣΤΕΡΑ",
"R STICK RIGHT": "R ΚΟΛΛΑ ΔΕΞΙΑ",
"Start": "Αρχή",
"Select": "Επιλέγω",
"Fast": "Γρήγορα",
"Slow": "Αργός",
"a": "ένα",
"b": "σι",
"c": "ντο",
"d": "ρε",
"e": "μι",
"f": "φά",
"g": "σολ",
"h": "η",
"i": "Εγώ",
"j": "ι",
"k": "κ",
"l": "μεγάλο",
"m": "Μ",
"n": "n",
"o": "ο",
"p": "Π",
"q": "q",
"r": "r",
"s": "μικρό",
"t": "t",
"u": "u",
"v": "v",
"w": "w",
"x": "Χ",
"y": "y",
"z": "z",
"enter": "εισαγω",
"escape": "διαφυγή",
"space": "χώρος",
"tab": "αυτί",
"backspace": "backspace",
"delete": "διαγράφω",
"arrowup": "βέλος επάνω",
"arrowdown": "βέλος προς τα κάτω",
"arrowleft": "αριστερό βέλος",
"arrowright": "βέλος δεξιά",
"f1": "στ1",
"f2": "στ2",
"f3": "f3",
"f4": "f4",
"f5": "f5",
"f6": "στ6",
"f7": "f7",
"f8": "f8",
"f9": "f9",
"f10": "f10",
"f11": "f11",
"f12": "f12",
"shift": "βάρδια",
"control": "έλεγχος",
"alt": "alt",
"meta": "μετα",
"capslock": "κεφαλαία",
"insert": "εισάγετε",
"home": "Σπίτι",
"end": "τέλος",
"pageup": "σελίδα προς τα πάνω",
"pagedown": "σελίδα κάτω",
"!": "!",
"@": "@",
"#": "#",
"$": "$",
"%": "%",
"^": "^",
"&": "&",
"*": "*",
"(": "(",
")": ")",
"-": "-",
"_": "_",
"+": "+",
"=": "=",
"[": "[",
"]": "]",
"{": "{",
"}": "}",
";": ";",
":": ":",
"'": "'",
"\"": "\"",
",": ",",
".": ".",
"<": "<",
">": ">",
"/": "/",
"?": "?",
"LEFT_STICK_X": "LEFT_STICK_X",
"LEFT_STICK_Y": "LEFT_STICK_Y",
"RIGHT_STICK_X": "RIGHT_STICK_X",
"RIGHT_STICK_Y": "RIGHT_STICK_Y",
"LEFT_TRIGGER": "LEFT_TRIGGER",
"RIGHT_TRIGGER": "RIGHT_TRIGGER",
"A_BUTTON": "ΕΝΑ ΚΟΥΜΠΙ",
"B_BUTTON": "B_BUTTON",
"X_BUTTON": "X_BUTTON",
"Y_BUTTON": "Y_BUTTON",
"START_BUTTON": "ΚΟΥΜΠΙ ΕΚΚΙΝΗΣΗΣ",
"SELECT_BUTTON": "SELECT_BUTTON",
"L1_BUTTON": "L1_BUTTON",
"R1_BUTTON": "R1_BUTTON",
"L2_BUTTON": "L2_BUTTON",
"R2_BUTTON": "R2_BUTTON",
"LEFT_THUMB_BUTTON": "LEFT_THUMB_BUTTON",
"RIGHT_THUMB_BUTTON": "RIGHT_THUMB_BUTTON",
"DPAD_UP": "DPAD_UP",
"DPAD_DOWN": "DPAD_DOWN",
"DPAD_LEFT": "DPAD_LEFT",
"DPAD_RIGHT": "DPAD_RIGHT"
}

View File

@ -0,0 +1,301 @@
{
"0": "-0",
"1": "-1",
"2": "-2",
"3": "-3",
"4": "-4",
"5": "-5",
"6": "-6",
"7": "-7",
"8": "-8",
"9": "-9",
"Restart": "-Restart",
"Pause": "-Pause",
"Play": "-Play",
"Save State": "-Save State",
"Load State": "-Load State",
"Control Settings": "-Control Settings",
"Cheats": "-Cheats",
"Cache Manager": "-Cache Manager",
"Export Save File": "-Export Save File",
"Import Save File": "-Import Save File",
"Netplay": "-Netplay",
"Mute": "-Mute",
"Unmute": "-Unmute",
"Settings": "-Settings",
"Enter Fullscreen": "-Enter Fullscreen",
"Exit Fullscreen": "-Exit Fullscreen",
"Reset": "-Reset",
"Clear": "-Clear",
"Close": "-Close",
"QUICK SAVE STATE": "-QUICK SAVE STATE",
"QUICK LOAD STATE": "-QUICK LOAD STATE",
"CHANGE STATE SLOT": "-CHANGE STATE SLOT",
"FAST FORWARD": "-FAST FORWARD",
"Player": "-Player",
"Connected Gamepad": "-Connected Gamepad",
"Gamepad": "-Gamepad",
"Keyboard": "-Keyboard",
"Set": "-Set",
"Add Cheat": "-Add Cheat",
"Create a Room": "-Create a Room",
"Rooms": "-Rooms",
"Start Game": "-Start Game",
"Loading...": "-Loading...",
"Download Game Core": "-Download Game Core",
"Decompress Game Core": "-Decompress Game Core",
"Download Game Data": "-Download Game Data",
"Decompress Game Data": "-Decompress Game Data",
"Shaders": "-Shaders",
"Disabled": "-Disabled",
"2xScaleHQ": "-2xScaleHQ",
"4xScaleHQ": "-4xScaleHQ",
"CRT easymode": "-CRT easymode",
"CRT aperture": "-CRT aperture",
"CRT geom": "-CRT geom",
"CRT mattias": "-CRT mattias",
"FPS": "-FPS",
"show": "-show",
"hide": "-hide",
"Fast Forward Ratio": "-Fast Forward Ratio",
"Fast Forward": "-Fast Forward",
"Enabled": "-Enabled",
"Save State Slot": "-Save State Slot",
"Save State Location": "-Save State Location",
"Download": "-Download",
"Keep in Browser": "-Keep in Browser",
"Auto": "-Auto",
"NTSC": "-NTSC",
"PAL": "-PAL",
"Dendy": "-Dendy",
"8:7 PAR": "-8:7 PAR",
"4:3": "-4:3",
"Low": "-Low",
"High": "-High",
"Very High": "-Very High",
"None": "-None",
"Player 1": "-Player 1",
"Player 2": "-Player 2",
"Both": "-Both",
"SAVED STATE TO SLOT": "-SAVED STATE TO SLOT",
"LOADED STATE FROM SLOT": "-LOADED STATE FROM SLOT",
"SET SAVE STATE SLOT TO": "-SET SAVE STATE SLOT TO",
"Network Error": "-Network Error",
"Submit": "-Submit",
"Description": "-Description",
"Code": "-Code",
"Add Cheat Code": "-Add Cheat Code",
"Leave Room": "-Leave Room",
"Password": "-Password",
"Password (optional)": "-Password (optional)",
"Max Players": "-Max Players",
"Room Name": "-Room Name",
"Join": "-Join",
"Player Name": "-Player Name",
"Set Player Name": "-Set Player Name",
"Left Handed Mode": "-Left Handed Mode",
"Virtual Gamepad": "-Virtual Gamepad",
"Disk": "-Disk",
"Press Keyboard": "-Press Keyboard",
"INSERT COIN": "-INSERT COIN",
"Remove": "-Remove",
"SAVE LOADED FROM BROWSER": "-SAVE LOADED FROM BROWSER",
"SAVE SAVED TO BROWSER": "-SAVE SAVED TO BROWSER",
"Join the discord": "-Join the discord",
"View on GitHub": "-View on GitHub",
"Failed to start game": "-Failed to start game",
"Download Game BIOS": "-Download Game BIOS",
"Decompress Game BIOS": "-Decompress Game BIOS",
"Download Game Parent": "-Download Game Parent",
"Decompress Game Parent": "-Decompress Game Parent",
"Download Game Patch": "-Download Game Patch",
"Decompress Game Patch": "-Decompress Game Patch",
"Download Game State": "-Download Game State",
"Check console": "-Check console",
"Error for site owner": "-Error for site owner",
"EmulatorJS": "-EmulatorJS",
"Clear All": "-Clear All",
"Take Screenshot": "-Take Screenshot",
"Quick Save": "-Quick Save",
"Quick Load": "-Quick Load",
"REWIND": "-REWIND",
"Rewind Enabled (requires restart)": "-Rewind Enabled (requires restart)",
"Rewind Granularity": "-Rewind Granularity",
"Slow Motion Ratio": "-Slow Motion Ratio",
"Slow Motion": "-Slow Motion",
"Home": "-Home",
"EmulatorJS License": "-EmulatorJS License",
"RetroArch License": "-RetroArch License",
"SLOW MOTION": "-SLOW MOTION",
"A": "-A",
"B": "-B",
"SELECT": "-SELECT",
"START": "-START",
"UP": "-UP",
"DOWN": "-DOWN",
"LEFT": "-LEFT",
"RIGHT": "-RIGHT",
"X": "-X",
"Y": "-Y",
"L": "-L",
"R": "-R",
"Z": "-Z",
"STICK UP": "-STICK UP",
"STICK DOWN": "-STICK DOWN",
"STICK LEFT": "-STICK LEFT",
"STICK RIGHT": "-STICK RIGHT",
"C-PAD UP": "-C-PAD UP",
"C-PAD DOWN": "-C-PAD DOWN",
"C-PAD LEFT": "-C-PAD LEFT",
"C-PAD RIGHT": "-C-PAD RIGHT",
"MICROPHONE": "-MICROPHONE",
"BUTTON 1 / START": "-BUTTON 1 / START",
"BUTTON 2": "-BUTTON 2",
"BUTTON": "-BUTTON",
"LEFT D-PAD UP": "-LEFT D-PAD UP",
"LEFT D-PAD DOWN": "-LEFT D-PAD DOWN",
"LEFT D-PAD LEFT": "-LEFT D-PAD LEFT",
"LEFT D-PAD RIGHT": "-LEFT D-PAD RIGHT",
"RIGHT D-PAD UP": "-RIGHT D-PAD UP",
"RIGHT D-PAD DOWN": "-RIGHT D-PAD DOWN",
"RIGHT D-PAD LEFT": "-RIGHT D-PAD LEFT",
"RIGHT D-PAD RIGHT": "-RIGHT D-PAD RIGHT",
"C": "-C",
"MODE": "-MODE",
"FIRE": "-FIRE",
"RESET": "-RESET",
"LEFT DIFFICULTY A": "-LEFT DIFFICULTY A",
"LEFT DIFFICULTY B": "-LEFT DIFFICULTY B",
"RIGHT DIFFICULTY A": "-RIGHT DIFFICULTY A",
"RIGHT DIFFICULTY B": "-RIGHT DIFFICULTY B",
"COLOR": "-COLOR",
"B/W": "-B/W",
"PAUSE": "-PAUSE",
"OPTION": "-OPTION",
"OPTION 1": "-OPTION 1",
"OPTION 2": "-OPTION 2",
"L2": "-L2",
"R2": "-R2",
"L3": "-L3",
"R3": "-R3",
"L STICK UP": "-L STICK UP",
"L STICK DOWN": "-L STICK DOWN",
"L STICK LEFT": "-L STICK LEFT",
"L STICK RIGHT": "-L STICK RIGHT",
"R STICK UP": "-R STICK UP",
"R STICK DOWN": "-R STICK DOWN",
"R STICK LEFT": "-R STICK LEFT",
"R STICK RIGHT": "-R STICK RIGHT",
"Start": "-Start",
"Select": "-Select",
"Fast": "-Fast",
"Slow": "-Slow",
"a": "-a",
"b": "-b",
"c": "-c",
"d": "-d",
"e": "-e",
"f": "-f",
"g": "-g",
"h": "-h",
"i": "-i",
"j": "-j",
"k": "-k",
"l": "-l",
"m": "-m",
"n": "-n",
"o": "-o",
"p": "-p",
"q": "-q",
"r": "-r",
"s": "-s",
"t": "-t",
"u": "-u",
"v": "-v",
"w": "-w",
"x": "-x",
"y": "-y",
"z": "-z",
"enter": "-enter",
"escape": "-escape",
"space": "-space",
"tab": "-tab",
"backspace": "-backspace",
"delete": "-delete",
"arrowup": "-arrowup",
"arrowdown": "-arrowdown",
"arrowleft": "-arrowleft",
"arrowright": "-arrowright",
"f1": "-f1",
"f2": "-f2",
"f3": "-f3",
"f4": "-f4",
"f5": "-f5",
"f6": "-f6",
"f7": "-f7",
"f8": "-f8",
"f9": "-f9",
"f10": "-f10",
"f11": "-f11",
"f12": "-f12",
"shift": "-shift",
"control": "-control",
"alt": "-alt",
"meta": "-meta",
"capslock": "-capslock",
"insert": "-insert",
"home": "-home",
"end": "-end",
"pageup": "-pageup",
"pagedown": "-pagedown",
"!": "-!",
"@": "-@",
"#": "-#",
"$": "-$",
"%": "-%",
"^": "-^",
"&": "-&",
"*": "-*",
"(": "-(",
")": "-)",
"-": "--",
"_": "-_",
"+": "-+",
"=": "-=",
"[": "-[",
"]": "-]",
"{": "-{",
"}": "-}",
";": "-;",
":": "-:",
"'": "-'",
"\"": "-\"",
",": "-,",
".": "-.",
"<": "-<",
">": "->",
"/": "-/",
"?": "-?",
"LEFT_STICK_X": "-LEFT_STICK_X",
"LEFT_STICK_Y": "-LEFT_STICK_Y",
"RIGHT_STICK_X": "-RIGHT_STICK_X",
"RIGHT_STICK_Y": "-RIGHT_STICK_Y",
"LEFT_TRIGGER": "-LEFT_TRIGGER",
"RIGHT_TRIGGER": "-RIGHT_TRIGGER",
"A_BUTTON": "-A_BUTTON",
"B_BUTTON": "-B_BUTTON",
"X_BUTTON": "-X_BUTTON",
"Y_BUTTON": "-Y_BUTTON",
"START_BUTTON": "-START_BUTTON",
"SELECT_BUTTON": "-SELECT_BUTTON",
"L1_BUTTON": "-L1_BUTTON",
"R1_BUTTON": "-R1_BUTTON",
"L2_BUTTON": "-L2_BUTTON",
"R2_BUTTON": "-R2_BUTTON",
"LEFT_THUMB_BUTTON": "-LEFT_THUMB_BUTTON",
"RIGHT_THUMB_BUTTON": "-RIGHT_THUMB_BUTTON",
"DPAD_UP": "-DPAD_UP",
"DPAD_DOWN": "-DPAD_DOWN",
"DPAD_LEFT": "-DPAD_LEFT",
"DPAD_RIGHT": "-DPAD_RIGHT"
}

View File

@ -0,0 +1,301 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"Restart": "Reanudar",
"Pause": "Pausa",
"Play": "Jugar",
"Save State": "Guardar Estado",
"Load State": "Estado de carga",
"Control Settings": "Ajustes de control",
"Cheats": "trucos",
"Cache Manager": "Administrador de caché",
"Export Save File": "Exportar archivo guardado",
"Import Save File": "Importar archivo guardado",
"Netplay": "Juego de red",
"Mute": "Silenciar",
"Unmute": "No silenciar",
"Settings": "Ajustes",
"Enter Fullscreen": "Ingrese a pantalla completa",
"Exit Fullscreen": "Salir de pantalla completa",
"Reset": "Reiniciar",
"Clear": "Claro",
"Close": "Cerca",
"QUICK SAVE STATE": "ESTADO DE GUARDADO RÁPIDO",
"QUICK LOAD STATE": "ESTADO DE CARGA RÁPIDA",
"CHANGE STATE SLOT": "CAMBIAR ESTADO SLOT",
"FAST FORWARD": "AVANCE RÁPIDO",
"Player": "Jugador",
"Connected Gamepad": "Mando conectado",
"Gamepad": "mando",
"Keyboard": "Teclado",
"Set": "Colocar",
"Add Cheat": "Añadir truco",
"Create a Room": "Crear una habitación",
"Rooms": "Habitaciones",
"Start Game": "Empezar juego",
"Loading...": "Cargando...",
"Download Game Core": "Descargar Game Core",
"Decompress Game Core": "Descomprimir Game Core",
"Download Game Data": "Descargar datos del juego",
"Decompress Game Data": "Descomprimir datos del juego",
"Shaders": "sombreadores",
"Disabled": "Desactivado",
"2xScaleHQ": "2xEscalaHQ",
"4xScaleHQ": "4xEscalaHQ",
"CRT easymode": "modo fácil CRT",
"CRT aperture": "Apertura de tubo de rayos catódicos",
"CRT geom": "geometría CRT",
"CRT mattias": "CRT mattias",
"FPS": "FPS",
"show": "espectáculo",
"hide": "esconder",
"Fast Forward Ratio": "Relación de avance rápido",
"Fast Forward": "Avance rápido",
"Enabled": "Activado",
"Save State Slot": "Guardar ranura de estado",
"Save State Location": "Guardar ubicación de estado",
"Download": "Descargar",
"Keep in Browser": "Mantener en el navegador",
"Auto": "Auto",
"NTSC": "NTSC",
"PAL": "CAMARADA",
"Dendy": "Dendy",
"8:7 PAR": "8:7 PAR",
"4:3": "4:3",
"Low": "Bajo",
"High": "Alto",
"Very High": "Muy alto",
"None": "Ninguno",
"Player 1": "Jugador 1",
"Player 2": "jugador 2",
"Both": "Ambos",
"SAVED STATE TO SLOT": "ESTADO GUARDADO EN RANURA",
"LOADED STATE FROM SLOT": "ESTADO CARGADO DESDE LA RANURA",
"SET SAVE STATE SLOT TO": "ESTABLECER GUARDAR RANURA DE ESTADO EN",
"Network Error": "Error de red",
"Submit": "Entregar",
"Description": "Descripción",
"Code": "Código",
"Add Cheat Code": "Agregar código de trucos",
"Leave Room": "Dejar la habitación",
"Password": "Contraseña",
"Password (optional)": "Contraseña (opcional)",
"Max Players": "Jugadores máximos",
"Room Name": "Nombre de la habitación",
"Join": "Unirse",
"Player Name": "Nombre del jugador",
"Set Player Name": "Establecer nombre de jugador",
"Left Handed Mode": "Modo para zurdos",
"Virtual Gamepad": "Mando virtual",
"Disk": "Disco",
"Press Keyboard": "Oprimá teclado",
"INSERT COIN": "INSERTE MONEDA",
"Remove": "Eliminar",
"SAVE LOADED FROM BROWSER": "GUARDAR CARGADO DESDE EL NAVEGADOR",
"SAVE SAVED TO BROWSER": "GUARDAR GUARDADO EN EL NAVEGADOR",
"Join the discord": "Únete a la discordia",
"View on GitHub": "Ver en GitHub",
"Failed to start game": "No se pudo iniciar el juego",
"Download Game BIOS": "Descargar BIOS del juego",
"Decompress Game BIOS": "Descomprimir BIOS del juego",
"Download Game Parent": "Descargar juego para padres",
"Decompress Game Parent": "Padre del juego de descompresión",
"Download Game Patch": "Descargar el parche del juego",
"Decompress Game Patch": "Parche de descompresión del juego",
"Download Game State": "Descargar estado del juego",
"Check console": "Comprobar consola",
"Error for site owner": "Error para el propietario del sitio",
"EmulatorJS": "EmuladorJS",
"Clear All": "Limpiar todo",
"Take Screenshot": "Tomar captura de pantalla",
"Quick Save": "Guardado rápido",
"Quick Load": "Carga rápida",
"REWIND": "REBOBINAR",
"Rewind Enabled (requires restart)": "Rebobinado habilitado (requiere reinicio)",
"Rewind Granularity": "Granularidad de rebobinado",
"Slow Motion Ratio": "Relación de cámara lenta",
"Slow Motion": "Camara lenta",
"Home": "Hogar",
"EmulatorJS License": "Licencia EmulatorJS",
"RetroArch License": "Licencia RetroArch",
"SLOW MOTION": "CAMARA LENTA",
"A": "A",
"B": "B",
"SELECT": "SELECCIONAR",
"START": "COMENZAR",
"UP": "ARRIBA",
"DOWN": "ABAJO",
"LEFT": "IZQUIERDA",
"RIGHT": "BIEN",
"X": "X",
"Y": "Y",
"L": "L",
"R": "R",
"Z": "Z",
"STICK UP": "PEGARSE",
"STICK DOWN": "PEGAR",
"STICK LEFT": "PALO IZQUIERDO",
"STICK RIGHT": "PEGAR A LA DERECHA",
"C-PAD UP": "C-PAD ARRIBA",
"C-PAD DOWN": "C-PAD ABAJO",
"C-PAD LEFT": "C-PAD IZQUIERDO",
"C-PAD RIGHT": "C-PAD DERECHO",
"MICROPHONE": "MICRÓFONO",
"BUTTON 1 / START": "BOTÓN 1 / INICIO",
"BUTTON 2": "BOTÓN 2",
"BUTTON": "BOTÓN",
"LEFT D-PAD UP": "D-PAD IZQUIERDO ARRIBA",
"LEFT D-PAD DOWN": "D-PAD IZQUIERDO ABAJO",
"LEFT D-PAD LEFT": "D-PAD IZQUIERDO IZQUIERDO",
"LEFT D-PAD RIGHT": "D-PAD IZQUIERDO DERECHO",
"RIGHT D-PAD UP": "D-PAD DERECHO ARRIBA",
"RIGHT D-PAD DOWN": "D-PAD DERECHO ABAJO",
"RIGHT D-PAD LEFT": "D-PAD DERECHO IZQUIERDO",
"RIGHT D-PAD RIGHT": "D-PAD DERECHO DERECHO",
"C": "C",
"MODE": "MODO",
"FIRE": "FUEGO",
"RESET": "REINICIAR",
"LEFT DIFFICULTY A": "IZQUIERDA DIFICULTAD A",
"LEFT DIFFICULTY B": "IZQUIERDA DIFICULTAD B",
"RIGHT DIFFICULTY A": "CORRECTA DIFICULTAD A",
"RIGHT DIFFICULTY B": "CORRECTA DIFICULTAD B",
"COLOR": "COLOR",
"B/W": "B/N",
"PAUSE": "PAUSA",
"OPTION": "OPCIÓN",
"OPTION 1": "OPCIÓN 1",
"OPTION 2": "OPCION 2",
"L2": "L2",
"R2": "R2",
"L3": "L3",
"R3": "R3",
"L STICK UP": "L STICK UP",
"L STICK DOWN": "L STICK ABAJO",
"L STICK LEFT": "PALO L IZQUIERDO",
"L STICK RIGHT": "PALO L DERECHO",
"R STICK UP": "R STICK UP",
"R STICK DOWN": "PALO R HACIA ABAJO",
"R STICK LEFT": "PALANCA R IZQUIERDA",
"R STICK RIGHT": "PALANCA R DERECHA",
"Start": "Comenzar",
"Select": "Seleccionar",
"Fast": "Rápido",
"Slow": "Lento",
"a": "a",
"b": "b",
"c": "C",
"d": "d",
"e": "mi",
"f": "F",
"g": "gramo",
"h": "h",
"i": "i",
"j": "j",
"k": "k",
"l": "yo",
"m": "metro",
"n": "norte",
"o": "o",
"p": "pag",
"q": "q",
"r": "r",
"s": "s",
"t": "t",
"u": "tu",
"v": "v",
"w": "w",
"x": "X",
"y": "y",
"z": "z",
"enter": "ingresar",
"escape": "escapar",
"space": "espacio",
"tab": "pestaña",
"backspace": "retroceso",
"delete": "borrar",
"arrowup": "flecha arriba",
"arrowdown": "flecha abajo",
"arrowleft": "flecha izquierda",
"arrowright": "flecha derecha",
"f1": "f1",
"f2": "f2",
"f3": "f3",
"f4": "f4",
"f5": "f5",
"f6": "f6",
"f7": "f7",
"f8": "f8",
"f9": "f9",
"f10": "f10",
"f11": "f11",
"f12": "f12",
"shift": "cambio",
"control": "control",
"alt": "alternativa",
"meta": "meta",
"capslock": "Bloq Mayús",
"insert": "insertar",
"home": "hogar",
"end": "fin",
"pageup": "página arriba",
"pagedown": "Página abajo",
"!": "!",
"@": "@",
"#": "#",
"$": "ps",
"%": "%",
"^": "^",
"&": "&",
"*": "*",
"(": "(",
")": ")",
"-": "-",
"_": "_",
"+": "+",
"=": "=",
"[": "[",
"]": "]",
"{": "{",
"}": "}",
";": ";",
":": ":",
"'": "'",
"\"": "\"",
",": ",",
".": ".",
"<": "<",
">": ">",
"/": "/",
"?": "?",
"LEFT_STICK_X": "LEFT_STICK_X",
"LEFT_STICK_Y": "LEFT_STICK_Y",
"RIGHT_STICK_X": "PALO_DERECHO_X",
"RIGHT_STICK_Y": "PALO_DERECHO_Y",
"LEFT_TRIGGER": "GATILLO IZQUIERDO",
"RIGHT_TRIGGER": "DERECHO_TRIGGER",
"A_BUTTON": "UN BOTÓN",
"B_BUTTON": "B_BOTÓN",
"X_BUTTON": "BOTÓN_X",
"Y_BUTTON": "BOTÓN Y_",
"START_BUTTON": "BOTÓN DE INICIO",
"SELECT_BUTTON": "SELECCIONAR_BOTÓN",
"L1_BUTTON": "L1_BOTÓN",
"R1_BUTTON": "R1_BOTÓN",
"L2_BUTTON": "L2_BOTÓN",
"R2_BUTTON": "R2_BOTÓN",
"LEFT_THUMB_BUTTON": "LEFT_THUMB_BUTTON",
"RIGHT_THUMB_BUTTON": "DERECHO_THUMB_BOTÓN",
"DPAD_UP": "DPAD ARRIBA",
"DPAD_DOWN": "DPAD_ABAJO",
"DPAD_LEFT": "DPAD_IZQUIERDA",
"DPAD_RIGHT": "DPAD_DERECHO"
}

View File

@ -0,0 +1,301 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"Restart": "पुनः आरंभ करें",
"Pause": "विराम",
"Play": "खेल",
"Save State": "राज्य बचाओ",
"Load State": "राज्य लोड करें",
"Control Settings": "नियंत्रण सेटिंग्स",
"Cheats": "Cheats",
"Cache Manager": "कैश मैनेजर",
"Export Save File": "फ़ाइल सहेजें निर्यात करें",
"Import Save File": "सहेजें फ़ाइल आयात करें",
"Netplay": "कुल चालन",
"Mute": "आवाज़ बंद करना",
"Unmute": "अनम्यूट",
"Settings": "समायोजन",
"Enter Fullscreen": "पूर्ण स्क्रीन दर्ज करें",
"Exit Fullscreen": "पूर्ण स्क्रीन से बाहर निकलें",
"Reset": "रीसेट",
"Clear": "स्पष्ट",
"Close": "बंद करना",
"QUICK SAVE STATE": "त्वरित सहेजें राज्य",
"QUICK LOAD STATE": "त्वरित लोड स्थिति",
"CHANGE STATE SLOT": "स्टेट स्लॉट बदलें",
"FAST FORWARD": "तेजी से आगे बढ़ना",
"Player": "खिलाड़ी",
"Connected Gamepad": "कनेक्टेड गेमपैड",
"Gamepad": "गेमपैड",
"Keyboard": "कीबोर्ड",
"Set": "तय करना",
"Add Cheat": "धोखा जोड़ें",
"Create a Room": "एक कमरा बनाएँ",
"Rooms": "कमरा",
"Start Game": "खेल शुरू",
"Loading...": "लोड हो रहा है...",
"Download Game Core": "गेम कोर डाउनलोड करें",
"Decompress Game Core": "डीकंप्रेस गेम कोर",
"Download Game Data": "गेम डेटा डाउनलोड करें",
"Decompress Game Data": "गेम डेटा को डीकंप्रेस करें",
"Shaders": "शेडर्स",
"Disabled": "अक्षम",
"2xScaleHQ": "2xस्केलHQ",
"4xScaleHQ": "4xस्केलHQ",
"CRT easymode": "सीआरटी आसान मोड",
"CRT aperture": "सीआरटी एपर्चर",
"CRT geom": "सीआरटी जियोम",
"CRT mattias": "सीआरटी मैटियास",
"FPS": "एफपीएस",
"show": "दिखाओ",
"hide": "छिपाना",
"Fast Forward Ratio": "तेजी से आगे बढ़ने का अनुपात",
"Fast Forward": "तेजी से आगे बढ़ना",
"Enabled": "सक्रिय",
"Save State Slot": "राज्य स्लॉट सहेजें",
"Save State Location": "राज्य स्थान सहेजें",
"Download": "डाउनलोड करना",
"Keep in Browser": "ब्राउज़र में रखें",
"Auto": "ऑटो",
"NTSC": "एनटीएससी",
"PAL": "दोस्त",
"Dendy": "डेंडी",
"8:7 PAR": "8:7 बराबर",
"4:3": "4:3",
"Low": "कम",
"High": "उच्च",
"Very High": "बहुत ऊँचा",
"None": "कोई नहीं",
"Player 1": "खिलाड़ी 1",
"Player 2": "खिलाड़ी 2",
"Both": "दोनों",
"SAVED STATE TO SLOT": "स्लॉट के लिए राज्य सहेजा गया",
"LOADED STATE FROM SLOT": "स्लॉट से लोड किया गया राज्य",
"SET SAVE STATE SLOT TO": "सेव स्टेट स्लॉट को सेट करें",
"Network Error": "नेटवर्क त्रुटि",
"Submit": "जमा करना",
"Description": "विवरण",
"Code": "कोड",
"Add Cheat Code": "धोखा कोड जोड़ें",
"Leave Room": "कमरा छोड़ दो",
"Password": "पासवर्ड",
"Password (optional)": "पासवर्ड (वैकल्पिक)",
"Max Players": "अधिकतम खिलाड़ी",
"Room Name": "कमरे का नाम",
"Join": "जोड़ना",
"Player Name": "खिलाड़ी का नाम",
"Set Player Name": "खिलाड़ी का नाम सेट करें",
"Left Handed Mode": "बाएं हाथ का मोड",
"Virtual Gamepad": "वर्चुअल गेमपैड",
"Disk": "डिस्क",
"Press Keyboard": "कीबोर्ड दबाएँ",
"INSERT COIN": "सिक्का डालें",
"Remove": "निकालना",
"SAVE LOADED FROM BROWSER": "ब्राउज़र से लोड किया गया सेव करें",
"SAVE SAVED TO BROWSER": "ब्राउज़र में सहेजा गया सहेजें",
"Join the discord": "कलह में शामिल हों",
"View on GitHub": "GitHub पर देखें",
"Failed to start game": "गेम प्रारंभ करने में विफल",
"Download Game BIOS": "गेम BIOS डाउनलोड करें",
"Decompress Game BIOS": "डीकंप्रेस गेम BIOS",
"Download Game Parent": "गेम पेरेंट डाउनलोड करें",
"Decompress Game Parent": "डीकंप्रेस गेम पेरेंट",
"Download Game Patch": "गेम पैच डाउनलोड करें",
"Decompress Game Patch": "डीकंप्रेस गेम पैच",
"Download Game State": "गेम स्टेट डाउनलोड करें",
"Check console": "कंसोल की जाँच करें",
"Error for site owner": "साइट स्वामी के लिए त्रुटि",
"EmulatorJS": "एम्यूलेटरजेएस",
"Clear All": "सभी साफ करें",
"Take Screenshot": "स्क्रीनशॉट लीजिये",
"Quick Save": "तत्काल बचत",
"Quick Load": "त्वरित लोड",
"REWIND": "अतीत",
"Rewind Enabled (requires restart)": "रिवाइंड सक्षम (पुनः आरंभ करने की आवश्यकता है)",
"Rewind Granularity": "ग्रैन्युलैरिटी को रिवाइंड करें",
"Slow Motion Ratio": "धीमी गति अनुपात",
"Slow Motion": "धीमी गति",
"Home": "घर",
"EmulatorJS License": "एम्यूलेटरजेएस लाइसेंस",
"RetroArch License": "रेट्रोआर्क लाइसेंस",
"SLOW MOTION": "धीमी गति",
"A": "ए",
"B": "बी",
"SELECT": "चुनना",
"START": "शुरू",
"UP": "ऊपर",
"DOWN": "नीचे",
"LEFT": "बाएं",
"RIGHT": "सही",
"X": "एक्स",
"Y": "वाई",
"L": "एल",
"R": "आर",
"Z": "जेड",
"STICK UP": "फैला होना",
"STICK DOWN": "चिपकाना",
"STICK LEFT": "बाईं ओर चिपकाएँ",
"STICK RIGHT": "दाएँ चिपकाएँ",
"C-PAD UP": "सी-पैड यूपी",
"C-PAD DOWN": "सी-पैड नीचे",
"C-PAD LEFT": "सी-पैड बचा",
"C-PAD RIGHT": "सी-पैड दाएँ",
"MICROPHONE": "माइक्रोफोन",
"BUTTON 1 / START": "बटन 1 / प्रारंभ करें",
"BUTTON 2": "बटन 2",
"BUTTON": "बटन",
"LEFT D-PAD UP": "डी-पैड ऊपर छोड़ दिया",
"LEFT D-PAD DOWN": "डी-पैड नीचे छोड़ दिया",
"LEFT D-PAD LEFT": "बायां डी-पैड बायां",
"LEFT D-PAD RIGHT": "बाएँ डी-पैड दाएँ",
"RIGHT D-PAD UP": "दायां डी-पैड ऊपर",
"RIGHT D-PAD DOWN": "दायां डी-पैड नीचे",
"RIGHT D-PAD LEFT": "दायां डी-पैड बायां",
"RIGHT D-PAD RIGHT": "दाएँ डी-पैड दाएँ",
"C": "सी",
"MODE": "तरीका",
"FIRE": "आग",
"RESET": "रीसेट",
"LEFT DIFFICULTY A": "बाएं कठिनाई ए",
"LEFT DIFFICULTY B": "बाएं कठिनाई बी",
"RIGHT DIFFICULTY A": "सही कठिनाई ए",
"RIGHT DIFFICULTY B": "सही कठिनाई बी",
"COLOR": "रंग",
"B/W": "बी/डब्ल्यू",
"PAUSE": "विराम",
"OPTION": "विकल्प",
"OPTION 1": "विकल्प 1",
"OPTION 2": "विकल्प 2",
"L2": "एल2",
"R2": "आर2",
"L3": "एल3",
"R3": "आर3",
"L STICK UP": "एल चिपक जाओ",
"L STICK DOWN": "एल चिपक जाओ",
"L STICK LEFT": "एल बाईं ओर चिपकाएँ",
"L STICK RIGHT": "एल दाईं ओर चिपकाएँ",
"R STICK UP": "आर चिपको",
"R STICK DOWN": "आर नीचे रहो",
"R STICK LEFT": "आर बाईं ओर चिपकाएँ",
"R STICK RIGHT": "आर दाईं ओर चिपकाएँ",
"Start": "शुरू",
"Select": "चुनना",
"Fast": "तेज़",
"Slow": "धीमा",
"a": "ए",
"b": "बी",
"c": "सी",
"d": "डी",
"e": "इ",
"f": "एफ",
"g": "जी",
"h": "एच",
"i": "मैं",
"j": "जे",
"k": "क",
"l": "एल",
"m": "एम",
"n": "एन",
"o": "हे",
"p": "पी",
"q": "क्यू",
"r": "आर",
"s": "एस",
"t": "टी",
"u": "यू",
"v": "वी",
"w": "डब्ल्यू",
"x": "एक्स",
"y": "य",
"z": "जेड",
"enter": "प्रवेश करना",
"escape": "पलायन",
"space": "अंतरिक्ष",
"tab": "टैब",
"backspace": "बैकस्पेस",
"delete": "मिटाना",
"arrowup": "ऊपरी तीर",
"arrowdown": "नीचे दर्शित तीर",
"arrowleft": "तीरबाएँ",
"arrowright": "तीर दाहिना",
"f1": "एफ1",
"f2": "f2",
"f3": "f3",
"f4": "एफ4",
"f5": "f5",
"f6": "एफ6",
"f7": "f7",
"f8": "एफ8",
"f9": "f9",
"f10": "f10",
"f11": "f11",
"f12": "f12",
"shift": "बदलाव",
"control": "नियंत्रण",
"alt": "वैकल्पिक",
"meta": "मेटा",
"capslock": "कैप्स लॉक",
"insert": "डालना",
"home": "घर",
"end": "अंत",
"pageup": "पेज अप",
"pagedown": "पेज नीचे",
"!": "!",
"@": "@",
"#": "#",
"$": "$",
"%": "%",
"^": "^",
"&": "&",
"*": "*",
"(": "(",
")": ")",
"-": "-",
"_": "_",
"+": "+",
"=": "=",
"[": "[",
"]": "]",
"{": "{",
"}": "}",
";": ";",
":": ":",
"'": "'",
"\"": "\"",
",": ",",
".": ".",
"<": "<",
">": ">",
"/": "/",
"?": "?",
"LEFT_STICK_X": "LEFT_STICK_X",
"LEFT_STICK_Y": "LEFT_STICK_Y",
"RIGHT_STICK_X": "RIGHT_STICK_X",
"RIGHT_STICK_Y": "RIGHT_STICK_Y",
"LEFT_TRIGGER": "LEFT_TRIGGER",
"RIGHT_TRIGGER": "RIGHT_TRIGGER",
"A_BUTTON": "एक बटन",
"B_BUTTON": "बी_बटन",
"X_BUTTON": "X_बटन",
"Y_BUTTON": "Y_बटन",
"START_BUTTON": "प्रारंभ करें बटन",
"SELECT_BUTTON": "SELECT_BUTTON",
"L1_BUTTON": "L1_बटन",
"R1_BUTTON": "R1_बटन",
"L2_BUTTON": "L2_बटन",
"R2_BUTTON": "R2_बटन",
"LEFT_THUMB_BUTTON": "LEFT_THUMB_बटन",
"RIGHT_THUMB_BUTTON": "RIGHT_THUMB_बटन",
"DPAD_UP": "डीपीएडी_यूपी",
"DPAD_DOWN": "डीपीएडी_डाउन",
"DPAD_LEFT": "DPAD_LEFT",
"DPAD_RIGHT": "डीपीएडी_दाएँ"
}

View File

@ -0,0 +1,301 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"Restart": "再起動",
"Pause": "一時停止",
"Play": "遊ぶ",
"Save State": "状態を保存",
"Load State": "ロード状態",
"Control Settings": "コントロール設定",
"Cheats": "チート",
"Cache Manager": "キャッシュマネージャー",
"Export Save File": "保存ファイルのエクスポート",
"Import Save File": "保存ファイルのインポート",
"Netplay": "ネットプレイ",
"Mute": "ミュート",
"Unmute": "ミュートを解除する",
"Settings": "設定",
"Enter Fullscreen": "全画面表示に入る",
"Exit Fullscreen": "全画面表示を終了する",
"Reset": "リセット",
"Clear": "クリア",
"Close": "近い",
"QUICK SAVE STATE": "状態のクイック保存",
"QUICK LOAD STATE": "クイックロード状態",
"CHANGE STATE SLOT": "状態スロットの変更",
"FAST FORWARD": "早送り",
"Player": "プレーヤー",
"Connected Gamepad": "接続されたゲームパッド",
"Gamepad": "ゲームパッド",
"Keyboard": "キーボード",
"Set": "セット",
"Add Cheat": "チートの追加",
"Create a Room": "ルームを作成する",
"Rooms": "部屋",
"Start Game": "ゲームをスタート",
"Loading...": "読み込み中...",
"Download Game Core": "ゲームコアをダウンロード",
"Decompress Game Core": "ゲームコアを解凍する",
"Download Game Data": "ゲームデータのダウンロード",
"Decompress Game Data": "ゲームデータを解凍する",
"Shaders": "シェーダ",
"Disabled": "無効",
"2xScaleHQ": "2xスケール本社",
"4xScaleHQ": "4xスケール本社",
"CRT easymode": "CRTイージーモード",
"CRT aperture": "CRTの絞り",
"CRT geom": "CRT ジオム",
"CRT mattias": "CRT マティアス",
"FPS": "FPS",
"show": "見せる",
"hide": "隠れる",
"Fast Forward Ratio": "早送り率",
"Fast Forward": "早送り",
"Enabled": "有効",
"Save State Slot": "状態保存スロット",
"Save State Location": "状態の保存場所",
"Download": "ダウンロード",
"Keep in Browser": "ブラウザ内に保持",
"Auto": "自動",
"NTSC": "NTSC",
"PAL": "パル",
"Dendy": "デンディ",
"8:7 PAR": "8:7 パー",
"4:3": "4:3",
"Low": "低い",
"High": "高い",
"Very High": "すごく高い",
"None": "なし",
"Player 1": "プレイヤー 1",
"Player 2": "プレイヤー2",
"Both": "両方",
"SAVED STATE TO SLOT": "状態をスロットに保存しました",
"LOADED STATE FROM SLOT": "スロットからロードされた状態",
"SET SAVE STATE SLOT TO": "状態保存スロットを次のように設定します",
"Network Error": "ネットワークエラー",
"Submit": "提出する",
"Description": "説明",
"Code": "コード",
"Add Cheat Code": "チートコードを追加する",
"Leave Room": "部屋を出る",
"Password": "パスワード",
"Password (optional)": "パスワード (オプション)",
"Max Players": "最大プレイヤー数",
"Room Name": "部屋の名前",
"Join": "参加する",
"Player Name": "プレーヤの名前",
"Set Player Name": "プレイヤー名の設定",
"Left Handed Mode": "左利きモード",
"Virtual Gamepad": "仮想ゲームパッド",
"Disk": "ディスク",
"Press Keyboard": "キーボードを押す",
"INSERT COIN": "コインを入れる",
"Remove": "取り除く",
"SAVE LOADED FROM BROWSER": "ブラウザからロードして保存",
"SAVE SAVED TO BROWSER": "保存 ブラウザに保存",
"Join the discord": "ディスコードに参加する",
"View on GitHub": "GitHub で見る",
"Failed to start game": "ゲームの開始に失敗しました",
"Download Game BIOS": "ゲーム BIOS をダウンロードする",
"Decompress Game BIOS": "ゲーム BIOS を解凍する",
"Download Game Parent": "ゲームの親をダウンロード",
"Decompress Game Parent": "ゲームの親を解凍する",
"Download Game Patch": "ゲームパッチをダウンロード",
"Decompress Game Patch": "ゲームパッチを解凍する",
"Download Game State": "ゲームステートのダウンロード",
"Check console": "コンソールを確認してください",
"Error for site owner": "サイト所有者のエラー",
"EmulatorJS": "エミュレータJS",
"Clear All": "すべてクリア",
"Take Screenshot": "スクリーンショットを撮ります",
"Quick Save": "クイックセーブ",
"Quick Load": "クイックロード",
"REWIND": "巻き戻し",
"Rewind Enabled (requires restart)": "巻き戻しが有効 (再起動が必要)",
"Rewind Granularity": "巻き戻し粒度",
"Slow Motion Ratio": "スローモーション比率",
"Slow Motion": "スローモーション",
"Home": "家",
"EmulatorJS License": "エミュレータJSライセンス",
"RetroArch License": "RetroArch ライセンス",
"SLOW MOTION": "スローモーション",
"A": "あ",
"B": "B",
"SELECT": "選択する",
"START": "始める",
"UP": "上",
"DOWN": "下",
"LEFT": "左",
"RIGHT": "右",
"X": "バツ",
"Y": "Y",
"L": "L",
"R": "R",
"Z": "Z",
"STICK UP": "上に突き出る",
"STICK DOWN": "スティックダウン",
"STICK LEFT": "左スティック",
"STICK RIGHT": "右スティック",
"C-PAD UP": "Cパッドアップ",
"C-PAD DOWN": "C-パッドを下へ",
"C-PAD LEFT": "C-パッド左",
"C-PAD RIGHT": "Cパッド右",
"MICROPHONE": "マイクロフォン",
"BUTTON 1 / START": "ボタン 1 / スタート",
"BUTTON 2": "ボタン2",
"BUTTON": "ボタン",
"LEFT D-PAD UP": "左方向パッドを上に",
"LEFT D-PAD DOWN": "左方向パッド下",
"LEFT D-PAD LEFT": "左十字キー左",
"LEFT D-PAD RIGHT": "左十字キー右",
"RIGHT D-PAD UP": "右方向パッド上",
"RIGHT D-PAD DOWN": "右方向パッド下",
"RIGHT D-PAD LEFT": "右十字キー左",
"RIGHT D-PAD RIGHT": "右十字キー右",
"C": "C",
"MODE": "モード",
"FIRE": "火",
"RESET": "リセット",
"LEFT DIFFICULTY A": "左の難易度A",
"LEFT DIFFICULTY B": "左の難易度B",
"RIGHT DIFFICULTY A": "右の難易度A",
"RIGHT DIFFICULTY B": "右の難易度B",
"COLOR": "色",
"B/W": "白黒",
"PAUSE": "一時停止",
"OPTION": "オプション",
"OPTION 1": "オプション1",
"OPTION 2": "オプション 2",
"L2": "L2",
"R2": "R2",
"L3": "L3",
"R3": "R3",
"L STICK UP": "Lスティックアップ",
"L STICK DOWN": "Lスティックダウン",
"L STICK LEFT": "Lスティック左",
"L STICK RIGHT": "Lスティック右",
"R STICK UP": "Rスティックアップ",
"R STICK DOWN": "Rスティックダウン",
"R STICK LEFT": "Rスティック左",
"R STICK RIGHT": "R右スティック",
"Start": "始める",
"Select": "選択する",
"Fast": "速い",
"Slow": "遅い",
"a": "ある",
"b": "b",
"c": "c",
"d": "d",
"e": "e",
"f": "f",
"g": "g",
"h": "h",
"i": "私",
"j": "j",
"k": "k",
"l": "私",
"m": "メートル",
"n": "n",
"o": "ああ",
"p": "p",
"q": "q",
"r": "r",
"s": "s",
"t": "t",
"u": "あなた",
"v": "v",
"w": "w",
"x": "バツ",
"y": "y",
"z": "z",
"enter": "入力",
"escape": "逃げる",
"space": "空間",
"tab": "タブ",
"backspace": "バックスペース",
"delete": "消去",
"arrowup": "アローアップ",
"arrowdown": "矢印",
"arrowleft": "矢印左",
"arrowright": "右矢印",
"f1": "f1",
"f2": "f2",
"f3": "f3",
"f4": "f4",
"f5": "f5",
"f6": "f6",
"f7": "f7",
"f8": "f8",
"f9": "f9",
"f10": "f10",
"f11": "f11",
"f12": "f12",
"shift": "シフト",
"control": "コントロール",
"alt": "代替",
"meta": "メタ",
"capslock": "キャップスロック",
"insert": "入れる",
"home": "家",
"end": "終わり",
"pageup": "ページアップ",
"pagedown": "ページダウン",
"!": "",
"@": "@",
"#": "#",
"$": "$",
"%": "%",
"^": "^",
"&": "&",
"*": "*",
"(": "(",
")": ")",
"-": "-",
"_": "_",
"+": "+",
"=": "=",
"[": "[",
"]": "】",
"{": "{",
"}": "}",
";": ";",
":": ":",
"'": "'",
"\"": "」",
",": "、",
".": "。",
"<": "<",
">": ">",
"/": "/",
"?": "?",
"LEFT_STICK_X": "LEFT_STICK_X",
"LEFT_STICK_Y": "左スティック_Y",
"RIGHT_STICK_X": "RIGHT_STICK_X",
"RIGHT_STICK_Y": "右スティック_Y",
"LEFT_TRIGGER": "LEFT_TRIGGER",
"RIGHT_TRIGGER": "右トリガー",
"A_BUTTON": "ボタン",
"B_BUTTON": "B_ボタン",
"X_BUTTON": "X_ボタン",
"Y_BUTTON": "Y_ボタン",
"START_BUTTON": "スタートボタン",
"SELECT_BUTTON": "SELECT_BUTTON",
"L1_BUTTON": "L1_ボタン",
"R1_BUTTON": "R1_ボタン",
"L2_BUTTON": "L2_ボタン",
"R2_BUTTON": "R2_ボタン",
"LEFT_THUMB_BUTTON": "LEFT_THUMB_BUTTON",
"RIGHT_THUMB_BUTTON": "RIGHT_THUMB_BUTTON",
"DPAD_UP": "DPAD_UP",
"DPAD_DOWN": "DPAD_DOWN",
"DPAD_LEFT": "DPAD_LEFT",
"DPAD_RIGHT": "DPAD_RIGHT"
}

View File

@ -0,0 +1,301 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"Restart": "Baleni meneh",
"Pause": "ngaso",
"Play": "Dolanan",
"Save State": "Simpen Negara",
"Load State": "Status beban",
"Control Settings": "Setelan Kontrol",
"Cheats": "Cidra",
"Cache Manager": "Cache Manager",
"Export Save File": "Ekspor Simpen File",
"Import Save File": "Ngimpor Simpen File",
"Netplay": "Netplay",
"Mute": "bisu",
"Unmute": "Unmute",
"Settings": "Setelan",
"Enter Fullscreen": "Ketik Fullscreen",
"Exit Fullscreen": "Metu Fullscreen",
"Reset": "Reset",
"Clear": "Cetha",
"Close": "Nutup",
"QUICK SAVE STATE": "CEPAT SAVE STATE",
"QUICK LOAD STATE": "STATE LOAD CEPAT",
"CHANGE STATE SLOT": "GANTI STATE slot",
"FAST FORWARD": "CEPAT MAJU",
"Player": "Pamuter",
"Connected Gamepad": "Gamepad sing disambungake",
"Gamepad": "Gamepad",
"Keyboard": "Papan ketik",
"Set": "Set",
"Add Cheat": "Tambah Ngapusi",
"Create a Room": "Nggawe Kamar",
"Rooms": "kamar",
"Start Game": "Miwiti Game",
"Loading...": "Loading...",
"Download Game Core": "Unduh Game Core",
"Decompress Game Core": "Decompress Game Core",
"Download Game Data": "Unduh Data Game",
"Decompress Game Data": "Decompress Game Data",
"Shaders": "Shaders",
"Disabled": "dipatèni",
"2xScaleHQ": "2xSkalaHQ",
"4xScaleHQ": "4xSkalaHQ",
"CRT easymode": "Mode gampang CRT",
"CRT aperture": "bukaan CRT",
"CRT geom": "CRT geom",
"CRT mattias": "CRT mattias",
"FPS": "FPS",
"show": "nuduhake",
"hide": "ndhelikake",
"Fast Forward Ratio": "Rasio Maju Cepet",
"Fast Forward": "Cepet Maju",
"Enabled": "diaktifake",
"Save State Slot": "Simpen State Slot",
"Save State Location": "Simpen Lokasi Negara",
"Download": "Ngundhuh",
"Keep in Browser": "Simpen ing Browser",
"Auto": "Auto",
"NTSC": "NTSC",
"PAL": "PAL",
"Dendy": "Dendy",
"8:7 PAR": "8:7 PAR",
"4:3": "4:3",
"Low": "kurang",
"High": "dhuwur",
"Very High": "Dhuwur banget",
"None": "ora ana",
"Player 1": "Pamuter 1",
"Player 2": "Pamuter 2",
"Both": "loro-lorone",
"SAVED STATE TO SLOT": "STATE disimpen kanggo slot",
"LOADED STATE FROM SLOT": "STATE dimuat saka slot",
"SET SAVE STATE SLOT TO": "SET Simpen STATE slot TO",
"Network Error": "Kesalahan Jaringan",
"Submit": "Kirimake",
"Description": "Katrangan",
"Code": "Kode",
"Add Cheat Code": "Tambah Kode Ngapusi",
"Leave Room": "Ninggalake Kamar",
"Password": "Sandi",
"Password (optional)": "Sandi (opsional)",
"Max Players": "Pemain Max",
"Room Name": "Jeneng Kamar",
"Join": "gabung",
"Player Name": "Jeneng Pamuter",
"Set Player Name": "Setel Jeneng Player",
"Left Handed Mode": "Mode Tangan Kiri",
"Virtual Gamepad": "Gamepad virtual",
"Disk": "Disk",
"Press Keyboard": "Pencet Keyboard",
"INSERT COIN": "INSERT COIN",
"Remove": "Mbusak",
"SAVE LOADED FROM BROWSER": "Simpen dimuat saka BROWSER",
"SAVE SAVED TO BROWSER": "SAVE disimpen menyang BROWSER",
"Join the discord": "Melu discord",
"View on GitHub": "Deleng ing GitHub",
"Failed to start game": "Gagal miwiti game",
"Download Game BIOS": "Unduh Game BIOS",
"Decompress Game BIOS": "Decompress Game BIOS",
"Download Game Parent": "Unduh Game Parent",
"Decompress Game Parent": "Decompress Game Induk",
"Download Game Patch": "Unduh Game Patch",
"Decompress Game Patch": "Decompress Game Patch",
"Download Game State": "Unduh Game State",
"Check console": "Priksa konsol",
"Error for site owner": "Kesalahan kanggo pemilik situs",
"EmulatorJS": "EmulatorJS",
"Clear All": "Busek kabeh",
"Take Screenshot": "Njupuk Screenshot",
"Quick Save": "Cepet Simpen",
"Quick Load": "Muat cepet",
"REWIND": "REWIND",
"Rewind Enabled (requires restart)": "Rewind Enabled (mbutuhake urip maneh)",
"Rewind Granularity": "Rewind Granularity",
"Slow Motion Ratio": "Rasio Slow Motion",
"Slow Motion": "Gerakan alon",
"Home": "Ngarep",
"EmulatorJS License": "Lisensi EmulatorJS",
"RetroArch License": "Lisensi RetroArch",
"SLOW MOTION": "GERAKAN ALON",
"A": "A",
"B": "B",
"SELECT": "PILIH",
"START": "MULAI",
"UP": "UP",
"DOWN": "TURUN",
"LEFT": "KIRI",
"RIGHT": "TETEP",
"X": "X",
"Y": "Y",
"L": "L",
"R": "R",
"Z": "Z",
"STICK UP": "TETEP",
"STICK DOWN": "TETEP",
"STICK LEFT": "STIK KIRI",
"STICK RIGHT": "TETEP KANAN",
"C-PAD UP": "C-PAD UP",
"C-PAD DOWN": "C-PAD TURUN",
"C-PAD LEFT": "C-PAD ngiwa",
"C-PAD RIGHT": "C-PAD KANAN",
"MICROPHONE": "MIKROFON",
"BUTTON 1 / START": "TOMBOL 1 / MULAI",
"BUTTON 2": "TOMBOL 2",
"BUTTON": "TOMBOL",
"LEFT D-PAD UP": "Ngiwa D-PAD UP",
"LEFT D-PAD DOWN": "Ngiwa D-PAD mudhun",
"LEFT D-PAD LEFT": "KIRI D-PAD KIRI",
"LEFT D-PAD RIGHT": "KIRI D-PAD TEngen",
"RIGHT D-PAD UP": "TEngen D-PAD UP",
"RIGHT D-PAD DOWN": "TEngen D-PAD mudhun",
"RIGHT D-PAD LEFT": "TEngen D-PAD ngiwa",
"RIGHT D-PAD RIGHT": "TEngen D-PAD TEngen",
"C": "C",
"MODE": "MODE",
"FIRE": "KEBURU",
"RESET": "RESET",
"LEFT DIFFICULTY A": "KESULITAN KIRI A",
"LEFT DIFFICULTY B": "KESULITAN KIRIB",
"RIGHT DIFFICULTY A": "KESULITAN TEPAT A",
"RIGHT DIFFICULTY B": "KESULITAN B",
"COLOR": "WARNA",
"B/W": "B/W",
"PAUSE": "ngaso",
"OPTION": "PILIHAN",
"OPTION 1": "PILIHAN 1",
"OPTION 2": "PILIHAN 2",
"L2": "L2",
"R2": "R2",
"L3": "L3",
"R3": "R3",
"L STICK UP": "L LANGGENG",
"L STICK DOWN": "L TETEP",
"L STICK LEFT": "L STIK KIRI",
"L STICK RIGHT": "L TEKAN KANGEN",
"R STICK UP": "R TETEP",
"R STICK DOWN": "R TETEP",
"R STICK LEFT": "R STICK ngiwa",
"R STICK RIGHT": "R STIKES TEngen",
"Start": "Miwiti",
"Select": "Pilih",
"Fast": "Cepet",
"Slow": "alon-alon",
"a": "a",
"b": "b",
"c": "c",
"d": "d",
"e": "e",
"f": "f",
"g": "g",
"h": "h",
"i": "i",
"j": "j",
"k": "k",
"l": "l",
"m": "m",
"n": "n",
"o": "o",
"p": "p",
"q": "q",
"r": "r",
"s": "s",
"t": "t",
"u": "u",
"v": "v",
"w": "w",
"x": "x",
"y": "y",
"z": "z",
"enter": "mlebu",
"escape": "uwal",
"space": "panggonan",
"tab": "tab",
"backspace": "backspace",
"delete": "mbusak",
"arrowup": "panahan",
"arrowdown": "panah mudhun",
"arrowleft": "panah ngiwa",
"arrowright": "panah tengen",
"f1": "f1",
"f2": "f2",
"f3": "f3",
"f4": "f4",
"f5": "f5",
"f6": "f6",
"f7": "f7",
"f8": "f8",
"f9": "f9",
"f10": "f10",
"f11": "f11",
"f12": "f12",
"shift": "ngalih",
"control": "kontrol",
"alt": "alt",
"meta": "meta",
"capslock": "capslock",
"insert": "nglebokake",
"home": "ngarep",
"end": "pungkasan",
"pageup": "pageup",
"pagedown": "pagedown",
"!": "!",
"@": "@",
"#": "#",
"$": "$",
"%": "%",
"^": "^",
"&": "&",
"*": "*",
"(": "(",
")": ")",
"-": "-",
"_": "_",
"+": "+",
"=": "=",
"[": "[",
"]": "]",
"{": "{",
"}": "}",
";": ";",
":": ":",
"'": "'",
"\"": "\"",
",": ",",
".": ".",
"<": "<",
">": ">",
"/": "/",
"?": "?",
"LEFT_STICK_X": "LEFT_STICK_X",
"LEFT_STICK_Y": "LEFT_STICK_Y",
"RIGHT_STICK_X": "RIGHT_STICK_X",
"RIGHT_STICK_Y": "RIGHT_STICK_Y",
"LEFT_TRIGGER": "LEFT_TRIGGER",
"RIGHT_TRIGGER": "RIGHT_TRIGGER",
"A_BUTTON": "A_BUTTON",
"B_BUTTON": "B_BUTTON",
"X_BUTTON": "X_BUTTON",
"Y_BUTTON": "Y_BUTTON",
"START_BUTTON": "START_BUTTON",
"SELECT_BUTTON": "SELECT_BUTTON",
"L1_BUTTON": "L1_TOMBOL",
"R1_BUTTON": "R1_TOMBOL",
"L2_BUTTON": "L2_TOMBOL",
"R2_BUTTON": "R2_BUTTON",
"LEFT_THUMB_BUTTON": "TOMBOL_LEFT_THUMB_BUTTON",
"RIGHT_THUMB_BUTTON": "RIGHT_THUMB_BUTTON",
"DPAD_UP": "DPAD_UP",
"DPAD_DOWN": "DPAD_DOWN",
"DPAD_LEFT": "DPAD_LEFT",
"DPAD_RIGHT": "DPAD_RIGHT"
}

View File

@ -0,0 +1,301 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "삼",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"Restart": "재시작",
"Pause": "정지시키다",
"Play": "놀다",
"Save State": "상태 저장",
"Load State": "로드 상태",
"Control Settings": "제어 설정",
"Cheats": "치트",
"Cache Manager": "캐시 관리자",
"Export Save File": "저장 파일 내보내기",
"Import Save File": "저장 파일 가져오기",
"Netplay": "넷플레이",
"Mute": "무음",
"Unmute": "음소거 해제",
"Settings": "설정",
"Enter Fullscreen": "전체 화면 시작",
"Exit Fullscreen": "전체화면 종료",
"Reset": "초기화",
"Clear": "분명한",
"Close": "닫다",
"QUICK SAVE STATE": "빠른 저장 상태",
"QUICK LOAD STATE": "빠른 로드 상태",
"CHANGE STATE SLOT": "상태 슬롯 변경",
"FAST FORWARD": "빨리 감기",
"Player": "플레이어",
"Connected Gamepad": "연결된 게임패드",
"Gamepad": "게임패드",
"Keyboard": "건반",
"Set": "세트",
"Add Cheat": "치트 추가",
"Create a Room": "방 만들기",
"Rooms": "객실",
"Start Game": "게임을 시작하다",
"Loading...": "로드 중...",
"Download Game Core": "게임 코어 다운로드",
"Decompress Game Core": "게임 코어 압축 해제",
"Download Game Data": "게임 데이터 다운로드",
"Decompress Game Data": "게임 데이터 압축 해제",
"Shaders": "셰이더",
"Disabled": "장애가 있는",
"2xScaleHQ": "2xScaleHQ",
"4xScaleHQ": "4xScaleHQ",
"CRT easymode": "브라운관 이지모드",
"CRT aperture": "CRT 조리개",
"CRT geom": "브라운관 검",
"CRT mattias": "CRT 마티아스",
"FPS": "FPS",
"show": "보여주다",
"hide": "숨다",
"Fast Forward Ratio": "빨리 감기 비율",
"Fast Forward": "빨리 감기",
"Enabled": "사용",
"Save State Slot": "상태 슬롯 저장",
"Save State Location": "상태 위치 저장",
"Download": "다운로드",
"Keep in Browser": "브라우저에 보관",
"Auto": "자동",
"NTSC": "NTSC",
"PAL": "단짝",
"Dendy": "덴디",
"8:7 PAR": "8:7 동점",
"4:3": "4:3",
"Low": "낮은",
"High": "높은",
"Very High": "매우 높음",
"None": "없음",
"Player 1": "플레이어 1",
"Player 2": "플레이어 2",
"Both": "둘 다",
"SAVED STATE TO SLOT": "슬롯에 저장된 상태",
"LOADED STATE FROM SLOT": "슬롯에서 로드된 상태",
"SET SAVE STATE SLOT TO": "저장 상태 슬롯을 다음으로 설정",
"Network Error": "네트워크 오류",
"Submit": "제출하다",
"Description": "설명",
"Code": "암호",
"Add Cheat Code": "치트 코드 추가",
"Leave Room": "방 나가기",
"Password": "비밀번호",
"Password (optional)": "비밀번호(선택 사항)",
"Max Players": "최대 플레이어",
"Room Name": "방 이름",
"Join": "가입하다",
"Player Name": "선수 이름",
"Set Player Name": "플레이어 이름 설정",
"Left Handed Mode": "왼손잡이 모드",
"Virtual Gamepad": "가상 게임패드",
"Disk": "디스크",
"Press Keyboard": "키보드 누르기",
"INSERT COIN": "동전을 넣으세요",
"Remove": "제거하다",
"SAVE LOADED FROM BROWSER": "브라우저에서 불러온 저장",
"SAVE SAVED TO BROWSER": "저장 브라우저에 저장됨",
"Join the discord": "불화에 동참하십시오",
"View on GitHub": "GitHub에서 보기",
"Failed to start game": "게임을 시작하지 못했습니다.",
"Download Game BIOS": "게임 BIOS 다운로드",
"Decompress Game BIOS": "게임 BIOS 압축 해제",
"Download Game Parent": "게임 부모 다운로드",
"Decompress Game Parent": "게임 부모 압축 해제",
"Download Game Patch": "게임 패치 다운로드",
"Decompress Game Patch": "게임 패치 압축 해제",
"Download Game State": "게임 상태 다운로드",
"Check console": "콘솔 확인",
"Error for site owner": "사이트 소유자 오류",
"EmulatorJS": "EmulatorJS",
"Clear All": "모두 지우기",
"Take Screenshot": "스크린 샷을 찍다",
"Quick Save": "빠른 저장",
"Quick Load": "빠른 로드",
"REWIND": "되감기",
"Rewind Enabled (requires restart)": "되감기 활성화됨(다시 시작해야 함)",
"Rewind Granularity": "되감기 세분성",
"Slow Motion Ratio": "슬로우 모션 비율",
"Slow Motion": "느린",
"Home": "집",
"EmulatorJS License": "EmulatorJS 라이선스",
"RetroArch License": "레트로아크 라이선스",
"SLOW MOTION": "느린",
"A": "ㅏ",
"B": "비",
"SELECT": "선택하다",
"START": "시작",
"UP": "위로",
"DOWN": "아래에",
"LEFT": "왼쪽",
"RIGHT": "오른쪽",
"X": "엑스",
"Y": "와이",
"L": "엘",
"R": "아르 자형",
"Z": "지",
"STICK UP": "스틱 업",
"STICK DOWN": "스틱 다운",
"STICK LEFT": "스틱 왼쪽",
"STICK RIGHT": "스틱 오른쪽",
"C-PAD UP": "C 패드 위로",
"C-PAD DOWN": "C패드 다운",
"C-PAD LEFT": "C 패드 왼쪽",
"C-PAD RIGHT": "C 패드 오른쪽",
"MICROPHONE": "마이크로폰",
"BUTTON 1 / START": "버튼 1 / 시작",
"BUTTON 2": "버튼 2",
"BUTTON": "단추",
"LEFT D-PAD UP": "왼쪽 방향 패드 위로",
"LEFT D-PAD DOWN": "왼쪽 방향 패드 아래로",
"LEFT D-PAD LEFT": "왼쪽 방향 패드 왼쪽",
"LEFT D-PAD RIGHT": "왼쪽 방향 패드 오른쪽",
"RIGHT D-PAD UP": "오른쪽 방향 패드 위로",
"RIGHT D-PAD DOWN": "오른쪽 방향 패드 아래로",
"RIGHT D-PAD LEFT": "오른쪽 방향 패드 왼쪽",
"RIGHT D-PAD RIGHT": "오른쪽 방향 패드 오른쪽",
"C": "씨",
"MODE": "방법",
"FIRE": "불",
"RESET": "초기화",
"LEFT DIFFICULTY A": "왼쪽 난이도 A",
"LEFT DIFFICULTY B": "왼쪽 난이도 B",
"RIGHT DIFFICULTY A": "오른쪽 난이도 A",
"RIGHT DIFFICULTY B": "오른쪽 난이도 B",
"COLOR": "색상",
"B/W": "흑백",
"PAUSE": "정지시키다",
"OPTION": "옵션",
"OPTION 1": "옵션 1",
"OPTION 2": "옵션 2",
"L2": "L2",
"R2": "R2",
"L3": "L3",
"R3": "R3",
"L STICK UP": "L 스틱 업",
"L STICK DOWN": "L 스틱 다운",
"L STICK LEFT": "왼쪽 스틱",
"L STICK RIGHT": "L 오른쪽 스틱",
"R STICK UP": "R 스틱 업",
"R STICK DOWN": "R 스틱 다운",
"R STICK LEFT": "R 스틱 왼쪽",
"R STICK RIGHT": "R 오른쪽 스틱",
"Start": "시작",
"Select": "선택하다",
"Fast": "빠른",
"Slow": "느린",
"a": "ㅏ",
"b": "비",
"c": "씨",
"d": "디",
"e": "이자형",
"f": "에프",
"g": "g",
"h": "시간",
"i": "나",
"j": "제이",
"k": "케이",
"l": "엘",
"m": "중",
"n": "N",
"o": "영형",
"p": "피",
"q": "큐",
"r": "아르 자형",
"s": "에스",
"t": "티",
"u": "유",
"v": "V",
"w": "승",
"x": "엑스",
"y": "와이",
"z": "지",
"enter": "입력하다",
"escape": "탈출하다",
"space": "공간",
"tab": "탭",
"backspace": "역행 키이",
"delete": "삭제",
"arrowup": "화살촉",
"arrowdown": "화살표 방향",
"arrowleft": "왼쪽 화살표",
"arrowright": "오른쪽 화살표",
"f1": "f1",
"f2": "f2",
"f3": "f3",
"f4": "f4",
"f5": "f5",
"f6": "f6",
"f7": "f7",
"f8": "f8",
"f9": "f9",
"f10": "f10",
"f11": "f11",
"f12": "f12",
"shift": "옮기다",
"control": "제어",
"alt": "대안",
"meta": "메타",
"capslock": "캡스락",
"insert": "끼워 넣다",
"home": "집",
"end": "끝",
"pageup": "페이지 위로",
"pagedown": "페이지 다운",
"!": "!",
"@": "@",
"#": "#",
"$": "$",
"%": "%",
"^": "^^",
"&": "&",
"*": "*",
"(": "(",
")": ")",
"-": "-",
"_": "_",
"+": "+",
"=": "=",
"[": "[",
"]": "]",
"{": "{",
"}": "}",
";": ";",
":": ":",
"'": "'",
"\"": "\"",
",": ",",
".": ".",
"<": "<",
">": ">",
"/": "/",
"?": "?",
"LEFT_STICK_X": "왼쪽_스틱_X",
"LEFT_STICK_Y": "왼쪽_스틱_Y",
"RIGHT_STICK_X": "RIGHT_STICK_X",
"RIGHT_STICK_Y": "오른쪽_스틱_Y",
"LEFT_TRIGGER": "왼쪽_트리거",
"RIGHT_TRIGGER": "RIGHT_TRIGGER",
"A_BUTTON": "단추",
"B_BUTTON": "B_버튼",
"X_BUTTON": "X_버튼",
"Y_BUTTON": "Y_버튼",
"START_BUTTON": "시작 버튼",
"SELECT_BUTTON": "선택_버튼",
"L1_BUTTON": "L1_버튼",
"R1_BUTTON": "R1_버튼",
"L2_BUTTON": "L2_버튼",
"R2_BUTTON": "R2_버튼",
"LEFT_THUMB_BUTTON": "LEFT_THUMB_BUTTON",
"RIGHT_THUMB_BUTTON": "RIGHT_THUMB_BUTTON",
"DPAD_UP": "DPAD_UP",
"DPAD_DOWN": "DPAD_DOWN",
"DPAD_LEFT": "DPAD_LEFT",
"DPAD_RIGHT": "DPAD_RIGHT"
}

View File

@ -0,0 +1,361 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"10": "10",
"11": "11",
"12": "12",
"13": "13",
"14": "14",
"15": "15",
"Restart": "Reset",
"Pause": "Pausar",
"Play": "Jogar",
"Save State": "Armazenar Save State",
"Load State": "Carregar Save State",
"Control Settings": "Configurações do Controle",
"Cheats": "Trapaças",
"Cache Manager": "Gerenciador de cache",
"Export Save File": "Armazenar Save State",
"Import Save File": "Carregar Save State",
"Netplay": "Netplay",
"Mute": "Mudo",
"Unmute": "Desmutar",
"Settings": "Ajustes",
"Enter Fullscreen": "Tela cheia",
"Exit Fullscreen": "Sair da tela cheia",
"Reset": "Resetar",
"Clear": "Limpar",
"Close": "Fechar",
"QUICK SAVE STATE": "ARMAZENAR SAVE STATE RAPIDAMENTE",
"QUICK LOAD STATE": "CARREGAR SAVE STATE RAPIDAMENTE",
"CHANGE STATE SLOT": "TROCAR SLOT DO SAVE STATE",
"FAST FORWARD": "AVANÇO RÁPIDO",
"Player": "Jogador",
"Connected Gamepad": "Controle conectado",
"Gamepad": "Controle",
"Keyboard": "Teclado",
"Set": "Definir",
"Add Cheat": "Adicionar Trapaça",
"Create a Room": "Criar uma Sala",
"Rooms": "Salas",
"Start Game": "Jogar",
"Loading...": "Carregando",
"Download Game Core": "Carregando emulador do videogame",
"Decompress Game Core": "Descompactando emulador do videogame",
"Download Game Data": "Carregando dados do jogo",
"Decompress Game Data": "Descompactando dados do jogo",
"Shaders": "Sombreamento",
"Disabled": "Desativado",
"2xScaleHQ": "2xScaleHQ",
"4xScaleHQ": "4xScaleHQ",
"CRT easymode": "CRT easymode",
"CRT aperture": "CRT aperture",
"CRT geom": "CRT geom",
"CRT mattias": "CRT mattias",
"FPS": "FPS",
"show": "mostrar",
"hide": "ocultar",
"Fast Forward Ratio": "Taxa de avanço rápido",
"Fast Forward": "Avanço rápido",
"Enabled": "Ativado",
"Save State Slot": "Slot do Save State",
"Save State Location": "Local do Save State",
"Download": "Download",
"Keep in Browser": "Manter no Browser",
"Auto": "Auto",
"NTSC": "NTSC",
"PAL": "PAL",
"Dendy": "Dendy",
"8:7 PAR": "8:7 PAR",
"4:3": "4:3",
"Low": "Baixo",
"High": "Alto",
"Very High": "Muito alto",
"None": "Nenhum",
"Player 1": "Jogador 1",
"Player 2": "Jogador 2",
"Both": "Ambos",
"SAVED STATE TO SLOT": "SAVE STATE ARMAZENDO NO SLOT",
"LOADED STATE FROM SLOT": "SAVE STATE CARREGADO DO SLOT",
"SET SAVE STATE SLOT TO": "SAVE STATE DEFINIDO PARA SLOT",
"Network Error": "Erro de rede",
"Submit": "Enviar",
"Description": "Descrição",
"Code": "Código",
"Add Cheat Code": "Adicionar trapaça",
"Leave Room": "Sair da sala",
"Password": "Senha",
"Password (optional)": "Senha (opcional)",
"Max Players": "Max de Jogadores",
"Room Name": "Nome da Sala",
"Join": "Entrar",
"Player Name": "Nome do Jogador",
"Set Player Name": "Definir nome do Jogador",
"Left Handed Mode": "Modo canhoto",
"Virtual Gamepad": "Controle virtual",
"Disk": "Disco",
"Press Keyboard": "Pressione uma tecla",
"INSERT COIN": "Insira uma ficha",
"Remove": "Remover",
"SAVE LOADED FROM BROWSER": "SAVE STATE CARREGADO DO BROWSER",
"SAVE SAVED TO BROWSER": "SAVE STATE ARMAZENADO NO BROWSER",
"Join the discord": "Participar do discord",
"View on GitHub": "Ver no GitHub",
"Failed to start game": "Falha ao iniciar o jogo",
"Download Game BIOS": "Carregando bios do videogame",
"Decompress Game BIOS": "Descompactando bios do videogame",
"Download Game Parent": "Carregando arquivo principal do jogo",
"Decompress Game Parent": "Descompactando arquivo principal do jogo",
"Download Game Patch": "Carregando Patch do jogo",
"Decompress Game Patch": "Descompactando Patch do Jogo",
"Download Game State": "Carregando Save State",
"Check console": "Verificar videogame",
"Error for site owner": "Erro para proprietário do site",
"EmulatorJS": "EmulatorJS",
"Clear All": "Limpar todos",
"Take Screenshot": "Capturar tela",
"Quick Save": "Salvar rapidamente",
"Quick Load": "Carregar Rapidmente",
"REWIND": "RETROCEDER",
"Rewind Enabled (requires restart)": "Camera lenta ativada(Necessário reiniciar)",
"Rewind Granularity": "Granularidade do retrocesso",
"Slow Motion Ratio": "Taxa de camera lenta",
"Slow Motion": "Camera lenta",
"Home": "Ínicio",
"EmulatorJS License": "Licença do EmulatorJS",
"RetroArch License": "Licença do RetroArch",
"SLOW MOTION": "CAMERA LENTA",
"A": "A",
"B": "B",
"SELECT": "SELECT",
"START": "START",
"UP": "CIMA",
"DOWN": "BAIXO",
"LEFT": "ESQUERDA",
"RIGHT": "DIREITA",
"X": "X",
"Y": "Y",
"L": "ESQ",
"R": "DIR",
"Z": "Z",
"STICK UP": "ANALÓGICO - CIMA",
"STICK DOWN": "ANALÓGICO - BAIXO",
"STICK LEFT": "ANALÓGICO - ESQUERDA",
"STICK RIGHT": "ANALÓGICO - DIREITA",
"C-PAD UP": "DIRECIONAL - CIMA",
"C-PAD DOWN": "DIRECIONAL - BAIXO",
"C-PAD LEFT": "DIRECIONAL - ESQUERDA",
"C-PAD RIGHT": "DIRECIONAL - DIREITA",
"MICROPHONE": "MICROFONE",
"BUTTON 1 / START": "BOTÃO 1 / START",
"BUTTON 2": "BOTÃO 2",
"BUTTON": "BOTÃO",
"LEFT D-PAD UP": "DIRECIONAL ESQUERDO - CIMA",
"LEFT D-PAD DOWN": "DIRECIONAL ESQUERDO - BAIXO",
"LEFT D-PAD LEFT": "DIRECIONAL ESQUERDO - ESQUERDA",
"LEFT D-PAD RIGHT": "DIRECIONAL ESQUERDO - DIREITA",
"RIGHT D-PAD UP": "DIRECIONAL DIREITO - CIMA",
"RIGHT D-PAD DOWN": "DIRECIONAL DIREITO - BAIXO",
"RIGHT D-PAD LEFT": "DIRECIONAL DIREITO - ESQUERDA",
"RIGHT D-PAD RIGHT": "DIRECIONAL DIREITO - DIREITA",
"C": "C",
"MODE": "MODO",
"Mode": "Modo",
"FIRE": "ATIRA",
"RESET": "RESET",
"LEFT DIFFICULTY A": "DIFICULDADE DA ESQUERDA - NÍVEL A",
"LEFT DIFFICULTY B": "DIFICULDADE DA ESQUERDA - NÍVEL B",
"RIGHT DIFFICULTY A": "DIFICULDADE DA DIREITA - NÍVEL A",
"RIGHT DIFFICULTY B": "DIFICULDADE DA DIREITA - NÍVEL B",
"COLOR": "COLORIDO",
"B/W": "PRETO E BRANCO",
"PAUSE": "PAUSAR",
"OPTION": "OPÇÃO",
"OPTION 1": "OPÇÃO 1",
"OPTION 2": "OPÇÃO 2",
"L2": "ESQ 2",
"R2": "DIR 2",
"L3": "ESQ 3",
"R3": "DIR 3",
"L STICK UP": "ANALÓGICO ESQ - CIMA",
"L STICK DOWN": "ANALÓGICO ESQ - BAIXO",
"L STICK LEFT": "ANALÓGICO ESQ - ESQUERDA",
"L STICK RIGHT": "ANALÓGICO ESQ -DIREITA",
"R STICK UP": "ANALÓGICO DIR - CIMA",
"R STICK DOWN": "ANALÓGICO DIR - BAIXO",
"R STICK LEFT": "ANALÓGICO DIR - ESQUERDA",
"R STICK RIGHT": "ANALÓGICO DIR - DIREITA",
"Start": "Start",
"Select": "Select",
"Fast": "Rápido",
"Slow": "Lento",
"a": "a",
"b": "b",
"c": "c",
"d": "d",
"e": "e",
"f": "f",
"g": "g",
"h": "h",
"i": "i",
"j": "j",
"k": "k",
"l": "l",
"m": "m",
"n": "n",
"o": "o",
"p": "p",
"q": "q",
"r": "r",
"s": "s",
"t": "t",
"u": "u",
"v": "v",
"w": "c",
"x": "x",
"y": "y",
"z": "z",
"enter": "enter",
"escape": "esc",
"space": "espaço",
"tab": "tab",
"backspace": "retorna",
"delete": "delete",
"arrowup": "seta para cima",
"arrowdown": "seta para baixo",
"arrowleft": "seta para a esquerda",
"arrowright": "seta para a direita",
"f1": "f1",
"f2": "f2",
"f3": "f3",
"f4": "f4",
"f5": "f5",
"f6": "f6",
"f7": "f7",
"f8": "f8",
"f9": "f9",
"f10": "f10",
"f11": "f11",
"f12": "f12",
"shift": "shift",
"control": "control",
"alt": "alt",
"meta": "meta",
"capslock": "Caps Lock",
"insert": "inserir",
"home": "home",
"end": "end",
"pageup": "subir página",
"pagedown": "descer página",
"!": "!",
"@": "@",
"#": "#",
"$": "$",
"%": "%",
"^": "^",
"&": "&",
"*": "*",
"(": "(",
")": ")",
"-": "-",
"_": "_",
"+": "+",
"=": "=",
"[": "[",
"]": "]",
"{": "{",
"}": "}",
";": ";",
":": ":",
"'": "'",
"\"": "\"",
",": ",",
".": ".",
"<": "<",
">": ">",
"/": "/",
"?": "?",
"LEFT_STICK_X": "ANALÓGICO ESQUERDO - EIXO HORIZONTAL",
"LEFT_STICK_Y": "ANALÓGICO ESQUERDO - EIXO VERTICAL",
"RIGHT_STICK_X": "ANALÓGICO DIREITO - EIXO HORIZONTAL",
"RIGHT_STICK_Y": "ANALÓGICO DIREITO - EIXO VERTICAL",
"LEFT_TRIGGER": "GATILHO ESQUERDO",
"RIGHT_TRIGGER": "GATILHO ESQUERDO",
"A_BUTTON": "BOTÃO A",
"B_BUTTON": "BOTÃO B",
"X_BUTTON": "BOTÃO X",
"Y_BUTTON": "BOTÃO Y",
"START_BUTTON": "BOTÃO START",
"SELECT_BUTTON": "BOTÃO SELECT",
"L1_BUTTON": "BOTÃO ESQ 1",
"R1_BUTTON": "BOTÃO DIR 1",
"L2_BUTTON": "BOTÃO ESQ 2",
"R2_BUTTON": "BOTÃO DIR 2",
"LEFT_THUMB_BUTTON": "BOTÃO DO ANALÓGICO ESQUERDO",
"RIGHT_THUMB_BUTTON": "BOTÃO DO ANALÓGICO DIREITO",
"DPAD_UP": "DIRECIONAL - CIMA",
"DPAD_DOWN": "DIRECIONAL - BAIXO",
"DPAD_LEFT": "DIRECIONAL - ESQUERDA",
"DPAD_RIGHT": "DIRECIONAL - DIREITA",
"genesis plus gx frameskip threshold": "genesis plus gx - limite de pulo de quadros",
"genesis plus gx lowpass range": "genesis plus gx - alcance do passa-baixa",
"genesis plus gx psg preamp": "genesis plus gx - psg pré-amplificador",
"genesis plus gx fm preamp": "genesis plus gx - pré-amplificador fm",
"genesis plus gx cdda volume": "genesis plus gx - cdda volume",
"genesis plus gx pcm volume": "genesis plus gx - pcm volume",
"genesis plus gx audio eq low": "genesis plus gx - eq áudio baixo",
"genesis plus gx audio eq mid": "genesis plus gx - eq áudio medio",
"genesis plus gx audio eq high": "genesis plus gx - eq áudio alto",
"genesis plus gx enhanced vscroll limit": "genesis plus gx - limite de rolagem vertical aprimorada",
"genesis plus gx psg channel 0 volume": "genesis plus gx - psg channel 0 volume",
"genesis plus gx psg channel 1 volume": "genesis plus gx - psg channel 1 volume",
"genesis plus gx psg channel 2 volume": "genesis plus gx - psg channel 2 volume",
"genesis plus gx psg channel 3 volume": "genesis plus gx - psg channel 3 volume",
"genesis plus gx md channel 0 volume": "genesis plus gx - md channel 0 volume",
"genesis plus gx md channel 1 volume": "genesis plus gx - md channel 1 volume",
"genesis plus gx md channel 2 volume": "genesis plus gx - md channel 2 volume",
"genesis plus gx md channel 3 volume": "genesis plus gx - md channel 3 volume",
"genesis plus gx md channel 4 volume": "genesis plus gx - md channel 4 volume",
"genesis plus gx md channel 5 volume": "genesis plus gx - md channel 5 volume",
"genesis plus gx sms fm channel 0 volume": "genesis plus gx - sms fm channel 0 volume",
"genesis plus gx sms fm channel 1 volume": "genesis plus gx - sms fm channel 1 volume",
"genesis plus gx sms fm channel 2 volume": "genesis plus gx - sms fm channel 2 volume",
"genesis plus gx sms fm channel 3 volume": "genesis plus gx - sms fm channel 3 volume",
"genesis plus gx sms fm channel 4 volume": "genesis plus gx - sms fm channel 4 volume",
"genesis plus gx sms fm channel 5 volume": "genesis plus gx - sms fm channel 5 volume",
"genesis plus gx sms fm channel 6 volume": "genesis plus gx - sms fm channel 6 volume",
"genesis plus gx sms fm channel 7 volume": "genesis plus gx - sms fm channel 7 volume",
"genesis plus gx sms fm channel 8 volume": "genesis plus gx - sms fm channel 8 volume",
"stella2014 stelladaptor analog sensitivity": "stella2014 - Sensibilidade do Analógico",
"stella2014 stelladaptor analog center": "stella2014 - Centro do Analógico",
"1.0x (12.50Mhz)": "1.0x (12.50Mhz)",
"1.1x (13.75Mhz)": "1.1x (13.75Mhz)",
"1.2x (15.00Mhz)": "1.2x (15.00Mhz)",
"1.5x (18.75Mhz)": "1.5x (18.75Mhz)",
"1.6x (20.00Mhz)": "1.6x (20.00Mhz)",
"1.8x (22.50Mhz)": "1.8x (22.50Mhz)",
"2.0x (25.00Mhz)": "2.0x (25.00Mhz)",
"opera cpu overclock": "Overclock do cpu Opera",
"0RGB1555": "0RGB1555",
"RGB565": "RGB565",
"XRGB8888": "XRGB8888",
"opera vdlp pixel format": "Formato vdlp do pixel Opera",
"opera nvram version": "Versão da nvram do Opera",
"opera active devices": "Dispositivos Opera ativados",
"pcsx rearmed psxclock": "pcsx rearmed - psxclock",
"pcsx rearmed frameskip threshold": "pcsx rearmed - limite de pulo de quadros",
"pcsx rearmed frameskip interval": "pcsx rearmed - intervalo de pulo de quadros",
"pcsx rearmed input sensitivity": "pcsx rearmed - sensibilidade de entrada",
"pcsx rearmed gunconadjustx": "pcsx rearmed - gunconadjustx",
"pcsx rearmed gunconadjusty": "pcsx rearmed - gunconadjusty",
"pcsx rearmed gunconadjustratiox": "pcsx rearmed - gunconadjustratiox",
"pcsx rearmed gunconadjustratioy": "pcsx rearmed - gunconadjustratioy"
}

View File

@ -0,0 +1,53 @@
# Localization
Supported languages
`en-US` - English US<br>
`pt-BR` - Portuguese<br>
`es-ES` - Spanish<br>
`el-GR` - Greek<br>
`ja-JA` - Japanese<br>
`zh-CN` - Chinese<br>
`hi-HI` - Hindi<br>
`ar-AR` - Arabic<br>
`jv-JV` - Javanese<br>
`ben-BEN` - Bengali<br>
`ru-RU` - Russian<br>
`de-GER` - German<br>
`ko-KO` - Korean<br>
`af-FR` - French<br>
default: `en-US`
add the line to your code to use
```
EJS_language = ''; //language
```
If the language file is not found or there was an error fetching the file, the emulator will default to english.
## Credits
Translated for `es-ES` by [@cesarcristianodeoliveira](https://github.com/cesarcristianodeoliveira) <br>
Translated for `el-GR` by [@imneckro](https://github.com/imneckro) <br>
Translated for `ja-JA`, `hi-HI`, `ar-AR`, `jv-JV`, `ben-BEN`, `ru-RU`, `de-GER`, `ko-KO`, `af-FR` by [@allancoding](https://github.com/allancoding) <br>
Translated for `pt-BR` originally by [@allancoding](https://github.com/allancoding) and updated by [@zmarteline](https://github.com/zmarteline)<br>
Translated for `zh-CN` originally by [@allancoding](https://github.com/allancoding) and updated by [@eric183](https://github.com/eric183)<br>
Translated for `pt-BR` originally by [@allancoding](https://github.com/allancoding) and updated by [@zmarteline](https://github.com/zmarteline) <br>
## Contributing
Download the default `en.json` file and simply translate all the words that start with the `-` (remove the dash afterwards) then perform a pull request or open an issue with the file uploaded and I will add your work.
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.
The control maping traslations 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.json` file.
You can also use the [Translation Helper](Translate.html) tool to help you translate the file.
Please contribute!!
Enything that is incorrect or needs to be fix please perform a pull request!

View File

@ -0,0 +1,617 @@
{
"fceumm region": "-fceumm region",
"fceumm sndquality": "-fceumm sndquality",
"fceumm aspect": "-fceumm aspect",
"fceumm overscan h left": "-fceumm overscan h left",
"fceumm overscan h right": "-fceumm overscan h right",
"fceumm overscan v top": "-fceumm overscan v top",
"fceumm overscan v bottom": "-fceumm overscan v bottom",
"fceumm turbo enable": "-fceumm turbo enable",
"fceumm turbo delay": "-fceumm turbo delay",
"fceumm zapper tolerance": "-fceumm zapper tolerance",
"fceumm mouse sensitivity": "-fceumm mouse sensitivity",
"50%": "-50%",
"60%": "-60%",
"70%": "-70%",
"80%": "-80%",
"90%": "-90%",
"100%": "-100%",
"150%": "-150%",
"200%": "-200%",
"250%": "-250%",
"300%": "-300%",
"350%": "-350%",
"400%": "-400%",
"450%": "-450%",
"500%": "-500%",
"snes9x overclock superfx": "-snes9x overclock superfx",
"snes9x superscope crosshair": "-snes9x superscope crosshair",
"White": "-White",
"White (blend)": "-White (blend)",
"Red": "-Red",
"Red (blend)": "-Red (blend)",
"Orange": "-Orange",
"Orange (blend)": "-Orange (blend)",
"Yellow": "-Yellow",
"Yellow (blend)": "-Yellow (blend)",
"Green": "-Green",
"Green (blend)": "-Green (blend)",
"Cyan": "-Cyan",
"Cyan (blend)": "-Cyan (blend)",
"Sky": "-Sky",
"Sky (blend)": "-Sky (blend)",
"Blue": "-Blue",
"Blue (blend)": "-Blue (blend)",
"Violet": "-Violet",
"Violet (blend)": "-Violet (blend)",
"Pink": "-Pink",
"Pink (blend)": "-Pink (blend)",
"Purple": "-Purple",
"Purple (blend)": "-Purple (blend)",
"Black": "-Black",
"Black (blend)": "-Black (blend)",
"25% Grey": "-25% Grey",
"25% Grey (blend)": "-25% Grey (blend)",
"50% Grey": "-50% Grey",
"50% Grey (blend)": "-50% Grey (blend)",
"75% Grey": "-75% Grey",
"75% Grey (blend)": "-75% Grey (blend)",
"snes9x superscope color": "-snes9x superscope color",
"snes9x justifier1 crosshair": "-snes9x justifier1 crosshair",
"snes9x justifier1 color": "-snes9x justifier1 color",
"snes9x justifier2 crosshair": "-snes9x justifier2 crosshair",
"snes9x justifier2 color": "-snes9x justifier2 color",
"snes9x rifle crosshair": "-snes9x rifle crosshair",
"snes9x rifle color": "-snes9x rifle color",
"1.0x (12.50Mhz)": "-1.0x (12.50Mhz)",
"1.1x (13.75Mhz)": "-1.1x (13.75Mhz)",
"1.2x (15.00Mhz)": "-1.2x (15.00Mhz)",
"1.5x (18.75Mhz)": "-1.5x (18.75Mhz)",
"1.6x (20.00Mhz)": "-1.6x (20.00Mhz)",
"1.8x (22.50Mhz)": "-1.8x (22.50Mhz)",
"2.0x (25.00Mhz)": "-2.0x (25.00Mhz)",
"opera cpu overclock": "-opera cpu overclock",
"0RGB1555": "-0RGB1555",
"RGB565": "-RGB565",
"XRGB8888": "-XRGB8888",
"opera vdlp pixel format": "-opera vdlp pixel format",
"opera nvram version": "-opera nvram version",
"opera active devices": "-opera active devices",
"stella2014 stelladaptor analog sensitivity": "-stella2014 stelladaptor analog sensitivity",
"stella2014 stelladaptor analog center": "-stella2014 stelladaptor analog center",
"handy frameskip threshold": "-handy frameskip threshold",
"320x240": "-320x240",
"640x480": "-640x480",
"960x720": "-960x720",
"1280x960": "-1280x960",
"1440x1080": "-1440x1080",
"1600x1200": "-1600x1200",
"1920x1440": "-1920x1440",
"2240x1680": "-2240x1680",
"2560x1920": "-2560x1920",
"2880x2160": "-2880x2160",
"3200x2400": "-3200x2400",
"3520x2640": "-3520x2640",
"3840x2880": "-3840x2880",
"43screensize": "-43screensize",
"3point": "-3point",
"standard": "-standard",
"BilinearMode": "-BilinearMode",
"MultiSampling": "-MultiSampling",
"FXAA": "-FXAA",
"Software": "-Software",
"FromMem": "-FromMem",
"EnableCopyDepthToRDRAM": "-EnableCopyDepthToRDRAM",
"Stripped": "-Stripped",
"OnePiece": "-OnePiece",
"BackgroundMode": "-BackgroundMode",
"OverscanTop": "-OverscanTop",
"OverscanLeft": "-OverscanLeft",
"OverscanRight": "-OverscanRight",
"OverscanBottom": "-OverscanBottom",
"MaxHiResTxVramLimit": "-MaxHiResTxVramLimit",
"MaxTxCacheSize": "-MaxTxCacheSize",
"Smooth filtering 1": "-Smooth filtering 1",
"Smooth filtering 2": "-Smooth filtering 2",
"Smooth filtering 3": "-Smooth filtering 3",
"Smooth filtering 4": "-Smooth filtering 4",
"Sharp filtering 1": "-Sharp filtering 1",
"Sharp filtering 2": "-Sharp filtering 2",
"txFilterMode": "-txFilterMode",
"As Is": "-As Is",
"X2": "-X2",
"X2SAI": "-X2SAI",
"HQ2X": "-HQ2X",
"HQ2XS": "-HQ2XS",
"LQ2X": "-LQ2X",
"LQ2XS": "-LQ2XS",
"HQ4X": "-HQ4X",
"2xBRZ": "-2xBRZ",
"3xBRZ": "-3xBRZ",
"4xBRZ": "-4xBRZ",
"5xBRZ": "-5xBRZ",
"6xBRZ": "-6xBRZ",
"txEnhancementMode": "-txEnhancementMode",
"Original": "-Original",
"Fullspeed": "-Fullspeed",
"Framerate": "-Framerate",
"virefresh": "-virefresh",
"CountPerOp": "-CountPerOp",
"CountPerOpDenomPot": "-CountPerOpDenomPot",
"deadzone": "-deadzone",
"sensitivity": "-sensitivity",
"C1": "-C1",
"C2": "-C2",
"C3": "-C3",
"C4": "-C4",
"cbutton": "-cbutton",
"none": "-none",
"memory": "-memory",
"rumble": "-rumble",
"transfer": "-transfer",
"pak1": "-pak1",
"pak2": "-pak2",
"pak3": "-pak3",
"pak4": "-pak4",
"Autodetect": "-Autodetect",
"Game Boy": "-Game Boy",
"Super Game Boy": "-Super Game Boy",
"Game Boy Color": "-Game Boy Color",
"Game Boy Advance": "-Game Boy Advance",
"mgba gb model": "-mgba gb model",
"ON": "-ON",
"OFF": "-OFF",
"mgba use bios": "-mgba use bios",
"mgba skip bios": "-mgba skip bios",
"Grayscale": "-Grayscale",
"DMG Green": "-DMG Green",
"GB Pocket": "-GB Pocket",
"GB Light": "-GB Light",
"GBC Brown ↑": "-GBC Brown ↑",
"GBC Red ↑A": "-GBC Red ↑A",
"GBC Dark Brown ↑B": "-GBC Dark Brown ↑B",
"GBC Pale Yellow ↓": "-GBC Pale Yellow ↓",
"GBC Orange ↓A": "-GBC Orange ↓A",
"GBC Yellow ↓B": "-GBC Yellow ↓B",
"GBC Blue ←": "-GBC Blue ←",
"GBC Dark Blue ←A": "-GBC Dark Blue ←A",
"GBC Gray ←B": "-GBC Gray ←B",
"GBC Green →": "-GBC Green →",
"GBC Dark Green →A": "-GBC Dark Green →A",
"GBC Reverse →B": "-GBC Reverse →B",
"SGB 1-A": "-SGB 1-A",
"SGB 1-B": "-SGB 1-B",
"SGB 1-C": "-SGB 1-C",
"SGB 1-D": "-SGB 1-D",
"SGB 1-E": "-SGB 1-E",
"SGB 1-F": "-SGB 1-F",
"SGB 1-G": "-SGB 1-G",
"SGB 1-H": "-SGB 1-H",
"SGB 2-A": "-SGB 2-A",
"SGB 2-B": "-SGB 2-B",
"SGB 2-C": "-SGB 2-C",
"SGB 2-D": "-SGB 2-D",
"SGB 2-E": "-SGB 2-E",
"SGB 2-F": "-SGB 2-F",
"SGB 2-G": "-SGB 2-G",
"SGB 2-H": "-SGB 2-H",
"SGB 3-A": "-SGB 3-A",
"SGB 3-B": "-SGB 3-B",
"SGB 3-C": "-SGB 3-C",
"SGB 3-D": "-SGB 3-D",
"SGB 3-E": "-SGB 3-E",
"SGB 3-F": "-SGB 3-F",
"SGB 3-G": "-SGB 3-G",
"SGB 3-H": "-SGB 3-H",
"SGB 4-A": "-SGB 4-A",
"SGB 4-B": "-SGB 4-B",
"SGB 4-C": "-SGB 4-C",
"SGB 4-D": "-SGB 4-D",
"SGB 4-E": "-SGB 4-E",
"SGB 4-F": "-SGB 4-F",
"SGB 4-G": "-SGB 4-G",
"SGB 4-H": "-SGB 4-H",
"mgba gb colors": "-mgba gb colors",
"mgba sgb borders": "-mgba sgb borders",
"mgba color correction": "-mgba color correction",
"mgba solar sensor level": "-mgba solar sensor level",
"mgba force gbp": "-mgba force gbp",
"Remove Known": "-Remove Known",
"Detect and Remove": "-Detect and Remove",
"Don't Remove": "-Don't Remove",
"mgba idle optimization": "-mgba idle optimization",
"mgba frameskip threshold": "-mgba frameskip threshold",
"mgba frameskip interval": "-mgba frameskip interval",
"GB - DMG": "-GB - DMG",
"GB - Pocket": "-GB - Pocket",
"GB - Light": "-GB - Light",
"GBC - Blue": "-GBC - Blue",
"GBC - Brown": "-GBC - Brown",
"GBC - Dark Blue": "-GBC - Dark Blue",
"GBC - Dark Brown": "-GBC - Dark Brown",
"GBC - Dark Green": "-GBC - Dark Green",
"GBC - Grayscale": "-GBC - Grayscale",
"GBC - Green": "-GBC - Green",
"GBC - Inverted": "-GBC - Inverted",
"GBC - Orange": "-GBC - Orange",
"GBC - Pastel Mix": "-GBC - Pastel Mix",
"GBC - Red": "-GBC - Red",
"GBC - Yellow": "-GBC - Yellow",
"SGB - 1A": "-SGB - 1A",
"SGB - 1B": "-SGB - 1B",
"SGB - 1C": "-SGB - 1C",
"SGB - 1D": "-SGB - 1D",
"SGB - 1E": "-SGB - 1E",
"SGB - 1F": "-SGB - 1F",
"SGB - 1G": "-SGB - 1G",
"SGB - 1H": "-SGB - 1H",
"SGB - 2A": "-SGB - 2A",
"SGB - 2B": "-SGB - 2B",
"SGB - 2C": "-SGB - 2C",
"SGB - 2D": "-SGB - 2D",
"SGB - 2E": "-SGB - 2E",
"SGB - 2F": "-SGB - 2F",
"SGB - 2G": "-SGB - 2G",
"SGB - 2H": "-SGB - 2H",
"SGB - 3A": "-SGB - 3A",
"SGB - 3B": "-SGB - 3B",
"SGB - 3C": "-SGB - 3C",
"SGB - 3D": "-SGB - 3D",
"SGB - 3E": "-SGB - 3E",
"SGB - 3F": "-SGB - 3F",
"SGB - 3G": "-SGB - 3G",
"SGB - 3H": "-SGB - 3H",
"SGB - 4A": "-SGB - 4A",
"SGB - 4B": "-SGB - 4B",
"SGB - 4C": "-SGB - 4C",
"SGB - 4D": "-SGB - 4D",
"SGB - 4E": "-SGB - 4E",
"SGB - 4F": "-SGB - 4F",
"SGB - 4G": "-SGB - 4G",
"SGB - 4H": "-SGB - 4H",
"Special 1": "-Special 1",
"Special 2": "-Special 2",
"Special 3": "-Special 3",
"Special 4 (TI-83 Legacy)": "-Special 4 (TI-83 Legacy)",
"TWB64 - Pack 1": "-TWB64 - Pack 1",
"TWB64 - Pack 2": "-TWB64 - Pack 2",
"PixelShift - Pack 1": "-PixelShift - Pack 1",
"gambatte gb internal palette": "-gambatte gb internal palette",
"TWB64 001 - Aqours Blue": "-TWB64 001 - Aqours Blue",
"TWB64 002 - Anime Expo Ver.": "-TWB64 002 - Anime Expo Ver.",
"TWB64 003 - SpongeBob Yellow": "-TWB64 003 - SpongeBob Yellow",
"TWB64 004 - Patrick Star Pink": "-TWB64 004 - Patrick Star Pink",
"TWB64 005 - Neon Red": "-TWB64 005 - Neon Red",
"TWB64 006 - Neon Blue": "-TWB64 006 - Neon Blue",
"TWB64 007 - Neon Yellow": "-TWB64 007 - Neon Yellow",
"TWB64 008 - Neon Green": "-TWB64 008 - Neon Green",
"TWB64 009 - Neon Pink": "-TWB64 009 - Neon Pink",
"TWB64 010 - Mario Red": "-TWB64 010 - Mario Red",
"TWB64 011 - Nick Orange": "-TWB64 011 - Nick Orange",
"TWB64 012 - Virtual Boy Ver.": "-TWB64 012 - Virtual Boy Ver.",
"TWB64 013 - Golden Wild": "-TWB64 013 - Golden Wild",
"TWB64 014 - Builder Yellow": "-TWB64 014 - Builder Yellow",
"TWB64 015 - Classic Blurple": "-TWB64 015 - Classic Blurple",
"TWB64 016 - 765 Production Ver.": "-TWB64 016 - 765 Production Ver.",
"TWB64 017 - Superball Ivory": "-TWB64 017 - Superball Ivory",
"TWB64 018 - Crunchyroll Orange": "-TWB64 018 - Crunchyroll Orange",
"TWB64 019 - Muse Pink": "-TWB64 019 - Muse Pink",
"TWB64 020 - Nijigasaki Yellow": "-TWB64 020 - Nijigasaki Yellow",
"TWB64 021 - Gamate Ver.": "-TWB64 021 - Gamate Ver.",
"TWB64 022 - Greenscale Ver.": "-TWB64 022 - Greenscale Ver.",
"TWB64 023 - Odyssey Gold": "-TWB64 023 - Odyssey Gold",
"TWB64 024 - Super Saiyan God": "-TWB64 024 - Super Saiyan God",
"TWB64 025 - Super Saiyan Blue": "-TWB64 025 - Super Saiyan Blue",
"TWB64 026 - Bizarre Pink": "-TWB64 026 - Bizarre Pink",
"TWB64 027 - Nintendo Switch Lite Ver.": "-TWB64 027 - Nintendo Switch Lite Ver.",
"TWB64 028 - Game.com Ver.": "-TWB64 028 - Game.com Ver.",
"TWB64 029 - Sanrio Pink": "-TWB64 029 - Sanrio Pink",
"TWB64 030 - BANDAI NAMCO Ver.": "-TWB64 030 - BANDAI NAMCO Ver.",
"TWB64 031 - Cosmo Green": "-TWB64 031 - Cosmo Green",
"TWB64 032 - Wanda Pink": "-TWB64 032 - Wanda Pink",
"TWB64 033 - Link's Awakening DX Ver.": "-TWB64 033 - Link's Awakening DX Ver.",
"TWB64 034 - Travel Wood": "-TWB64 034 - Travel Wood",
"TWB64 035 - Pokemon Ver.": "-TWB64 035 - Pokemon Ver.",
"TWB64 036 - Game Grump Orange": "-TWB64 036 - Game Grump Orange",
"TWB64 037 - Scooby-Doo Mystery Ver.": "-TWB64 037 - Scooby-Doo Mystery Ver.",
"TWB64 038 - Pokemon mini Ver.": "-TWB64 038 - Pokemon mini Ver.",
"TWB64 039 - Supervision Ver.": "-TWB64 039 - Supervision Ver.",
"TWB64 040 - DMG Ver.": "-TWB64 040 - DMG Ver.",
"TWB64 041 - Pocket Ver.": "-TWB64 041 - Pocket Ver.",
"TWB64 042 - Light Ver.": "-TWB64 042 - Light Ver.",
"TWB64 043 - Miraitowa Blue": "-TWB64 043 - Miraitowa Blue",
"TWB64 044 - Someity Pink": "-TWB64 044 - Someity Pink",
"TWB64 045 - Pikachu Yellow": "-TWB64 045 - Pikachu Yellow",
"TWB64 046 - Eevee Brown": "-TWB64 046 - Eevee Brown",
"TWB64 047 - Microvision Ver.": "-TWB64 047 - Microvision Ver.",
"TWB64 048 - TI-83 Ver.": "-TWB64 048 - TI-83 Ver.",
"TWB64 049 - Aegis Cherry": "-TWB64 049 - Aegis Cherry",
"TWB64 050 - Labo Fawn": "-TWB64 050 - Labo Fawn",
"TWB64 051 - MILLION LIVE GOLD!": "-TWB64 051 - MILLION LIVE GOLD!",
"TWB64 052 - Tokyo Midtown Ver.": "-TWB64 052 - Tokyo Midtown Ver.",
"TWB64 053 - VMU Ver.": "-TWB64 053 - VMU Ver.",
"TWB64 054 - Game Master Ver.": "-TWB64 054 - Game Master Ver.",
"TWB64 055 - Android Green": "-TWB64 055 - Android Green",
"TWB64 056 - Ticketmaster Azure": "-TWB64 056 - Ticketmaster Azure",
"TWB64 057 - Google Red": "-TWB64 057 - Google Red",
"TWB64 058 - Google Blue": "-TWB64 058 - Google Blue",
"TWB64 059 - Google Yellow": "-TWB64 059 - Google Yellow",
"TWB64 060 - Google Green": "-TWB64 060 - Google Green",
"TWB64 061 - WonderSwan Ver.": "-TWB64 061 - WonderSwan Ver.",
"TWB64 062 - Neo Geo Pocket Ver.": "-TWB64 062 - Neo Geo Pocket Ver.",
"TWB64 063 - Dew Green": "-TWB64 063 - Dew Green",
"TWB64 064 - Coca-Cola Red": "-TWB64 064 - Coca-Cola Red",
"TWB64 065 - GameKing Ver.": "-TWB64 065 - GameKing Ver.",
"TWB64 066 - Do The Dew Ver.": "-TWB64 066 - Do The Dew Ver.",
"TWB64 067 - Digivice Ver.": "-TWB64 067 - Digivice Ver.",
"TWB64 068 - Bikini Bottom Ver.": "-TWB64 068 - Bikini Bottom Ver.",
"TWB64 069 - Blossom Pink": "-TWB64 069 - Blossom Pink",
"TWB64 070 - Bubbles Blue": "-TWB64 070 - Bubbles Blue",
"TWB64 071 - Buttercup Green": "-TWB64 071 - Buttercup Green",
"TWB64 072 - NASCAR Ver.": "-TWB64 072 - NASCAR Ver.",
"TWB64 073 - Lemon-Lime Green": "-TWB64 073 - Lemon-Lime Green",
"TWB64 074 - Mega Man V Ver.": "-TWB64 074 - Mega Man V Ver.",
"TWB64 075 - Tamagotchi Ver.": "-TWB64 075 - Tamagotchi Ver.",
"TWB64 076 - Phantom Red": "-TWB64 076 - Phantom Red",
"TWB64 077 - Halloween Ver.": "-TWB64 077 - Halloween Ver.",
"TWB64 078 - Christmas Ver.": "-TWB64 078 - Christmas Ver.",
"TWB64 079 - Cardcaptor Pink": "-TWB64 079 - Cardcaptor Pink",
"TWB64 080 - Pretty Guardian Gold": "-TWB64 080 - Pretty Guardian Gold",
"TWB64 081 - Camouflage Ver.": "-TWB64 081 - Camouflage Ver.",
"TWB64 082 - Legendary Super Saiyan": "-TWB64 082 - Legendary Super Saiyan",
"TWB64 083 - Super Saiyan Rose": "-TWB64 083 - Super Saiyan Rose",
"TWB64 084 - Super Saiyan": "-TWB64 084 - Super Saiyan",
"TWB64 085 - Perfected Ultra Instinct": "-TWB64 085 - Perfected Ultra Instinct",
"TWB64 086 - Saint Snow Red": "-TWB64 086 - Saint Snow Red",
"TWB64 087 - Yellow Banana": "-TWB64 087 - Yellow Banana",
"TWB64 088 - Green Banana": "-TWB64 088 - Green Banana",
"TWB64 089 - Super Saiyan 3": "-TWB64 089 - Super Saiyan 3",
"TWB64 090 - Super Saiyan Blue Evolved": "-TWB64 090 - Super Saiyan Blue Evolved",
"TWB64 091 - Pocket Tales Ver.": "-TWB64 091 - Pocket Tales Ver.",
"TWB64 092 - Investigation Yellow": "-TWB64 092 - Investigation Yellow",
"TWB64 093 - S.E.E.S. Blue": "-TWB64 093 - S.E.E.S. Blue",
"TWB64 094 - Game Awards Cyan": "-TWB64 094 - Game Awards Cyan",
"TWB64 095 - Hokage Orange": "-TWB64 095 - Hokage Orange",
"TWB64 096 - Straw Hat Red": "-TWB64 096 - Straw Hat Red",
"TWB64 097 - Sword Art Cyan": "-TWB64 097 - Sword Art Cyan",
"TWB64 098 - Deku Alpha Emerald": "-TWB64 098 - Deku Alpha Emerald",
"TWB64 099 - Blue Stripes Ver.": "-TWB64 099 - Blue Stripes Ver.",
"TWB64 100 - Stone Orange": "-TWB64 100 - Stone Orange",
"gambatte gb palette twb64 1": "-gambatte gb palette twb64 1",
"TWB64 101 - 765PRO Pink": "-TWB64 101 - 765PRO Pink",
"TWB64 102 - CINDERELLA Blue": "-TWB64 102 - CINDERELLA Blue",
"TWB64 103 - MILLION Yellow!": "-TWB64 103 - MILLION Yellow!",
"TWB64 104 - SideM Green": "-TWB64 104 - SideM Green",
"TWB64 105 - SHINY Sky Blue": "-TWB64 105 - SHINY Sky Blue",
"TWB64 106 - Angry Volcano Ver.": "-TWB64 106 - Angry Volcano Ver.",
"TWB64 107 - Yo-kai Pink": "-TWB64 107 - Yo-kai Pink",
"TWB64 108 - Yo-kai Green": "-TWB64 108 - Yo-kai Green",
"TWB64 109 - Yo-kai Blue": "-TWB64 109 - Yo-kai Blue",
"TWB64 110 - Yo-kai Purple": "-TWB64 110 - Yo-kai Purple",
"TWB64 111 - Aquatic Iro": "-TWB64 111 - Aquatic Iro",
"TWB64 112 - Tea Midori": "-TWB64 112 - Tea Midori",
"TWB64 113 - Sakura Pink": "-TWB64 113 - Sakura Pink",
"TWB64 114 - Wisteria Murasaki": "-TWB64 114 - Wisteria Murasaki",
"TWB64 115 - Oni Aka": "-TWB64 115 - Oni Aka",
"TWB64 116 - Golden Kiiro": "-TWB64 116 - Golden Kiiro",
"TWB64 117 - Silver Shiro": "-TWB64 117 - Silver Shiro",
"TWB64 118 - Fruity Orange": "-TWB64 118 - Fruity Orange",
"TWB64 119 - AKB48 Pink": "-TWB64 119 - AKB48 Pink",
"TWB64 120 - Miku Blue": "-TWB64 120 - Miku Blue",
"TWB64 121 - Fairy Tail Red": "-TWB64 121 - Fairy Tail Red",
"TWB64 122 - Survey Corps Brown": "-TWB64 122 - Survey Corps Brown",
"TWB64 123 - Island Green": "-TWB64 123 - Island Green",
"TWB64 124 - Mania Plus Green": "-TWB64 124 - Mania Plus Green",
"TWB64 125 - Ninja Turtle Green": "-TWB64 125 - Ninja Turtle Green",
"TWB64 126 - Slime Blue": "-TWB64 126 - Slime Blue",
"TWB64 127 - Lime Midori": "-TWB64 127 - Lime Midori",
"TWB64 128 - Ghostly Aoi": "-TWB64 128 - Ghostly Aoi",
"TWB64 129 - Retro Bogeda": "-TWB64 129 - Retro Bogeda",
"TWB64 130 - Royal Blue": "-TWB64 130 - Royal Blue",
"TWB64 131 - Neon Purple": "-TWB64 131 - Neon Purple",
"TWB64 132 - Neon Orange": "-TWB64 132 - Neon Orange",
"TWB64 133 - Moonlight Vision": "-TWB64 133 - Moonlight Vision",
"TWB64 134 - Tokyo Red": "-TWB64 134 - Tokyo Red",
"TWB64 135 - Paris Gold": "-TWB64 135 - Paris Gold",
"TWB64 136 - Beijing Blue": "-TWB64 136 - Beijing Blue",
"TWB64 137 - Pac-Man Yellow": "-TWB64 137 - Pac-Man Yellow",
"TWB64 138 - Irish Green": "-TWB64 138 - Irish Green",
"TWB64 139 - Kakarot Orange": "-TWB64 139 - Kakarot Orange",
"TWB64 140 - Dragon Ball Orange": "-TWB64 140 - Dragon Ball Orange",
"TWB64 141 - Christmas Gold": "-TWB64 141 - Christmas Gold",
"TWB64 142 - Pepsi-Cola Blue": "-TWB64 142 - Pepsi-Cola Blue",
"TWB64 143 - Bubblun Green": "-TWB64 143 - Bubblun Green",
"TWB64 144 - Bobblun Blue": "-TWB64 144 - Bobblun Blue",
"TWB64 145 - Baja Blast Storm": "-TWB64 145 - Baja Blast Storm",
"TWB64 146 - Olympic Gold": "-TWB64 146 - Olympic Gold",
"TWB64 147 - Value Orange": "-TWB64 147 - Value Orange",
"TWB64 148 - Liella Purple!": "-TWB64 148 - Liella Purple!",
"TWB64 149 - Olympic Silver": "-TWB64 149 - Olympic Silver",
"TWB64 150 - Olympic Bronze": "-TWB64 150 - Olympic Bronze",
"TWB64 151 - ANA Sky Blue": "-TWB64 151 - ANA Sky Blue",
"TWB64 152 - Nijigasaki Orange": "-TWB64 152 - Nijigasaki Orange",
"TWB64 153 - HoloBlue": "-TWB64 153 - HoloBlue",
"TWB64 154 - Wrestling Red": "-TWB64 154 - Wrestling Red",
"TWB64 155 - Yoshi Egg Green": "-TWB64 155 - Yoshi Egg Green",
"TWB64 156 - Pokedex Red": "-TWB64 156 - Pokedex Red",
"TWB64 157 - Disney Dream Blue": "-TWB64 157 - Disney Dream Blue",
"TWB64 158 - Xbox Green": "-TWB64 158 - Xbox Green",
"TWB64 159 - Sonic Mega Blue": "-TWB64 159 - Sonic Mega Blue",
"TWB64 160 - G4 Orange": "-TWB64 160 - G4 Orange",
"TWB64 161 - Scarlett Green": "-TWB64 161 - Scarlett Green",
"TWB64 162 - Glitchy Blue": "-TWB64 162 - Glitchy Blue",
"TWB64 163 - Classic LCD": "-TWB64 163 - Classic LCD",
"TWB64 164 - 3DS Virtual Console Ver.": "-TWB64 164 - 3DS Virtual Console Ver.",
"TWB64 165 - PocketStation Ver.": "-TWB64 165 - PocketStation Ver.",
"TWB64 166 - Game and Gold": "-TWB64 166 - Game and Gold",
"TWB64 167 - Smurfy Blue": "-TWB64 167 - Smurfy Blue",
"TWB64 168 - Swampy Ogre Green": "-TWB64 168 - Swampy Ogre Green",
"TWB64 169 - Sailor Spinach Green": "-TWB64 169 - Sailor Spinach Green",
"TWB64 170 - Shenron Green": "-TWB64 170 - Shenron Green",
"TWB64 171 - Berserk Blood": "-TWB64 171 - Berserk Blood",
"TWB64 172 - Super Star Pink": "-TWB64 172 - Super Star Pink",
"TWB64 173 - Gamebuino Classic Ver.": "-TWB64 173 - Gamebuino Classic Ver.",
"TWB64 174 - Barbie Pink": "-TWB64 174 - Barbie Pink",
"TWB64 175 - Star Command Green": "-TWB64 175 - Star Command Green",
"TWB64 176 - Nokia 3310 Ver.": "-TWB64 176 - Nokia 3310 Ver.",
"TWB64 177 - Clover Green": "-TWB64 177 - Clover Green",
"TWB64 178 - Crash Orange": "-TWB64 178 - Crash Orange",
"TWB64 179 - Famicom Disk Yellow": "-TWB64 179 - Famicom Disk Yellow",
"TWB64 180 - Team Rocket Red": "-TWB64 180 - Team Rocket Red",
"TWB64 181 - SEIKO Timer Yellow": "-TWB64 181 - SEIKO Timer Yellow",
"TWB64 182 - PINK109": "-TWB64 182 - PINK109",
"TWB64 183 - Doraemon Blue": "-TWB64 183 - Doraemon Blue",
"TWB64 184 - Fury Blue": "-TWB64 184 - Fury Blue",
"TWB64 185 - Rockstar Orange": "-TWB64 185 - Rockstar Orange",
"TWB64 186 - Puyo Puyo Green": "-TWB64 186 - Puyo Puyo Green",
"TWB64 187 - Susan G. Pink": "-TWB64 187 - Susan G. Pink",
"TWB64 188 - Pizza Hut Red": "-TWB64 188 - Pizza Hut Red",
"TWB64 189 - Plumbob Green": "-TWB64 189 - Plumbob Green",
"TWB64 190 - Grand Ivory": "-TWB64 190 - Grand Ivory",
"TWB64 191 - Demon's Gold": "-TWB64 191 - Demon's Gold",
"TWB64 192 - SEGA Tokyo Blue": "-TWB64 192 - SEGA Tokyo Blue",
"TWB64 193 - Champion Blue": "-TWB64 193 - Champion Blue",
"TWB64 194 - DK Barrel Brown": "-TWB64 194 - DK Barrel Brown",
"TWB64 195 - Evangelion Green": "-TWB64 195 - Evangelion Green",
"TWB64 196 - Equestrian Purple": "-TWB64 196 - Equestrian Purple",
"TWB64 197 - Autobot Red": "-TWB64 197 - Autobot Red",
"TWB64 198 - Niconico Sea Green": "-TWB64 198 - Niconico Sea Green",
"TWB64 199 - Duracell Copper": "-TWB64 199 - Duracell Copper",
"TWB64 200 - TOKYO SKYTREE CLOUDY BLUE": "-TWB64 200 - TOKYO SKYTREE CLOUDY BLUE",
"gambatte gb palette twb64 2": "-gambatte gb palette twb64 2",
"PixelShift 01 - Arctic Green": "-PixelShift 01 - Arctic Green",
"PixelShift 02 - Arduboy": "-PixelShift 02 - Arduboy",
"PixelShift 03 - BGB 0.3 Emulator": "-PixelShift 03 - BGB 0.3 Emulator",
"PixelShift 04 - Camouflage": "-PixelShift 04 - Camouflage",
"PixelShift 05 - Chocolate Bar": "-PixelShift 05 - Chocolate Bar",
"PixelShift 06 - CMYK": "-PixelShift 06 - CMYK",
"PixelShift 07 - Cotton Candy": "-PixelShift 07 - Cotton Candy",
"PixelShift 08 - Easy Greens": "-PixelShift 08 - Easy Greens",
"PixelShift 09 - Gamate": "-PixelShift 09 - Gamate",
"PixelShift 10 - Game Boy Light": "-PixelShift 10 - Game Boy Light",
"PixelShift 11 - Game Boy Pocket": "-PixelShift 11 - Game Boy Pocket",
"PixelShift 12 - Game Boy Pocket Alt": "-PixelShift 12 - Game Boy Pocket Alt",
"PixelShift 13 - Game Pocket Computer": "-PixelShift 13 - Game Pocket Computer",
"PixelShift 14 - Game & Watch Ball": "-PixelShift 14 - Game & Watch Ball",
"PixelShift 15 - GB Backlight Blue": "-PixelShift 15 - GB Backlight Blue",
"PixelShift 16 - GB Backlight Faded": "-PixelShift 16 - GB Backlight Faded",
"PixelShift 17 - GB Backlight Orange": "-PixelShift 17 - GB Backlight Orange",
"PixelShift 18 - GB Backlight White ": "-PixelShift 18 - GB Backlight White ",
"PixelShift 19 - GB Backlight Yellow Dark": "-PixelShift 19 - GB Backlight Yellow Dark",
"PixelShift 20 - GB Bootleg": "-PixelShift 20 - GB Bootleg",
"PixelShift 21 - GB Hunter": "-PixelShift 21 - GB Hunter",
"PixelShift 22 - GB Kiosk": "-PixelShift 22 - GB Kiosk",
"PixelShift 23 - GB Kiosk 2": "-PixelShift 23 - GB Kiosk 2",
"PixelShift 24 - GB New": "-PixelShift 24 - GB New",
"PixelShift 25 - GB Nuked": "-PixelShift 25 - GB Nuked",
"PixelShift 26 - GB Old": "-PixelShift 26 - GB Old",
"PixelShift 27 - GBP Bivert": "-PixelShift 27 - GBP Bivert",
"PixelShift 28 - GB Washed Yellow Backlight": "-PixelShift 28 - GB Washed Yellow Backlight",
"PixelShift 29 - Ghost": "-PixelShift 29 - Ghost",
"PixelShift 30 - Glow In The Dark": "-PixelShift 30 - Glow In The Dark",
"PixelShift 31 - Gold Bar": "-PixelShift 31 - Gold Bar",
"PixelShift 32 - Grapefruit": "-PixelShift 32 - Grapefruit",
"PixelShift 33 - Gray Green Mix": "-PixelShift 33 - Gray Green Mix",
"PixelShift 34 - Missingno": "-PixelShift 34 - Missingno",
"PixelShift 35 - MS-Dos": "-PixelShift 35 - MS-Dos",
"PixelShift 36 - Newspaper": "-PixelShift 36 - Newspaper",
"PixelShift 37 - Pip-Boy": "-PixelShift 37 - Pip-Boy",
"PixelShift 38 - Pocket Girl": "-PixelShift 38 - Pocket Girl",
"PixelShift 39 - Silhouette": "-PixelShift 39 - Silhouette",
"PixelShift 40 - Sunburst": "-PixelShift 40 - Sunburst",
"PixelShift 41 - Technicolor": "-PixelShift 41 - Technicolor",
"PixelShift 42 - Tron": "-PixelShift 42 - Tron",
"PixelShift 43 - Vaporwave": "-PixelShift 43 - Vaporwave",
"PixelShift 44 - Virtual Boy": "-PixelShift 44 - Virtual Boy",
"PixelShift 45 - Wish": "-PixelShift 45 - Wish",
"gambatte gb palette pixelshift 1": "-gambatte gb palette pixelshift 1",
"gambatte dark filter level": "-gambatte dark filter level",
"GB": "-GB",
"GBC": "-GBC",
"GBA": "-GBA",
"gambatte gb hwmode": "-gambatte gb hwmode",
"gambatte turbo period": "-gambatte turbo period",
"gambatte rumble level": "-gambatte rumble level",
"pcsx rearmed psxclock": "-pcsx rearmed psxclock",
"pcsx rearmed frameskip threshold": "-pcsx rearmed frameskip threshold",
"pcsx rearmed frameskip interval": "-pcsx rearmed frameskip interval",
"pcsx rearmed input sensitivity": "-pcsx rearmed input sensitivity",
"pcsx rearmed gunconadjustx": "-pcsx rearmed gunconadjustx",
"pcsx rearmed gunconadjusty": "-pcsx rearmed gunconadjusty",
"pcsx rearmed gunconadjustratiox": "-pcsx rearmed gunconadjustratiox",
"pcsx rearmed gunconadjustratioy": "-pcsx rearmed gunconadjustratioy",
"Japan NTSC": "-Japan NTSC",
"Japan PAL": "-Japan PAL",
"US": "-US",
"Europe": "-Europe",
"picodrive region": "-picodrive region",
"Game Gear": "-Game Gear",
"Master System": "-Master System",
"SG-1000": "-SG-1000",
"SC-3000": "-SC-3000",
"picodrive smstype": "-picodrive smstype",
"Sega": "-Sega",
"Codemasters": "-Codemasters",
"Korea": "-Korea",
"Korea MSX": "-Korea MSX",
"Korea X-in-1": "-Korea X-in-1",
"Korea 4-Pak": "-Korea 4-Pak",
"Korea Janggun": "-Korea Janggun",
"Korea Nemesis": "-Korea Nemesis",
"Taiwan 8K RAM": "-Taiwan 8K RAM",
"picodrive smsmapper": "-picodrive smsmapper",
"PAR": "-PAR",
"CRT": "-CRT",
"picodrive aspect": "-picodrive aspect",
"native": "-native",
"picodrive sound rate": "-picodrive sound rate",
"picodrive lowpass range": "-picodrive lowpass range",
"picodrive frameskip threshold": "-picodrive frameskip threshold",
"genesis plus gx frameskip threshold": "-genesis plus gx frameskip threshold",
"genesis plus gx lowpass range": "-genesis plus gx lowpass range",
"genesis plus gx psg preamp": "-genesis plus gx psg preamp",
"genesis plus gx fm preamp": "-genesis plus gx fm preamp",
"genesis plus gx cdda volume": "-genesis plus gx cdda volume",
"genesis plus gx pcm volume": "-genesis plus gx pcm volume",
"genesis plus gx audio eq low": "-genesis plus gx audio eq low",
"genesis plus gx audio eq mid": "-genesis plus gx audio eq mid",
"genesis plus gx audio eq high": "-genesis plus gx audio eq high",
"genesis plus gx enhanced vscroll limit": "-genesis plus gx enhanced vscroll limit",
"genesis plus gx psg channel 0 volume": "-genesis plus gx psg channel 0 volume",
"genesis plus gx psg channel 1 volume": "-genesis plus gx psg channel 1 volume",
"genesis plus gx psg channel 2 volume": "-genesis plus gx psg channel 2 volume",
"genesis plus gx psg channel 3 volume": "-genesis plus gx psg channel 3 volume",
"genesis plus gx md channel 0 volume": "-genesis plus gx md channel 0 volume",
"genesis plus gx md channel 1 volume": "-genesis plus gx md channel 1 volume",
"genesis plus gx md channel 2 volume": "-genesis plus gx md channel 2 volume",
"genesis plus gx md channel 3 volume": "-genesis plus gx md channel 3 volume",
"genesis plus gx md channel 4 volume": "-genesis plus gx md channel 4 volume",
"genesis plus gx md channel 5 volume": "-genesis plus gx md channel 5 volume",
"genesis plus gx sms fm channel 0 volume": "-genesis plus gx sms fm channel 0 volume",
"genesis plus gx sms fm channel 1 volume": "-genesis plus gx sms fm channel 1 volume",
"genesis plus gx sms fm channel 2 volume": "-genesis plus gx sms fm channel 2 volume",
"genesis plus gx sms fm channel 3 volume": "-genesis plus gx sms fm channel 3 volume",
"genesis plus gx sms fm channel 4 volume": "-genesis plus gx sms fm channel 4 volume",
"genesis plus gx sms fm channel 5 volume": "-genesis plus gx sms fm channel 5 volume",
"genesis plus gx sms fm channel 6 volume": "-genesis plus gx sms fm channel 6 volume",
"genesis plus gx sms fm channel 7 volume": "-genesis plus gx sms fm channel 7 volume",
"genesis plus gx sms fm channel 8 volume": "-genesis plus gx sms fm channel 8 volume",
"anaglyph": "-anaglyph",
"cyberscope": "-cyberscope",
"side-by-side": "-side-by-side",
"vli": "-vli",
"hli": "-hli",
"vb 3dmode": "-vb 3dmode",
"black & red": "-black & red",
"black & white": "-black & white",
"black & blue": "-black & blue",
"black & cyan": "-black & cyan",
"black & electric cyan": "-black & electric cyan",
"black & green": "-black & green",
"black & magenta": "-black & magenta",
"black & yellow": "-black & yellow",
"vb color mode": "-vb color mode",
"accurate": "-accurate",
"fast": "-fast",
"vb cpu emulation": "-vb cpu emulation"
}

View File

@ -0,0 +1,301 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"Restart": "Перезапуск",
"Pause": "Пауза",
"Play": "Играть",
"Save State": "Сохранить состояние",
"Load State": "Состояние загрузки",
"Control Settings": "Настройки управления",
"Cheats": "Читы",
"Cache Manager": "Менеджер кеша",
"Export Save File": "Экспорт файла сохранения",
"Import Save File": "Импорт файла сохранения",
"Netplay": "Сетевая игра",
"Mute": "Немой",
"Unmute": "Включить звук",
"Settings": "Настройки",
"Enter Fullscreen": "Войти в полноэкранный режим",
"Exit Fullscreen": "Выйти из полноэкранного режима",
"Reset": "Перезагрузить",
"Clear": "Прозрачный",
"Close": "Закрывать",
"QUICK SAVE STATE": "СОСТОЯНИЕ БЫСТРОГО СОХРАНЕНИЯ",
"QUICK LOAD STATE": "СОСТОЯНИЕ БЫСТРОЙ НАГРУЗКИ",
"CHANGE STATE SLOT": "ИЗМЕНИТЬ СОСТОЯНИЕ СЛОТА",
"FAST FORWARD": "ПЕРЕМОТКА ВПЕРЕД",
"Player": "Игрок",
"Connected Gamepad": "Подключенный геймпад",
"Gamepad": "Геймпад",
"Keyboard": "Клавиатура",
"Set": "Набор",
"Add Cheat": "Добавить чит",
"Create a Room": "Создать комнату",
"Rooms": "Номера",
"Start Game": "Начать игру",
"Loading...": "Загрузка...",
"Download Game Core": "Скачать игровое ядро",
"Decompress Game Core": "Распаковать игровое ядро",
"Download Game Data": "Скачать игровые данные",
"Decompress Game Data": "Распаковать игровые данные",
"Shaders": "Шейдеры",
"Disabled": "Неполноценный",
"2xScaleHQ": "2xScaleHQ",
"4xScaleHQ": "4xScaleHQ",
"CRT easymode": "ЭЛТ простой режим",
"CRT aperture": "ЭЛТ-диафрагма",
"CRT geom": "ЭЛТ геом",
"CRT mattias": "ЭЛТ Маттиас",
"FPS": "FPS",
"show": "показывать",
"hide": "скрывать",
"Fast Forward Ratio": "Скорость перемотки вперед",
"Fast Forward": "Перемотка вперед",
"Enabled": "Включено",
"Save State Slot": "Слот сохранения состояния",
"Save State Location": "Сохранить местоположение состояния",
"Download": "Скачать",
"Keep in Browser": "Сохранить в браузере",
"Auto": "Авто",
"NTSC": "НТСК",
"PAL": "ПРИЯТЕЛЬ",
"Dendy": "Денди",
"8:7 PAR": "8:7 пар.",
"4:3": "4:3",
"Low": "Низкий",
"High": "Высокий",
"Very High": "Очень высоко",
"None": "Никто",
"Player 1": "Игрок 1",
"Player 2": "Игрок 2",
"Both": "Оба",
"SAVED STATE TO SLOT": "СОХРАНЕННОЕ СОСТОЯНИЕ В СЛОТЕ",
"LOADED STATE FROM SLOT": "ЗАГРУЖЕННОЕ СОСТОЯНИЕ ИЗ СЛОТА",
"SET SAVE STATE SLOT TO": "УСТАНОВИТЕ СЛОТ СОХРАНЕНИЯ СОСТОЯНИЯ В",
"Network Error": "Ошибка сети",
"Submit": "Представлять на рассмотрение",
"Description": "Описание",
"Code": "Код",
"Add Cheat Code": "Добавить чит-код",
"Leave Room": "Покинуть комнату",
"Password": "Пароль",
"Password (optional)": "Пароль (необязательно)",
"Max Players": "Максимум игроков",
"Room Name": "Название комнаты",
"Join": "Присоединиться",
"Player Name": "Имя игрока",
"Set Player Name": "Установить имя игрока",
"Left Handed Mode": "Режим левой руки",
"Virtual Gamepad": "Виртуальный геймпад",
"Disk": "Диск",
"Press Keyboard": "Нажмите Клавиатура",
"INSERT COIN": "ВСТАВЬТЕ МОНЕТУ",
"Remove": "Удалять",
"SAVE LOADED FROM BROWSER": "СОХРАНИТЬ ЗАГРУЖАЕМЫЕ ИЗ БРАУЗЕРА",
"SAVE SAVED TO BROWSER": "СОХРАНИТЬ В БРАУЗЕРЕ",
"Join the discord": "Присоединяйтесь к разногласиям",
"View on GitHub": "Посмотреть на GitHub",
"Failed to start game": "Не удалось запустить игру",
"Download Game BIOS": "Скачать БИОС игры",
"Decompress Game BIOS": "Распаковать игровой BIOS",
"Download Game Parent": "Скачать игру Родитель",
"Decompress Game Parent": "Распаковать исходную игру",
"Download Game Patch": "Скачать патч для игры",
"Decompress Game Patch": "Распаковать игровой патч",
"Download Game State": "Скачать состояние игры",
"Check console": "Проверить консоль",
"Error for site owner": "Ошибка владельца сайта",
"EmulatorJS": "ЭмуляторJS",
"Clear All": "Очистить все",
"Take Screenshot": "Сделать снимок экрана",
"Quick Save": "Быстрое сохранение",
"Quick Load": "Быстрая загрузка",
"REWIND": "ПЕРЕМОТКА",
"Rewind Enabled (requires restart)": "Включена перемотка назад (требуется перезагрузка)",
"Rewind Granularity": "Детализация перемотки назад",
"Slow Motion Ratio": "Коэффициент замедленной съемки",
"Slow Motion": "Замедленная съемка",
"Home": "Дом",
"EmulatorJS License": "ЭмуляторJS Лицензия",
"RetroArch License": "Лицензия RetroArch",
"SLOW MOTION": "ЗАМЕДЛЕННАЯ СЪЕМКА",
"A": "А",
"B": "Б",
"SELECT": "ВЫБИРАТЬ",
"START": "НАЧИНАТЬ",
"UP": "ВВЕРХ",
"DOWN": "ВНИЗ",
"LEFT": "ЛЕВЫЙ",
"RIGHT": "ВЕРНО",
"X": "Икс",
"Y": "Д",
"L": "л",
"R": "р",
"Z": "Z",
"STICK UP": "ТОРЧАТЬ",
"STICK DOWN": "НАКЛЕЙКА ВНИЗ",
"STICK LEFT": "ПАЛКА ВЛЕВО",
"STICK RIGHT": "ДЕРЖАТЬ ВПРАВО",
"C-PAD UP": "C-PAD ВВЕРХ",
"C-PAD DOWN": "C-PAD ВНИЗ",
"C-PAD LEFT": "C-PAD ЛЕВЫЙ",
"C-PAD RIGHT": "C-ПОДДЕРЖКА ПРАВАЯ",
"MICROPHONE": "МИКРОФОН",
"BUTTON 1 / START": "КНОПКА 1 / СТАРТ",
"BUTTON 2": "КНОПКА 2",
"BUTTON": "КНОПКА",
"LEFT D-PAD UP": "ЛЕВЫЙ D-PAD ВВЕРХ",
"LEFT D-PAD DOWN": "ЛЕВЫЙ D-PAD ВНИЗ",
"LEFT D-PAD LEFT": "ЛЕВЫЙ D-PAD ЛЕВЫЙ",
"LEFT D-PAD RIGHT": "ЛЕВЫЙ D-PAD ПРАВЫЙ",
"RIGHT D-PAD UP": "ПРАВАЯ крестовина вверх",
"RIGHT D-PAD DOWN": "ПРАВАЯ D-PAD ВНИЗ",
"RIGHT D-PAD LEFT": "ПРАВАЯ D-PAD ЛЕВАЯ",
"RIGHT D-PAD RIGHT": "ПРАВАЯ D-PAD ПРАВАЯ",
"C": "С",
"MODE": "РЕЖИМ",
"FIRE": "ОГОНЬ",
"RESET": "ПЕРЕЗАГРУЗИТЬ",
"LEFT DIFFICULTY A": "ЛЕВАЯ ТРУДНОСТЬ А",
"LEFT DIFFICULTY B": "ЛЕВАЯ ТРУДНОСТЬ B",
"RIGHT DIFFICULTY A": "ПРАВИЛЬНАЯ СЛОЖНОСТЬ A",
"RIGHT DIFFICULTY B": "ПРАВИЛЬНАЯ СЛОЖНОСТЬ B",
"COLOR": "ЦВЕТ",
"B/W": "Ч/Б",
"PAUSE": "ПАУЗА",
"OPTION": "ВАРИАНТ",
"OPTION 1": "ОПЦИЯ 1",
"OPTION 2": "ВАРИАНТ 2",
"L2": "L2",
"R2": "R2",
"L3": "L3",
"R3": "R3",
"L STICK UP": "L ЗАСТАТЬ",
"L STICK DOWN": "L СТИКАТЬ ВНИЗ",
"L STICK LEFT": "L РУКОЯТКА ВЛЕВО",
"L STICK RIGHT": "L ПАЛКА ВПРАВО",
"R STICK UP": "R ЗАСТАТЬ",
"R STICK DOWN": "РУКОЯТКА ВНИЗ",
"R STICK LEFT": "РУКОЯТКА ВЛЕВО",
"R STICK RIGHT": "РУКОЯТКА ВПРАВО",
"Start": "Начинать",
"Select": "Выбирать",
"Fast": "Быстрый",
"Slow": "Медленный",
"a": "а",
"b": "б",
"c": "с",
"d": "г",
"e": "е",
"f": "ф",
"g": "г",
"h": "час",
"i": "я",
"j": "Дж",
"k": "к",
"l": "л",
"m": "м",
"n": "н",
"o": "о",
"p": "п",
"q": "д",
"r": "р",
"s": "с",
"t": "т",
"u": "ты",
"v": "в",
"w": "ж",
"x": "Икс",
"y": "у",
"z": "г",
"enter": "входить",
"escape": "побег",
"space": "космос",
"tab": "вкладка",
"backspace": "назад",
"delete": "удалить",
"arrowup": "стрелка вверх",
"arrowdown": "стрелка вниз",
"arrowleft": "стрелка влево",
"arrowright": "стреларайт",
"f1": "f1",
"f2": "f2",
"f3": "f3",
"f4": "f4",
"f5": "f5",
"f6": "f6",
"f7": "f7",
"f8": "f8",
"f9": "f9",
"f10": "f10",
"f11": "f11",
"f12": "f12",
"shift": "сдвиг",
"control": "контроль",
"alt": "альтернативный",
"meta": "мета",
"capslock": "капслок",
"insert": "вставлять",
"home": "дом",
"end": "конец",
"pageup": "подкачка",
"pagedown": "листать вниз",
"!": "!",
"@": "@",
"#": "#",
"$": "$",
"%": "%",
"^": "^",
"&": "&",
"*": "*",
"(": "(",
")": ")",
"-": "-",
"_": "_",
"+": "+",
"=": "\"=\"",
"[": "[",
"]": "]",
"{": "{",
"}": "}",
";": ";",
":": ":",
"'": "'",
"\"": "\"",
",": ",",
".": ".",
"<": "<",
">": ">",
"/": "/",
"?": "?",
"LEFT_STICK_X": "LEFT_STICK_X",
"LEFT_STICK_Y": "LEFT_STICK_Y",
"RIGHT_STICK_X": "RIGHT_STICK_X",
"RIGHT_STICK_Y": "RIGHT_STICK_Y",
"LEFT_TRIGGER": "LEFT_TRIGGER",
"RIGHT_TRIGGER": "RIGHT_TRIGGER",
"A_BUTTON": "КНОПКА",
"B_BUTTON": "B_BUTTON",
"X_BUTTON": "X_BUTTON",
"Y_BUTTON": "Y_BUTTON",
"START_BUTTON": "КНОПКА ПУСК",
"SELECT_BUTTON": "SELECT_BUTTON",
"L1_BUTTON": "L1_BUTTON",
"R1_BUTTON": "R1_BUTTON",
"L2_BUTTON": "L2_BUTTON",
"R2_BUTTON": "R2_BUTTON",
"LEFT_THUMB_BUTTON": "LEFT_THUMB_BUTTON",
"RIGHT_THUMB_BUTTON": "RIGHT_THUMB_BUTTON",
"DPAD_UP": "DPAD_UP",
"DPAD_DOWN": "DPAD_DOWN",
"DPAD_LEFT": "DPAD_LEFT",
"DPAD_RIGHT": "DPAD_RIGHT"
}

View File

@ -0,0 +1,301 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"Restart": "重新开始",
"Pause": "暂停",
"Play": "玩",
"Save State": "保存状态",
"Load State": "负载状态",
"Control Settings": "控制设置",
"Cheats": "秘籍",
"Cache Manager": "缓存管理器",
"Export Save File": "导出保存文件",
"Import Save File": "导入保存文件",
"Netplay": "网络游戏",
"Mute": "沉默的",
"Unmute": "取消静音",
"Settings": "设置",
"Enter Fullscreen": "进入全屏",
"Exit Fullscreen": "退出全屏",
"Reset": "重置",
"Clear": "清除",
"Close": "关闭",
"QUICK SAVE STATE": "快速保存状态",
"QUICK LOAD STATE": "快速加载状态",
"CHANGE STATE SLOT": "改变状态槽",
"FAST FORWARD": "快进",
"Player": "玩家",
"Connected Gamepad": "连接游戏手柄",
"Gamepad": "游戏手柄",
"Keyboard": "键盘",
"Set": "放",
"Add Cheat": "添加作弊",
"Create a Room": "创建房间",
"Rooms": "客房",
"Start Game": "开始游戏",
"Loading...": "正在加载...",
"Download Game Core": "下载游戏核心",
"Decompress Game Core": "解压游戏核心",
"Download Game Data": "下载游戏数据",
"Decompress Game Data": "解压游戏数据",
"Shaders": "着色器",
"Disabled": "残疾人",
"2xScaleHQ": "2xScaleHQ",
"4xScaleHQ": "4xScaleHQ",
"CRT easymode": "CRT简易模式",
"CRT aperture": "CRT孔径",
"CRT geom": "CRT几何",
"CRT mattias": "CRT马蒂亚斯",
"FPS": "FPS",
"show": "展示",
"hide": "隐藏",
"Fast Forward Ratio": "快进比率",
"Fast Forward": "快进",
"Enabled": "启用",
"Save State Slot": "保存状态槽",
"Save State Location": "保存状态位置",
"Download": "下载",
"Keep in Browser": "保留在浏览器中",
"Auto": "汽车",
"NTSC": "NTSC",
"PAL": "朋友",
"Dendy": "丹迪",
"8:7 PAR": "8:7 帕",
"4:3": "4:3",
"Low": "低的",
"High": "高的",
"Very High": "很高",
"None": "没有任何",
"Player 1": "玩家1",
"Player 2": "玩家2",
"Both": "两个都",
"SAVED STATE TO SLOT": "已将状态保存到插槽",
"LOADED STATE FROM SLOT": "从插槽加载状态",
"SET SAVE STATE SLOT TO": "将保存状态槽设置为",
"Network Error": "网络错误",
"Submit": "提交",
"Description": "描述",
"Code": "代码",
"Add Cheat Code": "添加作弊码",
"Leave Room": "留出空间",
"Password": "密码",
"Password (optional)": "密码(可选)",
"Max Players": "最大玩家数",
"Room Name": "房间名称",
"Join": "加入",
"Player Name": "参赛者姓名",
"Set Player Name": "设置玩家名称",
"Left Handed Mode": "左手模式",
"Virtual Gamepad": "虚拟游戏手柄",
"Disk": "磁盘",
"Press Keyboard": "按键盘",
"INSERT COIN": "投币",
"Remove": "消除",
"SAVE LOADED FROM BROWSER": "保存从浏览器加载",
"SAVE SAVED TO BROWSER": "保存 已保存到浏览器",
"Join the discord": "加入不和谐的行列",
"View on GitHub": "在 GitHub 上查看",
"Failed to start game": "无法开始游戏",
"Download Game BIOS": "下载游戏BIOS",
"Decompress Game BIOS": "解压游戏BIOS",
"Download Game Parent": "下载游戏家长",
"Decompress Game Parent": "解压游戏父级",
"Download Game Patch": "下载游戏补丁",
"Decompress Game Patch": "解压游戏补丁",
"Download Game State": "下载游戏状态",
"Check console": "检查控制台",
"Error for site owner": "网站所有者的错误",
"EmulatorJS": "模拟器JS",
"Clear All": "全部清除",
"Take Screenshot": "截图",
"Quick Save": "快速保存",
"Quick Load": "快速加载",
"REWIND": "倒带",
"Rewind Enabled (requires restart)": "已启用快退(需要重新启动)",
"Rewind Granularity": "倒回粒度",
"Slow Motion Ratio": "慢动作比率",
"Slow Motion": "慢动作",
"Home": "家",
"EmulatorJS License": "EmulatorJS 许可证",
"RetroArch License": "RetroArch 许可证",
"SLOW MOTION": "慢动作",
"A": "A",
"B": "乙",
"SELECT": "选择",
"START": "开始",
"UP": "向上",
"DOWN": "向下",
"LEFT": "左边",
"RIGHT": "正确的",
"X": "X",
"Y": "是",
"L": "L",
"R": "右",
"Z": "Z",
"STICK UP": "竖起",
"STICK DOWN": "坚持下来",
"STICK LEFT": "向左摇杆",
"STICK RIGHT": "向右摇杆",
"C-PAD UP": "C-PAD 向上",
"C-PAD DOWN": "C-PAD 向下",
"C-PAD LEFT": "C-PAD 左",
"C-PAD RIGHT": "C-PAD 右",
"MICROPHONE": "麦克风",
"BUTTON 1 / START": "按钮 1 / 开始",
"BUTTON 2": "按钮2",
"BUTTON": "按钮",
"LEFT D-PAD UP": "左方向键向上",
"LEFT D-PAD DOWN": "左方向键按下",
"LEFT D-PAD LEFT": "左方向键左",
"LEFT D-PAD RIGHT": "左方向键 右",
"RIGHT D-PAD UP": "右方向键向上",
"RIGHT D-PAD DOWN": "右方向键向下",
"RIGHT D-PAD LEFT": "右方向键 左",
"RIGHT D-PAD RIGHT": "右方向键右",
"C": "C",
"MODE": "模式",
"FIRE": "火",
"RESET": "重置",
"LEFT DIFFICULTY A": "左难度A",
"LEFT DIFFICULTY B": "左难度B",
"RIGHT DIFFICULTY A": "正确难度A",
"RIGHT DIFFICULTY B": "正确难度B",
"COLOR": "颜色",
"B/W": "黑白",
"PAUSE": "暂停",
"OPTION": "选项",
"OPTION 1": "选项1",
"OPTION 2": "选项2",
"L2": "L2",
"R2": "R2",
"L3": "L3",
"R3": "R3",
"L STICK UP": "L 粘起来",
"L STICK DOWN": "L 坚持下来",
"L STICK LEFT": "L 向左摇杆",
"L STICK RIGHT": "L 向右摇杆",
"R STICK UP": "R 粘起来",
"R STICK DOWN": "R 向下摇杆",
"R STICK LEFT": "R 向左摇杆",
"R STICK RIGHT": "R 右摇杆",
"Start": "开始",
"Select": "选择",
"Fast": "快速地",
"Slow": "慢的",
"a": "A",
"b": "乙",
"c": "C",
"d": "d",
"e": "e",
"f": "F",
"g": "G",
"h": "H",
"i": "我",
"j": "j",
"k": "k",
"l": "我",
"m": "米",
"n": "n",
"o": "哦",
"p": "p",
"q": "q",
"r": "r",
"s": "s",
"t": "t",
"u": "你",
"v": "v",
"w": "w",
"x": "X",
"y": "y",
"z": "z",
"enter": "进入",
"escape": "逃脱",
"space": "空间",
"tab": "标签",
"backspace": "退格键",
"delete": "删除",
"arrowup": "向上箭头",
"arrowdown": "向下箭头",
"arrowleft": "向左箭头",
"arrowright": "向右箭头",
"f1": "f1",
"f2": "f2",
"f3": "f3",
"f4": "f4",
"f5": "f5",
"f6": "f6",
"f7": "f7",
"f8": "f8",
"f9": "f9",
"f10": "f10",
"f11": "f11",
"f12": "F12",
"shift": "转移",
"control": "控制",
"alt": "替代",
"meta": "元",
"capslock": "大写锁定",
"insert": "插入",
"home": "家",
"end": "结尾",
"pageup": "向上翻页",
"pagedown": "向下翻页",
"!": "",
"@": "@",
"#": "#",
"$": "$",
"%": "%",
"^": "^",
"&": "&",
"*": "*",
"(": "",
")": "",
"-": "-",
"_": "_",
"+": "+",
"=": "=",
"[": "[",
"]": "]",
"{": "{",
"}": "}",
";": ";",
":": ":",
"'": "'",
"\"": "”",
",": ",",
".": "。",
"<": "<",
">": ">",
"/": "/",
"?": "",
"LEFT_STICK_X": "LEFT_STICK_X",
"LEFT_STICK_Y": "LEFT_STICK_Y",
"RIGHT_STICK_X": "RIGHT_STICK_X",
"RIGHT_STICK_Y": "RIGHT_STICK_Y",
"LEFT_TRIGGER": "左触发",
"RIGHT_TRIGGER": "右触发",
"A_BUTTON": "一个按钮",
"B_BUTTON": "B_按钮",
"X_BUTTON": "X_按钮",
"Y_BUTTON": "Y_按钮",
"START_BUTTON": "开始按钮",
"SELECT_BUTTON": "选择按钮",
"L1_BUTTON": "L1_BUTTON",
"R1_BUTTON": "R1_按钮",
"L2_BUTTON": "L2_BUTTON",
"R2_BUTTON": "R2_BUTTON",
"LEFT_THUMB_BUTTON": "左拇指按钮",
"RIGHT_THUMB_BUTTON": "RIGHT_THUMB_BUTTON",
"DPAD_UP": "DPAD_UP",
"DPAD_DOWN": "DPAD_向下",
"DPAD_LEFT": "DPAD_左",
"DPAD_RIGHT": "DPAD_RIGHT"
}

View File

@ -0,0 +1,35 @@
# Minifying
Before pushing the script files onto your production <br>
server it is recommended to minify them to save on <br>
load times as well as bandwidth.
<br>
## Requirements
- **[NodeJS]**
<br>
## Steps
1. Open a terminal in`/data/minify`.
2. Install the dependencies with:
```sh
npm install
```
3. Start the minification with:
```sh
node index.js
```
<!----------------------------------------------------------------------------->
[NodeJS]: https://nodejs.org/en/download/

View File

@ -0,0 +1,27 @@
const UglifyJS = require("uglify-js");
const fs = require('fs');
const uglifycss = require('uglifycss');
let files = [
'nipplejs.js',
'shaders.js',
'storage.js',
'gamepad.js',
'GameManager.js',
'socket.io.min.js',
'emulator.js'
]
let code = "(function() {\n";
for (let i=0; i<files.length; i++) {
code += fs.readFileSync('../'+files[i], 'utf8') + "\n";
}
code += "\n})();"
function minify(source){
const ast = UglifyJS.parse(source);
return UglifyJS.minify(ast).code;
}
console.log('minifying');
fs.writeFileSync('../emulator.min.css', uglifycss.processString(fs.readFileSync('../emulator.css', 'utf8')));
fs.writeFileSync('../emulator.min.js', minify(code));
console.log('done!');

50
emulatorjs/data/minify/package-lock.json generated Normal file
View File

@ -0,0 +1,50 @@
{
"name": "emulatorjs-minify",
"version": "1.0.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "emulatorjs-minify",
"version": "1.0.1",
"dependencies": {
"uglify-js": "^3.17.4",
"uglifycss": "0.0.29"
}
},
"node_modules/uglify-js": {
"version": "3.17.4",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
"integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
"bin": {
"uglifyjs": "bin/uglifyjs"
},
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/uglifycss": {
"version": "0.0.29",
"resolved": "https://registry.npmjs.org/uglifycss/-/uglifycss-0.0.29.tgz",
"integrity": "sha512-J2SQ2QLjiknNGbNdScaNZsXgmMGI0kYNrXaDlr4obnPW9ni1jljb1NeEVWAiTgZ8z+EBWP2ozfT9vpy03rjlMQ==",
"bin": {
"uglifycss": "uglifycss"
},
"engines": {
"node": ">=6.4.0"
}
}
},
"dependencies": {
"uglify-js": {
"version": "3.17.4",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
"integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g=="
},
"uglifycss": {
"version": "0.0.29",
"resolved": "https://registry.npmjs.org/uglifycss/-/uglifycss-0.0.29.tgz",
"integrity": "sha512-J2SQ2QLjiknNGbNdScaNZsXgmMGI0kYNrXaDlr4obnPW9ni1jljb1NeEVWAiTgZ8z+EBWP2ozfT9vpy03rjlMQ=="
}
}
}

View File

@ -0,0 +1,22 @@
{
"name": "emulatorjs-minify",
"version": "1.0.1",
"description": "Minify the EmulatorJS javascript files",
"main": "index.js",
"scripts": {
"build": "node index.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/EmulatorJS/EmulatorJS.git"
},
"author": "Ethan O'Brien",
"bugs": {
"url": "https://github.com/EmulatorJS/EmulatorJS/issues"
},
"homepage": "https://github.com/EmulatorJS/EmulatorJS#readme",
"dependencies": {
"uglify-js": "^3.17.4",
"uglifycss": "0.0.29"
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

7
emulatorjs/data/socket.io.min.js vendored Normal file

File diff suppressed because one or more lines are too long

104
emulatorjs/data/storage.js Normal file
View File

@ -0,0 +1,104 @@
class EJS_STORAGE {
constructor(dbName, storeName) {
this.dbName = dbName;
this.storeName = storeName;
}
addFileToDB(key, add) {
(async () => {
if (key === "?EJS_KEYS!") return;
let keys = await this.get("?EJS_KEYS!");
if (!keys) keys = [];
if (add) {
if (!keys.includes(key)) keys.push(key);
} else {
const index = keys.indexOf(key);
if (index !== -1) keys.splice(index, 1);
}
this.put("?EJS_KEYS!", keys);
})();
}
get(key) {
return new Promise((resolve, reject) => {
if (!window.indexedDB) return resolve();
let openRequest = indexedDB.open(this.dbName, 1);
openRequest.onerror = () => resolve();
openRequest.onsuccess = () => {
let db = openRequest.result;
let transaction = db.transaction([this.storeName], "readwrite");
let objectStore = transaction.objectStore(this.storeName);
let request = objectStore.get(key);
request.onsuccess = (e) => {
resolve(request.result);
};
request.onerror = () => resolve();
};
openRequest.onupgradeneeded = () => {
let db = openRequest.result;
if (! db.objectStoreNames.contains(this.storeName)) {
db.createObjectStore(this.storeName);
};
};
});
}
put(key, data) {
return new Promise((resolve, reject) => {
if (!window.indexedDB) return resolve();
let openRequest = indexedDB.open(this.dbName, 1);
openRequest.onerror = () => {};
openRequest.onsuccess = () => {
let db = openRequest.result;
let transaction = db.transaction([this.storeName], "readwrite");
let objectStore = transaction.objectStore(this.storeName);
let request = objectStore.put(data, key);
request.onerror = () => resolve();
request.onsuccess = () => {
this.addFileToDB(key, true);
resolve();
}
};
openRequest.onupgradeneeded = () => {
let db = openRequest.result;
if (! db.objectStoreNames.contains(this.storeName)) {
db.createObjectStore(this.storeName);
};
};
})
}
remove(key) {
return new Promise((resolve, reject) => {
if (!window.indexedDB) return resolve();
let openRequest = indexedDB.open(this.dbName, 1);
openRequest.onerror = () => {};
openRequest.onsuccess = () => {
let db = openRequest.result;
let transaction = db.transaction([this.storeName], "readwrite");
let objectStore = transaction.objectStore(this.storeName);
let request2 = objectStore.delete(key);
this.addFileToDB(key, false);
request2.onsuccess = () => resolve();
request2.onerror = () => {};
};
openRequest.onupgradeneeded = () => {
let db = openRequest.result;
if (! db.objectStoreNames.contains(this.storeName)) {
db.createObjectStore(this.storeName);
};
};
});
}
getSizes() {
return new Promise(async (resolve, reject) => {
if (!window.indexedDB) resolve({});
const keys = await this.get("?EJS_KEYS!");
if (!keys) return resolve({});
let rv = {};
for (let i=0; i<keys.length; i++) {
const result = await this.get(keys[i]);
if (!result || !result.data || typeof result.data.byteLength !== "number") continue;
rv[keys[i]] = result.data.byteLength;
}
resolve(rv);
})
}
}
window.EJS_STORAGE = EJS_STORAGE;

View File

@ -0,0 +1 @@
{ "current_version": 40.8 }

215
emulatorjs/index.html Normal file
View File

@ -0,0 +1,215 @@
<!DOCTYPE html>
<html>
<head>
<title>EmulatorJS</title>
<script src="/js/all.js"></script>
<meta name = viewport content = "width = device-width, initial-scale = 1">
<style>
body, html {
height: 100%;
}
body {
font-family: monospace;
font-weight: bold;
font-size: 20px;
margin: 0;
overflow: hidden;
background-color: #222
}
body, #box {
display: flex;
align-items: center;
justify-content: center;
}
#box {
color: #aaa;
height: 20em;
width: 30em;
max-width: 80%;
max-height: 80%;
background-color: #333;
border-radius: 0.4em;
border: 2px solid #555;
position: relative;
flex-direction: column;
transition-duration: 0.2s;
overflow: hidden
}
#box:hover, #box[drag] {
border-color: #38f;
color: #ddd
}
#input {
cursor: pointer;
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
opacity: 0
}
#display {
width: 100%;
height: 100%
}
select, button {
padding: 0.6em 0.4em;
margin: 0.5em;
width: 15em;
max-width: 100%;
font-family: monospace;
font-weight: bold;
font-size: 16px;
background-color: #444;
color: #aaa;
border-radius: 0.4em;
border: 1px solid #555;
cursor: pointer;
transition-duration: 0.2s
}
select:hover, button:hover {
background-color: #666;
color: #ddd
}
</style>
</head>
<body>
<div id = box style="text-align: center;">
<input type = file id = input>
<strong>Drag ROM file or click here</strong>
we may not always autodetect the correct system, make sure to select the right system
</div>
<script>
input.onchange = async () => {
const url = new Blob([input.files[0]])
const parts = input.files[0].name.split(".")
const core = await (async (ext) => {
if (["fds", "nes", "unif", "unf"].includes(ext))
return "nes"
if (["smc", "fig", "sfc", "gd3", "gd7", "dx2", "bsx", "swc"].includes(ext))
return "snes"
if (["z64", "n64"].includes(ext))
return "n64"
if (["pce"].includes(ext))
return "pce"
if (["ngp", "ngc"].includes(ext))
return "ngp"
if (["ws", "wsc"].includes(ext))
return "ws"
if (["col", "cv"].includes(ext))
return "coleco"
if (["d64"].includes(ext))
return "vice_x64"
if (["gbc"].includes(ext))
return "gba"
if (["nds", "gba", "gb", "z64", "n64"].includes(ext))
return ext
return await new Promise(resolve => {
const cores = {
"Nintendo 64": "n64",
"Nintendo Game Boy": "gb",
"Nintendo Game Boy Advance": "gba",
"Nintendo DS": "nds",
"Nintendo Entertainment System": "nes",
"Super Nintendo Entertainment System": "snes",
"PlayStation": "psx",
"Virtual Boy": "vb",
"Sega Mega Drive": "segaMD",
"Sega Master System": "segaMS",
"Sega CD": "segaCD",
"Atari Lynx": "lynx",
"Sega 32X": "sega32x",
"Atari Jaguar": "jaguar",
"Sega Game Gear": "segaGG",
"Sega Saturn": "segaSaturn",
"Atari 7800": "atari7800",
"Atari 2600": "atari2600",
"NEC TurboGrafx-16/SuperGrafx/PC Engine": "pce",
"NEC PC-FX": "pcfx",
"SNK NeoGeo Pocket (Color)": "ngp",
"Bandai WonderSwan (Color)": "ws",
"ColecoVision": "coleco",
"Commodore 64": "vice_x64"
}
const button = document.createElement("button")
const select = document.createElement("select")
for (const type in cores) {
const option = document.createElement("option")
option.value = cores[type]
option.textContent = type
select.appendChild(option)
}
button.onclick = () => resolve(select[select.selectedIndex].value)
button.textContent = "Load game"
box.innerHTML = ""
box.appendChild(select)
box.appendChild(button)
})
})(parts.pop())
const div = document.createElement("div")
const sub = document.createElement("div")
const script = document.createElement("script")
sub.id = "game"
div.id = "display"
box.remove()
div.appendChild(sub)
document.body.appendChild(div)
window.EJS_player = "#game";
window.EJS_gameName = parts.shift();
window.EJS_biosUrl = "";
window.EJS_gameUrl = url;
window.EJS_core = core;
window.EJS_pathtodata = "data/";
window.EJS_startOnLoaded = true;
script.src = "data/loader.js";
document.body.appendChild(script);
}
function detectAdBlock(url) {
let adBlockEnabled = false;
try {
window.EJS_AdUrl = document.querySelector('iframe[src="'+window.EJS_AdUrl+'"]').src;
} catch (e) {
adBlockEnabled = true;
}
if (adBlockEnabled) {
window.EJS_adBlocked(url);
}
}
box.ondragover = () => box.setAttribute("drag", true);
box.ondragleave = () => box.removeAttribute("drag");
</script>
</body>
</html>

View File

@ -1,7 +1,7 @@
{
"companyName": "Madalin Games",
"productName": "Madalin Cars Multiplayer",
"dataUrl": "https://rawcdn.githack.com/xlegends/Game-Hub-Lite/main/madalin-cars-multiplayer/Build/7d7b82eb5e1c0ce8feedf2e1323e904d.unityweb",
"dataUrl": "https://raw.githubusercontent.com/xlegends/Game-Hub-Lite/main/madalin-cars-multiplayer/Build/7d7b82eb5e1c0ce8feedf2e1323e904d.unityweb",
"asmCodeUrl": "9b295d23076674c38dbcfccd30746d6a.unityweb",
"asmMemoryUrl": "4d451a766092c974a014877a34ad2f00.unityweb",
"asmFrameworkUrl": "cf0bec62445ad7dcdbd3523e8a04bab6.unityweb",

View File

@ -72,15 +72,6 @@
<a href="/about.html">About</a>
</header>
<gameframe>
<div id="header">
<sl-icon-button name="arrow-left-circle" label="Go back"></sl-icon-button>
<h3 id="gametitle">Celeste</h3>
</div>
<iframe src="celeste/index.html">
</iframe>
</gameframe>
<main>
<input class="hiddenUpload" type="file" accept=".save" hidden />

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