Quote:
It appears to have been significantly modified, and lacked an RST table.
What do you mean by an RST table? My understanding is that RST $nn is equivalent to CALL load address + $nn. I traced the old rip and it indeed uses RST $28, which is equivalent to CALL $4028 as the load address is $4000. Maybe the fact that I compacted several routines together on one page (relocating some as necessary) was obscuring things? I figured I'd make the rip as small as possible, so I used some memory-usage profiling to find what was actually used in playing all the songs. The first rip was larger, but had lots of unused holes in pages, so I moved the code together and relocated some of it. I had never done a GBS rip before, so I doubt the result is conventional.
That's bizarre that it wasn't working in any player you tried. I'd like to understand the cause of the problem, because I've implemented my GBS player to the GBS spec and TMNT played fine in it from the start.
The init routine seems fine, as it adds $49 to A so that track 0 is the first music track. Perhaps you added a lookup table to include the sound effects?