mirror of
https://github.com/EmulatorJS/EmulatorJS.git
synced 2024-09-20 02:46:23 +00:00
Version 3.1.0
Co-authored-by: Allan Niles <74841470+allancoding@users.noreply.github.com>
This commit is contained in:
parent
4f4b87386e
commit
cc37200ac3
13 changed files with 668 additions and 3299 deletions
13
.github/FUNDING.yml
vendored
Normal file
13
.github/FUNDING.yml
vendored
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# These are supported funding model platforms
|
||||||
|
|
||||||
|
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||||
|
patreon: EmulatorJS # Replace with a single Patreon username
|
||||||
|
open_collective: # Replace with a single Open Collective username
|
||||||
|
ko_fi: # Replace with a single Ko-fi username
|
||||||
|
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||||
|
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||||
|
liberapay: # Replace with a single Liberapay username
|
||||||
|
issuehunt: # Replace with a single IssueHunt username
|
||||||
|
otechie: # Replace with a single Otechie username
|
||||||
|
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
||||||
|
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
|
@ -1,6 +1,13 @@
|
||||||
# Changes
|
# Changes
|
||||||
|
|
||||||
# 3.0.5
|
# 3.1.0
|
||||||
|
- Added ability to drag and drop save states.
|
||||||
|
- Fixed some "update" and "cancel" and "close" button confustion
|
||||||
|
- Removed save state retroarch messages
|
||||||
|
- Beta netplay cleanup (not yet working)
|
||||||
|
- (Theoretically) fixed a bug that did not allow iOS devices to work
|
||||||
|
|
||||||
|
# 3.0.5 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/44c31371fb3c314cd8dea36ccbaad89fb3ab98e6)
|
||||||
- Fixed screen recording on devices that do not support getUserMedia api.
|
- Fixed screen recording on devices that do not support getUserMedia api.
|
||||||
- Added C label buttons to nintendo 64 virtual gamepad.
|
- Added C label buttons to nintendo 64 virtual gamepad.
|
||||||
- Fixed EJS_color bug.
|
- Fixed EJS_color bug.
|
||||||
|
|
1
CNAME
Normal file
1
CNAME
Normal file
|
@ -0,0 +1 @@
|
||||||
|
demo.emulatorjs.org
|
23
README.md
23
README.md
|
@ -26,6 +26,26 @@ Self-hosted **Javascript** emulation for various system.
|
||||||
|
|
||||||
<br>
|
<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.*
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
### Ads
|
||||||
|
|
||||||
|
*This project has no ads.* <br>
|
||||||
|
*Although, the demo page currently has an ad to help fund this project.* <br>
|
||||||
|
*Ads on the demo page may come and go depending on how many people are* <br>
|
||||||
|
*funding this project.* <br>
|
||||||
|
|
||||||
|
*You can help fund this project on* ***[patreon]***
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Issues
|
### Issues
|
||||||
|
|
||||||
*If something doesn't work, please consider opening an* ***[Issue]*** <br>
|
*If something doesn't work, please consider opening an* ***[Issue]*** <br>
|
||||||
|
@ -124,6 +144,7 @@ EJS_oldCores = true;
|
||||||
|
|
||||||
[License]: LICENSE
|
[License]: LICENSE
|
||||||
[Issue]: https://github.com/ethanaobrien/emulatorjs/issues
|
[Issue]: https://github.com/ethanaobrien/emulatorjs/issues
|
||||||
|
[patreon]: https://patreon.com/EmulatorJS
|
||||||
|
|
||||||
|
|
||||||
<!-- 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 Extensions 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 --->
|
<!-- 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 Extensions 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 --->
|
||||||
|
@ -138,7 +159,7 @@ EJS_oldCores = true;
|
||||||
[Website]: https://emulatorjs.org/
|
[Website]: https://emulatorjs.org/
|
||||||
[Legacy]: https://coldcast.org/games/1/Super-Mario-Bros
|
[Legacy]: https://coldcast.org/games/1/Super-Mario-Bros
|
||||||
[Usage]: https://emulatorjs.org/docs/
|
[Usage]: https://emulatorjs.org/docs/
|
||||||
[Demo]: https://emulatorjs.github.io/EmulatorJS/
|
[Demo]: https://demo.emulatorjs.org/
|
||||||
|
|
||||||
|
|
||||||
<!-- 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 Systems 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 -->
|
<!-- 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 Systems 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 -->
|
||||||
|
|
1
ads.txt
Normal file
1
ads.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
google.com, pub-8832864985153925, DIRECT, f08c47fec0942fa0
|
823
data/emu-main.js
823
data/emu-main.js
File diff suppressed because one or more lines are too long
2992
data/emulator.js
2992
data/emulator.js
File diff suppressed because one or more lines are too long
2
data/emulator.min.js
vendored
2
data/emulator.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,5 @@
|
||||||
(async function() {
|
(async function() {
|
||||||
let VERSION = 30.5;
|
let VERSION = 31.0;
|
||||||
if ((window.location && ['localhost', '127.0.0.1'].includes(location.hostname)) ||
|
if ((window.location && ['localhost', '127.0.0.1'].includes(location.hostname)) ||
|
||||||
'undefined' != typeof EJS_DEBUG_XX && true === EJS_DEBUG_XX) {
|
'undefined' != typeof EJS_DEBUG_XX && true === EJS_DEBUG_XX) {
|
||||||
fetch('https://raw.githack.com/EmulatorJS/EmulatorJS/main/data/version.json').then(response => {
|
fetch('https://raw.githack.com/EmulatorJS/EmulatorJS/main/data/version.json').then(response => {
|
||||||
|
@ -49,7 +49,8 @@
|
||||||
script.onload = resolve;
|
script.onload = resolve;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if ('undefined' != typeof EJS_DEBUG_XX && true === EJS_DEBUG_XX) {
|
if (('undefined' != typeof EJS_DEBUG_XX && true === EJS_DEBUG_XX) ||
|
||||||
|
/(iPad|iPhone|iPod)/gi .test(navigator.platform)) {
|
||||||
await loadStyle('emu-css.css');
|
await loadStyle('emu-css.css');
|
||||||
await loadScript('emu-main.js');
|
await loadScript('emu-main.js');
|
||||||
await loadScript('emulator.js');
|
await loadScript('emulator.js');
|
||||||
|
|
31
data/v.json
31
data/v.json
|
@ -2,62 +2,62 @@
|
||||||
"oldCores" : {"nes":{"version":"25","netplay":1,"state":1,"asmjs":1,"wasm":1},"snes":{"version":"22","netplay":1,"state":1,"asmjs":1,"wasm":1},"snes2010":{"version":"1","netplay":1,"state":1,"asmjs":1,"wasm":1},"snes2005":{"version":"1","netplay":1,"state":1,"asmjs":1,"wasm":1},"snes2002":{"version":"1","netplay":1,"state":1,"asmjs":1,"wasm":1},"arcade":{"version":"16","netplay":1,"state":1,"asmjs":1,"wasm":1},"fba0.2.97.29":{"version":"1","netplay":1,"state":1,"asmjs":1,"wasm":1},"pce":{"version":"1","netplay":1,"state":1,"asmjs":1,"wasm":1},"pceCD":{"version":"1","netplay":1,"state":1,"asmjs":1,"wasm":1},"ngp":{"version":"2","netplay":0,"state":1,"asmjs":1,"wasm":1},"ws":{"version":"1","netplay":0,"state":1,"asmjs":1,"wasm":1},"msx":{"version":"1","netplay":0,"state":0,"asmjs":1,"wasm":1},"bluemsx":{"version":"1","netplay":0,"state":0,"asmjs":1,"wasm":1},"vb":{"version":"8","netplay":0,"state":1,"asmjs":1,"wasm":1},"atari2600":{"version":"1","netplay":1,"state":1,"asmjs":1,"wasm":1},"a7800":{"version":"4","netplay":0,"state":0,"asmjs":1,"wasm":0},"atari7800":{"version":"4","netplay":0,"state":1,"asmjs":1,"wasm":0},"lynx":{"version":"1","netplay":0,"state":1,"asmjs":1,"wasm":1},"jaguar":{"version":"1","netplay":0,"state":0,"asmjs":1,"wasm":1},"gb":{"version":"13","netplay":0,"state":1,"asmjs":1,"wasm":0},"gbc":{"version":"4","netplay":0,"state":1,"asmjs":1,"wasm":0},"gba":{"version":"11","netplay":0,"state":1,"asmjs":1,"wasm":0},"segaGG":{"version":"9","netplay":0,"state":1,"asmjs":1,"wasm":1},"segaMD":{"version":"9","netplay":1,"state":1,"asmjs":1,"wasm":1},"segaMS":{"version":"9","netplay":1,"state":1,"asmjs":1,"wasm":1},"segaCD":{"version":"9","netplay":1,"state":1,"asmjs":1,"wasm":0},"segaSaturn":{"version":"3","netplay":0,"state":1,"asmjs":1,"wasm":0},"psx":{"version":"11","netplay":0,"state":1,"asmjs":0,"wasm":1},"n64":{"version":"14","netplay":1,"state":1,"asmjs":1,"wasm":0},"nds":{"version":"17","netplay":0,"state":1,"asmjs":1,"wasm":1},"3do":{"version":"1","netplay":1,"state":1,"asmjs":1,"wasm":0},"sega32x":{"version":"2","netplay":1,"state":1,"asmjs":1,"wasm":1},"mame2003":{"version":"6","netplay":1,"state":1,"asmjs":1,"wasm":0},"mame":{"version":"4","netplay":0,"state":0,"asmjs":0,"wasm":1},"vbanext":{"version":"1","netplay":0,"state":1,"asmjs":1,"wasm":1}},
|
"oldCores" : {"nes":{"version":"25","netplay":1,"state":1,"asmjs":1,"wasm":1},"snes":{"version":"22","netplay":1,"state":1,"asmjs":1,"wasm":1},"snes2010":{"version":"1","netplay":1,"state":1,"asmjs":1,"wasm":1},"snes2005":{"version":"1","netplay":1,"state":1,"asmjs":1,"wasm":1},"snes2002":{"version":"1","netplay":1,"state":1,"asmjs":1,"wasm":1},"arcade":{"version":"16","netplay":1,"state":1,"asmjs":1,"wasm":1},"fba0.2.97.29":{"version":"1","netplay":1,"state":1,"asmjs":1,"wasm":1},"pce":{"version":"1","netplay":1,"state":1,"asmjs":1,"wasm":1},"pceCD":{"version":"1","netplay":1,"state":1,"asmjs":1,"wasm":1},"ngp":{"version":"2","netplay":0,"state":1,"asmjs":1,"wasm":1},"ws":{"version":"1","netplay":0,"state":1,"asmjs":1,"wasm":1},"msx":{"version":"1","netplay":0,"state":0,"asmjs":1,"wasm":1},"bluemsx":{"version":"1","netplay":0,"state":0,"asmjs":1,"wasm":1},"vb":{"version":"8","netplay":0,"state":1,"asmjs":1,"wasm":1},"atari2600":{"version":"1","netplay":1,"state":1,"asmjs":1,"wasm":1},"a7800":{"version":"4","netplay":0,"state":0,"asmjs":1,"wasm":0},"atari7800":{"version":"4","netplay":0,"state":1,"asmjs":1,"wasm":0},"lynx":{"version":"1","netplay":0,"state":1,"asmjs":1,"wasm":1},"jaguar":{"version":"1","netplay":0,"state":0,"asmjs":1,"wasm":1},"gb":{"version":"13","netplay":0,"state":1,"asmjs":1,"wasm":0},"gbc":{"version":"4","netplay":0,"state":1,"asmjs":1,"wasm":0},"gba":{"version":"11","netplay":0,"state":1,"asmjs":1,"wasm":0},"segaGG":{"version":"9","netplay":0,"state":1,"asmjs":1,"wasm":1},"segaMD":{"version":"9","netplay":1,"state":1,"asmjs":1,"wasm":1},"segaMS":{"version":"9","netplay":1,"state":1,"asmjs":1,"wasm":1},"segaCD":{"version":"9","netplay":1,"state":1,"asmjs":1,"wasm":0},"segaSaturn":{"version":"3","netplay":0,"state":1,"asmjs":1,"wasm":0},"psx":{"version":"11","netplay":0,"state":1,"asmjs":0,"wasm":1},"n64":{"version":"14","netplay":1,"state":1,"asmjs":1,"wasm":0},"nds":{"version":"17","netplay":0,"state":1,"asmjs":1,"wasm":1},"3do":{"version":"1","netplay":1,"state":1,"asmjs":1,"wasm":0},"sega32x":{"version":"2","netplay":1,"state":1,"asmjs":1,"wasm":1},"mame2003":{"version":"6","netplay":1,"state":1,"asmjs":1,"wasm":0},"mame":{"version":"4","netplay":0,"state":0,"asmjs":0,"wasm":1},"vbanext":{"version":"1","netplay":0,"state":1,"asmjs":1,"wasm":1}},
|
||||||
"newCores": {
|
"newCores": {
|
||||||
"fceumm": {
|
"fceumm": {
|
||||||
"version":"0",
|
"version":"1",
|
||||||
"asmjs": 1,
|
"asmjs": 1,
|
||||||
"wasm": 1
|
"wasm": 1
|
||||||
},
|
},
|
||||||
"a5200": {
|
"a5200": {
|
||||||
"version":"5",
|
"version":"6",
|
||||||
"asmjs": 1,
|
"asmjs": 1,
|
||||||
"wasm": 1
|
"wasm": 1
|
||||||
},
|
},
|
||||||
"mame2003": {
|
"mame2003": {
|
||||||
"version":"6",
|
"version":"7",
|
||||||
"asmjs": 0,
|
"asmjs": 0,
|
||||||
"wasm": 1
|
"wasm": 1
|
||||||
},
|
},
|
||||||
"mupen64plus_next": {
|
"mupen64plus_next": {
|
||||||
"version":"0",
|
"version":"1",
|
||||||
"asmjs": 0,
|
"asmjs": 0,
|
||||||
"wasm": 1
|
"wasm": 1
|
||||||
},
|
},
|
||||||
"desmume2015": {
|
"desmume2015": {
|
||||||
"version":"0",
|
"version":"1",
|
||||||
"asmjs": 1,
|
"asmjs": 1,
|
||||||
"wasm": 1
|
"wasm": 1
|
||||||
},
|
},
|
||||||
"mgba": {
|
"mgba": {
|
||||||
"version":"0",
|
"version":"1",
|
||||||
"asmjs": 1,
|
"asmjs": 1,
|
||||||
"wasm": 1
|
"wasm": 1
|
||||||
},
|
},
|
||||||
"gambatte": {
|
"gambatte": {
|
||||||
"version":"0",
|
"version":"1",
|
||||||
"asmjs": 1,
|
"asmjs": 1,
|
||||||
"wasm": 1
|
"wasm": 1
|
||||||
},
|
},
|
||||||
"beetle_vb": {
|
"beetle_vb": {
|
||||||
"version":"0",
|
"version":"1",
|
||||||
"asmjs": 1,
|
"asmjs": 1,
|
||||||
"wasm": 1
|
"wasm": 1
|
||||||
},
|
},
|
||||||
"fbalpha2012_cps1": {
|
"fbalpha2012_cps1": {
|
||||||
"version":"0",
|
"version":"1",
|
||||||
"asmjs": 0,
|
"asmjs": 0,
|
||||||
"wasm": 1
|
"wasm": 1
|
||||||
},
|
},
|
||||||
"fbalpha2012_cps2": {
|
"fbalpha2012_cps2": {
|
||||||
"version":"0",
|
"version":"1",
|
||||||
"asmjs": 0,
|
"asmjs": 0,
|
||||||
"wasm": 1
|
"wasm": 1
|
||||||
},
|
},
|
||||||
"snes9x": {
|
"snes9x": {
|
||||||
"version":"0",
|
"version":"1",
|
||||||
"asmjs": 0,
|
"asmjs": 0,
|
||||||
"wasm": 1
|
"wasm": 1
|
||||||
},
|
},
|
||||||
"nestopia": {
|
"nestopia": {
|
||||||
"version":"0",
|
"version":"1",
|
||||||
"asmjs": 1,
|
"asmjs": 1,
|
||||||
"wasm": 1
|
"wasm": 1
|
||||||
},
|
},
|
||||||
|
@ -72,7 +72,12 @@
|
||||||
"wasm": 1
|
"wasm": 1
|
||||||
},
|
},
|
||||||
"melonds": {
|
"melonds": {
|
||||||
"version":"0",
|
"version":"1",
|
||||||
|
"asmjs": 0,
|
||||||
|
"wasm": 1
|
||||||
|
},
|
||||||
|
"opera": {
|
||||||
|
"version":"1",
|
||||||
"asmjs": 0,
|
"asmjs": 0,
|
||||||
"wasm": 1
|
"wasm": 1
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{ "current_version": 30.5 }
|
{ "current_version": 31.0 }
|
||||||
|
|
|
@ -8,49 +8,49 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type='text/javascript'>
|
<script type='text/javascript'>
|
||||||
|
|
||||||
EJS_player = '#game';
|
EJS_player = '#game';
|
||||||
EJS_core = '3do';
|
|
||||||
|
// Can also be opera
|
||||||
// URL to Bios file
|
EJS_core = 'nes';
|
||||||
|
|
||||||
|
// URL to BIOS file
|
||||||
EJS_biosUrl = '';
|
EJS_biosUrl = '';
|
||||||
|
|
||||||
// URL to Game rom
|
// URL to Game rom
|
||||||
|
|
||||||
EJS_gameUrl = '';
|
EJS_gameUrl = '';
|
||||||
|
|
||||||
/*
|
// Path to the data directory
|
||||||
* Path to the WASM / JS files
|
|
||||||
* HAS TO BE in the same directory.
|
|
||||||
*/
|
|
||||||
|
|
||||||
EJS_pathtodata = 'data/';
|
EJS_pathtodata = 'data/';
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script src='data/loader.js'></script>
|
<script src='data/loader.js'></script>
|
||||||
```
|
```
|
||||||
|
|
||||||
## ROM Type
|
## ROM Type
|
||||||
|
|
||||||
Your **ROM** can have the following types:
|
Your **ROM** can have the following types:
|
||||||
- `bin`
|
|
||||||
- `cue`
|
|
||||||
- `iso`
|
- `iso`
|
||||||
|
- `bin`
|
||||||
|
- `chd`
|
||||||
|
- `cue`
|
||||||
|
|
||||||
## ROM List
|
### BIOS
|
||||||
|
|
||||||
| Name | MD5 Checksum |
|
| File Name | Description | md5sum |
|
||||||
|------|--------------|
|
| ----------- | ------------- | ----------- |
|
||||||
| Panasonic FZ-1 | `f47264dd47fe30f73ab3c010015c155b`
|
| panafz1.bin | Panasonic FZ-1 | `f47264dd47fe30f73ab3c010015c155b`
|
||||||
| Panasonic FZ-10 | `51f2f43ae2f3508a14d9f56597e2d3ce`
|
| panafz10.bin | Panasonic FZ-10 | `51f2f43ae2f3508a14d9f56597e2d3ce`
|
||||||
| Panasonic FZ-10 | `1477bda80dc33731a65468c1f5bcbee9`
|
| panafz10-norsa.bin | Panasonic FZ-10 [RSA Patch] | `1477bda80dc33731a65468c1f5bcbee9`
|
||||||
| Panasonic FZ-10-E | `a48e6746bd7edec0f40cff078f0bb19f`
|
| panafz10e-anvil.bin | Panasonic FZ-10-E [Anvil] | `a48e6746bd7edec0f40cff078f0bb19f`
|
||||||
| Panasonic FZ-10-E | `cf11bbb5a16d7af9875cca9de9a15e09`
|
| panafz10e-anvil-norsa.bin | Panasonic FZ-10-E [Anvil RSA Patch] | `cf11bbb5a16d7af9875cca9de9a15e09`
|
||||||
| Goldstar GDO-101M | `8639fd5e549bd6238cfee79e3e749114`
|
| panafz1j.bin | Panasonic FZ-1J | `a496cfdded3da562759be3561317b605`
|
||||||
| Sanyo IMP-21J TRY | `35fa1a1ebaaeea286dc5cd15487c13ea`
|
| panafz1j-norsa.bin | Panasonic FZ-1J [RSA Patch] | `f6c71de7470d16abe4f71b1444883dc8`
|
||||||
| Shootout At Old Tucson | `8970fc987ab89a7f64da9f8a8c4333ff`
|
| goldstar.bin | Goldstar GDO-101M | `8639fd5e549bd6238cfee79e3e749114`
|
||||||
| Panasonic FZ-1 Kanji ROM | `b8dc97f778a6245c58e064b0312e8281`
|
| sanyotry.bin | Sanyo IMP-21J TRY | `35fa1a1ebaaeea286dc5cd15487c13ea`
|
||||||
| Panasonic FZ-10JA Kanji ROM | `428577250f43edc902ea239c50d2240d`
|
| 3do_arcade_saot.bin | Shootout At Old Tucson | `8970fc987ab89a7f64da9f8a8c4333ff`
|
||||||
| Panasonic FZ-1J Kanji ROM | `c23fb5d5e6bb1c240d02cf968972be37`
|
|
||||||
|
### CORES
|
||||||
|
|
||||||
|
The *nes* system supports 1 core
|
||||||
|
- `opera`
|
||||||
|
|
||||||
|
If set to `3do`, emulator will use the `opera` core.
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
|
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8832864985153925" crossorigin="anonymous"></script>
|
||||||
<title>EmulatorJS</title>
|
<title>EmulatorJS</title>
|
||||||
|
|
||||||
<link rel = icon href = docs/favicon.ico sizes = "16x16 32x32 48x48 64x64" type = image/vnd.microsoft.icon>
|
<link rel = icon href = docs/favicon.ico sizes = "16x16 32x32 48x48 64x64" type = image/vnd.microsoft.icon>
|
||||||
|
@ -168,6 +169,10 @@
|
||||||
window.EJS_core = core
|
window.EJS_core = core
|
||||||
window.EJS_pathtodata = "data/"
|
window.EJS_pathtodata = "data/"
|
||||||
window.EJS_startOnLoaded = true;
|
window.EJS_startOnLoaded = true;
|
||||||
|
|
||||||
|
if (window.location.hostname === "demo.emulatorjs.org") {
|
||||||
|
window.EJS_AdUrl = "https://ads.emulatorjs.org/";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
script.src = "data/loader.js"
|
script.src = "data/loader.js"
|
||||||
|
@ -178,4 +183,4 @@
|
||||||
box.ondragleave = () => box.removeAttribute("drag")
|
box.ondragleave = () => box.removeAttribute("drag")
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Reference in a new issue