3 ms·
The MOS 6502 [0] was an 8-bit CPU that powered many systems from the 70’s and 80’s, including the Atari game consoles, Commodore 64, Nintendo Entertainment Syst
by NobodyNada 7y ago
The MOS 6502 [0] was an 8-bit CPU that powered many systems from the 70’s and 80’s, including the Atari game consoles, Commodore 64, Nintendo Entertainment System, and early Apple computers. It could also be considered the ancestor of the ARM architecture.
Visual 6502 [1] is a transistor-level simulation of the 6502, written in JavaScript. It allows you to investigate how the real hardware behaves in response to some input, and it makes it possible to investigate the circuitry responsible for this behavior. It has proven an invaluable resource in recent years for developers and emulator authors to nail down and document all the weird quirks of their 6502-based hardware. The simulator core is also very useful for modeling other 80’s hardware, such as the NES’s video and audio systems.
Looking at this project’s GitHub [2], it appears this is a rewrite of Visual 6502 that compiles into WebAssembly, resulting in vastly improved performance compared to the original JS implementation.
[0]: https://en.wikipedia.org/wiki/MOS_Technology_6502 https://en.wikipedia.org/wiki/MOS_Technology_6502
[1]: http://www.visual6502.org/JSSim/index.html http://www.visual6502.org/JSSim/index.html
[2]:https://github.com/floooh/v6502r https://github.com/floooh/v6502r
- jeffalyanak 7y agoTo add a bit of anecdotal context to how significant the performance boost is, I didn't even have to look at the source code to know that this runs far, far faster than the original.
- leoc 7y agoHere's a nice talk video covering the story from the origins of the 6502 to the Visual 6502 (but not the wasm Remix): https://www.youtube.com/watch?v=fWqBmmPQP40 https://www.youtube.com/watch?v=fWqBmmPQP40 .
- flohofwoe 7y agoTBH, the main factor for the smoother performance is that rendering the chip visualization is handled very differently than the original visual6502.org. Instead of using 2D canvas, the "remix" uses WebGL and offline-precomputed static vertex buffers. The actual simulation is most likely also faster than the original JS implementation, but I haven't measured that. This is done by https://github.com/mist64/perfect6502 https://github.com/mist64/perfect6502, which is a rewrite of the original JS simulation code to C. but there's only at most one CPU half-cycle running per 60Hz frame, so the actual CPU performance for the simulation is hard to compare with visual6502.org which I think is running "unthrottled".