I included an IRQ interrupt into my MMC3 game and it woks quite well, except for one thing:
I do a mid-frame name table change when the interrupt starts.
(Then, in NMI, I set the name table back to its original value. So, the output is: Upper part of the screen is the regular level, lower part is solid blue from the opposite name table.)
But on fceux and Nestopia, the name table switch happens in different scanlines. So, the output is different in both versions: One of them happens one scanline earlier than the other one.
This did not happen when I used simple sprite 0 checks for mid-frame splits.
If you need to, I can later provide you details about what exactly I do in my code as well as show you a comparison screenshot. (I'm not at home in the moment.)
But maybe this is a commonly-known issue.
So, why do both emulators do the name table switch in different scanlines? And is there a way to make both behave the same?
I do a mid-frame name table change when the interrupt starts.
(Then, in NMI, I set the name table back to its original value. So, the output is: Upper part of the screen is the regular level, lower part is solid blue from the opposite name table.)
But on fceux and Nestopia, the name table switch happens in different scanlines. So, the output is different in both versions: One of them happens one scanline earlier than the other one.
This did not happen when I used simple sprite 0 checks for mid-frame splits.
If you need to, I can later provide you details about what exactly I do in my code as well as show you a comparison screenshot. (I'm not at home in the moment.)
But maybe this is a commonly-known issue.
So, why do both emulators do the name table switch in different scanlines? And is there a way to make both behave the same?