🎉 Announcing Playable Quotes: https://t.co/xHK2Xvm97P
What is a Playable Quote? It’s like a quote from a book or a clip of a movie. But for games, and it’s something you can play. You can feel how the game responds to your specific choices.
Retroactively add real-time visual analytics to pre-existing recordings of pre-existing games, then grab the controls to see how play could have gone differently.
We are starting to organize quotes onto an interactive map (using Leaflet). Unfortunately, Metroid II's code doesn't use a consistent global coordinate system, and each hand-created overview map image lays out the world differently.
Geospatial content is pouring in (at least the metadata for it so far, quotes to come soon)! We've got tag-based filtering set up, and full-text search over descriptions is coming soon.
We got efficient memory tracing for the V86 desktop emulator working, so we can estimate that a viable quote of Doom's opening scene might weigh about 2MiB (or about 1.5% the size of raw disk+memory data that would be needed to share a virtual machine image plus a snapshot).
@dbljumpgames I think if they were going to flag our files, they would also be flagging PICO-8 games (they use a similar encoding: https://t.co/E8ZD5I3yhJ). We haven't heard complaints from that community yet.
🎉 Announcing Playable Quotes: https://t.co/xHK2Xvm97P
What is a Playable Quote? It’s like a quote from a book or a clip of a movie. But for games, and it’s something you can play. You can feel how the game responds to your specific choices.
@dbljumpgames Playing a quote does involve arbitrary code execution, but that code executes inside of the Game Boy emulator. And the emulator itself is running inside of your browser's JavaScript sandbox. Web-based quote players should be about as safe to use as any other web page.
We got Doom running in the instrumented emulator. It looks like a viable quote of fighting an imp might cost 8KiB of copied disk data plus 1MiB of copied memory data (taken from a VM with a 64MiB disk and 64MiB RAM).
The first partial (but working where it matters) playable quote of a desktop videogame was recorded and played today. It was from REVERSI.EXE running on Windows 1.01.
Tenmile has gamepad support now. Any W3C Standard Gamepad should work, but we haven't tested with more than one gamepad at a time. https://t.co/xHK2Xv565P
Tonight we're down to a 2x/4x slowdown on reads/writes, and it doesn't even depend on native SIMD support anymore. It's basically just https://t.co/nHwHSElpzr
For emulators/VMs implemented in native code, we have been leaning on memory protection hardware to efficiently check every memory access against the quote's bounds. However, this doesn't work for emus implemented in WebAssembly because there is no mprotect-style API.
In our experiments, this gives a worst-case fast-path slowdown of ~5x (with the same ~10x slow-path slowdown for out-of-bounds access). WebAssembly may someday gain native memory control (https://t.co/PG0av1zv0L), but we're happy to have squashed the overhead this far.
These folks got Bochs (an emulator for x86_64) running in WebAssembly: https://t.co/GQeFSBamEP Although they don't have any graphical demos, it is exciting to see 64-bit systems emulated in the browser environment with reasonable efficiency.