aboutsummaryrefslogtreecommitdiff
path: root/src/memory.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/memory.rs')
-rw-r--r--src/memory.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/memory.rs b/src/memory.rs
index fc8732c..f8b6632 100644
--- a/src/memory.rs
+++ b/src/memory.rs
@@ -68,7 +68,13 @@ impl<'a> VMem for CPUMemory<'a> {
unsafe{(*self.sram.get())[(addr & 0x07ff) as usize] = data;}
} else if addr < 0x4000 {
match addr & 0x7 {
- 0x0 => ppu.write_ctl(data),
+ 0x0 => {
+ let old = ppu.get_flag_nmi();
+ ppu.write_ctl(data);
+ if !old && ppu.try_nmi() && ppu.vblank {
+ cpu.trigger_delayed_nmi()
+ } /* toggle NMI flag can generate multiple ints */
+ },
0x1 => ppu.write_mask(data),
0x3 => ppu.write_oamaddr(data),
0x4 => ppu.write_oamdata(data),