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 From f16f07c5ca38fa269972dfecab7dbae50e0a73ff Mon Sep 17 00:00:00 2001 From: yenatch Date: Tue, 27 May 2014 11:08:52 -0700 Subject: More wOAMBuffer references. --- engine/mon_party_sprites.asm | 2 +- engine/oam_dma.asm | 2 +- home.asm | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'engine/oam_dma.asm') diff --git a/engine/mon_party_sprites.asm b/engine/mon_party_sprites.asm index 143ac8a8..8c8f5406 100755 --- a/engine/mon_party_sprites.asm +++ b/engine/mon_party_sprites.asm @@ -356,7 +356,7 @@ Func_718ac: ; 718ac (1c:58ac) Func_718c3: ; 718c3 (1c:58c3) push af ld c, $10 - ld h, $c3 + ld h, wOAMBuffer / $100 ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c swap a ld l, a diff --git a/engine/oam_dma.asm b/engine/oam_dma.asm index 6421a1b8..3de4d773 100644 --- a/engine/oam_dma.asm +++ b/engine/oam_dma.asm @@ -14,7 +14,7 @@ WriteDMACodeToHRAM: DMARoutine: ; initiate DMA - ld a, $c3 + ld a, wOAMBuffer / $100 ld [$ff46], a ; wait for DMA to finish diff --git a/home.asm b/home.asm index e55b09ef..e09ec535 100644 --- a/home.asm +++ b/home.asm @@ -9244,7 +9244,7 @@ StringCmp:: ; 3a8e (0:3a8e) ; c = X coordinate of upper left corner of sprite ; de = base address of 4 tile number and attribute pairs WriteOAMBlock:: ; 3a97 (0:3a97) - ld h,$c3 + ld h,wOAMBuffer / $100 swap a ; multiply by 16 ld l,a call .writeOneEntry ; upper left -- cgit v1.3.1-sl0p