diff --git a/gruntfile.js b/gruntfile.js index abf524a..786603d 100644 --- a/gruntfile.js +++ b/gruntfile.js @@ -156,9 +156,23 @@ module.exports = function (grunt) { {src: "temp/javatari.js", dest: "release/stable/5.0/embedded", expand: true, flatten: true, filter: "isFile"} ] } + }, + + connect: { + server: { + options: { + hostname: '*', + livereload: true, + port: 8000, + keepalive: true, + base: 'release/stable/5.0/standalone/' + } + } } + }); + grunt.loadNpmTasks('grunt-contrib-connect'); grunt.loadNpmTasks("grunt-contrib-clean"); grunt.loadNpmTasks("grunt-contrib-concat"); grunt.loadNpmTasks("grunt-contrib-uglify"); diff --git a/package-lock.json b/package-lock.json index fb163cc..1742976 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,1047 +1,2366 @@ { "name": "Javatari", "version": "5.0.4", - "lockfileVersion": 1, + "lockfileVersion": 3, "requires": true, - "dependencies": { - "abbrev": { + "packages": { + "": { + "name": "Javatari", + "version": "5.0.4", + "devDependencies": { + "grunt": "", + "grunt-contrib-clean": "", + "grunt-contrib-concat": "", + "grunt-contrib-connect": "^4.0.0", + "grunt-contrib-copy": "", + "grunt-contrib-uglify": "2.3.0" + } + }, + "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } }, - "align-text": { + "node_modules/align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "dependencies": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "ansi-regex": { + "node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "ansi-styles": { + "node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "argparse": { + "node_modules/argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "requires": { - "sprintf-js": "1.0.3" + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "array-find-index": { + "node_modules/array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha512-N+aAxov+CKVS3JuhDIQFr24XvZvwE96Wlhk9dytTg/GmwWoghdOvR8dspx8MVz71O+Y0pA3UPqHF68D6iy8UvQ==", + "dev": true, + "dependencies": { + "util": "0.10.3" + } }, - "async": { + "node_modules/async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true }, - "balanced-match": { + "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true }, - "brace-expansion": { + "node_modules/brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "requires": { - "balanced-match": "1.0.0", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "browserify-zlib": { + "node_modules/browserify-zlib": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", "dev": true, - "requires": { - "pako": "0.2.9" + "dependencies": { + "pako": "~0.2.0" } }, - "buffer-from": { + "node_modules/buffer-from": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", "dev": true }, - "builtin-modules": { + "node_modules/builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "camelcase": { + "node_modules/camelcase": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "camelcase-keys": { + "node_modules/camelcase-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" + "dev": true, + "dependencies": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "center-align": { + "node_modules/center-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "dependencies": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + }, + "engines": { + "node": ">=0.10.0" } }, - "chalk": { + "node_modules/chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "cliui": { + "node_modules/cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "dependencies": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" } }, - "coffee-script": { + "node_modules/coffee-script": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz", - "integrity": "sha1-EpOLz5vhlI+gBvkuDEyegXBRCMA=" + "integrity": "sha1-EpOLz5vhlI+gBvkuDEyegXBRCMA=", + "deprecated": "CoffeeScript on NPM has moved to \"coffeescript\" (no hyphen)", + "dev": true, + "bin": { + "cake": "bin/cake", + "coffee": "bin/coffee" + }, + "engines": { + "node": ">=0.8.0" + } }, - "colors": { + "node_modules/colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true, + "engines": { + "node": ">=0.1.90" + } }, - "concat-map": { + "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, - "concat-stream": { + "node_modules/concat-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, - "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" } }, - "core-util-is": { + "node_modules/connect-livereload": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.1.tgz", + "integrity": "sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "currently-unhandled": { + "node_modules/currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "requires": { - "array-find-index": "1.0.2" + "dev": true, + "dependencies": { + "array-find-index": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "dateformat": { + "node_modules/dateformat": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", - "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" + "dev": true, + "dependencies": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + }, + "bin": { + "dateformat": "bin/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" } }, - "decamelize": { + "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "define-properties": { + "node_modules/define-properties": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "dev": true, - "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" + "dependencies": { + "foreach": "^2.0.5", + "object-keys": "^1.0.8" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" } }, - "error-ex": { + "node_modules/error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "requires": { - "is-arrayish": "0.2.1" + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" } }, - "escape-string-regexp": { + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, - "esprima": { + "node_modules/esprima": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "eventemitter2": { + "node_modules/eventemitter2": { "version": "0.4.14", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=" + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true + }, + "node_modules/events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } }, - "exit": { + "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, - "figures": { + "node_modules/figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "dependencies": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "file-sync-cmp": { + "node_modules/file-sync-cmp": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", - "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=" + "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", + "dev": true + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } }, - "find-up": { + "node_modules/find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "findup-sync": { + "node_modules/findup-sync": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", - "requires": { - "glob": "5.0.15" + "dev": true, + "dependencies": { + "glob": "~5.0.0" }, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/findup-sync/node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - } + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" } }, - "foreach": { + "node_modules/foreach": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", "dev": true }, - "fs.realpath": { + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "get-stdin": { + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "getobject": { + "node_modules/getobject": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", - "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=" + "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, - "glob": { + "node_modules/glob": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "graceful-fs": { + "node_modules/graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, - "grunt": { + "node_modules/grunt": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.1.tgz", "integrity": "sha1-6HeHZOlEsY8yuw8QuQeEdcnftWs=", - "requires": { - "coffee-script": "1.10.0", - "dateformat": "1.0.12", - "eventemitter2": "0.4.14", - "exit": "0.1.2", - "findup-sync": "0.3.0", - "glob": "7.0.6", - "grunt-cli": "1.2.0", - "grunt-known-options": "1.1.0", - "grunt-legacy-log": "1.0.0", - "grunt-legacy-util": "1.0.0", - "iconv-lite": "0.4.19", - "js-yaml": "3.5.5", - "minimatch": "3.0.4", - "nopt": "3.0.6", - "path-is-absolute": "1.0.1", - "rimraf": "2.2.8" - }, - "dependencies": { - "grunt-cli": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", - "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", - "requires": { - "findup-sync": "0.3.0", - "grunt-known-options": "1.1.0", - "nopt": "3.0.6", - "resolve": "1.1.7" - } - } - } - }, - "grunt-contrib-clean": { + "dev": true, + "dependencies": { + "coffee-script": "~1.10.0", + "dateformat": "~1.0.12", + "eventemitter2": "~0.4.13", + "exit": "~0.1.1", + "findup-sync": "~0.3.0", + "glob": "~7.0.0", + "grunt-cli": "~1.2.0", + "grunt-known-options": "~1.1.0", + "grunt-legacy-log": "~1.0.0", + "grunt-legacy-util": "~1.0.0", + "iconv-lite": "~0.4.13", + "js-yaml": "~3.5.2", + "minimatch": "~3.0.0", + "nopt": "~3.0.6", + "path-is-absolute": "~1.0.0", + "rimraf": "~2.2.8" + }, + "bin": { + "grunt": "bin/grunt" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-contrib-clean": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.1.0.tgz", "integrity": "sha1-Vkq/LQN4qYOhW54/MO51tzjEBjg=", - "requires": { - "async": "1.5.2", - "rimraf": "2.6.2" + "dev": true, + "dependencies": { + "async": "^1.5.2", + "rimraf": "^2.5.1" + }, + "engines": { + "node": ">= 0.10.0" }, + "peerDependencies": { + "grunt": ">=0.4.5" + } + }, + "node_modules/grunt-contrib-clean/node_modules/rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, "dependencies": { - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "requires": { - "glob": "7.0.6" - } - } + "glob": "^7.0.5" + }, + "bin": { + "rimraf": "bin.js" } }, - "grunt-contrib-concat": { + "node_modules/grunt-contrib-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-1.0.1.tgz", "integrity": "sha1-YVCYYwhOhx1+ht5IwBUlntl3Rb0=", - "requires": { - "chalk": "1.1.3", - "source-map": "0.5.7" + "dev": true, + "dependencies": { + "chalk": "^1.0.0", + "source-map": "^0.5.3" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "grunt": ">=0.4.0" + } + }, + "node_modules/grunt-contrib-connect": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-4.0.0.tgz", + "integrity": "sha512-VR2/+ailwTClAXrvI7bK78roCZzfY1C48vmpdRldohx8P1VXcb51NmBNhukBvG2RKFChNheEcKEcM+wSb/5nYA==", + "dev": true, + "dependencies": { + "async": "^3.2.0", + "connect": "^3.7.0", + "connect-livereload": "^0.6.1", + "morgan": "^1.10.0", + "node-http2": "^4.0.1", + "open": "^8.0.0", + "portscanner": "^2.2.0", + "serve-index": "^1.9.1", + "serve-static": "^1.14.1" + }, + "engines": { + "node": ">=16" } }, - "grunt-contrib-copy": { + "node_modules/grunt-contrib-connect/node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, + "node_modules/grunt-contrib-copy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", - "requires": { - "chalk": "1.1.3", - "file-sync-cmp": "0.1.1" + "dev": true, + "dependencies": { + "chalk": "^1.1.1", + "file-sync-cmp": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "grunt-contrib-uglify": { + "node_modules/grunt-contrib-uglify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-2.3.0.tgz", "integrity": "sha1-s9AmDr3WzvoS/y+Onh4ln33kIW8=", "dev": true, - "requires": { - "chalk": "1.1.3", - "maxmin": "1.1.0", - "object.assign": "4.1.0", - "uglify-js": "2.8.29", - "uri-path": "1.0.0" + "dependencies": { + "chalk": "^1.0.0", + "maxmin": "^1.1.0", + "object.assign": "^4.0.4", + "uglify-js": "~2.8.21", + "uri-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "grunt-known-options": { + "node_modules/grunt-known-options": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz", - "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=" + "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "grunt-legacy-log": { + "node_modules/grunt-legacy-log": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.0.tgz", "integrity": "sha1-+4bxgJhHvAfcR4Q/ns1srLYt8tU=", - "requires": { - "colors": "1.1.2", - "grunt-legacy-log-utils": "1.0.0", - "hooker": "0.2.3", - "lodash": "3.10.1", - "underscore.string": "3.2.3" + "dev": true, + "dependencies": { + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~1.0.0", + "hooker": "~0.2.3", + "lodash": "~3.10.1", + "underscore.string": "~3.2.3" + }, + "engines": { + "node": ">= 0.10.0" } }, - "grunt-legacy-log-utils": { + "node_modules/grunt-legacy-log-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz", "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=", - "requires": { - "chalk": "1.1.3", - "lodash": "4.3.0" - }, + "dev": true, "dependencies": { - "lodash": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", - "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=" - } + "chalk": "~1.1.1", + "lodash": "~4.3.0" + }, + "engines": { + "node": ">= 0.10.0" } }, - "grunt-legacy-util": { + "node_modules/grunt-legacy-log-utils/node_modules/lodash": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", + "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", + "dev": true + }, + "node_modules/grunt-legacy-util": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz", "integrity": "sha1-OGqnjcbtUJhsKxiVcmWxtIq7m4Y=", - "requires": { - "async": "1.5.2", - "exit": "0.1.2", - "getobject": "0.1.0", - "hooker": "0.2.3", - "lodash": "4.3.0", - "underscore.string": "3.2.3", - "which": "1.2.14" + "dev": true, + "dependencies": { + "async": "~1.5.2", + "exit": "~0.1.1", + "getobject": "~0.1.0", + "hooker": "~0.2.3", + "lodash": "~4.3.0", + "underscore.string": "~3.2.3", + "which": "~1.2.1" }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/grunt-legacy-util/node_modules/lodash": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", + "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", + "dev": true + }, + "node_modules/grunt/node_modules/grunt-cli": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", + "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", + "dev": true, "dependencies": { - "lodash": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", - "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=" - } + "findup-sync": "~0.3.0", + "grunt-known-options": "~1.1.0", + "nopt": "~3.0.6", + "resolve": "~1.1.0" + }, + "bin": { + "grunt": "bin/grunt" + }, + "engines": { + "node": ">=0.10.0" } }, - "gzip-size": { + "node_modules/gzip-size": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz", "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=", "dev": true, - "requires": { - "browserify-zlib": "0.1.4", - "concat-stream": "1.6.2" + "dependencies": { + "browserify-zlib": "^0.1.4", + "concat-stream": "^1.4.1" + }, + "bin": { + "gzip-size": "cli.js" + }, + "engines": { + "node": ">=0.10.0" } }, - "has-ansi": { + "node_modules/has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "2.1.1" + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "hooker": { + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hooker": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=" + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "dev": true, + "engines": { + "node": "*" + } }, - "hosted-git-info": { + "node_modules/hosted-git-info": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true }, - "iconv-lite": { + "node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha512-EjDQFbgJr1vDD/175UJeSX3ncQ3+RUnCL5NkthQGHvF4VNHlzTy8ifJfTqz47qiPRqaFH58+CbuG3x51WuB1XQ==", + "dev": true + }, + "node_modules/iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "indent-string": { + "node_modules/indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "requires": { - "repeating": "2.0.1" + "dev": true, + "dependencies": { + "repeating": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" } }, - "inherits": { + "node_modules/inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, - "is-arrayish": { + "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true }, - "is-buffer": { + "node_modules/is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-builtin-module": { + "node_modules/is-builtin-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "requires": { - "builtin-modules": "1.1.1" + "dev": true, + "dependencies": { + "builtin-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-finite": { + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-finite": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "requires": { - "number-is-nan": "1.0.1" + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "dependencies": { + "lodash.isfinite": "^3.3.2" } }, - "is-utf8": { + "node_modules/is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true }, - "isarray": { + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, - "isexe": { + "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, - "js-yaml": { + "node_modules/js-yaml": { "version": "3.5.5", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz", "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=", - "requires": { - "argparse": "1.0.9", - "esprima": "2.7.3" + "dev": true, + "dependencies": { + "argparse": "^1.0.2", + "esprima": "^2.6.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "kind-of": { + "node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, - "requires": { - "is-buffer": "1.1.6" + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, - "lazy-cache": { + "node_modules/lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "load-json-file": { + "node_modules/load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "lodash": { + "node_modules/lodash": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true }, - "longest": { + "node_modules/lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", + "dev": true + }, + "node_modules/longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "loud-rejection": { + "node_modules/loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" + "dev": true, + "dependencies": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "map-obj": { + "node_modules/map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "maxmin": { + "node_modules/maxmin": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz", "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=", "dev": true, - "requires": { - "chalk": "1.1.3", - "figures": "1.7.0", - "gzip-size": "1.0.0", - "pretty-bytes": "1.0.4" + "dependencies": { + "chalk": "^1.0.0", + "figures": "^1.0.1", + "gzip-size": "^1.0.0", + "pretty-bytes": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "meow": { + "node_modules/meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" - } - }, - "minimatch": { + "dev": true, + "dependencies": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "1.1.8" + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "minimist": { + "node_modules/minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, - "nopt": { + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-http2": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/node-http2/-/node-http2-4.0.1.tgz", + "integrity": "sha512-AP21BjQsOAMTCJCCkdXUUMa1o7/Qx+yAWHnHZbCf8RhZ+hKMjB9rUkAtnfayk/yGj1qapZ5eBHZJBpk1dqdNlw==", + "dev": true, + "dependencies": { + "assert": "1.4.1", + "events": "1.1.1", + "https-browserify": "0.0.1", + "setimmediate": "^1.0.5", + "stream-browserify": "2.0.1", + "timers-browserify": "2.0.2", + "url": "^0.11.0", + "websocket-stream": "^5.0.1" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "requires": { - "abbrev": "1.1.1" + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" } }, - "normalize-package-data": { + "node_modules/normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "number-is-nan": { + "node_modules/number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "object-assign": { + "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "object-keys": { + "node_modules/object-keys": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + } }, - "object.assign": { + "node_modules/object.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, - "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.1", - "has-symbols": "1.0.0", - "object-keys": "1.0.11" + "dependencies": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "once": { + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1.0.2" + "dev": true, + "dependencies": { + "wrappy": "1" } }, - "pako": { + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", "dev": true }, - "parse-json": { + "node_modules/parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "1.3.1" + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" } }, - "path-exists": { + "node_modules/path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "2.0.1" + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "path-type": { + "node_modules/path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "pify": { + "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "pinkie": { + "node_modules/pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "pinkie-promise": { + "node_modules/pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/portscanner": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "dev": true, + "dependencies": { + "async": "^2.6.0", + "is-number-like": "^1.0.3" + }, + "engines": { + "node": ">=0.4", + "npm": ">=1.0.0" + } + }, + "node_modules/portscanner/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" } }, - "pretty-bytes": { + "node_modules/portscanner/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/pretty-bytes": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", "dev": true, - "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" + "dependencies": { + "get-stdin": "^4.0.1", + "meow": "^3.1.0" + }, + "bin": { + "pretty-bytes": "cli.js" + }, + "engines": { + "node": ">=0.10.0" } }, - "process-nextick-args": { + "node_modules/process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true }, - "read-pkg": { + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/qs": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "dev": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "read-pkg-up": { + "node_modules/read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "dev": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "readable-stream": { + "node_modules/readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "redent": { + "node_modules/redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" + "dev": true, + "dependencies": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "repeat-string": { + "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10" + } }, - "repeating": { + "node_modules/repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "requires": { - "is-finite": "1.0.2" + "dev": true, + "dependencies": { + "is-finite": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "resolve": { + "node_modules/resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true }, - "right-align": { + "node_modules/right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, - "requires": { - "align-text": "0.1.4" + "dependencies": { + "align-text": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "rimraf": { + "node_modules/rimraf": { "version": "2.2.8", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=" + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "bin": { + "rimraf": "bin.js" + } }, - "safe-buffer": { + "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "semver": { + "node_modules/semver": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } }, - "signal-exit": { + "node_modules/send/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, - "source-map": { + "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "spdx-correct": { + "node_modules/spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "requires": { - "spdx-license-ids": "1.2.2" + "dev": true, + "dependencies": { + "spdx-license-ids": "^1.0.2" } }, - "spdx-expression-parse": { + "node_modules/spdx-expression-parse": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true }, - "spdx-license-ids": { + "node_modules/spdx-license-ids": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true }, - "sprintf-js": { + "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "string_decoder": { + "node_modules/stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha512-nmQnY9D9TlnfQIkYJCCWxvCcQODilFRZIw14gCMYQVXOiY4E1Ze1VMxB+6y3qdXHpTordULo2qWloHmNcNAQYw==", + "dev": true, + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "dev": true + }, + "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "requires": { - "safe-buffer": "5.1.2" + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "strip-ansi": { + "node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "strip-bom": { + "node_modules/strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "0.2.1" + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "strip-indent": { + "node_modules/strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "requires": { - "get-stdin": "4.0.1" + "dev": true, + "dependencies": { + "get-stdin": "^4.0.1" + }, + "bin": { + "strip-indent": "cli.js" + }, + "engines": { + "node": ">=0.10.0" } }, - "supports-color": { + "node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/timers-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", + "integrity": "sha512-O7UB405+hxP2OWqlBdlUMxZVEdsi8NOWL2c730Cs6zeO1l1AkxygvTm6yC4nTw84iGbFcqxbIkkrdNKzq/3Fvg==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } }, - "trim-newlines": { + "node_modules/trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "typedarray": { + "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "uglify-js": { + "node_modules/uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "dependencies": { + "source-map": "~0.5.1", + "yargs": "~3.10.0" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + }, + "optionalDependencies": { + "uglify-to-browserify": "~1.0.0" } }, - "uglify-to-browserify": { + "node_modules/uglify-to-browserify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, - "underscore.string": { + "node_modules/ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "node_modules/underscore.string": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz", - "integrity": "sha1-gGmSYzZl1eX8tNsfs6hi62jp5to=" + "integrity": "sha1-gGmSYzZl1eX8tNsfs6hi62jp5to=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "uri-path": { + "node_modules/uri-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-1.0.0.tgz", "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.10" + } }, - "util-deprecate": { + "node_modules/url": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.2" + } + }, + "node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "validate-npm-package-license": { + "node_modules/util/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "dev": true, + "dependencies": { + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" + } + }, + "node_modules/websocket-stream": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/websocket-stream/-/websocket-stream-5.5.2.tgz", + "integrity": "sha512-8z49MKIHbGk3C4HtuHWDtYX8mYej1wWabjthC/RupM9ngeukU4IWoM46dgth1UOS/T4/IqgEdCDJuMe2039OQQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.5.1", + "inherits": "^2.0.1", + "readable-stream": "^2.3.3", + "safe-buffer": "^5.1.2", + "ws": "^3.2.0", + "xtend": "^4.0.0" } }, - "which": { + "node_modules/which": { "version": "1.2.14", "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", - "requires": { - "isexe": "2.0.0" + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "window-size": { + "node_modules/window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, - "wordwrap": { + "node_modules/wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, - "yargs": { + "node_modules/ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - }, "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - } + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + }, + "node_modules/yargs/node_modules/camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "engines": { + "node": ">=0.10.0" } } } diff --git a/package.json b/package.json index 85729b0..f2c33b1 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "grunt": "", "grunt-contrib-clean": "", "grunt-contrib-concat": "", - "grunt-contrib-uglify": "2.3.0", - "grunt-contrib-copy": "" + "grunt-contrib-connect": "^4.0.0", + "grunt-contrib-copy": "", + "grunt-contrib-uglify": "2.3.0" } } diff --git a/release/stable/5.0/embedded/javatari.js b/release/stable/5.0/embedded/javatari.js index d0dd67d..dc50625 100644 --- a/release/stable/5.0/embedded/javatari.js +++ b/release/stable/5.0/embedded/javatari.js @@ -82,8 +82,8 @@ function checkLateHMOVE(){hMoveLateHit?(hMoveLateHit=!1,hMoveHitBlank=hMoveLateH playfieldUpdateSprite()));case 15:return void(PF2!==b&&(changePlayfieldAtClock(),PF2=b,playfieldUpdateSprite()));case 8:return void(COLUPF===b||debug||((playfieldEnabled&&!playfieldScoreMode||ballEnabled)&&changeAtClock(),COLUPF=b,ballColor=palette[b],playfieldScoreMode||(playfieldColor=playfieldLeftColor=playfieldRightColor=ballColor)));case 10:return void(CTRLPF!==b&&playfieldSetShape(b));case 20:return void hitRESBL();case 31:return void(ENABLd!==(2&b)&&(ENABLd=2&b,VDELBL||(changeAtClock(),ballSetEnabled(ENABLd))));case 39:return void(VDELBL!==(1&b)&&(VDELBL=1&b,ENABL!==ENABLd&&(changeAtClock(),ballSetEnabled(VDELBL?ENABL:ENABLd))));case 4:return void player0SetShape(b);case 6:return void(COLUP0===b||debug||(COLUP0=b,(player0Enabled||missile0Enabled||playfieldEnabled&&playfieldScoreMode)&&changeAtClock(),player0Color=missile0Color=palette[b],playfieldScoreMode&&(playfieldLeftColor=player0Color)));case 11:return void(REFP0!==(b>>3&1)&&(REFP0=b>>3&1,player0UpdateSprite(0)));case 16:return void hitRESP0();case 27:return void player0SetSprite(b);case 37:return void(VDELP0!==(1&b)&&(VDELP0=1&b,GRP0!==GRP0d&&player0UpdateSprite(0)));case 5:return void player1SetShape(b);case 7:return void(COLUP1===b||debug||(COLUP1=b,(player1Enabled||missile1Enabled||playfieldEnabled&&playfieldScoreMode)&&changeAtClock(),player1Color=missile1Color=palette[b],playfieldScoreMode&&(playfieldRightColor=player1Color)));case 12:return void(REFP1!==(b>>3&1)&&(REFP1=b>>3&1,player1UpdateSprite(0)));case 17:return void hitRESP1();case 28:return void player1SetSprite(b);case 38:return void(VDELP1!==(1&b)&&(VDELP1=1&b,GRP1!==GRP1d&&player1UpdateSprite(0)));case 18:return void hitRESM0();case 29:return void(ENAM0!==(2&b)&&(ENAM0=2&b,RESMP0||(changeAtClock(),missile0SetEnabled(ENAM0))));case 40:return void missile0SetResetToPlayer(b);case 19:return void hitRESM1();case 30:return void(ENAM1!==(2&b)&&(ENAM1=2&b,RESMP1||(changeAtClock(),missile1SetEnabled(ENAM1))));case 41:return void missile1SetResetToPlayer(b);case 32:return void(HMP0=(b>127?-16:0)+(b>>4));case 33:return void(HMP1=(b>127?-16:0)+(b>>4));case 34:return void(HMM0=(b>127?-16:0)+(b>>4));case 35:return void(HMM1=(b>127?-16:0)+(b>>4));case 36:return void(HMBL=(b>127?-16:0)+(b>>4));case 42:return void hitHMOVE();case 43:return void(HMP0=HMP1=HMM0=HMM1=HMBL=0);case 44:return changeAtClock(),void(collisions=0);case 21:return void(AUDC0!==b&&(AUDC0=b,audioSignal.getChannel0().setControl(15&b)));case 22:return void(AUDC1!==b&&(AUDC1=b,audioSignal.getChannel1().setControl(15&b)));case 23:return void(AUDF0!==b&&(AUDF0=b,audioSignal.getChannel0().setDivider(1+(31&b))));case 24:return void(AUDF1!==b&&(AUDF1=b,audioSignal.getChannel1().setDivider(1+(31&b))));case 25:return void(AUDV0!==b&&(AUDV0=b,audioSignal.getChannel0().setVolume(15&b)));case 26:return void(AUDV1!==b&&(AUDV1=b,audioSignal.getChannel1().setVolume(15&b)))}};var finishLine=function(){changeClock>=0?(renderLineTo(LINE_WIDTH),changeClockPrevLine=changeClock):changeClockPrevLine>=0&&(renderLineTo(changeClockPrevLine),changeClockPrevLine=-1),endObjectsAltStatusEndOfLine(),paddle0Position>=0&&!paddleCapacitorsGrounded&&(INPT0<128&&++paddle0CapacitorCharge>=paddle0Position&&(INPT0|=128),INPT1<128&&++paddle1CapacitorCharge>=paddle1Position&&(INPT1|=128)),debugLevel>=1&&processDebugPixelsInLine()},playfieldSetShape=function(a){if(CTRLPF!==a){var b=7&a;b!==(7&CTRLPF)&&(playfieldEnabled&&changeAtClock(),b=0!=(1&a),playfieldReflected!==b&&(playfieldReflected=b,playfieldUpdateSpriteR()),b=0!=(2&a),playfieldScoreMode!==b&&(playfieldScoreMode=b,debug||(b?(playfieldLeftColor=player0Color,playfieldRightColor=player1Color):playfieldColor=playfieldLeftColor=playfieldRightColor=ballColor)),playfieldPriority=0!=(4&a)),b=48&a,b!==(48&CTRLPF)&&(ballEnabled&&changeAtClock(),ballLineSpritePointer=b>>1<<6),CTRLPF=a}},hitRESP0=function(){debug&&debugPixel(DEBUG_P0_RES_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(player0Pixel!==b){player0Enabled&&changeAtClock();var c=a>=0?b:0,d=c-player0Pixel;d<0&&(d+=160),player0Pixel=b;var e=7&NUSIZ0;if(player0Alt){if(d<=playerCopyLengthPerShape[e])return}else player0LineSpritePointer+=20;var f=c-b;f<-100&&(f+=160),player0Alt=b>=80?1:2,player0AltFrom=f>=0?f:160+f,player0AltLength=playerCopyLengthPerShape[e]-f,player0AltCopyOffset=playerCopyOffsetsReset[160*e+d],player0Enabled&&player0DefineAlt()}},hitRESP1=function(){debug&&debugPixel(DEBUG_P1_RES_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(player1Pixel!==b){player1Enabled&&changeAtClock();var c=a>=0?b:0,d=c-player1Pixel;d<0&&(d+=160),player1Pixel=b;var e=7&NUSIZ1;if(player1Alt){if(d<=playerCopyLengthPerShape[e])return}else player1LineSpritePointer+=40;var f=c-b;f<-100&&(f+=160),player1Alt=b>=80?1:2,player1AltFrom=f>=0?f:160+f,player1AltLength=playerCopyLengthPerShape[e]-f,player1AltCopyOffset=playerCopyOffsetsReset[160*e+d],player1Enabled&&player1DefineAlt()}},hitRESM0=function(){debug&&debugPixel(DEBUG_M0_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(missile0Pixel!==b){missile0Enabled&&changeAtClock();var c=a>=0?b:0,d=c-missile0Pixel;if(d<0&&(d+=160),missile0Pixel=b,missile0Alt){if(d<=4+(1<<((48&NUSIZ0)>>4)))return}else missile0LineSpritePointer+=20;var e=c-b;e<-100&&(e+=160),missile0Alt=b>=80?1:2,missile0AltFrom=e>=0?e:160+e,missile0AltLength=4+(1<<((48&NUSIZ0)>>4))-e,missile0AltCopyOffset=missileCopyOffsetsReset[160*((48&NUSIZ0)>>1|7&NUSIZ0)+d],missile0Enabled&&missile0DefineAlt()}},hitRESM1=function(){debug&&debugPixel(DEBUG_M1_COLOR);var a=getRESxPixel(),b=a>=1?a:-a;if(missile1Pixel!==b){missile1Enabled&&changeAtClock();var c=a>=0?b:0,d=c-missile1Pixel;if(d<0&&(d+=160),missile1Pixel=b,missile1Alt){if(d<=4+(1<<((48&NUSIZ1)>>4)))return}else missile1LineSpritePointer+=40;var e=c-b;e<-100&&(e+=160),missile1Alt=b>=80?1:2,missile1AltFrom=e>=0?e:160+e,missile1AltLength=4+(1<<((48&NUSIZ1)>>4))-e,missile1AltCopyOffset=missileCopyOffsetsReset[160*((48&NUSIZ1)>>1|7&NUSIZ1)+d],missile1Enabled&&missile1DefineAlt()}},hitRESBL=function(){debug&&debugPixel(DEBUG_BL_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;ballPixel!==b&&(ballEnabled&&changeAtClock(),ballPixel=b)},hitHMOVE=function(){if(debug&&debugPixel(DEBUG_HMOVE_COLOR),clock=225)},performHMOVE=function(){var a,b=!1;a=hMoveHitBlank?HMP0:HMP0+8,0!==a&&(player0Pixel-=a,player0Pixel>=160?player0Pixel-=160:player0Pixel<0&&(player0Pixel+=160),player0Enabled&&(b=!0)),a=hMoveHitBlank?HMP1:HMP1+8,0!==a&&(player1Pixel-=a,player1Pixel>=160?player1Pixel-=160:player1Pixel<0&&(player1Pixel+=160),player1Enabled&&(b=!0)),a=hMoveHitBlank?HMM0:HMM0+8,0!==a&&(missile0Pixel-=a,missile0Pixel>=160?missile0Pixel-=160:missile0Pixel<0&&(missile0Pixel+=160),missile0Enabled&&(b=!0)),a=hMoveHitBlank?HMM1:HMM1+8,0!==a&&(missile1Pixel-=a,missile1Pixel>=160?missile1Pixel-=160:missile1Pixel<0&&(missile1Pixel+=160),missile1Enabled&&(b=!0)),a=hMoveHitBlank?HMBL:HMBL+8,0!==a&&(ballPixel-=a,ballPixel>=160?ballPixel-=160:ballPixel<0&&(ballPixel+=160),ballEnabled&&(b=!0)),b&&(changeClock=hMoveHitBlank?HBLANK_DURATION+8:HBLANK_DURATION)},vBlankSet=function(a){var b=0!=(2&a);vBlankOn!==b&&(changeVBlankAtClockPlus1(),vBlankOn=b),0!=(64&a)?controlsButtonsLatched=!0:(controlsButtonsLatched=!1,controlsJOY0ButtonPressed?INPT4&=127:INPT4|=128,controlsJOY1ButtonPressed?INPT5&=127:INPT5|=128),0!=(128&a)?(paddleCapacitorsGrounded=!0,paddle0CapacitorCharge=paddle1CapacitorCharge=0,INPT0&=127,INPT1&=127,INPT2&=127,INPT3&=127):paddleCapacitorsGrounded=!1},initLatchesAtPowerOn=function(){collisions=0,INPT0=INPT1=INPT2=INPT3=0,INPT4=INPT5=128},debugPixel=function(a){debugPixels[clock]=a},processDebugPixelsInLine=function(){if(jt.Util.arrayFillSegment(linePixels,0,HBLANK_DURATION+(hMoveHitBlank?8:0),hBlankColor), debugLevel>=3&&videoSignal.monitor.currentLine()%10==0)for(var a=0;a=2)for(a=0;a=1?DEBUG_HBLANK_COLOR:HBLANK_COLOR,vBlankColor=debugLevel>=1?DEBUG_VBLANK_COLOR:VBLANK_COLOR},debugRestoreColors=function(){hBlankColor=HBLANK_COLOR,vBlankColor=VBLANK_COLOR,playfieldBackground=palette[0],jt.Util.arrayFill(linePixels,hBlankColor),changeAtClock()},info=function(a){console.error("Line: "+videoSignal.monitor.currentLine()+", Pixel: "+clock+". "+a)},debugInfo=function(a){debug&&console.error("Line: "+videoSignal.monitor.currentLine()+", Pixel: "+clock+". "+a)},controls=jt.ConsoleControls;this.controlStateChanged=function(a,b){switch(a){case controls.JOY0_BUTTON:return void(b?(controlsJOY0ButtonPressed=!0,INPT4&=127):(controlsJOY0ButtonPressed=!1,controlsButtonsLatched||(INPT4|=128)));case controls.JOY1_BUTTON:return void(b?(controlsJOY1ButtonPressed=!0,INPT5&=127):(controlsJOY1ButtonPressed=!1,controlsButtonsLatched||(INPT5|=128)))}if(b)switch(a){case controls.DEBUG:return self.debug(debugLevel+1),void self.showDebugMessage();case controls.SHOW_INFO:return void videoSignal.toggleShowInfo();case controls.NO_COLLISIONS:self.debugNoCollisions(!debugNoCollisions),videoSignal.showOSD(debugNoCollisions?"No Collisions: ON":"No Collisions: OFF",!0)}},this.controlValueChanged=function(a,b){switch(a){case controls.PADDLE0_POSITION:return void(paddle0Position=b);case controls.PADDLE1_POSITION:return void(paddle1Position=b)}},this.saveState=function(a){var b={ccp:changeClockPrevLine,lpx:jt.Util.storeInt32BitArrayToStringBase64(linePixels),vs:vSyncOn,vb:vBlankOn,pfe:playfieldEnabled,pfl:playfieldPatternL,pfr:playfieldPatternR,pfc:playfieldColor,pflc:playfieldLeftColor,pfrc:playfieldRightColor,pfb:playfieldBackground,pfrl:playfieldReflected,pfsc:playfieldScoreMode,pfp:playfieldPriority,be:ballEnabled,bx:ballPixel,blp:ballLineSpritePointer,bc:ballColor,p0e:player0Enabled,p0x:player0Pixel,p0lp:player0LineSpritePointer,p0a:player0Alt,p0af:player0AltFrom,p0al:player0AltLength,p0ao:player0AltCopyOffset,p0c:player0Color,p1e:player1Enabled,p1x:player1Pixel,p1lp:player1LineSpritePointer,p1a:player1Alt,p1af:player1AltFrom,p1al:player1AltLength,p1ao:player1AltCopyOffset,p1c:player1Color,m0e:missile0Enabled,m0x:missile0Pixel,m0lp:missile0LineSpritePointer,m0a:missile0Alt,m0af:missile0AltFrom,m0al:missile0AltLength,m0ao:missile0AltCopyOffset,m0c:missile0Color,m1e:missile1Enabled,m1x:missile1Pixel,m1lp:missile1LineSpritePointer,m1a:missile1Alt,m1af:missile1AltFrom,m1al:missile1AltLength,m1ao:missile1AltCopyOffset,m1c:missile1Color,hmh:hMoveHitBlank,hmc:hMoveHitClock,hmlh:hMoveLateHit,hmlb:hMoveLateHitBlank,co:collisions,cop:collisionsPossible,cod:debugNoCollisions,cbl:controlsButtonsLatched,j0p:controlsJOY0ButtonPressed,j1p:controlsJOY1ButtonPressed,pcg:paddleCapacitorsGrounded,pd0:paddle0Position,pd0c:paddle0CapacitorCharge,pd1:paddle1Position,pd1c:paddle1CapacitorCharge,CTRLPF:CTRLPF,COLUPF:COLUPF,COLUBK:COLUBK,PF0:PF0,PF1:PF1,PF2:PF2,ENABL:ENABL,ENABLd:ENABLd,VDELBL:VDELBL,NUSIZ0:NUSIZ0,COLUP0:COLUP0,REFP0:REFP0,GRP0:GRP0,GRP0d:GRP0d,VDELP0:VDELP0,NUSIZ1:NUSIZ1,COLUP1:COLUP1,REFP1:REFP1,GRP1:GRP1,GRP1d:GRP1d,VDELP1:VDELP1,ENAM0:ENAM0,RESMP0:RESMP0,ENAM1:ENAM1,RESMP1:RESMP1,HMP0:HMP0,HMP1:HMP1,HMM0:HMM0,HMM1:HMM1,HMBL:HMBL,AUDC0:AUDC0,AUDC1:AUDC1,AUDF0:AUDF0,AUDF1:AUDF1,AUDV0:AUDV0,AUDV1:AUDV1};return a&&(b.dl=debugLevel),b},this.loadState=function(a){changeClockPrevLine=a.ccp,jt.Util.restoreStringBase64ToInt32BitArray(a.lpx,linePixels),vSyncOn=a.vs,vBlankOn=a.vb,playfieldEnabled=a.pfe,playfieldPatternL=0|a.pfl,playfieldPatternR=0|a.pfr,playfieldColor=0|a.pfc,playfieldLeftColor=0|a.pflc,playfieldRightColor=0|a.pfrc,playfieldBackground=0|a.pfb,playfieldReflected=a.pfrl,playfieldScoreMode=a.pfsc,playfieldPriority=a.pfp,ballEnabled=a.be,ballPixel=0|a.bx,ballLineSpritePointer=0|a.blp,ballColor=0|a.bc,player0Enabled=a.p0e,player0Pixel=0|a.p0x,player0LineSpritePointer=0|a.p0lp,player0Alt=0|a.p0a,player0AltFrom=0|a.p0af,player0AltLength=0|a.p0al,player0AltCopyOffset=0|a.p0ao,jt.Util.arrayFill(player0AltControl,0),player0Color=0|a.p0c,player1Enabled=a.p1e,player1Pixel=0|a.p1x,player1LineSpritePointer=0|a.p1lp,player1Alt=0|a.p1a,player1AltFrom=0|a.p1af,player1AltLength=0|a.p1al,player1AltCopyOffset=0|a.p1ao,jt.Util.arrayFill(player1AltControl,0),player1Color=0|a.p1c,missile0Enabled=a.m0e,missile0Pixel=0|a.m0x,missile0LineSpritePointer=0|a.m0lp,missile0Alt=0|a.m0a,missile0AltFrom=0|a.m0af,missile0AltLength=0|a.m0al,missile0AltCopyOffset=0|a.m0ao,jt.Util.arrayFill(missile0AltControl,0),missile0Color=0|a.m0c,missile1Enabled=a.m1e,missile1Pixel=0|a.m1x,missile1LineSpritePointer=0|a.m1lp,missile1Alt=0|a.m1a,missile1AltFrom=0|a.m1af,missile1AltLength=0|a.m1al,missile1AltCopyOffset=0|a.m1ao,jt.Util.arrayFill(missile1AltControl,0),missile1Color=0|a.m1c,hMoveHitBlank=a.hmh,hMoveHitClock=0|a.hmc,hMoveLateHit=a.hmlh,hMoveLateHitBlank=a.hmlb,collisions=0|a.co,collisionsPossible=0|a.cop,void 0!==a.cod&&(debugNoCollisions=a.cod),void 0!==a.cbl&&(controlsButtonsLatched=a.cbl,controlsJOY0ButtonPressed=a.j0p,controlsJOY1ButtonPressed=a.j1p,paddleCapacitorsGrounded=a.pcg,paddle0Position=a.pd0,paddle0CapacitorCharge=a.pd0c,paddle1Position=a.pd1,paddle1CapacitorCharge=a.pd1c),CTRLPF=0|a.CTRLPF,COLUPF=0|a.COLUPF,COLUBK=0|a.COLUBK,PF0=0|a.PF0,PF1=0|a.PF1,PF2=0|a.PF2,ENABL=0|a.ENABL,ENABLd=0|a.ENABLd,VDELBL=0|a.VDELBL,NUSIZ0=0|a.NUSIZ0,COLUP0=0|a.COLUP0,REFP0=0|a.REFP0,GRP0=0|a.GRP0,GRP0d=0|a.GRP0d,VDELP0=0|a.VDELP0,NUSIZ1=0|a.NUSIZ1,COLUP1=0|a.COLUP1,REFP1=0|a.REFP1,GRP1=0|a.GRP1,GRP1d=0|a.GRP1d,VDELP1=0|a.VDELP1,ENAM0=0|a.ENAM0,RESMP0=0|a.RESMP0,ENAM1=0|a.ENAM1,RESMP1=0|a.RESMP1,HMP0=0|a.HMP0,HMP1=0|a.HMP1,HMM0=0|a.HMM0,HMM1=0|a.HMM1,HMBL=0|a.HMBL,AUDC0=0|a.AUDC0,audioSignal.getChannel0().setControl(15&AUDC0),AUDC1=0|a.AUDC1,audioSignal.getChannel1().setControl(15&AUDC1),AUDF0=0|a.AUDF0,audioSignal.getChannel0().setDivider(1+(31&AUDF0)),AUDF1=0|a.AUDF1,audioSignal.getChannel1().setDivider(1+(31&AUDF1)),AUDV0=0|a.AUDV0,audioSignal.getChannel0().setVolume(15&AUDV0),AUDV1=0|a.AUDV1,audioSignal.getChannel1().setVolume(15&AUDV1),void 0!==a.dl?this.debug(a.dl):debug&&debugSetColors()} ;var HBLANK_DURATION=68,LINE_WIDTH=228,VBLANK_COLOR=4278190080,HBLANK_COLOR=4261412864,VSYNC_COLOR=4292730333,DEBUG_P0_COLOR=4278190335,DEBUG_P0_RES_COLOR=4280427195,DEBUG_P0_GR_COLOR=4279308663,DEBUG_P1_COLOR=4294901760,DEBUG_P1_RES_COLOR=4290454050,DEBUG_P1_GR_COLOR=4285993233,DEBUG_M0_COLOR=4284901119,DEBUG_M1_COLOR=4294927974,DEBUG_PF_COLOR=4282681412,DEBUG_PF_GR_COLOR=4281589043,DEBUG_BK_COLOR=4281549875,DEBUG_BL_COLOR=4278255615,DEBUG_MARKS_COLOR=4280295456,DEBUG_HBLANK_COLOR=4282664004,DEBUG_VBLANK_COLOR=4280953386,DEBUG_WSYNC_COLOR=4287103112,DEBUG_HMOVE_COLOR=4294967295,DEBUG_ALT_COLOR=4289374720,READ_ADDRESS_MASK=15,WRITE_ADDRESS_MASK=63,P0C=-63489,P1C=-34689,M0C=-17521,M1C=-8781,PFC=-4395,BLC=-2199,cpu=pCpu,pia=pPia,bus,powerOn=!1,clock,changeClock,changeClockPrevLine,renderClock,linePixels=new Uint32Array(LINE_WIDTH),vSyncOn=!1,vBlankOn=!1,vBlankColor=VBLANK_COLOR,hBlankColor=HBLANK_COLOR,playfieldEnabled=!1,playfieldPatternL=0,playfieldPatternR=0,playfieldColor=4278190080,playfieldLeftColor=4278190080,playfieldRightColor=4278190080,playfieldBackground=4278190080,playfieldReflected=!1,playfieldScoreMode=!1,playfieldPriority=!1,ballEnabled=!1,ballPixel=0,ballLineSpritePointer=0,ballColor=4278190080,player0Enabled=!1,player0Pixel=0,player0LineSpritePointer=0,player0Alt=0,player0AltFrom=0,player0AltLength=0,player0AltCopyOffset=0,player0AltControl=new Uint32Array(4096),player0Color=4278190080,player1Enabled=!1,player1Pixel=0,player1LineSpritePointer=0,player1Alt=0,player1AltFrom=0,player1AltLength=0,player1AltCopyOffset=0,player1AltControl=new Uint32Array(4096),player1Color=4278190080,missile0Enabled=!1,missile0Pixel=0,missile0LineSpritePointer=0,missile0Alt=0,missile0AltFrom=0,missile0AltLength=0,missile0AltCopyOffset=0,missile0AltControl=new Uint32Array(32),missile0Color=4278190080,missile1Enabled=!1,missile1Pixel=0,missile1LineSpritePointer=0,missile1Alt=0,missile1AltFrom=0,missile1AltLength=0,missile1AltCopyOffset=0,missile1AltControl=new Uint32Array(32),missile1Color=4278190080,hMoveHitBlank=!1,hMoveHitClock=0,hMoveLateHit=!1,hMoveLateHitBlank=!1,collisions=0,collisionsPossible=0,controlsButtonsLatched=!1,controlsJOY0ButtonPressed=!1,controlsJOY1ButtonPressed=!1,paddleCapacitorsGrounded=!1,paddle0Position=-1,paddle0CapacitorCharge=0,paddle1Position=-1,paddle1CapacitorCharge=0,debug=!1,debugLevel=0,debugNoCollisions=!1,debugPixels=new Uint32Array(LINE_WIDTH),playerLineSprites=new Uint8Array(262144),missileBallLineSprites=new Uint8Array(2048),playerCopyLengthPerShape=new Uint8Array([13,13,13,13,13,22,13,38]),playerScanStartPerShape=new Uint8Array([5,5,5,5,5,6,5,6]),playerPixelSizePerShape=new Uint8Array([1,1,1,1,1,2,1,4]),playerCopyOffsetsReset=new Uint8Array(1280),playerScanOffsetsShape=new Uint8Array(1280),missileCopyOffsetsReset=new Uint8Array(5120),missileScanOffsetsShape=new Uint8Array(5120),objectsLineSpritePointerDeltaToSingleCopy=new Uint16Array([0,64,128,192,256,0,384,0]),missileCenterOffsetsPerPlayerSize=new Uint8Array([5,5,5,5,5,10,5,18]),videoSignal=new jt.VideoSignal,palette,audioSignal=new jt.TiaAudio(audioSocket),INPT0=0,INPT1=0,INPT2=0,INPT3=0,INPT4=0,INPT5=0,CTRLPF=0,COLUPF=0,COLUBK=0,PF0=0,PF1=0,PF2=0,ENABL=0,ENABLd=0,VDELBL=0,NUSIZ0=0,COLUP0=0,REFP0=0,GRP0=0,GRP0d=0,VDELP0=0,NUSIZ1=0,COLUP1=0,REFP1=0,GRP1=0,GRP1d=0,VDELP1=0,ENAM0=0,RESMP0=0,ENAM1=0,RESMP1=0,HMP0=0,HMP1=0,HMM0=0,HMM1=0,HMBL=0,AUDC0=0,AUDC1=0,AUDF0=0,AUDF1=0,AUDV0=0,AUDV1=0;init(),self.eval=function(code){return eval(code)}},jt.Bus=function(a,b,c,d){"use strict";this.powerOn=function(){null!=i&&i.powerOn(),h.powerOn(),g.powerOn(),e.powerOn(),f.powerOn()},this.powerOff=function(){f.powerOff(),e.powerOff(),g.powerOff(),h.powerOff()},this.setCartridge=function(a){i=a,i&&(k=0,i.connectBus(this)),j=i&&i.needsBusMonitoring()},this.getCartridge=function(){return i},this.getTia=function(){return f},this.clockPulse=function(){g.clockPulse(),e.clockPulse()},this.read=function(a){return j&&i.monitorBusBeforeRead(a),(a&l)===m?i?k=i.read(a):k:k=(a&n)===o?h.read(a):(a&r)===s?g.read(a):63&k|f.read(a)},this.write=function(a,b){j&&i.monitorBusBeforeWrite(a,b),k=b,(a&p)===q?f.write(a,b):(a&n)===o?h.write(a,b):(a&r)===s?g.write(a,b):i&&i.write(a,b)},this.saveState=function(){return{d:k}},this.loadState=function(a){k=a.d};var e,f,g,h,i,j=!1,k=256*Math.random()|0,l=4096,m=4096,n=4736,o=128,p=4224,q=0,r=4736,s=640;!function(i){e=a,f=b,g=c,h=d,e.connectBus(i),f.connectBus(i),g.connectBus(i)}(this)},jt.AtariConsole=function(mainVideoClock){"use strict";function init(){mainComponentsCreate(),socketsCreate()}function videoFrame(){userPaused&&userPauseMoreFrames--<=0||(videoStandardAutoDetectionInProgress&&videoStandardAutoDetectionTry(),tia.frame())}function vSynchToggleMode(){if(-1===vSynchMode)return void self.showOSD("V-Synch is DISABLED / UNSUPPORTED",!0,!0);vSynchMode=vSynchMode?0:1,updateVideoSynchronization(),self.showOSD("V-Synch: "+(vSynchMode?"ON":"OFF"),!0),Javatari.userPreferences.current.vSynch=vSynchMode,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save()}function showVideoStandardMessage(){self.showOSD((videoStandardIsAuto?"AUTO: ":"")+videoStandard.name,!0)}function updateVideoSynchronization(){videoPulldown=1===vSynchMode?videoStandard.pulldowns[videoClockSocket.getVSynchNativeFrequency()]||videoStandard.pulldowns.TIMER:videoStandard.pulldowns.TIMER,videoPulldownStep=0,videoClockUpdateSpeed()}function setDefaults(){setVideoStandardAuto(!0),speedControl=1,alternateSpeed=null,videoClockUpdateSpeed(),tia.debug(0),tia.debugNoCollisions(!1)}function videoClockUpdateSpeed(){videoClockSocket.setVSynch(1===vSynchMode);var a=videoPulldown.frequency*(alternateSpeed||speedControl)|0;videoClockSocket.setFrequency(a,videoPulldown.divider),audioSocket.setFps(a/videoPulldown.divider)}function VideoClockSocket(){this.connectClock=function(b){a=b},this.getVSynchNativeFrequency=function(){return a.getVSynchNativeFrequency()},this.setVSynch=function(b){a.setVSynch(b)},this.setFrequency=function(b,c){a.setFrequency(b,c)};var a}function CartridgeSocket(){this.insert=function(a,b){b&&self.powerIsOn&&self.powerOff(),setCartridge(a),b&&!self.powerIsOn&&self.powerOn(),saveStateSocket.externalStateChange()},this.inserted=function(){return getCartridge()},this.cartridgeInserted=function(a,b){tia.getAudioOutput().cartridgeInserted(a,b),consoleControlsSocket.cartridgeInserted(a,b),saveStateSocket.cartridgeInserted(a,b),tia.getVideoOutput().monitor.cartridgeInserted(a,b)},this.loadCartridgeData=function(a,b,c){},this.saveCartridgeDataFile=function(a){}}function ConsoleControlsSocket(){this.connectControls=function(b){a=b},this.cartridgeInserted=function(b,c){a&&a.cartridgeInserted(b,c)},this.controlStateChanged=function(a,b){self.controlStateChanged(a,b),pia.controlStateChanged(a,b),tia.controlStateChanged(a,b),tia.getVideoOutput().monitor.controlStateChanged(a,b)},this.controlValueChanged=function(a,b){tia.controlValueChanged(a,b)},this.controlsStateReport=function(a){self.controlsStateReport(a),pia.controlsStateReport(a)},this.controlsStatesRedefined=function(){tia.getVideoOutput().monitor.controlsStatesRedefined()},this.firePowerAndUserPauseStateUpdate=function(){a.consolePowerAndUserPauseStateUpdate(self.powerIsOn,userPaused),tia.getVideoOutput().monitor.consolePowerAndUserPauseStateUpdate(self.powerIsOn,userPaused)},this.releaseControllers=function(){a.releaseControllers()},this.controlsClockPulse=function(){a.controlsClockPulse()},this.getControlReport=function(a){switch(a){case jt.ConsoleControls.VIDEO_STANDARD:return{label:videoStandardIsAuto?"Auto":videoStandard.name,active:!videoStandardIsAuto};case jt.ConsoleControls.VSYNCH:return{label:-1===vSynchMode?"DISABL":vSynchMode?"ON":"OFF",active:1===vSynchMode};case jt.ConsoleControls.NO_COLLISIONS:return{label:tia.getDebugNoCollisions()?"ON":"OFF",active:tia.getDebugNoCollisions()};default:return{label:"Unknown",active:!1 -}}};var a}function SaveStateSocket(){this.connectMedia=function(b){a=b},this.getMedia=function(){return a},this.cartridgeInserted=function(a){a&&a.connectSaveStateSocket(this)},this.externalStateChange=function(){a.externalStateChange()},this.saveState=function(c){if(self.powerIsOn){var d=saveState();d.v=b,a.saveState(c,d)?self.showOSD("State "+c+" saved",!0):self.showOSD("State "+c+" save failed",!0)}},this.loadState=function(c){var d=a.loadState(c);return d?d.v!==b?void self.showOSD("State "+c+" load failed, wrong version",!0):(self.powerIsOn||self.powerOn(!0),loadState(d),void self.showOSD("State "+c+" loaded",!0)):void self.showOSD("State "+c+" not found",!0)},this.saveStateFile=function(){if(self.powerIsOn){var c=cartridgeSocket.inserted()&&cartridgeSocket.inserted().rom.info.l,d=saveState();d.v=b,a.saveStateFile(c,d)?self.showOSD("State Cartridge saved",!0):self.showOSD("State file save failed",!0)}},this.loadStateFile=function(c){var d=a.loadStateFile(c);if(d)return d.v!==b?(self.showOSD("State file load failed, wrong version",!0),!0):(self.powerIsOn||self.powerOn(),loadState(d),self.showOSD("State file loaded",!0),!0)};var a,b=2}function AudioSocket(){this.connectMonitor=function(b){a=b;for(var d=c.length-1;d>=0;d--)a.connectAudioSignal(c[d])},this.connectAudioSignal=function(d){c.indexOf(d)>=0||(jt.Util.arrayAdd(c,d),this.flushAllSignals(),d.setFps(b),a&&a.connectAudioSignal(d))},this.disconnectAudioSignal=function(b){jt.Util.arrayRemoveAllElement(c,b),a&&a.disconnectAudioSignal(b)},this.audioClockPulse=function(){for(var a=c.length-1;a>=0;--a)c[a].audioClockPulse()},this.audioFinishFrame=function(){for(var a=c.length-1;a>=0;--a)c[a].audioFinishFrame()},this.muteAudio=function(){a&&a.mute()},this.unMuteAudio=function(){a&&a.unMute()},this.setFps=function(a){b=a;for(var d=c.length-1;d>=0;--d)c[d].setFps(b)},this.pauseAudio=function(){a&&a.pause()},this.unpauseAudio=function(){a&&a.unpause()},this.flushAllSignals=function(){for(var a=c.length-1;a>=0;--a)c[a].flush()};var a,b,c=[]}var self=this;this.socketsConnected=function(){setDefaults()},this.powerOn=function(a){this.powerIsOn&&this.powerOff(),bus.powerOn(),this.powerIsOn=!0,consoleControlsSocket.controlsStatesRedefined(),updateVideoSynchronization(),videoStandardAutoDetectionStart(),a||consoleControlsSocket.firePowerAndUserPauseStateUpdate()},this.powerOff=function(){bus.powerOff(),this.powerIsOn=!1,consoleControlsSocket.controlsStatesRedefined(),userPaused?this.userPause(!1):consoleControlsSocket.firePowerAndUserPauseStateUpdate()},this.userPowerOn=function(){isLoading||(this.powerOn(),bus.getCartridge()||this.showOSD("NO CARTRIDGE INSERTED!",!1,!0))},this.setLoading=function(a){isLoading=a},this.userPause=function(a,b){var c=userPaused;return userPaused!==a&&(userPaused=!!a,userPauseMoreFrames=-1,userPaused&&!b?audioSocket.muteAudio():audioSocket.unMuteAudio(),consoleControlsSocket.firePowerAndUserPauseStateUpdate()),c},this.systemPause=function(a){var b=systemPaused;return systemPaused!==a&&(systemPaused=!!a,systemPaused?audioSocket.pauseAudio():audioSocket.unpauseAudio()),b},this.isSystemPaused=function(){return systemPaused},this.videoClockPulse=function(){this.videoClockPulseApplyPulldowns(self.videoClockPulseGetNextPulldowns())},this.videoClockPulseApplyPulldowns=function(a){if(self.powerIsOn){for(;a-- >0;)videoFrame();userPaused||audioSocket.audioFinishFrame()}},this.videoClockPulseGetNextPulldowns=function(){return 1===videoPulldown.steps?1:(--videoPulldownStep<0&&(videoPulldownStep=videoPulldown.steps-1),videoPulldown.cadence[videoPulldownStep])},this.getCartridgeSocket=function(){return cartridgeSocket},this.getConsoleControlsSocket=function(){return consoleControlsSocket},this.getVideoOutput=function(){return tia.getVideoOutput()},this.getAudioOutput=function(){return tia.getAudioOutput()},this.getSavestateSocket=function(){return saveStateSocket},this.getVideoClockSocket=function(){return videoClockSocket},this.getAudioSocket=function(){return audioSocket},this.showOSD=function(a,b,c){this.getVideoOutput().showOSD(a,b,c)},this.vSynchSetSupported=function(a){var b=Javatari.userPreferences.current.vSynch;vSynchMode=-1!==Javatari.SCREEN_VSYNCH_MODE&&a?Javatari.SCREEN_VSYNCH_MODE>=0?Javatari.SCREEN_VSYNCH_MODE:null!==b&&b>=0?b:1:-1};var setCartridge=function(a){Javatari.cartridge=a;var b=getCartridge();bus.setCartridge(a),cartridgeSocket.cartridgeInserted(a,b)},getCartridge=function(){return bus.getCartridge()},setVideoStandard=function(a){videoStandard!==a&&(videoStandard=a,tia.setVideoStandard(videoStandard),updateVideoSynchronization())},setVideoStandardAuto=function(a){videoStandardIsAuto=a,a&&(self.powerIsOn?videoStandardAutoDetectionStart():setVideoStandard(jt.VideoStandard.NTSC))},videoStandardAutoDetectionStart=function(){if(videoStandardIsAuto&&!videoStandardAutoDetectionInProgress)return bus.getCartridge()?void(tia.getVideoOutput().monitor&&(videoStandardAutoDetectionInProgress=!0,videoStandardAutoDetectionTries=0,tia.getVideoOutput().monitor.videoStandardDetectionStart())):void setVideoStandard(jt.VideoStandard.NTSC)},videoStandardAutoDetectionTry=function(){videoStandardAutoDetectionTries++;var a=tia.getVideoOutput().monitor.getVideoStandardDetected();!a&&videoStandardAutoDetectionTries0?--c:a===controls.MIN_SPEED?c=0:a===controls.NORMAL_SPEED&&(c=SPEEDS.indexOf(1)),speedControl=SPEEDS[c],self.showOSD("Speed: "+(100*speedControl|0)+"%",!0),videoClockUpdateSpeed();break;case controls.SAVE_STATE_0:case controls.SAVE_STATE_1:case controls.SAVE_STATE_2:case controls.SAVE_STATE_3:case controls.SAVE_STATE_4:case controls.SAVE_STATE_5:case controls.SAVE_STATE_6:case controls.SAVE_STATE_7:case controls.SAVE_STATE_8:case controls.SAVE_STATE_9:case controls.SAVE_STATE_10:case controls.SAVE_STATE_11:case controls.SAVE_STATE_12:var d=self.systemPause(!0);saveStateSocket.saveState(255&a),d||self.systemPause(!1);break;case controls.SAVE_STATE_FILE:d=self.systemPause(!0),saveStateSocket.saveStateFile(),d||self.systemPause(!1);break;case controls.LOAD_STATE_0:case controls.LOAD_STATE_1:case controls.LOAD_STATE_2:case controls.LOAD_STATE_3:case controls.LOAD_STATE_4:case controls.LOAD_STATE_5:case controls.LOAD_STATE_6:case controls.LOAD_STATE_7:case controls.LOAD_STATE_8:case controls.LOAD_STATE_9:case controls.LOAD_STATE_10:case controls.LOAD_STATE_11:case controls.LOAD_STATE_12:d=self.systemPause(!0),saveStateSocket.loadState(255&a),d||self.systemPause(!1);break;case controls.VIDEO_STANDARD:videoStandardIsAuto?setVideoStandardForced(jt.VideoStandard.NTSC):videoStandard==jt.VideoStandard.NTSC?setVideoStandardForced(jt.VideoStandard.PAL):setVideoStandardAuto(!0),showVideoStandardMessage();break;case controls.VSYNCH:vSynchToggleMode();break;case controls.CARTRIDGE_FORMAT:cycleCartridgeFormat();break;case controls.DEFAULTS:setDefaults(),self.showOSD("Default Settings",!0)}},this.controlsStateReport=function(a){a[controls.POWER]=self.powerIsOn},this.eval=function(str){return eval(str)},init()},jt.JoystickButtons={J_UP:{button:"J_UP",mask:1,n:"UP"},J_DOWN:{button:"J_DOWN",mask:2,n:"DOWN"},J_LEFT:{button:"J_LEFT",mask:4,n:"LEFT"},J_RIGHT:{button:"J_RIGHT",mask:8,n:"RIGHT"},J_A:{button:"J_A",mask:16,n:"A"},J_B:{button:"J_B",mask:32,n:"B"},J_AB:{button:"J_AB",mask:48,n:"AB"},J_X:{button:"J_X",n:"X"},J_Y:{button:"J_Y",n:"Y"},J_L:{button:"J_L",n:"L"},J_R:{button:"J_R",n:"R"},J_BACK:{button:"J_BACK",n:"BACK"},J_START:{button:"J_START",n:"START"}},jt.ConsoleControls={JOY0_UP:11,JOY0_DOWN:12,JOY0_LEFT:13,JOY0_RIGHT:14,JOY0_BUTTON:15,JOY1_UP:21,JOY1_DOWN:22,JOY1_LEFT:23,JOY1_RIGHT:24,JOY1_BUTTON:25,PADDLE0_BUTTON:41,PADDLE1_BUTTON:42,PADDLE0_POSITION:16384,PADDLE1_POSITION:16896,POWER:51,BLACK_WHITE:52,SELECT:53,RESET:54,DIFFICULTY0:55,DIFFICULTY1:56,POWER_OFF:57,POWER_FRY:58,CARTRIDGE_FORMAT:91,DEBUG:101,TRACE:102,SHOW_INFO:103,NO_COLLISIONS:104,PAUSE:105,PAUSE_AUDIO_ON:106,FRAME:107,FAST_SPEED:111,SLOW_SPEED:112,INC_SPEED:113,DEC_SPEED:114,NORMAL_SPEED:115,MIN_SPEED:116,VIDEO_STANDARD:123,VSYNCH:124,DEFAULTS:130,SAVE_STATE_0:256,SAVE_STATE_1:257,SAVE_STATE_2:258,SAVE_STATE_3:259,SAVE_STATE_4:260,SAVE_STATE_5:261,SAVE_STATE_6:262,SAVE_STATE_7:263,SAVE_STATE_8:264,SAVE_STATE_9:265,SAVE_STATE_10:266,SAVE_STATE_11:267,SAVE_STATE_12:268,LOAD_STATE_0:512,LOAD_STATE_1:513,LOAD_STATE_2:514,LOAD_STATE_3:515,LOAD_STATE_4:516,LOAD_STATE_5:517,LOAD_STATE_6:518,LOAD_STATE_7:519,LOAD_STATE_8:520,LOAD_STATE_9:521,LOAD_STATE_10:522,LOAD_STATE_11:523,LOAD_STATE_12:524,SAVE_STATE_FILE:201},jt.ROM=function(a,b,c,d){"use strict";this.source=a,this.content=b,this.info=c||jt.CartridgeCreator.produceInfo(this,d),this.saveState=function(a){return{s:this.source,i:this.info,c:a?jt.Util.compressInt8BitArrayToStringBase64(this.content):null}}},jt.ROM.loadState=function(a){"use strict";var b=a.c?jt.Util.uncompressStringBase64ToInt8BitArray(a.c):null;return new jt.ROM(a.s,b,a.i)},jt.CartridgeDatabase={uncompress:function(){jt.CartridgeDatabase=JSON.parse(jt.Util.uncompressStringBase64ToString(this.data))}, +}}};var a}function SaveStateSocket(){this.connectMedia=function(b){a=b},this.getMedia=function(){return a},this.cartridgeInserted=function(a){a&&a.connectSaveStateSocket(this)},this.externalStateChange=function(){a.externalStateChange()},this.saveState=function(c){if(self.powerIsOn){var d=saveState();d.v=b,a.saveState(c,d)?self.showOSD("State "+c+" saved",!0):self.showOSD("State "+c+" save failed",!0)}},this.loadState=function(c){var d=a.loadState(c);return d?d.v!==b?void self.showOSD("State "+c+" load failed, wrong version",!0):(self.powerIsOn||self.powerOn(!0),loadState(d),void self.showOSD("State "+c+" loaded",!0)):void self.showOSD("State "+c+" not found",!0)},this.saveStateFile=function(){if(self.powerIsOn){var c=cartridgeSocket.inserted()&&cartridgeSocket.inserted().rom.info.l,d=saveState();d.v=b,a.saveStateFile(c,d)?self.showOSD("State Cartridge saved",!0):self.showOSD("State file save failed",!0)}},this.loadStateFile=function(c){var d=a.loadStateFile(c);if(d)return d.v!==b?(self.showOSD("State file load failed, wrong version",!0),!0):(self.powerIsOn||self.powerOn(),loadState(d),self.showOSD("State file loaded",!0),!0)};var a,b=2}function AudioSocket(){this.connectMonitor=function(b){a=b;for(var d=c.length-1;d>=0;d--)a.connectAudioSignal(c[d])},this.connectAudioSignal=function(d){c.indexOf(d)>=0||(jt.Util.arrayAdd(c,d),this.flushAllSignals(),d.setFps(b),a&&a.connectAudioSignal(d))},this.disconnectAudioSignal=function(b){jt.Util.arrayRemoveAllElement(c,b),a&&a.disconnectAudioSignal(b)},this.audioClockPulse=function(){for(var a=c.length-1;a>=0;--a)c[a].audioClockPulse()},this.audioFinishFrame=function(){for(var a=c.length-1;a>=0;--a)c[a].audioFinishFrame()},this.muteAudio=function(){a&&a.mute()},this.unMuteAudio=function(){a&&a.unMute()},this.setFps=function(a){b=a;for(var d=c.length-1;d>=0;--d)c[d].setFps(b)},this.pauseAudio=function(){a&&a.pause()},this.unpauseAudio=function(){a&&a.unpause()},this.flushAllSignals=function(){for(var a=c.length-1;a>=0;--a)c[a].flush()};var a,b,c=[]}var self=this;this.socketsConnected=function(){setDefaults()},this.powerOn=function(a){this.powerIsOn&&this.powerOff(),bus.powerOn(),this.powerIsOn=!0,consoleControlsSocket.controlsStatesRedefined(),updateVideoSynchronization(),videoStandardAutoDetectionStart(),a||consoleControlsSocket.firePowerAndUserPauseStateUpdate()},this.powerOff=function(){bus.powerOff(),this.powerIsOn=!1,consoleControlsSocket.controlsStatesRedefined(),userPaused?this.userPause(!1):consoleControlsSocket.firePowerAndUserPauseStateUpdate()},this.userPowerOn=function(){isLoading||(this.powerOn(),bus.getCartridge()||this.showOSD("NO CARTRIDGE INSERTED!",!1,!0))},this.setLoading=function(a){isLoading=a},this.userPause=function(a,b){var c=userPaused;return userPaused!==a&&(userPaused=!!a,userPauseMoreFrames=-1,userPaused&&!b?audioSocket.muteAudio():audioSocket.unMuteAudio(),consoleControlsSocket.firePowerAndUserPauseStateUpdate()),c},this.systemPause=function(a){var b=systemPaused;return systemPaused!==a&&(systemPaused=!!a,systemPaused?audioSocket.pauseAudio():audioSocket.unpauseAudio()),b},this.isSystemPaused=function(){return systemPaused},this.videoClockPulse=function(){this.videoClockPulseApplyPulldowns(self.videoClockPulseGetNextPulldowns())},this.videoClockPulseApplyPulldowns=function(a){if(self.powerIsOn){for(;a-- >0;)videoFrame();userPaused||audioSocket.audioFinishFrame()}},this.videoClockPulseGetNextPulldowns=function(){return 1===videoPulldown.steps?1:(--videoPulldownStep<0&&(videoPulldownStep=videoPulldown.steps-1),videoPulldown.cadence[videoPulldownStep])},this.getCartridgeSocket=function(){return cartridgeSocket},this.getConsoleControlsSocket=function(){return consoleControlsSocket},this.getVideoOutput=function(){return tia.getVideoOutput()},this.getAudioOutput=function(){return tia.getAudioOutput()},this.getSavestateSocket=function(){return saveStateSocket},this.getVideoClockSocket=function(){return videoClockSocket},this.getAudioSocket=function(){return audioSocket},this.showOSD=function(a,b,c){this.getVideoOutput().showOSD(a,b,c)},this.vSynchSetSupported=function(a){var b=Javatari.userPreferences.current.vSynch;vSynchMode=-1!==Javatari.SCREEN_VSYNCH_MODE&&a?Javatari.SCREEN_VSYNCH_MODE>=0?Javatari.SCREEN_VSYNCH_MODE:null!==b&&b>=0?b:1:-1};var setCartridge=function(a){Javatari.cartridge=a;var b=getCartridge();bus.setCartridge(a),cartridgeSocket.cartridgeInserted(a,b)},getCartridge=function(){return bus.getCartridge()},setVideoStandard=function(a){videoStandard!==a&&(videoStandard=a,tia.setVideoStandard(videoStandard),updateVideoSynchronization())},setVideoStandardAuto=function(a){videoStandardIsAuto=a,a&&(self.powerIsOn?videoStandardAutoDetectionStart():setVideoStandard(jt.VideoStandard.NTSC))},videoStandardAutoDetectionStart=function(){if(videoStandardIsAuto&&!videoStandardAutoDetectionInProgress)return bus.getCartridge()?void(tia.getVideoOutput().monitor&&(videoStandardAutoDetectionInProgress=!0,videoStandardAutoDetectionTries=0,tia.getVideoOutput().monitor.videoStandardDetectionStart())):void setVideoStandard(jt.VideoStandard.NTSC)},videoStandardAutoDetectionTry=function(){videoStandardAutoDetectionTries++;var a=tia.getVideoOutput().monitor.getVideoStandardDetected();!a&&videoStandardAutoDetectionTries0?--c:a===controls.MIN_SPEED?c=0:a===controls.NORMAL_SPEED&&(c=SPEEDS.indexOf(1)),speedControl=SPEEDS[c],self.showOSD("Speed: "+(100*speedControl|0)+"%",!0),videoClockUpdateSpeed();break;case controls.SAVE_STATE_0:case controls.SAVE_STATE_1:case controls.SAVE_STATE_2:case controls.SAVE_STATE_3:case controls.SAVE_STATE_4:case controls.SAVE_STATE_5:case controls.SAVE_STATE_6:case controls.SAVE_STATE_7:case controls.SAVE_STATE_8:case controls.SAVE_STATE_9:case controls.SAVE_STATE_10:case controls.SAVE_STATE_11:case controls.SAVE_STATE_12:var d=self.systemPause(!0);saveStateSocket.saveState(255&a),d||self.systemPause(!1);break;case controls.SAVE_STATE_FILE:d=self.systemPause(!0),saveStateSocket.saveStateFile(),d||self.systemPause(!1);break;case controls.LOAD_STATE_0:case controls.LOAD_STATE_1:case controls.LOAD_STATE_2:case controls.LOAD_STATE_3:case controls.LOAD_STATE_4:case controls.LOAD_STATE_5:case controls.LOAD_STATE_6:case controls.LOAD_STATE_7:case controls.LOAD_STATE_8:case controls.LOAD_STATE_9:case controls.LOAD_STATE_10:case controls.LOAD_STATE_11:case controls.LOAD_STATE_12:d=self.systemPause(!0),saveStateSocket.loadState(255&a),d||self.systemPause(!1);break;case controls.VIDEO_STANDARD:videoStandardIsAuto?setVideoStandardForced(jt.VideoStandard.NTSC):videoStandard==jt.VideoStandard.NTSC?setVideoStandardForced(jt.VideoStandard.PAL):setVideoStandardAuto(!0),showVideoStandardMessage();break;case controls.VSYNCH:vSynchToggleMode();break;case controls.CARTRIDGE_FORMAT:cycleCartridgeFormat();break;case controls.DEFAULTS:setDefaults(),self.showOSD("Default Settings",!0)}},this.controlsStateReport=function(a){a[controls.POWER]=self.powerIsOn},this.eval=function(str){return eval(str)},init()},jt.JoystickButtons={J_UP:{button:"J_UP",mask:1,n:"UP"},J_DOWN:{button:"J_DOWN",mask:2,n:"DOWN"},J_LEFT:{button:"J_LEFT",mask:4,n:"LEFT"},J_RIGHT:{button:"J_RIGHT",mask:8,n:"RIGHT"},J_A:{button:"J_A",mask:16,n:"A"},J_B:{button:"J_B",mask:32,n:"B"},J_AB:{button:"J_AB",mask:48,n:"AB"},J_X:{button:"J_X",n:"X"},J_Y:{button:"J_Y",n:"Y"},J_L:{button:"J_L",n:"L"},J_R:{button:"J_R",n:"R"},J_BACK:{button:"J_BACK",n:"BACK"},J_START:{button:"J_START",n:"START"}},jt.ConsoleControls={JOY0_UP:11,JOY0_DOWN:12,JOY0_LEFT:13,JOY0_RIGHT:14,JOY0_BUTTON:15,JOY1_UP:21,JOY1_DOWN:22,JOY1_LEFT:23,JOY1_RIGHT:24,JOY1_BUTTON:25,PADDLE0_BUTTON:41,PADDLE1_BUTTON:42,PADDLE0_POSITION:16384,PADDLE1_POSITION:16896,POWER:51,BLACK_WHITE:52,SELECT:53,RESET:54,DIFFICULTY0:55,DIFFICULTY1:56,POWER_OFF:57,POWER_FRY:58,CARTRIDGE_FORMAT:91,DEBUG:101,TRACE:102,SHOW_INFO:103,NO_COLLISIONS:104,PAUSE:105,PAUSE_AUDIO_ON:106,FRAME:107,FAST_SPEED:111,SLOW_SPEED:112,INC_SPEED:113,DEC_SPEED:114,NORMAL_SPEED:115,MIN_SPEED:116,VIDEO_STANDARD:123,VSYNCH:124,DEFAULTS:130,SAVE_STATE_0:256,SAVE_STATE_1:257,SAVE_STATE_2:258,SAVE_STATE_3:259,SAVE_STATE_4:260,SAVE_STATE_5:261,SAVE_STATE_6:262,SAVE_STATE_7:263,SAVE_STATE_8:264,SAVE_STATE_9:265,SAVE_STATE_10:266,SAVE_STATE_11:267,SAVE_STATE_12:268,LOAD_STATE_0:512,LOAD_STATE_1:513,LOAD_STATE_2:514,LOAD_STATE_3:515,LOAD_STATE_4:516,LOAD_STATE_5:517,LOAD_STATE_6:518,LOAD_STATE_7:519,LOAD_STATE_8:520,LOAD_STATE_9:521,LOAD_STATE_10:522,LOAD_STATE_11:523,LOAD_STATE_12:524,SAVE_STATE_FILE:201},jt.ROM=function(a,b,c,d){"use strict";this.source=a,this.content=b,this.info=c||jt.CartridgeCreator.produceInfo(this,d),this.saveState=function(a){return{s:this.source,i:this.info,c:a?jt.Util.compressInt8BitArrayToStringBase64(this.content):null}}},jt.ROM.loadState=function(a){"use strict";var b=a.c?jt.Util.uncompressStringBase64ToInt8BitArray(a.c):null;return new jt.ROM(a.s,b,a.i)},jt.CartridgeDatabase={uncompress:function(){jt.CartridgeDatabase=JSON.parse(jt.Util.uncompressStringBase64ToString(this.data))}, data:"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" },jt.Cartridge=function(){"use strict";this.powerOn=function(){},this.powerOff=function(){},this.connectBus=function(a){},this.connectSaveStateSocket=function(a){},this.read=function(a){},this.write=function(a,b){},this.getDataDesc=function(){return null},this.needsBusMonitoring=function(){return!1},this.monitorBusBeforeRead=function(a){},this.monitorBusBeforeWrite=function(a,b){},this.needsAudioClock=function(){return!1},this.audioClockPulse=function(){},this.reinsertROMContent=function(){this.rom.content||(this.rom.content=this.bytes||[])},this.format=null,this.rom=null,this.bytes=null,this.saveState=function(){},this.loadState=function(a){}},jt.Cartridge.base=new jt.Cartridge,jt.Cartridge4K=function(a,b){"use strict";this.read=function(a){return c[a&d]},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c};var c,d=4095;a&&function(d){d.rom=a,d.format=b,c=new Array(4096),d.bytes=c;for(var e=a.content.length,f=0;f=1024&&d<=2047&&(e[d-1024]=b)};var c=function(a){return a&f};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),ra:jt.Util.compressInt8BitArrayToStringBase64(e)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,e)};var d,e=jt.Util.arrayFill(new Array(1024),0),f=4095;a&&function(c){c.rom=a,c.format=b,d=new Array(4096),c.bytes=d;for(var e=a.content.length,f=0;f=k&&b<2*k?l[b-k]:g[m+b]},this.write=function(a,b){var c=f(a);c=h&&b<=i&&(m=p*(b-h)),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(g),bo:m,bb:h,es:k,tb:i,s:0|n,sa:0|j,e:l&&jt.Util.compressInt8BitArrayToStringBase64(l)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),g=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,g),this.bytes=g,m=a.bo,h=a.bb,k=a.es,i=a.tb,n=!!a.s,j=!!a.sa,l=a.e&&jt.Util.uncompressStringBase64ToInt8BitArray(a.e,l)};var g,h,i,j,k,l,m=0,n=!1,o=4095,p=4096;a&&function(f){f.rom=a,f.format=b,g=a.content,f.bytes=g;var m=g.length/p;h=c,i=h+m-1,k=e,null==d||void 0==d?(n=!1,j=!0):(n=!!d,j=!1),l=!1!==d?jt.Util.arrayFill(new Array(k),0):null}(this)},jt.CartridgeBankedByMaskedRange.prototype=jt.Cartridge.base,jt.CartridgeBankedByMaskedRange.recreateFromSaveState=function(a,b){var c=b||new jt.CartridgeBankedByMaskedRange;return c.loadState(a),c},jt.Cartridge8K_E0=function(a,b){"use strict";this.read=function(a){var b=c(a);return b<1024?d[e+b]:b<2048?d[f+b-1024]:b<3072?d[g+b-2048]:d[4096+b]},this.write=function(a,b){c(a)};var c=function(a){var b=a&h;return b>=4064&&b<=4087&&(b<=4071?e=1024*(b-4064):b<=4079?f=1024*(b-4072):b<=4087&&(g=1024*(b-4080))),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),s0:e,s1:f,s2:g}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.s0,f=a.s1,g=a.s2};var d,e=0,f=0,g=0,h=4095;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d}(this)},jt.Cartridge8K_E0.prototype=jt.Cartridge.base,jt.Cartridge8K_E0.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_E0;return c.loadState(a),c},jt.Cartridge64K_F0=function(a,b){"use strict";this.read=function(a){var b=c(a);return d[e+b]},this.write=function(a,b){c(a)};var c=function(a){var b=a&f;return b==i&&(e+=h)>=g&&(e=0),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.bo};var d,e=0,f=4095,g=65536,h=4096,i=4080;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d}(this)},jt.Cartridge64K_F0.prototype=jt.Cartridge.base,jt.Cartridge64K_F0.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge64K_F0;return c.loadState(a),c},jt.Cartridge8K_FE=function(a,b){"use strict";this.read=function(a){var b=c(a);return d[e+b]},this.write=function(a,b){c(a)};var c=function(a){return 0!=(8192&a)?0!==e&&(e=0):e!=g&&(e=g),a&f};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.bo};var d,e=0,f=4095,g=4096;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d}(this)},jt.Cartridge8K_FE.prototype=jt.Cartridge.base,jt.Cartridge8K_FE.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_FE;return c.loadState(a),c},jt.Cartridge16K_E7=function(a,b){"use strict";this.read=function(a){var b=c(a);return b>=2304&&b<=2559?g[i+b-2304]:h&&b>=1024&&b<=2047?g[b-1024]:b=2048&&d<=2303?g[i+d-2048]=b:h&&d<=1023&&(g[d]=b)};var c=function(a){var b=a&j;return b>=4064&&b<=4075&&(b<=4070?e=k*(b-4064):4071==b?h=!0:b<=4075&&(i=f+n*(b-4072))),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e,rs:h,ro:i,ra:jt.Util.compressInt8BitArrayToStringBase64(g)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.bo,h=a.rs,i=a.ro,g=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,g)};var d,e=0,f=1024,g=jt.Util.arrayFill(new Array(2048),0),h=!1,i=f,j=4095,k=2048,l=2048,m=16384-k-l,n=256;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d}(this)},jt.Cartridge16K_E7.prototype=jt.Cartridge.base,jt.Cartridge16K_E7.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge16K_E7;return c.loadState(a),c},jt.Cartridge10K_DPCa=function(a,b){"use strict";this.powerOn=function(){x=o,y=0},this.connectBus=function(a){k=a.getTia().getAudioOutput().getChannel0()},this.needsAudioClock=function(){return!0},this.read=function(a){var b=c(a);return b<=63||b>=2048&&b<=2111?e(255&b):l[q+b]},this.write=function(a,b){var d=c(a);(d>=64&&d<=127||d>=2112&&d<=2175)&&f(255&d,b)},this.audioClockPulse=function(){if((y+x|0)>(0|y))for(var a=5;a<=7;a++)w[a]&&(s[a]--,255==(255&s[a])&&g(a,65280&s[a]|t[a]),i(a),z||(z=!0));y+=x,z&&(d(),k.setVolume(A))};var c=function(a){var b=a&n;return 4088===b?q=0:4089===b&&(q=4096),b},d=function(){A=m[(w[5]?4&v[5]:0)|(w[6]?2&v[6]:0)|(w[7]?1&v[7]:0)],z=!1},e=function(a){var b;return a>=0&&a<=3?(j(),r):a>=4&&a<=7?(z&&d(),A):a>=8&&a<=15?(b=l[p-s[a-8]],h(a-8),b):a>=16&&a<=23?(b=l[p-s[a-16]]&v[a-16],h(a-16),b):a>=24&&a<=31?(b=l[p-s[a-24]]&v[a-24],h(a-24), b=240&b|15&b):a>=32&&a<=39?(b=l[p-s[a-32]]&v[a-32],h(a-32),b=128&b|64&b|32&b|16&b|8&b|4&b|2&b|1&b):a>=40&&a<=47?(b=l[p-s[a-40]]&v[a-40],h(a-40),b=255&(b>>>1|b<<7)):a>=48&&a<=55?(b=l[p-s[a-48]]&v[a-48],h(a-48),b=255&(b<<1|b>>7&1)):a>=56&&a<=63?v[a-56]:0},f=function(a,b){if(a>=64&&a<=71){var c=a-64;return t[c]=b,void((255&s[c])===t[c]&&(v[c]=255))}return a>=72&&a<=79?(u[a-72]=b,void(v[a-72]=0)):a>=80&&a<=87?void g(a-80,65280&s[a-80]|255&b):a>=88&&a<=91?void g(a-88,255&s[a-88]|(7&b)<<8):92==a?void g(4,255&s[4]|(7&b)<<8):a>=93&&a<=95?(g(a-88,(255&s[a-88])+((7&b)<<8)),void(w[a-88]=(16&b)>>>4)):void(a>=96&&a<=103||a>=112&&a<=119&&(r=0))},g=function(a,b){s[a]=b},h=function(a){var b=s[a]-1;b<0&&(b=2047),g(a,b),i(a)},i=function(a){var b=255&s[a];b==t[a]?v[a]=255:b==u[a]&&(v[a]=0)},j=function(){255===(r=255&(r<<1|1&~(r>>7^r>>5^r>>4^r>>3)))&&(r=0)};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(l),bo:q,rn:r,fp:jt.Util.compressInt8BitArrayToStringBase64(s),fs:jt.Util.compressInt8BitArrayToStringBase64(t),fe:jt.Util.compressInt8BitArrayToStringBase64(u),fm:jt.Util.compressInt8BitArrayToStringBase64(v),a:jt.Util.compressInt8BitArrayToStringBase64(w)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),l=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,l),this.bytes=l,q=a.bo,r=a.rn,s=jt.Util.uncompressStringBase64ToInt8BitArray(a.fp,s),t=jt.Util.uncompressStringBase64ToInt8BitArray(a.fs,t),u=jt.Util.uncompressStringBase64ToInt8BitArray(a.fe,u),v=jt.Util.uncompressStringBase64ToInt8BitArray(a.fm,v),w=jt.Util.uncompressStringBase64ToInt8BitArray(a.a,w)};var k,l,m=[0,5,5,10,5,10,10,15],n=4095,o=.62,p=10239,q=0,r=0,s=jt.Util.arrayFill(new Array(8),0),t=jt.Util.arrayFill(new Array(8),0),u=jt.Util.arrayFill(new Array(8),0),v=jt.Util.arrayFill(new Array(8),0),w=jt.Util.arrayFill(new Array(8),0),x=o,y=0,z=!0,A=0;a&&function(c){c.rom=a,c.format=b,l=a.content,c.bytes=l}(this)},jt.Cartridge10K_DPCa.prototype=jt.Cartridge.base,jt.Cartridge10K_DPCa.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge10K_DPCa;return c.loadState(a),c},jt.Cartridge24K_28K_32K_FA2=function(a,b,c){"use strict";var d=this;this.connectBus=function(a){k=a},this.connectSaveStateSocket=function(a){l=a},this.read=function(a){var b,c=e(a);if(b=c>=256&&c<512?r[c-256]:m[p+c],c!==x)return b;if(0===t){var d=r[y];if(1===d||2===d)return f(d),64|b}return 0===t?191&b:(i(),0!==t?64|b:191&b)},this.write=function(a,b){var c=e(a);c<256&&(r[c]=b)};var e=function(a){var b=a&v;return b>=q&&b<=n&&(p=o+w*(b-q)),b},f=function(a){t=a,s=0,1===a?g():2===a&&h()},g=function(){if(k.getTia().getVideoOutput().showOSD("Reading from Cartridge Flash Memory...",!0),l){var a=l.getMedia().loadResource(j());a&&(u=jt.Util.uncompressStringBase64ToInt8BitArray(a,u))}jt.Util.arrayCopy(u,0,r)},h=function(){k.getTia().getVideoOutput().showOSD("Writing to Cartridge Flash Memory...",!0),jt.Util.arrayCopy(r,0,u),l&&l.getMedia().saveResource(j(),jt.Util.compressInt8BitArrayToStringBase64(u))},i=function(){++s>140&&(s=0,t=0,r[y]=0,k.getTia().getVideoOutput().showOSD("Done.",!0),l&&l.externalStateChange())},j=function(){return"hfm"+d.rom.info.h};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(m),rs:o,bo:p,tb:n,e:jt.Util.compressInt8BitArrayToStringBase64(r),ho:t,ht:s}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),m=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,m),this.bytes=m,o=a.rs||0,p=a.bo,n=a.tb,r=jt.Util.uncompressStringBase64ToInt8BitArray(a.e,r),t=a.ho||0,s=a.ht||0};var k,l,m,n,o=0,p=0,q=4085,r=jt.Util.arrayFill(new Array(256),0),s=0,t=0,u=jt.Util.arrayFill(new Array(256),0),v=4095,w=4096,x=4084,y=255;a&&function(d){d.rom=a,d.format=b,m=a.content,d.bytes=m,o=c||0,p=o;var e=(m.length-o)/w;n=q+e-1}(this)},jt.Cartridge24K_28K_32K_FA2.prototype=jt.Cartridge.base,jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge24K_28K_32K_FA2;return c.loadState(a),c},jt.CartridgeBankedByBusMonitoring=function(a,b){"use strict";this.needsBusMonitoring=function(){return!0},this.monitorBusBeforeRead=function(a){this.performBankSwitchOnMonitoredAccess(a)},this.monitorBusBeforeWrite=function(a,b){this.performBankSwitchOnMonitoredAccess(a)},this.performBankSwitchOnMonitoredAccess=function(a){}},jt.CartridgeBankedByBusMonitoring.prototype=jt.Cartridge.base,jt.CartridgeBankedByBusMonitoring.base=new jt.CartridgeBankedByBusMonitoring,jt.Cartridge8K_512K_3F=function(a,b){"use strict";this.read=function(a){var b=a&g;return b>=i?c[e+b]:c[f+b]},this.monitorBusBeforeWrite=function(a,b){if(a<=63){var c=255&b;c<=d&&(f=c*h)}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c),bo:f,sm:d,fo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,f=a.bo,d=a.sm,e=a.fo};var c,d,e,f=0,g=4095,h=2048,i=2048;a&&function(f){f.rom=a,f.format=b,c=a.content,f.bytes=c,d=(c.length-h)/h-1,e=c.length-2*h}(this)},jt.Cartridge8K_512K_3F.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_512K_3F.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_512K_3F;return c.loadState(a),c},jt.Cartridge8K_512K_3E=function(a,b){"use strict";this.read=function(a){var b=c(a);return b>=m?d[f+b]:i>=0&&b<1024?j[i+b]||0:d[h+b]},this.write=function(a,b){if(!(i<0)){var d=c(a);d>=1024&&d<=2047&&(j[i+d-1024]=b)}};var c=function(a){return a&k};this.monitorBusBeforeWrite=function(a,b){if(63===a){var c=255&b;return void(c<=e&&(h=c*l,i=-1))}if(62===a){i=(255&b)*g}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:h,sm:e,fo:f,ro:i,ra:jt.Util.compressInt8BitArrayToStringBase64(j)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,h=a.bo,e=a.sm,f=a.fo,i=a.ro,j=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,j)};var d,e,f,g=1024,h=0,i=-1,j=jt.Util.arrayFill(new Array(g),0),k=4095,l=2048,m=2048;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d,e=(d.length-l)/l-1,f=d.length-2*l}(this)},jt.Cartridge8K_512K_3E.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_512K_3E.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_512K_3E;return c.loadState(a),c},jt.Cartridge8K_256K_SB=function(a,b){"use strict";this.read=function(a){return c[e+(a&f)]},this.performBankSwitchOnMonitoredAccess=function(a){if(2048==(6144&a)){var b=127&a;b>d||(e=b*g)}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c),bo:e,m:d}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,e=a.bo,d=a.m};var c,d,e=0,f=4095,g=4096;a&&function(e){e.rom=a,e.format=b,c=a.content,e.bytes=c,d=c.length/g-1}(this)},jt.Cartridge8K_256K_SB.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_256K_SB.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_256K_SB;return c.loadState(a),c},jt.Cartridge8K_64K_AR=function(a,b){"use strict";this.powerOn=function(){g(0),D=0},this.connectBus=function(a){c=a},this.read=function(a){return f=K&&f0?void(a!==s&&(s=a,0==--t&&(a&R)===S&&(f>2&7){case 0:o=2*M,p=N;break;case 1: @@ -91,9 +91,9 @@ o=0*M,p=N;break;case 2:o=2*M,p=0*M;break;case 3:o=0*M,p=2*M;break;case 4:o=2*M,p return new jt.CartridgeBankedByMaskedRange(a,this,4086,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},F4:{name:"F4",desc:"32K Atari (+RAM)",priority:101,tryFormat:function(a){if(32768===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4084,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},FA2cu:{name:"FA2cu",desc:"32K CBS RAM+ CU Image",priority:103,tryFormat:function(a){if(32768===a.content.length){var b=jt.Util.arraysEqual(a.content.slice(32,36),this.cuMagicWord);return this.priority=103-(b?30:0),this}},createCartridgeFromRom:function(a){return new jt.Cartridge24K_28K_32K_FA2(a,this,1024)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState(a,b)},cuMagicWord:[30,171,173,16]},FA2:{name:"FA2",desc:"24K/28K/32K CBS RAM+",priority:102,tryFormat:function(a){if(24576===a.content.length||28672===a.content.length||32768===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge24K_28K_32K_FA2(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState(a,b)}},FA:{name:"FA",desc:"12K CBS RAM Plus",priority:101,tryFormat:function(a){if(12288===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4088,!0,256)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},EF:{name:"EF",desc:"8K-64K H. Runner (+RAM)",priority:114,tryFormat:function(a){if(a.content.length%4096==0&&a.content.length>=8192&&a.content.length<=65536)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4064,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},DPC:{name:"DPC",desc:"10K DPC Pitfall 2 (Enhanced)",priority:101,tryFormat:function(a){if(a.content.length>=10240&&a.content.length<=10496)return this},createCartridgeFromRom:function(a){return new jt.Cartridge10K_DPCa(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge10K_DPCa.recreateFromSaveState(a,b)}},"3F":{name:"3F",desc:"8K-512K Tigervision",priority:112,tryFormat:function(a){if(a.content.length%2048==0&&a.content.length>=2048&&a.content.length<=524288)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_512K_3F(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_512K_3F.recreateFromSaveState(a,b)}},"3E":{name:"3E",desc:"8K-512K Tigervision (+RAM)",priority:111,tryFormat:function(a){if(a.content.length%2048==0&&a.content.length>=2048&&a.content.length<=524288)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_512K_3E(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_512K_3E.recreateFromSaveState(a,b)}},X07:{name:"X07",desc:"64K AtariAge",priority:102,tryFormat:function(a){if(65536===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge64K_X07(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge64K_X07.recreateFromSaveState(a,b)}},"0840":{name:"0840",desc:"8K Econobanking",priority:116,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_0840(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_0840.recreateFromSaveState(a,b)}},UA:{name:"UA",desc:"8K UA Limited",priority:115,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_UA(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_UA.recreateFromSaveState(a,b)}},SB:{name:"SB",desc:"8K-256K Superbanking",priority:113,tryFormat:function(a){if(a.content.length%4096==0&&a.content.length>=8192&&a.content.length<=262144)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_256K_SB(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_256K_SB.recreateFromSaveState(a,b)}},AR:{name:"AR",desc:"8K-64K Arcadia/Supercharger",priority:101,tryFormat:function(a){if(a.content.length%jt.Cartridge8K_64K_AR.PART_SIZE==0&&a.content.length/jt.Cartridge8K_64K_AR.PART_SIZE>=1&&a.content.length/jt.Cartridge8K_64K_AR.PART_SIZE<=8&&jt.Cartridge8K_64K_AR.checkTape(a))return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_64K_AR(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_64K_AR.recreateFromSaveState(a,b)}}},jt.CartridgeFormatsUserOptions=["4K","CV","E0","F0","FE","E7","F8","F6","F4","FA2cu","FA2","FA","EF","DPC","3F","3E","X07","0840","UA","SB","AR"],jt.CartridgeCreatorImpl=function(){"use strict";this.createCartridgeFromRom=function(b){var c=a.getForROM(b);if(c){var d=jt.CartridgeFormats[c];if(d.tryFormat(b))return jt.Util.log("USER Format selected: "+d.desc),d.createCartridgeFromRom(b)}var e=this.getBestFormatOption(b);if(e)return jt.Util.log("AUTO Format selected: "+e.name+": "+e.desc+", priority: "+e.priority+(e.priorityBoosted?" ("+e.priorityBoosted+")":"")),e.createCartridgeFromRom(b)},this.recreateCartridgeFromSaveState=function(a,b){var c=jt.CartridgeFormats[a.f];if(!c)throw new Error("Unsupported ROM Format: "+a.f);return b&&b.format!==c&&(b=null),c.recreateCartridgeFromSaveState(a,b)},this.changeCartridgeFormat=function(a,b){return b.createCartridgeFromRom(a.rom)},this.getBestFormatOption=function(a){var c=b(a);return 0===c.length?void 0:c[0]},this.getUserFormatOptionNames=function(a){for(var b=[],c=0,d=jt.CartridgeFormatsUserOptions.length;ce&&a.content.splice(e);var g=jt.CartridgeDatabase[f];return g?jt.Util.log(g.n+" ("+f+")"):(g=c(a.source),jt.Util.log("Unknown ROM: "+g.n+" ("+f+")")),d(g,a.source,f,b),g},this.setUserROMFormats=function(b){a=b};var a,b=function(a){var b,c,d=[];for(var f in jt.CartridgeFormats)try{if(!(b=jt.CartridgeFormats[f].tryFormat(a)))continue;e(b,a.info),d.push(b)}catch(a){if(!a.formatDenial)throw a;c||(c=a)}return d.sort(function(a,b){return(a.priorityBoosted||a.priority)-(b.priorityBoosted||b.priority)}),d},c=function(a){var b={n:"Unknown"};if(!a||!a.trim())return b;var c=a,d=c.lastIndexOf("/"),e=c.lastIndexOf("\\"),f=c.lastIndexOf("?"),g=Math.max(d,Math.max(e,f));g>=0&&g=0&&(c=c.substring(0,h)),b.n=c.trim()||"Unknown",b},d=function(a,b,c,d){a.h=c,a.l||(a.l=f(a.n));var e=a.n.toUpperCase();a:if(!a.p&&(a.p=0,!e.match(l+"JOYSTICK(S)?"+m)))if(e.match(l+"PADDLE(S)?"+m))a.p=1;else for(var n=0;n=1?b:1,dividerCounter>divider&&(dividerCounter=divider)},pulse=function(){animationFrame=null,divider>1?--dividerCounter<=0&&(dividerCounter=divider,clockPulse()):clockPulse(),useRequestAnimationFrame&&!animationFrame&&(animationFrame=requestAnimationFrame(pulse))};this.detectHostNativeFPSAndCallback=function(a){function b(){vSynchNativeFrequency=-1,jt.Util.error("Could not detect video native frequency. V-Synch DISABLED!"),a&&a(vSynchNativeFrequency)}if(-1===Javatari.SCREEN_VSYNCH_MODE)return jt.Util.warning("Video native V-Synch disabled in configuration"),void(a&&a(vSynchNativeFrequency));if(-1!==Javatari.SCREEN_FORCE_HOST_NATIVE_FPS)return jt.Util.warning("Host video frequency forced in configuration: "+Javatari.SCREEN_FORCE_HOST_NATIVE_FPS),void(a&&a(vSynchNativeFrequency));if(!window.requestAnimationFrame)return b();var c=0,d=0,e=0,f=0,g=0,h=0,i=function(){if(e>=12||f>=18||g>=14||h>=18)return vSynchNativeFrequency=e>=12?60:f>=18?50:g>=14?120:100,jt.Util.log("Video native frequency detected: "+vSynchNativeFrequency+"Hz"),void(a&&a(vSynchNativeFrequency));if(!(++c<=70))return b();var j=jt.Util.performanceNow(),k=1e3/(j-d);d=j,k>=47&&k<=53&&f++,k>=56.4&&k<=63.6&&e++,k>=112.8&&k<=127.2&&g++,k>=94&&k<=106&&h++,requestAnimationFrame(i)};i()},this.eval=function(str){return eval(str)};var running=!1,cyclesPerSecond=1,cycleTimeMs=1e3,divider=1,dividerCounter=1,useRequestAnimationFrame,animationFrame=null,interval=null,vSynch=!0,vSynchNativeFrequency=-1===Javatari.SCREEN_VSYNCH_MODE?-1:Javatari.SCREEN_FORCE_HOST_NATIVE_FPS,vSynchAltNativeFrequency=void 0},jt.RecentStoredROMs=function(){function a(){if(!e){try{e=JSON.parse(localStorage.javataristoredromsdata)}catch(a){}e||b()}return e}function b(){d=[],localStorage.javataristoredromsicatalog=JSON.stringify(d),e=[],localStorage.javataristoredromsdata=JSON.stringify(e)}this.getCatalog=function(){if(!d){try{d=JSON.parse(localStorage.javataristoredromsicatalog)}catch(a){}d||b()}return d},this.storeROM=function(b){this.getCatalog();var c=d.find(function(a){return a&&a.h===b.info.h});if(c&&c.n==b.info.l&&c.f==b.info.f)this.lastROMLoadedIndex=d.indexOf(c);else{if(a(),c){var g=d.indexOf(c);d.splice(g,1),e.splice(g,1)}else d.length>=f&&(d=d.slice(0,f-1),e=e.slice(0,f-1));d.unshift({n:b.info.l,h:b.info.h,f:b.info.f});for(var h=0;h0&&(1===b.length?l.readFromFile(b[0],r,s,t,u,d):l.readFromFiles(b,r,s,t,u,d)),!1}}function h(a){a.returnValue=!1,a.preventDefault(),a.stopPropagation(), a.dataTransfer&&(Javatari.CARTRIDGE_CHANGE_DISABLED?a.dataTransfer.dropEffect="none":a.ctrlKey?a.dataTransfer.dropEffect="copy":a.altKey&&(a.dataTransfer.dropEffect="link")),v=a.buttons>0?a.buttons:w}function i(a){if(a.returnValue=!1,a.preventDefault(),a.stopPropagation(),a.target.focus(),a.dataTransfer&&!c.mediaChangeDisabledWarning()){var b=m.systemPause(!0),d=a.shiftKey?1:0,e=v&x,f=a.ctrlKey,g=y.AUTO,h=a.dataTransfer&&a.dataTransfer.files,i=function(a){b||m.systemPause(!1)};if(h&&h.length>0)1===h.length?l.readFromFile(h[0],g,d,e,f,i):l.readFromFiles(h,g,d,e,f,i);else{var j=a.dataTransfer.getData("text");j&&j.length>0?l.readFromURL(j,g,d,e,f,i):i()}}}function j(a){jt.Util.message("Could not load file(s):\n\n"+a+"\n")}function k(){p=document.createElement("input"),p.id="jt-file-loader-input",p.type="file",p.multiple=!0,p.accept=z.AUTO,p.style.display="none",p.addEventListener("change",g),q.appendChild(p)}var l=this;this.connect=function(a){m=a,n=m.getCartridgeSocket(),o=m.getSavestateSocket()},this.registerForDnD=function(a){a.addEventListener("dragover",h,!1),a.addEventListener("drop",i,!1)},this.registerForFileInputElement=function(a){q=a},this.openFileChooserDialog=function(a,b,c,d){p||k(),p.multiple=A[y[a]||y.AUTO],p.accept=z[y[a]||y.AUTO],r=a,s=c?1:0,t=b,u=d,p.click()},this.openURLChooserDialog=function(a,b,c,d){var e,f=c?1:0;try{e=localStorage&&localStorage[C]}catch(a){}var g=m.systemPause(!0);if(e=prompt("Load file from URL:",e||""),e=e&&e.toString().trim()){try{localStorage[C]=e}catch(a){}this.readFromURL(e,a,f,b,d,function(){g||m.systemPause(!1)})}else g||m.systemPause(!1)},this.readFromFile=function(a,b,c,d,e,f){jt.Util.log("Reading file: "+a.name);var g=new FileReader;g.onload=function(g){var h=new Uint8Array(g.target.result),i={name:a.name,content:h,lastModifiedDate:a.lastModified?new Date(a.lastModified):a.lastModifiedDate};l.loadFromFile(i,b,c,d,e),f&&f(!0)},g.onerror=function(a){j("File reading error: "+a.target.error.name+D),f&&f(!1)},g.readAsArrayBuffer(a)},this.readFromURL=function(a,b,c,d,e,f){new jt.MultiDownloader([{url:a}],function(g){var h={name:a,content:g[0].content,lastModifiedDate:null};l.loadFromFile(h,b,c,d,e),f&&f(!0)},function(a){j("URL reading error: "+a[0].error),f&&f(!1)}).start()},this.readFromFiles=function(a,b,c,d,e,f){new jt.MultiFileReader(a,function(a){l.loadFromFiles(a,b,c,d,e),f&&f(!0)},function(a,b,c){c||(b+=D),j("File reading error: "+b),f&&f(!1)}).start()},this.loadFromContent=function(a,b,c,d,e,f,g){return this.loadFromFile({name:a,content:b},c,d,e,f,g)},this.loadFromFile=function(a,b,c,e,f,g){var h;if(h=jt.Util.checkContentIsZIP(a.content))try{if(d(jt.Util.getZIPFilesSorted(h),b,c,e,f,g,!0))return}catch(a){jt.Util.error(a)}else if(d([a],b,c,e,f,g,!1))return;j("No valid "+B[b]+" found.")},this.loadFromFiles=function(a,b,c,e,f){a=jt.Util.asNormalArray(a).slice(0),a.sort(function(a,b){return a.nameb.name?1:0}),d(a,b,c,e,f,null,!1)||j("No valid "+B[b]+" found.")},this.loadROM=function(a,c,d,e){var f=jt.CartridgeCreator.createCartridgeFromRom(a);return!!f&&(n.insert(f,!d),b.storeROM(a),!0)};var m,n,o,p,q,r,s=0,t=!1,u=!1,v=1,w=1,x=2,y=jt.FileLoader.OPEN_TYPE;this.OPEN_TYPE=y;var z={ROM:".bin,.BIN,.rom,.ROM,.a26,.A26,.zip,.ZIP,.gz,.GZ,.gzip,.GZIP",STATE:".jst,.JST",CART_DATA:".dat,.DAT,.sram,.SRAM",AUTO:".bin,.BIN,.rom,.ROM,.a26,.A26,.jst,.JST,.zip,.ZIP,.gz,.GZ,.gzip,.GZIP"},A={ROM:!1,STATE:!1,CART_DATA:!1,AUTO:!1},B={ROM:"ROM",STATE:"Savestate",CART_DATA:"Cartridge Data",AUTO:"ROM"},C="javatarilasturl",D="\n\nIMPORTANT: Directories are not supported for loading!";Javatari.fileLoader=this},jt.FileLoader.OPEN_TYPE={AUTO:"AUTO",ROM:"ROM",STATE:"STATE",CART_DATA:"CART_DATA"},jt.FileDownloader=function(){"use strict";function a(){if("NONE"===c)return alert("Unfortunately file saving in WebApps is broken in this version of iOS. The file could not be saved. If you really need to save a file, you must run Javatari on the official homepage."),!0}function b(){"NONE"!==(c=jt.Util.isIOSDevice()?jt.Util.isBrowserStandaloneMode()?"NONE":"DATA":"SAFARI"===jt.Util.browserInfo().name?"DATA":"BLOB")&&(d=document.createElement("a"),d.style.display="none",d.target="_blank",d.href="#",e.appendChild(d))}this.connectPeripherals=function(a){f=a},this.registerForDownloadElement=function(a){e=a},this.startDownloadBinary=function(e,g,h){try{if(c||b(),a())return;var i;if("BLOB"===c){d.href&&(window.URL||window.webkitURL).revokeObjectURL(d.href);var j=new Blob([g],{type:"data:application/octet-stream"});i=(window.URL||window.webkitURL).createObjectURL(j)}else i="data:application/octet-stream;base64,"+btoa("string"==typeof g?g:jt.Util.int8BitArrayToByteString(g));d.download=e&&e.trim(),d.href=i,d.click(),f.showOSD(h+" saved",!0)}catch(a){f.showOSD(h+" save FAILED!",!0,!0),jt.Util.error(a)}},this.startDownloadURL=function(e,g,h){try{if(c||b(),a())return;"BLOB"===c&&d.href&&(window.URL||window.webkitURL).revokeObjectURL(d.href),d.download=e&&e.trim(),d.href=g,d.click(),f.showOSD(h+" saved",!0)}catch(a){f.showOSD(h+" save FAILED!",!0,!0),jt.Util.error(a)}};var c,d,e,f},jt.DOMKeys={},jt.DOMKeys.MOD_SHIFT=16,jt.DOMKeys.LOC_SHIFT=24,jt.DOMKeys.SHIFT=65536,jt.DOMKeys.CONTROL=131072,jt.DOMKeys.ALT=262144,jt.DOMKeys.META=524288,jt.DOMKeys.LOCNONE=0,jt.DOMKeys.LOCLEFT=16777216,jt.DOMKeys.LOCRIGHT=33554432,jt.DOMKeys.LOCNUM=50331648,jt.DOMKeys.IGNORE_ALL_MODIFIERS_MASK=~(jt.DOMKeys.SHIFT|jt.DOMKeys.CONTROL|jt.DOMKeys.ALT|jt.DOMKeys.META),function(a,b,c,d){a.VK_F1={c:112,n:"F1"},a.VK_F2={c:113,n:"F2"},a.VK_F3={c:114,n:"F3"},a.VK_F4={c:115,n:"F4"},a.VK_F5={c:116,n:"F5"},a.VK_F6={c:117,n:"F6"},a.VK_F7={c:118,n:"F7"},a.VK_F8={c:119,n:"F8"},a.VK_F9={c:120,n:"F9"},a.VK_F10={c:121,n:"F10"},a.VK_F11={c:122,n:"F11"},a.VK_F12={c:123,n:"F12"},a.VK_1={c:49,n:"1"},a.VK_2={c:50,n:"2"},a.VK_3={c:51,n:"3"},a.VK_4={c:52,n:"4"},a.VK_5={c:53,n:"5"},a.VK_6={c:54,n:"6"},a.VK_7={c:55,n:"7"},a.VK_8={c:56,n:"8"},a.VK_9={c:57,n:"9"},a.VK_0={c:48,n:"0"},a.VK_Q={c:81,n:"Q"},a.VK_W={c:87,n:"W"},a.VK_E={c:69,n:"E"},a.VK_R={c:82,n:"R"},a.VK_T={c:84,n:"T"},a.VK_Y={c:89,n:"Y"},a.VK_U={c:85,n:"U"},a.VK_I={c:73,n:"I"},a.VK_O={c:79,n:"O"},a.VK_P={c:80,n:"P"},a.VK_A={c:65,n:"A"},a.VK_S={c:83,n:"S"},a.VK_D={c:68,n:"D"},a.VK_F={c:70,n:"F"},a.VK_G={c:71,n:"G"},a.VK_H={c:72,n:"H"},a.VK_J={c:74,n:"J"},a.VK_K={c:75,n:"K"},a.VK_L={c:76,n:"L"},a.VK_Z={c:90,n:"Z"},a.VK_X={c:88,n:"X"},a.VK_C={c:67,n:"C"},a.VK_V={c:86,n:"V"},a.VK_B={c:66,n:"B"},a.VK_N={c:78,n:"N"},a.VK_M={c:77,n:"M"},a.VK_ESCAPE={c:27,n:"Esc"},a.VK_ENTER={c:13,n:"Enter"},a.VK_SPACE={c:32,n:"Space"},a.VK_TAB={c:9,n:"Tab"},a.VK_BACKSPACE={c:8,n:"BackSpc"},a.VK_CONTEXT={c:93,n:"Context"},a.VK_LSHIFT={c:16|b,n:"L-Shift"},a.VK_LCONTROL={c:17|b,n:"L-Control"},a.VK_LALT={c:18|b,n:"L-Alt"},a.VK_LMETA={c:91|b,n:"L-Meta"},a.VK_RSHIFT={c:16|c,n:"R-Shift"},a.VK_RCONTROL={c:17|c,n:"R-Control"},a.VK_RALT={c:18|c,n:"R-Alt"},a.VK_RMETA={c:91|c,n:"R-Meta"},a.VK_CAPS_LOCK={c:20,n:"CapsLock"},a.VK_PRINT_SCREEN={c:44,n:"PrtScr"},a.VK_SCROLL_LOCK={c:145,n:"ScrLck"},a.VK_PAUSE={c:19,n:"Pause"},a.VK_BREAK={c:3,n:"Break"},a.VK_INSERT={c:45,n:"Ins"},a.VK_DELETE={c:46,n:"Del"},a.VK_HOME={c:36,n:"Home"},a.VK_END={c:35,n:"End"},a.VK_PAGE_UP={c:33,n:"PgUp"},a.VK_PAGE_DOWN={c:34,n:"PgDown"},a.VK_NUM_INSERT={c:45|d,n:"Num Ins"},a.VK_NUM_DELETE={c:46|d,n:"Num Del"},a.VK_NUM_HOME={c:36|d,n:"Num Home"},a.VK_NUM_END={c:35|d,n:"Num End"},a.VK_NUM_PAGE_UP={c:33|d,n:"Num PgUp"},a.VK_NUM_PAGE_DOWN={c:34|d,n:"Num PgDown"},a.VK_UP={c:38,n:"Up"},a.VK_DOWN={c:40,n:"Down"},a.VK_LEFT={c:37,n:"Left"},a.VK_RIGHT={c:39,n:"Right"},a.VK_NUM_UP={c:38|d,n:"Num Up"},a.VK_NUM_DOWN={c:40|d,n:"Num Down"},a.VK_NUM_LEFT={c:37|d,n:"Num Left"},a.VK_NUM_RIGHT={c:39|d,n:"Num Right"},a.VK_NUMLOCK={c:144,n:"NumLock"},a.VK_NUM_COMMA={c:110|d,n:"Num ,"},a.VK_NUM_DIVIDE={c:111|d,n:"Num /"},a.VK_NUM_MULTIPLY={c:106|d,n:"Num *"},a.VK_NUM_MINUS={c:109|d,n:"Num -"},a.VK_NUM_PLUS={ -c:107|d,n:"Num +"},a.VK_NUM_PERIOD={c:194|d,n:"Num ."},a.VK_NUM_0={c:96|d,n:"Num 0"},a.VK_NUM_1={c:97|d,n:"Num 1"},a.VK_NUM_2={c:98|d,n:"Num 2"},a.VK_NUM_3={c:99|d,n:"Num 3"},a.VK_NUM_4={c:100|d,n:"Num 4"},a.VK_NUM_5={c:101|d,n:"Num 5"},a.VK_NUM_6={c:102|d,n:"Num 6"},a.VK_NUM_7={c:103|d,n:"Num 7"},a.VK_NUM_8={c:104|d,n:"Num 8"},a.VK_NUM_9={c:105|d,n:"Num 9"},a.VK_NUM_CLEAR={c:12|d,n:"Num Clear"},a.VK_NUM_ENTER={c:13|d,n:"Num Enter"},a.VK_QUOTE={c:222,n:"'"},a.VK_BACKQUOTE={c:192,n:"`"},a.VK_MINUS={c:189,n:"-"},a.VK_EQUALS={c:187,n:"="},a.VK_OPEN_BRACKET={c:219,n:"["},a.VK_CLOSE_BRACKET={c:221,n:"]"},a.VK_COMMA={c:188,n:","},a.VK_PERIOD={c:190,n:"."},a.VK_SEMICOLON={c:186,n:";"},a.VK_SLASH={c:191,n:"/"},a.VK_BACKSLASH={c:220,n:"\\"},a.VK_ALTERNATE_ESC={c:a.VK_F1.c|jt.DOMKeys.ALT,n:["Alt","F1"]},a.VK_FF_MINUS={c:173,n:"-"},a.VK_FF_EQUALS={c:61,n:"="},a.VK_FF_SEMICOLON={c:59,n:";"},a.VK_BR_QUOTE={c:192,n:"'"},a.VK_BR_OPEN_BRACKET={c:221,n:"["},a.VK_BR_CLOSE_BRACKET={c:220,n:"]"},a.VK_BR_SEMICOLON={c:191,n:";"},a.VK_BR_SLASH={c:193,n:"/"},a.VK_BR_BACKSLASH={c:226,n:"\\"},a.VK_BR_CEDILLA={c:186,n:"Ç"},a.VK_BR_TILDE={c:222,n:"~"},a.VK_BR_ACUTE={c:219,n:"´"},a.VK_FF_BR_TILDE={c:176,n:"~"},a.VK_VOID={c:-1,n:""}}(jt.DOMKeys,jt.DOMKeys.LOCLEFT,jt.DOMKeys.LOCRIGHT,jt.DOMKeys.LOCNUM),jt.DOMKeys.forcedNames={27:"Esc",13:"Enter",32:"Space",9:"Tab",8:"BkSpc",16:"Shift",17:"Ctrl",18:"Alt",91:"Meta",93:"Context",20:"Caps",44:"PrtScr",145:"ScrLck",19:"Pause",3:"Break",45:"Ins",46:"Del",36:"Home",35:"End",33:"PgUp",34:"PgDown",38:"Up",40:"Down",37:"Left",39:"Right"},jt.DOMKeys.isModifierKeyCode=function(a){return 16===a||17===a||18===a||91===a},jt.DOMKeys.codeForKeyboardEvent=function(a){var b=a.keyCode;return this.isModifierKeyCode(b)?b&this.IGNORE_ALL_MODIFIERS_MASK|a.location<12&&(c=c.substr(0,12)),a.location){case 1:c="L-"+c;break;case 2:c="R-"+c;break;case 3:c="Num "+c}return(a.shiftKey||a.ctrlKey||a.altKey||a.metaKey)&&(c=[c],a.metaKey&&c.unshift("Meta"),a.altKey&&c.unshift("Alt"),a.ctrlKey&&c.unshift("Ctrl"),a.shiftKey&&c.unshift("Shift")),c},jt.DOMKeys.nameForKeyboardEventSingle=function(a){var b=a.keyCode,c=this.forcedNames[b]||a.key,d=c&&c.toUpperCase();switch(d&&"UNIDENTIFIED"!==d&&"UNDEFINED"!==d&&"UNKNOWN"!==d?"DEAD"===d&&(c="Dead#"+b):c="#"+b,1===c.length?c=c.toUpperCase():c.length>12&&(c=c.substr(0,12)),a.location){case 1:c="L-"+c;break;case 2:c="R-"+c;break;case 3:c="Num "+c}return c},jt.GamepadButtons={GB_1:{b:0,n:"1"},GB_2:{b:1,n:"2"},GB_3:{b:2,n:"3"},GB_4:{b:3,n:"4"},GB_L1:{b:4,n:"L1"},GB_R1:{b:5,n:"R1"},GB_L2:{b:6,n:"L2"},GB_R2:{b:7,n:"R2"},GB_BACK:{b:8,n:"BACK"},GB_START:{b:9,n:"START"},GB_S1:{b:10,n:"S1"},GB_S2:{b:11,n:"S2"},GB_UP:{b:12,n:"▲"},GB_DOWN:{b:13,n:"▼"},GB_LEFT:{b:14,n:"◄"},GB_RIGHT:{b:15,n:"►"},GB_LOGO:{b:16,n:"LOGO"},GB_VOID:{b:-1,n:"Unbound"}},jt.TouchControls={buttons:["T_B","T_A"]},jt.GamepadConsoleControls=function(a){"use strict";function b(a,b){this.index=a,this.update=function(b){return!!(c=b[a])},this.hasMoved=function(){var a=c.timestamp;return!a||a>m&&(m=a,!0)},this.getButtonDigital=function(a){var b=c.buttons[a];return"object"==typeof b?b.pressed||b.value>.5:b>.5},this.getDPadDirection=function(){return this.getButtonDigital(12)?this.getButtonDigital(15)?1:this.getButtonDigital(14)?7:0:this.getButtonDigital(13)?this.getButtonDigital(15)?3:this.getButtonDigital(14)?5:4:this.getButtonDigital(14)?6:this.getButtonDigital(15)?2:-1},this.getStickDirection=function(){var a=c.axes[d],b=c.axes[e];if((a<0?-a:a)=1&&(h-=1),8*h|0},this.getPaddlePosition=function(){var a=c.axes[h]*i*j+k|0;return a<0?a=0:a>380&&(a=380),a};var c,d=b.xAxis,e=b.yAxis,f=b.xAxisSig,g=b.yAxisSig,h=b.paddleAxis,i=b.paddleAxisSig,j=-190*b.paddleSens,k=-190*b.paddleCenter+190-5,l=b.deadzone,m=Number.MIN_VALUE}this.connect=function(a){h=a},this.connectScreen=function(a){i=a},this.powerOn=function(){(r=!!navigator.getGamepads)&&(this.applyPreferences(),e())},this.powerOff=function(){r=!1},this.toggleMode=function(){if(!r)return void i.showOSD("Joysticks unavailable (not supported by browser)",!0,!0);++u,u>0&&(u=-2),-2===u?j=k=null:-1===u&&(s=60,this.controlsClockPulse()),w=0===u,this.applyPreferences(),e(),i.showOSD("Gamepads "+this.getModeDesc(),!0)},this.setPaddleMode=function(a){r&&(v=a,l.xPosition=m.xPosition=-1)},this.setP1ControlsMode=function(a){x=a,this.applyPreferences()},this.controlsClockPulse=function(){if(r&&-2!==u&&(++s>=60&&(s=0),j||k||0===s)){var a=navigator.getGamepads();j?j.update(a)?j.hasMoved()&&f(j,l,n,p):(j=null,c(!0,!1)):0===s&&(j=d(n,o,a))&&c(!0,!0),k?k.update(a)?k.hasMoved()&&f(k,m,o,q):(k=null,c(!1,!1)):0===s&&(k=d(o,n,a))&&c(!1,!0)}};var c=function(a,b){i.showOSD((a^x^w?"P1":"P2")+" Gamepad "+(b?"connected":"disconnected"),a)},d=function(a,c,d){if(d&&0!==d.length){var e=a.device;if(e>=0)return d[e]&&d[e].buttons.length>0?new b(e,a):null;for(var f=0,g=d.length;f0&&!(f===c.device||j&&j.index===f||k&&k.index===f))return new b(f,a)}},e=function(){l=g(),m=g()},f=function(b,c,d,e){if(v&&0!==d.paddleSens){var f=b.getPaddlePosition();f!==c.xPosition&&(c.xPosition=f,a.processControlValue(d.player?t.PADDLE1_POSITION:t.PADDLE0_POSITION,f))}var g=b.getDPadDirection();if(-1!==g||v&&0!==d.paddleSens||(g=b.getStickDirection()),g!==c.direction){var h=!1,i=!1,j=!1,k=!1;switch(g){case 0:h=!0;break;case 1:h=i=!0;break;case 2:i=!0;break;case 3:j=i=!0;break;case 4:j=!0;break;case 5:j=k=!0;break;case 6:k=!0;break;case 7:h=k=!0}a.processKey(e.up.c,h),a.processKey(e.right.c,i),a.processKey(e.down.c,j),a.processKey(e.left.c,k),c.direction=g}var l=b.getButtonDigital(d.button);l!==c.button&&(a.processKey(e.button.c,l),c.button=l),(l=b.getButtonDigital(d.buttonT))!==c.buttonT&&(a.processKey(e.buttonT.c,l),c.buttonT=l);var m=b.getButtonDigital(d.select);m!==c.select&&(a.processControlState(t.SELECT,m),c.select=m);var n=b.getButtonDigital(d.reset);n!==c.reset&&(a.processControlState(t.RESET,n),c.reset=n);var o=b.getButtonDigital(d.pause);o!==c.pause&&(a.processControlState(t.PAUSE,o),c.pause=o);var p=b.getButtonDigital(d.fastSpeed);p!==c.fastSpeed&&(a.processControlState(t.FAST_SPEED,p),c.fastSpeed=p);var q=b.getButtonDigital(d.slowSpeed);q!==c.slowSpeed&&(a.processControlState(t.SLOW_SPEED,q),c.slowSpeed=q)},g=function(){return{direction:-1,button:!1,buttonT:!1,select:!1,reset:!1,fastSpeed:!1,pause:!1,xPosition:-1}};this.getModeDesc=function(){switch(u){case-1:return"AUTO";case 0:return"AUTO (swapped)";default:return r?"DISABLED":"NOT SUPPORTED"}},this.applyPreferences=function(){var a=w?1:0,b=a?0:1;n=y.joystickGamepads[a],n.player=x^w?1:0,o=y.joystickGamepads[b],o.player=x^w?0:1,p=y.joystickKeys[a],q=y.joystickKeys[b]};var h,i,j,k,l,m,n,o,p,q,r=!1,s=-1,t=jt.ConsoleControls,u=-1,v=!1,w=!1,x=!1,y=Javatari.userPreferences.current},jt.DOMTouchControls=function(a){"use strict";function b(){w.classList.toggle("jt-poweroff",!J),w.classList.toggle("jt-paused",K)}function c(){var a=A>0;document.documentElement.classList.toggle("jt-touch-active",a),document.documentElement.classList.toggle("jt-dir-big",C),t.touchControlsActiveUpdate(a,C)}function d(a){if(jt.Util.blockEvent(a),null===E){void 0===u&&i();var b=a.changedTouches[0];E=b.identifier,g(b.pageX,b.pageY)}}function e(a){jt.Util.blockEvent(a),null!==E&&(E=null,h(-1))}function f(a){if(jt.Util.blockEvent(a), -null!==E)for(var b=a.changedTouches,c=0;cG&&(c=(1-Math.atan2(d,e)/Math.PI)/2,c+=1/16,c>=1&&(c-=1),c=8*c|0),h(c)}function h(b){if(F!==b){b>=0&&a.hapticFeedback();var c=!1,d=!1,e=!1,f=!1;switch(b){case 0:c=!0;break;case 1:c=d=!0;break;case 2:d=!0;break;case 3:e=d=!0;break;case 4:e=!0;break;case 5:e=f=!0;break;case 6:f=!0;break;case 7:c=f=!0}a.processKey(x.up.c,c),a.processKey(x.right.c,d),a.processKey(x.down.c,e),a.processKey(x.left.c,f),F=b}}function i(){var a=D.getBoundingClientRect();G=.14*(a.right-a.left)|0,u=((a.left+a.right)/2|0)+window.pageXOffset,v=((a.top+a.bottom)/2|0)+window.pageYOffset}function j(a){jt.Util.blockEvent(a),l(a.target.jtControl,!0)}function k(a){jt.Util.blockEvent(a),l(a.target.jtControl,!1)}function l(b,c){b&&(c&&a.hapticFeedback(),a.processKey(x[b].c,c))}function m(b){jt.Util.blockEvent(b),a.hapticFeedback(),a.processControlState(J?jt.ConsoleControls.PAUSE:jt.ConsoleControls.POWER,!0)}function n(b){jt.Util.blockEvent(b),a.processControlState(J?jt.ConsoleControls.PAUSE:jt.ConsoleControls.POWER,!1)}function o(b){jt.Util.blockEvent(b),a.processControlState(K?jt.ConsoleControls.FRAME:jt.ConsoleControls.FAST_SPEED,!0)}function p(b){jt.Util.blockEvent(b),a.processControlState(K?jt.ConsoleControls.FRAME:jt.ConsoleControls.FAST_SPEED,!1)}function q(){I.reset(),u=v=void 0,E=null,h(-1)}function r(){this.reset=function(){this.portValue=63},this.reset()}this.connect=function(a){s=a},this.connectScreen=function(a){t=a},this.powerOn=function(){this.applyPreferences(),q(),c()},this.powerOff=function(){},this.releaseControllers=function(){q()},this.updateConsolePanelSize=function(a,b,c,d,e){if(w&&d){var f=!e&&(a-b-10)/22&&(A=0),q(),this.applyPreferences(),c(),t.showOSD("Touch Controls "+this.getModeDesc(),!0)},this.setP1ControlsMode=function(a){B=a,this.applyPreferences()},this.getModeDesc=function(){switch(A){case-1:return"AUTO";case 0:return"DISABLED";case 1:return"ENABLED";case 2:return"ENABLED (swapped)"}},this.toggleTouchDirBig=function(){C=!C,L.touch.directionalBig=C,Javatari.userPreferences.setDirty(),c()},this.isDirBig=function(){return C},this.setupTouchControlsIfNeeded=function(a){function c(a,b){var c=document.createElement("div");c.id="jt-touch-"+b,c.classList.add("jt-touch-button"),c.classList.add("jt-touch-button-joy"),c.classList.add("jt-touch-button-joy-"+b),c.jtControl=b,c.addEventListener("touchstart",j),c.addEventListener("touchmove",jt.Util.blockEvent),c.addEventListener("touchend",k),c.addEventListener("touchcancel",k),c.addEventListener("mousedown",j),c.addEventListener("mouseup",k),H[b]=c,a.appendChild(c)}if(!(D||A<=0)){w=document.createElement("div"),w.id="jt-touch-speed";var g=document.createElement("div");g.id="jt-touch-pause",g.addEventListener("touchstart",m),g.addEventListener("touchend",n),w.appendChild(g);var h=document.createElement("div");h.id="jt-touch-fast",h.addEventListener("touchstart",o),h.addEventListener("touchend",p),w.appendChild(h),a.appendChild(w);var i=document.createElement("div");i.id="jt-touch-left",D=function(){function a(a){var c=document.createElement("div");c.classList.add("jt-touch-dir-"+a),b.appendChild(c);var d=document.createElement("div");d.classList.add("jt-arrow-"+a),b.appendChild(d)}var b=document.createElement("div");return b.classList.add("jt-touch-dir"),b.classList.add("jt-touch-dir-joy"),a("left"),a("right"),a("up"),a("down"),b}(),D.addEventListener("touchstart",d),D.addEventListener("touchmove",f),D.addEventListener("touchend",e),D.addEventListener("touchcancel",e),i.appendChild(D),a.appendChild(i),i=document.createElement("div"),i.id="jt-touch-right",c(i,"buttonT"),c(i,"button"),a.appendChild(i),b()}},this.consolePowerAndUserPauseStateUpdate=function(a,c){J=a,K=c,w&&b()},this.applyPreferences=function(){C=!!L.touch.directionalBig;var a=2===A?1:0;x=L.joystickKeys[a]};var s,t,u,v,w,x,y=jt.Util.isTouchDevice(),z=jt.Util.isMobileDevice(),A=Javatari.TOUCH_MODE>=0?Javatari.TOUCH_MODE:y&&z?1:0,B=!1,C=!1,D=null,E=null,F=-1,G=0,H={},I=new r,J=!1,K=!1,L=Javatari.userPreferences.current,M=84;this.saveState=function(){return{}},this.loadState=function(a){q()}},jt.DOMConsoleControls=function(a,b){"use strict";function c(a){E=a,F=E?60/I[E]|0:0,H=F/2|0,G=0}function d(a,b){a.returnValue=!1,a.preventDefault(),a.stopPropagation();var c=jt.DOMKeys.codeForKeyboardEvent(a);return j.processKey(c,b),!1}function e(b,c){if(!B||(b=l(b),!m(b,c))){if(2===a.netPlayMode&&Ca.has(b))return a.showOSD("Function not available in NetPlay Client mode",!0,!0);1===a.netPlayMode&&Ca.has(b)||R.push(b<<4|c),2!==a.netPlayMode&&f(b,c)}}function f(a,b){q.controlStateChanged(a,b)}function g(b,c){R.push(b+(c+10)),2!==a.netPlayMode&&h(b,c)}function h(a,b){q.controlValueChanged(a,b)}function i(){r.controlsModeStateUpdate()}var j=this;this.connect=function(a){q=a,q.connectControls(this),v.connect(a),w.connect(a)},this.connectPeripherals=function(a){r=a,v.connectScreen(a),w.connectScreen(a)},this.addKeyInputElement=function(a){a.addEventListener("keydown",this.keyDown),a.addEventListener("keyup",this.keyUp)},this.setupTouchControlsIfNeeded=function(a){w.setupTouchControlsIfNeeded(a)},this.powerOn=function(){k(),v.powerOn(),w.powerOn(),0===S?n(!1,!1):1===S&&n(!0,!1)},this.powerOff=function(){n(!1,!1),v.powerOff(),w.powerOff()},this.releaseControllers=function(){for(var a in t)t[a]&&(e(a,!1),t[a]=!1);L=M=P=Q=!1,y[x.JOY0_BUTTON]=y[x.JOY1_BUTTON]=!1,w.releaseControllers()},this.getTouchControls=function(){return w},this.toggleP1ControlsMode=function(){this.setP1ControlsMode(!A),o(),i()},this.setP1ControlsMode=function(a){A=a,v.setP1ControlsMode(a),w.setP1ControlsMode(a),this.releaseControllers(),p()},this.isP1ControlsMode=function(){return A},this.togglePaddleMode=function(){n(!B,!0),i()},this.isPaddleMode=function(){return B},this.setP1ControlsAndPaddleMode=function(a,b){this.setP1ControlsMode(a),n(b,!1),i()},this.toggleGamepadMode=function(){v.toggleMode(),i()},this.getGamepadModeDesc=function(){return v.getModeDesc()},this.toggleTouchControlsMode=function(){w.toggleMode(),i()},this.toggleTouchDirBig=function(){w.toggleTouchDirBig()},this.toggleTurboFireSpeed=function(){c((E+1)%11),r.showOSD("Turbo Fire"+(E?" speed: "+this.getTurboFireSpeedDesc():": OFF"),!0),z.turboFireSpeed=E,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save()},this.getTurboFireSpeedDesc=function(){return E?E+"x":"OFF"},this.getControlReport=function(a){switch(a){case jt.PeripheralControls.P1_CONTROLS_TOGGLE:return{label:A?"ON":"OFF",active:A};case jt.PeripheralControls.PADDLES_TOGGLE_MODE:return{label:B?"ON":"OFF",active:B};case jt.PeripheralControls.TOUCH_TOGGLE_DIR_BIG:return{label:w.isDirBig()?"ON":"OFF",active:w.isDirBig()};case jt.PeripheralControls.HAPTIC_FEEDBACK_TOGGLE_MODE:return{label:D?"ON":"OFF",active:!!D};case jt.PeripheralControls.TURBO_FIRE_TOGGLE:return{label:this.getTurboFireSpeedDesc(),active:!!E}}return{label:"Unknown",active:!1}},this.consolePowerAndUserPauseStateUpdate=function(a,b){w.consolePowerAndUserPauseStateUpdate(a,b)},this.keyDown=function(a){return d(a,!0)},this.keyUp=function(a){return d(a,!1)},this.controlsClockPulse=function(){if(F){if(--G===H||0===G){var a=G>0;y[x.JOY0_BUTTON]&&e(x.JOY0_BUTTON,a),y[x.JOY1_BUTTON]&&e(x.JOY1_BUTTON,a)}G<=0&&(G=F)}v.controlsClockPulse(),B&&(M?L||(J-=K,J<0&&(J=0),g(x.PADDLE0_POSITION,J)):L&&(J+=K,J>380&&(J=380),g(x.PADDLE0_POSITION,J)),Q?P||(N-=O,N<0&&(N=0),g(x.PADDLE1_POSITION,N)):P&&(N+=O,N>380&&(N=380),g(x.PADDLE1_POSITION,N)))},this.toggleHapticFeedback=function(){C?(D=!D,z.hapticFeedback=D, -Javatari.userPreferences.setDirty()):r.showOSD("Haptic Feedback not available",!0,!0)},this.hapticFeedback=function(){D&&navigator.vibrate(8)},this.hapticFeedbackOnTouch=function(a){!D||"touchstart"!==a.type&&"touchend"!==a.type&&"touchmove"!==a.type||navigator.vibrate(8)},this.cartridgeInserted=function(a){if(a&&!(S>=0)){var b=1===a.rom.info.p;B!==b&&n(b,!1)}},this.processKey=function(a,c){var d=u[a];if(d){if(c===y[d])return;c&&(G=H),y[d]=c}else{if(!(d=s[a]))return b.processKey(a,c);if(c===t[d])return;t[d]=c}e(d,c)},this.applyPreferences=function(){p(),c(z.turboFireSpeed),w.applyPreferences(),v.applyPreferences()},this.processControlState=e,this.processControlValue=g;var k=function(){window.onhelp=function(){return!1}},l=function(a){switch(a){case x.JOY0_BUTTON:return x.PADDLE0_BUTTON;case x.JOY1_BUTTON:return x.PADDLE1_BUTTON;default:return a}},m=function(a,b){if(b)switch(a){case x.JOY0_LEFT:return L=!0,!0;case x.JOY0_RIGHT:return M=!0,!0;case x.JOY0_UP:return K<10&&K++,r.showOSD("P1 Paddle speed: "+K,!0),!0;case x.JOY0_DOWN:return K>1&&K--,r.showOSD("P1 Paddle speed: "+K,!0),!0;case x.JOY1_LEFT:return P=!0,!0;case x.JOY1_RIGHT:return Q=!0,!0;case x.JOY1_UP:return O<10&&O++,r.showOSD("P2 Paddle speed: "+O,!0),!0;case x.JOY1_DOWN:return O>1&&O--,r.showOSD("P2 Paddle speed: "+O,!0),!0}else switch(a){case x.JOY0_LEFT:return L=!1,!0;case x.JOY0_RIGHT:return M=!1,!0;case x.JOY1_LEFT:return P=!1,!0;case x.JOY1_RIGHT:return Q=!1,!0}return!1},n=function(b,c){B!==b&&j.releaseControllers(),B=b,K=O=2,J=N=B?190:-1,2!==a.netPlayMode&&(g(x.PADDLE0_POSITION,J),g(x.PADDLE1_POSITION,N)),v.setPaddleMode(B),c&&o()},o=function(){r.showOSD("Controllers: "+(B?"Paddles":"Joysticks")+(A?", Swapped":""),!0)},p=function(){var a=jt.DOMKeys;s={},t={},u={},s[T]=x.POWER,s[T|a.ALT]=x.POWER,s[T|a.SHIFT]=x.POWER_FRY,s[T|a.SHIFT|a.ALT]=x.POWER_FRY,s[U]=x.BLACK_WHITE,s[U|a.ALT]=x.BLACK_WHITE,s[V]=x.SELECT,s[V|a.ALT]=x.SELECT,s[W]=x.RESET,s[W|a.ALT]=x.RESET,s[X]=x.DIFFICULTY0,s[X|a.ALT]=x.DIFFICULTY0,s[Y]=x.DIFFICULTY1,s[Y|a.ALT]=x.DIFFICULTY1,s[Z]=x.FAST_SPEED,s[Z|a.ALT]=x.FAST_SPEED,s[Z|a.SHIFT]=x.SLOW_SPEED,s[Z|a.SHIFT|a.ALT]=x.SLOW_SPEED,s[$|a.SHIFT|a.ALT]=x.INC_SPEED,s[_|a.SHIFT|a.ALT]=x.DEC_SPEED,s[aa|a.SHIFT|a.ALT]=x.NORMAL_SPEED,s[ba|a.SHIFT|a.ALT]=x.MIN_SPEED,s[ca|a.ALT]=x.PAUSE,s[ca|a.SHIFT|a.ALT]=x.PAUSE_AUDIO_ON,s[da|a.ALT]=x.FRAME,s[ea|a.ALT]=x.FRAME,s[ga|a.ALT]=x.TRACE,s[ha|a.ALT]=x.SHOW_INFO,s[fa|a.ALT]=x.DEBUG,s[ia|a.ALT]=x.NO_COLLISIONS,s[ja|a.ALT]=x.VIDEO_STANDARD,s[ka|a.ALT]=x.VIDEO_STANDARD,s[la|a.ALT]=x.VSYNCH,s[ma|a.CONTROL]=x.SAVE_STATE_0,s[na|a.CONTROL]=x.SAVE_STATE_0,s[ma|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[na|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[oa|a.CONTROL]=x.SAVE_STATE_1,s[oa|a.CONTROL|a.ALT]=x.SAVE_STATE_1,s[pa|a.CONTROL]=x.SAVE_STATE_2,s[pa|a.CONTROL|a.ALT]=x.SAVE_STATE_2,s[qa|a.CONTROL]=x.SAVE_STATE_3,s[qa|a.CONTROL|a.ALT]=x.SAVE_STATE_3,s[ra|a.CONTROL]=x.SAVE_STATE_4,s[ra|a.CONTROL|a.ALT]=x.SAVE_STATE_4,s[sa|a.CONTROL]=x.SAVE_STATE_5,s[sa|a.CONTROL|a.ALT]=x.SAVE_STATE_5,s[ta|a.CONTROL]=x.SAVE_STATE_6,s[ta|a.CONTROL|a.ALT]=x.SAVE_STATE_6,s[ua|a.CONTROL]=x.SAVE_STATE_7,s[ua|a.CONTROL|a.ALT]=x.SAVE_STATE_7,s[va|a.CONTROL]=x.SAVE_STATE_8,s[va|a.CONTROL|a.ALT]=x.SAVE_STATE_8,s[wa|a.CONTROL]=x.SAVE_STATE_9,s[wa|a.CONTROL|a.ALT]=x.SAVE_STATE_9,s[xa|a.CONTROL]=x.SAVE_STATE_10,s[xa|a.CONTROL|a.ALT]=x.SAVE_STATE_10,s[ya|a.CONTROL]=x.SAVE_STATE_11,s[za|a.CONTROL]=x.SAVE_STATE_11,s[ya|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[za|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[Aa|a.CONTROL]=x.SAVE_STATE_12,s[Ba|a.CONTROL]=x.SAVE_STATE_12,s[Aa|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[Ba|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[ma|a.ALT]=x.LOAD_STATE_0,s[na|a.ALT]=x.LOAD_STATE_0,s[oa|a.ALT]=x.LOAD_STATE_1,s[pa|a.ALT]=x.LOAD_STATE_2,s[qa|a.ALT]=x.LOAD_STATE_3,s[ra|a.ALT]=x.LOAD_STATE_4,s[sa|a.ALT]=x.LOAD_STATE_5,s[ta|a.ALT]=x.LOAD_STATE_6,s[ua|a.ALT]=x.LOAD_STATE_7,s[va|a.ALT]=x.LOAD_STATE_8,s[wa|a.ALT]=x.LOAD_STATE_9,s[xa|a.ALT]=x.LOAD_STATE_10,s[ya|a.ALT]=x.LOAD_STATE_11,s[za|a.ALT]=x.LOAD_STATE_11,s[Aa|a.ALT]=x.LOAD_STATE_12,s[Ba|a.ALT]=x.LOAD_STATE_12,s[ma|a.SHIFT|a.CONTROL]=x.SAVE_STATE_0,s[na|a.SHIFT|a.CONTROL]=x.SAVE_STATE_0,s[ma|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[na|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[oa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_1,s[oa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_1,s[pa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_2,s[pa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_2,s[qa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_3,s[qa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_3,s[ra|a.SHIFT|a.CONTROL]=x.SAVE_STATE_4,s[ra|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_4,s[sa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_5,s[sa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_5,s[ta|a.SHIFT|a.CONTROL]=x.SAVE_STATE_6,s[ta|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_6,s[ua|a.SHIFT|a.CONTROL]=x.SAVE_STATE_7,s[ua|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_7,s[va|a.SHIFT|a.CONTROL]=x.SAVE_STATE_8,s[va|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_8,s[wa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_9,s[wa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_9,s[xa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_10,s[xa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_10,s[ya|a.SHIFT|a.CONTROL]=x.SAVE_STATE_11,s[za|a.SHIFT|a.CONTROL]=x.SAVE_STATE_11,s[ya|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[za|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[Aa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_12,s[Ba|a.SHIFT|a.CONTROL]=x.SAVE_STATE_12,s[Aa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[Ba|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[ma|a.SHIFT|a.ALT]=x.LOAD_STATE_0,s[na|a.SHIFT|a.ALT]=x.LOAD_STATE_0,s[oa|a.SHIFT|a.ALT]=x.LOAD_STATE_1,s[pa|a.SHIFT|a.ALT]=x.LOAD_STATE_2,s[qa|a.SHIFT|a.ALT]=x.LOAD_STATE_3,s[ra|a.SHIFT|a.ALT]=x.LOAD_STATE_4,s[sa|a.SHIFT|a.ALT]=x.LOAD_STATE_5,s[ta|a.SHIFT|a.ALT]=x.LOAD_STATE_6,s[ua|a.SHIFT|a.ALT]=x.LOAD_STATE_7,s[va|a.SHIFT|a.ALT]=x.LOAD_STATE_8,s[wa|a.SHIFT|a.ALT]=x.LOAD_STATE_9,s[xa|a.SHIFT|a.ALT]=x.LOAD_STATE_10,s[ya|a.SHIFT|a.ALT]=x.LOAD_STATE_11,s[za|a.SHIFT|a.ALT]=x.LOAD_STATE_11,s[Aa|a.SHIFT|a.ALT]=x.LOAD_STATE_12,s[Ba|a.SHIFT|a.ALT]=x.LOAD_STATE_12;var b=A?1:0,c=A?0:1;s[z.joystickKeys[b].left.c]=x.JOY0_LEFT,s[z.joystickKeys[b].up.c]=x.JOY0_UP,s[z.joystickKeys[b].right.c]=x.JOY0_RIGHT,s[z.joystickKeys[b].down.c]=x.JOY0_DOWN,s[z.joystickKeys[b].button.c]=x.JOY0_BUTTON,s[z.joystickKeys[c].left.c]=x.JOY1_LEFT,s[z.joystickKeys[c].up.c]=x.JOY1_UP,s[z.joystickKeys[c].right.c]=x.JOY1_RIGHT,s[z.joystickKeys[c].down.c]=x.JOY1_DOWN,s[z.joystickKeys[c].button.c]=x.JOY1_BUTTON,u[z.joystickKeys[b].buttonT.c]=x.JOY0_BUTTON,u[z.joystickKeys[c].buttonT.c]=x.JOY1_BUTTON};this.netGetControlsToSend=function(){return R.length?R:void 0},this.netClearControlsToSend=function(){R.length=0},this.netServerProcessControlsChanges=function(a){for(var b=0,c=a.length;b>4)||R.push(d),f(d>>4,1&d)):h(-16384&d,(16383&d)-10)}},this.netClientApplyControlsChanges=function(a){for(var b=0,c=a.length;b>4,1&d):h(-16384&d,(16383&d)-10)}};var q,r,s,t,u,v,w,x=jt.ConsoleControls,y={},z=Javatari.userPreferences.current,A=!1,B=!1,C=!!navigator.vibrate,D=C&&!!z.hapticFeedback,E=0,F=0,G=0,H=0,I=[0,1,2,2.4,3,4,5,6,7.5,10,12],J=0,K=3,L=!1,M=!1,N=0,O=3,P=!1,Q=!1,R=new Array(100);R.length=0 +c:107|d,n:"Num +"},a.VK_NUM_PERIOD={c:194|d,n:"Num ."},a.VK_NUM_0={c:96|d,n:"Num 0"},a.VK_NUM_1={c:97|d,n:"Num 1"},a.VK_NUM_2={c:98|d,n:"Num 2"},a.VK_NUM_3={c:99|d,n:"Num 3"},a.VK_NUM_4={c:100|d,n:"Num 4"},a.VK_NUM_5={c:101|d,n:"Num 5"},a.VK_NUM_6={c:102|d,n:"Num 6"},a.VK_NUM_7={c:103|d,n:"Num 7"},a.VK_NUM_8={c:104|d,n:"Num 8"},a.VK_NUM_9={c:105|d,n:"Num 9"},a.VK_NUM_CLEAR={c:12|d,n:"Num Clear"},a.VK_NUM_ENTER={c:13|d,n:"Num Enter"},a.VK_QUOTE={c:222,n:"'"},a.VK_BACKQUOTE={c:192,n:"`"},a.VK_MINUS={c:189,n:"-"},a.VK_EQUALS={c:187,n:"="},a.VK_OPEN_BRACKET={c:219,n:"["},a.VK_CLOSE_BRACKET={c:221,n:"]"},a.VK_COMMA={c:188,n:","},a.VK_PERIOD={c:190,n:"."},a.VK_SEMICOLON={c:186,n:";"},a.VK_SLASH={c:191,n:"/"},a.VK_BACKSLASH={c:220,n:"\\"},a.VK_ALTERNATE_ESC={c:a.VK_F1.c|jt.DOMKeys.ALT,n:["Alt","F1"]},a.VK_FF_MINUS={c:173,n:"-"},a.VK_FF_EQUALS={c:61,n:"="},a.VK_FF_SEMICOLON={c:59,n:";"},a.VK_BR_QUOTE={c:192,n:"'"},a.VK_BR_OPEN_BRACKET={c:221,n:"["},a.VK_BR_CLOSE_BRACKET={c:220,n:"]"},a.VK_BR_SEMICOLON={c:191,n:";"},a.VK_BR_SLASH={c:193,n:"/"},a.VK_BR_BACKSLASH={c:226,n:"\\"},a.VK_BR_CEDILLA={c:186,n:"Ç"},a.VK_BR_TILDE={c:222,n:"~"},a.VK_BR_ACUTE={c:219,n:"´"},a.VK_FF_BR_TILDE={c:176,n:"~"},a.VK_VOID={c:-1,n:""}}(jt.DOMKeys,jt.DOMKeys.LOCLEFT,jt.DOMKeys.LOCRIGHT,jt.DOMKeys.LOCNUM),jt.DOMKeys.forcedNames={27:"Esc",13:"Enter",32:"Space",9:"Tab",8:"BkSpc",16:"Shift",17:"Ctrl",18:"Alt",91:"Meta",93:"Context",20:"Caps",44:"PrtScr",145:"ScrLck",19:"Pause",3:"Break",45:"Ins",46:"Del",36:"Home",35:"End",33:"PgUp",34:"PgDown",38:"Up",40:"Down",37:"Left",39:"Right"},jt.DOMKeys.isModifierKeyCode=function(a){return 16===a||17===a||18===a||91===a},jt.DOMKeys.codeForKeyboardEvent=function(a){var b=a.keyCode;return this.isModifierKeyCode(b)?b&this.IGNORE_ALL_MODIFIERS_MASK|a.location<12&&(c=c.substr(0,12)),a.location){case 1:c="L-"+c;break;case 2:c="R-"+c;break;case 3:c="Num "+c}return(a.shiftKey||a.ctrlKey||a.altKey||a.metaKey)&&(c=[c],a.metaKey&&c.unshift("Meta"),a.altKey&&c.unshift("Alt"),a.ctrlKey&&c.unshift("Ctrl"),a.shiftKey&&c.unshift("Shift")),c},jt.DOMKeys.nameForKeyboardEventSingle=function(a){var b=a.keyCode,c=this.forcedNames[b]||a.key,d=c&&c.toUpperCase();switch(d&&"UNIDENTIFIED"!==d&&"UNDEFINED"!==d&&"UNKNOWN"!==d?"DEAD"===d&&(c="Dead#"+b):c="#"+b,1===c.length?c=c.toUpperCase():c.length>12&&(c=c.substr(0,12)),a.location){case 1:c="L-"+c;break;case 2:c="R-"+c;break;case 3:c="Num "+c}return c},jt.GamepadButtons={GB_1:{b:0,n:"1"},GB_2:{b:1,n:"2"},GB_3:{b:2,n:"3"},GB_4:{b:3,n:"4"},GB_L1:{b:4,n:"L1"},GB_R1:{b:5,n:"R1"},GB_L2:{b:6,n:"L2"},GB_R2:{b:7,n:"R2"},GB_BACK:{b:8,n:"BACK"},GB_START:{b:9,n:"START"},GB_S1:{b:10,n:"S1"},GB_S2:{b:11,n:"S2"},GB_UP:{b:12,n:"▲"},GB_DOWN:{b:13,n:"▼"},GB_LEFT:{b:14,n:"◄"},GB_RIGHT:{b:15,n:"►"},GB_LOGO:{b:16,n:"LOGO"},GB_VOID:{b:-1,n:"Unbound"}},jt.TouchControls={buttons:["T_B","T_A"]},jt.GamepadConsoleControls=function(a){"use strict";function b(a,b){this.index=a,this.update=function(b){return!!(c=b[a])},this.hasMoved=function(){var a=c.timestamp;return!a||a>m&&(m=a,!0)},this.getButtonDigital=function(a){var b=c.buttons[a];return"object"==typeof b?b.pressed||b.value>.5:b>.5},this.getDPadDirection=function(){return this.getButtonDigital(12)?this.getButtonDigital(15)?1:this.getButtonDigital(14)?7:0:this.getButtonDigital(13)?this.getButtonDigital(15)?3:this.getButtonDigital(14)?5:4:this.getButtonDigital(14)?6:this.getButtonDigital(15)?2:-1},this.getStickDirection=function(){var a=c.axes[d],b=c.axes[e];if((a<0?-a:a)=1&&(h-=1),8*h|0},this.getPaddlePosition=function(){var a=c.axes[h]*i*j+k|0;return a<0?a=0:a>380&&(a=380),a};var c,d=b.xAxis,e=b.yAxis,f=b.xAxisSig,g=b.yAxisSig,h=b.paddleAxis,i=b.paddleAxisSig,j=-190*b.paddleSens,k=-190*b.paddleCenter+190-5,l=b.deadzone,m=Number.MIN_VALUE}this.connect=function(a){h=a},this.connectScreen=function(a){i=a},this.powerOn=function(){(r=!!navigator.getGamepads)&&(this.applyPreferences(),e())},this.powerOff=function(){r=!1},this.toggleMode=function(){if(!r)return void i.showOSD("Joysticks unavailable (not supported by browser)",!0,!0);++u,u>0&&(u=-2),-2===u?j=k=null:-1===u&&(s=60,this.controlsClockPulse()),w=0===u,this.applyPreferences(),e(),i.showOSD("Gamepads "+this.getModeDesc(),!0)},this.setPaddleMode=function(a){r&&(v=a,l.xPosition=m.xPosition=-1)},this.setP1ControlsMode=function(a){x=a,this.applyPreferences()},this.controlsClockPulse=function(){if(r&&-2!==u&&(++s>=60&&(s=0),j||k||0===s)){var a=navigator.getGamepads();j?j.update(a)?j.hasMoved()&&f(j,l,n,p):(j=null,c(!0,!1)):0===s&&(j=d(n,o,a))&&c(!0,!0),k?k.update(a)?k.hasMoved()&&f(k,m,o,q):(k=null,c(!1,!1)):0===s&&(k=d(o,n,a))&&c(!1,!0)}};var c=function(a,b){i.showOSD((a^x^w?"P1":"P2")+" Gamepad "+(b?"connected":"disconnected"),a)},d=function(a,c,d){if(d&&0!==d.length){var e=a.device;if(e>=0)return d[e]&&d[e].buttons.length>0?new b(e,a):null;for(var f=0,g=d.length;f0&&!(f===c.device||j&&j.index===f||k&&k.index===f))return new b(f,a)}},e=function(){l=g(),m=g()},f=function(b,c,d,e){if(v&&0!==d.paddleSens){var f=b.getPaddlePosition();f!==c.xPosition&&(c.xPosition=f,a.processControlValue(d.player?t.PADDLE1_POSITION:t.PADDLE0_POSITION,f))}var g=b.getDPadDirection();if(-1!==g||v&&0!==d.paddleSens||(g=b.getStickDirection()),g!==c.direction){var h=!1,i=!1,j=!1,k=!1;switch(g){case 0:h=!0;break;case 1:h=i=!0;break;case 2:i=!0;break;case 3:j=i=!0;break;case 4:j=!0;break;case 5:j=k=!0;break;case 6:k=!0;break;case 7:h=k=!0}a.processKey(e.up.c,h),a.processKey(e.right.c,i),a.processKey(e.down.c,j),a.processKey(e.left.c,k),c.direction=g}var l=b.getButtonDigital(d.button);l!==c.button&&(a.processKey(e.button.c,l),c.button=l),(l=b.getButtonDigital(d.buttonT))!==c.buttonT&&(a.processKey(e.buttonT.c,l),c.buttonT=l);var m=b.getButtonDigital(d.select);m!==c.select&&(a.processControlState(t.SELECT,m),c.select=m);var n=b.getButtonDigital(d.reset);n!==c.reset&&(a.processControlState(t.RESET,n),c.reset=n);var o=b.getButtonDigital(d.pause);o!==c.pause&&(a.processControlState(t.PAUSE,o),c.pause=o);var p=b.getButtonDigital(d.fullscreen);p!==c.fullscreen&&(a.processControlState(t.FULLSCREEN,p),c.fullscreen=p);var q=b.getButtonDigital(d.fastSpeed);q!==c.fastSpeed&&(a.processControlState(t.FAST_SPEED,q),c.fastSpeed=q);var r=b.getButtonDigital(d.slowSpeed);r!==c.slowSpeed&&(a.processControlState(t.SLOW_SPEED,r),c.slowSpeed=r)},g=function(){return{direction:-1,button:!1,buttonT:!1,select:!1,reset:!1,fastSpeed:!1,pause:!1,xPosition:-1}};this.getModeDesc=function(){switch(u){case-1:return"AUTO";case 0:return"AUTO (swapped)";default:return r?"DISABLED":"NOT SUPPORTED"}},this.applyPreferences=function(){var a=w?1:0,b=a?0:1;n=y.joystickGamepads[a],n.player=x^w?1:0,o=y.joystickGamepads[b],o.player=x^w?0:1,p=y.joystickKeys[a],q=y.joystickKeys[b]};var h,i,j,k,l,m,n,o,p,q,r=!1,s=-1,t=jt.ConsoleControls,u=-1,v=!1,w=!1,x=!1,y=Javatari.userPreferences.current},jt.DOMTouchControls=function(a){"use strict";function b(){w.classList.toggle("jt-poweroff",!J),w.classList.toggle("jt-paused",K)}function c(){var a=A>0;document.documentElement.classList.toggle("jt-touch-active",a),document.documentElement.classList.toggle("jt-dir-big",C),t.touchControlsActiveUpdate(a,C)}function d(a){if(jt.Util.blockEvent(a),null===E){void 0===u&&i();var b=a.changedTouches[0];E=b.identifier,g(b.pageX,b.pageY)}}function e(a){jt.Util.blockEvent(a),null!==E&&(E=null, +h(-1))}function f(a){if(jt.Util.blockEvent(a),null!==E)for(var b=a.changedTouches,c=0;cG&&(c=(1-Math.atan2(d,e)/Math.PI)/2,c+=1/16,c>=1&&(c-=1),c=8*c|0),h(c)}function h(b){if(F!==b){b>=0&&a.hapticFeedback();var c=!1,d=!1,e=!1,f=!1;switch(b){case 0:c=!0;break;case 1:c=d=!0;break;case 2:d=!0;break;case 3:e=d=!0;break;case 4:e=!0;break;case 5:e=f=!0;break;case 6:f=!0;break;case 7:c=f=!0}a.processKey(x.up.c,c),a.processKey(x.right.c,d),a.processKey(x.down.c,e),a.processKey(x.left.c,f),F=b}}function i(){var a=D.getBoundingClientRect();G=.14*(a.right-a.left)|0,u=((a.left+a.right)/2|0)+window.pageXOffset,v=((a.top+a.bottom)/2|0)+window.pageYOffset}function j(a){jt.Util.blockEvent(a),l(a.target.jtControl,!0)}function k(a){jt.Util.blockEvent(a),l(a.target.jtControl,!1)}function l(b,c){b&&(c&&a.hapticFeedback(),a.processKey(x[b].c,c))}function m(b){jt.Util.blockEvent(b),a.hapticFeedback(),a.processControlState(J?jt.ConsoleControls.PAUSE:jt.ConsoleControls.POWER,!0)}function n(b){jt.Util.blockEvent(b),a.processControlState(J?jt.ConsoleControls.PAUSE:jt.ConsoleControls.POWER,!1)}function o(b){jt.Util.blockEvent(b),a.processControlState(K?jt.ConsoleControls.FRAME:jt.ConsoleControls.FAST_SPEED,!0)}function p(b){jt.Util.blockEvent(b),a.processControlState(K?jt.ConsoleControls.FRAME:jt.ConsoleControls.FAST_SPEED,!1)}function q(){I.reset(),u=v=void 0,E=null,h(-1)}function r(){this.reset=function(){this.portValue=63},this.reset()}this.connect=function(a){s=a},this.connectScreen=function(a){t=a},this.powerOn=function(){this.applyPreferences(),q(),c()},this.powerOff=function(){},this.releaseControllers=function(){q()},this.updateConsolePanelSize=function(a,b,c,d,e){if(w&&d){var f=!e&&(a-b-10)/22&&(A=0),q(),this.applyPreferences(),c(),t.showOSD("Touch Controls "+this.getModeDesc(),!0)},this.setP1ControlsMode=function(a){B=a,this.applyPreferences()},this.getModeDesc=function(){switch(A){case-1:return"AUTO";case 0:return"DISABLED";case 1:return"ENABLED";case 2:return"ENABLED (swapped)"}},this.toggleTouchDirBig=function(){C=!C,L.touch.directionalBig=C,Javatari.userPreferences.setDirty(),c()},this.isDirBig=function(){return C},this.setupTouchControlsIfNeeded=function(a){function c(a,b){var c=document.createElement("div");c.id="jt-touch-"+b,c.classList.add("jt-touch-button"),c.classList.add("jt-touch-button-joy"),c.classList.add("jt-touch-button-joy-"+b),c.jtControl=b,c.addEventListener("touchstart",j),c.addEventListener("touchmove",jt.Util.blockEvent),c.addEventListener("touchend",k),c.addEventListener("touchcancel",k),c.addEventListener("mousedown",j),c.addEventListener("mouseup",k),H[b]=c,a.appendChild(c)}if(!(D||A<=0)){w=document.createElement("div"),w.id="jt-touch-speed";var g=document.createElement("div");g.id="jt-touch-pause",g.addEventListener("touchstart",m),g.addEventListener("touchend",n),w.appendChild(g);var h=document.createElement("div");h.id="jt-touch-fast",h.addEventListener("touchstart",o),h.addEventListener("touchend",p),w.appendChild(h),a.appendChild(w);var i=document.createElement("div");i.id="jt-touch-left",D=function(){function a(a){var c=document.createElement("div");c.classList.add("jt-touch-dir-"+a),b.appendChild(c);var d=document.createElement("div");d.classList.add("jt-arrow-"+a),b.appendChild(d)}var b=document.createElement("div");return b.classList.add("jt-touch-dir"),b.classList.add("jt-touch-dir-joy"),a("left"),a("right"),a("up"),a("down"),b}(),D.addEventListener("touchstart",d),D.addEventListener("touchmove",f),D.addEventListener("touchend",e),D.addEventListener("touchcancel",e),i.appendChild(D),a.appendChild(i),i=document.createElement("div"),i.id="jt-touch-right",c(i,"buttonT"),c(i,"button"),a.appendChild(i),b()}},this.consolePowerAndUserPauseStateUpdate=function(a,c){J=a,K=c,w&&b()},this.applyPreferences=function(){C=!!L.touch.directionalBig;var a=2===A?1:0;x=L.joystickKeys[a]};var s,t,u,v,w,x,y=jt.Util.isTouchDevice(),z=jt.Util.isMobileDevice(),A=Javatari.TOUCH_MODE>=0?Javatari.TOUCH_MODE:y&&z?1:0,B=!1,C=!1,D=null,E=null,F=-1,G=0,H={},I=new r,J=!1,K=!1,L=Javatari.userPreferences.current,M=84;this.saveState=function(){return{}},this.loadState=function(a){q()}},jt.DOMConsoleControls=function(a,b){"use strict";function c(a){E=a,F=E?60/I[E]|0:0,H=F/2|0,G=0}function d(a,b){a.returnValue=!1,a.preventDefault(),a.stopPropagation();var c=jt.DOMKeys.codeForKeyboardEvent(a);return j.processKey(c,b),!1}function e(b,c){if(!B||(b=l(b),!m(b,c))){if(2===a.netPlayMode&&Ca.has(b))return a.showOSD("Function not available in NetPlay Client mode",!0,!0);1===a.netPlayMode&&Ca.has(b)||R.push(b<<4|c),2!==a.netPlayMode&&f(b,c)}}function f(a,b){q.controlStateChanged(a,b)}function g(b,c){R.push(b+(c+10)),2!==a.netPlayMode&&h(b,c)}function h(a,b){q.controlValueChanged(a,b)}function i(){r.controlsModeStateUpdate()}var j=this;this.connect=function(a){q=a,q.connectControls(this),v.connect(a),w.connect(a)},this.connectPeripherals=function(a){r=a,v.connectScreen(a),w.connectScreen(a)},this.addKeyInputElement=function(a){a.addEventListener("keydown",this.keyDown),a.addEventListener("keyup",this.keyUp)},this.setupTouchControlsIfNeeded=function(a){w.setupTouchControlsIfNeeded(a)},this.powerOn=function(){k(),v.powerOn(),w.powerOn(),0===S?n(!1,!1):1===S&&n(!0,!1)},this.powerOff=function(){n(!1,!1),v.powerOff(),w.powerOff()},this.releaseControllers=function(){for(var a in t)t[a]&&(e(a,!1),t[a]=!1);L=M=P=Q=!1,y[x.JOY0_BUTTON]=y[x.JOY1_BUTTON]=!1,w.releaseControllers()},this.getTouchControls=function(){return w},this.toggleP1ControlsMode=function(){this.setP1ControlsMode(!A),o(),i()},this.setP1ControlsMode=function(a){A=a,v.setP1ControlsMode(a),w.setP1ControlsMode(a),this.releaseControllers(),p()},this.isP1ControlsMode=function(){return A},this.togglePaddleMode=function(){n(!B,!0),i()},this.isPaddleMode=function(){return B},this.setP1ControlsAndPaddleMode=function(a,b){this.setP1ControlsMode(a),n(b,!1),i()},this.toggleGamepadMode=function(){v.toggleMode(),i()},this.getGamepadModeDesc=function(){return v.getModeDesc()},this.toggleTouchControlsMode=function(){w.toggleMode(),i()},this.toggleTouchDirBig=function(){w.toggleTouchDirBig()},this.toggleTurboFireSpeed=function(){c((E+1)%11),r.showOSD("Turbo Fire"+(E?" speed: "+this.getTurboFireSpeedDesc():": OFF"),!0),z.turboFireSpeed=E,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save()},this.getTurboFireSpeedDesc=function(){return E?E+"x":"OFF"},this.getControlReport=function(a){switch(a){case jt.PeripheralControls.P1_CONTROLS_TOGGLE:return{label:A?"ON":"OFF",active:A};case jt.PeripheralControls.PADDLES_TOGGLE_MODE:return{label:B?"ON":"OFF",active:B};case jt.PeripheralControls.TOUCH_TOGGLE_DIR_BIG:return{label:w.isDirBig()?"ON":"OFF",active:w.isDirBig()};case jt.PeripheralControls.HAPTIC_FEEDBACK_TOGGLE_MODE:return{label:D?"ON":"OFF",active:!!D};case jt.PeripheralControls.TURBO_FIRE_TOGGLE:return{label:this.getTurboFireSpeedDesc(),active:!!E}}return{label:"Unknown",active:!1}},this.consolePowerAndUserPauseStateUpdate=function(a,b){w.consolePowerAndUserPauseStateUpdate(a,b)},this.keyDown=function(a){return d(a,!0)},this.keyUp=function(a){return d(a,!1)},this.controlsClockPulse=function(){if(F){if(--G===H||0===G){var a=G>0;y[x.JOY0_BUTTON]&&e(x.JOY0_BUTTON,a),y[x.JOY1_BUTTON]&&e(x.JOY1_BUTTON,a)}G<=0&&(G=F)}v.controlsClockPulse(),B&&(M?L||(J-=K,J<0&&(J=0),g(x.PADDLE0_POSITION,J)):L&&(J+=K,J>380&&(J=380),g(x.PADDLE0_POSITION,J)),Q?P||(N-=O,N<0&&(N=0),g(x.PADDLE1_POSITION,N)):P&&(N+=O,N>380&&(N=380),g(x.PADDLE1_POSITION,N)))},this.toggleHapticFeedback=function(){ +C?(D=!D,z.hapticFeedback=D,Javatari.userPreferences.setDirty()):r.showOSD("Haptic Feedback not available",!0,!0)},this.hapticFeedback=function(){D&&navigator.vibrate(8)},this.hapticFeedbackOnTouch=function(a){!D||"touchstart"!==a.type&&"touchend"!==a.type&&"touchmove"!==a.type||navigator.vibrate(8)},this.cartridgeInserted=function(a){if(a&&!(S>=0)){var b=1===a.rom.info.p;B!==b&&n(b,!1)}},this.processKey=function(a,c){var d=u[a];if(d){if(c===y[d])return;c&&(G=H),y[d]=c}else{if(!(d=s[a]))return b.processKey(a,c);if(c===t[d])return;t[d]=c}e(d,c)},this.applyPreferences=function(){p(),c(z.turboFireSpeed),w.applyPreferences(),v.applyPreferences()},this.processControlState=e,this.processControlValue=g;var k=function(){window.onhelp=function(){return!1}},l=function(a){switch(a){case x.JOY0_BUTTON:return x.PADDLE0_BUTTON;case x.JOY1_BUTTON:return x.PADDLE1_BUTTON;default:return a}},m=function(a,b){if(b)switch(a){case x.JOY0_LEFT:return L=!0,!0;case x.JOY0_RIGHT:return M=!0,!0;case x.JOY0_UP:return K<10&&K++,r.showOSD("P1 Paddle speed: "+K,!0),!0;case x.JOY0_DOWN:return K>1&&K--,r.showOSD("P1 Paddle speed: "+K,!0),!0;case x.JOY1_LEFT:return P=!0,!0;case x.JOY1_RIGHT:return Q=!0,!0;case x.JOY1_UP:return O<10&&O++,r.showOSD("P2 Paddle speed: "+O,!0),!0;case x.JOY1_DOWN:return O>1&&O--,r.showOSD("P2 Paddle speed: "+O,!0),!0}else switch(a){case x.JOY0_LEFT:return L=!1,!0;case x.JOY0_RIGHT:return M=!1,!0;case x.JOY1_LEFT:return P=!1,!0;case x.JOY1_RIGHT:return Q=!1,!0}return!1},n=function(b,c){B!==b&&j.releaseControllers(),B=b,K=O=2,J=N=B?190:-1,2!==a.netPlayMode&&(g(x.PADDLE0_POSITION,J),g(x.PADDLE1_POSITION,N)),v.setPaddleMode(B),c&&o()},o=function(){r.showOSD("Controllers: "+(B?"Paddles":"Joysticks")+(A?", Swapped":""),!0)},p=function(){var a=jt.DOMKeys;s={},t={},u={},s[T]=x.POWER,s[T|a.ALT]=x.POWER,s[T|a.SHIFT]=x.POWER_FRY,s[T|a.SHIFT|a.ALT]=x.POWER_FRY,s[U]=x.BLACK_WHITE,s[U|a.ALT]=x.BLACK_WHITE,s[V]=x.SELECT,s[V|a.ALT]=x.SELECT,s[W]=x.RESET,s[W|a.ALT]=x.RESET,s[X]=x.DIFFICULTY0,s[X|a.ALT]=x.DIFFICULTY0,s[Y]=x.DIFFICULTY1,s[Y|a.ALT]=x.DIFFICULTY1,s[Z]=x.FAST_SPEED,s[Z|a.ALT]=x.FAST_SPEED,s[Z|a.SHIFT]=x.SLOW_SPEED,s[Z|a.SHIFT|a.ALT]=x.SLOW_SPEED,s[$|a.SHIFT|a.ALT]=x.INC_SPEED,s[_|a.SHIFT|a.ALT]=x.DEC_SPEED,s[aa|a.SHIFT|a.ALT]=x.NORMAL_SPEED,s[ba|a.SHIFT|a.ALT]=x.MIN_SPEED,s[ca|a.ALT]=x.PAUSE,s[ca|a.SHIFT|a.ALT]=x.PAUSE_AUDIO_ON,s[da|a.ALT]=x.FRAME,s[ea|a.ALT]=x.FRAME,s[ga|a.ALT]=x.TRACE,s[ha|a.ALT]=x.SHOW_INFO,s[fa|a.ALT]=x.DEBUG,s[ia|a.ALT]=x.NO_COLLISIONS,s[ja|a.ALT]=x.VIDEO_STANDARD,s[ka|a.ALT]=x.VIDEO_STANDARD,s[la|a.ALT]=x.VSYNCH,s[ma|a.CONTROL]=x.SAVE_STATE_0,s[na|a.CONTROL]=x.SAVE_STATE_0,s[ma|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[na|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[oa|a.CONTROL]=x.SAVE_STATE_1,s[oa|a.CONTROL|a.ALT]=x.SAVE_STATE_1,s[pa|a.CONTROL]=x.SAVE_STATE_2,s[pa|a.CONTROL|a.ALT]=x.SAVE_STATE_2,s[qa|a.CONTROL]=x.SAVE_STATE_3,s[qa|a.CONTROL|a.ALT]=x.SAVE_STATE_3,s[ra|a.CONTROL]=x.SAVE_STATE_4,s[ra|a.CONTROL|a.ALT]=x.SAVE_STATE_4,s[sa|a.CONTROL]=x.SAVE_STATE_5,s[sa|a.CONTROL|a.ALT]=x.SAVE_STATE_5,s[ta|a.CONTROL]=x.SAVE_STATE_6,s[ta|a.CONTROL|a.ALT]=x.SAVE_STATE_6,s[ua|a.CONTROL]=x.SAVE_STATE_7,s[ua|a.CONTROL|a.ALT]=x.SAVE_STATE_7,s[va|a.CONTROL]=x.SAVE_STATE_8,s[va|a.CONTROL|a.ALT]=x.SAVE_STATE_8,s[wa|a.CONTROL]=x.SAVE_STATE_9,s[wa|a.CONTROL|a.ALT]=x.SAVE_STATE_9,s[xa|a.CONTROL]=x.SAVE_STATE_10,s[xa|a.CONTROL|a.ALT]=x.SAVE_STATE_10,s[ya|a.CONTROL]=x.SAVE_STATE_11,s[za|a.CONTROL]=x.SAVE_STATE_11,s[ya|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[za|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[Aa|a.CONTROL]=x.SAVE_STATE_12,s[Ba|a.CONTROL]=x.SAVE_STATE_12,s[Aa|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[Ba|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[ma|a.ALT]=x.LOAD_STATE_0,s[na|a.ALT]=x.LOAD_STATE_0,s[oa|a.ALT]=x.LOAD_STATE_1,s[pa|a.ALT]=x.LOAD_STATE_2,s[qa|a.ALT]=x.LOAD_STATE_3,s[ra|a.ALT]=x.LOAD_STATE_4,s[sa|a.ALT]=x.LOAD_STATE_5,s[ta|a.ALT]=x.LOAD_STATE_6,s[ua|a.ALT]=x.LOAD_STATE_7,s[va|a.ALT]=x.LOAD_STATE_8,s[wa|a.ALT]=x.LOAD_STATE_9,s[xa|a.ALT]=x.LOAD_STATE_10,s[ya|a.ALT]=x.LOAD_STATE_11,s[za|a.ALT]=x.LOAD_STATE_11,s[Aa|a.ALT]=x.LOAD_STATE_12,s[Ba|a.ALT]=x.LOAD_STATE_12,s[ma|a.SHIFT|a.CONTROL]=x.SAVE_STATE_0,s[na|a.SHIFT|a.CONTROL]=x.SAVE_STATE_0,s[ma|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[na|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[oa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_1,s[oa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_1,s[pa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_2,s[pa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_2,s[qa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_3,s[qa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_3,s[ra|a.SHIFT|a.CONTROL]=x.SAVE_STATE_4,s[ra|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_4,s[sa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_5,s[sa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_5,s[ta|a.SHIFT|a.CONTROL]=x.SAVE_STATE_6,s[ta|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_6,s[ua|a.SHIFT|a.CONTROL]=x.SAVE_STATE_7,s[ua|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_7,s[va|a.SHIFT|a.CONTROL]=x.SAVE_STATE_8,s[va|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_8,s[wa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_9,s[wa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_9,s[xa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_10,s[xa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_10,s[ya|a.SHIFT|a.CONTROL]=x.SAVE_STATE_11,s[za|a.SHIFT|a.CONTROL]=x.SAVE_STATE_11,s[ya|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[za|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[Aa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_12,s[Ba|a.SHIFT|a.CONTROL]=x.SAVE_STATE_12,s[Aa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[Ba|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[ma|a.SHIFT|a.ALT]=x.LOAD_STATE_0,s[na|a.SHIFT|a.ALT]=x.LOAD_STATE_0,s[oa|a.SHIFT|a.ALT]=x.LOAD_STATE_1,s[pa|a.SHIFT|a.ALT]=x.LOAD_STATE_2,s[qa|a.SHIFT|a.ALT]=x.LOAD_STATE_3,s[ra|a.SHIFT|a.ALT]=x.LOAD_STATE_4,s[sa|a.SHIFT|a.ALT]=x.LOAD_STATE_5,s[ta|a.SHIFT|a.ALT]=x.LOAD_STATE_6,s[ua|a.SHIFT|a.ALT]=x.LOAD_STATE_7,s[va|a.SHIFT|a.ALT]=x.LOAD_STATE_8,s[wa|a.SHIFT|a.ALT]=x.LOAD_STATE_9,s[xa|a.SHIFT|a.ALT]=x.LOAD_STATE_10,s[ya|a.SHIFT|a.ALT]=x.LOAD_STATE_11,s[za|a.SHIFT|a.ALT]=x.LOAD_STATE_11,s[Aa|a.SHIFT|a.ALT]=x.LOAD_STATE_12,s[Ba|a.SHIFT|a.ALT]=x.LOAD_STATE_12;var b=A?1:0,c=A?0:1;s[z.joystickKeys[b].left.c]=x.JOY0_LEFT,s[z.joystickKeys[b].up.c]=x.JOY0_UP,s[z.joystickKeys[b].right.c]=x.JOY0_RIGHT,s[z.joystickKeys[b].down.c]=x.JOY0_DOWN,s[z.joystickKeys[b].button.c]=x.JOY0_BUTTON,s[z.joystickKeys[c].left.c]=x.JOY1_LEFT,s[z.joystickKeys[c].up.c]=x.JOY1_UP,s[z.joystickKeys[c].right.c]=x.JOY1_RIGHT,s[z.joystickKeys[c].down.c]=x.JOY1_DOWN,s[z.joystickKeys[c].button.c]=x.JOY1_BUTTON,u[z.joystickKeys[b].buttonT.c]=x.JOY0_BUTTON,u[z.joystickKeys[c].buttonT.c]=x.JOY1_BUTTON};this.netGetControlsToSend=function(){return R.length?R:void 0},this.netClearControlsToSend=function(){R.length=0},this.netServerProcessControlsChanges=function(a){for(var b=0,c=a.length;b>4)||R.push(d),f(d>>4,1&d)):h(-16384&d,(16383&d)-10)}},this.netClientApplyControlsChanges=function(a){for(var b=0,c=a.length;b>4,1&d):h(-16384&d,(16383&d)-10)}};var q,r,s,t,u,v,w,x=jt.ConsoleControls,y={},z=Javatari.userPreferences.current,A=!1,B=!1,C=!!navigator.vibrate,D=C&&!!z.hapticFeedback,E=0,F=0,G=0,H=0,I=[0,1,2,2.4,3,4,5,6,7.5,10,12],J=0,K=3,L=!1,M=!1,N=0,O=3,P=!1,Q=!1,R=new Array(100);R.length=0 ;var S=Javatari.PADDLES_MODE,T=jt.DOMKeys.VK_F1.c,U=jt.DOMKeys.VK_F2.c,V=jt.DOMKeys.VK_F11.c,W=jt.DOMKeys.VK_F12.c,X=jt.DOMKeys.VK_F4.c,Y=jt.DOMKeys.VK_F9.c,Z=jt.DOMKeys.VK_TAB.c,$=jt.DOMKeys.VK_UP.c,_=jt.DOMKeys.VK_DOWN.c,aa=jt.DOMKeys.VK_RIGHT.c,ba=jt.DOMKeys.VK_LEFT.c,ca=jt.DOMKeys.VK_P.c,da=jt.DOMKeys.VK_O.c,ea=jt.DOMKeys.VK_F.c,fa=jt.DOMKeys.VK_D.c,ga=jt.DOMKeys.VK_VOID,ha=jt.DOMKeys.VK_I.c,ia=jt.DOMKeys.VK_C.c,ja=jt.DOMKeys.VK_V.c,ka=jt.DOMKeys.VK_Q.c,la=jt.DOMKeys.VK_W.c,ma=jt.DOMKeys.VK_QUOTE.c,na=jt.DOMKeys.VK_BACKQUOTE.c,oa=jt.DOMKeys.VK_1.c,pa=jt.DOMKeys.VK_2.c,qa=jt.DOMKeys.VK_3.c,ra=jt.DOMKeys.VK_4.c,sa=jt.DOMKeys.VK_5.c,ta=jt.DOMKeys.VK_6.c,ua=jt.DOMKeys.VK_7.c,va=jt.DOMKeys.VK_8.c,wa=jt.DOMKeys.VK_9.c,xa=jt.DOMKeys.VK_0.c,ya=jt.DOMKeys.VK_MINUS.c,za=jt.DOMKeys.VK_FF_MINUS.c,Aa=jt.DOMKeys.VK_EQUALS.c,Ba=jt.DOMKeys.VK_FF_EQUALS.c,Ca=new Set([x.SAVE_STATE_0,x.SAVE_STATE_1,x.SAVE_STATE_2,x.SAVE_STATE_3,x.SAVE_STATE_4,x.SAVE_STATE_5,x.SAVE_STATE_6,x.SAVE_STATE_7,x.SAVE_STATE_8,x.SAVE_STATE_9,x.SAVE_STATE_10,x.SAVE_STATE_11,x.SAVE_STATE_12,x.SAVE_STATE_FILE,x.LOAD_STATE_0,x.LOAD_STATE_1,x.LOAD_STATE_2,x.LOAD_STATE_3,x.LOAD_STATE_4,x.LOAD_STATE_5,x.LOAD_STATE_6,x.LOAD_STATE_7,x.LOAD_STATE_8,x.LOAD_STATE_9,x.LOAD_STATE_10,x.LOAD_STATE_11,x.LOAD_STATE_12,x.POWER_FRY,x.VSYNCH,x.TRACE,x.CARTRIDGE_FORMAT]);!function(){v=new jt.GamepadConsoleControls(j),w=new jt.DOMTouchControls(j),j.applyPreferences()}(),jt.DOMConsoleControls.hapticFeedback=this.hapticFeedback,jt.DOMConsoleControls.hapticFeedbackOnTouch=this.hapticFeedbackOnTouch},jt.ScreenGUI=jt.Util.isMobileDevice()?{BAR_HEIGHT:29,BAR_MENU_WIDTH:150,BAR_MENU_ITEM_HEIGHT:33,BAR_MENU_ITEM_FONT_SIZE:14,LOGO_SCREEN_WIDTH:618,LOGO_SCREEN_HEIGHT:455,TOUCH_CONTROLS_LEFT_WIDTH:119,TOUCH_CONTROLS_LEFT_WIDTH_BIG:143,TOUCH_CONTROLS_RIGHT_WIDTH:80}:{BAR_HEIGHT:29,BAR_MENU_WIDTH:140,BAR_MENU_ITEM_HEIGHT:29,BAR_MENU_ITEM_FONT_SIZE:13,LOGO_SCREEN_WIDTH:618,LOGO_SCREEN_HEIGHT:455,TOUCH_CONTROLS_LEFT_WIDTH:119,TOUCH_CONTROLS_LEFT_WIDTH_BIG:143,TOUCH_CONTROLS_RIGHT_WIDTH:80},jt.ScreenGUI.html=function(){return'
Swipe up/down on the Screen
to hide the browser bars!
'},jt.ScreenGUI.htmlConsolePanel='
',jt.ScreenGUI.css=function(){ return"html.jt-full-screen-scroll-hack body { position: absolute; width: 100%; height: "+Math.max(1280,1.4*Math.max(screen.width,screen.height)|0)+"px; top: 0; left: 0; margin: 0; padding: 0; border: none; overflow-x: hidden; overflow-y: auto; } #jt-screen-fs, #jt-screen-fs div, #jt-screen-fs canvas { outline: none; } #"+Javatari.SCREEN_ELEMENT_ID+" { display: inline-block; visibility: hidden; font-family: sans-serif; font-weight: normal; margin: 0; padding: 0; border: 1px solid black; background: black; overflow: visible; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; touch-callout: none; -webkit-tap-highlight-color: transparent; tap-highlight-color: transparent; -webkit-text-size-adjust: none; -moz-text-size-adjust: none; text-size-adjust: none; } html.jt-full-screen #"+Javatari.SCREEN_ELEMENT_ID+" { display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; box-shadow: none; z-index: 2147483646; /* one behind fsElement */ } html.jt-started #"+Javatari.SCREEN_ELEMENT_ID+" { visibility: visible; } #jt-screen-scroll-message { position: absolute; bottom: 150%; left: 50%; height: 0; width: 0; margin: 0; padding: 0; font-size: 16px; line-height: 28px; white-space: nowrap; color: hsl(0, 0%, 4%); background: hsl(0, 0%, 92%); border-radius: 15px; transform: translate(-50%, 0); box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.7); transition: all 1.7s step-end, opacity 1.6s linear; overflow: hidden; opacity: 0; z-index: -1; } html.jt-full-screen-scroll-hack #jt-screen-fs.jt-scroll-message #jt-screen-scroll-message { opacity: 1; bottom: 23%; width: 215px; height: 56px; padding: 13px 20px; z-index: 60; transition: none; } #jt-screen-fs { position: relative; background: black; text-align: center; -webkit-tap-highlight-color: rgba(0,0,0,0); tap-highlight-color: rgba(0,0,0,0) } html.jt-full-screen #jt-screen-fs { position: absolute; width: 100%; height: 100%; left: 0; bottom: 0; right: 0; z-index: 2147483647; } html.jt-full-screen-scroll-hack #jt-screen-fs { position: fixed; bottom: 0; height: 100vh; } html.jt-full-screen #jt-screen-fs-center { /* Used to center and move things horizontally in Landscape Full Screen */ position: absolute; top: 0; bottom: 0; left: 0; right: 0; } #jt-screen-canvas-outer { display: inline-block; position: relative; overflow: hidden; vertical-align: top; line-height: 1px; z-index: 3; } #jt-screen-canvas { display: block; } #jt-bar { position: relative; left: 0; right: 0; height: "+this.BAR_HEIGHT+'px; margin: 0 auto; border-top: 1px solid black; background: hsl(0, 0%, 16%); overflow: visible; /* for the Menu to show through */ box-sizing: content-box; z-index: 40; } #jt-bar-inner { position: absolute; overflow: hidden; top: 0; bottom: 0; left: 0; right: 0; text-align: left; } html.jt-bar-auto-hide #jt-bar, html.jt-full-screen #jt-bar { position: absolute; bottom: 0; transition: height 0.08s ease-in-out; } html.jt-bar-auto-hide #jt-bar.jt-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } @media only screen and (orientation: landscape) { html.jt-full-screen #jt-bar.jt-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } } #jt-bar.jt-narrow .jt-narrow-hidden { display: none; } .jt-bar-button { display: inline-block; width: 24px; height: 28px; margin: 0 1px; background-image: url("'+jt.Images.urls.iconSprites+'"); background-repeat: no-repeat; background-size: 264px 82px; cursor: pointer; } /* Firefox-specific rules */ @-moz-document url-prefix() { .jt-bar-button { image-rendering: optimizequality; } } /* .jt-bar-button { border: 1px solid yellow; background-origin: border-box; box-sizing: border-box; } */ #jt-bar-power { margin: 0 3px 0 6px; } #jt-bar-netplay.jt-hidden { display: none; } #jt-bar-select { margin: 0 2px 0 9px; width: 50px; } #jt-bar-reset { margin: 0 2px; width: 50px; } html.jt-console-panel-active #jt-bar-select, html.jt-console-panel-active #jt-bar-reset { display: none; } #jt-bar-settings, #jt-bar-full-screen, #jt-bar-scale-plus, #jt-bar-scale-minus { float: right; margin: 0; } #jt-bar-settings { margin-right: 5px; } #jt-bar-full-screen.jt-mobile { margin: 0 6px; } #jt-bar-scale-plus { width: 21px; } #jt-bar-scale-minus { width: 18px; } #jt-bar-text { float: right; width: 32px; } #jt-bar-text.jt-mobile { margin: 0 0 0 6px; } #jt-bar-console-panel { position: absolute; left: 2px; right: 0; width: 39px; margin: 0 auto; } #jt-bar.jt-narrow #jt-bar-console-panel { position: static; float: right; margin-right: 3px; } #jt-bar-logo { position: absolute; left: 0; right: 0; width: 34px; margin: 0 auto; } html:not(.jt-console-panel-active) #jt-bar.jt-narrow #jt-bar-logo { display: none; } #jt-bar-menu { position: absolute; display: none; bottom: '+this.BAR_HEIGHT+"px; font-size: "+this.BAR_MENU_ITEM_FONT_SIZE+"px; line-height: 1px; overflow: hidden; transform-origin: bottom center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-bar-menu-inner { display: inline-block; padding-bottom: 2px; border: 1px solid black; background: hsl(0, 0%, 16%); } .jt-bar-menu-item, #jt-bar-menu-title { position: relative; display: none; width: "+this.BAR_MENU_WIDTH+"px; height: "+this.BAR_MENU_ITEM_HEIGHT+"px; color: rgb(205, 205, 205); border: none; padding: 0; line-height: "+this.BAR_MENU_ITEM_HEIGHT+'px; text-shadow: 1px 1px 1px black; background: transparent; outline: none; overflow: hidden; backface-visibility: hidden; -webkit-backface-visibility: hidden; cursor: pointer; box-sizing: border-box; } #jt-bar-menu-title { display: block; color: white; font-weight: bold; border-bottom: 1px solid black; margin-bottom: 1px; text-align: center; background: rgb(70, 70, 70); cursor: auto; } .jt-bar-menu-item.jt-hover:not(.jt-bar-menu-item-disabled):not(.jt-bar-menu-item-divider) { color: white; background: hsl(358, 67%, 46%); } .jt-bar-menu-item-disabled { color: rgb(110, 110, 110); } .jt-bar-menu-item-divider { height: 1px; margin: 1px 0; background: black; } .jt-bar-menu-item-toggle { text-align: left; padding-left: 30px; } .jt-bar-menu-item-toggle::after { content: ""; position: absolute; width: 6px; height: 19px; top: '+((this.BAR_MENU_ITEM_HEIGHT-21)/2|0)+"px; left: 10px; background: rgb(70, 70, 70); box-shadow: black 1px 1px 1px; } .jt-bar-menu-item-toggle.jt-bar-menu-item-toggle-checked { color: white; } .jt-bar-menu-item-toggle.jt-bar-menu-item-toggle-checked::after { background: rgb(248, 33, 28); } #jt-console-panel { display: none; position: absolute; bottom: -"+(jt.ConsolePanel.DEFAULT_HEIGHT+2)+"px; left: 50%; transform: translate(-50%, 0); transform-origin: center top; margin: 0 auto; border: 1px solid black; z-index: 30; } html.jt-console-panel-active #jt-console-panel { display: block; } html.jt-full-screen #jt-console-panel { bottom: "+(jt.ScreenGUI.BAR_HEIGHT+2)+'px; border: none; transform-origin: center bottom; } .jt-select-dialog { position: absolute; overflow: hidden; display: none; top: 0; bottom: 0; left: 0; right: 0; width: 540px; max-width: 92%; height: 297px; margin: auto; color: white; font-size: 18px; line-height: 21px; background: hsl(0, 0%, 16%); padding: 11px 0 0; text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } .jt-select-dialog.jt-show { display: block; } .jt-select-dialog > .jt-footer { position: absolute; width: 100%; bottom: 7px; font-size: 13px; text-align: center; color: rgb(170, 170, 170); } .jt-select-dialog > ul { position: relative; width: 88%; top: 5px; margin: auto; padding: 0; list-style: none; font-size: 14px; color: hsl(0, 0%, 88%); } .jt-select-dialog > ul li { display: none; position: relative; overflow: hidden; height: 26px; background: rgb(70, 70, 70); margin: 7px 0; padding: 11px 10px 0 18px; /* Space on the left for the toggle mark for all lines */ line-height: 0; text-align: left; text-overflow: ellipsis; border: 2px dashed transparent; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); white-space: nowrap; box-sizing: border-box; cursor: pointer; } .jt-select-dialog > ul li.jt-visible { display: block; } .jt-select-dialog > ul li.jt-selected { color: white; background: hsl(358, 67%, 46%); } .jt-select-dialog > ul li.jt-droptarget { color: white; border-color: lightgray; } .jt-select-dialog > ul li.jt-toggle::after { content: ""; position: absolute; width: 6px; height: 17px; top: 2px; left: 6px; background: rgb(60, 60, 60); box-shadow: black 1px 1px 1px; } .jt-select-dialog > ul li.jt-toggle-checked::after { background: rgb(248, 33, 28); } #jt-cartridge-format.jt-select-dialog > ul { width: 100%; height: 226px; margin: 7px auto 0; padding: 0 0 0 30px; overflow-y: auto; box-sizing: border-box; } #jt-cartridge-format.jt-select-dialog > ul li { width: 280px; margin: 7px 0 2px 0; } #jt-cartridge-format.jt-select-dialog > ul li:first-child { margin-top: 0; } #jt-cartridge-format ::-webkit-scrollbar { width: 12px; } #jt-cartridge-format ::-webkit-scrollbar-track { background: transparent; } #jt-cartridge-format ::-webkit-scrollbar-thumb { border: solid transparent; border-width: 1px 1px 1px 2px; background: rgb(80, 80, 80); background-clip: content-box; } #jt-cartridge-format ul.jt-quick-options-list { width: 230px; margin: 18px 0 0 52px; } #jt-cartridge-format ul.jt-quick-options-list li div { height: 24px; line-height: 24px; } #jt-cartridge-format .jt-control { width: 60px; line-height: 24px; } /* Firefox-specific rules */ @-moz-document url-prefix() { /* Try to hide scrollbar, since we cant style it :-( */ #jt-cartridge-format.jt-select-dialog > ul { width: 304px; } } #jt-logo { position: absolute; display: none; top: 0; bottom: 0; left: 0; right: 0; background: black; } #jt-logo.jt-show { display: block; } #jt-logo-center { position: absolute; top: 50%; left: 50%; width: 598px; height: 456px; transform: translate(-50%, -50%); } #jt-logo-image { position: absolute; top: 50%; left: 50%; width: 335px; max-width: 57%; transform: translate(-50%, -50%); -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #jt-screen-fs.jt-logo-message-active #jt-logo-image { top: 128px; width: 37%; max-width: initial; } #jt-logo-loading-icon, #jt-canvas-loading-icon { display: none; position: absolute; top: 79%; left: 0; right: 0; width: 14%; height: 3%; margin: 0 auto; background-color: rgba(0, 0, 0, .8); border: solid transparent; border-width: 8px 30px; border-radius: 3px; box-sizing: content-box; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #jt-screen-fs.jt-logo-message-active #jt-logo-loading-icon { top: 204px; } #jt-unmute-message { display: none; position: absolute; left: 50%; bottom: 5px; height: 30px; padding: 0 10px; margin: 0 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; font-size: 15px; line-height: 30px; color: rgb(210, 210, 210); background: rgba(0, 0, 0, 0.7); transform-origin: bottom center; transform: translate(-50%, 0); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-unmute-message::before { content: ""; display: inline-block; width: 24px; height: 20px; margin: 5px 9px 0 0; background-image: url("'+jt.Images.urls.muteIcon+'"); background-repeat: no-repeat; background-size: 24px 20px; vertical-align: top; } #jt-unmute-message::after { content: "Audio is muted. Click to unmute"; } #jt-unmute-message.jt-show { display: inline-block; } #jt-logo-message { display: none; position: absolute; top: 226px; width: 100%; color: hsl(0, 0%, 97%); font-size: 29px; line-height: 34px; } #jt-screen-fs.jt-logo-message-active #jt-logo-message { display: block; } #jt-logo-message-ok { display: block; position: absolute; top: 91px; left: 193px; width: 214px; height: 130px; } #jt-logo-message-ok.jt-higher { top: 74px; } #jt-logo-message-ok-text { position: absolute; top: 49%; left: 50%; width: 120px; height: 47px; font-size: 23px; line-height: 47px; background: hsl(358, 67%, 46%); border-radius: 6px; color: white; transform: translate(-50%, -50%); } #jt-osd { position: absolute; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; top: -29px; right: 16px; height: 29px; padding: 0 12px; margin: 0; font-weight: bold; font-size: 15px; line-height: 29px; color: rgb(0, 255, 0); background: rgba(0, 0, 0, 0.7); transform-origin: top right; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; opacity: 0; } .jt-arrow-up, .jt-arrow-down, .jt-arrow-left, .jt-arrow-right { border: 0px solid transparent; box-sizing: border-box; } .jt-arrow-up { border-bottom-color: inherit; } .jt-arrow-down { border-top-color: inherit; } .jt-arrow-left { border-right-color: inherit; } .jt-arrow-right { border-left-color: inherit; } .jt-quick-options-list { margin-top: 12px; padding: 0; list-style: none; color: hsl(0, 0%, 88%); } .jt-quick-options-list li { margin-top: 8px; line-height: 1px; text-align: left; } .jt-quick-options-list li div { display: inline-block; overflow: hidden; height: 26px; font-size: 14px; line-height: 26px; text-overflow: ellipsis; white-space: nowrap; box-sizing: border-box; } .jt-quick-options-list .jt-control { float: right; width: 86px; font-size: 15px; line-height: 25px; color: hsl(0, 0%, 70%); background: black; text-align: center; cursor: pointer; } .jt-quick-options-list .jt-control.jt-selected { color: white; background: hsl(358, 67%, 46%); box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); } .jt-quick-options-list .jt-control.jt-selected.jt-inactive { line-height: 21px; border: 2px dashed hsl(358, 67%, 46%); background: black; } #jt-quick-options { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 233px; height: 345px; margin: auto; padding: 11px 14px 0; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } #jt-quick-options.jt-show { display: block; } #jt-quick-options::before { content: "Quick Options"; display: block; } #jt-netplay { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 390px; height: 220px; margin: auto; padding-top: 11px; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); transform-origin: left center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } #jt-netplay.jt-show { display: block; } #jt-netplay::before { content: "Net Play!"; display: block; } #jt-netplay-status-box { position: relative; margin-top: 17px; } #jt-netplay-status { display: inline-block; position: relative; width: 340px; font-size: 15px; line-height: 27px; background: black; vertical-align: top; text-shadow: none; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; box-sizing: border-box; cursor: auto; } #jt-netplay-status-box.jt-active #jt-netplay-status { padding: 0 16px 0 12px; } #jt-netplay-status-box.jt-active #jt-netplay-status::after { content: ""; position: absolute; width: 6px; height: 18px; top: 4px; left: 7px; background: rgb(248, 33, 28); } #jt-netplay-link { display: none; position: absolute; right: 25px; top: 0; width: 26px; height: 27px; color: white; font-size: 15px; font-weight: 600; line-height: 27px; text-decoration: none; background: black; text-align: center; } #jt-netplay-link:hover { background: hsl(358, 67%, 46%); cursor: pointer; } #jt-netplay-status-box.jt-active #jt-netplay-link { display: block; } .jt-netplay-button { display: inline-block; width: 86px; padding: 0; margin: 0; font-size: 15px; line-height: 26px; color: white; background: hsl(358, 67%, 46%); text-shadow: 1px 1px 1px black; border: none; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); cursor: pointer; } #jt-netplay-session-box { margin-top: 18px; } #jt-netplay-session-label, #jt-netplay-nick-label { font-size: 15px; margin-bottom: 4px; } #jt-netplay-session-label::before { content: "Session Name"; } #jt-netplay-session-box input { width: 150px; height: 26px; padding: 0 10px; margin: 0 8px; font-size: 15px; line-height: 26px; background: rgb(240, 240, 240); border: none; border-radius: 0; box-sizing: border-box; outline: none; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; cursor: auto; } #jt-netplay-nick-label { margin-top: 10px; } #jt-netplay-nick-label::before { content: "User Nickname"; } .jt-netplay-button:disabled { color: rgb(130, 130, 130); background: rgb(70, 70, 70); cursor: default; } #jt-netplay input:disabled { color: black; background: rgb(180, 180, 180); cursor: default; } #jt-netplay-session-box.jt-disabled div { color: rgb(130, 130, 130); } input#jt-netplay-link-text { position: absolute; top: 8px; left: 50px; width: 1px; height: 1px; padding: 0; margin: 0; border: none; color: transparent; background: transparent; opacity: 0; z-index: -10; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; } #jt-touch-left, #jt-touch-right, #jt-touch-speed { display: none; position: absolute; z-index: 1; } html.jt-full-screen.jt-touch-active #jt-touch-left, html.jt-full-screen.jt-touch-active #jt-touch-right, html.jt-full-screen.jt-touch-active #jt-touch-speed { display: block; } .jt-touch-dir { width: 130px; height: 130px; color: hsl(0, 0%, 75%); border-radius: 100%; } .jt-touch-dir::before { content: ""; position: absolute; top: 14px; left: 14px; right: 14px; bottom: 14px; border: 1px solid hsl(0, 0%, 26%); border-radius: 100%; } .jt-touch-dir-joy .jt-touch-dir-up, .jt-touch-dir-joy .jt-touch-dir-left { position: absolute; background: hsl(0, 0%, 31%); border-radius: 2px 2px 0 0; box-shadow: inset 1px 2px 0px hsl(0, 0%, 43%), inset -1px -1px hsl(0, 0%, 19%), 0 3px 0 1px hsl(0, 0%, 21%); } .jt-touch-dir-joy .jt-touch-dir-up { width: 26px; height: 78px; top: 24px; left: 52px; } .jt-touch-dir-joy .jt-touch-dir-left { width: 78px; height: 25px; top: 51px; left: 26px; } .jt-touch-dir-joy .jt-touch-dir-left::before { content: ""; position: absolute; top: 2px; left: 23px; width: 33px; height: 22px; background: inherit; z-index: 1; } .jt-touch-dir-joy .jt-touch-dir-left::after { content: ""; position: absolute; top: 4px; left: 30px; height: 17px; width: 17px; border-radius: 100%; box-shadow: inset 0 0 2px hsl(0, 0%, 22%), inset 1px 2px 3px 1px hsl(0, 0%, 26%), inset -1px -2px 1px hsl(0, 0%, 64%); z-index: 2; } .jt-touch-dir .jt-arrow-up, .jt-touch-dir .jt-arrow-down, .jt-touch-dir .jt-arrow-left, .jt-touch-dir .jt-arrow-right { position: absolute; border-width: 5px; z-index: 2; } .jt-touch-dir .jt-arrow-up { top: 26px; left: 60px; border-bottom-width: 11px; } .jt-touch-dir .jt-arrow-down { bottom: 29px; left: 60px; border-top-width: 11px; } .jt-touch-dir .jt-arrow-left { top: 58px; left: 26px; border-right-width: 11px; } .jt-touch-dir .jt-arrow-right { top: 58px; right: 26px; border-left-width: 11px; } .jt-touch-button { position: relative; display: block; width: 72px; height: 72px; font-size: 20px; line-height: 67px; color: hsl(0, 0%, 79%); border-radius: 100%; cursor: default; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; z-index: 0; } .jt-touch-button::before { content: ""; position: absolute; box-sizing: border-box; z-index: -1; } .jt-touch-button-joy::before, .jt-touch-button-none::before { width: 50px; height: 48px; top: 9px; left: 11px; border-radius: 100%; } #jt-screen-fs.jt-touch-config-active .jt-touch-button-none::before { border: 2px solid hsl(0, 0%, 30%); } .jt-touch-button-joy.jt-touch-button-joy-button::before { border: none; background: hsl(1, 70%, 37%); box-shadow: inset -2px -7px 3px 1px hsl(1, 68%, 43%), inset 0px 0px 1px 9px hsl(1, 72%, 33%), 0px -1px 0px 1px hsl(1, 70%, 47%), 0px 1px 0px 2px hsl(1, 70%, 29%); } .jt-touch-button-joy.jt-touch-button-joy-buttonT::before { border: none; background: hsl(220, 72%, 39%); box-shadow: inset -2px -7px 3px 1px hsl(220, 70%, 43%), inset 0px 0px 1px 9px hsl(220, 75%, 34%), 0px -1px 0px 1px hsl(220, 72%, 50%), 0px 1px 0px 2px hsl(220, 72%, 28%); } #jt-touch-button { z-index: 7 } #jt-touch-buttonT { z-index: 6 } #jt-touch-speed.jt-center { width: 84px; left: 0; right: 0; margin: 0 auto; } #jt-touch-speed.jt-center.jt-poweroff #jt-touch-pause { margin-left: 21px } #jt-touch-pause, #jt-touch-fast { float: left; width: 42px; height: 42px; border-color: hsl(0, 0%, 70%); } #jt-touch-pause::after, #jt-touch-fast::before, #jt-touch-fast::after { content: ""; display: inline-block; border: 0 solid transparent; box-sizing: border-box; } #jt-touch-pause::after { margin-top: 14px; width: 13px; height: 14px; border-width: 0; border-left-width: 4px; border-left-color: inherit; border-right-width: 4px; border-right-color: inherit; } #jt-touch-fast::before, #jt-touch-fast::after { margin-top: 14px; width: 11px; height: 14px; border-width: 7px; border-left-width: 11px; border-left-color: inherit; border-right-width: 0; } #jt-touch-speed.jt-paused #jt-touch-pause::after, #jt-touch-speed.jt-poweroff #jt-touch-pause::after { margin: 12px 0 0 3px; width: 15px; height: 18x; border-width: 9px; border-left-width: 15px; border-right-width: 0; } #jt-touch-speed.jt-paused #jt-touch-fast::after { width: 7px; border-width: 0; border-left-width: 3px; } #jt-touch-speed.jt-poweroff #jt-touch-fast { display: none; } .jt-console-panel { width:'+jt.ConsolePanel.DEFAULT_WIDTH+"px; height:"+jt.ConsolePanel.DEFAULT_HEIGHT+'px; background: black url("'+jt.Images.urls.panel+'") no-repeat; background-size: 460px 134px; box-shadow: '+jt.ConsolePanel.sameBoxShadowAsScreen()+'; outline: none; } html.jt-full-screen .jt-console-panel { box-shadow: none; } .jt-console-panel-icon { position: absolute; background: url("'+jt.Images.urls.iconSprites+'") center no-repeat; background-size: 264px 82px; } .jt-console-panel-switch { position: absolute; bottom: 107px; width: 50px; height: 26px; opacity: 0; cursor: pointer; } .jt-console-panel-switch:after { content: ""; position: absolute; left: 11px; bottom: 5px; width: 27px; height: 16px; background: url("'+jt.Images.urls.panelSprites+'") center no-repeat; background-size: 256px 93px; } .jt-console-panel-lever { position: absolute; bottom: 30px; width: 44px; height: 72px; cursor: pointer; } .jt-console-panel-lever:after { content: ""; position: absolute; left: 12px; bottom: 8px; width: 20px; height: 46px; background: url("'+jt.Images.urls.panelSprites+'") center no-repeat; background-size: 256px 93px; } .jt-console-panel-power { left: 19px; } .jt-console-panel-power:after { background-position: 0px 0px; } .jt-console-panel-color { left: 84px; } .jt-console-panel-color:after { background-position: -21px 0px; } .jt-console-panel-select { left: 340px; } .jt-console-panel-select:after { background-position: 0px -47px; } .jt-console-panel-reset { left: 403px; } .jt-console-panel-reset:after { background-position: -21px -47px; } .jt-console-panel-p0-diff { left: 152px; } .jt-console-panel-p0-diff:after { background-position: -229px -17px; } .jt-console-panel-p1-diff { left: 265px; } .jt-console-panel-p1-diff:after { background-position: -229px 0px; } .jt-console-panel-cart-image { position: absolute; left: 140px; bottom: 9px; width: 186px; height: 82px; background: url("'+jt.Images.urls.panelSprites+'") center no-repeat; background-size: 256px 93px; background-position: -42px 0px; } .jt-console-panel-cart-load { position: absolute; left: 141px; bottom: 36px; width: 184px; height: 55px; cursor: pointer; } .jt-console-panel-cart-file { left: 170px; bottom: 3px; width: 31px; height: 30px; background-position: -132px -6px; cursor: pointer; } .jt-console-panel-cart-url { left: 266px; bottom: 3px; width: 31px; height: 30px; background-position: -161px -6px; cursor: pointer; } .jt-console-panel-cart-label { position: absolute; top: 51px; left: 156px; width: 148px; height: 25px; padding: 0px 2px; margin: 0px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-style: normal; font-variant: normal; font-weight: bold; font-stretch: normal; font-size: 14px; line-height: 25px; font-family: sans-serif; text-align: center; color: black; background: black; border: 1px solid transparent; opacity: 1; cursor: pointer; } .jt-console-panel-power-labels { left: 31px; bottom: 9px; width: 88px; height: 15px; background-position: -135px -37px; } .jt-console-panel-reset-labels { right: 16px; bottom: 9px; width: 96px; height: 15px; background-position: -135px -55px; } .jt-console-panel-p0-diff-label { left: 128px; top: 8px; width: 29px; height: 15px; background-position: -233px -37px; } .jt-console-panel-p1-diff-label { left: 313px; top: 8px; width: 28px; height: 15px; background-position: -233px -55px; } .jt-hide-labels .jt-console-panel-p0-diff-label, .jt-hide-labels .jt-console-panel-p1-diff-label, .jt-hide-labels .jt-console-panel-power-labels, .jt-hide-labels .jt-console-panel-reset-labels, .jt-hide-labels .jt-console-panel-cart-file, .jt-hide-labels .jt-console-panel-cart-url { visibility: hidden; } @media only screen and (orientation: landscape) { /* Landscape */ #jt-touch-left { left: calc(-6px - '+this.TOUCH_CONTROLS_LEFT_WIDTH+"px); bottom: 50%; transform: translateY(50%); } html.jt-full-screen.jt-touch-active.jt-dir-big #jt-touch-left { left: calc(-6px - "+this.TOUCH_CONTROLS_LEFT_WIDTH_BIG+"px); transform: translateY(50%) scale(1.2); transform-origin: left center; } #jt-touch-right { right: calc(5px - "+this.TOUCH_CONTROLS_RIGHT_WIDTH+"px); bottom: 50%; transform: translateY(50%); } #jt-touch-speed { position: absolute; left: -103px; top: 10px; } html.jt-full-screen.jt-touch-active.jt-dir-big #jt-touch-speed { left: -118px; } /* Adjust centered elements leaving space to the touch controls on both sides */ html.jt-full-screen.jt-touch-active #jt-screen-fs-center { left: "+this.TOUCH_CONTROLS_LEFT_WIDTH+"px; right: "+this.TOUCH_CONTROLS_RIGHT_WIDTH+"px; } html.jt-full-screen.jt-touch-active.jt-dir-big #jt-screen-fs-center { left: "+this.TOUCH_CONTROLS_LEFT_WIDTH_BIG+"px; } } @media only screen and (orientation: portrait) { /* Portrait */ #jt-touch-left { left: 2px; bottom: 200px; } html.jt-full-screen.jt-touch-active.jt-dir-big #jt-touch-left { transform: scale(1.2); transform-origin: left center; } #jt-touch-right { right: 5px; bottom: 144px; width: 112px; height: 112px; } #jt-touch-speed { position: absolute; left: 19px; bottom: "+(this.BAR_HEIGHT+12)+"px; } .jt-touch-button { position: absolute; } #jt-touch-button { bottom: 50%; right: 50%; } #jt-touch-buttonT { bottom: 100%; right: 0%; } } @media only screen and (orientation: portrait) and (max-device-height: 638px) { /* Medium Portrait. Like iPhone 5 */ #jt-touch-left { bottom: 156px; } #jt-touch-right { bottom: 100px; } } @media only screen and (orientation: portrait) and (max-device-height: 518px) { /* Short Portrait. Like iPhone 4 */ #jt-touch-left { bottom: 98px; } #jt-touch-right { bottom: 42px; } html.jt-console-panel-active #jt-touch-left { bottom: 106px; } html.jt-console-panel-active #jt-touch-right { bottom: 52px; } html.jt-full-screen.jt-console-panel-active #jt-touch-speed { display: none; } } " },jt.Monitor=function(a){"use strict";function b(a){var b=a<.5?.5:a>2.5?2.5:a;return Math.round(10*b)/10}function c(a){var b=a<.5?.5:a;return Math.round(10*b)/10}var d=this;this.connect=function(a){r=a,r.connectMonitor(this)},this.nextLine=function(a,b){var c=!1;return H=A&&Hv&&e()};this.setVideoStandard=function(a){G=a,s=a.totalWidth,t=a.totalHeight,u=t-Q,v=t+Q+R,J&&(y=G.defaultHeightPct,B=G.defaultOriginYPct),j(w,y),i(z,B)};var g=function(){var a=K;K=0,(a>=250&&a<=281||a>=300&&a<=325)&&++F>=5&&h(a)},h=function(a){E=a<290?jt.VideoStandard.NTSC:jt.VideoStandard.PAL;var b=L,c=a-E.totalHeight;(c=c>2?(c>6?6:c)-2:0)!=b&&(L=c,d.setVideoStandard(E))};this.videoSignalOff=function(){H=0,a.videoSignalOff()};var i=function(a,b){z=a,z<0?z=0:z>s-w&&(z=s-w),B=b,B<0?B=0:B/100*t>t-x&&(B=(t-x)/t*100),(A=B/100*t+L/2|0)+x>t&&(A=t-x)},j=function(a,b){w=a,w<10?w=10:w>s&&(w=s),y=b,y<10?y=10:y>100&&(y=100),x=y/100*(t+L)|0,x>t&&(x=t),n.width=w,n.height=x,i(z,B),k()},k=function(){a&&a.displayMetrics(w,x)},l=function(){J=!0,z=P,B=G.defaultOriginYPct,j(N,G.defaultHeightPct)},m=function(){n=document.createElement("canvas"),n.width=N,n.height=O,o=n.getContext("2d",{alpha:!1,antialias:!1}),o.globalCompositeOperation="copy",o.globalAlpha=1,p=o.createImageData(jt.VideoStandard.PAL.totalWidth,jt.VideoStandard.PAL.totalHeight),q=new Uint32Array(p.data.buffer)};this.currentLine=function(){return H},this.refresh=function(){o.putImageData(p,-z,0,z,0,w,x),a.refresh(n,w,x)},this.videoStandardDetectionStart=function(){E=null,F=0,K=0},this.getVideoStandardDetected=function(){return E},this.toggleShowInfo=function(){(M=!M)||a.showOSD(null,!0)},this.signalOff=function(){a.videoSignalOff()},this.showOSD=function(b,c,d){a.showOSD(b,c,d)},this.setDefaults=function(){l(),a.crtModeSetDefault(),a.crtFilterSetDefault(),a.requestReadjust(!0)},this.setDebugMode=function(b){a.setDebugMode(b)},this.crtModeToggle=function(){a.crtModeToggle()},this.crtFilterToggle=function(){a.crtFilterToggle()},this.fullscreenToggle=function(){a.displayToggleFullscreen()},this.displayAspectDecrease=function(){this.displayScale(b(C-S),D),this.showOSD("Display Aspect: "+C.toFixed(2)+"x",!0)},this.displayAspectIncrease=function(){this.displayScale(b(C+S),D),this.showOSD("Display Aspect: "+C.toFixed(2)+"x",!0)},this.displayScaleDecrease=function(){this.displayScale(C,c(D-S)),this.showOSD("Display Size: "+D.toFixed(2)+"x",!0)},this.displayScaleIncrease=function(){this.displayScale(C,c(D+S)),this.showOSD("Display Size: "+D.toFixed(2)+"x",!0)},this.viewportOriginDecrease=function(){J=!1,i(z,B+T),this.showOSD("Viewport Origin: "+A,!0)},this.viewportOriginIncrease=function(){J=!1,i(z,B-T),this.showOSD("Viewport Origin: "+A,!0)},this.viewportSizeDecrease=function(){l(),this.showOSD("Viewport Size: Standard",!0)},this.viewportSizeIncrease=function(){J=!1,j(s,100),this.showOSD("Viewport Size: Full Signal",!0)},this.displayScale=function(b,c){C=b,D=c,a.displayScale(C,D)},this.controlStateChanged=function(b,c){a.controlStateChanged(b,c)},this.controlsStatesRedefined=function(){a.controlsStatesRedefined()},this.consolePowerAndUserPauseStateUpdate=function(b,c){a.consolePowerAndUserPauseStateUpdate(b,c)},this.cartridgeInserted=function(b){a.cartridgeInserted(b)};var n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G=jt.VideoStandard.NTSC,H=0,I=0,J=!0,K=0,L=0,M=!1,N=160,O=213,P=68,Q=16,R=5,S=.1,T=.4;!function(){m(),l(),d.setVideoStandard(G)}()},jt.ConsolePanel=function(a,b){"use strict";function c(){k(),l(),q()}function d(b){jt.Util.blockEvent(b),J||(s.hapticFeedbackOnTouch(b),a.closeAllOverlays(),b.target.jtPressed=!0,s.processControlState(b.target.jtControl,!0))}function e(a){jt.Util.blockEvent(a),a.target.jtPressed=!1,J||(s.hapticFeedbackOnTouch(a),s.processControlState(a.target.jtControl,!1))}function f(a){a.target.jtPressed&&e(a)}function g(b,c,d){d||s.hapticFeedbackOnTouch(b),c||(a.closeAllOverlays(),t.controlActivated(b.target.jtControl))}this.connectPeripherals=function(a,c,d){s=c,t=d,a.registerForDnD(b)},this.connect=function(a){u=a},this.setActive=function(a){H=a,H&&(w||c(),i(),j()),document.documentElement.classList.toggle("jt-console-panel-active",H)},this.setLogoMessageActive=function(a){J=a},this.updateScale=function(a,c,d){var e=0,f=0;if(H){a=c?d?.85*a:a-36:.85*a;var g=Math.min(1,a/jt.ConsolePanel.DEFAULT_WIDTH);b.style.transform=g<1?"translateX(-50%) scale("+g.toFixed(8)+")":"translateX(-50%)",e=Math.ceil(g*jt.ConsolePanel.DEFAULT_HEIGHT),f=Math.ceil(g*jt.ConsolePanel.DEFAULT_WIDTH)}return s&&s.getTouchControls().updateConsolePanelSize(a,f,e,c,d),e};var h=function(){o(w,!I[r.POWER]),o(x,I[r.BLACK_WHITE]),o(y,I[r.SELECT]),o(z,I[r.RESET]),o(A,I[r.DIFFICULTY0]),o(B,I[r.DIFFICULTY1]),i()},i=function(){if(o(C,v),o(G,v),G.innerHTML=v&&v.rom.info.l||L,v&&v.rom.info.lc){var a=v.rom.info.lc.trim().split(/\s+/);G.style.color=a[0]||M,G.style.background=a[1]||N,G.style.borderColor=a[2]||O}else G.style.color=M,G.style.background=N,G.style.borderColor=O},j=function(){u.controlsStateReport(I),h()},k=function(){b.innerHTML=jt.ScreenGUI.htmlConsolePanel,delete jt.ScreenGUI.htmlConsolePanel,jt.Util.isMobileDevice()&&b.classList.add("jt-hide-labels")},l=function(){w=document.getElementById("jt-console-panel-power"),m(w,r.POWER,!0),x=document.getElementById("jt-console-panel-color"),m(x,r.BLACK_WHITE,!0),y=document.getElementById("jt-console-panel-select"),m(y,r.SELECT,!0),z=document.getElementById("jt-console-panel-reset"),m(z,r.RESET,!0),A=document.getElementById("jt-console-panel-p0-diff"),m(A,r.DIFFICULTY0,!0),B=document.getElementById("jt-console-panel-p1-diff"),m(B,r.DIFFICULTY1,!0),C=document.getElementById("jt-console-panel-cart-image"),D=document.getElementById("jt-console-panel-cart-load"),n(D,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT),E=document.getElementById("jt-console-panel-cart-file"),F=document.getElementById("jt-console-panel-cart-url"),Javatari.CARTRIDGE_CHANGE_DISABLED?(p(E),p(F)):(n(E,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT),n(F,jt.PeripheralControls.AUTO_LOAD_URL))},m=function(a,b,c){a.jtControl=b,c?(a.jtPressed=!1,jt.Util.addEventsListener(a,"mousedown touchstart",d),jt.Util.addEventsListener(a,"mouseup touchend touchcancel",e),jt.Util.addEventsListener(a,"mouseleave",f)):jt.Util.onTapOrMouseDown(a,d)},n=function(a,b){a.jtControl=b,a.jtNeedsUIG=!0,jt.Util.onTapOrMouseDownWithBlockUIG(a,g)},o=function(a,b){a.style.opacity=b?1:0},p=function(a,b){a.style.display="none"},q=function(){var a=(Javatari.CARTRIDGE_LABEL_COLORS||"").trim().split(/\s+/);a[0]&&(M=a[0]),a[1]&&(N=a[1]),a[2]&&(O=a[2]),G=document.getElementById("jt-console-panel-cart-label"),n(G,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT)},r=jt.ConsoleControls;this.controlStateChanged=function(a,b){H&&K[a]&&j()},this.controlsStatesRedefined=function(){H&&j()},this.cartridgeInserted=function(a){v=a,H&&i()};var s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H=!1,I={},J=!1,K={};K[r.POWER]=1,K[r.BLACK_WHITE]=1,K[r.SELECT]=1,K[r.RESET]=1,K[r.DIFFICULTY0]=1,K[r.DIFFICULTY1]=1;var L="JAVATARI",M="#fa2525",N="#101010",O="transparent"},jt.ConsolePanel.DEFAULT_WIDTH=460,jt.ConsolePanel.DEFAULT_HEIGHT=134,jt.ConsolePanel.shouldStartActive=function(){return!Javatari.SCREEN_CONSOLE_PANEL_DISABLED&&(-1===Javatari.CONSOLE_PANEL_ELEMENT_ID||document.getElementById(Javatari.CONSOLE_PANEL_ELEMENT_ID))},jt.ConsolePanel.sameBoxShadowAsScreen=function(){var a=document.getElementById(Javatari.SCREEN_ELEMENT_ID);return a?window.getComputedStyle(a,null).getPropertyValue("box-shadow"):"none"},jt.CanvasDisplay=function(room,mainElement){"use strict";function init(){jt.Util.insertCSS(jt.ScreenGUI.css()),delete jt.ScreenGUI.css,setupMain(),setupBar(),setupFullscreen(),consolePanel=new jt.ConsolePanel(self,consolePanelElement), @@ -109,7 +109,7 @@ return'
=0;d-=1)b[d]=0;if(0!==j.length)for(var e=j.length-1;e>=0;e-=1){for(var f=n[e],g=j[e].retrieveSamples(c*f+o[e]|0,r),h=g.buffer,i=g.bufferSize,k=g.start+o[e],l=0;l=i&&(k-=i);o[e]=k-(0|k)}}this.connect=function(a){a.connectMonitor(this)},this.connectPeripherals=function(a){g=a},this.connectAudioSignal=function(a){j.indexOf(a)>=0||(jt.Util.arrayAdd(j,a),e())},this.disconnectAudioSignal=function(a){j.indexOf(a)<0||(jt.Util.arrayRemoveAllElement(j,a),e())},this.powerOn=function(){h(),m&&(d(),this.unpause())},this.powerOff=function(){this.pause(),k&&k.close(),k=m=void 0},this.mute=function(){r=!0},this.unMute=function(){r=!1},this.pause=function(){m&&m.disconnect()},this.unpause=function(){m&&m.connect(k.destination)},this.toggleBufferBaseSize=function(){if(!k)return g.showOSD("Audio is DISABLED",!0,!0);q=(q+2)%8-1,this.pause(),i(),this.unpause(),g.showOSD("Audio Buffer size: "+(-1===q?"Auto ("+l+")":0===q?"Browser ("+l+")":l),!0),p.audioBufferBase=q,Javatari.userPreferences.setDirty()},this.getControlReport=function(a){return{label:-2===q?"OFF":-1===q?"Auto":0===q?"Browser":l,active:q>0}};var g,h=function(){if(-2===q||0===Javatari.AUDIO_MONITOR_BUFFER_SIZE)return void jt.Util.warning("Audio disabled in configuration");try{var a=window.AudioContext||window.webkitAudioContext||window.WebkitAudioContext;if(!a)throw new Error("WebAudio API not supported by the browser");k=new a,jt.Util.log("Speaker AudioContext created. Sample rate: "+k.sampleRate+(k.state?", "+k.state:"")),i()}catch(a){jt.Util.error("Could not create AudioContext. Audio DISABLED!\n"+a)}},i=function(){try{ var a=-1===q?b():0===q?c():q,d=Javatari.AUDIO_MONITOR_BUFFER_SIZE>0?Javatari.AUDIO_MONITOR_BUFFER_SIZE:a>0?jt.Util.exp2(0|jt.Util.log2((k.sampleRate+14e3)/22050))*jt.Util.exp2(a-1)*256:0;m=k.createScriptProcessor(d,1,1),m.onaudioprocess=f,l=m.bufferSize,e(),jt.Util.log("Audio Processor buffer size: "+m.bufferSize)}catch(a){jt.Util.error("Could not create ScriptProcessorNode. Audio DISABLED!\n"+a)}},j=[];this.signals=j;var k,l,m,n=[],o=[],p=Javatari.userPreferences.current,q=-3===Javatari.AUDIO_MONITOR_BUFFER_BASE?p.audioBufferBase:Javatari.AUDIO_MONITOR_BUFFER_BASE,r=!1},jt.LocalStorageSaveStateMedia=function(a){"use strict";function b(){return 2===a.netPlayMode}this.connect=function(a){a.connectMedia(this)},this.connectPeripherals=function(a){c=a},this.isSlotUsed=function(a){return void 0!==localStorage["javatarisave"+a]},this.saveState=function(a,b){var c=f(b);return c&&d("save"+a,c)},this.loadState=function(a){var b=e("save"+a);return g(b)},this.saveStateFile=function(a,d){if(!b()){var e=f(d);e&&c.startDownloadBinary((a||"Javatari SaveState")+j,e,"System State file")}},this.loadStateFile=function(a){if(!b())return g(a)},this.saveResource=function(a,b){try{var c=b&&JSON.stringify(b);return d("res"+a,c)}catch(a){}},this.loadResource=function(a){try{var b=e("res"+a);return b&&JSON.parse(b)}catch(a){}},this.externalStateChange=function(){1===a.netPlayMode&&a.netController.processExternalStateChange()};var c,d=function(a,c){if(b())return!0;try{return localStorage["javatari"+a]=c,!0}catch(a){return jt.Util.error(a),!1}},e=function(a){if(!b())try{return localStorage["javatari"+a]}catch(a){jt.Util.warning(a)}},f=function(a){try{return h+JSON.stringify(a)}catch(a){jt.Util.error(a)}},g=function(a){try{var b;if((b="string"==typeof a?a.substr(0,h.length):jt.Util.int8BitArrayToByteString(a,0,h.length))!==h&&b!==i)return;var c;return(c="string"==typeof a?a.slice(h.length):jt.Util.int8BitArrayToByteString(a,h.length))&&JSON.parse(c)}catch(a){jt.Util.error(a)}},h=String.fromCharCode(0,0)+"javataristate!",i="javatarijsstate!",j=".jst"},jt.PeripheralControls={SCREEN_ASPECT_PLUS:1,SCREEN_ASPECT_MINUS:2,SCREEN_SCALE_PLUS:3,SCREEN_SCALE_MINUS:4,VIEWPORT_ORIGIN_PLUS:5,VIEWPORT_ORIGIN_MINUS:6,VIEWPORT_SIZE_PLUS:7,VIEWPORT_SIZE_MINUS:8,SCREEN_FULLSCREEN:10,SCREEN_CRT_FILTER:11,SCREEN_CRT_MODE:12,SCREEN_TOGGLE_MENU:13,SCREEN_OPEN_HELP:14,SCREEN_OPEN_ABOUT:15,SCREEN_OPEN_SETTINGS:16,SCREEN_OPEN_QUICK_OPTIONS:17,SCREEN_DEFAULTS:18,SCREEN_CONSOLE_PANEL_TOGGLE:19,SPEAKER_BUFFER_TOGGLE:20,CONSOLE_POWER_TOGGLE:102,CONSOLE_POWER_FRY:103,CONSOLE_LOAD_STATE_FILE:104,CONSOLE_SAVE_STATE_FILE:105,CONSOLE_LOAD_STATE_MENU:106,CONSOLE_SAVE_STATE_MENU:107,P1_CONTROLS_TOGGLE:201,JOYSTICKS_TOGGLE_MODE:202,PADDLES_TOGGLE_MODE:203,TOUCH_TOGGLE_MODE:204,TOUCH_TOGGLE_DIR_BIG:205,TURBO_FIRE_TOGGLE:206,HAPTIC_FEEDBACK_TOGGLE_MODE:207,CAPTURE_SCREEN:304,CARTRIDGE_LOAD_RECENT:40,CARTRIDGE_LOAD_FILE:41,CARTRIDGE_LOAD_URL:42,CARTRIDGE_REMOVE:43,CARTRIDGE_LOAD_DATA_FILE:44,CARTRIDGE_SAVE_DATA_FILE:45,CARTRIDGE_CHOOSE_FORMAT:46,AUTO_LOAD_FILE:47,AUTO_LOAD_URL:48,SCREEN_OPEN_NETPLAY:500},jt.DOMPeripheralControls=function(a){"use strict";var b=this;this.connect=function(a){i=a},this.connectPeripherals=function(a,b,c,i){d=a,f=b,e=a.getMonitor(),g=c,h=i},this.getControlReport=function(a){switch(a){case k.PADDLES_TOGGLE_MODE:case k.P1_CONTROLS_TOGGLE:case k.TURBO_FIRE_TOGGLE:case k.TOUCH_TOGGLE_DIR_BIG:case k.HAPTIC_FEEDBACK_TOGGLE_MODE:return g.getControlReport(a);case k.SCREEN_CRT_FILTER:return d.getControlReport(a);case k.SPEAKER_BUFFER_TOGGLE:return f.getControlReport(a)}return{label:"Unknown",active:!1}},this.processKey=function(a,c){if(!c)return!1;var d=l[a]||l[a&m];return!!d&&(b.controlActivated(d,!!(a&n),!1),!0)},this.controlActivated=function(b,j,l){if(2===a.netPlayMode&&N.has(b))return a.showOSD("Function not available in NetPlay Client mode",!0,!0);switch(b){case k.CONSOLE_POWER_TOGGLE:g.processControlState(jt.ConsoleControls.POWER,!0);break;case k.CONSOLE_POWER_FRY:g.processControlState(jt.ConsoleControls.POWER_FRY,!0);break;case k.CONSOLE_LOAD_STATE_FILE:h.openFileChooserDialog(o.STATE,!1,!1,!1);break;case k.CONSOLE_SAVE_STATE_FILE:g.processControlState(jt.ConsoleControls.SAVE_STATE_FILE,!0);break;case k.CONSOLE_LOAD_STATE_MENU:d.openSaveStateDialog(!1);break;case k.CONSOLE_SAVE_STATE_MENU:d.openSaveStateDialog(!0);break;case k.CARTRIDGE_LOAD_RECENT:c()||d.openCartridgeChooserDialog(!1,j,l);break;case k.CARTRIDGE_LOAD_FILE:c()||h.openFileChooserDialog(o.ROM,j,l,!1);break;case k.CARTRIDGE_LOAD_URL:c()||h.openURLChooserDialog(o.ROM,j,l);break;case k.CARTRIDGE_REMOVE:c()||i.insert(null,!1);break;case k.CARTRIDGE_LOAD_DATA_FILE:case k.CARTRIDGE_SAVE_DATA_FILE:break;case k.CARTRIDGE_CHOOSE_FORMAT:c()||d.openCartridgeFormatDialog(j);break;case k.AUTO_LOAD_FILE:c()||h.openFileChooserDialog(o.AUTO,j,l,!1);break;case k.AUTO_LOAD_URL:c()||h.openURLChooserDialog(o.AUTO,j,l,!1);break;case k.SCREEN_CRT_MODE:e.crtModeToggle();break;case k.SCREEN_CRT_FILTER:e.crtFilterToggle();break;case k.SCREEN_FULLSCREEN:e.fullscreenToggle();break;case k.SCREEN_DEFAULTS:g.processControlState(jt.ConsoleControls.DEFAULTS,!0),e.setDefaults();break;case k.SCREEN_TOGGLE_MENU:d.toggleMenuByKey();break;case k.SCREEN_OPEN_HELP:d.openHelp();break;case k.SCREEN_OPEN_ABOUT:d.openAbout();break;case k.SCREEN_OPEN_SETTINGS:if(j)return this.controlActivated(k.SCREEN_DEFAULTS);d.openSettings();break;case k.SCREEN_OPEN_QUICK_OPTIONS:d.openQuickOptionsDialog();break;case k.SCREEN_CONSOLE_PANEL_TOGGLE:d.toggleConsolePanel();break;case k.SCREEN_OPEN_NETPLAY:d.openNetPlayDialog();break;case k.P1_CONTROLS_TOGGLE:g.toggleP1ControlsMode();break;case k.JOYSTICKS_TOGGLE_MODE:g.toggleGamepadMode();break;case k.PADDLES_TOGGLE_MODE:g.togglePaddleMode();break;case k.TOUCH_TOGGLE_MODE:g.toggleTouchControlsMode();break;case k.TOUCH_TOGGLE_DIR_BIG:g.toggleTouchDirBig();break;case k.TURBO_FIRE_TOGGLE:g.toggleTurboFireSpeed();break;case k.HAPTIC_FEEDBACK_TOGGLE_MODE:g.toggleHapticFeedback();break;case k.CAPTURE_SCREEN:d.saveScreenCapture();break;case k.SPEAKER_BUFFER_TOGGLE:f.toggleBufferBaseSize();break;case k.VIEWPORT_ORIGIN_MINUS:e.viewportOriginDecrease();break;case k.VIEWPORT_ORIGIN_PLUS:e.viewportOriginIncrease()}if(!M)switch(b){case k.SCREEN_ASPECT_MINUS:e.displayAspectDecrease();break;case k.SCREEN_ASPECT_PLUS:e.displayAspectIncrease();break;case k.SCREEN_SCALE_MINUS:e.displayScaleDecrease();break;case k.SCREEN_SCALE_PLUS:e.displayScaleIncrease();break;case k.VIEWPORT_SIZE_MINUS:e.viewportSizeDecrease();break;case k.VIEWPORT_SIZE_PLUS:e.viewportSizeIncrease()}};var c=function(){return Javatari.CARTRIDGE_CHANGE_DISABLED?(e.showOSD("Cartridge change is disabled!",!0,!0),!0):2===a.netPlayMode&&(e.showOSD("Cartridge change is disabled in NetPlay Client mode!",!0,!0),!0)};this.mediaChangeDisabledWarning=c;var d,e,f,g,h,i,j=function(){var a=jt.DOMKeys;l[x]=k.CARTRIDGE_LOAD_RECENT,l[x|a.ALT]=k.CARTRIDGE_LOAD_RECENT,l[y]=k.AUTO_LOAD_URL,l[y|a.ALT]=k.AUTO_LOAD_URL,l[z]=k.CARTRIDGE_REMOVE,l[z|a.ALT]=k.CARTRIDGE_REMOVE,l[L]=k.CONSOLE_SAVE_STATE_FILE,l[L|a.ALT]=k.CONSOLE_SAVE_STATE_FILE,l[A|a.ALT]=k.P1_CONTROLS_TOGGLE,l[C|a.ALT]=k.PADDLES_TOGGLE_MODE,l[B|a.ALT]=k.JOYSTICKS_TOGGLE_MODE,l[D|a.ALT]=k.TOUCH_TOGGLE_MODE,l[E|a.ALT]=k.TURBO_FIRE_TOGGLE,l[G|a.ALT]=k.SCREEN_CRT_FILTER,l[F|a.ALT]=k.SCREEN_CRT_MODE,l[H|a.ALT]=k.SCREEN_OPEN_SETTINGS,l[I|a.ALT]=k.SCREEN_OPEN_QUICK_OPTIONS,l[J|a.ALT]=k.SCREEN_CONSOLE_PANEL_TOGGLE,l[K|a.ALT]=k.SCREEN_FULLSCREEN,l[q|a.CONTROL|a.ALT]=k.SCREEN_SCALE_MINUS,l[s|a.CONTROL|a.ALT]=k.SCREEN_SCALE_PLUS,l[p|a.CONTROL|a.ALT]=k.SCREEN_ASPECT_MINUS,l[r|a.CONTROL|a.ALT]=k.SCREEN_ASPECT_PLUS,l[q|a.SHIFT|a.CONTROL]=k.VIEWPORT_ORIGIN_MINUS,l[s|a.SHIFT|a.CONTROL]=k.VIEWPORT_ORIGIN_PLUS,l[p|a.SHIFT|a.CONTROL]=k.VIEWPORT_SIZE_MINUS,l[r|a.SHIFT|a.CONTROL]=k.VIEWPORT_SIZE_PLUS,l[t]=k.SCREEN_TOGGLE_MENU,l[u]=k.SCREEN_DEFAULTS, l[u|a.ALT]=k.SCREEN_DEFAULTS,l[v|a.ALT]=k.CAPTURE_SCREEN,l[w|a.ALT]=k.SPEAKER_BUFFER_TOGGLE},k=jt.PeripheralControls,l={},m=~jt.DOMKeys.SHIFT,n=jt.DOMKeys.SHIFT,o=jt.FileLoader.OPEN_TYPE,p=jt.DOMKeys.VK_LEFT.c,q=jt.DOMKeys.VK_UP.c,r=jt.DOMKeys.VK_RIGHT.c,s=jt.DOMKeys.VK_DOWN.c,t=jt.DOMKeys.VK_CONTEXT.c,u=jt.DOMKeys.VK_BACKSPACE.c,v=jt.DOMKeys.VK_G.c,w=jt.DOMKeys.VK_A.c,x=jt.DOMKeys.VK_F5.c,y=jt.DOMKeys.VK_F6.c,z=jt.DOMKeys.VK_F7.c,A=jt.DOMKeys.VK_K.c,B=jt.DOMKeys.VK_J.c,C=jt.DOMKeys.VK_L.c,D=jt.DOMKeys.VK_N.c,E=jt.DOMKeys.VK_H.c,F=jt.DOMKeys.VK_R.c,G=jt.DOMKeys.VK_T.c,H=jt.DOMKeys.VK_Y.c,I=jt.DOMKeys.VK_U.c,J=jt.DOMKeys.VK_S.c,K=jt.DOMKeys.VK_ENTER.c,L=(jt.DOMKeys.VK_F1.c,jt.DOMKeys.VK_F8.c),M=Javatari.SCREEN_RESIZE_DISABLED,N=new Set([k.CONSOLE_POWER_FRY,k.CONSOLE_LOAD_STATE_FILE,k.CONSOLE_SAVE_STATE_FILE,k.CONSOLE_LOAD_STATE_MENU,k.CONSOLE_SAVE_STATE_MENU,k.CARTRIDGE_LOAD_RECENT,k.CARTRIDGE_LOAD_FILE,k.CARTRIDGE_LOAD_URL,k.CARTRIDGE_REMOVE,k.CARTRIDGE_LOAD_DATA_FILE,k.CARTRIDGE_SAVE_DATA_FILE,k.AUTO_LOAD_FILE,k.AUTO_LOAD_URL]);!function(){j()}()},jt.NetServer=function(a){"use strict";function b(){void 0===v&&(v=setInterval(p,3e4));var a={sessionControl:"createSession",sessionType:"javatari",wsOnly:D,queryVariables:["RTC_CONFIG","RTC_DATA_CHANNEL_CONFIG"]};u&&(a.sessionID=u),s.send(JSON.stringify(a))}function c(){r.stopSession(!0,v?"NetPlay Session stopped: Connection lost":"NetPlay: Connection error")}function d(a){var b=JSON.parse(a.data);if(b.javatariUpdate)return o(b.javatariUpdate);if(b.sessionControl)switch(b.sessionControl){case"sessionCreated":return void e(b);case"clientJoined":return void f(b);case"clientLeft":return void g(b);case"createError":return void r.stopSession(!0,"NetPlay: "+b.errorMessage)}else b.clientSDP&&h(b)}function e(b){try{w=JSON.parse(b.queriedVariables.RTC_CONFIG||"{}")}catch(a){}try{x=JSON.parse(b.queriedVariables.RTC_DATA_CHANNEL_CONFIG||"{}")}catch(a){}t=b.sessionID,z.netClearControlsToSend(),a.enterNetServerMode(r),a.showOSD('NetPlay session "'+b.sessionID+'" started',!0),jt.Util.log('NetPlay session "'+b.sessionID+'" started')}function f(b){var c={nick:b.clientNick,justJoined:!0,wsOnly:D||!!b.wsOnly};if(C[c.nick]=c,a.showOSD('NetPlay client "'+c.nick+'" joined',!0),jt.Util.log('NetPlay client "'+c.nick+'" joined'),!c.wsOnly){var d=new RTCPeerConnection(w);c.rtcConnection=d,d.onicecandidate=function(a){a.candidate||(jt.Util.log("Server SDP for client "+c.nick+":",d.localDescription),s.send(JSON.stringify({toClientNick:c.nick,serverSDP:d.localDescription})))};var e=d.createDataChannel("dataChannel",x);c.dataChannel=e,e.onopen=function(a){i(c,a)},e.onclose=function(a){j(c,a)},e.onmessage=function(a){k(c,a)},d.createOffer().then(function(a){return d.setLocalDescription(a)}).catch(function(a){l(c,a)})}}function g(a){var b=C[a.clientNick];b&&n(b,!0,!1,'NetPlay client "'+b.nick+'" left')}function h(a){var b=C[a.fromClientNick];b&&(jt.Util.log("Client SDP from client "+b.nick+":",a.clientSDP),b.rtcConnection.setRemoteDescription(new RTCSessionDescription(a.clientSDP)).catch(l))}function i(a,b){jt.Util.log("Client "+a.nick+" dataChannel open"),a.dataChannelActive=!0}function j(a,b){jt.Util.error("NetPlay Client "+a.nick+" dataChannel closed"),n(a,!0,!0,'NetPlay client "'+a.nick+'" dropped: P2P connection lost')}function k(a,b){o(JSON.parse(b.data))}function l(a,b){jt.Util.error("NetPlay Client "+a.nick+" RTC error:",b),n(a,!0,!0,'NetPlay client "'+a.nick+'" dropped: P2P connection error')}function m(){for(var a in C)n(C[a],!1)}function n(b,c,d,e){c&&(a.showOSD(e||'NetPlay client "'+b.nick+'" left',!0,d),(d?jt.Util.error:jt.Util.log)(e||'NetPlay client "'+b.nick+'" left')),b.dataChannel&&(b.dataChannel.onopen=b.dataChannel.onclose=b.dataChannel.onmessage=void 0,b.dataChannel.close()),b.rtcConnection&&(b.rtcConnection.onicecandidate=void 0,b.rtcConnection.close()),delete C[b.nick]}function o(a){a.c&&z.netServerProcessControlsChanges(a.c)}function p(){try{s.send('{ "sessionControl": "keep-alive" }')}catch(a){jt.Util.error("NetPlay error sending keep-alive"),r.stopSession(!0,"NetPlay Session stopped: connection error")}}function q(a,b){var c=b.length;if(c0&&setTimeout(jt.NetClient.sendKeepAlive,Javatari.SERVER_KEEPALIVE)})},jt.Room=function(a,b){"use strict";function c(a){var b=Javatari.AUTO_POWER_ON_DELAY;b>=0&&JavatariFullScreenSetup.shouldStartInFullScreen()&&(b+=1400),b-=Date.now()-i,b<1&&(b=1),setTimeout(a,b)}function d(){b&&(h.console.getCartridgeSocket().inserted()?h.console.userPowerOn():Javatari.CARTRIDGE_SHOW_RECENT&&!Javatari.CARTRIDGE_CHANGE_DISABLED&&h.screen.openCartridgeChooserDialog(!0))}function e(){h.mainVideoClock=new jt.Clock(h.mainVideoClockPulse)}function f(){h.peripheralControls=new jt.DOMPeripheralControls(h),h.consoleControls=new jt.DOMConsoleControls(h,h.peripheralControls),h.fileDownloader=new jt.FileDownloader,h.stateMedia=new jt.LocalStorageSaveStateMedia(h),h.recentROMs=new jt.RecentStoredROMs,h.fileLoader=new jt.FileLoader(h,h.recentROMs,h.peripheralControls),h.speaker=new jt.WebAudioSpeaker(a),h.screen=new jt.CanvasDisplay(h,a),h.fileDownloader.connectPeripherals(h.screen),h.screen.connectPeripherals(h.recentROMs,h.fileLoader,h.fileDownloader,h.consoleControls,h.peripheralControls,h.stateMedia),h.speaker.connectPeripherals(h.screen),h.consoleControls.connectPeripherals(h.screen),h.stateMedia.connectPeripherals(h.fileDownloader),h.peripheralControls.connectPeripherals(h.screen,h.speaker,h.consoleControls,h.fileLoader)}function g(){h.console=new jt.AtariConsole,h.mainVideoClock.connect(h.console.getVideoClockSocket()),h.stateMedia.connect(h.console.getSavestateSocket()),h.fileLoader.connect(h.console),h.screen.connect(h.console),h.speaker.connect(h.console.getAudioSocket()),h.consoleControls.connect(h.console.getConsoleControlsSocket()),h.peripheralControls.connect(h.console.getCartridgeSocket()),h.console.socketsConnected()}var h=this;this.powerOn=function(){h.screen.powerOn(),h.speaker.powerOn(),h.consoleControls.powerOn(),h.setLoading(!0),h.enterStandaloneMode(),i=Date.now()},this.powerOff=function(){h.console.powerOff(),h.consoleControls.powerOff(),h.speaker.powerOff(),h.screen.powerOff()},this.getNetServer=function(){return this.netServer||(this.netServer=new jt.NetServer(this)),this.netServer},this.getNetClient=function(){return this.netClient||(this.netClient=new jt.NetClient(this)),this.netClient},this.setLoading=function(a){this.isLoading!==a&&(this.isLoading=a,this.console.setLoading(this.isLoading),this.screen.setLoading(this.isLoading))},this.start=function(a){this.mainVideoClock.detectHostNativeFPSAndCallback(function(b){h.console.vSynchSetSupported(b>0),c(function(){h.setLoading(!1),h.screen.start(a||d)})})},this.showOSD=function(a,b,c){this.console.showOSD(a,b,c)},this.mainVideoClockPulse=function(){h.console.isSystemPaused()||(h.netController?h.netController.netVideoClockPulse():(h.console.getConsoleControlsSocket().controlsClockPulse(),h.console.videoClockPulse()))},this.enterStandaloneMode=function(){var a=this.netPlayMode;this.netPlayMode=0,this.netController=void 0,h.mainVideoClock.go(),this.netPlayStateBeforeClientMode&&(this.console.loadState(this.netPlayStateBeforeClientMode),this.consoleControls.setP1ControlsAndPaddleMode(this.netPlayControlsModeBeforeClientMode.p1,this.netPlayControlsModeBeforeClientMode.pd),this.netPlayStateBeforeClientMode=void 0),a!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(a)},this.enterNetServerMode=function(a){var b=this.netPlayMode;this.netPlayMode=1,this.netController=a,h.mainVideoClock.go(),b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.enterNetClientMode=function(a){var b=this.netPlayMode;this.netPlayMode=2,this.netController=a,h.mainVideoClock.pause(),this.netPlayStateBeforeClientMode=this.console.saveState(!0),this.netPlayControlsModeBeforeClientMode={p1:this.consoleControls.isP1ControlsMode(),pd:this.consoleControls.isPaddleMode()},b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.enterNetPendingMode=function(a){var b=this.netPlayMode;this.netPlayMode=a===this.netServer?-1:-2,this.netController=void 0,h.mainVideoClock.go(),b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.mainVideoClock=null,this.console=null,this.screen=null,this.speaker=null,this.consoleControls=null,this.fileDownloader=null,this.stateMedia=null,this.recentROMs=null,this.fileLoader=null,this.peripheralControls=null,this.netPlayMode=0,this.netController=void 0,this.netServer=void 0,this.netClient=void 0,this.netPlayStateBeforeClientMode=void 0,this.netPlayControlsModeBeforeClientMode=void 0,this.isLoading=!1;var i;this.runFramesAtTopSpeed=function(a){this.mainVideoClock.pause();for(var b=jt.Util.performanceNow(),c=0;c0&&setTimeout(jt.NetClient.sendKeepAlive,Javatari.SERVER_KEEPALIVE)})},jt.Room=function(a,b){"use strict";function c(a){var b=Javatari.AUTO_POWER_ON_DELAY;b>=0&&JavatariFullScreenSetup.shouldStartInFullScreen()&&(b+=1400),b-=Date.now()-i,b<1&&(b=1),setTimeout(a,b)}function d(){b&&(h.console.getCartridgeSocket().inserted()?h.console.userPowerOn():Javatari.CARTRIDGE_SHOW_RECENT&&!Javatari.CARTRIDGE_CHANGE_DISABLED&&h.screen.openCartridgeChooserDialog(!0))}function e(){h.mainVideoClock=new jt.Clock(h.mainVideoClockPulse)}function f(){h.peripheralControls=new jt.DOMPeripheralControls(h),h.consoleControls=new jt.DOMConsoleControls(h,h.peripheralControls),h.fileDownloader=new jt.FileDownloader,h.stateMedia=new jt.LocalStorageSaveStateMedia(h),h.recentROMs=new jt.RecentStoredROMs,h.fileLoader=new jt.FileLoader(h,h.recentROMs,h.peripheralControls),h.speaker=new jt.WebAudioSpeaker(a),h.screen=new jt.CanvasDisplay(h,a),h.fileDownloader.connectPeripherals(h.screen),h.screen.connectPeripherals(h.recentROMs,h.fileLoader,h.fileDownloader,h.consoleControls,h.peripheralControls,h.stateMedia),h.speaker.connectPeripherals(h.screen),h.consoleControls.connectPeripherals(h.screen),h.stateMedia.connectPeripherals(h.fileDownloader),h.peripheralControls.connectPeripherals(h.screen,h.speaker,h.consoleControls,h.fileLoader)}function g(){h.console=new jt.AtariConsole,h.mainVideoClock.connect(h.console.getVideoClockSocket()),h.stateMedia.connect(h.console.getSavestateSocket()),h.fileLoader.connect(h.console),h.screen.connect(h.console),h.speaker.connect(h.console.getAudioSocket()),h.consoleControls.connect(h.console.getConsoleControlsSocket()),h.peripheralControls.connect(h.console.getCartridgeSocket()),h.console.socketsConnected()}var h=this;this.powerOn=function(){h.screen.powerOn(),h.speaker.powerOn(),h.consoleControls.powerOn(),h.setLoading(!0),h.enterStandaloneMode(),i=Date.now()},this.powerOff=function(){h.console.powerOff(),h.consoleControls.powerOff(),h.speaker.powerOff(),h.screen.powerOff()},this.getNetServer=function(){return this.netServer||(this.netServer=new jt.NetServer(this)),this.netServer},this.getNetClient=function(){return this.netClient||(this.netClient=new jt.NetClient(this)),this.netClient},this.setLoading=function(a){this.isLoading!==a&&(this.isLoading=a,this.console.setLoading(this.isLoading),this.screen.setLoading(this.isLoading))},this.start=function(a){this.mainVideoClock.detectHostNativeFPSAndCallback(function(b){h.console.vSynchSetSupported(b>0),c(function(){h.setLoading(!1),h.screen.start(a||d)})})},this.showOSD=function(a,b,c){this.console.showOSD(a,b,c)},this.mainVideoClockPulse=function(){h.console.isSystemPaused()||(h.netController?h.netController.netVideoClockPulse():(h.console.getConsoleControlsSocket().controlsClockPulse(),h.console.videoClockPulse()))},this.enterStandaloneMode=function(){var a=this.netPlayMode;this.netPlayMode=0,this.netController=void 0,h.mainVideoClock.go(),this.netPlayStateBeforeClientMode&&(this.console.loadState(this.netPlayStateBeforeClientMode),this.consoleControls.setP1ControlsAndPaddleMode(this.netPlayControlsModeBeforeClientMode.p1,this.netPlayControlsModeBeforeClientMode.pd),this.netPlayStateBeforeClientMode=void 0),a!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(a)},this.enterNetServerMode=function(a){var b=this.netPlayMode;this.netPlayMode=1,this.netController=a,h.mainVideoClock.go(),b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.enterNetClientMode=function(a){var b=this.netPlayMode;this.netPlayMode=2,this.netController=a,h.mainVideoClock.pause(),this.netPlayStateBeforeClientMode=this.console.saveState(!0),this.netPlayControlsModeBeforeClientMode={p1:this.consoleControls.isP1ControlsMode(),pd:this.consoleControls.isPaddleMode()},b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.enterNetPendingMode=function(a){var b=this.netPlayMode;this.netPlayMode=a===this.netServer?-1:-2,this.netController=void 0,h.mainVideoClock.go(),b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.mainVideoClock=null,this.console=null,this.screen=null,this.speaker=null,this.consoleControls=null,this.fileDownloader=null,this.stateMedia=null,this.recentROMs=null,this.fileLoader=null,this.peripheralControls=null,this.netPlayMode=0,this.netController=void 0,this.netServer=void 0,this.netClient=void 0,this.netPlayStateBeforeClientMode=void 0,this.netPlayControlsModeBeforeClientMode=void 0,this.isLoading=!1;var i;this.runFramesAtTopSpeed=function(a){this.mainVideoClock.pause();for(var b=jt.Util.performanceNow(),c=0;c>3&1)&&(REFP0=b>>3&1,player0UpdateSprite(0)));case 16:return void hitRESP0();case 27:return void player0SetSprite(b);case 37:return void(VDELP0!==(1&b)&&(VDELP0=1&b,GRP0!==GRP0d&&player0UpdateSprite(0)));case 5:return void player1SetShape(b);case 7:return void(COLUP1===b||debug||(COLUP1=b,(player1Enabled||missile1Enabled||playfieldEnabled&&playfieldScoreMode)&&changeAtClock(),player1Color=missile1Color=palette[b],playfieldScoreMode&&(playfieldRightColor=player1Color)));case 12:return void(REFP1!==(b>>3&1)&&(REFP1=b>>3&1,player1UpdateSprite(0)));case 17:return void hitRESP1();case 28:return void player1SetSprite(b);case 38:return void(VDELP1!==(1&b)&&(VDELP1=1&b,GRP1!==GRP1d&&player1UpdateSprite(0)));case 18:return void hitRESM0();case 29:return void(ENAM0!==(2&b)&&(ENAM0=2&b,RESMP0||(changeAtClock(),missile0SetEnabled(ENAM0))));case 40:return void missile0SetResetToPlayer(b);case 19:return void hitRESM1();case 30:return void(ENAM1!==(2&b)&&(ENAM1=2&b,RESMP1||(changeAtClock(),missile1SetEnabled(ENAM1))));case 41:return void missile1SetResetToPlayer(b);case 32:return void(HMP0=(b>127?-16:0)+(b>>4));case 33:return void(HMP1=(b>127?-16:0)+(b>>4));case 34:return void(HMM0=(b>127?-16:0)+(b>>4));case 35:return void(HMM1=(b>127?-16:0)+(b>>4));case 36:return void(HMBL=(b>127?-16:0)+(b>>4));case 42:return void hitHMOVE();case 43:return void(HMP0=HMP1=HMM0=HMM1=HMBL=0);case 44:return changeAtClock(),void(collisions=0);case 21:return void(AUDC0!==b&&(AUDC0=b,audioSignal.getChannel0().setControl(15&b)));case 22:return void(AUDC1!==b&&(AUDC1=b,audioSignal.getChannel1().setControl(15&b)));case 23:return void(AUDF0!==b&&(AUDF0=b,audioSignal.getChannel0().setDivider(1+(31&b))));case 24:return void(AUDF1!==b&&(AUDF1=b,audioSignal.getChannel1().setDivider(1+(31&b))));case 25:return void(AUDV0!==b&&(AUDV0=b,audioSignal.getChannel0().setVolume(15&b)));case 26:return void(AUDV1!==b&&(AUDV1=b,audioSignal.getChannel1().setVolume(15&b)))}};var finishLine=function(){changeClock>=0?(renderLineTo(LINE_WIDTH),changeClockPrevLine=changeClock):changeClockPrevLine>=0&&(renderLineTo(changeClockPrevLine),changeClockPrevLine=-1),endObjectsAltStatusEndOfLine(),paddle0Position>=0&&!paddleCapacitorsGrounded&&(INPT0<128&&++paddle0CapacitorCharge>=paddle0Position&&(INPT0|=128),INPT1<128&&++paddle1CapacitorCharge>=paddle1Position&&(INPT1|=128)),debugLevel>=1&&processDebugPixelsInLine()},playfieldSetShape=function(a){if(CTRLPF!==a){var b=7&a;b!==(7&CTRLPF)&&(playfieldEnabled&&changeAtClock(),b=0!=(1&a),playfieldReflected!==b&&(playfieldReflected=b,playfieldUpdateSpriteR()),b=0!=(2&a),playfieldScoreMode!==b&&(playfieldScoreMode=b,debug||(b?(playfieldLeftColor=player0Color,playfieldRightColor=player1Color):playfieldColor=playfieldLeftColor=playfieldRightColor=ballColor)),playfieldPriority=0!=(4&a)),b=48&a,b!==(48&CTRLPF)&&(ballEnabled&&changeAtClock(),ballLineSpritePointer=b>>1<<6),CTRLPF=a}},hitRESP0=function(){debug&&debugPixel(DEBUG_P0_RES_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(player0Pixel!==b){player0Enabled&&changeAtClock();var c=a>=0?b:0,d=c-player0Pixel;d<0&&(d+=160),player0Pixel=b;var e=7&NUSIZ0;if(player0Alt){if(d<=playerCopyLengthPerShape[e])return}else player0LineSpritePointer+=20;var f=c-b;f<-100&&(f+=160),player0Alt=b>=80?1:2,player0AltFrom=f>=0?f:160+f,player0AltLength=playerCopyLengthPerShape[e]-f,player0AltCopyOffset=playerCopyOffsetsReset[160*e+d],player0Enabled&&player0DefineAlt()}},hitRESP1=function(){debug&&debugPixel(DEBUG_P1_RES_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(player1Pixel!==b){player1Enabled&&changeAtClock();var c=a>=0?b:0,d=c-player1Pixel;d<0&&(d+=160),player1Pixel=b;var e=7&NUSIZ1;if(player1Alt){if(d<=playerCopyLengthPerShape[e])return}else player1LineSpritePointer+=40;var f=c-b;f<-100&&(f+=160),player1Alt=b>=80?1:2,player1AltFrom=f>=0?f:160+f,player1AltLength=playerCopyLengthPerShape[e]-f,player1AltCopyOffset=playerCopyOffsetsReset[160*e+d],player1Enabled&&player1DefineAlt()}},hitRESM0=function(){debug&&debugPixel(DEBUG_M0_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(missile0Pixel!==b){missile0Enabled&&changeAtClock();var c=a>=0?b:0,d=c-missile0Pixel;if(d<0&&(d+=160),missile0Pixel=b,missile0Alt){if(d<=4+(1<<((48&NUSIZ0)>>4)))return}else missile0LineSpritePointer+=20;var e=c-b;e<-100&&(e+=160),missile0Alt=b>=80?1:2,missile0AltFrom=e>=0?e:160+e,missile0AltLength=4+(1<<((48&NUSIZ0)>>4))-e,missile0AltCopyOffset=missileCopyOffsetsReset[160*((48&NUSIZ0)>>1|7&NUSIZ0)+d],missile0Enabled&&missile0DefineAlt()}},hitRESM1=function(){debug&&debugPixel(DEBUG_M1_COLOR);var a=getRESxPixel(),b=a>=1?a:-a;if(missile1Pixel!==b){missile1Enabled&&changeAtClock();var c=a>=0?b:0,d=c-missile1Pixel;if(d<0&&(d+=160),missile1Pixel=b,missile1Alt){if(d<=4+(1<<((48&NUSIZ1)>>4)))return}else missile1LineSpritePointer+=40;var e=c-b;e<-100&&(e+=160),missile1Alt=b>=80?1:2,missile1AltFrom=e>=0?e:160+e,missile1AltLength=4+(1<<((48&NUSIZ1)>>4))-e,missile1AltCopyOffset=missileCopyOffsetsReset[160*((48&NUSIZ1)>>1|7&NUSIZ1)+d],missile1Enabled&&missile1DefineAlt()}},hitRESBL=function(){debug&&debugPixel(DEBUG_BL_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;ballPixel!==b&&(ballEnabled&&changeAtClock(),ballPixel=b)},hitHMOVE=function(){if(debug&&debugPixel(DEBUG_HMOVE_COLOR),clock=225)},performHMOVE=function(){var a,b=!1;a=hMoveHitBlank?HMP0:HMP0+8,0!==a&&(player0Pixel-=a,player0Pixel>=160?player0Pixel-=160:player0Pixel<0&&(player0Pixel+=160),player0Enabled&&(b=!0)),a=hMoveHitBlank?HMP1:HMP1+8,0!==a&&(player1Pixel-=a,player1Pixel>=160?player1Pixel-=160:player1Pixel<0&&(player1Pixel+=160),player1Enabled&&(b=!0)),a=hMoveHitBlank?HMM0:HMM0+8,0!==a&&(missile0Pixel-=a,missile0Pixel>=160?missile0Pixel-=160:missile0Pixel<0&&(missile0Pixel+=160),missile0Enabled&&(b=!0)),a=hMoveHitBlank?HMM1:HMM1+8,0!==a&&(missile1Pixel-=a,missile1Pixel>=160?missile1Pixel-=160:missile1Pixel<0&&(missile1Pixel+=160),missile1Enabled&&(b=!0)),a=hMoveHitBlank?HMBL:HMBL+8,0!==a&&(ballPixel-=a,ballPixel>=160?ballPixel-=160:ballPixel<0&&(ballPixel+=160),ballEnabled&&(b=!0)),b&&(changeClock=hMoveHitBlank?HBLANK_DURATION+8:HBLANK_DURATION)},vBlankSet=function(a){var b=0!=(2&a);vBlankOn!==b&&(changeVBlankAtClockPlus1(),vBlankOn=b),0!=(64&a)?controlsButtonsLatched=!0:(controlsButtonsLatched=!1,controlsJOY0ButtonPressed?INPT4&=127:INPT4|=128,controlsJOY1ButtonPressed?INPT5&=127:INPT5|=128),0!=(128&a)?(paddleCapacitorsGrounded=!0,paddle0CapacitorCharge=paddle1CapacitorCharge=0,INPT0&=127,INPT1&=127,INPT2&=127,INPT3&=127):paddleCapacitorsGrounded=!1},initLatchesAtPowerOn=function(){collisions=0,INPT0=INPT1=INPT2=INPT3=0,INPT4=INPT5=128},debugPixel=function(a){debugPixels[clock]=a},processDebugPixelsInLine=function(){if(jt.Util.arrayFillSegment(linePixels,0,HBLANK_DURATION+(hMoveHitBlank?8:0),hBlankColor), debugLevel>=3&&videoSignal.monitor.currentLine()%10==0)for(var a=0;a=2)for(a=0;a=1?DEBUG_HBLANK_COLOR:HBLANK_COLOR,vBlankColor=debugLevel>=1?DEBUG_VBLANK_COLOR:VBLANK_COLOR},debugRestoreColors=function(){hBlankColor=HBLANK_COLOR,vBlankColor=VBLANK_COLOR,playfieldBackground=palette[0],jt.Util.arrayFill(linePixels,hBlankColor),changeAtClock()},info=function(a){console.error("Line: "+videoSignal.monitor.currentLine()+", Pixel: "+clock+". "+a)},debugInfo=function(a){debug&&console.error("Line: "+videoSignal.monitor.currentLine()+", Pixel: "+clock+". "+a)},controls=jt.ConsoleControls;this.controlStateChanged=function(a,b){switch(a){case controls.JOY0_BUTTON:return void(b?(controlsJOY0ButtonPressed=!0,INPT4&=127):(controlsJOY0ButtonPressed=!1,controlsButtonsLatched||(INPT4|=128)));case controls.JOY1_BUTTON:return void(b?(controlsJOY1ButtonPressed=!0,INPT5&=127):(controlsJOY1ButtonPressed=!1,controlsButtonsLatched||(INPT5|=128)))}if(b)switch(a){case controls.DEBUG:return self.debug(debugLevel+1),void self.showDebugMessage();case controls.SHOW_INFO:return void videoSignal.toggleShowInfo();case controls.NO_COLLISIONS:self.debugNoCollisions(!debugNoCollisions),videoSignal.showOSD(debugNoCollisions?"No Collisions: ON":"No Collisions: OFF",!0)}},this.controlValueChanged=function(a,b){switch(a){case controls.PADDLE0_POSITION:return void(paddle0Position=b);case controls.PADDLE1_POSITION:return void(paddle1Position=b)}},this.saveState=function(a){var b={ccp:changeClockPrevLine,lpx:jt.Util.storeInt32BitArrayToStringBase64(linePixels),vs:vSyncOn,vb:vBlankOn,pfe:playfieldEnabled,pfl:playfieldPatternL,pfr:playfieldPatternR,pfc:playfieldColor,pflc:playfieldLeftColor,pfrc:playfieldRightColor,pfb:playfieldBackground,pfrl:playfieldReflected,pfsc:playfieldScoreMode,pfp:playfieldPriority,be:ballEnabled,bx:ballPixel,blp:ballLineSpritePointer,bc:ballColor,p0e:player0Enabled,p0x:player0Pixel,p0lp:player0LineSpritePointer,p0a:player0Alt,p0af:player0AltFrom,p0al:player0AltLength,p0ao:player0AltCopyOffset,p0c:player0Color,p1e:player1Enabled,p1x:player1Pixel,p1lp:player1LineSpritePointer,p1a:player1Alt,p1af:player1AltFrom,p1al:player1AltLength,p1ao:player1AltCopyOffset,p1c:player1Color,m0e:missile0Enabled,m0x:missile0Pixel,m0lp:missile0LineSpritePointer,m0a:missile0Alt,m0af:missile0AltFrom,m0al:missile0AltLength,m0ao:missile0AltCopyOffset,m0c:missile0Color,m1e:missile1Enabled,m1x:missile1Pixel,m1lp:missile1LineSpritePointer,m1a:missile1Alt,m1af:missile1AltFrom,m1al:missile1AltLength,m1ao:missile1AltCopyOffset,m1c:missile1Color,hmh:hMoveHitBlank,hmc:hMoveHitClock,hmlh:hMoveLateHit,hmlb:hMoveLateHitBlank,co:collisions,cop:collisionsPossible,cod:debugNoCollisions,cbl:controlsButtonsLatched,j0p:controlsJOY0ButtonPressed,j1p:controlsJOY1ButtonPressed,pcg:paddleCapacitorsGrounded,pd0:paddle0Position,pd0c:paddle0CapacitorCharge,pd1:paddle1Position,pd1c:paddle1CapacitorCharge,CTRLPF:CTRLPF,COLUPF:COLUPF,COLUBK:COLUBK,PF0:PF0,PF1:PF1,PF2:PF2,ENABL:ENABL,ENABLd:ENABLd,VDELBL:VDELBL,NUSIZ0:NUSIZ0,COLUP0:COLUP0,REFP0:REFP0,GRP0:GRP0,GRP0d:GRP0d,VDELP0:VDELP0,NUSIZ1:NUSIZ1,COLUP1:COLUP1,REFP1:REFP1,GRP1:GRP1,GRP1d:GRP1d,VDELP1:VDELP1,ENAM0:ENAM0,RESMP0:RESMP0,ENAM1:ENAM1,RESMP1:RESMP1,HMP0:HMP0,HMP1:HMP1,HMM0:HMM0,HMM1:HMM1,HMBL:HMBL,AUDC0:AUDC0,AUDC1:AUDC1,AUDF0:AUDF0,AUDF1:AUDF1,AUDV0:AUDV0,AUDV1:AUDV1};return a&&(b.dl=debugLevel),b},this.loadState=function(a){changeClockPrevLine=a.ccp,jt.Util.restoreStringBase64ToInt32BitArray(a.lpx,linePixels),vSyncOn=a.vs,vBlankOn=a.vb,playfieldEnabled=a.pfe,playfieldPatternL=0|a.pfl,playfieldPatternR=0|a.pfr,playfieldColor=0|a.pfc,playfieldLeftColor=0|a.pflc,playfieldRightColor=0|a.pfrc,playfieldBackground=0|a.pfb,playfieldReflected=a.pfrl,playfieldScoreMode=a.pfsc,playfieldPriority=a.pfp,ballEnabled=a.be,ballPixel=0|a.bx,ballLineSpritePointer=0|a.blp,ballColor=0|a.bc,player0Enabled=a.p0e,player0Pixel=0|a.p0x,player0LineSpritePointer=0|a.p0lp,player0Alt=0|a.p0a,player0AltFrom=0|a.p0af,player0AltLength=0|a.p0al,player0AltCopyOffset=0|a.p0ao,jt.Util.arrayFill(player0AltControl,0),player0Color=0|a.p0c,player1Enabled=a.p1e,player1Pixel=0|a.p1x,player1LineSpritePointer=0|a.p1lp,player1Alt=0|a.p1a,player1AltFrom=0|a.p1af,player1AltLength=0|a.p1al,player1AltCopyOffset=0|a.p1ao,jt.Util.arrayFill(player1AltControl,0),player1Color=0|a.p1c,missile0Enabled=a.m0e,missile0Pixel=0|a.m0x,missile0LineSpritePointer=0|a.m0lp,missile0Alt=0|a.m0a,missile0AltFrom=0|a.m0af,missile0AltLength=0|a.m0al,missile0AltCopyOffset=0|a.m0ao,jt.Util.arrayFill(missile0AltControl,0),missile0Color=0|a.m0c,missile1Enabled=a.m1e,missile1Pixel=0|a.m1x,missile1LineSpritePointer=0|a.m1lp,missile1Alt=0|a.m1a,missile1AltFrom=0|a.m1af,missile1AltLength=0|a.m1al,missile1AltCopyOffset=0|a.m1ao,jt.Util.arrayFill(missile1AltControl,0),missile1Color=0|a.m1c,hMoveHitBlank=a.hmh,hMoveHitClock=0|a.hmc,hMoveLateHit=a.hmlh,hMoveLateHitBlank=a.hmlb,collisions=0|a.co,collisionsPossible=0|a.cop,void 0!==a.cod&&(debugNoCollisions=a.cod),void 0!==a.cbl&&(controlsButtonsLatched=a.cbl,controlsJOY0ButtonPressed=a.j0p,controlsJOY1ButtonPressed=a.j1p,paddleCapacitorsGrounded=a.pcg,paddle0Position=a.pd0,paddle0CapacitorCharge=a.pd0c,paddle1Position=a.pd1,paddle1CapacitorCharge=a.pd1c),CTRLPF=0|a.CTRLPF,COLUPF=0|a.COLUPF,COLUBK=0|a.COLUBK,PF0=0|a.PF0,PF1=0|a.PF1,PF2=0|a.PF2,ENABL=0|a.ENABL,ENABLd=0|a.ENABLd,VDELBL=0|a.VDELBL,NUSIZ0=0|a.NUSIZ0,COLUP0=0|a.COLUP0,REFP0=0|a.REFP0,GRP0=0|a.GRP0,GRP0d=0|a.GRP0d,VDELP0=0|a.VDELP0,NUSIZ1=0|a.NUSIZ1,COLUP1=0|a.COLUP1,REFP1=0|a.REFP1,GRP1=0|a.GRP1,GRP1d=0|a.GRP1d,VDELP1=0|a.VDELP1,ENAM0=0|a.ENAM0,RESMP0=0|a.RESMP0,ENAM1=0|a.ENAM1,RESMP1=0|a.RESMP1,HMP0=0|a.HMP0,HMP1=0|a.HMP1,HMM0=0|a.HMM0,HMM1=0|a.HMM1,HMBL=0|a.HMBL,AUDC0=0|a.AUDC0,audioSignal.getChannel0().setControl(15&AUDC0),AUDC1=0|a.AUDC1,audioSignal.getChannel1().setControl(15&AUDC1),AUDF0=0|a.AUDF0,audioSignal.getChannel0().setDivider(1+(31&AUDF0)),AUDF1=0|a.AUDF1,audioSignal.getChannel1().setDivider(1+(31&AUDF1)),AUDV0=0|a.AUDV0,audioSignal.getChannel0().setVolume(15&AUDV0),AUDV1=0|a.AUDV1,audioSignal.getChannel1().setVolume(15&AUDV1),void 0!==a.dl?this.debug(a.dl):debug&&debugSetColors()} ;var HBLANK_DURATION=68,LINE_WIDTH=228,VBLANK_COLOR=4278190080,HBLANK_COLOR=4261412864,VSYNC_COLOR=4292730333,DEBUG_P0_COLOR=4278190335,DEBUG_P0_RES_COLOR=4280427195,DEBUG_P0_GR_COLOR=4279308663,DEBUG_P1_COLOR=4294901760,DEBUG_P1_RES_COLOR=4290454050,DEBUG_P1_GR_COLOR=4285993233,DEBUG_M0_COLOR=4284901119,DEBUG_M1_COLOR=4294927974,DEBUG_PF_COLOR=4282681412,DEBUG_PF_GR_COLOR=4281589043,DEBUG_BK_COLOR=4281549875,DEBUG_BL_COLOR=4278255615,DEBUG_MARKS_COLOR=4280295456,DEBUG_HBLANK_COLOR=4282664004,DEBUG_VBLANK_COLOR=4280953386,DEBUG_WSYNC_COLOR=4287103112,DEBUG_HMOVE_COLOR=4294967295,DEBUG_ALT_COLOR=4289374720,READ_ADDRESS_MASK=15,WRITE_ADDRESS_MASK=63,P0C=-63489,P1C=-34689,M0C=-17521,M1C=-8781,PFC=-4395,BLC=-2199,cpu=pCpu,pia=pPia,bus,powerOn=!1,clock,changeClock,changeClockPrevLine,renderClock,linePixels=new Uint32Array(LINE_WIDTH),vSyncOn=!1,vBlankOn=!1,vBlankColor=VBLANK_COLOR,hBlankColor=HBLANK_COLOR,playfieldEnabled=!1,playfieldPatternL=0,playfieldPatternR=0,playfieldColor=4278190080,playfieldLeftColor=4278190080,playfieldRightColor=4278190080,playfieldBackground=4278190080,playfieldReflected=!1,playfieldScoreMode=!1,playfieldPriority=!1,ballEnabled=!1,ballPixel=0,ballLineSpritePointer=0,ballColor=4278190080,player0Enabled=!1,player0Pixel=0,player0LineSpritePointer=0,player0Alt=0,player0AltFrom=0,player0AltLength=0,player0AltCopyOffset=0,player0AltControl=new Uint32Array(4096),player0Color=4278190080,player1Enabled=!1,player1Pixel=0,player1LineSpritePointer=0,player1Alt=0,player1AltFrom=0,player1AltLength=0,player1AltCopyOffset=0,player1AltControl=new Uint32Array(4096),player1Color=4278190080,missile0Enabled=!1,missile0Pixel=0,missile0LineSpritePointer=0,missile0Alt=0,missile0AltFrom=0,missile0AltLength=0,missile0AltCopyOffset=0,missile0AltControl=new Uint32Array(32),missile0Color=4278190080,missile1Enabled=!1,missile1Pixel=0,missile1LineSpritePointer=0,missile1Alt=0,missile1AltFrom=0,missile1AltLength=0,missile1AltCopyOffset=0,missile1AltControl=new Uint32Array(32),missile1Color=4278190080,hMoveHitBlank=!1,hMoveHitClock=0,hMoveLateHit=!1,hMoveLateHitBlank=!1,collisions=0,collisionsPossible=0,controlsButtonsLatched=!1,controlsJOY0ButtonPressed=!1,controlsJOY1ButtonPressed=!1,paddleCapacitorsGrounded=!1,paddle0Position=-1,paddle0CapacitorCharge=0,paddle1Position=-1,paddle1CapacitorCharge=0,debug=!1,debugLevel=0,debugNoCollisions=!1,debugPixels=new Uint32Array(LINE_WIDTH),playerLineSprites=new Uint8Array(262144),missileBallLineSprites=new Uint8Array(2048),playerCopyLengthPerShape=new Uint8Array([13,13,13,13,13,22,13,38]),playerScanStartPerShape=new Uint8Array([5,5,5,5,5,6,5,6]),playerPixelSizePerShape=new Uint8Array([1,1,1,1,1,2,1,4]),playerCopyOffsetsReset=new Uint8Array(1280),playerScanOffsetsShape=new Uint8Array(1280),missileCopyOffsetsReset=new Uint8Array(5120),missileScanOffsetsShape=new Uint8Array(5120),objectsLineSpritePointerDeltaToSingleCopy=new Uint16Array([0,64,128,192,256,0,384,0]),missileCenterOffsetsPerPlayerSize=new Uint8Array([5,5,5,5,5,10,5,18]),videoSignal=new jt.VideoSignal,palette,audioSignal=new jt.TiaAudio(audioSocket),INPT0=0,INPT1=0,INPT2=0,INPT3=0,INPT4=0,INPT5=0,CTRLPF=0,COLUPF=0,COLUBK=0,PF0=0,PF1=0,PF2=0,ENABL=0,ENABLd=0,VDELBL=0,NUSIZ0=0,COLUP0=0,REFP0=0,GRP0=0,GRP0d=0,VDELP0=0,NUSIZ1=0,COLUP1=0,REFP1=0,GRP1=0,GRP1d=0,VDELP1=0,ENAM0=0,RESMP0=0,ENAM1=0,RESMP1=0,HMP0=0,HMP1=0,HMM0=0,HMM1=0,HMBL=0,AUDC0=0,AUDC1=0,AUDF0=0,AUDF1=0,AUDV0=0,AUDV1=0;init(),self.eval=function(code){return eval(code)}},jt.Bus=function(a,b,c,d){"use strict";this.powerOn=function(){null!=i&&i.powerOn(),h.powerOn(),g.powerOn(),e.powerOn(),f.powerOn()},this.powerOff=function(){f.powerOff(),e.powerOff(),g.powerOff(),h.powerOff()},this.setCartridge=function(a){i=a,i&&(k=0,i.connectBus(this)),j=i&&i.needsBusMonitoring()},this.getCartridge=function(){return i},this.getTia=function(){return f},this.clockPulse=function(){g.clockPulse(),e.clockPulse()},this.read=function(a){return j&&i.monitorBusBeforeRead(a),(a&l)===m?i?k=i.read(a):k:k=(a&n)===o?h.read(a):(a&r)===s?g.read(a):63&k|f.read(a)},this.write=function(a,b){j&&i.monitorBusBeforeWrite(a,b),k=b,(a&p)===q?f.write(a,b):(a&n)===o?h.write(a,b):(a&r)===s?g.write(a,b):i&&i.write(a,b)},this.saveState=function(){return{d:k}},this.loadState=function(a){k=a.d};var e,f,g,h,i,j=!1,k=256*Math.random()|0,l=4096,m=4096,n=4736,o=128,p=4224,q=0,r=4736,s=640;!function(i){e=a,f=b,g=c,h=d,e.connectBus(i),f.connectBus(i),g.connectBus(i)}(this)},jt.AtariConsole=function(mainVideoClock){"use strict";function init(){mainComponentsCreate(),socketsCreate()}function videoFrame(){userPaused&&userPauseMoreFrames--<=0||(videoStandardAutoDetectionInProgress&&videoStandardAutoDetectionTry(),tia.frame())}function vSynchToggleMode(){if(-1===vSynchMode)return void self.showOSD("V-Synch is DISABLED / UNSUPPORTED",!0,!0);vSynchMode=vSynchMode?0:1,updateVideoSynchronization(),self.showOSD("V-Synch: "+(vSynchMode?"ON":"OFF"),!0),Javatari.userPreferences.current.vSynch=vSynchMode,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save()}function showVideoStandardMessage(){self.showOSD((videoStandardIsAuto?"AUTO: ":"")+videoStandard.name,!0)}function updateVideoSynchronization(){videoPulldown=1===vSynchMode?videoStandard.pulldowns[videoClockSocket.getVSynchNativeFrequency()]||videoStandard.pulldowns.TIMER:videoStandard.pulldowns.TIMER,videoPulldownStep=0,videoClockUpdateSpeed()}function setDefaults(){setVideoStandardAuto(!0),speedControl=1,alternateSpeed=null,videoClockUpdateSpeed(),tia.debug(0),tia.debugNoCollisions(!1)}function videoClockUpdateSpeed(){videoClockSocket.setVSynch(1===vSynchMode);var a=videoPulldown.frequency*(alternateSpeed||speedControl)|0;videoClockSocket.setFrequency(a,videoPulldown.divider),audioSocket.setFps(a/videoPulldown.divider)}function VideoClockSocket(){this.connectClock=function(b){a=b},this.getVSynchNativeFrequency=function(){return a.getVSynchNativeFrequency()},this.setVSynch=function(b){a.setVSynch(b)},this.setFrequency=function(b,c){a.setFrequency(b,c)};var a}function CartridgeSocket(){this.insert=function(a,b){b&&self.powerIsOn&&self.powerOff(),setCartridge(a),b&&!self.powerIsOn&&self.powerOn(),saveStateSocket.externalStateChange()},this.inserted=function(){return getCartridge()},this.cartridgeInserted=function(a,b){tia.getAudioOutput().cartridgeInserted(a,b),consoleControlsSocket.cartridgeInserted(a,b),saveStateSocket.cartridgeInserted(a,b),tia.getVideoOutput().monitor.cartridgeInserted(a,b)},this.loadCartridgeData=function(a,b,c){},this.saveCartridgeDataFile=function(a){}}function ConsoleControlsSocket(){this.connectControls=function(b){a=b},this.cartridgeInserted=function(b,c){a&&a.cartridgeInserted(b,c)},this.controlStateChanged=function(a,b){self.controlStateChanged(a,b),pia.controlStateChanged(a,b),tia.controlStateChanged(a,b),tia.getVideoOutput().monitor.controlStateChanged(a,b)},this.controlValueChanged=function(a,b){tia.controlValueChanged(a,b)},this.controlsStateReport=function(a){self.controlsStateReport(a),pia.controlsStateReport(a)},this.controlsStatesRedefined=function(){tia.getVideoOutput().monitor.controlsStatesRedefined()},this.firePowerAndUserPauseStateUpdate=function(){a.consolePowerAndUserPauseStateUpdate(self.powerIsOn,userPaused),tia.getVideoOutput().monitor.consolePowerAndUserPauseStateUpdate(self.powerIsOn,userPaused)},this.releaseControllers=function(){a.releaseControllers()},this.controlsClockPulse=function(){a.controlsClockPulse()},this.getControlReport=function(a){switch(a){case jt.ConsoleControls.VIDEO_STANDARD:return{label:videoStandardIsAuto?"Auto":videoStandard.name,active:!videoStandardIsAuto};case jt.ConsoleControls.VSYNCH:return{label:-1===vSynchMode?"DISABL":vSynchMode?"ON":"OFF",active:1===vSynchMode};case jt.ConsoleControls.NO_COLLISIONS:return{label:tia.getDebugNoCollisions()?"ON":"OFF",active:tia.getDebugNoCollisions()};default:return{label:"Unknown",active:!1 -}}};var a}function SaveStateSocket(){this.connectMedia=function(b){a=b},this.getMedia=function(){return a},this.cartridgeInserted=function(a){a&&a.connectSaveStateSocket(this)},this.externalStateChange=function(){a.externalStateChange()},this.saveState=function(c){if(self.powerIsOn){var d=saveState();d.v=b,a.saveState(c,d)?self.showOSD("State "+c+" saved",!0):self.showOSD("State "+c+" save failed",!0)}},this.loadState=function(c){var d=a.loadState(c);return d?d.v!==b?void self.showOSD("State "+c+" load failed, wrong version",!0):(self.powerIsOn||self.powerOn(!0),loadState(d),void self.showOSD("State "+c+" loaded",!0)):void self.showOSD("State "+c+" not found",!0)},this.saveStateFile=function(){if(self.powerIsOn){var c=cartridgeSocket.inserted()&&cartridgeSocket.inserted().rom.info.l,d=saveState();d.v=b,a.saveStateFile(c,d)?self.showOSD("State Cartridge saved",!0):self.showOSD("State file save failed",!0)}},this.loadStateFile=function(c){var d=a.loadStateFile(c);if(d)return d.v!==b?(self.showOSD("State file load failed, wrong version",!0),!0):(self.powerIsOn||self.powerOn(),loadState(d),self.showOSD("State file loaded",!0),!0)};var a,b=2}function AudioSocket(){this.connectMonitor=function(b){a=b;for(var d=c.length-1;d>=0;d--)a.connectAudioSignal(c[d])},this.connectAudioSignal=function(d){c.indexOf(d)>=0||(jt.Util.arrayAdd(c,d),this.flushAllSignals(),d.setFps(b),a&&a.connectAudioSignal(d))},this.disconnectAudioSignal=function(b){jt.Util.arrayRemoveAllElement(c,b),a&&a.disconnectAudioSignal(b)},this.audioClockPulse=function(){for(var a=c.length-1;a>=0;--a)c[a].audioClockPulse()},this.audioFinishFrame=function(){for(var a=c.length-1;a>=0;--a)c[a].audioFinishFrame()},this.muteAudio=function(){a&&a.mute()},this.unMuteAudio=function(){a&&a.unMute()},this.setFps=function(a){b=a;for(var d=c.length-1;d>=0;--d)c[d].setFps(b)},this.pauseAudio=function(){a&&a.pause()},this.unpauseAudio=function(){a&&a.unpause()},this.flushAllSignals=function(){for(var a=c.length-1;a>=0;--a)c[a].flush()};var a,b,c=[]}var self=this;this.socketsConnected=function(){setDefaults()},this.powerOn=function(a){this.powerIsOn&&this.powerOff(),bus.powerOn(),this.powerIsOn=!0,consoleControlsSocket.controlsStatesRedefined(),updateVideoSynchronization(),videoStandardAutoDetectionStart(),a||consoleControlsSocket.firePowerAndUserPauseStateUpdate()},this.powerOff=function(){bus.powerOff(),this.powerIsOn=!1,consoleControlsSocket.controlsStatesRedefined(),userPaused?this.userPause(!1):consoleControlsSocket.firePowerAndUserPauseStateUpdate()},this.userPowerOn=function(){isLoading||(this.powerOn(),bus.getCartridge()||this.showOSD("NO CARTRIDGE INSERTED!",!1,!0))},this.setLoading=function(a){isLoading=a},this.userPause=function(a,b){var c=userPaused;return userPaused!==a&&(userPaused=!!a,userPauseMoreFrames=-1,userPaused&&!b?audioSocket.muteAudio():audioSocket.unMuteAudio(),consoleControlsSocket.firePowerAndUserPauseStateUpdate()),c},this.systemPause=function(a){var b=systemPaused;return systemPaused!==a&&(systemPaused=!!a,systemPaused?audioSocket.pauseAudio():audioSocket.unpauseAudio()),b},this.isSystemPaused=function(){return systemPaused},this.videoClockPulse=function(){this.videoClockPulseApplyPulldowns(self.videoClockPulseGetNextPulldowns())},this.videoClockPulseApplyPulldowns=function(a){if(self.powerIsOn){for(;a-- >0;)videoFrame();userPaused||audioSocket.audioFinishFrame()}},this.videoClockPulseGetNextPulldowns=function(){return 1===videoPulldown.steps?1:(--videoPulldownStep<0&&(videoPulldownStep=videoPulldown.steps-1),videoPulldown.cadence[videoPulldownStep])},this.getCartridgeSocket=function(){return cartridgeSocket},this.getConsoleControlsSocket=function(){return consoleControlsSocket},this.getVideoOutput=function(){return tia.getVideoOutput()},this.getAudioOutput=function(){return tia.getAudioOutput()},this.getSavestateSocket=function(){return saveStateSocket},this.getVideoClockSocket=function(){return videoClockSocket},this.getAudioSocket=function(){return audioSocket},this.showOSD=function(a,b,c){this.getVideoOutput().showOSD(a,b,c)},this.vSynchSetSupported=function(a){var b=Javatari.userPreferences.current.vSynch;vSynchMode=-1!==Javatari.SCREEN_VSYNCH_MODE&&a?Javatari.SCREEN_VSYNCH_MODE>=0?Javatari.SCREEN_VSYNCH_MODE:null!==b&&b>=0?b:1:-1};var setCartridge=function(a){Javatari.cartridge=a;var b=getCartridge();bus.setCartridge(a),cartridgeSocket.cartridgeInserted(a,b)},getCartridge=function(){return bus.getCartridge()},setVideoStandard=function(a){videoStandard!==a&&(videoStandard=a,tia.setVideoStandard(videoStandard),updateVideoSynchronization())},setVideoStandardAuto=function(a){videoStandardIsAuto=a,a&&(self.powerIsOn?videoStandardAutoDetectionStart():setVideoStandard(jt.VideoStandard.NTSC))},videoStandardAutoDetectionStart=function(){if(videoStandardIsAuto&&!videoStandardAutoDetectionInProgress)return bus.getCartridge()?void(tia.getVideoOutput().monitor&&(videoStandardAutoDetectionInProgress=!0,videoStandardAutoDetectionTries=0,tia.getVideoOutput().monitor.videoStandardDetectionStart())):void setVideoStandard(jt.VideoStandard.NTSC)},videoStandardAutoDetectionTry=function(){videoStandardAutoDetectionTries++;var a=tia.getVideoOutput().monitor.getVideoStandardDetected();!a&&videoStandardAutoDetectionTries0?--c:a===controls.MIN_SPEED?c=0:a===controls.NORMAL_SPEED&&(c=SPEEDS.indexOf(1)),speedControl=SPEEDS[c],self.showOSD("Speed: "+(100*speedControl|0)+"%",!0),videoClockUpdateSpeed();break;case controls.SAVE_STATE_0:case controls.SAVE_STATE_1:case controls.SAVE_STATE_2:case controls.SAVE_STATE_3:case controls.SAVE_STATE_4:case controls.SAVE_STATE_5:case controls.SAVE_STATE_6:case controls.SAVE_STATE_7:case controls.SAVE_STATE_8:case controls.SAVE_STATE_9:case controls.SAVE_STATE_10:case controls.SAVE_STATE_11:case controls.SAVE_STATE_12:var d=self.systemPause(!0);saveStateSocket.saveState(255&a),d||self.systemPause(!1);break;case controls.SAVE_STATE_FILE:d=self.systemPause(!0),saveStateSocket.saveStateFile(),d||self.systemPause(!1);break;case controls.LOAD_STATE_0:case controls.LOAD_STATE_1:case controls.LOAD_STATE_2:case controls.LOAD_STATE_3:case controls.LOAD_STATE_4:case controls.LOAD_STATE_5:case controls.LOAD_STATE_6:case controls.LOAD_STATE_7:case controls.LOAD_STATE_8:case controls.LOAD_STATE_9:case controls.LOAD_STATE_10:case controls.LOAD_STATE_11:case controls.LOAD_STATE_12:d=self.systemPause(!0),saveStateSocket.loadState(255&a),d||self.systemPause(!1);break;case controls.VIDEO_STANDARD:videoStandardIsAuto?setVideoStandardForced(jt.VideoStandard.NTSC):videoStandard==jt.VideoStandard.NTSC?setVideoStandardForced(jt.VideoStandard.PAL):setVideoStandardAuto(!0),showVideoStandardMessage();break;case controls.VSYNCH:vSynchToggleMode();break;case controls.CARTRIDGE_FORMAT:cycleCartridgeFormat();break;case controls.DEFAULTS:setDefaults(),self.showOSD("Default Settings",!0)}},this.controlsStateReport=function(a){a[controls.POWER]=self.powerIsOn},this.eval=function(str){return eval(str)},init()},jt.JoystickButtons={J_UP:{button:"J_UP",mask:1,n:"UP"},J_DOWN:{button:"J_DOWN",mask:2,n:"DOWN"},J_LEFT:{button:"J_LEFT",mask:4,n:"LEFT"},J_RIGHT:{button:"J_RIGHT",mask:8,n:"RIGHT"},J_A:{button:"J_A",mask:16,n:"A"},J_B:{button:"J_B",mask:32,n:"B"},J_AB:{button:"J_AB",mask:48,n:"AB"},J_X:{button:"J_X",n:"X"},J_Y:{button:"J_Y",n:"Y"},J_L:{button:"J_L",n:"L"},J_R:{button:"J_R",n:"R"},J_BACK:{button:"J_BACK",n:"BACK"},J_START:{button:"J_START",n:"START"}},jt.ConsoleControls={JOY0_UP:11,JOY0_DOWN:12,JOY0_LEFT:13,JOY0_RIGHT:14,JOY0_BUTTON:15,JOY1_UP:21,JOY1_DOWN:22,JOY1_LEFT:23,JOY1_RIGHT:24,JOY1_BUTTON:25,PADDLE0_BUTTON:41,PADDLE1_BUTTON:42,PADDLE0_POSITION:16384,PADDLE1_POSITION:16896,POWER:51,BLACK_WHITE:52,SELECT:53,RESET:54,DIFFICULTY0:55,DIFFICULTY1:56,POWER_OFF:57,POWER_FRY:58,CARTRIDGE_FORMAT:91,DEBUG:101,TRACE:102,SHOW_INFO:103,NO_COLLISIONS:104,PAUSE:105,PAUSE_AUDIO_ON:106,FRAME:107,FAST_SPEED:111,SLOW_SPEED:112,INC_SPEED:113,DEC_SPEED:114,NORMAL_SPEED:115,MIN_SPEED:116,VIDEO_STANDARD:123,VSYNCH:124,DEFAULTS:130,SAVE_STATE_0:256,SAVE_STATE_1:257,SAVE_STATE_2:258,SAVE_STATE_3:259,SAVE_STATE_4:260,SAVE_STATE_5:261,SAVE_STATE_6:262,SAVE_STATE_7:263,SAVE_STATE_8:264,SAVE_STATE_9:265,SAVE_STATE_10:266,SAVE_STATE_11:267,SAVE_STATE_12:268,LOAD_STATE_0:512,LOAD_STATE_1:513,LOAD_STATE_2:514,LOAD_STATE_3:515,LOAD_STATE_4:516,LOAD_STATE_5:517,LOAD_STATE_6:518,LOAD_STATE_7:519,LOAD_STATE_8:520,LOAD_STATE_9:521,LOAD_STATE_10:522,LOAD_STATE_11:523,LOAD_STATE_12:524,SAVE_STATE_FILE:201},jt.ROM=function(a,b,c,d){"use strict";this.source=a,this.content=b,this.info=c||jt.CartridgeCreator.produceInfo(this,d),this.saveState=function(a){return{s:this.source,i:this.info,c:a?jt.Util.compressInt8BitArrayToStringBase64(this.content):null}}},jt.ROM.loadState=function(a){"use strict";var b=a.c?jt.Util.uncompressStringBase64ToInt8BitArray(a.c):null;return new jt.ROM(a.s,b,a.i)},jt.CartridgeDatabase={uncompress:function(){jt.CartridgeDatabase=JSON.parse(jt.Util.uncompressStringBase64ToString(this.data))}, +}}};var a}function SaveStateSocket(){this.connectMedia=function(b){a=b},this.getMedia=function(){return a},this.cartridgeInserted=function(a){a&&a.connectSaveStateSocket(this)},this.externalStateChange=function(){a.externalStateChange()},this.saveState=function(c){if(self.powerIsOn){var d=saveState();d.v=b,a.saveState(c,d)?self.showOSD("State "+c+" saved",!0):self.showOSD("State "+c+" save failed",!0)}},this.loadState=function(c){var d=a.loadState(c);return d?d.v!==b?void self.showOSD("State "+c+" load failed, wrong version",!0):(self.powerIsOn||self.powerOn(!0),loadState(d),void self.showOSD("State "+c+" loaded",!0)):void self.showOSD("State "+c+" not found",!0)},this.saveStateFile=function(){if(self.powerIsOn){var c=cartridgeSocket.inserted()&&cartridgeSocket.inserted().rom.info.l,d=saveState();d.v=b,a.saveStateFile(c,d)?self.showOSD("State Cartridge saved",!0):self.showOSD("State file save failed",!0)}},this.loadStateFile=function(c){var d=a.loadStateFile(c);if(d)return d.v!==b?(self.showOSD("State file load failed, wrong version",!0),!0):(self.powerIsOn||self.powerOn(),loadState(d),self.showOSD("State file loaded",!0),!0)};var a,b=2}function AudioSocket(){this.connectMonitor=function(b){a=b;for(var d=c.length-1;d>=0;d--)a.connectAudioSignal(c[d])},this.connectAudioSignal=function(d){c.indexOf(d)>=0||(jt.Util.arrayAdd(c,d),this.flushAllSignals(),d.setFps(b),a&&a.connectAudioSignal(d))},this.disconnectAudioSignal=function(b){jt.Util.arrayRemoveAllElement(c,b),a&&a.disconnectAudioSignal(b)},this.audioClockPulse=function(){for(var a=c.length-1;a>=0;--a)c[a].audioClockPulse()},this.audioFinishFrame=function(){for(var a=c.length-1;a>=0;--a)c[a].audioFinishFrame()},this.muteAudio=function(){a&&a.mute()},this.unMuteAudio=function(){a&&a.unMute()},this.setFps=function(a){b=a;for(var d=c.length-1;d>=0;--d)c[d].setFps(b)},this.pauseAudio=function(){a&&a.pause()},this.unpauseAudio=function(){a&&a.unpause()},this.flushAllSignals=function(){for(var a=c.length-1;a>=0;--a)c[a].flush()};var a,b,c=[]}var self=this;this.socketsConnected=function(){setDefaults()},this.powerOn=function(a){this.powerIsOn&&this.powerOff(),bus.powerOn(),this.powerIsOn=!0,consoleControlsSocket.controlsStatesRedefined(),updateVideoSynchronization(),videoStandardAutoDetectionStart(),a||consoleControlsSocket.firePowerAndUserPauseStateUpdate()},this.powerOff=function(){bus.powerOff(),this.powerIsOn=!1,consoleControlsSocket.controlsStatesRedefined(),userPaused?this.userPause(!1):consoleControlsSocket.firePowerAndUserPauseStateUpdate()},this.userPowerOn=function(){isLoading||(this.powerOn(),bus.getCartridge()||this.showOSD("NO CARTRIDGE INSERTED!",!1,!0))},this.setLoading=function(a){isLoading=a},this.userPause=function(a,b){var c=userPaused;return userPaused!==a&&(userPaused=!!a,userPauseMoreFrames=-1,userPaused&&!b?audioSocket.muteAudio():audioSocket.unMuteAudio(),consoleControlsSocket.firePowerAndUserPauseStateUpdate()),c},this.systemPause=function(a){var b=systemPaused;return systemPaused!==a&&(systemPaused=!!a,systemPaused?audioSocket.pauseAudio():audioSocket.unpauseAudio()),b},this.isSystemPaused=function(){return systemPaused},this.videoClockPulse=function(){this.videoClockPulseApplyPulldowns(self.videoClockPulseGetNextPulldowns())},this.videoClockPulseApplyPulldowns=function(a){if(self.powerIsOn){for(;a-- >0;)videoFrame();userPaused||audioSocket.audioFinishFrame()}},this.videoClockPulseGetNextPulldowns=function(){return 1===videoPulldown.steps?1:(--videoPulldownStep<0&&(videoPulldownStep=videoPulldown.steps-1),videoPulldown.cadence[videoPulldownStep])},this.getCartridgeSocket=function(){return cartridgeSocket},this.getConsoleControlsSocket=function(){return consoleControlsSocket},this.getVideoOutput=function(){return tia.getVideoOutput()},this.getAudioOutput=function(){return tia.getAudioOutput()},this.getSavestateSocket=function(){return saveStateSocket},this.getVideoClockSocket=function(){return videoClockSocket},this.getAudioSocket=function(){return audioSocket},this.showOSD=function(a,b,c){this.getVideoOutput().showOSD(a,b,c)},this.vSynchSetSupported=function(a){var b=Javatari.userPreferences.current.vSynch;vSynchMode=-1!==Javatari.SCREEN_VSYNCH_MODE&&a?Javatari.SCREEN_VSYNCH_MODE>=0?Javatari.SCREEN_VSYNCH_MODE:null!==b&&b>=0?b:1:-1};var setCartridge=function(a){Javatari.cartridge=a;var b=getCartridge();bus.setCartridge(a),cartridgeSocket.cartridgeInserted(a,b)},getCartridge=function(){return bus.getCartridge()},setVideoStandard=function(a){videoStandard!==a&&(videoStandard=a,tia.setVideoStandard(videoStandard),updateVideoSynchronization())},setVideoStandardAuto=function(a){videoStandardIsAuto=a,a&&(self.powerIsOn?videoStandardAutoDetectionStart():setVideoStandard(jt.VideoStandard.NTSC))},videoStandardAutoDetectionStart=function(){if(videoStandardIsAuto&&!videoStandardAutoDetectionInProgress)return bus.getCartridge()?void(tia.getVideoOutput().monitor&&(videoStandardAutoDetectionInProgress=!0,videoStandardAutoDetectionTries=0,tia.getVideoOutput().monitor.videoStandardDetectionStart())):void setVideoStandard(jt.VideoStandard.NTSC)},videoStandardAutoDetectionTry=function(){videoStandardAutoDetectionTries++;var a=tia.getVideoOutput().monitor.getVideoStandardDetected();!a&&videoStandardAutoDetectionTries0?--c:a===controls.MIN_SPEED?c=0:a===controls.NORMAL_SPEED&&(c=SPEEDS.indexOf(1)),speedControl=SPEEDS[c],self.showOSD("Speed: "+(100*speedControl|0)+"%",!0),videoClockUpdateSpeed();break;case controls.SAVE_STATE_0:case controls.SAVE_STATE_1:case controls.SAVE_STATE_2:case controls.SAVE_STATE_3:case controls.SAVE_STATE_4:case controls.SAVE_STATE_5:case controls.SAVE_STATE_6:case controls.SAVE_STATE_7:case controls.SAVE_STATE_8:case controls.SAVE_STATE_9:case controls.SAVE_STATE_10:case controls.SAVE_STATE_11:case controls.SAVE_STATE_12:var d=self.systemPause(!0);saveStateSocket.saveState(255&a),d||self.systemPause(!1);break;case controls.SAVE_STATE_FILE:d=self.systemPause(!0),saveStateSocket.saveStateFile(),d||self.systemPause(!1);break;case controls.LOAD_STATE_0:case controls.LOAD_STATE_1:case controls.LOAD_STATE_2:case controls.LOAD_STATE_3:case controls.LOAD_STATE_4:case controls.LOAD_STATE_5:case controls.LOAD_STATE_6:case controls.LOAD_STATE_7:case controls.LOAD_STATE_8:case controls.LOAD_STATE_9:case controls.LOAD_STATE_10:case controls.LOAD_STATE_11:case controls.LOAD_STATE_12:d=self.systemPause(!0),saveStateSocket.loadState(255&a),d||self.systemPause(!1);break;case controls.VIDEO_STANDARD:videoStandardIsAuto?setVideoStandardForced(jt.VideoStandard.NTSC):videoStandard==jt.VideoStandard.NTSC?setVideoStandardForced(jt.VideoStandard.PAL):setVideoStandardAuto(!0),showVideoStandardMessage();break;case controls.VSYNCH:vSynchToggleMode();break;case controls.CARTRIDGE_FORMAT:cycleCartridgeFormat();break;case controls.DEFAULTS:setDefaults(),self.showOSD("Default Settings",!0)}},this.controlsStateReport=function(a){a[controls.POWER]=self.powerIsOn},this.eval=function(str){return eval(str)},init()},jt.JoystickButtons={J_UP:{button:"J_UP",mask:1,n:"UP"},J_DOWN:{button:"J_DOWN",mask:2,n:"DOWN"},J_LEFT:{button:"J_LEFT",mask:4,n:"LEFT"},J_RIGHT:{button:"J_RIGHT",mask:8,n:"RIGHT"},J_A:{button:"J_A",mask:16,n:"A"},J_B:{button:"J_B",mask:32,n:"B"},J_AB:{button:"J_AB",mask:48,n:"AB"},J_X:{button:"J_X",n:"X"},J_Y:{button:"J_Y",n:"Y"},J_L:{button:"J_L",n:"L"},J_R:{button:"J_R",n:"R"},J_BACK:{button:"J_BACK",n:"BACK"},J_START:{button:"J_START",n:"START"}},jt.ConsoleControls={JOY0_UP:11,JOY0_DOWN:12,JOY0_LEFT:13,JOY0_RIGHT:14,JOY0_BUTTON:15,JOY1_UP:21,JOY1_DOWN:22,JOY1_LEFT:23,JOY1_RIGHT:24,JOY1_BUTTON:25,PADDLE0_BUTTON:41,PADDLE1_BUTTON:42,PADDLE0_POSITION:16384,PADDLE1_POSITION:16896,POWER:51,BLACK_WHITE:52,SELECT:53,RESET:54,DIFFICULTY0:55,DIFFICULTY1:56,POWER_OFF:57,POWER_FRY:58,CARTRIDGE_FORMAT:91,DEBUG:101,TRACE:102,SHOW_INFO:103,NO_COLLISIONS:104,PAUSE:105,PAUSE_AUDIO_ON:106,FRAME:107,FAST_SPEED:111,SLOW_SPEED:112,INC_SPEED:113,DEC_SPEED:114,NORMAL_SPEED:115,MIN_SPEED:116,VIDEO_STANDARD:123,VSYNCH:124,DEFAULTS:130,SAVE_STATE_0:256,SAVE_STATE_1:257,SAVE_STATE_2:258,SAVE_STATE_3:259,SAVE_STATE_4:260,SAVE_STATE_5:261,SAVE_STATE_6:262,SAVE_STATE_7:263,SAVE_STATE_8:264,SAVE_STATE_9:265,SAVE_STATE_10:266,SAVE_STATE_11:267,SAVE_STATE_12:268,LOAD_STATE_0:512,LOAD_STATE_1:513,LOAD_STATE_2:514,LOAD_STATE_3:515,LOAD_STATE_4:516,LOAD_STATE_5:517,LOAD_STATE_6:518,LOAD_STATE_7:519,LOAD_STATE_8:520,LOAD_STATE_9:521,LOAD_STATE_10:522,LOAD_STATE_11:523,LOAD_STATE_12:524,SAVE_STATE_FILE:201},jt.ROM=function(a,b,c,d){"use strict";this.source=a,this.content=b,this.info=c||jt.CartridgeCreator.produceInfo(this,d),this.saveState=function(a){return{s:this.source,i:this.info,c:a?jt.Util.compressInt8BitArrayToStringBase64(this.content):null}}},jt.ROM.loadState=function(a){"use strict";var b=a.c?jt.Util.uncompressStringBase64ToInt8BitArray(a.c):null;return new jt.ROM(a.s,b,a.i)},jt.CartridgeDatabase={uncompress:function(){jt.CartridgeDatabase=JSON.parse(jt.Util.uncompressStringBase64ToString(this.data))}, data:"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" },jt.Cartridge=function(){"use strict";this.powerOn=function(){},this.powerOff=function(){},this.connectBus=function(a){},this.connectSaveStateSocket=function(a){},this.read=function(a){},this.write=function(a,b){},this.getDataDesc=function(){return null},this.needsBusMonitoring=function(){return!1},this.monitorBusBeforeRead=function(a){},this.monitorBusBeforeWrite=function(a,b){},this.needsAudioClock=function(){return!1},this.audioClockPulse=function(){},this.reinsertROMContent=function(){this.rom.content||(this.rom.content=this.bytes||[])},this.format=null,this.rom=null,this.bytes=null,this.saveState=function(){},this.loadState=function(a){}},jt.Cartridge.base=new jt.Cartridge,jt.Cartridge4K=function(a,b){"use strict";this.read=function(a){return c[a&d]},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c};var c,d=4095;a&&function(d){d.rom=a,d.format=b,c=new Array(4096),d.bytes=c;for(var e=a.content.length,f=0;f=1024&&d<=2047&&(e[d-1024]=b)};var c=function(a){return a&f};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),ra:jt.Util.compressInt8BitArrayToStringBase64(e)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,e)};var d,e=jt.Util.arrayFill(new Array(1024),0),f=4095;a&&function(c){c.rom=a,c.format=b,d=new Array(4096),c.bytes=d;for(var e=a.content.length,f=0;f=k&&b<2*k?l[b-k]:g[m+b]},this.write=function(a,b){var c=f(a);c=h&&b<=i&&(m=p*(b-h)),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(g),bo:m,bb:h,es:k,tb:i,s:0|n,sa:0|j,e:l&&jt.Util.compressInt8BitArrayToStringBase64(l)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),g=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,g),this.bytes=g,m=a.bo,h=a.bb,k=a.es,i=a.tb,n=!!a.s,j=!!a.sa,l=a.e&&jt.Util.uncompressStringBase64ToInt8BitArray(a.e,l)};var g,h,i,j,k,l,m=0,n=!1,o=4095,p=4096;a&&function(f){f.rom=a,f.format=b,g=a.content,f.bytes=g;var m=g.length/p;h=c,i=h+m-1,k=e,null==d||void 0==d?(n=!1,j=!0):(n=!!d,j=!1),l=!1!==d?jt.Util.arrayFill(new Array(k),0):null}(this)},jt.CartridgeBankedByMaskedRange.prototype=jt.Cartridge.base,jt.CartridgeBankedByMaskedRange.recreateFromSaveState=function(a,b){var c=b||new jt.CartridgeBankedByMaskedRange;return c.loadState(a),c},jt.Cartridge8K_E0=function(a,b){"use strict";this.read=function(a){var b=c(a);return b<1024?d[e+b]:b<2048?d[f+b-1024]:b<3072?d[g+b-2048]:d[4096+b]},this.write=function(a,b){c(a)};var c=function(a){var b=a&h;return b>=4064&&b<=4087&&(b<=4071?e=1024*(b-4064):b<=4079?f=1024*(b-4072):b<=4087&&(g=1024*(b-4080))),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),s0:e,s1:f,s2:g}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.s0,f=a.s1,g=a.s2};var d,e=0,f=0,g=0,h=4095;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d}(this)},jt.Cartridge8K_E0.prototype=jt.Cartridge.base,jt.Cartridge8K_E0.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_E0;return c.loadState(a),c},jt.Cartridge64K_F0=function(a,b){"use strict";this.read=function(a){var b=c(a);return d[e+b]},this.write=function(a,b){c(a)};var c=function(a){var b=a&f;return b==i&&(e+=h)>=g&&(e=0),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.bo};var d,e=0,f=4095,g=65536,h=4096,i=4080;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d}(this)},jt.Cartridge64K_F0.prototype=jt.Cartridge.base,jt.Cartridge64K_F0.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge64K_F0;return c.loadState(a),c},jt.Cartridge8K_FE=function(a,b){"use strict";this.read=function(a){var b=c(a);return d[e+b]},this.write=function(a,b){c(a)};var c=function(a){return 0!=(8192&a)?0!==e&&(e=0):e!=g&&(e=g),a&f};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.bo};var d,e=0,f=4095,g=4096;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d}(this)},jt.Cartridge8K_FE.prototype=jt.Cartridge.base,jt.Cartridge8K_FE.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_FE;return c.loadState(a),c},jt.Cartridge16K_E7=function(a,b){"use strict";this.read=function(a){var b=c(a);return b>=2304&&b<=2559?g[i+b-2304]:h&&b>=1024&&b<=2047?g[b-1024]:b=2048&&d<=2303?g[i+d-2048]=b:h&&d<=1023&&(g[d]=b)};var c=function(a){var b=a&j;return b>=4064&&b<=4075&&(b<=4070?e=k*(b-4064):4071==b?h=!0:b<=4075&&(i=f+n*(b-4072))),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e,rs:h,ro:i,ra:jt.Util.compressInt8BitArrayToStringBase64(g)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.bo,h=a.rs,i=a.ro,g=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,g)};var d,e=0,f=1024,g=jt.Util.arrayFill(new Array(2048),0),h=!1,i=f,j=4095,k=2048,l=2048,m=16384-k-l,n=256;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d}(this)},jt.Cartridge16K_E7.prototype=jt.Cartridge.base,jt.Cartridge16K_E7.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge16K_E7;return c.loadState(a),c},jt.Cartridge10K_DPCa=function(a,b){"use strict";this.powerOn=function(){x=o,y=0},this.connectBus=function(a){k=a.getTia().getAudioOutput().getChannel0()},this.needsAudioClock=function(){return!0},this.read=function(a){var b=c(a);return b<=63||b>=2048&&b<=2111?e(255&b):l[q+b]},this.write=function(a,b){var d=c(a);(d>=64&&d<=127||d>=2112&&d<=2175)&&f(255&d,b)},this.audioClockPulse=function(){if((y+x|0)>(0|y))for(var a=5;a<=7;a++)w[a]&&(s[a]--,255==(255&s[a])&&g(a,65280&s[a]|t[a]),i(a),z||(z=!0));y+=x,z&&(d(),k.setVolume(A))};var c=function(a){var b=a&n;return 4088===b?q=0:4089===b&&(q=4096),b},d=function(){A=m[(w[5]?4&v[5]:0)|(w[6]?2&v[6]:0)|(w[7]?1&v[7]:0)],z=!1},e=function(a){var b;return a>=0&&a<=3?(j(),r):a>=4&&a<=7?(z&&d(),A):a>=8&&a<=15?(b=l[p-s[a-8]],h(a-8),b):a>=16&&a<=23?(b=l[p-s[a-16]]&v[a-16],h(a-16),b):a>=24&&a<=31?(b=l[p-s[a-24]]&v[a-24],h(a-24), b=240&b|15&b):a>=32&&a<=39?(b=l[p-s[a-32]]&v[a-32],h(a-32),b=128&b|64&b|32&b|16&b|8&b|4&b|2&b|1&b):a>=40&&a<=47?(b=l[p-s[a-40]]&v[a-40],h(a-40),b=255&(b>>>1|b<<7)):a>=48&&a<=55?(b=l[p-s[a-48]]&v[a-48],h(a-48),b=255&(b<<1|b>>7&1)):a>=56&&a<=63?v[a-56]:0},f=function(a,b){if(a>=64&&a<=71){var c=a-64;return t[c]=b,void((255&s[c])===t[c]&&(v[c]=255))}return a>=72&&a<=79?(u[a-72]=b,void(v[a-72]=0)):a>=80&&a<=87?void g(a-80,65280&s[a-80]|255&b):a>=88&&a<=91?void g(a-88,255&s[a-88]|(7&b)<<8):92==a?void g(4,255&s[4]|(7&b)<<8):a>=93&&a<=95?(g(a-88,(255&s[a-88])+((7&b)<<8)),void(w[a-88]=(16&b)>>>4)):void(a>=96&&a<=103||a>=112&&a<=119&&(r=0))},g=function(a,b){s[a]=b},h=function(a){var b=s[a]-1;b<0&&(b=2047),g(a,b),i(a)},i=function(a){var b=255&s[a];b==t[a]?v[a]=255:b==u[a]&&(v[a]=0)},j=function(){255===(r=255&(r<<1|1&~(r>>7^r>>5^r>>4^r>>3)))&&(r=0)};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(l),bo:q,rn:r,fp:jt.Util.compressInt8BitArrayToStringBase64(s),fs:jt.Util.compressInt8BitArrayToStringBase64(t),fe:jt.Util.compressInt8BitArrayToStringBase64(u),fm:jt.Util.compressInt8BitArrayToStringBase64(v),a:jt.Util.compressInt8BitArrayToStringBase64(w)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),l=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,l),this.bytes=l,q=a.bo,r=a.rn,s=jt.Util.uncompressStringBase64ToInt8BitArray(a.fp,s),t=jt.Util.uncompressStringBase64ToInt8BitArray(a.fs,t),u=jt.Util.uncompressStringBase64ToInt8BitArray(a.fe,u),v=jt.Util.uncompressStringBase64ToInt8BitArray(a.fm,v),w=jt.Util.uncompressStringBase64ToInt8BitArray(a.a,w)};var k,l,m=[0,5,5,10,5,10,10,15],n=4095,o=.62,p=10239,q=0,r=0,s=jt.Util.arrayFill(new Array(8),0),t=jt.Util.arrayFill(new Array(8),0),u=jt.Util.arrayFill(new Array(8),0),v=jt.Util.arrayFill(new Array(8),0),w=jt.Util.arrayFill(new Array(8),0),x=o,y=0,z=!0,A=0;a&&function(c){c.rom=a,c.format=b,l=a.content,c.bytes=l}(this)},jt.Cartridge10K_DPCa.prototype=jt.Cartridge.base,jt.Cartridge10K_DPCa.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge10K_DPCa;return c.loadState(a),c},jt.Cartridge24K_28K_32K_FA2=function(a,b,c){"use strict";var d=this;this.connectBus=function(a){k=a},this.connectSaveStateSocket=function(a){l=a},this.read=function(a){var b,c=e(a);if(b=c>=256&&c<512?r[c-256]:m[p+c],c!==x)return b;if(0===t){var d=r[y];if(1===d||2===d)return f(d),64|b}return 0===t?191&b:(i(),0!==t?64|b:191&b)},this.write=function(a,b){var c=e(a);c<256&&(r[c]=b)};var e=function(a){var b=a&v;return b>=q&&b<=n&&(p=o+w*(b-q)),b},f=function(a){t=a,s=0,1===a?g():2===a&&h()},g=function(){if(k.getTia().getVideoOutput().showOSD("Reading from Cartridge Flash Memory...",!0),l){var a=l.getMedia().loadResource(j());a&&(u=jt.Util.uncompressStringBase64ToInt8BitArray(a,u))}jt.Util.arrayCopy(u,0,r)},h=function(){k.getTia().getVideoOutput().showOSD("Writing to Cartridge Flash Memory...",!0),jt.Util.arrayCopy(r,0,u),l&&l.getMedia().saveResource(j(),jt.Util.compressInt8BitArrayToStringBase64(u))},i=function(){++s>140&&(s=0,t=0,r[y]=0,k.getTia().getVideoOutput().showOSD("Done.",!0),l&&l.externalStateChange())},j=function(){return"hfm"+d.rom.info.h};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(m),rs:o,bo:p,tb:n,e:jt.Util.compressInt8BitArrayToStringBase64(r),ho:t,ht:s}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),m=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,m),this.bytes=m,o=a.rs||0,p=a.bo,n=a.tb,r=jt.Util.uncompressStringBase64ToInt8BitArray(a.e,r),t=a.ho||0,s=a.ht||0};var k,l,m,n,o=0,p=0,q=4085,r=jt.Util.arrayFill(new Array(256),0),s=0,t=0,u=jt.Util.arrayFill(new Array(256),0),v=4095,w=4096,x=4084,y=255;a&&function(d){d.rom=a,d.format=b,m=a.content,d.bytes=m,o=c||0,p=o;var e=(m.length-o)/w;n=q+e-1}(this)},jt.Cartridge24K_28K_32K_FA2.prototype=jt.Cartridge.base,jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge24K_28K_32K_FA2;return c.loadState(a),c},jt.CartridgeBankedByBusMonitoring=function(a,b){"use strict";this.needsBusMonitoring=function(){return!0},this.monitorBusBeforeRead=function(a){this.performBankSwitchOnMonitoredAccess(a)},this.monitorBusBeforeWrite=function(a,b){this.performBankSwitchOnMonitoredAccess(a)},this.performBankSwitchOnMonitoredAccess=function(a){}},jt.CartridgeBankedByBusMonitoring.prototype=jt.Cartridge.base,jt.CartridgeBankedByBusMonitoring.base=new jt.CartridgeBankedByBusMonitoring,jt.Cartridge8K_512K_3F=function(a,b){"use strict";this.read=function(a){var b=a&g;return b>=i?c[e+b]:c[f+b]},this.monitorBusBeforeWrite=function(a,b){if(a<=63){var c=255&b;c<=d&&(f=c*h)}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c),bo:f,sm:d,fo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,f=a.bo,d=a.sm,e=a.fo};var c,d,e,f=0,g=4095,h=2048,i=2048;a&&function(f){f.rom=a,f.format=b,c=a.content,f.bytes=c,d=(c.length-h)/h-1,e=c.length-2*h}(this)},jt.Cartridge8K_512K_3F.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_512K_3F.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_512K_3F;return c.loadState(a),c},jt.Cartridge8K_512K_3E=function(a,b){"use strict";this.read=function(a){var b=c(a);return b>=m?d[f+b]:i>=0&&b<1024?j[i+b]||0:d[h+b]},this.write=function(a,b){if(!(i<0)){var d=c(a);d>=1024&&d<=2047&&(j[i+d-1024]=b)}};var c=function(a){return a&k};this.monitorBusBeforeWrite=function(a,b){if(63===a){var c=255&b;return void(c<=e&&(h=c*l,i=-1))}if(62===a){i=(255&b)*g}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:h,sm:e,fo:f,ro:i,ra:jt.Util.compressInt8BitArrayToStringBase64(j)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,h=a.bo,e=a.sm,f=a.fo,i=a.ro,j=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,j)};var d,e,f,g=1024,h=0,i=-1,j=jt.Util.arrayFill(new Array(g),0),k=4095,l=2048,m=2048;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d,e=(d.length-l)/l-1,f=d.length-2*l}(this)},jt.Cartridge8K_512K_3E.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_512K_3E.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_512K_3E;return c.loadState(a),c},jt.Cartridge8K_256K_SB=function(a,b){"use strict";this.read=function(a){return c[e+(a&f)]},this.performBankSwitchOnMonitoredAccess=function(a){if(2048==(6144&a)){var b=127&a;b>d||(e=b*g)}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c),bo:e,m:d}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,e=a.bo,d=a.m};var c,d,e=0,f=4095,g=4096;a&&function(e){e.rom=a,e.format=b,c=a.content,e.bytes=c,d=c.length/g-1}(this)},jt.Cartridge8K_256K_SB.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_256K_SB.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_256K_SB;return c.loadState(a),c},jt.Cartridge8K_64K_AR=function(a,b){"use strict";this.powerOn=function(){g(0),D=0},this.connectBus=function(a){c=a},this.read=function(a){return f=K&&f0?void(a!==s&&(s=a,0==--t&&(a&R)===S&&(f>2&7){case 0:o=2*M,p=N;break;case 1: @@ -290,9 +290,9 @@ return new jt.CartridgeBankedByMaskedRange(a,this,4086,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},F4:{name:"F4",desc:"32K Atari (+RAM)",priority:101,tryFormat:function(a){if(32768===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4084,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},FA2cu:{name:"FA2cu",desc:"32K CBS RAM+ CU Image",priority:103,tryFormat:function(a){if(32768===a.content.length){var b=jt.Util.arraysEqual(a.content.slice(32,36),this.cuMagicWord);return this.priority=103-(b?30:0),this}},createCartridgeFromRom:function(a){return new jt.Cartridge24K_28K_32K_FA2(a,this,1024)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState(a,b)},cuMagicWord:[30,171,173,16]},FA2:{name:"FA2",desc:"24K/28K/32K CBS RAM+",priority:102,tryFormat:function(a){if(24576===a.content.length||28672===a.content.length||32768===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge24K_28K_32K_FA2(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState(a,b)}},FA:{name:"FA",desc:"12K CBS RAM Plus",priority:101,tryFormat:function(a){if(12288===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4088,!0,256)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},EF:{name:"EF",desc:"8K-64K H. Runner (+RAM)",priority:114,tryFormat:function(a){if(a.content.length%4096==0&&a.content.length>=8192&&a.content.length<=65536)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4064,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},DPC:{name:"DPC",desc:"10K DPC Pitfall 2 (Enhanced)",priority:101,tryFormat:function(a){if(a.content.length>=10240&&a.content.length<=10496)return this},createCartridgeFromRom:function(a){return new jt.Cartridge10K_DPCa(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge10K_DPCa.recreateFromSaveState(a,b)}},"3F":{name:"3F",desc:"8K-512K Tigervision",priority:112,tryFormat:function(a){if(a.content.length%2048==0&&a.content.length>=2048&&a.content.length<=524288)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_512K_3F(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_512K_3F.recreateFromSaveState(a,b)}},"3E":{name:"3E",desc:"8K-512K Tigervision (+RAM)",priority:111,tryFormat:function(a){if(a.content.length%2048==0&&a.content.length>=2048&&a.content.length<=524288)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_512K_3E(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_512K_3E.recreateFromSaveState(a,b)}},X07:{name:"X07",desc:"64K AtariAge",priority:102,tryFormat:function(a){if(65536===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge64K_X07(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge64K_X07.recreateFromSaveState(a,b)}},"0840":{name:"0840",desc:"8K Econobanking",priority:116,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_0840(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_0840.recreateFromSaveState(a,b)}},UA:{name:"UA",desc:"8K UA Limited",priority:115,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_UA(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_UA.recreateFromSaveState(a,b)}},SB:{name:"SB",desc:"8K-256K Superbanking",priority:113,tryFormat:function(a){if(a.content.length%4096==0&&a.content.length>=8192&&a.content.length<=262144)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_256K_SB(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_256K_SB.recreateFromSaveState(a,b)}},AR:{name:"AR",desc:"8K-64K Arcadia/Supercharger",priority:101,tryFormat:function(a){if(a.content.length%jt.Cartridge8K_64K_AR.PART_SIZE==0&&a.content.length/jt.Cartridge8K_64K_AR.PART_SIZE>=1&&a.content.length/jt.Cartridge8K_64K_AR.PART_SIZE<=8&&jt.Cartridge8K_64K_AR.checkTape(a))return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_64K_AR(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_64K_AR.recreateFromSaveState(a,b)}}},jt.CartridgeFormatsUserOptions=["4K","CV","E0","F0","FE","E7","F8","F6","F4","FA2cu","FA2","FA","EF","DPC","3F","3E","X07","0840","UA","SB","AR"],jt.CartridgeCreatorImpl=function(){"use strict";this.createCartridgeFromRom=function(b){var c=a.getForROM(b);if(c){var d=jt.CartridgeFormats[c];if(d.tryFormat(b))return jt.Util.log("USER Format selected: "+d.desc),d.createCartridgeFromRom(b)}var e=this.getBestFormatOption(b);if(e)return jt.Util.log("AUTO Format selected: "+e.name+": "+e.desc+", priority: "+e.priority+(e.priorityBoosted?" ("+e.priorityBoosted+")":"")),e.createCartridgeFromRom(b)},this.recreateCartridgeFromSaveState=function(a,b){var c=jt.CartridgeFormats[a.f];if(!c)throw new Error("Unsupported ROM Format: "+a.f);return b&&b.format!==c&&(b=null),c.recreateCartridgeFromSaveState(a,b)},this.changeCartridgeFormat=function(a,b){return b.createCartridgeFromRom(a.rom)},this.getBestFormatOption=function(a){var c=b(a);return 0===c.length?void 0:c[0]},this.getUserFormatOptionNames=function(a){for(var b=[],c=0,d=jt.CartridgeFormatsUserOptions.length;ce&&a.content.splice(e);var g=jt.CartridgeDatabase[f];return g?jt.Util.log(g.n+" ("+f+")"):(g=c(a.source),jt.Util.log("Unknown ROM: "+g.n+" ("+f+")")),d(g,a.source,f,b),g},this.setUserROMFormats=function(b){a=b};var a,b=function(a){var b,c,d=[];for(var f in jt.CartridgeFormats)try{if(!(b=jt.CartridgeFormats[f].tryFormat(a)))continue;e(b,a.info),d.push(b)}catch(a){if(!a.formatDenial)throw a;c||(c=a)}return d.sort(function(a,b){return(a.priorityBoosted||a.priority)-(b.priorityBoosted||b.priority)}),d},c=function(a){var b={n:"Unknown"};if(!a||!a.trim())return b;var c=a,d=c.lastIndexOf("/"),e=c.lastIndexOf("\\"),f=c.lastIndexOf("?"),g=Math.max(d,Math.max(e,f));g>=0&&g=0&&(c=c.substring(0,h)),b.n=c.trim()||"Unknown",b},d=function(a,b,c,d){a.h=c,a.l||(a.l=f(a.n));var e=a.n.toUpperCase();a:if(!a.p&&(a.p=0,!e.match(l+"JOYSTICK(S)?"+m)))if(e.match(l+"PADDLE(S)?"+m))a.p=1;else for(var n=0;n=1?b:1,dividerCounter>divider&&(dividerCounter=divider)},pulse=function(){animationFrame=null,divider>1?--dividerCounter<=0&&(dividerCounter=divider,clockPulse()):clockPulse(),useRequestAnimationFrame&&!animationFrame&&(animationFrame=requestAnimationFrame(pulse))};this.detectHostNativeFPSAndCallback=function(a){function b(){vSynchNativeFrequency=-1,jt.Util.error("Could not detect video native frequency. V-Synch DISABLED!"),a&&a(vSynchNativeFrequency)}if(-1===Javatari.SCREEN_VSYNCH_MODE)return jt.Util.warning("Video native V-Synch disabled in configuration"),void(a&&a(vSynchNativeFrequency));if(-1!==Javatari.SCREEN_FORCE_HOST_NATIVE_FPS)return jt.Util.warning("Host video frequency forced in configuration: "+Javatari.SCREEN_FORCE_HOST_NATIVE_FPS),void(a&&a(vSynchNativeFrequency));if(!window.requestAnimationFrame)return b();var c=0,d=0,e=0,f=0,g=0,h=0,i=function(){if(e>=12||f>=18||g>=14||h>=18)return vSynchNativeFrequency=e>=12?60:f>=18?50:g>=14?120:100,jt.Util.log("Video native frequency detected: "+vSynchNativeFrequency+"Hz"),void(a&&a(vSynchNativeFrequency));if(!(++c<=70))return b();var j=jt.Util.performanceNow(),k=1e3/(j-d);d=j,k>=47&&k<=53&&f++,k>=56.4&&k<=63.6&&e++,k>=112.8&&k<=127.2&&g++,k>=94&&k<=106&&h++,requestAnimationFrame(i)};i()},this.eval=function(str){return eval(str)};var running=!1,cyclesPerSecond=1,cycleTimeMs=1e3,divider=1,dividerCounter=1,useRequestAnimationFrame,animationFrame=null,interval=null,vSynch=!0,vSynchNativeFrequency=-1===Javatari.SCREEN_VSYNCH_MODE?-1:Javatari.SCREEN_FORCE_HOST_NATIVE_FPS,vSynchAltNativeFrequency=void 0},jt.RecentStoredROMs=function(){function a(){if(!e){try{e=JSON.parse(localStorage.javataristoredromsdata)}catch(a){}e||b()}return e}function b(){d=[],localStorage.javataristoredromsicatalog=JSON.stringify(d),e=[],localStorage.javataristoredromsdata=JSON.stringify(e)}this.getCatalog=function(){if(!d){try{d=JSON.parse(localStorage.javataristoredromsicatalog)}catch(a){}d||b()}return d},this.storeROM=function(b){this.getCatalog();var c=d.find(function(a){return a&&a.h===b.info.h});if(c&&c.n==b.info.l&&c.f==b.info.f)this.lastROMLoadedIndex=d.indexOf(c);else{if(a(),c){var g=d.indexOf(c);d.splice(g,1),e.splice(g,1)}else d.length>=f&&(d=d.slice(0,f-1),e=e.slice(0,f-1));d.unshift({n:b.info.l,h:b.info.h,f:b.info.f});for(var h=0;h0&&(1===b.length?l.readFromFile(b[0],r,s,t,u,d):l.readFromFiles(b,r,s,t,u,d)),!1}}function h(a){a.returnValue=!1,a.preventDefault(),a.stopPropagation(), a.dataTransfer&&(Javatari.CARTRIDGE_CHANGE_DISABLED?a.dataTransfer.dropEffect="none":a.ctrlKey?a.dataTransfer.dropEffect="copy":a.altKey&&(a.dataTransfer.dropEffect="link")),v=a.buttons>0?a.buttons:w}function i(a){if(a.returnValue=!1,a.preventDefault(),a.stopPropagation(),a.target.focus(),a.dataTransfer&&!c.mediaChangeDisabledWarning()){var b=m.systemPause(!0),d=a.shiftKey?1:0,e=v&x,f=a.ctrlKey,g=y.AUTO,h=a.dataTransfer&&a.dataTransfer.files,i=function(a){b||m.systemPause(!1)};if(h&&h.length>0)1===h.length?l.readFromFile(h[0],g,d,e,f,i):l.readFromFiles(h,g,d,e,f,i);else{var j=a.dataTransfer.getData("text");j&&j.length>0?l.readFromURL(j,g,d,e,f,i):i()}}}function j(a){jt.Util.message("Could not load file(s):\n\n"+a+"\n")}function k(){p=document.createElement("input"),p.id="jt-file-loader-input",p.type="file",p.multiple=!0,p.accept=z.AUTO,p.style.display="none",p.addEventListener("change",g),q.appendChild(p)}var l=this;this.connect=function(a){m=a,n=m.getCartridgeSocket(),o=m.getSavestateSocket()},this.registerForDnD=function(a){a.addEventListener("dragover",h,!1),a.addEventListener("drop",i,!1)},this.registerForFileInputElement=function(a){q=a},this.openFileChooserDialog=function(a,b,c,d){p||k(),p.multiple=A[y[a]||y.AUTO],p.accept=z[y[a]||y.AUTO],r=a,s=c?1:0,t=b,u=d,p.click()},this.openURLChooserDialog=function(a,b,c,d){var e,f=c?1:0;try{e=localStorage&&localStorage[C]}catch(a){}var g=m.systemPause(!0);if(e=prompt("Load file from URL:",e||""),e=e&&e.toString().trim()){try{localStorage[C]=e}catch(a){}this.readFromURL(e,a,f,b,d,function(){g||m.systemPause(!1)})}else g||m.systemPause(!1)},this.readFromFile=function(a,b,c,d,e,f){jt.Util.log("Reading file: "+a.name);var g=new FileReader;g.onload=function(g){var h=new Uint8Array(g.target.result),i={name:a.name,content:h,lastModifiedDate:a.lastModified?new Date(a.lastModified):a.lastModifiedDate};l.loadFromFile(i,b,c,d,e),f&&f(!0)},g.onerror=function(a){j("File reading error: "+a.target.error.name+D),f&&f(!1)},g.readAsArrayBuffer(a)},this.readFromURL=function(a,b,c,d,e,f){new jt.MultiDownloader([{url:a}],function(g){var h={name:a,content:g[0].content,lastModifiedDate:null};l.loadFromFile(h,b,c,d,e),f&&f(!0)},function(a){j("URL reading error: "+a[0].error),f&&f(!1)}).start()},this.readFromFiles=function(a,b,c,d,e,f){new jt.MultiFileReader(a,function(a){l.loadFromFiles(a,b,c,d,e),f&&f(!0)},function(a,b,c){c||(b+=D),j("File reading error: "+b),f&&f(!1)}).start()},this.loadFromContent=function(a,b,c,d,e,f,g){return this.loadFromFile({name:a,content:b},c,d,e,f,g)},this.loadFromFile=function(a,b,c,e,f,g){var h;if(h=jt.Util.checkContentIsZIP(a.content))try{if(d(jt.Util.getZIPFilesSorted(h),b,c,e,f,g,!0))return}catch(a){jt.Util.error(a)}else if(d([a],b,c,e,f,g,!1))return;j("No valid "+B[b]+" found.")},this.loadFromFiles=function(a,b,c,e,f){a=jt.Util.asNormalArray(a).slice(0),a.sort(function(a,b){return a.nameb.name?1:0}),d(a,b,c,e,f,null,!1)||j("No valid "+B[b]+" found.")},this.loadROM=function(a,c,d,e){var f=jt.CartridgeCreator.createCartridgeFromRom(a);return!!f&&(n.insert(f,!d),b.storeROM(a),!0)};var m,n,o,p,q,r,s=0,t=!1,u=!1,v=1,w=1,x=2,y=jt.FileLoader.OPEN_TYPE;this.OPEN_TYPE=y;var z={ROM:".bin,.BIN,.rom,.ROM,.a26,.A26,.zip,.ZIP,.gz,.GZ,.gzip,.GZIP",STATE:".jst,.JST",CART_DATA:".dat,.DAT,.sram,.SRAM",AUTO:".bin,.BIN,.rom,.ROM,.a26,.A26,.jst,.JST,.zip,.ZIP,.gz,.GZ,.gzip,.GZIP"},A={ROM:!1,STATE:!1,CART_DATA:!1,AUTO:!1},B={ROM:"ROM",STATE:"Savestate",CART_DATA:"Cartridge Data",AUTO:"ROM"},C="javatarilasturl",D="\n\nIMPORTANT: Directories are not supported for loading!";Javatari.fileLoader=this},jt.FileLoader.OPEN_TYPE={AUTO:"AUTO",ROM:"ROM",STATE:"STATE",CART_DATA:"CART_DATA"},jt.FileDownloader=function(){"use strict";function a(){if("NONE"===c)return alert("Unfortunately file saving in WebApps is broken in this version of iOS. The file could not be saved. If you really need to save a file, you must run Javatari on the official homepage."),!0}function b(){"NONE"!==(c=jt.Util.isIOSDevice()?jt.Util.isBrowserStandaloneMode()?"NONE":"DATA":"SAFARI"===jt.Util.browserInfo().name?"DATA":"BLOB")&&(d=document.createElement("a"),d.style.display="none",d.target="_blank",d.href="#",e.appendChild(d))}this.connectPeripherals=function(a){f=a},this.registerForDownloadElement=function(a){e=a},this.startDownloadBinary=function(e,g,h){try{if(c||b(),a())return;var i;if("BLOB"===c){d.href&&(window.URL||window.webkitURL).revokeObjectURL(d.href);var j=new Blob([g],{type:"data:application/octet-stream"});i=(window.URL||window.webkitURL).createObjectURL(j)}else i="data:application/octet-stream;base64,"+btoa("string"==typeof g?g:jt.Util.int8BitArrayToByteString(g));d.download=e&&e.trim(),d.href=i,d.click(),f.showOSD(h+" saved",!0)}catch(a){f.showOSD(h+" save FAILED!",!0,!0),jt.Util.error(a)}},this.startDownloadURL=function(e,g,h){try{if(c||b(),a())return;"BLOB"===c&&d.href&&(window.URL||window.webkitURL).revokeObjectURL(d.href),d.download=e&&e.trim(),d.href=g,d.click(),f.showOSD(h+" saved",!0)}catch(a){f.showOSD(h+" save FAILED!",!0,!0),jt.Util.error(a)}};var c,d,e,f},jt.DOMKeys={},jt.DOMKeys.MOD_SHIFT=16,jt.DOMKeys.LOC_SHIFT=24,jt.DOMKeys.SHIFT=65536,jt.DOMKeys.CONTROL=131072,jt.DOMKeys.ALT=262144,jt.DOMKeys.META=524288,jt.DOMKeys.LOCNONE=0,jt.DOMKeys.LOCLEFT=16777216,jt.DOMKeys.LOCRIGHT=33554432,jt.DOMKeys.LOCNUM=50331648,jt.DOMKeys.IGNORE_ALL_MODIFIERS_MASK=~(jt.DOMKeys.SHIFT|jt.DOMKeys.CONTROL|jt.DOMKeys.ALT|jt.DOMKeys.META),function(a,b,c,d){a.VK_F1={c:112,n:"F1"},a.VK_F2={c:113,n:"F2"},a.VK_F3={c:114,n:"F3"},a.VK_F4={c:115,n:"F4"},a.VK_F5={c:116,n:"F5"},a.VK_F6={c:117,n:"F6"},a.VK_F7={c:118,n:"F7"},a.VK_F8={c:119,n:"F8"},a.VK_F9={c:120,n:"F9"},a.VK_F10={c:121,n:"F10"},a.VK_F11={c:122,n:"F11"},a.VK_F12={c:123,n:"F12"},a.VK_1={c:49,n:"1"},a.VK_2={c:50,n:"2"},a.VK_3={c:51,n:"3"},a.VK_4={c:52,n:"4"},a.VK_5={c:53,n:"5"},a.VK_6={c:54,n:"6"},a.VK_7={c:55,n:"7"},a.VK_8={c:56,n:"8"},a.VK_9={c:57,n:"9"},a.VK_0={c:48,n:"0"},a.VK_Q={c:81,n:"Q"},a.VK_W={c:87,n:"W"},a.VK_E={c:69,n:"E"},a.VK_R={c:82,n:"R"},a.VK_T={c:84,n:"T"},a.VK_Y={c:89,n:"Y"},a.VK_U={c:85,n:"U"},a.VK_I={c:73,n:"I"},a.VK_O={c:79,n:"O"},a.VK_P={c:80,n:"P"},a.VK_A={c:65,n:"A"},a.VK_S={c:83,n:"S"},a.VK_D={c:68,n:"D"},a.VK_F={c:70,n:"F"},a.VK_G={c:71,n:"G"},a.VK_H={c:72,n:"H"},a.VK_J={c:74,n:"J"},a.VK_K={c:75,n:"K"},a.VK_L={c:76,n:"L"},a.VK_Z={c:90,n:"Z"},a.VK_X={c:88,n:"X"},a.VK_C={c:67,n:"C"},a.VK_V={c:86,n:"V"},a.VK_B={c:66,n:"B"},a.VK_N={c:78,n:"N"},a.VK_M={c:77,n:"M"},a.VK_ESCAPE={c:27,n:"Esc"},a.VK_ENTER={c:13,n:"Enter"},a.VK_SPACE={c:32,n:"Space"},a.VK_TAB={c:9,n:"Tab"},a.VK_BACKSPACE={c:8,n:"BackSpc"},a.VK_CONTEXT={c:93,n:"Context"},a.VK_LSHIFT={c:16|b,n:"L-Shift"},a.VK_LCONTROL={c:17|b,n:"L-Control"},a.VK_LALT={c:18|b,n:"L-Alt"},a.VK_LMETA={c:91|b,n:"L-Meta"},a.VK_RSHIFT={c:16|c,n:"R-Shift"},a.VK_RCONTROL={c:17|c,n:"R-Control"},a.VK_RALT={c:18|c,n:"R-Alt"},a.VK_RMETA={c:91|c,n:"R-Meta"},a.VK_CAPS_LOCK={c:20,n:"CapsLock"},a.VK_PRINT_SCREEN={c:44,n:"PrtScr"},a.VK_SCROLL_LOCK={c:145,n:"ScrLck"},a.VK_PAUSE={c:19,n:"Pause"},a.VK_BREAK={c:3,n:"Break"},a.VK_INSERT={c:45,n:"Ins"},a.VK_DELETE={c:46,n:"Del"},a.VK_HOME={c:36,n:"Home"},a.VK_END={c:35,n:"End"},a.VK_PAGE_UP={c:33,n:"PgUp"},a.VK_PAGE_DOWN={c:34,n:"PgDown"},a.VK_NUM_INSERT={c:45|d,n:"Num Ins"},a.VK_NUM_DELETE={c:46|d,n:"Num Del"},a.VK_NUM_HOME={c:36|d,n:"Num Home"},a.VK_NUM_END={c:35|d,n:"Num End"},a.VK_NUM_PAGE_UP={c:33|d,n:"Num PgUp"},a.VK_NUM_PAGE_DOWN={c:34|d,n:"Num PgDown"},a.VK_UP={c:38,n:"Up"},a.VK_DOWN={c:40,n:"Down"},a.VK_LEFT={c:37,n:"Left"},a.VK_RIGHT={c:39,n:"Right"},a.VK_NUM_UP={c:38|d,n:"Num Up"},a.VK_NUM_DOWN={c:40|d,n:"Num Down"},a.VK_NUM_LEFT={c:37|d,n:"Num Left"},a.VK_NUM_RIGHT={c:39|d,n:"Num Right"},a.VK_NUMLOCK={c:144,n:"NumLock"},a.VK_NUM_COMMA={c:110|d,n:"Num ,"},a.VK_NUM_DIVIDE={c:111|d,n:"Num /"},a.VK_NUM_MULTIPLY={c:106|d,n:"Num *"},a.VK_NUM_MINUS={c:109|d,n:"Num -"},a.VK_NUM_PLUS={ -c:107|d,n:"Num +"},a.VK_NUM_PERIOD={c:194|d,n:"Num ."},a.VK_NUM_0={c:96|d,n:"Num 0"},a.VK_NUM_1={c:97|d,n:"Num 1"},a.VK_NUM_2={c:98|d,n:"Num 2"},a.VK_NUM_3={c:99|d,n:"Num 3"},a.VK_NUM_4={c:100|d,n:"Num 4"},a.VK_NUM_5={c:101|d,n:"Num 5"},a.VK_NUM_6={c:102|d,n:"Num 6"},a.VK_NUM_7={c:103|d,n:"Num 7"},a.VK_NUM_8={c:104|d,n:"Num 8"},a.VK_NUM_9={c:105|d,n:"Num 9"},a.VK_NUM_CLEAR={c:12|d,n:"Num Clear"},a.VK_NUM_ENTER={c:13|d,n:"Num Enter"},a.VK_QUOTE={c:222,n:"'"},a.VK_BACKQUOTE={c:192,n:"`"},a.VK_MINUS={c:189,n:"-"},a.VK_EQUALS={c:187,n:"="},a.VK_OPEN_BRACKET={c:219,n:"["},a.VK_CLOSE_BRACKET={c:221,n:"]"},a.VK_COMMA={c:188,n:","},a.VK_PERIOD={c:190,n:"."},a.VK_SEMICOLON={c:186,n:";"},a.VK_SLASH={c:191,n:"/"},a.VK_BACKSLASH={c:220,n:"\\"},a.VK_ALTERNATE_ESC={c:a.VK_F1.c|jt.DOMKeys.ALT,n:["Alt","F1"]},a.VK_FF_MINUS={c:173,n:"-"},a.VK_FF_EQUALS={c:61,n:"="},a.VK_FF_SEMICOLON={c:59,n:";"},a.VK_BR_QUOTE={c:192,n:"'"},a.VK_BR_OPEN_BRACKET={c:221,n:"["},a.VK_BR_CLOSE_BRACKET={c:220,n:"]"},a.VK_BR_SEMICOLON={c:191,n:";"},a.VK_BR_SLASH={c:193,n:"/"},a.VK_BR_BACKSLASH={c:226,n:"\\"},a.VK_BR_CEDILLA={c:186,n:"Ç"},a.VK_BR_TILDE={c:222,n:"~"},a.VK_BR_ACUTE={c:219,n:"´"},a.VK_FF_BR_TILDE={c:176,n:"~"},a.VK_VOID={c:-1,n:""}}(jt.DOMKeys,jt.DOMKeys.LOCLEFT,jt.DOMKeys.LOCRIGHT,jt.DOMKeys.LOCNUM),jt.DOMKeys.forcedNames={27:"Esc",13:"Enter",32:"Space",9:"Tab",8:"BkSpc",16:"Shift",17:"Ctrl",18:"Alt",91:"Meta",93:"Context",20:"Caps",44:"PrtScr",145:"ScrLck",19:"Pause",3:"Break",45:"Ins",46:"Del",36:"Home",35:"End",33:"PgUp",34:"PgDown",38:"Up",40:"Down",37:"Left",39:"Right"},jt.DOMKeys.isModifierKeyCode=function(a){return 16===a||17===a||18===a||91===a},jt.DOMKeys.codeForKeyboardEvent=function(a){var b=a.keyCode;return this.isModifierKeyCode(b)?b&this.IGNORE_ALL_MODIFIERS_MASK|a.location<12&&(c=c.substr(0,12)),a.location){case 1:c="L-"+c;break;case 2:c="R-"+c;break;case 3:c="Num "+c}return(a.shiftKey||a.ctrlKey||a.altKey||a.metaKey)&&(c=[c],a.metaKey&&c.unshift("Meta"),a.altKey&&c.unshift("Alt"),a.ctrlKey&&c.unshift("Ctrl"),a.shiftKey&&c.unshift("Shift")),c},jt.DOMKeys.nameForKeyboardEventSingle=function(a){var b=a.keyCode,c=this.forcedNames[b]||a.key,d=c&&c.toUpperCase();switch(d&&"UNIDENTIFIED"!==d&&"UNDEFINED"!==d&&"UNKNOWN"!==d?"DEAD"===d&&(c="Dead#"+b):c="#"+b,1===c.length?c=c.toUpperCase():c.length>12&&(c=c.substr(0,12)),a.location){case 1:c="L-"+c;break;case 2:c="R-"+c;break;case 3:c="Num "+c}return c},jt.GamepadButtons={GB_1:{b:0,n:"1"},GB_2:{b:1,n:"2"},GB_3:{b:2,n:"3"},GB_4:{b:3,n:"4"},GB_L1:{b:4,n:"L1"},GB_R1:{b:5,n:"R1"},GB_L2:{b:6,n:"L2"},GB_R2:{b:7,n:"R2"},GB_BACK:{b:8,n:"BACK"},GB_START:{b:9,n:"START"},GB_S1:{b:10,n:"S1"},GB_S2:{b:11,n:"S2"},GB_UP:{b:12,n:"▲"},GB_DOWN:{b:13,n:"▼"},GB_LEFT:{b:14,n:"◄"},GB_RIGHT:{b:15,n:"►"},GB_LOGO:{b:16,n:"LOGO"},GB_VOID:{b:-1,n:"Unbound"}},jt.TouchControls={buttons:["T_B","T_A"]},jt.GamepadConsoleControls=function(a){"use strict";function b(a,b){this.index=a,this.update=function(b){return!!(c=b[a])},this.hasMoved=function(){var a=c.timestamp;return!a||a>m&&(m=a,!0)},this.getButtonDigital=function(a){var b=c.buttons[a];return"object"==typeof b?b.pressed||b.value>.5:b>.5},this.getDPadDirection=function(){return this.getButtonDigital(12)?this.getButtonDigital(15)?1:this.getButtonDigital(14)?7:0:this.getButtonDigital(13)?this.getButtonDigital(15)?3:this.getButtonDigital(14)?5:4:this.getButtonDigital(14)?6:this.getButtonDigital(15)?2:-1},this.getStickDirection=function(){var a=c.axes[d],b=c.axes[e];if((a<0?-a:a)=1&&(h-=1),8*h|0},this.getPaddlePosition=function(){var a=c.axes[h]*i*j+k|0;return a<0?a=0:a>380&&(a=380),a};var c,d=b.xAxis,e=b.yAxis,f=b.xAxisSig,g=b.yAxisSig,h=b.paddleAxis,i=b.paddleAxisSig,j=-190*b.paddleSens,k=-190*b.paddleCenter+190-5,l=b.deadzone,m=Number.MIN_VALUE}this.connect=function(a){h=a},this.connectScreen=function(a){i=a},this.powerOn=function(){(r=!!navigator.getGamepads)&&(this.applyPreferences(),e())},this.powerOff=function(){r=!1},this.toggleMode=function(){if(!r)return void i.showOSD("Joysticks unavailable (not supported by browser)",!0,!0);++u,u>0&&(u=-2),-2===u?j=k=null:-1===u&&(s=60,this.controlsClockPulse()),w=0===u,this.applyPreferences(),e(),i.showOSD("Gamepads "+this.getModeDesc(),!0)},this.setPaddleMode=function(a){r&&(v=a,l.xPosition=m.xPosition=-1)},this.setP1ControlsMode=function(a){x=a,this.applyPreferences()},this.controlsClockPulse=function(){if(r&&-2!==u&&(++s>=60&&(s=0),j||k||0===s)){var a=navigator.getGamepads();j?j.update(a)?j.hasMoved()&&f(j,l,n,p):(j=null,c(!0,!1)):0===s&&(j=d(n,o,a))&&c(!0,!0),k?k.update(a)?k.hasMoved()&&f(k,m,o,q):(k=null,c(!1,!1)):0===s&&(k=d(o,n,a))&&c(!1,!0)}};var c=function(a,b){i.showOSD((a^x^w?"P1":"P2")+" Gamepad "+(b?"connected":"disconnected"),a)},d=function(a,c,d){if(d&&0!==d.length){var e=a.device;if(e>=0)return d[e]&&d[e].buttons.length>0?new b(e,a):null;for(var f=0,g=d.length;f0&&!(f===c.device||j&&j.index===f||k&&k.index===f))return new b(f,a)}},e=function(){l=g(),m=g()},f=function(b,c,d,e){if(v&&0!==d.paddleSens){var f=b.getPaddlePosition();f!==c.xPosition&&(c.xPosition=f,a.processControlValue(d.player?t.PADDLE1_POSITION:t.PADDLE0_POSITION,f))}var g=b.getDPadDirection();if(-1!==g||v&&0!==d.paddleSens||(g=b.getStickDirection()),g!==c.direction){var h=!1,i=!1,j=!1,k=!1;switch(g){case 0:h=!0;break;case 1:h=i=!0;break;case 2:i=!0;break;case 3:j=i=!0;break;case 4:j=!0;break;case 5:j=k=!0;break;case 6:k=!0;break;case 7:h=k=!0}a.processKey(e.up.c,h),a.processKey(e.right.c,i),a.processKey(e.down.c,j),a.processKey(e.left.c,k),c.direction=g}var l=b.getButtonDigital(d.button);l!==c.button&&(a.processKey(e.button.c,l),c.button=l),(l=b.getButtonDigital(d.buttonT))!==c.buttonT&&(a.processKey(e.buttonT.c,l),c.buttonT=l);var m=b.getButtonDigital(d.select);m!==c.select&&(a.processControlState(t.SELECT,m),c.select=m);var n=b.getButtonDigital(d.reset);n!==c.reset&&(a.processControlState(t.RESET,n),c.reset=n);var o=b.getButtonDigital(d.pause);o!==c.pause&&(a.processControlState(t.PAUSE,o),c.pause=o);var p=b.getButtonDigital(d.fastSpeed);p!==c.fastSpeed&&(a.processControlState(t.FAST_SPEED,p),c.fastSpeed=p);var q=b.getButtonDigital(d.slowSpeed);q!==c.slowSpeed&&(a.processControlState(t.SLOW_SPEED,q),c.slowSpeed=q)},g=function(){return{direction:-1,button:!1,buttonT:!1,select:!1,reset:!1,fastSpeed:!1,pause:!1,xPosition:-1}};this.getModeDesc=function(){switch(u){case-1:return"AUTO";case 0:return"AUTO (swapped)";default:return r?"DISABLED":"NOT SUPPORTED"}},this.applyPreferences=function(){var a=w?1:0,b=a?0:1;n=y.joystickGamepads[a],n.player=x^w?1:0,o=y.joystickGamepads[b],o.player=x^w?0:1,p=y.joystickKeys[a],q=y.joystickKeys[b]};var h,i,j,k,l,m,n,o,p,q,r=!1,s=-1,t=jt.ConsoleControls,u=-1,v=!1,w=!1,x=!1,y=Javatari.userPreferences.current},jt.DOMTouchControls=function(a){"use strict";function b(){w.classList.toggle("jt-poweroff",!J),w.classList.toggle("jt-paused",K)}function c(){var a=A>0;document.documentElement.classList.toggle("jt-touch-active",a),document.documentElement.classList.toggle("jt-dir-big",C),t.touchControlsActiveUpdate(a,C)}function d(a){if(jt.Util.blockEvent(a),null===E){void 0===u&&i();var b=a.changedTouches[0];E=b.identifier,g(b.pageX,b.pageY)}}function e(a){jt.Util.blockEvent(a),null!==E&&(E=null,h(-1))}function f(a){if(jt.Util.blockEvent(a), -null!==E)for(var b=a.changedTouches,c=0;cG&&(c=(1-Math.atan2(d,e)/Math.PI)/2,c+=1/16,c>=1&&(c-=1),c=8*c|0),h(c)}function h(b){if(F!==b){b>=0&&a.hapticFeedback();var c=!1,d=!1,e=!1,f=!1;switch(b){case 0:c=!0;break;case 1:c=d=!0;break;case 2:d=!0;break;case 3:e=d=!0;break;case 4:e=!0;break;case 5:e=f=!0;break;case 6:f=!0;break;case 7:c=f=!0}a.processKey(x.up.c,c),a.processKey(x.right.c,d),a.processKey(x.down.c,e),a.processKey(x.left.c,f),F=b}}function i(){var a=D.getBoundingClientRect();G=.14*(a.right-a.left)|0,u=((a.left+a.right)/2|0)+window.pageXOffset,v=((a.top+a.bottom)/2|0)+window.pageYOffset}function j(a){jt.Util.blockEvent(a),l(a.target.jtControl,!0)}function k(a){jt.Util.blockEvent(a),l(a.target.jtControl,!1)}function l(b,c){b&&(c&&a.hapticFeedback(),a.processKey(x[b].c,c))}function m(b){jt.Util.blockEvent(b),a.hapticFeedback(),a.processControlState(J?jt.ConsoleControls.PAUSE:jt.ConsoleControls.POWER,!0)}function n(b){jt.Util.blockEvent(b),a.processControlState(J?jt.ConsoleControls.PAUSE:jt.ConsoleControls.POWER,!1)}function o(b){jt.Util.blockEvent(b),a.processControlState(K?jt.ConsoleControls.FRAME:jt.ConsoleControls.FAST_SPEED,!0)}function p(b){jt.Util.blockEvent(b),a.processControlState(K?jt.ConsoleControls.FRAME:jt.ConsoleControls.FAST_SPEED,!1)}function q(){I.reset(),u=v=void 0,E=null,h(-1)}function r(){this.reset=function(){this.portValue=63},this.reset()}this.connect=function(a){s=a},this.connectScreen=function(a){t=a},this.powerOn=function(){this.applyPreferences(),q(),c()},this.powerOff=function(){},this.releaseControllers=function(){q()},this.updateConsolePanelSize=function(a,b,c,d,e){if(w&&d){var f=!e&&(a-b-10)/22&&(A=0),q(),this.applyPreferences(),c(),t.showOSD("Touch Controls "+this.getModeDesc(),!0)},this.setP1ControlsMode=function(a){B=a,this.applyPreferences()},this.getModeDesc=function(){switch(A){case-1:return"AUTO";case 0:return"DISABLED";case 1:return"ENABLED";case 2:return"ENABLED (swapped)"}},this.toggleTouchDirBig=function(){C=!C,L.touch.directionalBig=C,Javatari.userPreferences.setDirty(),c()},this.isDirBig=function(){return C},this.setupTouchControlsIfNeeded=function(a){function c(a,b){var c=document.createElement("div");c.id="jt-touch-"+b,c.classList.add("jt-touch-button"),c.classList.add("jt-touch-button-joy"),c.classList.add("jt-touch-button-joy-"+b),c.jtControl=b,c.addEventListener("touchstart",j),c.addEventListener("touchmove",jt.Util.blockEvent),c.addEventListener("touchend",k),c.addEventListener("touchcancel",k),c.addEventListener("mousedown",j),c.addEventListener("mouseup",k),H[b]=c,a.appendChild(c)}if(!(D||A<=0)){w=document.createElement("div"),w.id="jt-touch-speed";var g=document.createElement("div");g.id="jt-touch-pause",g.addEventListener("touchstart",m),g.addEventListener("touchend",n),w.appendChild(g);var h=document.createElement("div");h.id="jt-touch-fast",h.addEventListener("touchstart",o),h.addEventListener("touchend",p),w.appendChild(h),a.appendChild(w);var i=document.createElement("div");i.id="jt-touch-left",D=function(){function a(a){var c=document.createElement("div");c.classList.add("jt-touch-dir-"+a),b.appendChild(c);var d=document.createElement("div");d.classList.add("jt-arrow-"+a),b.appendChild(d)}var b=document.createElement("div");return b.classList.add("jt-touch-dir"),b.classList.add("jt-touch-dir-joy"),a("left"),a("right"),a("up"),a("down"),b}(),D.addEventListener("touchstart",d),D.addEventListener("touchmove",f),D.addEventListener("touchend",e),D.addEventListener("touchcancel",e),i.appendChild(D),a.appendChild(i),i=document.createElement("div"),i.id="jt-touch-right",c(i,"buttonT"),c(i,"button"),a.appendChild(i),b()}},this.consolePowerAndUserPauseStateUpdate=function(a,c){J=a,K=c,w&&b()},this.applyPreferences=function(){C=!!L.touch.directionalBig;var a=2===A?1:0;x=L.joystickKeys[a]};var s,t,u,v,w,x,y=jt.Util.isTouchDevice(),z=jt.Util.isMobileDevice(),A=Javatari.TOUCH_MODE>=0?Javatari.TOUCH_MODE:y&&z?1:0,B=!1,C=!1,D=null,E=null,F=-1,G=0,H={},I=new r,J=!1,K=!1,L=Javatari.userPreferences.current,M=84;this.saveState=function(){return{}},this.loadState=function(a){q()}},jt.DOMConsoleControls=function(a,b){"use strict";function c(a){E=a,F=E?60/I[E]|0:0,H=F/2|0,G=0}function d(a,b){a.returnValue=!1,a.preventDefault(),a.stopPropagation();var c=jt.DOMKeys.codeForKeyboardEvent(a);return j.processKey(c,b),!1}function e(b,c){if(!B||(b=l(b),!m(b,c))){if(2===a.netPlayMode&&Ca.has(b))return a.showOSD("Function not available in NetPlay Client mode",!0,!0);1===a.netPlayMode&&Ca.has(b)||R.push(b<<4|c),2!==a.netPlayMode&&f(b,c)}}function f(a,b){q.controlStateChanged(a,b)}function g(b,c){R.push(b+(c+10)),2!==a.netPlayMode&&h(b,c)}function h(a,b){q.controlValueChanged(a,b)}function i(){r.controlsModeStateUpdate()}var j=this;this.connect=function(a){q=a,q.connectControls(this),v.connect(a),w.connect(a)},this.connectPeripherals=function(a){r=a,v.connectScreen(a),w.connectScreen(a)},this.addKeyInputElement=function(a){a.addEventListener("keydown",this.keyDown),a.addEventListener("keyup",this.keyUp)},this.setupTouchControlsIfNeeded=function(a){w.setupTouchControlsIfNeeded(a)},this.powerOn=function(){k(),v.powerOn(),w.powerOn(),0===S?n(!1,!1):1===S&&n(!0,!1)},this.powerOff=function(){n(!1,!1),v.powerOff(),w.powerOff()},this.releaseControllers=function(){for(var a in t)t[a]&&(e(a,!1),t[a]=!1);L=M=P=Q=!1,y[x.JOY0_BUTTON]=y[x.JOY1_BUTTON]=!1,w.releaseControllers()},this.getTouchControls=function(){return w},this.toggleP1ControlsMode=function(){this.setP1ControlsMode(!A),o(),i()},this.setP1ControlsMode=function(a){A=a,v.setP1ControlsMode(a),w.setP1ControlsMode(a),this.releaseControllers(),p()},this.isP1ControlsMode=function(){return A},this.togglePaddleMode=function(){n(!B,!0),i()},this.isPaddleMode=function(){return B},this.setP1ControlsAndPaddleMode=function(a,b){this.setP1ControlsMode(a),n(b,!1),i()},this.toggleGamepadMode=function(){v.toggleMode(),i()},this.getGamepadModeDesc=function(){return v.getModeDesc()},this.toggleTouchControlsMode=function(){w.toggleMode(),i()},this.toggleTouchDirBig=function(){w.toggleTouchDirBig()},this.toggleTurboFireSpeed=function(){c((E+1)%11),r.showOSD("Turbo Fire"+(E?" speed: "+this.getTurboFireSpeedDesc():": OFF"),!0),z.turboFireSpeed=E,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save()},this.getTurboFireSpeedDesc=function(){return E?E+"x":"OFF"},this.getControlReport=function(a){switch(a){case jt.PeripheralControls.P1_CONTROLS_TOGGLE:return{label:A?"ON":"OFF",active:A};case jt.PeripheralControls.PADDLES_TOGGLE_MODE:return{label:B?"ON":"OFF",active:B};case jt.PeripheralControls.TOUCH_TOGGLE_DIR_BIG:return{label:w.isDirBig()?"ON":"OFF",active:w.isDirBig()};case jt.PeripheralControls.HAPTIC_FEEDBACK_TOGGLE_MODE:return{label:D?"ON":"OFF",active:!!D};case jt.PeripheralControls.TURBO_FIRE_TOGGLE:return{label:this.getTurboFireSpeedDesc(),active:!!E}}return{label:"Unknown",active:!1}},this.consolePowerAndUserPauseStateUpdate=function(a,b){w.consolePowerAndUserPauseStateUpdate(a,b)},this.keyDown=function(a){return d(a,!0)},this.keyUp=function(a){return d(a,!1)},this.controlsClockPulse=function(){if(F){if(--G===H||0===G){var a=G>0;y[x.JOY0_BUTTON]&&e(x.JOY0_BUTTON,a),y[x.JOY1_BUTTON]&&e(x.JOY1_BUTTON,a)}G<=0&&(G=F)}v.controlsClockPulse(),B&&(M?L||(J-=K,J<0&&(J=0),g(x.PADDLE0_POSITION,J)):L&&(J+=K,J>380&&(J=380),g(x.PADDLE0_POSITION,J)),Q?P||(N-=O,N<0&&(N=0),g(x.PADDLE1_POSITION,N)):P&&(N+=O,N>380&&(N=380),g(x.PADDLE1_POSITION,N)))},this.toggleHapticFeedback=function(){C?(D=!D,z.hapticFeedback=D, -Javatari.userPreferences.setDirty()):r.showOSD("Haptic Feedback not available",!0,!0)},this.hapticFeedback=function(){D&&navigator.vibrate(8)},this.hapticFeedbackOnTouch=function(a){!D||"touchstart"!==a.type&&"touchend"!==a.type&&"touchmove"!==a.type||navigator.vibrate(8)},this.cartridgeInserted=function(a){if(a&&!(S>=0)){var b=1===a.rom.info.p;B!==b&&n(b,!1)}},this.processKey=function(a,c){var d=u[a];if(d){if(c===y[d])return;c&&(G=H),y[d]=c}else{if(!(d=s[a]))return b.processKey(a,c);if(c===t[d])return;t[d]=c}e(d,c)},this.applyPreferences=function(){p(),c(z.turboFireSpeed),w.applyPreferences(),v.applyPreferences()},this.processControlState=e,this.processControlValue=g;var k=function(){window.onhelp=function(){return!1}},l=function(a){switch(a){case x.JOY0_BUTTON:return x.PADDLE0_BUTTON;case x.JOY1_BUTTON:return x.PADDLE1_BUTTON;default:return a}},m=function(a,b){if(b)switch(a){case x.JOY0_LEFT:return L=!0,!0;case x.JOY0_RIGHT:return M=!0,!0;case x.JOY0_UP:return K<10&&K++,r.showOSD("P1 Paddle speed: "+K,!0),!0;case x.JOY0_DOWN:return K>1&&K--,r.showOSD("P1 Paddle speed: "+K,!0),!0;case x.JOY1_LEFT:return P=!0,!0;case x.JOY1_RIGHT:return Q=!0,!0;case x.JOY1_UP:return O<10&&O++,r.showOSD("P2 Paddle speed: "+O,!0),!0;case x.JOY1_DOWN:return O>1&&O--,r.showOSD("P2 Paddle speed: "+O,!0),!0}else switch(a){case x.JOY0_LEFT:return L=!1,!0;case x.JOY0_RIGHT:return M=!1,!0;case x.JOY1_LEFT:return P=!1,!0;case x.JOY1_RIGHT:return Q=!1,!0}return!1},n=function(b,c){B!==b&&j.releaseControllers(),B=b,K=O=2,J=N=B?190:-1,2!==a.netPlayMode&&(g(x.PADDLE0_POSITION,J),g(x.PADDLE1_POSITION,N)),v.setPaddleMode(B),c&&o()},o=function(){r.showOSD("Controllers: "+(B?"Paddles":"Joysticks")+(A?", Swapped":""),!0)},p=function(){var a=jt.DOMKeys;s={},t={},u={},s[T]=x.POWER,s[T|a.ALT]=x.POWER,s[T|a.SHIFT]=x.POWER_FRY,s[T|a.SHIFT|a.ALT]=x.POWER_FRY,s[U]=x.BLACK_WHITE,s[U|a.ALT]=x.BLACK_WHITE,s[V]=x.SELECT,s[V|a.ALT]=x.SELECT,s[W]=x.RESET,s[W|a.ALT]=x.RESET,s[X]=x.DIFFICULTY0,s[X|a.ALT]=x.DIFFICULTY0,s[Y]=x.DIFFICULTY1,s[Y|a.ALT]=x.DIFFICULTY1,s[Z]=x.FAST_SPEED,s[Z|a.ALT]=x.FAST_SPEED,s[Z|a.SHIFT]=x.SLOW_SPEED,s[Z|a.SHIFT|a.ALT]=x.SLOW_SPEED,s[$|a.SHIFT|a.ALT]=x.INC_SPEED,s[_|a.SHIFT|a.ALT]=x.DEC_SPEED,s[aa|a.SHIFT|a.ALT]=x.NORMAL_SPEED,s[ba|a.SHIFT|a.ALT]=x.MIN_SPEED,s[ca|a.ALT]=x.PAUSE,s[ca|a.SHIFT|a.ALT]=x.PAUSE_AUDIO_ON,s[da|a.ALT]=x.FRAME,s[ea|a.ALT]=x.FRAME,s[ga|a.ALT]=x.TRACE,s[ha|a.ALT]=x.SHOW_INFO,s[fa|a.ALT]=x.DEBUG,s[ia|a.ALT]=x.NO_COLLISIONS,s[ja|a.ALT]=x.VIDEO_STANDARD,s[ka|a.ALT]=x.VIDEO_STANDARD,s[la|a.ALT]=x.VSYNCH,s[ma|a.CONTROL]=x.SAVE_STATE_0,s[na|a.CONTROL]=x.SAVE_STATE_0,s[ma|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[na|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[oa|a.CONTROL]=x.SAVE_STATE_1,s[oa|a.CONTROL|a.ALT]=x.SAVE_STATE_1,s[pa|a.CONTROL]=x.SAVE_STATE_2,s[pa|a.CONTROL|a.ALT]=x.SAVE_STATE_2,s[qa|a.CONTROL]=x.SAVE_STATE_3,s[qa|a.CONTROL|a.ALT]=x.SAVE_STATE_3,s[ra|a.CONTROL]=x.SAVE_STATE_4,s[ra|a.CONTROL|a.ALT]=x.SAVE_STATE_4,s[sa|a.CONTROL]=x.SAVE_STATE_5,s[sa|a.CONTROL|a.ALT]=x.SAVE_STATE_5,s[ta|a.CONTROL]=x.SAVE_STATE_6,s[ta|a.CONTROL|a.ALT]=x.SAVE_STATE_6,s[ua|a.CONTROL]=x.SAVE_STATE_7,s[ua|a.CONTROL|a.ALT]=x.SAVE_STATE_7,s[va|a.CONTROL]=x.SAVE_STATE_8,s[va|a.CONTROL|a.ALT]=x.SAVE_STATE_8,s[wa|a.CONTROL]=x.SAVE_STATE_9,s[wa|a.CONTROL|a.ALT]=x.SAVE_STATE_9,s[xa|a.CONTROL]=x.SAVE_STATE_10,s[xa|a.CONTROL|a.ALT]=x.SAVE_STATE_10,s[ya|a.CONTROL]=x.SAVE_STATE_11,s[za|a.CONTROL]=x.SAVE_STATE_11,s[ya|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[za|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[Aa|a.CONTROL]=x.SAVE_STATE_12,s[Ba|a.CONTROL]=x.SAVE_STATE_12,s[Aa|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[Ba|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[ma|a.ALT]=x.LOAD_STATE_0,s[na|a.ALT]=x.LOAD_STATE_0,s[oa|a.ALT]=x.LOAD_STATE_1,s[pa|a.ALT]=x.LOAD_STATE_2,s[qa|a.ALT]=x.LOAD_STATE_3,s[ra|a.ALT]=x.LOAD_STATE_4,s[sa|a.ALT]=x.LOAD_STATE_5,s[ta|a.ALT]=x.LOAD_STATE_6,s[ua|a.ALT]=x.LOAD_STATE_7,s[va|a.ALT]=x.LOAD_STATE_8,s[wa|a.ALT]=x.LOAD_STATE_9,s[xa|a.ALT]=x.LOAD_STATE_10,s[ya|a.ALT]=x.LOAD_STATE_11,s[za|a.ALT]=x.LOAD_STATE_11,s[Aa|a.ALT]=x.LOAD_STATE_12,s[Ba|a.ALT]=x.LOAD_STATE_12,s[ma|a.SHIFT|a.CONTROL]=x.SAVE_STATE_0,s[na|a.SHIFT|a.CONTROL]=x.SAVE_STATE_0,s[ma|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[na|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[oa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_1,s[oa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_1,s[pa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_2,s[pa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_2,s[qa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_3,s[qa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_3,s[ra|a.SHIFT|a.CONTROL]=x.SAVE_STATE_4,s[ra|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_4,s[sa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_5,s[sa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_5,s[ta|a.SHIFT|a.CONTROL]=x.SAVE_STATE_6,s[ta|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_6,s[ua|a.SHIFT|a.CONTROL]=x.SAVE_STATE_7,s[ua|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_7,s[va|a.SHIFT|a.CONTROL]=x.SAVE_STATE_8,s[va|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_8,s[wa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_9,s[wa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_9,s[xa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_10,s[xa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_10,s[ya|a.SHIFT|a.CONTROL]=x.SAVE_STATE_11,s[za|a.SHIFT|a.CONTROL]=x.SAVE_STATE_11,s[ya|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[za|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[Aa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_12,s[Ba|a.SHIFT|a.CONTROL]=x.SAVE_STATE_12,s[Aa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[Ba|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[ma|a.SHIFT|a.ALT]=x.LOAD_STATE_0,s[na|a.SHIFT|a.ALT]=x.LOAD_STATE_0,s[oa|a.SHIFT|a.ALT]=x.LOAD_STATE_1,s[pa|a.SHIFT|a.ALT]=x.LOAD_STATE_2,s[qa|a.SHIFT|a.ALT]=x.LOAD_STATE_3,s[ra|a.SHIFT|a.ALT]=x.LOAD_STATE_4,s[sa|a.SHIFT|a.ALT]=x.LOAD_STATE_5,s[ta|a.SHIFT|a.ALT]=x.LOAD_STATE_6,s[ua|a.SHIFT|a.ALT]=x.LOAD_STATE_7,s[va|a.SHIFT|a.ALT]=x.LOAD_STATE_8,s[wa|a.SHIFT|a.ALT]=x.LOAD_STATE_9,s[xa|a.SHIFT|a.ALT]=x.LOAD_STATE_10,s[ya|a.SHIFT|a.ALT]=x.LOAD_STATE_11,s[za|a.SHIFT|a.ALT]=x.LOAD_STATE_11,s[Aa|a.SHIFT|a.ALT]=x.LOAD_STATE_12,s[Ba|a.SHIFT|a.ALT]=x.LOAD_STATE_12;var b=A?1:0,c=A?0:1;s[z.joystickKeys[b].left.c]=x.JOY0_LEFT,s[z.joystickKeys[b].up.c]=x.JOY0_UP,s[z.joystickKeys[b].right.c]=x.JOY0_RIGHT,s[z.joystickKeys[b].down.c]=x.JOY0_DOWN,s[z.joystickKeys[b].button.c]=x.JOY0_BUTTON,s[z.joystickKeys[c].left.c]=x.JOY1_LEFT,s[z.joystickKeys[c].up.c]=x.JOY1_UP,s[z.joystickKeys[c].right.c]=x.JOY1_RIGHT,s[z.joystickKeys[c].down.c]=x.JOY1_DOWN,s[z.joystickKeys[c].button.c]=x.JOY1_BUTTON,u[z.joystickKeys[b].buttonT.c]=x.JOY0_BUTTON,u[z.joystickKeys[c].buttonT.c]=x.JOY1_BUTTON};this.netGetControlsToSend=function(){return R.length?R:void 0},this.netClearControlsToSend=function(){R.length=0},this.netServerProcessControlsChanges=function(a){for(var b=0,c=a.length;b>4)||R.push(d),f(d>>4,1&d)):h(-16384&d,(16383&d)-10)}},this.netClientApplyControlsChanges=function(a){for(var b=0,c=a.length;b>4,1&d):h(-16384&d,(16383&d)-10)}};var q,r,s,t,u,v,w,x=jt.ConsoleControls,y={},z=Javatari.userPreferences.current,A=!1,B=!1,C=!!navigator.vibrate,D=C&&!!z.hapticFeedback,E=0,F=0,G=0,H=0,I=[0,1,2,2.4,3,4,5,6,7.5,10,12],J=0,K=3,L=!1,M=!1,N=0,O=3,P=!1,Q=!1,R=new Array(100);R.length=0 +c:107|d,n:"Num +"},a.VK_NUM_PERIOD={c:194|d,n:"Num ."},a.VK_NUM_0={c:96|d,n:"Num 0"},a.VK_NUM_1={c:97|d,n:"Num 1"},a.VK_NUM_2={c:98|d,n:"Num 2"},a.VK_NUM_3={c:99|d,n:"Num 3"},a.VK_NUM_4={c:100|d,n:"Num 4"},a.VK_NUM_5={c:101|d,n:"Num 5"},a.VK_NUM_6={c:102|d,n:"Num 6"},a.VK_NUM_7={c:103|d,n:"Num 7"},a.VK_NUM_8={c:104|d,n:"Num 8"},a.VK_NUM_9={c:105|d,n:"Num 9"},a.VK_NUM_CLEAR={c:12|d,n:"Num Clear"},a.VK_NUM_ENTER={c:13|d,n:"Num Enter"},a.VK_QUOTE={c:222,n:"'"},a.VK_BACKQUOTE={c:192,n:"`"},a.VK_MINUS={c:189,n:"-"},a.VK_EQUALS={c:187,n:"="},a.VK_OPEN_BRACKET={c:219,n:"["},a.VK_CLOSE_BRACKET={c:221,n:"]"},a.VK_COMMA={c:188,n:","},a.VK_PERIOD={c:190,n:"."},a.VK_SEMICOLON={c:186,n:";"},a.VK_SLASH={c:191,n:"/"},a.VK_BACKSLASH={c:220,n:"\\"},a.VK_ALTERNATE_ESC={c:a.VK_F1.c|jt.DOMKeys.ALT,n:["Alt","F1"]},a.VK_FF_MINUS={c:173,n:"-"},a.VK_FF_EQUALS={c:61,n:"="},a.VK_FF_SEMICOLON={c:59,n:";"},a.VK_BR_QUOTE={c:192,n:"'"},a.VK_BR_OPEN_BRACKET={c:221,n:"["},a.VK_BR_CLOSE_BRACKET={c:220,n:"]"},a.VK_BR_SEMICOLON={c:191,n:";"},a.VK_BR_SLASH={c:193,n:"/"},a.VK_BR_BACKSLASH={c:226,n:"\\"},a.VK_BR_CEDILLA={c:186,n:"Ç"},a.VK_BR_TILDE={c:222,n:"~"},a.VK_BR_ACUTE={c:219,n:"´"},a.VK_FF_BR_TILDE={c:176,n:"~"},a.VK_VOID={c:-1,n:""}}(jt.DOMKeys,jt.DOMKeys.LOCLEFT,jt.DOMKeys.LOCRIGHT,jt.DOMKeys.LOCNUM),jt.DOMKeys.forcedNames={27:"Esc",13:"Enter",32:"Space",9:"Tab",8:"BkSpc",16:"Shift",17:"Ctrl",18:"Alt",91:"Meta",93:"Context",20:"Caps",44:"PrtScr",145:"ScrLck",19:"Pause",3:"Break",45:"Ins",46:"Del",36:"Home",35:"End",33:"PgUp",34:"PgDown",38:"Up",40:"Down",37:"Left",39:"Right"},jt.DOMKeys.isModifierKeyCode=function(a){return 16===a||17===a||18===a||91===a},jt.DOMKeys.codeForKeyboardEvent=function(a){var b=a.keyCode;return this.isModifierKeyCode(b)?b&this.IGNORE_ALL_MODIFIERS_MASK|a.location<12&&(c=c.substr(0,12)),a.location){case 1:c="L-"+c;break;case 2:c="R-"+c;break;case 3:c="Num "+c}return(a.shiftKey||a.ctrlKey||a.altKey||a.metaKey)&&(c=[c],a.metaKey&&c.unshift("Meta"),a.altKey&&c.unshift("Alt"),a.ctrlKey&&c.unshift("Ctrl"),a.shiftKey&&c.unshift("Shift")),c},jt.DOMKeys.nameForKeyboardEventSingle=function(a){var b=a.keyCode,c=this.forcedNames[b]||a.key,d=c&&c.toUpperCase();switch(d&&"UNIDENTIFIED"!==d&&"UNDEFINED"!==d&&"UNKNOWN"!==d?"DEAD"===d&&(c="Dead#"+b):c="#"+b,1===c.length?c=c.toUpperCase():c.length>12&&(c=c.substr(0,12)),a.location){case 1:c="L-"+c;break;case 2:c="R-"+c;break;case 3:c="Num "+c}return c},jt.GamepadButtons={GB_1:{b:0,n:"1"},GB_2:{b:1,n:"2"},GB_3:{b:2,n:"3"},GB_4:{b:3,n:"4"},GB_L1:{b:4,n:"L1"},GB_R1:{b:5,n:"R1"},GB_L2:{b:6,n:"L2"},GB_R2:{b:7,n:"R2"},GB_BACK:{b:8,n:"BACK"},GB_START:{b:9,n:"START"},GB_S1:{b:10,n:"S1"},GB_S2:{b:11,n:"S2"},GB_UP:{b:12,n:"▲"},GB_DOWN:{b:13,n:"▼"},GB_LEFT:{b:14,n:"◄"},GB_RIGHT:{b:15,n:"►"},GB_LOGO:{b:16,n:"LOGO"},GB_VOID:{b:-1,n:"Unbound"}},jt.TouchControls={buttons:["T_B","T_A"]},jt.GamepadConsoleControls=function(a){"use strict";function b(a,b){this.index=a,this.update=function(b){return!!(c=b[a])},this.hasMoved=function(){var a=c.timestamp;return!a||a>m&&(m=a,!0)},this.getButtonDigital=function(a){var b=c.buttons[a];return"object"==typeof b?b.pressed||b.value>.5:b>.5},this.getDPadDirection=function(){return this.getButtonDigital(12)?this.getButtonDigital(15)?1:this.getButtonDigital(14)?7:0:this.getButtonDigital(13)?this.getButtonDigital(15)?3:this.getButtonDigital(14)?5:4:this.getButtonDigital(14)?6:this.getButtonDigital(15)?2:-1},this.getStickDirection=function(){var a=c.axes[d],b=c.axes[e];if((a<0?-a:a)=1&&(h-=1),8*h|0},this.getPaddlePosition=function(){var a=c.axes[h]*i*j+k|0;return a<0?a=0:a>380&&(a=380),a};var c,d=b.xAxis,e=b.yAxis,f=b.xAxisSig,g=b.yAxisSig,h=b.paddleAxis,i=b.paddleAxisSig,j=-190*b.paddleSens,k=-190*b.paddleCenter+190-5,l=b.deadzone,m=Number.MIN_VALUE}this.connect=function(a){h=a},this.connectScreen=function(a){i=a},this.powerOn=function(){(r=!!navigator.getGamepads)&&(this.applyPreferences(),e())},this.powerOff=function(){r=!1},this.toggleMode=function(){if(!r)return void i.showOSD("Joysticks unavailable (not supported by browser)",!0,!0);++u,u>0&&(u=-2),-2===u?j=k=null:-1===u&&(s=60,this.controlsClockPulse()),w=0===u,this.applyPreferences(),e(),i.showOSD("Gamepads "+this.getModeDesc(),!0)},this.setPaddleMode=function(a){r&&(v=a,l.xPosition=m.xPosition=-1)},this.setP1ControlsMode=function(a){x=a,this.applyPreferences()},this.controlsClockPulse=function(){if(r&&-2!==u&&(++s>=60&&(s=0),j||k||0===s)){var a=navigator.getGamepads();j?j.update(a)?j.hasMoved()&&f(j,l,n,p):(j=null,c(!0,!1)):0===s&&(j=d(n,o,a))&&c(!0,!0),k?k.update(a)?k.hasMoved()&&f(k,m,o,q):(k=null,c(!1,!1)):0===s&&(k=d(o,n,a))&&c(!1,!0)}};var c=function(a,b){i.showOSD((a^x^w?"P1":"P2")+" Gamepad "+(b?"connected":"disconnected"),a)},d=function(a,c,d){if(d&&0!==d.length){var e=a.device;if(e>=0)return d[e]&&d[e].buttons.length>0?new b(e,a):null;for(var f=0,g=d.length;f0&&!(f===c.device||j&&j.index===f||k&&k.index===f))return new b(f,a)}},e=function(){l=g(),m=g()},f=function(b,c,d,e){if(v&&0!==d.paddleSens){var f=b.getPaddlePosition();f!==c.xPosition&&(c.xPosition=f,a.processControlValue(d.player?t.PADDLE1_POSITION:t.PADDLE0_POSITION,f))}var g=b.getDPadDirection();if(-1!==g||v&&0!==d.paddleSens||(g=b.getStickDirection()),g!==c.direction){var h=!1,i=!1,j=!1,k=!1;switch(g){case 0:h=!0;break;case 1:h=i=!0;break;case 2:i=!0;break;case 3:j=i=!0;break;case 4:j=!0;break;case 5:j=k=!0;break;case 6:k=!0;break;case 7:h=k=!0}a.processKey(e.up.c,h),a.processKey(e.right.c,i),a.processKey(e.down.c,j),a.processKey(e.left.c,k),c.direction=g}var l=b.getButtonDigital(d.button);l!==c.button&&(a.processKey(e.button.c,l),c.button=l),(l=b.getButtonDigital(d.buttonT))!==c.buttonT&&(a.processKey(e.buttonT.c,l),c.buttonT=l);var m=b.getButtonDigital(d.select);m!==c.select&&(a.processControlState(t.SELECT,m),c.select=m);var n=b.getButtonDigital(d.reset);n!==c.reset&&(a.processControlState(t.RESET,n),c.reset=n);var o=b.getButtonDigital(d.pause);o!==c.pause&&(a.processControlState(t.PAUSE,o),c.pause=o);var p=b.getButtonDigital(d.fullscreen);p!==c.fullscreen&&(a.processControlState(t.FULLSCREEN,p),c.fullscreen=p);var q=b.getButtonDigital(d.fastSpeed);q!==c.fastSpeed&&(a.processControlState(t.FAST_SPEED,q),c.fastSpeed=q);var r=b.getButtonDigital(d.slowSpeed);r!==c.slowSpeed&&(a.processControlState(t.SLOW_SPEED,r),c.slowSpeed=r)},g=function(){return{direction:-1,button:!1,buttonT:!1,select:!1,reset:!1,fastSpeed:!1,pause:!1,xPosition:-1}};this.getModeDesc=function(){switch(u){case-1:return"AUTO";case 0:return"AUTO (swapped)";default:return r?"DISABLED":"NOT SUPPORTED"}},this.applyPreferences=function(){var a=w?1:0,b=a?0:1;n=y.joystickGamepads[a],n.player=x^w?1:0,o=y.joystickGamepads[b],o.player=x^w?0:1,p=y.joystickKeys[a],q=y.joystickKeys[b]};var h,i,j,k,l,m,n,o,p,q,r=!1,s=-1,t=jt.ConsoleControls,u=-1,v=!1,w=!1,x=!1,y=Javatari.userPreferences.current},jt.DOMTouchControls=function(a){"use strict";function b(){w.classList.toggle("jt-poweroff",!J),w.classList.toggle("jt-paused",K)}function c(){var a=A>0;document.documentElement.classList.toggle("jt-touch-active",a),document.documentElement.classList.toggle("jt-dir-big",C),t.touchControlsActiveUpdate(a,C)}function d(a){if(jt.Util.blockEvent(a),null===E){void 0===u&&i();var b=a.changedTouches[0];E=b.identifier,g(b.pageX,b.pageY)}}function e(a){jt.Util.blockEvent(a),null!==E&&(E=null, +h(-1))}function f(a){if(jt.Util.blockEvent(a),null!==E)for(var b=a.changedTouches,c=0;cG&&(c=(1-Math.atan2(d,e)/Math.PI)/2,c+=1/16,c>=1&&(c-=1),c=8*c|0),h(c)}function h(b){if(F!==b){b>=0&&a.hapticFeedback();var c=!1,d=!1,e=!1,f=!1;switch(b){case 0:c=!0;break;case 1:c=d=!0;break;case 2:d=!0;break;case 3:e=d=!0;break;case 4:e=!0;break;case 5:e=f=!0;break;case 6:f=!0;break;case 7:c=f=!0}a.processKey(x.up.c,c),a.processKey(x.right.c,d),a.processKey(x.down.c,e),a.processKey(x.left.c,f),F=b}}function i(){var a=D.getBoundingClientRect();G=.14*(a.right-a.left)|0,u=((a.left+a.right)/2|0)+window.pageXOffset,v=((a.top+a.bottom)/2|0)+window.pageYOffset}function j(a){jt.Util.blockEvent(a),l(a.target.jtControl,!0)}function k(a){jt.Util.blockEvent(a),l(a.target.jtControl,!1)}function l(b,c){b&&(c&&a.hapticFeedback(),a.processKey(x[b].c,c))}function m(b){jt.Util.blockEvent(b),a.hapticFeedback(),a.processControlState(J?jt.ConsoleControls.PAUSE:jt.ConsoleControls.POWER,!0)}function n(b){jt.Util.blockEvent(b),a.processControlState(J?jt.ConsoleControls.PAUSE:jt.ConsoleControls.POWER,!1)}function o(b){jt.Util.blockEvent(b),a.processControlState(K?jt.ConsoleControls.FRAME:jt.ConsoleControls.FAST_SPEED,!0)}function p(b){jt.Util.blockEvent(b),a.processControlState(K?jt.ConsoleControls.FRAME:jt.ConsoleControls.FAST_SPEED,!1)}function q(){I.reset(),u=v=void 0,E=null,h(-1)}function r(){this.reset=function(){this.portValue=63},this.reset()}this.connect=function(a){s=a},this.connectScreen=function(a){t=a},this.powerOn=function(){this.applyPreferences(),q(),c()},this.powerOff=function(){},this.releaseControllers=function(){q()},this.updateConsolePanelSize=function(a,b,c,d,e){if(w&&d){var f=!e&&(a-b-10)/22&&(A=0),q(),this.applyPreferences(),c(),t.showOSD("Touch Controls "+this.getModeDesc(),!0)},this.setP1ControlsMode=function(a){B=a,this.applyPreferences()},this.getModeDesc=function(){switch(A){case-1:return"AUTO";case 0:return"DISABLED";case 1:return"ENABLED";case 2:return"ENABLED (swapped)"}},this.toggleTouchDirBig=function(){C=!C,L.touch.directionalBig=C,Javatari.userPreferences.setDirty(),c()},this.isDirBig=function(){return C},this.setupTouchControlsIfNeeded=function(a){function c(a,b){var c=document.createElement("div");c.id="jt-touch-"+b,c.classList.add("jt-touch-button"),c.classList.add("jt-touch-button-joy"),c.classList.add("jt-touch-button-joy-"+b),c.jtControl=b,c.addEventListener("touchstart",j),c.addEventListener("touchmove",jt.Util.blockEvent),c.addEventListener("touchend",k),c.addEventListener("touchcancel",k),c.addEventListener("mousedown",j),c.addEventListener("mouseup",k),H[b]=c,a.appendChild(c)}if(!(D||A<=0)){w=document.createElement("div"),w.id="jt-touch-speed";var g=document.createElement("div");g.id="jt-touch-pause",g.addEventListener("touchstart",m),g.addEventListener("touchend",n),w.appendChild(g);var h=document.createElement("div");h.id="jt-touch-fast",h.addEventListener("touchstart",o),h.addEventListener("touchend",p),w.appendChild(h),a.appendChild(w);var i=document.createElement("div");i.id="jt-touch-left",D=function(){function a(a){var c=document.createElement("div");c.classList.add("jt-touch-dir-"+a),b.appendChild(c);var d=document.createElement("div");d.classList.add("jt-arrow-"+a),b.appendChild(d)}var b=document.createElement("div");return b.classList.add("jt-touch-dir"),b.classList.add("jt-touch-dir-joy"),a("left"),a("right"),a("up"),a("down"),b}(),D.addEventListener("touchstart",d),D.addEventListener("touchmove",f),D.addEventListener("touchend",e),D.addEventListener("touchcancel",e),i.appendChild(D),a.appendChild(i),i=document.createElement("div"),i.id="jt-touch-right",c(i,"buttonT"),c(i,"button"),a.appendChild(i),b()}},this.consolePowerAndUserPauseStateUpdate=function(a,c){J=a,K=c,w&&b()},this.applyPreferences=function(){C=!!L.touch.directionalBig;var a=2===A?1:0;x=L.joystickKeys[a]};var s,t,u,v,w,x,y=jt.Util.isTouchDevice(),z=jt.Util.isMobileDevice(),A=Javatari.TOUCH_MODE>=0?Javatari.TOUCH_MODE:y&&z?1:0,B=!1,C=!1,D=null,E=null,F=-1,G=0,H={},I=new r,J=!1,K=!1,L=Javatari.userPreferences.current,M=84;this.saveState=function(){return{}},this.loadState=function(a){q()}},jt.DOMConsoleControls=function(a,b){"use strict";function c(a){E=a,F=E?60/I[E]|0:0,H=F/2|0,G=0}function d(a,b){a.returnValue=!1,a.preventDefault(),a.stopPropagation();var c=jt.DOMKeys.codeForKeyboardEvent(a);return j.processKey(c,b),!1}function e(b,c){if(!B||(b=l(b),!m(b,c))){if(2===a.netPlayMode&&Ca.has(b))return a.showOSD("Function not available in NetPlay Client mode",!0,!0);1===a.netPlayMode&&Ca.has(b)||R.push(b<<4|c),2!==a.netPlayMode&&f(b,c)}}function f(a,b){q.controlStateChanged(a,b)}function g(b,c){R.push(b+(c+10)),2!==a.netPlayMode&&h(b,c)}function h(a,b){q.controlValueChanged(a,b)}function i(){r.controlsModeStateUpdate()}var j=this;this.connect=function(a){q=a,q.connectControls(this),v.connect(a),w.connect(a)},this.connectPeripherals=function(a){r=a,v.connectScreen(a),w.connectScreen(a)},this.addKeyInputElement=function(a){a.addEventListener("keydown",this.keyDown),a.addEventListener("keyup",this.keyUp)},this.setupTouchControlsIfNeeded=function(a){w.setupTouchControlsIfNeeded(a)},this.powerOn=function(){k(),v.powerOn(),w.powerOn(),0===S?n(!1,!1):1===S&&n(!0,!1)},this.powerOff=function(){n(!1,!1),v.powerOff(),w.powerOff()},this.releaseControllers=function(){for(var a in t)t[a]&&(e(a,!1),t[a]=!1);L=M=P=Q=!1,y[x.JOY0_BUTTON]=y[x.JOY1_BUTTON]=!1,w.releaseControllers()},this.getTouchControls=function(){return w},this.toggleP1ControlsMode=function(){this.setP1ControlsMode(!A),o(),i()},this.setP1ControlsMode=function(a){A=a,v.setP1ControlsMode(a),w.setP1ControlsMode(a),this.releaseControllers(),p()},this.isP1ControlsMode=function(){return A},this.togglePaddleMode=function(){n(!B,!0),i()},this.isPaddleMode=function(){return B},this.setP1ControlsAndPaddleMode=function(a,b){this.setP1ControlsMode(a),n(b,!1),i()},this.toggleGamepadMode=function(){v.toggleMode(),i()},this.getGamepadModeDesc=function(){return v.getModeDesc()},this.toggleTouchControlsMode=function(){w.toggleMode(),i()},this.toggleTouchDirBig=function(){w.toggleTouchDirBig()},this.toggleTurboFireSpeed=function(){c((E+1)%11),r.showOSD("Turbo Fire"+(E?" speed: "+this.getTurboFireSpeedDesc():": OFF"),!0),z.turboFireSpeed=E,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save()},this.getTurboFireSpeedDesc=function(){return E?E+"x":"OFF"},this.getControlReport=function(a){switch(a){case jt.PeripheralControls.P1_CONTROLS_TOGGLE:return{label:A?"ON":"OFF",active:A};case jt.PeripheralControls.PADDLES_TOGGLE_MODE:return{label:B?"ON":"OFF",active:B};case jt.PeripheralControls.TOUCH_TOGGLE_DIR_BIG:return{label:w.isDirBig()?"ON":"OFF",active:w.isDirBig()};case jt.PeripheralControls.HAPTIC_FEEDBACK_TOGGLE_MODE:return{label:D?"ON":"OFF",active:!!D};case jt.PeripheralControls.TURBO_FIRE_TOGGLE:return{label:this.getTurboFireSpeedDesc(),active:!!E}}return{label:"Unknown",active:!1}},this.consolePowerAndUserPauseStateUpdate=function(a,b){w.consolePowerAndUserPauseStateUpdate(a,b)},this.keyDown=function(a){return d(a,!0)},this.keyUp=function(a){return d(a,!1)},this.controlsClockPulse=function(){if(F){if(--G===H||0===G){var a=G>0;y[x.JOY0_BUTTON]&&e(x.JOY0_BUTTON,a),y[x.JOY1_BUTTON]&&e(x.JOY1_BUTTON,a)}G<=0&&(G=F)}v.controlsClockPulse(),B&&(M?L||(J-=K,J<0&&(J=0),g(x.PADDLE0_POSITION,J)):L&&(J+=K,J>380&&(J=380),g(x.PADDLE0_POSITION,J)),Q?P||(N-=O,N<0&&(N=0),g(x.PADDLE1_POSITION,N)):P&&(N+=O,N>380&&(N=380),g(x.PADDLE1_POSITION,N)))},this.toggleHapticFeedback=function(){ +C?(D=!D,z.hapticFeedback=D,Javatari.userPreferences.setDirty()):r.showOSD("Haptic Feedback not available",!0,!0)},this.hapticFeedback=function(){D&&navigator.vibrate(8)},this.hapticFeedbackOnTouch=function(a){!D||"touchstart"!==a.type&&"touchend"!==a.type&&"touchmove"!==a.type||navigator.vibrate(8)},this.cartridgeInserted=function(a){if(a&&!(S>=0)){var b=1===a.rom.info.p;B!==b&&n(b,!1)}},this.processKey=function(a,c){var d=u[a];if(d){if(c===y[d])return;c&&(G=H),y[d]=c}else{if(!(d=s[a]))return b.processKey(a,c);if(c===t[d])return;t[d]=c}e(d,c)},this.applyPreferences=function(){p(),c(z.turboFireSpeed),w.applyPreferences(),v.applyPreferences()},this.processControlState=e,this.processControlValue=g;var k=function(){window.onhelp=function(){return!1}},l=function(a){switch(a){case x.JOY0_BUTTON:return x.PADDLE0_BUTTON;case x.JOY1_BUTTON:return x.PADDLE1_BUTTON;default:return a}},m=function(a,b){if(b)switch(a){case x.JOY0_LEFT:return L=!0,!0;case x.JOY0_RIGHT:return M=!0,!0;case x.JOY0_UP:return K<10&&K++,r.showOSD("P1 Paddle speed: "+K,!0),!0;case x.JOY0_DOWN:return K>1&&K--,r.showOSD("P1 Paddle speed: "+K,!0),!0;case x.JOY1_LEFT:return P=!0,!0;case x.JOY1_RIGHT:return Q=!0,!0;case x.JOY1_UP:return O<10&&O++,r.showOSD("P2 Paddle speed: "+O,!0),!0;case x.JOY1_DOWN:return O>1&&O--,r.showOSD("P2 Paddle speed: "+O,!0),!0}else switch(a){case x.JOY0_LEFT:return L=!1,!0;case x.JOY0_RIGHT:return M=!1,!0;case x.JOY1_LEFT:return P=!1,!0;case x.JOY1_RIGHT:return Q=!1,!0}return!1},n=function(b,c){B!==b&&j.releaseControllers(),B=b,K=O=2,J=N=B?190:-1,2!==a.netPlayMode&&(g(x.PADDLE0_POSITION,J),g(x.PADDLE1_POSITION,N)),v.setPaddleMode(B),c&&o()},o=function(){r.showOSD("Controllers: "+(B?"Paddles":"Joysticks")+(A?", Swapped":""),!0)},p=function(){var a=jt.DOMKeys;s={},t={},u={},s[T]=x.POWER,s[T|a.ALT]=x.POWER,s[T|a.SHIFT]=x.POWER_FRY,s[T|a.SHIFT|a.ALT]=x.POWER_FRY,s[U]=x.BLACK_WHITE,s[U|a.ALT]=x.BLACK_WHITE,s[V]=x.SELECT,s[V|a.ALT]=x.SELECT,s[W]=x.RESET,s[W|a.ALT]=x.RESET,s[X]=x.DIFFICULTY0,s[X|a.ALT]=x.DIFFICULTY0,s[Y]=x.DIFFICULTY1,s[Y|a.ALT]=x.DIFFICULTY1,s[Z]=x.FAST_SPEED,s[Z|a.ALT]=x.FAST_SPEED,s[Z|a.SHIFT]=x.SLOW_SPEED,s[Z|a.SHIFT|a.ALT]=x.SLOW_SPEED,s[$|a.SHIFT|a.ALT]=x.INC_SPEED,s[_|a.SHIFT|a.ALT]=x.DEC_SPEED,s[aa|a.SHIFT|a.ALT]=x.NORMAL_SPEED,s[ba|a.SHIFT|a.ALT]=x.MIN_SPEED,s[ca|a.ALT]=x.PAUSE,s[ca|a.SHIFT|a.ALT]=x.PAUSE_AUDIO_ON,s[da|a.ALT]=x.FRAME,s[ea|a.ALT]=x.FRAME,s[ga|a.ALT]=x.TRACE,s[ha|a.ALT]=x.SHOW_INFO,s[fa|a.ALT]=x.DEBUG,s[ia|a.ALT]=x.NO_COLLISIONS,s[ja|a.ALT]=x.VIDEO_STANDARD,s[ka|a.ALT]=x.VIDEO_STANDARD,s[la|a.ALT]=x.VSYNCH,s[ma|a.CONTROL]=x.SAVE_STATE_0,s[na|a.CONTROL]=x.SAVE_STATE_0,s[ma|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[na|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[oa|a.CONTROL]=x.SAVE_STATE_1,s[oa|a.CONTROL|a.ALT]=x.SAVE_STATE_1,s[pa|a.CONTROL]=x.SAVE_STATE_2,s[pa|a.CONTROL|a.ALT]=x.SAVE_STATE_2,s[qa|a.CONTROL]=x.SAVE_STATE_3,s[qa|a.CONTROL|a.ALT]=x.SAVE_STATE_3,s[ra|a.CONTROL]=x.SAVE_STATE_4,s[ra|a.CONTROL|a.ALT]=x.SAVE_STATE_4,s[sa|a.CONTROL]=x.SAVE_STATE_5,s[sa|a.CONTROL|a.ALT]=x.SAVE_STATE_5,s[ta|a.CONTROL]=x.SAVE_STATE_6,s[ta|a.CONTROL|a.ALT]=x.SAVE_STATE_6,s[ua|a.CONTROL]=x.SAVE_STATE_7,s[ua|a.CONTROL|a.ALT]=x.SAVE_STATE_7,s[va|a.CONTROL]=x.SAVE_STATE_8,s[va|a.CONTROL|a.ALT]=x.SAVE_STATE_8,s[wa|a.CONTROL]=x.SAVE_STATE_9,s[wa|a.CONTROL|a.ALT]=x.SAVE_STATE_9,s[xa|a.CONTROL]=x.SAVE_STATE_10,s[xa|a.CONTROL|a.ALT]=x.SAVE_STATE_10,s[ya|a.CONTROL]=x.SAVE_STATE_11,s[za|a.CONTROL]=x.SAVE_STATE_11,s[ya|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[za|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[Aa|a.CONTROL]=x.SAVE_STATE_12,s[Ba|a.CONTROL]=x.SAVE_STATE_12,s[Aa|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[Ba|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[ma|a.ALT]=x.LOAD_STATE_0,s[na|a.ALT]=x.LOAD_STATE_0,s[oa|a.ALT]=x.LOAD_STATE_1,s[pa|a.ALT]=x.LOAD_STATE_2,s[qa|a.ALT]=x.LOAD_STATE_3,s[ra|a.ALT]=x.LOAD_STATE_4,s[sa|a.ALT]=x.LOAD_STATE_5,s[ta|a.ALT]=x.LOAD_STATE_6,s[ua|a.ALT]=x.LOAD_STATE_7,s[va|a.ALT]=x.LOAD_STATE_8,s[wa|a.ALT]=x.LOAD_STATE_9,s[xa|a.ALT]=x.LOAD_STATE_10,s[ya|a.ALT]=x.LOAD_STATE_11,s[za|a.ALT]=x.LOAD_STATE_11,s[Aa|a.ALT]=x.LOAD_STATE_12,s[Ba|a.ALT]=x.LOAD_STATE_12,s[ma|a.SHIFT|a.CONTROL]=x.SAVE_STATE_0,s[na|a.SHIFT|a.CONTROL]=x.SAVE_STATE_0,s[ma|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[na|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[oa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_1,s[oa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_1,s[pa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_2,s[pa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_2,s[qa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_3,s[qa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_3,s[ra|a.SHIFT|a.CONTROL]=x.SAVE_STATE_4,s[ra|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_4,s[sa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_5,s[sa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_5,s[ta|a.SHIFT|a.CONTROL]=x.SAVE_STATE_6,s[ta|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_6,s[ua|a.SHIFT|a.CONTROL]=x.SAVE_STATE_7,s[ua|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_7,s[va|a.SHIFT|a.CONTROL]=x.SAVE_STATE_8,s[va|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_8,s[wa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_9,s[wa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_9,s[xa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_10,s[xa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_10,s[ya|a.SHIFT|a.CONTROL]=x.SAVE_STATE_11,s[za|a.SHIFT|a.CONTROL]=x.SAVE_STATE_11,s[ya|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[za|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[Aa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_12,s[Ba|a.SHIFT|a.CONTROL]=x.SAVE_STATE_12,s[Aa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[Ba|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[ma|a.SHIFT|a.ALT]=x.LOAD_STATE_0,s[na|a.SHIFT|a.ALT]=x.LOAD_STATE_0,s[oa|a.SHIFT|a.ALT]=x.LOAD_STATE_1,s[pa|a.SHIFT|a.ALT]=x.LOAD_STATE_2,s[qa|a.SHIFT|a.ALT]=x.LOAD_STATE_3,s[ra|a.SHIFT|a.ALT]=x.LOAD_STATE_4,s[sa|a.SHIFT|a.ALT]=x.LOAD_STATE_5,s[ta|a.SHIFT|a.ALT]=x.LOAD_STATE_6,s[ua|a.SHIFT|a.ALT]=x.LOAD_STATE_7,s[va|a.SHIFT|a.ALT]=x.LOAD_STATE_8,s[wa|a.SHIFT|a.ALT]=x.LOAD_STATE_9,s[xa|a.SHIFT|a.ALT]=x.LOAD_STATE_10,s[ya|a.SHIFT|a.ALT]=x.LOAD_STATE_11,s[za|a.SHIFT|a.ALT]=x.LOAD_STATE_11,s[Aa|a.SHIFT|a.ALT]=x.LOAD_STATE_12,s[Ba|a.SHIFT|a.ALT]=x.LOAD_STATE_12;var b=A?1:0,c=A?0:1;s[z.joystickKeys[b].left.c]=x.JOY0_LEFT,s[z.joystickKeys[b].up.c]=x.JOY0_UP,s[z.joystickKeys[b].right.c]=x.JOY0_RIGHT,s[z.joystickKeys[b].down.c]=x.JOY0_DOWN,s[z.joystickKeys[b].button.c]=x.JOY0_BUTTON,s[z.joystickKeys[c].left.c]=x.JOY1_LEFT,s[z.joystickKeys[c].up.c]=x.JOY1_UP,s[z.joystickKeys[c].right.c]=x.JOY1_RIGHT,s[z.joystickKeys[c].down.c]=x.JOY1_DOWN,s[z.joystickKeys[c].button.c]=x.JOY1_BUTTON,u[z.joystickKeys[b].buttonT.c]=x.JOY0_BUTTON,u[z.joystickKeys[c].buttonT.c]=x.JOY1_BUTTON};this.netGetControlsToSend=function(){return R.length?R:void 0},this.netClearControlsToSend=function(){R.length=0},this.netServerProcessControlsChanges=function(a){for(var b=0,c=a.length;b>4)||R.push(d),f(d>>4,1&d)):h(-16384&d,(16383&d)-10)}},this.netClientApplyControlsChanges=function(a){for(var b=0,c=a.length;b>4,1&d):h(-16384&d,(16383&d)-10)}};var q,r,s,t,u,v,w,x=jt.ConsoleControls,y={},z=Javatari.userPreferences.current,A=!1,B=!1,C=!!navigator.vibrate,D=C&&!!z.hapticFeedback,E=0,F=0,G=0,H=0,I=[0,1,2,2.4,3,4,5,6,7.5,10,12],J=0,K=3,L=!1,M=!1,N=0,O=3,P=!1,Q=!1,R=new Array(100);R.length=0 ;var S=Javatari.PADDLES_MODE,T=jt.DOMKeys.VK_F1.c,U=jt.DOMKeys.VK_F2.c,V=jt.DOMKeys.VK_F11.c,W=jt.DOMKeys.VK_F12.c,X=jt.DOMKeys.VK_F4.c,Y=jt.DOMKeys.VK_F9.c,Z=jt.DOMKeys.VK_TAB.c,$=jt.DOMKeys.VK_UP.c,_=jt.DOMKeys.VK_DOWN.c,aa=jt.DOMKeys.VK_RIGHT.c,ba=jt.DOMKeys.VK_LEFT.c,ca=jt.DOMKeys.VK_P.c,da=jt.DOMKeys.VK_O.c,ea=jt.DOMKeys.VK_F.c,fa=jt.DOMKeys.VK_D.c,ga=jt.DOMKeys.VK_VOID,ha=jt.DOMKeys.VK_I.c,ia=jt.DOMKeys.VK_C.c,ja=jt.DOMKeys.VK_V.c,ka=jt.DOMKeys.VK_Q.c,la=jt.DOMKeys.VK_W.c,ma=jt.DOMKeys.VK_QUOTE.c,na=jt.DOMKeys.VK_BACKQUOTE.c,oa=jt.DOMKeys.VK_1.c,pa=jt.DOMKeys.VK_2.c,qa=jt.DOMKeys.VK_3.c,ra=jt.DOMKeys.VK_4.c,sa=jt.DOMKeys.VK_5.c,ta=jt.DOMKeys.VK_6.c,ua=jt.DOMKeys.VK_7.c,va=jt.DOMKeys.VK_8.c,wa=jt.DOMKeys.VK_9.c,xa=jt.DOMKeys.VK_0.c,ya=jt.DOMKeys.VK_MINUS.c,za=jt.DOMKeys.VK_FF_MINUS.c,Aa=jt.DOMKeys.VK_EQUALS.c,Ba=jt.DOMKeys.VK_FF_EQUALS.c,Ca=new Set([x.SAVE_STATE_0,x.SAVE_STATE_1,x.SAVE_STATE_2,x.SAVE_STATE_3,x.SAVE_STATE_4,x.SAVE_STATE_5,x.SAVE_STATE_6,x.SAVE_STATE_7,x.SAVE_STATE_8,x.SAVE_STATE_9,x.SAVE_STATE_10,x.SAVE_STATE_11,x.SAVE_STATE_12,x.SAVE_STATE_FILE,x.LOAD_STATE_0,x.LOAD_STATE_1,x.LOAD_STATE_2,x.LOAD_STATE_3,x.LOAD_STATE_4,x.LOAD_STATE_5,x.LOAD_STATE_6,x.LOAD_STATE_7,x.LOAD_STATE_8,x.LOAD_STATE_9,x.LOAD_STATE_10,x.LOAD_STATE_11,x.LOAD_STATE_12,x.POWER_FRY,x.VSYNCH,x.TRACE,x.CARTRIDGE_FORMAT]);!function(){v=new jt.GamepadConsoleControls(j),w=new jt.DOMTouchControls(j),j.applyPreferences()}(),jt.DOMConsoleControls.hapticFeedback=this.hapticFeedback,jt.DOMConsoleControls.hapticFeedbackOnTouch=this.hapticFeedbackOnTouch},jt.ScreenGUI=jt.Util.isMobileDevice()?{BAR_HEIGHT:29,BAR_MENU_WIDTH:150,BAR_MENU_ITEM_HEIGHT:33,BAR_MENU_ITEM_FONT_SIZE:14,LOGO_SCREEN_WIDTH:618,LOGO_SCREEN_HEIGHT:455,TOUCH_CONTROLS_LEFT_WIDTH:119,TOUCH_CONTROLS_LEFT_WIDTH_BIG:143,TOUCH_CONTROLS_RIGHT_WIDTH:80}:{BAR_HEIGHT:29,BAR_MENU_WIDTH:140,BAR_MENU_ITEM_HEIGHT:29,BAR_MENU_ITEM_FONT_SIZE:13,LOGO_SCREEN_WIDTH:618,LOGO_SCREEN_HEIGHT:455,TOUCH_CONTROLS_LEFT_WIDTH:119,TOUCH_CONTROLS_LEFT_WIDTH_BIG:143,TOUCH_CONTROLS_RIGHT_WIDTH:80},jt.ScreenGUI.html=function(){return'
Swipe up/down on the Screen
to hide the browser bars!
'},jt.ScreenGUI.htmlConsolePanel='
',jt.ScreenGUI.css=function(){ return"html.jt-full-screen-scroll-hack body { position: absolute; width: 100%; height: "+Math.max(1280,1.4*Math.max(screen.width,screen.height)|0)+"px; top: 0; left: 0; margin: 0; padding: 0; border: none; overflow-x: hidden; overflow-y: auto; } #jt-screen-fs, #jt-screen-fs div, #jt-screen-fs canvas { outline: none; } #"+Javatari.SCREEN_ELEMENT_ID+" { display: inline-block; visibility: hidden; font-family: sans-serif; font-weight: normal; margin: 0; padding: 0; border: 1px solid black; background: black; overflow: visible; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; touch-callout: none; -webkit-tap-highlight-color: transparent; tap-highlight-color: transparent; -webkit-text-size-adjust: none; -moz-text-size-adjust: none; text-size-adjust: none; } html.jt-full-screen #"+Javatari.SCREEN_ELEMENT_ID+" { display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; box-shadow: none; z-index: 2147483646; /* one behind fsElement */ } html.jt-started #"+Javatari.SCREEN_ELEMENT_ID+" { visibility: visible; } #jt-screen-scroll-message { position: absolute; bottom: 150%; left: 50%; height: 0; width: 0; margin: 0; padding: 0; font-size: 16px; line-height: 28px; white-space: nowrap; color: hsl(0, 0%, 4%); background: hsl(0, 0%, 92%); border-radius: 15px; transform: translate(-50%, 0); box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.7); transition: all 1.7s step-end, opacity 1.6s linear; overflow: hidden; opacity: 0; z-index: -1; } html.jt-full-screen-scroll-hack #jt-screen-fs.jt-scroll-message #jt-screen-scroll-message { opacity: 1; bottom: 23%; width: 215px; height: 56px; padding: 13px 20px; z-index: 60; transition: none; } #jt-screen-fs { position: relative; background: black; text-align: center; -webkit-tap-highlight-color: rgba(0,0,0,0); tap-highlight-color: rgba(0,0,0,0) } html.jt-full-screen #jt-screen-fs { position: absolute; width: 100%; height: 100%; left: 0; bottom: 0; right: 0; z-index: 2147483647; } html.jt-full-screen-scroll-hack #jt-screen-fs { position: fixed; bottom: 0; height: 100vh; } html.jt-full-screen #jt-screen-fs-center { /* Used to center and move things horizontally in Landscape Full Screen */ position: absolute; top: 0; bottom: 0; left: 0; right: 0; } #jt-screen-canvas-outer { display: inline-block; position: relative; overflow: hidden; vertical-align: top; line-height: 1px; z-index: 3; } #jt-screen-canvas { display: block; } #jt-bar { position: relative; left: 0; right: 0; height: "+this.BAR_HEIGHT+'px; margin: 0 auto; border-top: 1px solid black; background: hsl(0, 0%, 16%); overflow: visible; /* for the Menu to show through */ box-sizing: content-box; z-index: 40; } #jt-bar-inner { position: absolute; overflow: hidden; top: 0; bottom: 0; left: 0; right: 0; text-align: left; } html.jt-bar-auto-hide #jt-bar, html.jt-full-screen #jt-bar { position: absolute; bottom: 0; transition: height 0.08s ease-in-out; } html.jt-bar-auto-hide #jt-bar.jt-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } @media only screen and (orientation: landscape) { html.jt-full-screen #jt-bar.jt-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } } #jt-bar.jt-narrow .jt-narrow-hidden { display: none; } .jt-bar-button { display: inline-block; width: 24px; height: 28px; margin: 0 1px; background-image: url("'+jt.Images.urls.iconSprites+'"); background-repeat: no-repeat; background-size: 264px 82px; cursor: pointer; } /* Firefox-specific rules */ @-moz-document url-prefix() { .jt-bar-button { image-rendering: optimizequality; } } /* .jt-bar-button { border: 1px solid yellow; background-origin: border-box; box-sizing: border-box; } */ #jt-bar-power { margin: 0 3px 0 6px; } #jt-bar-netplay.jt-hidden { display: none; } #jt-bar-select { margin: 0 2px 0 9px; width: 50px; } #jt-bar-reset { margin: 0 2px; width: 50px; } html.jt-console-panel-active #jt-bar-select, html.jt-console-panel-active #jt-bar-reset { display: none; } #jt-bar-settings, #jt-bar-full-screen, #jt-bar-scale-plus, #jt-bar-scale-minus { float: right; margin: 0; } #jt-bar-settings { margin-right: 5px; } #jt-bar-full-screen.jt-mobile { margin: 0 6px; } #jt-bar-scale-plus { width: 21px; } #jt-bar-scale-minus { width: 18px; } #jt-bar-text { float: right; width: 32px; } #jt-bar-text.jt-mobile { margin: 0 0 0 6px; } #jt-bar-console-panel { position: absolute; left: 2px; right: 0; width: 39px; margin: 0 auto; } #jt-bar.jt-narrow #jt-bar-console-panel { position: static; float: right; margin-right: 3px; } #jt-bar-logo { position: absolute; left: 0; right: 0; width: 34px; margin: 0 auto; } html:not(.jt-console-panel-active) #jt-bar.jt-narrow #jt-bar-logo { display: none; } #jt-bar-menu { position: absolute; display: none; bottom: '+this.BAR_HEIGHT+"px; font-size: "+this.BAR_MENU_ITEM_FONT_SIZE+"px; line-height: 1px; overflow: hidden; transform-origin: bottom center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-bar-menu-inner { display: inline-block; padding-bottom: 2px; border: 1px solid black; background: hsl(0, 0%, 16%); } .jt-bar-menu-item, #jt-bar-menu-title { position: relative; display: none; width: "+this.BAR_MENU_WIDTH+"px; height: "+this.BAR_MENU_ITEM_HEIGHT+"px; color: rgb(205, 205, 205); border: none; padding: 0; line-height: "+this.BAR_MENU_ITEM_HEIGHT+'px; text-shadow: 1px 1px 1px black; background: transparent; outline: none; overflow: hidden; backface-visibility: hidden; -webkit-backface-visibility: hidden; cursor: pointer; box-sizing: border-box; } #jt-bar-menu-title { display: block; color: white; font-weight: bold; border-bottom: 1px solid black; margin-bottom: 1px; text-align: center; background: rgb(70, 70, 70); cursor: auto; } .jt-bar-menu-item.jt-hover:not(.jt-bar-menu-item-disabled):not(.jt-bar-menu-item-divider) { color: white; background: hsl(358, 67%, 46%); } .jt-bar-menu-item-disabled { color: rgb(110, 110, 110); } .jt-bar-menu-item-divider { height: 1px; margin: 1px 0; background: black; } .jt-bar-menu-item-toggle { text-align: left; padding-left: 30px; } .jt-bar-menu-item-toggle::after { content: ""; position: absolute; width: 6px; height: 19px; top: '+((this.BAR_MENU_ITEM_HEIGHT-21)/2|0)+"px; left: 10px; background: rgb(70, 70, 70); box-shadow: black 1px 1px 1px; } .jt-bar-menu-item-toggle.jt-bar-menu-item-toggle-checked { color: white; } .jt-bar-menu-item-toggle.jt-bar-menu-item-toggle-checked::after { background: rgb(248, 33, 28); } #jt-console-panel { display: none; position: absolute; bottom: -"+(jt.ConsolePanel.DEFAULT_HEIGHT+2)+"px; left: 50%; transform: translate(-50%, 0); transform-origin: center top; margin: 0 auto; border: 1px solid black; z-index: 30; } html.jt-console-panel-active #jt-console-panel { display: block; } html.jt-full-screen #jt-console-panel { bottom: "+(jt.ScreenGUI.BAR_HEIGHT+2)+'px; border: none; transform-origin: center bottom; } .jt-select-dialog { position: absolute; overflow: hidden; display: none; top: 0; bottom: 0; left: 0; right: 0; width: 540px; max-width: 92%; height: 297px; margin: auto; color: white; font-size: 18px; line-height: 21px; background: hsl(0, 0%, 16%); padding: 11px 0 0; text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } .jt-select-dialog.jt-show { display: block; } .jt-select-dialog > .jt-footer { position: absolute; width: 100%; bottom: 7px; font-size: 13px; text-align: center; color: rgb(170, 170, 170); } .jt-select-dialog > ul { position: relative; width: 88%; top: 5px; margin: auto; padding: 0; list-style: none; font-size: 14px; color: hsl(0, 0%, 88%); } .jt-select-dialog > ul li { display: none; position: relative; overflow: hidden; height: 26px; background: rgb(70, 70, 70); margin: 7px 0; padding: 11px 10px 0 18px; /* Space on the left for the toggle mark for all lines */ line-height: 0; text-align: left; text-overflow: ellipsis; border: 2px dashed transparent; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); white-space: nowrap; box-sizing: border-box; cursor: pointer; } .jt-select-dialog > ul li.jt-visible { display: block; } .jt-select-dialog > ul li.jt-selected { color: white; background: hsl(358, 67%, 46%); } .jt-select-dialog > ul li.jt-droptarget { color: white; border-color: lightgray; } .jt-select-dialog > ul li.jt-toggle::after { content: ""; position: absolute; width: 6px; height: 17px; top: 2px; left: 6px; background: rgb(60, 60, 60); box-shadow: black 1px 1px 1px; } .jt-select-dialog > ul li.jt-toggle-checked::after { background: rgb(248, 33, 28); } #jt-cartridge-format.jt-select-dialog > ul { width: 100%; height: 226px; margin: 7px auto 0; padding: 0 0 0 30px; overflow-y: auto; box-sizing: border-box; } #jt-cartridge-format.jt-select-dialog > ul li { width: 280px; margin: 7px 0 2px 0; } #jt-cartridge-format.jt-select-dialog > ul li:first-child { margin-top: 0; } #jt-cartridge-format ::-webkit-scrollbar { width: 12px; } #jt-cartridge-format ::-webkit-scrollbar-track { background: transparent; } #jt-cartridge-format ::-webkit-scrollbar-thumb { border: solid transparent; border-width: 1px 1px 1px 2px; background: rgb(80, 80, 80); background-clip: content-box; } #jt-cartridge-format ul.jt-quick-options-list { width: 230px; margin: 18px 0 0 52px; } #jt-cartridge-format ul.jt-quick-options-list li div { height: 24px; line-height: 24px; } #jt-cartridge-format .jt-control { width: 60px; line-height: 24px; } /* Firefox-specific rules */ @-moz-document url-prefix() { /* Try to hide scrollbar, since we cant style it :-( */ #jt-cartridge-format.jt-select-dialog > ul { width: 304px; } } #jt-logo { position: absolute; display: none; top: 0; bottom: 0; left: 0; right: 0; background: black; } #jt-logo.jt-show { display: block; } #jt-logo-center { position: absolute; top: 50%; left: 50%; width: 598px; height: 456px; transform: translate(-50%, -50%); } #jt-logo-image { position: absolute; top: 50%; left: 50%; width: 335px; max-width: 57%; transform: translate(-50%, -50%); -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #jt-screen-fs.jt-logo-message-active #jt-logo-image { top: 128px; width: 37%; max-width: initial; } #jt-logo-loading-icon, #jt-canvas-loading-icon { display: none; position: absolute; top: 79%; left: 0; right: 0; width: 14%; height: 3%; margin: 0 auto; background-color: rgba(0, 0, 0, .8); border: solid transparent; border-width: 8px 30px; border-radius: 3px; box-sizing: content-box; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #jt-screen-fs.jt-logo-message-active #jt-logo-loading-icon { top: 204px; } #jt-unmute-message { display: none; position: absolute; left: 50%; bottom: 5px; height: 30px; padding: 0 10px; margin: 0 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; font-size: 15px; line-height: 30px; color: rgb(210, 210, 210); background: rgba(0, 0, 0, 0.7); transform-origin: bottom center; transform: translate(-50%, 0); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-unmute-message::before { content: ""; display: inline-block; width: 24px; height: 20px; margin: 5px 9px 0 0; background-image: url("'+jt.Images.urls.muteIcon+'"); background-repeat: no-repeat; background-size: 24px 20px; vertical-align: top; } #jt-unmute-message::after { content: "Audio is muted. Click to unmute"; } #jt-unmute-message.jt-show { display: inline-block; } #jt-logo-message { display: none; position: absolute; top: 226px; width: 100%; color: hsl(0, 0%, 97%); font-size: 29px; line-height: 34px; } #jt-screen-fs.jt-logo-message-active #jt-logo-message { display: block; } #jt-logo-message-ok { display: block; position: absolute; top: 91px; left: 193px; width: 214px; height: 130px; } #jt-logo-message-ok.jt-higher { top: 74px; } #jt-logo-message-ok-text { position: absolute; top: 49%; left: 50%; width: 120px; height: 47px; font-size: 23px; line-height: 47px; background: hsl(358, 67%, 46%); border-radius: 6px; color: white; transform: translate(-50%, -50%); } #jt-osd { position: absolute; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; top: -29px; right: 16px; height: 29px; padding: 0 12px; margin: 0; font-weight: bold; font-size: 15px; line-height: 29px; color: rgb(0, 255, 0); background: rgba(0, 0, 0, 0.7); transform-origin: top right; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; opacity: 0; } .jt-arrow-up, .jt-arrow-down, .jt-arrow-left, .jt-arrow-right { border: 0px solid transparent; box-sizing: border-box; } .jt-arrow-up { border-bottom-color: inherit; } .jt-arrow-down { border-top-color: inherit; } .jt-arrow-left { border-right-color: inherit; } .jt-arrow-right { border-left-color: inherit; } .jt-quick-options-list { margin-top: 12px; padding: 0; list-style: none; color: hsl(0, 0%, 88%); } .jt-quick-options-list li { margin-top: 8px; line-height: 1px; text-align: left; } .jt-quick-options-list li div { display: inline-block; overflow: hidden; height: 26px; font-size: 14px; line-height: 26px; text-overflow: ellipsis; white-space: nowrap; box-sizing: border-box; } .jt-quick-options-list .jt-control { float: right; width: 86px; font-size: 15px; line-height: 25px; color: hsl(0, 0%, 70%); background: black; text-align: center; cursor: pointer; } .jt-quick-options-list .jt-control.jt-selected { color: white; background: hsl(358, 67%, 46%); box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); } .jt-quick-options-list .jt-control.jt-selected.jt-inactive { line-height: 21px; border: 2px dashed hsl(358, 67%, 46%); background: black; } #jt-quick-options { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 233px; height: 345px; margin: auto; padding: 11px 14px 0; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } #jt-quick-options.jt-show { display: block; } #jt-quick-options::before { content: "Quick Options"; display: block; } #jt-netplay { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 390px; height: 220px; margin: auto; padding-top: 11px; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); transform-origin: left center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } #jt-netplay.jt-show { display: block; } #jt-netplay::before { content: "Net Play!"; display: block; } #jt-netplay-status-box { position: relative; margin-top: 17px; } #jt-netplay-status { display: inline-block; position: relative; width: 340px; font-size: 15px; line-height: 27px; background: black; vertical-align: top; text-shadow: none; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; box-sizing: border-box; cursor: auto; } #jt-netplay-status-box.jt-active #jt-netplay-status { padding: 0 16px 0 12px; } #jt-netplay-status-box.jt-active #jt-netplay-status::after { content: ""; position: absolute; width: 6px; height: 18px; top: 4px; left: 7px; background: rgb(248, 33, 28); } #jt-netplay-link { display: none; position: absolute; right: 25px; top: 0; width: 26px; height: 27px; color: white; font-size: 15px; font-weight: 600; line-height: 27px; text-decoration: none; background: black; text-align: center; } #jt-netplay-link:hover { background: hsl(358, 67%, 46%); cursor: pointer; } #jt-netplay-status-box.jt-active #jt-netplay-link { display: block; } .jt-netplay-button { display: inline-block; width: 86px; padding: 0; margin: 0; font-size: 15px; line-height: 26px; color: white; background: hsl(358, 67%, 46%); text-shadow: 1px 1px 1px black; border: none; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); cursor: pointer; } #jt-netplay-session-box { margin-top: 18px; } #jt-netplay-session-label, #jt-netplay-nick-label { font-size: 15px; margin-bottom: 4px; } #jt-netplay-session-label::before { content: "Session Name"; } #jt-netplay-session-box input { width: 150px; height: 26px; padding: 0 10px; margin: 0 8px; font-size: 15px; line-height: 26px; background: rgb(240, 240, 240); border: none; border-radius: 0; box-sizing: border-box; outline: none; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; cursor: auto; } #jt-netplay-nick-label { margin-top: 10px; } #jt-netplay-nick-label::before { content: "User Nickname"; } .jt-netplay-button:disabled { color: rgb(130, 130, 130); background: rgb(70, 70, 70); cursor: default; } #jt-netplay input:disabled { color: black; background: rgb(180, 180, 180); cursor: default; } #jt-netplay-session-box.jt-disabled div { color: rgb(130, 130, 130); } input#jt-netplay-link-text { position: absolute; top: 8px; left: 50px; width: 1px; height: 1px; padding: 0; margin: 0; border: none; color: transparent; background: transparent; opacity: 0; z-index: -10; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; } #jt-touch-left, #jt-touch-right, #jt-touch-speed { display: none; position: absolute; z-index: 1; } html.jt-full-screen.jt-touch-active #jt-touch-left, html.jt-full-screen.jt-touch-active #jt-touch-right, html.jt-full-screen.jt-touch-active #jt-touch-speed { display: block; } .jt-touch-dir { width: 130px; height: 130px; color: hsl(0, 0%, 75%); border-radius: 100%; } .jt-touch-dir::before { content: ""; position: absolute; top: 14px; left: 14px; right: 14px; bottom: 14px; border: 1px solid hsl(0, 0%, 26%); border-radius: 100%; } .jt-touch-dir-joy .jt-touch-dir-up, .jt-touch-dir-joy .jt-touch-dir-left { position: absolute; background: hsl(0, 0%, 31%); border-radius: 2px 2px 0 0; box-shadow: inset 1px 2px 0px hsl(0, 0%, 43%), inset -1px -1px hsl(0, 0%, 19%), 0 3px 0 1px hsl(0, 0%, 21%); } .jt-touch-dir-joy .jt-touch-dir-up { width: 26px; height: 78px; top: 24px; left: 52px; } .jt-touch-dir-joy .jt-touch-dir-left { width: 78px; height: 25px; top: 51px; left: 26px; } .jt-touch-dir-joy .jt-touch-dir-left::before { content: ""; position: absolute; top: 2px; left: 23px; width: 33px; height: 22px; background: inherit; z-index: 1; } .jt-touch-dir-joy .jt-touch-dir-left::after { content: ""; position: absolute; top: 4px; left: 30px; height: 17px; width: 17px; border-radius: 100%; box-shadow: inset 0 0 2px hsl(0, 0%, 22%), inset 1px 2px 3px 1px hsl(0, 0%, 26%), inset -1px -2px 1px hsl(0, 0%, 64%); z-index: 2; } .jt-touch-dir .jt-arrow-up, .jt-touch-dir .jt-arrow-down, .jt-touch-dir .jt-arrow-left, .jt-touch-dir .jt-arrow-right { position: absolute; border-width: 5px; z-index: 2; } .jt-touch-dir .jt-arrow-up { top: 26px; left: 60px; border-bottom-width: 11px; } .jt-touch-dir .jt-arrow-down { bottom: 29px; left: 60px; border-top-width: 11px; } .jt-touch-dir .jt-arrow-left { top: 58px; left: 26px; border-right-width: 11px; } .jt-touch-dir .jt-arrow-right { top: 58px; right: 26px; border-left-width: 11px; } .jt-touch-button { position: relative; display: block; width: 72px; height: 72px; font-size: 20px; line-height: 67px; color: hsl(0, 0%, 79%); border-radius: 100%; cursor: default; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; z-index: 0; } .jt-touch-button::before { content: ""; position: absolute; box-sizing: border-box; z-index: -1; } .jt-touch-button-joy::before, .jt-touch-button-none::before { width: 50px; height: 48px; top: 9px; left: 11px; border-radius: 100%; } #jt-screen-fs.jt-touch-config-active .jt-touch-button-none::before { border: 2px solid hsl(0, 0%, 30%); } .jt-touch-button-joy.jt-touch-button-joy-button::before { border: none; background: hsl(1, 70%, 37%); box-shadow: inset -2px -7px 3px 1px hsl(1, 68%, 43%), inset 0px 0px 1px 9px hsl(1, 72%, 33%), 0px -1px 0px 1px hsl(1, 70%, 47%), 0px 1px 0px 2px hsl(1, 70%, 29%); } .jt-touch-button-joy.jt-touch-button-joy-buttonT::before { border: none; background: hsl(220, 72%, 39%); box-shadow: inset -2px -7px 3px 1px hsl(220, 70%, 43%), inset 0px 0px 1px 9px hsl(220, 75%, 34%), 0px -1px 0px 1px hsl(220, 72%, 50%), 0px 1px 0px 2px hsl(220, 72%, 28%); } #jt-touch-button { z-index: 7 } #jt-touch-buttonT { z-index: 6 } #jt-touch-speed.jt-center { width: 84px; left: 0; right: 0; margin: 0 auto; } #jt-touch-speed.jt-center.jt-poweroff #jt-touch-pause { margin-left: 21px } #jt-touch-pause, #jt-touch-fast { float: left; width: 42px; height: 42px; border-color: hsl(0, 0%, 70%); } #jt-touch-pause::after, #jt-touch-fast::before, #jt-touch-fast::after { content: ""; display: inline-block; border: 0 solid transparent; box-sizing: border-box; } #jt-touch-pause::after { margin-top: 14px; width: 13px; height: 14px; border-width: 0; border-left-width: 4px; border-left-color: inherit; border-right-width: 4px; border-right-color: inherit; } #jt-touch-fast::before, #jt-touch-fast::after { margin-top: 14px; width: 11px; height: 14px; border-width: 7px; border-left-width: 11px; border-left-color: inherit; border-right-width: 0; } #jt-touch-speed.jt-paused #jt-touch-pause::after, #jt-touch-speed.jt-poweroff #jt-touch-pause::after { margin: 12px 0 0 3px; width: 15px; height: 18x; border-width: 9px; border-left-width: 15px; border-right-width: 0; } #jt-touch-speed.jt-paused #jt-touch-fast::after { width: 7px; border-width: 0; border-left-width: 3px; } #jt-touch-speed.jt-poweroff #jt-touch-fast { display: none; } .jt-console-panel { width:'+jt.ConsolePanel.DEFAULT_WIDTH+"px; height:"+jt.ConsolePanel.DEFAULT_HEIGHT+'px; background: black url("'+jt.Images.urls.panel+'") no-repeat; background-size: 460px 134px; box-shadow: '+jt.ConsolePanel.sameBoxShadowAsScreen()+'; outline: none; } html.jt-full-screen .jt-console-panel { box-shadow: none; } .jt-console-panel-icon { position: absolute; background: url("'+jt.Images.urls.iconSprites+'") center no-repeat; background-size: 264px 82px; } .jt-console-panel-switch { position: absolute; bottom: 107px; width: 50px; height: 26px; opacity: 0; cursor: pointer; } .jt-console-panel-switch:after { content: ""; position: absolute; left: 11px; bottom: 5px; width: 27px; height: 16px; background: url("'+jt.Images.urls.panelSprites+'") center no-repeat; background-size: 256px 93px; } .jt-console-panel-lever { position: absolute; bottom: 30px; width: 44px; height: 72px; cursor: pointer; } .jt-console-panel-lever:after { content: ""; position: absolute; left: 12px; bottom: 8px; width: 20px; height: 46px; background: url("'+jt.Images.urls.panelSprites+'") center no-repeat; background-size: 256px 93px; } .jt-console-panel-power { left: 19px; } .jt-console-panel-power:after { background-position: 0px 0px; } .jt-console-panel-color { left: 84px; } .jt-console-panel-color:after { background-position: -21px 0px; } .jt-console-panel-select { left: 340px; } .jt-console-panel-select:after { background-position: 0px -47px; } .jt-console-panel-reset { left: 403px; } .jt-console-panel-reset:after { background-position: -21px -47px; } .jt-console-panel-p0-diff { left: 152px; } .jt-console-panel-p0-diff:after { background-position: -229px -17px; } .jt-console-panel-p1-diff { left: 265px; } .jt-console-panel-p1-diff:after { background-position: -229px 0px; } .jt-console-panel-cart-image { position: absolute; left: 140px; bottom: 9px; width: 186px; height: 82px; background: url("'+jt.Images.urls.panelSprites+'") center no-repeat; background-size: 256px 93px; background-position: -42px 0px; } .jt-console-panel-cart-load { position: absolute; left: 141px; bottom: 36px; width: 184px; height: 55px; cursor: pointer; } .jt-console-panel-cart-file { left: 170px; bottom: 3px; width: 31px; height: 30px; background-position: -132px -6px; cursor: pointer; } .jt-console-panel-cart-url { left: 266px; bottom: 3px; width: 31px; height: 30px; background-position: -161px -6px; cursor: pointer; } .jt-console-panel-cart-label { position: absolute; top: 51px; left: 156px; width: 148px; height: 25px; padding: 0px 2px; margin: 0px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-style: normal; font-variant: normal; font-weight: bold; font-stretch: normal; font-size: 14px; line-height: 25px; font-family: sans-serif; text-align: center; color: black; background: black; border: 1px solid transparent; opacity: 1; cursor: pointer; } .jt-console-panel-power-labels { left: 31px; bottom: 9px; width: 88px; height: 15px; background-position: -135px -37px; } .jt-console-panel-reset-labels { right: 16px; bottom: 9px; width: 96px; height: 15px; background-position: -135px -55px; } .jt-console-panel-p0-diff-label { left: 128px; top: 8px; width: 29px; height: 15px; background-position: -233px -37px; } .jt-console-panel-p1-diff-label { left: 313px; top: 8px; width: 28px; height: 15px; background-position: -233px -55px; } .jt-hide-labels .jt-console-panel-p0-diff-label, .jt-hide-labels .jt-console-panel-p1-diff-label, .jt-hide-labels .jt-console-panel-power-labels, .jt-hide-labels .jt-console-panel-reset-labels, .jt-hide-labels .jt-console-panel-cart-file, .jt-hide-labels .jt-console-panel-cart-url { visibility: hidden; } @media only screen and (orientation: landscape) { /* Landscape */ #jt-touch-left { left: calc(-6px - '+this.TOUCH_CONTROLS_LEFT_WIDTH+"px); bottom: 50%; transform: translateY(50%); } html.jt-full-screen.jt-touch-active.jt-dir-big #jt-touch-left { left: calc(-6px - "+this.TOUCH_CONTROLS_LEFT_WIDTH_BIG+"px); transform: translateY(50%) scale(1.2); transform-origin: left center; } #jt-touch-right { right: calc(5px - "+this.TOUCH_CONTROLS_RIGHT_WIDTH+"px); bottom: 50%; transform: translateY(50%); } #jt-touch-speed { position: absolute; left: -103px; top: 10px; } html.jt-full-screen.jt-touch-active.jt-dir-big #jt-touch-speed { left: -118px; } /* Adjust centered elements leaving space to the touch controls on both sides */ html.jt-full-screen.jt-touch-active #jt-screen-fs-center { left: "+this.TOUCH_CONTROLS_LEFT_WIDTH+"px; right: "+this.TOUCH_CONTROLS_RIGHT_WIDTH+"px; } html.jt-full-screen.jt-touch-active.jt-dir-big #jt-screen-fs-center { left: "+this.TOUCH_CONTROLS_LEFT_WIDTH_BIG+"px; } } @media only screen and (orientation: portrait) { /* Portrait */ #jt-touch-left { left: 2px; bottom: 200px; } html.jt-full-screen.jt-touch-active.jt-dir-big #jt-touch-left { transform: scale(1.2); transform-origin: left center; } #jt-touch-right { right: 5px; bottom: 144px; width: 112px; height: 112px; } #jt-touch-speed { position: absolute; left: 19px; bottom: "+(this.BAR_HEIGHT+12)+"px; } .jt-touch-button { position: absolute; } #jt-touch-button { bottom: 50%; right: 50%; } #jt-touch-buttonT { bottom: 100%; right: 0%; } } @media only screen and (orientation: portrait) and (max-device-height: 638px) { /* Medium Portrait. Like iPhone 5 */ #jt-touch-left { bottom: 156px; } #jt-touch-right { bottom: 100px; } } @media only screen and (orientation: portrait) and (max-device-height: 518px) { /* Short Portrait. Like iPhone 4 */ #jt-touch-left { bottom: 98px; } #jt-touch-right { bottom: 42px; } html.jt-console-panel-active #jt-touch-left { bottom: 106px; } html.jt-console-panel-active #jt-touch-right { bottom: 52px; } html.jt-full-screen.jt-console-panel-active #jt-touch-speed { display: none; } } " },jt.Monitor=function(a){"use strict";function b(a){var b=a<.5?.5:a>2.5?2.5:a;return Math.round(10*b)/10}function c(a){var b=a<.5?.5:a;return Math.round(10*b)/10}var d=this;this.connect=function(a){r=a,r.connectMonitor(this)},this.nextLine=function(a,b){var c=!1;return H=A&&Hv&&e()};this.setVideoStandard=function(a){G=a,s=a.totalWidth,t=a.totalHeight,u=t-Q,v=t+Q+R,J&&(y=G.defaultHeightPct,B=G.defaultOriginYPct),j(w,y),i(z,B)};var g=function(){var a=K;K=0,(a>=250&&a<=281||a>=300&&a<=325)&&++F>=5&&h(a)},h=function(a){E=a<290?jt.VideoStandard.NTSC:jt.VideoStandard.PAL;var b=L,c=a-E.totalHeight;(c=c>2?(c>6?6:c)-2:0)!=b&&(L=c,d.setVideoStandard(E))};this.videoSignalOff=function(){H=0,a.videoSignalOff()};var i=function(a,b){z=a,z<0?z=0:z>s-w&&(z=s-w),B=b,B<0?B=0:B/100*t>t-x&&(B=(t-x)/t*100),(A=B/100*t+L/2|0)+x>t&&(A=t-x)},j=function(a,b){w=a,w<10?w=10:w>s&&(w=s),y=b,y<10?y=10:y>100&&(y=100),x=y/100*(t+L)|0,x>t&&(x=t),n.width=w,n.height=x,i(z,B),k()},k=function(){a&&a.displayMetrics(w,x)},l=function(){J=!0,z=P,B=G.defaultOriginYPct,j(N,G.defaultHeightPct)},m=function(){n=document.createElement("canvas"),n.width=N,n.height=O,o=n.getContext("2d",{alpha:!1,antialias:!1}),o.globalCompositeOperation="copy",o.globalAlpha=1,p=o.createImageData(jt.VideoStandard.PAL.totalWidth,jt.VideoStandard.PAL.totalHeight),q=new Uint32Array(p.data.buffer)};this.currentLine=function(){return H},this.refresh=function(){o.putImageData(p,-z,0,z,0,w,x),a.refresh(n,w,x)},this.videoStandardDetectionStart=function(){E=null,F=0,K=0},this.getVideoStandardDetected=function(){return E},this.toggleShowInfo=function(){(M=!M)||a.showOSD(null,!0)},this.signalOff=function(){a.videoSignalOff()},this.showOSD=function(b,c,d){a.showOSD(b,c,d)},this.setDefaults=function(){l(),a.crtModeSetDefault(),a.crtFilterSetDefault(),a.requestReadjust(!0)},this.setDebugMode=function(b){a.setDebugMode(b)},this.crtModeToggle=function(){a.crtModeToggle()},this.crtFilterToggle=function(){a.crtFilterToggle()},this.fullscreenToggle=function(){a.displayToggleFullscreen()},this.displayAspectDecrease=function(){this.displayScale(b(C-S),D),this.showOSD("Display Aspect: "+C.toFixed(2)+"x",!0)},this.displayAspectIncrease=function(){this.displayScale(b(C+S),D),this.showOSD("Display Aspect: "+C.toFixed(2)+"x",!0)},this.displayScaleDecrease=function(){this.displayScale(C,c(D-S)),this.showOSD("Display Size: "+D.toFixed(2)+"x",!0)},this.displayScaleIncrease=function(){this.displayScale(C,c(D+S)),this.showOSD("Display Size: "+D.toFixed(2)+"x",!0)},this.viewportOriginDecrease=function(){J=!1,i(z,B+T),this.showOSD("Viewport Origin: "+A,!0)},this.viewportOriginIncrease=function(){J=!1,i(z,B-T),this.showOSD("Viewport Origin: "+A,!0)},this.viewportSizeDecrease=function(){l(),this.showOSD("Viewport Size: Standard",!0)},this.viewportSizeIncrease=function(){J=!1,j(s,100),this.showOSD("Viewport Size: Full Signal",!0)},this.displayScale=function(b,c){C=b,D=c,a.displayScale(C,D)},this.controlStateChanged=function(b,c){a.controlStateChanged(b,c)},this.controlsStatesRedefined=function(){a.controlsStatesRedefined()},this.consolePowerAndUserPauseStateUpdate=function(b,c){a.consolePowerAndUserPauseStateUpdate(b,c)},this.cartridgeInserted=function(b){a.cartridgeInserted(b)};var n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G=jt.VideoStandard.NTSC,H=0,I=0,J=!0,K=0,L=0,M=!1,N=160,O=213,P=68,Q=16,R=5,S=.1,T=.4;!function(){m(),l(),d.setVideoStandard(G)}()},jt.ConsolePanel=function(a,b){"use strict";function c(){k(),l(),q()}function d(b){jt.Util.blockEvent(b),J||(s.hapticFeedbackOnTouch(b),a.closeAllOverlays(),b.target.jtPressed=!0,s.processControlState(b.target.jtControl,!0))}function e(a){jt.Util.blockEvent(a),a.target.jtPressed=!1,J||(s.hapticFeedbackOnTouch(a),s.processControlState(a.target.jtControl,!1))}function f(a){a.target.jtPressed&&e(a)}function g(b,c,d){d||s.hapticFeedbackOnTouch(b),c||(a.closeAllOverlays(),t.controlActivated(b.target.jtControl))}this.connectPeripherals=function(a,c,d){s=c,t=d,a.registerForDnD(b)},this.connect=function(a){u=a},this.setActive=function(a){H=a,H&&(w||c(),i(),j()),document.documentElement.classList.toggle("jt-console-panel-active",H)},this.setLogoMessageActive=function(a){J=a},this.updateScale=function(a,c,d){var e=0,f=0;if(H){a=c?d?.85*a:a-36:.85*a;var g=Math.min(1,a/jt.ConsolePanel.DEFAULT_WIDTH);b.style.transform=g<1?"translateX(-50%) scale("+g.toFixed(8)+")":"translateX(-50%)",e=Math.ceil(g*jt.ConsolePanel.DEFAULT_HEIGHT),f=Math.ceil(g*jt.ConsolePanel.DEFAULT_WIDTH)}return s&&s.getTouchControls().updateConsolePanelSize(a,f,e,c,d),e};var h=function(){o(w,!I[r.POWER]),o(x,I[r.BLACK_WHITE]),o(y,I[r.SELECT]),o(z,I[r.RESET]),o(A,I[r.DIFFICULTY0]),o(B,I[r.DIFFICULTY1]),i()},i=function(){if(o(C,v),o(G,v),G.innerHTML=v&&v.rom.info.l||L,v&&v.rom.info.lc){var a=v.rom.info.lc.trim().split(/\s+/);G.style.color=a[0]||M,G.style.background=a[1]||N,G.style.borderColor=a[2]||O}else G.style.color=M,G.style.background=N,G.style.borderColor=O},j=function(){u.controlsStateReport(I),h()},k=function(){b.innerHTML=jt.ScreenGUI.htmlConsolePanel,delete jt.ScreenGUI.htmlConsolePanel,jt.Util.isMobileDevice()&&b.classList.add("jt-hide-labels")},l=function(){w=document.getElementById("jt-console-panel-power"),m(w,r.POWER,!0),x=document.getElementById("jt-console-panel-color"),m(x,r.BLACK_WHITE,!0),y=document.getElementById("jt-console-panel-select"),m(y,r.SELECT,!0),z=document.getElementById("jt-console-panel-reset"),m(z,r.RESET,!0),A=document.getElementById("jt-console-panel-p0-diff"),m(A,r.DIFFICULTY0,!0),B=document.getElementById("jt-console-panel-p1-diff"),m(B,r.DIFFICULTY1,!0),C=document.getElementById("jt-console-panel-cart-image"),D=document.getElementById("jt-console-panel-cart-load"),n(D,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT),E=document.getElementById("jt-console-panel-cart-file"),F=document.getElementById("jt-console-panel-cart-url"),Javatari.CARTRIDGE_CHANGE_DISABLED?(p(E),p(F)):(n(E,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT),n(F,jt.PeripheralControls.AUTO_LOAD_URL))},m=function(a,b,c){a.jtControl=b,c?(a.jtPressed=!1,jt.Util.addEventsListener(a,"mousedown touchstart",d),jt.Util.addEventsListener(a,"mouseup touchend touchcancel",e),jt.Util.addEventsListener(a,"mouseleave",f)):jt.Util.onTapOrMouseDown(a,d)},n=function(a,b){a.jtControl=b,a.jtNeedsUIG=!0,jt.Util.onTapOrMouseDownWithBlockUIG(a,g)},o=function(a,b){a.style.opacity=b?1:0},p=function(a,b){a.style.display="none"},q=function(){var a=(Javatari.CARTRIDGE_LABEL_COLORS||"").trim().split(/\s+/);a[0]&&(M=a[0]),a[1]&&(N=a[1]),a[2]&&(O=a[2]),G=document.getElementById("jt-console-panel-cart-label"),n(G,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT)},r=jt.ConsoleControls;this.controlStateChanged=function(a,b){H&&K[a]&&j()},this.controlsStatesRedefined=function(){H&&j()},this.cartridgeInserted=function(a){v=a,H&&i()};var s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H=!1,I={},J=!1,K={};K[r.POWER]=1,K[r.BLACK_WHITE]=1,K[r.SELECT]=1,K[r.RESET]=1,K[r.DIFFICULTY0]=1,K[r.DIFFICULTY1]=1;var L="JAVATARI",M="#fa2525",N="#101010",O="transparent"},jt.ConsolePanel.DEFAULT_WIDTH=460,jt.ConsolePanel.DEFAULT_HEIGHT=134,jt.ConsolePanel.shouldStartActive=function(){return!Javatari.SCREEN_CONSOLE_PANEL_DISABLED&&(-1===Javatari.CONSOLE_PANEL_ELEMENT_ID||document.getElementById(Javatari.CONSOLE_PANEL_ELEMENT_ID))},jt.ConsolePanel.sameBoxShadowAsScreen=function(){var a=document.getElementById(Javatari.SCREEN_ELEMENT_ID);return a?window.getComputedStyle(a,null).getPropertyValue("box-shadow"):"none"},jt.CanvasDisplay=function(room,mainElement){"use strict";function init(){jt.Util.insertCSS(jt.ScreenGUI.css()),delete jt.ScreenGUI.css,setupMain(),setupBar(),setupFullscreen(),consolePanel=new jt.ConsolePanel(self,consolePanelElement), @@ -308,7 +308,7 @@ jt.Util.onTapOrMouseDownWithBlock(i["jt-back"],i.hide),j.addEventListener("keydown",function(a){h(a,!0)}),j.addEventListener("keyup",function(a){h(a,!1)}),jt.Util.onTapOrMouseDownWithBlock(i["jt-menu-console"],function(){i.setPage("CONSOLE")}),jt.Util.onTapOrMouseDownWithBlock(i["jt-menu-ports"],function(){i.setPage("PORTS")}),jt.Util.onTapOrMouseDownWithBlock(i["jt-menu-general"],function(){i.setPage("GENERAL")}),jt.Util.onTapOrMouseDownWithBlock(i["jt-menu-about"],function(){i.setPage("ABOUT")});for(var a in r)!function(a){jt.Util.onTapOrMouseDownWithBlock(i[a],function(){k(a)})}(a);jt.Util.onTapOrMouseDownWithBlock(i["jt-ports-paddles-mode"],function(){b.togglePaddleMode()}),jt.Util.onTapOrMouseDownWithBlock(i["jt-ports-p1-mode"],function(){b.toggleP1ControlsMode()}),jt.Util.onTapOrMouseDownWithBlock(i["jt-ports-gamepads-mode"],function(){b.toggleGamepadMode()}),jt.Util.onTapOrMouseDownWithBlock(i["jt-ports-defaults"],o),jt.Util.onTapOrMouseDownWithBlock(i["jt-ports-revert"],p)}function f(){i["jt-browserinfo"].innerHTML=navigator.userAgent}function g(){var a=b.isPaddleMode(),c=b.isP1ControlsMode();i["jt-ports-paddles-mode"].innerHTML="Controllers: "+(a?"PADDLES":"JOYSTICKS"),i["jt-ports-p1-mode"].innerHTML="Swap Mode: "+(c?"SWAPPED":"NORMAL"),i["jt-ports-gamepads-mode"].innerHTML="Gamepads: "+b.getGamepadModeDesc(),a?(i["jt-control-p1-controller"].style.backgroundPositionY="-91px",i["jt-control-p2-controller"].style.backgroundPositionY="-91px",i["jt-control-p1-up-label"].innerHTML=i["jt-control-p2-up-label"].innerHTML="+ Speed",i["jt-control-p1-down-label"].innerHTML=i["jt-control-p2-down-label"].innerHTML="- Speed"):(i["jt-control-p1-controller"].style.backgroundPositionY="0",i["jt-control-p2-controller"].style.backgroundPositionY="0",i["jt-control-p1-up-label"].innerHTML=i["jt-control-p2-up-label"].innerHTML="Up",i["jt-control-p1-down-label"].innerHTML=i["jt-control-p2-down-label"].innerHTML="Down"),i["jt-control-p1-label"].innerHTML="PLAYER "+(c?"2":"1"),i["jt-control-p2-label"].innerHTML="PLAYER "+(c?"1":"2");var d=v.joystickKeys;for(var e in r){var f=i[e];if(e===s)f.classList.add("jt-redefining"),f.classList.remove("jt-undefined"),f.innerHTML="?";else{f.classList.remove("jt-redefining");var g=r[e],h=d[g.player][g.control];h.c===jt.DOMKeys.VK_VOID.c?(f.classList.add("jt-undefined"),f.innerHTML=""):(f.classList.remove("jt-undefined"),f.innerHTML=h.n)}}}function h(a,b){var c=jt.DOMKeys.codeForKeyboardEvent(a);if(b&&c===w)return n(),jt.Util.blockEvent(a);s&&m(a)}var i=this;this.show=function(a){if(!j)return c(),void setTimeout(function(){i.show(a)},0);this.position()&&(s=null,this.setPage(a||t),j.classList.add("jt-show"),j.classList.add("jt-show"),u=!0,setTimeout(function(){j.focus()},50))},this.hide=function(){u&&(i.hideLesser(),Javatari.room.screen.focus())},this.hideLesser=function(){Javatari.userPreferences.isDirty&&q(),j.classList.remove("jt-show"),j.classList.remove("jt-show"),u=!1},this.setPage=function(a){t=a;var b={CONSOLE:"0",PORTS:"-600px",GENERAL:"-1200px",ABOUT:"-1800px"}[t],c={CONSOLE:"0",PORTS:"25%",GENERAL:"50%",ABOUT:"75%"}[t];switch(b&&(i["jt-content"].style.left=b),c&&(i["jt-menu-selection"].style.left=c),i["jt-menu-console"].classList.toggle("jt-selected","CONSOLE"===t),i["jt-menu-ports"].classList.toggle("jt-selected","PORTS"===t),i["jt-menu-general"].classList.toggle("jt-selected","GENERAL"===t),i["jt-menu-about"].classList.toggle("jt-selected","ABOUT"===t),t){case"ABOUT":f();break;case"PORTS":g()}},this.isVisible=function(){return u},this.position=function(){var b=a.clientWidth,c=a.clientHeight;return b<575||c<400?(this.hide(),!1):(j.style.top=((c-jt.SettingsGUI.HEIGHT)/2|0)+"px",j.style.left=((b-jt.SettingsGUI.WIDTH)/2|0)+"px",!0)},this.controlsModeStateUpdate=function(){u&&"PORTS"===t&&g()};var j,k=function(a){s=a,g()},l=function(){s=null,g()},m=function(a){if(s){var b=jt.DOMKeys.codeForKeyboardEvent(a),c=jt.DOMKeys.nameForKeyboardEventSingle(a);if(b!==jt.DOMKeys.VK_VOID.c&&c){var d={c:b,n:c},e=r[s],f=v.joystickKeys;for(var g in r){var h=r[g];g!==s&&f[h.player][h.control].c===d.c&&(f[h.player][h.control]=jt.DOMKeys.VK_VOID)}f[e.player][e.control]=d,Javatari.userPreferences.setDirty(),l()}}},n=function(){s?l():i.hide()},o=function(){Javatari.userPreferences.setDefaultJoystickKeys(),l()},p=function(){Javatari.userPreferences.load(),l()},q=function(){Javatari.userPreferences.save(),b.applyPreferences()},r={"jt-control-p1-button":{player:0,control:"button"},"jt-control-p1-buttonT":{player:0,control:"buttonT"},"jt-control-p1-up":{player:0,control:"up"},"jt-control-p1-left":{player:0,control:"left"},"jt-control-p1-right":{player:0,control:"right"},"jt-control-p1-down":{player:0,control:"down"},"jt-control-p2-button":{player:1,control:"button"},"jt-control-p2-buttonT":{player:1,control:"buttonT"},"jt-control-p2-up":{player:1,control:"up"},"jt-control-p2-left":{player:1,control:"left"},"jt-control-p2-right":{player:1,control:"right"},"jt-control-p2-down":{player:1,control:"down"}},s=null,t="CONSOLE",u=!1,v=Javatari.userPreferences.current,w=jt.DOMKeys.VK_ESCAPE.c},jt.WebAudioSpeaker=function(a){"use strict";function b(){return jt.Util.isMobileDevice()?"CHROME"!==jt.Util.browserInfo().name||jt.Util.isIOSDevice()?3:4:2}function c(){return"SAFARI"===jt.Util.browserInfo().name||jt.Util.isIOSDevice()?b():0}function d(){function b(){a.removeEventListener("touchend",b,!0),a.removeEventListener("mousedown",b,!0),a.removeEventListener("keydown",b,!0);var c;try{k.resume().then(function(){jt.Util.log("Speaker Audio Context resumed!")})}catch(a){c=a}var d=k.createBufferSource();d.buffer=k.createBuffer(1,1,22050),d.connect(k.destination),d.start(0),c&&jt.Util.log("Audio Context unlocked!"),g.speakerUnlockStateUpdate(!0)}!m||k.state&&"suspended"!==k.state||(a.addEventListener("touchend",b,!0),a.addEventListener("mousedown",b,!0),a.addEventListener("keydown",b,!0),jt.Util.log("Speaker Audio Context resume event registered"),g.speakerUnlockStateUpdate(!1))}function e(){if(m){n.length=j.length,o.length=j.length;for(var a=0;a=0;d-=1)b[d]=0;if(0!==j.length)for(var e=j.length-1;e>=0;e-=1){for(var f=n[e],g=j[e].retrieveSamples(c*f+o[e]|0,r),h=g.buffer,i=g.bufferSize,k=g.start+o[e],l=0;l=i&&(k-=i);o[e]=k-(0|k)}}this.connect=function(a){a.connectMonitor(this)},this.connectPeripherals=function(a){g=a},this.connectAudioSignal=function(a){j.indexOf(a)>=0||(jt.Util.arrayAdd(j,a),e())},this.disconnectAudioSignal=function(a){j.indexOf(a)<0||(jt.Util.arrayRemoveAllElement(j,a),e())},this.powerOn=function(){h(),m&&(d(),this.unpause())},this.powerOff=function(){this.pause(),k&&k.close(),k=m=void 0},this.mute=function(){r=!0},this.unMute=function(){r=!1},this.pause=function(){m&&m.disconnect()},this.unpause=function(){m&&m.connect(k.destination)},this.toggleBufferBaseSize=function(){if(!k)return g.showOSD("Audio is DISABLED",!0,!0);q=(q+2)%8-1,this.pause(),i(),this.unpause(),g.showOSD("Audio Buffer size: "+(-1===q?"Auto ("+l+")":0===q?"Browser ("+l+")":l),!0),p.audioBufferBase=q,Javatari.userPreferences.setDirty()},this.getControlReport=function(a){return{label:-2===q?"OFF":-1===q?"Auto":0===q?"Browser":l,active:q>0}};var g,h=function(){if(-2===q||0===Javatari.AUDIO_MONITOR_BUFFER_SIZE)return void jt.Util.warning("Audio disabled in configuration");try{var a=window.AudioContext||window.webkitAudioContext||window.WebkitAudioContext;if(!a)throw new Error("WebAudio API not supported by the browser");k=new a,jt.Util.log("Speaker AudioContext created. Sample rate: "+k.sampleRate+(k.state?", "+k.state:"")),i()}catch(a){jt.Util.error("Could not create AudioContext. Audio DISABLED!\n"+a)}},i=function(){try{ var a=-1===q?b():0===q?c():q,d=Javatari.AUDIO_MONITOR_BUFFER_SIZE>0?Javatari.AUDIO_MONITOR_BUFFER_SIZE:a>0?jt.Util.exp2(0|jt.Util.log2((k.sampleRate+14e3)/22050))*jt.Util.exp2(a-1)*256:0;m=k.createScriptProcessor(d,1,1),m.onaudioprocess=f,l=m.bufferSize,e(),jt.Util.log("Audio Processor buffer size: "+m.bufferSize)}catch(a){jt.Util.error("Could not create ScriptProcessorNode. Audio DISABLED!\n"+a)}},j=[];this.signals=j;var k,l,m,n=[],o=[],p=Javatari.userPreferences.current,q=-3===Javatari.AUDIO_MONITOR_BUFFER_BASE?p.audioBufferBase:Javatari.AUDIO_MONITOR_BUFFER_BASE,r=!1},jt.LocalStorageSaveStateMedia=function(a){"use strict";function b(){return 2===a.netPlayMode}this.connect=function(a){a.connectMedia(this)},this.connectPeripherals=function(a){c=a},this.isSlotUsed=function(a){return void 0!==localStorage["javatarisave"+a]},this.saveState=function(a,b){var c=f(b);return c&&d("save"+a,c)},this.loadState=function(a){var b=e("save"+a);return g(b)},this.saveStateFile=function(a,d){if(!b()){var e=f(d);e&&c.startDownloadBinary((a||"Javatari SaveState")+j,e,"System State file")}},this.loadStateFile=function(a){if(!b())return g(a)},this.saveResource=function(a,b){try{var c=b&&JSON.stringify(b);return d("res"+a,c)}catch(a){}},this.loadResource=function(a){try{var b=e("res"+a);return b&&JSON.parse(b)}catch(a){}},this.externalStateChange=function(){1===a.netPlayMode&&a.netController.processExternalStateChange()};var c,d=function(a,c){if(b())return!0;try{return localStorage["javatari"+a]=c,!0}catch(a){return jt.Util.error(a),!1}},e=function(a){if(!b())try{return localStorage["javatari"+a]}catch(a){jt.Util.warning(a)}},f=function(a){try{return h+JSON.stringify(a)}catch(a){jt.Util.error(a)}},g=function(a){try{var b;if((b="string"==typeof a?a.substr(0,h.length):jt.Util.int8BitArrayToByteString(a,0,h.length))!==h&&b!==i)return;var c;return(c="string"==typeof a?a.slice(h.length):jt.Util.int8BitArrayToByteString(a,h.length))&&JSON.parse(c)}catch(a){jt.Util.error(a)}},h=String.fromCharCode(0,0)+"javataristate!",i="javatarijsstate!",j=".jst"},jt.PeripheralControls={SCREEN_ASPECT_PLUS:1,SCREEN_ASPECT_MINUS:2,SCREEN_SCALE_PLUS:3,SCREEN_SCALE_MINUS:4,VIEWPORT_ORIGIN_PLUS:5,VIEWPORT_ORIGIN_MINUS:6,VIEWPORT_SIZE_PLUS:7,VIEWPORT_SIZE_MINUS:8,SCREEN_FULLSCREEN:10,SCREEN_CRT_FILTER:11,SCREEN_CRT_MODE:12,SCREEN_TOGGLE_MENU:13,SCREEN_OPEN_HELP:14,SCREEN_OPEN_ABOUT:15,SCREEN_OPEN_SETTINGS:16,SCREEN_OPEN_QUICK_OPTIONS:17,SCREEN_DEFAULTS:18,SCREEN_CONSOLE_PANEL_TOGGLE:19,SPEAKER_BUFFER_TOGGLE:20,CONSOLE_POWER_TOGGLE:102,CONSOLE_POWER_FRY:103,CONSOLE_LOAD_STATE_FILE:104,CONSOLE_SAVE_STATE_FILE:105,CONSOLE_LOAD_STATE_MENU:106,CONSOLE_SAVE_STATE_MENU:107,P1_CONTROLS_TOGGLE:201,JOYSTICKS_TOGGLE_MODE:202,PADDLES_TOGGLE_MODE:203,TOUCH_TOGGLE_MODE:204,TOUCH_TOGGLE_DIR_BIG:205,TURBO_FIRE_TOGGLE:206,HAPTIC_FEEDBACK_TOGGLE_MODE:207,CAPTURE_SCREEN:304,CARTRIDGE_LOAD_RECENT:40,CARTRIDGE_LOAD_FILE:41,CARTRIDGE_LOAD_URL:42,CARTRIDGE_REMOVE:43,CARTRIDGE_LOAD_DATA_FILE:44,CARTRIDGE_SAVE_DATA_FILE:45,CARTRIDGE_CHOOSE_FORMAT:46,AUTO_LOAD_FILE:47,AUTO_LOAD_URL:48,SCREEN_OPEN_NETPLAY:500},jt.DOMPeripheralControls=function(a){"use strict";var b=this;this.connect=function(a){i=a},this.connectPeripherals=function(a,b,c,i){d=a,f=b,e=a.getMonitor(),g=c,h=i},this.getControlReport=function(a){switch(a){case k.PADDLES_TOGGLE_MODE:case k.P1_CONTROLS_TOGGLE:case k.TURBO_FIRE_TOGGLE:case k.TOUCH_TOGGLE_DIR_BIG:case k.HAPTIC_FEEDBACK_TOGGLE_MODE:return g.getControlReport(a);case k.SCREEN_CRT_FILTER:return d.getControlReport(a);case k.SPEAKER_BUFFER_TOGGLE:return f.getControlReport(a)}return{label:"Unknown",active:!1}},this.processKey=function(a,c){if(!c)return!1;var d=l[a]||l[a&m];return!!d&&(b.controlActivated(d,!!(a&n),!1),!0)},this.controlActivated=function(b,j,l){if(2===a.netPlayMode&&N.has(b))return a.showOSD("Function not available in NetPlay Client mode",!0,!0);switch(b){case k.CONSOLE_POWER_TOGGLE:g.processControlState(jt.ConsoleControls.POWER,!0);break;case k.CONSOLE_POWER_FRY:g.processControlState(jt.ConsoleControls.POWER_FRY,!0);break;case k.CONSOLE_LOAD_STATE_FILE:h.openFileChooserDialog(o.STATE,!1,!1,!1);break;case k.CONSOLE_SAVE_STATE_FILE:g.processControlState(jt.ConsoleControls.SAVE_STATE_FILE,!0);break;case k.CONSOLE_LOAD_STATE_MENU:d.openSaveStateDialog(!1);break;case k.CONSOLE_SAVE_STATE_MENU:d.openSaveStateDialog(!0);break;case k.CARTRIDGE_LOAD_RECENT:c()||d.openCartridgeChooserDialog(!1,j,l);break;case k.CARTRIDGE_LOAD_FILE:c()||h.openFileChooserDialog(o.ROM,j,l,!1);break;case k.CARTRIDGE_LOAD_URL:c()||h.openURLChooserDialog(o.ROM,j,l);break;case k.CARTRIDGE_REMOVE:c()||i.insert(null,!1);break;case k.CARTRIDGE_LOAD_DATA_FILE:case k.CARTRIDGE_SAVE_DATA_FILE:break;case k.CARTRIDGE_CHOOSE_FORMAT:c()||d.openCartridgeFormatDialog(j);break;case k.AUTO_LOAD_FILE:c()||h.openFileChooserDialog(o.AUTO,j,l,!1);break;case k.AUTO_LOAD_URL:c()||h.openURLChooserDialog(o.AUTO,j,l,!1);break;case k.SCREEN_CRT_MODE:e.crtModeToggle();break;case k.SCREEN_CRT_FILTER:e.crtFilterToggle();break;case k.SCREEN_FULLSCREEN:e.fullscreenToggle();break;case k.SCREEN_DEFAULTS:g.processControlState(jt.ConsoleControls.DEFAULTS,!0),e.setDefaults();break;case k.SCREEN_TOGGLE_MENU:d.toggleMenuByKey();break;case k.SCREEN_OPEN_HELP:d.openHelp();break;case k.SCREEN_OPEN_ABOUT:d.openAbout();break;case k.SCREEN_OPEN_SETTINGS:if(j)return this.controlActivated(k.SCREEN_DEFAULTS);d.openSettings();break;case k.SCREEN_OPEN_QUICK_OPTIONS:d.openQuickOptionsDialog();break;case k.SCREEN_CONSOLE_PANEL_TOGGLE:d.toggleConsolePanel();break;case k.SCREEN_OPEN_NETPLAY:d.openNetPlayDialog();break;case k.P1_CONTROLS_TOGGLE:g.toggleP1ControlsMode();break;case k.JOYSTICKS_TOGGLE_MODE:g.toggleGamepadMode();break;case k.PADDLES_TOGGLE_MODE:g.togglePaddleMode();break;case k.TOUCH_TOGGLE_MODE:g.toggleTouchControlsMode();break;case k.TOUCH_TOGGLE_DIR_BIG:g.toggleTouchDirBig();break;case k.TURBO_FIRE_TOGGLE:g.toggleTurboFireSpeed();break;case k.HAPTIC_FEEDBACK_TOGGLE_MODE:g.toggleHapticFeedback();break;case k.CAPTURE_SCREEN:d.saveScreenCapture();break;case k.SPEAKER_BUFFER_TOGGLE:f.toggleBufferBaseSize();break;case k.VIEWPORT_ORIGIN_MINUS:e.viewportOriginDecrease();break;case k.VIEWPORT_ORIGIN_PLUS:e.viewportOriginIncrease()}if(!M)switch(b){case k.SCREEN_ASPECT_MINUS:e.displayAspectDecrease();break;case k.SCREEN_ASPECT_PLUS:e.displayAspectIncrease();break;case k.SCREEN_SCALE_MINUS:e.displayScaleDecrease();break;case k.SCREEN_SCALE_PLUS:e.displayScaleIncrease();break;case k.VIEWPORT_SIZE_MINUS:e.viewportSizeDecrease();break;case k.VIEWPORT_SIZE_PLUS:e.viewportSizeIncrease()}};var c=function(){return Javatari.CARTRIDGE_CHANGE_DISABLED?(e.showOSD("Cartridge change is disabled!",!0,!0),!0):2===a.netPlayMode&&(e.showOSD("Cartridge change is disabled in NetPlay Client mode!",!0,!0),!0)};this.mediaChangeDisabledWarning=c;var d,e,f,g,h,i,j=function(){var a=jt.DOMKeys;l[x]=k.CARTRIDGE_LOAD_RECENT,l[x|a.ALT]=k.CARTRIDGE_LOAD_RECENT,l[y]=k.AUTO_LOAD_URL,l[y|a.ALT]=k.AUTO_LOAD_URL,l[z]=k.CARTRIDGE_REMOVE,l[z|a.ALT]=k.CARTRIDGE_REMOVE,l[L]=k.CONSOLE_SAVE_STATE_FILE,l[L|a.ALT]=k.CONSOLE_SAVE_STATE_FILE,l[A|a.ALT]=k.P1_CONTROLS_TOGGLE,l[C|a.ALT]=k.PADDLES_TOGGLE_MODE,l[B|a.ALT]=k.JOYSTICKS_TOGGLE_MODE,l[D|a.ALT]=k.TOUCH_TOGGLE_MODE,l[E|a.ALT]=k.TURBO_FIRE_TOGGLE,l[G|a.ALT]=k.SCREEN_CRT_FILTER,l[F|a.ALT]=k.SCREEN_CRT_MODE,l[H|a.ALT]=k.SCREEN_OPEN_SETTINGS,l[I|a.ALT]=k.SCREEN_OPEN_QUICK_OPTIONS,l[J|a.ALT]=k.SCREEN_CONSOLE_PANEL_TOGGLE,l[K|a.ALT]=k.SCREEN_FULLSCREEN,l[q|a.CONTROL|a.ALT]=k.SCREEN_SCALE_MINUS,l[s|a.CONTROL|a.ALT]=k.SCREEN_SCALE_PLUS,l[p|a.CONTROL|a.ALT]=k.SCREEN_ASPECT_MINUS,l[r|a.CONTROL|a.ALT]=k.SCREEN_ASPECT_PLUS,l[q|a.SHIFT|a.CONTROL]=k.VIEWPORT_ORIGIN_MINUS,l[s|a.SHIFT|a.CONTROL]=k.VIEWPORT_ORIGIN_PLUS,l[p|a.SHIFT|a.CONTROL]=k.VIEWPORT_SIZE_MINUS,l[r|a.SHIFT|a.CONTROL]=k.VIEWPORT_SIZE_PLUS,l[t]=k.SCREEN_TOGGLE_MENU,l[u]=k.SCREEN_DEFAULTS, l[u|a.ALT]=k.SCREEN_DEFAULTS,l[v|a.ALT]=k.CAPTURE_SCREEN,l[w|a.ALT]=k.SPEAKER_BUFFER_TOGGLE},k=jt.PeripheralControls,l={},m=~jt.DOMKeys.SHIFT,n=jt.DOMKeys.SHIFT,o=jt.FileLoader.OPEN_TYPE,p=jt.DOMKeys.VK_LEFT.c,q=jt.DOMKeys.VK_UP.c,r=jt.DOMKeys.VK_RIGHT.c,s=jt.DOMKeys.VK_DOWN.c,t=jt.DOMKeys.VK_CONTEXT.c,u=jt.DOMKeys.VK_BACKSPACE.c,v=jt.DOMKeys.VK_G.c,w=jt.DOMKeys.VK_A.c,x=jt.DOMKeys.VK_F5.c,y=jt.DOMKeys.VK_F6.c,z=jt.DOMKeys.VK_F7.c,A=jt.DOMKeys.VK_K.c,B=jt.DOMKeys.VK_J.c,C=jt.DOMKeys.VK_L.c,D=jt.DOMKeys.VK_N.c,E=jt.DOMKeys.VK_H.c,F=jt.DOMKeys.VK_R.c,G=jt.DOMKeys.VK_T.c,H=jt.DOMKeys.VK_Y.c,I=jt.DOMKeys.VK_U.c,J=jt.DOMKeys.VK_S.c,K=jt.DOMKeys.VK_ENTER.c,L=(jt.DOMKeys.VK_F1.c,jt.DOMKeys.VK_F8.c),M=Javatari.SCREEN_RESIZE_DISABLED,N=new Set([k.CONSOLE_POWER_FRY,k.CONSOLE_LOAD_STATE_FILE,k.CONSOLE_SAVE_STATE_FILE,k.CONSOLE_LOAD_STATE_MENU,k.CONSOLE_SAVE_STATE_MENU,k.CARTRIDGE_LOAD_RECENT,k.CARTRIDGE_LOAD_FILE,k.CARTRIDGE_LOAD_URL,k.CARTRIDGE_REMOVE,k.CARTRIDGE_LOAD_DATA_FILE,k.CARTRIDGE_SAVE_DATA_FILE,k.AUTO_LOAD_FILE,k.AUTO_LOAD_URL]);!function(){j()}()},jt.NetServer=function(a){"use strict";function b(){void 0===v&&(v=setInterval(p,3e4));var a={sessionControl:"createSession",sessionType:"javatari",wsOnly:D,queryVariables:["RTC_CONFIG","RTC_DATA_CHANNEL_CONFIG"]};u&&(a.sessionID=u),s.send(JSON.stringify(a))}function c(){r.stopSession(!0,v?"NetPlay Session stopped: Connection lost":"NetPlay: Connection error")}function d(a){var b=JSON.parse(a.data);if(b.javatariUpdate)return o(b.javatariUpdate);if(b.sessionControl)switch(b.sessionControl){case"sessionCreated":return void e(b);case"clientJoined":return void f(b);case"clientLeft":return void g(b);case"createError":return void r.stopSession(!0,"NetPlay: "+b.errorMessage)}else b.clientSDP&&h(b)}function e(b){try{w=JSON.parse(b.queriedVariables.RTC_CONFIG||"{}")}catch(a){}try{x=JSON.parse(b.queriedVariables.RTC_DATA_CHANNEL_CONFIG||"{}")}catch(a){}t=b.sessionID,z.netClearControlsToSend(),a.enterNetServerMode(r),a.showOSD('NetPlay session "'+b.sessionID+'" started',!0),jt.Util.log('NetPlay session "'+b.sessionID+'" started')}function f(b){var c={nick:b.clientNick,justJoined:!0,wsOnly:D||!!b.wsOnly};if(C[c.nick]=c,a.showOSD('NetPlay client "'+c.nick+'" joined',!0),jt.Util.log('NetPlay client "'+c.nick+'" joined'),!c.wsOnly){var d=new RTCPeerConnection(w);c.rtcConnection=d,d.onicecandidate=function(a){a.candidate||(jt.Util.log("Server SDP for client "+c.nick+":",d.localDescription),s.send(JSON.stringify({toClientNick:c.nick,serverSDP:d.localDescription})))};var e=d.createDataChannel("dataChannel",x);c.dataChannel=e,e.onopen=function(a){i(c,a)},e.onclose=function(a){j(c,a)},e.onmessage=function(a){k(c,a)},d.createOffer().then(function(a){return d.setLocalDescription(a)}).catch(function(a){l(c,a)})}}function g(a){var b=C[a.clientNick];b&&n(b,!0,!1,'NetPlay client "'+b.nick+'" left')}function h(a){var b=C[a.fromClientNick];b&&(jt.Util.log("Client SDP from client "+b.nick+":",a.clientSDP),b.rtcConnection.setRemoteDescription(new RTCSessionDescription(a.clientSDP)).catch(l))}function i(a,b){jt.Util.log("Client "+a.nick+" dataChannel open"),a.dataChannelActive=!0}function j(a,b){jt.Util.error("NetPlay Client "+a.nick+" dataChannel closed"),n(a,!0,!0,'NetPlay client "'+a.nick+'" dropped: P2P connection lost')}function k(a,b){o(JSON.parse(b.data))}function l(a,b){jt.Util.error("NetPlay Client "+a.nick+" RTC error:",b),n(a,!0,!0,'NetPlay client "'+a.nick+'" dropped: P2P connection error')}function m(){for(var a in C)n(C[a],!1)}function n(b,c,d,e){c&&(a.showOSD(e||'NetPlay client "'+b.nick+'" left',!0,d),(d?jt.Util.error:jt.Util.log)(e||'NetPlay client "'+b.nick+'" left')),b.dataChannel&&(b.dataChannel.onopen=b.dataChannel.onclose=b.dataChannel.onmessage=void 0,b.dataChannel.close()),b.rtcConnection&&(b.rtcConnection.onicecandidate=void 0,b.rtcConnection.close()),delete C[b.nick]}function o(a){a.c&&z.netServerProcessControlsChanges(a.c)}function p(){try{s.send('{ "sessionControl": "keep-alive" }')}catch(a){jt.Util.error("NetPlay error sending keep-alive"),r.stopSession(!0,"NetPlay Session stopped: connection error")}}function q(a,b){var c=b.length;if(c0&&setTimeout(jt.NetClient.sendKeepAlive,Javatari.SERVER_KEEPALIVE)})},jt.Room=function(a,b){"use strict";function c(a){var b=Javatari.AUTO_POWER_ON_DELAY;b>=0&&JavatariFullScreenSetup.shouldStartInFullScreen()&&(b+=1400),b-=Date.now()-i,b<1&&(b=1),setTimeout(a,b)}function d(){b&&(h.console.getCartridgeSocket().inserted()?h.console.userPowerOn():Javatari.CARTRIDGE_SHOW_RECENT&&!Javatari.CARTRIDGE_CHANGE_DISABLED&&h.screen.openCartridgeChooserDialog(!0))}function e(){h.mainVideoClock=new jt.Clock(h.mainVideoClockPulse)}function f(){h.peripheralControls=new jt.DOMPeripheralControls(h),h.consoleControls=new jt.DOMConsoleControls(h,h.peripheralControls),h.fileDownloader=new jt.FileDownloader,h.stateMedia=new jt.LocalStorageSaveStateMedia(h),h.recentROMs=new jt.RecentStoredROMs,h.fileLoader=new jt.FileLoader(h,h.recentROMs,h.peripheralControls),h.speaker=new jt.WebAudioSpeaker(a),h.screen=new jt.CanvasDisplay(h,a),h.fileDownloader.connectPeripherals(h.screen),h.screen.connectPeripherals(h.recentROMs,h.fileLoader,h.fileDownloader,h.consoleControls,h.peripheralControls,h.stateMedia),h.speaker.connectPeripherals(h.screen),h.consoleControls.connectPeripherals(h.screen),h.stateMedia.connectPeripherals(h.fileDownloader),h.peripheralControls.connectPeripherals(h.screen,h.speaker,h.consoleControls,h.fileLoader)}function g(){h.console=new jt.AtariConsole,h.mainVideoClock.connect(h.console.getVideoClockSocket()),h.stateMedia.connect(h.console.getSavestateSocket()),h.fileLoader.connect(h.console),h.screen.connect(h.console),h.speaker.connect(h.console.getAudioSocket()),h.consoleControls.connect(h.console.getConsoleControlsSocket()),h.peripheralControls.connect(h.console.getCartridgeSocket()),h.console.socketsConnected()}var h=this;this.powerOn=function(){h.screen.powerOn(),h.speaker.powerOn(),h.consoleControls.powerOn(),h.setLoading(!0),h.enterStandaloneMode(),i=Date.now()},this.powerOff=function(){h.console.powerOff(),h.consoleControls.powerOff(),h.speaker.powerOff(),h.screen.powerOff()},this.getNetServer=function(){return this.netServer||(this.netServer=new jt.NetServer(this)),this.netServer},this.getNetClient=function(){return this.netClient||(this.netClient=new jt.NetClient(this)),this.netClient},this.setLoading=function(a){this.isLoading!==a&&(this.isLoading=a,this.console.setLoading(this.isLoading),this.screen.setLoading(this.isLoading))},this.start=function(a){this.mainVideoClock.detectHostNativeFPSAndCallback(function(b){h.console.vSynchSetSupported(b>0),c(function(){h.setLoading(!1),h.screen.start(a||d)})})},this.showOSD=function(a,b,c){this.console.showOSD(a,b,c)},this.mainVideoClockPulse=function(){h.console.isSystemPaused()||(h.netController?h.netController.netVideoClockPulse():(h.console.getConsoleControlsSocket().controlsClockPulse(),h.console.videoClockPulse()))},this.enterStandaloneMode=function(){var a=this.netPlayMode;this.netPlayMode=0,this.netController=void 0,h.mainVideoClock.go(),this.netPlayStateBeforeClientMode&&(this.console.loadState(this.netPlayStateBeforeClientMode),this.consoleControls.setP1ControlsAndPaddleMode(this.netPlayControlsModeBeforeClientMode.p1,this.netPlayControlsModeBeforeClientMode.pd),this.netPlayStateBeforeClientMode=void 0),a!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(a)},this.enterNetServerMode=function(a){var b=this.netPlayMode;this.netPlayMode=1,this.netController=a,h.mainVideoClock.go(),b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.enterNetClientMode=function(a){var b=this.netPlayMode;this.netPlayMode=2,this.netController=a,h.mainVideoClock.pause(),this.netPlayStateBeforeClientMode=this.console.saveState(!0),this.netPlayControlsModeBeforeClientMode={p1:this.consoleControls.isP1ControlsMode(),pd:this.consoleControls.isPaddleMode()},b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.enterNetPendingMode=function(a){var b=this.netPlayMode;this.netPlayMode=a===this.netServer?-1:-2,this.netController=void 0,h.mainVideoClock.go(),b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.mainVideoClock=null,this.console=null,this.screen=null,this.speaker=null,this.consoleControls=null,this.fileDownloader=null,this.stateMedia=null,this.recentROMs=null,this.fileLoader=null,this.peripheralControls=null,this.netPlayMode=0,this.netController=void 0,this.netServer=void 0,this.netClient=void 0,this.netPlayStateBeforeClientMode=void 0,this.netPlayControlsModeBeforeClientMode=void 0,this.isLoading=!1;var i;this.runFramesAtTopSpeed=function(a){this.mainVideoClock.pause();for(var b=jt.Util.performanceNow(),c=0;c0&&setTimeout(jt.NetClient.sendKeepAlive,Javatari.SERVER_KEEPALIVE)})},jt.Room=function(a,b){"use strict";function c(a){var b=Javatari.AUTO_POWER_ON_DELAY;b>=0&&JavatariFullScreenSetup.shouldStartInFullScreen()&&(b+=1400),b-=Date.now()-i,b<1&&(b=1),setTimeout(a,b)}function d(){b&&(h.console.getCartridgeSocket().inserted()?h.console.userPowerOn():Javatari.CARTRIDGE_SHOW_RECENT&&!Javatari.CARTRIDGE_CHANGE_DISABLED&&h.screen.openCartridgeChooserDialog(!0))}function e(){h.mainVideoClock=new jt.Clock(h.mainVideoClockPulse)}function f(){h.peripheralControls=new jt.DOMPeripheralControls(h),h.consoleControls=new jt.DOMConsoleControls(h,h.peripheralControls),h.fileDownloader=new jt.FileDownloader,h.stateMedia=new jt.LocalStorageSaveStateMedia(h),h.recentROMs=new jt.RecentStoredROMs,h.fileLoader=new jt.FileLoader(h,h.recentROMs,h.peripheralControls),h.speaker=new jt.WebAudioSpeaker(a),h.screen=new jt.CanvasDisplay(h,a),h.fileDownloader.connectPeripherals(h.screen),h.screen.connectPeripherals(h.recentROMs,h.fileLoader,h.fileDownloader,h.consoleControls,h.peripheralControls,h.stateMedia),h.speaker.connectPeripherals(h.screen),h.consoleControls.connectPeripherals(h.screen),h.stateMedia.connectPeripherals(h.fileDownloader),h.peripheralControls.connectPeripherals(h.screen,h.speaker,h.consoleControls,h.fileLoader)}function g(){h.console=new jt.AtariConsole,h.mainVideoClock.connect(h.console.getVideoClockSocket()),h.stateMedia.connect(h.console.getSavestateSocket()),h.fileLoader.connect(h.console),h.screen.connect(h.console),h.speaker.connect(h.console.getAudioSocket()),h.consoleControls.connect(h.console.getConsoleControlsSocket()),h.peripheralControls.connect(h.console.getCartridgeSocket()),h.console.socketsConnected()}var h=this;this.powerOn=function(){h.screen.powerOn(),h.speaker.powerOn(),h.consoleControls.powerOn(),h.setLoading(!0),h.enterStandaloneMode(),i=Date.now()},this.powerOff=function(){h.console.powerOff(),h.consoleControls.powerOff(),h.speaker.powerOff(),h.screen.powerOff()},this.getNetServer=function(){return this.netServer||(this.netServer=new jt.NetServer(this)),this.netServer},this.getNetClient=function(){return this.netClient||(this.netClient=new jt.NetClient(this)),this.netClient},this.setLoading=function(a){this.isLoading!==a&&(this.isLoading=a,this.console.setLoading(this.isLoading),this.screen.setLoading(this.isLoading))},this.start=function(a){this.mainVideoClock.detectHostNativeFPSAndCallback(function(b){h.console.vSynchSetSupported(b>0),c(function(){h.setLoading(!1),h.screen.start(a||d)})})},this.showOSD=function(a,b,c){this.console.showOSD(a,b,c)},this.mainVideoClockPulse=function(){h.console.isSystemPaused()||(h.netController?h.netController.netVideoClockPulse():(h.console.getConsoleControlsSocket().controlsClockPulse(),h.console.videoClockPulse()))},this.enterStandaloneMode=function(){var a=this.netPlayMode;this.netPlayMode=0,this.netController=void 0,h.mainVideoClock.go(),this.netPlayStateBeforeClientMode&&(this.console.loadState(this.netPlayStateBeforeClientMode),this.consoleControls.setP1ControlsAndPaddleMode(this.netPlayControlsModeBeforeClientMode.p1,this.netPlayControlsModeBeforeClientMode.pd),this.netPlayStateBeforeClientMode=void 0),a!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(a)},this.enterNetServerMode=function(a){var b=this.netPlayMode;this.netPlayMode=1,this.netController=a,h.mainVideoClock.go(),b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.enterNetClientMode=function(a){var b=this.netPlayMode;this.netPlayMode=2,this.netController=a,h.mainVideoClock.pause(),this.netPlayStateBeforeClientMode=this.console.saveState(!0),this.netPlayControlsModeBeforeClientMode={p1:this.consoleControls.isP1ControlsMode(),pd:this.consoleControls.isPaddleMode()},b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.enterNetPendingMode=function(a){var b=this.netPlayMode;this.netPlayMode=a===this.netServer?-1:-2,this.netController=void 0,h.mainVideoClock.go(),b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.mainVideoClock=null,this.console=null,this.screen=null,this.speaker=null,this.consoleControls=null,this.fileDownloader=null,this.stateMedia=null,this.recentROMs=null,this.fileLoader=null,this.peripheralControls=null,this.netPlayMode=0,this.netController=void 0,this.netServer=void 0,this.netClient=void 0,this.netPlayStateBeforeClientMode=void 0,this.netPlayControlsModeBeforeClientMode=void 0,this.isLoading=!1;var i;this.runFramesAtTopSpeed=function(a){this.mainVideoClock.pause();for(var b=jt.Util.performanceNow(),c=0;c 0) setTimeout(jt.NetClient.sendKeepAlive, Javatari.SERVER_KEEPALIVE); }); -}; \ No newline at end of file +}; diff --git a/src/main/userprefs/UserPreferences.js b/src/main/userprefs/UserPreferences.js index ca71453..09055ee 100644 --- a/src/main/userprefs/UserPreferences.js +++ b/src/main/userprefs/UserPreferences.js @@ -37,6 +37,7 @@ Javatari.userPreferences.defaults = function() { select: 8, reset: 9, pause: 4, + fullscreen: 5, fastSpeed: 7, slowSpeed: 6, device: -1, // -1 = auto