- Short question: What PPU cycle does the VBlank flag rise (NTSC NES)?
- Long question: I am doing an insane trace of CPU/PPU because all the previous test ROMs were OK, but the recent "NMI under IRQ/BRK" is giving me an early NMI triggering on its 4th sequence of numbers (21 00, should be 20 00). Anyway, I read an old topic regarding the exact time the CPU checks the NMI/IRQ flags (request). If an instruction is 4 bytes long, the flags should be checked during the 3rd/4th byte fetching, or during the last byte fetching. Nintendulator checks every time the CPU reads/writes, but it fails in most of those test ROMs. Nestopia passes, but it uses a cycle counter to define the time when a flag should be set/clear, as far as I understood it.
- My problem: during the 4th sequence, an NMI is requested during a LDA #$imm instruction. Depending of the time this flag is checked, a test ROM passes (nmi_during_irq) and another fails. It's happening during a LDX #$imm too in another test ROM (nmi_timing).
- I'd like some help.
- Long question: I am doing an insane trace of CPU/PPU because all the previous test ROMs were OK, but the recent "NMI under IRQ/BRK" is giving me an early NMI triggering on its 4th sequence of numbers (21 00, should be 20 00). Anyway, I read an old topic regarding the exact time the CPU checks the NMI/IRQ flags (request). If an instruction is 4 bytes long, the flags should be checked during the 3rd/4th byte fetching, or during the last byte fetching. Nintendulator checks every time the CPU reads/writes, but it fails in most of those test ROMs. Nestopia passes, but it uses a cycle counter to define the time when a flag should be set/clear, as far as I understood it.
- My problem: during the 4th sequence, an NMI is requested during a LDA #$imm instruction. Depending of the time this flag is checked, a test ROM passes (nmi_during_irq) and another fails. It's happening during a LDX #$imm too in another test ROM (nmi_timing).
- I'd like some help.