CrabEmu

Because of my renewed interest in Z80 and wanting to better learn assembly programming, I ultimately want to do a bit with Game Gear/SMS coding. For this though, an emulator with at least some basic debugging facilities would be useful. After searching Linux Game Gear emulators, none really had what I was looking for.

On my first attempt, I decided Dega looked interesting, it has source available. The two major turn offs of Dega was the Z80 core which is x86 assembly, which is obviously not portable and it’s license which basically says, do what you want to the source, as long as it’s not sold. Now, I don’t ever plan on selling my changes, but the license is still a bit undesirable. Regardless, I did a bit of work seeing how hard it would be to rip out the Z80 core and drop in a new one. I had a pretty descent start, and things were starting to look promising, but the above two issues kept lingering so I decided to look elsewhere.

Enter, CrabEmu. Now, this emulator got immediate bonus points for being developed by Lawrence Sebald (often known as BlueCrab.) I’ve know him from KOS for quite some time. CrabEmu is mainly developed for Mac OS X, but also has a Dreamcast and Qt port. The entire emulator core is written in C (so it’s portable), and the Qt port had a lot of the work already done for me. It’s also released under the GPL v2 which is nice. So, it seemed like a good fit for what I wanted.

So, I grabbed the latest source I could find (0.1.9) Created a git repo out of it to track my work and started working on adding in a debugger. By about the time I had the Z80 CPU register debugger implemented and working I finally caught BlueCrab on IRC and told him what I was working on. He decided that it was past due for him to have CrabEmu’s svn on sourceforge (where the project is hosted.) He also gave me commit access so I could help maintain the Qt port. So, here we are now. I’ve got the CPU and VDP debugger on par with the OS X version of CrabEmu. I’m looking into a few other issues the Qt port has, and thinking of other features to add.