mirror of https://github.com/pret/pokecrystal.git
78 lines
1.1 KiB
NASM
78 lines
1.1 KiB
NASM
SaveMenu_CopyTilemapAtOnce: ; 4cf45 (13:4f45)
|
|
ld a, [hCGB]
|
|
and a
|
|
jp z, WaitBGMap
|
|
|
|
; The following is a modified version of CopyTilemapAtOnce.
|
|
ld a, [hBGMapMode]
|
|
push af
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
ld a, [hMapAnims]
|
|
push af
|
|
xor a
|
|
ld [hMapAnims], a
|
|
.WaitLY:
|
|
ld a, [rLY]
|
|
cp $60
|
|
jr c, .WaitLY
|
|
|
|
di
|
|
ld a, BANK(vBGMap2)
|
|
ld [rVBK], a
|
|
hlcoord 0, 0, wAttrMap
|
|
call .CopyTilemapAtOnce
|
|
ld a, BANK(vBGMap0)
|
|
ld [rVBK], a
|
|
hlcoord 0, 0
|
|
call .CopyTilemapAtOnce
|
|
.WaitLY2:
|
|
ld a, [rLY]
|
|
cp $60
|
|
jr c, .WaitLY2
|
|
ei
|
|
|
|
pop af
|
|
ld [hMapAnims], a
|
|
pop af
|
|
ld [hBGMapMode], a
|
|
ret
|
|
|
|
.CopyTilemapAtOnce: ; 4cf80 (13:4f80)
|
|
ld [hSPBuffer], sp ; $ffd9
|
|
ld sp, hl
|
|
ld a, [hBGMapAddress + 1]
|
|
ld h, a
|
|
ld l, 0
|
|
ld a, SCREEN_HEIGHT
|
|
ld [hTilesPerCycle], a
|
|
ld b, 1 << 1
|
|
ld c, LOW(rSTAT)
|
|
|
|
.loop
|
|
rept SCREEN_WIDTH / 2
|
|
pop de
|
|
.loop\@
|
|
ld a, [$ff00+c]
|
|
and b
|
|
jr nz, .loop\@
|
|
ld [hl], e
|
|
inc l
|
|
ld [hl], d
|
|
inc l
|
|
endr
|
|
|
|
ld de, BG_MAP_WIDTH - SCREEN_WIDTH
|
|
add hl, de
|
|
ld a, [hTilesPerCycle]
|
|
dec a
|
|
ld [hTilesPerCycle], a
|
|
jr nz, .loop
|
|
|
|
ld a, [hSPBuffer]
|
|
ld l, a
|
|
ld a, [hSPBuffer + 1]
|
|
ld h, a
|
|
ld sp, hl
|
|
ret
|