summaryrefslogtreecommitdiff
path: root/engine/gfx/load_push_oam.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/gfx/load_push_oam.asm')
-rw-r--r--engine/gfx/load_push_oam.asm23
1 files changed, 15 insertions, 8 deletions
diff --git a/engine/gfx/load_push_oam.asm b/engine/gfx/load_push_oam.asm
index 2e43c1ffe..395188817 100644
--- a/engine/gfx/load_push_oam.asm
+++ b/engine/gfx/load_push_oam.asm
@@ -1,21 +1,28 @@
WriteOAMDMACodeToHRAM::
ld c, LOW(hTransferVirtualOAM)
- ld b, .PushOAMEnd - .PushOAM
- ld hl, .PushOAM
-.loop
+ ld b, OAMDMACodeEnd - OAMDMACode
+ ld hl, OAMDMACode
+.copy
ld a, [hli]
ldh [c], a
inc c
dec b
- jr nz, .loop
+ jr nz, .copy
ret
-.PushOAM:
+OAMDMACode:
+; This code is defined in ROM, but
+; copied to and called from HRAM.
+LOAD "OAM DMA", HRAM
+hTransferVirtualOAM::
+ ; initiate DMA
ld a, HIGH(wVirtualOAM)
ldh [rDMA], a
+ ; wait for DMA to finish
ld a, NUM_SPRITE_OAM_STRUCTS
-.pushoam_loop
+.wait
dec a
- jr nz, .pushoam_loop
+ jr nz, .wait
ret
-.PushOAMEnd
+ENDL
+OAMDMACodeEnd: