From 2a5886e5e006228d2b56041a6a1fa0df07d255bf Mon Sep 17 00:00:00 2001 From: scawful Date: Wed, 24 Apr 2024 15:41:31 -0400 Subject: [PATCH] set int delay in dma fns --- src/app/emu/memory/dma.cc | 3 +++ src/app/emu/memory/memory.h | 1 + 2 files changed, 4 insertions(+) diff --git a/src/app/emu/memory/dma.cc b/src/app/emu/memory/dma.cc index 3614699d..734acaae 100644 --- a/src/app/emu/memory/dma.cc +++ b/src/app/emu/memory/dma.cc @@ -160,6 +160,7 @@ void Write(MemoryImpl* memory, uint16_t adr, uint8_t val) { void DoDma(SNES* snes, MemoryImpl* memory, int cpuCycles) { auto channel = memory->dma_channels(); + snes->cpu().set_int_delay(true); // align to multiple of 8 snes->SyncCycles(true, 8); @@ -228,6 +229,7 @@ void InitHdma(SNES* snes, MemoryImpl* memory, bool do_sync, int cpu_cycles) { channel[i].terminated = false; } if (!hdmaEnabled) return; + snes->cpu().set_int_delay(true); if (do_sync) snes->SyncCycles(true, 8); // full transfer overhead @@ -269,6 +271,7 @@ void DoHdma(SNES* snes, MemoryImpl* memory, bool do_sync, int cycles) { } if (!hdmaActive) return; + snes->cpu().set_int_delay(true); if (do_sync) snes->SyncCycles(true, 8); diff --git a/src/app/emu/memory/memory.h b/src/app/emu/memory/memory.h index 419d3226..8564e8c8 100644 --- a/src/app/emu/memory/memory.h +++ b/src/app/emu/memory/memory.h @@ -289,6 +289,7 @@ class MemoryImpl : public Memory, public Loggable { // Stack Pointer access. uint16_t SP() const override { return SP_; } + auto mutable_sp() -> uint16_t& { return SP_; } void SetSP(uint16_t value) override { SP_ = value; } void ClearMemory() override { std::fill(memory_.begin(), memory_.end(), 0); }