Running dma inside the CPU's debugger

This commit is contained in:
Zoe Roux
2021-02-03 18:18:49 +01:00
parent 2d83137b40
commit 8ec3cad58b
2 changed files with 5 additions and 0 deletions
+4
View File
@@ -79,6 +79,10 @@ namespace ComSquare::Debugger
try { try {
unsigned cycles = 0; unsigned cycles = 0;
for (auto &channel : this->_dmaChannels)
if (channel.enabled)
cycles += channel.run(INT_MAX);
if (this->_isPaused) if (this->_isPaused)
return 0xFF; return 0xFF;
if (this->_isStepping) { if (this->_isStepping) {
+1
View File
@@ -54,6 +54,7 @@ Test(DMA, RomToVRAM)
uint16_t value = snes.ppu->vram->_data[0x2000 * 2 + i * 2] | (snes.ppu->vram->_data[0x2000 * 2 + i * 2 + 1] << 8); uint16_t value = snes.ppu->vram->_data[0x2000 * 2 + i * 2] | (snes.ppu->vram->_data[0x2000 * 2 + i * 2 + 1] << 8);
cr_assert_eq(value, i, "The memory at %x should be %x but it was %x", 0x2000 + i, i, snes.ppu->vram->_data[i]); cr_assert_eq(value, i, "The memory at %x should be %x but it was %x", 0x2000 + i, i, snes.ppu->vram->_data[i]);
} }
cr_assert_eq(snes.cpu->_dmaChannels[0].enabled, false, "The DMA channel should be disabled.");
} }
Test(DMA, VramWrite) Test(DMA, VramWrite)