diff --git a/data/emu-main.js b/data/emu-main.js index b270355..7dcd887 100644 --- a/data/emu-main.js +++ b/data/emu-main.js @@ -225,10 +225,11 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0x455c85(_0x4e4b15) { - var _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] ? arguments[0x1] : '', - _0x2c1832 = arguments.length > 0x2 ? arguments[0x2] : void 0x0, - _0x2b8c91 = !(arguments.length > 0x3 && void 0x0 !== arguments[0x3]) || arguments[0x3], - _0x23e991 = arguments.length > 0x4 && void 0x0 !== arguments[0x4] && arguments[0x4]; + var _0x17edbf = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : '', + _0x2c1832 = arguments.length > 2 ? arguments[2] : void 0, + _0x2b8c91 = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3], + _0x23e991 = arguments.length > 4 && void 0 !== arguments[4] && arguments[4]; + _0x1ef215.call(this, _0x4e4b15, _0x17edbf, function _0x5127f4() { _0x20109b(_0x4e4b15, _0x17edbf, _0x5127f4, _0x2b8c91, _0x23e991); for (var _0x1fe440 = arguments.length, _0x1d3219 = new Array(_0x1fe440), _0x54457c = 0x0; _0x54457c < _0x1fe440; _0x54457c++) _0x1d3219[_0x54457c] = arguments[_0x54457c]; @@ -963,42 +964,14 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x5a641d = _0x2c1832.n(_0xc778fa), _0x4d7024 = { '_FS': { - 'createPath': function(parent, path, canRead, canWrite) { + 'createFolder': function(parent, name, canRead, canWrite) { if (! _0x4d7024.FS) return; - if (typeof _0x4d7024.FS.mkdir == 'function') { - _0x4d7024.FS.mkdir(path); + if (typeof _0x4d7024.FS.mkdir == 'function' && window.PATH) { + var path = PATH.join2(typeof parent === 'string' ? parent : _0x4d7024.FS.getPath(parent), name); + var mode = _0x4d7024.FS.getMode(canRead, canWrite); + _0x4d7024.FS.mkdir(path, mode); } else { - _0x4d7024.FS.createPath(parent, path, canRead, canWrite); - } - }, - 'createDataFile': function(parent, name, data, canRead, canWrite, canOwn) { - if (! _0x4d7024.FS) return; - if (typeof _0x4d7024.FS.writeFile == 'function') { - var path = function(parent, name) { - if (parent.endsWith('/') || name.startsWith('/')) { - return parent + name; - } else { - return parent + '/' + name; - } - }(parent, name); - _0x4d7024.FS.writeFile(path, data); - } else { - _0x4d7024.FS.createDataFile(parent, name, data, canRead, canWrite, canOwn); - } - }, - 'createFolder': function(parent, name, a, b) { - if (! _0x4d7024.FS) return; - if (typeof _0x4d7024.FS.mkdir == 'function') { - var path = function(parent, name) { - if (parent.endsWith('/') || name.startsWith('/')) { - return parent + name; - } else { - return parent + '/' + name; - } - }(parent, name); - _0x4d7024.FS.mkdir(path); - } else { - _0x4d7024.FS.createFolder(parent, name, a, b); + _0x4d7024.FS.createFolder(parent, name, canRead, canWrite); } } }, @@ -1058,8 +1031,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'arcade': ['zip'], 'fba0.2.97.29': ['zip'], 'mame2003': ['zip'], - 'mame': ['zip'], - 'dos': ['zip'] + 'mame': ['zip'] }, _0x29078e = { 'psx': 'psx', @@ -1093,8 +1065,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'arcade': 'arcade', 'fba0.2.97.29': 'fba0.2.97.29', 'jaguar': 'jaguar', - 'mame2003': 'mame2003', - 'dos': 'dos' + 'mame2003': 'mame2003' }, _0xc6823 = this, _0x1143c5 = _0xc6823.system; @@ -1442,6 +1413,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { var _0x55627a = _0xa88a13, _0x1cfda7 = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p3)), _0x429d6b = (_0x1bc287.split('.').pop(), _0x29078e[_0x1143c5]), + _0xb0c5d8 = -1, _0x567713 = '', _0x567717 = function() { if (_0x55627a.coreVer === 2) { @@ -1511,6 +1483,12 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { if (_0xc6823.coreVer === 2) { _0x4d7024.Module.resumeMainLoop(); _0x4d7024.Module.setCanvasSize(800, 600); + var i=0; + var j = setInterval(function() { // some cores have a messed up screen size on load (for example - gba) + if (i>20) clearInterval(j); + i++; + _0x4d7024.Module.setCanvasSize(800, 600); + }, 100) } _0xbae705.call(_0x55627a, _0x55627a.elements.container, 'start-game'); try{_0x567717();}catch(e){} @@ -1527,16 +1505,12 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { start(_0x55627a.startName); } if (2 === _0x52e6f3.data.t) { - var _0x1c661d = _0x52e6f3.data.file.replace(/\#/g, ''); - try { - _0x468801 += _0x52e6f3.data.data.length; - _0x4d7024._FS.createDataFile('/', _0x1c661d, _0x52e6f3.data.data, true, false); - if (_0x1e0766[_0x429d6b].includes(_0x52e6f3.data.file.split('.').pop())) { - _0x55627a.startName = _0x52e6f3.data.file; - } - } catch (_0x210043) { - console.log(_0x210043); - } + var _0x25aae3 = _0x52e6f3.data.file.split('/'), + _0x1bc287 = _0x25aae3.pop(), + _0x1844e3 = _0x1bc287.split('.').pop(); + _0x1bc287 = _0x1bc287.replace(/\#/g, ''), _0x4d7024.FS.createPath('/', _0x25aae3.join('/'), true, true); + for (var _0x36bace = _0x1e0766[_0x429d6b].length - 0x1; _0x36bace >= 0x0; _0x36bace -= 0x1) _0x1e0766[_0x429d6b][_0x36bace] === _0x1844e3.toLowerCase() && _0x36bace > _0xb0c5d8 && (_0xb0c5d8 = _0x36bace, _0x55627a.startName = ['', _0x25aae3.join('/'), _0x1bc287].join('/'), _0x55627a.startName = _0x55627a.startName.replace(/\/+/, '/')); + _0x1bc287 && (_0x4d7024.FS.createDataFile('/' .concat(_0x25aae3.join('/')), _0x1bc287, _0x52e6f3.data.data, true, !0x1), _0x468801 += _0x52e6f3.data.data.length), _0x567713 = '/' .concat(_0x25aae3.join('/'), '/').concat(_0x1bc287); } if (4 === _0x52e6f3.data.t && _0x52e6f3.data.total > 0) { var _0x163fc4 = Math.floor(_0x52e6f3.data.current / _0x52e6f3.data.total * 100), @@ -1575,7 +1549,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { var _0x1c661d = _0x1bc287.replace(/\#/g, ''); try { _0x468801 += _0x1844e3.length; - _0x4d7024._FS.createDataFile('/', _0x1c661d, _0x1844e3, true, false); + _0x4d7024.FS.createDataFile('/', _0x1c661d, _0x1844e3, true, false); } catch (_0x210043) { console.log(_0x210043); } @@ -1717,7 +1691,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { var _0x17edbf = _0x36004e.data.file.split('/'), _0x2c1832 = _0x17edbf.pop(), _0x2b320e = _0x2c1832.split('.').pop(); - _0x4d7024._FS.createPath('/', _0x17edbf.join('/'), true, true), _0x4d7024._FS.createDataFile('/' + _0x17edbf.join('/'), _0x2c1832, _0x36004e.data.data, true, !0x1), _0x468801 += _0x36004e.data.data.length, ['ips', 'bps', 'ups'].includes(_0x2b320e) && !_0x4d7024.gamePatch && (_0x4d7024.gamePatch = '/' + _0x17edbf.join('/') + '/' + _0x2c1832); + _0x4d7024.FS.createPath('/', _0x17edbf.join('/'), true, true), _0x4d7024.FS.createDataFile('/' + _0x17edbf.join('/'), _0x2c1832, _0x36004e.data.data, true, !0x1), _0x468801 += _0x36004e.data.data.length, ['ips', 'bps', 'ups'].includes(_0x2b320e) && !_0x4d7024.gamePatch && (_0x4d7024.gamePatch = '/' + _0x17edbf.join('/') + '/' + _0x2c1832); } if (0x4 === _0x36004e.data.t && _0x36004e.data.total > 0x0) { var _0x1097ca = Math.floor(_0x36004e.data.current / _0x36004e.data.total * 0x64), @@ -1746,7 +1720,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } else { _0x468801 += _0x1097ca.length; _0x4d7024.gamePatch = '/'+_0xe531f0; - _0x4d7024._FS.createDataFile('/', _0xe531f0, _0x1097ca, true, false); + _0x4d7024.FS.createDataFile('/', _0xe531f0, _0x1097ca, true, false); _0x5048db(); } }).catch(function(_0x314293) { @@ -1810,7 +1784,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }); var _0x54d79 = _0xa1889f.replace(/\#/g, ''); try { - _0x468801 += _0x17edbf.length, _0x4d7024._FS.createDataFile('/', _0x54d79, _0x17edbf, true, !0x1), _0x139f68(); + _0x468801 += _0x17edbf.length, _0x4d7024.FS.createDataFile('/', _0x54d79, _0x17edbf, true, !0x1), _0x139f68(); } catch (_0x125736) { console.log(_0x125736); } @@ -1829,9 +1803,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { return _0x1c8a88; }).length !== _0x6f30ae ? _0x31f098() : (_0x198a02.forEach(function(_0x22b824, _0x16eecf) { _0x2c1832.set(_0x22b824.data, 0x6400000 * (_0x16eecf + 0x1)); - }), _0x4d7024._FS.createDataFile('/', _0x3e612b.filename, _0x2c1832, true, !0x1), _0x139f68()); + }), _0x4d7024.FS.createDataFile('/', _0x3e612b.filename, _0x2c1832, true, !0x1), _0x139f68()); }, function() {}, 'sparse'); - } else _0x4d7024._FS.createDataFile('/', _0x3e612b.filename, _0x3e612b.data, true, !0x1), _0x139f68(); + } else _0x4d7024.FS.createDataFile('/', _0x3e612b.filename, _0x3e612b.data, true, !0x1), _0x139f68(); else _0x31f098(); }) : _0x31f098(); }).catch(function(_0x20f2e3) { @@ -1853,8 +1827,8 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { var _0x17edbf = _0x1e8643.data.file.split('/'), _0x2c1832 = _0x17edbf.pop(); _0x2c1832.split('.').pop(); - _0x4d7024._FS.createPath('/', _0x17edbf.join('/'), true, true); - _0x4d7024._FS.createDataFile('/' + _0x17edbf.join('/'), _0x2c1832, _0x1e8643.data.data, true, false); + _0x4d7024.FS.createPath('/', _0x17edbf.join('/'), true, true); + _0x4d7024.FS.createDataFile('/' + _0x17edbf.join('/'), _0x2c1832, _0x1e8643.data.data, true, false); _0x468801 += _0x1e8643.data.data.length; } if (4 === _0x1e8643.data.t && _0x1e8643.data.total > 0) { @@ -1873,7 +1847,8 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }); } else if (_0x80852b === 'rar') { extractRar(_0x4ce206).then(function(_0x259be0) { - _0x259be0.onmessage = _0x19a43e, _0x259be0.postMessage(_0x3cff36); + _0x259be0.onmessage = _0x19a43e; + _0x259be0.postMessage(_0x3cff36); }); } else if (_0x80852b === 'zip' && !['arcade', 'mame', 'mame2003', 'fba0.2.97.29'].includes(_0x3ea97.system)) { extractFile(_0x2c1832).then(function(_0x31c70d) { @@ -1883,7 +1858,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } else { _0x468801 += _0x3cff36.length; _0x50119.innerHTML = 'BIOS ready'; - _0x4d7024._FS.createDataFile('/', _0x5e7c8b, _0x3cff36, true, false); + _0x4d7024.FS.createDataFile('/', _0x5e7c8b, _0x3cff36, true, false); _0x452592(); } }, @@ -1927,15 +1902,15 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { var _0x55117c = _0x5dc0c0(_0x36edb7, _0x2593da.storage.get('core-options') || {}), _0x32dd27 = ''; if (_0x2c1832.coreVer === 2) { - _0x4d7024._FS.createDataFile('/etc', 'retroarch.cfg', _0x14d39f, true, true); + _0x4d7024.FS.createDataFile('/etc', 'retroarch.cfg', _0x14d39f, true, true); _0x4d7024._FS.createFolder('/home/web_user', 'retroarch', true, true); _0x4d7024._FS.createFolder('/home/web_user/retroarch', 'userdata', true, true); - _0x4d7024._FS.createDataFile('/home/web_user/retroarch/userdata', 'retroarch.cfg', _0x32dd27, true, true); + _0x4d7024.FS.createDataFile('/home/web_user/retroarch/userdata', 'retroarch.cfg', _0x32dd27, true, true); } else { - _0x4d7024._FS.createDataFile('/etc', 'retroarch.cfg', _0x14d39f, true, true); + _0x4d7024.FS.createDataFile('/etc', 'retroarch.cfg', _0x14d39f, true, true); _0x4d7024._FS.createFolder('/home/web_user', '.config', true, true); _0x4d7024._FS.createFolder('/home/web_user/.config', 'retroarch', true, true); - _0x4d7024._FS.createDataFile('/home/web_user/.config/retroarch', 'retroarch-core-options.cfg', _0x32dd27, true, true); + _0x4d7024.FS.createDataFile('/home/web_user/.config/retroarch', 'retroarch-core-options.cfg', _0x32dd27, true, true); } if (_0x55117c && Object.keys(_0x55117c).forEach(function(_0x2950d3) { if (_0x2c1832.lightgun && 'nes' === _0x2c1832.system && 'system_type' === _0x2950d3) return !0x1; @@ -2150,7 +2125,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x9a1f1 = Boolean(_0x28ee7f.asmjs), _0x3e4345 = Boolean(_0x28ee7f.wasm); var status = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p1)); - if (!(_this.config.oldCores && _0x28ee7f.oldCores === 1) && _0x28ee7f.newCores === 1 && (_0x2d904a.wasm || _0x9a1f1) && !(_0x4d7024.isMobileDevice && _0x28ee7f.oldCores === 1)) { + if (!(_this.config.oldCores === true && _0x28ee7f.oldCores === 1) && _0x28ee7f.newCores === 1 && (_0x2d904a.wasm || _0x9a1f1) && !(_0x4d7024.isMobileDevice && _0x28ee7f.oldCores === 1)) { _this.coreVer = 2; delete Module.readAsync; Module.INITIAL_MEMORY = Module.TOTAL_MEMORY; @@ -2934,7 +2909,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, 'setGamepadDialog': function() { var _0xa88a13 = this; - _0xa88a13.elements.dialogs.gamepad.innerHTML = '\n
\n
\n

'+_0xa88a13.localization('Control Settings')+'

\n
\n \n \n
\n
\n \n
\n
\n
\n '+_0xa88a13.localization('Update')+'\n '+_0xa88a13.localization('Reset')+'\n '+_0xa88a13.localization('Clear')+'\n '+_0xa88a13.localization('Cancel')+'\n
\n \n
\n ' + _0xa88a13.elements.dialogs.gamepad.innerHTML = '\n
\n
\n

'+_0xa88a13.localization('Control Settings')+'

\n
\n \n \n
\n
\n \n
\n
\n
\n '+_0xa88a13.localization('Update')+'\n '+_0xa88a13.localization('Reset')+'\n '+_0xa88a13.localization('Clear')+'\n '+_0xa88a13.localization('Cancel')+'\n
\n \n
\n '; var _0x17edbf = '\n '), _0x2c1832 = '\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n '+_0xa88a13.localization('Set')+'\n
\n
\n
') @@ -3206,11 +3181,14 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } catch (_0x101b3e) {} _0x17edbf && (_0xa88a13.cheats = _0x17edbf); } - _0x2c1832.innerHTML = '', _0xa88a13.cheats && Array.isArray(_0xa88a13.cheats) && _0xa88a13.cheats.forEach(function(_0x245035, _0x116996) { - var _0x4ac35a = _0x245035[0x0]; - _0x245035[0x1]; - _0x2c1832.innerHTML += '
\n \n \n ×\n
'); - }); + _0x2c1832.innerHTML = ''; + if (_0xa88a13.cheats && Array.isArray(_0xa88a13.cheats)) { + _0xa88a13.cheats.forEach(function(_0x245035, _0x116996) { + var _0x4ac35a = _0x245035[0x0]; + _0x245035[0x1]; + _0x2c1832.innerHTML += '
\n \n \n ×\n
'); + }); + } }; _0x1093f4.call(_0xa88a13, _0x2c1832, 'click', function(_0x576733) { if (_0x576733.target && _0x576733.target.classList.contains(_0x378b5c.classNames['ejs-delete-cheat']) && _0x576733.target.getAttribute('data-idx')) { @@ -3229,10 +3207,14 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }), _0x1093f4.call(this, _0xa88a13.elements.dialogs.cheat.querySelector('.' .concat(_0x378b5c.classNames['btn-cancel'])), 'click', function(_0x4adb2c) { return _0x132da7(_0xa88a13.elements.dialogs.cheat, true), _0x4adb2c.stopPropagation(), _0xa88a13.elements.container.focus(), !0x1; }), _0x1093f4.call(this, _0xa88a13.elements.dialogs.cheat.querySelector('.' .concat(_0x378b5c.classNames['btn-submit'])), 'click', function(_0x5785f6) { - return _0x378b5c.resetCheat(), _0x2c1832.querySelectorAll('input:checked').forEach(function(_0xeb7426, _0x45b02d) { + _0x378b5c.resetCheat(); + _0x2c1832.querySelectorAll('input:checked').forEach(function(_0xeb7426, _0x45b02d) { var _0x27e2c1 = _0xa88a13.cheats[_0xeb7426.value]; - _0x27e2c1 && _0x378b5c.setCheat(_0x45b02d, 0x1, _0x27e2c1[0x1]); - }), _0x132da7(_0xa88a13.elements.dialogs.cheat, true), _0xa88a13.elements.container.focus(), !0x1; + _0x27e2c1 && _0x378b5c.setCheat(_0x45b02d, 1, _0x27e2c1[1]); + }); + _0x132da7(_0xa88a13.elements.dialogs.cheat, true); + _0xa88a13.elements.container.focus(); + return false; }), 'arcade' !== _0xa88a13.system && 'mame' !== _0xa88a13.system && 'mame2003' !== _0xa88a13.system && 'mame2010' !== _0xa88a13.system || (_0x1e2c68.element(_0xa88a13.elements.buttons.cheat) && _0x132da7(_0xa88a13.elements.buttons.cheat, true), _0x378b5c.allowCheat = !0x1), _0x378b5c.setCheat || (_0x132da7(_0xa88a13.elements.buttons.cheat, true), _0x378b5c.allowCheat = !0x1); } }, @@ -3297,146 +3279,26 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'initGamepad': function() { var _0xa88a13 = this, _0x17edbf = this, - _0x2c1832 = this.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames.overlay)), - _0x181250 = new _0x4ad1c6.Gamepad(); - _0x378b5c.gamepad = _0x181250; - if (!_0x181250.init()) { + _0x2c1832 = this.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames.overlay)); + var gamepad; + try { + gamepad = new _0x4ad1c6(); + } catch(e) { console.warn('gamepad not supported'); return; } - _0x181250.bind(_0x4ad1c6.Gamepad.Event.TICK, function(_0x2fe35d) { - _0x2fe35d.forEach(function(_0x2b21f8) { - var _0x17edbf; - if (_0x2b21f8 && _0x2b21f8.axes && _0x2b21f8.axes[9]) { - (_0x17edbf = _0x2b21f8.axes[9]) < 3.28571 ? 1 == _0x17edbf ? (_0x2b21f8.extra_buttons[12].pressed || (_0x2b21f8.extra_buttons[12] = { - 'pressed': true, - 'value': 1 - }, _0x181250._fire(_0x4ad1c6.Gamepad.Event.BUTTON_DOWN, { - 'index': 12, - 'gamepad': _0x2b21f8, - 'gamepadIndex': _0x2b21f8.index - })), _0x2b21f8.extra_buttons[14].pressed || (_0x2b21f8.extra_buttons[14] = { - 'pressed': true, - 'value': 1 - }, _0x181250._fire(_0x4ad1c6.Gamepad.Event.BUTTON_DOWN, { - 'index': 14, - 'gamepad': _0x2b21f8, - 'gamepadIndex': _0x2b21f8.index - }))) : _0x17edbf <= -0.7142857 && _0x17edbf >= -0.714291 ? (_0x2b21f8.extra_buttons[12].pressed || (_0x2b21f8.extra_buttons[12] = { - 'pressed': true, - 'value': 1 - }, _0x181250._fire(_0x4ad1c6.Gamepad.Event.BUTTON_DOWN, { - 'index': 12, - 'gamepad': _0x2b21f8, - 'gamepadIndex': _0x2b21f8.index - })), _0x2b21f8.extra_buttons[15].pressed || (_0x2b21f8.extra_buttons[15] = { - 'pressed': true, - 'value': 1 - }, _0x181250._fire(_0x4ad1c6.Gamepad.Event.BUTTON_DOWN, { - 'index': 15, - 'gamepad': _0x2b21f8, - 'gamepadIndex': _0x2b21f8.index - }))) : _0x17edbf >= 0.42856 && _0x17edbf <= 0.42858 ? (_0x2b21f8.extra_buttons[13].pressed || (_0x2b21f8.extra_buttons[13] = { - 'pressed': true, - 'value': 1 - }, _0x181250._fire(_0x4ad1c6.Gamepad.Event.BUTTON_DOWN, { - 'index': 13, - 'gamepad': _0x2b21f8, - 'gamepadIndex': _0x2b21f8.index - })), _0x2b21f8.extra_buttons[14].pressed || (_0x2b21f8.extra_buttons[14] = { - 'pressed': true, - 'value': 1 - }, _0x181250._fire(_0x4ad1c6.Gamepad.Event.BUTTON_DOWN, { - 'index': 14, - 'gamepad': _0x2b21f8, - 'gamepadIndex': _0x2b21f8.index - }))) : _0x17edbf >= -0.14287 && _0x17edbf <= -0.14285 ? (_0x2b21f8.extra_buttons[13].pressed || (_0x2b21f8.extra_buttons[13] = { - 'pressed': true, - 'value': 1 - }, _0x181250._fire(_0x4ad1c6.Gamepad.Event.BUTTON_DOWN, { - 'index': 13, - 'gamepad': _0x2b21f8, - 'gamepadIndex': _0x2b21f8.index - })), _0x2b21f8.extra_buttons[15].pressed || (_0x2b21f8.extra_buttons[15] = { - 'pressed': true, - 'value': 1 - }, _0x181250._fire(_0x4ad1c6.Gamepad.Event.BUTTON_DOWN, { - 'index': 15, - 'gamepad': _0x2b21f8, - 'gamepadIndex': _0x2b21f8.index - }))) : _0x17edbf <= -1 && _0x17edbf >= -1.01 ? _0x2b21f8.extra_buttons[12].pressed || (_0x2b21f8.extra_buttons[12] = { - 'pressed': true, - 'value': 1 - }, _0x181250._fire(_0x4ad1c6.Gamepad.Event.BUTTON_DOWN, { - 'index': 12, - 'gamepad': _0x2b21f8, - 'gamepadIndex': _0x2b21f8.index - })) : _0x17edbf >= 0.142857 && _0x17edbf <= 0.142858 ? _0x2b21f8.extra_buttons[13].pressed || (_0x2b21f8.extra_buttons[13] = { - 'pressed': true, - 'value': 1 - }, _0x181250._fire(_0x4ad1c6.Gamepad.Event.BUTTON_DOWN, { - 'index': 13, - 'gamepad': _0x2b21f8, - 'gamepadIndex': _0x2b21f8.index - })) : _0x17edbf >= 0.7142857 && _0x17edbf <= 0.7142858 ? _0x2b21f8.extra_buttons[14].pressed || (_0x2b21f8.extra_buttons[14] = { - 'pressed': true, - 'value': 1 - }, _0x181250._fire(_0x4ad1c6.Gamepad.Event.BUTTON_DOWN, { - 'index': 14, - 'gamepad': _0x2b21f8, - 'gamepadIndex': _0x2b21f8.index - })) : _0x17edbf <= -0.42857 && _0x17edbf >= -0.42858 && (_0x2b21f8.extra_buttons[15].pressed || (_0x2b21f8.extra_buttons[15] = { - 'pressed': true, - 'value': 1 - }, _0x181250._fire(_0x4ad1c6.Gamepad.Event.BUTTON_DOWN, { - 'index': 15, - 'gamepad': _0x2b21f8, - 'gamepadIndex': _0x2b21f8.index - }))) : (_0x2b21f8.extra_buttons[12].pressed && (_0x2b21f8.extra_buttons[12] = { - 'pressed': false, - 'value': 0 - }, _0x181250._fire(_0x4ad1c6.Gamepad.Event.BUTTON_UP, { - 'index': 12, - 'gamepad': _0x2b21f8, - 'gamepadIndex': _0x2b21f8.index - })), _0x2b21f8.extra_buttons[13].pressed && (_0x2b21f8.extra_buttons[13] = { - 'pressed': false, - 'value': 0 - }, _0x181250._fire(_0x4ad1c6.Gamepad.Event.BUTTON_UP, { - 'index': 13, - 'gamepad': _0x2b21f8, - 'gamepadIndex': _0x2b21f8.index - })), _0x2b21f8.extra_buttons[14].pressed && (_0x2b21f8.extra_buttons[14] = { - 'pressed': false, - 'value': 0 - }, _0x181250._fire(_0x4ad1c6.Gamepad.Event.BUTTON_UP, { - 'index': 14, - 'gamepad': _0x2b21f8, - 'gamepadIndex': _0x2b21f8.index - })), _0x2b21f8.extra_buttons[15].pressed && (_0x2b21f8.extra_buttons[15] = { - 'pressed': false, - 'value': 0 - }, _0x181250._fire(_0x4ad1c6.Gamepad.Event.BUTTON_UP, { - 'index': 15, - 'gamepad': _0x2b21f8, - 'gamepadIndex': _0x2b21f8.index - }))); - } - }); - }); - _0x181250.bind(_0x4ad1c6.Gamepad.Event.BUTTON_DOWN, function(_0x15761a) { - console.log(_0x15761a.gamepad) + _0x378b5c.gamepad = gamepad; + gamepad.on('buttondown', function(event) { if (!_0xa88a13.elements.dialogs.gamepad.hidden && !_0x2c1832.hidden) { var _0x387018, _0xdd4205 = parseInt(_0x2c1832.getAttribute('data-index'), 0xa), _0x1f4ee2 = _0x2c1832.getAttribute('data-id'); - if (_0x15761a.gamepad.index === parseInt(_0xdd4205, 0xa)) { - for (var _0x211087 = 0x0; _0x211087 < 0x20 && ((_0x387018 = _0x15761a.gamepad.buttons[_0x211087]) || (_0x387018 = _0x15761a.gamepad.extra_buttons[_0x211087]), !_0x387018 || !('number' == typeof _0x387018 && 0x1 === _0x387018 || 'number' == typeof _0x387018.value && 0x1 === _0x387018.value)); _0x211087 += 0x1); + if (event.gamepadIndex === parseInt(_0xdd4205, 0xa)) { var _0x126d2d = null; - (_0x126d2d = _0x17edbf.elements.dialogs.gamepad.querySelector('[data-id="' .concat(_0x1f4ee2, '"][data-index="').concat(_0xdd4205, '"][data-type="2"]'))).setAttribute('data-value', _0x15761a.index), _0x126d2d.value = 'button ' .concat(_0x15761a.index + 0x1), _0x132da7(_0x2c1832, true); + (_0x126d2d = _0x17edbf.elements.dialogs.gamepad.querySelector('[data-id="' .concat(_0x1f4ee2, '"][data-index="').concat(_0xdd4205, '"][data-type="2"]'))).setAttribute('data-value', event.index), _0x126d2d.value = 'button ' .concat(event.index + 0x1), _0x132da7(_0x2c1832, true); } - } else Object.keys(_0x378b5c.controllers[_0x15761a.gamepad.index.toString()]).forEach(function(_0x3cf4d3) { - var _0x5cf388 = _0x15761a.gamepad.index.toString(); - if (parseInt(_0x378b5c.controllers[_0x5cf388][_0x3cf4d3].value2, 0xa) === parseInt(_0x15761a.index, 0xa) && ['24', '25', '26'].includes(_0x3cf4d3)) { + } else Object.keys(_0x378b5c.controllers[event.gamepadIndex.toString()]).forEach(function(_0x3cf4d3) { + var _0x5cf388 = event.gamepadIndex.toString(); + if (parseInt(_0x378b5c.controllers[_0x5cf388][_0x3cf4d3].value2, 0xa) === parseInt(event.index, 0xa) && ['24', '25', '26'].includes(_0x3cf4d3)) { if (_0x3cf4d3 == '24') {//save _0x378b5c.quickSaveState() } else if (_0x3cf4d3 == '25') {//load @@ -3445,29 +3307,31 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x378b5c.changeStateSlot() } } - parseInt(_0x378b5c.controllers[_0x5cf388][_0x3cf4d3].value2, 0xa) === parseInt(_0x15761a.index, 0xa) && parseInt(_0x5cf388, 0xa) === parseInt(_0x15761a.gamepad.index, 0xa) && _0x378b5c.simulateInput(_0x5cf388, _0x3cf4d3, 0x1); + parseInt(_0x378b5c.controllers[_0x5cf388][_0x3cf4d3].value2, 0xa) === parseInt(event.index, 0xa) && parseInt(_0x5cf388, 0xa) === parseInt(event.gamepadIndex, 0xa) && _0x378b5c.simulateInput(_0x5cf388, _0x3cf4d3, 0x1); }); - }), _0x181250.bind(_0x4ad1c6.Gamepad.Event.BUTTON_UP, function(_0x3220b3) { + }); + gamepad.on('buttonup', function(event) { Object.keys(_0x378b5c.controllers).forEach(function(_0x302c3e) { Object.keys(_0x378b5c.controllers[_0x302c3e]).forEach(function(_0x14eb8a) { - parseInt(_0x378b5c.controllers[_0x302c3e][_0x14eb8a].value2, 0xa) === parseInt(_0x3220b3.index, 0xa) && parseInt(_0x302c3e, 0xa) === parseInt(_0x3220b3.gamepad.index, 0xa) && _0x378b5c.simulateInput(_0x302c3e, _0x14eb8a, 0x0); + parseInt(_0x378b5c.controllers[_0x302c3e][_0x14eb8a].value2, 0xa) === parseInt(event.index, 0xa) && parseInt(_0x302c3e, 0xa) === parseInt(event.gamepadIndex, 0xa) && _0x378b5c.simulateInput(_0x302c3e, _0x14eb8a, 0x0); }); }); - }), _0x181250.bind(_0x4ad1c6.Gamepad.Event.AXIS_CHANGED, function(_0x31f017) { + }); + gamepad.on('axischanged', function(event) { var value = function(value) { if (value > 0.5 || value < -0.5) { return (value > 0) ? 1 : -1; } else { return 0; } - }(_0x31f017.value); + }(event.value); if (!_0xa88a13.elements.dialogs.gamepad.hidden && !_0x2c1832.hidden) { if (value !== 0) { var _0x1f4ee2 = _0x2c1832.getAttribute('data-id'), _0xdd4205 = parseInt(_0x2c1832.getAttribute('data-index'), 0xa); var _0x126d2d = _0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="' .concat(_0x1f4ee2, '"][data-index="').concat(_0xdd4205, '"][data-type="2"]')) - _0x126d2d.setAttribute('data-value', _0x31f017.axis + ':' + value) - _0x126d2d.value = _0x31f017.axis + ':' + value + _0x126d2d.setAttribute('data-value', event.axis + ':' + value) + _0x126d2d.value = event.axis + ':' + value _0x132da7(_0x2c1832, true) } } else { @@ -3475,12 +3339,12 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x378b5c.prevButtons = {} } var quit = false - var _0x5cf388 = _0x31f017.gamepad.index.toString(); + var _0x5cf388 = event.gamepadIndex.toString(); if (! _0x378b5c.prevButtons[_0x5cf388]) { _0x378b5c.prevButtons[_0x5cf388] = {} } - if (! _0x378b5c.prevButtons[_0x5cf388][_0x31f017.axis]) { - _0x378b5c.prevButtons[_0x5cf388][_0x31f017.axis] = 0 + if (! _0x378b5c.prevButtons[_0x5cf388][event.axis]) { + _0x378b5c.prevButtons[_0x5cf388][event.axis] = 0 } if (! _0x378b5c.prevButtons[_0x5cf388].buttonID) { _0x378b5c.prevButtons[_0x5cf388].buttonID = 0 @@ -3490,7 +3354,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { if (! _0x378b5c.controllers[_0x5cf388][_0x3cf4d3].value2) { continue } - if (_0x378b5c.controllers[_0x5cf388][_0x3cf4d3].value2.split(':')[0] === _0x31f017.axis && parseInt(_0x378b5c.controllers[_0x5cf388][_0x3cf4d3].value2.split(':')[1]) === value && ['24', '25', '26'].includes(_0x3cf4d3)) { + if (_0x378b5c.controllers[_0x5cf388][_0x3cf4d3].value2.split(':')[0] === event.axis && parseInt(_0x378b5c.controllers[_0x5cf388][_0x3cf4d3].value2.split(':')[1]) === value && ['24', '25', '26'].includes(_0x3cf4d3)) { if (_0x3cf4d3 == '24') {//save quit = true _0x378b5c.quickSaveState() @@ -3503,19 +3367,19 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } if (value === 0) { // button up - if (_0x378b5c.controllers[_0x5cf388][_0x3cf4d3].value2.split(':')[0] === _0x31f017.axis) { - _0x378b5c.prevButtons[_0x5cf388][_0x31f017.axis] = value + if (_0x378b5c.controllers[_0x5cf388][_0x3cf4d3].value2.split(':')[0] === event.axis) { + _0x378b5c.prevButtons[_0x5cf388][event.axis] = value _0x378b5c.prevButtons[_0x5cf388].buttonID = _0x3cf4d3 _0x378b5c.simulateInput(_0x5cf388, _0x3cf4d3, 0x0) } } else { //button down - if ((1 === _0x378b5c.prevButtons[_0x5cf388][_0x31f017.axis] && value === -1) || - (-1 === _0x378b5c.prevButtons[_0x5cf388][_0x31f017.axis] && value === 1)) { + if ((1 === _0x378b5c.prevButtons[_0x5cf388][event.axis] && value === -1) || + (-1 === _0x378b5c.prevButtons[_0x5cf388][event.axis] && value === 1)) { _0x378b5c.simulateInput(_0x5cf388, _0x378b5c.prevButtons[_0x5cf388].buttonID, 0x0) } - if (_0x378b5c.controllers[_0x5cf388][_0x3cf4d3].value2.split(':')[0] === _0x31f017.axis && parseInt(_0x378b5c.controllers[_0x5cf388][_0x3cf4d3].value2.split(':')[1]) === value) { - _0x378b5c.prevButtons[_0x5cf388][_0x31f017.axis] = value + if (_0x378b5c.controllers[_0x5cf388][_0x3cf4d3].value2.split(':')[0] === event.axis && parseInt(_0x378b5c.controllers[_0x5cf388][_0x3cf4d3].value2.split(':')[1]) === value) { + _0x378b5c.prevButtons[_0x5cf388][event.axis] = value _0x378b5c.prevButtons[_0x5cf388].buttonID = _0x3cf4d3 quit = true _0x378b5c.simulateInput(_0x5cf388, _0x3cf4d3, 0x1) @@ -3529,18 +3393,52 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { return } } - - Math.abs(_0x31f017.value) <= 0.1 && (_0x31f017.value = 0x0); - var _0x17edbf = _0x31f017.gamepad.index; - 'LEFT_STICK_X' === _0x31f017.axis && (_0x31f017.value > 0x0 ? (_0x378b5c.simulateInput(_0x17edbf, 0x10, 0x7fff * _0x31f017.value), _0x378b5c.simulateInput(_0x17edbf, 0x11, 0x0)) : (_0x378b5c.simulateInput(_0x17edbf, 0x11, 0x7fff * _0x31f017.value), _0x378b5c.simulateInput(_0x17edbf, 0x10, 0x0))), 'LEFT_STICK_Y' === _0x31f017.axis && (_0x31f017.value > 0x0 ? (_0x378b5c.simulateInput(_0x17edbf, 0x12, 0x7fff * _0x31f017.value), _0x378b5c.simulateInput(_0x17edbf, 0x13, 0x0)) : (_0x378b5c.simulateInput(_0x17edbf, 0x13, 0x7fff * _0x31f017.value), _0x378b5c.simulateInput(_0x17edbf, 0x12, 0x0))), 'RIGHT_STICK_X' === _0x31f017.axis && (_0x31f017.value > 0x0 ? (_0x378b5c.simulateInput(_0x17edbf, 0x14, 0x7fff * _0x31f017.value), _0x378b5c.simulateInput(_0x17edbf, 0x15, 0x0)) : (_0x378b5c.simulateInput(_0x17edbf, 0x15, 0x7fff * _0x31f017.value), _0x378b5c.simulateInput(_0x17edbf, 0x14, 0x0))), 'RIGHT_STICK_Y' === _0x31f017.axis && (_0x31f017.value > 0x0 ? (_0x378b5c.simulateInput(_0x17edbf, 0x16, 0x7fff * _0x31f017.value), _0x378b5c.simulateInput(_0x17edbf, 0x17, 0x0)) : (_0x378b5c.simulateInput(_0x17edbf, 0x17, 0x7fff * _0x31f017.value), _0x378b5c.simulateInput(_0x17edbf, 0x16, 0x0))); - }), _0x181250.bind(_0x4ad1c6.Gamepad.Event.DISCONNECTED, function(_0x1c996a) { - [0x0, 0x1, 0x2, 0x3].forEach(function(_0x429f30) { - var _0x2c1832 = _0x181250.gamepads[_0x429f30]; + Math.abs(event.value) <= 0.1 && (event.value = 0); + var _0x17edbf = event.gamepadIndex; + var coreVer = _0xa88a13.coreVer; + if (event.axis === 'LEFT_STICK_X') { + if (event.value > 0) { + _0x378b5c.simulateInput(_0x17edbf, 16, 0x7fff * event.value); + _0x378b5c.simulateInput(_0x17edbf, 17, 0); + } else { + _0x378b5c.simulateInput(_0x17edbf, 17, -0x7fff * event.value); + _0x378b5c.simulateInput(_0x17edbf, 16, 0); + } + } else if (event.axis === 'LEFT_STICK_Y') { + if (event.value > 0) { + _0x378b5c.simulateInput(_0x17edbf, 18, 0x7fff * event.value); + _0x378b5c.simulateInput(_0x17edbf, 19, 0); + } else { + _0x378b5c.simulateInput(_0x17edbf, 19, -0x7fff * event.value); + _0x378b5c.simulateInput(_0x17edbf, 18, 0); + } + } else if (event.axis === 'RIGHT_STICK_X') { + if (event.value > 0) { + _0x378b5c.simulateInput(_0x17edbf, 20, 0x7fff * event.value); + _0x378b5c.simulateInput(_0x17edbf, 21, 0); + } else { + _0x378b5c.simulateInput(_0x17edbf, 21, -0x7fff * event.value); + _0x378b5c.simulateInput(_0x17edbf, 20, 0); + } + } else if (event.axis === 'RIGHT_STICK_Y') { + if (event.value > 0) { + _0x378b5c.simulateInput(_0x17edbf, 22, 0x7fff * event.value); + _0x378b5c.simulateInput(_0x17edbf, 23, 0); + } else { + _0x378b5c.simulateInput(_0x17edbf, 23, 0x7fff * event.value); + _0x378b5c.simulateInput(_0x17edbf, 22, 0); + } + } + }); + gamepad.on('disconnected', function(event) { + [0, 1, 2, 3].forEach(function(_0x429f30) { + var _0x2c1832 = gamepad.gamepads[_0x429f30]; _0x17edbf.elements.dialogs.gamepad.querySelector('#controls-' .concat(_0x429f30, ' .gamepad-name')).innerHTML = _0x2c1832 ? _0x2c1832.id : 'n/a'; }); - }), _0x181250.bind(_0x4ad1c6.Gamepad.Event.CONNECTED, function(_0x748f24) { - Object.keys(_0x181250.gamepads).forEach(function(_0x327c74) { - var _0x2c1832 = _0x181250.gamepads[_0x327c74]; + }); + gamepad.on('connected', function(event) { + Object.keys(gamepad.gamepads).forEach(function(_0x327c74) { + var _0x2c1832 = gamepad.gamepads[_0x327c74]; _0x17edbf.elements.dialogs.gamepad.querySelector('#controls-' .concat(_0x327c74, ' .gamepad-name')).innerHTML = _0x2c1832 ? _0x2c1832.id : 'n/a'; }); }); @@ -3562,102 +3460,464 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } }, 'toggleVirtualGamepad': function(_0x1ed80b) { - var _0xa88a13 = this; - if (null === _0x378b5c.virtualGamepadContainer) { - _0x378b5c.virtualGamepadContainer = _0x428003('div', { - 'class': _0x449eac({ - 'ejs-virtual-gamepad': true - }), - 'hidden': '' - }); - this.elements.container.appendChild(_0x378b5c.virtualGamepadContainer); - var blockCSS = 'height:31px;text-align:center;border:1px solid #ccc;border-radius:5px;line-height:31px;'; - var html = ''; - if (['snes', 'nds'].includes(_0xa88a13.system)) { - var elements = { - order: ['X','Y','A','B'], - orderCSS: ['left:40px;', 'top:40px;', 'left:81px;top:40px;', 'left:40px;top:80px;'], - LandR: true - } - } else if (['gba', 'gb', 'vb', 'nes'].includes(_0xa88a13.system)) { - var elements = { - order: ['B','A'], - orderCSS: ['left:-10px;top:70px;', 'left:60px;top:70px;'], - LandR: (_0xa88a13.system === 'gba') - } - } else if (['n64'].includes(_0xa88a13.system)) { - var elements = { - order: ['B','A'], - orderCSS: ['left:-10px;top:95px;', 'left:40px;top:150px;'], - LandR: true - } - } else { - var elements = { - order: ['Y','X','B','A'], - orderCSS: ['left:40px;', 'top:40px;', 'left:81px;top:40px;', 'left:40px;top:80px;'], - LandR: true - } - } - html += '
'; - - html += '
'; - if (elements.LandR === true) { - if (_0xa88a13.system === 'n64') { - html += '
L
'; - html += '
Z
'; - html += '
R
'; - } else { - html += '
L
'; - html += '
R
'; - } - } - html += '
'; - - html += '
'; - - html += '
'; - if (_0xa88a13.system === 'n64') { - html += '
'+_0xa88a13.localization('Start')+'
'; - } else { - html += '
'+_0xa88a13.localization('Start')+'
'; - html += '
'+_0xa88a13.localization('Select')+'
'; - } - html += '
'; - - html += '
'; - - if (_0xa88a13.system === 'n64') { - html += '
'; - html += '
'; - html += '
'; - html += '
'; - } - - for (var i=0; i'+elements.order[i]+'
'; - } - - html += '
'; - - _0x378b5c.virtualGamepadContainer.innerHTML = html; + var _this = this; + if (null !== _0x378b5c.virtualGamepadContainer) { _0x132da7(_0x378b5c.virtualGamepadContainer, !_0x1ed80b); + return + } + _0x378b5c.virtualGamepadContainer = _0x428003('div', { + 'class': _0x449eac({ + 'ejs-virtual-gamepad': true + }), + 'hidden': '' + }); + this.elements.container.appendChild(_0x378b5c.virtualGamepadContainer); + var blockCSS = 'height:31px;text-align:center;border:1px solid #ccc;border-radius:5px;line-height:31px;'; + var html = ''; + var info; + + if (_this.config.VirtualGamepadSettings && function(set) { + if (!Array.isArray(set)) { + console.warn("Vritual gamepad settings is not array! Using default gamepad settings"); + return false; + } + if (!set.length) { + console.warn("Vritual gamepad settings is empty! Using default gamepad settings"); + return false; + } + for (var i=0; i'; + html += '
'; + for (var i=0; i'+info[i].text+'
'; + } + } + html += ''; + html += '
'; + for (var i=0; i'+info[i].text+'
'; + } + } + html += ''; + html += '
'; + for (var i=0; i'+info[i].text+'
'; + } + } + html += ''; + html += '
'; + for (var i=0; i'+info[i].text+'
'; + } + } + html += ''; + _0x378b5c.virtualGamepadContainer.innerHTML = html; + _0x132da7(_0x378b5c.virtualGamepadContainer, !_0x1ed80b); + + var _0x2c1832 = _0x449eac({ + 'virtual-gamepad': true + }), + _0x2ec721 = _0x449eac({ + 'touch': true + }); + if (! _0x59aa33.isIos) { + _0x1093f4.call(this, _0x530042.call(this, '.' .concat(_0x2c1832)), 'touchmove', function(event) { + event.stopPropagation(); + }); + } + + var zone; + for (var i=0; i { - _0x1093f4.call(this, _0x530042.call(this, '.'.concat(_0x2c1832, ' .').concat(_0x449eac(a.id))), - 'touchstart touchend', function(e) { - ['touchend'].includes(e.type) ? (_0x3a8e2f(e.target, _0x2ec721, false), window.setTimeout(function() { + keys.push({id: opts, number: value}); + } + keys.forEach((a) => { + var element = _0x530042.call(_this, '.'.concat(_0x2c1832, ' .').concat(_0x449eac(a.id))); + if (!element) return; + _0x1093f4.call(_this, element, 'touchstart touchend', function(e) { + if (e.type === 'touchend') { + _0x3a8e2f(e.target, _0x2ec721, false); + window.setTimeout(function() { _0x378b5c.syncInput(0, a.number, 0); - }, 30)) : (_0x3a8e2f(e.target, _0x2ec721, true), _0x378b5c.syncInput(0, a.number, 1)), e.stopPropagation(); - }) - }); - var menuButton = _0x428003('div', { - 'class': _0x449eac({ - 'ejs__widget': true, - 'ejs__widget_controls_toggle': true - }) - }, ''); - menuButton.innerHTML = ''; - _0x530042.call(this, ".".concat(_0x449eac({ejs__widgets: true}))).appendChild(menuButton); - var hideTimeout; - _0x1093f4.call(this, menuButton, 'mousedown touchstart', function(e) { - _0x3a8e2f(e.target, _0x2ec721, true); - clearTimeout(hideTimeout); - _0x5ab74d.toggleControls.call(_0xa88a13, true); - hideTimeout = setTimeout(function() { - _0x5ab74d.toggleControls.call(_0xa88a13, false); - }, 5000) - }); - } else _0x132da7(_0x378b5c.virtualGamepadContainer, !_0x1ed80b); + }, 30) + } else { + _0x3a8e2f(e.target, _0x2ec721, true); + _0x378b5c.syncInput(0, a.number, 1) + } + e.stopPropagation(); + }) + }); + + var menuButton = _0x428003('div', { + 'class': _0x449eac({ + 'ejs__widget': true, + 'ejs__widget_controls_toggle': true + }) + }, ''); + menuButton.innerHTML = ''; + _0x530042.call(this, ".".concat(_0x449eac({ejs__widgets: true}))).appendChild(menuButton); + var hideTimeout; + _0x1093f4.call(this, menuButton, 'mousedown touchstart', function(e) { + _0x3a8e2f(e.target, _0x2ec721, true); + clearTimeout(hideTimeout); + _0x5ab74d.toggleControls.call(_this, true); + hideTimeout = setTimeout(function() { + _0x5ab74d.toggleControls.call(_this, false); + }, 5000) + }); }, 'setup': function() { var _0xa88a13 = this; @@ -3805,6 +4058,13 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x27f4c4.FS.syncfs(function() {}); } }, true); + setInterval(function() { + if (_0xa88a13.started) { + console.log('saving save files'); + _0x378b5c.saveSavFiles(); + _0x27f4c4.FS.syncfs(false, function() {}); + } + }, 300000) }, 'listeners': function() { var _0xa88a13 = this; @@ -3929,12 +4189,10 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }; } _0x378b5c.setVariable = _0x27f4c4.Module.cwrap('set_variable', 'null', ['string', 'string']); - _0x378b5c.simulateInput = _0x27f4c4.Module.cwrap('simulate_input', 'null', ['number', 'number', 'number']); - /* _0x378b5c.simulateInputFn = _0x27f4c4.Module.cwrap('simulate_input', 'null', ['number', 'number', 'number']); _0x378b5c.simulateInput = function(_0x249751, _0x480d05, _0x50f784) { _0x378b5c.disableInput || _0x378b5c.simulateInputFn(_0x249751, _0x480d05, _0x50f784); - };*/ + }; _0x378b5c.syncInput = _0x378b5c.simulateInput; window.simulateInput = _0x378b5c.simulateInput; var _0x762355 = _0x27f4c4.Module.cwrap('shader_enable', 'null', ['number']); @@ -3986,7 +4244,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { try { _0x27f4c4.FS.unlink('game.state'); } catch(e){} - _0x27f4c4._FS.createDataFile('/', 'game.state', _0x91cd69, true, true); + _0x27f4c4.FS.createDataFile('/', 'game.state', _0x91cd69, true, true); null === _0x1d4918 && (_0x1d4918 = 0); if ('arcade' === _0x17edbf) { setTimeout(function() { @@ -4028,7 +4286,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } catch (_0x4b4d4c) {} try { var _0x17edbf = await _0x378b5c.saveState(); - _0x27f4c4._FS.createDataFile('/', name, _0x17edbf, true, true); + _0x27f4c4.FS.createDataFile('/', name, _0x17edbf, true, true); _0xa88a13.elements.widgets.stateInfoDiv.innerHTML = 'STATE SAVED TO SLOT ' + slot; clearTimeout(_0x378b5c.saveMsgTransitions); _0x378b5c.saveMsgTransitions = setTimeout(function() { @@ -4710,6 +4968,11 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } if (this.coreVer === 2) { _0xa88a13 = {}; + _0xa88a13['fps'] = { + 'label': this.localization('FPS'), + 'options': ["show", "hide"], + 'default': "hide" + } } if (this.statesSupported === true) { _0xa88a13['save-state-slot'] = { @@ -5051,16 +5314,24 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { var _0xa88a13 = this, _0x17edbf = this, _0x2c1832 = {}; - _0x2c1832.orientation = _0x7f9f36.storage.get('orientation'), _0x2c1832.shader = _0x7f9f36.storage.get('shader'), _0x17edbf.touch ? (_0x2c1832['virtual-gamepad'] = _0x7f9f36.storage.get('virtual-gamepad'), _0x1093f4.call(_0x17edbf, _0x17edbf.elements.container, 'start-game', function() { + _0x2c1832.orientation = _0x7f9f36.storage.get('orientation'); + _0x2c1832.shader = _0x7f9f36.storage.get('shader'); + _0x17edbf.touch ? (_0x2c1832['virtual-gamepad'] = _0x7f9f36.storage.get('virtual-gamepad'), _0x1093f4.call(_0x17edbf, _0x17edbf.elements.container, 'start-game', function() { ('enabled' === _0x2c1832['virtual-gamepad'] || _0x1e2c68.empty(_0x2c1832['virtual-gamepad'])) && _0xdcec2a.toggleVirtualGamepad.call(_0x17edbf, true); - })) : delete _0x7f9f36.normalOptions['virtual-gamepad'], _0x7f9f36.setOptionMenuItem.call(this, _0x7f9f36.normalOptions, _0x2c1832), _0x1093f4.call(_0x17edbf, _0x17edbf.elements.container, 'start-game', function() { + })) : delete _0x7f9f36.normalOptions['virtual-gamepad']; + _0x7f9f36.setOptionMenuItem.call(this, _0x7f9f36.normalOptions, _0x2c1832); + _0x1093f4.call(_0x17edbf, _0x17edbf.elements.container, 'start-game', function() { + var shader = _0x7f9f36.storage.get('shader'); + if (shader !== 'disabled') { + _0xdcec2a.setShader(shader); + } var _0x2c1832 = _0xa88a13, _0x42a7b1 = {}; _0xdcec2a.getGameCoreOptions && _0xdcec2a.getGameCoreOptions().split('\n').forEach(function(_0x4a987e, _0x10bd7a) { var _0x2c1832 = _0x4a987e.split('; '), - _0x1ddc5f = _0x2c1832[0x0]; - if (0x0 === _0x1ddc5f.indexOf('fba-dipswitch-')/* || _0x17edbf.coreVer === 2*/) { - var _0xbd808 = _0x2c1832[0x1].split('|'), + _0x1ddc5f = _0x2c1832[0]; + if (0 === _0x1ddc5f.indexOf('fba-dipswitch-') || _0x17edbf.coreVer === 2) { + var _0xbd808 = _0x2c1832[1].split('|'), _0x3c4b1a = _0x1ddc5f.split("|")[0].replace(/_/g, ' ').replace(/.+\-(.+)/, '$1'); _0xbd808.slice(1, -1); if (_0xbd808.length === 1) return; @@ -5073,9 +5344,12 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } }); var _0x27d859 = _0x7f9f36.storage.get('core-options'); - _0x7f9f36.coreOptionsValues = _0x27d859 || {}, _0x7f9f36.setOptionMenuItem.call(_0x17edbf, _0x42a7b1, _0x7f9f36.coreOptionsValues), Object.keys(_0x7f9f36.coreOptionsValues).forEach(function(_0x51fc4e, _0x4b3613) { + _0x7f9f36.coreOptionsValues = _0x27d859 || {}; + _0x7f9f36.setOptionMenuItem.call(_0x17edbf, _0x42a7b1, _0x7f9f36.coreOptionsValues); + Object.keys(_0x7f9f36.coreOptionsValues).forEach(function(_0x51fc4e, _0x4b3613) { _0x7f9f36.updateCoreOptions.call(_0x2c1832, _0x51fc4e, _0x7f9f36.coreOptionsValues[_0x51fc4e]); - }), 'nds' == _0x17edbf.system && (_0x27f4c4.Module._fast_forward_2 ? _0x27f4c4.Module._fast_forward_2(0x1) : _0x27f4c4.Module._fast_forward && _0x27f4c4.Module._fast_forward(0x1)); + }); + 'nds' == _0x17edbf.system && (_0x27f4c4.Module._fast_forward_2 ? _0x27f4c4.Module._fast_forward_2(1) : _0x27f4c4.Module._fast_forward && _0x27f4c4.Module._fast_forward(1)); }); }, 'updateCoreOptionMenuItems': function() { @@ -5904,17 +6178,16 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0xbae705.call(_0x17edbf, _0x17edbf.elements.container, 'savestate-start', false, {}); var _0x31e271 = await _0xdcec2a.saveState(), _0x2c1832 = _0xdcec2a.getScreenData(); - + if (_0x378b5c.saveLoadDB.call(_0x17edbf, 'save')) { return; } - var _0x2c1832 = _0x31e271; if (_0x1e2c68.function(_0x17edbf.config.onsavestate)) _0x17edbf.config.onsavestate.call(null, { 'screenshot': _0x2c1832, - 'state': _0x2c1832 + 'state': _0x31e271 }); else { - var _0x2b5fc8 = new Blob([_0x2c1832]), + var _0x2b5fc8 = new Blob([_0x31e271]), _0x152605 = _0x17edbf.startName.split('/').pop().split('.'), _0x51d471 = _0x152605.slice(0x0, _0x152605.length - 0x1).join('.'); if (typeof _0x17edbf.gameName == 'string') { @@ -6055,7 +6328,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } return path } - this.version = '2.2.5'; + this.version = '2.3.0'; this.system = ''; this.adUrl = null; this.gameName = null; diff --git a/data/emulator.js b/data/emulator.js index 906f5c4..fa3440e 100644 --- a/data/emulator.js +++ b/data/emulator.js @@ -83,344 +83,114 @@ var EJS = function(_0x574f5e) { element.innerHTML = ''+_this.localization('Network Error')+''; } } -}, null, null, null, null, null, function(_0x3982a1, _0x519c5e, _0x21c4c0) { - ! function(_0x36fa8f) { - 'use strict'; - var _0x519c5e = function() {}, - _0x21c4c0 = { - 'getType': function() { - return 'null'; - }, - 'isSupported': function() { - return !0x1; - }, - 'update': _0x519c5e - }, - _0x51f790 = function(_0x961a83) { - var _0x21c4c0 = this, - _0x55f0e2 = window; - this.update = _0x519c5e, this.requestAnimationFrame = _0x961a83 || _0x55f0e2.requestAnimationFrame || _0x55f0e2.webkitRequestAnimationFrame || _0x55f0e2.mozRequestAnimationFrame, this.tickFunction = function() { - _0x21c4c0.update(), _0x21c4c0.startTicker(); - }, this.startTicker = function() { - _0x21c4c0.requestAnimationFrame.apply(_0x55f0e2, [_0x21c4c0.tickFunction]); - }; - }; - _0x51f790.prototype.start = function(_0x17a8e5) { - this.update = _0x17a8e5 || _0x519c5e, this.startTicker(); - }; - var _0x594d89 = function() {}; - _0x594d89.prototype.update = _0x519c5e, _0x594d89.prototype.start = function(_0x39fdd2) { - this.update = _0x39fdd2 || _0x519c5e; - }; - var _0x2ff982 = function(_0x2b1a98, _0x4f87ba) { - this.listener = _0x2b1a98, this.gamepadGetter = _0x4f87ba, this.knownGamepads = []; - }; - _0x2ff982.factory = function(_0xc62323) { - var _0x519c5e = _0x21c4c0, - _0x2c02e1 = window && window.navigator; - return _0x2c02e1 && (void 0x0 !== _0x2c02e1.getGamepads ? _0x519c5e = new _0x2ff982(_0xc62323, function() { - return _0x2c02e1.getGamepads(); - }) : void 0x0 !== _0x2c02e1.webkitGamepads ? _0x519c5e = new _0x2ff982(_0xc62323, function() { - return _0x2c02e1.webkitGamepads(); - }) : void 0x0 !== _0x2c02e1.webkitGetGamepads && (_0x519c5e = new _0x2ff982(_0xc62323, function() { - return _0x2c02e1.webkitGetGamepads(); - }))), _0x519c5e; - }, _0x2ff982.getType = function() { - return 'WebKit'; - }, _0x2ff982.prototype.getType = function() { - return _0x2ff982.getType(); - }, _0x2ff982.prototype.isSupported = function() { - return true; - }, _0x2ff982.prototype.update = function() { - var _0x36fa8f, _0x519c5e, _0x21c4c0 = Array.prototype.slice.call(this.gamepadGetter(), 0x0); - for (_0x519c5e = this.knownGamepads.length - 0x1; _0x519c5e >= 0x0; _0x519c5e--) _0x36fa8f = this.knownGamepads[_0x519c5e], _0x21c4c0.indexOf(_0x36fa8f) < 0x0 && (this.knownGamepads.splice(_0x519c5e, 0x1), this.listener._disconnect(_0x36fa8f)); - for (_0x519c5e = 0x0; _0x519c5e < _0x21c4c0.length; _0x519c5e++)(_0x36fa8f = _0x21c4c0[_0x519c5e]) && this.knownGamepads.indexOf(_0x36fa8f) < 0x0 && (this.knownGamepads.push(_0x36fa8f), this.listener._connect(_0x36fa8f)); - }; - var _0x2f4e6b = function(_0x3d65fc) { - this.listener = _0x3d65fc, window.addEventListener('gamepadconnected', function(_0x44ea49) { - _0x3d65fc._connect(_0x44ea49.gamepad); - }), window.addEventListener('gamepaddisconnected', function(_0xfb7aa0) { - _0x3d65fc._disconnect(_0xfb7aa0.gamepad); - }); - }; - _0x2f4e6b.factory = function(_0x4c832a) { - var _0x519c5e = _0x21c4c0; - return window && void 0x0 !== window.addEventListener && (_0x519c5e = new _0x2f4e6b(_0x4c832a)), _0x519c5e; - }, _0x2f4e6b.getType = function() { - return 'Firefox'; - }, _0x2f4e6b.prototype.getType = function() { - return _0x2f4e6b.getType(); - }, _0x2f4e6b.prototype.isSupported = function() { - return -0x1 !== (window && window.navigator).userAgent.indexOf('Firefox'); - }, _0x2f4e6b.prototype.update = _0x519c5e; - var _0x5633cb = function(_0x1f6314) { - this.updateStrategy = _0x1f6314 || new _0x51f790(), this.gamepads = [], this.listeners = {}, this.platform = _0x21c4c0, this.deadzone = 0.03, this.maximizeThreshold = 0.97; - }; - _0x5633cb.UpdateStrategies = { - 'AnimFrameUpdateStrategy': _0x51f790, - 'ManualUpdateStrategy': _0x594d89 - }, _0x5633cb.PlatformFactories = [_0x2f4e6b.factory, _0x2ff982.factory], _0x5633cb.Type = { - 'N64': 'n64', - 'PLAYSTATION': 'playstation', - 'LOGITECH': 'logitech', - 'XBOX': 'xbox', - 'ECKA': 'ecka', - 'UNKNOWN': 'unknown' - }, _0x5633cb.Event = { - 'CONNECTED': 'connected', - 'UNSUPPORTED': 'unsupported', - 'DISCONNECTED': 'disconnected', - 'TICK': 'tick', - 'BUTTON_DOWN': 'button-down', - 'BUTTON_UP': 'button-up', - 'AXIS_CHANGED': 'axis-changed' - }, _0x5633cb.StandardButtons = ['BUTTON_1', 'BUTTON_2', 'BUTTON_3', 'BUTTON_4', 'LEFT_TOP_SHOULDER', 'RIGHT_TOP_SHOULDER', 'LEFT_BOTTOM_SHOULDER', 'RIGHT_BOTTOM_SHOULDER', 'SELECT_BACK', 'START_FORWARD', 'LEFT_STICK', 'RIGHT_STICK', 'DPAD_UP', 'DPAD_DOWN', 'DPAD_LEFT', 'DPAD_RIGHT', 'HOME'], _0x5633cb.StandardAxes = ['LEFT_STICK_X', 'LEFT_STICK_Y', 'RIGHT_STICK_X', 'RIGHT_STICK_Y']; - var _0x11b15e, _0x1380fc = function(_0x2a091d, _0x396791, _0x49a80e) { - return _0x396791 < _0x2a091d.length ? _0x2a091d[_0x396791] : _0x49a80e + (_0x396791 - _0x2a091d.length + 0x1); - }; - _0x5633cb.StandardMapping = { - 'env': {}, - 'buttons': { - 'byButton': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] - }, - 'axes': { - 'byAxis': [0x0, 0x1, 0x2, 0x3] - } - }, _0x5633cb.Mappings = [{ - 'env': { - 'platform': _0x2f4e6b.getType(), - 'type': _0x5633cb.Type.N64 - }, - 'buttons': { - 'byButton': [0x2, 0x1, 0x3, 0x0, 0x4, 0x5, -0x1, -0x1, 0x8, 0x9, -0x1, -0x1, 0xc, 0xd, 0xe, 0xf, -0x1] - }, - 'axes': { - 'byAxis': [0x1, 0x2, -0x1, -0x1] - } - }, { - 'env': { - 'platform': _0x2ff982.getType(), - 'type': _0x5633cb.Type.N64 - }, - 'buttons': { - 'byButton': [0x2, 0x1, 0x3, 0x0, 0x4, 0x5, -0x1, -0x1, 0x8, 0x9, -0x1, -0x1, 0xc, 0xd, 0xe, 0xf, -0x1] - }, - 'axes': { - 'byAxis': [0x0, 0x1, -0x1, -0x1] - } - }, { - 'env': { - 'platform': _0x2f4e6b.getType(), - 'type': _0x5633cb.Type.XBOX - }, - 'buttons': { - 'byButton': [0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0xf, 0x10, 0x9, 0x8, 0x6, 0x7, 0xb, 0xc, 0xd, 0xe, 0xa] - }, - 'axes': { - 'byAxis': [0x0, 0x1, 0x2, 0x3] - } - }, { - 'env': { - 'platform': _0x2f4e6b.getType(), - 'type': _0x5633cb.Type.PLAYSTATION - }, - 'buttons': { - 'byButton': [0xe, 0xd, 0xf, 0xc, 0xa, 0xb, 0x8, 0x9, 0x0, 0x3, 0x1, 0x2, 0x4, 0x6, 0x7, 0x5, 0x10] - }, - 'axes': { - 'byAxis': [0x0, 0x1, 0x2, 0x3] - } - }, { - 'env': { - 'platform': _0x2ff982.getType(), - 'type': _0x5633cb.Type.LOGITECH - }, - 'buttons': { - 'byButton': [0x1, 0x2, 0x0, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xb, 0xc, 0xd, 0xe, 0xa] - }, - 'axes': { - 'byAxis': [0x0, 0x1, 0x2, 0x3] - } - }, { - 'env': { - 'platform': _0x2f4e6b.getType(), - 'type': _0x5633cb.Type.LOGITECH - }, - 'buttons': { - 'byButton': [0, 1, 2, 3, 4, 5, -1, -1, 6, 7, 8, 9, 11, 12, 13, 14, 10], - 'byAxis': [-0x1, -0x1, -0x1, -0x1, -0x1, -0x1, [0x2, 0x0, 0x1], - [0x2, 0x0, -0x1] - ] - }, - 'axes': { - 'byAxis': [0x0, 0x1, 0x3, 0x4] - } - }, { - 'env': { - 'platform': _0x2ff982.getType(), - 'type': _0x5633cb.Type.ECKA - }, - 'buttons': { - 'byButton': [0x2, 0x1, 0x3, 0x0, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xb, 0xc, 0xd, 0xe, 0xa], - 'byAxis': [-0x1, -0x1, -0x1, -0x1, -0x1, -0x1, [0x2, 0x0, 0x1], - [0x2, 0x0, -0x1] - ] - }, - 'axes': { - 'byAxis': [0x0, 0x1, 0x3, 0x4] - } - }, { - 'env': { - 'platform': _0x2ff982.getType(), - 'type': _0x5633cb.Type.UNKNOWN - }, - 'buttons': { - 'byButton': [0x0, 0x1, 0x2, 0x3, 0x4, 0x5, -0x1, -0x1, 0x6, 0x7, 0x8, 0x9, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0xa] - }, - 'axes': { - 'byAxis': [0x0, 0x1, 0x2, 0x5] - } - }], _0x5633cb.prototype.init = function() { - var _0x36fa8f = _0x5633cb.resolvePlatform(this), - _0x519c5e = this; - return this.platform = _0x36fa8f, this.updateStrategy.start(function() { - _0x519c5e._update(); - }), this.buttonState = [], this.extraButtonState = [], _0x36fa8f.isSupported(); - }, _0x5633cb.prototype.bind = function(_0x1ad7a3, _0x381962) { - return void 0x0 === this.listeners[_0x1ad7a3] && (this.listeners[_0x1ad7a3] = []), this.listeners[_0x1ad7a3].push(_0x381962), this; - }, _0x5633cb.prototype.unbind = function(_0x1e8e29, _0x14faad) { - if (void 0x0 !== _0x1e8e29) { - if (void 0x0 !== _0x14faad) { - if (void 0x0 === this.listeners[_0x1e8e29]) return !0x1; - for (var _0x21c4c0 = 0x0; _0x21c4c0 < this.listeners[_0x1e8e29].length; _0x21c4c0++) - if (this.listeners[_0x1e8e29][_0x21c4c0] === _0x14faad) return this.listeners[_0x1e8e29].splice(_0x21c4c0, 0x1), true; - return !0x1; +}, null, null, null, null, null, function(module) { + //I wrote this myself -- theres bound to be bugs + function Gamepad() { + var gp = navigator.getGamepads || navigator.webkitGetGamepads; + if (!gp) { + throw new Error("get gamepads not found!"); + } + this.rAF = window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.requestAnimationFrame; + if (!this.rAF) { + throw new Error("request animation frame was not found!"); + } + this.loop(); + } + Gamepad.prototype = { + gamepads: [], + rAF: null, + getGamepads: function() { + return navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []); + }, + loop: async function() { + this.updateGamepadState(); + this.rAF.call(null, this.loop.bind(this)); + }, + updateGamepadState: function() { + var gamepads = this.getGamepads(); + for (var i=0; i 0.5, - _0x1078e7 = _0x2e14e2 > 0.5; - _0x19541b.state[_0x49f481] = _0x3a8718, _0x11e126 && !_0x1078e7 ? _0x1fe059._fire(_0x5633cb.Event.BUTTON_DOWN, Object.create(_0x2ff716)) : !_0x11e126 && _0x1078e7 ? _0x1fe059._fire(_0x5633cb.Event.BUTTON_UP, Object.create(_0x2ff716)) : _0x1fe059.buttonState[_0x19541b.index][_0x49f481] != _0x3a8718 && _0x1fe059._fire(_0x5633cb.Event.BUTTON_UP, Object.create(_0x2ff716)), 0x0 !== _0x3a8718 && 0x1 !== _0x3a8718 && _0x3a8718 !== _0x2e14e2 && _0x1fe059._fireAxisChangedEvent(_0x19541b, _0x49f481, _0x3a8718), _0x19541b.lastState[_0x49f481] = _0x3a8718, _0x1fe059.buttonState[_0x19541b.index][_0x49f481] = _0x3a8718; - }, _0x19541b.updater.push(_0x14879d); - }, _0x5633cb.prototype._addAxisUpdater = function(_0x54e7b0, _0x2a7b73, _0x8f3c6d) { - var _0x180376, _0x32658f = _0x1380fc(_0x5633cb.StandardAxes, _0x8f3c6d, 'EXTRA_AXIS_'), - _0x4a1dfc = this._createAxisGetter(_0x54e7b0, _0x2a7b73.axes, _0x8f3c6d), - _0x11e62a = this; - _0x54e7b0.state[_0x32658f] = 0x0, _0x54e7b0.lastState[_0x32658f] = 0x0, null == this.buttonState[_0x54e7b0.index][_0x32658f] && (this.buttonState[_0x54e7b0.index][_0x32658f] = 0x0), _0x180376 = function() { - var _0x2a7b73 = _0x4a1dfc(), - _0x8f3c6d = _0x11e62a.buttonState[_0x54e7b0.index][_0x32658f]; - _0x54e7b0.state[_0x32658f] = _0x2a7b73, _0x2a7b73 !== _0x8f3c6d && _0x11e62a._fireAxisChangedEvent(_0x54e7b0, _0x32658f, _0x2a7b73), _0x54e7b0.lastState[_0x32658f] = _0x2a7b73, _0x11e62a.buttonState[_0x54e7b0.index][_0x32658f] = _0x2a7b73; - }, _0x54e7b0.updater.push(_0x180376); - }, _0x5633cb.prototype._fireAxisChangedEvent = function(_0x1b1af6, _0x297863, _0x310ce0) { - var _0x181122 = { - 'gamepad': _0x1b1af6, - 'axis': _0x297863, - 'value': _0x310ce0 - }; - this._fire(_0x5633cb.Event.AXIS_CHANGED, _0x181122); - }, _0x5633cb.prototype._createButtonGetter = (_0x11b15e = function() { - return 0x0; - }, function(_0x8afe40, _0x4912fb, _0x78724a) { - var _0x57e1d5, _0x2126da, _0xbc04b4 = _0x11b15e, - _0x4f004d = this; - return -0x1 !== (_0x57e1d5 = _0x4912fb.byButton[_0x78724a]) ? 'number' == typeof _0x57e1d5 && _0x57e1d5 < _0x8afe40.buttons.length && (_0xbc04b4 = function() { - var _0x4912fb = _0x8afe40.buttons[_0x57e1d5]; - return 'number' == typeof _0x4912fb ? _0x4912fb : 'number' == typeof _0x4912fb.value ? _0x4912fb.value : 0x0; - }) : _0x4912fb.byAxis && _0x78724a < _0x4912fb.byAxis.length && (_0x57e1d5 = _0x4912fb.byAxis[_0x78724a], _0x2126da = _0x57e1d5, '[object Array]' === Object.prototype.toString.call(_0x2126da) && 0x3 == _0x57e1d5.length && _0x57e1d5[0x0] < _0x8afe40.axes.length && (_0xbc04b4 = function(_0x41d3e7, _0xfe6d41, _0x1c883a) { - var _0x23be26 = _0x11b15e; - return _0xfe6d41 < _0x1c883a ? _0x23be26 = function() { - var _0x5bba97 = _0x1c883a - _0xfe6d41, - _0x23be85 = _0x41d3e7(); - return (_0x23be85 = (_0x23be85 - _0xfe6d41) / _0x5bba97) < 0x0 ? 0x0 : _0x23be85; - } : _0x1c883a < _0xfe6d41 && (_0x23be26 = function() { - var _0xd24650 = _0xfe6d41 - _0x1c883a, - _0x183f73 = _0x41d3e7(); - return (_0x183f73 = (_0x183f73 - _0x1c883a) / _0xd24650) > 0x1 ? 0x0 : 0x1 - _0x183f73; - }), _0x23be26; - }(_0xbc04b4 = function() { - var _0x4912fb = _0x8afe40.axes[_0x57e1d5[0x0]]; - return _0x4f004d._applyDeadzoneMaximize(_0x4912fb); - }, _0x57e1d5[0x1], _0x57e1d5[0x2]))), _0xbc04b4; - }), _0x5633cb.prototype._createAxisGetter = function() { - var _0x36fa8f = function() { - return 0x0; - }; - return function(_0x2d14b3, _0x6afd0e, _0x20eff1) { - var _0x1b8acf, _0x2b1b0a = _0x36fa8f, - _0x101060 = this; - return -0x1 !== (_0x1b8acf = _0x6afd0e.byAxis[_0x20eff1]) && 'number' == typeof _0x1b8acf && _0x1b8acf < _0x2d14b3.axes.length && (_0x2b1b0a = function() { - var _0x36fa8f = _0x2d14b3.axes[_0x1b8acf]; - return _0x101060._applyDeadzoneMaximize(_0x36fa8f); - }), _0x2b1b0a; - }; - }(), _0x5633cb.prototype._disconnect = function(_0x116fb9) { - var _0x519c5e, _0x21c4c0 = []; - for (void 0x0 !== this.gamepads[_0x116fb9.index] && delete this.gamepads[_0x116fb9.index], _0x519c5e = 0x0; _0x519c5e < this.gamepads.length; _0x519c5e++) void 0x0 !== this.gamepads[_0x519c5e] && (_0x21c4c0[_0x519c5e] = this.gamepads[_0x519c5e]); - this.gamepads = _0x21c4c0, this._fire(_0x5633cb.Event.DISCONNECTED, _0x116fb9); - }, _0x5633cb.prototype._resolveControllerType = function(_0x582727) { - return -0x1 !== (_0x582727 = _0x582727.toLowerCase().replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, '')).indexOf('playstation') ? _0x5633cb.Type.PLAYSTATION : -0x1 !== _0x582727.indexOf('logitech') || -0x1 !== _0x582727.indexOf('wireless gamepad') ? _0x5633cb.Type.LOGITECH : -0x1 !== _0x582727.indexOf('xbox') || -0x1 !== _0x582727.indexOf('360') ? _0x5633cb.Type.XBOX : -0x1 !== _0x582727.indexOf('79-6-generic') && -0x1 !== _0x582727.indexOf('joystick') || -0x1 !== _0x582727.indexOf('vendor: 0079 product: 0006') && -0x1 !== _0x582727.indexOf('generic usb joystick') ? _0x5633cb.Type.N64 : 'usb joystick (vendor: 0e8f product: 0002)' === _0x582727 ? _0x5633cb.Type.ECKA : _0x5633cb.Type.UNKNOWN; - }, _0x5633cb.prototype._resolveMapping = function(_0x13e45d) { - var _0x519c5e, _0x21c4c0, _0x4d3f81 = _0x5633cb.Mappings, - _0x1d4264 = null, - _0xebffe5 = { - 'platform': this.platform.getType(), - 'type': this._resolveControllerType(_0x13e45d.id) - }; - for (_0x519c5e = 0x0; !_0x1d4264 && _0x519c5e < _0x4d3f81.length; _0x519c5e++) _0x21c4c0 = _0x4d3f81[_0x519c5e], _0x5633cb.envMatchesFilter(_0x21c4c0.env, _0xebffe5) && (_0x1d4264 = _0x21c4c0); - return _0x1d4264 || _0x5633cb.StandardMapping; - }, _0x5633cb.envMatchesFilter = function(_0x26e73d, _0x55c334) { - var _0x21c4c0, _0x514a3a = true; - for (_0x21c4c0 in _0x26e73d) _0x26e73d[_0x21c4c0] !== _0x55c334[_0x21c4c0] && (_0x514a3a = !0x1); - return _0x514a3a; - }, _0x5633cb.prototype._update = function() { - this.platform.update(), this.gamepads.forEach(function(_0x415bf6) { - _0x415bf6 && _0x415bf6.updater.forEach(function(_0x39f57c) { - _0x39f57c(); - }); - }), this.gamepads.length > 0x0 && this._fire(_0x5633cb.Event.TICK, this.gamepads); - }, _0x5633cb.prototype._applyDeadzoneMaximize = function(_0x5b561d, _0x55976e, _0x5df97a) { - return _0x55976e = void 0x0 !== _0x55976e ? _0x55976e : this.deadzone, _0x5df97a = void 0x0 !== _0x5df97a ? _0x5df97a : this.maximizeThreshold, _0x5b561d >= 0x0 ? _0x5b561d < _0x55976e ? _0x5b561d = 0x0 : _0x5b561d > _0x5df97a && (_0x5b561d = 0x1) : _0x5b561d > -_0x55976e ? _0x5b561d = 0x0 : _0x5b561d < -_0x5df97a && (_0x5b561d = -0x1), _0x5b561d; - }, _0x36fa8f.Gamepad = _0x5633cb; - }(_0x3982a1.exports || window); + for (var j=0; j'+n.localization("CORS Error")+"":t.innerHTML=''+n.localization("Network Error")+""}},null,null,null,null,null,function(e,t,n){!function(e){"use strict";function a(){}function t(e){var t=this,n=window;this.update=a,this.requestAnimationFrame=e||n.requestAnimationFrame||n.webkitRequestAnimationFrame||n.mozRequestAnimationFrame,this.tickFunction=function(){t.update(),t.startTicker()},this.startTicker=function(){t.requestAnimationFrame.apply(n,[t.tickFunction])}}function n(){}function o(e,t){this.listener=e,this.gamepadGetter=t,this.knownGamepads=[]}function i(t){this.listener=t,window.addEventListener("gamepadconnected",function(e){t._connect(e.gamepad)}),window.addEventListener("gamepaddisconnected",function(e){t._disconnect(e.gamepad)})}function c(e){this.updateStrategy=e||new t,this.gamepads=[],this.listeners={},this.platform=s,this.deadzone=.03,this.maximizeThreshold=.97}var s={getType:function(){return"null"},isSupported:function(){return!1},update:a};t.prototype.start=function(e){this.update=e||a,this.startTicker()},n.prototype.update=a,n.prototype.start=function(e){this.update=e||a},o.factory=function(e){var t=s,n=window&&window.navigator;return n&&(void 0!==n.getGamepads?t=new o(e,function(){return n.getGamepads()}):void 0!==n.webkitGamepads?t=new o(e,function(){return n.webkitGamepads()}):void 0!==n.webkitGetGamepads&&(t=new o(e,function(){return n.webkitGetGamepads()}))),t},o.getType=function(){return"WebKit"},o.prototype.getType=function(){return o.getType()},o.prototype.isSupported=function(){return!0},o.prototype.update=function(){for(var e,t=Array.prototype.slice.call(this.gamepadGetter(),0),n=this.knownGamepads.length-1;0<=n;n--)e=this.knownGamepads[n],t.indexOf(e)<0&&(this.knownGamepads.splice(n,1),this.listener._disconnect(e));for(n=0;nthis.options.threshold){var r={};for(l in this.direction)this.direction.hasOwnProperty(l)&&(r[l]=this.direction[l]);var l,c={};for(l in this.direction={x:n,y:a,angle:t},e.direction=this.direction,r)r[l]===this.direction[l]&&(c[l]=!0);if(c.x&&c.y&&c.angle)return e;c.x&&c.y||this.trigger("plain",e),c.x||this.trigger("plain:"+n,e),c.y||this.trigger("plain:"+a,e),c.angle||this.trigger("dir dir:"+t,e)}return e},a.prototype=new e,(a.constructor=a).id=0,a.prototype.prepareNipples=function(){var e=this,a=e.nipples;a.on=e.on.bind(e),a.off=e.off.bind(e),a.options=e.options,a.destroy=e.destroy.bind(e),a.ids=e.ids,a.id=e.id,a.processOnMove=e.processOnMove.bind(e),a.processOnEnd=e.processOnEnd.bind(e),a.get=function(e){if(void 0===e)return a[0];for(var t=0,n=a.length;t