Direct link to the first section, the CPU: http://imrannazar.com/GameBoy-Emulation-in-JavaScript:-The-C...
http://www.hnsearch.com/search#request/all&q=Gameboy+emu... http://news.ycombinator.com/item?id=2427963 http://news.ycombinator.com/item?id=2477582
Impressive as the emulator is, it's been suggested to him before (and he has acknowledged) that he shouldn't be running non-public-domain ROMs on his site. If he gets a C&D/DMCA takedown, I have zero sympathy.
It makes far more sense for the community to focus on the development of translators -- compilers -- from other languages to Javascript, and on the optimization of Javascript engines to run such translated code. I know such systems exist (most notably for Java and C), so I'm confused by the disproportionate amount of press stories like this one get.
Of course I'm ignoring the fact that one may wish to rewrite code in Javascript because they find the language interesting. I can't say I'm one of those people.
(Note: I don't mean this to knock the author's work. Writing emulators is interesting and fun, and I'm sure he did a good job of it. But a Game Boy emulator in Javascript (the language) is no more interesting than a Game Boy emulator in PHP. The interesting part is that it is a Game Boy emulator in Javascript (the platform), which IMO should not necessitate a reimplementation of a Game Boy emulator in Javascript (the language).)
Porting or re-implementing these kinds of oddball programs is a way to explore the possibilities. How fast can Javascript really run? Are the graphics APIs sufficient? Should browsers support USB joysticks? Cameras? In other words, helping to see where the straightjacket is loose. And, ideally, encouraging the browser developers to cut some of the straps.
Why does everything have to be on the web? As with most other things, a mixed approach is the best one.
Works far better than some other GBC emulators I've seen though, nice work.
I'd love to see an analysis of how the different major browsers handle this emulator.
Firefox 4+ runs it overall well (Slight GC hiccups in Firefox 9 though).
IE9 runs it like crap (JavaScript execution is like firefox 3.6, slow as hell).
Opera 11.6 can't run it, because it doesn't follow the typed array spec, causing the emulated cpu to crash. Works in older opera versions though, but just a little faster than IE9.
Safari 5.1.X reloads the page when ever a game starts, because of a js engine regression that happened in safari 5.1.1. Works in webkit nightlies though, and Safari 5.0.X
IANAL, though, so if the person who made this gets any nastygrams, they should talk to someone who is.