First of all, if you are writing your own Game Boy emulator, you don’t need to emulate the pixel FIFO! Almost nothing depends on it for correct rendering, it’s a lot more complex to implement than a scanline-based renderer, and it’s also significantly more difficult to debug than a scanline-based renderer.
My Game Boy emulator was both the first emulator I wrote and my first real project written in Rust. Needless to say, there’s a lot of room for improvement. I briefly thought about porting it into my multi-system emulator which doesn’t currently have a Game Boy core, but this also seemed like a good opportunity to go back and clean things up, and it frankly seemed easier to do a complete rewrite while using my v1 as a reference for trickier details (e.
This is a continuation of my attempt to get Titan Overdrive 2 working in my Genesis emulator. It will be more technical than Part 1 as fixing the remaining effects requires getting into low-level details of how the Genesis VDP functions, which these effects depend on.
When I first saw Titan’s Overdrive 2 demo I was blown away, both by the presentation itself and by how in the world they managed to push that out of the Mega Drive. After how much I struggled to get Overdrive 1 to work in my emulator, I just assumed that getting Overdrive 2 to work was out of reach.
The Titan Overdrive and Overdrive 2 Mega Drive demos are well-known for pushing the Mega Drive / Genesis hardware to its limits. I decided to try the first one in my own Genesis emulator and see what it would take to get it working!