Haven't posted here in quite some time, because the stuff I've been working on has just been such a pain.
The most difficult part of this project so far has been the collision code, and I totally expected that to be the case. I've made three attempts at coming up with a system for this, and they all reached a state where I thought they worked, but testing revealed serious flaws.
I decided I needed to solve this once and for all, and came up with yet another system. There are two problems involved with collision: detecting that a collision has occurred, and properly responding to that collision. My new model properly solved the first problem, but totally fell flat on issue number two.
Then, I found this formula on Wikipedia.
Not the first one, with the trig functions, but the second one, expressed entirely in terms of vectors. This was the magic I had been looking for.
Over the past week or so I've been implementing this formula. There were some bumps along the way, and quite a few mistaken assumptions, but I've finally got it working. I believe my collision code is complete.
Is it perfect? No, it isn't. There are rounding errors and various other inaccuracies that are basically impossible to avoid on the 6502. Doing this kind of math on this chip was really hard, and I'm sure there are better ways to do it than what I did.
But hey, it works! Or at least I think it does. I still need to do some hardcore testing to verify, but what I've done so far looks promising.
Right now, I'm busy trying to flesh out the sound effects. Once I'm happy with that, I plan to make an alpha release. This release will include everything except CPU play, which is my final hurdle. I have to admit that I have no clue how to even approach this, but once I dig into the issue I'm sure I'll come up with something.