diff options
Diffstat (limited to 'source/bank_00.asm')
-rw-r--r-- | source/bank_00.asm | 56 |
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 |