
GameBoy Color emulator entirely in JavaScript+HTML5 - grantg
http://www.grantgalitz.org/DonkeyKongCountry/
======
T-R
Impressive, but might I suggest using a public domain ROM, instead of exposing
yourself to a lawsuit:

<http://www.zophar.net/pdroms/gameboy.html>

~~~
city41
Or just have the user load a rom locally, like I do with my little NES ROM
painter[0]. Nintendo strikes down hard on emulation like this. Although I see
why he chose DKC, that is one beautiful GBC game.

[0]<http://www.mattgreer.org/exercise/1nespaint>

------
jambo
I'm getting "Please try using a standards compliant browser." in Safari 5 &
Chromium 12.

[edit: fix confirmed]

~~~
malnourish
I am as well in Firefox 4.

~~~
grantg
Edit: Fixed

------
DarkShikari
What would be even more interesting is a JIT-based emulator that worked by
compiling bytecode _into Javascript_ , then relying on the browser to compile
it back into machine code.

A machine-independent, JIT-compiled JS emulator might actually end up being
faster than some purely-interpreted native-code emulators. And unlike a purely
native JIT emulator, it wouldn't need a compilation component (the browser
would do that itself).

Obviously such a thing would be dramatically slower than a native JIT emulator
-- but surprisingly few emulators are JIT-based.

(Possible catch: I know for a fact that some Nintendo DS games use small
amounts of self-modifying code. This probably is true of previous generations,
too.)

~~~
grantg
Not a good idea with hand-coded ROMs for CPUs that are in single-digit MHz
that use interrupts liberally, it would cause code cache invalidation a lot.

Some stats for SML2 running (Audio ON (web audio for mac in about:flags for
chrome, mozAudio for Firefox 4), scaling OFF):

Chrome 12: <http://i.imgur.com/JjpT5.jpg> 27.0% CPU load

Firefox 4: <http://i.imgur.com/yEzzw.jpg> 68.6% CPU load

------
wazoox
Impressive. Any information on the inner workings?

------
geuis
"Could not initialize the emulator properly. Please try using a standards
compliant browser."

Getting this in Chrome 10.

I think your project needs a little love.

------
DiabloD3
Doesn't seem to work in Firefox.

~~~
DiabloD3
Er, whoops, it takes about 5+ minutes to load. Seems to work fine.

------
grantg
x is A

z is B

shift is Select

return is Start

D-Pad is Joypad

------
tudorizer
Why do you say it's an emulator? Looks like a ported game to me. Ported in JS,
that is.

~~~
DiabloD3
Compare it to the original on a GBC or an emulator. It looks and sounds just
like it.

~~~
ubertaco
Ported is different from emulated though. Ported involves altering the game
itself to run on a different platform. Emulation is building a virtual version
of the original platform that does "translation" of sorts between the original
platform's methods/attributes/etc and the new platform, leaving the game
itself unaltered.

