Aditya Ravishankar builds browser versions of classic games, such as Command & Conquer, Prince of Persia and Commandos, in HTML5 and JavaScript.
HN links it as the home of a browser rebuild of Command & Conquer. A commenter notes the source is hand-ported JavaScript, not Emscripten output.
Yes, there is definitely a disparity between native code and Javascript running in the browser. Yes, different browsers have different performace bottlenecks, and yes, different hardware configurations and GPU also have a huge impact.
On the other hand, you're talking about having problems recreating games that ran on 16Mhz CPUs with 1MB of RAM, which makes me somewhat sceptical.
I don't mean to be disparaging, but I expect that there's something in your main game loop that is killing your performance, and that even if you ported it to asm.js or C++ you would still have the same bottlenecks (perhaps masked better on modern hardware by the better native performance).
As a counter-example, a reasonably complete and functional HTML5 port of a game from the 90s:
http://www.adityaravishankar.com/projects/games/command-and-conquer/
Ravi Shankar (a multi-talent it seems :P) ported it by hand, I think. Check out the source: http://www.adityaravishankar.com/projects/games/command-and-conquer/release/cnc-0.6.4.js
Doesn't contain anything I connect with Emscripten (stack and heap references). Actually, not even the object fields names have been obfuscated! It is quite readable. But I'd feel bad minifying a port of a game I don't own, too. Maybe that's why.
Late to the party, but worth throwing the browser rebuild of tiberium wars out there.
- https://www.adityaravishankar.com/projects/games/command-and-conquer/
C&C was already done: http://www.adityaravishankar.com/projects/games/command-and-conquer/
http://www.adityaravishankar.com/projects/games/command-and-conquer/