140 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
from ..assembler import ASM
 | 
						|
import os
 | 
						|
import pkgutil
 | 
						|
 | 
						|
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
 | 
						|
    data = pkgutil.get_data(__name__, "nyan.bin")    
 | 
						|
    rom.banks[0x3F][addr : addr + len(data)] = data
 | 
						|
 |