Monday, February 14, 2011
My fascination with emulation has still not petered out and I am still making the occasional progress. My Nintendo emulator now supports basically a bijillion different mappers and is a bit faster, although I still have not gotten around to creating a pixel accurate PPU so the accuracy has really remained unchanged. While I was working on speed optimizations I had noticed that the Silverlight build of it had not been compiled with the optimize flag, now that I remedied that it is actually pretty playable but the UI is still very lacking. You can check out the latest Silverlight version here. About a week ago I started working on a Gameboy emulator for a bit of fun, I have temporarily titled it GB-o-Tron. I intended my GB emu to be an extremely short project without super concern for accuracy or a GUI of any type, I just wanted to get some knowledge of another platform so that I can make educated comparisons with the NES I know and love. Just being able to run Pokemon Yellow without sound was my initial goal, and now in only a week I've accomplished that.
Wario Land II (an awesome game) running in Super Gameboy mode
GB-o-Tron currently supports the Classic Gameboy, the Gameboy Color, and the Super Gameboy, and can actually play a fairly large percentage of games glitch free. Working with the Gameboy instead of the NES has been quite an enlightening experience, the Gameboy has been trivial to emulate compared to the NES despite the NES having a very active and helpful community with endless documentation. Basically all my Gameboy knowledge has come from a single document written by nocash (you can check it out here
) and a few glances at the VBA and Gambatte source code, and yet my Gameboy emulator can probably run a higher percentage of games then my Nintendo one can. The Gameboy uses a z80 processor which I found more complicated than the 6502 of the NES but was still quite trivial to implement. The BIG difference is in how simple the GBs video registers are, and how they don't rely on nearly as much obscure or undocumented behavior as the NES ones tend to. Also the Gameboy uses very standardized mappers that are incredibly simple, I currently only support 3 different Gameboy mappers and outside of things like the Gameboy camera I've almost never run into a cartridge it can't load. Whereas in the Nintendo world I have about 60 different mappers 99% of which are VASTLY more complicated then what you would see on the Gameboy. Just having a built in scan line counter in the Gameboy has replaced the required feature of most NES mappers. Anyway I'm not sure if I'll just abandon GB-o-Tron now or what, audio support would be nice and I have nothing against emulating it, I just hate all the hassle it brings with new dependencies to output the sound and all the work involved with syncing the video to it. Also as an almost completely unrelated related point I semi-recently read the book Racing the Beam
which was actually pretty interesting, and I would recommend it to anyone else interested in retro computing. It doesn't go super in-depth or anything but it has some interesting facts about what developers had to go through to create games on the Atari 2600, and it also has some lovely diagrams which is always nice.