So, let me pose an example. Let's say I have STAT IRQs enabled and both LY=LYC IRQs and mode 0 IRQs enabled, but, interrupts are disabled on the CPU side (with the DI instruction.) Let's say I enable interrupts again some time on the LYC scanline after the mode 0 interrupt would have triggered
So at scanline LY=LYC we have :
Code: Select all
+----......mode 2.......-.......mode 3.........-+-..........mode 0..................EI.............
^ ^ ^
LY=LYC IRQ triggers Mode 0 Interrupt triggers Master Interrupt enable
Then, suppose instead I enable interrupts some time during mode 3, and the interrupt is short and immediately exits.
EX:
Code: Select all
+----......mode 2.......-...EI........RETI.......mode 3.........-+-..........mode 0........................
^ ^ ^
LY=LYC IRQ triggers Master Interrupt enable Mode 0 Interrupt triggers
Finally, let's say I enable interrupts before the mode 0 interrupt triggers, but the LYC interrupt doesn't complete before the mode zero one would otherwise occur:
Code: Select all
+----......mode 2.......-...........mode 3....EI.....-+-...............mode 0......RETI............???......
^ ^ ^
LY=LYC IRQ triggers Master Interrupt enable Mode 0 Interrupt triggers
I hope these questions are clear. I appreciate any responses, as I would really like to get this right before I start writing spaghetti.