mirror of
https://github.com/EmulatorJS/EmulatorJS.git
synced 2024-09-20 02:46:23 +00:00
Version 3.1.5
Co-authored-by: Allan Niles <74841470+allancoding@users.noreply.github.com> Co-authored-by: xufenqi <xufenqi@weili.com> Co-authored-by: incredibleIdea <510996577@qq.com> Unverified-co-authored-by: rwv <7891383+rwv@users.noreply.github.com>
This commit is contained in:
parent
cc37200ac3
commit
400f705842
17 changed files with 7888 additions and 580 deletions
30
.github/ISSUE_TEMPLATE/bug.md
vendored
Normal file
30
.github/ISSUE_TEMPLATE/bug.md
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
---
|
||||
name: Bug
|
||||
about: Something isn't functioning as intended
|
||||
title: "[Bug]"
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
|
||||
#### Make sure your issue doesn't get closed! Make sure you have done the following items
|
||||
|
||||
- [ ] I have collected a **FULL** log of the console, with `EJS_DEBUG_XX` set to true, and uploaded it straight to GitHub.
|
||||
- [ ] I have not made any changes to the EmulatorJS instance I am running into this bug on.
|
||||
- [ ] I am on the latest version of EmulatorJS
|
||||
- [ ] I have not attached any images or logs via external sites. I have uploaded them straight to GitHub and acknowledge that external sites may pose a security issue.
|
||||
- [ ] I have included, **IN DETAIL**, the steps to reproduce the bug.
|
||||
|
||||
<!--
|
||||
To collect a log of the console.
|
||||
1. Add the following line to your code
|
||||
```
|
||||
EJS_DEBUG_XX = true;
|
||||
```
|
||||
2. Right click and click `inspect`.
|
||||
3. Select the `console` tab at the top.
|
||||
4. then reload the broken page.
|
||||
5. Right click on the console and click `Save as...`
|
||||
6. Upload it to your issue.
|
||||
-->
|
|
@ -1,6 +1,10 @@
|
|||
# Changes
|
||||
|
||||
# 3.1.0
|
||||
# 3.1.5
|
||||
- Fixed iOS bug for iPads
|
||||
- Added netplay! (only working on new cores)
|
||||
|
||||
# 3.1.0 [View Tree](https://github.com/ethanaobrien/emulatorjs/tree/614f5cb55e2768199ba05b756b47d0ab7ab283fd)
|
||||
- Added ability to drag and drop save states.
|
||||
- Fixed some "update" and "cancel" and "close" button confustion
|
||||
- Removed save state retroarch messages
|
||||
|
|
6
LICENSE
6
LICENSE
|
@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively
|
|||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
emulatorjs: run games in your web-browser
|
||||
Copyright (C) 2022 Ethan O'Brien
|
||||
EmulatorJS: RetroArch on the web
|
||||
Copyright (C) 2023 Ethan O'Brien
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
|||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
emulatorjs Copyright (C) 2022 Ethan O'Brien
|
||||
EmulatorJS Copyright (C) 2023 Ethan O'Brien
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
|
15
README.md
15
README.md
|
@ -14,6 +14,10 @@ Self-hosted **Javascript** emulation for various system.
|
|||
|
||||
<br>
|
||||
|
||||
Try out netplay [here](https://demo.emulatorjs.org/demos/netplay.html)!
|
||||
|
||||
<br>
|
||||
|
||||
[![Button Website]][Website]
|
||||
[![Button Usage]][Usage]<br>
|
||||
[![Button Configurator]][Configurator]<br>
|
||||
|
@ -22,17 +26,14 @@ Self-hosted **Javascript** emulation for various system.
|
|||
|
||||
[![Button Contributors]][Contributors]
|
||||
|
||||
Join our Discord server:
|
||||
|
||||
[![Join our Discord server!](https://invite.caspertheghost.me/?inviteCode=6akryGkETU&format=svg)](https://discord.gg/6akryGkETU)
|
||||
|
||||
</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.*
|
||||
|
||||
<br>
|
||||
|
||||
### Ads
|
||||
|
||||
*This project has no ads.* <br>
|
||||
|
|
|
@ -48,7 +48,13 @@
|
|||
-webkit-user-select:none;
|
||||
-moz-user-select:none;
|
||||
-ms-user-select:none;
|
||||
user-select:none
|
||||
user-select:none;
|
||||
}
|
||||
.ejs--f932566a0af5314da834324c901978 input{
|
||||
user-select: text;
|
||||
-webkit-user-select:text;
|
||||
-moz-user-select:text;
|
||||
-ms-user-select:text;
|
||||
}
|
||||
.ejs--666d4296310579687cf3cf3d2cf951{
|
||||
display:inline-block;
|
||||
|
@ -82,7 +88,7 @@
|
|||
.ejs--7a5f920ceffb2913f6dbda780573cf:focus{
|
||||
outline:0
|
||||
}
|
||||
.ejs--7a5f920ceffb2913f6dbda780573cf *{
|
||||
.ejs--7a5f920ceffb2913f6dbda780573cf *:not(input,textarea){
|
||||
-webkit-user-select:none;
|
||||
-moz-user-select:none;
|
||||
-ms-user-select:none;
|
||||
|
@ -998,7 +1004,8 @@ a.ejs--73f9b4e94a7a1fe74e11107d5ab2ef:hover{
|
|||
cursor:pointer
|
||||
}
|
||||
.ejs--71527b6509aa48afce3ce1a11c02f0{
|
||||
float:none
|
||||
float:none;
|
||||
user-select: text!important;
|
||||
}
|
||||
.ejs--7ad35768e3f6b9faf97db01d5b60ae{
|
||||
float:none
|
||||
|
@ -1034,10 +1041,11 @@ a.ejs--73f9b4e94a7a1fe74e11107d5ab2ef:hover{
|
|||
float:none
|
||||
}
|
||||
.ejs--0885d5e25e19127b6b516014426a1b{
|
||||
float:none
|
||||
float:none;
|
||||
}
|
||||
.ejs--25023d28756fdb9dfbbfb6dccb8677{
|
||||
float:none
|
||||
float:none;
|
||||
user-select: text!important;
|
||||
}
|
||||
.ejs--75b3a8d35aacc6424ed7422fdeaaaa{
|
||||
float:none
|
||||
|
@ -1060,7 +1068,8 @@ a.ejs--73f9b4e94a7a1fe74e11107d5ab2ef:hover{
|
|||
width:80px
|
||||
}
|
||||
.ejs--9e670880bb57e824400fa00f09aaad,.ejs--2b4e3c245b7b25dfdac5e09155a68e,.ejs--572b0b3a0345a6b01b01a15a02842c,.ejs--a7d7f80c8999469c991ea452a85dd9{
|
||||
float:none
|
||||
float:none;
|
||||
user-select: text!important;
|
||||
}
|
||||
.ejs--2b4e3c245b7b25dfdac5e09155a68e{
|
||||
max-width:320px;
|
||||
|
|
2
data/emu-css.min.css
vendored
2
data/emu-css.min.css
vendored
File diff suppressed because one or more lines are too long
252
data/emu-main.js
252
data/emu-main.js
File diff suppressed because one or more lines are too long
2975
data/emulator.js
2975
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() {
|
||||
let VERSION = 31.0;
|
||||
let VERSION = 31.6;
|
||||
if ((window.location && ['localhost', '127.0.0.1'].includes(location.hostname)) ||
|
||||
'undefined' != typeof EJS_DEBUG_XX && true === EJS_DEBUG_XX) {
|
||||
fetch('https://raw.githack.com/EmulatorJS/EmulatorJS/main/data/version.json').then(response => {
|
||||
|
@ -13,7 +13,6 @@
|
|||
}
|
||||
})
|
||||
}
|
||||
let scriptTag = document.getElementsByTagName('script')[0];
|
||||
function loadStyle(file) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
let css = document.createElement('link');
|
||||
|
@ -45,12 +44,12 @@
|
|||
return file+'?v='+VERSION;
|
||||
}
|
||||
}();
|
||||
scriptTag.parentNode.insertBefore(script, scriptTag);
|
||||
script.onload = resolve;
|
||||
document.head.appendChild(script);
|
||||
})
|
||||
}
|
||||
if (('undefined' != typeof EJS_DEBUG_XX && true === EJS_DEBUG_XX) ||
|
||||
/(iPad|iPhone|iPod)/gi .test(navigator.platform)) {
|
||||
/(iPad|iPhone|iPod|Macintosh)/gi.test(navigator.userAgent)) {
|
||||
await loadStyle('emu-css.css');
|
||||
await loadScript('emu-main.js');
|
||||
await loadScript('emulator.js');
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"restart": "重新开始",
|
||||
"play": "播放",
|
||||
"pause": "暂停",
|
||||
"played": "玩过",
|
||||
"played": "已玩",
|
||||
"volume": "音量",
|
||||
"mute": "静音 (F9)",
|
||||
"unmute": "取消静音 (F9)",
|
||||
|
@ -16,11 +16,11 @@
|
|||
"netplay": "网络游戏",
|
||||
"gamepad": "控制设置",
|
||||
"cheat": "秘籍",
|
||||
"menuBack": "返回上一级菜单",
|
||||
"menuBack": "返回上级菜单",
|
||||
"normal": "正常",
|
||||
"all": "全部",
|
||||
"reset": "重置",
|
||||
"disabled": "残障人士",
|
||||
"disabled": "禁用",
|
||||
"enabled": "启用",
|
||||
"playNow": "开始游戏"
|
||||
},
|
||||
|
@ -28,10 +28,10 @@
|
|||
"shader": {
|
||||
"label": "着色器",
|
||||
"options": {
|
||||
"disabled": "残疾人士",
|
||||
"disabled": "禁用",
|
||||
"2xScaleHQ.glslp": "2xScaleHQ",
|
||||
"4xScaleHQ.glslp": "4xScaleHQ",
|
||||
"crt-easymode.glslp": "CRT 简易模式",
|
||||
"crt-easymode.glslp": "CRT简易模式",
|
||||
"crt-aperture.glslp": "CRT孔径",
|
||||
"crt-geom.glslp": "CRT几何",
|
||||
"crt-mattias.glslp": "CRT mattias"
|
||||
|
@ -41,17 +41,17 @@
|
|||
"virtual-gamepad": {
|
||||
"label": "虚拟游戏手柄",
|
||||
"options": {
|
||||
"disabled": "残疾人士",
|
||||
"disabled": "禁用",
|
||||
"enabled": "启用"
|
||||
},
|
||||
"default": "enabled"
|
||||
}
|
||||
},
|
||||
"Control Settings": "控制设置",
|
||||
"Control Settings": "控制器设置",
|
||||
"Player 1": "玩家1",
|
||||
"Player 2": "玩家2",
|
||||
"Player 3": "玩家 3",
|
||||
"Player 4": "玩家 4",
|
||||
"Player 3": "玩家3",
|
||||
"Player 4": "玩家4",
|
||||
"Update": "更新",
|
||||
"Reset": "重置",
|
||||
"Clear": "清除",
|
||||
|
@ -103,7 +103,7 @@
|
|||
"Color Palette": "调色板",
|
||||
"No Sprite Limit": "无精灵图限制",
|
||||
"Enabled": "启用",
|
||||
"Disabled": "残障人士",
|
||||
"Disabled": "禁用",
|
||||
"enabled": "启用",
|
||||
"disabled": "已禁用",
|
||||
"Low": "低",
|
||||
|
|
26
data/v.json
26
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}},
|
||||
"newCores": {
|
||||
"fceumm": {
|
||||
"version":"1",
|
||||
"version":"2",
|
||||
"asmjs": 1,
|
||||
"wasm": 1
|
||||
},
|
||||
"a5200": {
|
||||
"version":"6",
|
||||
"version":"7",
|
||||
"asmjs": 1,
|
||||
"wasm": 1
|
||||
},
|
||||
"mame2003": {
|
||||
"version":"7",
|
||||
"version":"8",
|
||||
"asmjs": 0,
|
||||
"wasm": 1
|
||||
},
|
||||
"mupen64plus_next": {
|
||||
"version":"1",
|
||||
"version":"2",
|
||||
"asmjs": 0,
|
||||
"wasm": 1
|
||||
},
|
||||
"desmume2015": {
|
||||
"version":"1",
|
||||
"version":"2",
|
||||
"asmjs": 1,
|
||||
"wasm": 1
|
||||
},
|
||||
"mgba": {
|
||||
"version":"1",
|
||||
"version":"2",
|
||||
"asmjs": 1,
|
||||
"wasm": 1
|
||||
},
|
||||
"gambatte": {
|
||||
"version":"1",
|
||||
"version":"2",
|
||||
"asmjs": 1,
|
||||
"wasm": 1
|
||||
},
|
||||
"beetle_vb": {
|
||||
"version":"1",
|
||||
"version":"2",
|
||||
"asmjs": 1,
|
||||
"wasm": 1
|
||||
},
|
||||
"fbalpha2012_cps1": {
|
||||
"version":"1",
|
||||
"version":"2",
|
||||
"asmjs": 0,
|
||||
"wasm": 1
|
||||
},
|
||||
"fbalpha2012_cps2": {
|
||||
"version":"1",
|
||||
"version":"2",
|
||||
"asmjs": 0,
|
||||
"wasm": 1
|
||||
},
|
||||
"snes9x": {
|
||||
"version":"1",
|
||||
"version":"2",
|
||||
"asmjs": 0,
|
||||
"wasm": 1
|
||||
},
|
||||
"nestopia": {
|
||||
"version":"1",
|
||||
"version":"2",
|
||||
"asmjs": 1,
|
||||
"wasm": 1
|
||||
},
|
||||
|
@ -72,7 +72,7 @@
|
|||
"wasm": 1
|
||||
},
|
||||
"melonds": {
|
||||
"version":"1",
|
||||
"version":"2",
|
||||
"asmjs": 0,
|
||||
"wasm": 1
|
||||
},
|
||||
|
|
|
@ -1 +1 @@
|
|||
{ "current_version": 31.0 }
|
||||
{ "current_version": 31.6 }
|
||||
|
|
BIN
demos/mega_mountain.nes
Normal file
BIN
demos/mega_mountain.nes
Normal file
Binary file not shown.
21
demos/netplay.html
Normal file
21
demos/netplay.html
Normal file
|
@ -0,0 +1,21 @@
|
|||
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8832864985153925" crossorigin="anonymous"></script>
|
||||
<title>EmulatorJS Netplay demo</title>
|
||||
|
||||
<link rel = icon href = docs/favicon.ico sizes = "16x16 32x32 48x48 64x64" type = image/vnd.microsoft.icon>
|
||||
<meta name = viewport content = "width = device-width, initial-scale = 1">
|
||||
|
||||
|
||||
<div style='width:640px;height:480px;max-width:100%'>
|
||||
<div id='game'></div>
|
||||
</div>
|
||||
|
||||
<script type='text/javascript'>
|
||||
EJS_player = '#game';
|
||||
EJS_core = 'nes';
|
||||
EJS_oldCores = true;
|
||||
EJS_gameUrl = 'mega_mountain.nes';
|
||||
EJS_pathtodata = '/data/';
|
||||
EJS_gameID = 1;
|
||||
</script>
|
||||
<script src="/data/loader.js"></script>
|
|
@ -55,33 +55,37 @@
|
|||
[![Avatar Kyle]][GitHub Kyle]
|
||||
[![Avatar Protektor]][GitHub Protektor]
|
||||
[![Avatar ericKuang]][GitHub ericKuang]
|
||||
[![Avatar seedgou]][GitHub seedgou]
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!------------------------------------------------------------------------------>
|
||||
|
||||
[Avatar Nekro]: https://github.com/imneckro.png?size=120
|
||||
[Avatar Nekro]: https://github.com/imneckro.png?size=100
|
||||
[GitHub Nekro]: https://github.com/imneckro 'ImNekro - ck-oneman'
|
||||
|
||||
[Avatar Grey]: https://github.com/Grey41.png?size=120
|
||||
[Avatar Grey]: https://github.com/Grey41.png?size=100
|
||||
[GitHub Grey]: https://github.com/Grey41 'Grey41 - Grey Hope'
|
||||
|
||||
[Avatar Kyle]: https://github.com/cheesykyle.png?size=120
|
||||
[Avatar Kyle]: https://github.com/cheesykyle.png?size=100
|
||||
[GitHub Kyle]: https://github.com/cheesykyle 'CheesyKyle - Kyle Steffel'
|
||||
|
||||
[Avatar Protektor]: https://github.com/Protektor-Desura.png?size=120
|
||||
[Avatar Protektor]: https://github.com/Protektor-Desura.png?size=100
|
||||
[GitHub Protektor]: https://github.com/Protektor-Desura 'Protektor-Desura - Protektor'
|
||||
|
||||
[Avatar ericKuang]: https://github.com/eric183.png?size=120
|
||||
[Avatar ericKuang]: https://github.com/eric183.png?size=100
|
||||
[GitHub ericKuang]: https://github.com/eric183 'eric183 - ericKuang'
|
||||
|
||||
[Avatar seedgou]: https://github.com/rwv.png?size=100
|
||||
[GitHub seedgou]: https://github.com/rwv 'rwv - seedgou'
|
||||
|
||||
|
||||
<!----------------------------------{ Ethan }----------------------------------->
|
||||
|
||||
[Badge Ethan GitHub]: https://img.shields.io/badge/Ethan_O'_Brien-181717.svg?style=for-the-badge&logo=GitHub&logoColor=white
|
||||
|
||||
[Ethan Avatar]: https://avatars.githubusercontent.com/u/77750390?s=80 'Ethan O\'Brien'
|
||||
[Ethan Avatar]: https://avatars.githubusercontent.com/u/77750390?s=90 'Ethan O\'Brien'
|
||||
[Ethan GitHub]: https://github.com/ethanaobrien
|
||||
|
||||
|
||||
|
@ -90,7 +94,7 @@
|
|||
[Badge Archiver GitHub]: https://img.shields.io/badge/ElectronicsArchiver-181717.svg?style=for-the-badge&logo=GitHub&logoColor=white
|
||||
[Badge Archiver Marked]: https://img.shields.io/badge/MarkedDown-49a2d5.svg?style=for-the-badge&logo=GitHub&logoColor=white
|
||||
|
||||
[Archiver Avatar]: https://avatars.githubusercontent.com/u/85485984?s=80 'ElectronicsArchiver - トトも'
|
||||
[Archiver Avatar]: https://avatars.githubusercontent.com/u/85485984?s=90 'ElectronicsArchiver - トトも'
|
||||
[Archiver GitHub]: https://github.com/ElectronicsArchiver
|
||||
[Archiver Marked]: https://github.com/MarkedDown
|
||||
|
||||
|
@ -100,6 +104,6 @@
|
|||
[Badge Allan GitHub]: https://img.shields.io/badge/allancoding-181717.svg?style=for-the-badge&logo=GitHub&logoColor=white
|
||||
[Badge Allan Website]: https://img.shields.io/badge/AllanCoding.ga-lightgray.svg?style=for-the-badge&logo=GitHub&logoColor=white
|
||||
|
||||
[Allan Avatar]: https://avatars.githubusercontent.com/u/74841470?s=80 'AllanCoding - Allan Niles'
|
||||
[Allan Avatar]: https://avatars.githubusercontent.com/u/74841470?s=90 'Allancoding - Allan Niles'
|
||||
[Allan GitHub]: https://github.com/allancoding
|
||||
[Allan Website]: https://allancoding.ga/
|
||||
|
|
4487
docs/Logo.svg
Normal file
4487
docs/Logo.svg
Normal file
File diff suppressed because it is too large
Load diff
After Width: | Height: | Size: 170 KiB |
Loading…
Reference in a new issue