initial commit
This commit is contained in:
commit
e87dd9f8fe
192
api.py
Normal file
192
api.py
Normal file
@ -0,0 +1,192 @@
|
||||
import flask
|
||||
from db_classes import *
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy import create_engine
|
||||
from flask_cors import CORS
|
||||
|
||||
app = flask.Flask(__name__)
|
||||
CORS(app)
|
||||
|
||||
def setup_session():
|
||||
engine = create_engine("mariadb+mariadbconnector://videogamedb:MumMTK3bwjYJRfe@simailadjalim.fr/videogamedb")
|
||||
return Session(engine)
|
||||
|
||||
def close_session(session):
|
||||
session.close()
|
||||
|
||||
@app.route("/langage", methods=["GET"])
|
||||
def get_langage():
|
||||
session = setup_session()
|
||||
data = []
|
||||
for language in session.query(Language).all():
|
||||
data.append({
|
||||
"id": language.id,
|
||||
"name": language.name
|
||||
})
|
||||
close_session(session)
|
||||
return flask.jsonify(data), 200
|
||||
|
||||
@app.route("/langage/<int:langage_id>", methods=["GET"])
|
||||
def get_langage_id(langage_id):
|
||||
session = setup_session()
|
||||
language = session.query(Language).filter(Language.id == langage_id).first()
|
||||
if language is None:
|
||||
close_session(session)
|
||||
return flask.jsonify({"error": "language not found"}), 404
|
||||
data = {
|
||||
"id": language.id,
|
||||
"name": language.name
|
||||
}
|
||||
close_session(session)
|
||||
return flask.jsonify(data), 200
|
||||
|
||||
@app.route("/extention", methods=["GET"])
|
||||
def get_extention():
|
||||
session = setup_session()
|
||||
data = []
|
||||
for extention in session.query(RomFileExtensions).all():
|
||||
data.append({
|
||||
"id": extention.id,
|
||||
"name": extention.name
|
||||
})
|
||||
close_session(session)
|
||||
return flask.jsonify(data), 200
|
||||
|
||||
@app.route("/extention/<int:extention_id>", methods=["GET"])
|
||||
def get_extention_id(extention_id):
|
||||
session = setup_session()
|
||||
extention = session.query(RomFileExtensions).filter(RomFileExtensions.id == extention_id).first()
|
||||
if extention is None:
|
||||
close_session(session)
|
||||
return flask.jsonify({"error": "extention not found"}), 404
|
||||
data = {
|
||||
"id": extention.id,
|
||||
"name": extention.name
|
||||
}
|
||||
close_session(session)
|
||||
return flask.jsonify(data), 200
|
||||
|
||||
@app.route("/consoles", methods=["GET"])
|
||||
def get_consoles():
|
||||
session = setup_session()
|
||||
send_data = []
|
||||
for console in session.query(Console).all():
|
||||
data = {
|
||||
"id": console.id,
|
||||
"name": console.name,
|
||||
"core": console.core,
|
||||
#TODO Fix
|
||||
"playable": True if console.playable else False
|
||||
}
|
||||
send_data.append(data)
|
||||
close_session(session)
|
||||
return send_data, 200
|
||||
|
||||
@app.route("/consoles/<int:console_id>", methods=["GET"])
|
||||
def get_console(console_id):
|
||||
session = setup_session()
|
||||
console = session.query(Console).filter(Console.id == console_id).first()
|
||||
if console is None:
|
||||
close_session(session)
|
||||
return flask.jsonify({"error": "console not found"}), 404
|
||||
data = {
|
||||
"id": console.id,
|
||||
"core": console.core,
|
||||
"name": console.name,
|
||||
"playable": True if console.playable else False
|
||||
}
|
||||
close_session(session)
|
||||
return flask.jsonify(data), 200
|
||||
|
||||
@app.route("/consoles/<int:console_id>/roms", methods=["GET"])
|
||||
def get_console_roms(console_id):
|
||||
session = setup_session()
|
||||
console = session.query(Console).filter(Console.id == console_id).first()
|
||||
if console is None:
|
||||
close_session(session)
|
||||
return flask.jsonify({"error": "console not found"}), 404
|
||||
data = []
|
||||
for rom in console.rom_files:
|
||||
data.append({
|
||||
"id": rom.id,
|
||||
"name": rom.name,
|
||||
"console_id": rom.console_id,
|
||||
"extension_id": rom.extension_id,
|
||||
"language_id": [language.id for language in rom.languages],
|
||||
})
|
||||
close_session(session)
|
||||
return flask.jsonify(data), 200
|
||||
|
||||
@app.route("/roms", methods=["GET"])
|
||||
def get_roms():
|
||||
session = setup_session()
|
||||
data = []
|
||||
for rom in session.query(RomFile).all():
|
||||
data.append({
|
||||
"id": rom.id,
|
||||
"name": rom.name,
|
||||
"console_id": rom.console_id,
|
||||
"extension_id": rom.extension_id,
|
||||
"language_id": [language.id for language in rom.languages],
|
||||
})
|
||||
close_session(session)
|
||||
return flask.jsonify(data), 200
|
||||
|
||||
@app.route("/roms/<int:rom_id>", methods=["GET"])
|
||||
def get_rom(rom_id):
|
||||
session = setup_session()
|
||||
rom = session.query(RomFile).filter(RomFile.id == rom_id).first()
|
||||
if rom is None:
|
||||
close_session(session)
|
||||
return flask.jsonify({"error": "rom not found"}), 404
|
||||
if flask.request.args.get("romfile"):
|
||||
return flask.send_file(rom.path), 200
|
||||
else :
|
||||
data = {
|
||||
"id": rom.id,
|
||||
"name": rom.name,
|
||||
"console_id": rom.console_id,
|
||||
"extension_id": rom.extension_id,
|
||||
"categories": [category.id for category in rom.categories],
|
||||
"language_id": [language.id for language in rom.languages],
|
||||
}
|
||||
close_session(session)
|
||||
return flask.jsonify(data), 200
|
||||
|
||||
@app.route("/categories", methods=["GET"])
|
||||
def get_categories():
|
||||
session = setup_session()
|
||||
data = []
|
||||
for category in session.query(Category).all():
|
||||
data.append({
|
||||
"id": category.id,
|
||||
"name": category.name
|
||||
})
|
||||
close_session(session)
|
||||
return flask.jsonify(data), 200
|
||||
|
||||
@app.route("/categories/<int:category_id>", methods=["GET"])
|
||||
def get_category(category_id):
|
||||
session = setup_session()
|
||||
category = session.query(Category).filter(Category.id == category_id).first()
|
||||
if category is None:
|
||||
close_session(session)
|
||||
return flask.jsonify({"error": "category not found"}), 404
|
||||
data = {
|
||||
"id": category.id,
|
||||
"name": category.name
|
||||
}
|
||||
close_session(session)
|
||||
return flask.jsonify(data), 200
|
||||
|
||||
@app.route("/emulator", methods=["GET"])
|
||||
def get_emulator():
|
||||
rom_id = flask.request.args.get("rom_id")
|
||||
if rom_id is None:
|
||||
return flask.jsonify({"error": "rom_id not found"}), 404
|
||||
console_core = flask.request.args.get("console_core")
|
||||
if console_core is None:
|
||||
return flask.jsonify({"error": "console_core not found"}), 404
|
||||
return flask.render_template("emulator.html",rom_id=rom_id,console_core=console_core), 200
|
||||
|
||||
app.run(host="0.0.0.0", port=5000, debug=True)
|
||||
136
db_classes.py
Normal file
136
db_classes.py
Normal file
@ -0,0 +1,136 @@
|
||||
from typing import List
|
||||
from sqlalchemy import ForeignKey
|
||||
from sqlalchemy import Table, Column
|
||||
from sqlalchemy import String, Integer, Boolean
|
||||
from sqlalchemy.orm import DeclarativeBase
|
||||
from sqlalchemy.orm import Mapped
|
||||
from sqlalchemy.orm import mapped_column
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
|
||||
class Base(DeclarativeBase):
|
||||
pass
|
||||
|
||||
#Many to many relationship
|
||||
consoles_extensions = Table(
|
||||
" consoles_extensions",
|
||||
Base.metadata,
|
||||
Column("console_id", ForeignKey("console.id")),
|
||||
Column("extension_id", ForeignKey("rom_file_extensions.id")),
|
||||
)
|
||||
|
||||
class Console(Base):
|
||||
__tablename__ = 'console'
|
||||
id : Mapped[int] = mapped_column(primary_key=True)
|
||||
name : Mapped[str] = mapped_column(String(400))
|
||||
core : Mapped[str] = mapped_column(String(400))
|
||||
playable = Mapped[bool]
|
||||
|
||||
#Many to many relationship
|
||||
rom_files_extensions : Mapped[List['RomFileExtensions']] = relationship(secondary=consoles_extensions, back_populates='consoles')
|
||||
|
||||
#One to many relationship
|
||||
rom_files : Mapped[List['RomFile']] = relationship(back_populates='console')
|
||||
|
||||
def __init__(self,name ,core ,playable, rom_files_extensions):
|
||||
self.name = name
|
||||
self.core = core
|
||||
self.playable = playable
|
||||
self.rom_files_extensions = rom_files_extensions
|
||||
|
||||
def __repr__(self):
|
||||
return f"<Console(name={self.name},core={self.core}, playable={self.playable})>"
|
||||
|
||||
class RomFileExtensions(Base):
|
||||
__tablename__ = 'rom_file_extensions'
|
||||
id : Mapped[int] = mapped_column(primary_key=True)
|
||||
name : Mapped[str] = mapped_column(String(400))
|
||||
|
||||
#Many to many relationship
|
||||
consoles: Mapped[List[Console]] = relationship(secondary=consoles_extensions, back_populates='rom_files_extensions')
|
||||
|
||||
#One to many relationship
|
||||
roms : Mapped[List['RomFile']] = relationship(back_populates='extension')
|
||||
|
||||
def __init__(self, name, consoles):
|
||||
self.name = name
|
||||
self.consoles = consoles
|
||||
|
||||
def __repr__(self):
|
||||
return f"<RomFileExtensions(name={self.name})>"
|
||||
|
||||
rom_language = Table(
|
||||
"rom_language",
|
||||
Base.metadata,
|
||||
Column("language_id", ForeignKey("language.id")),
|
||||
Column("rom_id", ForeignKey("rom_file.id")),
|
||||
)
|
||||
|
||||
class Language(Base):
|
||||
__tablename__ = 'language'
|
||||
id : Mapped[int] = mapped_column(primary_key=True)
|
||||
name : Mapped[str] = mapped_column(String(400))
|
||||
|
||||
#Many to many relationship
|
||||
roms : Mapped[List['RomFile']] = relationship(secondary=rom_language, back_populates='languages')
|
||||
|
||||
def __init__(self, name, roms):
|
||||
self.name = name
|
||||
self.roms = roms
|
||||
|
||||
def __repr__(self):
|
||||
return f"<Language(name={self.name})>"
|
||||
|
||||
#Many to many relationship
|
||||
rom_category = Table(
|
||||
"rom_category",
|
||||
Base.metadata,
|
||||
Column("category_id", ForeignKey("category.id")),
|
||||
Column("rom_id", ForeignKey("rom_file.id")),
|
||||
)
|
||||
|
||||
class Category(Base):
|
||||
__tablename__ = 'category'
|
||||
id : Mapped[int] = mapped_column(primary_key=True)
|
||||
name : Mapped[str] = mapped_column(String(400))
|
||||
|
||||
#Many to many relationship
|
||||
roms : Mapped[List['RomFile']] = relationship(secondary=rom_category, back_populates='categories')
|
||||
|
||||
def __init__(self, name, roms):
|
||||
self.name = name
|
||||
self.roms = roms
|
||||
|
||||
def __repr__(self):
|
||||
return f"<Category(name={self.name})>"
|
||||
|
||||
class RomFile(Base):
|
||||
__tablename__ = 'rom_file'
|
||||
id : Mapped[int] = mapped_column(primary_key=True)
|
||||
name : Mapped[str] = mapped_column(String(400))
|
||||
path : Mapped[str] = mapped_column(String(400))
|
||||
|
||||
#Many to many relationship
|
||||
categories : Mapped[List[Category]] = relationship(secondary=rom_category, back_populates='roms')
|
||||
|
||||
#Many to many relationship
|
||||
languages : Mapped[List[Language]] = relationship(secondary=rom_language, back_populates='roms')
|
||||
|
||||
#One to many relationship
|
||||
extension : Mapped[RomFileExtensions] = relationship(back_populates="roms")
|
||||
extension_id : Mapped[int] = mapped_column(ForeignKey('rom_file_extensions.id'))
|
||||
|
||||
#One to many relationship
|
||||
console : Mapped[Console] = relationship(back_populates="rom_files")
|
||||
console_id : Mapped[int] = mapped_column(ForeignKey('console.id'))
|
||||
|
||||
def __init__(self, name, path, categories, languages, extension, console):
|
||||
self.name = name
|
||||
self.path = path
|
||||
self.categories = categories
|
||||
self.languages = languages
|
||||
self.extension = extension
|
||||
self.console = console
|
||||
|
||||
def __repr__(self):
|
||||
return f"<RomFile(name={self.name}, path={self.path})>"
|
||||
13
emulatorjs/EmulatorJS-main/.github/FUNDING.yml
vendored
Normal file
13
emulatorjs/EmulatorJS-main/.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']
|
||||
30
emulatorjs/EmulatorJS-main/.github/ISSUE_TEMPLATE/bug.md
vendored
Normal file
30
emulatorjs/EmulatorJS-main/.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.
|
||||
-->
|
||||
42
emulatorjs/EmulatorJS-main/.github/workflows/main.yml
vendored
Normal file
42
emulatorjs/EmulatorJS-main/.github/workflows/main.yml
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
name: Minify Code
|
||||
|
||||
on: [push, pull_request, workflow_dispatch]
|
||||
|
||||
jobs:
|
||||
paths-filter:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
output1: ${{ steps.filter.outputs.data }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: dorny/paths-filter@v2
|
||||
id: filter
|
||||
with:
|
||||
filters: |
|
||||
data:
|
||||
- 'data/**'
|
||||
# run only if 'data' files were changed
|
||||
- name: workflow tests
|
||||
if: steps.filter.outputs.data == 'true'
|
||||
run: echo "Data file"
|
||||
|
||||
# run only if not 'data' files were changed
|
||||
- name: not workflow tests
|
||||
if: steps.filter.outputs.data != 'true'
|
||||
run: echo "NOT Data file"
|
||||
|
||||
next-job:
|
||||
runs-on: ubuntu-latest
|
||||
# Wait from the paths-filter to be completed before starting next-job
|
||||
needs: paths-filter
|
||||
if: needs.paths-filter.outputs.output1 == 'true'
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: '12'
|
||||
- run: cd data/minify && npm install
|
||||
- run: cd data/minify && npm run build
|
||||
- uses: EndBug/add-and-commit@v9
|
||||
with:
|
||||
default_author: github_actions
|
||||
2
emulatorjs/EmulatorJS-main/.gitignore
vendored
Normal file
2
emulatorjs/EmulatorJS-main/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
**/node_modules/
|
||||
*.db
|
||||
262
emulatorjs/EmulatorJS-main/CHANGES.md
Normal file
262
emulatorjs/EmulatorJS-main/CHANGES.md
Normal file
@ -0,0 +1,262 @@
|
||||
# Changes
|
||||
|
||||
# 4.0.3
|
||||
- Remove RetroArch messages
|
||||
- Center video at top
|
||||
|
||||
# 4.0.2 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/06fe386e780bb55ef6baa4fbc6addd486bee747a)
|
||||
- Add link to RetroArch License on about page
|
||||
- Fix gamepad support for legacy browsers
|
||||
|
||||
# 4.0.1 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/efbb9dd462ee0e4f2120a6947af312e02fcf657c)
|
||||
Complete application re-write. Everything changed. Although some changes to note are:
|
||||
- Optimization for smaller screens.
|
||||
- No more dead code.
|
||||
- Fix Gamepad for firefox.
|
||||
- Store srm in browser.
|
||||
- Ability to import/export srm files.
|
||||
- No more old cores
|
||||
|
||||
And much much more was changed...
|
||||
|
||||
# 3.1.5 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/f7fa5d41487a424233b40e903020455606d68fee)
|
||||
- Fixed iOS bug for iPads
|
||||
- Added netplay! (only working on old cores)
|
||||
|
||||
# 3.1.0 [View Tree](https://github.com/EmulatorJS/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
|
||||
- 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/EmulatorJS/EmulatorJS/tree/44c31371fb3c314cd8dea36ccbaad89fb3ab98e6)
|
||||
- Fixed screen recording on devices that do not support getUserMedia api.
|
||||
- Added C label buttons to nintendo 64 virtual gamepad.
|
||||
- Fixed EJS_color bug.
|
||||
- Savestates are pulled from the core itself, to always be correct.
|
||||
- Several new cores. (a5200, beetle_vb, desmume2015, fbalpha2012_cps1, fbalpha2012_cps2, fceumm, gambatte, mame2003, mednafen_psx, mednafen_psx_hw, melonds, mgba, mupen64plus_next, nestopia, snes9x)
|
||||
- D-pad for virtual gamepad.
|
||||
- Updated translation files to include new menu options.
|
||||
- Ability to add more than one zone object to virtual gamepads.
|
||||
- Added ability to set custom menu options.
|
||||
- Virtual gamepad left handed mode.
|
||||
- Fixed Screen record svg.
|
||||
- Updated svg icons.
|
||||
- Cache "clear all" button.
|
||||
- Cache button moved to menu bar.
|
||||
- Added feature that will display the current downloaded size when the content length is not available.
|
||||
|
||||
# 2.3.9 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/088942083e44510f07133f2074a2d63a8af477cd)
|
||||
- Fixed incorrect variable referencing when update bios download data callback.
|
||||
- Fixed rom storage size limits.
|
||||
- Fixed download percent not showing with some files.
|
||||
|
||||
# 2.3.8 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/5f176b963e4b2055983b82396378d1e3837a69c4)
|
||||
- Remove broken shader.
|
||||
- Add download percent message.
|
||||
- Fixed UI "saving state" message not going away.
|
||||
|
||||
# 2.3.7 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/8b9607becfe0aaad42b8b8486c7d379821b72125)
|
||||
- Add more shaders.
|
||||
- Add bold fontsize option to custom virtual gamepad settings.
|
||||
- No longer set "normalOptions" from localization file.
|
||||
|
||||
# 2.3.6 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/b2919bc2c3d2d4c9fe3ab4f4486790a376b7acfe)
|
||||
- Remove default control mappings for gamepads.
|
||||
- Upgraded invalid character regex to catch more characters.
|
||||
|
||||
# 2.3.5 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/a5a9916aba041e75ee73815376ed4fd2e22701bd)
|
||||
- Use regex to detect and replace invalid characters in filename/gamename settings.
|
||||
|
||||
# 2.3.4 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/45d982b6362cfd29cb2eda9721066e03893ba0d8)
|
||||
- Add new arcade core.
|
||||
- Fix patch file game id set bug.
|
||||
|
||||
# 2.3.4 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/45d982b6362cfd29cb2eda9721066e03893ba0d8)
|
||||
- Add new arcade core.
|
||||
|
||||
# 2.3.3 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/11bddd5a4277aa04f80b941f05cc024b3de58bfc)
|
||||
- Make version in loader.js reasonable.
|
||||
- Created function to return the game id to prevent unnecessary data stored.
|
||||
|
||||
# 2.3.2 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/e9e017435f2c41c6c2b127024cc88ac51bdf04d9)
|
||||
- Fix reference error.
|
||||
- Fix bug in custom virtual gamepad processor where if value is set to 0 it will see that as the value being missing.
|
||||
|
||||
# 2.3.1 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/0fd6d58e2011fa1a39bd2e11ba3d2f17773f0961)
|
||||
- Use let instead of var.
|
||||
|
||||
# 2.3.0 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/2fd0f545285151524262cc799efef6d996d7c6c1)
|
||||
- Added ability to customize virtual gamepad UI.
|
||||
- Fixed bug where shader is not set on start.
|
||||
|
||||
# 2.2.9 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/018c39d4065b866487f8f18ca88c9488eab69a6d)
|
||||
- Added feature to save save files to indexeddb every 5 minutes.
|
||||
|
||||
# 2.2.8 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/9860d662d02b56417044cca11937448041d9cf43)
|
||||
- Re-write gamepad handler.
|
||||
|
||||
# 2.2.7 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/c03d18990b6536c1503bba2c640dbc13db982bb3)
|
||||
- Removed un-needed FS proxy functions.
|
||||
|
||||
# 2.2.6 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/fd71b5dfc2bd44d8e1f0e7c6c7b3ee1a1127a696)
|
||||
- Added fps counter.
|
||||
- Fixed gba core aspect.
|
||||
|
||||
# 2.2.5 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/4b444ec23918149a6052807d778af82f79883c01)
|
||||
- Added ability to set custom control mappings.
|
||||
- Added ability to set custom default volume value.
|
||||
- Fixed gamepad axis as button, gamepad varaible compared to incorrect value.
|
||||
- Added ability to hide/show menu/context menu buttons.
|
||||
- Added ability to set game url to other data types.
|
||||
|
||||
# 2.2.3 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/41eed05677b4927bd114613040bfe4572c92c4b4)
|
||||
- Fixed rar unarchiving function reference.
|
||||
- Updated rar header detection.
|
||||
- Removed netplay.
|
||||
|
||||
# 2.2.1 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/19980deb12c3f0790176db6fc7b8b2de4069bf4e)
|
||||
- Added core menu options for new cores.
|
||||
- Added new mame2003 core.
|
||||
- Added support for debug emscripten setting for new cores.
|
||||
|
||||
# 2.0.1 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/a72222c39a793c4ff470ebb2b71c04829fee4b5e)
|
||||
- Control mapping for beta cores.
|
||||
- Updated beta cores.
|
||||
- Beta cores now the default option!
|
||||
- Added a5200 core.
|
||||
- Fixed save state for new n64 core.
|
||||
|
||||
# 1.2.2 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/8ab7bb3f49da373ed5d291c5f72039bbabf2fbc8)
|
||||
- Moved virtual gamepad menu button to the top left as 3 lines.
|
||||
- Added screen orientation lock.
|
||||
- Added beta n64 core!
|
||||
|
||||
# 1.2.1 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/638658e6202fd39cb5c94bedcfa00ccdf8b25840)
|
||||
- Updated beta core files.
|
||||
|
||||
# 1.1.6 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/fa153ba76791184d978f9fb8b69991b05b161bc8)
|
||||
- Replaced axios module with custom script.
|
||||
- Added pause/play for beta cores.
|
||||
- Sepperated css into its own file.
|
||||
- Renamed emu-min.js to emulator.min.js.
|
||||
|
||||
# 1.1.5 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/2767c635b8a6e05c57e054d2f9d01ae0c4ff6d47)
|
||||
- Cleaned up fetch error function.
|
||||
- Cleaned up virtual gamepad event listeners.
|
||||
- Add code of conduct.
|
||||
|
||||
# 1.1.2 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/64731dd8219931155b4e698aa98dbf65c2120038)
|
||||
- Fixed error where mame files were misnamed.
|
||||
- Fixed bug where variable referenced was not defined in loader.js.
|
||||
- Added .gitignore
|
||||
- Added nodejs script to minify js files.
|
||||
- Added audio to screen recording.
|
||||
- Removed lots of dead code from emulator.js file.
|
||||
- Update axios module.
|
||||
- Added CORS error message
|
||||
- Update nodejs buffer module.
|
||||
|
||||
# 1.1.0 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/715ded4ae23c2135bc9a8b9b7599f12c905393b3)
|
||||
- Added minify feature.
|
||||
- Added emulatorjs logo.
|
||||
- Added beta nds and gb core.
|
||||
- Fixed bug where when wasm was supported on the beta cores and not the old cores, a network error would appear if not using beta.
|
||||
- Added volume setting and cheats to beta cores.
|
||||
|
||||
# 1.0 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/fde44b095bb89e299daaaa4c8d7deebc79019865)
|
||||
- Official release of the beta cores.
|
||||
- Ability to use beta cores in production.
|
||||
- Ability to use the old emulatorjs netplay server.
|
||||
- Set screen recording out file name to gamename if present.
|
||||
- Set screenshot out file name to gamename if present.
|
||||
- Fixed virtual gamepad bug where a function was referenced to as an array.
|
||||
|
||||
# 0.4.26 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/0709829a11266b6ab4bbbf3e61d6dd6d3c372133)
|
||||
- Sepperated emulator.js file into 2 files.
|
||||
- Added support for a custom netplay server.
|
||||
- Fixed netplay room password input bug.
|
||||
- Fixed bug on iOS where virtual gamepad zone was un-responsive.
|
||||
- Added save state location feature.
|
||||
- Added mame core setting.
|
||||
- Added beta cores!
|
||||
- Added localization.
|
||||
- Re-wrote virtual gamepad code.
|
||||
- Added EJS_terminate function.
|
||||
- Exposed simulate_input function to window.
|
||||
- Update webrtc adapter.
|
||||
|
||||
# 0.4.25 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/ef3200ef87bffe57241e05ae9646cc201142ec46)
|
||||
- Moved load state on start from loader.js file to emulator.js file.
|
||||
- Moved data path function from loader.js file to emulator.js file.
|
||||
- Added ability to set custom path to data through `EJS_pathtodata` variable.
|
||||
- Added support for custom paths.
|
||||
- Expose the module and loader to window.
|
||||
- Added `EJS_startOnLoaded` to start the emulator on load.
|
||||
- Added quick save state slots.
|
||||
- Added save state message.
|
||||
- Only show save state slot in settings when save states are supported.
|
||||
- Added ds pointer lock.
|
||||
- Added menu button to virtual gamepad. Menu will only open when clicked on mobile.
|
||||
- Created licenese
|
||||
- Created official emulatorjs website.
|
||||
|
||||
# 0.4.24 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/73ff641616bcd10f088a004002183760832a1afc)
|
||||
- Deobsfocuted emulator.js and loader.js files to the most of my extent.
|
||||
- Added quick save/load hotkeys.
|
||||
- Added ability to use gamepad axis as button.
|
||||
- Fixed typo in controls title.
|
||||
- Only show needed inputs per system in control settings.
|
||||
- Re-write the loader.js file.
|
||||
- Exposed some variables to window.
|
||||
- Cleaned up context menu code.
|
||||
- Cleaned up some syntax in emulator.js file.
|
||||
- Declared `EJS_AdUrl` through loader.js file.
|
||||
- Fixed bug where mapping an axis as a button didn't work.
|
||||
- Added missing legacy n64 core.
|
||||
- Updated n64 core.
|
||||
|
||||
# 0.4.23-07 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/83e148c82cbc8b4e835a808dcf84456975f82a7c)
|
||||
- Removed not needed code.
|
||||
- Added reset button to control settings.
|
||||
- Added clear button to control settings.
|
||||
- Added `EJS_AdUrl` option, the ability to add an ad to the emulator.
|
||||
- Cleaned up some file fetching.
|
||||
- Fixed RAR unarchiving.
|
||||
|
||||
# 0.4.23-05 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/018c787ccf6daca58c863d38fff61910f33f98ec)
|
||||
- No longer cache games with the protocols of `file:`, and `chrome-extension:`.
|
||||
- Changed default keymappings.
|
||||
- Added screen recording button.
|
||||
|
||||
# 0.4.23-04 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/6464bbedc1cd58c023cd66656540fc174aedde8b)
|
||||
- Added mame2003, snes2002, snes2005, snes2010, and vbanext cores.
|
||||
- Added asmjs for all supported cores.
|
||||
|
||||
# 0.4.23-03 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/c883f267e1e56ed6b6472b891f78704c6e4b4c17)
|
||||
- Start loader.js deobsfocuting.
|
||||
- Deobsfocute extractzip.js.
|
||||
- Added `EJS_gameName`, the ability to change the file name of save states.
|
||||
|
||||
# 0.4.23-02 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/5d97620b25a81e49c6ba313e586fb37a5ce66002)
|
||||
- Start emulator.js deobsfocuting.
|
||||
|
||||
# 0.4.23-01 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/42a7e129cfded266b72539e8d1b5978d5e4119d8)
|
||||
- Added support for loading "blob:" urls.
|
||||
- Added support for loading state on game start.
|
||||
|
||||
# 0.4.23 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/5f5cf5cbba29cfd772d525a4c73a4bc5ea26654c)
|
||||
- Added update available message.
|
||||
- Fixed a bug where the 'x' from the ad iframe was still visible on game start.
|
||||
- Added a2600 and mame cores.
|
||||
- Remove visible 'x'
|
||||
- Add rar extraction support.
|
||||
|
||||
# 0.4.19 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/4fd22871663e5896bb5d0ce29a50ad508462387a)
|
||||
- Added support for 32x, 3do, a7800, arcade, bluemsx, jaguar, lynx, ngp, pce, saturn, sega, segacd, and ws cores.
|
||||
|
||||
# Initial release [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/be2db16cba8bd85bf901cd89ca6de51414cea792)
|
||||
- Support for unzipping zip files.
|
||||
- Support for unzipping 7zip files.
|
||||
- Support for vb, snes, psx, nes, nds, n64, gba, and gb systems. Only support for WASM.
|
||||
1
emulatorjs/EmulatorJS-main/CNAME
Normal file
1
emulatorjs/EmulatorJS-main/CNAME
Normal file
@ -0,0 +1 @@
|
||||
demo.emulatorjs.org
|
||||
128
emulatorjs/EmulatorJS-main/CODE_OF_CONDUCT.md
Normal file
128
emulatorjs/EmulatorJS-main/CODE_OF_CONDUCT.md
Normal file
@ -0,0 +1,128 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity
|
||||
and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
ethan.a.obrien@gmail.com.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or
|
||||
permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
the community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.0, available at
|
||||
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
||||
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||
enforcement ladder](https://github.com/mozilla/diversity).
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
https://www.contributor-covenant.org/faq. Translations are available at
|
||||
https://www.contributor-covenant.org/translations.
|
||||
674
emulatorjs/EmulatorJS-main/LICENSE
Normal file
674
emulatorjs/EmulatorJS-main/LICENSE
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
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: 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
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
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) 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.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
198
emulatorjs/EmulatorJS-main/README.md
Normal file
198
emulatorjs/EmulatorJS-main/README.md
Normal file
@ -0,0 +1,198 @@
|
||||
|
||||
<div align = center>
|
||||
|
||||
<img width = 300 src = docs/Logo-light.png#gh-dark-mode-only>
|
||||
<img width = 300 src = docs/Logo.png#gh-light-mode-only>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
[![Badge License]][License]
|
||||
|
||||
|
||||
Self-hosted **Javascript** emulation for various system.
|
||||
|
||||
<br>
|
||||
|
||||
[![Button Website]][Website]
|
||||
[![Button Usage]][Usage]<br>
|
||||
[![Button Configurator]][Configurator]<br>
|
||||
[![Button Demo]][Demo]
|
||||
[![Button Legacy]][Legacy]
|
||||
|
||||
[![Button Contributors]][Contributors]
|
||||
|
||||
Join our Discord server:
|
||||
|
||||
[](https://discord.gg/6akryGkETU)
|
||||
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
**As of EmulatorJS version 4.0, this project is no longer a reverse-engineered version of the emulatorjs.com project. It is now a complete re-write,**
|
||||
|
||||
<br>
|
||||
|
||||
**README BEFORE YOU UPDATE:** EmulatorJS Version 4.0 is a complete re-write of the application. At least some bugs are expected. If you did any communicating with the emulator, there is a 100% chance you will need to re-write your project, and to people with active branches of this project, I wish you luck with merge conflicts (I'm very sorry). The emulator object can be accessed through the `window.EJS_emulator` object.
|
||||
|
||||
It is **HIGHLY** suggested that you update to 4.0 ASAP.
|
||||
|
||||
<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
|
||||
|
||||
*If something doesn't work, please consider opening an* ***[Issue]*** <br>
|
||||
*with as many details as possible, as well as the console log.*
|
||||
|
||||
<br>
|
||||
|
||||
### Extensions
|
||||
|
||||
**[GameLibrary]**
|
||||
|
||||
*A library overview for your **ROM** folder.*
|
||||
|
||||
<br>
|
||||
|
||||
**>> When reporting bugs, please specify that you are using the old version**
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<h1 align = center>Supported Systems</h1>
|
||||
|
||||
<br>
|
||||
|
||||
<div align = center>
|
||||
|
||||
### 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]**
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
### Sega
|
||||
|
||||
**[Master System][Sega Master System]** |
|
||||
**[Mega Drive][Sega Mega Drive]** |
|
||||
**[Game Gear][Sega Game Gear]**
|
||||
|
||||
**[Saturn][Sega Saturn]** |
|
||||
**[CD][Sega CD]**
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
### Atari
|
||||
|
||||
**[2600][Atari 2600]** |
|
||||
**[5200][Atari 5200]** |
|
||||
**[7800][Atari 7800]** |
|
||||
**[Lynx][Atari Lynx]** |
|
||||
**[Jaguar][Atari Jaguar]**
|
||||
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
### Other
|
||||
|
||||
**[PlayStation]** |
|
||||
**[Arcade]** |
|
||||
**[3DO]** |
|
||||
**[MAME 2003]**
|
||||
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<!-- 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 --->
|
||||
|
||||
[License]: LICENSE
|
||||
[Issue]: https://github.com/ethanaobrien/emulatorjs/issues
|
||||
[patreon]: https://patreon.com/EmulatorJS
|
||||
|
||||
|
||||
<!-- 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 Extensions 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 --->
|
||||
|
||||
[GameLibrary]: https://github.com/Ramaerel/emulatorjs-GameLibrary
|
||||
|
||||
|
||||
<!-- 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 Quicklinks 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 --->
|
||||
|
||||
[Configurator]: https://emulatorjs.org/editor.html
|
||||
[Contributors]: docs/Contributors.md
|
||||
[Website]: https://emulatorjs.org/
|
||||
[Legacy]: https://coldcast.org/games/1/Super-Mario-Bros
|
||||
[Usage]: https://emulatorjs.org/docs/
|
||||
[Demo]: https://demo.emulatorjs.org/
|
||||
|
||||
|
||||
<!-- 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 Systems 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 -->
|
||||
|
||||
[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
|
||||
|
||||
[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
|
||||
[Atari 5200]: docs/Systems/Atari%205200.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
|
||||
[MAME 2003]: docs/Systems/MAME%202003.md
|
||||
|
||||
|
||||
<!-- 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 Badges 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 🎮 --->
|
||||
|
||||
[Badge License]: https://img.shields.io/badge/License-GPLv3-blue.svg?style=for-the-badge
|
||||
|
||||
[Button Configurator]: https://img.shields.io/badge/Configurator-992cb3?style=for-the-badge
|
||||
[Button Contributors]: https://img.shields.io/badge/Contributors-54b7dd?style=for-the-badge
|
||||
[Button Website]: https://img.shields.io/badge/Website-736e9b?style=for-the-badge
|
||||
[Button Legacy]: https://img.shields.io/badge/Legacy-ab910b?style=for-the-badge
|
||||
[Button Usage]: https://img.shields.io/badge/Usage-2478b5?style=for-the-badge
|
||||
[Button Demo]: https://img.shields.io/badge/Demo-528116?style=for-the-badge
|
||||
[Button Beta]: https://img.shields.io/badge/Beta-bb044f?style=for-the-badge
|
||||
1
emulatorjs/EmulatorJS-main/ads.txt
Normal file
1
emulatorjs/EmulatorJS-main/ads.txt
Normal file
@ -0,0 +1 @@
|
||||
google.com, pub-8832864985153925, DIRECT, f08c47fec0942fa0
|
||||
109
emulatorjs/EmulatorJS-main/docs/Contributors.md
Normal file
109
emulatorjs/EmulatorJS-main/docs/Contributors.md
Normal file
@ -0,0 +1,109 @@
|
||||
|
||||
<br>
|
||||
|
||||
<div align = center>
|
||||
|
||||
# Owner
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
![Ethan Avatar]
|
||||
|
||||
**[![Badge Ethan GitHub]][Ethan GitHub]**
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
# Contributors
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
![Allan Avatar]
|
||||
|
||||
### Co-Owner
|
||||
|
||||
***Various Fixes & Additions***
|
||||
|
||||
**[![Badge Allan GitHub]][Allan GitHub]**
|
||||
|
||||
**[![Badge Allan Website]][Allan Website]**
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
|
||||
![Archiver Avatar]
|
||||
|
||||
***Documentation Design***
|
||||
|
||||
**[![Badge Archiver GitHub]][Archiver GitHub]**
|
||||
|
||||
**[![Badge Archiver Marked]][Archiver Marked]**
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
|
||||
[![Avatar Nekro]][GitHub Nekro]
|
||||
[![Avatar Grey]][GitHub Grey]
|
||||
[![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=100
|
||||
[GitHub Nekro]: https://github.com/imneckro 'ImNekro - ck-oneman'
|
||||
|
||||
[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=100
|
||||
[GitHub Kyle]: https://github.com/cheesykyle 'CheesyKyle - Kyle Steffel'
|
||||
|
||||
[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=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=90 'Ethan O\'Brien'
|
||||
[Ethan GitHub]: https://github.com/ethanaobrien
|
||||
|
||||
|
||||
<!---------------------------{ ElectronicsArchiver }--------------------------->
|
||||
|
||||
[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=90 'ElectronicsArchiver - トトも'
|
||||
[Archiver GitHub]: https://github.com/ElectronicsArchiver
|
||||
[Archiver Marked]: https://github.com/MarkedDown
|
||||
|
||||
|
||||
<!----------------------------------{ Allan }---------------------------------->
|
||||
|
||||
[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=90 'Allancoding - Allan Niles'
|
||||
[Allan GitHub]: https://github.com/allancoding
|
||||
[Allan Website]: https://allancoding.ga/
|
||||
BIN
emulatorjs/EmulatorJS-main/docs/Logo-light.png
Normal file
BIN
emulatorjs/EmulatorJS-main/docs/Logo-light.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
BIN
emulatorjs/EmulatorJS-main/docs/Logo.png
Normal file
BIN
emulatorjs/EmulatorJS-main/docs/Logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
4487
emulatorjs/EmulatorJS-main/docs/Logo.svg
Normal file
4487
emulatorjs/EmulatorJS-main/docs/Logo.svg
Normal file
File diff suppressed because it is too large
Load Diff
|
After Width: | Height: | Size: 170 KiB |
56
emulatorjs/EmulatorJS-main/docs/Systems/3DO.md
Normal file
56
emulatorjs/EmulatorJS-main/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';
|
||||
|
||||
// Can also be opera
|
||||
EJS_core = 'nes';
|
||||
|
||||
// URL to BIOS file
|
||||
EJS_biosUrl = '';
|
||||
|
||||
// URL to Game rom
|
||||
EJS_gameUrl = '';
|
||||
|
||||
// Path to the data directory
|
||||
EJS_pathtodata = 'data/';
|
||||
</script>
|
||||
<script src='data/loader.js'></script>
|
||||
```
|
||||
|
||||
## ROM Type
|
||||
|
||||
Your **ROM** can have the following types:
|
||||
- `iso`
|
||||
- `bin`
|
||||
- `chd`
|
||||
- `cue`
|
||||
|
||||
### BIOS
|
||||
|
||||
| File Name | Description | md5sum |
|
||||
| ----------- | ------------- | ----------- |
|
||||
| panafz1.bin | Panasonic FZ-1 | `f47264dd47fe30f73ab3c010015c155b`
|
||||
| panafz10.bin | Panasonic FZ-10 | `51f2f43ae2f3508a14d9f56597e2d3ce`
|
||||
| panafz10-norsa.bin | Panasonic FZ-10 [RSA Patch] | `1477bda80dc33731a65468c1f5bcbee9`
|
||||
| panafz10e-anvil.bin | Panasonic FZ-10-E [Anvil] | `a48e6746bd7edec0f40cff078f0bb19f`
|
||||
| panafz10e-anvil-norsa.bin | Panasonic FZ-10-E [Anvil RSA Patch] | `cf11bbb5a16d7af9875cca9de9a15e09`
|
||||
| panafz1j.bin | Panasonic FZ-1J | `a496cfdded3da562759be3561317b605`
|
||||
| panafz1j-norsa.bin | Panasonic FZ-1J [RSA Patch] | `f6c71de7470d16abe4f71b1444883dc8`
|
||||
| goldstar.bin | Goldstar GDO-101M | `8639fd5e549bd6238cfee79e3e749114`
|
||||
| sanyotry.bin | Sanyo IMP-21J TRY | `35fa1a1ebaaeea286dc5cd15487c13ea`
|
||||
| 3do_arcade_saot.bin | Shootout At Old Tucson | `8970fc987ab89a7f64da9f8a8c4333ff`
|
||||
|
||||
### CORES
|
||||
|
||||
The *nes* system supports 1 core
|
||||
- `opera`
|
||||
|
||||
If set to `3do`, emulator will use the `opera` core.
|
||||
37
emulatorjs/EmulatorJS-main/docs/Systems/Arcade.md
Normal file
37
emulatorjs/EmulatorJS-main/docs/Systems/Arcade.md
Normal file
@ -0,0 +1,37 @@
|
||||
# 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';
|
||||
|
||||
// Can also be fbalpha2012_cps1 or fbalpha2012_cps2
|
||||
EJS_core = 'arcade';
|
||||
|
||||
// URL to Game rom
|
||||
EJS_gameUrl = '';
|
||||
|
||||
// Path to the data directory
|
||||
EJS_pathtodata = 'data/';
|
||||
</script>
|
||||
<script src='data/loader.js'></script>
|
||||
```
|
||||
|
||||
## ROM Type
|
||||
|
||||
Your **ROM** can have the following extensions:
|
||||
- `zip`
|
||||
|
||||
### CORES
|
||||
|
||||
The *arcade* system supports 2 cores
|
||||
- `fbalpha2012_cps1`
|
||||
- `fbalpha2012_cps2`
|
||||
|
||||
If set to `arcade`, emulator will use the `fbalpha2012_cps1` core.
|
||||
|
||||
35
emulatorjs/EmulatorJS-main/docs/Systems/Atari 2600.md
Normal file
35
emulatorjs/EmulatorJS-main/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>
|
||||
```
|
||||
|
||||
|
||||
|
||||
37
emulatorjs/EmulatorJS-main/docs/Systems/Atari 5200.md
Normal file
37
emulatorjs/EmulatorJS-main/docs/Systems/Atari 5200.md
Normal file
@ -0,0 +1,37 @@
|
||||
# Atari 5200
|
||||
|
||||
## Code Example
|
||||
|
||||
```html
|
||||
<div style='width:640px;height:480px;max-width:100%'>
|
||||
<div id='game'></div>
|
||||
</div>
|
||||
|
||||
<script type='text/javascript'>
|
||||
EJS_player = '#game';
|
||||
|
||||
// Can also be a5200
|
||||
EJS_core = 'atari5200';
|
||||
|
||||
// URL to Game rom
|
||||
EJS_gameUrl = '';
|
||||
|
||||
// Path to the data directory
|
||||
EJS_pathtodata = 'data/';
|
||||
</script>
|
||||
<script src='data/loader.js'></script>
|
||||
```
|
||||
|
||||
## ROM Type
|
||||
|
||||
Your **ROM** can have the following extensions:
|
||||
- `a52`
|
||||
- `bin`
|
||||
|
||||
### CORES
|
||||
|
||||
The *atari5200* system supports 1 core
|
||||
- `a5200`
|
||||
|
||||
If set to `atari5200`, emulator will use the `a5200` core.
|
||||
|
||||
33
emulatorjs/EmulatorJS-main/docs/Systems/Atari 7800.md
Normal file
33
emulatorjs/EmulatorJS-main/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
emulatorjs/EmulatorJS-main/docs/Systems/Atari Jaguar.md
Normal file
37
emulatorjs/EmulatorJS-main/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
emulatorjs/EmulatorJS-main/docs/Systems/Atari Lynx.md
Normal file
32
emulatorjs/EmulatorJS-main/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>
|
||||
```
|
||||
35
emulatorjs/EmulatorJS-main/docs/Systems/MAME 2003.md
Normal file
35
emulatorjs/EmulatorJS-main/docs/Systems/MAME 2003.md
Normal file
@ -0,0 +1,35 @@
|
||||
# MAME 2003
|
||||
|
||||
## 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 = 'mame2003';
|
||||
|
||||
// URL to Game rom
|
||||
EJS_gameUrl = '';
|
||||
|
||||
// Path to the data directory
|
||||
EJS_pathtodata = 'data/';
|
||||
</script>
|
||||
<script src='data/loader.js'></script>
|
||||
```
|
||||
|
||||
## ROM Type
|
||||
|
||||
Your **ROM** can have the following extensions:
|
||||
- `zip`
|
||||
|
||||
### CORES
|
||||
|
||||
The *mame2003* system supports 2 cores
|
||||
- `mame2003`
|
||||
|
||||
If set to `mame2003`, emulator will use the `mame2003` core.
|
||||
|
||||
52
emulatorjs/EmulatorJS-main/docs/Systems/NES-Famicom.md
Normal file
52
emulatorjs/EmulatorJS-main/docs/Systems/NES-Famicom.md
Normal file
@ -0,0 +1,52 @@
|
||||
# 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';
|
||||
|
||||
// Can also be fceumm or nestopia
|
||||
EJS_core = 'nes';
|
||||
|
||||
EJS_lightgun = false; // Lightgun
|
||||
|
||||
// URL to BIOS file
|
||||
EJS_biosUrl = '';
|
||||
|
||||
// URL to Game rom
|
||||
EJS_gameUrl = '';
|
||||
|
||||
// Path to the data directory
|
||||
EJS_pathtodata = 'data/';
|
||||
</script>
|
||||
<script src='data/loader.js'></script>
|
||||
```
|
||||
|
||||
## ROM Type
|
||||
|
||||
Your **ROM** can have the following extensions:
|
||||
- `fds`
|
||||
- `nes`
|
||||
- `unif`
|
||||
- `unf`
|
||||
|
||||
### BIOS
|
||||
|
||||
| File Name | Description | md5sum |
|
||||
| ----------- | ------------- | ----------- |
|
||||
| disksys.rom | Family Computer Disk System BIOS -<br> Required for Famicom Disk System emulation | ca30b50f880eb660a320674ed365ef7a |
|
||||
| gamegenie.nes | Game Genie add-on cartridge -<br> Required for Game Genei Add-on emulation<br> (Only supported on the fceumm core) | 7f98d77d7a094ad7d069b74bd553ec98 |
|
||||
|
||||
### CORES
|
||||
|
||||
The *nes* system supports 2 cores
|
||||
- `fceumm`
|
||||
- `nestopia`
|
||||
|
||||
If set to `nes`, emulator will use the `fceumm` core.
|
||||
|
||||
42
emulatorjs/EmulatorJS-main/docs/Systems/Nintendo 64.md
Normal file
42
emulatorjs/EmulatorJS-main/docs/Systems/Nintendo 64.md
Normal file
@ -0,0 +1,42 @@
|
||||
# Nintendo 64
|
||||
|
||||
## Code Example
|
||||
|
||||
```html
|
||||
<div style='width:640px;height:480px;max-width:100%'>
|
||||
<div id='game'></div>
|
||||
</div>
|
||||
|
||||
<script type='text/javascript'>
|
||||
EJS_player = '#game';
|
||||
|
||||
// Can also be mupen64plus_next
|
||||
EJS_core = 'n64';
|
||||
|
||||
// URL to Game rom
|
||||
EJS_gameUrl = '';
|
||||
|
||||
// Path to the data directory
|
||||
EJS_pathtodata = 'data/';
|
||||
</script>
|
||||
<script src='data/loader.js'></script>
|
||||
```
|
||||
|
||||
## ROM Type
|
||||
|
||||
Your **ROM** can have the following extensions:
|
||||
- `n64`
|
||||
- `v64`
|
||||
- `z64`
|
||||
- `bin`
|
||||
- `u1`
|
||||
- `ndd`
|
||||
- `gb`
|
||||
|
||||
### CORES
|
||||
|
||||
The *n64* system supports 1 core
|
||||
- `mupen64plus_next`
|
||||
|
||||
If set to `n64`, emulator will use the `mupen64plus_next` core.
|
||||
|
||||
54
emulatorjs/EmulatorJS-main/docs/Systems/Nintendo DS.md
Normal file
54
emulatorjs/EmulatorJS-main/docs/Systems/Nintendo DS.md
Normal file
@ -0,0 +1,54 @@
|
||||
# Nintendo DS
|
||||
|
||||
## Code Example
|
||||
|
||||
```html
|
||||
<div style='width:640px;height:480px;max-width:100%'>
|
||||
<div id='game'></div>
|
||||
</div>
|
||||
|
||||
<script type='text/javascript'>
|
||||
EJS_player = '#game';
|
||||
|
||||
// Can also be desmume2015 or melonds
|
||||
EJS_core = 'nds';
|
||||
|
||||
// URL to BIOS file
|
||||
EJS_biosUrl = '';
|
||||
|
||||
// URL to Game rom
|
||||
EJS_gameUrl = '';
|
||||
|
||||
// Path to the data directory
|
||||
EJS_pathtodata = 'data/';
|
||||
</script>
|
||||
<script src='data/loader.js'></script>
|
||||
```
|
||||
|
||||
## ROM Type
|
||||
|
||||
Your **ROM** can have the following extensions:
|
||||
- `nds`
|
||||
- `bin` (desmume2015 core only)
|
||||
|
||||
### BIOS (melonds core only)
|
||||
|
||||
| File Name | Description | md5sum |
|
||||
| ----------- | ------------- | ----------- |
|
||||
| bios7.bin | NDS ARM7 BIOS - Required | df692a80a5b1bc90728bc3dfc76cd948 |
|
||||
| bios9.bin | NDS ARM9 BIOS - Required | a392174eb3e572fed6447e956bde4b25 |
|
||||
| firmware.bin | NDS Firmware - Required | 145eaef5bd3037cbc247c213bb3da1b3 |
|
||||
| dsi_bios7.bin | DSi ARM7 BIOS - Optional | |
|
||||
| dsi_bios9.bin | DSi ARM9 BIOS - Optional | |
|
||||
| dsi_firmware.bin | DSi Firmware - Optional | |
|
||||
| dsi_nand.bin | DSi NAND - Optional | |
|
||||
| dsi_sd_card.bin | DSi SD Card - Optional | |
|
||||
|
||||
### CORES
|
||||
|
||||
The *nds* system supports 2 cores
|
||||
- `melonds`
|
||||
- `desmume2015`
|
||||
|
||||
If set to `nds`, emulator will use the `melonds` core.
|
||||
|
||||
@ -0,0 +1,50 @@
|
||||
# Nintendo GameBoy Advance
|
||||
|
||||
## Code Example
|
||||
|
||||
```html
|
||||
<div style='width:640px;height:480px;max-width:100%'>
|
||||
<div id='game'></div>
|
||||
</div>
|
||||
|
||||
<script type='text/javascript'>
|
||||
EJS_player = '#game';
|
||||
|
||||
// Can also be mgba
|
||||
EJS_core = 'gba';
|
||||
|
||||
// URL to BIOS file
|
||||
EJS_biosUrl = '';
|
||||
|
||||
// URL to Game rom
|
||||
EJS_gameUrl = '';
|
||||
|
||||
// Path to the data directory
|
||||
EJS_pathtodata = 'data/';
|
||||
</script>
|
||||
<script src='data/loader.js'></script>
|
||||
```
|
||||
|
||||
## ROM Type
|
||||
|
||||
Your **ROM** can have the following extensions:
|
||||
- `gb`
|
||||
- `gbc`
|
||||
- `gba`
|
||||
|
||||
### BIOS
|
||||
|
||||
| File Name | Description | md5sum |
|
||||
| ----------- | ------------- | ----------- |
|
||||
| gb_bios.bin | Game Boy BIOS - Optional | 32fbbd84168d3482956eb3c5051637f5 |
|
||||
| gbc_bios.bin | Game Boy Color BIOS - Optional | dbfce9db9deaa2567f6a84fde55f9680 |
|
||||
| gba_bios.bin | Game Boy Advance BIOS - Optional | a860e8c0b6d573d191e4ec7db1b1e4f6 |
|
||||
| sgb_bios.bin | Super Game Boy BIOS - Optional | d574d4f9c12f305074798f54c091a8b4 |
|
||||
|
||||
### CORES
|
||||
|
||||
The *gba* system supports 1 core
|
||||
- `mgba`
|
||||
|
||||
If set to `gba`, emulator will use the `mgba` core.
|
||||
|
||||
49
emulatorjs/EmulatorJS-main/docs/Systems/Nintendo Game Boy.md
Normal file
49
emulatorjs/EmulatorJS-main/docs/Systems/Nintendo Game Boy.md
Normal file
@ -0,0 +1,49 @@
|
||||
# Nintendo GameBoy
|
||||
|
||||
## Code Example
|
||||
|
||||
```html
|
||||
<div style='width:640px;height:480px;max-width:100%'>
|
||||
<div id='game'></div>
|
||||
</div>
|
||||
|
||||
<script type='text/javascript'>
|
||||
EJS_player = '#game';
|
||||
|
||||
// Can also be gambatte or mgba
|
||||
EJS_core = 'gb';
|
||||
|
||||
// URL to BIOS file
|
||||
EJS_biosUrl = '';
|
||||
|
||||
// URL to Game rom
|
||||
EJS_gameUrl = '';
|
||||
|
||||
// Path to the data directory
|
||||
EJS_pathtodata = 'data/';
|
||||
</script>
|
||||
<script src='data/loader.js'></script>
|
||||
```
|
||||
|
||||
## ROM Type
|
||||
|
||||
Your **ROM** can have the following extensions:
|
||||
- `gb`
|
||||
- `gbc`
|
||||
- `dmg`
|
||||
|
||||
### BIOS
|
||||
|
||||
| File Name | Description | md5sum |
|
||||
| ----------- | ------------- | ----------- |
|
||||
| gb_bios.bin | Game Boy BIOS - Optional | 32fbbd84168d3482956eb3c5051637f5 |
|
||||
| gbc_bios.bin | Game Boy Color BIOS - Optional | dbfce9db9deaa2567f6a84fde55f9680 |
|
||||
|
||||
### CORES
|
||||
|
||||
The *gb* system supports 2 cores
|
||||
- `gambatte`
|
||||
- `mgba`
|
||||
|
||||
If set to `gb`, emulator will use the `gambatte` core.
|
||||
|
||||
54
emulatorjs/EmulatorJS-main/docs/Systems/PlayStation.md
Normal file
54
emulatorjs/EmulatorJS-main/docs/Systems/PlayStation.md
Normal file
@ -0,0 +1,54 @@
|
||||
# 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';
|
||||
|
||||
// Can also be mednafen_psx or mednafen_psx_hw
|
||||
EJS_core = 'psx';
|
||||
|
||||
// URL to BIOS file
|
||||
EJS_biosUrl = '';
|
||||
|
||||
// URL to Game rom
|
||||
EJS_gameUrl = '';
|
||||
|
||||
// Path to the data directory
|
||||
EJS_pathtodata = 'data/';
|
||||
</script>
|
||||
<script src='data/loader.js'></script>
|
||||
```
|
||||
|
||||
## ROM Type
|
||||
|
||||
Your **ROM** can have the following extensions:
|
||||
- `cue`
|
||||
- `toc`
|
||||
- `m3u`
|
||||
- `ccd`
|
||||
- `exe`
|
||||
- `pbp`
|
||||
- `chd`
|
||||
|
||||
### BIOS
|
||||
|
||||
| File Name | Description | md5sum |
|
||||
| ----------- | ------------- | ----------- |
|
||||
| scph5500.bin | PS1 JP BIOS - Required for JP games | 8dd7d5296a650fac7319bce665a6a53c |
|
||||
| scph5501.bin | PS1 US BIOS - Required for US games | 490f666e1afb15b7362b406ed1cea246 |
|
||||
| scph5502.bin | PS1 EU BIOS - Required for EU games | 32736f17079d0b2b7024407c39bd3050 |
|
||||
|
||||
### CORES
|
||||
|
||||
The *psx* system supports 2 cores
|
||||
- `mednafen_psx_hw`
|
||||
- `mednafen_psx`
|
||||
|
||||
If set to `psx`, emulator will use the `mednafen_psx_hw` core.
|
||||
|
||||
57
emulatorjs/EmulatorJS-main/docs/Systems/SNES.md
Normal file
57
emulatorjs/EmulatorJS-main/docs/Systems/SNES.md
Normal file
@ -0,0 +1,57 @@
|
||||
# SNES
|
||||
|
||||
## Code Example
|
||||
|
||||
```html
|
||||
<div style='width:640px;height:480px;max-width:100%'>
|
||||
<div id='game'></div>
|
||||
</div>
|
||||
|
||||
<script type='text/javascript'>
|
||||
EJS_player = '#game';
|
||||
|
||||
// Can also be snes9x
|
||||
EJS_core = 'snes';
|
||||
|
||||
//SNES mouse
|
||||
EJS_mouse = false;
|
||||
|
||||
// SNES Multitap
|
||||
EJS_multitap = false;
|
||||
|
||||
// URL to BIOS file
|
||||
EJS_biosUrl = '';
|
||||
|
||||
// URL to Game rom
|
||||
EJS_gameUrl = '';
|
||||
|
||||
// Path to the data directory
|
||||
EJS_pathtodata = 'data/';
|
||||
</script>
|
||||
<script src='data/loader.js'></script>
|
||||
```
|
||||
|
||||
## ROM Type
|
||||
|
||||
Your **ROM** can have the following extensions:
|
||||
- `smc`
|
||||
- `sfc`
|
||||
- `swc`
|
||||
- `fig`
|
||||
- `bs`
|
||||
- `st`
|
||||
|
||||
### BIOS
|
||||
|
||||
| File Name | Description | md5sum |
|
||||
| ----------- | ------------- | ----------- |
|
||||
| BS-X.bin | BS-X - Sore wa Namae o Nusumareta Machi no<br> Monogatari (Japan) (Rev 1) - Optional | fed4d8242cfbed61343d53d48432aced |
|
||||
| STBIOS.bin | Sufami Turbo (Japan) - Optional | d3a44ba7d42a74d3ac58cb9c14c6a5ca |
|
||||
|
||||
### CORES
|
||||
|
||||
The *snes* system supports 1 core
|
||||
- `snes9x`
|
||||
|
||||
If set to `snes`, emulator will use the `snes9x` core.
|
||||
|
||||
43
emulatorjs/EmulatorJS-main/docs/Systems/Sega CD.md
Normal file
43
emulatorjs/EmulatorJS-main/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
emulatorjs/EmulatorJS-main/docs/Systems/Sega Game Gear.md
Normal file
35
emulatorjs/EmulatorJS-main/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`
|
||||
@ -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
emulatorjs/EmulatorJS-main/docs/Systems/Sega Mega Drive.md
Normal file
32
emulatorjs/EmulatorJS-main/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
emulatorjs/EmulatorJS-main/docs/Systems/Sega Saturn.md
Normal file
39
emulatorjs/EmulatorJS-main/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`
|
||||
38
emulatorjs/EmulatorJS-main/docs/Systems/Virtual Boy.md
Normal file
38
emulatorjs/EmulatorJS-main/docs/Systems/Virtual Boy.md
Normal file
@ -0,0 +1,38 @@
|
||||
# Virtual Boy
|
||||
|
||||
## Code Example
|
||||
|
||||
```html
|
||||
<div style='width:640px;height:480px;max-width:100%'>
|
||||
<div id='game'></div>
|
||||
</div>
|
||||
|
||||
<script type='text/javascript'>
|
||||
EJS_player = '#game';
|
||||
|
||||
// Can also be beetle_vb
|
||||
EJS_core = 'vb';
|
||||
|
||||
// URL to Game rom
|
||||
EJS_gameUrl = '';
|
||||
|
||||
// Path to the data directory
|
||||
EJS_pathtodata = 'data/';
|
||||
</script>
|
||||
<script src='data/loader.js'></script>
|
||||
```
|
||||
|
||||
## ROM Type
|
||||
|
||||
Your **ROM** can have the following extensions:
|
||||
- `vb`
|
||||
- `vboy`
|
||||
- `bin`
|
||||
|
||||
### CORES
|
||||
|
||||
The *vb* system supports 1 core
|
||||
- `beetle_vb`
|
||||
|
||||
If set to `vb`, emulator will use the `beetle_vb` core.
|
||||
|
||||
BIN
emulatorjs/EmulatorJS-main/docs/favicon.ico
Normal file
BIN
emulatorjs/EmulatorJS-main/docs/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 126 KiB |
185
emulatorjs/EmulatorJS-main/index.html
Normal file
185
emulatorjs/EmulatorJS-main/index.html
Normal file
@ -0,0 +1,185 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>EmulatorJS</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">
|
||||
|
||||
<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>
|
||||
<div id = box>
|
||||
<input type = file id = input>
|
||||
Drag ROM file or click here
|
||||
</div>
|
||||
|
||||
<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/"
|
||||
window.EJS_startOnLoaded = true;
|
||||
|
||||
if (window.location.hostname === "demo.emulatorjs.org") {
|
||||
window.EJS_AdUrl = "https://ads.emulatorjs.org/";
|
||||
}
|
||||
|
||||
|
||||
script.src = "data/loader.js"
|
||||
document.body.appendChild(script)
|
||||
}
|
||||
|
||||
box.ondragover = () => box.setAttribute("drag", true)
|
||||
box.ondragleave = () => box.removeAttribute("drag")
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
BIN
emulatorjs/main.zip
Normal file
BIN
emulatorjs/main.zip
Normal file
Binary file not shown.
238
initial_data.py
Normal file
238
initial_data.py
Normal file
@ -0,0 +1,238 @@
|
||||
LANGUAGES = {
|
||||
"English": {
|
||||
"patterns" : [
|
||||
"(us_fr)",
|
||||
"(UK,F,I)",
|
||||
"(U)",
|
||||
"(Eng-Fre-Ger)",
|
||||
"(E)",
|
||||
"(En,Ja)",
|
||||
"(UK)",
|
||||
"(UK,F,S)"
|
||||
"(Europe)",
|
||||
"(Eng-Ita-Spa)"
|
||||
"(Eng-Spa)" \
|
||||
"(En,Ja,Fr,De,Es,It,Ko)",
|
||||
"(UK,F,G,S,I)",
|
||||
"(Eng-Fre)",
|
||||
"(UK,F,G,S)",
|
||||
"(Eng-Ita-Fre)",
|
||||
"(USA, Europe)",
|
||||
"(Eng-Spa-Ita)",
|
||||
"(us_sp)",
|
||||
"(EU)",
|
||||
"(EUR)",
|
||||
"(EngPATCHED)",
|
||||
"(UK,S)",
|
||||
"(us_en)",
|
||||
"(US Games)",
|
||||
"(Japan, USA)",
|
||||
"(UK,G,F)",
|
||||
"(USA)"
|
||||
"(En,Ja,Fr,De,Es,It,Zh,Ko)",
|
||||
"(Eng-Ger-Fre)",
|
||||
"(UK,G)",
|
||||
"(English Fix)",
|
||||
"(UK,F,S,NL,I)"
|
||||
"(UK,F,G)",
|
||||
"(En,Fr,De,Es,It)",
|
||||
"(US)",
|
||||
"(Eng-Fre-Ita)",
|
||||
"(En,Fr,Nl)",
|
||||
"(En,Fr,De)",
|
||||
"(English)",
|
||||
"(UK,G,NL)",
|
||||
"(En,Fr,De,Es)",
|
||||
]
|
||||
},
|
||||
"Japanese": {
|
||||
"patterns": [
|
||||
"(J)",
|
||||
"(JPN)",
|
||||
"(JP)",
|
||||
"(Japan)",
|
||||
"(En,Ja)",
|
||||
"(En,Ja,Fr,De,Es,It,Ko)",
|
||||
"(Japan, USA)",
|
||||
"(En,Ja,Fr,De,Es,It,Zh,Ko)",
|
||||
"(JPN)",
|
||||
]
|
||||
},
|
||||
"French": {
|
||||
"patterns": [
|
||||
"(F)",
|
||||
"(French)",
|
||||
"(Eng-Fre)",
|
||||
"(FR)",
|
||||
"(us_fr)",
|
||||
"(UK,F,I)",
|
||||
"(Eng-Fre-Ger)",
|
||||
"(Europe)",
|
||||
"(UK,F,S)",
|
||||
"(France)",
|
||||
"(En,Ja,Fr,De,Es,It,Ko)",
|
||||
"(UK,F,G,S,I)",
|
||||
"(F,I)",
|
||||
"(Eng-Ita-Fre)",
|
||||
"(USA, Europe)"
|
||||
"(EU)",
|
||||
"(EUR)",
|
||||
"(UK,G,F)",
|
||||
"(En,Ja,Fr,De,Es,It,Zh,Ko)"
|
||||
"(Eng-Ger-Fre)",
|
||||
"(UK,F,S,NL,I)",
|
||||
"(UK,F,G)"
|
||||
"(En,Fr,De,Es,It)",
|
||||
"(Eng-Fre-Ita)",
|
||||
"(En,Fr,Nl)",
|
||||
"(En,Fr,De)",
|
||||
"(En,Fr,De,Es)"
|
||||
]
|
||||
},
|
||||
"German": {
|
||||
"patterns": [
|
||||
"(Eng-Fre-Ger)",
|
||||
"(Europe)",
|
||||
"(En,Ja,Fr,De,Es,It,Ko)",
|
||||
"(UK,F,G,S,I)",
|
||||
"(UK,F,G,S)",
|
||||
"(EU)",
|
||||
"(EUR)",
|
||||
"(UK,G,F)",
|
||||
"(En,Ja,Fr,De,Es,It,Zh,Ko)",
|
||||
"(Eng-Ger-Fre)",
|
||||
"(UK,G)",
|
||||
"(Germany)",
|
||||
"(UK,F,G)",
|
||||
"(En,Fr,De,Es,It)",
|
||||
"(En,Fr,De)",
|
||||
"(UK,G,NL)"
|
||||
"(En,Fr,De,Es)"
|
||||
]
|
||||
},
|
||||
"Spanish": {
|
||||
"patterns": [
|
||||
"(S)",
|
||||
"(UK,F,G,S)",
|
||||
"(En,Ja,Fr,De,Es,It,Ko)",
|
||||
"(Eng-Spa)",
|
||||
"(Eng-Ita-Spa)",
|
||||
"(UK,F,S)",
|
||||
"(Europe)",
|
||||
"(UK,F,G,S,I)",
|
||||
"(Eng-Spa-Ita)",
|
||||
"(us_sp)",
|
||||
"(EU)",
|
||||
"(EUR)",
|
||||
"(UK,S)",
|
||||
"(En,Ja,Fr,De,Es,It,Zh,Ko)",
|
||||
"(UK,F,S,NL,I)",
|
||||
"(Spain)",
|
||||
"(En,Fr,De,Es,It)",
|
||||
"(En,Fr,De,Es)"
|
||||
]
|
||||
},
|
||||
"Italian": {
|
||||
"patterns": [
|
||||
"(I)",
|
||||
"(UK,F,I)",
|
||||
"(Eng-Ita-Spa)"
|
||||
"(En,Ja,Fr,De,Es,It,Ko)",
|
||||
"(UK,F,G,S,I)",
|
||||
"(F,I)",
|
||||
"(Europe)",
|
||||
"(EU)",
|
||||
"(EUR)",
|
||||
"(Italy)"
|
||||
"(Eng-Ita-Fre)",
|
||||
"(Eng-Spa-Ita)",
|
||||
"(En,Ja,Fr,De,Es,It,Zh,Ko)",
|
||||
"(En,Fr,De,Es,It)",
|
||||
"(Eng-Fre-Ita)"
|
||||
]
|
||||
},
|
||||
"Unknown": {
|
||||
"patterns": [
|
||||
"(Unk)",
|
||||
]
|
||||
},
|
||||
}
|
||||
|
||||
CONSOLE_DATA = {
|
||||
"Atari 2600": {
|
||||
"console_core" : "2600",
|
||||
"extensions": [".a26"],
|
||||
"playable": True
|
||||
},
|
||||
"Atari 5200": {
|
||||
"console_core" : "null",
|
||||
"extensions": [".a52"],
|
||||
"playable": False
|
||||
},
|
||||
"Atari 7800": {
|
||||
"console_core" : "7800",
|
||||
"extensions": [".a78"],
|
||||
"playable": True
|
||||
},
|
||||
"Atari Jaguar": {
|
||||
"console_core" : "jaguar",
|
||||
"extensions": [".jag"],
|
||||
"playable": True
|
||||
},
|
||||
"Atari Lynx": {
|
||||
"console_core" : "lynx",
|
||||
"extensions": [".lnx"],
|
||||
"playable": True
|
||||
},
|
||||
"Nintendo Entertainment System": {
|
||||
"console_core" : "nes",
|
||||
"extensions": [".nes"],
|
||||
"playable": True
|
||||
},
|
||||
"Super Nintendo Entertainment System": {
|
||||
"console_core" : "snes",
|
||||
"extensions": [".smc"],
|
||||
"playable": True
|
||||
},
|
||||
"Nintendo 64": {
|
||||
"console_core" : "n64",
|
||||
"extensions": [".n64", ".v64", ".z64"],
|
||||
"playable": True
|
||||
},
|
||||
"Nintendo DS": {
|
||||
"console_core" : "ds",
|
||||
"extensions": [".nds"],
|
||||
"playable": False
|
||||
},
|
||||
"Nintendo Gameboy": {
|
||||
"console_core" : "gb",
|
||||
"extensions": [".gb"],
|
||||
"playable": True
|
||||
},
|
||||
"Nintendo Gameboy Color": {
|
||||
"console_core" : "gbc",
|
||||
"extensions": [".gbc"],
|
||||
"playable": True
|
||||
},
|
||||
"Nintendo Gameboy Advance": {
|
||||
"console_core" : "gba",
|
||||
"extensions": [".gba"],
|
||||
"playable": True
|
||||
},
|
||||
"Nintendo Virtual Boy": {
|
||||
"console_core" : "null",
|
||||
"extensions": [".vb"],
|
||||
"playable": False
|
||||
},
|
||||
"Sega Master System": {
|
||||
"console_core" : "mastersystem",
|
||||
"extensions": [".sms"],
|
||||
"playable": True
|
||||
},
|
||||
"Sega Genesis": {
|
||||
"console_core" : "megadrive",
|
||||
"extensions": [".gen",".32x"],
|
||||
"playable": True
|
||||
}
|
||||
}
|
||||
|
||||
67680
languages.txt
Normal file
67680
languages.txt
Normal file
File diff suppressed because it is too large
Load Diff
46
parse.py
Normal file
46
parse.py
Normal file
@ -0,0 +1,46 @@
|
||||
import json
|
||||
|
||||
def parse_romlist():
|
||||
data ={}
|
||||
ignore = ["zel", "CaveStory","$RECYCLE.BIN","savestates.old"]
|
||||
with open("romlist.txt","r") as f:
|
||||
lines = f.readlines()
|
||||
for line in lines:
|
||||
# line = "| |-- ./console/romname.extension"
|
||||
line = line.strip()
|
||||
line = line.split("./")
|
||||
if len(line) < 2 or "/" not in line[1] :
|
||||
continue
|
||||
line = line[1]
|
||||
# line = "console/romname.extension"
|
||||
name_element = line.split("/")
|
||||
if len(name_element) > 2:
|
||||
continue
|
||||
console_name, rom_name = name_element
|
||||
if console_name in ignore:
|
||||
continue
|
||||
name_element = rom_name.split(".")
|
||||
if len(name_element) == 2:
|
||||
rom_name, extension = name_element
|
||||
elif len(name_element) > 2:
|
||||
rom_name = "".join(name_element[:-1])
|
||||
extension = name_element[-1]
|
||||
if extension == "rom":
|
||||
print(line)
|
||||
if not console_name in data:
|
||||
data[console_name] = []
|
||||
if extension not in data[console_name]:
|
||||
data[console_name].append(extension)
|
||||
print(json.dumps(data, indent=2))
|
||||
|
||||
def parse_langages():
|
||||
data = set()
|
||||
with open("languages.txt","r") as f:
|
||||
lines = f.readlines()
|
||||
for line in lines:
|
||||
line = line.strip()
|
||||
data.add(line)
|
||||
for i in data:
|
||||
print(i)
|
||||
|
||||
parse_langages()
|
||||
0
requirements.txt
Normal file
0
requirements.txt
Normal file
62725
romlist.txt
Normal file
62725
romlist.txt
Normal file
File diff suppressed because it is too large
Load Diff
54
scangames.py
Normal file
54
scangames.py
Normal file
@ -0,0 +1,54 @@
|
||||
import os
|
||||
from db_classes import *
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy import create_engine
|
||||
|
||||
def scan_folder(path):
|
||||
engine = create_engine('mariadb+mariadbconnector://videogamedb:MumMTK3bwjYJRfe@localhost/videogamedb')
|
||||
session = Session(engine)
|
||||
extensions = session.query(RomFileExtensions).all()
|
||||
ROMS = []
|
||||
cpt = 0
|
||||
ani = ["-","\\","|","/"]
|
||||
for root, dirs, files in os.walk(path):
|
||||
for file in files:
|
||||
#print(file)
|
||||
# print(ani[cpt%len(ani)],end="\r")
|
||||
PATH = os.path.join(root, file)
|
||||
file_split = file.split(".")
|
||||
|
||||
file_extension = file_split[-1]
|
||||
|
||||
CONSOLE = None
|
||||
for db_extentions in extensions:
|
||||
if "." + file_extension.lower() == db_extentions.name:
|
||||
CONSOLE = db_extentions.consoles[0]
|
||||
ROM_EXTENSION = db_extentions
|
||||
break
|
||||
if CONSOLE is None:
|
||||
continue
|
||||
|
||||
ROM_NAME = ""
|
||||
for i in file_split[:-1]:
|
||||
ROM_NAME += i
|
||||
|
||||
CATEGORIES = []
|
||||
|
||||
LANGUAGE = session.query(Language).filter(Language.name == "Unknown").first()
|
||||
LANGUAGE = [LANGUAGE]
|
||||
|
||||
rom = RomFile(ROM_NAME,
|
||||
PATH,
|
||||
CATEGORIES,
|
||||
LANGUAGE,
|
||||
ROM_EXTENSION,
|
||||
CONSOLE)
|
||||
ROMS.append(rom)
|
||||
print(rom)
|
||||
session.add_all(ROMS)
|
||||
session.commit()
|
||||
|
||||
|
||||
|
||||
|
||||
scan_folder("/roms")
|
||||
32
setup_db.py
Normal file
32
setup_db.py
Normal file
@ -0,0 +1,32 @@
|
||||
from sqlalchemy.orm import Session
|
||||
from db_classes import *
|
||||
from sqlalchemy import create_engine
|
||||
from initial_data import CONSOLE_DATA, LANGUAGES
|
||||
#db pass MumMTK3bwjYJRfe
|
||||
|
||||
def create_db():
|
||||
engine = create_engine('mariadb+mariadbconnector://videogamedb:MumMTK3bwjYJRfe@simailadjalim.fr/videogamedb')
|
||||
Base.metadata.drop_all(engine)
|
||||
Base.metadata.create_all(engine)
|
||||
session = Session(engine)
|
||||
consoles = []
|
||||
rom_file_extensions = {}
|
||||
languages = []
|
||||
for console_name, console_data in CONSOLE_DATA.items():
|
||||
console = Console(console_name,console_data["console_core"] ,console_data["playable"], [])
|
||||
consoles.append(console)
|
||||
for extension in console_data["extensions"]:
|
||||
if extension not in rom_file_extensions:
|
||||
rom_file_extensions[extension] = RomFileExtensions(extension, [])
|
||||
rom_file_extensions[extension].consoles.append(console)
|
||||
|
||||
for language_name, language_data in LANGUAGES.items():
|
||||
language = Language(language_name, [])
|
||||
languages.append(language)
|
||||
|
||||
session.add_all(consoles)
|
||||
session.add_all(rom_file_extensions.values())
|
||||
session.add_all(languages)
|
||||
session.commit()
|
||||
|
||||
create_db()
|
||||
230
specs.yml
Normal file
230
specs.yml
Normal file
@ -0,0 +1,230 @@
|
||||
openapi: 3.0.0
|
||||
info:
|
||||
description: "This is a sample server Petstore server. You can find out more about
|
||||
Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net,
|
||||
#swagger](http://swagger.io/irc/). For this sample, you can use the api key
|
||||
`special-key` to test the authorization filters."
|
||||
version: 1.0.2
|
||||
title: Swagger Petstore
|
||||
termsOfService: http://swagger.io/terms/
|
||||
contact:
|
||||
email: apiteam@swagger.io
|
||||
license:
|
||||
name: Apache 2.0
|
||||
url: http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
tags:
|
||||
- name: console
|
||||
description: consoles supportés
|
||||
externalDocs:
|
||||
description: Find out more
|
||||
url: http://swagger.io
|
||||
- name: rom
|
||||
description: roms supportés
|
||||
externalDocs:
|
||||
description: Find out more
|
||||
url: http://swagger.io
|
||||
- name: extention
|
||||
description: extention supportés
|
||||
externalDocs:
|
||||
description: Find out more
|
||||
url: http://swagger.io
|
||||
- name: langage
|
||||
description: langages supportés
|
||||
externalDocs:
|
||||
description: Find out more
|
||||
url: http://swagger.io
|
||||
|
||||
paths:
|
||||
/consoles:
|
||||
get:
|
||||
tags:
|
||||
- console
|
||||
summary: Liste les consoles
|
||||
description: ""
|
||||
operationId: listconsole
|
||||
responses:
|
||||
"200":
|
||||
description: Tout est ok
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/console"
|
||||
|
||||
/consoles/{id}:
|
||||
get:
|
||||
tags:
|
||||
- console
|
||||
summary: Liste les consoles
|
||||
description: ""
|
||||
operationId: listconsole
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
description: ID de la console
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
responses:
|
||||
"200":
|
||||
description: Tout est ok
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/console"
|
||||
"404":
|
||||
description: console non trouvée
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/error"
|
||||
|
||||
/consoles/{id}/roms:
|
||||
get:
|
||||
tags:
|
||||
- console
|
||||
summary: Liste les roms de la console
|
||||
description: ""
|
||||
operationId: listromfromconsole
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
description: ID de la console
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
responses:
|
||||
"200":
|
||||
description: Tout est ok
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/rom"
|
||||
"404":
|
||||
description: Invalid input
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/error"
|
||||
|
||||
/roms:
|
||||
get:
|
||||
tags:
|
||||
- rom
|
||||
summary: Liste les roms
|
||||
description: ""
|
||||
operationId: listrom
|
||||
responses:
|
||||
"200":
|
||||
description: Tout est ok
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/rom"
|
||||
|
||||
/roms/{id}:
|
||||
get:
|
||||
tags:
|
||||
- rom
|
||||
summary: donnée d'une rom
|
||||
description: ""
|
||||
operationId: listrom
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
description: ID de la rom
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
responses:
|
||||
"200":
|
||||
description: Tout est ok
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/rom"
|
||||
"404":
|
||||
description: rom non trouvée
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/error"
|
||||
|
||||
|
||||
|
||||
externalDocs:
|
||||
description: Find out more about Swagger
|
||||
url: http://swagger.io
|
||||
servers:
|
||||
- url: https://videogamedb.simailadjalim.fr
|
||||
components:
|
||||
requestBodies:
|
||||
UserArray:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/console"
|
||||
description: List of user object
|
||||
required: true
|
||||
Pet:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/console"
|
||||
application/xml:
|
||||
schema:
|
||||
$ref: "#/components/schemas/console"
|
||||
description: Pet object that needs to be added to the store
|
||||
required: true
|
||||
schemas:
|
||||
console:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
format: int32
|
||||
name:
|
||||
type: string
|
||||
core:
|
||||
type: string
|
||||
playable:
|
||||
type: boolean
|
||||
rom:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
name:
|
||||
type: string
|
||||
language_id:
|
||||
type: integer
|
||||
extention_id:
|
||||
type: integer
|
||||
console_id:
|
||||
type: integer
|
||||
extention:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
name:
|
||||
type: string
|
||||
langage:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
name:
|
||||
type: string
|
||||
error:
|
||||
type: object
|
||||
properties:
|
||||
error:
|
||||
type: string
|
||||
262
static/data/GameManager.js
Normal file
262
static/data/GameManager.js
Normal file
@ -0,0 +1,262 @@
|
||||
class EJS_GameManager {
|
||||
constructor(Module, EJS) {
|
||||
this.EJS = EJS;
|
||||
this.Module = Module;
|
||||
this.FS = this.Module.FS;
|
||||
this.functions = {
|
||||
restart: this.Module.cwrap('system_restart', '', []),
|
||||
getStateInfo: this.Module.cwrap('get_state_info', 'string', []), //these names are dumb
|
||||
saveStateInfo: this.Module.cwrap('save_state_info', 'null', []),
|
||||
loadState: this.Module.cwrap('load_state', 'number', ['string', 'number']),
|
||||
screenshot: this.Module.cwrap('cmd_take_screenshot', '', []),
|
||||
simulateInput: this.Module.cwrap('simulate_input', 'null', ['number', 'number', 'number']),
|
||||
toggleMainLoop: this.Module.cwrap('toggleMainLoop', 'null', ['number']),
|
||||
getCoreOptions: this.Module.cwrap('get_core_options', 'string', []),
|
||||
setVariable: this.Module.cwrap('set_variable', 'null', ['string', 'string']),
|
||||
setCheat: this.Module.cwrap('set_cheat', 'null', ['number', 'number', 'string']),
|
||||
resetCheat: this.Module.cwrap('reset_cheat', 'null', []),
|
||||
toggleShader: this.Module.cwrap('shader_enable', 'null', ['number']),
|
||||
getDiskCount: this.Module.cwrap('get_disk_count', 'number', []),
|
||||
getCurrentDisk: this.Module.cwrap('get_current_disk', 'number', []),
|
||||
setCurrentDisk: this.Module.cwrap('set_current_disk', 'null', ['number']),
|
||||
getSaveFilePath: this.Module.cwrap('save_file_path', 'string', []),
|
||||
saveSaveFiles: this.Module.cwrap('cmd_savefiles', '', []),
|
||||
supportsStates: this.Module.cwrap('supports_states', 'number', []),
|
||||
loadSaveFiles: this.Module.cwrap('refresh_save_files', 'null', []),
|
||||
setVolume: this.Module.cwrap('set_volume', 'null', ['number'])
|
||||
}
|
||||
this.mkdir("/home");
|
||||
this.mkdir("/home/web_user");
|
||||
this.mkdir("/home/web_user/retroarch");
|
||||
this.mkdir("/home/web_user/retroarch/userdata");
|
||||
this.mkdir("/home/web_user/retroarch/userdata/config");
|
||||
this.mkdir("/home/web_user/retroarch/userdata/config/Beetle PSX HW");
|
||||
this.FS.writeFile("/home/web_user/retroarch/userdata/config/Beetle PSX HW/Beetle PSX HW.opt", 'beetle_psx_hw_renderer = "software"\n');
|
||||
|
||||
this.mkdir("/data");
|
||||
this.mkdir("/data/saves");
|
||||
|
||||
this.FS.writeFile("/home/web_user/retroarch/userdata/retroarch.cfg", this.getRetroArchCfg());
|
||||
|
||||
this.FS.mount(IDBFS, {}, '/data/saves');
|
||||
this.FS.syncfs(true, () => {});
|
||||
|
||||
this.initShaders();
|
||||
|
||||
this.EJS.addEventListener(window, "beforeunload", () => {
|
||||
this.saveSaveFiles();
|
||||
this.FS.syncfs(() => {});
|
||||
})
|
||||
}
|
||||
mkdir(path) {
|
||||
try {
|
||||
this.FS.mkdir(path);
|
||||
} catch(e) {}
|
||||
}
|
||||
getRetroArchCfg() {
|
||||
return "autosave_interval = 60\n" +
|
||||
"screenshot_directory = /\n" +
|
||||
"block_sram_overwrite = false\n" +
|
||||
"video_gpu_screenshot = false\n" +
|
||||
"audio_latency = 64\n" +
|
||||
"video_top_portrait_viewport = true\n" +
|
||||
"video_vsync = true\n" +
|
||||
"video_smooth = false\n" +
|
||||
"savefile_directory = \"/data/saves\"\n";
|
||||
}
|
||||
initShaders() {
|
||||
if (!window.EJS_SHADERS) return;
|
||||
this.mkdir("/shader");
|
||||
for (const shader in window.EJS_SHADERS) {
|
||||
this.FS.writeFile('/shader/'+shader, window.EJS_SHADERS[shader]);
|
||||
}
|
||||
}
|
||||
restart() {
|
||||
this.functions.restart();
|
||||
}
|
||||
getState() {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
const stateInfo = (await this.getStateInfo()).split('|')
|
||||
let state;
|
||||
let size = stateInfo[0] >> 0;
|
||||
if (size > 0) {
|
||||
state = new Uint8Array(size);
|
||||
let start = stateInfo[1] >> 0;
|
||||
for (let i=0; i<size; i++) state[i] = this.Module.getValue(start + i);
|
||||
}
|
||||
resolve(state);
|
||||
})
|
||||
}
|
||||
getStateInfo() {
|
||||
this.functions.saveStateInfo();
|
||||
return new Promise((resolve, reject) => {
|
||||
let a;
|
||||
let b = setInterval(() => {
|
||||
a = this.functions.getStateInfo();
|
||||
if (a) {
|
||||
clearInterval(b);
|
||||
resolve(a);
|
||||
}
|
||||
}, 50)
|
||||
});
|
||||
}
|
||||
loadState(state) {
|
||||
try {
|
||||
this.FS.unlink('game.state');
|
||||
} catch(e){}
|
||||
this.FS.writeFile('/game.state', state);
|
||||
this.functions.loadState("game.state", 0);
|
||||
setTimeout(() => {
|
||||
try {
|
||||
this.FS.unlink('game.state');
|
||||
} catch(e){}
|
||||
}, 5000)
|
||||
}
|
||||
screenshot() {
|
||||
this.functions.screenshot();
|
||||
return this.FS.readFile('screenshot.png');
|
||||
}
|
||||
quickSave(slot) {
|
||||
if (!slot) slot = 1;
|
||||
(async () => {
|
||||
let name = slot + '-quick.state';
|
||||
try {
|
||||
this.FS.unlink(name);
|
||||
} catch (e) {}
|
||||
let data = await this.getState();
|
||||
this.FS.writeFile('/'+name, data);
|
||||
})();
|
||||
}
|
||||
quickLoad(slot) {
|
||||
if (!slot) slot = 1;
|
||||
(async () => {
|
||||
let name = slot + '-quick.state';
|
||||
this.functions.loadState(name, 0);
|
||||
})();
|
||||
}
|
||||
simulateInput(player, index, value) {
|
||||
if (this.EJS.isNetplay) {
|
||||
this.EJS.netplay.simulateInput(player, index, value);
|
||||
return;
|
||||
}
|
||||
if ([24, 25, 26].includes(index)) {
|
||||
if (index === 24 && value === 1) {
|
||||
const slot = this.EJS.settings['save-state-slot'] ? this.EJS.settings['save-state-slot'] : "1";
|
||||
this.quickSave(slot);
|
||||
this.EJS.displayMessage(this.EJS.localization("SAVED STATE TO SLOT")+" "+slot);
|
||||
}
|
||||
if (index === 25 && value === 1) {
|
||||
const slot = this.EJS.settings['save-state-slot'] ? this.EJS.settings['save-state-slot'] : "1";
|
||||
this.quickLoad(slot);
|
||||
this.EJS.displayMessage(this.EJS.localization("LOADED STATE FROM SLOT")+" "+slot);
|
||||
}
|
||||
if (index === 26 && value === 1) {
|
||||
let newSlot;
|
||||
try {
|
||||
newSlot = parseFloat(this.EJS.settings['save-state-slot'] ? this.EJS.settings['save-state-slot'] : "1") + 1;
|
||||
} catch(e) {
|
||||
newSlot = 1;
|
||||
}
|
||||
if (newSlot > 9) newSlot = 1;
|
||||
this.EJS.displayMessage(this.EJS.localization("SET SAVE STATE SLOT TO")+" "+newSlot);
|
||||
this.EJS.changeSettingOption('save-state-slot', newSlot.toString());
|
||||
}
|
||||
return;
|
||||
}
|
||||
this.functions.simulateInput(player, index, value);
|
||||
}
|
||||
createCueFile(fileNames) {
|
||||
try {
|
||||
if (fileNames.length > 1) {
|
||||
fileNames = fileNames.filter((item) => {
|
||||
return ["toc", "ccd", "exe", "pbp", "chd", "img", "bin"].includes(item.split(".").pop().toLowerCase());
|
||||
})
|
||||
fileNames = fileNames.sort((a, b) => {
|
||||
if (isNaN(a.charAt()) || isNaN(b.charAt())) throw new Error("Incorrect file name format");
|
||||
return (parseInt(a.charAt()) > parseInt(b.charAt())) ? 1 : -1;
|
||||
})
|
||||
}
|
||||
} catch(e) {
|
||||
console.log(e, fileNames);
|
||||
if (fileNames.length > 1) {
|
||||
console.warn("Could not auto-create cue file(s).");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
for (let i=0; i<fileNames.length; i++) {
|
||||
if (fileNames[i].split(".").pop().toLowerCase() === "ccd") {
|
||||
console.warn("Did not auto-create cue file(s). Found a ccd.");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
if (fileNames.length === 0) {
|
||||
console.warn("Could not auto-create cue file(s).");
|
||||
return null;
|
||||
}
|
||||
console.log(fileNames);
|
||||
let baseFileName = fileNames[0].split("/").pop();
|
||||
if (baseFileName.includes(".")) {
|
||||
baseFileName = baseFileName.substring(0, baseFileName.length - baseFileName.split(".").pop().length - 1);
|
||||
console.log(baseFileName);
|
||||
}
|
||||
for (let i=0; i<fileNames.length; i++) {
|
||||
const contents = " FILE \""+fileNames[i]+"\" BINARY\n TRACK 01 MODE1/2352\n INDEX 01 00:00:00";
|
||||
FS.writeFile("/"+baseFileName+"-"+i+".cue", contents);
|
||||
}
|
||||
if (fileNames.length > 1) {
|
||||
let contents = "";
|
||||
for (let i=0; i<fileNames.length; i++) {
|
||||
contents += "/"+baseFileName+"-"+i+".cue\n";
|
||||
}
|
||||
FS.writeFile("/"+baseFileName+".m3u", contents);
|
||||
}
|
||||
return (fileNames.length === 1) ? baseFileName+"-0.cue" : baseFileName+".m3u";
|
||||
}
|
||||
toggleMainLoop(playing) {
|
||||
this.functions.toggleMainLoop(playing);
|
||||
}
|
||||
getCoreOptions() {
|
||||
return this.functions.getCoreOptions();
|
||||
}
|
||||
setVariable(option, value) {
|
||||
this.functions.setVariable(option, value);
|
||||
}
|
||||
setCheat(index, enabled, code) {
|
||||
this.functions.setCheat(index, enabled, code);
|
||||
}
|
||||
resetCheat() {
|
||||
this.functions.resetCheat();
|
||||
}
|
||||
toggleShader(active) {
|
||||
this.functions.toggleShader(active);
|
||||
}
|
||||
getDiskCount() {
|
||||
return this.functions.getDiskCount();
|
||||
}
|
||||
getCurrentDisk() {
|
||||
return this.functions.getCurrentDisk();
|
||||
}
|
||||
setCurrentDisk(disk) {
|
||||
this.functions.setCurrentDisk(disk);
|
||||
}
|
||||
getSaveFilePath() {
|
||||
return this.functions.getSaveFilePath();
|
||||
}
|
||||
saveSaveFiles() {
|
||||
this.functions.saveSaveFiles();
|
||||
this.FS.syncfs(false, () => {});
|
||||
}
|
||||
supportsStates() {
|
||||
return !!this.functions.supportsStates();
|
||||
}
|
||||
getSaveFile() {
|
||||
this.saveSaveFiles();
|
||||
const exists = FS.analyzePath(this.getSaveFilePath()).exists;
|
||||
return (exists ? FS.readFile(this.getSaveFilePath()) : null);
|
||||
}
|
||||
loadSaveFiles() {
|
||||
this.functions.loadSaveFiles();
|
||||
}
|
||||
}
|
||||
|
||||
window.EJS_GameManager = EJS_GameManager;
|
||||
1
static/data/compression/extract7z.js
Normal file
1
static/data/compression/extract7z.js
Normal file
File diff suppressed because one or more lines are too long
1
static/data/compression/extractzip.js
Normal file
1
static/data/compression/extractzip.js
Normal file
File diff suppressed because one or more lines are too long
433
static/data/compression/libunrar.js
Normal file
433
static/data/compression/libunrar.js
Normal file
File diff suppressed because one or more lines are too long
BIN
static/data/compression/libunrar.js.mem
Normal file
BIN
static/data/compression/libunrar.js.mem
Normal file
Binary file not shown.
BIN
static/data/cores/a5200-wasm.data
Normal file
BIN
static/data/cores/a5200-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/beetle_vb-wasm.data
Normal file
BIN
static/data/cores/beetle_vb-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/desmume2015-wasm.data
Normal file
BIN
static/data/cores/desmume2015-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/fbalpha2012_cps1-wasm.data
Normal file
BIN
static/data/cores/fbalpha2012_cps1-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/fbalpha2012_cps2-wasm.data
Normal file
BIN
static/data/cores/fbalpha2012_cps2-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/fceumm-wasm.data
Normal file
BIN
static/data/cores/fceumm-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/gambatte-wasm.data
Normal file
BIN
static/data/cores/gambatte-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/genesis_plus_gx-wasm.data
Normal file
BIN
static/data/cores/genesis_plus_gx-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/handy-wasm.data
Normal file
BIN
static/data/cores/handy-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/mame2003-wasm.data
Normal file
BIN
static/data/cores/mame2003-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/mednafen_psx_hw-wasm.data
Normal file
BIN
static/data/cores/mednafen_psx_hw-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/melonds-wasm.data
Normal file
BIN
static/data/cores/melonds-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/mgba-wasm.data
Normal file
BIN
static/data/cores/mgba-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/mupen64plus_next-wasm.data
Normal file
BIN
static/data/cores/mupen64plus_next-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/nestopia-wasm.data
Normal file
BIN
static/data/cores/nestopia-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/opera-wasm.data
Normal file
BIN
static/data/cores/opera-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/prosystem-wasm.data
Normal file
BIN
static/data/cores/prosystem-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/snes9x-wasm.data
Normal file
BIN
static/data/cores/snes9x-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/stella2014-wasm.data
Normal file
BIN
static/data/cores/stella2014-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/virtualjaguar-wasm.data
Normal file
BIN
static/data/cores/virtualjaguar-wasm.data
Normal file
Binary file not shown.
BIN
static/data/cores/yabause-wasm.data
Normal file
BIN
static/data/cores/yabause-wasm.data
Normal file
Binary file not shown.
1333
static/data/emulator.css
Normal file
1333
static/data/emulator.css
Normal file
File diff suppressed because it is too large
Load Diff
3695
static/data/emulator.js
Normal file
3695
static/data/emulator.js
Normal file
File diff suppressed because one or more lines are too long
1
static/data/emulator.min.css
vendored
Normal file
1
static/data/emulator.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
static/data/emulator.min.js
vendored
Normal file
1
static/data/emulator.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
107
static/data/gamepad.js
Normal file
107
static/data/gamepad.js
Normal file
@ -0,0 +1,107 @@
|
||||
class GamepadHandler {
|
||||
gamepads;
|
||||
timeout;
|
||||
listeners;
|
||||
constructor() {
|
||||
this.gamepads = [];
|
||||
this.listeners = {};
|
||||
this.timeout = null;
|
||||
this.loop();
|
||||
}
|
||||
terminate() {
|
||||
window.clearTimeout(this.timeout);
|
||||
}
|
||||
getGamepads() {
|
||||
return navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);
|
||||
}
|
||||
loop() {
|
||||
this.updateGamepadState();
|
||||
this.timeout = setTimeout(this.loop.bind(this), 10);
|
||||
}
|
||||
updateGamepadState() {
|
||||
let gamepads = this.getGamepads();
|
||||
if (!gamepads) return;
|
||||
if (!Array.isArray(gamepads) && gamepads.length) {
|
||||
let gp = [];
|
||||
for (let i=0; i<gamepads.length; i++) {
|
||||
gp.push(gamepads[i]);
|
||||
}
|
||||
gamepads = gp;
|
||||
} else if (!Array.isArray(gamepads)) return;
|
||||
|
||||
gamepads.forEach((gamepad, index) => {
|
||||
if (!gamepad) return;
|
||||
let hasGamepad = false;
|
||||
this.gamepads.forEach((oldGamepad, oldIndex) => {
|
||||
if (oldGamepad.index !== gamepad.index) return;
|
||||
const gamepadToSave = {
|
||||
axes: [],
|
||||
buttons: {},
|
||||
index: oldGamepad.index
|
||||
}
|
||||
hasGamepad = true;
|
||||
|
||||
oldGamepad.axes.forEach((axis, axisIndex) => {
|
||||
if (gamepad.axes[axisIndex] !== axis) {
|
||||
const axis = ['LEFT_STICK_X', 'LEFT_STICK_Y', 'RIGHT_STICK_X', 'RIGHT_STICK_Y'][axisIndex];
|
||||
if (!axis) return;
|
||||
this.dispatchEvent('axischanged', {axis: axis, value: gamepad.axes[axisIndex], index: gamepad.index, gamepadIndex: gamepad.index});
|
||||
}
|
||||
gamepadToSave.axes[axisIndex] = axis;
|
||||
})
|
||||
gamepad.buttons.forEach((button, buttonIndex) => {
|
||||
let pressed = oldGamepad.buttons[buttonIndex] === 1.0;
|
||||
if (typeof oldGamepad.buttons[buttonIndex] === "object") {
|
||||
pressed = oldGamepad.buttons[buttonIndex].pressed;
|
||||
}
|
||||
let pressed2 = button === 1.0;
|
||||
if (typeof button === "object") {
|
||||
pressed2 = button.pressed;
|
||||
}
|
||||
gamepadToSave.buttons[buttonIndex] = {pressed:pressed2};
|
||||
if (pressed !== pressed2) {
|
||||
if (pressed2) {
|
||||
this.dispatchEvent('buttondown', {index: buttonIndex, gamepadIndex: gamepad.index});
|
||||
} else {
|
||||
this.dispatchEvent('buttonup', {index: buttonIndex, gamepadIndex: gamepad.index});
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
this.gamepads[oldIndex] = gamepadToSave;
|
||||
})
|
||||
if (!hasGamepad) {
|
||||
this.gamepads.push(gamepads[index]);
|
||||
this.dispatchEvent('connected', {gamepadIndex: gamepad.index});
|
||||
}
|
||||
});
|
||||
|
||||
for (let j=0; j<this.gamepads.length; j++) {
|
||||
if (!this.gamepads[j]) continue;
|
||||
let has = false;
|
||||
for (let i=0; i<gamepads.length; i++) {
|
||||
if (!gamepads[i]) continue;
|
||||
if (this.gamepads[j].index === gamepads[i].index) {
|
||||
has = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!has) {
|
||||
this.dispatchEvent('disconnected', {gamepadIndex: this.gamepads[j].index});
|
||||
this.gamepads.splice(j, 1);
|
||||
j--;
|
||||
}
|
||||
}
|
||||
}
|
||||
dispatchEvent(name, arg) {
|
||||
if (typeof this.listeners[name] !== 'function') return;
|
||||
if (!arg) arg={};
|
||||
arg.type = name;
|
||||
this.listeners[name](arg);
|
||||
}
|
||||
on(name, cb) {
|
||||
this.listeners[name.toLowerCase()] = cb;
|
||||
}
|
||||
}
|
||||
|
||||
window.GamepadHandler = GamepadHandler;
|
||||
101
static/data/loader.js
Normal file
101
static/data/loader.js
Normal file
@ -0,0 +1,101 @@
|
||||
(async function() {
|
||||
const folderPath = (path) => path.substring(0, path.length - path.split('/').pop().length);
|
||||
var scriptPath = (typeof window.EJS_pathtodata === "string") ? window.EJS_pathtodata : folderPath((new URL(document.currentScript.src)).pathname);
|
||||
if (!scriptPath.endsWith('/')) scriptPath+='/';
|
||||
//console.log(scriptPath);
|
||||
function loadScript(file) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
let script = document.createElement('script');
|
||||
script.src = function() {
|
||||
if ('undefined' != typeof EJS_paths && typeof EJS_paths[file] === 'string') {
|
||||
return EJS_paths[file];
|
||||
} else {
|
||||
return scriptPath+file;
|
||||
}
|
||||
}();
|
||||
script.onload = resolve;
|
||||
document.head.appendChild(script);
|
||||
})
|
||||
}
|
||||
function loadStyle(file) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
let css = document.createElement('link');
|
||||
css.rel = 'stylesheet';
|
||||
css.href = function() {
|
||||
if ('undefined' != typeof EJS_paths && typeof EJS_paths[file] === 'string') {
|
||||
return EJS_paths[file];
|
||||
} else {
|
||||
return scriptPath+file;
|
||||
}
|
||||
}();
|
||||
css.onload = resolve;
|
||||
document.head.appendChild(css);
|
||||
})
|
||||
}
|
||||
|
||||
if (('undefined' != typeof EJS_DEBUG_XX && true === EJS_DEBUG_XX)) {
|
||||
await loadScript('emulator.js');
|
||||
await loadScript('nipplejs.js');
|
||||
await loadScript('shaders.js');
|
||||
await loadScript('storage.js');
|
||||
await loadScript('gamepad.js');
|
||||
await loadScript('GameManager.js');
|
||||
await loadScript('socket.io.min.js');
|
||||
await loadStyle('emulator.css');
|
||||
} else {
|
||||
await loadScript('emulator.min.js');
|
||||
await loadStyle('emulator.min.css');
|
||||
|
||||
}
|
||||
const config = {};
|
||||
config.gameUrl = window.EJS_gameUrl;
|
||||
config.dataPath = scriptPath;
|
||||
config.system = window.EJS_core;
|
||||
config.biosUrl = window.EJS_biosUrl;
|
||||
config.gameName = window.EJS_gameName;
|
||||
config.color = window.EJS_color;
|
||||
config.adUrl = window.EJS_AdUrl;
|
||||
config.adTimer = window.EJS_AdTimer;
|
||||
config.VirtualGamepadSettings = window.EJS_VirtualGamepadSettings;
|
||||
config.buttonOpts = window.EJS_Buttons;
|
||||
config.volume = window.EJS_volume;
|
||||
config.defaultControllers = window.EJS_defaultControls;
|
||||
config.startOnLoad = window.EJS_startOnLoaded;
|
||||
config.filePaths = window.EJS_paths;
|
||||
config.loadState = window.EJS_loadStateURL;
|
||||
config.cacheLimit = window.EJS_CacheLimit;
|
||||
config.cheats = window.EJS_cheats;
|
||||
config.defaultOptions = window.EJS_defaultOptions;
|
||||
config.gamePatchUrl = window.EJS_gamePatchUrl;
|
||||
config.gameParentUrl = window.EJS_gameParentUrl;
|
||||
config.netplayUrl = window.EJS_netplayServer;
|
||||
config.gameId = window.EJS_gameID;
|
||||
config.backgroundImg = window.EJS_backgroundImage;
|
||||
|
||||
if (typeof window.EJS_language === "string" && window.EJS_language !== "en-US") {
|
||||
try {
|
||||
let path;
|
||||
if ('undefined' != typeof EJS_paths && typeof EJS_paths[window.EJS_language] === 'string') {
|
||||
path = EJS_paths[window.EJS_language];
|
||||
} else {
|
||||
path = scriptPath+"localization/"+window.EJS_language+".json";
|
||||
}
|
||||
config.language = window.EJS_language;
|
||||
config.langJson = JSON.parse(await (await fetch(path)).text());
|
||||
} catch(e) {
|
||||
config.langJson = {};
|
||||
}
|
||||
}
|
||||
|
||||
window.EJS_emulator = new EmulatorJS(EJS_player, config);
|
||||
if (typeof window.EJS_onGameStart === "function") {
|
||||
window.EJS_emulator.on("start", window.EJS_onGameStart);
|
||||
}
|
||||
if (typeof window.EJS_onLoadState === "function") {
|
||||
window.EJS_emulator.on("load", window.EJS_onLoadState);
|
||||
}
|
||||
if (typeof window.EJS_onSaveState === "function") {
|
||||
window.EJS_emulator.on("save", window.EJS_onSaveState);
|
||||
}
|
||||
|
||||
})();
|
||||
254
static/data/localization/Translate.html
Normal file
254
static/data/localization/Translate.html
Normal file
File diff suppressed because one or more lines are too long
196
static/data/localization/af-FR.json
Normal file
196
static/data/localization/af-FR.json
Normal file
@ -0,0 +1,196 @@
|
||||
{
|
||||
"i18n": {
|
||||
"restart": "Redémarrer",
|
||||
"play": "Jouer",
|
||||
"pause": "Pause",
|
||||
"played": "Joué",
|
||||
"volume": "Volume",
|
||||
"mute": "Muet (F9)",
|
||||
"unmute": "Rétablir le son (F9)",
|
||||
"enterFullscreen": "Entrer en plein écran",
|
||||
"exitFullscreen": "Quitter le plein écran",
|
||||
"settings": "Paramètres",
|
||||
"saveState": "Enregistrer l'état (Maj + F2)",
|
||||
"loadState": "État de charge (Maj + F4)",
|
||||
"cacheManager": "Cache Manager",
|
||||
"screenRecord": "Démarrer l'enregistrement d'écran",
|
||||
"netplay": "Netplay",
|
||||
"gamepad": "Paramètres de contrôle",
|
||||
"cheat": "Tricheurs",
|
||||
"menuBack": "Revenir au menu précédent",
|
||||
"normal": "Normale",
|
||||
"all": "Tous",
|
||||
"reset": "Réinitialiser",
|
||||
"disabled": "Désactivé",
|
||||
"enabled": "Activé",
|
||||
"playNow": "Jouer maintenant"
|
||||
},
|
||||
"normalOptions": {
|
||||
"shader": {
|
||||
"label": " Ombrage",
|
||||
"options": {
|
||||
"disabled": "Désactivé",
|
||||
"2xScaleHQ.glslp": "2xScaleHQ",
|
||||
"4xScaleHQ.glslp": "4xScaleHQ",
|
||||
"crt-easymode.glslp": "CRT mode facile",
|
||||
"crt-aperture.glslp": "Ouverture CRT",
|
||||
"crt-geom.glslp": "CRT geom",
|
||||
"crt-mattias.glslp": "CRT mattias"
|
||||
},
|
||||
"default": "disabled"
|
||||
},
|
||||
"virtual-gamepad": {
|
||||
"label": " Manette de jeu virtuelle",
|
||||
"options": {
|
||||
"disabled": "Désactivé",
|
||||
"enabled": "Activé"
|
||||
},
|
||||
"default": "enabled"
|
||||
}
|
||||
},
|
||||
"Control Settings": "Paramètres de contrôle",
|
||||
"Player 1": "Joueur 1",
|
||||
"Player 2": "Joueur 2",
|
||||
"Player 3": "Joueur 3",
|
||||
"Player 4": "Joueur 4",
|
||||
"Update": "Mettre à jour",
|
||||
"Reset": "Réinitialiser",
|
||||
"Clear": "Effacer",
|
||||
"Cancel": "Annuler",
|
||||
"Close": "Fermer",
|
||||
"Empty": "Vide",
|
||||
"Loading": "Chargement",
|
||||
"Submit": "Soumettre",
|
||||
"Description": "Description",
|
||||
"Code": "Code",
|
||||
"Add Cheat Code": "Ajouter un code de triche",
|
||||
"OK": "D'accord",
|
||||
"Add Cheat": "Ajouter une triche",
|
||||
"Cache Manager": "Gestionnaire de cache",
|
||||
"Press keyboard or gamepad": "Appuyez sur le clavier ou la manette de jeu",
|
||||
"Gamepad": "Manette de jeu",
|
||||
"Keyboard": "Clavier",
|
||||
"Set": "Définir",
|
||||
"QUICK SAVE STATE": "ÉTAT DE SAUVEGARDE RAPIDE",
|
||||
"QUICK LOAD STATE": "ÉTAT DE CHARGEMENT RAPIDE",
|
||||
"CHANGE STATE SLOT": "CHANGER L'EMPLACEMENT D'ETAT",
|
||||
"INSERT COIN": "INSÉRER UNE PIÈCE",
|
||||
"Press escape (esc) to clear": "Appuyez sur Échap (esc) pour effacer",
|
||||
"Netplay": "Netplay",
|
||||
"Rooms": "Chambres",
|
||||
"Players": "Joueurs",
|
||||
"Player": "Joueur",
|
||||
"Room Name": "Nom de la pièce",
|
||||
"Password": "Mot de passe",
|
||||
"Name": "Nom",
|
||||
"Quit Room": "Quitter le salon",
|
||||
"Create a Room": "Créer une pièce",
|
||||
"Set Player Name": "Définir le nom du joueur",
|
||||
"Player Name": "Nom du joueur",
|
||||
"Password (optional)": "Mot de passe (facultatif)",
|
||||
"Select": "Sélectionner",
|
||||
"Start": "Démarrer",
|
||||
"Menu": "Menu",
|
||||
"Decompress Game Core": "Décompresser le noyau du jeu",
|
||||
"Decompress Game Data": "Décompresser les données du jeu",
|
||||
"Decompress Game Patch": "Décompresser le patch du jeu",
|
||||
"Download Game Data": "Télécharger les données du jeu",
|
||||
"Download Game Core": "Télécharger le noyau du jeu",
|
||||
"Network Error": "Erreur réseau",
|
||||
"Default": "Par défaut",
|
||||
"default": "par défaut",
|
||||
"Save State Location": "Enregistrer l'emplacement de l'état",
|
||||
"Save State Slot": "Enregistrer l'emplacement de l'état",
|
||||
"Color Palette": " Palette de couleurs",
|
||||
"No Sprite Limit": "Pas de limite de sprites",
|
||||
"Enabled": "Activé",
|
||||
"Disabled": "Désactivé",
|
||||
"enabled": "activé",
|
||||
"disabled": "désactivé",
|
||||
"Low": "Bas",
|
||||
"High": "Élevé",
|
||||
"Very High": "Très élevé",
|
||||
"4 Players Support": " Prise en charge de 4 joueurs",
|
||||
"Turbo Enable": "Activation turbo",
|
||||
"None": "Aucun",
|
||||
"Both": "Les deux",
|
||||
"Region": "Région",
|
||||
"SuperFX Overclock": "SuperFX Overclock",
|
||||
"Sound Quality": "Qualité sonore",
|
||||
"GB Colorization": "GB Colorisation",
|
||||
"auto": "auto",
|
||||
"internal": "interne",
|
||||
"Internal Palette": "Palette interne",
|
||||
"GBC - Blue": "GBC Bleu",
|
||||
"GBC - Brown": "GBC Marron",
|
||||
"GBC - Dark Blue": "GBC Bleu Foncé",
|
||||
"GBC - Dark Brown": "GBC Marron Foncé",
|
||||
"GBC - Dark Green": "GBC vert foncé",
|
||||
"GBC - Grayscale": " Niveaux de gris GBC",
|
||||
"GBC - Green": "GBC Vert",
|
||||
"GBC - Inverted": "GBC Inversé",
|
||||
"GBC - Orange": "GBC Orange",
|
||||
"GBC - Red": "GBC Rouge",
|
||||
"GBC - Pastel Mix": "mélange de pastels GBC",
|
||||
"GBC - Yellow": "GBC Jaune",
|
||||
"Frameskip": "Frameskip",
|
||||
"Solar sensor level": "Niveau du capteur solaire",
|
||||
"Enable Turbo Buttons": "Activer les boutons turbo",
|
||||
"Turbo Delay in frames": "Turbo Delay dans les images",
|
||||
"Auto": "Auto",
|
||||
"Aspect Ratio (Need to refresh page)": "Aspect Ratio (Besoin d'actualiser la page)",
|
||||
"16:9 Resolution": "Résolution 16:9",
|
||||
"4:3 Resolution": " Résolution 4:3",
|
||||
"Player 1 Pak": "Pack joueur 1",
|
||||
"Player 2 Pak": "Pack joueur 2",
|
||||
"Player 3 Pak": "Pack de 3 joueurs",
|
||||
"Player 4 Pak": "Pack de 4 joueurs",
|
||||
"none": "aucun",
|
||||
"memory": "mémoire",
|
||||
"rumble": "grondement",
|
||||
"Screen layout": "Disposition de l'écran",
|
||||
"right/left": "droite/gauche",
|
||||
"left/right": "gauche/droite",
|
||||
"bottom/top": "bas/haut",
|
||||
"top/bottom": "haut/bas",
|
||||
"top only": "haut seulement",
|
||||
"bottom only": "en bas uniquement",
|
||||
"quick switch": "commutateur rapide",
|
||||
"hybrid/bottom": "hybride/fond",
|
||||
"hybrid/top": "hybride/haut",
|
||||
"Screen Rotation": " Rotation de l'écran",
|
||||
"CPU speed": "Vitesse du processeur",
|
||||
"Sound output": "Sortie sonore",
|
||||
"mono": "mono",
|
||||
"stereo": "stéréo",
|
||||
"OFF": "OFF",
|
||||
"ON": "ON",
|
||||
"Fast Blitter": "Blitter rapide",
|
||||
"Bios": "Bios",
|
||||
"Enable second memory card": "Activer la deuxième carte mémoire",
|
||||
"Pad 1 Type": "Type de tampon 1",
|
||||
"Pad 2 Type": "Type de plaquette 2",
|
||||
"Pad 3 Type": "Type de tampon 3",
|
||||
"Pad 4 Type": "Type de tampon 4",
|
||||
"standard": "norme",
|
||||
"analog": "analogique",
|
||||
"negcon": "negcon",
|
||||
"Enable Vibration": "Activer les vibrations",
|
||||
"Enable interlacing mode(s)": "Activer le(s) mode(s) d'entrelacement",
|
||||
"Enhanced resolution (slow)": "Résolution améliorée (lente)",
|
||||
"Enhanced resolution speed hack": "Hack de vitesse de résolution améliorée",
|
||||
"Aspect ratio": "Rapport d'aspect",
|
||||
"CPU overclock": " Surcadençage du processeur",
|
||||
"Force Neo Geo mode": "Forcer le mode Neo Geo",
|
||||
"Diagnostic Input": "Entrée de diagnostic",
|
||||
"download": "télécharger",
|
||||
"keep in browser": "garder dans le navigateur",
|
||||
"Webassembly support is not detected in this browser": "La prise en charge de Webassembly n'est pas détectée dans ce navigateur",
|
||||
"Please upgrade your browser to the latest version": "Veuillez mettre à niveau votre navigateur vers la dernière version",
|
||||
"Missing mame config": "Configuration Mame manquante",
|
||||
"Stop Screen Recording": "Arrêter l'enregistrement d'écran",
|
||||
"Start Screen Recording": "Démarrer l'enregistrement d'écran",
|
||||
"Take Screenshot": "Prendre une capture d'écran",
|
||||
"Quick Save": "Enregistrement rapide",
|
||||
"Quick Load": "Chargement rapide"
|
||||
}
|
||||
196
static/data/localization/ar-AR.json
Normal file
196
static/data/localization/ar-AR.json
Normal file
@ -0,0 +1,196 @@
|
||||
{
|
||||
"i18n": {
|
||||
"restart": "اعادة البدء",
|
||||
"play": " تشغيل",
|
||||
"pause": " وقفة",
|
||||
"played": " تم اللعب",
|
||||
"volume": " الحجم",
|
||||
"mute": " كتم الصوت (F9)",
|
||||
"unmute": " إلغاء كتم الصوت (F9)",
|
||||
"enterFullscreen": " أدخل ملء الشاشة",
|
||||
"exitFullscreen": " الخروج من وضع ملء الشاشة",
|
||||
"settings": " الإعدادات",
|
||||
"saveState": " حفظ الحالة (إزاحة + F2)",
|
||||
"loadState": " حالة التحميل (Shift + F4)",
|
||||
"cacheManager": "Cache Manager",
|
||||
"screenRecord": " بدء تسجيل الشاشة",
|
||||
"netplay": " نيت بلاي",
|
||||
"gamepad": " إعدادات التحكم",
|
||||
"cheat": " غش",
|
||||
"menuBack": " ارجع إلى القائمة السابقة",
|
||||
"normal": " عادي",
|
||||
"all": " الكل",
|
||||
"reset": " إعادة تعيين",
|
||||
"disabled": " معطل",
|
||||
"enabled": " ممكّن",
|
||||
"playNow": " العب الآن"
|
||||
},
|
||||
"normalOptions": {
|
||||
"shader": {
|
||||
"label": " شادر",
|
||||
"options": {
|
||||
"disabled": " معطل",
|
||||
"2xScaleHQ.glslp": " 2x مقياس",
|
||||
"4xScaleHQ.glslp": " 4xScaleHQ",
|
||||
"crt-easymode.glslp": " وضع CRT السهل",
|
||||
"crt-aperture.glslp": " فتحة CRT",
|
||||
"crt-geom.glslp": " CRT geom",
|
||||
"crt-mattias.glslp": "CRT mattias"
|
||||
},
|
||||
"default": "disabled"
|
||||
},
|
||||
"virtual-gamepad": {
|
||||
"label": " لوحة الألعاب الافتراضية",
|
||||
"options": {
|
||||
"disabled": " معطل",
|
||||
"enabled": " ممكّن"
|
||||
},
|
||||
"default": "enabled"
|
||||
}
|
||||
},
|
||||
"Control Settings": " إعدادات التحكم",
|
||||
"Player 1": " اللاعب 1",
|
||||
"Player 2": " اللاعب 2",
|
||||
"Player 3": " اللاعب 3",
|
||||
"Player 4": " اللاعب 4",
|
||||
"Update": " تحديث",
|
||||
"Reset": " إعادة تعيين",
|
||||
"Clear": " مسح",
|
||||
"Cancel": " إلغاء",
|
||||
"Close": " إغلاق",
|
||||
"Empty": " فارغ",
|
||||
"Loading": " تحميل",
|
||||
"Submit": " إرسال",
|
||||
"Description": " الوصف",
|
||||
"Code": " كود",
|
||||
"Add Cheat Code": " أضف كود الغش",
|
||||
"OK": " حسنًا",
|
||||
"Add Cheat": " أضف الغش",
|
||||
"Cache Manager": " مدير ذاكرة التخزين المؤقت",
|
||||
"Press keyboard or gamepad": " اضغط على لوحة المفاتيح أو لوحة الألعاب",
|
||||
"Gamepad": " Gamepad",
|
||||
"Keyboard": " لوحة المفاتيح",
|
||||
"Set": " مجموعة",
|
||||
"QUICK SAVE STATE": " حالة الحفظ السريع",
|
||||
"QUICK LOAD STATE": " حالة التحميل السريع",
|
||||
"CHANGE STATE SLOT": " تغيير فتحة الدولة",
|
||||
"INSERT COIN": " أدخل عملة",
|
||||
"Press escape (esc) to clear": " اضغط على مفتاح الهروب (esc) للمسح",
|
||||
"Netplay": " نيت بلاي",
|
||||
"Rooms": " الغرف",
|
||||
"Players": " اللاعبين",
|
||||
"Player": " لاعب",
|
||||
"Room Name": " اسم الغرفة",
|
||||
"Password": " كلمة المرور",
|
||||
"Name": " الاسم",
|
||||
"Quit Room": " قم بإنهاء الغرفة",
|
||||
"Create a Room": " إنشاء غرفة",
|
||||
"Set Player Name": " تعيين اسم اللاعب",
|
||||
"Player Name": " اسم اللاعب",
|
||||
"Password (optional)": " كلمة المرور (اختياري)",
|
||||
"Select": " حدد",
|
||||
"Start": " ابدأ",
|
||||
"Menu": " القائمة",
|
||||
"Decompress Game Core": " فك ضغط جوهر اللعبة",
|
||||
"Decompress Game Data": " فك ضغط بيانات اللعبة",
|
||||
"Decompress Game Patch": " فك ضغط لعبة التصحيح",
|
||||
"Download Game Data": " تنزيل بيانات اللعبة",
|
||||
"Download Game Core": " تحميل Game Core",
|
||||
"Network Error": " خطأ في الشبكة",
|
||||
"Default": " افتراضي",
|
||||
"default": " الافتراضي",
|
||||
"Save State Location": " حفظ موقع الدولة",
|
||||
"Save State Slot": " حفظ فتحة الدولة",
|
||||
"Color Palette": " لوحة الألوان",
|
||||
"No Sprite Limit": " لا يوجد حد سبرايت",
|
||||
"Enabled": " ممكّن",
|
||||
"Disabled": " معطل",
|
||||
"enabled": " ممكّن",
|
||||
"disabled": " معطل",
|
||||
"Low": " منخفض",
|
||||
"High": " مرتفع",
|
||||
"Very High": " مرتفع جدا",
|
||||
"4 Players Support": " دعم 4 لاعبين",
|
||||
"Turbo Enable": " تمكين توربو",
|
||||
"None": " لا شيء",
|
||||
"Both": " كلاهما",
|
||||
"Region": " المنطقة",
|
||||
"SuperFX Overclock": " SuperFX فيركلوك",
|
||||
"Sound Quality": " جودة الصوت",
|
||||
"GB Colorization": " تلوين GB",
|
||||
"auto": " تلقائي",
|
||||
"internal": " داخلي",
|
||||
"Internal Palette": " لوحة داخلية",
|
||||
"GBC - Blue": " GBC Blue",
|
||||
"GBC - Brown": " جي بي سي براون",
|
||||
"GBC - Dark Blue": " GBC أزرق داكن",
|
||||
"GBC - Dark Brown": " GBC بني غامق",
|
||||
"GBC - Dark Green": " GBC أخضر غامق",
|
||||
"GBC - Grayscale": " GBC Grayscale",
|
||||
"GBC - Green": " GBC Green",
|
||||
"GBC - Inverted": " GBC مقلوب",
|
||||
"GBC - Orange": " GBC Orange",
|
||||
"GBC - Red": " جي بي سي أحمر",
|
||||
"GBC - Pastel Mix": " جي بي سي باستيل ميكس",
|
||||
"GBC - Yellow": " GBC Yellow",
|
||||
"Frameskip": " Frameskip",
|
||||
"Solar sensor level": " مستوى استشعار الطاقة الشمسية",
|
||||
"Enable Turbo Buttons": " تمكين أزرار Turbo",
|
||||
"Turbo Delay in frames": " تربو تأخير في الإطارات",
|
||||
"Auto": " تلقائي",
|
||||
"Aspect Ratio (Need to refresh page)": " نسبة العرض إلى الارتفاع (يلزم تحديث الصفحة)",
|
||||
"16:9 Resolution": " دقة 16: 9",
|
||||
"4:3 Resolution": " دقة 4: 3",
|
||||
"Player 1 Pak": " اللاعب 1 باك",
|
||||
"Player 2 Pak": " اللاعب 2 باك",
|
||||
"Player 3 Pak": " اللاعب 3 باك",
|
||||
"Player 4 Pak": " اللاعب 4 باك",
|
||||
"none": " لا شيء",
|
||||
"memory": " الذاكرة",
|
||||
"rumble": " قعقعة",
|
||||
"Screen layout": " تخطيط الشاشة",
|
||||
"right/left": " يمين / يسار",
|
||||
"left/right": " يسار / يمين",
|
||||
"bottom/top": " أسفل / أعلى",
|
||||
"top/bottom": " أعلى / أسفل",
|
||||
"top only": " الجزء العلوي فقط",
|
||||
"bottom only": " أسفل فقط",
|
||||
"quick switch": " التبديل السريع",
|
||||
"hybrid/bottom": " هجين / سفلي",
|
||||
"hybrid/top": " هجين / علوي",
|
||||
"Screen Rotation": " دوران الشاشة",
|
||||
"CPU speed": " سرعة وحدة المعالجة المركزية",
|
||||
"Sound output": " إخراج الصوت",
|
||||
"mono": " أحادي",
|
||||
"stereo": " ستيريو",
|
||||
"OFF": " إيقاف",
|
||||
"ON": " تشغيل",
|
||||
"Fast Blitter": " ضباب سريع",
|
||||
"Bios": " السير",
|
||||
"Enable second memory card": " تفعيل بطاقة الذاكرة الثانية",
|
||||
"Pad 1 Type": " نوع الوسادة 1",
|
||||
"Pad 2 Type": " نوع الوسادة 2",
|
||||
"Pad 3 Type": " نوع الوسادة 3",
|
||||
"Pad 4 Type": " نوع الوسادة 4",
|
||||
"standard": " قياسي",
|
||||
"analog": " التناظرية",
|
||||
"negcon": " نيجكون",
|
||||
"Enable Vibration": " تمكين الاهتزاز",
|
||||
"Enable interlacing mode(s)": " تمكين وضع (أوضاع) التداخل",
|
||||
"Enhanced resolution (slow)": " دقة محسنة (بطيئة)",
|
||||
"Enhanced resolution speed hack": " تحسين دقة سرعة الاختراق",
|
||||
"Aspect ratio": " نسبة العرض إلى الارتفاع",
|
||||
"CPU overclock": " وحدة المعالجة المركزية فيركلوك",
|
||||
"Force Neo Geo mode": " فرض الوضع الجغرافي الجديد",
|
||||
"Diagnostic Input": " مدخلات التشخيص",
|
||||
"download": " تنزيل",
|
||||
"keep in browser": " ابق في المتصفح",
|
||||
"Webassembly support is not detected in this browser": " لم يتم الكشف عن دعم Webassembly في هذا المستعرض",
|
||||
"Please upgrade your browser to the latest version": " الرجاء ترقية متصفحك إلى أحدث إصدار",
|
||||
"Missing mame config": " مفقود mame config",
|
||||
"Stop Screen Recording": " إيقاف تسجيل الشاشة",
|
||||
"Start Screen Recording": " بدء تسجيل الشاشة",
|
||||
"Take Screenshot": " خذ لقطة شاشة",
|
||||
"Quick Save": " حفظ سريع",
|
||||
"Quick Load": " تحميل سريع"
|
||||
}
|
||||
196
static/data/localization/ben-BEN.json
Normal file
196
static/data/localization/ben-BEN.json
Normal file
@ -0,0 +1,196 @@
|
||||
{
|
||||
"i18n": {
|
||||
"restart": "আবার শুরু",
|
||||
"play": "খেলা",
|
||||
"pause": " বিরতি",
|
||||
"played": " খেলেছে",
|
||||
"volume": " ভলিউম",
|
||||
"mute": "নিঃশব্দ (F9)",
|
||||
"unmute": "আনমিউট (F9)",
|
||||
"enterFullscreen": "পূর্ণ স্ক্রীনে প্রবেশ করুন",
|
||||
"exitFullscreen": "ফুলস্ক্রিন থেকে প্রস্থান করুন",
|
||||
"settings": "সেটিংস",
|
||||
"saveState": "সেভ স্টেট (Shift + F2)",
|
||||
"loadState": "লোড স্টেট (Shift + F4)",
|
||||
"cacheManager": "Cache Manager",
|
||||
"screenRecord": "স্ক্রিন রেকর্ডিং শুরু করুন",
|
||||
"netplay": "নেটপ্লে",
|
||||
"gamepad": "নিয়ন্ত্রণ সেটিংস",
|
||||
"cheat": "প্রতারক",
|
||||
"menuBack": "আগের মেনুতে ফিরে যান",
|
||||
"normal": " স্বাভাবিক",
|
||||
"all": "সব",
|
||||
"reset": "রিসেট করুন",
|
||||
"disabled": " প্রতিবন্ধী",
|
||||
"enabled": "সক্রিয়",
|
||||
"playNow": "এখন খেলুন"
|
||||
},
|
||||
"normalOptions": {
|
||||
"shader": {
|
||||
"label": "শাদের",
|
||||
"options": {
|
||||
"disabled": " প্রতিবন্ধী",
|
||||
"2xScaleHQ.glslp": "2xScaleHQ",
|
||||
"4xScaleHQ.glslp": "4xScaleHQ",
|
||||
"crt-easymode.glslp": "সিআরটি ইজিমোড",
|
||||
"crt-aperture.glslp": "সিআরটি অ্যাপারচার",
|
||||
"crt-geom.glslp": "সিআরটি জিওম",
|
||||
"crt-mattias.glslp": "CRT mattias"
|
||||
},
|
||||
"default": "disabled"
|
||||
},
|
||||
"virtual-gamepad": {
|
||||
"label": "ভার্চুয়াল গেমপ্যাড",
|
||||
"options": {
|
||||
"disabled": " প্রতিবন্ধী",
|
||||
"enabled": "সক্রিয়"
|
||||
},
|
||||
"default": "enabled"
|
||||
}
|
||||
},
|
||||
"Control Settings": "নিয়ন্ত্রণ সেটিংস",
|
||||
"Player 1": "খেলোয়াড় 1",
|
||||
"Player 2": "খেলোয়াড় 2",
|
||||
"Player 3": "খেলোয়াড় 3",
|
||||
"Player 4": "খেলোয়াড় 4",
|
||||
"Update": "আপডেট",
|
||||
"Reset": "রিসেট করুন",
|
||||
"Clear": " পরিষ্কার",
|
||||
"Cancel": "বাতিল করুন",
|
||||
"Close": " বন্ধ",
|
||||
"Empty": " খালি",
|
||||
"Loading": "লোড হচ্ছে",
|
||||
"Submit": " জমা দিন",
|
||||
"Description": " বর্ণনা",
|
||||
"Code": "কোড",
|
||||
"Add Cheat Code": " চিট কোড যোগ করুন",
|
||||
"OK": "ঠিক আছে",
|
||||
"Add Cheat": "প্রতারণা যোগ করুন",
|
||||
"Cache Manager": "ক্যাশ ম্যানেজার",
|
||||
"Press keyboard or gamepad": "কীবোর্ড বা গেমপ্যাড টিপুন",
|
||||
"Gamepad": "গেমপ্যাড",
|
||||
"Keyboard": "কীবোর্ড",
|
||||
"Set": " সেট",
|
||||
"QUICK SAVE STATE": " দ্রুত সেভ স্টেট",
|
||||
"QUICK LOAD STATE": "কুইক লোড স্টেট",
|
||||
"CHANGE STATE SLOT": " রাজ্যের স্লট পরিবর্তন করুন৷",
|
||||
"INSERT COIN": " কয়েন ঢোকান",
|
||||
"Press escape (esc) to clear": " সাফ করতে escape (esc) টিপুন",
|
||||
"Netplay": "নেটপ্লে",
|
||||
"Rooms": "রুম",
|
||||
"Players": "খেলোয়াড়",
|
||||
"Player": "খেলোয়াড়",
|
||||
"Room Name": "রুমের নাম",
|
||||
"Password": "পাসওয়ার্ড",
|
||||
"Name": "নাম",
|
||||
"Quit Room": " রুম ছেড়ে দাও",
|
||||
"Create a Room": " একটি রুম তৈরি করুনপ্লেয়ারের নাম সেট করুন",
|
||||
"Set Player Name": "খেলোয়াড়ের নাম",
|
||||
"Player Name": "পাসওয়ার্ড (ঐচ্ছিক)",
|
||||
"Password (optional)": " নির্বাচন করুন",
|
||||
"Select": "শুরু",
|
||||
"Start": "মেনু",
|
||||
"Menu": " গেম কোর ডিকম্প্রেস করুন",
|
||||
"Decompress Game Core": "গেম ডেটা ডিকম্প্রেস করুন",
|
||||
"Decompress Game Data": " ডিকম্প্রেস গেম প্যাচ",
|
||||
"Decompress Game Patch": "গেম ডেটা ডাউনলোড করুন",
|
||||
"Download Game Data": "গেম কোর ডাউনলোড করুন",
|
||||
"Download Game Core": "নেটওয়ার্ক ত্রুটি",
|
||||
"Network Error": "ডিফল্ট",
|
||||
"Default": " ডিফল্ট",
|
||||
"default": " রাজ্যের অবস্থান সংরক্ষণ করুন৷",
|
||||
"Save State Location": " রাজ্য স্লট সংরক্ষণ করুন",
|
||||
"Save State Slot": "রঙ প্যালেট",
|
||||
"Color Palette": "কোন স্প্রাইট সীমা নেই",
|
||||
"No Sprite Limit": "সক্রিয়",
|
||||
"Enabled": " প্রতিবন্ধী",
|
||||
"Disabled": "সক্রিয়",
|
||||
"enabled": " অক্ষম",
|
||||
"disabled": "নিম্ন",
|
||||
"Low": " উচ্চ",
|
||||
"High": "খুব উচ্চ",
|
||||
"Very High": "4 প্লেয়ার সাপোর্ট",
|
||||
"4 Players Support": "টার্বো সক্ষম",
|
||||
"Turbo Enable": " কোনোটিই নয়",
|
||||
"None": "দুটোই",
|
||||
"Both": " অঞ্চল",
|
||||
"Region": "SuperFX ওভারক্লক",
|
||||
"SuperFX Overclock": " সাউন্ড কোয়ালিটি",
|
||||
"Sound Quality": "জিবি কালারাইজেশন",
|
||||
"GB Colorization": "অটো",
|
||||
"auto": " অভ্যন্তরীণ",
|
||||
"internal": "অভ্যন্তরীণ প্যালেট",
|
||||
"Internal Palette": "জিবিসি ব্লু",
|
||||
"GBC - Blue": "GBC ব্রাউন",
|
||||
"GBC - Brown": "GBC গাঢ় নীল",
|
||||
"GBC - Dark Blue": "GBC ডার্ক ব্রাউন",
|
||||
"GBC - Dark Brown": "GBC গাঢ় সবুজ",
|
||||
"GBC - Dark Green": "GBC গ্রেস্কেল",
|
||||
"GBC - Grayscale": "জিবিসি গ্রিন",
|
||||
"GBC - Green": "GBC উল্টানো",
|
||||
"GBC - Inverted": "GBC কমলা",
|
||||
"GBC - Orange": "GBC রেড",
|
||||
"GBC - Red": "GBC প্যাস্টেল মিক্স",
|
||||
"GBC - Pastel Mix": "GBC হলুদ",
|
||||
"GBC - Yellow": "ফ্রেমস্কিপ",
|
||||
"Frameskip": "সৌর সেন্সর স্তর",
|
||||
"Solar sensor level": " টার্বো বোতাম সক্ষম করুন৷",
|
||||
"Enable Turbo Buttons": "ফ্রেমে টার্বো বিলম্ব",
|
||||
"Turbo Delay in frames": "অটো",
|
||||
"Auto": "আসপেক্ট রেশিও (পৃষ্ঠা রিফ্রেশ করতে হবে)",
|
||||
"Aspect Ratio (Need to refresh page)": "16:9 রেজোলিউশন",
|
||||
"16:9 Resolution": "4:3 রেজোলিউশন",
|
||||
"4:3 Resolution": "খেলোয়াড় 1 পাক",
|
||||
"Player 1 Pak": "খেলোয়াড় 2 পাক",
|
||||
"Player 2 Pak": "খেলোয়াড় ৩ পাক",
|
||||
"Player 3 Pak": "প্লেয়ার 4 পাক",
|
||||
"Player 4 Pak": " কোনোটিই নয়",
|
||||
"none": "স্মৃতি",
|
||||
"memory": "রম্বল",
|
||||
"rumble": "স্ক্রিন লেআউট",
|
||||
"Screen layout": "ডান/বাম",
|
||||
"right/left": "বাম/ডান",
|
||||
"left/right": "নিচে/উপরে",
|
||||
"bottom/top": "শীর্ষ/নীচ",
|
||||
"top/bottom": "শুধুমাত্র উপরে",
|
||||
"top only": "শুধু নীচে",
|
||||
"bottom only": " দ্রুত সুইচ",
|
||||
"quick switch": "হাইব্রিড/নিচ",
|
||||
"hybrid/bottom": "হাইব্রিড/টপ",
|
||||
"hybrid/top": "স্ক্রিন ঘূর্ণন",
|
||||
"Screen Rotation": " CPU গতি",
|
||||
"CPU speed": " সাউন্ড আউটপুট",
|
||||
"Sound output": "মনোস্টেরিও",
|
||||
"mono": "বন্ধ",
|
||||
"stereo": " চালু",
|
||||
"OFF": "ফাস্ট ব্লিটার",
|
||||
"ON": "বায়োস",
|
||||
"Fast Blitter": "দ্বিতীয় মেমরি কার্ড সক্রিয় করুন",
|
||||
"Bios": "প্যাড 1 প্রকার",
|
||||
"Enable second memory card": "প্যাড 2 প্রকার",
|
||||
"Pad 1 Type": "প্যাড 3 প্রকার",
|
||||
"Pad 2 Type": "প্যাড 4 প্রকার",
|
||||
"Pad 3 Type": "মান",
|
||||
"Pad 4 Type": "অ্যানালগ",
|
||||
"standard": "নেগকন",
|
||||
"analog": "কম্পন সক্ষম করুন",
|
||||
"negcon": "ইন্টারলেসিং মোড(গুলি) সক্ষম করুন",
|
||||
"Enable Vibration": "বর্ধিত রেজোলিউশন (ধীরে)",
|
||||
"Enable interlacing mode(s)": "বর্ধিত রেজোলিউশন গতি হ্যাক",
|
||||
"Enhanced resolution (slow)": " আকৃতির অনুপাত",
|
||||
"Enhanced resolution speed hack": "CPU ওভারক্লক",
|
||||
"Aspect ratio": " নিও জিও মোড ফোর্স করুন",
|
||||
"CPU overclock": "ডায়াগনস্টিক ইনপুট",
|
||||
"Force Neo Geo mode": "ডাউনলোড করুনব্রাউজারে রাখুন",
|
||||
"Diagnostic Input": "ওয়েবসেম্বলি সমর্থন এই ব্রাউজারে সনাক্ত করা হয়নি",
|
||||
"download": "অনুগ্রহ করে আপনার ব্রাউজারটিকে সর্বশেষ সংস্করণে আপগ্রেড করুন৷",
|
||||
"keep in browser": " mame কনফিগারেশন অনুপস্থিত",
|
||||
"Webassembly support is not detected in this browser": "স্ক্রিন রেকর্ডিং বন্ধ করুন",
|
||||
"Please upgrade your browser to the latest version": "স্ক্রিন রেকর্ডিং শুরু করুন",
|
||||
"Missing mame config": "স্ক্রিনশট নিন",
|
||||
"Stop Screen Recording": " দ্রুত সংরক্ষণ করুন",
|
||||
"Start Screen Recording": " দ্রুত লোড",
|
||||
"Take Screenshot": "",
|
||||
"Quick Save": "undefined",
|
||||
"Quick Load": "undefined"
|
||||
}
|
||||
196
static/data/localization/de-GER.json
Normal file
196
static/data/localization/de-GER.json
Normal file
@ -0,0 +1,196 @@
|
||||
{
|
||||
"i18n": {
|
||||
"restart": "Neu starten",
|
||||
"play": "Spielen",
|
||||
"pause": "Pause",
|
||||
"played": "Gespielt",
|
||||
"volume": "Lautstärke",
|
||||
"mute": "Stumm (F9)",
|
||||
"unmute": "Stumm aufheben (F9)",
|
||||
"enterFullscreen": "Vollbild aufrufen",
|
||||
"exitFullscreen": "Vollbild verlassen",
|
||||
"settings": "Einstellungen",
|
||||
"saveState": "Zustand speichern (Umschalt + F2)",
|
||||
"loadState": "Zustand laden (Umschalt + F4)",
|
||||
"cacheManager": "Cache Manager",
|
||||
"screenRecord": "Bildschirmaufnahme starten",
|
||||
"netplay": "Netzspiel",
|
||||
"gamepad": "Steuerungseinstellungen",
|
||||
"cheat": "Betrug",
|
||||
"menuBack": "Zurück zum vorherigen Menü",
|
||||
"normal": "Normal",
|
||||
"all": "Alle",
|
||||
"reset": "Zurücksetzen",
|
||||
"disabled": "Deaktiviert",
|
||||
"enabled": "Aktiviert",
|
||||
"playNow": "Jetzt spielen"
|
||||
},
|
||||
"normalOptions": {
|
||||
"shader": {
|
||||
"label": "Shader",
|
||||
"options": {
|
||||
"disabled": "Deaktiviert",
|
||||
"2xScaleHQ.glslp": "2xScaleHQ",
|
||||
"4xScaleHQ.glslp": "4xScaleHQ",
|
||||
"crt-easymode.glslp": "CRT Easymode",
|
||||
"crt-aperture.glslp": "CRT-Öffnung",
|
||||
"crt-geom.glslp": "Kathodengeom",
|
||||
"crt-mattias.glslp": "CRT mattias"
|
||||
},
|
||||
"default": "disabled"
|
||||
},
|
||||
"virtual-gamepad": {
|
||||
"label": "Virtuelles Gamepad",
|
||||
"options": {
|
||||
"disabled": "Deaktiviert",
|
||||
"enabled": "Aktiviert"
|
||||
},
|
||||
"default": "enabled"
|
||||
}
|
||||
},
|
||||
"Control Settings": "Steuerungseinstellungen",
|
||||
"Player 1": "Spieler 1",
|
||||
"Player 2": "Spieler 2",
|
||||
"Player 3": "Spieler 3",
|
||||
"Player 4": "Spieler 4",
|
||||
"Update": "Aktualisieren",
|
||||
"Reset": "Zurücksetzen",
|
||||
"Clear": "Löschen",
|
||||
"Cancel": "Abbrechen",
|
||||
"Close": "Schließen",
|
||||
"Empty": "Leer",
|
||||
"Loading": "Wird geladen",
|
||||
"Submit": "Senden",
|
||||
"Description": "Beschreibung",
|
||||
"Code": "Code",
|
||||
"Add Cheat Code": "Cheat-Code hinzufügen",
|
||||
"OK": "Okay",
|
||||
"Add Cheat": "Cheat hinzufügen",
|
||||
"Cache Manager": "Cache-Manager",
|
||||
"Press keyboard or gamepad": "Taste oder Gamepad drücken",
|
||||
"Gamepad": "Gamepad",
|
||||
"Keyboard": "Tastatur",
|
||||
"Set": "Setzen",
|
||||
"QUICK SAVE STATE": "SCHNELLSPEICHERSTATUS",
|
||||
"QUICK LOAD STATE": "SCHNELLER LADEZUSTAND",
|
||||
"CHANGE STATE SLOT": "STATUS SLOT ÄNDERN",
|
||||
"INSERT COIN": "MÜNZE EINWERFEN",
|
||||
"Press escape (esc) to clear": "Drücken Sie zum Löschen die Escape-Taste (esc).",
|
||||
"Netplay": "Netzspiel",
|
||||
"Rooms": "Zimmer",
|
||||
"Players": "Spieler",
|
||||
"Player": "Spieler",
|
||||
"Room Name": "Raumname",
|
||||
"Password": "Passwort",
|
||||
"Name": "Name",
|
||||
"Quit Room": "Raum verlassen",
|
||||
"Create a Room": "Erstelle einen Raum",
|
||||
"Set Player Name": "Spielernamen festlegen",
|
||||
"Player Name": "Spielername",
|
||||
"Password (optional)": "Passwort (optional)",
|
||||
"Select": "Auswählen",
|
||||
"Start": "Starten",
|
||||
"Menu": "Menü",
|
||||
"Decompress Game Core": "Spielkern dekomprimieren",
|
||||
"Decompress Game Data": "Spieldaten dekomprimieren",
|
||||
"Decompress Game Patch": "Spiel-Patch dekomprimieren",
|
||||
"Download Game Data": "Spieldaten herunterladen",
|
||||
"Download Game Core": "Spielkern herunterladen",
|
||||
"Network Error": "Netzwerkfehler",
|
||||
"Default": "Standard",
|
||||
"default": "Standard",
|
||||
"Save State Location": "Zustandsstandort speichern",
|
||||
"Save State Slot": "Zustandsplatz speichern",
|
||||
"Color Palette": "Farbpalette",
|
||||
"No Sprite Limit": "Kein Sprite-Limit",
|
||||
"Enabled": "Aktiviert",
|
||||
"Disabled": "Deaktiviert",
|
||||
"enabled": "aktiviert",
|
||||
"disabled": "deaktiviert",
|
||||
"Low": "Niedrig",
|
||||
"High": "Hoch",
|
||||
"Very High": "Sehr hoch",
|
||||
"4 Players Support": "Unterstützung für 4 Spieler",
|
||||
"Turbo Enable": "Turbo aktivieren",
|
||||
"None": "Keine",
|
||||
"Both": "Beide",
|
||||
"Region": "Region",
|
||||
"SuperFX Overclock": "SuperFX-Übertaktung",
|
||||
"Sound Quality": "Tonqualität",
|
||||
"GB Colorization": "GB Kolorierung",
|
||||
"auto": "automat",
|
||||
"internal": "intern",
|
||||
"Internal Palette": "Interne Palette",
|
||||
"GBC - Blue": "GBC-Blau",
|
||||
"GBC - Brown": "GBC Braun",
|
||||
"GBC - Dark Blue": "GBC Dunkelblau",
|
||||
"GBC - Dark Brown": "GBC Dunkelbraun",
|
||||
"GBC - Dark Green": "GBC Dunkelgrün",
|
||||
"GBC - Grayscale": "GBC Graustufen",
|
||||
"GBC - Green": "GBC-Grün",
|
||||
"GBC - Inverted": "GBC invertiert",
|
||||
"GBC - Orange": "GBC-Orange",
|
||||
"GBC - Red": "GBC-Rot",
|
||||
"GBC - Pastel Mix": "GBC Pastellmischung",
|
||||
"GBC - Yellow": "GBC-Gelb",
|
||||
"Frameskip": "Frameskip",
|
||||
"Solar sensor level": " Niveau Solarsensor",
|
||||
"Enable Turbo Buttons": "Turbo-Schaltflächen aktivieren",
|
||||
"Turbo Delay in frames": "Turbo Delay in Frames",
|
||||
"Auto": "Autom",
|
||||
"Aspect Ratio (Need to refresh page)": "Seitenverhältnis (Seite muss aktualisiert werden)",
|
||||
"16:9 Resolution": "16:9-Auflösung",
|
||||
"4:3 Resolution": "4:3-Auflösung",
|
||||
"Player 1 Pak": "Spieler 1 Pak",
|
||||
"Player 2 Pak": "Spieler 2 Pak",
|
||||
"Player 3 Pak": "Spieler 3 Pak",
|
||||
"Player 4 Pak": "Spieler 4 Pak",
|
||||
"none": "keine",
|
||||
"memory": "Erinnerung",
|
||||
"rumble": "Grollen",
|
||||
"Screen layout": "Bildschirmlayout",
|
||||
"right/left": "rechts/links",
|
||||
"left/right": "links/rechts",
|
||||
"bottom/top": "unten/oben",
|
||||
"top/bottom": "oben/unten",
|
||||
"top only": "nur oben",
|
||||
"bottom only": "nur unten",
|
||||
"quick switch": "schneller Wechsel",
|
||||
"hybrid/bottom": "hybrid/unten",
|
||||
"hybrid/top": "hybrid/top",
|
||||
"Screen Rotation": "Bildschirmrotation",
|
||||
"CPU speed": "CPU-Geschwindigkeit",
|
||||
"Sound output": "Tonausgabe",
|
||||
"mono": "Mono",
|
||||
"stereo": "Stereo",
|
||||
"OFF": "AUS",
|
||||
"ON": "EIN",
|
||||
"Fast Blitter": "Schneller Blitter",
|
||||
"Bios": "Bios",
|
||||
"Enable second memory card": "Zweite Speicherkarte aktivieren",
|
||||
"Pad 1 Type": "Pad 1 Typ",
|
||||
"Pad 2 Type": "Pad 2-Typ",
|
||||
"Pad 3 Type": "Pad-3-Typ",
|
||||
"Pad 4 Type": "Pad-4-Typ",
|
||||
"standard": "Standard",
|
||||
"analog": "analog",
|
||||
"negcon": "negkon",
|
||||
"Enable Vibration": "Vibration aktivieren",
|
||||
"Enable interlacing mode(s)": "Interlacing-Modus(s) aktivieren",
|
||||
"Enhanced resolution (slow)": "Erhöhte Auflösung (langsam)",
|
||||
"Enhanced resolution speed hack": "Verbesserter Auflösungsgeschwindigkeits-Hack",
|
||||
"Aspect ratio": "Seitenverhältnis",
|
||||
"CPU overclock": "CPU-Übertaktung",
|
||||
"Force Neo Geo mode": "Neo-Geo-Modus erzwingen",
|
||||
"Diagnostic Input": "Diagnoseeingang",
|
||||
"download": "herunterladen",
|
||||
"keep in browser": "im Browser bleiben",
|
||||
"Webassembly support is not detected in this browser": "Webassembly-Unterstützung wird in diesem Browser nicht erkannt",
|
||||
"Please upgrade your browser to the latest version": "Bitte aktualisieren Sie Ihren Browser auf die neueste Version",
|
||||
"Missing mame config": "Fehlende Mame-Konfiguration",
|
||||
"Stop Screen Recording": "Beenden Sie die Bildschirmaufzeichnung",
|
||||
"Start Screen Recording": "Bildschirmaufnahme starten",
|
||||
"Take Screenshot": "Screenshot machen",
|
||||
"Quick Save": "Schnellspeichern",
|
||||
"Quick Load": "Schnelles Laden"
|
||||
}
|
||||
199
static/data/localization/el-GR.json
Normal file
199
static/data/localization/el-GR.json
Normal file
@ -0,0 +1,199 @@
|
||||
{
|
||||
"i18n": {
|
||||
"restart": "Επανεκκίνηση",
|
||||
"play": "Συνέχισε",
|
||||
"pause": "Παύση",
|
||||
"played": "Παίχτηκε",
|
||||
"volume": "Ένταση",
|
||||
"mute": "Σίγαση (F9)",
|
||||
"unmute": "Αναίρεση σίγασης (F9)",
|
||||
"enterFullscreen": "Πλήρης οθόνη",
|
||||
"exitFullscreen": "Κλείσιμο πλήρους οθόνης",
|
||||
"settings": "Ρυθμίσεις",
|
||||
"saveState": "Αποθήκευση (Shift + F2)",
|
||||
"loadState": "Φόρτωση (Shift + F4)",
|
||||
"cacheManager": "Cache Manager",
|
||||
"screenRecord": "Εγγραφή οθόνης",
|
||||
"netplay": "Online παιχνίδι",
|
||||
"gamepad": "Ρυθμίσεις χειρισμού",
|
||||
"cheat": "Κωδικοί παιχνιδιού",
|
||||
"menuBack": "Πίσω στο μενού",
|
||||
"normal": "Κανονικό",
|
||||
"all": "Όλα",
|
||||
"reset": "Επαναφορά",
|
||||
"disabled": "Απενεργοποιημένο",
|
||||
"enabled": "Ενεργοποιημένο",
|
||||
"playNow": "Παίξε τώρα"
|
||||
},
|
||||
"normalOptions": {
|
||||
"shader": {
|
||||
"label": "Σκίαση",
|
||||
"options": {
|
||||
"disabled": "Απενεργοποιημένο",
|
||||
"2xScaleHQ.glslp": "Κλίμακα x2",
|
||||
"4xScaleHQ.glslp": "Κλίμακα x4",
|
||||
"crt-easymode.glslp": "Λειτουργία οθόνης παλαιού τύπου απλή",
|
||||
"crt-aperture.glslp": "Λειτουργία οθόνης παλαιού τύπου με άνοιγμα",
|
||||
"crt-geom.glslp": "Λειτουργία οθόνης παλαιού τύπου με θόλο",
|
||||
"crt-mattias.glslp": "CRT mattias"
|
||||
},
|
||||
"default": "disabled"
|
||||
},
|
||||
"virtual-gamepad": {
|
||||
"label": "Εικονικός μοχλός",
|
||||
"options": {
|
||||
"disabled": "Απενεργοποιημένο",
|
||||
"enabled": "Ενεργοποιημένο"
|
||||
},
|
||||
"default": "enabled"
|
||||
}
|
||||
},
|
||||
"Control Settings": "Ρυθμίσεις χειρισμού",
|
||||
"Player 1": "Παίκτης 1",
|
||||
"Player 2": "Παίκτης 2",
|
||||
"Player 3": "Παίκτης 3",
|
||||
"Player 4": "Παίκτης 4",
|
||||
"Update": "Ενημέρωση",
|
||||
"Reset": "Επαναφορά",
|
||||
"Clear": "Καθαρισμός",
|
||||
"Cancel": "Ακύρωση",
|
||||
"Close": "Κλείσιμο",
|
||||
"Empty": "Άδειασμα",
|
||||
"Loading": "Φορτώνει",
|
||||
"Submit": "Υποβολή",
|
||||
"Description": "Περιγραφή",
|
||||
"Code": "Κωδικός",
|
||||
"Add Cheat Code": "Προσθήκη κωδικού παιχνιδιού",
|
||||
"OK": "Εντάξει",
|
||||
"Add Cheat": "Προσθήκη κωδικού",
|
||||
"Cache Manager": "Διαχείριση μνήμης",
|
||||
"Press keyboard or gamepad": "Πατήστε στο πληκτρολόγιο ή στο μοχλό",
|
||||
"Gamepad": "Μοχλός",
|
||||
"Keyboard": "Πληκτρολόγιο",
|
||||
"Set": "Διαμόρφωση",
|
||||
"QUICK SAVE STATE": "Γρήγορη αποθήκευση",
|
||||
"QUICK LOAD STATE": "Γρήγορη φόρτωση",
|
||||
"CHANGE STATE SLOT": "Εναλλαγή θέσης αποθήκευσης",
|
||||
"INSERT COIN": "Βάλτε κέρμα",
|
||||
"Press keyboard or gamepad": "Πατήστε στο πληκτρολόγιο ή στο μοχλό",
|
||||
"Press escape (esc) to clear": "Πατήστε escape (esc) για καθαρισμό",
|
||||
"Netplay": "Online παιχνίδι",
|
||||
"Rooms": "Online παιχνίδια",
|
||||
"Players": "Παίκτες",
|
||||
"Player": "Παίκτης",
|
||||
"Room Name": "Όνομα online παιχνιδιού",
|
||||
"Password": "Κωδικός",
|
||||
"Name": "Όνομα",
|
||||
"Quit Room": "Έξοδος",
|
||||
"Create a Room": "Δημιουργία online παιχνιδιού",
|
||||
"Set Player Name": "Δημιουργία ονόματος παίκτη",
|
||||
"Player Name": "Όνομα παίκτη",
|
||||
"Room Name": "Όνομα online παιχνιδιού",
|
||||
"Create a Room": "Δημιουργία online παιχνιδιού",
|
||||
"Password (optional)": "Κωδικός (προαιρετικά)",
|
||||
"Select": "Select",
|
||||
"Start": "Start",
|
||||
"Menu": "Menu",
|
||||
"Decompress Game Core": "Αποσυμπίεση αρχείου πυρήνα παιχνιδιού",
|
||||
"Decompress Game Data": "Αποσυμπίεση αρχείων παιχνιδιού",
|
||||
"Decompress Game Patch": "Αποσυμπίεση πρόσθετων αρχείων παιχνιδιού",
|
||||
"Download Game Data": "Λήψη αρχείων παιχνιδιού",
|
||||
"Download Game Core": "Λήψη αρχείου πυρήνα παιχνιδιού",
|
||||
"Network Error": "Σφάλμα δικτύου",
|
||||
"Default": "Προκαθορισμένο",
|
||||
"default": "προκαθορισμένο",
|
||||
"Save State Location": "Διαδρομή αποθήκευσης",
|
||||
"Save State Slot": "Θυρίδα αποθήκευσης",
|
||||
"Color Palette": "Χρωματοπαλέτα",
|
||||
"No Sprite Limit": "Στοιχεία χωρίς όριο",
|
||||
"Enabled": "Ενεργοποιημένο",
|
||||
"Disabled": "Απενεργοποιημένο",
|
||||
"enabled": "ενεργοποιημένο",
|
||||
"disabled": "απενεργοποιημένο",
|
||||
"Low": "Χαμηλό",
|
||||
"High": "Υψηλό",
|
||||
"Very High": "Πολύ Υψηλό",
|
||||
"4 Players Support": "Υποστήριξη 4 παικτών",
|
||||
"Turbo Enable": "Ενεργοποίηση Turbo",
|
||||
"None": "Κανένα",
|
||||
"Both": "Και τα δύο",
|
||||
"Region": "Περιοχή",
|
||||
"SuperFX Overclock": "Υπερχρονισμός SuperFX",
|
||||
"Sound Quality": "Ποιότητα ήχου",
|
||||
"GB Colorization": "Χρωματισμός GB",
|
||||
"auto": "αυτόματο",
|
||||
"internal": "εσωτερικό",
|
||||
"Internal Palette": "Εσωτερική Παλέτα",
|
||||
"GBC - Blue": "GBC - Μπλε",
|
||||
"GBC - Brown": "GBC - Καφέ",
|
||||
"GBC - Dark Blue": "GBC - Σκούρο Μπλε",
|
||||
"GBC - Dark Brown": "GBC - Σκούρο Καφέ",
|
||||
"GBC - Dark Green": "GBC - Σκούρο Πράσινο",
|
||||
"GBC - Grayscale": "GBC - Κλίμακα του γκρι",
|
||||
"GBC - Green": "GBC - Πράσινο",
|
||||
"GBC - Inverted": "GBC - Ανεστραμμένο",
|
||||
"GBC - Orange": "GBC - Πορτοκαλί",
|
||||
"GBC - Red": "GBC - Κόκκινο",
|
||||
"GBC - Pastel Mix": "GBC - Παστέλ Μίξη",
|
||||
"GBC - Yellow": "GBC - Κίτρινο",
|
||||
"Frameskip": "Παράλειψη Καρέ",
|
||||
"Solar sensor level": "Επίπεδο ηλιακού σένσορα",
|
||||
"Enable Turbo Buttons": "Ενεργοποίηση τούρμπο κουμπιών",
|
||||
"Turbo Delay in frames": "Καθυστέρηση τούρμπο στα καρέ",
|
||||
"Auto": "Αυτόματο",
|
||||
"Aspect Ratio (Need to refresh page)": "Αναλογία Απεικόνισης (Χρειάζεται ανανέωση σελίδας)",
|
||||
"16:9 Resolution": "16:9 Ανάλυση",
|
||||
"4:3 Resolution": "4:3 Ανάλυση",
|
||||
"Player 1 Pak": "Παίκτης 1 Pak",
|
||||
"Player 2 Pak": "Παίκτης 2 Pak",
|
||||
"Player 3 Pak": "Παίκτης 3 Pak",
|
||||
"Player 4 Pak": "Παίκτης 4 Pak",
|
||||
"none": "κανένα",
|
||||
"memory": "μνήμη",
|
||||
"rumble": "rumble",
|
||||
"Screen layout": "Διάταξη οθόνης",
|
||||
"right/left": "δεξιά/αριστερά",
|
||||
"left/right": "αριστερά/δεξιά",
|
||||
"bottom/top": "κάτω/επάνω",
|
||||
"top/bottom": "επάνω/κάτω",
|
||||
"top only": "Μόνο επάνω",
|
||||
"bottom only": "Μόνο κάτω",
|
||||
"quick switch": "Γρήγορη εναλλαγή",
|
||||
"hybrid/bottom": "Υβριδικά/κάτω",
|
||||
"hybrid/top": "-Υβριδικά/επάνω",
|
||||
"Screen Rotation": "Περιστροφή οθόνης",
|
||||
"CPU speed": "Ταχύτητα επεξεργαστή",
|
||||
"Sound output": "Έξοδος ήχου",
|
||||
"mono": "μονοφωνικός",
|
||||
"stereo": "στερεοφωνικός",
|
||||
"OFF": "ΚΛΕΙΣΤΟ",
|
||||
"ON": "ΑΝΟΙΚΤΟ",
|
||||
"Fast Blitter": "Γρήγορο Μπλίτερ",
|
||||
"Bios": "Bios",
|
||||
"Enable second memory card": "Ενεργοποίηση δεύτερης κάρτας μνήμης",
|
||||
"Pad 1 Type": "Τύπος Pad 1",
|
||||
"Pad 2 Type": "Τύπος Pad 2",
|
||||
"Pad 3 Type": "Τύπος Pad 3",
|
||||
"Pad 4 Type": "Τύπος Pad 4",
|
||||
"standard": "πρότυπο",
|
||||
"analog": "αναλογικός μοχλος",
|
||||
"negcon": "negcon μοχλός",
|
||||
"Enable Vibration": "Ενεργοποίηση Δόνησης",
|
||||
"Enable interlacing mode(s)": "Ενεργοποίηση λειτουργίας διαπλοκής(s)",
|
||||
"Enhanced resolution (slow)": "Βελτιωμένη ανάλυση (αργό)",
|
||||
"Enhanced resolution speed hack": "Βελτιωμένη ανάλυση χακάρισμα ταχύτητας",
|
||||
"Aspect ratio": "Αναλογία απεικόνισης",
|
||||
"CPU overclock": "Υπερχρονισμός επεξεργαστή",
|
||||
"Force Neo Geo mode": "Επιβολή λειτουργίας Neo Geo",
|
||||
"Diagnostic Input": "Διαγωνστική εισαγωγή",
|
||||
"download": "λήψη",
|
||||
"keep in browser": "αποθήκευση στον περιηγητή",
|
||||
"Webassembly support is not detected in this browser": "Η λειτουργία Webassembly δεν υποστηρίζεται από τον τρέχον περιηγητή",
|
||||
"Please upgrade your browser to the latest version": "Παρακαλώ αναβαθμίστε τον περιηγητή σας στην τελευταία έκδοση",
|
||||
"Missing mame config": "Λείπει το αρχείο διαμόρφωσης mame",
|
||||
"Stop Screen Recording": "Στάματημα εγγραφής οθόνης",
|
||||
"Start Screen Recording": "Εκκίνηση εγγραφής οθόνης",
|
||||
"Take Screenshot": "Στιγμιότυπο οθόνης",
|
||||
"Quick Save": "Γρήγορη Αποθήκευση",
|
||||
"Quick Load": "Γρήγορη Φόρτωση"
|
||||
}
|
||||
199
static/data/localization/en.json
Normal file
199
static/data/localization/en.json
Normal file
@ -0,0 +1,199 @@
|
||||
{
|
||||
"i18n": {
|
||||
"restart": "-Restart",
|
||||
"play": "-Play",
|
||||
"pause": "-Pause",
|
||||
"played": "-Played",
|
||||
"volume": "-Volume",
|
||||
"mute": "-Mute (F9)",
|
||||
"unmute": "-Unmute (F9)",
|
||||
"enterFullscreen": "-Enter fullscreen",
|
||||
"exitFullscreen": "-Exit fullscreen",
|
||||
"settings": "-Settings",
|
||||
"saveState": "-Save State (Shift + F2)",
|
||||
"loadState": "-Load State (Shift + F4)",
|
||||
"screenRecord": "-Start Screen Recording",
|
||||
"cacheManager": "-Cache Manager",
|
||||
"netplay": "-Netplay",
|
||||
"gamepad": "-Control Settings",
|
||||
"cheat": "-Cheats",
|
||||
"menuBack": "-Go back to previous menu",
|
||||
"normal": "-Normal",
|
||||
"all": "-All",
|
||||
"reset": "-Reset",
|
||||
"disabled": "-Disabled",
|
||||
"enabled": "-Enabled",
|
||||
"playNow": "-Play Now"
|
||||
},
|
||||
"normalOptions": {
|
||||
"shader": {
|
||||
"label": "-Shader",
|
||||
"options": {
|
||||
"disabled": "-Disabled",
|
||||
"2xScaleHQ.glslp": "-2xScaleHQ",
|
||||
"4xScaleHQ.glslp": "-4xScaleHQ",
|
||||
"crt-easymode.glslp": "-CRT easymode",
|
||||
"crt-aperture.glslp": "-CRT aperture",
|
||||
"crt-geom.glslp": "-CRT geom",
|
||||
"crt-mattias.glslp": "-CRT mattias"
|
||||
},
|
||||
"default": "disabled"
|
||||
},
|
||||
"virtual-gamepad": {
|
||||
"label": "-Virtual Gamepad",
|
||||
"options": {
|
||||
"disabled": "-Disabled",
|
||||
"enabled": "-Enabled"
|
||||
},
|
||||
"default": "enabled"
|
||||
}
|
||||
},
|
||||
"Control Settings": "-Control Settings",
|
||||
"Player 1": "-Player 1",
|
||||
"Player 2": "-Player 2",
|
||||
"Player 3": "-Player 3",
|
||||
"Player 4": "-Player 4",
|
||||
"Update": "-Update",
|
||||
"Reset": "-Reset",
|
||||
"Clear": "-Clear",
|
||||
"Cancel": "-Cancel",
|
||||
"Close": "-Close",
|
||||
"Empty": "-Empty",
|
||||
"Loading": "-Loading",
|
||||
"Submit": "-Submit",
|
||||
"Description": "-Description",
|
||||
"Code": "-Code",
|
||||
"Add Cheat Code": "-Add Cheat Code",
|
||||
"OK": "-OK",
|
||||
"Add Cheat": "-Add Cheat",
|
||||
"Cache Manager": "-Cache Manager",
|
||||
"Press keyboard or gamepad": "-Press keyboard or gamepad",
|
||||
"Gamepad": "-Gamepad",
|
||||
"Keyboard": "-Keyboard",
|
||||
"Set": "-Set",
|
||||
"QUICK SAVE STATE": "-QUICK SAVE STATE",
|
||||
"QUICK LOAD STATE": "-QUICK LOAD STATE",
|
||||
"CHANGE STATE SLOT": "-CHANGE STATE SLOT",
|
||||
"INSERT COIN": "-INSERT COIN",
|
||||
"Press keyboard or gamepad": "-Press keyboard or gamepad",
|
||||
"Press escape (esc) to clear": "-Press escape (esc) to clear",
|
||||
"Netplay": "-Netplay",
|
||||
"Rooms": "-Rooms",
|
||||
"Players": "-Players",
|
||||
"Player": "-Player",
|
||||
"Room Name": "-Room Name",
|
||||
"Password": "-Password",
|
||||
"Name": "-Name",
|
||||
"Quit Room": "-Quit Room",
|
||||
"Create a Room": "-Create a Room",
|
||||
"Set Player Name": "-Set Player Name",
|
||||
"Player Name": "-Player Name",
|
||||
"Room Name": "-Room Name",
|
||||
"Create a Room": "-Create a Room",
|
||||
"Password (optional)": "-Password (optional)",
|
||||
"Select": "-Select",
|
||||
"Start": "-Start",
|
||||
"Menu": "-Menu",
|
||||
"Decompress Game Core": "-Decompress Game Core",
|
||||
"Decompress Game Data": "-Decompress Game Data",
|
||||
"Decompress Game Patch": "-Decompress Game Patch",
|
||||
"Download Game Data": "-Download Game Data",
|
||||
"Download Game Core": "-Download Game Core",
|
||||
"Network Error": "-Network Error",
|
||||
"Default": "-Default",
|
||||
"default": "-default",
|
||||
"Save State Location": "-Save State Location",
|
||||
"Save State Slot": "-Save State Slot",
|
||||
"Color Palette": "-Color Palette",
|
||||
"No Sprite Limit": "-No Sprite Limit",
|
||||
"Enabled": "-Enabled",
|
||||
"Disabled": "-Disabled",
|
||||
"enabled": "-enabled",
|
||||
"disabled": "-disabled",
|
||||
"Low": "-Low",
|
||||
"High": "-High",
|
||||
"Very High": "-Very High",
|
||||
"4 Players Support": "-4 Players Support",
|
||||
"Turbo Enable": "-Turbo Enable",
|
||||
"None": "-None",
|
||||
"Both": "-Both",
|
||||
"Region": "-Region",
|
||||
"SuperFX Overclock": "-SuperFX Overclock",
|
||||
"Sound Quality": "-Sound Quality",
|
||||
"GB Colorization": "-GB Colorization",
|
||||
"auto": "-auto",
|
||||
"internal": "-internal",
|
||||
"Internal Palette": "-Internal Palette",
|
||||
"GBC - Blue": "-GBC - Blue",
|
||||
"GBC - Brown": "-GBC - Brown",
|
||||
"GBC - Dark Blue": "-GBC - Dark Blue",
|
||||
"GBC - Dark Brown": "-GBC - Dark Brown",
|
||||
"GBC - Dark Green": "-GBC - Dark Green",
|
||||
"GBC - Grayscale": "-GBC - Grayscale",
|
||||
"GBC - Green": "-GBC - Green",
|
||||
"GBC - Inverted": "-GBC - Inverted",
|
||||
"GBC - Orange": "-GBC - Orange",
|
||||
"GBC - Red": "-GBC - Red",
|
||||
"GBC - Pastel Mix": "-GBC - Pastel Mix",
|
||||
"GBC - Yellow": "-GBC - Yellow",
|
||||
"Frameskip": "-Frameskip",
|
||||
"Solar sensor level": "-Solar sensor level",
|
||||
"Enable Turbo Buttons": "-Enable Turbo Buttons",
|
||||
"Turbo Delay in frames": "-Turbo Delay in frames",
|
||||
"Auto": "-Auto",
|
||||
"Aspect Ratio (Need to refresh page)": "-Aspect Ratio (Need to refresh page)",
|
||||
"16:9 Resolution": "-16:9 Resolution",
|
||||
"4:3 Resolution": "-4:3 Resolution",
|
||||
"Player 1 Pak": "-Player 1 Pak",
|
||||
"Player 2 Pak": "-Player 2 Pak",
|
||||
"Player 3 Pak": "-Player 3 Pak",
|
||||
"Player 4 Pak": "-Player 4 Pak",
|
||||
"none": "-none",
|
||||
"memory": "-memory",
|
||||
"rumble": "-rumble",
|
||||
"Screen layout": "-Screen layout",
|
||||
"right/left": "-right/left",
|
||||
"left/right": "-left/right",
|
||||
"bottom/top": "-bottom/top",
|
||||
"top/bottom": "-top/bottom",
|
||||
"top only": "-top only",
|
||||
"bottom only": "-bottom only",
|
||||
"quick switch": "-quick switch",
|
||||
"hybrid/bottom": "-hybrid/bottom",
|
||||
"hybrid/top": "-hybrid/top",
|
||||
"Screen Rotation": "-Screen Rotation",
|
||||
"CPU speed": "-CPU speed",
|
||||
"Sound output": "-Sound output",
|
||||
"mono": "-mono",
|
||||
"stereo": "-stereo",
|
||||
"OFF": "-OFF",
|
||||
"ON": "-ON",
|
||||
"Fast Blitter": "-Fast Blitter",
|
||||
"Bios": "-Bios",
|
||||
"Enable second memory card": "-Enable second memory card",
|
||||
"Pad 1 Type": "-Pad 1 Type",
|
||||
"Pad 2 Type": "-Pad 2 Type",
|
||||
"Pad 3 Type": "-Pad 3 Type",
|
||||
"Pad 4 Type": "-Pad 4 Type",
|
||||
"standard": "-standard",
|
||||
"analog": "-analog",
|
||||
"negcon": "-negcon",
|
||||
"Enable Vibration": "-Enable Vibration",
|
||||
"Enable interlacing mode(s)": "-Enable interlacing mode(s)",
|
||||
"Enhanced resolution (slow)": "-Enhanced resolution (slow)",
|
||||
"Enhanced resolution speed hack": "-Enhanced resolution speed hack",
|
||||
"Aspect ratio": "-Aspect ratio",
|
||||
"CPU overclock": "-CPU overclock",
|
||||
"Force Neo Geo mode": "-Force Neo Geo mode",
|
||||
"Diagnostic Input": "-Diagnostic Input",
|
||||
"download": "-download",
|
||||
"keep in browser": "-keep in browser",
|
||||
"Webassembly support is not detected in this browser": "-Webassembly support is not detected in this browser",
|
||||
"Please upgrade your browser to the latest version": "-Please upgrade your browser to the latest version",
|
||||
"Missing mame config": "-Missing mame config",
|
||||
"Stop Screen Recording": "-Stop Screen Recording",
|
||||
"Start Screen Recording": "-Start Screen Recording",
|
||||
"Take Screenshot": "-Take Screenshot",
|
||||
"Quick Save": "-Quick Save",
|
||||
"Quick Load": "-Quick Load"
|
||||
}
|
||||
196
static/data/localization/es-ES.json
Normal file
196
static/data/localization/es-ES.json
Normal file
@ -0,0 +1,196 @@
|
||||
{
|
||||
"i18n": {
|
||||
"restart": "Restart",
|
||||
"play": "Jugar",
|
||||
"pause": "Pausa",
|
||||
"played": "Jugó",
|
||||
"volume": "Volumen",
|
||||
"mute": "Silencio (F9)",
|
||||
"unmute": "Activar (F9)",
|
||||
"enterFullscreen": "Pantalla completa",
|
||||
"exitFullscreen": "Salir de pantalla completa",
|
||||
"settings": "Ajustes",
|
||||
"saveState": "Guardar Estado (Shift + F2)",
|
||||
"loadState": "Cargar Estado (Shift + F4)",
|
||||
"cacheManager": "Cache Manager",
|
||||
"screenRecord": "Comenzar gravacion de pantalla",
|
||||
"netplay": "Netplay",
|
||||
"gamepad": "Ajustes de control",
|
||||
"cheat": "Trampas",
|
||||
"menuBack": "Volver al menú anterior",
|
||||
"normal": "Normal",
|
||||
"all": "Todo",
|
||||
"reset": "Reset",
|
||||
"disabled": "Desactivar",
|
||||
"enabled": "Activar",
|
||||
"playNow": "Jugar ahora"
|
||||
},
|
||||
"normalOptions": {
|
||||
"shader": {
|
||||
"label": "Sombreador",
|
||||
"options": {
|
||||
"disabled": "Discapacitado",
|
||||
"2xScaleHQ.glslp": "2xScaleHQ",
|
||||
"4xScaleHQ.glslp": "4xScaleHQ",
|
||||
"crt-easymode.glslp": "CRT easymode",
|
||||
"crt-aperture.glslp": "CRT aperture",
|
||||
"crt-geom.glslp": "CRT geom",
|
||||
"crt-mattias.glslp": "CRT mattias"
|
||||
},
|
||||
"default": "disabled"
|
||||
},
|
||||
"virtual-gamepad": {
|
||||
"label": "Controles Virtuales",
|
||||
"options": {
|
||||
"disabled": "Discapacitado",
|
||||
"enabled": "Activado"
|
||||
},
|
||||
"default": "enabled"
|
||||
}
|
||||
},
|
||||
"Control Settings": "Ajustes de control",
|
||||
"Player 1": "Jugador 1",
|
||||
"Player 2": "Jugador 2",
|
||||
"Player 3": "Jugador 3",
|
||||
"Player 4": "Jugador 4",
|
||||
"Update": "Actualizar",
|
||||
"Reset": "Reiniciar",
|
||||
"Clear": "Limpiar",
|
||||
"Cancel": "Cancelar",
|
||||
"Close": "Cerca",
|
||||
"Empty": "Vacío",
|
||||
"Loading": "Cargando",
|
||||
"Submit": "Mandar",
|
||||
"Description": "Descripción",
|
||||
"Code": "Código",
|
||||
"Add Cheat Code": "Agregar código de Trampa",
|
||||
"OK": "OK",
|
||||
"Add Cheat": "Agregar Trampa",
|
||||
"Cache Manager": "Administrador de Cache",
|
||||
"Press keyboard or gamepad": "Presione el teclado o el controlador",
|
||||
"Gamepad": "Control",
|
||||
"Keyboard": "Teclado",
|
||||
"Set": "Definir",
|
||||
"QUICK SAVE STATE": "GUARDAR ESTADO RÁPIDO",
|
||||
"QUICK LOAD STATE": "CARGA ESTADO RÁPIDO",
|
||||
"CHANGE STATE SLOT": "CAMBIAR SLOT DEL ESTADO",
|
||||
"INSERT COIN": "INSERTE MONEDA",
|
||||
"Press escape (esc) to clear": "Pressione (esc) para limpiar",
|
||||
"Netplay": "Netplay",
|
||||
"Rooms": "Salas",
|
||||
"Players": "Jugadores",
|
||||
"Player": "Jugador",
|
||||
"Room Name": "Nombre de la Sala",
|
||||
"Password": "Contraseña",
|
||||
"Name": "Nombre",
|
||||
"Quit Room": "Dejar Sala",
|
||||
"Create a Room": "Crear una Sala",
|
||||
"Set Player Name": "Configurar el nombre del jugador",
|
||||
"Player Name": "Nombre del Jugador",
|
||||
"Password (optional)": "Contraseña (opcional)",
|
||||
"Select": "Select",
|
||||
"Start": "Start",
|
||||
"Menu": "Menu",
|
||||
"Decompress Game Core": "Decompress Game Core",
|
||||
"Decompress Game Data": "Decompress Game Data",
|
||||
"Decompress Game Patch": "Decompress Game Patch",
|
||||
"Download Game Data": "Download Game Data",
|
||||
"Download Game Core": "Download Game Core",
|
||||
"Network Error": "Network Error",
|
||||
"Default": "Estándar",
|
||||
"default": "estándar",
|
||||
"Save State Location": "Guardar Estado Lugar",
|
||||
"Save State Slot": "Cargar Slot del Lugar",
|
||||
"Color Palette": "Paleta de Colores",
|
||||
"No Sprite Limit": "Sin límite de Sprite",
|
||||
"Enabled": "Activado",
|
||||
"Disabled": "Discapacitado",
|
||||
"enabled": "activado",
|
||||
"disabled": "discapacitado",
|
||||
"Low": "Bajo",
|
||||
"High": "Alto",
|
||||
"Very High": "Muy Alto",
|
||||
"4 Players Support": "Soporte para 4 jugadores",
|
||||
"Turbo Enable": "Activar Turbo",
|
||||
"None": "Ninguna",
|
||||
"Both": "Ambos",
|
||||
"Region": "Región",
|
||||
"SuperFX Overclock": "SuperFX Overclock",
|
||||
"Sound Quality": "Calidad de Sonido",
|
||||
"GB Colorization": "GB Coloración",
|
||||
"auto": "auto",
|
||||
"internal": "interno",
|
||||
"Internal Palette": "Paleta Interna",
|
||||
"GBC - Blue": "GBC - Azul",
|
||||
"GBC - Brown": "GBC - Marrón",
|
||||
"GBC - Dark Blue": "GBC - Azul Oscuro",
|
||||
"GBC - Dark Brown": "GBC - Marrón Oscuro",
|
||||
"GBC - Dark Green": "GBC - Verde Oscuro",
|
||||
"GBC - Grayscale": "GBC - Gris",
|
||||
"GBC - Green": "GBC - Verde",
|
||||
"GBC - Inverted": "GBC - Invertido",
|
||||
"GBC - Orange": "GBC - Naranja",
|
||||
"GBC - Red": "GBC - Rojo",
|
||||
"GBC - Pastel Mix": "GBC - Pastel Mix",
|
||||
"GBC - Yellow": "GBC - Amarillo",
|
||||
"Frameskip": "Frameskip",
|
||||
"Solar sensor level": "Solar sensor level",
|
||||
"Enable Turbo Buttons": "Permitir Botones Turbo",
|
||||
"Turbo Delay in frames": "Turbo Delay en frames",
|
||||
"Auto": "Auto",
|
||||
"Aspect Ratio (Need to refresh page)": "Aspect Ratio (Necesita actualizar la página)",
|
||||
"16:9 Resolution": "16:9 Resolución",
|
||||
"4:3 Resolution": "4:3 Resolución",
|
||||
"Player 1 Pak": "Jugador 1 Pak",
|
||||
"Player 2 Pak": "Jugador 2 Pak",
|
||||
"Player 3 Pak": "Jugador 3 Pak",
|
||||
"Player 4 Pak": "Jugador 4 Pak",
|
||||
"none": "ninguna",
|
||||
"memory": "memoria",
|
||||
"rumble": "rumble",
|
||||
"Screen layout": "Diseño de Pantalla",
|
||||
"right/left": "directo/izquierda",
|
||||
"left/right": "izquierda/directo",
|
||||
"bottom/top": "fondo/principal",
|
||||
"top/bottom": "principal/fondo",
|
||||
"top only": "principal algo",
|
||||
"bottom only": "fondo algo",
|
||||
"quick switch": "troca rapida",
|
||||
"hybrid/bottom": "híbrido/fondo",
|
||||
"hybrid/top": "híbrido/principal",
|
||||
"Screen Rotation": "Rotación de tela",
|
||||
"CPU speed": "Velocidad de CPU",
|
||||
"Sound output": "Salida de Sonido",
|
||||
"mono": "mono",
|
||||
"stereo": "stereo",
|
||||
"OFF": "Apagado",
|
||||
"ON": "Encendido",
|
||||
"Fast Blitter": "Fast Blitter",
|
||||
"Bios": "Bios",
|
||||
"Enable second memory card": "Habilitar segunda tarjeta de memoria",
|
||||
"Pad 1 Type": "Pad Escribe 1",
|
||||
"Pad 2 Type": "Pad Escribe 2",
|
||||
"Pad 3 Type": "Pad Escribe 3",
|
||||
"Pad 4 Type": "Pad Escribe 4",
|
||||
"standard": "estándar",
|
||||
"analog": "cosa análoga",
|
||||
"negcon": "negcon",
|
||||
"Enable Vibration": "Habilitar Vibración",
|
||||
"Enable interlacing mode(s)": "Activar modo entrelazado(s)",
|
||||
"Enhanced resolution (slow)": "Resolución mejorada (lento)",
|
||||
"Enhanced resolution speed hack": "Velocidad de reproducción",
|
||||
"Aspect ratio": "Aspect ratio",
|
||||
"CPU overclock": "CPU overclock",
|
||||
"Force Neo Geo mode": "Force Neo Geo mode",
|
||||
"Diagnostic Input": "Diagnostic Input",
|
||||
"download": "download",
|
||||
"keep in browser": "mantener en el navegador",
|
||||
"Webassembly support is not detected in this browser": "Suporte Webassembly no detectado en este navegador",
|
||||
"Please upgrade your browser to the latest version": "Actualice su navegador a la última versión.",
|
||||
"Missing mame config": "Falta la configuración de mame",
|
||||
"Stop Screen Recording": "Detener Grabación de Pantalla",
|
||||
"Start Screen Recording": "Começar Grabación de Pantalla",
|
||||
"Take Screenshot": "Tomar Impresión",
|
||||
"Quick Save": "Ahorrar rápido",
|
||||
"Quick Load": "Cargar rápido"
|
||||
}
|
||||
196
static/data/localization/hi-HI.json
Normal file
196
static/data/localization/hi-HI.json
Normal file
@ -0,0 +1,196 @@
|
||||
{
|
||||
"i18n": {
|
||||
"restart": "पुनर्प्रारंभ करें",
|
||||
"play": "चलाएं",
|
||||
"pause": "रोकें",
|
||||
"played": "खेला",
|
||||
"volume": "वॉल्यूम",
|
||||
"mute": "म्यूट (F9)",
|
||||
"unmute": "अनम्यूट (F9)",
|
||||
"enterFullscreen": "पूर्ण स्क्रीन दर्ज करें",
|
||||
"exitFullscreen": "फुलस्क्रीन से बाहर निकलें",
|
||||
"settings": "सेटिंग्स",
|
||||
"saveState": "राज्य बचाओ (Shift + F2)",
|
||||
"loadState": "लोड स्टेट (Shift + F4)",
|
||||
"cacheManager": "Cache Manager",
|
||||
"screenRecord": "स्क्रीन रिकॉर्डिंग शुरू करें",
|
||||
"netplay": "नेटप्ले",
|
||||
"gamepad": "नियंत्रण सेटिंग्स",
|
||||
"cheat": "धोखा",
|
||||
"menuBack": "पिछले मेनू पर वापस जाएं",
|
||||
"normal": "सामान्य",
|
||||
"all": "ऑल",
|
||||
"reset": "रीसेट",
|
||||
"disabled": "अक्षम",
|
||||
"enabled": "सक्षम",
|
||||
"playNow": "अभी खेलें"
|
||||
},
|
||||
"normalOptions": {
|
||||
"shader": {
|
||||
"label": "शदर",
|
||||
"options": {
|
||||
"disabled": "अक्षम",
|
||||
"2xScaleHQ.glslp": "2xScaleHQ",
|
||||
"4xScaleHQ.glslp": "4xScaleHQ",
|
||||
"crt-easymode.glslp": "सीआरटी ईज़ीमोड",
|
||||
"crt-aperture.glslp": "सीआरटी एपर्चर",
|
||||
"crt-geom.glslp": "सीआरटी जियोम",
|
||||
"crt-mattias.glslp": "CRT mattias"
|
||||
},
|
||||
"default": "disabled"
|
||||
},
|
||||
"virtual-gamepad": {
|
||||
"label": "वर्चुअल गेमपैड",
|
||||
"options": {
|
||||
"disabled": "अक्षम",
|
||||
"enabled": "सक्षम"
|
||||
},
|
||||
"default": "enabled"
|
||||
}
|
||||
},
|
||||
"Control Settings": "नियंत्रण सेटिंग्स",
|
||||
"Player 1": "खिलाड़ी 1",
|
||||
"Player 2": "खिलाड़ी 2",
|
||||
"Player 3": "खिलाड़ी 3",
|
||||
"Player 4": "खिलाड़ी 4",
|
||||
"Update": "अपडेट",
|
||||
"Reset": "रीसेट",
|
||||
"Clear": "साफ़ करें",
|
||||
"Cancel": "रद्द करें",
|
||||
"Close": "बंद",
|
||||
"Empty": "खाली",
|
||||
"Loading": "लोड हो रहा है",
|
||||
"Submit": "सबमिट",
|
||||
"Description": "विवरण",
|
||||
"Code": "कोड",
|
||||
"Add Cheat Code": "चीट कोड जोड़ें",
|
||||
"OK": "ठीक है",
|
||||
"Add Cheat": "धोखा जोड़ें",
|
||||
"Cache Manager": "कैश मैनेजर",
|
||||
"Press keyboard or gamepad": "कीबोर्ड या गेमपैड दबाएं",
|
||||
"Gamepad": "गेमपैड",
|
||||
"Keyboard": "कीबोर्ड",
|
||||
"Set": "सेट",
|
||||
"QUICK SAVE STATE": "क्विक सेव स्टेट",
|
||||
"QUICK LOAD STATE": "त्वरित लोड स्थिति",
|
||||
"CHANGE STATE SLOT": "राज्य स्लॉट बदलें",
|
||||
"INSERT COIN": "इन्सर्ट कॉइन",
|
||||
"Press escape (esc) to clear": "साफ़ करने के लिए एस्केप (esc) दबाएं",
|
||||
"Netplay": "नेटप्ले",
|
||||
"Rooms": "कमरे",
|
||||
"Players": "खिलाड़ी",
|
||||
"Player": "खिलाड़ी",
|
||||
"Room Name": "कमरे का नाम",
|
||||
"Password": "पासवर्ड",
|
||||
"Name": "नाम",
|
||||
"Quit Room": "छोड़ो कमरा",
|
||||
"Create a Room": "एक कमरा बनाएं",
|
||||
"Set Player Name": "सेट प्लेयर का नाम",
|
||||
"Player Name": "खिलाड़ी का नाम",
|
||||
"Password (optional)": "पासवर्ड (वैकल्पिक)",
|
||||
"Select": "चुनें",
|
||||
"Start": "स्टार्ट",
|
||||
"Menu": "मेनू",
|
||||
"Decompress Game Core": "डिकंप्रेस गेम कोर",
|
||||
"Decompress Game Data": "डिकंप्रेस गेम डेटा",
|
||||
"Decompress Game Patch": "डीकंप्रेस गेम पैच",
|
||||
"Download Game Data": "गेम डेटा डाउनलोड करें",
|
||||
"Download Game Core": "डाउनलोड गेम कोर",
|
||||
"Network Error": "नेटवर्क त्रुटि",
|
||||
"Default": "डिफ़ॉल्ट",
|
||||
"default": "डिफ़ॉल्ट",
|
||||
"Save State Location": "राज्य स्थान सहेजें",
|
||||
"Save State Slot": "सेव स्टेट स्लॉट",
|
||||
"Color Palette": "रंग पैलेट",
|
||||
"No Sprite Limit": "कोई स्प्राइट सीमा नहीं",
|
||||
"Enabled": "सक्षम",
|
||||
"Disabled": "अक्षम",
|
||||
"enabled": "सक्षम",
|
||||
"disabled": "अक्षम",
|
||||
"Low": "लो",
|
||||
"High": "हाई",
|
||||
"Very High": "वेरी हाई",
|
||||
"4 Players Support": "4 खिलाड़ी समर्थन",
|
||||
"Turbo Enable": "टर्बो सक्षम",
|
||||
"None": "कोई नहीं",
|
||||
"Both": "दोनों",
|
||||
"Region": "क्षेत्र",
|
||||
"SuperFX Overclock": "सुपरएफएक्स ओवरक्लॉक",
|
||||
"Sound Quality": "ध्वनि गुणवत्ता",
|
||||
"GB Colorization": "जीबी रंगीकरण",
|
||||
"auto": "ऑटो",
|
||||
"internal": "आंतरिक",
|
||||
"Internal Palette": "आंतरिक पैलेट",
|
||||
"GBC - Blue": "जीबीसी ब्लू",
|
||||
"GBC - Brown": "जीबीसी ब्राउन",
|
||||
"GBC - Dark Blue": "जीबीसी डार्क ब्लू",
|
||||
"GBC - Dark Brown": "जीबीसी डार्क ब्राउन",
|
||||
"GBC - Dark Green": "जीबीसी डार्क ग्रीन",
|
||||
"GBC - Grayscale": "जीबीसी ग्रेस्केल",
|
||||
"GBC - Green": "जीबीसी ग्रीन",
|
||||
"GBC - Inverted": "जीबीसी उलटा",
|
||||
"GBC - Orange": "जीबीसी ऑरेंज",
|
||||
"GBC - Red": "जीबीसी रेड",
|
||||
"GBC - Pastel Mix": "जीबीसी पेस्टल मिक्स",
|
||||
"GBC - Yellow": "जीबीसी पीला",
|
||||
"Frameskip": "फ्रेमस्किप",
|
||||
"Solar sensor level": "सौर सेंसर स्तर",
|
||||
"Enable Turbo Buttons": "टर्बो बटन सक्षम करें",
|
||||
"Turbo Delay in frames": "फ्रेम में टर्बो विलंब",
|
||||
"Auto": "ऑटो",
|
||||
"Aspect Ratio (Need to refresh page)": "पहलू अनुपात (पेज को रीफ्रेश करने की आवश्यकता है)",
|
||||
"16:9 Resolution": "16:9 संकल्प",
|
||||
"4:3 Resolution": "4:3 संकल्प",
|
||||
"Player 1 Pak": "खिलाड़ी 1 पाक",
|
||||
"Player 2 Pak": "खिलाड़ी 2 पाक",
|
||||
"Player 3 Pak": "खिलाड़ी 3 पाक",
|
||||
"Player 4 Pak": "खिलाड़ी 4 पाक",
|
||||
"none": "कोई नहीं",
|
||||
"memory": "स्मृति",
|
||||
"rumble": "रंबल",
|
||||
"Screen layout": "स्क्रीन लेआउट",
|
||||
"right/left": "दाएं/बाएं",
|
||||
"left/right": "बाएं/दाएं",
|
||||
"bottom/top": "नीचे/ऊपर",
|
||||
"top/bottom": "ऊपर/नीचे",
|
||||
"top only": "केवल शीर्ष",
|
||||
"bottom only": "केवल नीचे",
|
||||
"quick switch": "त्वरित स्विच",
|
||||
"hybrid/bottom": "हाइब्रिड/बॉटम",
|
||||
"hybrid/top": "हाइब्रिड/टॉप",
|
||||
"Screen Rotation": "स्क्रीन रोटेशन",
|
||||
"CPU speed": "सीपीयू स्पीड",
|
||||
"Sound output": "ध्वनि आउटपुट",
|
||||
"mono": "मोनो",
|
||||
"stereo": "स्टीरियो",
|
||||
"OFF": "ऑफ",
|
||||
"ON": "ओएन",
|
||||
"Fast Blitter": "फास्ट ब्लिटर",
|
||||
"Bios": "बायोस",
|
||||
"Enable second memory card": "दूसरा मेमोरी कार्ड सक्षम करें",
|
||||
"Pad 1 Type": "पैड 1 प्रकार",
|
||||
"Pad 2 Type": "पैड 2 प्रकार",
|
||||
"Pad 3 Type": "पैड 3 प्रकार",
|
||||
"Pad 4 Type": "पैड 4 प्रकार",
|
||||
"standard": "मानक",
|
||||
"analog": "एनालॉग",
|
||||
"negcon": "नेगकॉन",
|
||||
"Enable Vibration": "कंपन सक्षम करें",
|
||||
"Enable interlacing mode(s)": "इंटरलेसिंग मोड सक्षम करें",
|
||||
"Enhanced resolution (slow)": "उन्नत संकल्प (धीमा)",
|
||||
"Enhanced resolution speed hack": "एन्हांस्ड रेजोल्यूशन स्पीड हैक",
|
||||
"Aspect ratio": "पहलू अनुपात",
|
||||
"CPU overclock": "सीपीयू ओवरक्लॉक",
|
||||
"Force Neo Geo mode": "फोर्स नियो जियो मोड",
|
||||
"Diagnostic Input": "नैदानिक इनपुट",
|
||||
"download": "डाउनलोड",
|
||||
"keep in browser": "ब्राउज़र में रखें",
|
||||
"Webassembly support is not detected in this browser": "इस ब्राउज़र में Webassembly समर्थन का पता नहीं चला है",
|
||||
"Please upgrade your browser to the latest version": "कृपया अपने ब्राउज़र को नवीनतम संस्करण में अपग्रेड करें",
|
||||
"Missing mame config": "मिसिंग मैम कॉन्फिग",
|
||||
"Stop Screen Recording": "स्क्रीन रिकॉर्डिंग बंद करो",
|
||||
"Start Screen Recording": "स्क्रीन रिकॉर्डिंग शुरू करें",
|
||||
"Take Screenshot": "स्क्रीनशॉट लें",
|
||||
"Quick Save": "क्विक सेव",
|
||||
"Quick Load": "त्वरित लोड"
|
||||
}
|
||||
196
static/data/localization/ja-JA.json
Normal file
196
static/data/localization/ja-JA.json
Normal file
@ -0,0 +1,196 @@
|
||||
{
|
||||
"i18n": {
|
||||
"restart": "再起動",
|
||||
"play": "再生",
|
||||
"pause": "一時停止",
|
||||
"played": "再生",
|
||||
"volume": "ボリューム",
|
||||
"mute": "ミュート(F9)",
|
||||
"unmute": "ミュート解除(F9)",
|
||||
"enterFullscreen": "フルスクリーンに入る",
|
||||
"exitFullscreen": "フルスクリーンで終了",
|
||||
"settings": "設定",
|
||||
"saveState": "状態の保存(Shift + F2)",
|
||||
"loadState": "ロード状態(Shift + F4)",
|
||||
"cacheManager": "Cache Manager",
|
||||
"screenRecord": "画面記録を開始します",
|
||||
"netplay": "ネットプレイ",
|
||||
"gamepad": "制御設定",
|
||||
"cheat": "チート",
|
||||
"menuBack": "前のメニューに戻る",
|
||||
"normal": "通常",
|
||||
"all": "すべて",
|
||||
"reset": "リセット",
|
||||
"disabled": "無効",
|
||||
"enabled": "有効",
|
||||
"playNow": "今すぐプレイ"
|
||||
},
|
||||
"normalOptions": {
|
||||
"shader": {
|
||||
"label": "シェーダー",
|
||||
"options": {
|
||||
"disabled": "無効",
|
||||
"2xScaleHQ.glslp": " 2xScaleHQ",
|
||||
"4xScaleHQ.glslp": " 4xScaleHQ",
|
||||
"crt-easymode.glslp": " CRTイージーモード",
|
||||
"crt-aperture.glslp": " CRTアパーチャ",
|
||||
"crt-geom.glslp": " CRTジオメトリ",
|
||||
"crt-mattias.glslp": "CRT mattias"
|
||||
},
|
||||
"default": "disabled"
|
||||
},
|
||||
"virtual-gamepad": {
|
||||
"label": "仮想ゲームパッド",
|
||||
"options": {
|
||||
"disabled": "無効",
|
||||
"enabled": "有効"
|
||||
},
|
||||
"default": "enabled"
|
||||
}
|
||||
},
|
||||
"Control Settings": "制御設定",
|
||||
"Player 1": "プレーヤー1",
|
||||
"Player 2": "プレーヤー2",
|
||||
"Player 3": "プレーヤー3",
|
||||
"Player 4": "プレーヤー4",
|
||||
"Update": "更新",
|
||||
"Reset": "リセット",
|
||||
"Clear": "クリア",
|
||||
"Cancel": "キャンセル",
|
||||
"Close": "閉じる",
|
||||
"Empty": "空",
|
||||
"Loading": "読み込み中",
|
||||
"Submit": "送信する",
|
||||
"Description": "説明",
|
||||
"Code": "コード",
|
||||
"Add Cheat Code": "チートコードを追加",
|
||||
"OK": " OK",
|
||||
"Add Cheat": "チートを追加",
|
||||
"Cache Manager": "キャッシュマネージャー",
|
||||
"Press keyboard or gamepad": "キーボードまたはゲームパッドを押す",
|
||||
"Gamepad": "ゲームパッド",
|
||||
"Keyboard": "キーボード",
|
||||
"Set": "セット",
|
||||
"QUICK SAVE STATE": "クイック保存状態",
|
||||
"QUICK LOAD STATE": "クイックロード状態",
|
||||
"CHANGE STATE SLOT": "状態スロットの変更",
|
||||
"INSERT COIN": "コインを挿入",
|
||||
"Press escape (esc) to clear": "エスケープ(esc)を押してクリアします",
|
||||
"Netplay": "ネットプレイ",
|
||||
"Rooms": "部屋",
|
||||
"Players": "プレイヤー",
|
||||
"Player": "プレーヤー",
|
||||
"Room Name": "部屋名",
|
||||
"Password": "パスワード",
|
||||
"Name": "名前",
|
||||
"Quit Room": "終了室",
|
||||
"Create a Room": "部屋を作成する",
|
||||
"Set Player Name": "プレイヤー名を設定する",
|
||||
"Player Name": "プレイヤー名",
|
||||
"Password (optional)": "パスワード(オプション)",
|
||||
"Select": "選択",
|
||||
"Start": "開始",
|
||||
"Menu": "メニュー",
|
||||
"Decompress Game Core": "ゲームコアを解凍します",
|
||||
"Decompress Game Data": "ゲームデータの解凍",
|
||||
"Decompress Game Patch": "ゲームパッチの解凍",
|
||||
"Download Game Data": "ゲームデータをダウンロードする",
|
||||
"Download Game Core": "ゲームコアをダウンロード",
|
||||
"Network Error": "ネットワークエラー",
|
||||
"Default": "デフォルト",
|
||||
"default": "デフォルト",
|
||||
"Save State Location": "州の場所を保存",
|
||||
"Save State Slot": "状態スロットを保存",
|
||||
"Color Palette": "カラーパレット",
|
||||
"No Sprite Limit": "スプライト制限なし",
|
||||
"Enabled": "有効",
|
||||
"Disabled": "無効",
|
||||
"enabled": "有効",
|
||||
"disabled": "無効",
|
||||
"Low": "低",
|
||||
"High": "高",
|
||||
"Very High": "非常に高い",
|
||||
"4 Players Support": " 4人のプレイヤーのサポート",
|
||||
"Turbo Enable": "ターボイネーブル",
|
||||
"None": "なし",
|
||||
"Both": "両方",
|
||||
"Region": "地域",
|
||||
"SuperFX Overclock": " SuperFXオーバークロック",
|
||||
"Sound Quality": "音質",
|
||||
"GB Colorization": " GBカラー化",
|
||||
"auto": "自動",
|
||||
"internal": "内部",
|
||||
"Internal Palette": "内部パレット",
|
||||
"GBC - Blue": " GBCブルー",
|
||||
"GBC - Brown": " GBCブラウン",
|
||||
"GBC - Dark Blue": " GBCダークブルー",
|
||||
"GBC - Dark Brown": " GBCダークブラウン",
|
||||
"GBC - Dark Green": " GBCダークグリーン",
|
||||
"GBC - Grayscale": " GBCグレースケール",
|
||||
"GBC - Green": " GBCグリーン",
|
||||
"GBC - Inverted": " GBC反転",
|
||||
"GBC - Orange": " GBCオレンジ",
|
||||
"GBC - Red": " GBCレッド",
|
||||
"GBC - Pastel Mix": " GBCパステルミックス",
|
||||
"GBC - Yellow": " GBCイエロー",
|
||||
"Frameskip": "フレームスキップ",
|
||||
"Solar sensor level": "ソーラーセンサーレベル",
|
||||
"Enable Turbo Buttons": "ターボボタンを有効にする",
|
||||
"Turbo Delay in frames": "フレームのターボ遅延",
|
||||
"Auto": "自動",
|
||||
"Aspect Ratio (Need to refresh page)": "アスペクト比(ページを更新する必要があります)",
|
||||
"16:9 Resolution": " 16:9解像度",
|
||||
"4:3 Resolution": " 4:3解像度",
|
||||
"Player 1 Pak": "プレーヤー1パック",
|
||||
"Player 2 Pak": "プレーヤー2パック",
|
||||
"Player 3 Pak": "プレーヤー3パック",
|
||||
"Player 4 Pak": "プレーヤー4パック",
|
||||
"none": "なし",
|
||||
"memory": "メモリ",
|
||||
"rumble": "ランブル",
|
||||
"Screen layout": "画面レイアウト",
|
||||
"right/left": "右/左",
|
||||
"left/right": "左/右",
|
||||
"bottom/top": "下/上",
|
||||
"top/bottom": "上/下",
|
||||
"top only": "トップのみ",
|
||||
"bottom only": "下のみ",
|
||||
"quick switch": "クイックスイッチ",
|
||||
"hybrid/bottom": "ハイブリッド/ボトム",
|
||||
"hybrid/top": "ハイブリッド/トップ",
|
||||
"Screen Rotation": "画面の回転",
|
||||
"CPU speed": " CPU速度",
|
||||
"Sound output": "サウンド出力",
|
||||
"mono": "モノ",
|
||||
"stereo": "ステレオ",
|
||||
"OFF": "オフ",
|
||||
"ON": "オン",
|
||||
"Fast Blitter": "高速ブリッター",
|
||||
"Bios": " BIOS",
|
||||
"Enable second memory card": " 2番目のメモリカードを有効にする",
|
||||
"Pad 1 Type": "パッド1タイプ",
|
||||
"Pad 2 Type": "パッド2タイプ",
|
||||
"Pad 3 Type": "パッド3タイプ",
|
||||
"Pad 4 Type": "パッド4タイプ",
|
||||
"standard": "標準",
|
||||
"analog": "アナログ",
|
||||
"negcon": "ネジコン",
|
||||
"Enable Vibration": "バイブレーションを有効にする",
|
||||
"Enable interlacing mode(s)": "インターレースモードを有効にする",
|
||||
"Enhanced resolution (slow)": "強化された解像度(遅い)",
|
||||
"Enhanced resolution speed hack": "強化された解決速度ハック",
|
||||
"Aspect ratio": "アスペクト比",
|
||||
"CPU overclock": " CPUオーバークロック",
|
||||
"Force Neo Geo mode": "強制ネオジオモード",
|
||||
"Diagnostic Input": "診断入力",
|
||||
"download": "ダウンロード",
|
||||
"keep in browser": "ブラウザにとどまる",
|
||||
"Webassembly support is not detected in this browser": "このブラウザではWebAssemblyのサポートが検出されません",
|
||||
"Please upgrade your browser to the latest version": "ブラウザを最新バージョンにアップグレードしてください",
|
||||
"Missing mame config": " mameconfigがありません",
|
||||
"Stop Screen Recording": "画面の記録を停止します",
|
||||
"Start Screen Recording": "画面記録を開始します",
|
||||
"Take Screenshot": "スクリーンショットを撮る",
|
||||
"Quick Save": "クイック保存",
|
||||
"Quick Load": "クイックロード"
|
||||
}
|
||||
196
static/data/localization/jv-JV.json
Normal file
196
static/data/localization/jv-JV.json
Normal file
@ -0,0 +1,196 @@
|
||||
{
|
||||
"i18n": {
|
||||
"restart": "Baleni meneh",
|
||||
"play": " Dolanan",
|
||||
"pause": " Ngaso",
|
||||
"played": " Diputer",
|
||||
"volume": " Volume",
|
||||
"mute": " Bisu (F9)",
|
||||
"unmute": " Mbusak bisu (F9)",
|
||||
"enterFullscreen": "Ketik layar wutuh",
|
||||
"exitFullscreen": " Metu saka layar wutuh",
|
||||
"settings": " Setelan",
|
||||
"saveState": "Simpen Status (Shift + F2)",
|
||||
"loadState": "Muat Status (Shift + F4)",
|
||||
"cacheManager": "Cache Manager",
|
||||
"screenRecord": " Miwiti Rekaman Layar",
|
||||
"netplay": " Netplay",
|
||||
"gamepad": " Setelan Kontrol",
|
||||
"cheat": " Ngapusi",
|
||||
"menuBack": " Bali menyang menu sadurungé",
|
||||
"normal": " Biasa wae",
|
||||
"all": " Kabeh",
|
||||
"reset": " Reset",
|
||||
"disabled": " Dipatèni",
|
||||
"enabled": " Diaktifake",
|
||||
"playNow": " Play Saiki"
|
||||
},
|
||||
"normalOptions": {
|
||||
"shader": {
|
||||
"label": " Shader",
|
||||
"options": {
|
||||
"disabled": " Dipatèni",
|
||||
"2xScaleHQ.glslp": "2xSkalaHQ",
|
||||
"4xScaleHQ.glslp": "4xSkalaHQ",
|
||||
"crt-easymode.glslp": "CRT mode gampang",
|
||||
"crt-aperture.glslp": " Bukaan CRT",
|
||||
"crt-geom.glslp": " CRT geom",
|
||||
"crt-mattias.glslp": "CRT mattias"
|
||||
},
|
||||
"default": "disabled"
|
||||
},
|
||||
"virtual-gamepad": {
|
||||
"label": " Virtual Gamepad",
|
||||
"options": {
|
||||
"disabled": " Dipatèni",
|
||||
"enabled": " Diaktifake"
|
||||
},
|
||||
"default": "enabled"
|
||||
}
|
||||
},
|
||||
"Control Settings": " Setelan Kontrol",
|
||||
"Player 1": " Pamuter 1",
|
||||
"Player 2": " Pamuter 2",
|
||||
"Player 3": " Pamuter 3",
|
||||
"Player 4": " Pamuter 4",
|
||||
"Update": " Nganyari",
|
||||
"Reset": " Reset",
|
||||
"Clear": " Cetha",
|
||||
"Cancel": " Batal",
|
||||
"Close": " Nutup",
|
||||
"Empty": "Kosong",
|
||||
"Loading": " Loading",
|
||||
"Submit": " Ngirim",
|
||||
"Description": " Katrangan",
|
||||
"Code": " Kode",
|
||||
"Add Cheat Code": "Tambah Kode Ngapusi",
|
||||
"OK": " OKE",
|
||||
"Add Cheat": " Tambah Ngapusi",
|
||||
"Cache Manager": " Pangurus Cache",
|
||||
"Press keyboard or gamepad": "Pencet keyboard utawa gamepad",
|
||||
"Gamepad": " Gamepad",
|
||||
"Keyboard": " Papan ketik",
|
||||
"Set": " Setel",
|
||||
"QUICK SAVE STATE": " CEPAT SIMPEN NEGARA",
|
||||
"QUICK LOAD STATE": " NEGARA MUNGKIN CEPAT",
|
||||
"CHANGE STATE SLOT": "GANTENG STATE SLOT",
|
||||
"INSERT COIN": " INSERT COIN",
|
||||
"Press escape (esc) to clear": "Pencet escape (esc) kanggo mbusak",
|
||||
"Netplay": " Netplay",
|
||||
"Rooms": " Kamar",
|
||||
"Players": " Pamuter",
|
||||
"Player": " Pamuter",
|
||||
"Room Name": " Jeneng Kamar",
|
||||
"Password": " Sandi",
|
||||
"Name": " Jeneng",
|
||||
"Quit Room": " Metu Kamar",
|
||||
"Create a Room": " Gawe Kamar",
|
||||
"Set Player Name": " Setel Jeneng Pamuter",
|
||||
"Player Name": " Jeneng Pamuter",
|
||||
"Password (optional)": " Sandi (opsional)",
|
||||
"Select": " Pilih",
|
||||
"Start": " Miwiti",
|
||||
"Menu": " Menu",
|
||||
"Decompress Game Core": "Decompress Game Core",
|
||||
"Decompress Game Data": "Decompress Game Data",
|
||||
"Decompress Game Patch": " Dekompres Game Patch",
|
||||
"Download Game Data": "Download Game Data",
|
||||
"Download Game Core": " Unduh Game Core",
|
||||
"Network Error": " Kesalahan Jaringan",
|
||||
"Default": " Default",
|
||||
"default": " gawan",
|
||||
"Save State Location": "Simpen Lokasi Negara",
|
||||
"Save State Slot": " Simpen Slot Negara",
|
||||
"Color Palette": " Palet Warna",
|
||||
"No Sprite Limit": " Ora ana watesan Sprite",
|
||||
"Enabled": " Diaktifake",
|
||||
"Disabled": " Dipatèni",
|
||||
"enabled": " diaktifake",
|
||||
"disabled": " dipatèni",
|
||||
"Low": " Sedheng",
|
||||
"High": " Dhuwur",
|
||||
"Very High": " Dhuwur Banget",
|
||||
"4 Players Support": "4 Dhukungan Pemain",
|
||||
"Turbo Enable": " Turbo Aktifake",
|
||||
"None": " Ora ana",
|
||||
"Both": " Loro-lorone",
|
||||
"Region": " Wilayah",
|
||||
"SuperFX Overclock": " SuperFX Overclock",
|
||||
"Sound Quality": " Kualitas Swara",
|
||||
"GB Colorization": "Warna GB",
|
||||
"auto": " otomatis",
|
||||
"internal": " internal",
|
||||
"Internal Palette": " Palet Internal",
|
||||
"GBC - Blue": " GBC Biru",
|
||||
"GBC - Brown": " GBC Coklat",
|
||||
"GBC - Dark Blue": "GBC Biru Tua",
|
||||
"GBC - Dark Brown": "GBC Coklat Tua",
|
||||
"GBC - Dark Green": " GBC Ijo peteng",
|
||||
"GBC - Grayscale": "GBC Grayscale",
|
||||
"GBC - Green": " GBC Green",
|
||||
"GBC - Inverted": "GBC Walik",
|
||||
"GBC - Orange": " GBC Oranye",
|
||||
"GBC - Red": " GBC Abang",
|
||||
"GBC - Pastel Mix": "GBC Pastel Mix",
|
||||
"GBC - Yellow": " GBC Kuning",
|
||||
"Frameskip": " Frameskip",
|
||||
"Solar sensor level": " Tingkat sensor surya",
|
||||
"Enable Turbo Buttons": "Aktifake Tombol Turbo",
|
||||
"Turbo Delay in frames": "Tundha Turbo ing pigura",
|
||||
"Auto": " Otomatis",
|
||||
"Aspect Ratio (Need to refresh page)": "Rasio Aspek (Perlu refresh kaca)",
|
||||
"16:9 Resolution": " 16:9 Résolusi",
|
||||
"4:3 Resolution": "4:3 Résolusi",
|
||||
"Player 1 Pak": "Pemain 1 Pak",
|
||||
"Player 2 Pak": " Pamuter 2 Pak",
|
||||
"Player 3 Pak": "Pemain 3 Pak",
|
||||
"Player 4 Pak": " Pamuter 4 Pak",
|
||||
"none": " ora ana",
|
||||
"memory": " memori",
|
||||
"rumble": " gumujeng",
|
||||
"Screen layout": " Tata letak layar",
|
||||
"right/left": " tengen / kiwa",
|
||||
"left/right": " kiwa/tengen",
|
||||
"bottom/top": " ngisor / ndhuwur",
|
||||
"top/bottom": " ndhuwur / ngisor",
|
||||
"top only": " mung ndhuwur",
|
||||
"bottom only": " mung ngisor",
|
||||
"quick switch": " ngalih cepet",
|
||||
"hybrid/bottom": " hibrida / ngisor",
|
||||
"hybrid/top": " hibrida / ndhuwur",
|
||||
"Screen Rotation": " Rotasi Layar",
|
||||
"CPU speed": " Kacepetan CPU",
|
||||
"Sound output": " Output swara",
|
||||
"mono": " mono",
|
||||
"stereo": " stereo",
|
||||
"OFF": " MATI",
|
||||
"ON": " ON",
|
||||
"Fast Blitter": " Cepet Blitter",
|
||||
"Bios": " Bios",
|
||||
"Enable second memory card": "Aktifake kertu memori kapindho",
|
||||
"Pad 1 Type": "Pad 1 Tipe",
|
||||
"Pad 2 Type": " Tipe Pad 2",
|
||||
"Pad 3 Type": " Tipe Pad 3",
|
||||
"Pad 4 Type": "Pad 4 Tipe",
|
||||
"standard": " standar",
|
||||
"analog": " analog",
|
||||
"negcon": "negkon",
|
||||
"Enable Vibration": " Aktifake Geter",
|
||||
"Enable interlacing mode(s)": "Aktifake mode interlacing",
|
||||
"Enhanced resolution (slow)": "Resolusi sing ditingkatake (alon)",
|
||||
"Enhanced resolution speed hack": "Retas kacepetan résolusi sing ditingkatake",
|
||||
"Aspect ratio": " Rasio aspek",
|
||||
"CPU overclock": " CPU overclock",
|
||||
"Force Neo Geo mode": " Mode Force Neo Geo",
|
||||
"Diagnostic Input": " Input Diagnostik",
|
||||
"download": "undhuh",
|
||||
"keep in browser": " tetep ing browser",
|
||||
"Webassembly support is not detected in this browser": "Dhukungan webassembly ora dideteksi ing browser iki",
|
||||
"Please upgrade your browser to the latest version": "Mangga upgrade browser sampeyan menyang versi paling anyar",
|
||||
"Missing mame config": "Konfigurasi mame ilang",
|
||||
"Stop Screen Recording": " Mungkasi Rekaman Layar",
|
||||
"Start Screen Recording": " Miwiti Rekaman Layar",
|
||||
"Take Screenshot": " Njupuk Screenshot",
|
||||
"Quick Save": " Cepet Simpen",
|
||||
"Quick Load": " Muatan Cepet"
|
||||
}
|
||||
196
static/data/localization/ko-KO.json
Normal file
196
static/data/localization/ko-KO.json
Normal file
@ -0,0 +1,196 @@
|
||||
{
|
||||
"i18n": {
|
||||
"restart": "재시작",
|
||||
"play": "플레이",
|
||||
"pause": "일시 중지",
|
||||
"played": "플레이",
|
||||
"volume": "볼륨",
|
||||
"mute": "음소거(F9)",
|
||||
"unmute": "음소거 해제(F9)",
|
||||
"enterFullscreen": "전체 화면으로 전환",
|
||||
"exitFullscreen": "전체 화면 종료",
|
||||
"settings": "설정",
|
||||
"saveState": "상태 저장(Shift + F2)",
|
||||
"loadState": "로드 상태(Shift + F4)",
|
||||
"cacheManager": "Cache Manager",
|
||||
"screenRecord": "화면 녹화 시작",
|
||||
"netplay": "넷플레이",
|
||||
"gamepad": "제어 설정",
|
||||
"cheat": "치트",
|
||||
"menuBack": "이전 메뉴로 돌아가기",
|
||||
"normal": "일반",
|
||||
"all": "모두",
|
||||
"reset": "리셋",
|
||||
"disabled": "장애인",
|
||||
"enabled": "활성화됨",
|
||||
"playNow": "지금 플레이"
|
||||
},
|
||||
"normalOptions": {
|
||||
"shader": {
|
||||
"label": "쉐이더",
|
||||
"options": {
|
||||
"disabled": "장애인",
|
||||
"2xScaleHQ.glslp": "2xScaleHQ",
|
||||
"4xScaleHQ.glslp": "4xScaleHQ",
|
||||
"crt-easymode.glslp": "CRT 이지모드",
|
||||
"crt-aperture.glslp": "CRT 조리개",
|
||||
"crt-geom.glslp": "CRT 지오메트리",
|
||||
"crt-mattias.glslp": "CRT mattias"
|
||||
},
|
||||
"default": "disabled"
|
||||
},
|
||||
"virtual-gamepad": {
|
||||
"label": "가상 게임패드",
|
||||
"options": {
|
||||
"disabled": "장애인",
|
||||
"enabled": "활성화됨"
|
||||
},
|
||||
"default": "enabled"
|
||||
}
|
||||
},
|
||||
"Control Settings": "제어 설정",
|
||||
"Player 1": "플레이어 1",
|
||||
"Player 2": "플레이어 2",
|
||||
"Player 3": "플레이어 3",
|
||||
"Player 4": "플레이어 4",
|
||||
"Update": "업데이트",
|
||||
"Reset": "리셋",
|
||||
"Clear": "클리어",
|
||||
"Cancel": "취소",
|
||||
"Close": "닫기",
|
||||
"Empty": "비어 있음",
|
||||
"Loading": "로드 중",
|
||||
"Submit": "제출",
|
||||
"Description": "설명",
|
||||
"Code": "코드",
|
||||
"Add Cheat Code": "치트 코드 추가",
|
||||
"OK": "알았어",
|
||||
"Add Cheat": "치트 추가",
|
||||
"Cache Manager": "캐시 관리자",
|
||||
"Press keyboard or gamepad": "키보드 또는 게임패드 누르기",
|
||||
"Gamepad": "게임패드",
|
||||
"Keyboard": "키보드",
|
||||
"Set": "세트",
|
||||
"QUICK SAVE STATE": "빠른 저장 상태",
|
||||
"QUICK LOAD STATE": "빠른 로드 상태",
|
||||
"CHANGE STATE SLOT": "상태 슬롯 변경",
|
||||
"INSERT COIN": "코인 삽입",
|
||||
"Press escape (esc) to clear": "이스케이프(esc)를 눌러 지우십시오.",
|
||||
"Netplay": "넷플레이",
|
||||
"Rooms": "객실",
|
||||
"Players": "선수",
|
||||
"Player": "플레이어",
|
||||
"Room Name": "방 이름",
|
||||
"Password": "비밀번호",
|
||||
"Name": "이름",
|
||||
"Quit Room": "퇴장실",
|
||||
"Create a Room": "방 만들기",
|
||||
"Set Player Name": "플레이어 이름 설정",
|
||||
"Player Name": "플레이어 이름",
|
||||
"Password (optional)": "비밀번호(선택사항)",
|
||||
"Select": "선택",
|
||||
"Start": "시작",
|
||||
"Menu": "메뉴",
|
||||
"Decompress Game Core": "게임 코어 압축 풀기",
|
||||
"Decompress Game Data": "게임 데이터 압축 풀기",
|
||||
"Decompress Game Patch": "게임 패치 압축 풀기",
|
||||
"Download Game Data": "게임 데이터 다운로드",
|
||||
"Download Game Core": "게임 코어 다운로드",
|
||||
"Network Error": "네트워크 오류",
|
||||
"Default": "기본값",
|
||||
"default": "기본값",
|
||||
"Save State Location": "상태 위치 저장",
|
||||
"Save State Slot": "상태 슬롯 저장",
|
||||
"Color Palette": "컬러 팔레트",
|
||||
"No Sprite Limit": "스프라이트 제한 없음",
|
||||
"Enabled": "활성화됨",
|
||||
"Disabled": "장애인",
|
||||
"enabled": "활성화",
|
||||
"disabled": "장애인",
|
||||
"Low": "낮음",
|
||||
"High": "높음",
|
||||
"Very High": "매우 높음",
|
||||
"4 Players Support": "4인 지원",
|
||||
"Turbo Enable": "터보 활성화",
|
||||
"None": "없음",
|
||||
"Both": "둘다",
|
||||
"Region": "지역",
|
||||
"SuperFX Overclock": "SuperFX 오버클럭",
|
||||
"Sound Quality": "음질",
|
||||
"GB Colorization": "GB 채색",
|
||||
"auto": "자동",
|
||||
"internal": "내부",
|
||||
"Internal Palette": "내부 팔레트",
|
||||
"GBC - Blue": "GBC 블루",
|
||||
"GBC - Brown": "GBC 브라운",
|
||||
"GBC - Dark Blue": "GBC 다크 블루",
|
||||
"GBC - Dark Brown": "GBC 다크 브라운",
|
||||
"GBC - Dark Green": "GBC 다크 그린",
|
||||
"GBC - Grayscale": "GBC 그레이스케일",
|
||||
"GBC - Green": "GBC 그린",
|
||||
"GBC - Inverted": "GBC 반전",
|
||||
"GBC - Orange": "GBC 오렌지",
|
||||
"GBC - Red": "GBC 레드",
|
||||
"GBC - Pastel Mix": "GBC 파스텔 믹스",
|
||||
"GBC - Yellow": "GBC 옐로우",
|
||||
"Frameskip": "프레임스킵",
|
||||
"Solar sensor level": "태양광 센서 레벨",
|
||||
"Enable Turbo Buttons": "터보 버튼 활성화",
|
||||
"Turbo Delay in frames": "프레임의 터보 지연",
|
||||
"Auto": "자동",
|
||||
"Aspect Ratio (Need to refresh page)": "종횡비(페이지 새로고침 필요)",
|
||||
"16:9 Resolution": "16:9 해상도",
|
||||
"4:3 Resolution": "4:3 해상도",
|
||||
"Player 1 Pak": "플레이어 1 박",
|
||||
"Player 2 Pak": "플레이어 2 박",
|
||||
"Player 3 Pak": "플레이어 3 박",
|
||||
"Player 4 Pak": "플레이어 4 박",
|
||||
"none": "없음",
|
||||
"memory": "기억",
|
||||
"rumble": "럼블",
|
||||
"Screen layout": "화면 레이아웃",
|
||||
"right/left": "오른쪽/왼쪽",
|
||||
"left/right": "왼쪽/오른쪽",
|
||||
"bottom/top": "하단/상단",
|
||||
"top/bottom": "위/아래",
|
||||
"top only": "상단만",
|
||||
"bottom only": "하단만",
|
||||
"quick switch": "빠른 전환",
|
||||
"hybrid/bottom": "하이브리드/하단",
|
||||
"hybrid/top": "하이브리드/탑",
|
||||
"Screen Rotation": "화면 회전",
|
||||
"CPU speed": "CPU 속도",
|
||||
"Sound output": "음향 출력",
|
||||
"mono": "모노",
|
||||
"stereo": "스테레오",
|
||||
"OFF": "꺼짐",
|
||||
"ON": "켜기",
|
||||
"Fast Blitter": "빠른 블리터",
|
||||
"Bios": "바이오스",
|
||||
"Enable second memory card": "두 번째 메모리 카드 활성화",
|
||||
"Pad 1 Type": "패드 1종",
|
||||
"Pad 2 Type": "패드 2형",
|
||||
"Pad 3 Type": "패드 3종",
|
||||
"Pad 4 Type": "패드 4종",
|
||||
"standard": "표준",
|
||||
"analog": "아날로그",
|
||||
"negcon": "네그콘",
|
||||
"Enable Vibration": "진동 활성화",
|
||||
"Enable interlacing mode(s)": "인터레이스 모드 활성화",
|
||||
"Enhanced resolution (slow)": "향상된 해상도(느림)",
|
||||
"Enhanced resolution speed hack": "향상된 해상도 속도 해킹",
|
||||
"Aspect ratio": "종횡비",
|
||||
"CPU overclock": "CPU 오버클럭",
|
||||
"Force Neo Geo mode": "포스 네오지오 모드",
|
||||
"Diagnostic Input": "진단 입력",
|
||||
"download": "다운로드",
|
||||
"keep in browser": "브라우저에 보관",
|
||||
"Webassembly support is not detected in this browser": "이 브라우저에서는 웹어셈블리 지원이 감지되지 않습니다.",
|
||||
"Please upgrade your browser to the latest version": "브라우저를 최신 버전으로 업그레이드하십시오.",
|
||||
"Missing mame config": "mame 구성이 누락되었습니다.",
|
||||
"Stop Screen Recording": "화면 녹화 중지",
|
||||
"Start Screen Recording": "화면 녹화 시작",
|
||||
"Take Screenshot": "스크린샷 찍기",
|
||||
"Quick Save": "빠른 저장",
|
||||
"Quick Load": "빠른 로드"
|
||||
}
|
||||
196
static/data/localization/pt-BR.json
Normal file
196
static/data/localization/pt-BR.json
Normal file
@ -0,0 +1,196 @@
|
||||
{
|
||||
"i18n": {
|
||||
"restart": "Restart",
|
||||
"play": "Jogar",
|
||||
"pause": "Pausar",
|
||||
"played": "Jogado",
|
||||
"volume": "Volume",
|
||||
"mute": "Mudo (F9)",
|
||||
"unmute": "Desmutar (F9)",
|
||||
"enterFullscreen": "Tela cheia",
|
||||
"exitFullscreen": "Sair da tela cheia",
|
||||
"settings": "Configurações",
|
||||
"saveState": "Salvar Estado (Shift + F2)",
|
||||
"loadState": "Carregar Estado (Shift + F4)",
|
||||
"cacheManager": "Cache Manager",
|
||||
"screenRecord": "Começar Gravar Tela",
|
||||
"netplay": "Netplay",
|
||||
"gamepad": "Configurações do Controle",
|
||||
"cheat": "Trapaças",
|
||||
"menuBack": "Voltar ao menu anterior",
|
||||
"normal": "Normal",
|
||||
"all": "Todos",
|
||||
"reset": "Reset",
|
||||
"disabled": "Desativar",
|
||||
"enabled": "Ativar",
|
||||
"playNow": "Jogar agora"
|
||||
},
|
||||
"normalOptions": {
|
||||
"shader": {
|
||||
"label": "Sombreador",
|
||||
"options": {
|
||||
"disabled": "Desativado",
|
||||
"2xScaleHQ.glslp": "2xScaleHQ",
|
||||
"4xScaleHQ.glslp": "4xScaleHQ",
|
||||
"crt-easymode.glslp": "CRT easymode",
|
||||
"crt-aperture.glslp": "CRT aperture",
|
||||
"crt-geom.glslp": "CRT geom",
|
||||
"crt-mattias.glslp": "CRT mattias"
|
||||
},
|
||||
"default": "disabled"
|
||||
},
|
||||
"virtual-gamepad": {
|
||||
"label": "Controle Virtual",
|
||||
"options": {
|
||||
"disabled": "Desativado",
|
||||
"enabled": "Ativado"
|
||||
},
|
||||
"default": "enabled"
|
||||
}
|
||||
},
|
||||
"Control Settings": "Configurações do Controle",
|
||||
"Player 1": "Jogador 1",
|
||||
"Player 2": "Jogador 2",
|
||||
"Player 3": "Jogador 3",
|
||||
"Player 4": "Jogador 4",
|
||||
"Update": "Atualizar",
|
||||
"Reset": "Resetar",
|
||||
"Clear": "Limpar",
|
||||
"Cancel": "Cancelar",
|
||||
"Close": "Fechar",
|
||||
"Empty": "Vazio",
|
||||
"Loading": "Carregando",
|
||||
"Submit": "Enviar",
|
||||
"Description": "Descrição",
|
||||
"Code": "Código",
|
||||
"Add Cheat Code": "Adicionar Código da Trapaça",
|
||||
"OK": "OK",
|
||||
"Add Cheat": "Adicionar Trapaça",
|
||||
"Cache Manager": "Administrador de Cache",
|
||||
"Press keyboard or gamepad": "Pressione o teclado ou o controle",
|
||||
"Gamepad": "Controle",
|
||||
"Keyboard": "Teclado",
|
||||
"Set": "Definir",
|
||||
"QUICK SAVE STATE": "SALVAR ESTADO RÁPIDO",
|
||||
"QUICK LOAD STATE": "CARREGAR ESTADO RÁPIDO",
|
||||
"CHANGE STATE SLOT": "TROCAR SLOT DO ESTADO",
|
||||
"INSERT COIN": "INSERIR MOEDA",
|
||||
"Press escape (esc) to clear": "Pressione (esc) para limpar",
|
||||
"Netplay": "Netplay",
|
||||
"Rooms": "Salas",
|
||||
"Players": "Jogadores",
|
||||
"Player": "Jogador",
|
||||
"Room Name": "Nome da Sala",
|
||||
"Password": "Senha",
|
||||
"Name": "Nome",
|
||||
"Quit Room": "Sair da Sala",
|
||||
"Create a Room": "Criar uma Sala",
|
||||
"Set Player Name": "Configurar Nome do Jogador",
|
||||
"Player Name": "Nome do Jogador",
|
||||
"Password (optional)": "Senha (opcional)",
|
||||
"Select": "Select",
|
||||
"Start": "Start",
|
||||
"Menu": "Menu",
|
||||
"Decompress Game Core": "Decompress Game Core",
|
||||
"Decompress Game Data": "Decompress Game Data",
|
||||
"Decompress Game Patch": "Decompress Game Patch",
|
||||
"Download Game Data": "Download Game Data",
|
||||
"Download Game Core": "Download Game Core",
|
||||
"Network Error": "Network Error",
|
||||
"Default": "Padrão",
|
||||
"default": "padrão",
|
||||
"Save State Location": "Salvar Estado Local",
|
||||
"Save State Slot": "Salvar Slot de Estado",
|
||||
"Color Palette": "Paleta de Cores",
|
||||
"No Sprite Limit": "Sem limite de Sprite",
|
||||
"Enabled": "Ativado",
|
||||
"Disabled": "Desativado",
|
||||
"enabled": "ativado",
|
||||
"disabled": "desativado",
|
||||
"Low": "Baixo",
|
||||
"High": "Alto",
|
||||
"Very High": "Muito Alto",
|
||||
"4 Players Support": "Suporte para 4 jogadores",
|
||||
"Turbo Enable": "Ativar Turbo",
|
||||
"None": "Nenhum",
|
||||
"Both": "Ambos",
|
||||
"Region": "Região",
|
||||
"SuperFX Overclock": "SuperFX Overclock",
|
||||
"Sound Quality": "Qualidade do Som",
|
||||
"GB Colorization": "GB Colorização",
|
||||
"auto": "auto",
|
||||
"internal": "interna",
|
||||
"Internal Palette": "Paleta Interna",
|
||||
"GBC - Blue": "GBC - Azul",
|
||||
"GBC - Brown": "GBC - Marrom",
|
||||
"GBC - Dark Blue": "GBC - Azul Escuro",
|
||||
"GBC - Dark Brown": "GBC - Marrom Escuro",
|
||||
"GBC - Dark Green": "GBC - Verde Escuro",
|
||||
"GBC - Grayscale": "GBC - Cinza",
|
||||
"GBC - Green": "GBC - Verde",
|
||||
"GBC - Inverted": "GBC - Invertido",
|
||||
"GBC - Orange": "GBC - Laranja",
|
||||
"GBC - Red": "GBC - Vermelho",
|
||||
"GBC - Pastel Mix": "GBC - Pastel Mix",
|
||||
"GBC - Yellow": "GBC - Amarelo",
|
||||
"Frameskip": "Frameskip",
|
||||
"Solar sensor level": "Solar sensor level",
|
||||
"Enable Turbo Buttons": "Habilitar Botões Turbo",
|
||||
"Turbo Delay in frames": "Turbo Delay em frames",
|
||||
"Auto": "Auto",
|
||||
"Aspect Ratio (Need to refresh page)": "Aspect Ratio (Precisa atualizar a página)",
|
||||
"16:9 Resolution": "16:9 Resolução",
|
||||
"4:3 Resolution": "4:3 Resolução",
|
||||
"Player 1 Pak": "Jogador 1 Pak",
|
||||
"Player 2 Pak": "Jogador 2 Pak",
|
||||
"Player 3 Pak": "Jogador 3 Pak",
|
||||
"Player 4 Pak": "Jogador 4 Pak",
|
||||
"none": "nenhum",
|
||||
"memory": "memória",
|
||||
"rumble": "rumble",
|
||||
"Screen layout": "Layout da tela",
|
||||
"right/left": "direta/esquerda",
|
||||
"left/right": "esquerda/direta",
|
||||
"bottom/top": "fundo/principal",
|
||||
"top/bottom": "principal/fundo",
|
||||
"top only": "principal somente",
|
||||
"bottom only": "fundo somente",
|
||||
"quick switch": "troca rápida",
|
||||
"hybrid/bottom": "híbrido/fundo",
|
||||
"hybrid/top": "híbrido/principal",
|
||||
"Screen Rotation": "Rotação da Tela",
|
||||
"CPU speed": "Velocidade do CPU",
|
||||
"Sound output": "Saída de Som",
|
||||
"mono": "mono",
|
||||
"stereo": "stereo",
|
||||
"OFF": "Desligado",
|
||||
"ON": "Ligado",
|
||||
"Fast Blitter": "Fast Blitter",
|
||||
"Bios": "Bios",
|
||||
"Enable second memory card": "Habilitar segundo cartão de memória",
|
||||
"Pad 1 Type": "Pad Tipo 1",
|
||||
"Pad 2 Type": "Pad Tipo 2",
|
||||
"Pad 3 Type": "Pad Tipo 3",
|
||||
"Pad 4 Type": "Pad Tipo 4",
|
||||
"standard": "padrão",
|
||||
"analog": "analógico",
|
||||
"negcon": "negcon",
|
||||
"Enable Vibration": "Habilitar Vibração",
|
||||
"Enable interlacing mode(s)": "Ativar o modo de entrelaçamento(s)",
|
||||
"Enhanced resolution (slow)": "Resolução melhorada (lento)",
|
||||
"Enhanced resolution speed hack": "Velocidade de Reprodução",
|
||||
"Aspect ratio": "Aspect ratio",
|
||||
"CPU overclock": "CPU overclock",
|
||||
"Force Neo Geo mode": "Force Neo Geo mode",
|
||||
"Diagnostic Input": "Diagnostic Input",
|
||||
"download": "download",
|
||||
"keep in browser": "manter no navegador",
|
||||
"Webassembly support is not detected in this browser": "Suporte Webassembly não foi detectado neste navegador",
|
||||
"Please upgrade your browser to the latest version": "Por favor atualize seu navegador para a última versão",
|
||||
"Missing mame config": "Falta a configuração do mame",
|
||||
"Stop Screen Recording": "Parar Gravar Tela",
|
||||
"Start Screen Recording": "Começar Gravar Tela",
|
||||
"Take Screenshot": "Tirar Print",
|
||||
"Quick Save": "Salvar rápido",
|
||||
"Quick Load": "Carregar rápido"
|
||||
}
|
||||
47
static/data/localization/readme.md
Normal file
47
static/data/localization/readme.md
Normal file
@ -0,0 +1,47 @@
|
||||
|
||||
# Localization
|
||||
|
||||
Supported languages
|
||||
|
||||
`en-US` - English US<br>
|
||||
`pt-BR` - Portuguese Brasil<br>
|
||||
`es-ES` - Spanish<br>
|
||||
`el-GR` - Greek<br>
|
||||
`ja-JA` - Japanese<br>
|
||||
`zh-CN` - Chinese<br>
|
||||
`hi-HI` - Hindi<br>
|
||||
`ar-AR` - Arabic<br>
|
||||
`jv-JV` - Javanese<br>
|
||||
`ben-BEN` - Bengali<br>
|
||||
`ru-RU` - Russian<br>
|
||||
`de-GER` - German<br>
|
||||
`ko-KO` - Korean<br>
|
||||
`af-FR` - French<br>
|
||||
|
||||
default: `en-US`
|
||||
|
||||
|
||||
add the line to your code to use
|
||||
|
||||
```
|
||||
EJS_language = ''; //language
|
||||
```
|
||||
|
||||
If the language file is not found or there was an error fetching the file, the emulator will default to english.
|
||||
|
||||
|
||||
## credits
|
||||
|
||||
Translated for `pt-BR` by [@cesarcristianodeoliveira](https://github.com/cesarcristianodeoliveira) <br>
|
||||
Translated for `es-ES` by [@cesarcristianodeoliveira](https://github.com/cesarcristianodeoliveira) <br>
|
||||
Translated for `el-GR` by [@imneckro](https://github.com/imneckro) <br>
|
||||
Translated for `ja-JA`, `hi-HI`, `ar-AR`, `jv-JV`, `ben-BEN`, `ru-RU`, `de-GER`, `ko-KO`, `af-FR` by [@allancoding](https://github.com/allancoding) <br>
|
||||
Translated for `zh-CN` originally by [@allancoding](https://github.com/allancoding) and updated by [@eric183](https://github.com/eric183)<br>
|
||||
|
||||
## contributing
|
||||
|
||||
Download the default `en.json` file and simply translate all the words that start with the `-` (remove the dash afterwards) then perform a pull request or open an issue with the file uploaded and I will add your work
|
||||
|
||||
Please contribute!!
|
||||
|
||||
Enything that is incorrect or needs to be fix please perform a pull request!
|
||||
196
static/data/localization/ru-RU.json
Normal file
196
static/data/localization/ru-RU.json
Normal file
@ -0,0 +1,196 @@
|
||||
{
|
||||
"i18n": {
|
||||
"restart": "Начать сначала",
|
||||
"play": "Играть",
|
||||
"pause": "Пауза",
|
||||
"played": "Играл",
|
||||
"volume": "Громкость",
|
||||
"mute": "Отключить звук (F9)",
|
||||
"unmute": "Включить звук (F9)",
|
||||
"enterFullscreen": "Войти в полноэкранный режим",
|
||||
"exitFullscreen": "Выйти из полноэкранного режима",
|
||||
"settings": "Настройки",
|
||||
"saveState": "Сохранить состояние (Shift + F2)",
|
||||
"loadState": "Загрузить состояние (Shift + F4)",
|
||||
"cacheManager": "Cache Manager",
|
||||
"screenRecord": "Начать запись экрана",
|
||||
"netplay": "Сетевая игра",
|
||||
"gamepad": "Настройки управления",
|
||||
"cheat": "Читы",
|
||||
"menuBack": "Вернуться в предыдущее меню",
|
||||
"normal": "Нормальный",
|
||||
"all": "Все",
|
||||
"reset": "Сбросить",
|
||||
"disabled": "Отключено",
|
||||
"enabled": "Включено",
|
||||
"playNow": "Играть сейчас"
|
||||
},
|
||||
"normalOptions": {
|
||||
"shader": {
|
||||
"label": "Шейдер",
|
||||
"options": {
|
||||
"disabled": "Отключено",
|
||||
"2xScaleHQ.glslp": "2xScaleHQ",
|
||||
"4xScaleHQ.glslp": "4xScaleHQ",
|
||||
"crt-easymode.glslp": "ЭЛТ простой режим",
|
||||
"crt-aperture.glslp": "ЭЛТ-диафрагма",
|
||||
"crt-geom.glslp": "ЭЛТ геометрия",
|
||||
"crt-mattias.glslp": "CRT mattias"
|
||||
},
|
||||
"default": "disabled"
|
||||
},
|
||||
"virtual-gamepad": {
|
||||
"label": "Виртуальный геймпад",
|
||||
"options": {
|
||||
"disabled": "Отключено",
|
||||
"enabled": "Включено"
|
||||
},
|
||||
"default": "enabled"
|
||||
}
|
||||
},
|
||||
"Control Settings": "Настройки управления",
|
||||
"Player 1": "Игрок 1",
|
||||
"Player 2": "Игрок 2",
|
||||
"Player 3": "Игрок 3",
|
||||
"Player 4": "Игрок 4",
|
||||
"Update": "Обновить",
|
||||
"Reset": "Сбросить",
|
||||
"Clear": "Очистить",
|
||||
"Cancel": "Отменить",
|
||||
"Close": "Закрыть",
|
||||
"Empty": "Пустой",
|
||||
"Loading": "Загрузка",
|
||||
"Submit": "Отправить",
|
||||
"Description": "Описание",
|
||||
"Code": "Код",
|
||||
"Add Cheat Code": "Добавить чит-код",
|
||||
"OK": "ОК",
|
||||
"Add Cheat": "Добавить чит",
|
||||
"Cache Manager": "Менеджер кеша",
|
||||
"Press keyboard or gamepad": "Нажмите клавиатуру или геймпад",
|
||||
"Gamepad": "Геймпад",
|
||||
"Keyboard": "Клавиатура",
|
||||
"Set": "Установить",
|
||||
"QUICK SAVE STATE": "БЫСТРОЕ СОХРАНЕНИЕ",
|
||||
"QUICK LOAD STATE": "СОСТОЯНИЕ БЫСТРОЙ ЗАГРУЗКИ",
|
||||
"CHANGE STATE SLOT": "ИЗМЕНИТЬ СОСТОЯНИЕ СЛОТА",
|
||||
"INSERT COIN": "ВСТАВЬТЕ МОНЕТУ",
|
||||
"Press escape (esc) to clear": "Нажмите escape (esc)",
|
||||
"Netplay": " чтобы очистить",
|
||||
"Rooms": "Сетевая игра",
|
||||
"Players": "Комнаты",
|
||||
"Player": "Игроки",
|
||||
"Room Name": "Игрок",
|
||||
"Password": "Название комнаты",
|
||||
"Name": "Пароль",
|
||||
"Quit Room": "Имя",
|
||||
"Create a Room": "Выйти из комнаты",
|
||||
"Set Player Name": "Создать комнату",
|
||||
"Player Name": "Установить имя игрока",
|
||||
"Password (optional)": "Имя игрока",
|
||||
"Select": "Пароль (необязательно)",
|
||||
"Start": "Выбрать",
|
||||
"Menu": "Старт",
|
||||
"Decompress Game Core": "Меню",
|
||||
"Decompress Game Data": "Распаковать игровое ядро",
|
||||
"Decompress Game Patch": "Распаковать игровые данные",
|
||||
"Download Game Data": " Распаковать игровой патч",
|
||||
"Download Game Core": "Загрузить игровые данные",
|
||||
"Network Error": "Загрузить игровое ядро",
|
||||
"Default": "Сетевая ошибка",
|
||||
"default": "По умолчанию",
|
||||
"Save State Location": "по умолчанию",
|
||||
"Save State Slot": "Сохранить местоположение состояния",
|
||||
"Color Palette": "Сохранить ячейку состояния",
|
||||
"No Sprite Limit": "Цветовая палитра",
|
||||
"Enabled": "Без ограничений по спрайтам",
|
||||
"Disabled": "Включено",
|
||||
"enabled": "Отключено",
|
||||
"disabled": "включено",
|
||||
"Low": "отключено",
|
||||
"High": "Низкий",
|
||||
"Very High": "Высокий",
|
||||
"4 Players Support": "Очень высокий",
|
||||
"Turbo Enable": "Поддержка 4 игроков",
|
||||
"None": "Турбо включить",
|
||||
"Both": "Нет",
|
||||
"Region": "Оба",
|
||||
"SuperFX Overclock": "Регион",
|
||||
"Sound Quality": "Разгон SuperFX",
|
||||
"GB Colorization": "Качество звука",
|
||||
"auto": "GB раскрашивание",
|
||||
"internal": "авто",
|
||||
"Internal Palette": "внутренний",
|
||||
"GBC - Blue": "Внутренняя палитра",
|
||||
"GBC - Brown": "GBC Синий",
|
||||
"GBC - Dark Blue": "ГБК Браун",
|
||||
"GBC - Dark Brown": "GBC темно-синий",
|
||||
"GBC - Dark Green": "GBC темно-коричневый",
|
||||
"GBC - Grayscale": "GBC темно-зеленый",
|
||||
"GBC - Green": "GBC Оттенки серого",
|
||||
"GBC - Inverted": "GBC Зеленый",
|
||||
"GBC - Orange": "GBC перевернутый",
|
||||
"GBC - Red": "GBC Оранжевый",
|
||||
"GBC - Pastel Mix": "GBC Красный",
|
||||
"GBC - Yellow": "Пастельный микс GBC",
|
||||
"Frameskip": "GBC Желтый",
|
||||
"Solar sensor level": "Пропуск кадров",
|
||||
"Enable Turbo Buttons": "Уровень солнечного датчика",
|
||||
"Turbo Delay in frames": "Включить турбо-кнопки",
|
||||
"Auto": " Турбо-задержка в кадрах",
|
||||
"Aspect Ratio (Need to refresh page)": "Авто",
|
||||
"16:9 Resolution": "Соотношение сторон (необходимо обновить страницу)",
|
||||
"4:3 Resolution": "Разрешение 16:9",
|
||||
"Player 1 Pak": "Разрешение 4:3",
|
||||
"Player 2 Pak": "Игрок 1 пакет",
|
||||
"Player 3 Pak": "Пакет игроков 2",
|
||||
"Player 4 Pak": "Игрок 3 пакет",
|
||||
"none": "Игрок 4 пакет",
|
||||
"memory": "нет",
|
||||
"rumble": "память",
|
||||
"Screen layout": "гул",
|
||||
"right/left": "Раскладка экрана",
|
||||
"left/right": "право/лево",
|
||||
"bottom/top": "влево/вправо",
|
||||
"top/bottom": "низ/верх",
|
||||
"top only": "сверху/снизу",
|
||||
"bottom only": "только сверху",
|
||||
"quick switch": "только снизу",
|
||||
"hybrid/bottom": "быстрый переключатель",
|
||||
"hybrid/top": "гибрид/низ",
|
||||
"Screen Rotation": "гибрид/топ",
|
||||
"CPU speed": "Поворот экрана",
|
||||
"Sound output": "скорость процессора",
|
||||
"mono": "Вывод звука",
|
||||
"stereo": "моно",
|
||||
"OFF": "стерео",
|
||||
"ON": "ВЫКЛ.",
|
||||
"Fast Blitter": "ВКЛ",
|
||||
"Bios": "Быстрый налет",
|
||||
"Enable second memory card": "биос",
|
||||
"Pad 1 Type": "Включить вторую карту памяти",
|
||||
"Pad 2 Type": "Пэд 1 Тип",
|
||||
"Pad 3 Type": "Пэд 2 Тип",
|
||||
"Pad 4 Type": "Пэд 3 Тип",
|
||||
"standard": "Пэд 4 Тип",
|
||||
"analog": "стандарт",
|
||||
"negcon": "аналоговый",
|
||||
"Enable Vibration": "негкон",
|
||||
"Enable interlacing mode(s)": "Включить вибрацию",
|
||||
"Enhanced resolution (slow)": "Включить режим чересстрочной развертки",
|
||||
"Enhanced resolution speed hack": "Улучшенное разрешение (медленно)",
|
||||
"Aspect ratio": "Хак с увеличенной скоростью разрешения",
|
||||
"CPU overclock": "Соотношение сторон",
|
||||
"Force Neo Geo mode": "Разгон процессора",
|
||||
"Diagnostic Input": "Принудительный режим Neo Geo",
|
||||
"download": "Диагностический ввод",
|
||||
"keep in browser": "скачать",
|
||||
"Webassembly support is not detected in this browser": "держать в браузере",
|
||||
"Please upgrade your browser to the latest version": "Поддержка Webassembly не обнаружена в этом браузере",
|
||||
"Missing mame config": "Пожалуйста",
|
||||
"Stop Screen Recording": " обновите браузер до последней версии",
|
||||
"Start Screen Recording": "Отсутствует конфигурация мамы",
|
||||
"Take Screenshot": "Остановить запись экрана",
|
||||
"Quick Save": "Начать запись экрана",
|
||||
"Quick Load": "Сделать снимок экрана"
|
||||
}
|
||||
195
static/data/localization/zh-CN.json
Normal file
195
static/data/localization/zh-CN.json
Normal file
@ -0,0 +1,195 @@
|
||||
{
|
||||
"i18n": {
|
||||
"restart": "重新开始",
|
||||
"play": "播放",
|
||||
"pause": "暂停",
|
||||
"played": "已玩",
|
||||
"volume": "音量",
|
||||
"mute": "静音 (F9)",
|
||||
"unmute": "取消静音 (F9)",
|
||||
"enterFullscreen": "进入全屏",
|
||||
"exitFullscreen": "退出全屏",
|
||||
"settings": "设置",
|
||||
"saveState": "保存状态(Shift + F2)",
|
||||
"loadState": "加载状态 (Shift + F4)",
|
||||
"screenRecord": "开始录屏",
|
||||
"netplay": "网络游戏",
|
||||
"gamepad": "控制设置",
|
||||
"cheat": "秘籍",
|
||||
"menuBack": "返回上级菜单",
|
||||
"normal": "正常",
|
||||
"all": "全部",
|
||||
"reset": "重置",
|
||||
"disabled": "禁用",
|
||||
"enabled": "启用",
|
||||
"playNow": "开始游戏"
|
||||
},
|
||||
"normalOptions": {
|
||||
"shader": {
|
||||
"label": "着色器",
|
||||
"options": {
|
||||
"disabled": "禁用",
|
||||
"2xScaleHQ.glslp": "2xScaleHQ",
|
||||
"4xScaleHQ.glslp": "4xScaleHQ",
|
||||
"crt-easymode.glslp": "CRT简易模式",
|
||||
"crt-aperture.glslp": "CRT孔径",
|
||||
"crt-geom.glslp": "CRT几何",
|
||||
"crt-mattias.glslp": "CRT mattias"
|
||||
},
|
||||
"default": "disabled"
|
||||
},
|
||||
"virtual-gamepad": {
|
||||
"label": "虚拟游戏手柄",
|
||||
"options": {
|
||||
"disabled": "禁用",
|
||||
"enabled": "启用"
|
||||
},
|
||||
"default": "enabled"
|
||||
}
|
||||
},
|
||||
"Control Settings": "控制器设置",
|
||||
"Player 1": "玩家1",
|
||||
"Player 2": "玩家2",
|
||||
"Player 3": "玩家3",
|
||||
"Player 4": "玩家4",
|
||||
"Update": "更新",
|
||||
"Reset": "重置",
|
||||
"Clear": "清除",
|
||||
"Cancel": "取消",
|
||||
"Close": "关闭",
|
||||
"Empty": "空",
|
||||
"Loading": "加载中",
|
||||
"Submit": "提交",
|
||||
"Description": "说明",
|
||||
"Code": "代码",
|
||||
"Add Cheat Code": "添加作弊码",
|
||||
"OK": "确定",
|
||||
"Add Cheat": "添加作弊",
|
||||
"Cache Manager": "缓存管理器",
|
||||
"Press keyboard or gamepad": "按键盘或游戏手柄",
|
||||
"Gamepad": "游戏手柄",
|
||||
"Keyboard": "键盘",
|
||||
"Set": "设置",
|
||||
"QUICK SAVE STATE": "快速保存状态",
|
||||
"QUICK LOAD STATE": "快速加载状态",
|
||||
"CHANGE STATE SLOT": "更改状态槽",
|
||||
"INSERT COIN": "插入硬币",
|
||||
"Press escape (esc) to clear": "按退出 (esc) 清除",
|
||||
"Netplay": "网络游戏",
|
||||
"Rooms": "房间",
|
||||
"Players": "玩家集合",
|
||||
"Player": "玩家",
|
||||
"Room Name": "房间名称",
|
||||
"Password": "密码",
|
||||
"Name": "姓名",
|
||||
"Quit Room": "退出房间",
|
||||
"Create a Room": "创建房间",
|
||||
"Set Player Name": "设置玩家姓名",
|
||||
"Player Name": "玩家姓名",
|
||||
"Password (optional)": "密码(可选)",
|
||||
"Select": "选择",
|
||||
"Start": "开始",
|
||||
"Menu": "菜单",
|
||||
"Decompress Game Core": "解压游戏内核",
|
||||
"Decompress Game Data": "解压游戏数据",
|
||||
"Decompress Game Patch": "解压游戏补丁",
|
||||
"Download Game Data": "下载游戏资料",
|
||||
"Download Game Core": "下载游戏内核",
|
||||
"Network Error": "网络错误",
|
||||
"Default": "默认",
|
||||
"default": "默认",
|
||||
"Save State Location": "保存状态位置",
|
||||
"Save State Slot": "保存状态槽",
|
||||
"Color Palette": "调色板",
|
||||
"No Sprite Limit": "无精灵图限制",
|
||||
"Enabled": "启用",
|
||||
"Disabled": "禁用",
|
||||
"enabled": "启用",
|
||||
"disabled": "已禁用",
|
||||
"Low": "低",
|
||||
"High": "高",
|
||||
"Very High": "非常高",
|
||||
"4 Players Support": "4 玩家支持",
|
||||
"Turbo Enable": "加速启用",
|
||||
"None": "无",
|
||||
"Both": "两者",
|
||||
"Region": "地区",
|
||||
"SuperFX Overclock": "SuperFX 超频",
|
||||
"Sound Quality": "音质",
|
||||
"GB Colorization": "GB 着色",
|
||||
"auto": "自动",
|
||||
"internal": "内部",
|
||||
"Internal Palette": "内部调色板",
|
||||
"GBC - Blue": "GBC蓝",
|
||||
"GBC - Brown": "GBC 棕色",
|
||||
"GBC - Dark Blue": "GBC 深蓝",
|
||||
"GBC - Dark Brown": "GBC 深棕色",
|
||||
"GBC - Dark Green": "GBC 深绿色",
|
||||
"GBC - Grayscale": "GBC灰度",
|
||||
"GBC - Green": "GBC 绿色",
|
||||
"GBC - Inverted": "GBC 倒置",
|
||||
"GBC - Orange": "GBC 橙",
|
||||
"GBC - Red": "GBC红",
|
||||
"GBC - Pastel Mix": "GBC 粉彩混合",
|
||||
"GBC - Yellow": "GBC 黄色",
|
||||
"Frameskip": "跳帧",
|
||||
"Solar sensor level": "太阳能传感器级",
|
||||
"Enable Turbo Buttons": "启用 Turbo 按钮",
|
||||
"Turbo Delay in frames": "以帧为单位的涡轮延迟",
|
||||
"Auto": "自动",
|
||||
"Aspect Ratio (Need to refresh page)": "长宽比(需要刷新页面)",
|
||||
"16:9 Resolution": "16:9 分辨率",
|
||||
"4:3 Resolution": "4:3 分辨率",
|
||||
"Player 1 Pak": "玩家 1 震动",
|
||||
"Player 2 Pak": "玩家 2 震动",
|
||||
"Player 3 Pak": "玩家 3 震动",
|
||||
"Player 4 Pak": "玩家 4 震动",
|
||||
"none": "无",
|
||||
"memory": "内存",
|
||||
"rumble": "震动",
|
||||
"Screen layout": "画面布局",
|
||||
"right/left": "右/左",
|
||||
"left/right": "左/右",
|
||||
"bottom/top": "底部/顶部",
|
||||
"top/bottom": "上/下",
|
||||
"top only": "仅顶部",
|
||||
"bottom only": "仅底部",
|
||||
"quick switch": "快速切换",
|
||||
"hybrid/bottom": "混合/底部",
|
||||
"hybrid/top": "混合/顶部",
|
||||
"Screen Rotation": "屏幕旋转",
|
||||
"CPU speed": "CPU 速度",
|
||||
"Sound output": "声音输出",
|
||||
"mono": "单声道",
|
||||
"stereo": "立体声",
|
||||
"OFF": "关闭",
|
||||
"ON": "开",
|
||||
"Fast Blitter": "快速Blitter",
|
||||
"Bios": "Bios",
|
||||
"Enable second memory card": "启用第二张存储卡",
|
||||
"Pad 1 Type": "Pad 1 类型",
|
||||
"Pad 2 Type": "Pad 2 类型",
|
||||
"Pad 3 Type": "Pad 3 类型",
|
||||
"Pad 4 Type": "Pad 4 类型",
|
||||
"standard": "标准",
|
||||
"analog": "模拟",
|
||||
"negcon": "negcon",
|
||||
"Enable Vibration": "启用振动",
|
||||
"Enable interlacing mode(s)": "启用隔行扫描模式",
|
||||
"Enhanced resolution (slow)": "增强分辨率(慢)",
|
||||
"Enhanced resolution speed hack": "增强的分辨率速度破解",
|
||||
"Aspect ratio": "长宽比",
|
||||
"CPU overclock": "CPU超频",
|
||||
"Force Neo Geo mode": "强制 Neo Geo 模式",
|
||||
"Diagnostic Input": "诊断输入",
|
||||
"download": "下载",
|
||||
"keep in browser": "保留在浏览器中",
|
||||
"Webassembly support is not detected in this browser": "在此浏览器中未检测到 Webassembly 支持",
|
||||
"Please upgrade your browser to the latest version": "请将您的浏览器升级到最新版本",
|
||||
"Missing mame config": "缺少 MAME 配置项",
|
||||
"Stop Screen Recording": "停止录屏",
|
||||
"Start Screen Recording": "开始录屏",
|
||||
"Take Screenshot": "截图",
|
||||
"Quick Save": "快速保存",
|
||||
"Quick Load": "快速加载"
|
||||
}
|
||||
35
static/data/minify/README.md
Normal file
35
static/data/minify/README.md
Normal file
@ -0,0 +1,35 @@
|
||||
|
||||
# Minifying
|
||||
|
||||
Before pushing the script files onto your production <br>
|
||||
server it is recommended to minify them to save on <br>
|
||||
load times as well as bandwidth.
|
||||
|
||||
<br>
|
||||
|
||||
## Requirements
|
||||
|
||||
- **[NodeJS]**
|
||||
|
||||
<br>
|
||||
|
||||
## Steps
|
||||
|
||||
1. Open a terminal in `/data/minify` .
|
||||
|
||||
2. Install the dependencies with:
|
||||
|
||||
```sh
|
||||
npm install
|
||||
```
|
||||
|
||||
3. Start the minification with:
|
||||
|
||||
```sh
|
||||
node index.js
|
||||
```
|
||||
|
||||
|
||||
<!----------------------------------------------------------------------------->
|
||||
|
||||
[NodeJS]: https://nodejs.org/en/download/
|
||||
33
static/data/minify/index.js
Normal file
33
static/data/minify/index.js
Normal file
@ -0,0 +1,33 @@
|
||||
const UglifyJS = require("uglify-js");
|
||||
const fs = require('fs');
|
||||
const uglifycss = require('uglifycss');
|
||||
|
||||
if (!String.prototype.replaceAll) {
|
||||
String.prototype.replaceAll = function(a, b) {
|
||||
return this.split(a).join(b);
|
||||
}
|
||||
}
|
||||
let files = [
|
||||
'nipplejs.js',
|
||||
'shaders.js',
|
||||
'storage.js',
|
||||
'gamepad.js',
|
||||
'GameManager.js',
|
||||
'socket.io.min.js',
|
||||
'emulator.js'
|
||||
]
|
||||
let code = "";
|
||||
for (let i=0; i<files.length; i++) {
|
||||
code += fs.readFileSync('../'+files[i], 'utf8') + "\n";
|
||||
}
|
||||
|
||||
function minify(source){
|
||||
const ast = UglifyJS.parse(source);
|
||||
return UglifyJS.minify(ast).code;
|
||||
}
|
||||
console.log('minifying');
|
||||
fs.writeFileSync('../emulator.min.css', uglifycss.processString(fs.readFileSync('../emulator.css', 'utf8')));
|
||||
const min = minify(code);
|
||||
console.log('done!');
|
||||
|
||||
fs.writeFileSync('../emulator.min.js', min);
|
||||
18
static/data/minify/package-lock.json
generated
Normal file
18
static/data/minify/package-lock.json
generated
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "emulatorjs-minify",
|
||||
"version": "1.0.1",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"uglify-js": {
|
||||
"version": "3.17.4",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
|
||||
"integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g=="
|
||||
},
|
||||
"uglifycss": {
|
||||
"version": "0.0.29",
|
||||
"resolved": "https://registry.npmjs.org/uglifycss/-/uglifycss-0.0.29.tgz",
|
||||
"integrity": "sha512-J2SQ2QLjiknNGbNdScaNZsXgmMGI0kYNrXaDlr4obnPW9ni1jljb1NeEVWAiTgZ8z+EBWP2ozfT9vpy03rjlMQ=="
|
||||
}
|
||||
}
|
||||
}
|
||||
22
static/data/minify/package.json
Normal file
22
static/data/minify/package.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "emulatorjs-minify",
|
||||
"version": "1.0.1",
|
||||
"description": "Minify the EmulatorJS javascript files",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "node index.js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/EmulatorJS/EmulatorJS.git"
|
||||
},
|
||||
"author": "Ethan O'Brien",
|
||||
"bugs": {
|
||||
"url": "https://github.com/EmulatorJS/EmulatorJS/issues"
|
||||
},
|
||||
"homepage": "https://github.com/EmulatorJS/EmulatorJS#readme",
|
||||
"dependencies": {
|
||||
"uglify-js": "^3.17.4",
|
||||
"uglifycss": "0.0.29"
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user