I finally solved a month's-long problem with my GB emulator. For the longest time I thought it was something wrong with my emulated CPU (it wasn't
I should have trusted Blargg's tests when they said everything was ok). Turns out the issue was with the way I was emulating the LCD. Apparently the way a game scrolls the background is applied per-scanline (just like the Window). Up until now, I was able to get away with just rendering the whole LCD frame at every VBlank and applying the scrolling then. Changed some code, and boom, games like Super Mario Land play perfectly (well, almost, still no DAA instruction). I need to come up with a better method of generating the background tile data, but otherwise it's all good for now.
Also implemented one type of MBC1 (no RAM banking, no battery saves), so more games can boot. Just need to get 8x16 sprites working, and then I can finally play games like Battle Arena Toshinden (a classic game I was introduced to by my friends way back before any of us had a GBA). Also booting Bomberman GB (spent hours on this one as a kid). My GB emu's advanced enough where I feel like I'm programming my own nostalgia
Lastly decided on a name: Game Boy Enhanced (uncreative, I know). Gonna focus on accuracy (duh), and enhancements like scaling filters, possibly custom palettes, a thorough debugger, and other stuff.
I should have trusted Blargg's tests when they said everything was ok). Turns out the issue was with the way I was emulating the LCD. Apparently the way a game scrolls the background is applied per-scanline (just like the Window). Up until now, I was able to get away with just rendering the whole LCD frame at every VBlank and applying the scrolling then. Changed some code, and boom, games like Super Mario Land play perfectly (well, almost, still no DAA instruction). I need to come up with a better method of generating the background tile data, but otherwise it's all good for now. Also implemented one type of MBC1 (no RAM banking, no battery saves), so more games can boot. Just need to get 8x16 sprites working, and then I can finally play games like Battle Arena Toshinden (a classic game I was introduced to by my friends way back before any of us had a GBA). Also booting Bomberman GB (spent hours on this one as a kid). My GB emu's advanced enough where I feel like I'm programming my own nostalgia
Lastly decided on a name: Game Boy Enhanced (uncreative, I know). Gonna focus on accuracy (duh), and enhancements like scaling filters, possibly custom palettes, a thorough debugger, and other stuff.
