Weekly post assuring you guys the corgi is still alive. 🙂
I fixed a problem with the ADC/SBC instructions (add/subtract with carry) relating to how the carry and overflow flags were updated – this allows Harvest Moon DS to boot, but it soon crashes afterwards due to unimplemented graphics registers. I’m trying to test other games as well, but many of them get stuck on a “save data error” screen. Which makes sense, as I’ve yet to implement that.
The way CorgiDS handles drawing to the screen is also funky:
As you can see, the Digimon aren’t looking too well. What’s happening is that the sprites are being overwritten by other sprite tiles with a “transparent” color, or more specifically, a color with 0 alpha. In the process of trying to fix this issue, I think it’s a good idea to rewrite the 2D graphics engines to take into account background and sprite priority. Currently CorgiDS uses hardcoded priorities based upon background/sprite number – which is normally accurate – but both can have custom priorities that supersede this rule. Even if it’s not super important now, the rewrite will allow for more flexibility with future graphical effects.
After the rewrite, my next task will be to handle rotscaling as well as windows (which should function like their Game Boy analog). Maybe engage in some bughunting as well. Plenty of work to do on the corgi!