mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-16 18:30:50 +12:00

Rhyperior files are dummies and will need to be properly edited with sprites, Rhydon evo data, etc, but it (and the other files included) show that the trainer and pokemon sprite indexes have been separated, which allows us to add the other KEP mons
214 lines
3.3 KiB
NASM
214 lines
3.3 KiB
NASM
FarCopyData3::
|
|
; Copy bc bytes from a:de to hl.
|
|
ldh [hROMBankTemp], a
|
|
ldh a, [hLoadedROMBank]
|
|
push af
|
|
ldh a, [hROMBankTemp]
|
|
ldh [hLoadedROMBank], a
|
|
ld [MBC1RomBank], a
|
|
push hl
|
|
push de
|
|
push de
|
|
ld d, h
|
|
ld e, l
|
|
pop hl
|
|
call CopyData
|
|
pop de
|
|
pop hl
|
|
pop af
|
|
ldh [hLoadedROMBank], a
|
|
ld [MBC1RomBank], a
|
|
ret
|
|
|
|
FarCopyDataDouble::
|
|
; Expand bc bytes of 1bpp image data
|
|
; from a:hl to 2bpp data at de.
|
|
ldh [hROMBankTemp], a
|
|
ldh a, [hLoadedROMBank]
|
|
push af
|
|
ldh a, [hROMBankTemp]
|
|
ldh [hLoadedROMBank], a
|
|
ld [MBC1RomBank], a
|
|
.loop
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld [de], a
|
|
inc de
|
|
dec bc
|
|
ld a, c
|
|
or b
|
|
jr nz, .loop
|
|
pop af
|
|
ldh [hLoadedROMBank], a
|
|
ld [MBC1RomBank], a
|
|
ret
|
|
|
|
CopyVideoData::
|
|
; Wait for the next VBlank, then copy c 2bpp
|
|
; tiles from b:de to hl, 8 tiles at a time.
|
|
; This takes c/8 frames.
|
|
|
|
ldh a, [hAutoBGTransferEnabled]
|
|
push af
|
|
xor a ; disable auto-transfer while copying
|
|
ldh [hAutoBGTransferEnabled], a
|
|
|
|
ldh a, [hLoadedROMBank]
|
|
ldh [hROMBankTemp], a
|
|
|
|
ld a, b
|
|
ldh [hLoadedROMBank], a
|
|
ld [MBC1RomBank], a
|
|
|
|
ld a, e
|
|
ldh [hVBlankCopySource], a
|
|
ld a, d
|
|
ldh [hVBlankCopySource + 1], a
|
|
|
|
ld a, l
|
|
ldh [hVBlankCopyDest], a
|
|
ld a, h
|
|
ldh [hVBlankCopyDest + 1], a
|
|
|
|
.loop
|
|
ld a, c
|
|
cp 8
|
|
jr nc, .keepgoing
|
|
|
|
.done
|
|
ldh [hVBlankCopySize], a
|
|
call DelayFrame
|
|
ldh a, [hROMBankTemp]
|
|
ldh [hLoadedROMBank], a
|
|
ld [MBC1RomBank], a
|
|
pop af
|
|
ldh [hAutoBGTransferEnabled], a
|
|
ret
|
|
|
|
.keepgoing
|
|
ld a, 8
|
|
ldh [hVBlankCopySize], a
|
|
call DelayFrame
|
|
ld a, c
|
|
sub 8
|
|
ld c, a
|
|
jr .loop
|
|
|
|
CopyVideoDataDouble::
|
|
; Wait for the next VBlank, then copy c 1bpp
|
|
; tiles from b:de to hl, 8 tiles at a time.
|
|
; This takes c/8 frames.
|
|
ldh a, [hAutoBGTransferEnabled]
|
|
push af
|
|
xor a ; disable auto-transfer while copying
|
|
ldh [hAutoBGTransferEnabled], a
|
|
ldh a, [hLoadedROMBank]
|
|
ldh [hROMBankTemp], a
|
|
|
|
ld a, b
|
|
ldh [hLoadedROMBank], a
|
|
ld [MBC1RomBank], a
|
|
|
|
ld a, e
|
|
ldh [hVBlankCopyDoubleSource], a
|
|
ld a, d
|
|
ldh [hVBlankCopyDoubleSource + 1], a
|
|
|
|
ld a, l
|
|
ldh [hVBlankCopyDoubleDest], a
|
|
ld a, h
|
|
ldh [hVBlankCopyDoubleDest + 1], a
|
|
|
|
.loop
|
|
ld a, c
|
|
cp 8
|
|
jr nc, .keepgoing
|
|
|
|
.done
|
|
ldh [hVBlankCopyDoubleSize], a
|
|
call DelayFrame
|
|
ldh a, [hROMBankTemp]
|
|
ldh [hLoadedROMBank], a
|
|
ld [MBC1RomBank], a
|
|
pop af
|
|
ldh [hAutoBGTransferEnabled], a
|
|
ret
|
|
|
|
.keepgoing
|
|
ld a, 8
|
|
ldh [hVBlankCopyDoubleSize], a
|
|
call DelayFrame
|
|
ld a, c
|
|
sub 8
|
|
ld c, a
|
|
jr .loop
|
|
|
|
ClearScreenArea::
|
|
; Clear tilemap area cxb at hl.
|
|
ld a, " " ; blank tile
|
|
ld de, 20 ; screen width
|
|
.y
|
|
push hl
|
|
push bc
|
|
.x
|
|
ld [hli], a
|
|
dec c
|
|
jr nz, .x
|
|
pop bc
|
|
pop hl
|
|
add hl, de
|
|
dec b
|
|
jr nz, .y
|
|
ret
|
|
|
|
CopyScreenTileBufferToVRAM::
|
|
; Copy wTileMap to the BG Map starting at b * $100.
|
|
; This is done in thirds of 6 rows, so it takes 3 frames.
|
|
|
|
ld c, 6
|
|
|
|
ld hl, $600 * 0
|
|
decoord 0, 6 * 0
|
|
call .setup
|
|
call DelayFrame
|
|
|
|
ld hl, $600 * 1
|
|
decoord 0, 6 * 1
|
|
call .setup
|
|
call DelayFrame
|
|
|
|
ld hl, $600 * 2
|
|
decoord 0, 6 * 2
|
|
call .setup
|
|
jp DelayFrame
|
|
|
|
.setup
|
|
ld a, d
|
|
ldh [hVBlankCopyBGSource+1], a
|
|
call GetRowColAddressBgMap
|
|
ld a, l
|
|
ldh [hVBlankCopyBGDest], a
|
|
ld a, h
|
|
ldh [hVBlankCopyBGDest+1], a
|
|
ld a, c
|
|
ldh [hVBlankCopyBGNumRows], a
|
|
ld a, e
|
|
ldh [hVBlankCopyBGSource], a
|
|
ret
|
|
|
|
ClearScreen::
|
|
; Clear wTileMap, then wait
|
|
; for the bg map to update.
|
|
ld bc, 20 * 18
|
|
inc b
|
|
hlcoord 0, 0
|
|
ld a, " "
|
|
.loop
|
|
ld [hli], a
|
|
dec c
|
|
jr nz, .loop
|
|
dec b
|
|
jr nz, .loop
|
|
jp Delay3
|