diff --git a/.github/ISSUE_TEMPLATE/bug---beta.md b/.github/ISSUE_TEMPLATE/bug---beta.md
deleted file mode 100644
index 30a958e..0000000
--- a/.github/ISSUE_TEMPLATE/bug---beta.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-name: bug - beta
-about: Use this when you find a problem with the beta emulator cores
-title: "[beta]"
-labels: ''
-assignees: ''
-
----
-
-
diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md
deleted file mode 100644
index 3de0e09..0000000
--- a/.github/ISSUE_TEMPLATE/bug.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-name: bug
-about: Use this when you find a bug and you are not using the beta cores
-title: ''
-labels: ''
-assignees: ''
-
----
-
-
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index e46a4c0..0000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for this project
-title: ''
-labels: ''
-assignees: ''
-
----
-
-
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 0000000..0a35840
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,42 @@
+name: Minify Code
+
+on: [push, pull_request, workflow_dispatch]
+
+jobs:
+ paths-filter:
+ runs-on: ubuntu-latest
+ outputs:
+ output1: ${{ steps.filter.outputs.data }}
+ steps:
+ - uses: actions/checkout@v2
+ - uses: dorny/paths-filter@v2
+ id: filter
+ with:
+ filters: |
+ data:
+ - 'data/**'
+ # run only if 'data' files were changed
+ - name: workflow tests
+ if: steps.filter.outputs.data == 'true'
+ run: echo "Data file"
+
+ # run only if not 'data' files were changed
+ - name: not workflow tests
+ if: steps.filter.outputs.data != 'true'
+ run: echo "NOT Data file"
+
+ next-job:
+ runs-on: ubuntu-latest
+ # Wait from the paths-filter to be completed before starting next-job
+ needs: paths-filter
+ if: needs.paths-filter.outputs.output1 == 'true'
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-node@v2
+ with:
+ node-version: '12'
+ - run: cd data/minify && npm install
+ - run: cd data/minify && npm run build
+ - uses: EndBug/add-and-commit@v9
+ with:
+ default_author: github_actions
diff --git a/CHANGES.md b/CHANGES.md
new file mode 100644
index 0000000..7efd058
--- /dev/null
+++ b/CHANGES.md
@@ -0,0 +1,232 @@
+# Changes
+
+# 3.0.5
+- 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](https://github.com/ethanaobrien/emulatorjs/tree/088942083e44510f07133f2074a2d63a8af477cd)
+- 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](https://github.com/ethanaobrien/emulatorjs/tree/5f176b963e4b2055983b82396378d1e3837a69c4)
+- Remove broken shader.
+- Add download percent message.
+- Fixed UI "saving state" message not going away.
+
+# 2.3.7 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/8b9607becfe0aaad42b8b8486c7d379821b72125)
+- Add more shaders.
+- Add bold fontsize option to custom virtual gamepad settings.
+- No longer set "normalOptions" from localization file.
+
+# 2.3.6 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/b2919bc2c3d2d4c9fe3ab4f4486790a376b7acfe)
+- Remove default control mappings for gamepads.
+- Upgraded invalid character regex to catch more characters.
+
+# 2.3.5 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/a5a9916aba041e75ee73815376ed4fd2e22701bd)
+- Use regex to detect and replace invalid characters in filename/gamename settings.
+
+# 2.3.4 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/45d982b6362cfd29cb2eda9721066e03893ba0d8)
+- Add new arcade core.
+- Fix patch file game id set bug.
+
+# 2.3.4 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/45d982b6362cfd29cb2eda9721066e03893ba0d8)
+- Add new arcade core.
+
+# 2.3.3 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/11bddd5a4277aa04f80b941f05cc024b3de58bfc)
+- Make version in loader.js reasonable.
+- Created function to return the game id to prevent unnecessary data stored.
+
+# 2.3.2 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/e9e017435f2c41c6c2b127024cc88ac51bdf04d9)
+- 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](https://github.com/ethanaobrien/emulatorjs/tree/0fd6d58e2011fa1a39bd2e11ba3d2f17773f0961)
+- Use let instead of var.
+
+# 2.3.0 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/2fd0f545285151524262cc799efef6d996d7c6c1)
+- Added ability to customize virtual gamepad UI.
+- Fixed bug where shader is not set on start.
+
+# 2.2.9 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/018c39d4065b866487f8f18ca88c9488eab69a6d)
+- Added feature to save save files to indexeddb every 5 minutes.
+
+# 2.2.8 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/9860d662d02b56417044cca11937448041d9cf43)
+- Re-write gamepad handler.
+
+# 2.2.7 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/c03d18990b6536c1503bba2c640dbc13db982bb3)
+- Removed un-needed FS proxy functions.
+
+# 2.2.6 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/fd71b5dfc2bd44d8e1f0e7c6c7b3ee1a1127a696)
+- Added fps counter.
+- Fixed gba core aspect.
+
+# 2.2.5 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/4b444ec23918149a6052807d778af82f79883c01)
+- 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/show menu/context menu buttons.
+- Added ability to set game url to other data types.
+
+# 2.2.3 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/41eed05677b4927bd114613040bfe4572c92c4b4)
+- Fixed rar unarchiving function reference.
+- Updated rar header detection.
+- Removed netplay.
+
+# 2.2.1 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/19980deb12c3f0790176db6fc7b8b2de4069bf4e)
+- 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](https://github.com/ethanaobrien/emulatorjs/tree/a72222c39a793c4ff470ebb2b71c04829fee4b5e)
+- 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](https://github.com/ethanaobrien/emulatorjs/tree/8ab7bb3f49da373ed5d291c5f72039bbabf2fbc8)
+- 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](https://github.com/ethanaobrien/emulatorjs/tree/638658e6202fd39cb5c94bedcfa00ccdf8b25840)
+- Updated beta core files.
+
+# 1.1.6 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/fa153ba76791184d978f9fb8b69991b05b161bc8)
+- Replaced axios module with custom script.
+- Added pause/play for beta cores.
+- Sepperated css into its own file.
+- Renamed emu-min.js to emulator.min.js.
+
+# 1.1.5 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/2767c635b8a6e05c57e054d2f9d01ae0c4ff6d47)
+- Cleaned up fetch error function.
+- Cleaned up virtual gamepad event listeners.
+- Add code of conduct.
+
+# 1.1.2 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/64731dd8219931155b4e698aa98dbf65c2120038)
+- 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](https://github.com/ethanaobrien/emulatorjs/tree/715ded4ae23c2135bc9a8b9b7599f12c905393b3)
+- 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](https://github.com/ethanaobrien/emulatorjs/tree/fde44b095bb89e299daaaa4c8d7deebc79019865)
+- 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](https://github.com/ethanaobrien/emulatorjs/tree/0709829a11266b6ab4bbbf3e61d6dd6d3c372133)
+- 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](https://github.com/ethanaobrien/emulatorjs/tree/ef3200ef87bffe57241e05ae9646cc201142ec46)
+- 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](https://github.com/ethanaobrien/emulatorjs/tree/73ff641616bcd10f088a004002183760832a1afc)
+- Deobsfocuted emulator.js and loader.js files to the most of my extent.
+- Added quick save/load 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](https://github.com/ethanaobrien/emulatorjs/tree/83e148c82cbc8b4e835a808dcf84456975f82a7c)
+- 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](https://github.com/ethanaobrien/emulatorjs/tree/018c787ccf6daca58c863d38fff61910f33f98ec)
+- 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](https://github.com/ethanaobrien/emulatorjs/tree/6464bbedc1cd58c023cd66656540fc174aedde8b)
+- Added mame2003, snes2002, snes2005, snes2010, and vbanext cores.
+- Added asmjs for all supported cores.
+
+# 0.4.23-03 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/c883f267e1e56ed6b6472b891f78704c6e4b4c17)
+- 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](https://github.com/ethanaobrien/emulatorjs/tree/5d97620b25a81e49c6ba313e586fb37a5ce66002)
+- Start emulator.js deobsfocuting.
+
+# 0.4.23-01 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/42a7e129cfded266b72539e8d1b5978d5e4119d8)
+- Added support for loading "blob:" urls.
+- Added support for loading state on game start.
+
+# 0.4.23 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/5f5cf5cbba29cfd772d525a4c73a4bc5ea26654c)
+- 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](https://github.com/ethanaobrien/emulatorjs/tree/4fd22871663e5896bb5d0ce29a50ad508462387a)
+- Added support for 32x, 3do, a7800, arcade, bluemsx, jaguar, lynx, ngp, pce, saturn, sega, segacd, and ws cores.
+
+# Initial release [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/be2db16cba8bd85bf901cd89ca6de51414cea792)
+- 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.
diff --git a/README.md b/README.md
index c159300..68bbbe4 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,8 @@
"}o+="",v.virtualGamepadContainer.innerHTML=o,G(v.virtualGamepadContainer,!r);let n=B({"virtual-gamepad":!0}),i=B({touch:!0});H.isIos||j.call(this,U.call(this,".".concat(n)),"touchmove",function(e){e.stopPropagation()});let s;for(let e=0;e{var e=U.call(c,".".concat(n," .").concat(B(t.id)));e&&j.call(c,e,"touchstart touchend",function(e){"touchend"===e.type?(V(e.target,i,!1),window.setTimeout(function(){v.syncInput(0,t.number,0)},30)):(V(e.target,i,!0),v.syncInput(0,t.number,1)),e.stopPropagation()})});let e=F("div",{class:B({ejs__widget:!0,ejs__widget_controls_toggle:!0})},"");e.innerHTML='',U.call(this,".".concat(B({ejs__widgets:!0}))).appendChild(e);let t;j.call(this,e,"mousedown touchstart",function(e){V(e.target,i,!0),clearTimeout(t),W.toggleControls.call(c,!0),t=setTimeout(function(){W.toggleControls.call(c,!1)},5e3)})}},setup:function(){let o=this;if(this.game){var e;if(v.playerName=o.config.playerName,V(this.elements.container,this.config.classNames.type,!0),this.elements.container.setAttribute("tabindex","0"),!this.color||(e=function(e){let n=e.toLowerCase();if(n&&/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(n)){if(4===n.length){for(let e="#",t=1;t<4;t+=1)e+=n.slice(t,t+1).concat(n.slice(t,t+1));n=s}for(let e=[],t=1;t<7;t+=2)e.push(parseInt("0x".concat(n.slice(t,t+2)),16));return _0x5ac4ff}return null}(this.color))&&this.elements.container.setAttribute("style","--ejs-primary-color: ".concat(e[0],", ").concat(e[1],", ").concat(e[2])),this.elements.wrapper=F("div",{class:this.config.classNames.video}),R(this.game,this.elements.wrapper),"video"!==o.game.tagName.toLocaleLowerCase()){let t=this.config.volume,n=(Object.defineProperty(o.game,"volume",{get:function(){return t},set:function(e){t=e,D.call(o,o.game,"volumechange")}}),o.storage.get("muted"));Object.defineProperty(o.game,"muted",{get:function(){return n},set:function(e){e=!!L.boolean(e)&&e;n=e,D.call(o,o.game,"volumechange")}})}window.addEventListener("beforeunload",function(e){o.started&&o.getStartName()&&(g.FS.syncfs(function(){}),v.saveSavFiles(),g.FS.syncfs(function(){}))},!0),window.saveSaveFiles=function(){o.getStartName()&&(console.log("saving save files"),v.saveSavFiles(),g.FS.syncfs(!1,function(){}))},setInterval(function(){o.started&&saveSaveFiles()},3e5)}else console.warn("No game element found!")},listeners:function(){let i=this;i.elements.buttons.restart&&j.call(i,i.elements.buttons.restart,"click",function(e){v.restartGame(),v.inputsData={},saveSaveFiles()}),i.elements.buttons.screenRecord&&j.call(i,i.elements.buttons.screenRecord,"click",function(e){if(i.recordData||(i.recordData={started:!1,data:[],stopped:!1}),i.recordData.started)i.recordData.started&&(i.recordData.recorder.stop(),i.recordData.stopped=!0);else{let n;n=MediaRecorder.isTypeSupported("video/webm; codecs=h264")?{mimeType:"video/webm; codecs=h264"}:MediaRecorder.isTypeSupported("video/webm; codecs=H264")?{mimeType:"video/webm; codecs=H264"}:MediaRecorder.isTypeSupported("video/webm; codecs=vp9")?{mimeType:"video/webm; codecs=vp9"}:MediaRecorder.isTypeSupported("video/webm; codecs=vp8")?{mimeType:"video/webm; codecs=vp8"}:MediaRecorder.isTypeSupported("video/webm; codecs=avc1")?{mimeType:"video/webm; codecs=avc1"}:MediaRecorder.isTypeSupported("video/webm; codecs=vp9.0")?{mimeType:"video/webm; codecs=vp9.0"}:MediaRecorder.isTypeSupported("video/webm; codecs=vp8.0")?{mimeType:"video/webm; codecs=vp8.0"}:{},g.Module.pauseMainLoop(),i.playing=!1,alert('please check "share system audio" to have audio in the recording. We only need the audio stream so your entire screen will not be recorded');let o=g.Module.canvas.captureStream(30),a=setTimeout(function(){i.playing=!0,g.Module.resumeMainLoop()},2e4);navigator.mediaDevices.getDisplayMedia({audio:!0,video:{mediaSource:"screen"}}).then(function(e){try{clearTimeout(a)}catch(e){}var t=e.getAudioTracks();for(let e=0;e>0;if(0>0,t=0;t".concat(this.icons[e],"");for(let e=o.childNodes[0].childNodes,t=0;t",""]),a=[];function n(e,t,n){"function"==typeof n?a.push(n):a.push(function(){});n=o.length-1;t?o.splice(n,0,'
-
```
-## ROMS
+## ROM Type
-Only use **FBA ROMs** of version`0.2.97.42`
+Your **ROM** can have the following extensions:
+- `zip`
-### ROM List
+### CORES
-The following **ROMs** must use the listed name.
+The *arcade* system supports 2 cores
+- `fbalpha2012_cps1`
+- `fbalpha2012_cps2`
-| Name | MD5 Checksum | Description |
-|------|--------------|-------------|
-| `neogeo.zip` | `410c65b2debdf4f2dac9ea2b23aa496e` | Required for **Neo Geo Games**
-| `pgm.zip` | `653e991a39e867354d090c3394157d1c` | Required for **IGS Games**
-| `isgsm.zip` | `4a56d56e2219c5e2b006b66a4263c01c` | **ISG Selection Master Type 2006 BIOS**
+If set to `arcade`, emulator will use the `fbalpha2012_cps1` core.
diff --git a/docs/Systems/Atari 5200.md b/docs/Systems/Atari 5200.md
index cbab8df..901ae54 100644
--- a/docs/Systems/Atari 5200.md
+++ b/docs/Systems/Atari 5200.md
@@ -1,9 +1,6 @@
# Atari 5200
-I do not know the file extension limits for this system.
-There is no bios for this system.
-
-## Code example
+## Code Example
```html
@@ -11,25 +8,30 @@ There is no bios for this system.
-
```
+## ROM Type
+Your **ROM** can have the following extensions:
+- `a52`
+- `bin`
+
+### CORES
+
+The *atari5200* system supports 1 core
+- `a5200`
+
+If set to `atari5200`, emulator will use the `a5200` core.
diff --git a/docs/Systems/MAME 2003.md b/docs/Systems/MAME 2003.md
new file mode 100644
index 0000000..daea3b8
--- /dev/null
+++ b/docs/Systems/MAME 2003.md
@@ -0,0 +1,35 @@
+# MAME 2003
+
+## Code Example
+
+```html
+
+
+
+
+
+
+```
+
+## ROM Type
+
+Your **ROM** can have the following extensions:
+- `zip`
+
+### CORES
+
+The *mame2003* system supports 2 cores
+- `mame2003`
+
+If set to `mame2003`, emulator will use the `mame2003` core.
+
diff --git a/docs/Systems/NES-Famicom.md b/docs/Systems/NES-Famicom.md
index 3efe515..4fc4799 100644
--- a/docs/Systems/NES-Famicom.md
+++ b/docs/Systems/NES-Famicom.md
@@ -8,37 +8,28 @@
-
```
## ROM Type
-Your **ROM** can have the following types:
+Your **ROM** can have the following extensions:
- `fds`
- `nes`
- `unif`
@@ -46,5 +37,16 @@ Your **ROM** can have the following types:
### BIOS
-You can find the **Famicon BIOS** by looking up the **MD5** checksum:
-`ca30b50f880eb660a320674ed365ef7a`
+| 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.
+
diff --git a/docs/Systems/Nintendo 64.md b/docs/Systems/Nintendo 64.md
index e5835e5..a490a10 100644
--- a/docs/Systems/Nintendo 64.md
+++ b/docs/Systems/Nintendo 64.md
@@ -1,9 +1,5 @@
# Nintendo 64
-I do not know the file extension limits for this system.
-I know the `.z64` roms work.
-There is no bios for this system
-
## Code Example
```html
@@ -12,24 +8,35 @@ There is no bios for this system
-
```
+## ROM Type
+
+Your **ROM** can have the following extensions:
+- `n64`
+- `v64`
+- `z64`
+- `bin`
+- `u1`
+- `ndd`
+- `gb`
+
+### CORES
+
+The *n64* system supports 1 core
+- `mupen64plus_next`
+
+If set to `n64`, emulator will use the `mupen64plus_next` core.
diff --git a/docs/Systems/Nintendo DS.md b/docs/Systems/Nintendo DS.md
index 038d7c6..7c5ac13 100644
--- a/docs/Systems/Nintendo DS.md
+++ b/docs/Systems/Nintendo DS.md
@@ -1,10 +1,6 @@
# Nintendo DS
-
-I do not know the file extension limits for this system.
-There is no bios for this system.
-
-## Code example
+## Code Example
```html
@@ -12,23 +8,47 @@ There is no bios for this system.
-
```
+## ROM Type
+
+Your **ROM** can have the following extensions:
+- `nds`
+- `bin` (desmume2015 core only)
+
+### 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 2 cores
+- `melonds`
+- `desmume2015`
+
+If set to `nds`, emulator will use the `melonds` core.
+
diff --git a/docs/Systems/Nintendo Game Boy Advance.md b/docs/Systems/Nintendo Game Boy Advance.md
index defc0dd..af5f054 100644
--- a/docs/Systems/Nintendo Game Boy Advance.md
+++ b/docs/Systems/Nintendo Game Boy Advance.md
@@ -1,8 +1,6 @@
-# Nintendo Game Boy Advance
+# Nintendo GameBoy Advance
-I do not know the file extension limits for this system.
-
-## Code example
+## Code Example
```html
@@ -10,38 +8,43 @@ I do not know the file extension limits for this system.
-
```
-## BIOS
+## ROM Type
-You can search for the BIOS you need by utilizing the **MD5** checksum.
+Your **ROM** can have the following extensions:
+- `gb`
+- `gbc`
+- `gba`
-| Type | MD5 Checksum |
-|------|--------------|
-| Game Boy Advance | `a860e8c0b6d573d191e4ec7db1b1e4f6`
-| Game Boy | `32fbbd84168d3482956eb3c5051637f5`
-| Game Boy Color | `dbfce9db9deaa2567f6a84fde55f9680`
-| Super Game Boy | `d574d4f9c12f305074798f54c091a8b4`
+### 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.
diff --git a/docs/Systems/Nintendo Game Boy.md b/docs/Systems/Nintendo Game Boy.md
index f99bc27..775dff3 100644
--- a/docs/Systems/Nintendo Game Boy.md
+++ b/docs/Systems/Nintendo Game Boy.md
@@ -1,8 +1,6 @@
-# Nintendo Game Boy
+# Nintendo GameBoy
-I do not know the file extension limits for this system.
-
-## Code example
+## Code Example
```html
@@ -10,36 +8,42 @@ I do not know the file extension limits for this system.
-
```
-## BIOS
+## ROM Type
-You can search for the BIOS you need by utilizing the **MD5** checksum.
+Your **ROM** can have the following extensions:
+- `gb`
+- `gbc`
+- `dmg`
-| Type | MD5 Checksum |
-|------|--------------|
-| Game Boy | `32fbbd84168d3482956eb3c5051637f5`
-| Game Boy Color | `dbfce9db9deaa2567f6a84fde55f9680`
+### 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.
diff --git a/docs/Systems/PlayStation.md b/docs/Systems/PlayStation.md
index 438e3c1..e12d060 100644
--- a/docs/Systems/PlayStation.md
+++ b/docs/Systems/PlayStation.md
@@ -1,6 +1,6 @@
# PlayStation
-## Code example
+## Code Example
```html
@@ -8,50 +8,47 @@
-
```
## ROM Type
-Your **ROM** can have the following types:
-- `bin`
+Your **ROM** can have the following extensions:
- `cue`
-- `img`
-- `mdf`
-- `pbp`
- `toc`
-- `cbn`
- `m3u`
- `ccd`
+- `exe`
+- `pbp`
+- `chd`
-## BIOS
+### BIOS
-You can search for the BIOS you need by utilizing the **MD5** checksum.
+| 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 |
-| Type | MD5 Checksum |
-|------|--------------|
-| PlayStation 1 JP | `8dd7d5296a650fac7319bce665a6a53c`
-| PlayStation 1 US | `490f666e1afb15b7362b406ed1cea246`
-| PlayStation 1 EU | `32736f17079d0b2b7024407c39bd3050`
+### CORES
+
+The *psx* system supports 2 cores
+- `mednafen_psx_hw`
+- `mednafen_psx`
+
+If set to `psx`, emulator will use the `mednafen_psx_hw` core.
diff --git a/docs/Systems/SNES.md b/docs/Systems/SNES.md
index b5cd82a..b3cb058 100644
--- a/docs/Systems/SNES.md
+++ b/docs/Systems/SNES.md
@@ -1,8 +1,6 @@
# SNES
-There is no bios for this system.
-
-## Code example
+## Code Example
```html
@@ -10,43 +8,50 @@ There is no bios for this system.
-
```
## ROM Type
-Your **ROM** can have the following types:
+Your **ROM** can have the following extensions:
- `smc`
-- `fig`
- `sfc`
-- `gd3`
-- `gd7`
-- `dx2`
-- `bsx`
- `swc`
+- `fig`
+- `bs`
+- `st`
+
+### 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 1 core
+- `snes9x`
+
+If set to `snes`, emulator will use the `snes9x` core.
diff --git a/docs/Systems/Virtual Boy.md b/docs/Systems/Virtual Boy.md
index faabbbb..86c83f4 100644
--- a/docs/Systems/Virtual Boy.md
+++ b/docs/Systems/Virtual Boy.md
@@ -1,9 +1,6 @@
# Virtual Boy
-I do not know the file extension limits for this system.
-There is no bios for this system.
-
-## Code example
+## Code Example
```html
@@ -11,25 +8,31 @@ There is no bios for this system.
-
```
+## ROM Type
+Your **ROM** can have the following extensions:
+- `vb`
+- `vboy`
+- `bin`
+
+### CORES
+
+The *vb* system supports 1 core
+- `beetle_vb`
+
+If set to `vb`, emulator will use the `beetle_vb` core.
diff --git a/docs/Usage.md b/docs/Usage.md
deleted file mode 100644
index 515ca53..0000000
--- a/docs/Usage.md
+++ /dev/null
@@ -1,143 +0,0 @@
-# Usage
-
-*For questions please use the* ***[Issue]*** *tab.*
-
-
-
-## Setup
-
-1. Download this repository.
- *`Code ➞ Download As Zip`*
-
-2. Use a **WebServer** to host the emulator.
-
-3. Use your **Browser** to navigate to `localhost`
-
-
-
-## ROMs
-
-**ROMs** can be used as `zip` / `rar` / `7z` archives.
-
-
-
-## Netplay
-
-By default **Netplay** is ***disabled***,
-to enable it, add the following:
-
-```js
-// ID in your website, required for netplay. Each game in your site should have a different ID
-EJS_gameID = 1;
-```
-
-
-
-by default, the netplay server url will be `emuserver.emulatorjs.ga`, but to default to the default `ws.emulatorjs.com` server add the following line
-
-```js
-EJS_oldEJSNetplayServer = true;
-```
-
-
-
-*To self host:*
-
-1. Download the **[Server]**.
-
-2. Specify the servers address with:
-
-```js
-EJS_netplayUrl = 'http://localhost:3000/'; // Absolute Url To Your Netplay Server
-```
-
-
-
-## Custom Save Filename
-
-To customize the filename of save states
-simply add the following lines of code.
-
-```js
-EJS_gameName = 'Game Name';
-```
-
-**➞ Save Filename:** `Game Name.state`
-
-
-
-## AD
-
-To place an advertisement in front of the
-`play now` screen, include the following line:
-
-```js
-EJS_AdUrl = 'URL';
-```
-
-
-
-## Interface Color
-
-To use a different color for the emulator interface, use:
-
-```js
-EJS_color = '#FF0000'; // Hex Color Code
-```
-
-
-
-## Direct Start
-
-To start the emulator immediately, add this line:
-
-```js
-EJS_startOnLoaded = true;
-```
-
-*For audio to play the user still*
-*needs to interact with the page.*
-
-
-
-## Custom Paths
-
-Paths to emulator files can be customized with:
-
-```js
-EJS_paths = {
- 'fileName' : '/somepath',
- 'emulator.js' : 'https://example.com/emulator.js',
- 'n64-asmjs.data' : '/asdfds.data'
-};
-```
-
-*If a file is not defined, the default is used.*
-
-
-
-## Localization
-
-Please see [the localization README].
-
-
-
-## Using MAME
-
-To use the **MAME** system you will have to add:
-
-```js
-EJS_core = 'mame';
-EJS_mameCore = '' // mame core options (example: '4|0')
-```
-
-to your code.
-
-Set the mame core value to the mame core number ( `1` - `6` ) + `|` + save states supported ( `0` or `1` )
-
-
-
-
-[Issue]: https://github.com/ethanaobrien/emulatorjs/issues
-[Server]: https://github.com/ethanaobrien/emuserver/releases
-[the localization readme]: data/localization/