mirror of
https://github.com/EmulatorJS/EmulatorJS.git
synced 2024-09-20 02:46:23 +00:00
Version 1.1.2
Co-authored-by: Allan Niles <74841470+allancoding@users.noreply.github.com> Co-authored-by: ElectronicsArchiver <85485984+ElectronicsArchiver@users.noreply.github.com> Co-authored-by: GreyHope <hello@greyhope.uk> Co-authored-by: Kyle Steffel <cheesykyle@users.noreply.github.com>
This commit is contained in:
parent
729d138a98
commit
4da87d0e6b
60 changed files with 1656 additions and 7566 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
**/node_modules/
|
||||||
|
data/minify/package-lock.json
|
356
README.md
356
README.md
|
@ -1,241 +1,187 @@
|
||||||
<p align="center">
|
|
||||||
<img src="https://user-images.githubusercontent.com/74841470/155255251-0a0840ee-51d7-4f9e-878b-1be287d9a984.png" width="250">
|
|
||||||
</p>
|
|
||||||
|
|
||||||
# EmulatorJS
|
|
||||||
|
|
||||||
|
<div align = center>
|
||||||
|
|
||||||
|
<img src = docs/Logo.png width = 300>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
[![Badge License]][License]
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
Self-hosted **Javascript** emulation for various system.
|
Self-hosted **Javascript** emulation for various system.
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
[![Badge Website]][Website]
|
||||||
|
[![Badge Usage]][Usage]<br>
|
||||||
|
[![Badge Configurator]][Configurator]<br>
|
||||||
|
[![Badge Demo]][Demo]
|
||||||
|
[![Badge Legacy]][Legacy]
|
||||||
|
[![Badge Beta]][Beta]
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
### Issues
|
||||||
|
|
||||||
*If something doesn't work, please consider opening an* ***[Issue]*** <br>
|
*If something doesn't work, please consider opening an* ***[Issue]*** <br>
|
||||||
*with as many details as possible, as well as the console log.*
|
*with as many details as possible, as well as the console log.*
|
||||||
|
|
||||||
*The* ***Screen Recording*** *option currently doesn't support* ***Audio*** *.*
|
<br>
|
||||||
|
|
||||||
The **beta** version of the emulator core files are now avaliable. (For limited systems) <br>
|
### Audio
|
||||||
If you would like to use it, please add the following line to your code.
|
|
||||||
|
*The **Screen Recording** option currently doesn't support **Audio** .*
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
### Extensions
|
||||||
|
|
||||||
|
**[GameLibrary]**
|
||||||
|
|
||||||
|
*A library overview for your **ROM** folder.*
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
### Beta
|
||||||
|
|
||||||
|
The **beta** of the emulator core is now available for *some* systems. <br>
|
||||||
|
To use it, please add the following line to your code.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
EJS_BETA = true;
|
EJS_BETA = true;
|
||||||
```
|
```
|
||||||
|
|
||||||
When reporting bugs, please specify that you are using the beta version
|
<br>
|
||||||
|
|
||||||
---
|
**>> When reporting bugs, please specify that you are using the beta version**
|
||||||
|
|
||||||
**⸢ [EmulatorJS Website] ⸥ ⸢ [Example Use] ⸥ ⸢ [Emulator Demo] ⸥ ⸢ [Beta] ⸥**
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
---
|
<h1 align = center>Supported Systems</h1>
|
||||||
|
|
||||||
## Supported Systems
|
|
||||||
|
|
||||||
#### Nintendo
|
|
||||||
|
|
||||||
**[Game Boy Advance][Nintendo Game Boy Advance]** | **[Famicom / NES][NES / Famicom]** | **[Virtual Boy][Virtual Boy]** | **[Game Boy][Nintendo Game Boy]** | **[SNES]** | **[DS][Nintendo DS]** | **[64][Nintendo 64]**
|
|
||||||
|
|
||||||
#### Sega
|
|
||||||
**[Master System][Sega Master System]** | **[Mega Drive][Sega Mega Drive]** | **[Game Gear][Sega Game Gear]** | **[Saturn][Sega Saturn]** | **[32X][Sega 32X]** | **[CD][Sega CD]**
|
|
||||||
|
|
||||||
#### Atari
|
|
||||||
|
|
||||||
**[Jaguar][Atari Jaguar]** | **[Lynx][Atari Lynx]** | **[7800][Atari 7800]** | **[2600][Atari 2600]**
|
|
||||||
|
|
||||||
#### Other
|
|
||||||
|
|
||||||
**[TurboGrafs 16 PC Engine][TurboGrafs-16 / PC Engine]** | **[WanderSwan Color][WanderSwan / Color]** | **[Neo Geo Poket][Neo Geo Poket]** | **[PlayStation]** | **[Arcade]** | **[MSX]** | **[3DO]**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
*For questions please use the* ***[Issue]*** *tab.*
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
##### Setup
|
<div align = center>
|
||||||
|
|
||||||
1. Download this repository.<br>
|
### Nintendo
|
||||||
*`Code ➞ Download As Zip`*
|
|
||||||
|
|
||||||
2. Use a **WebServer** to host the emulator.
|
**[Game Boy Advance][Nintendo Game Boy Advance]** |
|
||||||
|
**[Famicom / NES][NES / Famicom]** |
|
||||||
|
**[Virtual Boy][Virtual Boy]**
|
||||||
|
|
||||||
|
**[Game Boy][Nintendo Game Boy]** |
|
||||||
|
**[SNES]** |
|
||||||
|
**[DS][Nintendo DS]** |
|
||||||
|
**[64][Nintendo 64]**
|
||||||
|
|
||||||
3. Use your **Browser** to navigate to `localhost`
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
### Sega
|
||||||
|
|
||||||
|
**[Master System][Sega Master System]** |
|
||||||
|
**[Mega Drive][Sega Mega Drive]** |
|
||||||
|
**[Game Gear][Sega Game Gear]**
|
||||||
|
|
||||||
|
**[Saturn][Sega Saturn]** |
|
||||||
|
**[32X][Sega 32X]** |
|
||||||
|
**[CD][Sega CD]**
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
### Atari
|
||||||
|
|
||||||
|
**[Jaguar][Atari Jaguar]** |
|
||||||
|
**[Lynx][Atari Lynx]** |
|
||||||
|
**[7800][Atari 7800]** |
|
||||||
|
**[2600][Atari 2600]**
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
**[TurboGrafs 16 PC Engine][TurboGrafs-16 / PC Engine]** |
|
||||||
|
**[WanderSwan Color][WanderSwan / Color]** |
|
||||||
|
**[Neo Geo Poket][Neo Geo Poket]**
|
||||||
|
|
||||||
|
**[PlayStation]** |
|
||||||
|
**[Arcade]** |
|
||||||
|
**[MSX]** |
|
||||||
|
**[3DO]**
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
##### ROMs
|
|
||||||
|
|
||||||
**ROMs** can be used as `zip` / `rar` / `7z` archives.
|
<!-- 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 --->
|
||||||
|
|
||||||
<br>
|
[License]: LICENSE
|
||||||
|
[Issue]: https://github.com/ethanaobrien/emulatorjs/issues
|
||||||
##### Netplay
|
|
||||||
|
|
||||||
By default **Netplay** is ***disabled***, <br>
|
|
||||||
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;
|
|
||||||
```
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
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;
|
|
||||||
```
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
*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
|
|
||||||
```
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
##### Custom Save Filename
|
|
||||||
|
|
||||||
To customize the filename of save states <br>
|
|
||||||
simply add the following lines of code.
|
|
||||||
|
|
||||||
```js
|
|
||||||
EJS_gameName = 'Game Name';
|
|
||||||
```
|
|
||||||
|
|
||||||
**➞ Save Filename:** `Game Name.state`
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
##### AD
|
|
||||||
|
|
||||||
To place an advertisement in front of the <br>
|
|
||||||
`play now` screen, include the following line:
|
|
||||||
|
|
||||||
```js
|
|
||||||
EJS_AdUrl = 'URL';
|
|
||||||
```
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
##### Interface Color
|
|
||||||
|
|
||||||
To use a different color for the emulator interface, use:
|
|
||||||
|
|
||||||
```js
|
|
||||||
EJS_color = '#FF0000'; // Hex Color Code
|
|
||||||
```
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
##### Direct Start
|
|
||||||
|
|
||||||
To start the emulator immediately, add this line:
|
|
||||||
|
|
||||||
```js
|
|
||||||
EJS_startOnLoaded = true;
|
|
||||||
```
|
|
||||||
|
|
||||||
*For audio to play the user still* <br>
|
|
||||||
*needs to interact with the page.*
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
##### 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.*
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
##### Localization
|
|
||||||
|
|
||||||
please see [the localization readme]
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
##### USING MAME SYSTEM
|
|
||||||
|
|
||||||
you must add the line
|
|
||||||
|
|
||||||
```js
|
|
||||||
EJS_core = 'mame';
|
|
||||||
```
|
|
||||||
|
|
||||||
and the line
|
|
||||||
|
|
||||||
```js
|
|
||||||
EJS_mameCore = '' // mame core options (example: '4|0')
|
|
||||||
```
|
|
||||||
set the mame core value to the mame core number (`1` - `6`) + `|` + save states supported (`0` or `1`)
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
# LICENSE
|
|
||||||
|
|
||||||
Licenced under the GNU General Public License v3.0
|
|
||||||
|
|
||||||
Please state changes and the licence when re-distributing
|
|
||||||
|
|
||||||
[Read the whole license here]
|
|
||||||
|
|
||||||
If I find a repository that does not follow the licence, I will report it.
|
|
||||||
|
|
||||||
|
|
||||||
<!----------------------------------------------------------------------------->
|
<!-- 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 Extensions 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 --->
|
||||||
|
|
||||||
[EmulatorJS Website]: https://emulatorjs.ga/
|
[GameLibrary]: https://github.com/Ramaerel/emulatorjs-GameLibrary
|
||||||
[Example Use]: https://coldcast.org/games/1/Super-Mario-Bros
|
|
||||||
[Emulator Demo]: https://emulatorjs.ga/demo/
|
|
||||||
|
<!-- 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 Quicklinks 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 --->
|
||||||
|
|
||||||
|
[Configurator]: https://emulatorjs.ga/codehelper
|
||||||
|
[Website]: https://emulatorjs.ga/
|
||||||
|
[Legacy]: https://coldcast.org/games/1/Super-Mario-Bros
|
||||||
|
[Usage]: docs/Usage.md
|
||||||
|
[Demo]: https://emulatorjs.ga/demo/
|
||||||
[Beta]: https://emulatorjs.ga/beta/
|
[Beta]: https://emulatorjs.ga/beta/
|
||||||
|
|
||||||
[Issue]: https://github.com/ethanaobrien/emulatorjs/issues
|
|
||||||
[This repository]: https://github.com/linuxserver/emulatorjs
|
|
||||||
|
|
||||||
[Server]: https://github.com/ethanaobrien/emuserver/releases
|
<!-- 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 Systems 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 -->
|
||||||
|
|
||||||
[the localization readme]: data/localization/
|
[Nintendo Game Boy Advance]: docs/Systems/Nintendo%20Game%20Boy%20Advance.md
|
||||||
[Read the whole license here]: LICENSE
|
[Nintendo Game Boy]: docs/Systems/Nintendo%20Game%20Boy.md
|
||||||
|
[Nintendo 64]: docs/Systems/Nintendo%2064.md
|
||||||
|
[Nintendo DS]: docs/Systems/Nintendo%20DS.md
|
||||||
|
|
||||||
[NES / Famicom]: docs/NES-Famicom.md
|
[Sega Master System]: docs/Systems/Sega%20Master%20System.md
|
||||||
[SNES]: docs/SNES.md
|
[Sega Mega Drive]: docs/Systems/Sega%20Mega%20Drive.md
|
||||||
[Nintendo 64]: docs/Nintendo%2064.md
|
[Sega Game Gear]: docs/Systems/Sega%20Game%20Gear.md
|
||||||
[Nintendo Game Boy]: docs/Nintendo%20Game%20Boy.md
|
[Sega Saturn]: docs/Systems/Sega%20Saturn.md
|
||||||
[Nintendo Game Boy Advance]: docs/Nintendo%20Game%20Boy%20Advance.md
|
[Sega 32X]: docs/Systems/Sega%2032X.md
|
||||||
[Nintendo DS]: docs/Nintendo%20DS.md
|
[Sega CD]: docs/Systems/Sega%20CD.md
|
||||||
[PlayStation]: docs/PlayStation.md
|
|
||||||
[Virtual Boy]: docs/Virtual%20Boy.md
|
[Atari Jaguar]: docs/Systems/Atari%20Jaguar.md
|
||||||
[Sega Mega Drive]: docs/Sega%20Mega%20Drive.md
|
[Atari Lynx]: docs/Systems/Atari%20Lynx.md
|
||||||
[Sega Master System]: docs/Sega%20Master%20System.md
|
[Atari 7800]: docs/Systems/Atari%207800.md
|
||||||
[Sega CD]: docs/Sega%20CD.md
|
[Atari 2600]: docs/Systems/Atari%202600.md
|
||||||
[Atari Lynx]: docs/Atari%20Lynx.md
|
|
||||||
[MSX]: docs/MSX.md
|
[NES / Famicom]: docs/Systems/NES-Famicom.md
|
||||||
[3DO]: docs/3DO.md
|
[SNES]: docs/Systems/SNES.md
|
||||||
[Sega 32X]: docs/Sega%2032X.md
|
|
||||||
[Atari Jaguar]: docs/Atari%20Jaguar.md
|
[TurboGrafs-16 / PC Engine]: docs/Systems/TurboGrafs%2016-PC%20Engine.md
|
||||||
[Neo Geo Poket]: docs/Neo%20Geo%20Poket.md
|
[WanderSwan / Color]: docs/Systems/WanderSwan-Color.md
|
||||||
[Sega Game Gear]: docs/Sega%20Game%20Gear.md
|
[Neo Geo Poket]: docs/Systems/Neo%20Geo%20Poket.md
|
||||||
[Sega Saturn]: docs/Sega%20Saturn.md
|
[PlayStation]: docs/Systems/PlayStation.md
|
||||||
[Atari 7800]: docs/Atari%207800.md
|
[Virtual Boy]: docs/Systems/Virtual%20Boy.md
|
||||||
[WanderSwan / Color]: docs/WanderSwan-Color.md
|
[Arcade]: docs/Systems/Arcade.md
|
||||||
[TurboGrafs-16 / PC Engine]: docs/TurboGrafs%2016-PC%20Engine.md
|
[MSX]: docs/Systems/MSX.md
|
||||||
[Arcade]: docs/Arcade.md
|
[3DO]: docs/Systems/3DO.md
|
||||||
[Atari 2600]: docs/Atari%202600.md
|
|
||||||
|
|
||||||
|
<!-- 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 Badges 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 --->
|
||||||
|
|
||||||
|
[Badge License]: https://img.shields.io/badge/License-GPLv3-blue.svg?style=for-the-badge
|
||||||
|
|
||||||
|
[Badge Configurator]: https://img.shields.io/badge/Configurator-992cb3?style=for-the-badge
|
||||||
|
[Badge Website]: https://img.shields.io/badge/Website-736e9b?style=for-the-badge
|
||||||
|
[Badge Legacy]: https://img.shields.io/badge/Legacy-ab910b?style=for-the-badge
|
||||||
|
[Badge Usage]: https://img.shields.io/badge/Usage-2478b5?style=for-the-badge
|
||||||
|
[Badge Demo]: https://img.shields.io/badge/Demo-528116?style=for-the-badge
|
||||||
|
[Badge Beta]: https://img.shields.io/badge/Beta-bb044f?style=for-the-badge
|
||||||
|
|
155
data/emu-main.js
155
data/emu-main.js
|
@ -5,7 +5,6 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
window.EJS_RESET_VARS.push(k);
|
window.EJS_RESET_VARS.push(k);
|
||||||
}
|
}
|
||||||
_0x2c1832.r(_0x17edbf);
|
_0x2c1832.r(_0x17edbf);
|
||||||
_0x2c1832(0xa2), _0x2c1832(0x16c), _0x2c1832(0x16d);
|
|
||||||
var _0x39ca5e = {
|
var _0x39ca5e = {
|
||||||
'volume': 0.5,
|
'volume': 0.5,
|
||||||
'muted': false,
|
'muted': false,
|
||||||
|
@ -99,7 +98,6 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
'tabFocus': 'ejs__tab-focus'
|
'tabFocus': 'ejs__tab-focus'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
_0x3d61f9 = _0x2c1832(0x38),
|
|
||||||
_0x5127f4 = _0x2c1832(0x9d),
|
_0x5127f4 = _0x2c1832(0x9d),
|
||||||
_0x48e5ff = _0x2c1832.n(_0x5127f4),
|
_0x48e5ff = _0x2c1832.n(_0x5127f4),
|
||||||
_0x406e79 = function(_0x2aa74f) {
|
_0x406e79 = function(_0x2aa74f) {
|
||||||
|
@ -584,10 +582,10 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
}
|
}
|
||||||
}]) && _0x4c97b0(_0x17edbf.prototype, _0x2c1832), _0x4496fc && _0x4c97b0(_0x17edbf, _0x4496fc), _0x566dbe;
|
}]) && _0x4c97b0(_0x17edbf.prototype, _0x2c1832), _0x4496fc && _0x4c97b0(_0x17edbf, _0x4496fc), _0x566dbe;
|
||||||
}();
|
}();
|
||||||
var _0x13fb79, _0x569918 = _0x2c1832(0x6c),
|
var _0x13fb79, _0x569918 = _0x2c1832(108),
|
||||||
_0x4e4ca6 = _0x2c1832.n(_0x569918),
|
_0x4e4ca6 = _0x2c1832.n(_0x569918),
|
||||||
_0x4ad1c6 = _0x2c1832(0x6),
|
_0x4ad1c6 = _0x2c1832(6),
|
||||||
_0x4704b1 = _0x2c1832(0x9f),
|
_0x4704b1 = _0x2c1832(159),
|
||||||
_0x3a58c8 = _0x2c1832.n(_0x4704b1),
|
_0x3a58c8 = _0x2c1832.n(_0x4704b1),
|
||||||
_0x5032e6 = {
|
_0x5032e6 = {
|
||||||
'2xScaleHQ.glslp': 'shaders = 1\n\nshader0 = "2xScaleHQ.glsl"\nfilter_linear0 = false\nscale_type_0 = source\n',
|
'2xScaleHQ.glslp': 'shaders = 1\n\nshader0 = "2xScaleHQ.glsl"\nfilter_linear0 = false\nscale_type_0 = source\n',
|
||||||
|
@ -604,7 +602,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
_0x5bb4c9 = _0x2c1832(0x39),
|
_0x5bb4c9 = _0x2c1832(0x39),
|
||||||
_0x50f370 = _0x2c1832.n(_0x5bb4c9),
|
_0x50f370 = _0x2c1832.n(_0x5bb4c9),
|
||||||
_0x246d02 = _0x2c1832(0xb),
|
_0x246d02 = _0x2c1832(0xb),
|
||||||
_0x550f17 = _0x2c1832.n(_0x246d02),
|
_0x550f17 = _0x2c1832.n(_0x246d02).a,
|
||||||
_0x5ab74d = {
|
_0x5ab74d = {
|
||||||
'addStyleHook': function() {
|
'addStyleHook': function() {
|
||||||
_0x3a8e2f(this.elements.container, this.config.selectors.container.replace('.', ''), true), _0x3a8e2f(this.elements.container, this.config.classNames.uiSupported, true), _0x3a8e2f(this.elements.container, this.config.classNames.hideControls, true);
|
_0x3a8e2f(this.elements.container, this.config.selectors.container.replace('.', ''), true), _0x3a8e2f(this.elements.container, this.config.classNames.uiSupported, true), _0x3a8e2f(this.elements.container, this.config.classNames.hideControls, true);
|
||||||
|
@ -1563,27 +1561,45 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
_0x139f1c = _0x154dc5[_0x154dc5.length - 0x1];
|
_0x139f1c = _0x154dc5[_0x154dc5.length - 0x1];
|
||||||
_0x139f1c.indexOf('?') > -0x1 && (_0x139f1c = _0x139f1c.substr(0x0, _0x139f1c.indexOf('?')));
|
_0x139f1c.indexOf('?') > -0x1 && (_0x139f1c = _0x139f1c.substr(0x0, _0x139f1c.indexOf('?')));
|
||||||
_0x139f1c.split('.').pop();
|
_0x139f1c.split('.').pop();
|
||||||
_0x2c1832.innerHTML = _0xa88a13.localization('Download Game Data'), ['arcade', 'mame', 'mame2003', 'fba0.2.97.29'].includes(_0x17edbf.system) && _0x17edbf.config.gameParentUrl && (_0x2c1832.innerHTML += ' (2/2)'), _0x17edbf.config.gamePatchUrl && (_0x2c1832.innerHTML += ' (2/2)');
|
_0x2c1832.innerHTML = _0xa88a13.localization('Download Game Data');
|
||||||
new Promise(async function(resolve, reject) {
|
if (['arcade', 'mame', 'mame2003', 'fba0.2.97.29'].includes(_0x17edbf.system) && _0x17edbf.config.gameParentUrl) {
|
||||||
|
_0x2c1832.innerHTML += ' (2/2)';
|
||||||
|
}
|
||||||
|
if (_0x17edbf.config.gamePatchUrl) {
|
||||||
|
_0x2c1832.innerHTML += ' (2/2)';
|
||||||
|
}
|
||||||
|
(function() {
|
||||||
if (! _0x3cf3cf.startsWith('blob:')) {
|
if (! _0x3cf3cf.startsWith('blob:')) {
|
||||||
resolve(await _0x550f17.a.head(_0x3cf3cf, {}))
|
return _0x550f17.a.head(_0x3cf3cf, {});
|
||||||
} else {
|
} else {
|
||||||
var a = await fetch(_0x3cf3cf)
|
return new Promise(async function(resolve, reject) {
|
||||||
var a = await a.blob()
|
var a = await fetch(_0x3cf3cf);
|
||||||
resolve({headers:{'content-length': a.size, 'content-type': 'text/plain'}})
|
a = await a.blob();
|
||||||
|
resolve({headers:{'content-length': a.size, 'content-type': 'text/plain'}});
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}).then(function(_0x3d703e) {
|
})().then(function(_0x3d703e) {
|
||||||
var _0x21b526 = _0x3d703e.headers['content-length'],
|
var _0x21b526 = _0x3d703e.headers['content-length'],
|
||||||
_0x7e8d4c = _0x3d703e.headers['content-type'],
|
_0x7e8d4c = _0x3d703e.headers['content-type'],
|
||||||
_0x107e8a = (_0x3d703e.headers['last-modified'], '' .concat(_0x594488, '-').concat(_0x139f1c)),
|
_0x107e8a = (_0x3d703e.headers['last-modified'], '' .concat(_0x594488, '-').concat(_0x139f1c)),
|
||||||
_0x43a689 = function() {
|
_0x43a689 = function() {
|
||||||
_0x550f17.a.get(_0x3cf3cf, {
|
(function() {
|
||||||
'onDownloadProgress': function(_0x4e7133) {
|
if (_0x3cf3cf.startsWith('blob:')) {
|
||||||
var _0x13b999 = _0x4e7133.total ? '' .concat(Math.floor(_0x4e7133.loaded / _0x4e7133.total * 0x64), '%') : '';
|
return new Promise(async function(resolve, reject) {
|
||||||
['arcade', 'mame', 'mame2003', 'fba0.2.97.29'].includes(_0x17edbf.system) && _0x17edbf.config.gameParentUrl ? _0x2c1832.innerHTML = _0xa88a13.localization('Download Game Data')+' (2/2) ' .concat(_0x13b999) : _0x17edbf.config.gamePatchUrl ? _0x2c1832.innerHTML = _0xa88a13.localization('Download Game Data')+' (2/2) ' .concat(_0x13b999) : _0x2c1832.innerHTML = _0xa88a13.localization('Download Game Data')+' ' .concat(_0x13b999);
|
var a = await fetch(_0x3cf3cf);
|
||||||
},
|
a = await a.arrayBuffer();
|
||||||
'responseType': 'arraybuffer'
|
resolve({data:a});
|
||||||
}).then(function(_0x22a1f4) {
|
})
|
||||||
|
} else {
|
||||||
|
return _0x550f17.a.get(_0x3cf3cf, {
|
||||||
|
'onDownloadProgress': function(_0x4e7133) {
|
||||||
|
var _0x13b999 = _0x4e7133.total ? '' .concat(Math.floor(_0x4e7133.loaded / _0x4e7133.total * 0x64), '%') : '';
|
||||||
|
['arcade', 'mame', 'mame2003', 'fba0.2.97.29'].includes(_0x17edbf.system) && _0x17edbf.config.gameParentUrl ? _0x2c1832.innerHTML = _0xa88a13.localization('Download Game Data')+' (2/2) ' .concat(_0x13b999) : _0x17edbf.config.gamePatchUrl ? _0x2c1832.innerHTML = _0xa88a13.localization('Download Game Data')+' (2/2) ' .concat(_0x13b999) : _0x2c1832.innerHTML = _0xa88a13.localization('Download Game Data')+' ' .concat(_0x13b999);
|
||||||
|
},
|
||||||
|
'responseType': 'arraybuffer'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})().then(function(_0x22a1f4) {
|
||||||
var _0x17edbf = new Uint8Array(_0x22a1f4.data);
|
var _0x17edbf = new Uint8Array(_0x22a1f4.data);
|
||||||
if (_0xa88a13.config.gameUrl.startsWith('blob:') || _0xa88a13.config.gameUrl.startsWith('file:') || _0xa88a13.config.gameUrl.startsWith('chrome-extension:') || ((window.location.protocol == 'file:' || window.location.protocol == 'chrome-extension:') && _0xa88a13.config.gameUrl.split(':').length == 1)) {_0x3512e9(_0x139f1c, _0x17edbf);return;};
|
if (_0xa88a13.config.gameUrl.startsWith('blob:') || _0xa88a13.config.gameUrl.startsWith('file:') || _0xa88a13.config.gameUrl.startsWith('chrome-extension:') || ((window.location.protocol == 'file:' || window.location.protocol == 'chrome-extension:') && _0xa88a13.config.gameUrl.split(':').length == 1)) {_0x3512e9(_0x139f1c, _0x17edbf);return;};
|
||||||
if (_0x107e8a && _0x4e171c.db)
|
if (_0x107e8a && _0x4e171c.db)
|
||||||
|
@ -1620,7 +1636,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
});
|
});
|
||||||
_0x3512e9(_0x139f1c, _0x17edbf);
|
_0x3512e9(_0x139f1c, _0x17edbf);
|
||||||
}).catch(function(_0x2e4d62) {
|
}).catch(function(_0x2e4d62) {
|
||||||
console.log(_0x2e4d62), _0x2c1832.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0xa88a13.localization('Network Error')+'</strong>';
|
void 0 === _0x2e4d62.response ? _0x2c1832.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;"><a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors">'+_0xa88a13.localization('CORS Error')+'</a></strong>' : _0x2c1832.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0xa88a13.localization('Network Error')+'</strong>';
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
_0x1ffb98.db ? _0x1ffb98.get(_0x107e8a, function(_0x5afc4a) {
|
_0x1ffb98.db ? _0x1ffb98.get(_0x107e8a, function(_0x5afc4a) {
|
||||||
|
@ -1644,7 +1660,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
else _0x43a689();
|
else _0x43a689();
|
||||||
}) : _0x43a689();
|
}) : _0x43a689();
|
||||||
}).catch(function(_0x5ec6be) {
|
}).catch(function(_0x5ec6be) {
|
||||||
_0x2c1832.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0xa88a13.localization('Network Error')+'</strong>';
|
void 0 === _0x5ec6be.response ? _0x2c1832.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;"><a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors">'+_0xa88a13.localization('CORS Error')+'</a></strong>' : _0x2c1832.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0xa88a13.localization('Network Error')+'</strong>';
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
_0x139f68 = function() {
|
_0x139f68 = function() {
|
||||||
|
@ -1655,7 +1671,8 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
_0x179b43 = _0x227b23[_0x227b23.length - 0x1];
|
_0x179b43 = _0x227b23[_0x227b23.length - 0x1];
|
||||||
_0x179b43.indexOf('?') > -0x1 && (_0x179b43 = _0x179b43.substr(0x0, _0x179b43.indexOf('?')));
|
_0x179b43.indexOf('?') > -0x1 && (_0x179b43 = _0x179b43.substr(0x0, _0x179b43.indexOf('?')));
|
||||||
_0x179b43.split('.').pop();
|
_0x179b43.split('.').pop();
|
||||||
_0x2591d9.innerHTML = _0xa88a13.localization('Download Game Data')+' (1/2)', _0x550f17.a.get(_0x5c896f, {
|
_0x2591d9.innerHTML = _0xa88a13.localization('Download Game Data')+' (1/2)';
|
||||||
|
_0x550f17.a.get(_0x5c896f, {
|
||||||
'onDownloadProgress': function(_0x3da9ab) {
|
'onDownloadProgress': function(_0x3da9ab) {
|
||||||
_0x2591d9.innerHTML = _0xa88a13.localization('Download Game Data')+' (1/2) ';
|
_0x2591d9.innerHTML = _0xa88a13.localization('Download Game Data')+' (1/2) ';
|
||||||
var _0x17edbf = _0x3da9ab.total ? '' .concat(Math.floor(_0x3da9ab.loaded / _0x3da9ab.total * 0x64), '%') : '';
|
var _0x17edbf = _0x3da9ab.total ? '' .concat(Math.floor(_0x3da9ab.loaded / _0x3da9ab.total * 0x64), '%') : '';
|
||||||
|
@ -1693,7 +1710,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
}), _0x4c332a = true), _0x4c332a || (_0x468801 += _0x1097ca.length, _0x4d7024.gamePatch = '/' .concat(_0xe531f0), _0x4d7024._FS.createDataFile('/', _0xe531f0, _0x1097ca, true, !0x1), _0x5048db());
|
}), _0x4c332a = true), _0x4c332a || (_0x468801 += _0x1097ca.length, _0x4d7024.gamePatch = '/' .concat(_0xe531f0), _0x4d7024._FS.createDataFile('/', _0xe531f0, _0x1097ca, true, !0x1), _0x5048db());
|
||||||
}(_0x179b43, _0x39a81f);
|
}(_0x179b43, _0x39a81f);
|
||||||
}).catch(function(_0x314293) {
|
}).catch(function(_0x314293) {
|
||||||
console.log(_0x314293), _0x2591d9.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0xa88a13.localization('Network Error')+'</strong>';
|
void 0 === _0x314293.response ? _0x2c1832.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;"><a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors">'+_0xa88a13.localization('CORS Error')+'</a></strong>' : _0x2c1832.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0xa88a13.localization('Network Error')+'</strong>';
|
||||||
});
|
});
|
||||||
} else _0x5048db();
|
} else _0x5048db();
|
||||||
},
|
},
|
||||||
|
@ -1758,7 +1775,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
console.log(_0x125736);
|
console.log(_0x125736);
|
||||||
}
|
}
|
||||||
}).catch(function(_0x516cc3) {
|
}).catch(function(_0x516cc3) {
|
||||||
console.log(_0x516cc3), _0x2c1832.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0xa88a13.localization('Network Error')+'</strong>';
|
void 0 === _0x516cc3.response ? _0x2c1832.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;"><a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors">'+_0xa88a13.localization('CORS Error')+'</a></strong>' : _0x2c1832.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0xa88a13.localization('Network Error')+'</strong>';
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
_0x1ffb98.db ? _0x1ffb98.get(_0x316472, function(_0x3e612b) {
|
_0x1ffb98.db ? _0x1ffb98.get(_0x316472, function(_0x3e612b) {
|
||||||
|
@ -1778,7 +1795,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
else _0x31f098();
|
else _0x31f098();
|
||||||
}) : _0x31f098();
|
}) : _0x31f098();
|
||||||
}).catch(function(_0x20f2e3) {
|
}).catch(function(_0x20f2e3) {
|
||||||
_0x2c1832.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0xa88a13.localization('Network Error')+'</strong>';
|
void 0 === _0x20f2e3.response ? _0x2c1832.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;"><a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors">'+_0xa88a13.localization('CORS Error')+'</a></strong>' : _0x2c1832.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0xa88a13.localization('Network Error')+'</strong>';
|
||||||
});
|
});
|
||||||
} else _0x139f68();
|
} else _0x139f68();
|
||||||
},
|
},
|
||||||
|
@ -1887,14 +1904,14 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
'data': _0x17edbf
|
'data': _0x17edbf
|
||||||
}), _0x57d85d(_0x103241, _0x17edbf);
|
}), _0x57d85d(_0x103241, _0x17edbf);
|
||||||
}).catch(function(_0x58e374) {
|
}).catch(function(_0x58e374) {
|
||||||
_0x1f8424.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0xa88a13.localization('Network Error')+'</strong>';
|
void 0 === _0x58e374.response ? _0x1f8424.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;"><a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors">'+_0xa88a13.localization('CORS Error')+'</a></strong>' : _0x1f8424.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0xa88a13.localization('Network Error')+'</strong>';
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
_0xa884ea.db ? _0xa884ea.get(_0x51bfef, function(_0x5cac21) {
|
_0xa884ea.db ? _0xa884ea.get(_0x51bfef, function(_0x5cac21) {
|
||||||
_0x5cac21 && _0x5cac21.filename === _0x103241 && _0x5cac21.filesize - _0x8e30bf == 0x0 && _0x5cac21.filetype === _0x14309b ? _0x57d85d(_0x5cac21.filename, _0x5cac21.data) : _0x574747();
|
_0x5cac21 && _0x5cac21.filename === _0x103241 && _0x5cac21.filesize - _0x8e30bf == 0x0 && _0x5cac21.filetype === _0x14309b ? _0x57d85d(_0x5cac21.filename, _0x5cac21.data) : _0x574747();
|
||||||
}) : _0x574747();
|
}) : _0x574747();
|
||||||
}).catch(function(_0x4f39c1) {
|
}).catch(function(_0x4f39c1) {
|
||||||
_0x1f8424.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0xa88a13.localization('Network Error')+'</strong>';
|
void 0 === _0x4f39c1.response ? _0x1f8424.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;"><a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors">'+_0xa88a13.localization('CORS Error')+'</a></strong>' : _0x1f8424.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0xa88a13.localization('Network Error')+'</strong>';
|
||||||
});
|
});
|
||||||
} else _0x452592();
|
} else _0x452592();
|
||||||
},
|
},
|
||||||
|
@ -2026,7 +2043,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}).catch(function(_0x2e06c8) {
|
}).catch(function(_0x2e06c8) {
|
||||||
_0x3787ba.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0x2c1832.localization('Network Error')+'</strong>';
|
void 0 === _0x2e06c8.response ? _0x3787ba.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;"><a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors">'+_0xc6823.localization('CORS Error')+'</a></strong>' : _0x3787ba.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0xc6823.localization('Network Error')+'</strong>';
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
_0x550f17.a.get(_0xa88a13, {}).then(function(_0x578a2b) {
|
_0x550f17.a.get(_0xa88a13, {}).then(function(_0x578a2b) {
|
||||||
|
@ -2135,7 +2152,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
_0x254bc2 || _0x1e2c68.element(_0x2c1832.elements.buttons.netplay) && _0x132da7(_0x2c1832.elements.buttons.netplay, true), _0x1e2c68.element(_0x2c1832.elements.buttons.saveState) && _0x132da7(_0x2c1832.elements.buttons.saveState, !_0x5b1dcd), _0x1e2c68.element(_0x2c1832.elements.buttons.loadState) && _0x132da7(_0x2c1832.elements.buttons.loadState, !_0x5b1dcd), _0x132da7(_0x2593da.contextMenu.querySelectorAll('ul li').item(0x2), !_0x5b1dcd), _0x132da7(_0x2593da.contextMenu.querySelectorAll('ul li').item(0x3), !_0x5b1dcd);
|
_0x254bc2 || _0x1e2c68.element(_0x2c1832.elements.buttons.netplay) && _0x132da7(_0x2c1832.elements.buttons.netplay, true), _0x1e2c68.element(_0x2c1832.elements.buttons.saveState) && _0x132da7(_0x2c1832.elements.buttons.saveState, !_0x5b1dcd), _0x1e2c68.element(_0x2c1832.elements.buttons.loadState) && _0x132da7(_0x2c1832.elements.buttons.loadState, !_0x5b1dcd), _0x132da7(_0x2593da.contextMenu.querySelectorAll('ul li').item(0x2), !_0x5b1dcd), _0x132da7(_0x2593da.contextMenu.querySelectorAll('ul li').item(0x3), !_0x5b1dcd);
|
||||||
_0xc6823.setStatesSupported(_0x5b1dcd);
|
_0xc6823.setStatesSupported(_0x5b1dcd);
|
||||||
}).catch(function(_0x2d06a9) {
|
}).catch(function(_0x2d06a9) {
|
||||||
_0x3787ba.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0x2c1832.localization('Network Error')+'</strong>';
|
void 0 === _0x2d06a9.response ? _0x3787ba.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;"><a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors">'+_0xc6823.localization('CORS Error')+'</a></strong>' : _0x3787ba.innerHTML = '<strong style="color:#f00;text-shadow: 0px 0px 3px;">'+_0xc6823.localization('Network Error')+'</strong>';
|
||||||
}), clearInterval(_0x1c9c57), _0x4d7024.romdb = _0x4e171c;
|
}), clearInterval(_0x1c9c57), _0x4d7024.romdb = _0x4e171c;
|
||||||
}
|
}
|
||||||
}, 0x1f4);
|
}, 0x1f4);
|
||||||
|
@ -3452,7 +3469,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
var _0xa88a13 = this,
|
var _0xa88a13 = this,
|
||||||
_0x17edbf = this,
|
_0x17edbf = this,
|
||||||
_0x2c1832 = this.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames.overlay)),
|
_0x2c1832 = this.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames.overlay)),
|
||||||
_0x181250 = new _0x4ad1c6[('Gamepad')]();
|
_0x181250 = new _0x4ad1c6.Gamepad();
|
||||||
_0x378b5c.gamepad = _0x181250, _0x181250.init() && (_0x181250.bind(_0x4ad1c6.Gamepad.Event.TICK, function(_0x2fe35d) {
|
_0x378b5c.gamepad = _0x181250, _0x181250.init() && (_0x181250.bind(_0x4ad1c6.Gamepad.Event.TICK, function(_0x2fe35d) {
|
||||||
_0x2fe35d.forEach(function(_0x2b21f8) {
|
_0x2fe35d.forEach(function(_0x2b21f8) {
|
||||||
var _0x17edbf;
|
var _0x17edbf;
|
||||||
|
@ -4052,7 +4069,6 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
_0xa88a13.recordData = {started:false, data:[], stopped: false}
|
_0xa88a13.recordData = {started:false, data:[], stopped: false}
|
||||||
}
|
}
|
||||||
if (! _0xa88a13.recordData.started) { //start recording
|
if (! _0xa88a13.recordData.started) { //start recording
|
||||||
_0xa88a13.elements.buttons.screenRecord.getElementsByClassName('ejs--74c6d4176d27e37a19d2e9e61de8f4')[0].innerHTML = _0xa88a13.localization('Stop Screen Recording');
|
|
||||||
if (MediaRecorder.isTypeSupported('video/webm; codecs=h264')) {
|
if (MediaRecorder.isTypeSupported('video/webm; codecs=h264')) {
|
||||||
var options = {mimeType: 'video/webm; codecs=h264'}; // video/webm; codecs=h264,opus
|
var options = {mimeType: 'video/webm; codecs=h264'}; // video/webm; codecs=h264,opus
|
||||||
} else if (MediaRecorder.isTypeSupported('video/webm; codecs=H264')) {
|
} else if (MediaRecorder.isTypeSupported('video/webm; codecs=H264')) {
|
||||||
|
@ -4070,28 +4086,53 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
} else {
|
} else {
|
||||||
var options = {};
|
var options = {};
|
||||||
}
|
}
|
||||||
_0xa88a13.recordData.stream = _0x27f4c4.Module.canvas.captureStream(30);
|
function gotStreams(stream) {
|
||||||
//_0xa88a13.recordData.stream.addTrack(); // TODO - find audio element
|
_0xa88a13.elements.buttons.screenRecord.getElementsByClassName('ejs--74c6d4176d27e37a19d2e9e61de8f4')[0].innerHTML = _0xa88a13.localization('Stop Screen Recording');
|
||||||
_0xa88a13.recordData.recorder = new MediaRecorder(_0xa88a13.recordData.stream, options);
|
_0xa88a13.recordData.stream = stream;
|
||||||
_0xa88a13.recordData.recorder.ondataavailable = function(e) {
|
_0xa88a13.recordData.recorder = new MediaRecorder(_0xa88a13.recordData.stream, options);
|
||||||
if (e.data.size > 0) {
|
_0xa88a13.recordData.recorder.ondataavailable = function(e) {
|
||||||
_0xa88a13.recordData.data.push(e.data)
|
if (e.data.size > 0) {
|
||||||
}
|
_0xa88a13.recordData.data.push(e.data)
|
||||||
if (_0xa88a13.recordData.stopped) {
|
}
|
||||||
var a = document.createElement("a")
|
if (_0xa88a13.recordData.stopped) {
|
||||||
a.href = window.URL.createObjectURL(new Blob(_0xa88a13.recordData.data, {type: "video/webm"}))
|
var a = document.createElement("a")
|
||||||
if (typeof _0xa88a13.gameName == 'string') {
|
a.href = window.URL.createObjectURL(new Blob(_0xa88a13.recordData.data, {type: "video/webm"}))
|
||||||
var aname = _0xa88a13.gameName
|
if (typeof _0xa88a13.gameName == 'string') {
|
||||||
|
var aname = _0xa88a13.gameName
|
||||||
|
}
|
||||||
|
a.download = aname ? '' .concat(aname, '-recording.webm') : 'record.webm';
|
||||||
|
a.click()
|
||||||
|
window.URL.revokeObjectURL(a.href)
|
||||||
|
delete _0xa88a13.recordData
|
||||||
|
_0xa88a13.elements.buttons.screenRecord.getElementsByClassName('ejs--74c6d4176d27e37a19d2e9e61de8f4')[0].innerHTML = _0xa88a13.localization('Start Screen Recording');
|
||||||
}
|
}
|
||||||
a.download = aname ? '' .concat(aname, '-recording.webm') : 'record.webm';
|
|
||||||
a.click()
|
|
||||||
window.URL.revokeObjectURL(a.href)
|
|
||||||
delete _0xa88a13.recordData
|
|
||||||
_0xa88a13.elements.buttons.screenRecord.getElementsByClassName('ejs--74c6d4176d27e37a19d2e9e61de8f4')[0].innerHTML = _0xa88a13.localization('Start Screen Recording');
|
|
||||||
}
|
}
|
||||||
|
_0xa88a13.recordData.recorder.start()
|
||||||
|
_0xa88a13.recordData.started = true
|
||||||
}
|
}
|
||||||
_0xa88a13.recordData.recorder.start()
|
_0x27f4c4.Module.pauseMainLoop();
|
||||||
_0xa88a13.recordData.started = true
|
_0xa88a13.playing = false;
|
||||||
|
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');
|
||||||
|
var canvasStream = _0x27f4c4.Module.canvas.captureStream(30);
|
||||||
|
var time = setTimeout(function() {
|
||||||
|
_0xa88a13.playing = true;
|
||||||
|
_0x27f4c4.Module.resumeMainLoop();
|
||||||
|
}, 20000);
|
||||||
|
navigator.mediaDevices.getDisplayMedia({
|
||||||
|
audio: true, //we only need the audio, we dont use the video stream at all
|
||||||
|
video: {mediaSource: "screen"}
|
||||||
|
}).then(function(stream) {
|
||||||
|
try {
|
||||||
|
clearTimeout(time);
|
||||||
|
}catch(e){}
|
||||||
|
var audio = stream.getAudioTracks();
|
||||||
|
for (var i=0; i<audio.length; i++) {
|
||||||
|
canvasStream.addTrack(audio[i]);
|
||||||
|
}
|
||||||
|
gotStreams(canvasStream);
|
||||||
|
_0xa88a13.playing = true;
|
||||||
|
_0x27f4c4.Module.resumeMainLoop();
|
||||||
|
})
|
||||||
} else if (_0xa88a13.recordData.started) { //stop recording
|
} else if (_0xa88a13.recordData.started) { //stop recording
|
||||||
_0xa88a13.recordData.recorder.stop()
|
_0xa88a13.recordData.recorder.stop()
|
||||||
_0xa88a13.recordData.stopped = true
|
_0xa88a13.recordData.stopped = true
|
||||||
|
@ -6239,19 +6280,16 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
split1.push(split3[i])
|
split1.push(split3[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (! path.startsWith('/') && path.split('://').length == 1 && path.split('http:').length == 1 && path.split('https:').length == 1 && path.split('file:').length == 1 && path.split('blob:').length == 1) {
|
if (! path.startsWith('/') && !path.includes('://') && !path.includes('http:') && !path.includes('https:') && !path.includes('file:') && !path.includes('blob:')) {
|
||||||
for (var w=0; w<split2.length; w++) {
|
for (var w=0; w<split2.length; w++) {
|
||||||
if (split2[w] == '' || split2[w] == '.') {
|
if (split2[w] == '' || split2[w] == '.') {
|
||||||
} else if (split2[w] == '..') {
|
} else if (split2[w] == '..') {
|
||||||
if (split1.length > 0) {
|
if (split1.length > 0) {
|
||||||
var split1 = function(origpath) {
|
var split1 = function(origpath) {
|
||||||
var fullrequestpath = origpath
|
if (origpath === '/') {
|
||||||
var finpath = fullrequestpath.split('/').pop()
|
|
||||||
var finalpath = fullrequestpath.substring(0, fullrequestpath.length - finpath.length)
|
|
||||||
if (origpath == '/') {
|
|
||||||
return '/'
|
return '/'
|
||||||
} else {
|
} else {
|
||||||
return finalpath
|
return origpath.substring(0, origpath.length - origpath.split('/').pop().length);
|
||||||
}
|
}
|
||||||
}(split1.join('/')).split('/');
|
}(split1.join('/')).split('/');
|
||||||
}
|
}
|
||||||
|
@ -6276,7 +6314,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
var a = function(_0x154660, _0x15626f) {
|
var a = function(_0x154660, _0x15626f) {
|
||||||
if (!(_0x154660 instanceof _0x15626f)) throw new TypeError('Cannot call a class as a function');
|
if (!(_0x154660 instanceof _0x15626f)) throw new TypeError('Cannot call a class as a function');
|
||||||
}(this, _0x6954aa);
|
}(this, _0x6954aa);
|
||||||
this.version = '1.1.0';
|
this.version = '1.1.2';
|
||||||
this.system = '';
|
this.system = '';
|
||||||
this.adUrl = null;
|
this.adUrl = null;
|
||||||
this.gameName = null;
|
this.gameName = null;
|
||||||
|
@ -6556,4 +6594,3 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
||||||
_0x3dbc76.defaults = {};
|
_0x3dbc76.defaults = {};
|
||||||
_0x17edbf.default = _0x3dbc76;
|
_0x17edbf.default = _0x3dbc76;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
9
data/emu-min.js
vendored
9
data/emu-min.js
vendored
File diff suppressed because one or more lines are too long
6632
data/emulator.js
6632
data/emulator.js
File diff suppressed because one or more lines are too long
|
@ -1,12 +1,12 @@
|
||||||
(async function() {
|
(async function() {
|
||||||
var VERSION = 1.1;
|
var VERSION = 1.2;
|
||||||
if (window.location && ['localhost', '127.0.0.1'].includes(location.hostname)) {
|
if (window.location && ['localhost', '127.0.0.1'].includes(location.hostname)) {
|
||||||
fetch('https://raw.githack.com/ethanaobrien/emulatorjs/main/data/version.json').then(response => {
|
fetch('https://raw.githack.com/ethanaobrien/emulatorjs/main/data/version.json').then(response => {
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
response.text().then(body => {
|
response.text().then(body => {
|
||||||
var version = JSON.parse(body);
|
var version = JSON.parse(body);
|
||||||
if (VERSION < version.current_version) {
|
if (VERSION < version.current_version) {
|
||||||
console.log('Using emulatorjs version ' + usingVersion + ' but the newest version is ' + version.current_version + '\nopen https://github.com/ethanaobrien/emulatorjs to update');
|
console.log('Using emulatorjs version ' + VERSION + ' but the newest version is ' + version.current_version + '\nopen https://github.com/ethanaobrien/emulatorjs to update');
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
21
data/minify/index.js
Normal file
21
data/minify/index.js
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
const UglifyJS = require("uglify-js");
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
if (!String.prototype.replaceAll) {
|
||||||
|
String.prototype.replaceAll = function(a, b) {
|
||||||
|
return this.split(a).join(b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var a = fs.readFileSync('../emu-main.js', 'utf8').substring(18);
|
||||||
|
var code = fs.readFileSync('../emulator.js', 'utf8').replaceAll('window.EJS_main', a);
|
||||||
|
|
||||||
|
function minify(source){
|
||||||
|
var ast = UglifyJS.parse(source);
|
||||||
|
return UglifyJS.minify(ast).code;
|
||||||
|
}
|
||||||
|
console.log('minifying')
|
||||||
|
var min = minify(code);
|
||||||
|
console.log('done!')
|
||||||
|
|
||||||
|
fs.writeFileSync('../emu-min.js', min);
|
22
data/minify/package.json
Normal file
22
data/minify/package.json
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"name": "emulatorjs-minify",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Minify the emulatorjs javascript files",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
|
"build": "node index.js"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/ethanaobrien/youtube-downloader.git"
|
||||||
|
},
|
||||||
|
"author": "Ethan O'Brien",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/ethanaobrien/emulatorjs/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/ethanaobrien/emulatorjs#readme",
|
||||||
|
"dependencies": {
|
||||||
|
"uglify-js": "^3.15.3"
|
||||||
|
}
|
||||||
|
}
|
|
@ -1 +1 @@
|
||||||
{ "current_version": 1.1 }
|
{ "current_version": 1.2 }
|
||||||
|
|
47
docs/3DO.md
47
docs/3DO.md
|
@ -1,47 +0,0 @@
|
||||||
<h2>3DO</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_biosUrl = ''; // Url to Bios file
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = '3do';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
Your rom MUST have one of the following extensions
|
|
||||||
|
|
||||||
```
|
|
||||||
.bin
|
|
||||||
.cue
|
|
||||||
.iso
|
|
||||||
```
|
|
||||||
|
|
||||||
Panasonic FZ-1 `f47264dd47fe30f73ab3c010015c155b`
|
|
||||||
|
|
||||||
Panasonic FZ-10 `51f2f43ae2f3508a14d9f56597e2d3ce`
|
|
||||||
|
|
||||||
Panasonic FZ-10 `1477bda80dc33731a65468c1f5bcbee9`
|
|
||||||
|
|
||||||
Panasonic FZ-10-E `a48e6746bd7edec0f40cff078f0bb19f`
|
|
||||||
|
|
||||||
Panasonic FZ-10-E `cf11bbb5a16d7af9875cca9de9a15e09`
|
|
||||||
|
|
||||||
Goldstar GDO-101M `8639fd5e549bd6238cfee79e3e749114`
|
|
||||||
|
|
||||||
Sanyo IMP-21J TRY `35fa1a1ebaaeea286dc5cd15487c13ea`
|
|
||||||
|
|
||||||
Shootout At Old Tucson `8970fc987ab89a7f64da9f8a8c4333ff`
|
|
||||||
|
|
||||||
Panasonic FZ-1 Kanji ROM `b8dc97f778a6245c58e064b0312e8281`
|
|
||||||
|
|
||||||
Panasonic FZ-10JA Kanji ROM `428577250f43edc902ea239c50d2240d`
|
|
||||||
|
|
||||||
Panasonic FZ-1J Kanji ROM `c23fb5d5e6bb1c240d02cf968972be37`
|
|
|
@ -1,26 +0,0 @@
|
||||||
<h2>Arcade</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_biosUrl = ''; // Url to Bios file
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'arcade';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
Use only FBA v0.2.97.42 ROMs set
|
|
||||||
Important! all roms must use the same name at support list with extension .zip
|
|
||||||
|
|
||||||
neogeo.zip Required for Neo Geo Games `410c65b2debdf4f2dac9ea2b23aa496e`
|
|
||||||
|
|
||||||
pgm.zip Required for IGS Games `653e991a39e867354d090c3394157d1c`
|
|
||||||
|
|
||||||
isgsm.zip ISG Selection Master Type 2006 BIOS `4a56d56e2219c5e2b006b66a4263c01c`
|
|
|
@ -1,20 +0,0 @@
|
||||||
<h2>Atari 2600</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'atari2600';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
There is no bios for this system
|
|
|
@ -1,20 +0,0 @@
|
||||||
<h2>Atari 7800</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'atari7800';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
There is no bios for this system
|
|
|
@ -1,20 +0,0 @@
|
||||||
<h2>Atari Jaguar</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'jaguar';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
There is no bios for this system
|
|
|
@ -1,20 +0,0 @@
|
||||||
<h2>Atari Lynx</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'lynx';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
There is no bios for this system
|
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
22
docs/MSX.md
22
docs/MSX.md
|
@ -1,22 +0,0 @@
|
||||||
<h2>MSX</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_biosUrl = ''; // Url to Bios file
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'msx';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
<p>You can download the 'Databases' and 'Machines' folders from an <a href='http://bluemsx.msxblue.com/download.html'>official full standalone blueMSX emulator installation.</a> Get blueMSXv282full.zip near the bottom of the page.</p>
|
|
||||||
Compress the 'Databases' and 'Machines' Folders to 7z or zip archive.
|
|
|
@ -1,27 +0,0 @@
|
||||||
<h2>NES / Famicom</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_biosUrl = ''; // Url to Famicom Disk System bios
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'nes';
|
|
||||||
EJS_lightgun = false; // Lightgun
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
Your rom MUST have one of the following extensions
|
|
||||||
|
|
||||||
```
|
|
||||||
.fds
|
|
||||||
.nes
|
|
||||||
.unif
|
|
||||||
.unf
|
|
||||||
```
|
|
||||||
You can find the famicon BIOS by looking up the md5 sum which is `ca30b50f880eb660a320674ed365ef7a`
|
|
|
@ -1,20 +0,0 @@
|
||||||
<h2>Neo Geo Poket</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'ngp';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
There is no bios for this system
|
|
|
@ -1,19 +0,0 @@
|
||||||
<h2>Nintendo 64</h2>
|
|
||||||
|
|
||||||
Code Example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'n64';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
I do not know the file extension limits for this system. I know the `.z64` roms work.
|
|
||||||
|
|
||||||
There is no bios for this system
|
|
|
@ -1,20 +0,0 @@
|
||||||
<h2>Nintendo DS</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'nds';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
There is no bios for this system
|
|
|
@ -1,27 +0,0 @@
|
||||||
<h2>Nintendo Game Boy Advance</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_biosUrl = '';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'gba';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
You can find the Game Boy Advance BIOS by looking up the md5 sum which is ` a860e8c0b6d573d191e4ec7db1b1e4f6`
|
|
||||||
|
|
||||||
You can find the Game Boy BIOS by looking up the md5 sum which is ` 32fbbd84168d3482956eb3c5051637f5`
|
|
||||||
|
|
||||||
You can find the Game Boy Color BIOS by looking up the md5 sum which is `dbfce9db9deaa2567f6a84fde55f9680`
|
|
||||||
|
|
||||||
You can find the Super Game Boy BIOS by looking up the md5 sum which is `d574d4f9c12f305074798f54c091a8b4`
|
|
|
@ -1,23 +0,0 @@
|
||||||
<h2>Nintendo Game Boy</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_biosUrl = '';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'gb';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
You can find the Game Boy BIOS by looking up the md5 sum which is `32fbbd84168d3482956eb3c5051637f5`
|
|
||||||
|
|
||||||
You can find the Game Boy Color BIOS by looking up the md5 sum which is `dbfce9db9deaa2567f6a84fde55f9680`
|
|
|
@ -1,35 +0,0 @@
|
||||||
<h2>PlayStation</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_biosUrl = ''; // Url to Bios file
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'psx';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
Your rom MUST have one of the following extensions
|
|
||||||
|
|
||||||
```
|
|
||||||
.bin
|
|
||||||
.cue
|
|
||||||
.img
|
|
||||||
.mdf
|
|
||||||
.pbp
|
|
||||||
.toc
|
|
||||||
.cbn
|
|
||||||
.m3u
|
|
||||||
.ccd
|
|
||||||
```
|
|
||||||
You can find the PlayStation 1 JP BIOS by looking up the md5 sum which is `8dd7d5296a650fac7319bce665a6a53c`
|
|
||||||
|
|
||||||
You can find the PlayStation 1 US BIOS by looking up the md5 sum which is `490f666e1afb15b7362b406ed1cea246`
|
|
||||||
|
|
||||||
You can find the PlayStation 1 EU BIOS by looking up the md5 sum which is `32736f17079d0b2b7024407c39bd3050`
|
|
31
docs/SNES.md
31
docs/SNES.md
|
@ -1,31 +0,0 @@
|
||||||
<h2>SNES</h2>
|
|
||||||
|
|
||||||
Code Example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'snes';
|
|
||||||
EJS_mouse = false; // SNES Mouse
|
|
||||||
EJS_multitap = false; // SNES Multitap
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
Your rom MUST have one of the following extensions
|
|
||||||
|
|
||||||
```
|
|
||||||
.smc
|
|
||||||
.fig
|
|
||||||
.sfc
|
|
||||||
.gd3
|
|
||||||
.gd7
|
|
||||||
.dx2
|
|
||||||
.bsx
|
|
||||||
.swc
|
|
||||||
```
|
|
||||||
There is no bios for this system
|
|
|
@ -1,20 +0,0 @@
|
||||||
<h2>Sega 32X</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'sega32x';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
There is no bios for this system
|
|
|
@ -1,24 +0,0 @@
|
||||||
<h2>Sega CD</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'segaCD';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
You can find the MegaCD EU BIOS by looking up the md5 sum which is `e66fa1dc5820d254611fdcdba0662372`
|
|
||||||
|
|
||||||
You can find the SegaCD US BIOS by looking up the md5 sum which is `854b9150240a198070150e4566ae1290`
|
|
||||||
|
|
||||||
You can find the MegaCD EU BIOS by looking up the md5 sum which is `278a9397d192149e84e820ac621a8edd`
|
|
|
@ -1,20 +0,0 @@
|
||||||
<h2>Sega Game Gear</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'segaGG';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
GameGear BIOS (bootrom) - Optional `672e104c3be3a238301aceffc3b23fd6`
|
|
|
@ -1,24 +0,0 @@
|
||||||
<h2>Sega Master System</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'segaMS';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
bios_E.sms : MasterSystem EU BIOS (bootrom) - Optional 840481177270d5642a14ca71ee72844c
|
|
||||||
|
|
||||||
bios_U.sms : MasterSystem US BIOS (bootrom) - Optional 840481177270d5642a14ca71ee72844c
|
|
||||||
|
|
||||||
bios_J.sms : MasterSystem JP BIOS (bootrom) - Optional 24a519c53f67b00640d0048ef7089105
|
|
|
@ -1,20 +0,0 @@
|
||||||
<h2>Sega Mega Drive</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'segaMD';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
There is no bios for this system
|
|
|
@ -1,21 +0,0 @@
|
||||||
<h2>Sega Saturn</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_biosUrl = ''; // Url to Bios file
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'segaSaturn';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
Saturn BIOS - Optional `af5828fdff51384f99b3c4926be27762`
|
|
56
docs/Systems/3DO.md
Normal file
56
docs/Systems/3DO.md
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
# 3DO
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = '3do';
|
||||||
|
|
||||||
|
// URL to Bios file
|
||||||
|
|
||||||
|
EJS_biosUrl = '';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
## ROM Type
|
||||||
|
|
||||||
|
Your **ROM** can have the following types:
|
||||||
|
- `bin`
|
||||||
|
- `cue`
|
||||||
|
- `iso`
|
||||||
|
|
||||||
|
## ROM List
|
||||||
|
|
||||||
|
| Name | MD5 Checksum |
|
||||||
|
|------|--------------|
|
||||||
|
| Panasonic FZ-1 | `f47264dd47fe30f73ab3c010015c155b`
|
||||||
|
| Panasonic FZ-10 | `51f2f43ae2f3508a14d9f56597e2d3ce`
|
||||||
|
| Panasonic FZ-10 | `1477bda80dc33731a65468c1f5bcbee9`
|
||||||
|
| Panasonic FZ-10-E | `a48e6746bd7edec0f40cff078f0bb19f`
|
||||||
|
| Panasonic FZ-10-E | `cf11bbb5a16d7af9875cca9de9a15e09`
|
||||||
|
| Goldstar GDO-101M | `8639fd5e549bd6238cfee79e3e749114`
|
||||||
|
| Sanyo IMP-21J TRY | `35fa1a1ebaaeea286dc5cd15487c13ea`
|
||||||
|
| Shootout At Old Tucson | `8970fc987ab89a7f64da9f8a8c4333ff`
|
||||||
|
| Panasonic FZ-1 Kanji ROM | `b8dc97f778a6245c58e064b0312e8281`
|
||||||
|
| Panasonic FZ-10JA Kanji ROM | `428577250f43edc902ea239c50d2240d`
|
||||||
|
| Panasonic FZ-1J Kanji ROM | `c23fb5d5e6bb1c240d02cf968972be37`
|
48
docs/Systems/Arcade.md
Normal file
48
docs/Systems/Arcade.md
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
# Arcade
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'arcade';
|
||||||
|
|
||||||
|
// URL to Bios file
|
||||||
|
|
||||||
|
EJS_biosUrl = '';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
## ROMS
|
||||||
|
|
||||||
|
Only use **FBA ROMs** of version`0.2.97.42`
|
||||||
|
|
||||||
|
### ROM List
|
||||||
|
|
||||||
|
The following **ROMs** must use the listed name.
|
||||||
|
|
||||||
|
| 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**
|
||||||
|
|
35
docs/Systems/Atari 2600.md
Normal file
35
docs/Systems/Atari 2600.md
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
# Atari 2600
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system. <br>
|
||||||
|
There is no bios for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'atari2600';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
33
docs/Systems/Atari 7800.md
Normal file
33
docs/Systems/Atari 7800.md
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
# Atari 7800
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system. <br>
|
||||||
|
There is no bios for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'atari7800';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
37
docs/Systems/Atari Jaguar.md
Normal file
37
docs/Systems/Atari Jaguar.md
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
# Atari Jaguar
|
||||||
|
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system. <br>
|
||||||
|
There is no bios for this system.
|
||||||
|
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'jaguar';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
32
docs/Systems/Atari Lynx.md
Normal file
32
docs/Systems/Atari Lynx.md
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
# Atari Lynx
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system. <br>
|
||||||
|
There is no bios for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'lynx';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
51
docs/Systems/MSX.md
Normal file
51
docs/Systems/MSX.md
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
# MSX
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'msx';
|
||||||
|
|
||||||
|
// URL to Bios file
|
||||||
|
|
||||||
|
EJS_biosUrl = '';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Downloads
|
||||||
|
|
||||||
|
You cand download the `Databases` & `Machines` <br>
|
||||||
|
folders from the **[BlueMSX Emulator]** installation.
|
||||||
|
|
||||||
|
Download the `blueMSXv282full.zip` file, <br>
|
||||||
|
located near the bottom of the page.
|
||||||
|
|
||||||
|
Compress the `Databases` and `Machines` <br>
|
||||||
|
folders to `7z` or `zip` archives.
|
||||||
|
|
||||||
|
|
||||||
|
<!----------------------------------------------------------------------------->
|
||||||
|
|
||||||
|
[BlueMSX Emulator]: http://bluemsx.msxblue.com/download.html
|
50
docs/Systems/NES-Famicom.md
Normal file
50
docs/Systems/NES-Famicom.md
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
# NES / Famicom
|
||||||
|
|
||||||
|
## Code Example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'nes';
|
||||||
|
|
||||||
|
// Lightgun
|
||||||
|
|
||||||
|
EJS_lightgun = false;
|
||||||
|
|
||||||
|
// URL to Famicom Disk System bios
|
||||||
|
|
||||||
|
EJS_biosUrl = '';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
## ROM Type
|
||||||
|
|
||||||
|
Your **ROM** can have the following types:
|
||||||
|
- `fds`
|
||||||
|
- `nes`
|
||||||
|
- `unif`
|
||||||
|
- `unf`
|
||||||
|
|
||||||
|
### BIOS
|
||||||
|
|
||||||
|
You can find the **Famicon BIOS** by looking up the **MD5** checksum: <br>
|
||||||
|
`ca30b50f880eb660a320674ed365ef7a`
|
35
docs/Systems/Neo Geo Poket.md
Normal file
35
docs/Systems/Neo Geo Poket.md
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
# Neo Geo Pocket
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system. <br>
|
||||||
|
There is no bios for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'ngp';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
35
docs/Systems/Nintendo 64.md
Normal file
35
docs/Systems/Nintendo 64.md
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
# Nintendo 64
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system. <br>
|
||||||
|
I know the `.z64` roms work. <br>
|
||||||
|
There is no bios for this system
|
||||||
|
|
||||||
|
## Code Example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'n64';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
34
docs/Systems/Nintendo DS.md
Normal file
34
docs/Systems/Nintendo DS.md
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
# Nintendo DS
|
||||||
|
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system. <br>
|
||||||
|
There is no bios for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'nds';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
47
docs/Systems/Nintendo Game Boy Advance.md
Normal file
47
docs/Systems/Nintendo Game Boy Advance.md
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
# Nintendo Game Boy Advance
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'gba';
|
||||||
|
|
||||||
|
// URL to Bios file
|
||||||
|
|
||||||
|
EJS_biosUrl = '';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
## BIOS
|
||||||
|
|
||||||
|
You can search for the BIOS you need by utilizing the **MD5** checksum.
|
||||||
|
|
||||||
|
| Type | MD5 Checksum |
|
||||||
|
|------|--------------|
|
||||||
|
| Game Boy Advance | `a860e8c0b6d573d191e4ec7db1b1e4f6`
|
||||||
|
| Game Boy | `32fbbd84168d3482956eb3c5051637f5`
|
||||||
|
| Game Boy Color | `dbfce9db9deaa2567f6a84fde55f9680`
|
||||||
|
| Super Game Boy | `d574d4f9c12f305074798f54c091a8b4`
|
||||||
|
|
45
docs/Systems/Nintendo Game Boy.md
Normal file
45
docs/Systems/Nintendo Game Boy.md
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
# Nintendo Game Boy
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'gb';
|
||||||
|
|
||||||
|
// URL to Bios file
|
||||||
|
|
||||||
|
EJS_biosUrl = '';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
## BIOS
|
||||||
|
|
||||||
|
You can search for the BIOS you need by utilizing the **MD5** checksum.
|
||||||
|
|
||||||
|
| Type | MD5 Checksum |
|
||||||
|
|------|--------------|
|
||||||
|
| Game Boy | `32fbbd84168d3482956eb3c5051637f5`
|
||||||
|
| Game Boy Color | `dbfce9db9deaa2567f6a84fde55f9680`
|
||||||
|
|
57
docs/Systems/PlayStation.md
Normal file
57
docs/Systems/PlayStation.md
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
# PlayStation
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'psx';
|
||||||
|
|
||||||
|
// URL to Bios file
|
||||||
|
|
||||||
|
EJS_biosUrl = '';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
## ROM Type
|
||||||
|
|
||||||
|
Your **ROM** can have the following types:
|
||||||
|
- `bin`
|
||||||
|
- `cue`
|
||||||
|
- `img`
|
||||||
|
- `mdf`
|
||||||
|
- `pbp`
|
||||||
|
- `toc`
|
||||||
|
- `cbn`
|
||||||
|
- `m3u`
|
||||||
|
- `ccd`
|
||||||
|
|
||||||
|
## BIOS
|
||||||
|
|
||||||
|
You can search for the BIOS you need by utilizing the **MD5** checksum.
|
||||||
|
|
||||||
|
| Type | MD5 Checksum |
|
||||||
|
|------|--------------|
|
||||||
|
| PlayStation 1 JP | `8dd7d5296a650fac7319bce665a6a53c`
|
||||||
|
| PlayStation 1 US | `490f666e1afb15b7362b406ed1cea246`
|
||||||
|
| PlayStation 1 EU | `32736f17079d0b2b7024407c39bd3050`
|
||||||
|
|
52
docs/Systems/SNES.md
Normal file
52
docs/Systems/SNES.md
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
# SNES
|
||||||
|
|
||||||
|
There is no bios for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'snes';
|
||||||
|
|
||||||
|
// SNES Mouse
|
||||||
|
|
||||||
|
EJS_mouse = false;
|
||||||
|
|
||||||
|
// SNES Multitap
|
||||||
|
|
||||||
|
EJS_multitap = false;
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
## ROM Type
|
||||||
|
|
||||||
|
Your **ROM** can have the following types:
|
||||||
|
- `smc`
|
||||||
|
- `fig`
|
||||||
|
- `sfc`
|
||||||
|
- `gd3`
|
||||||
|
- `gd7`
|
||||||
|
- `dx2`
|
||||||
|
- `bsx`
|
||||||
|
- `swc`
|
||||||
|
|
35
docs/Systems/Sega 32X.md
Normal file
35
docs/Systems/Sega 32X.md
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
# Sega 32X
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system. <br>
|
||||||
|
There is no bios for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'sega32x';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
43
docs/Systems/Sega CD.md
Normal file
43
docs/Systems/Sega CD.md
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
# Sega CD
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'segaCD';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
## BIOS
|
||||||
|
|
||||||
|
You can search for the BIOS you need by utilizing the **MD5** checksum.
|
||||||
|
|
||||||
|
| Type | MD5 Checksum |
|
||||||
|
|------|--------------|
|
||||||
|
| MegaCD EU | `e66fa1dc5820d254611fdcdba0662372`
|
||||||
|
| SegaCD US | `854b9150240a198070150e4566ae1290`
|
||||||
|
| MegaCD EU | `278a9397d192149e84e820ac621a8edd`
|
||||||
|
|
||||||
|
<!-- Are those names correct / intended? -->
|
35
docs/Systems/Sega Game Gear.md
Normal file
35
docs/Systems/Sega Game Gear.md
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
# Sega Game Gear
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'segaGG';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
## BIOS
|
||||||
|
|
||||||
|
GameGear BIOS (bootrom) - Optional `672e104c3be3a238301aceffc3b23fd6`
|
45
docs/Systems/Sega Master System.md
Normal file
45
docs/Systems/Sega Master System.md
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
# Sega Master System
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'segaMS';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
## BIOS
|
||||||
|
|
||||||
|
You can search for the BIOS you need by utilizing the **MD5** checksum.
|
||||||
|
|
||||||
|
(bootrom) - Optional
|
||||||
|
|
||||||
|
| Name | MD5 Checksum | Description |
|
||||||
|
|------|--------------|-------------|
|
||||||
|
| `bios_E.sms` | `840481177270d5642a14ca71ee72844c` | MasterSystem EU BIOS
|
||||||
|
| `bios_U.sms` | `840481177270d5642a14ca71ee72844c` | MasterSystem US BIOS
|
||||||
|
| `bios_J.sms` | `24a519c53f67b00640d0048ef7089105` | MasterSystem JP BIOS
|
||||||
|
|
||||||
|
<!-- EU & US have the same checksum? -->
|
32
docs/Systems/Sega Mega Drive.md
Normal file
32
docs/Systems/Sega Mega Drive.md
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
# Sega Mega Drive
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system. <br>
|
||||||
|
There is no bios for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'segaMD';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
39
docs/Systems/Sega Saturn.md
Normal file
39
docs/Systems/Sega Saturn.md
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
# Sega Saturn
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'segaSaturn';
|
||||||
|
|
||||||
|
// URL to Bios file
|
||||||
|
|
||||||
|
EJS_biosUrl = '';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
## BIOS
|
||||||
|
|
||||||
|
Saturn BIOS - Optional `af5828fdff51384f99b3c4926be27762`
|
39
docs/Systems/TurboGrafs 16-PC Engine.md
Normal file
39
docs/Systems/TurboGrafs 16-PC Engine.md
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
# TurboGrafs-16 | PC Engine
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'pce';
|
||||||
|
|
||||||
|
// URL to Bios file
|
||||||
|
|
||||||
|
EJS_biosUrl = '';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
## BIOS
|
||||||
|
|
||||||
|
syscard3.pce Super CD-ROM2 System V3.xx - Required `38179df8f4ac870017db21ebcbf53114`
|
35
docs/Systems/Virtual Boy.md
Normal file
35
docs/Systems/Virtual Boy.md
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
# Virtual Boy
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system. <br>
|
||||||
|
There is no bios for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'vb';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
35
docs/Systems/WanderSwan-Color.md
Normal file
35
docs/Systems/WanderSwan-Color.md
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
# Wanderswan | Color
|
||||||
|
|
||||||
|
I do not know the file extension limits for this system. <br>
|
||||||
|
There is no bios for this system.
|
||||||
|
|
||||||
|
## Code example
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style='width:640px;height:480px;max-width:100%'>
|
||||||
|
<div id='game'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
|
||||||
|
EJS_player = '#game';
|
||||||
|
EJS_core = 'ws';
|
||||||
|
|
||||||
|
// URL to Game rom
|
||||||
|
|
||||||
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Path to the WASM / JS files
|
||||||
|
* HAS TO BE in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src='data/loader.js'></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
<h2>TurboGrafs-16 | PC Engine</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_biosUrl = ''; // Url to Bios file
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'pce';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
syscard3.pce Super CD-ROM2 System V3.xx - Required `38179df8f4ac870017db21ebcbf53114`
|
|
143
docs/Usage.md
Normal file
143
docs/Usage.md
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
# Usage
|
||||||
|
|
||||||
|
*For questions please use the* ***[Issue]*** *tab.*
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
1. Download this repository.<br>
|
||||||
|
*`Code ➞ Download As Zip`*
|
||||||
|
|
||||||
|
2. Use a **WebServer** to host the emulator.
|
||||||
|
|
||||||
|
3. Use your **Browser** to navigate to `localhost`
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
## ROMs
|
||||||
|
|
||||||
|
**ROMs** can be used as `zip` / `rar` / `7z` archives.
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
## Netplay
|
||||||
|
|
||||||
|
By default **Netplay** is ***disabled***, <br>
|
||||||
|
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;
|
||||||
|
```
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
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;
|
||||||
|
```
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
*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
|
||||||
|
```
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
## Custom Save Filename
|
||||||
|
|
||||||
|
To customize the filename of save states <br>
|
||||||
|
simply add the following lines of code.
|
||||||
|
|
||||||
|
```js
|
||||||
|
EJS_gameName = 'Game Name';
|
||||||
|
```
|
||||||
|
|
||||||
|
**➞ Save Filename:** `Game Name.state`
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
## AD
|
||||||
|
|
||||||
|
To place an advertisement in front of the <br>
|
||||||
|
`play now` screen, include the following line:
|
||||||
|
|
||||||
|
```js
|
||||||
|
EJS_AdUrl = 'URL';
|
||||||
|
```
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
## Interface Color
|
||||||
|
|
||||||
|
To use a different color for the emulator interface, use:
|
||||||
|
|
||||||
|
```js
|
||||||
|
EJS_color = '#FF0000'; // Hex Color Code
|
||||||
|
```
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
## Direct Start
|
||||||
|
|
||||||
|
To start the emulator immediately, add this line:
|
||||||
|
|
||||||
|
```js
|
||||||
|
EJS_startOnLoaded = true;
|
||||||
|
```
|
||||||
|
|
||||||
|
*For audio to play the user still* <br>
|
||||||
|
*needs to interact with the page.*
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
## 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.*
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
## Localization
|
||||||
|
|
||||||
|
Please see [the localization README].
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
## 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/
|
|
@ -1,20 +0,0 @@
|
||||||
<h2>Virtual Boy</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'vb';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
There is no bios for this system
|
|
|
@ -1,20 +0,0 @@
|
||||||
<h2>Wanderswan | Color</h2>
|
|
||||||
|
|
||||||
Code example
|
|
||||||
|
|
||||||
```
|
|
||||||
<div style="width:640px;height:480px;max-width:100%">
|
|
||||||
<div id="game"></div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
EJS_player = '#game';
|
|
||||||
EJS_gameUrl = ''; // Url to Game rom
|
|
||||||
EJS_core = 'ws';
|
|
||||||
EJS_pathtodata = 'data/'; //path to all of the wasm and js files. MUST all be in the same directory!!
|
|
||||||
</script>
|
|
||||||
<script src="data/loader.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
I do not know the file extension limits for this system.
|
|
||||||
|
|
||||||
There is no bios for this system
|
|
324
index.html
324
index.html
|
@ -1,157 +1,179 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Emulatorjs | Select Game Rom</title>
|
<title>EmulatorJS</title>
|
||||||
<link rel="icon" type="image/png" href="docs/Emulatorjs Logo.png">
|
|
||||||
</head>
|
<link rel = icon href = docs/Logo.png>
|
||||||
|
<meta name = viewport content = "width = device-width, initial-scale = 1">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
body, html {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: monospace;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 20px;
|
||||||
|
margin: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
background-color: #222
|
||||||
|
}
|
||||||
|
|
||||||
|
body, #box {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#box {
|
||||||
|
color: #aaa;
|
||||||
|
height: 20em;
|
||||||
|
width: 30em;
|
||||||
|
max-width: 80%;
|
||||||
|
max-height: 80%;
|
||||||
|
background-color: #333;
|
||||||
|
border-radius: 0.4em;
|
||||||
|
border: 2px solid #555;
|
||||||
|
position: relative;
|
||||||
|
flex-direction: column;
|
||||||
|
transition-duration: 0.2s;
|
||||||
|
overflow: hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
#box:hover, #box[drag] {
|
||||||
|
border-color: #38f;
|
||||||
|
color: #ddd
|
||||||
|
}
|
||||||
|
|
||||||
|
#input {
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
opacity: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
#display {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%
|
||||||
|
}
|
||||||
|
|
||||||
|
select, button {
|
||||||
|
padding: 0.6em 0.4em;
|
||||||
|
margin: 0.5em;
|
||||||
|
width: 15em;
|
||||||
|
max-width: 100%;
|
||||||
|
font-family: monospace;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 16px;
|
||||||
|
background-color: #444;
|
||||||
|
color: #aaa;
|
||||||
|
border-radius: 0.4em;
|
||||||
|
border: 1px solid #555;
|
||||||
|
cursor: pointer;
|
||||||
|
transition-duration: 0.2s
|
||||||
|
}
|
||||||
|
|
||||||
|
select:hover, button:hover {
|
||||||
|
background-color: #666;
|
||||||
|
color: #ddd
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<style>
|
<div id = box>
|
||||||
body{
|
<input type = file id = input>
|
||||||
background: #c4bdff;
|
Drag ROM file or click here
|
||||||
margin: 0;
|
</div>
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
.form{
|
|
||||||
position: absolute;
|
|
||||||
top: 450px;
|
|
||||||
left: 50%;
|
|
||||||
margin-top: -150px;
|
|
||||||
margin-left: -250px;
|
|
||||||
width: 500px;
|
|
||||||
height: 200px;
|
|
||||||
border: 4px dashed #111;
|
|
||||||
}
|
|
||||||
.form p{
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
text-align: center;
|
|
||||||
line-height: 170px;
|
|
||||||
color: #111;
|
|
||||||
font-family: Arial;
|
|
||||||
}
|
|
||||||
.form input{
|
|
||||||
position: absolute;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
outline: none;
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
.eimg{
|
|
||||||
width: 250px;
|
|
||||||
}
|
|
||||||
#uploadf, #uploadf1{
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script>
|
<script>
|
||||||
window.addEventListener('load', function() {
|
input.onchange = async () => {
|
||||||
document.getElementById('file').onchange = async function(e) {
|
const url = URL.createObjectURL(new Blob([input.files[0]]))
|
||||||
var ce = function(e) {return document.createElement(e);};
|
const parts = input.files[0].name.split(".")
|
||||||
var br = function(e) {e.appendChild(ce('br'))};
|
|
||||||
var gameUrl = URL.createObjectURL(new Blob([e.target.files[0]]))
|
const core = await (async (ext) => {
|
||||||
var extension = e.target.files[0].name.split('.').pop()
|
if (["fds", "nes", "unif", "unf"].includes(ext))
|
||||||
var gameName = e.target.files[0].name.replaceAll("'", "\\'")
|
return "nes"
|
||||||
var gameName = gameName.substr(0, gameName.length - extension.length - 1)
|
|
||||||
e.target.remove();
|
if (["smc", "fig", "sfc", "gd3", "gd7", "dx2", "bsx", "swc"].includes(ext))
|
||||||
document.getElementById('uploadf').style.display = "none"; document.getElementById('uploadf1').style.display = "none";
|
return "snes"
|
||||||
if (['fds', 'nes', 'unif', 'unf'].includes(extension)) {
|
|
||||||
var core = 'nes';
|
if (["z64", "n64"].includes(ext))
|
||||||
} else if (['z64'].includes(extension)) {
|
return "n64"
|
||||||
var core = 'n64';
|
|
||||||
} else if (['smc', 'fig', 'sfc', 'gd3', 'gd7', 'dx2', 'bsx', 'swc'].includes(extension)) {
|
if (["nds", "gba", "gb", "z64", "n64"].includes(ext))
|
||||||
var core = 'snes';
|
return ext
|
||||||
} else if (['nds'].includes(extension)) {
|
|
||||||
var core = 'nds';
|
return await new Promise(resolve => {
|
||||||
} else if (['gba'].includes(extension)) {
|
const cores = {
|
||||||
var core = 'gba';
|
"Nintendo 64": "n64",
|
||||||
} else if (['gb'].includes(extension)) {
|
"Nintendo Game Boy": "gb",
|
||||||
var core = 'gb';
|
"Nintendo Game Boy Advance": "gba",
|
||||||
} else {
|
"Nintendo DS": "nds",
|
||||||
var core = await function() {
|
"Nintendo Entertainment System": "nes",
|
||||||
return new Promise(function(resolve, reject) {
|
"Super Nintendo Entertainment System": "snes",
|
||||||
var cores = {"NES / Nintendo Entertainment System / Famicon": "nes",
|
"PlayStation": "psx",
|
||||||
"SNES / Super Nintendo Entertainment System": "snes",
|
"Virtual Boy": "vb",
|
||||||
"Nintendo 64": "n64",
|
"Sega Mega Drive": "segaMD",
|
||||||
"Nintendo Game Boy": "gb",
|
"Sega Master System": "segaMS",
|
||||||
"Nintendo Game Boy Advance": "gba",
|
"Sega CD": "segaCD",
|
||||||
"Nintendo DS": "nds",
|
"Atari Lynx": "lynx",
|
||||||
"PlayStation": "psx",
|
"Sega 32X": "sega32x",
|
||||||
"Virtual Boy": "vb",
|
"Atari Jaguar": "jaguar",
|
||||||
"Sega Mega Drive": "segaMD",
|
"Sega Game Gear": "segaGG",
|
||||||
"Sega Master System": "segaMS",
|
"Sega Saturn": "segaSaturn",
|
||||||
"Sega CD": "segaCD",
|
"Atari 7800": "atari7800",
|
||||||
"Atari Lynx": "lynx",
|
"Atari 2600": "atari2600"
|
||||||
"Sega 32X": "sega32x",
|
}
|
||||||
"Atari Jaguar": "jaguar",
|
|
||||||
"Sega Game Gear": "segaGG",
|
const button = document.createElement("button")
|
||||||
"Sega Saturn": "segaSaturn",
|
const select = document.createElement("select")
|
||||||
"Atari 7800": "atari7800",
|
|
||||||
"Atari 2600": "atari2600"};
|
for (const type in cores) {
|
||||||
var a = ce('div');
|
const option = document.createElement("option")
|
||||||
a.style = 'padding: 50px;';
|
|
||||||
var p = ce('h2');
|
option.value = cores[type]
|
||||||
p.innerHTML = 'Unable to auto-detect system. Please select the desired system.';
|
option.textContent = type
|
||||||
a.appendChild(p);
|
select.appendChild(option)
|
||||||
br(a);
|
}
|
||||||
for (var k in cores) {
|
|
||||||
var input = ce('input');
|
button.onclick = () => resolve(select[select.selectedIndex].value)
|
||||||
input.type = 'radio';
|
button.textContent = "Load game"
|
||||||
input.id = 'game-' + cores[k];
|
box.innerHTML = ""
|
||||||
input.name = 'game';
|
|
||||||
input.value = cores[k];
|
box.appendChild(select)
|
||||||
a.appendChild(input);
|
box.appendChild(button)
|
||||||
var label = ce('label');
|
})
|
||||||
label.for = 'game-' + cores[k];
|
})(parts.pop())
|
||||||
label.innerHTML = k;
|
|
||||||
a.appendChild(label);
|
const div = document.createElement("div")
|
||||||
br(a);
|
const sub = document.createElement("div")
|
||||||
};
|
const script = document.createElement("script")
|
||||||
br(a);
|
|
||||||
var submit = ce('input');
|
sub.id = "game"
|
||||||
submit.type = 'submit';
|
div.id = "display"
|
||||||
submit.value = 'Load Game';
|
|
||||||
submit.onclick = function(e) {
|
box.remove()
|
||||||
var q = false;
|
div.appendChild(sub)
|
||||||
var radios = document.getElementsByName('game');
|
document.body.appendChild(div)
|
||||||
for (var i=0; i<radios.length; i++) {
|
|
||||||
if (radios[i].checked) {
|
window.EJS_player = "#game"
|
||||||
var q = radios[i].value;
|
window.EJS_gameName = parts.shift()
|
||||||
break;
|
window.EJS_biosUrl = ""
|
||||||
};
|
window.EJS_gameUrl = url
|
||||||
};
|
window.EJS_core = core
|
||||||
if (! q) {
|
window.EJS_pathtodata = "data/"
|
||||||
return;
|
|
||||||
};
|
script.src = "data/loader.js"
|
||||||
a.remove();
|
document.body.appendChild(script)
|
||||||
resolve(q);
|
}
|
||||||
};
|
|
||||||
a.appendChild(submit);
|
box.ondragover = () => box.setAttribute("drag", true)
|
||||||
document.body.appendChild(a);
|
box.ondragleave = () => box.removeAttribute("drag")
|
||||||
});
|
|
||||||
}();
|
|
||||||
};
|
|
||||||
var a = document.createElement('div');
|
|
||||||
a.style = "width:65%;height:100%;max-width:100%";
|
|
||||||
var b = document.createElement('div');
|
|
||||||
b.id = 'game';
|
|
||||||
a.appendChild(b);
|
|
||||||
document.getElementById("cont").appendChild(a);
|
|
||||||
var script = document.createElement('script');
|
|
||||||
script.innerHTML = "EJS_player = '#game'; EJS_gameName = '" + gameName + "'; EJS_biosUrl = ''; EJS_gameUrl = '" + gameUrl + "'; EJS_core = '" + core + "'; EJS_pathtodata = 'data/';";
|
|
||||||
document.body.appendChild(script);
|
|
||||||
var script = document.createElement('script');
|
|
||||||
script.src = 'data/loader.js';
|
|
||||||
document.body.appendChild(script);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
</script>
|
</script>
|
||||||
<center id="cont">
|
|
||||||
<img id="uploadf1" class="eimg" src="docs/Emulatorjs Logo.png">
|
|
||||||
</center>
|
|
||||||
<div id="uploadf" class="form">
|
|
||||||
<input type="file" id="file">
|
|
||||||
<b><p>Select Game Rom: Drag your files here or click in this area.</p></b>
|
|
||||||
</div>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Reference in a new issue