rainwarrior wrote:I thought as long as you set OAMADDR back to 0 before vblank ends things should be fine? (At least, I've used it before and not seen anything wrong...)
Is there some additional corruption you're talking about?
This whole OAM corruption thing confuses me to no end, but I think you're right. Setting OAMADDR back to 0 before sprite evaluation starts should work just fine.
It's just that for years we knew that using $2003/4 was unreliable somehow, but AFAIK it was only recently that the exact behavior was properly analyzed and documented. I guess I just put OAM manipulation through $2003/4 in my "list of things to never do" and it remains there to this day.
Anyway, I understand that the purpose is to be able to have PCM audio during actual gameplay, but 50% of the CPU time, slow ass OAM updates, vblank time being spent on audio... those are pretty severe restrictions, making the technique still prohibitive for most kinds of games.