webЯcade – WASM based retro emulation on any device
github.com
github.com
Hardware emulation isn’t a solution. An FPGA emulator isn’t intrinsically more accurate than a software one, and documentation and schematics that are used to implement emulators can be incorrect and don’t specify ‘undefined behavior’ which was very much used reliably by software developers.
The approach adopted by MAME has proven to be the only reliable: you have to measure some output on a real working system and compare it to the emulator behavior, but this can be impractical and becomes moreso over time as systems become more difficult to operate. (E.g. I can’t even operate most 8-bit computers without some kind of mod because I don’t have a CRT television anymore).
Not really (and you don't always want perfect accuracy anyway).
You don't only need to validate the operations of the machine, but also the timing with which it operates.
And I don't mean just the clock/frequency/operations-per-second - it's everything.
Every little chip that performs a calculation, every little wire that sends a message.
Not a popular game, but the cartridge for Morita Shogi 64 had a built in RJ-11 jack and allowed online multiplayer.
Plenty of SNES games included a SuperFX graphics coprocessor in the cartridge. Star Fox is probably the most popular example. SuperFX games were popular enough that it was quickly emulated successfully. But you can't treat the cartridge as just a file system abstraction on SNES.
The instruction timing and such fiddly low-level details is most visible in systems programmed in low level, such as older consoles.
Modern systems tend to be programmed in higher level languages, which works much better to HLE (high-level emulate), since they tend to be programmed in a way that cares less/not at all about underlying hardware fiddly details.
So when you are emulating the NES, these details matter way more than when you are emulating the Switch for example.
I believe there are some psx test Roms that no emulator gets 100%. I know for a fact there are n64 test Roms that don’t get close on an emulator.
You point on hardware emulation stands regarding it doesn’t automatically mean more accurate emulation. Although it lends itself to be more accurate due to you “can’t make a software thread for each discrete component” software problem as well as “how do I take controller input and when” as well which are wayyyy easier on fpga than software.
MAME literally scans the dies to read the chips and understand their logic. FPGAs faithfully recreate this as well. and no, you can still run a 8bit micro on whatever display you want. Projects like dolphin and BSNES documented the hell out of everything they do with a goal of accuracy in mind.
Recognizing a problem doesn’t put down the developers who will have to work on it, rather it highlights how important their jobs are and how valuable they are as a resource!
As well as that, many people are decapping entire chips and games, just for exact emulation. So, no, you're talking out your ass, sorry.
Otherwise when someone finds a cool game, they can't tell friends about it without that friend having to hunt through menus.
Also, search engine indexing ought to be possible so that you can search a game name on Google/DDG and go direct to it.
> Stand-alone links (shareable direct links to games)
https://github.com/webrcade/webrcade/releases/tag/0.0.5
However, with the exception of a few indie games, you have to provide them yourself. So the search engine idea probably won't work.
edit: should have scrolled down in the readme more, they say in the non-goals section:
Directly playing locally stored game content (ROMs, etc.) (Technically possible by using a local web server, but not a primary use case)
an example docker compose file:
version: "2.4"
services:
emulatorjs:
#from the linuxserver.io fleet
image: lscr.io/linuxserver/emulatorjs:latest
container_name: emulatorjs
mem_limit: 1g
cpus: 3
environment:
- PUID=1000
- PGID=1000
- TZ=America/Chicago
volumes:
# must declare inner folders before the global data folder
- "/path/to/folder/NES:/data/nes/roms:ro"
- "/path/to/folder/SNES:/data/snes/roms:ro"
- "/path/to/folder/Atari_2600:/data/atari2600/roms:ro"
- ./data:/data
- ./config:/config
ports:
#admin and config page
- 3000:3000
#frontend
- 80:80you can also use specialK injector independent flip against browser.
this is as much as you can do to reduce browser output latency (it has 1-2 frames of internal latency compared to emulator).
It could be made less Corporate-Powerpoint, for example:
> WebЯcade is a web-based front end for playing games within the browser on many platforms (Xbox Series X|S, iOS, Android, Windows, macOS), with gamepad (Bluetooth and USB) support.
Think about Lode Runner,or THAT (looked like Atari) flying bird game. Also the infamous Nethack, you can even telnet to the server:
telnet alt.org
ssh nethack@alt.org
Original setup guide: https://youtu.be/ROlxLLtR3nE
More recent update: https://youtu.be/CtPtDszpq-0
I forgot how brutally hard that game was.
I suppose they have the “Toys R Us” kind of thing in mind with it.
The German Wikipedia page explicitly mentions that the Я in Toys R Us is not supposed to be a cyrillic letter:
> https://de.wikipedia.org/w/index.php?title=Toys_%E2%80%9CR%E...
It is highly likely that quite some people in particular in East Germany considered the Я to be the Ya letter since they learned Russian in school.
But this is not the only confusion: As a child when I was learning English in school, the first association that the "Toys [a]R[e] Us" brand awaked was "wrong grammar". Don't the native speakers of English who came up with this brand name know the grammar of their mother tongue?! No wonder that the German Wikipedia article about Toys R Us also explains this point.