Permalink
Browse files

GBA DMA: Add misalign warnings

  • Loading branch information...
endrift committed Dec 25, 2017
1 parent 52e4c4e commit e56ca6ac088cb84fe2af69acc33d263742ece373
Showing with 9 additions and 0 deletions.
  1. +9 −0 src/gba/dma.c
View
@@ -87,6 +87,15 @@ uint16_t GBADMAWriteCNT_HI(struct GBA* gba, int dma, uint16_t control) {
currentDma->reg = GBADMARegisterClearSrcControl(currentDma->reg);
}
currentDma->nextDest = currentDma->dest;
+
+ uint32_t width = 2 << GBADMARegisterGetWidth(currentDma->reg);
+ if (currentDma->nextSource & (width - 1)) {
+ mLOG(GBA_MEM, GAME_ERROR, "Misaligned DMA source address: 0x%08X", currentDma->nextSource);
+ }
+ if (currentDma->nextDest & (width - 1)) {
+ mLOG(GBA_MEM, GAME_ERROR, "Misaligned DMA destination address: 0x%08X", currentDma->nextDest);
+ }
+
GBADMASchedule(gba, dma, currentDma);
}
// If the DMA has already occurred, this value might have changed since the function started

0 comments on commit e56ca6a

Please sign in to comment.