mirror of
https://github.com/pret/pokeyellow.git
synced 2026-05-21 10:18:18 -05:00
75 lines
1.2 KiB
NASM
75 lines
1.2 KiB
NASM
FarCopyData:: ; 009d (0:009d)
|
|
; Copy bc bytes from a:hl to de.
|
|
ld [wFarCopyDataSavedROMBank], a
|
|
ld a, [H_LOADEDROMBANK]
|
|
push af
|
|
ld a, [wFarCopyDataSavedROMBank]
|
|
call BankswitchCommon
|
|
call CopyData
|
|
pop af
|
|
call BankswitchCommon
|
|
ret
|
|
|
|
CopyData:: ; 00b1 (0:00b1)
|
|
; Copy bc bytes from hl to de.
|
|
ld a,b
|
|
and a
|
|
jr z, .copybytes
|
|
ld a,c
|
|
and a ; is lower byte 0
|
|
jr z, .loop
|
|
inc b ; if not, increment b as there are <$100 bytes to copy
|
|
.loop
|
|
call .copybytes
|
|
dec b
|
|
jr nz,.loop
|
|
ret
|
|
|
|
.copybytes ; 00c1
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
dec c
|
|
jr nz, .copybytes
|
|
ret
|
|
|
|
CopyVideoDataAlternate:: ; 00c8 (0:00c8)
|
|
ld a, [rLCDC]
|
|
bit 7,a ; LCD enabled?
|
|
jp nz, CopyVideoData ; if yes, then copy video data
|
|
push hl
|
|
ld h,d
|
|
ld l,e
|
|
pop de
|
|
ld a,b ; save bank
|
|
push af
|
|
swap c
|
|
ld a,$f
|
|
and c
|
|
ld b,a
|
|
ld a,$f0
|
|
and c
|
|
ld c,a
|
|
pop af
|
|
jp FarCopyData
|
|
|
|
CopyVideoDataDoubleAlternate:: ; 00e3 (0:00e3)
|
|
ld a, [rLCDC]
|
|
bit 7,a ; LCD enabled?
|
|
jp nz, CopyVideoDataDouble ; if yes, then copy video data
|
|
push de
|
|
ld d,h
|
|
ld e,l
|
|
ld a,b
|
|
push af ; save bank to switch to
|
|
ld h,$0
|
|
ld l,c
|
|
add hl,hl ; get raw length of bytes to copy
|
|
add hl,hl
|
|
add hl,hl
|
|
ld b,h
|
|
ld c,l
|
|
pop af
|
|
pop hl
|
|
jp FarCopyDataDouble
|