[{"data":1,"prerenderedAt":414},["ShallowReactive",2],{"search-api":3},[4,15,22,33,43,51,61,73,80,88,95,102,108,114,120,126,132,138,144,150,156,162,168,174,180,186,192,198,204,210,216,222,228,235,241,247,253,259,265,271,280,287,293,299,304,310,317,325,332,341,348,358,367,376,387,398,403,409],{"id":5,"path":6,"dir":7,"title":8,"description":9,"keywords":10,"body":14},"content:1.docs:1.index.md","\u002Fdocs","","Introduction","You can use the Code Generator to generate the embed code for your website.",[11,12,13],"Project Goals","How it Works","Support","  Introduction  You can use the   Code Generator  to generate the embed code for your website.   EmulatorJS  runs RetroArch compiled to webassembly, optimized for running in the web browser.  Made with ❤️ by   @ethanaobrien  &   @allancoding     This project is not affiliated with   linuxserver\u002Femulatorjs .  If you are looking for an alternative to linuxserver's Docker project, we recommend using   Gaseous  which is a great alternative. You can also join the Gaseous Discord server   here .  Project Goals  The goal of this project is to give developers an easy way to embed an emulator onto their website.  How it Works  EmulatorJS is a backend service that hosts its   selection of emulators  that may be embedded into your website. This is not an all-in-one stand alone server.  Support  For general support\u002Fdiscussions, head over to the github and read through the   discussion threads.  You can also get help on our Discord server:\n        This site is a work-in-progress. If any information is missing, you can request it by opening an issue on github   here .",{"id":16,"path":17,"dir":18,"title":19,"description":20,"body":21},"content:1.docs:2.news.md","\u002Fdocs\u002Fnews","docs","News","Check GitHub releases for the latest updates.","  News  Check GitHub   releases  for the latest updates.  EmulatorJS Version 4.2.0: First browser-based emulator to support PSP  After many hours of debugging and being angry, PSP is now supported!  EmulatorJS Version 4.0.9 CDN & Git History Rewrite  As of version 4.0.9 cores and minified files are no longer included in the repository. You will need to get them separately. You can get the from   releases  or the * new CDN (see   this  for more info). There is also a new version system that we will be using. (read   here  for more info).  The history of the project has been rewritten and force pushed. You will likely need to redo any active commits you have. Sorry for the inconvenience.  Cloning the repository is no longer recommended for production use. You should use   releases  or the   CDN  instead.  EmulatorJS Version 4.0 Re-write  As of version 4.0, EmulatorJS is no longer a reverse engineered version of   https:\u002F\u002Fwww.emulatorjs.com\u002F . I (  Ethan ) spent several weeks re-writing the program, making it better, faster, fixing audio, iOS\u002FSafari support, and the core quality. The backend is actually worth working on now.  EmulatorJS & LinuxServer  Both   Ethan O'Brien's EmulatorJS  and   LinuxServer's EmulatorJS  had humble beginnings by seeing the service on the ad ridden   https:\u002F\u002Fwww.emulatorjs.com\u002F  and thought, 'I could make this better.'   EmulatorJS stuck with the original idea that is to serve as a backend used to embed the emulators into a website for maximum customizability, but also to remove ads and remove outside dependencies.  LinuxServer on the other hand, took things a different route. Their organization's goal is to containerize applications, and in this case, they built a front end (inspired by   HyperSpin ) to automate creating the website and a backend ROM management system to automatically download and share artwork and media as well as update the ROM hash database for better, more accurate ROM-database linking.   Sources:   https:\u002F\u002Fgithub.com\u002Flinuxserver\u002Femulatorjs\u002Fissues\u002F24   https:\u002F\u002Fgithub.com\u002FEmulatorJS\u002FEmulatorJS\u002Fdiscussions\u002F260   https:\u002F\u002Fgithub.com\u002FEmulatorJS\u002FEmulatorJS\u002Fdiscussions\u002F262#discussioncomment-4124425",{"id":23,"path":24,"dir":18,"title":25,"description":7,"keywords":26,"body":32},"content:1.docs:3.getting-started.md","\u002Fdocs\u002Fgetting-started","Getting Started",[27,28,29,30,31],"Prerequisites","Setup","Code Editor","Built-in Server (Optional)","Client Installation","  Getting Started  Prerequisites   A web server like NGINX or the Apache server included in   XAMPP .\n   Alternatively, for a simpler server use   simple-web-server .  A website behing hosted on that server, or at its most basic, create an empty file named \"index.html\" (save for later).  Or you can use the   built-in server .  Setup   Download the   latest release  and unzip it into your webserver hosted folder.   Choose an emulator  you want embedded, then copy and paste its code into your \"index.html\" file and edit the necessary fields. You have the option to edit each of the fields manually or use the   Code Editor  tool.  Example for NES  If you're using   React or Single Page Apps , or   google sites , see the   Embeding Instructions .     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \u002F\u002F Can also be fceumm or nestopia\n       EJS_core   =   'nes'  ;\n       \u002F\u002F Lightgun\n       EJS_lightgun   =   false  ;   \u002F\u002F can be true or false\n       \u002F\u002F URL to BIOS file\n       EJS_biosUrl   =   ''  ;   \u002F\u002F https:\u002F\u002Fdl.dropboxusercontent.com\u002Fs\u002F[random-code]\u002Fbios.bin\n       \u002F\u002F URL to Game rom\n       EJS_gameUrl   =   ''  ;   \u002F\u002F https:\u002F\u002Fdl.dropboxusercontent.com\u002Fs\u002F[random-code]\u002Fmario.nes\n       \u002F\u002F Path to the data directory\n       EJS_pathtodata   =   'data\u002F'  ;\n   \u003C\u002F  script  >\n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  Code Editor  A   Code Editor  feature is included on this website. It's a wizard that will create this html web code for you.   Select a System.  Fill out the details:\n   Upload game rom  Enter name of the game  Enter an ad URL (optional)  Upload bios file (if required)  Upload custom save state to be loaded on start (optional)  Generate out file.  It will then give you the download link for a zip folder that will include the rom & an index.html file that has your code ready to be copy & pasted into your website.  Built-in Server (Optional)  After cloning the github project, you can run the built-in server by running the following command in the terminal:   Client Installation  Because this software uses WebAssembly (WASM) applications, it can be ran within a modern browser so there is   no installation necessary. \nAll major browsers are currently supported!   To make things a little more seamless, we can create a shortcut file to act as a launcher.\n   In the below examples, we will use   http:\u002F\u002F192.168.1.120\u002F  as the address for the webserver hosted on port 80.  Windows  In this example, we will use Google Chrome:   Right click on Chrome and click \"Send to\" then \"Desktop (create shortcut)\".  Now right click on the new shortcut and in the \"Target\" field, add this to the end:    Lastly, rename the shortcut to \"EmulatorJS\".  To exit 'Kiosk' mode, hit   Ctrl  +   W  Android\u002FiOS   Open your browser and go to the server ip address (example:   http:\u002F\u002F192.168.1.120\u002F ).  After EmulatorJS has loaded in, open your browser settings and click \"Add to Home Screen\" or something similar.  Click through any other prompts that may come up, but you should be left with a shortcut on your phone's home screen that acts like an app.  Steam Deck  The process is similar as that of the Windows setup:   Enter Desktop mode.  Right click on Chrome and add to Steam.  Right click on the Chrome shortcut in Steam and click \"Properties\".  Under the \"Shortcut\" options, find the \"Launch Options\" text box.  Add this to the end:   html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":34,"path":35,"dir":18,"title":36,"description":37,"keywords":38,"body":42},"content:1.docs:4.embed.md","\u002Fdocs\u002Fembed","How To Embed","The System Page will have examples for all the supported systems.",[39,40,41],"HTML","React \u002F Single Page Apps","Google Sites","  How to Embed EmulatorJS on your Website  The   System Page  will have examples for all the supported systems.  HTML  If you have a http server then the   Get Started Page  has a working example for the NES.  React \u002F Single Page Apps  To embed within React or a SPA, the only way is to embed an iframe into your page, and run this emulator within that iframe. You   cannot  run it directly on the page. This will break single page apps, and tamper with the DOM.  Google Sites     This method is   not supported . It is here purely as a guide, and support will not be given for google sites.  Here is an example made in google sites:   EmulatorJS Google Sites Example   It is recommended if you game file is 1 mb then to host your ROM on a server and not base64.  Just add a full page embed with custom code, instrctions   here  You can use   DriveToWeb  if you want to host your files using google drive (as show in the working example below)\nHere is the code used in the example game:     \u003C  html  >\n       \u003C  head  >\n           \u003C  style  >\n               body  ,   html   {\n                   margin  :   0  ;\n                   padding  :   0  ;\n               }\n           \u003C\u002F  style  >\n       \u003C\u002F  head  >\n       \u003C  body  >\n           \u003C  div   style  =  \"width:100%;height:100%;max-width:100%\"  >\n               \u003C  div   id  =  \"game\"  >\u003C\u002F  div  >\n           \u003C\u002F  div  >\n           \u003C  script  >\n               EJS_player   =   \"#game\"  ;\n               EJS_core   =   \"CORE_NAME\"  ;\n               EJS_pathtodata   =   \"https:\u002F\u002Fcdn.emulatorjs.org\u002Fstable\u002Fdata\u002F\"  ;\n               EJS_gameUrl   =   \"https:\u002F\u002Fallancoding-website-files.on.drv.tw\u002FROM_FILE_NAME_&_PATH.zip\"  ;\n           \u003C\u002F  script  >\n           \u003C  script   src  =  \"https:\u002F\u002Fcdn.emulatorjs.org\u002Fstable\u002Fdata\u002Floader.js\"  >\u003C\u002F  script  >\n       \u003C\u002F  body  >\n   \u003C\u002F  html  >\n  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":44,"path":45,"dir":18,"title":46,"description":47,"keywords":48,"body":50},"content:1.docs:5.features.md","\u002Fdocs\u002Ffeatures","Features","EmulatorJS has been developed by gamers for gamers. As such, we know what we want. Have a look at our features and feel free to submit further feature requests by opening a new issue here and use an appropriate label.",[49],"User Features","  Features  EmulatorJS has been developed by gamers for gamers. As such, we know what we want. Have a look at our features and feel free to submit further feature requests by opening a new issue   here  and use an appropriate   label .  Before opening a new issue, please search through current and previous issues to see if it has already been addressed.  User Features   A demo page via the included \"index.html\" file\n   Drag-&-Drop to upload a game ROM, select which system its for then click \"Load Game\" to play  Emulator controls such as \"Pause\" or \"Restart\"  Save state that downloads to your device  Load state from a save state you previously downloaded\n   Drag-&-Drop saves right onto the running emulator to load from where you left off!  Screen recording for sharing with friends  Cache manager to access or clear any local game data saved to the web browser cache  Control settings to map keyboard\u002Fcontroller button binds for up to 4 players  Cheats menu to add cheat codes (if you're into that)",{"id":52,"path":53,"dir":18,"title":54,"description":55,"keywords":56,"body":60},"content:1.docs:6.3rd Party.md","\u002Fdocs\u002F3rd-party","3rd Party Projects","EmulatorJS itself is built to be a plugin, rather than an entire website. This is why there is no docker container of this project. However, there are several projects you can use that use EmulatorJS!",[57,58,59]," RomM"," Gaseous Server","EmulatorJS GameLibrary Extension","  3rd Party Projects  EmulatorJS itself is built to be a plugin, rather than an entire website. This is why there is no docker container of this project. However, there are several projects you can use that use EmulatorJS!    RomM   Your beautiful, powerful, self-hosted rom manager  RomM (ROM Manager) allows you to scan, enrich, and browse your game collection with a clean and responsive interface. With support for multiple platforms, various naming schemes, and custom tags, RomM is a must-have for anyone who plays on emulators.   Website  |   Github  |   Instructions     Gaseous Server   ROM and title management with in browser emulation  A game ROM manager, with a built in web based emulator using multiple sources to identify and provide metadata.   Github  |   Instructions     EmulatorJS GameLibrary Extension  Our friend   Ramaerel  is developing the EmulatorJS GameLibrary Extension.  This add-on reads the contents of your ROM folders and uses it to display the games library. ROMs with common endings (like .iso, .bin or .zip), must also include the applicable extension before it. A list is included in this readme with the additional extensions, and will be updated as I go.     Example: [game].[system].[file extension]\n   Sample: Crash Bandicoot.psx.zip\n  To use systems that require a bios, like psx, add the bios under the BIOS folder and name it according to the system and ending with .bin     Example: psx.bin\n  Installation (WIP)  This is a drag and drop extension, with the exception that it requires something to host PHP files like XAMPP. Put your roms in the \u002Froms\u002F folder and bios in the \u002Fbios\u002F folder, following the above naming scheme.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":62,"path":63,"dir":18,"title":64,"description":7,"keywords":65,"body":72},"content:1.docs:7.options.md","\u002Fdocs\u002Foptions","Options",[66,67,68,69,70,71],"Main Options","Game Options","Core Options","UI Options","Advanced Options","Debug Options","  Main Options      Note : Some projects have been using internal API's not documented here. As these internal API's are undocumented, they are not guarrenteed to function the same between EmulatorJS versions. We   highly  recommend not using internal API's. If they are something your project relies upon, consider raising a Pull Request or Feature Request to have the API exposed public and documented here.   EJS_player  The selector of the element you want the emulator to be placed in.   Type:   string  Default:      Example:   EJS_player = '#game'   EJS_gameUrl  URL to ROM file.   Type:   string  Default:      Example:   EJS_gameUrl = 'someFile.nes'   EJS_pathtodata  The path to the data folder. Version 4.0 and up will set this to the same path to the folder your loader.js file is in if not specified.   Type:   string  Default:   data\u002F  Example:   EJS_pathtodata = '\u002Fdata\u002F'   EJS_language  Set the emulator UI to a certian language. More information available   here .   Type:   string  Default:   en-US   EJS_disableAutoLang  Set to   true  to disable the automatic language detection.   Type:   boolean  Default:   false   EJS_paths  You can set the paths to the files used by the emulator. This is useful if you want to host the files in a different way than the default, like a blob or a cdn.   Type:   object  Default: The default paths are used.  Example:     EJS_paths   =   {\n       \"GameManager.js\"  :   \"blob:https:\u002F\u002Femulatorjs.org\u002F0a0a0a0a-0a0a-0a0a-0a0a-0a0a0a0a0a0a\"  ,\n       \"emulator.min.css\"  :   \"blob:https:\u002F\u002Femulatorjs.org\u002F0a0a0a0a-0a0a-0a0a-0a0a-0a0a0a0a0a0a\"  ,\n       \"emulator.min.js\"  :   \"https:\u002F\u002Fcdn.emulatorjs.org\u002Femulator.min.js\"  ,\n       \"gamepad.js\"  :   \"https:\u002F\u002Fcdn.emulatorjs.org\u002Fgamepad.js\"  ,\n       \"loader.js\"  :   \"https:\u002F\u002Fcdn.emulatorjs.org\u002Floader.js\"  ,\n       \"nipplejs.js\"  :   \"https:\u002F\u002Fcdn.emulatorjs.org\u002Fnipplejs.js\"  ,\n       \"shaders.js\"  :   \"https:\u002F\u002Fcdn.emulatorjs.org\u002Fshaders.js\"  ,\n       \"socket.io.min.js\"  :   \"https:\u002F\u002Fcdn.emulatorjs.org\u002Fsocket.io.min.js\"  ,\n       \"storage.js\"  :   \"https:\u002F\u002Fcdn.emulatorjs.org\u002Fstorage.js\"  ,\n       \"version.json\"  :   \"https:\u002F\u002Fcdn.emulatorjs.org\u002Fversion.json\"\n   };\n  Note the example above will not work the paths are just for example purposes.   EJS_volume  Sets the defauly volume for the emulator. 0=muted, 1=max   Type:   number  Default:   0.5  Example:   EJS_volume = 1  Game Options   EJS_gameName  Set this to the title of the game. This will be used when saving states and taking screenshots.   Type:   string  Default: The name of the ROM file  Example:   EJS_gameName = 'pong'   EJS_cheats  Default cheats to be stored in the cheat manager screen.   Type:   array  Default:   []  Example:     EJS_cheats   =   [\n       [  \"name\"  ,   \"value\"  ],\n       [  \"name2\"  ,   \"value2\"  ]\n   ]\n   EJS_fullscreenOnLoaded  Set to true to start the game in fullscreen mode.   Type:   boolean  Default:   false  Example:   EJS_fullscreenOnLoaded = true   EJS_startOnLoaded  Set to true to start the game when the page is loaded. Note that if the user has not interacted with the page, the emulator will freeze until they have done so.   Type:   boolean  Default:   false  Example:   EJS_startOnLoaded = true  Core Options   EJS_core  Desired target system.   Type:   string  Default:      Example:   EJS_core = 'nes'   EJS_biosUrl  URL to bios file.   Type:   string  Default:   ''  Example:   EJS_biosUrl = 'someFile.bin'   EJS_gamePatchUrl  URL to game patch file.   Type:   string  Default:   ''  Example:   EJS_gamePatchUrl = 'someFile.patch'   EJS_videoRotation  Sets the rotation of the video from retroarch. It can be   0  - No rotation,   1  - 90 degrees,   2  - 180 degrees,   3  - 270 degrees.   Type:   number  Default:   0  Example:   EJS_videoRotation = 1   EJS_threads  Runs the core using threads. This may improve performance. As of 4.2.0, if the   SharedArrayBuffer  function is exposed (see below), and   EJS_threads  is not true, the user will have the option to opt-in to threads.   Type:   boolean  Default:   false  Example:   EJS_threads = true      Note : Threads requires the   SharedArrayBuffer  feature that is provided by the COOP and COEP headers.  To enable this, two HTTP headers will need to be sent:    Cross-Origin-Opener-Policy : same-origin   Cross-Origin-Embedder-Policy: require-corp   EJS_gameParentUrl  This is a url to the game parent data. For additional files needed for the game emulation.   Type:   string  Default:       EJS_loadStateURL  URL to save state. To be loaded on game start.   Type:   string  Default:   ''  Example:   EJS_loadStateURL = 'save.state'  UI Options   EJS_color  Emulator hex color theme.   Type:   string  Default:   #1AAFFF  Example:   EJS_color = '#00FF80'   EJS_alignStartButton  This can be used to align the start button. It can be   top ,   center ,   bottom .   Type:   string  Default:   bottom  Example:   EJS_alignStartButton = \"center\"   EJS_backgroundImage  Url to a file you want to have as the background at the \"Play Now\" screen. Must be a Absolute path or a Relative Path from the   pathtodata  folder.   Type:   string  Default:      Example:   EJS_backgroundImage = 'loadScreen.png'   EJS_backgroundBlur  This will blur the background image to fit the all aspect ratios. Also known as frame blur. This will override the   EJS_backgroundColor .   Type:   boolean  Default:      Example:   EJS_backgroundBlur = true   EJS_backgroundColor  This will set the background color of the emulator. In the start and loadings screens. Can be a css color like   #000  or   rgba(150,150,150,0.6) .   Type:   string  Default:   #333  Example:   EJS_backgroundColor = '#000'   EJS_AdUrl  URL to ad page. Will show this page when the page is loaded.   Type:   string  Default:   ''  Example:   EJS_AdUrl = 'ad.html'   EJS_AdTimer  Duration (in milliseconds) the ad iframe will stay before it automatically closes. Setting to   0  will disable auto-close.\nSetting to   -1  will close the ad immediately.   Type:   number  Default:   10000  Example:   EJS_AdTimer = 1000   EJS_AdMode  This will set the ad mode. There 3 values   0    1    2   0  will only show the ad on the start screen and not the loading screen.   1  will only show the ad on the loading screen.   2  will show on both.   Type:   number  Default:   2  Example:   EJS_AdMode = 0   EJS_AdSize  This will set the size of the ad. An array with the first value is the width and the second is the height. It can be any css option   % ,   vh ,   px  etc.   Type:   array  Default:   [\"300px\", \"250px\"]  Example:   EJS_AdSize = [\"800px\", \"500px\"];  Advanced Options   EJS_CacheLimit  (deprecated in versions after v4.2.3)  The limit to game cache (per rom) in bytes   Type:   number  Default:   1073741824  (  1 GB )  Example:   EJS_CacheLimit = 1024   EJS_cacheConfig  (versions greater than v4.2.3)  Configures the built in cache - content is now cached after decompression to allow for faster start up times.  Data is stored in the browsers IndexedDB store, and observes the following rules:   The URL is checked against the cache - if it doesn't exist, download it  The cacheExpiry property is checked - if it exists and is in the future, use the cached version. Note: the cacheExpiry property is sent by the server in the Cache-Control or Expires headers. If these headers are not present, the cacheExpiry property will be set to 5 days in the future by default.  If the cacheExpiry property is in the past or doesn't exist, a HEAD request is made to check the Last-Modified header against the cached version's added date. Falling back to downloading if Last-Modified is not present.  If the Last-Modified date is newer than the cached version's added date, download the new version.  If none of the above conditions are met, use the cached version.      Note : The cache is far more effective if the web host supports HEAD http requests and ETag headers, as these allow the host to specify how long the object should be cached for, and if any changes to the object have occurred.  The cache includes the following content types: cores, ROMs, BIOS.   Type:   json  Default:   {           enabled: true,           cacheMaxSizeMB: 4096,           cacheMaxAgeMins: 7200       };  Example:     EJS_cacheConfig = {\n       enabled  :   true  ,\n       cacheMaxSizeMB  :   4096  ,\n       cacheMaxAgeMins  :   7200\n   };\n   EJS_externalFiles  Allows external files to placed within the EJS file system.  Extraction rules:   If the path does not end with a   \u002F , it assumes that eveything after the last   \u002F  is the filename.  If the path ends with   \u002F , it will check for file compression. If it is a compressed file it will decompress to that folder, if not it will just write the filename based off of the url  This option is a list of attributes, with the attribute name being a location within the EJS file system and the value being the URL of the file or archive to extract to that location.   Type:   json  Default:   {}  Example:     {\n       \"\u002Fopt\u002F\"  :   \"\u002Fsample.zip\"  ,\n       \"\u002Fetc\u002Fconfiguration\u002F\"  :   \"\u002Ffiles.zip\"\n   }\n   EJS_fixedSaveInterval  If set, this will force the core to flush the entire save file to disk every   EJS_fixedSaveInterval  milliseconds,\ntrigger the relevant EmulatorJS events (  saveSaveFiles ), and disable the save interval options in the UI.\nA reasonable value for this option is dependent on the size of the save file being written; setting\ntoo low will dramatically increase resource usage for the client.   Type:   number  Default: `` (unset)  Example:   EJS_fixedSaveInterval = 7000  (Save every 7 seconds)   EJS_adBlocked  A function that can be run to change the adUrl on the fly or delete it. A use case would be if the user is using an ad blocker you can change the adUrl to a different url (like to show a message) or delete it.  The first parameter is the url to change it the second you can set it to   true  to delete the ad.   Type:   function  Default:      Example:   EJS_adBlocked(\"https:\u002F\u002Fads.emulatorjs.org\u002Fblocked\");   EJS_ready  This is a function that will be called when the emulator is ready. This is useful if you want to do something when the emulator is ready.   Type:   function  Default:      Example:   EJS_ready = function() {console.log(\"The emulator is ready!\")}   EJS_onSaveState  Function to be called when save state button pressed.   Type:   function  Default:      Call Arguments: An array containing a screenshot and a save state  Example:   EJS_onSaveState = function(e) {console.log(\"save state button pressed!\")}   EJS_onLoadState  Function to be called when load state button pressed.   Type:   function  Default:      Example:   EJS_onLoadState = function(e) {console.log(\"load state button pressed!\")}   EJS_onSaveUpdate  Function to be called when a change in a game save is detected (by hash comparison). This\ncomparison is triggered by other save events in EmulatorJS; namely during the   saveSaveFiles \nevent.   Type:   function  Default:      Call Arguments:     {\n       hash  : 01f8841ac183ef,   \u002F\u002F The new hash of the save function\n       save  : (save buffer),\n       screenshot  : (screenshot),\n       format  :   'png'\n   }\n   Example:   EJS_onSaveUpdate = function(e) {console.log(\"The contents of the save file have changed!\")}   EJS_onGameStart  Function to be called when game is started.   Type:   function  Default:      Example:   EJS_onGameStart = function(e) {console.log(\"The game has started!\")}   EJS_defaultControls  Sets the default controller mapping. More information about controller mapping is located   here .   Type:   object  Default\u002FExample:      EJS_defaultControls   =   {\n           0  : {\n               0  : {\n                   'value'  :   'x'  ,\n                   'value2'  :   'BUTTON_2'\n               },\n               1  : {\n                   'value'  :   's'  ,\n                   'value2'  :   'BUTTON_4'\n               },\n               2  : {\n                   'value'  :   'v'  ,\n                   'value2'  :   'SELECT'\n               },\n               3  : {\n                   'value'  :   'enter'  ,\n                   'value2'  :   'START'\n               },\n               4  : {\n                   'value'  :   'up arrow'  ,\n                   'value2'  :   'DPAD_UP'\n               },\n               5  : {\n                   'value'  :   'down arrow'  ,\n                   'value2'  :   'DPAD_DOWN'\n               },\n               6  : {\n                   'value'  :   'left arrow'  ,\n                   'value2'  :   'DPAD_LEFT'\n               },\n               7  : {\n                   'value'  :   'right arrow'  ,\n                   'value2'  :   'DPAD_RIGHT'\n               },\n               8  : {\n                   'value'  :   'z'  ,\n                   'value2'  :   'BUTTON_1'\n               },\n               9  : {\n                   'value'  :   'a'  ,\n                   'value2'  :   'BUTTON_3'\n               },\n               10  : {\n                   'value'  :   'q'  ,\n                   'value2'  :   'LEFT_TOP_SHOULDER'\n               },\n               11  : {\n                   'value'  :   'e'  ,\n                   'value2'  :   'RIGHT_TOP_SHOULDER'\n               },\n               12  : {\n                   'value'  :   'tab'  ,\n                   'value2'  :   'LEFT_BOTTOM_SHOULDER'\n               },\n               13  : {\n                   'value'  :   'r'  ,\n                   'value2'  :   'RIGHT_BOTTOM_SHOULDER'\n               },\n               14  : {\n                   'value'  :   ''  ,\n                   'value2'  :   'LEFT_STICK'  ,\n               },\n               15  : {\n                   'value'  :   ''  ,\n                   'value2'  :   'RIGHT_STICK'  ,\n               },\n               16  : {\n                   'value'  :   'h'  ,\n                   'value2'  :   'LEFT_STICK_X:+1'\n               },\n               17  : {\n                   'value'  :   'f'  ,\n                   'value2'  :   'LEFT_STICK_X:-1'\n               },\n               18  : {\n                   'value'  :   'g'  ,\n                   'value2'  :   'LEFT_STICK_Y:+1'\n               },\n               19  : {\n                   'value'  :   't'  ,\n                   'value2'  :   'LEFT_STICK_Y:-1'\n               },\n               20  : {\n                   'value'  :   'l'  ,\n                   'value2'  :   'RIGHT_STICK_X:+1'\n               },\n               21  : {\n                   'value'  :   'j'  ,\n                   'value2'  :   'RIGHT_STICK_X:-1'\n               },\n               22  : {\n                   'value'  :   'k'  ,\n                   'value2'  :   'RIGHT_STICK_Y:+1'\n               },\n               23  : {\n                   'value'  :   'i'  ,\n                   'value2'  :   'RIGHT_STICK_Y:-1'\n               },\n               24  : {\n                   'value'  :   '1'\n               },\n               25  : {\n                   'value'  :   '2'\n               },\n               26  : {\n                   'value'  :   '3'\n               },\n               27  : {\n                   'value'  :   'add'\n               },\n               28  : {\n                   'value'  :   'space'\n               },\n               29  : {\n                   'value'  :   'subtract'\n               },\n           },\n           1  : {},\n           2  : {},\n           3  : {}\n       }\n   EJS_VirtualGamepadSettings  Sets the location of what buttons. More information about the virual gamepad button customization is located   here .   Type:   object  Default:   {}   EJS_controlScheme   Type:   string  Default:      Default behaviour (when option is undefined) not changed (core name will be used).  Available control schemes:   nes    gb     gba    snes    n64    gba    nds    vb    segaMD    segaCD    sega32x    segaMS    segaGG    segaSaturn    3do    atari2600    atari7800    lynx    jaguar    arcade    mame   EJS_screenCapture  Changes the default settings and buttons in the toolbar for screenshots and video recording.   Type:   object  Default\u002FExample:     EJS_screenCapture   =   {\n       photo: {\n           source:   \"canvas\"  ,   \u002F\u002F or \"retroarch\" (note: setting to retroarch will ignore the format and just be png)\n           format:   \"png\"  ,   \u002F\u002F can also be `jpeg` or `webp` (note: safari doesn't support webp so it will default back to png if set)\n           upscale:   1   \u002F\u002F can also be `0` which is native, any positive # is valid (note: this will upscale the canvas & frame size by this number).\n       },\n       video: {\n           format:   \"detect\"  ,   \u002F\u002F checks in order of `mp4` then `webm` to see if it's supported in the browser (note: will default to what is first supported)\n           upscale:   1  ,   \u002F\u002F any positive # is valid (note: this will upscale the canvas & frames size by this number).\n           fps:   30  ,   \u002F\u002F can also be 60\n           videoBitrate:   2621440  ,   \u002F\u002F can be any valid bitrate.\n           audioBitrate:   196608   \u002F\u002F can be any valid bitrate.\n       }\n   }\n   EJS_Buttons  Version 4.2.1 and earlier  Shows\u002Fhides buttons.   Type:   object  Default:   {}  Example: The following example will hide all the buttons except for the volume slider and fullscreen button.     EJS_Buttons   =   {\n       playPause:   false  ,\n       restart:   false  ,\n       mute:   false  ,\n       settings:   false  ,\n       fullscreen:   true  ,\n       saveState:   false  ,\n       loadState:   false  ,\n       screenRecord:   false  ,\n       gamepad:   false  ,\n       cheat:   false  ,\n       volume:   true  ,\n       saveSavFiles:   true  ,\n       loadSavFiles:   true  ,\n       quickSave:   false  ,\n       quickLoad:   false  ,\n       screenshot:   false  ,\n       cacheManager:   false  ,\n       exitEmulation:   false\n   }\n  Version 4.2.2 and later  Configures toolbar button icons, visibility, and custom call back functions to execute a custom action on the host page when a button is pressed (for example, automation of handling save files).  Configurable buttons:     Name  Notes     playPause   play   pause   playPause  is an alias for two buttons named   play  and   pause .   Setting the visible attribute of   playPause  will set the visibility of   play  and   pause , however   icon ,   displayName , and   callback  need be configured individually for the   play  and   pause  buttons if different behaviour is required.    restart     mute   unmute   mute  is an alias for two buttons named   mute  and   unmute .   Setting the visible attribute of   mute  will also set the visibility of   unmute . The   icon ,   displayName  and   callback  attributes should be configured for   unmute  if different behaviour is required.    settings     fullscreen   enterFullscreen   exitFullscreen   fullscreen  is an alias for two buttons named   enterFullscreen  and   exitFullscreen .   Setting the visible attribute of   fullscreen  will set the visibility of   enterFullscreen  and   exitFullscreen , however   icon ,   displayName , and   callback  will need to be configured individually for the   enterFullscreen  and   exitFullscreen  buttons if different behaviour is required.    saveState     loadState     screenRecord     gamepad     cheat     volume      saveSavFiles     loadSavFiles     quickSave     quickLoad     screenshot     cacheManager     exitEmulation   Each button can accept either a boolean which controls the buttons visibility (as per behaviour in version 4.2.1 and earlier), or an array with the following elements:     {\n       buttonName  : {\n           visible  :   true  ,\n           icon  :   '\u003Csvg xml>'  ,\n           displayName  :   \"Button Name\"  ,\n           callback  : ()   =>   {\n               console.  log  (  'Button clicked'  );\n           }\n       }\n   }\n  Any undefined element will use the default behaviour for that button - for example, if   visible  is ommited, the button will be visibile.  Custom buttons can be added by adding button elements with a unique name that's not on the above list. Custom buttons appear at the end of the toolbar, and require a name, icon, displayName, and callback to be provided.     Note that while the   displayName  value is localized using the EJS language files, if a   displayName  is used that's not available it will be displayed as provided. It is up to the developer to provide localized values for   displayName .   Type:   object  Default:   {}  Examples:     \u002F\u002F show the saveState button, set the display name, and print a message to the console when clicked\n   {\n       saveState  : {\n           visible  :   true  ,\n           displayName  :   \"Save State\"  ,\n           callback  : ()   =>   {\n               console.  log  (  \"The save state button was clicked\"  );\n           }\n       }\n   }\n     \u002F\u002F hide the button\n   {\n       saveState  :   false\n   }\n     \u002F\u002F Custom button\n   {\n       customButton  : {\n           visible  :   true  ,\n           displayName  :   \"Custom Button\"  ,\n           icon  :   '\u003Csvg xml\u002F>'  ,\n           callback  : ()   =>   {\n               console.  log  (  \"The custom button was clicked\"  );\n           }\n       }\n   }\n   EJS_defaultOptions  Sets the default settings menu options.   Type:   object  Default:   {}  Note: Available options and values will be logged when the emulator is started. Load the emulator page with   EJS_DEBUG_XX  on, click the play button, then on load there should be a log in the console   supported menu options . If you use the one that logs on page load, not all options will be available and not all options will be supported.  Example:     EJS_defaultOptions   =   {\n       'shader'  :  'crt-mattias.glslp'  ,\n       'save-state-slot'  :   4  ,\n       'save-state-location'  :   'browser'\n   }\n  Debug Options   EJS_DEBUG_XX  You can set this to   true  to enable debug mode. This will log a lot of information to the console and use the unminified scripts. This is useful for debugging issues with the emulator. And it is recommended to use this when you are contributing to the project.   Type:   boolean  Default:   false  Example:   EJS_DEBUG_XX = true   EJS_settingsLanguage  For debugging and adding new languages. Set it to   true  and it will enable the missing translations in the console logs.   Type:   boolean  Default:   false  Example:   EJS_settingsLanguage = true   EJS_missingLang  This is an array of missing translations. This is used for debugging and adding new languages. You can get the array by using   console.log(EJS_missingLang) .   Type:   array  Default:   []  Example:   console.log(EJS_missingLang);   EJS_softLoad  Automatically reset the console after x seconds.   Type:   boolean  Default:   false  Example:   EJS_softLoad = true;   EJS_startButtonName  Custom text for the start button.   Type:   string  Default:   Start Game  Example:   EJS_startButtonName = \"Start {game name}\"  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":74,"path":75,"dir":18,"title":76,"description":77,"keywords":78,"body":79},"content:1.docs:8.systems:1.index.md","\u002Fdocs\u002Fsystems","Supported Systems","EmulatorJS supports the following systems:",[],"  Supported Systems   EmulatorJS  supports the following systems:     This page is likely out of date, see   this page  for an updated list of cores.    3DO   Arcade   Atari 2600   Atari 5200   Atari 7800   Atari Jaguar   Atari Lynx   ColecoVision   Commodore 64   Commodore 128   Commodore Amiga   Commodore PET   Commodore Plus4   Commodore VIC-20   MAME 2003   NES-Famicom   Nintendo 64   Nintendo DS   Nintendo Game Boy Advance   Nintendo Game Boy   PlayStation   PSP   Sega 32X   Sega CD   Sega Game Gear   Sega Master System   Sega Mega Drive   Sega Saturn   SNES-Super Famicom   Virtual Boy",{"id":81,"path":82,"dir":83,"title":84,"description":7,"keywords":85,"body":87},"content:1.docs:8.systems:3DO.md","\u002Fdocs\u002Fsystems\u002F3do","systems","3DO",[86],"Code example","  3DO  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be opera\n       EJS_core   =   '3do'  ;\n       \n       \u002F\u002F URL to BIOS file\n       EJS_biosUrl   =   ''  ;\n       \n       \u002F\u002F URL to Game rom\n       EJS_gameUrl   =   ''  ;\n       \n       \u002F\u002F Path to the data directory\n       EJS_pathtodata   =   'data\u002F'  ;\n   \u003C\u002F  script  >\n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     File Name  Description  md5sum    panafz1.bin  Panasonic FZ-1   f47264dd47fe30f73ab3c010015c155b   panafz10.bin  Panasonic FZ-10   51f2f43ae2f3508a14d9f56597e2d3ce   panafz10-norsa.bin  Panasonic FZ-10   RSA Patch   1477bda80dc33731a65468c1f5bcbee9   panafz10e-anvil.bin  Panasonic FZ-10-E   Anvil   a48e6746bd7edec0f40cff078f0bb19f   panafz10e-anvil-norsa.bin  Panasonic FZ-10-E   Anvil RSA Patch   cf11bbb5a16d7af9875cca9de9a15e09   panafz1j.bin  Panasonic FZ-1J   a496cfdded3da562759be3561317b605   panafz1j-norsa.bin  Panasonic FZ-1J   RSA Patch   f6c71de7470d16abe4f71b1444883dc8   goldstar.bin  Goldstar GDO-101M   8639fd5e549bd6238cfee79e3e749114   sanyotry.bin  Sanyo IMP-21J TRY   35fa1a1ebaaeea286dc5cd15487c13ea   3do_arcade_saot.bin  Shootout At Old Tucson   8970fc987ab89a7f64da9f8a8c4333ff  CORES  The   3do  system supports 1 core    opera  If set to   3do , emulator will use the   opera  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":89,"path":90,"dir":83,"title":91,"description":7,"keywords":92,"body":94},"content:1.docs:8.systems:Arcade.md","\u002Fdocs\u002Fsystems\u002Farcade","Arcade",[93],"Code Example","  Arcade  Code Example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be fbneo, fbalpha2012_cps1, or fbalpha2012_cps2\n       EJS_core   =   'arcade'  ;\n       \n       \u002F\u002F URL to Game rom\n       EJS_gameUrl   =   ''  ;\n       \n       \u002F\u002F Path to the data directory\n       EJS_pathtodata   =   'data\u002F'  ;\n   \u003C\u002F  script  >\n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  CORES  The   arcade  system supports 3 cores    fbneo   fbalpha2012_cps1   fbalpha2012_cps2  If set to   arcade , emulator will use the   fbneo  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":96,"path":97,"dir":83,"title":98,"description":99,"keywords":100,"body":101},"content:1.docs:8.systems:Atari 2600.md","\u002Fdocs\u002Fsystems\u002Fatari-2600","Atari 2600","I do not know the file extension limits for this system. \nThere is no bios for this system.",[86],"  Atari 2600  I do not know the file extension limits for this system.   \nThere is no bios for this system.  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n   \n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be stella2014\n       EJS_core   =   'atari2600'  ;\n       \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  CORES  The   atari2600  system supports 1 core    stella2014  If set to   atari2600 , emulator will use the   stella2014  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":103,"path":104,"dir":83,"title":105,"description":7,"keywords":106,"body":107},"content:1.docs:8.systems:Atari 5200.md","\u002Fdocs\u002Fsystems\u002Fatari-5200","Atari 5200",[93],"  Atari 5200  Code Example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be a5200\n       EJS_core   =   'atari5200'  ;\n       \n       \u002F\u002F URL to Game rom\n       EJS_gameUrl   =   ''  ;\n       \n       \u002F\u002F Path to the data directory\n       EJS_pathtodata   =   'data\u002F'  ;\n   \u003C\u002F  script  >\n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  CORES  The   atari5200  system supports 1 core    a5200  If set to   atari5200 , emulator will use the   a5200  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":109,"path":110,"dir":83,"title":111,"description":7,"keywords":112,"body":113},"content:1.docs:8.systems:Atari 7800.md","\u002Fdocs\u002Fsystems\u002Fatari-7800","Atari 7800",[86],"  Atari 7800  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be prosystem\n       EJS_core   =   'atari7800'  ;\n       \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     File Name  Description  md5sum    7800 BIOS (U).rom  7800 BIOS - Optional   0763f1ffb006ddbe32e52d497ee848ae  CORES  The   atari7800  system supports 1 core    prosystem  If set to   atari7800 , emulator will use the   prosystem  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":115,"path":116,"dir":83,"title":117,"description":7,"keywords":118,"body":119},"content:1.docs:8.systems:Atari Jaguar.md","\u002Fdocs\u002Fsystems\u002Fatari-jaguar","Atari Jaguar",[86],"  Atari Jaguar  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be virtualjaguar\n       EJS_core   =   'jaguar'  ;\n       \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  CORES  The   jaguar  system supports 1 core    virtualjaguar  If set to   jaguar , emulator will use the   virtualjaguar  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":121,"path":122,"dir":83,"title":123,"description":99,"keywords":124,"body":125},"content:1.docs:8.systems:Atari Lynx.md","\u002Fdocs\u002Fsystems\u002Fatari-lynx","Atari Lynx",[86],"  Atari Lynx  I do not know the file extension limits for this system.   \nThere is no bios for this system.  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be handy\n       EJS_core   =   'lynx'  ;\n       \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     File Name  Description  md5sum    lynxboot.img  Lynx Boot Image - Required   fcd403db69f54290b51035d82f835e7b  CORES  The   lynx  system supports 1 core    handy  If set to   lynx , emulator will use the   handy  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":127,"path":128,"dir":83,"title":129,"description":7,"keywords":130,"body":131},"content:1.docs:8.systems:azahar.md","\u002Fdocs\u002Fsystems\u002Fazahar","3DS",[93],"  3DS     This core requires that   EJS_threads = true  in order to function. Please see the   options  page for more information.  Code Example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be azahar\n       EJS_core   =   '3ds'  ;\n       \n       \u002F\u002F URL to Game rom\n       EJS_gameUrl   =   ''  ;\n       \n       \u002F\u002F Path to the data directory\n       EJS_pathtodata   =   'data\u002F'  ;\n   \n       \u002F\u002F 3DS requires threads\n       EJS_threads   =   true  ;\n   \u003C\u002F  script  >\n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  CORES  The   3ds  system supports 1 core    azahar  If set to   3ds , emulator will use the   azahar  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":133,"path":134,"dir":83,"title":135,"description":7,"keywords":136,"body":137},"content:1.docs:8.systems:ColecoVision.md","\u002Fdocs\u002Fsystems\u002Fcolecovision","ColecoVision",[86],"  ColecoVision  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n   \n       EJS_player   =   '#game'  ;\n       \n       EJS_core   =   'coleco'  ;\n   \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     Name  Description  MD5 Checksum     colecovision.rom  ColecoVision BIOS - Required   2c66f5911e5b42b8ebe113403548eee7  CORES  The   coleco  system supports 1 core    gearcoleco  If set to   coleco , emulator will use the   gearcoleco  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":139,"path":140,"dir":83,"title":141,"description":7,"keywords":142,"body":143},"content:1.docs:8.systems:Commodore 64.md","\u002Fdocs\u002Fsystems\u002Fcommodore-64","Commodore 64",[86],"  Commodore 64  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n   \n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be vice_x64sc or vice_x64\n       EJS_core   =   'c64'  ;\n   \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     Name  Description  MD5 Checksum     JiffyDOS_C64.bin  JiffyDOS C64 Kernal   be09394f0576cf81fa8bacf634daf9a2    JiffyDOS_1541-II.bin  JiffyDOS 1541 drive BIOS   1b1e985ea5325a1f46eb7fd9681707bf    JiffyDOS_1571_repl310654.bin  JiffyDOS 1571 drive BIOS   41c6cc528e9515ffd0ed9b180f8467c0    JiffyDOS_1581.bin  JiffyDOS 1581 drive BIOS   20b6885c6dc2d42c38754a365b043d71  CORES  The   c64  system supports 2 cores    vice_x64sc  - newer more cycle accurate core   vice_x64  - older unmaintained core  If set to   c64 , emulator will use the   vice_x64sc  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":145,"path":146,"dir":83,"title":147,"description":7,"keywords":148,"body":149},"content:1.docs:8.systems:Commodore 128.md","\u002Fdocs\u002Fsystems\u002Fcommodore-128","Commodore 128",[86],"  Commodore 128  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n   \n       EJS_player   =   '#game'  ;\n       \n       EJS_core   =   'c128'  ;\n   \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     Name  Description  MD5 Checksum     JiffyDOS_C128.bin  JiffyDOS C128 Kernal   cbbd1bbcb5e4fd8046b6030ab71fc021    JiffyDOS_C64.bin  JiffyDOS C64 Kernal   be09394f0576cf81fa8bacf634daf9a2    JiffyDOS_1541-II.bin  JiffyDOS 1541 drive BIOS   1b1e985ea5325a1f46eb7fd9681707bf    JiffyDOS_1571_repl310654.bin  JiffyDOS 1571 drive BIOS   41c6cc528e9515ffd0ed9b180f8467c0    JiffyDOS_1581.bin  JiffyDOS 1581 drive BIOS   20b6885c6dc2d42c38754a365b043d71  CORES  The   c128  system supports 1 core    vice_x128  If set to   c128 , emulator will use the   vice_x128  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":151,"path":152,"dir":83,"title":153,"description":7,"keywords":154,"body":155},"content:1.docs:8.systems:Commodore Amiga.md","\u002Fdocs\u002Fsystems\u002Fcommodore-amiga","Commodore Amiga",[86],"  Commodore Amiga  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n   \n       EJS_player   =   '#game'  ;\n       \n       EJS_core   =   'amiga'  ;\n   \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     Name  Amiga Forever  Description  MD5 Checksum     kick33180.A500  amiga-os-120.rom  Kickstart v1.2 rev 33.180   85ad74194e87c08904327de1a9443b7a    kick34005.A500  amiga-os-130.rom  Kickstart v1.3 rev 34.005   82a21c1890cae844b3df741f2762d48d    kick37175.A500  amiga-os-204.rom  Kickstart v2.04 rev 37.175   dc10d7bdd1b6f450773dfb558477c230    kick37350.A600  amiga-os-205-a600.rom  Kickstart v2.05 rev 37.350   465646c9b6729f77eea5314d1f057951    kick40063.A600  amiga-os-310-a600.rom  Kickstart v3.1 rev 40.063   e40a5dfb3d017ba8779faba30cbd1c8e    kick39106.A1200  amiga-os-300-a1200.rom  Kickstart v3.0 rev 39.106   b7cc148386aa631136f510cd29e42fc3    kick40068.A1200  amiga-os-310-a1200.rom  Kickstart v3.1 rev 40.068   646773759326fbac3b2311fd8c8793ee    kick39106.A4000  amiga-os-300-a4000.rom  Kickstart v3.0 rev 39.106   9b8bdd5a3fd32c2a5a6f5b1aefc799a5    kick40068.A4000  amiga-os-310-a4000.rom  Kickstart v3.1 rev 40.068   9bdedde6a4f33555b4a270c8ca53297d    kick34005.CDTV  amiga-os-130-cdtv-ext.rom  CDTV extended ROM v1.00   89da1838a24460e4b93f4f0c5d92d48d    kick40060.CD32  amiga-os-310-cd32.rom  CD32 Kickstart v3.1 rev 40.060   5f8924d013dd57a89cf349f4cdedc6b1    kick40060.CD32.ext  amiga-os-310-cd32-ext.rom  CD32 extended ROM rev 40.060   bb72565701b1b6faece07d68ea5da639    kick40060.CD32   CD32 KS + extended v3.1 rev 40.060   f2f241bf094168cfb9e7805dc2856433  CORES  The   amiga  system supports 1 core    puae  If set to   amiga , emulator will use the   puae  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":157,"path":158,"dir":83,"title":159,"description":7,"keywords":160,"body":161},"content:1.docs:8.systems:Commodore PET.md","\u002Fdocs\u002Fsystems\u002Fcommodore-pet","Commodore PET",[86],"  Commodore PET  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n   \n       EJS_player   =   '#game'  ;\n       \n       EJS_core   =   'pet'  ;\n   \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  CORES  The   pet  system supports 1 core    vice_xpet  If set to   pet , emulator will use the   vice_xpet  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":163,"path":164,"dir":83,"title":165,"description":7,"keywords":166,"body":167},"content:1.docs:8.systems:Commodore Plus4.md","\u002Fdocs\u002Fsystems\u002Fcommodore-plus4","Commodore Plus\u002F4",[86],"  Commodore Plus\u002F4  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n   \n       EJS_player   =   '#game'  ;\n       \n       EJS_core   =   'plus4'  ;\n   \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  CORES  The   plus4  system supports 1 core    vice_xplus4  If set to   plus4 , emulator will use the   vice_xplus4  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":169,"path":170,"dir":83,"title":171,"description":7,"keywords":172,"body":173},"content:1.docs:8.systems:Commodore VIC20.md","\u002Fdocs\u002Fsystems\u002Fcommodore-vic20","Commodore VIC-20",[86],"  Commodore VIC-20  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n   \n       EJS_player   =   '#game'  ;\n       \n       EJS_core   =   'vic20'  ;\n   \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  CORES  The   vic20  system supports 1 core    vice_xvic  If set to   vic20 , emulator will use the   vice_xvic  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":175,"path":176,"dir":83,"title":177,"description":7,"keywords":178,"body":179},"content:1.docs:8.systems:MAME 2003.md","\u002Fdocs\u002Fsystems\u002Fmame-2003","MAME 2003",[93],"  MAME 2003  Code Example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       EJS_core   =   'mame2003'  ;\n       \n       \u002F\u002F URL to Game rom\n       EJS_gameUrl   =   ''  ;\n       \n       \u002F\u002F Path to the data directory\n       EJS_pathtodata   =   'data\u002F'  ;\n   \u003C\u002F  script  >\n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  CORES  The   mame2003  system supports 1 core    mame2003  If set to   mame2003 , emulator will use the   mame2003  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":181,"path":182,"dir":83,"title":183,"description":7,"keywords":184,"body":185},"content:1.docs:8.systems:NES-Famicom.md","\u002Fdocs\u002Fsystems\u002Fnes-famicom","NES \u002F Famicom",[93],"  NES \u002F Famicom  Code Example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be fceumm or nestopia\n       EJS_core   =   'nes'  ;\n       \n       \u002F\u002F URL to BIOS file\n       EJS_biosUrl   =   ''  ;\n       \n       \u002F\u002F URL to Game rom\n       EJS_gameUrl   =   ''  ;\n       \n       \u002F\u002F Path to the data directory\n       EJS_pathtodata   =   'data\u002F'  ;\n   \u003C\u002F  script  >\n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     File Name  Description  md5sum    disksys.rom  Family Computer Disk System BIOS -   Required for Famicom Disk System emulation   ca30b50f880eb660a320674ed365ef7a   gamegenie.nes  Game Genie add-on cartridge -   Required for Game Genei Add-on emulation   (Only supported on the fceumm core)   7f98d77d7a094ad7d069b74bd553ec98  CORES  The   nes  system supports 2 cores    fceumm   nestopia  If set to   nes , emulator will use the   fceumm  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":187,"path":188,"dir":83,"title":189,"description":7,"keywords":190,"body":191},"content:1.docs:8.systems:Nintendo 64.md","\u002Fdocs\u002Fsystems\u002Fnintendo-64","Nintendo 64",[93],"  Nintendo 64  Code Example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be mupen64plus_next or parallel-n64\n       EJS_core   =   'n64'  ;\n       \n       \u002F\u002F URL to Game rom\n       EJS_gameUrl   =   ''  ;\n       \n       \u002F\u002F Path to the data directory\n       EJS_pathtodata   =   'data\u002F'  ;\n   \u003C\u002F  script  >\n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  CORES  The   n64  system supports 2 cores    mupen64plus_next   parallel-n64  If set to   n64 , emulator will use the   mupen64plus_next  core. On iOS mobile, n64 will default to   parallel-n64 .  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":193,"path":194,"dir":83,"title":195,"description":7,"keywords":196,"body":197},"content:1.docs:8.systems:Nintendo DS.md","\u002Fdocs\u002Fsystems\u002Fnintendo-ds","Nintendo DS",[93],"  Nintendo DS  Code Example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be desmume, desmume2015 or melonds\n       EJS_core   =   'nds'  ;\n       \n       \u002F\u002F URL to BIOS file\n       EJS_biosUrl   =   ''  ;\n       \n       \u002F\u002F URL to Game rom\n       EJS_gameUrl   =   ''  ;\n       \n       \u002F\u002F Path to the data directory\n       EJS_pathtodata   =   'data\u002F'  ;\n   \u003C\u002F  script  >\n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS (melonds core only)     File Name  Description  md5sum    bios7.bin  NDS ARM7 BIOS - Required   df692a80a5b1bc90728bc3dfc76cd948   bios9.bin  NDS ARM9 BIOS - Required   a392174eb3e572fed6447e956bde4b25   firmware.bin  NDS Firmware - Required   145eaef5bd3037cbc247c213bb3da1b3   dsi_bios7.bin  DSi ARM7 BIOS - Optional       dsi_bios9.bin  DSi ARM9 BIOS - Optional       dsi_firmware.bin  DSi Firmware - Optional       dsi_nand.bin  DSi NAND - Optional       dsi_sd_card.bin  DSi SD Card - Optional      CORES  The   nds  system supports 3 cores    melonds   desmume   desmume2015  If set to   nds , emulator will use the   melonds  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":199,"path":200,"dir":83,"title":201,"description":7,"keywords":202,"body":203},"content:1.docs:8.systems:Nintendo Game Boy.md","\u002Fdocs\u002Fsystems\u002Fnintendo-game-boy","Nintendo GameBoy",[93],"  Nintendo GameBoy  Code Example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be gambatte or mgba\n       EJS_core   =   'gb'  ;\n       \n       \u002F\u002F URL to BIOS file\n       EJS_biosUrl   =   ''  ;\n       \n       \u002F\u002F URL to Game rom\n       EJS_gameUrl   =   ''  ;\n       \n       \u002F\u002F Path to the data directory\n       EJS_pathtodata   =   'data\u002F'  ;\n   \u003C\u002F  script  >\n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     File Name  Description  md5sum    gb_bios.bin  Game Boy BIOS - Optional   32fbbd84168d3482956eb3c5051637f5   gbc_bios.bin  Game Boy Color BIOS - Optional   dbfce9db9deaa2567f6a84fde55f9680  CORES  The   gb  system supports 2 cores    gambatte   mgba  If set to   gb , emulator will use the   gambatte  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":205,"path":206,"dir":83,"title":207,"description":7,"keywords":208,"body":209},"content:1.docs:8.systems:Nintendo Game Boy Advance.md","\u002Fdocs\u002Fsystems\u002Fnintendo-game-boy-advance","Nintendo GameBoy Advance",[93],"  Nintendo GameBoy Advance  Code Example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be mgba\n       EJS_core   =   'gba'  ;\n       \n       \u002F\u002F URL to BIOS file\n       EJS_biosUrl   =   ''  ;\n       \n       \u002F\u002F URL to Game rom\n       EJS_gameUrl   =   ''  ;\n       \n       \u002F\u002F Path to the data directory\n       EJS_pathtodata   =   'data\u002F'  ;\n   \u003C\u002F  script  >\n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     File Name  Description  md5sum    gb_bios.bin  Game Boy BIOS - Optional   32fbbd84168d3482956eb3c5051637f5   gbc_bios.bin  Game Boy Color BIOS - Optional   dbfce9db9deaa2567f6a84fde55f9680   gba_bios.bin  Game Boy Advance BIOS - Optional   a860e8c0b6d573d191e4ec7db1b1e4f6   sgb_bios.bin  Super Game Boy BIOS - Optional   d574d4f9c12f305074798f54c091a8b4  CORES  The   gba  system supports 1 core    mgba  If set to   gba , emulator will use the   mgba  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":211,"path":212,"dir":83,"title":213,"description":7,"keywords":214,"body":215},"content:1.docs:8.systems:PlayStation.md","\u002Fdocs\u002Fsystems\u002Fplaystation","PlayStation",[93],"  PlayStation  Code Example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be pcsx_rearmed or mednafen_psx_hw\n       EJS_core   =   'psx'  ;\n       \n       \u002F\u002F URL to BIOS file\n       EJS_biosUrl   =   ''  ;\n       \n       \u002F\u002F URL to Game rom\n       EJS_gameUrl   =   ''  ;\n       \n       \u002F\u002F Path to the data directory\n       EJS_pathtodata   =   'data\u002F'  ;\n   \u003C\u002F  script  >\n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     File Name  Description  md5sum    scph5500.bin  PS1 JP BIOS - Required for JP games   8dd7d5296a650fac7319bce665a6a53c   scph5501.bin  PS1 US BIOS - Required for US games   490f666e1afb15b7362b406ed1cea246   scph5502.bin  PS1 EU BIOS - Required for EU games   32736f17079d0b2b7024407c39bd3050   PSXONPSP660.bin  Extracted from a PSP   c53ca5908936d412331790f4426c6c33   scph101.bin  Version 4.4 03\u002F24\u002F00 A   6E3735FF4C7DC899EE98981385F6F3D0   scph7001.bin  Version 4.1 12\u002F16\u002F97 A   1e68c231d0896b7eadcad1d7d8e76129   scph1001.bin  Version 2.0 05\u002F07\u002F95 A   924e392ed05558ffdb115408c263dccf  CORES  The   psx  system supports 2 cores    mednafen_psx_hw   pcsx_rearmed  If set to   psx , emulator will use the   pcsx_rearmed  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":217,"path":218,"dir":83,"title":219,"description":7,"keywords":220,"body":221},"content:1.docs:8.systems:PSP.md","\u002Fdocs\u002Fsystems\u002Fpsp","Playstation Portable (PSP)",[93],"  Playstation Portable (PSP)     Support will not be given for game compatibility and graphical bugs!     This core requires that   EJS_threads = true  in order to function. Please see the   options  page for more information.  Code Example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be ppsspp\n       EJS_core   =   'psp'  ;\n       \n       \u002F\u002F URL to Game rom\n       EJS_gameUrl   =   ''  ;\n       \n       \u002F\u002F Path to the data directory\n       EJS_pathtodata   =   'data\u002F'  ;\n   \n       \u002F\u002F PSP requires threads\n       EJS_threads   =   true  ;\n   \u003C\u002F  script  >\n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  CORES  The   psp  system supports 1 core    ppsspp  If set to   psp , emulator will use the   ppsspp  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":223,"path":224,"dir":83,"title":225,"description":7,"keywords":226,"body":227},"content:1.docs:8.systems:Sega 32X.md","\u002Fdocs\u002Fsystems\u002Fsega-32x","Sega 32X",[86],"  Sega 32X  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n   \n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be picodrive\n       EJS_core   =   'sega32x'  ;\n       \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  CORES  The   sega32x  system supports 1 core    picodrive  If set to   sega32x , emulator will use the   picodrive  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":229,"path":230,"dir":83,"title":231,"description":232,"keywords":233,"body":234},"content:1.docs:8.systems:Sega CD.md","\u002Fdocs\u002Fsystems\u002Fsega-cd","Sega CD","I do not know the file extension limits for this system.",[86],"  Sega CD  I do not know the file extension limits for this system.  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n   \n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be picodrive, genesis_plus_gx or genesis_plus_gx_wide\n       EJS_core   =   'segaCD'  ;\n   \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     File Name  Description  md5sum    bios_CD_E.bin  MegaCD EU BIOS - Required   e66fa1dc5820d254611fdcdba0662372   bios_CD_U.bin  SegaCD US BIOS - Required   2efd74e3232ff260e371b99f84024f7f   bios_CD_J.bin  MegaCD JP BIOS - Required   278a9397d192149e84e820ac621a8edd  CORES  ::: warning\nThis the   picodrive  is currently broken. See   this  github issue\n:::  The   segaCD  system supports 3 cores    genesis_plus_gx   genesis_plus_gx_wide   picodrive  If set to   segaCD , emulator will use the   genesis_plus_gx  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":236,"path":237,"dir":83,"title":238,"description":7,"keywords":239,"body":240},"content:1.docs:8.systems:Sega Game Gear.md","\u002Fdocs\u002Fsystems\u002Fsega-game-gear","Sega Game Gear",[86],"  Sega Game Gear  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n   \n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be genesis_plus_gx or genesis_plus_gx_wide\n       EJS_core   =   'segaGG'  ;\n   \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     File Name  Description  md5sum    bios.gg  GameGear BIOS (bootrom) - Optional   672e104c3be3a238301aceffc3b23fd6  CORES  The   segaGG  system supports 2 cores    genesis_plus_gx   genesis_plus_gx_wide  If set to   segaGG , emulator will use the   genesis_plus_gx  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":242,"path":243,"dir":83,"title":244,"description":7,"keywords":245,"body":246},"content:1.docs:8.systems:Sega Master System.md","\u002Fdocs\u002Fsystems\u002Fsega-master-system","Sega Master System",[86],"  Sega Master System  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n   \n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be genesis_plus_gx or picodrive\n       EJS_core   =   'segaMS'  ;\n   \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     Name  Description  MD5 Checksum     bios_E.sms  MasterSystem EU BIOS   840481177270d5642a14ca71ee72844c    bios_U.sms  MasterSystem US BIOS   840481177270d5642a14ca71ee72844c    bios_J.sms  MasterSystem JP BIOS   24a519c53f67b00640d0048ef7089105  CORES  ::: warning\nThis the   picodrive  is currently broken. See   this  github issue\n:::  The   segaMS  system supports 3 cores    smsplus   genesis_plus_gx   picodrive  If set to   segaMS , emulator will use the   smsplus  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":248,"path":249,"dir":83,"title":250,"description":7,"keywords":251,"body":252},"content:1.docs:8.systems:Sega Mega Drive.md","\u002Fdocs\u002Fsystems\u002Fsega-mega-drive","Sega Mega Drive",[86],"  Sega Mega Drive  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n   \n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be genesis_plus_gx, genesis_plus_gx_wide or picodrive\n       EJS_core   =   'segaMD'  ;\n   \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     File Name  Description  md5sum    bios_MD.bin  MegaDrive TMSS startup ROM   45e298905a08f9cfb38fd504cd6dbc84  CORES  ::: warning\nThis the   picodrive  is currently broken. See   this  github issue\n:::  The   segaMD  system supports 3 cores    genesis_plus_gx   genesis_plus_gx_wide   picodrive  If set to   segaMD , emulator will use the   genesis_plus_gx  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":254,"path":255,"dir":83,"title":256,"description":232,"keywords":257,"body":258},"content:1.docs:8.systems:Sega Saturn.md","\u002Fdocs\u002Fsystems\u002Fsega-saturn","Sega Saturn",[86],"  Sega Saturn  I do not know the file extension limits for this system.  Code example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n   \n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be yabause\n       EJS_core   =   'segaSaturn'  ;\n   \n       \u002F\u002F URL to Bios file\n   \n       EJS_biosUrl   =   ''  ;\n       \n       \u002F\u002F URL to Game rom\n        \n       EJS_gameUrl   =   ''  ;\n       \n       \u002F*\n        *  Path to the WASM \u002F JS files\n        *  HAS TO BE in the same directory.\n        *\u002F\n       \n       EJS_pathtodata   =   'data\u002F'  ;\n       \n   \u003C\u002F  script  >\n   \n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     File Name  Description  md5sum    saturn_bios.bin  Saturn BIOS   af5828fdff51384f99b3c4926be27762  CORES  The   segaSaturn  system supports 1 core    yabause  If set to   segaSaturn , emulator will use the   yabause  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":260,"path":261,"dir":83,"title":262,"description":7,"keywords":263,"body":264},"content:1.docs:8.systems:SNES.md","\u002Fdocs\u002Fsystems\u002Fsnes","SNES",[93],"  SNES  Code Example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be snes9x or bsnes\n       EJS_core   =   'snes'  ;\n       \n       \u002F\u002FSNES mouse\n       EJS_mouse   =   false  ; \n       \n       \u002F\u002F SNES Multitap\n       EJS_multitap   =   false  ; \n       \n       \u002F\u002F URL to BIOS file\n       EJS_biosUrl   =   ''  ;\n       \n       \u002F\u002F URL to Game rom\n       EJS_gameUrl   =   ''  ;\n       \n       \u002F\u002F Path to the data directory\n       EJS_pathtodata   =   'data\u002F'  ;\n   \u003C\u002F  script  >\n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  BIOS     File Name  Description  md5sum    BS-X.bin  BS-X - Sore wa Namae o Nusumareta Machi no   Monogatari (Japan) (Rev 1) - Optional   fed4d8242cfbed61343d53d48432aced   STBIOS.bin  Sufami Turbo (Japan) - Optional   d3a44ba7d42a74d3ac58cb9c14c6a5ca  CORES  The   snes  system supports 2 cores    snes9x   bsnes  If set to   snes , emulator will use the   snes9x  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":266,"path":267,"dir":83,"title":268,"description":7,"keywords":269,"body":270},"content:1.docs:8.systems:Virtual Boy.md","\u002Fdocs\u002Fsystems\u002Fvirtual-boy","Virtual Boy",[93],"  Virtual Boy  Code Example     \u003C  div   style  =  'width:640px;height:480px;max-width:100%'  >\n       \u003C  div   id  =  'game'  >\u003C\u002F  div  >\n   \u003C\u002F  div  >\n   \n   \u003C  script   type  =  'text\u002Fjavascript'  >\n       EJS_player   =   '#game'  ;\n       \n       \u002F\u002F Can also be beetle_vb\n       EJS_core   =   'vb'  ;\n       \n       \u002F\u002F URL to Game rom\n       EJS_gameUrl   =   ''  ;\n       \n       \u002F\u002F Path to the data directory\n       EJS_pathtodata   =   'data\u002F'  ;\n   \u003C\u002F  script  >\n   \u003C  script   src  =  'data\u002Floader.js'  >\u003C\u002F  script  >\n  CORES  The   vb  system supports 1 core    beetle_vb  If set to   vb , emulator will use the   beetle_vb  core.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":272,"path":273,"dir":18,"title":274,"description":275,"keywords":276,"body":279},"content:1.docs:9.languages.md","\u002Fdocs\u002Flanguages","Localization","Supported languages",[277,278],"Credits","Contributing","  Localization  Supported languages   en.json :   en-US  - English (US)   pt.json :   pt-BR  - Portuguese (Brazil)   es.json :   es-419  - Spanish (Latin America)   el.json :   el-GR  - Greek (Modern Greek)   ja.json :   ja-JP  - Japanese (Japan)   zh.json :   zh-CN  - Chinese (Simplified)   hi.json :   hi-IN  - Hindi (India)   ar.json :   ar-SA  - Arabic (Saudi Arabia)   jv.json :   jv-ID  - Javanese (Indonesia)   bn.json :   bn-BD  - Bengali (Bangladesh)   ru.json :   ru-RU  - Russian (Russia)   de.json :   de-DE  - German (Germany)   ko.json :   ko-KR  - Korean (South Korea)   fr.json :   fr-FR  - French (France)   it.json :   it-IT  - Italian (Italy)   tr.json :   tr-TR  - Turkish (Turkey)   fa.json :   fa-AF  - Persian (Afghanistan)   ro.json :   ro-RO  - Romanian (Romania)   km.json :   km-KH  - Khmer (Cambodia)   vi.json :   vi-VN  - Vietnamese (Vietnam)   ua.json :   uk-UA  - Ukranian (Ukraine)   default:   en-US  add the line to your code to use   EJS_language = ''; \u002F\u002Flanguage\n  If the language file is not found or there was an error fetching the file, the emulator will default to english.  Credits  Translated for   es-419  originally by   @cesarcristianodeoliveira  and updated by   @angelmarfil    \nTranslated for   el-GR  by   @imneckro    \nTranslated for   pt-BR  by   @zmarteline  \nTranslated for   zh-CN  by   @eric183  \nTranslated for   it-IT  by   @IvanMazzoli    \nTranslated for   tr-TR  by   @iGoodie    \nTranslated for   fa-AF  by   @rezamohdev    \nTranslated for   fr-FR  by   @t3chnob0y    \nTranslated for   ro-RO  by   @jurcaalexandrucristian    \nTranslated for   ja-JP  by   @noel-forester    \nTranslated for   km-KH  by   @novsochetra    \nTranslated for   vi-VN  by   @TimKieu    \nTranslated for   hi-IN ,   ar-SA ,   jv-iD ,   bn-BD ,   ru-RU ,   de-DE ,   ko-KR  by   @allancoding , using a translate application   \nTranslated for   ua-UA  by   @MrSosige     Contributing  To contribute, please download the default   en-US.json  language file to use as a template, translate the strings and then submit the file with a Pull Request or Issue.  The EmulatorJS team will review and add your changes.  As of version   4.2.2  it will default to the system language.  The   retroarch.json  are all the setting names for the menu. You can set   EJS_settingsLanguage  to   true  to see the missing retroarch settings names for the current language. You can translate them and add the to the language file.  The control mapping translations for controllers are diffrent for each controller. They will need to be added to the language file if they are not in the default   en-US.json  file.  You can also use the   Translation Helper  tool to help you translate the file.  Please contribute!!  Enything that is incorrect or needs to be fix please perform a pull request!",{"id":281,"path":282,"dir":18,"title":283,"description":284,"keywords":285,"body":286},"content:1.docs:10.CDN.md","\u002Fdocs\u002Fcdn","CDN","The CDN contains the lastest code, and removes the requirement to self-host the data file. The CDN can be found at https:\u002F\u002Fcdn.emulatorjs.org\u002F. You can use this to get the stable, latest, nightly and any other main version by setting your EJS_pathtodata to https:\u002F\u002Fcdn.emulatorjs.org\u002F\u003Cversion>\u002Fdata\u002F.",[],"  CDN  The CDN contains the lastest code, and removes the requirement to self-host the data file. The CDN can be found at    https:\u002F\u002Fcdn.emulatorjs.org\u002F . You can use this to get the stable, latest, nightly and any other main version by setting your   EJS_pathtodata  to   https:\u002F\u002Fcdn.emulatorjs.org\u002F\u003Cversion>\u002Fdata\u002F .  There are 3 different version name that you need to be aware of:     stable  - This will be the most stable version of the emulator both code and cores will be tested before release. It will be updated every time a new version is released on GitHub. This is the default version on the Demo.    latest  - This will contain the latest code but use the stable cores. This will be updated every time the   main  branch is updated. Using latest will occasionally be broken, it is only recommended to use stable in production.    nightly  - This will contain the latest code and the latest cores. The cores will be updated every day, and may be unstable.",{"id":288,"path":289,"dir":18,"title":290,"description":291,"body":292},"content:1.docs:11.changelog.md","\u002Fdocs\u002Fchangelog","Changes","Github has the latest information on releases.","  Changes  Github has the latest information on   releases .  4.3.0-pre   This is a PRE RELEASE. It is not marked as stable for a reason. Running this in a prod environment where stability is needed is not advised.  Many, many things have changed. Cores are not inter-changable between versions  Many subsystems were completely redone in this release. Things may break. Please report them so I can yell at other maintainers  One thing I really like about this update is PPSSPP is significantly more playable (as in, it is. Runs even at 10x fastforward on my pc)   Redo method used to read save states from the backend (may be slower but significantly less error-prone)  Throw network errors instead of supressing them  Add genesis_plus_gx_wide core  Add bsnes core  Add freeintv core  Add azahar core  Redo start game detection  Move to ES6 modules  Disable async for most cores  Move to rwebaudio driver  Fix hardware rendering for PPSSPP core  Finish DOS support with a batch bootup file (this can be disabled)  Update af-FR translation (Thanks to   @t3chnob0y )  Fix custom broken buttons (Thanks to   @michael-j-green )  Redo language support (Thanks to   @allancoding )  Update ko translation (Thanks to   @UzuCore )  Fix context menu visibility options (Thanks to   @michael-j-green )  Update ja translation (Thanks to someone who seems to have deleted their account)  Fix   EJS_dontExtractBIOS  if the bios url has a \"\u002F\" in its path (Thanks to   @daguile )  Add jsdoc comments to compression.js (Thanks to   @gantoine )  Improve multi-disc handling for dosbox-pure (Thanks to   @daguile )  Added netplay over WebRTC (Thanks to   @S-Coding23 )  Fix screenshot return in EJS_onSaveState (Thanks to   @michael-j-green )  Fix bug in loadExternalFilesFixed function (Thanks to   @lxyongit )  Redo the SVG logos (Thanks to   @milktoastrat )  Add event for when game save is updated (Thanks to   @cryptonaus )  Support a fixed save flushing interval (Thanks to   @cryptonaus )  Update ja translation (Thanks to   @paln21 )  Refactor cache system (Thanks to   @michael-j-green )  Refactor decompression system (Thanks to   @michael-j-green )  Refactor download system (Thanks to   @michael-j-green )  Improve UI in development index.html (Thanks to   @298A-E9E3 )  Ability to disable beforeUnload event listener (Thanks to   @duanyu5871 )  Fix PSX labels (Thanks to   @joethun )  Fix save state text (Thanks to   @joethun )  Add support for dynamic cheat codes (Thanks to   @S-Coding23 )  Automatic core detection in the development index.html for Sega Mega Drive games (Thanks to   @298A-E9E3 )  Fix Sega Genesis control scheme (Thanks to   @mikhailv )  Add auto fire interval (Thanks to   @zees-dev )  Add Khmer localization (Thanks to   @Novsochetra )  Update Turkish Translation (Thanks to   @Notenlish )  Add exit confirmation prompt and exit callback functionality (Thanks to   @michael-j-green )  Fix localization for Quick Save and Quick Load (Thanks to   @leonardoman9 )  Add Ukrainian Translation (Thanks to   @MrSosige )  4.2.3  Bug fix release   Redo image capture features (Thanks to   @allancoding )  Fix issue with invalid button names (Thanks to   @michael-j-green )  Fix issues with canvas size  Update zh-CN translations (Thanks to   @incredibleIdea )  4.2.2   View Tree   Prioritize gameName over gameUrl for the local storage identifier  Fix CSS parsing when setting a background image (Thanks to   @kellenmace )  Add   EJS_dontExtractBIOS  option (Thanks to   @pjft )  Delete old screenshot file before saving a new one (Thanks to   @gantoine )  Add   saveSaveFiles  event for when save files are updated  Add   saveDatabaseLoaded  event, for when the   \u002Fdata\u002Fsaves  directory has been mounted  Add ability to set a system save interval  Add the ability to hide settings from the settings menu with the   EJS_hideSettings  option  Attempt to auto-detect system language and attempt to load that file.  Add   EJS_disableAutoLang  option to disable auto language detection in   loader.js  Update Japanese translation file (Thanks to   @noel-forester )  Add dropdown selection for gamepads  Correct N64 virtual gamepad inputs  Change path to   retroarch.cfg  Add   joystickInput  property for virtual gamepad buttons  Removed   this.listeners  Update Korean translation file (Thanks to   @SooHyuck )  Redo touchscreen detection (Thanks to   @allancoding )  Redo toolbar visibility method (Thanks to   @allancoding )  Add   dosbox_pure  core (requires threading)  Add toggle for direct keyboard input  Redo scrolling in settings menu  Redo about menu CSS  Add setting to enable\u002Fdisable mouse lock  Properly handle failed save states  Fix unknown axis events being discarded  Write core settings file before loading the core (Some core settings are required to be loaded from here on startup)  Add option to disable   alt  key when using direct keyboard input  Cleanup famicom controls  Fix setting gamepad axis to input values 16 to 23  Rework internal method of getting user settings, add   this.getSettingValue  function  Add Romanian translation file (Thanks to   @jurcaalexandrucristian )  Fix build stack size when building cores  Fix CHD support  4.2.1   View Tree  This was a bug-fix only release.   Core-fetch failsafe now fetches a pinned version (Thanks to   @gantoine )  Fixes video rotation on the arcade core (Thanks to   @allancoding )  Updated French   af-FR  translation (Thanks to   @t3chnob0y )  Fixes switching between cores.  Change: Localstorage settings are now stored by game instead of by system.  Fixed gamepad input for c-down.  Fixed RetroArch always assuming save is   .srm .  Fixed EJS exit event  Hide the \"save\u002Fload save files\" buttons if unsupported.  Corrects the order of the core list.  Corrects behaviour of the placement of bios\u002Fparent\u002Fpatch files.  Fixed rar decompression.  Fixed picodrive core (  sega32x )  Fixed libretro-uae core (  amiga )  4.2.0   View Tree  In my opinion, this is the most stable release we've had in a while. Many features added in this release were just side affects of fixing up some bugs.   Let same_cdi core handle zipped bios file directly (Thanks to   @pastisme )  Fix audio sliders\u002Fmute button (Thanks to   @n-at )  Add ability to rotate video (Thanks to   @allancoding )  Added persian   fa-AF  language (Thanks to   @iits-reza )  Added more catches for a start-game error  Fixed default webgl2 option  Organized settings menu, by dividing entries into sub-menus  Fixed the EmulatorJS exit button  Added the ability to internally add configurable retroarch.cfg variables  Fixed default settings being saved to localstorage  Fixed in browser SRM saves (finally)  Read save state from WebAssembly Memory  Fixed an issue when loading PPSSPP assets  Refactored the internal downloadFile function to be promised based instead of callback based  Added checks if core requires threads or webgl2  Added ability to switch between cores in the settings menu  Added the ability to enable\u002Fdisable threads if SharedArrayBuffer is defined  Added a PSP controller scheme for the control settings menu  Fixed the volume slider background height in firefox  Added handling for lightgun devices  Refactored the EmulatorJS   build-emulatorjs.sh  build script  Added   ppsspp  core  4.1.1   View Tree   Fixed 2xScaleHQ and 2xScaleHQ shaders (Thanks to   @n-at )  Added Vietnamese (  vi-VN ) (Thanks to   @TimKieu )  Disable CUE generation for the PUAE core (Thanks to   @michael-j-green )  Updated German translation (Thanks to   @jonas0b1011001 )  Add missing calls to translate (Thanks to   @angelmarfil )  Added Turkish (  tr-TR ) (Thanks to   @iGoodie )  Fixed Gamepad support for some older browsers (Thanks to   @ZhaoTonggang )  Default to webgl1 on lower end cores.  Added ability to switch between webgl1 and webgl2.  Check core compatibility with EmulatorJS.  Added core license to right-click menu.  Removed usage of   replaceAll .  Added the ability to change settings on game start crash.  Added   exit  button, to properly shutdown and save files.  Fixed mouse on mobile devices.  Modularized EmulatorJS.  Fixed WHLoader hdf roms.  Added support for   File  objects (Thanks to   @pastisme ).  4.0.12   View Tree   Fix scroll bar css (Thanks to   @allancoding )  Flip the context menu instead of going off the page  Add hooks for save files (Thanks to   @gantoine )  Add class for each virtual gamepad button  Add   EJS_forceLegacyCores  option  Add   EJS_noAutoFocus  (this is only for advanced developers, not likely an option you will use)  Added supported Amiga file extensions (Thanks to   @michael-j-green )  Display the file name of the ROM\u002Fdisk when using M3U lists (Thanks to   @michael-j-green )  Added vsync option  Added advanced shader configuration support (Thanks to   @n-at )  4.0.11   View Tree   Added the ability to disable localstorage using   EJS_disableLocalStorage . (Thanks to   @n-at )  Added the ability to trigger   EJS_emulator.displayMessage  with a duration. (Thanks to   @allancoding )   EJS_emulator.gameManager.getState  now returns a Uint8Array instead of a promise.  Fixed broken save states from the 4.0.10 release.  4.0.10   View Tree   Fixed bug with duplicate control inputs.  Fixed mobile settings menu positioning.  Ability to load custom files into the wasm instance.  Renamed the   mame2003  system to   mame .  Removed mame disclaimers on   mame2003  core.  Added VICE cores for C64, C128, VIC20, Plus\u002F4, and PET (Thanks to   @michael-j-green )  Added a padding between popup body and buttons.  Added ability to disabled cached databases.  Fixed screenshot for some cores.  Fixed game element not being focused after fullscreening.  Added missing Famicom controls.  Fixed volume slider shadow. (Thanks to   @allancoding )  4.0.9   View Tree   Repository history rewrite - expect faster cloning times.  Prevent Vice64 from creating cue files (Thanks to   @michael-j-green )  Chinese translation updated (Thanks to   @oyepriyansh )  Added button to open context menu (Thanks to   @andrigamerita )  Fixed menu bar text placement for items on the right.  Fixed a bug in safari where fullscreen would not resize the game element.  Fixed a bug in safari where the bottom menu would be visible on initial page load.  Fixed game rom filename showing as \"game\" when the game name is set.  Added legacy nintendo 64 cores for browsers that don't support webgl2.  4.0.8   View Tree   Fixed typo in virtual gamepad dpad.  Added updated desmume core.  Fixed key mapping (Thanks to   @allancoding )  Fixed adblock message (Thanks to   @allancoding )  Added   EJS_startButtonName  option.  Re-Added ability to drag and drop save states.  Fixed cheats menu.  Added popup message for Safari mobile users if game is not running.  Added   EJS_softLoad  option.  Added amiga core.  Added c64 core.  4.0.7   View Tree   Added rewind (Thanks to   @n-at )  Added slowdown (Thanks to   @n-at )  Fixed \"zone\" object in front of settings menu.  Fixed virtual gamepad alignment.  Add   EJS_fullscreenOnLoaded  option.  Add virtual gamepad toggle to the control menu (for touchscreen devices)  Fix gamepad ID showing as \"undefined\".  Added threaded cores.  Added joystick translations (Thanks to   @allancoding )  Fixed fullscreen button tooltip (Thanks to   @allancoding )  Added TurboGrafx-16, SuperGrafx, PC Engine, neo geo pocket, WonderSwan, PC-FX, and ColecoVision support. (Thanks to   @n-at )  Fixed cue file loading (Thanks to   @n-at )  Fixed ability to hide volume slider (Thanks to   @n-at )  Added new mame2003_plus core (now default mame2003 core)  Use keycodes instead of labels (Thanks to   @allancoding )  4.0.6   View Tree   Fixed n64 on iOS safari  virtual gamepads for atari2600, atari7800, lynx, jaguar, vb, 3do (Thanks to   @n-at )  control buttons for gba, vb, 3do, atari2600, atari7800, lynx, jaguar (Thanks to   @n-at )  Added   EJS_controlScheme  (Thanks to   @n-at )  Added Fast Forward  4.0.5   View Tree   Added   pcsx_rearmed  core  Made   pcsx_rearmed  core the default   psx  core (better compatibility)  Added   fbneo  core  Made   fbneo  core the default   arcade  core (better compatibility)  Added picodrive core (sega32x)  Cleaned up documentation  Fixed\u002Fupdated rar de-compression  Added segaMD, segaCD, sega32x button labels and virtual gamepad (Thanks to   @n-at )  Added ability to use threads (pre compiled cores not yet available)  Fixed reversed gamepad button events (down was up, up was down)  Fixed Gamepad axis release not triggering  Add    highly beta  psp core - see readme  4.0.4   View Tree   Fix cheats \"x\" button  Optimize memory usage  Added ability to set urls to blob\u002Farraybuffer\u002Fuint8array if needed  4.0.3   View Tree   Remove RetroArch messages  Center video at top  4.0.2   View Tree   Add link to RetroArch License on about page  Fix gamepad support for legacy browsers  4.0.1   View Tree  Complete application re-write. Everything changed. Although some changes to note are:   Optimization for smaller screens.  No more dead code.  Fix Gamepad for firefox.  Store srm in browser.  Ability to import\u002Fexport srm files.  No more old cores  And much much more was changed...  3.1.5   View Tree   Fixed iOS bug for iPads  Added netplay! (only working on old cores)  3.1.0   View Tree   Added ability to drag and drop save states.  Fixed some \"update\" and \"cancel\" and \"close\" button confustion  Removed save state retroarch messages  Beta netplay cleanup (not yet working)  (Theoretically) fixed a bug that did not allow iOS devices to work  3.0.5   View Tree   Fixed screen recording on devices that do not support getUserMedia api.  Added C label buttons to nintendo 64 virtual gamepad.  Fixed EJS_color bug.  Savestates are pulled from the core itself, to always be correct.  Several new cores. (a5200, beetle_vb, desmume2015, fbalpha2012_cps1, fbalpha2012_cps2, fceumm, gambatte, mame2003, mednafen_psx, mednafen_psx_hw, melonds, mgba, mupen64plus_next, nestopia, snes9x)  D-pad for virtual gamepad.  Updated translation files to include new menu options.  Ability to add more than one zone object to virtual gamepads.  Added ability to set custom menu options.  Virtual gamepad left handed mode.  Fixed Screen record svg.  Updated svg icons.  Cache \"clear all\" button.  Cache button moved to menu bar.  Added feature that will display the current downloaded size when the content length is not available.  2.3.9   View Tree   Fixed incorrect variable referencing when update bios download data callback.  Fixed rom storage size limits.  Fixed download percent not showing with some files.  2.3.8   View Tree   Remove broken shader.  Add download percent message.  Fixed UI \"saving state\" message not going away.  2.3.7   View Tree   Add more shaders.  Add bold fontsize option to custom virtual gamepad settings.  No longer set \"normalOptions\" from localization file.  2.3.6   View Tree   Remove default control mappings for gamepads.  Upgraded invalid character regex to catch more characters.  2.3.5   View Tree   Use regex to detect and replace invalid characters in filename\u002Fgamename settings.  2.3.4   View Tree   Add new arcade core.  Fix patch file game id set bug.  2.3.4   View Tree   Add new arcade core.  2.3.3   View Tree   Make version in loader.js reasonable.  Created function to return the game id to prevent unnecessary data stored.  2.3.2   View Tree   Fix reference error.  Fix bug in custom virtual gamepad processor where if value is set to 0 it will see that as the value being missing.  2.3.1   View Tree   Use let instead of var.  2.3.0   View Tree   Added ability to customize virtual gamepad UI.  Fixed bug where shader is not set on start.  2.2.9   View Tree   Added feature to save save files to indexeddb every 5 minutes.  2.2.8   View Tree   Re-write gamepad handler.  2.2.7   View Tree   Removed un-needed FS proxy functions.  2.2.6   View Tree   Added fps counter.  Fixed gba core aspect.  2.2.5   View Tree   Added ability to set custom control mappings.  Added ability to set custom default volume value.  Fixed gamepad axis as button, gamepad varaible compared to incorrect value.  Added ability to hide\u002Fshow menu\u002Fcontext menu buttons.  Added ability to set game url to other data types.  2.2.3   View Tree   Fixed rar unarchiving function reference.  Updated rar header detection.  Removed netplay.  2.2.1   View Tree   Added core menu options for new cores.  Added new mame2003 core.  Added support for debug emscripten setting for new cores.  2.0.1   View Tree   Control mapping for beta cores.  Updated beta cores.  Beta cores now the default option!  Added a5200 core.  Fixed save state for new n64 core.  1.2.2   View Tree   Moved virtual gamepad menu button to the top left as 3 lines.  Added screen orientation lock.  Added beta n64 core!  1.2.1   View Tree   Updated beta core files.  1.1.6   View Tree   Replaced axios module with custom script.  Added pause\u002Fplay for beta cores.  Sepperated css into its own file.  Renamed emu-min.js to emulator.min.js.  1.1.5   View Tree   Cleaned up fetch error function.  Cleaned up virtual gamepad event listeners.  Add code of conduct.  1.1.2   View Tree   Fixed error where mame files were misnamed.  Fixed bug where variable referenced was not defined in loader.js.  Added .gitignore  Added nodejs script to minify js files.  Added audio to screen recording.  Removed lots of dead code from emulator.js file.  Update axios module.  Added CORS error message  Update nodejs buffer module.  1.1.0   View Tree   Added minify feature.  Added emulatorjs logo.  Added beta nds and gb core.  Fixed bug where when wasm was supported on the beta cores and not the old cores, a network error would appear if not using beta.  Added volume setting and cheats to beta cores.  1.0   View Tree   Official release of the beta cores.  Ability to use beta cores in production.  Ability to use the old emulatorjs netplay server.  Set screen recording out file name to gamename if present.  Set screenshot out file name to gamename if present.  Fixed virtual gamepad bug where a function was referenced to as an array.  0.4.26   View Tree   Sepperated emulator.js file into 2 files.  Added support for a custom netplay server.  Fixed netplay room password input bug.  Fixed bug on iOS where virtual gamepad zone was un-responsive.  Added save state location feature.  Added mame core setting.  Added beta cores!  Added localization.  Re-wrote virtual gamepad code.  Added EJS_terminate function.  Exposed simulate_input function to window.  Update webrtc adapter.  0.4.25   View Tree   Moved load state on start from loader.js file to emulator.js file.  Moved data path function from loader.js file to emulator.js file.  Added ability to set custom path to data through   EJS_pathtodata  variable.  Added support for custom paths.  Expose the module and loader to window.  Added   EJS_startOnLoaded  to start the emulator on load.  Added quick save state slots.  Added save state message.  Only show save state slot in settings when save states are supported.  Added ds pointer lock.  Added menu button to virtual gamepad. Menu will only open when clicked on mobile.  Created licenese  Created official emulatorjs website.  0.4.24   View Tree   Deobsfocuted emulator.js and loader.js files to the most of my extent.  Added quick save\u002Fload hotkeys.  Added ability to use gamepad axis as button.  Fixed typo in controls title.  Only show needed inputs per system in control settings.  Re-write the loader.js file.  Exposed some variables to window.  Cleaned up context menu code.  Cleaned up some syntax in emulator.js file.  Declared   EJS_AdUrl  through loader.js file.  Fixed bug where mapping an axis as a button didn't work.  Added missing legacy n64 core.  Updated n64 core.  0.4.23-07   View Tree   Removed not needed code.  Added reset button to control settings.  Added clear button to control settings.  Added   EJS_AdUrl  option, the ability to add an ad to the emulator.  Cleaned up some file fetching.  Fixed RAR unarchiving.  0.4.23-05   View Tree   No longer cache games with the protocols of   file: , and   chrome-extension: .  Changed default keymappings.  Added screen recording button.  0.4.23-04   View Tree   Added mame2003, snes2002, snes2005, snes2010, and vbanext cores.  Added asmjs for all supported cores.  0.4.23-03   View Tree   Start loader.js deobsfocuting.  Deobsfocute extractzip.js.  Added   EJS_gameName , the ability to change the file name of save states.  0.4.23-02   View Tree   Start emulator.js deobsfocuting.  0.4.23-01   View Tree   Added support for loading \"blob:\" urls.  Added support for loading state on game start.  0.4.23   View Tree   Added update available message.  Fixed a bug where the 'x' from the ad iframe was still visible on game start.  Added a2600 and mame cores.  Remove visible 'x'  Add rar extraction support.  0.4.19   View Tree   Added support for 32x, 3do, a7800, arcade, bluemsx, jaguar, lynx, ngp, pce, saturn, sega, segacd, and ws cores.  Initial release   View Tree   Support for unzipping zip files.  Support for unzipping 7zip files.  Support for vb, snes, psx, nes, nds, n64, gba, and gb systems. Only support for WASM.",{"id":294,"path":295,"dir":18,"title":296,"description":7,"keywords":297,"body":298},"content:1.docs:12.roadmap.md","\u002Fdocs\u002Froadmap","Roadmap",[],"  Roadmap    Netplay  (multiplayer over the web) - We are currently working on this feature.  Our Github milestones page can be found   here .  Note: These are goals are not in any specific order, nor do they have estimated dates to completion. The only thing that is for certain is that they will be completed sooner as more people contribute to this and   libretro's  projects.",{"id":300,"path":301,"dir":18,"title":302,"description":7,"body":303},"content:1.docs:13.contributors.md","\u002Fdocs\u002Fcontributors","Contributors","  \na { display: inline-block; }\n    Contributors      Owner    Main Contributor              Co-Owner    Maintainer, Along with Various Fixes and Additions              Back-End Developer    RetroArch Core Development                  External Project Maintainer                  Documentation Design                \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    ",{"id":305,"path":306,"dir":18,"title":307,"description":7,"keywords":308,"body":309},"content:1.docs:14.FAQ.md","\u002Fdocs\u002Ffaq","FAQ",[],"  FAQ   Q:  Why was I re-directed\u002Fsent to this page?    A:  Because the devs don't have the time to personally help every person out there, and your issue is likely documented here.   Q:  How can I embed this using Replit    A:  You don't. Replit does not support this.   Q:  I'm getting \"Network Error\" when trying to play. What do I do?    A:  Try the following:    Use a web server . You cannot just open the HTML file.  Clear your cache.  Update your data folder.  If using GitHack or jsDelivr, use   the cdn . Binary core files are no longer provided in the repository.  If using Replit, don't. Replit doesn't support this and will block certain files.  If the issue still occurs, open an issue containing a screenshot of the network tab within dev-tools.   Q:  Why is my PlayStation game crashing?    A:  The game is likely too big to be run in the web browser. This is a WebAssembly limitation.   Q:  Is netplay supported? How do I enable netplay?    A:  Netplay is not currently supported, but it is hoped to be coming soon. Development is in progress.   Q:  How do I embed this on Google Sites?    A:    Embedding on Google Sites   Q:  How do I embed this on React?    A:    Embedding in React   Q:  I'm encountering CORS errors while trying to run the emulator. How can I resolve this?    A:  CORS (Cross-Origin Resource Sharing) errors occur when a web page running in one domain tries to access resources (like scripts or assets) from another domain. To resolve CORS errors. Ensure the \"Access-Control-Allow-Origin\" header is set on the remote server, and is the correct value.   Q:  I'm seeing an error that says \"SharedArrayBuffer is not defined.\" How do I fix this?    A:  The \"SharedArrayBuffer is not defined\" error will occur if the following headers are not set. This is because the SharedArrayBuffer feature is very powerful. Ensure you are using https and that your server is sending the headers below.     Cross-Origin-Opener-Policy  :   same-origin\n   Cross-Origin-Embedder-Policy  :   require-corp\n   Q:  I'm getting poor performance in Microsoft Edge    A:  In Microsoft Edge, there is a setting called 'enhanced security' which when enabled disables just in time (JIT) compiling WASM code for security reasons (JIT can be used as an attack vector) and instead switches to an interpreter, which is far slower.  Settings for Edge's enhanced security can be found by navigating to   edge:\u002F\u002Fsettings\u002Fprivacy\u002Fsecurity?search=enhance  (note enhanced security is not enabled by default, but may be enabled manually, or by school or corporate policies).  We don't recommend disabling enhanced security, but the domain hosting EmulatorJS can be excluded from enhanced security by navigating to   edge:\u002F\u002Fsettings\u002Fprivacy\u002Fsecurity\u002FsecureModeSites  and clicking \"Add site\" next to \"Never use enhanced security for these sites\".    Note : Other browsers such as Chrome, Firefox, and Vanadium have similar security features that disable JIT (JIT is only blocked by default in Vanadium), and will also need to have an exclusion added for any site containing EmulatorJS.   Q:  Is this linuxservers EmulatorJS docker project?    A:  No. But Gaseous is great alternative:   Gaseous   Q:  Is there a docker version of this project?    A:  The sponsored docker version of this project is the \"gaseous\" project. You can find the project   here  on github, and you can join the gaseous discord server   here .   Q:  Why is the demo the only official EmulatorJS instance?    A:  This project isn't meant to be a website to go to and play games. This project is meant for developers to use to embed into their site to host games. If a feature isn't on the demo that is found in other places of the project, it's because its a   demo .   Q:  What should I include when I open an issue?    A:  You should include as much as you know. The issue, and logs. If you don't have access to the console, there is likely a reason, and it is likely that reason is also causing an issue with other things.   Example of a perfectly opened issue   Q:  My controller isn't detecting buttons or joysticks properly, how can I work around this?    A:  Try the following:   Specific to Windows 11    Software : Steam Installed with \"Xbox Extended Feature Support Driver\" installed \u002F enabled.   Controller Configuration :   Steam   Steam > Settings > Controller > (Select Controller)  Enable \"Steam Input for Generic Controllers\"  Ensure \"Xbox Extended Feature Support Driver\" is installed (If not already installed, this will require a reboot).  Desktop Layout > Edit > Edit Layout -    Note : This translates the buttons and joysticks to keysstrokes on the keyboard which is detected by EmulatorJS properly.   Joysticks : Set to Directional Pad option, set to WSAD and \u002F or IJKL for multiple joysticks.   DPad : Set to Directional Pad option, set to to arrow keys.   Other Controller Buttons \u002F Triggers : Set to Directional Pad option, set to keys as makes sense.   EmulatorJS \u002F Romm Configuration :\n   Load ROM.  Select \"Controller Settings\" at bottom of screen EmulatorJS screen.   Set Joysticks : Press up on joystick, this should translate to W \u002F I, do this for the rest of the directions as needed.   Set DPAD : Press up on DPAD, do this for rest of the directions.   Other Controller Buttons \u002F Triggers : Press buttons to map as needed.    Note : Ensure none of the keyboard buttons are being used for multiple joypad options otherwise multiple joypad buttons \u002F triggers \u002F joysticks will be actioned simultaneously.  Close and play ROM.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":311,"path":312,"dir":7,"title":313,"description":314,"keywords":315,"body":316},"content:2.docs4devs:1.index.md","\u002Fdocs4devs","Developers","The following are some tools for developers working to improve the emulator",[],"  Developers  The following are some tools for developers working to improve the emulator  To enable basic utilities, such as logging and pulling the not-minified files, you want to enable   EJS_DEBUG_XX .  Example:     EJS_DEBUG_XX   =   true  ;\n  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":318,"path":319,"dir":320,"title":321,"description":322,"keywords":323,"body":324},"content:2.docs4devs:2.contribute.md","\u002Fdocs4devs\u002Fcontribute","docs4devs","How To Contribute","There are several ways to contribute, be it directly to helping develop features for EmulatorJS, update the documentation, media assets or heading over to libretro and helping them develop the emulator cores that make the magic happen.",[],"  How To Contribute  There are several ways to contribute, be it directly to helping develop features for EmulatorJS, update the documentation, media assets or heading over to libretro and helping them develop the emulator cores that make the magic happen.   EmulatorJS, take a look through the   issues  on github and try to help out.  Documentation   github page .  Just wanna donate? That'd help too!  Donate to:   libretro  Donate to:   EmulatorJS",{"id":326,"path":327,"dir":320,"title":328,"description":329,"keywords":330,"body":331},"content:2.docs4devs:3.building.md","\u002Fdocs4devs\u002Fbuilding","Building EmulatorJS","Since all other files are just written in JavaScript, the only part that needs building is the RetroArch-web cores.",[],"  Building EmulatorJS  Since all other files are just written in JavaScript, the only part that needs building is the   RetroArch-web cores .  After that, deploy EmulatorJS as stated in   Getting Started .",{"id":333,"path":334,"dir":320,"title":335,"description":336,"keywords":337,"body":340},"content:2.docs4devs:4.buildingRAW.md","\u002Fdocs4devs\u002Fbuildingraw","Building RetroArch Cores","Instructions have only been confirmed working for Debian and Fedora. Ubuntu, and Ubuntu based distros are often iffy.",[338,339],"LibRetro \"Cores\"","WASM","  Building RetroArch Cores   Instructions have only been confirmed working for   Debian  and   Fedora . Ubuntu, and Ubuntu based distros are often iffy.    Debian:    Fedora:      To install emscripten, run this command. Note this will only temporarily add emscripten to your path.   Follow the on screen directions when it finishes to make this permanent.     cd  ; &&   \\\n   git   clone   https:\u002F\u002Fgithub.com\u002Femscripten-core\u002Femsdk.git   .emsdk   &&   \\\n   cd   .emsdk   &&   .\u002Femsdk   install   latest   &&   .\u002Femsdk   activate   latest   &&   source   .\u002Femsdk_env.sh\n     It is   highly recommended  to use   this script  to compile the cores. It will compile every core and package them for you.    LibRetro \"Cores\"    Clone  the repository.     git   clone   https:\u002F\u002Fgithub.com\u002Flibretro\u002Flibretro-fceumm.git\n    The next steps depend on whether or not you have a   Makefile.libretro  file.    Navigate to the folder with the makefile. If it is not in the base directory, look for a folder named libretro.  With   Build with:     emmake   make   -f   Makefile.libretro   platform=emscripten\n   Without   Build with:     emmake   make   platform=emscripten\n    Copy the   .bc  file to the RetroArch   \u002Fdist-scripts\u002F  directory and continue to build the wasm files.    WASM    Clone  the repository, from the next branch.     git   clone   https:\u002F\u002Fgithub.com\u002FEmulatorJS\u002FRetroArch.git   --branch   next\n    Navigate to   \u002Femulatorjs\u002F    Build with:     emmake   .\u002Fbuild-emulatorjs.sh\n    Builds will appear in   ..\u002FEmulatorJS\u002Fdata\u002Fcores .   html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":342,"path":343,"dir":320,"title":344,"description":345,"keywords":346,"body":347},"content:2.docs4devs:5.control-mapping.md","\u002Fdocs4devs\u002Fcontrol-mapping","Control Mapping","Custom controls can be set with the EJS_Settings variable",[],"  Control Mapping  Custom controls can be set with the   EJS_Settings  variable  An example of what   EJS_Settings  would be set to is below      EJS_defaultControls   =   {\n           0  : {\n               0  : {\n                   'value'  :   'x'  ,\n                   'value2'  :   'BUTTON_2'\n               },\n               1  : {\n                   'value'  :   's'  ,\n                   'value2'  :   'BUTTON_4'\n               },\n               2  : {\n                   'value'  :   'v'  ,\n                   'value2'  :   'SELECT'\n               },\n               3  : {\n                   'value'  :   'enter'  ,\n                   'value2'  :   'START'\n               },\n               4  : {\n                   'value'  :   'up arrow'  ,\n                   'value2'  :   'DPAD_UP'\n               },\n               5  : {\n                   'value'  :   'down arrow'  ,\n                   'value2'  :   'DPAD_DOWN'\n               },\n               6  : {\n                   'value'  :   'left arrow'  ,\n                   'value2'  :   'DPAD_LEFT'\n               },\n               7  : {\n                   'value'  :   'right arrow'  ,\n                   'value2'  :   'DPAD_RIGHT'\n               },\n               8  : {\n                   'value'  :   'z'  ,\n                   'value2'  :   'BUTTON_1'\n               },\n               9  : {\n                   'value'  :   'a'  ,\n                   'value2'  :   'BUTTON_3'\n               },\n               10  : {\n                   'value'  :   'q'  ,\n                   'value2'  :   'LEFT_TOP_SHOULDER'\n               },\n               11  : {\n                   'value'  :   'e'  ,\n                   'value2'  :   'RIGHT_TOP_SHOULDER'\n               },\n               12  : {\n                   'value'  :   'tab'  ,\n                   'value2'  :   'LEFT_BOTTOM_SHOULDER'\n               },\n               13  : {\n                   'value'  :   'r'  ,\n                   'value2'  :   'RIGHT_BOTTOM_SHOULDER'\n               },\n               14  : {\n                   'value'  :   ''  ,\n                   'value2'  :   'LEFT_STICK'  ,\n               },\n               15  : {\n                   'value'  :   ''  ,\n                   'value2'  :   'RIGHT_STICK'  ,\n               },\n               16  : {\n                   'value'  :   'h'  ,\n                   'value2'  :   'LEFT_STICK_X:+1'\n               },\n               17  : {\n                   'value'  :   'f'  ,\n                   'value2'  :   'LEFT_STICK_X:-1'\n               },\n               18  : {\n                   'value'  :   'g'  ,\n                   'value2'  :   'LEFT_STICK_Y:+1'\n               },\n               19  : {\n                   'value'  :   't'  ,\n                   'value2'  :   'LEFT_STICK_Y:-1'\n               },\n               20  : {\n                   'value'  :   'l'  ,\n                   'value2'  :   'RIGHT_STICK_X:+1'\n               },\n               21  : {\n                   'value'  :   'j'  ,\n                   'value2'  :   'RIGHT_STICK_X:-1'\n               },\n               22  : {\n                   'value'  :   'k'  ,\n                   'value2'  :   'RIGHT_STICK_Y:+1'\n               },\n               23  : {\n                   'value'  :   'i'  ,\n                   'value2'  :   'RIGHT_STICK_Y:-1'\n               },\n               24  : {\n                   'value'  :   '1'\n               },\n               25  : {\n                   'value'  :   '2'\n               },\n               26  : {\n                   'value'  :   '3'\n               },\n               27  : {\n                   'value'  :   'add'\n               },\n               28  : {\n                   'value'  :   'space'\n               },\n               29  : {\n                   'value'  :   'subtract'\n               },\n           },\n           1  : {},\n           2  : {},\n           3  : {}\n       }\n  The first layer of variables are which player it's for.   0 : Player 1   1 : Player 2   2 : Player 3   3 : Player 4  The second layer, within all the controllers are the default keycodes. The array below contains the titles for all the letters.      {\n       0  :   'B'  ,\n       1  :   'Y'  ,\n       2  :   'SELECT'  ,\n       3  :   'START'  ,\n       4  :   'UP'  ,\n       5  :   'DOWN'  ,\n       6  :   'LEFT'  ,\n       7  :   'RIGHT'  ,\n       8  :   'A'  ,\n       9  :   'X'  ,\n       10  :   'L'  ,\n       11  :   'R'  ,\n       12  :   'L2'  ,\n       13  :   'R2'  ,\n       14  :   'L3'  ,\n       15  :   'R3'  ,\n       19  :   'L STICK UP'  ,\n       18  :   'L STICK DOWN'  ,\n       17  :   'L STICK LEFT'  ,\n       16  :   'L STICK RIGHT'  ,\n       23  :   'R STICK UP'  ,\n       22  :   'R STICK DOWN'  ,\n       21  :   'R STICK LEFT'  ,\n       20  :   'R STICK RIGHT'  ,\n       24  :   'QUICK SAVE STATE'  ,\n       25  :   'QUICK LOAD STATE'  ,\n       26  :   'CHANGE STATE SLOT'  ,\n       27  :   'FAST FORWARD'  ,\n       28  :   'REWIND'  ,\n       29  :   'SLOW MOTION'\n   }\n  From here, you can set the default button   value : The default mapping for the keyboard.   value2 : The default mapping for a connectable controller.  For Keyboards, get the   event.key  property of the default key you want to choose.   This tool  can tell you the key name.  For Controllers, the keycode is unique to the controller being used. You can use the control setting screen to find what the code is for your controller.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":349,"path":350,"dir":320,"title":351,"description":352,"keywords":353,"body":357},"content:2.docs4devs:6.virtual-gamepad-settings.md","\u002Fdocs4devs\u002Fvirtual-gamepad-settings","Virtual Gamepad Settings","If you need another layout for the virtual gamepad, you can map it yourself.",[354,355,356],"Values needed for zone","Values needed for dpad","Values needed for button","  Virtual Gamepad Settings  If you need another layout for the virtual gamepad, you can map it yourself.     Pull requests adding a mapping or improving a mapping are encouraged!  Example:      EJS_VirtualGamepadSettings   =   [\n       {\n           type:   \"button\"  ,\n           text:   \"Y\"  ,\n           id:   \"y\"  ,\n           location:   \"right\"  ,\n           left:   40  ,\n           bold:   true  ,\n           input_value:   9\n       },\n       {\n           type:   \"button\"  ,\n           text:   \"X\"  ,\n           id:   \"X\"  ,\n           location:   \"right\"  ,\n           top:   40  ,\n           bold:   true  ,\n           input_value:   1\n       },\n       {\n           type:   \"button\"  ,\n           text:   \"B\"  ,\n           id:   \"b\"  ,\n           location:   \"right\"  ,\n           left:   81  ,\n           top:   40  ,\n           bold:   true  ,\n           input_value:   8\n       },\n       {\n           type:   \"button\"  ,\n           text:   \"A\"  ,\n           id:   \"a\"  ,\n           location:   \"right\"  ,\n           left:   40  ,\n           top:   80  ,\n           bold:   true  ,\n           input_value:   0\n       },\n       {\n           type:   \"zone\"  ,\n           location:   \"left\"  ,\n           left:   \"50%\"  ,\n           top:   \"50%\"  ,\n           joystickInput:   true  ,\n           color:   \"blue\"  ,\n           inputValues: [  19  ,   18  ,   17  ,   16  ]\n       },\n       \u002F\u002FNote- the dpad and the zone will overlap in this example, this is just to show what it should look like.\n       {\n           type:   \"dpad\"  ,\n           location:   \"left\"  ,\n           left:   \"50%\"  ,\n           right:   \"50%\"  ,\n           joystickInput:   false  ,\n           inputValues: [  4  ,   5  ,   6  ,   7  ]\n       },\n       {\n           type:   \"button\"  ,\n           text:   \"Start\"  ,\n           id:   \"start\"  ,\n           location:   \"center\"  ,\n           left:   60  ,\n           fontSize:   15  ,\n           block:   true  ,\n           input_value:   3\n       },\n       {\n           type:   \"button\"  ,\n           text:   \"Select\"  ,\n           id:   \"select\"  ,\n           location:   \"center\"  ,\n           left:   -  5  ,\n           fontSize:   15  ,\n           block:   true  ,\n           input_value:   2\n       }\n   ]\n  Types:   zone : The gamepad joystick.   d-pad : A d-pad object.   button : just a button.  Values needed for   zone   type  Must be set to   zone .   location : The area to place the joystick. Must be   top ,   left ,   center , or   right .   left : The css left value (must be in a percentage).   right : The css right value (must be in a percentage).   joystickInput : Set this to true if the input values are   [19, 18, 17, 16] . This should only be set to true for analog inputs.   inputValues : The values to input into the emulator. Normally either   [19, 18, 17, 16]  or   [4, 5, 6, 7] .   color : Sets the color of the zone object. Default:   red .  Values needed for   dpad   type  must be set to   dpad .   location : The area to place the dpad. Must be   top ,   left ,   center , or   right .   left : the css left value (must be in a percentage).   right : the css right value (must be in a percentage).   joystickInput : Set this to true if the input values are   [19, 18, 17, 16] . This should only be set to true for analog inputs. Note that the dpad does not support analog values and the buttons are either down or up.   inputValues : The values to input into the emulator. Normally either   [19, 18, 17, 16]  or   [4, 5, 6, 7] .  Values needed for   button   type  must be set to   button .   location : The area to place the joystick. Must be   top ,   left ,   center , or   right .   text : The inner text of the button.   block : Will make the button appear as a block.   left  (optional): The css left value. Must be a number. Value is in   px .   right  (optional): The css right value. Must be a number. Value is in   px .   top  (optional): The css top value. Must be a number. Value is in   px .   bold  (default:   false ): Will set the text in the button to be bold. Value is in   px .   fontSize  (default:   30 ): Will set the text size of the button text. Value is in   px .   id : The ID of the button. Must be unique.   input_value : The input value. Available options can be found   here .  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":359,"path":360,"dir":320,"title":361,"description":362,"keywords":363,"body":366},"content:2.docs4devs:7.cores.md","\u002Fdocs4devs\u002Fcores","Cores","This page will tell you the backend emulator for each core.",[364,365],"Available Cores","Unavailable cores (that reasons are known)","  Cores  This page will tell you the backend emulator for each core.  Available Cores     fceumm : default   nes  core    nestopia :   nes  core    snes9x : default   snes  core    bsnes :   snes  core    gambatte : default   gb  core    mgba : default   gba  core    beetle_vb : default   vb  core    melonds : default   nds  core    desmume2015 :   nds  core    desmume :   nds  core    a5200 : default   a5200  core    mame2003_plus :   mame2003  core    mame2003 : default   mame2003  core    fbneo : default   arcade  core    fbalpha2012_cps1 :   arcade  core    fbalpha2012_cps2 :   arcade  core    pcsx_rearmed : default   psx  core    mednafen_psx_hw :   psx  core    virtualjaguar : default   jaguar  core    handy : default   lynx  core    yabause : default   segaSaturn  core   genesis_plus_gx : default    segaMD ,    segaGG , and    segaCD  core   genesis_plus_gx_wide :    segaMD ,    segaGG , and    segaCD  core    mupen64plus_next : default   n64  core    parallel-n64 :   n64  core    opera : default   3do  core    prosystem : default   atari7800  core    stella2014 : default   atari2600  core    picodrive : default   sega32x  core    smsplus : default   segaMS  core    vice_x64sc : default   c64  core    vice_x128 : default   c128  core    vice_xpet : default   pet  core    vice_xplus4 : default   plus4  core    vice_xvic : default   vic20  core    puae : default   amiga  core    gearcoleco : default   coleco  core   mednafen_pce : default   pce  core   mednafen_pcfx : default   pcfx  core   mednafen_ngp : default   ngp  core   mednafen_wswan : default   ws  core   same_cdi :   arcade  core   dosbox_pure : default   dos  core    ppsspp : default   psp  core    azahar : default   3ds  core  Unavailable cores (that reasons are known)    Dolphin (Wii\u002FGamecube) . One frame per 5 seconds with an RTX 5090 + 9950X3D.",{"id":368,"path":369,"dir":320,"title":370,"description":371,"keywords":372,"body":375},"content:2.docs4devs:8.minifying.md","\u002Fdocs4devs\u002Fminifying","Minifying","Before pushing the script files onto your production server it is recommended to minify them to save on load times as well as bandwidth.",[373,374],"Requirements","Steps","  Minifying  Before pushing the script files onto your production server it is recommended to minify them to save on load times as well as bandwidth.   Requirements     NodeJS   Steps   Open a terminal in the root of the project.  Install the dependencies with:     npm   i\n  Start the minification with:     node   run   minify\n  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":377,"path":378,"dir":320,"title":379,"description":380,"keywords":381,"body":386},"content:2.docs4devs:9.netplay.md","\u002Fdocs4devs\u002Fnetplay","EmulatorJS Netplay Server Setup Guide","Step-by-step instructions to set up your own EmulatorJS netplay server.",[27,382,383,384,385],"Server Setup","Website Integration","Sharing Your Server","Troubleshooting","  EmulatorJS Netplay Server Setup Guide  Step-by-step instructions to set up your own EmulatorJS netplay server.  Prerequisites  Before beginning ensure you have a netplay server to use or host your own.  Server Setup  The EmulatorJS Netplay server is maintained in a separate repository.  \nGo clone the repository and follow its instructions:     git   clone   https:\u002F\u002Fgithub.com\u002FEmulatorJS\u002FEmulatorJS-Netplay.git\n   cd   EmulatorJS-Netplay\n   Follow the README in the repository for installation and running instructions.   Website Integration  In your JavaScript configuration file:    Set a Unique Game ID     EJS_gameID   =   1  ;   \u002F\u002F Must be unique per game on your website\n    Configure Server Settings   Add or remove ICE servers as needed for your specific requirements.\nThese are just examples of free, open-source servers.     EJS_netplayServer   =   'https:\u002F\u002FyourIP:port#'  ;\n   EJS_netplayICEServers   =   [\n       { urls:   'stun:stun.l.google.com:19302'   },\n       { urls:   'stun:stun1.l.google.com:19302'   },\n       { urls:   'stun:stun2.l.google.com:19302'   },\n       { urls:   'stun:stun.nextcloud.com:3478'   },\n       { urls:   'turn:openrelay.metered.ca:80'  , username:   'openrelayproject'  , credential:   'openrelayproject'   },\n       { urls:   'turn:openrelay.metered.ca:443'  , username:   'openrelayproject'  , credential:   'openrelayproject'   }\n   ];\n   You can visit   https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FWebRTC_API\u002FProtocols  for more information on what these servers are used for.   Sharing Your Server  To allow friends to connect to your server over the internet, you need to configure your firewall and router.  Firewall Configuration  Windows   Search for   \"Windows Defender Firewall with Advanced Security\"  Navigate to   \"Inbound Rules\"  Click   \"New Rule...\"  Select   \"Port\"  and follow prompts to allow TCP traffic for the port used by your server (default   3000 )  Linux (using ufw)     sudo   ufw   allow   3000\u002Ftcp\n  Port Forwarding    Find Your Local IP Address    Windows:  Run   ipconfig  in Command Prompt, look for \"IPv4 Address\"   Linux:  Run   hostname -I  in terminal   Access Router Admin Panel   Open web browser and navigate to your router admin page   Configure Port Forwarding   Create a rule with these settings:\n    Application Name:  Netplay Server   External\u002FStart Port:  3000   Internal\u002FEnd Port:  3000   Protocol:  TCP   Device IP:  Your computer's local IP address  Share Connection Details    Find Your Public IP   Google search: \"what is my IP\"  Copy the displayed IP address   Give the Connection Details to Friends   Format:   [Your Public IP]:3000  Example:   123.45.67.89:3000   Troubleshooting   Ensure Node.js is installed  Verify firewall rules are correctly configured  Check that port forwarding is set up on your router  Confirm your public IP address is current  Make sure the server is running before attempting connections  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":388,"path":389,"dir":320,"title":390,"description":391,"keywords":392,"body":397},"content:2.docs4devs:10.dynamic-cheat-codes.md","\u002Fdocs4devs\u002Fdynamic-cheat-codes","Dynamic Cheats","EmulatorJS allows you to load cheat codes dynamically from JSON files.",[393,394,395,396],"1. Create a Cheats Folder","2. Add Your JSON Files","3. Update Your Configuration","How It Works","  Dynamic Cheats  EmulatorJS allows you to load cheat codes dynamically from JSON files.  1. Create a Cheats Folder  First, you need a directory on your web server to host your cheat files.    Example:    \u002Femulatorjs\u002Fcheats\u002F  2. Add Your JSON Files  Create a JSON file for each system. The filename   must  match the core name used in your configuration (e.g.,   nes.json  for the NES core,   snes.json  for SNES).  JSON Structure  The JSON file should use the game's title as the key, followed by an array of objects containing the description and the cheat code.   Example: nes.json     { \n    \"Super Mario Bros.\"  : [\n       {   \"desc\"  :   \"Super jump\"  ,   \"code\"  :   \"TPZLTG\"   },\n       {   \"desc\"  :   \"Mega-jump\"  ,   \"code\"  :   \"APZLGG\"   }\n     ],\n    \"The Legend of Zelda\"  : [\n       {   \"desc\"  :   \"Infinite Health\"  ,   \"code\"  :   \"SZLZZZ\"   }\n     ]\n   }\n  3. Update Your Configuration  In your main EmulatorJS configuration file, add the path to your cheats   folder  (do not link directly to the   .json  file).  window.EJS_cheatPath = \"\u002Femulatorjs\u002Fcheats\u002F\";  How It Works    Matching:  EmulatorJS will attempt to match the name of the loaded game file to the keys in your JSON. For example, if your ROM file is named   super-mario.nes , it will successfully match with the entry   \"Super Mario Bros.\"  in your JSON.   Manual Fallback:  If a system or specific game is not found in your JSON files, you can still use the emulator's built-in menu to add cheats manually as usual or select the correct game from the list.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":399,"path":400,"dir":7,"title":401,"description":7,"keywords":402,"body":7},"content:editor.md","\u002Feditor","Editor",[],{"id":404,"path":405,"dir":7,"title":406,"description":7,"keywords":407,"body":408},"content:index.md","\u002F","Home",[],"     EmulatorJS   Easily embed an emulator into your website.     Fully Customizable  Easy to Embed  Open Source  Works in the Browser  Multiple Languages      Features      Embedded   Super easy to embed the emulator into your website. Just add a few lines of code and you're good to go.   Learn how to embed    Code Editor   Automatically generate embeddable code for EmulatorJS!   Code Editor    Uses RetroArch   We use RetroArch's libretro cores to emulate games. Learn how to compile your own cores   here    Multilingual   EmulatorJS supports multiple languages. You contribute to the translations   here    Customizable   EmulatorJS is made to be fully customizable. Built-in cutomization options are available   here    Demo   You can try EmulatorJS using the demo.   Open Demo",{"id":410,"path":411,"dir":7,"title":412,"description":7,"keywords":413,"body":7},"content:translate.md","\u002Ftranslate","Translate",[],1780095334287]