mirror of
https://github.com/pret/pokegold-spaceworld.git
synced 2026-09-26 13:32:48 -04:00
e1659ecd41
Addresses of sections will now be added to the linkerscript via `org`, and the section name will be the path/to/file. If there is more than one section in the file, then add a @SectionName after the path/to/file to describe the section.
114 lines
1.6 KiB
NASM
114 lines
1.6 KiB
NASM
INCLUDE "constants.asm"
|
|
|
|
; if DEBUG
|
|
SECTION "home/copy.asm", ROM0
|
|
; else
|
|
; SECTION "Copy functions", ROM0[$32BB]
|
|
; endc
|
|
|
|
FarCopyBytes:: ; 32f7
|
|
; Copy bc bytes from a:hl to de.
|
|
ld [wBuffer], a
|
|
ldh a, [hROMBank]
|
|
push af
|
|
ld a, [wBuffer]
|
|
call Bankswitch
|
|
call CopyBytes
|
|
pop af
|
|
jp Bankswitch
|
|
|
|
CopyBytes:: ; 330a
|
|
; Copy bc bytes from hl to de
|
|
ld a, b
|
|
and a
|
|
jr z, CopyBytesSmall
|
|
ld a, c
|
|
and a
|
|
jr z, .next
|
|
inc b
|
|
.next
|
|
call CopyBytesSmall
|
|
dec b
|
|
jr nz, .next
|
|
ret
|
|
|
|
CopyBytesSmall:: ; 331a
|
|
; Copy c bytes from hl to de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
dec c
|
|
jr nz, CopyBytesSmall
|
|
ret
|
|
|
|
GetFarByte:: ; 3321
|
|
ld [wBuffer], a
|
|
ldh a, [hROMBank]
|
|
push af
|
|
ld a, [wBuffer]
|
|
call Bankswitch
|
|
ld a, [hl]
|
|
ld [wBuffer], a
|
|
pop af
|
|
call Bankswitch
|
|
ld a, [wBuffer]
|
|
ret
|
|
|
|
ByteFill:: ; 3339
|
|
push af
|
|
ld a, b
|
|
and a
|
|
jr z, .small_fill
|
|
ld a, c
|
|
and a
|
|
jr z, .start_filling
|
|
.small_fill
|
|
inc b
|
|
.start_filling
|
|
pop af
|
|
.loop
|
|
ld [hli], a
|
|
dec c
|
|
jr nz, .loop
|
|
dec b
|
|
jr nz, .loop
|
|
ret
|
|
|
|
UncompressSpriteFromDE::
|
|
; Decompress pic at a:de.
|
|
ld hl, wSpriteInputPtr
|
|
ld [hl], e
|
|
inc hl
|
|
ld [hl], d
|
|
jp UncompressSpriteData
|
|
|
|
BackUpTilesToBuffer:: ; 3355
|
|
hlcoord 0, 0
|
|
decoord 0, 0, wTileMapBackup
|
|
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
|
|
jp CopyBytes
|
|
|
|
ReloadTilesFromBuffer:: ; 3361
|
|
xor a
|
|
ldh [hBGMapMode], a
|
|
hlcoord 0, 0, wTileMapBackup
|
|
decoord 0, 0
|
|
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
|
|
call CopyBytes
|
|
ld a, 1
|
|
ldh [hBGMapMode], a
|
|
ret
|
|
|
|
CopyStringToStringBuffer2::
|
|
; copies a string from [de] to [wStringBuffer2]
|
|
ld hl, wStringBuffer2
|
|
; fallthrough
|
|
|
|
CopyString::
|
|
; copies a string from [de] to [hl]
|
|
ld a, [de]
|
|
inc de
|
|
ld [hli], a
|
|
cp "@"
|
|
jr nz, CopyString
|
|
ret |