2023-03-20 16:26:03 +00:00
|
|
|
from ..assembler import ASM
|
|
|
|
import os
|
2023-04-06 18:06:34 +00:00
|
|
|
import pkgutil
|
2023-03-20 16:26:03 +00:00
|
|
|
|
|
|
|
def updateEndScreen(rom):
|
|
|
|
# Call our custom data loader in bank 3F
|
|
|
|
rom.patch(0x00, 0x391D, ASM("""
|
|
|
|
ld a, $20
|
|
|
|
ld [$2100], a
|
|
|
|
jp $7de6
|
|
|
|
"""), ASM("""
|
|
|
|
ld a, $3F
|
|
|
|
ld [$2100], a
|
|
|
|
jp $4200
|
|
|
|
"""))
|
|
|
|
rom.patch(0x17, 0x2FCE, "B170", "D070") # Ignore the final tile data load
|
|
|
|
|
|
|
|
rom.patch(0x3F, 0x0200, None, ASM("""
|
|
|
|
; Disable LCD
|
|
|
|
xor a
|
|
|
|
ldh [$40], a
|
|
|
|
|
|
|
|
ld hl, $8000
|
|
|
|
ld de, $5000
|
|
|
|
copyLoop:
|
|
|
|
ld a, [de]
|
|
|
|
inc de
|
|
|
|
ldi [hl], a
|
|
|
|
bit 4, h
|
|
|
|
jr z, copyLoop
|
|
|
|
|
|
|
|
ld a, $01
|
|
|
|
ldh [$4F], a
|
|
|
|
|
|
|
|
ld hl, $8000
|
|
|
|
ld de, $6000
|
|
|
|
copyLoop2:
|
|
|
|
ld a, [de]
|
|
|
|
inc de
|
|
|
|
ldi [hl], a
|
|
|
|
bit 4, h
|
|
|
|
jr z, copyLoop2
|
|
|
|
|
|
|
|
ld hl, $9800
|
|
|
|
ld de, $0190
|
|
|
|
clearLoop1:
|
|
|
|
xor a
|
|
|
|
ldi [hl], a
|
|
|
|
dec de
|
|
|
|
ld a, d
|
|
|
|
or e
|
|
|
|
jr nz, clearLoop1
|
|
|
|
|
|
|
|
ld de, $0190
|
|
|
|
clearLoop2:
|
|
|
|
ld a, $08
|
|
|
|
ldi [hl], a
|
|
|
|
dec de
|
|
|
|
ld a, d
|
|
|
|
or e
|
|
|
|
jr nz, clearLoop2
|
|
|
|
|
|
|
|
xor a
|
|
|
|
ldh [$4F], a
|
|
|
|
|
|
|
|
|
|
|
|
ld hl, $9800
|
|
|
|
ld de, $000C
|
|
|
|
xor a
|
|
|
|
loadLoop1:
|
|
|
|
ldi [hl], a
|
|
|
|
ld b, a
|
|
|
|
ld a, l
|
|
|
|
and $1F
|
|
|
|
cp $14
|
|
|
|
jr c, .noLineSkip
|
|
|
|
add hl, de
|
|
|
|
.noLineSkip:
|
|
|
|
ld a, b
|
|
|
|
inc a
|
|
|
|
jr nz, loadLoop1
|
|
|
|
|
|
|
|
loadLoop2:
|
|
|
|
ldi [hl], a
|
|
|
|
ld b, a
|
|
|
|
ld a, l
|
|
|
|
and $1F
|
|
|
|
cp $14
|
|
|
|
jr c, .noLineSkip
|
|
|
|
add hl, de
|
|
|
|
.noLineSkip:
|
|
|
|
ld a, b
|
|
|
|
inc a
|
|
|
|
jr nz, loadLoop2
|
|
|
|
|
|
|
|
; Load palette
|
|
|
|
ld hl, $DC10
|
|
|
|
ld a, $00
|
|
|
|
ldi [hl], a
|
|
|
|
ld a, $00
|
|
|
|
ldi [hl], a
|
|
|
|
|
|
|
|
ld a, $ad
|
|
|
|
ldi [hl], a
|
|
|
|
ld a, $35
|
|
|
|
ldi [hl], a
|
|
|
|
|
|
|
|
ld a, $94
|
|
|
|
ldi [hl], a
|
|
|
|
ld a, $52
|
|
|
|
ldi [hl], a
|
|
|
|
|
|
|
|
ld a, $FF
|
|
|
|
ldi [hl], a
|
|
|
|
ld a, $7F
|
|
|
|
ldi [hl], a
|
|
|
|
|
|
|
|
ld a, $00
|
|
|
|
ld [$DDD3], a
|
|
|
|
ld a, $04
|
|
|
|
ld [$DDD4], a
|
|
|
|
ld a, $81
|
|
|
|
ld [$DDD1], a
|
|
|
|
|
|
|
|
; Enable LCD
|
|
|
|
ld a, $91
|
|
|
|
ldh [$40], a
|
|
|
|
ld [$d6fd], a
|
|
|
|
|
|
|
|
xor a
|
|
|
|
ldh [$96], a
|
|
|
|
ldh [$97], a
|
|
|
|
ret
|
|
|
|
"""))
|
|
|
|
|
|
|
|
addr = 0x1000
|
2023-04-06 18:06:34 +00:00
|
|
|
data = pkgutil.get_data(__name__, "nyan.bin")
|
|
|
|
rom.banks[0x3F][addr : addr + len(data)] = data
|
|
|
|
|