|
Well I'm kind of determined to figure this out.
It looks like Super Dodge Ball has some code in its Init routine which backs up some memory, by pushing RAM at 61-64 onto the stack, then pushing X and Y. It then inits RAM and stuff, then it pulls that stuff off the stack, inits the tune, then pulls the stuff off the stack again for some reason. This is resulting in an overflowing stack pointer, and when the eventual RTS comes along, it's jumping to a bad space in RAM which leads to an infinite BRK loop. This is what's preventing Notso (and I assume Festalon) from playing the NSF, since I believe they both wait for the previous routine to return before calling the next Play routine. Nosefart doesn't look like it waits... so it seems to play it fine.
I'm thinking I could intercept the Init routine to make it push everything on the stack twice... maybe that would work. Unless it tries to pull everything a 3rd time >_>
Well see what happens.
|