The bug killing Red Alarm and 3D Tetris was me not treating the offsets appropriately as 5bits, instead I was treating them as 32 bits…making for some very incorrect bit string ops.
Made even more progress this morning and squashed the issues in Space Invaders. It was setting out of bounds values for World.GP and I was treating them as is.
This just leaves 3D Tetris and Red Alarm, both of which are likely issues with the bit string ops.
So, I’ve started putting some more work into this in between preparing to move across the country and start a new job. I’ve stubbed out the framework needed for the sound emulation but have a bit of reading I need to do to understand how it all links together. The documentation I’m seeing is a little confusing to me.
I actually have trouble compiling Mendafen on OSX right now. SDL fails to build against llvm-gcc, and I’m not about to install a full GCC suite on here.
Solved the OAM issue that was evident in the previous video, I had a variable marked as signed that was supposed to be unsigned, causes fun subtle issues.
Some commercial games are now starting to be fully playable!
Ironed out more issues with the BGs, including the CPU usage problems. I’m not sure where the graphics glitch seen after the game starts is coming from. I’m likely clobbering the OAM somewhere along the line.
Decided to use all that extra room in my CPU time now to fix some drawing issues. Now support pretty much 100% of the features for normal BGs and OBJs.
Spent some time with getting timing working properly. I was able to optimize to the point where it’ll run at full speed on my machine. I have a lot more to optimize out though, need to get it to at least 25% of where its at before I’ll be happy though.
I take that back, looks like you do it in a quite different way that attempts to properly emulate the VIP timing. I have a hard time following the flow of your code there though.