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.
|
||||
|
||||
<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>
|
||||
*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>
|
||||
If you would like to use it, please add the following line to your code.
|
||||
### Audio
|
||||
|
||||
*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
|
||||
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>
|
||||
|
||||
---
|
||||
|
||||
## 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.*
|
||||
<h1 align = center>Supported Systems</h1>
|
||||
|
||||
<br>
|
||||
|
||||
##### Setup
|
||||
<div align = center>
|
||||
|
||||
1. Download this repository.<br>
|
||||
*`Code ➞ Download As Zip`*
|
||||
### Nintendo
|
||||
|
||||
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>
|
||||
|
||||
##### 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 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.
|
||||
[License]: LICENSE
|
||||
[Issue]: https://github.com/ethanaobrien/emulatorjs/issues
|
||||
|
||||
|
||||
<!----------------------------------------------------------------------------->
|
||||
<!-- 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 Extensions 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 --->
|
||||
|
||||
[EmulatorJS Website]: https://emulatorjs.ga/
|
||||
[Example Use]: https://coldcast.org/games/1/Super-Mario-Bros
|
||||
[Emulator Demo]: https://emulatorjs.ga/demo/
|
||||
[GameLibrary]: https://github.com/Ramaerel/emulatorjs-GameLibrary
|
||||
|
||||
|
||||
<!-- 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 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/
|
||||
|
||||
[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/
|
||||
[Read the whole license here]: LICENSE
|
||||
[Nintendo Game Boy Advance]: docs/Systems/Nintendo%20Game%20Boy%20Advance.md
|
||||
[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
|
||||
[SNES]: docs/SNES.md
|
||||
[Nintendo 64]: docs/Nintendo%2064.md
|
||||
[Nintendo Game Boy]: docs/Nintendo%20Game%20Boy.md
|
||||
[Nintendo Game Boy Advance]: docs/Nintendo%20Game%20Boy%20Advance.md
|
||||
[Nintendo DS]: docs/Nintendo%20DS.md
|
||||
[PlayStation]: docs/PlayStation.md
|
||||
[Virtual Boy]: docs/Virtual%20Boy.md
|
||||
[Sega Mega Drive]: docs/Sega%20Mega%20Drive.md
|
||||
[Sega Master System]: docs/Sega%20Master%20System.md
|
||||
[Sega CD]: docs/Sega%20CD.md
|
||||
[Atari Lynx]: docs/Atari%20Lynx.md
|
||||
[MSX]: docs/MSX.md
|
||||
[3DO]: docs/3DO.md
|
||||
[Sega 32X]: docs/Sega%2032X.md
|
||||
[Atari Jaguar]: docs/Atari%20Jaguar.md
|
||||
[Neo Geo Poket]: docs/Neo%20Geo%20Poket.md
|
||||
[Sega Game Gear]: docs/Sega%20Game%20Gear.md
|
||||
[Sega Saturn]: docs/Sega%20Saturn.md
|
||||
[Atari 7800]: docs/Atari%207800.md
|
||||
[WanderSwan / Color]: docs/WanderSwan-Color.md
|
||||
[TurboGrafs-16 / PC Engine]: docs/TurboGrafs%2016-PC%20Engine.md
|
||||
[Arcade]: docs/Arcade.md
|
||||
[Atari 2600]: docs/Atari%202600.md
|
||||
[Sega Master System]: docs/Systems/Sega%20Master%20System.md
|
||||
[Sega Mega Drive]: docs/Systems/Sega%20Mega%20Drive.md
|
||||
[Sega Game Gear]: docs/Systems/Sega%20Game%20Gear.md
|
||||
[Sega Saturn]: docs/Systems/Sega%20Saturn.md
|
||||
[Sega 32X]: docs/Systems/Sega%2032X.md
|
||||
[Sega CD]: docs/Systems/Sega%20CD.md
|
||||
|
||||
[Atari Jaguar]: docs/Systems/Atari%20Jaguar.md
|
||||
[Atari Lynx]: docs/Systems/Atari%20Lynx.md
|
||||
[Atari 7800]: docs/Systems/Atari%207800.md
|
||||
[Atari 2600]: docs/Systems/Atari%202600.md
|
||||
|
||||
[NES / Famicom]: docs/Systems/NES-Famicom.md
|
||||
[SNES]: docs/Systems/SNES.md
|
||||
|
||||
[TurboGrafs-16 / PC Engine]: docs/Systems/TurboGrafs%2016-PC%20Engine.md
|
||||
[WanderSwan / Color]: docs/Systems/WanderSwan-Color.md
|
||||
[Neo Geo Poket]: docs/Systems/Neo%20Geo%20Poket.md
|
||||
[PlayStation]: docs/Systems/PlayStation.md
|
||||
[Virtual Boy]: docs/Systems/Virtual%20Boy.md
|
||||
[Arcade]: docs/Systems/Arcade.md
|
||||
[MSX]: docs/Systems/MSX.md
|
||||
[3DO]: docs/Systems/3DO.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);
|
||||
}
|
||||
_0x2c1832.r(_0x17edbf);
|
||||
_0x2c1832(0xa2), _0x2c1832(0x16c), _0x2c1832(0x16d);
|
||||
var _0x39ca5e = {
|
||||
'volume': 0.5,
|
||||
'muted': false,
|
||||
|
@ -99,7 +98,6 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
|||
'tabFocus': 'ejs__tab-focus'
|
||||
}
|
||||
},
|
||||
_0x3d61f9 = _0x2c1832(0x38),
|
||||
_0x5127f4 = _0x2c1832(0x9d),
|
||||
_0x48e5ff = _0x2c1832.n(_0x5127f4),
|
||||
_0x406e79 = function(_0x2aa74f) {
|
||||
|
@ -584,10 +582,10 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
|||
}
|
||||
}]) && _0x4c97b0(_0x17edbf.prototype, _0x2c1832), _0x4496fc && _0x4c97b0(_0x17edbf, _0x4496fc), _0x566dbe;
|
||||
}();
|
||||
var _0x13fb79, _0x569918 = _0x2c1832(0x6c),
|
||||
var _0x13fb79, _0x569918 = _0x2c1832(108),
|
||||
_0x4e4ca6 = _0x2c1832.n(_0x569918),
|
||||
_0x4ad1c6 = _0x2c1832(0x6),
|
||||
_0x4704b1 = _0x2c1832(0x9f),
|
||||
_0x4ad1c6 = _0x2c1832(6),
|
||||
_0x4704b1 = _0x2c1832(159),
|
||||
_0x3a58c8 = _0x2c1832.n(_0x4704b1),
|
||||
_0x5032e6 = {
|
||||
'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),
|
||||
_0x50f370 = _0x2c1832.n(_0x5bb4c9),
|
||||
_0x246d02 = _0x2c1832(0xb),
|
||||
_0x550f17 = _0x2c1832.n(_0x246d02),
|
||||
_0x550f17 = _0x2c1832.n(_0x246d02).a,
|
||||
_0x5ab74d = {
|
||||
'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);
|
||||
|
@ -1563,27 +1561,45 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
|||
_0x139f1c = _0x154dc5[_0x154dc5.length - 0x1];
|
||||
_0x139f1c.indexOf('?') > -0x1 && (_0x139f1c = _0x139f1c.substr(0x0, _0x139f1c.indexOf('?')));
|
||||
_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)');
|
||||
new Promise(async function(resolve, reject) {
|
||||
_0x2c1832.innerHTML = _0xa88a13.localization('Download Game Data');
|
||||
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:')) {
|
||||
resolve(await _0x550f17.a.head(_0x3cf3cf, {}))
|
||||
return _0x550f17.a.head(_0x3cf3cf, {});
|
||||
} else {
|
||||
var a = await fetch(_0x3cf3cf)
|
||||
var a = await a.blob()
|
||||
resolve({headers:{'content-length': a.size, 'content-type': 'text/plain'}})
|
||||
return new Promise(async function(resolve, reject) {
|
||||
var a = await fetch(_0x3cf3cf);
|
||||
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'],
|
||||
_0x7e8d4c = _0x3d703e.headers['content-type'],
|
||||
_0x107e8a = (_0x3d703e.headers['last-modified'], '' .concat(_0x594488, '-').concat(_0x139f1c)),
|
||||
_0x43a689 = function() {
|
||||
_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) {
|
||||
(function() {
|
||||
if (_0x3cf3cf.startsWith('blob:')) {
|
||||
return new Promise(async function(resolve, reject) {
|
||||
var a = await fetch(_0x3cf3cf);
|
||||
a = await a.arrayBuffer();
|
||||
resolve({data:a});
|
||||
})
|
||||
} 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);
|
||||
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)
|
||||
|
@ -1620,7 +1636,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
|||
});
|
||||
_0x3512e9(_0x139f1c, _0x17edbf);
|
||||
}).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) {
|
||||
|
@ -1644,7 +1660,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
|||
else _0x43a689();
|
||||
}) : _0x43a689();
|
||||
}).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() {
|
||||
|
@ -1655,7 +1671,8 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
|||
_0x179b43 = _0x227b23[_0x227b23.length - 0x1];
|
||||
_0x179b43.indexOf('?') > -0x1 && (_0x179b43 = _0x179b43.substr(0x0, _0x179b43.indexOf('?')));
|
||||
_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) {
|
||||
_0x2591d9.innerHTML = _0xa88a13.localization('Download Game Data')+' (1/2) ';
|
||||
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());
|
||||
}(_0x179b43, _0x39a81f);
|
||||
}).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();
|
||||
},
|
||||
|
@ -1758,7 +1775,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
|||
console.log(_0x125736);
|
||||
}
|
||||
}).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) {
|
||||
|
@ -1778,7 +1795,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
|||
else _0x31f098();
|
||||
}) : _0x31f098();
|
||||
}).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();
|
||||
},
|
||||
|
@ -1887,14 +1904,14 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
|||
'data': _0x17edbf
|
||||
}), _0x57d85d(_0x103241, _0x17edbf);
|
||||
}).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) {
|
||||
_0x5cac21 && _0x5cac21.filename === _0x103241 && _0x5cac21.filesize - _0x8e30bf == 0x0 && _0x5cac21.filetype === _0x14309b ? _0x57d85d(_0x5cac21.filename, _0x5cac21.data) : _0x574747();
|
||||
}) : _0x574747();
|
||||
}).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();
|
||||
},
|
||||
|
@ -2026,7 +2043,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
|||
}
|
||||
|
||||
}).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) {
|
||||
|
@ -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);
|
||||
_0xc6823.setStatesSupported(_0x5b1dcd);
|
||||
}).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;
|
||||
}
|
||||
}, 0x1f4);
|
||||
|
@ -3452,7 +3469,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
|||
var _0xa88a13 = this,
|
||||
_0x17edbf = this,
|
||||
_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) {
|
||||
_0x2fe35d.forEach(function(_0x2b21f8) {
|
||||
var _0x17edbf;
|
||||
|
@ -4052,7 +4069,6 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
|||
_0xa88a13.recordData = {started:false, data:[], stopped: false}
|
||||
}
|
||||
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')) {
|
||||
var options = {mimeType: 'video/webm; codecs=h264'}; // video/webm; codecs=h264,opus
|
||||
} else if (MediaRecorder.isTypeSupported('video/webm; codecs=H264')) {
|
||||
|
@ -4070,28 +4086,53 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
|||
} else {
|
||||
var options = {};
|
||||
}
|
||||
_0xa88a13.recordData.stream = _0x27f4c4.Module.canvas.captureStream(30);
|
||||
//_0xa88a13.recordData.stream.addTrack(); // TODO - find audio element
|
||||
_0xa88a13.recordData.recorder = new MediaRecorder(_0xa88a13.recordData.stream, options);
|
||||
_0xa88a13.recordData.recorder.ondataavailable = function(e) {
|
||||
if (e.data.size > 0) {
|
||||
_0xa88a13.recordData.data.push(e.data)
|
||||
}
|
||||
if (_0xa88a13.recordData.stopped) {
|
||||
var a = document.createElement("a")
|
||||
a.href = window.URL.createObjectURL(new Blob(_0xa88a13.recordData.data, {type: "video/webm"}))
|
||||
if (typeof _0xa88a13.gameName == 'string') {
|
||||
var aname = _0xa88a13.gameName
|
||||
function gotStreams(stream) {
|
||||
_0xa88a13.elements.buttons.screenRecord.getElementsByClassName('ejs--74c6d4176d27e37a19d2e9e61de8f4')[0].innerHTML = _0xa88a13.localization('Stop Screen Recording');
|
||||
_0xa88a13.recordData.stream = stream;
|
||||
_0xa88a13.recordData.recorder = new MediaRecorder(_0xa88a13.recordData.stream, options);
|
||||
_0xa88a13.recordData.recorder.ondataavailable = function(e) {
|
||||
if (e.data.size > 0) {
|
||||
_0xa88a13.recordData.data.push(e.data)
|
||||
}
|
||||
if (_0xa88a13.recordData.stopped) {
|
||||
var a = document.createElement("a")
|
||||
a.href = window.URL.createObjectURL(new Blob(_0xa88a13.recordData.data, {type: "video/webm"}))
|
||||
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()
|
||||
_0xa88a13.recordData.started = true
|
||||
_0x27f4c4.Module.pauseMainLoop();
|
||||
_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
|
||||
_0xa88a13.recordData.recorder.stop()
|
||||
_0xa88a13.recordData.stopped = true
|
||||
|
@ -6239,19 +6280,16 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
|||
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++) {
|
||||
if (split2[w] == '' || split2[w] == '.') {
|
||||
} else if (split2[w] == '..') {
|
||||
if (split1.length > 0) {
|
||||
var split1 = function(origpath) {
|
||||
var fullrequestpath = origpath
|
||||
var finpath = fullrequestpath.split('/').pop()
|
||||
var finalpath = fullrequestpath.substring(0, fullrequestpath.length - finpath.length)
|
||||
if (origpath == '/') {
|
||||
if (origpath === '/') {
|
||||
return '/'
|
||||
} else {
|
||||
return finalpath
|
||||
return origpath.substring(0, origpath.length - origpath.split('/').pop().length);
|
||||
}
|
||||
}(split1.join('/')).split('/');
|
||||
}
|
||||
|
@ -6276,7 +6314,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
|||
var a = function(_0x154660, _0x15626f) {
|
||||
if (!(_0x154660 instanceof _0x15626f)) throw new TypeError('Cannot call a class as a function');
|
||||
}(this, _0x6954aa);
|
||||
this.version = '1.1.0';
|
||||
this.version = '1.1.2';
|
||||
this.system = '';
|
||||
this.adUrl = null;
|
||||
this.gameName = null;
|
||||
|
@ -6556,4 +6594,3 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) {
|
|||
_0x3dbc76.defaults = {};
|
||||
_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() {
|
||||
var VERSION = 1.1;
|
||||
var VERSION = 1.2;
|
||||
if (window.location && ['localhost', '127.0.0.1'].includes(location.hostname)) {
|
||||
fetch('https://raw.githack.com/ethanaobrien/emulatorjs/main/data/version.json').then(response => {
|
||||
if (response.ok) {
|
||||
response.text().then(body => {
|
||||
var version = JSON.parse(body);
|
||||
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>
|
||||
<head>
|
||||
<title>Emulatorjs | Select Game Rom</title>
|
||||
<link rel="icon" type="image/png" href="docs/Emulatorjs Logo.png">
|
||||
</head>
|
||||
<head>
|
||||
<title>EmulatorJS</title>
|
||||
|
||||
<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>
|
||||
<style>
|
||||
body{
|
||||
background: #c4bdff;
|
||||
margin: 0;
|
||||
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>
|
||||
<div id = box>
|
||||
<input type = file id = input>
|
||||
Drag ROM file or click here
|
||||
</div>
|
||||
|
||||
<script>
|
||||
window.addEventListener('load', function() {
|
||||
document.getElementById('file').onchange = async function(e) {
|
||||
var ce = function(e) {return document.createElement(e);};
|
||||
var br = function(e) {e.appendChild(ce('br'))};
|
||||
var gameUrl = URL.createObjectURL(new Blob([e.target.files[0]]))
|
||||
var extension = e.target.files[0].name.split('.').pop()
|
||||
var gameName = e.target.files[0].name.replaceAll("'", "\\'")
|
||||
var gameName = gameName.substr(0, gameName.length - extension.length - 1)
|
||||
e.target.remove();
|
||||
document.getElementById('uploadf').style.display = "none"; document.getElementById('uploadf1').style.display = "none";
|
||||
if (['fds', 'nes', 'unif', 'unf'].includes(extension)) {
|
||||
var core = 'nes';
|
||||
} else if (['z64'].includes(extension)) {
|
||||
var core = 'n64';
|
||||
} else if (['smc', 'fig', 'sfc', 'gd3', 'gd7', 'dx2', 'bsx', 'swc'].includes(extension)) {
|
||||
var core = 'snes';
|
||||
} else if (['nds'].includes(extension)) {
|
||||
var core = 'nds';
|
||||
} else if (['gba'].includes(extension)) {
|
||||
var core = 'gba';
|
||||
} else if (['gb'].includes(extension)) {
|
||||
var core = 'gb';
|
||||
} else {
|
||||
var core = await function() {
|
||||
return new Promise(function(resolve, reject) {
|
||||
var cores = {"NES / Nintendo Entertainment System / Famicon": "nes",
|
||||
"SNES / Super Nintendo Entertainment System": "snes",
|
||||
"Nintendo 64": "n64",
|
||||
"Nintendo Game Boy": "gb",
|
||||
"Nintendo Game Boy Advance": "gba",
|
||||
"Nintendo DS": "nds",
|
||||
"PlayStation": "psx",
|
||||
"Virtual Boy": "vb",
|
||||
"Sega Mega Drive": "segaMD",
|
||||
"Sega Master System": "segaMS",
|
||||
"Sega CD": "segaCD",
|
||||
"Atari Lynx": "lynx",
|
||||
"Sega 32X": "sega32x",
|
||||
"Atari Jaguar": "jaguar",
|
||||
"Sega Game Gear": "segaGG",
|
||||
"Sega Saturn": "segaSaturn",
|
||||
"Atari 7800": "atari7800",
|
||||
"Atari 2600": "atari2600"};
|
||||
var a = ce('div');
|
||||
a.style = 'padding: 50px;';
|
||||
var p = ce('h2');
|
||||
p.innerHTML = 'Unable to auto-detect system. Please select the desired system.';
|
||||
a.appendChild(p);
|
||||
br(a);
|
||||
for (var k in cores) {
|
||||
var input = ce('input');
|
||||
input.type = 'radio';
|
||||
input.id = 'game-' + cores[k];
|
||||
input.name = 'game';
|
||||
input.value = cores[k];
|
||||
a.appendChild(input);
|
||||
var label = ce('label');
|
||||
label.for = 'game-' + cores[k];
|
||||
label.innerHTML = k;
|
||||
a.appendChild(label);
|
||||
br(a);
|
||||
};
|
||||
br(a);
|
||||
var submit = ce('input');
|
||||
submit.type = 'submit';
|
||||
submit.value = 'Load Game';
|
||||
submit.onclick = function(e) {
|
||||
var q = false;
|
||||
var radios = document.getElementsByName('game');
|
||||
for (var i=0; i<radios.length; i++) {
|
||||
if (radios[i].checked) {
|
||||
var q = radios[i].value;
|
||||
break;
|
||||
};
|
||||
};
|
||||
if (! q) {
|
||||
return;
|
||||
};
|
||||
a.remove();
|
||||
resolve(q);
|
||||
};
|
||||
a.appendChild(submit);
|
||||
document.body.appendChild(a);
|
||||
});
|
||||
}();
|
||||
};
|
||||
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);
|
||||
}
|
||||
})
|
||||
input.onchange = async () => {
|
||||
const url = URL.createObjectURL(new Blob([input.files[0]]))
|
||||
const parts = input.files[0].name.split(".")
|
||||
|
||||
const core = await (async (ext) => {
|
||||
if (["fds", "nes", "unif", "unf"].includes(ext))
|
||||
return "nes"
|
||||
|
||||
if (["smc", "fig", "sfc", "gd3", "gd7", "dx2", "bsx", "swc"].includes(ext))
|
||||
return "snes"
|
||||
|
||||
if (["z64", "n64"].includes(ext))
|
||||
return "n64"
|
||||
|
||||
if (["nds", "gba", "gb", "z64", "n64"].includes(ext))
|
||||
return ext
|
||||
|
||||
return await new Promise(resolve => {
|
||||
const cores = {
|
||||
"Nintendo 64": "n64",
|
||||
"Nintendo Game Boy": "gb",
|
||||
"Nintendo Game Boy Advance": "gba",
|
||||
"Nintendo DS": "nds",
|
||||
"Nintendo Entertainment System": "nes",
|
||||
"Super Nintendo Entertainment System": "snes",
|
||||
"PlayStation": "psx",
|
||||
"Virtual Boy": "vb",
|
||||
"Sega Mega Drive": "segaMD",
|
||||
"Sega Master System": "segaMS",
|
||||
"Sega CD": "segaCD",
|
||||
"Atari Lynx": "lynx",
|
||||
"Sega 32X": "sega32x",
|
||||
"Atari Jaguar": "jaguar",
|
||||
"Sega Game Gear": "segaGG",
|
||||
"Sega Saturn": "segaSaturn",
|
||||
"Atari 7800": "atari7800",
|
||||
"Atari 2600": "atari2600"
|
||||
}
|
||||
|
||||
const button = document.createElement("button")
|
||||
const select = document.createElement("select")
|
||||
|
||||
for (const type in cores) {
|
||||
const option = document.createElement("option")
|
||||
|
||||
option.value = cores[type]
|
||||
option.textContent = type
|
||||
select.appendChild(option)
|
||||
}
|
||||
|
||||
button.onclick = () => resolve(select[select.selectedIndex].value)
|
||||
button.textContent = "Load game"
|
||||
box.innerHTML = ""
|
||||
|
||||
box.appendChild(select)
|
||||
box.appendChild(button)
|
||||
})
|
||||
})(parts.pop())
|
||||
|
||||
const div = document.createElement("div")
|
||||
const sub = document.createElement("div")
|
||||
const script = document.createElement("script")
|
||||
|
||||
sub.id = "game"
|
||||
div.id = "display"
|
||||
|
||||
box.remove()
|
||||
div.appendChild(sub)
|
||||
document.body.appendChild(div)
|
||||
|
||||
window.EJS_player = "#game"
|
||||
window.EJS_gameName = parts.shift()
|
||||
window.EJS_biosUrl = ""
|
||||
window.EJS_gameUrl = url
|
||||
window.EJS_core = core
|
||||
window.EJS_pathtodata = "data/"
|
||||
|
||||
script.src = "data/loader.js"
|
||||
document.body.appendChild(script)
|
||||
}
|
||||
|
||||
box.ondragover = () => box.setAttribute("drag", true)
|
||||
box.ondragleave = () => box.removeAttribute("drag")
|
||||
</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>
|
||||
</html>
|
||||
|
|
Loading…
Reference in a new issue