After a fair amount of work I'm nearly at the stage where original gameboy emulation is working well. Apart from some sprite glitches and minor bugs that have been hard to track down the emulator is looking pretty good. As proof, here's a video of me playing some Link's Awakening.

Some of the funnier bugs that I've encountered during emulator development have been great. These include getting to the second level of Super Mario Land and plunging through a moving platform into the abyss because I'd forgotten that a bug was messing with the game's collision detection.

Little does Mario know, that platform is incorporeal to him. He's trapped.
Little does Mario know, that platform is incorporeal to him. He's trapped.

Usually graphical bugs are just strange but when a minor error in an instruction breaks a game's logic, then the results can be pretty funny.

The above video shows a bug arising from a problem with a right rotate instruction. Who would have expected that was the problem?

For those interested the source is hosted on gitlab.