summaryrefslogtreecommitdiff
path: root/source/bank_00.asm
diff options
context:
space:
mode:
Diffstat (limited to 'source/bank_00.asm')
-rw-r--r--source/bank_00.asm56
1 files changed, 56 insertions, 0 deletions
diff --git a/source/bank_00.asm b/source/bank_00.asm
new file mode 100644
index 0000000..ac58661
--- /dev/null
+++ b/source/bank_00.asm
@@ -0,0 +1,56 @@
+INCLUDE "hardware.inc"
+
+SECTION "vram_copy", ROM0[$0fbd]
+
+; Parameters:
+; a - bank
+; hl - source
+; de - dest
+; bc - length
+vram_copy::
+ ld [w_bank_temp], a
+ ld a, [w_bank_rom]
+ push af
+ ld a, [w_bank_temp]
+ ld [w_bank_rom], a
+ ld [rROMB0], a
+
+.loop
+ ldh a, [rLCDC]
+ bit 7, a
+ jr z, .in_vblank
+
+.wait_vblank
+ ldh a, [rSTAT]
+ and $03
+ jr z, .wait_vblank
+
+.in_vblank
+ ldh a, [rSTAT]
+ and $03
+ jr nz, .in_vblank
+
+ ld a, [hl+]
+ ld [de], a
+ inc de
+ ld a, [hl+]
+ ld [de], a
+ inc de
+ ld a, [hl+]
+ ld [de], a
+ inc de
+ ld a, [hl+]
+ ld [de], a
+ inc de
+ dec bc
+ dec bc
+ dec bc
+ dec bc
+ ld a, b
+ or c
+ jr nz, .loop
+
+ pop af
+ ld [w_bank_rom], a
+ ld [rROMB0], a
+ ret