JavaScript Gameboy Color Emulator
Prosthetic_Lips writes "A programmer named Grant Galitz has released a GameBoy Color emulator written in HTML5/JavaScript, and it will run ROM images stored locally. What's amazing is that it runs the games at a playable speed. We discussed a different, but similar project six months ago, but it seems like this one is pretty complete at this point. It's also open source."
Holy shit someone made JavaScript useful?!?
It's really cool, and I bow to his technical prowess for getting it working, but I have to ask why anyone in their right mind would choose HTML5 and Javascript to implement a Gameboy emulator???
These posts express my own personal views, not those of my employer
http://i.imgur.com/HX3pF.png
Render me impressed. The sound is a bit of a mess but works better than that javascript Doom from some days ago.
I don't have a ROM for pokemon gold/silver but they might work as well. Pretty cool.
(Why pokemon and why should you care? It squeezes the gameboy until the last drop)
Ring in sick...
Google Pokemon ROMs...
Download Pokemon Gold...
I'll be back in 20 hours...
It's also open source.
Are there any JavaScript applications which aren't?
If my comment didn't sound as good in your head as it did in mine, then I guess we all know who's to blame
They could have at least included a demo ROM to run. *grumble*
Remember back when JavaScript was good for little more than web forms and maybe some silly sparkling rainbow ponies? It's amazing how far this little language has come. I think a lot of these developers start projects like this just to show they can. Preconceptions die hard with developers. There's a lot of developers out there still afraid to use anything other than C++ for a basic desktop application because, "those other languages are slow". In think in the open source and *nix communities attitudes like this are the reason we end up with a lot of unmaintainable messes of C, because anything else is a "toy language". Sure, size and speed are still important considerations, we're all familiar with a few modern day programs that can eat a gig of memory and bring a dual core to a crawl, but it is all too common for people to blame this on the language and not the implementation.
So I think projects like this are awesome because they can help shatter these perceptions. Now I don't do any web programming these days, so I'm pretty unfamiliar with what enhancements have been implemented in the language and what tools and frameworks have been developed, but from looking at the code for a lot of these large JavaScript and HTML 5 projects, I still think the language has a long way to go before it can become a preferred tool for major software development. Large projects in most dynamic languages seems to still be a messy undertaking, after all, these languages were designed for ease of use and speed of development and I doubt they were built with an eye towards building large applications. So it will be interesting too see what the future holds, as "the cloud" seems to be the way of the future (like it or not) and we'll be seeing things like JavaScript being used in ways we never thought possible. It will be especially interesting to see what Microsoft has up their sleeve with the recent reports that Windows 8 will put HTML 5/JavaScript interfaces to the forefront. Love or hate Microsoft, I could see some interesting development tools for web based programming coming from them in the near future.
Finding that your machine is fast enough? Noticing that previous generation native software runs at a good speed, providing you the security of physical barriers and an uptime which doesn't require you to rely on hundreds of cooperating network, storage and service companies? Worried that it's too easy to trust the admins in your own office more than any number of competitors, foreign governments and bored hackers?
Then you want... THE CLOUD. Turn your PC into a graphical terminal and turn the UI and responsiveness clock back 15 years. Show off to your friends that, thanks to the uniquely layered framework making up THE CLOUD, only you have a machine modern and beefy enough to emulate a 4MHz Z80. You too can have what you had with Windows 95, today!
I did this NES emulator for fun the other weekend.
It's running DK, renders in WebGL for fun.. Leans heavily on typed arrays, so you'll need the latest FF or Chrome (Chrome seems to run a tad faster). It's nowhere near fully optimized or playable. It'll probably crash your browser . Was more of a test of JS under load than anything else.
Wait a sec, is it even possible to hide Javascript code? Thought it was open by design, being client side and all...
this is cool, also that it accepts the base 64 string of the encoded rom file. but unfortunatly i cant post the base64 encoded pokemon gold to slashdot due to "illegal characters" :)
but why oh why are the keys Z, X used ? on my german keyboard this is an EPIC FAIL...
I've no issue with stuff being online. I love the Internet, it is a major part of my life both in terms of entertainment and profession. However let's be straight as to when it is and isn't useful. This "Let's do everything in a webbrowser," shit is stupid. No, let's not. There is nothing wrong with local, native apps and indeed there's efficiency advantages to be had.
Maybe someday we'll have processors so ridiculously overpowered it won't matter, you'll be able to run everything in a very high level language, all sandboxed up, with all kinds of crazy overhead and still have great performance and do it on less than a watt. However until that day, I think there's plenty of room for more efficient things on your computer.
That is all, of course, not to mention any of the security or privacy concerns you note.
I like the progress of technology but I dislike the fadism. People get in to these various fads with no real thought of if they are a good idea for everything. Currently "the cloud" and 3D video top my list of stupid fads. Not that having remote, distributed, data storage and computing is useless in all cases, but we had that before "the cloud." "The cloud" is rather ill defined and just seems to be BS speak for "Let's do everything somewhere else online because... well I don't know but it is an awesome fad!"
Seriously people, use the right tool for the job.
Nicely done!
Cool, but not as cool as the JavaScript C64 emulator.
My other account has a 3-digit UID.
... I do not think it means what you think it means. This is a story about an emulator which runs client-side and can read local ROMs. Just because the magic words "Javascript" and "HTML" are in there doesn't mean it's "in the cloud".
Is it possible to make something like or we will be doomed to slow interpreted code?
Link's Awakening at work? Challenge accepted.
My point is that, if you were happy using non-native code, no "walls" have ever stopped you on the iPhone.
Three differences:
Ugh, every time I hit the space bar it jumps down the page like a 'tard.
They could have at least included a demo ROM to run.
Take your pick.
My JavaScript gameboy color emulator is not related to the one the op has you believe was incompletely done months ago, that's imran's and it's still an incomplete one. The sound may sound bad, it's not my fault, it's actually your browser, since in some cases I need to fallback to flash outputting the audio due to a lack of a JavaScript API to drive the realtime audio. Try running it in firefox 4 for better audio. And for those saying this is another gameboy color emulator in JS, nope, you're just thinking of the incomplete and toy gameboy only ones on the Internet that only can run like 5 games ok, with everything else crashing.
This definitely opens the door to retro gaming on the iPad... Page loads, but I guess I'd have to save my ROMs at an Internet accessible URL. Probably going to need to add some buttons and stuff to the page...but I can envision the possibilities. NES anyone?
It's not the only JavaScript classic system emulator.
For example, here are TWO different JavaScript Amstrad CPC emulators: http://www.cpcbox.com/ http://roland.antoniovillena.es/
A Spectrum emulator! http://jbacteria.antoniovillena.es/
TRS-80: http://jtandy.antoniovillena.es/
Of course the first two systems here are 4MHz Z80s, not 8MHz Z80s like the Gameboy Color.
The author really needs to sort that space bar issue out.
The walls apply only to native code
Then please allow me to rephrase: The 5 MB wall, speed wall, and camera/microphone wall apply to non-native code. I'd like to hear why these aren't walls.
Since HTML is the future of mobile applications this is a good place to start! All this programmer needs is some UI help because that is one ugly emulator.
I herd u liek Pokemans: http://www.grantgalitz.org/PokemonCrystal/
Week wasted..... AAAAAWWWW YEEEEAAAH
Has anyone tried it. I am interested to know if it plays sound and if yes, how does it manage to do that. Is it using any javascript library to play sound ??
Not as cool as GEM, the Gameboy Emulator for MSX, which emulates a good percentage of games (incl. Zelda and Metroid 2) at playable speeds on a 7MHz Z80-derivative MSX turboR.
Cool, but not as cool as the JavaScript C64 emulator.
Umm, whatever your beliefs about the relative "coolness" of both the C64 and the GBC, it can hardly be argued that the thing you linked to is cooler than this GBC emulator. Not only is the GBC considerably more complex as a machine, the emulator is surprisingly complete and very usable.
This author takes full ownership and responsibility for the unpopular opinions outlined above.
Wow, we have a thread about a Javascript Gameboy Color emulator, and nobody has mentioned Nezulator, the Javascript NES emulator.
What's amazing is that it runs the games at a playable speed.
It's really a sad state for software in general when something like this is considered "amazing".
But does it work in iOS?
Coder's Stone: The programming language quick ref for iPad
I've got pretty decent hardware, and tried the site in several modern browsers (among which Firefox and Chrome) and I'm getting approximately 0.3 f/s. I'll stick with a normal emulator, thank you very much.
Kind of old news ... HTML5 Nintendo emulators have been around and open source for about 2 years now ...
http://benfirshman.com/projects/jsnes/
http://code.google.com/p/gwt-nes-port
http://zelex.net/nezulator/
While this may not be a the most ideal use of Javascript - albiet a fun one.
It demonstrates that we can now do things with Javascript that were previously only
the domain of plugins like flash.
Think about it like this - most of the old 8bit / 16bit era games and early PC 3D games (and software) can
easily be running in HTML5 / Javascript in a cross platform way. By this I do not mean
via emulation, This shows us that we have the power to do these things NATIVELY with ease.
I find that prospect pretty exciting that no-longer will we be dependant on a computing platform / operating system
to enjoy the same things.
Here's an interesting project for someone - port the JVM into javascript....
This is months old, and this was covered on Slashdot months ago already.
Besides, there's a Canvas-based NES emulator in progress, too.
I am not devoid of humor.
Obligatory, and still great:
http://www.elizium.nu/scripts/lemmings/
http://www.javascriptgaming.com/2009/03/dhtml-lemmings.html
http://crisp.tweakblogs.net/blog/3881/dhtml-lemmings-primer.html