The audio issues lots of people here are experiencing is not actually due to the emulator running slow. It's because of bugs in the various browsers and the fact that browsers like google chrome and opera take more time blitting than running the CPU emulation in JS. I render all the gfx in JS, I only blit them at the end of each iteration via a canvas-wide putImageData. Yeah, chrome can't run it fullspeed when your window is maximized, but not for the reason you're thinking of (webkit is retarded and takes up a whole core to render even at 20 fps). The gameboy advance emulator that's still being coded does run slower, but dynarec is being worked on to fix that. GBA games can be dynarec'd because they don't require as much clock cycle accuracy as GBC games. The dynarec is still going to land afterwards once the interpreter is fully baked. And yes, scaling of the sprites and BGs is done in JS, not canvas, because canvas is believe it or not slower. Yeah, I'm calling out the sucky gfx performance in webkit alright.