JSNES: a Nintendo emulator built in JavaScript

A drawing of a cartoon man pointing upwards

Heads up! This post was written in 2009, so it may contain information that is no longer accurate. I keep posts like this around for historical purposes and to prevent link rot, so please keep this in mind as you're reading.

— Cory

I remember, not too long ago, arguing with people who said that JavaScript would never be as good as Flash. Granted, at the time many people were afraid of JavaScript and, thus, it wasn't used as widely as it is today. With the introduction of popular libraries such as jQuery, Prototype, MooTools and many, many, many others, JavaScript has been on the forefront of the Web 2.0 movement. In fact, it's rare today to visit a webpage that doesn't use JavaScript for at least something. Sure, Flash is still pretty popular, but trends seem to indicate that people are moving further away from it for design and reserving it for videos, file uploaders, online games, and high level web-based applications.

So why bother comparing JavaScript to Flash? Everyone knows Flash is better, right?

And by better, we can pretty much agree that Flash can do smoother animations, higher level programming, awesome 3D stuff...the list goes on. In fact, you can make an entire website out of pure Flash if you so desire, and it will look exactly the same in every browser. Why use anything else?

Well, Flash has its problems, and that goes without even mentioning the fact that it's a closed-source, proprietary technology. (Hint: JavaScript isn't.)

But still, you can't do much when it comes to JavaScript. I mean, it's slow, clunky, and each browser does things just a little bit differently.

Yes, this is very much true. Until now, and even still to some degree, JavaScript remains an emerging technology for more advanced applications such as animation, user interface, and even games, but it is by no means primitive. Proof of this lays with JSNES, an 8-bit Nintendo Emulator that was built purely in JavaScript.

Screenshot of Super Mario Bros. 3

If you're running Internet Explorer right now, don't bother with the link. You'll need to switch to Chrome if you want to play it at near-normal speed. Even Firefox's JavaScript engine is too slow, but it's playable...just really slow.


So there you have it. No, JavaScript isn't anywhere near Flash in speed or capabilities, but it's definitely getting there and it's making plenty of waves in the process.