From f6038a3d52a2d26271fdcba9639284301305d751 Mon Sep 17 00:00:00 2001 From: yenatch Date: Sun, 25 May 2014 19:23:12 -0700 Subject: Try to clean up PrepareOAMData. --- engine/oam_dma.asm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 engine/oam_dma.asm (limited to 'engine/oam_dma.asm') diff --git a/engine/oam_dma.asm b/engine/oam_dma.asm new file mode 100644 index 00000000..6421a1b8 --- /dev/null +++ b/engine/oam_dma.asm @@ -0,0 +1,25 @@ +WriteDMACodeToHRAM: +; Since no other memory is available during OAM DMA, +; DMARoutine is copied to HRAM and executed there. + ld c, $ff80 % $100 + ld b, DMARoutineEnd - DMARoutine + ld hl, DMARoutine +.copy + ld a, [hli] + ld [$ff00+c], a + inc c + dec b + jr nz, .copy + ret + +DMARoutine: + ; initiate DMA + ld a, $c3 + ld [$ff46], a + + ; wait for DMA to finish + ld a, $28 +.wait dec a + jr nz, .wait + ret +DMARoutineEnd: -- cgit v1.3.1-sl0p