shithub: pokecrystal

Download patch

ref: 3370a04d9edce3b9ab28c9970ce7658e66fbcac0
parent: fe92089694f94d499cd8f71796abd2cde0efec0b
author: yenatch <[email protected]>
date: Sun Sep 15 14:02:02 EDT 2013

split color asm and data into engine/color.asm

--- /dev/null
+++ b/engine/color.asm
@@ -1,0 +1,1371 @@
+
+INCLUDE "predef/sgb.asm"
+
+
+CheckShininess: ; 8a68
+; Check if a mon is shiny by DVs at bc.
+; Return carry if shiny.
+
+	ld l, c
+	ld h, b
+
+; Attack
+	ld a, [hl]
+	and %0010 << 4
+	jr z, .NotShiny
+
+; Defense
+	ld a, [hli]
+	and %1111
+	cp  %1010
+	jr nz, .NotShiny
+
+; Speed
+	ld a, [hl]
+	and %1111 << 4
+	cp  %1010 << 4
+	jr nz, .NotShiny
+
+; Special
+	ld a, [hl]
+	and %1111
+	cp  %1010
+	jr nz, .NotShiny
+
+.Shiny
+	scf
+	ret
+
+.NotShiny
+	and a
+	ret
+; 8a88
+
+
+CheckContestMon: ; 8a88
+; Check a mon's DVs at hl in the bug catching contest.
+; Return carry if its DVs are good enough to place in the contest.
+
+; Attack
+	ld a, [hl]
+	cp 10 << 4
+	jr c, .Bad
+
+; Defense
+	ld a, [hli]
+	and $f
+	cp 10
+	jr c, .Bad
+
+; Speed
+	ld a, [hl]
+	cp 10 << 4
+	jr c, .Bad
+
+; Special
+	ld a, [hl]
+	and $f
+	cp 10
+	jr c, .Bad
+
+.Good
+	scf
+	ret
+
+.Bad
+	and a
+	ret
+; 8aa4
+
+
+Function8aa4: ; 8aa4
+	push de
+	push bc
+	ld hl, $5ce6
+	ld de, $cda9
+	ld bc, $0010
+	call CopyBytes
+	pop bc
+	pop de
+	ld a, c
+	ld [$cdac], a
+	ld a, b
+	ld [$cdad], a
+	ld a, e
+	ld [$cdae], a
+	ld a, d
+	ld [$cdaf], a
+	ld hl, $cda9
+	call Function9809
+	ld hl, $5a86
+	call Function9809
+	ret
+; 8ad1
+
+
+Function8ad1: ; 8ad1
+	ld hl, $5c57
+	call Function9610
+	call Function971a
+	call Function9699
+	ret
+; 8ade
+
+Function8ade: ; 8ade
+	ld hl, $cd9b
+	ld a, [$cda9]
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld e, l
+	ld d, h
+	ld a, [de]
+	and a
+	ld e, $5
+	jr z, .asm_8af7
+	dec a
+	ld e, $a
+	jr z, .asm_8af7
+	ld e, $f
+
+.asm_8af7
+	push de
+	ld hl, $cdb3
+	ld bc, $0006
+	ld a, [$cda9]
+	call AddNTimes
+	pop de
+	ld [hl], e
+	ret
+; 8b07
+
+Function8b07: ; 8b07
+	call CheckCGB
+	ret z
+	ld hl, Palette8b2f
+	ld de, $d000
+	ld bc, $0008
+	ld a, $5
+	call FarCopyWRAM
+
+	ld hl, Palette8b37
+	ld de, MartPointer
+	ld bc, $0008
+	ld a, $5
+	call FarCopyWRAM
+
+	call Function96a4
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+; 8b2f
+
+Palette8b2f: ; 8b2f
+	RGB 31, 31, 31
+	RGB 18, 23, 31
+	RGB 15, 20, 31
+	RGB 00, 00, 00
+; 8b37
+
+Palette8b37: ; 8b37
+	RGB 31, 31, 31
+	RGB 31, 31, 12
+	RGB 08, 16, 28
+	RGB 00, 00, 00
+; 8b3f
+
+Function8b3f: ; 8b3f
+	call CheckCGB
+	ret nz
+	ld a, [hSGB]
+	and a
+	ret z
+	ld hl, $5a86
+	jp Function9809
+; 8b4d
+
+Function8b4d: ; 8b4d
+	call CheckCGB
+	jr nz, .asm_8b5c
+	ld a, [hSGB]
+	and a
+	ret z
+	ld hl, $5c26
+	jp Function9809
+
+.asm_8b5c
+	ld de, Unkn2Pals
+	ld a, $3b
+	call Function9625
+	jp Function9630
+; 8b67
+
+Function8b67: ; 8b67
+	call CheckCGB
+	jr nz, .asm_8b76
+	ld a, [hSGB]
+	and a
+	ret z
+	ld hl, $5c36
+	jp Function9809
+
+.asm_8b76
+	ld de, Unkn2Pals
+	ld a, $3c
+	call Function9625
+	jp Function9630
+; 8b81
+
+Function8b81: ; 8b81
+	call CheckCGB
+	jr nz, .asm_8bb2
+	ld a, [hSGB]
+	and a
+	ret z
+	ld a, c
+	push af
+	ld hl, $5ce6
+	ld de, $cda9
+	ld bc, $0010
+	call CopyBytes
+	pop af
+	call Function9775
+	ld a, [hli]
+	ld [$cdac], a
+	ld a, [hli]
+	ld [$cdad], a
+	ld a, [hli]
+	ld [$cdae], a
+	ld a, [hl]
+	ld [$cdaf], a
+	ld hl, $cda9
+	jp Function9809
+
+.asm_8bb2
+	ld de, Unkn2Pals
+	ld a, c
+	call Function9775
+	call Function9643
+	ret
+; 8bbd
+
+Function8bbd: ; 8bbd
+	ld a, [TrainerClass]
+	call Function976b
+	ld a, e
+	jr .asm_8bd7
+
+	ld a, [CurPartySpecies]
+	call Function97ee
+	ld a, e
+	bit 7, a
+	jr z, .asm_8bd7
+	and $7f
+	inc hl
+	inc hl
+	inc hl
+	inc hl
+
+.asm_8bd7
+	push hl
+	ld hl, Unkn1Pals
+	ld de, $0008
+.asm_8bde
+	and a
+	jr z, .asm_8be5
+	add hl, de
+	dec a
+	jr .asm_8bde
+
+.asm_8be5
+	ld e, l
+	ld d, h
+	pop hl
+	call Function9643
+	ret
+; 8bec
+
+Function8bec: ; 8bec
+	ld a, [hCGB]
+	and a
+	jr nz, .asm_8bf7
+	ld hl, PlayerLightScreenCount
+	jp Function9809
+
+.asm_8bf7
+	ld a, [EnemyLightScreenCount]
+	ld c, a
+	ld a, [EnemyReflectCount]
+	ld hl, AttrMap
+	ld de, $0014
+.asm_8c04
+	and a
+	jr z, .asm_8c0b
+	add hl, de
+	dec a
+	jr .asm_8c04
+
+.asm_8c0b
+	ld b, $0
+	add hl, bc
+	ld bc, $0604
+	ld a, [$c705]
+	and $3
+	call Function9663
+	call Function323d
+	ret
+; 8c1d
+
+Function8c1d: ; 8c1d
+	call CheckCGB
+	ret z
+	ld a, e
+	and a
+	jr z, .asm_8c2d
+	ld a, [CurPartySpecies]
+	call Function9775
+	jr .asm_8c33
+
+.asm_8c2d
+	ld a, [TrainerClass]
+	call Function976b
+
+.asm_8c33
+	ld de, Unkn1Pals
+	call Function9643
+	call Function9699
+	call Function96b3
+	call Function96a4
+	ret
+; 8c43
+
+Function8c43: ; 8c43
+	ld a, [$d10a]
+	and a
+	jr z, .asm_8c52
+	cp $1
+	jr z, .asm_8c57
+	cp $2
+	jr z, .asm_8c70
+	ret
+
+.asm_8c52
+	ld de, $d092
+	jr .asm_8c5a
+
+.asm_8c57
+	ld de, $d09a
+
+.asm_8c5a
+	ld l, c
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	ld bc, $68be
+	add hl, bc
+	ld bc, $0004
+	ld a, $5
+	call FarCopyWRAM
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+
+.asm_8c70
+	ld e, c
+	inc e
+	ld hl, $cdf8
+	ld bc, $0028
+	ld a, [CurPartyMon]
+.asm_8c7b
+	and a
+	jr z, .asm_8c82
+	add hl, bc
+	dec a
+	jr .asm_8c7b
+
+.asm_8c82
+	ld bc, $0208
+	ld a, e
+	call Function9663
+	ret
+; 8c8a
+
+Function8c8a: ; 8c8a
+	call CheckCGB
+	ret z
+	ld hl, $4f6a
+	ld b, $0
+	dec c
+	add hl, bc
+	add hl, bc
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld a, [hli]
+	ld [Unkn1Pals], a
+	ld [$d010], a
+	ld a, [hl]
+	ld [$d001], a
+	ld [$d011], a
+	pop af
+	ld [rSVBK], a
+	call Function96a4
+	ld a, $1
+	ret
+; 8cb4
+
+Function8cb4: ; 8cb4
+	ld l, e
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	ld de, Data8d05
+	add hl, de
+	call CheckCGB
+	jr nz, .asm_8cf0
+	push hl
+	ld hl, $5ce6
+	ld de, $cda9
+	ld bc, $0010
+	call CopyBytes
+	pop hl
+	inc hl
+	inc hl
+	ld a, [hli]
+	ld [$cdac], a
+	ld a, [hli]
+	ld [$cdad], a
+	ld a, [hli]
+	ld [$cdae], a
+	ld a, [hli]
+	ld [$cdaf], a
+	ld hl, $cda9
+	call Function9809
+	ld hl, $5a86
+	call Function9809
+	ret
+
+.asm_8cf0
+	ld de, $d000
+	ld bc, $0008
+	ld a, $5
+	call FarCopyWRAM
+	call Function96a4
+	call Function9699
+	call Function96b3
+	ret
+; 8d05
+
+Data8d05: ; 8d05
+INCBIN "baserom.gbc", $8d05, $8d55 - $8d05
+; 8d55
+
+INCLUDE "predef/cgb.asm"
+
+
+INCBIN "baserom.gbc", $95f0, $9610 - $95f0
+
+
+Function9610: ; 9610
+	ld de, $d000
+	ld c, $4
+.asm_9615
+	push bc
+	ld a, [hli]
+	push hl
+	call Function9625
+	call Function9630
+	pop hl
+	inc hl
+	pop bc
+	dec c
+	jr nz, .asm_9615
+	ret
+; 9625
+
+Function9625: ; 9625
+	ld l, a
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	ld bc, $5df6
+	add hl, bc
+	ret
+; 9630
+
+Function9630: ; 9630
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld c, $8
+.asm_9639
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_9639
+	pop af
+	ld [rSVBK], a
+	ret
+; 9643
+
+Function9643: ; 9643
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld a, $ff
+	ld [de], a
+	inc de
+	ld a, $7f
+	ld [de], a
+	inc de
+	ld c, $4
+.asm_9654
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_9654
+	xor a
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	pop af
+	ld [rSVBK], a
+	ret
+; 9663
+
+Function9663: ; 9663
+.asm_9663
+	push bc
+	push hl
+.asm_9665
+	ld [hli], a
+	dec c
+	jr nz, .asm_9665
+	pop hl
+	ld bc, $0014
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_9663
+	ret
+; 9673
+
+Function9673: ; 9673
+	push af
+	push bc
+	push de
+	push hl
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, $d000
+	ld c, $8
+.asm_9683
+	ld a, $ff
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	xor a
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	dec c
+	jr nz, .asm_9683
+	pop af
+	ld [rSVBK], a
+	pop hl
+	pop de
+	pop bc
+	pop af
+	ret
+; 9699
+
+
+Function9699: ; 9699
+	ld hl, AttrMap
+	ld bc, $0168
+	xor a
+	call ByteFill
+	ret
+; 96a4
+
+Function96a4: ; 96a4
+	ld hl, $d000
+	ld de, $d080
+	ld bc, $0080
+	ld a, $5
+	call FarCopyWRAM
+	ret
+; 96b3
+
+Function96b3: ; 96b3
+	ld a, [rLCDC]
+	bit 7, a
+	jr z, .asm_96d0
+	ld a, [hBGMapMode]
+	push af
+	ld a, $2
+	ld [hBGMapMode], a
+	call DelayFrame
+	call DelayFrame
+	call DelayFrame
+	call DelayFrame
+	pop af
+	ld [hBGMapMode], a
+	ret
+
+.asm_96d0
+	ld hl, AttrMap
+	ld de, VBGMap0
+	ld b, $12
+	ld a, $1
+	ld [rVBK], a
+.asm_96dc
+	ld c, $14
+.asm_96de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_96de
+	ld a, $c
+	add e
+	jr nc, .asm_96ea
+	inc d
+
+.asm_96ea
+	ld e, a
+	dec b
+	jr nz, .asm_96dc
+	ld a, $0
+	ld [rVBK], a
+	ret
+; 96f3
+
+Function96f3: ; 96f3
+	ld hl, $cd9b
+	ld a, [$cda9]
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld e, l
+	ld d, h
+	ld a, [de]
+	inc a
+	ld e, a
+	ld hl, $ce0c
+	ld bc, $0028
+	ld a, [$cda9]
+.asm_970b
+	and a
+	jr z, .asm_9712
+	add hl, bc
+	dec a
+	jr .asm_970b
+
+.asm_9712
+	ld bc, $0208
+	ld a, e
+	call Function9663
+	ret
+; 971a
+
+
+Function971a: ; 971a
+	ld hl, $7681
+	ld de, MartPointer
+	ld bc, $0010
+	ld a, $5
+	call FarCopyWRAM
+	ret
+; 9729
+
+Function9729: ; 9729
+	push de
+	callba Function3da85
+	ld c, l
+	ld b, h
+	ld a, [TempBattleMonSpecies]
+	call Function974b
+	pop de
+	ret
+; 973a
+
+Function973a: ; 973a
+	push de
+	callba Function3da97
+	ld c, l
+	ld b, h
+	ld a, [TempEnemyMonSpecies]
+	call Function9764
+	pop de
+	ret
+; 974b
+
+Function974b: ; 974b
+	and a
+	jp nz, Function97f9
+	ld a, [$d45b]
+	bit 2, a
+	jr nz, .asm_9760
+	ld a, [PlayerGender]
+	and a
+	jr z, .asm_9760
+	ld hl, FalknerPalette
+	ret
+
+.asm_9760
+	ld hl, $70ce
+	ret
+; 9764
+
+Function9764: ; 9764
+	and a
+	jp nz, Function97f9
+	ld a, [TrainerClass]
+
+Function976b: ; 976b
+	ld l, a
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	ld bc, $70ce
+	add hl, bc
+	ret
+; 9775
+
+Function9775: ; 9775
+	call Function97ee
+	ret
+; 9779
+
+INCBIN "baserom.gbc", $9779, $97ee - $9779
+
+Function97ee: ; 97ee
+	ld l, a
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	ld bc, $68ce
+	add hl, bc
+	ret
+; 97f9
+
+Function97f9: ; 97f9
+	push bc
+	call Function97ee
+	pop bc
+	push hl
+	call CheckShininess
+	pop hl
+	ret nc
+	inc hl
+	inc hl
+	inc hl
+	inc hl
+	ret
+; 9809
+
+Function9809: ; 9809
+	ld a, [$cfbe]
+	push af
+	set 7, a
+	ld [$cfbe], a
+	call Function981a
+	pop af
+	ld [$cfbe], a
+	ret
+; 981a
+
+Function981a: ; 981a
+	ld a, [hl]
+	and $7
+	ret z
+	ld b, a
+.asm_981f
+	push bc
+	xor a
+	ld [rJOYP], a
+	ld a, $30
+	ld [rJOYP], a
+	ld b, $10
+.asm_9829
+	ld e, $8
+	ld a, [hli]
+	ld d, a
+.asm_982d
+	bit 0, d
+	ld a, $10
+	jr nz, .asm_9835
+	ld a, $20
+
+.asm_9835
+	ld [rJOYP], a
+	ld a, $30
+	ld [rJOYP], a
+	rr d
+	dec e
+	jr nz, .asm_982d
+	dec b
+	jr nz, .asm_9829
+	ld a, $20
+	ld [rJOYP], a
+	ld a, $30
+	ld [rJOYP], a
+	call Function9a7a
+	pop bc
+	dec b
+	jr nz, .asm_981f
+	ret
+; 9853
+
+Function9853: ; 9853
+	call CheckCGB
+	ret nz
+	di
+	ld a, [$cfbe]
+	push af
+	set 7, a
+	ld [$cfbe], a
+	xor a
+	ld [rJOYP], a
+	ld [hSGB], a
+	call Function994a
+	jr nc, .asm_988a
+	ld a, $1
+	ld [hSGB], a
+	call Function98eb
+	call Function99b4
+	call Function9a7a
+	call Function993f
+	call Function992c
+	call Function9a7a
+	call Function993f
+	ld hl, $5d66
+	call Function981a
+
+.asm_988a
+	pop af
+	ld [$cfbe], a
+	ei
+	ret
+; 9890
+
+
+Function9890: ; 9890
+	call CheckCGB
+	ret z
+	ld a, $1
+	ld [rVBK], a
+	ld hl, VTiles0
+	ld bc, $2000
+	xor a
+	call ByteFill
+	ld a, $0
+	ld [rVBK], a
+	ld a, $80
+	ld [rBGPI], a
+	ld c, $20
+.asm_98ac
+	ld a, $ff
+	ld [rBGPD], a
+	ld a, $7f
+	ld [rBGPD], a
+	dec c
+	jr nz, .asm_98ac
+	ld a, $80
+	ld [rOBPI], a
+	ld c, $20
+.asm_98bd
+	ld a, $ff
+	ld [rOBPD], a
+	ld a, $7f
+	ld [rOBPD], a
+	dec c
+	jr nz, .asm_98bd
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, $d000
+	call Function98df
+	ld hl, $d080
+	call Function98df
+	pop af
+	ld [rSVBK], a
+	ret
+; 98df
+
+Function98df: ; 98df
+	ld c, $40
+.asm_98e1
+	ld a, $ff
+	ld [hli], a
+	ld a, $7f
+	ld [hli], a
+	dec c
+	jr nz, .asm_98e1
+	ret
+; 98eb
+
+Function98eb: ; 98eb
+	ld hl, $58ff
+	ld c, $9
+.asm_98f0
+	push bc
+	ld a, [hli]
+	push hl
+	ld h, [hl]
+	ld l, a
+	call Function981a
+	pop hl
+	inc hl
+	pop bc
+	dec c
+	jr nz, .asm_98f0
+	ret
+; 98ff
+
+INCBIN "baserom.gbc", $98ff, $992c - $98ff
+
+Function992c: ; 992c
+	call Function9938
+	push de
+	call Function9a24
+	pop hl
+	call Function99d8
+	ret
+; 9938
+
+Function9938: ; 9938
+	ld hl, $651e
+	ld de, $606e
+	ret
+; 993f
+
+Function993f: ; 993f
+	ld hl, VTiles0
+	ld bc, $2000
+	xor a
+	call ByteFill
+	ret
+; 994a
+
+Function994a: ; 994a
+	ld hl, $5d26
+	call Function981a
+	call Function9a7a
+	ld a, [rJOYP]
+	and $3
+	cp $3
+	jr nz, .asm_99a6
+	ld a, $20
+	ld [rJOYP], a
+	ld a, [rJOYP]
+	ld a, [rJOYP]
+	call Function9a7a
+	call Function9a7a
+	ld a, $30
+	ld [rJOYP], a
+	call Function9a7a
+	call Function9a7a
+	ld a, $10
+	ld [rJOYP], a
+	ld a, [rJOYP]
+	ld a, [rJOYP]
+	ld a, [rJOYP]
+	ld a, [rJOYP]
+	ld a, [rJOYP]
+	ld a, [rJOYP]
+	call Function9a7a
+	call Function9a7a
+	ld a, $30
+	ld [rJOYP], a
+	ld a, [rJOYP]
+	ld a, [rJOYP]
+	ld a, [rJOYP]
+	call Function9a7a
+	call Function9a7a
+	ld a, [rJOYP]
+	and $3
+	cp $3
+	jr nz, .asm_99a6
+	call Function99ab
+	and a
+	ret
+
+.asm_99a6
+	call Function99ab
+	scf
+	ret
+; 99ab
+
+Function99ab: ; 99ab
+	ld hl, $5d16
+	call Function981a
+	jp Function9a7a
+; 99b4
+
+Function99b4: ; 99b4
+	call DisableLCD
+	ld a, $e4
+	ld [rBGP], a
+	ld hl, $5df6
+	ld de, VTiles1
+	ld bc, $1000
+	call CopyData
+	call DrawDefaultTiles
+	ld a, $e3
+	ld [rLCDC], a
+	ld hl, $5d06
+	call Function981a
+	xor a
+	ld [rBGP], a
+	ret
+; 99d8
+
+Function99d8: ; 99d8
+	call DisableLCD
+	ld a, $e4
+	ld [rBGP], a
+	ld de, VTiles1
+	ld bc, $0140
+	call CopyData
+	ld b, $12
+.asm_99ea
+	push bc
+	ld bc, $000c
+	call CopyData
+	ld bc, $0028
+	call ClearBytes
+	ld bc, $000c
+	call CopyData
+	pop bc
+	dec b
+	jr nz, .asm_99ea
+	ld bc, $0140
+	call CopyData
+	ld bc, Start
+	call ClearBytes
+	ld bc, $0080
+	call CopyData
+	call DrawDefaultTiles
+	ld a, $e3
+	ld [rLCDC], a
+	ld hl, $5d46
+	call Function981a
+	xor a
+	ld [rBGP], a
+	ret
+; 9a24
+
+Function9a24: ; 9a24
+	call DisableLCD
+	ld a, $e4
+	ld [rBGP], a
+	ld de, VTiles1
+	ld b, $80
+.asm_9a30
+	push bc
+	ld bc, $0010
+	call CopyData
+	ld bc, $0010
+	call ClearBytes
+	pop bc
+	dec b
+	jr nz, .asm_9a30
+	call DrawDefaultTiles
+	ld a, $e3
+	ld [rLCDC], a
+	ld hl, $5d36
+	call Function981a
+	xor a
+	ld [rBGP], a
+	ret
+; 9a52
+
+CopyData: ; 0x9a52
+; copy bc bytes of data from hl to de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec bc
+	ld a, c
+	or b
+	jr nz, CopyData
+	ret
+; 0x9a5b
+
+ClearBytes: ; 0x9a5b
+; clear bc bytes of data starting from de
+	xor a
+	ld [de], a
+	inc de
+	dec bc
+	ld a, c
+	or b
+	jr nz, ClearBytes
+	ret
+; 0x9a64
+
+DrawDefaultTiles: ; 0x9a64
+; Draw 240 tiles (2/3 of the screen) from tiles in VRAM
+	ld hl, VBGMap0 ; BG Map 0
+	ld de, 32 - 20
+	ld a, $80 ; starting tile
+	ld c, 12 + 1
+.line
+	ld b, 20
+.tile
+	ld [hli], a
+	inc a
+	dec b
+	jr nz, .tile
+; next line
+	add hl, de
+	dec c
+	jr nz, .line
+	ret
+; 0x9a7a
+
+Function9a7a: ; 9a7a
+	ld de, $1b58
+.asm_9a7d
+	nop
+	nop
+	nop
+	dec de
+	ld a, d
+	or e
+	jr nz, .asm_9a7d
+	ret
+; 9a86
+
+INCBIN "baserom.gbc", $9a86, $a51e - $9a86
+
+SGBBorder:
+INCBIN "gfx/misc/sgb_border.2bpp"
+
+INCBIN "baserom.gbc", $a8be, $a8d6 - $a8be
+
+PokemonPalettes:
+INCLUDE "gfx/pics/palette_pointers.asm"
+
+INCBIN "baserom.gbc", $b0ae, $b0d2 - $b0ae
+
+TrainerPalettes:
+INCLUDE "gfx/trainers/palette_pointers.asm"
+
+Functionb1de: ; b1de
+	callba Function494ac
+	jr c, .asm_b230
+	ld a, [$d19a]
+	and $7
+	ld e, a
+	ld d, $0
+	ld hl, $7279
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [TimeOfDayPal]
+	and $3
+	add a
+	add a
+	add a
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld e, l
+	ld d, h
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, Unkn1Pals
+	ld b, $8
+.asm_b210
+	ld a, [de]
+	push de
+	push hl
+	ld l, a
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	ld de, MornPal
+	add hl, de
+	ld e, l
+	ld d, h
+	pop hl
+	ld c, $8
+.asm_b222
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec c
+	jr nz, .asm_b222
+	pop de
+	inc de
+	dec b
+	jr nz, .asm_b210
+	pop af
+	ld [rSVBK], a
+
+.asm_b230
+	ld a, [TimeOfDayPal]
+	and $3
+	ld bc, $0040
+	ld hl, $7469
+	call AddNTimes
+	ld de, Unkn2Pals
+	ld bc, $0040
+	ld a, $5
+	call FarCopyWRAM
+	ld a, [$d19a]
+	cp $1
+	jr z, .asm_b253
+	cp $2
+	ret nz
+
+.asm_b253
+	ld a, [MapGroup]
+	ld l, a
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	ld de, $7569
+	add hl, de
+	ld a, [TimeOfDayPal]
+	and $3
+	cp $2
+	jr c, .asm_b26d
+	inc hl
+	inc hl
+	inc hl
+	inc hl
+
+.asm_b26d
+	ld de, $d032
+	ld bc, $0004
+	ld a, $5
+	call FarCopyWRAM
+	ret
+; b279
+
+INCBIN "baserom.gbc", $b279, $b319 - $b279
+
+MornPal: ; 0xb319
+INCBIN "tilesets/morn.pal"
+; 0xb359
+
+DayPal: ; 0xb359
+INCBIN "tilesets/day.pal"
+; 0xb399
+
+NitePal: ; 0xb399
+INCBIN "tilesets/nite.pal"
+; 0xb3d9
+
+DarkPal: ; 0xb3d9
+INCBIN "tilesets/dark.pal"
+; 0xb419
+
+INCBIN "baserom.gbc", $b419, $b7a9 - $b419
+
+Paletteb7a9: ; b7a9
+	RGB 31, 31, 31
+	RGB 24, 25, 28
+	RGB 24, 24, 09
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 30, 10, 06
+	RGB 24, 24, 09
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 15, 31, 00
+	RGB 24, 24, 09
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 15, 31
+	RGB 24, 24, 09
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 15, 21, 31
+	RGB 24, 24, 09
+	RGB 00, 00, 00
+
+	RGB 31, 31, 11
+	RGB 31, 31, 06
+	RGB 24, 24, 09
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 16, 19, 29
+	RGB 25, 22, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 21, 21, 21
+	RGB 13, 13, 13
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 30, 10, 06
+	RGB 31, 00, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 12, 25, 01
+	RGB 05, 14, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 12, 25, 01
+	RGB 30, 10, 06
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 06
+	RGB 20, 15, 03
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 06
+	RGB 15, 21, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 06
+	RGB 20, 15, 03
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 24, 21
+	RGB 31, 13, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+; b829
+
--- a/main.asm
+++ b/main.asm
@@ -12064,1375 +12064,7 @@
 ; 864c
 
 
-INCLUDE "predef/sgb.asm"
-
-
-CheckShininess: ; 8a68
-; Check if a mon is shiny by DVs at bc.
-; Return carry if shiny.
-
-	ld l, c
-	ld h, b
-
-; Attack
-	ld a, [hl]
-	and %0010 << 4
-	jr z, .NotShiny
-
-; Defense
-	ld a, [hli]
-	and %1111
-	cp  %1010
-	jr nz, .NotShiny
-
-; Speed
-	ld a, [hl]
-	and %1111 << 4
-	cp  %1010 << 4
-	jr nz, .NotShiny
-
-; Special
-	ld a, [hl]
-	and %1111
-	cp  %1010
-	jr nz, .NotShiny
-
-.Shiny
-	scf
-	ret
-
-.NotShiny
-	and a
-	ret
-; 8a88
-
-
-CheckContestMon: ; 8a88
-; Check a mon's DVs at hl in the bug catching contest.
-; Return carry if its DVs are good enough to place in the contest.
-
-; Attack
-	ld a, [hl]
-	cp 10 << 4
-	jr c, .Bad
-
-; Defense
-	ld a, [hli]
-	and $f
-	cp 10
-	jr c, .Bad
-
-; Speed
-	ld a, [hl]
-	cp 10 << 4
-	jr c, .Bad
-
-; Special
-	ld a, [hl]
-	and $f
-	cp 10
-	jr c, .Bad
-
-.Good
-	scf
-	ret
-
-.Bad
-	and a
-	ret
-; 8aa4
-
-
-Function8aa4: ; 8aa4
-	push de
-	push bc
-	ld hl, $5ce6
-	ld de, $cda9
-	ld bc, $0010
-	call CopyBytes
-	pop bc
-	pop de
-	ld a, c
-	ld [$cdac], a
-	ld a, b
-	ld [$cdad], a
-	ld a, e
-	ld [$cdae], a
-	ld a, d
-	ld [$cdaf], a
-	ld hl, $cda9
-	call Function9809
-	ld hl, $5a86
-	call Function9809
-	ret
-; 8ad1
-
-
-Function8ad1: ; 8ad1
-	ld hl, $5c57
-	call Function9610
-	call Function971a
-	call Function9699
-	ret
-; 8ade
-
-Function8ade: ; 8ade
-	ld hl, $cd9b
-	ld a, [$cda9]
-	ld e, a
-	ld d, $0
-	add hl, de
-	ld e, l
-	ld d, h
-	ld a, [de]
-	and a
-	ld e, $5
-	jr z, .asm_8af7
-	dec a
-	ld e, $a
-	jr z, .asm_8af7
-	ld e, $f
-
-.asm_8af7
-	push de
-	ld hl, $cdb3
-	ld bc, $0006
-	ld a, [$cda9]
-	call AddNTimes
-	pop de
-	ld [hl], e
-	ret
-; 8b07
-
-Function8b07: ; 8b07
-	call CheckCGB
-	ret z
-	ld hl, Palette8b2f
-	ld de, $d000
-	ld bc, $0008
-	ld a, $5
-	call FarCopyWRAM
-
-	ld hl, Palette8b37
-	ld de, MartPointer
-	ld bc, $0008
-	ld a, $5
-	call FarCopyWRAM
-
-	call Function96a4
-	ld a, $1
-	ld [hCGBPalUpdate], a
-	ret
-; 8b2f
-
-Palette8b2f: ; 8b2f
-	RGB 31, 31, 31
-	RGB 18, 23, 31
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; 8b37
-
-Palette8b37: ; 8b37
-	RGB 31, 31, 31
-	RGB 31, 31, 12
-	RGB 08, 16, 28
-	RGB 00, 00, 00
-; 8b3f
-
-Function8b3f: ; 8b3f
-	call CheckCGB
-	ret nz
-	ld a, [hSGB]
-	and a
-	ret z
-	ld hl, $5a86
-	jp Function9809
-; 8b4d
-
-Function8b4d: ; 8b4d
-	call CheckCGB
-	jr nz, .asm_8b5c
-	ld a, [hSGB]
-	and a
-	ret z
-	ld hl, $5c26
-	jp Function9809
-
-.asm_8b5c
-	ld de, Unkn2Pals
-	ld a, $3b
-	call Function9625
-	jp Function9630
-; 8b67
-
-Function8b67: ; 8b67
-	call CheckCGB
-	jr nz, .asm_8b76
-	ld a, [hSGB]
-	and a
-	ret z
-	ld hl, $5c36
-	jp Function9809
-
-.asm_8b76
-	ld de, Unkn2Pals
-	ld a, $3c
-	call Function9625
-	jp Function9630
-; 8b81
-
-Function8b81: ; 8b81
-	call CheckCGB
-	jr nz, .asm_8bb2
-	ld a, [hSGB]
-	and a
-	ret z
-	ld a, c
-	push af
-	ld hl, $5ce6
-	ld de, $cda9
-	ld bc, $0010
-	call CopyBytes
-	pop af
-	call Function9775
-	ld a, [hli]
-	ld [$cdac], a
-	ld a, [hli]
-	ld [$cdad], a
-	ld a, [hli]
-	ld [$cdae], a
-	ld a, [hl]
-	ld [$cdaf], a
-	ld hl, $cda9
-	jp Function9809
-
-.asm_8bb2
-	ld de, Unkn2Pals
-	ld a, c
-	call Function9775
-	call Function9643
-	ret
-; 8bbd
-
-Function8bbd: ; 8bbd
-	ld a, [TrainerClass]
-	call Function976b
-	ld a, e
-	jr .asm_8bd7
-
-	ld a, [CurPartySpecies]
-	call Function97ee
-	ld a, e
-	bit 7, a
-	jr z, .asm_8bd7
-	and $7f
-	inc hl
-	inc hl
-	inc hl
-	inc hl
-
-.asm_8bd7
-	push hl
-	ld hl, Unkn1Pals
-	ld de, $0008
-.asm_8bde
-	and a
-	jr z, .asm_8be5
-	add hl, de
-	dec a
-	jr .asm_8bde
-
-.asm_8be5
-	ld e, l
-	ld d, h
-	pop hl
-	call Function9643
-	ret
-; 8bec
-
-Function8bec: ; 8bec
-	ld a, [hCGB]
-	and a
-	jr nz, .asm_8bf7
-	ld hl, PlayerLightScreenCount
-	jp Function9809
-
-.asm_8bf7
-	ld a, [EnemyLightScreenCount]
-	ld c, a
-	ld a, [EnemyReflectCount]
-	ld hl, AttrMap
-	ld de, $0014
-.asm_8c04
-	and a
-	jr z, .asm_8c0b
-	add hl, de
-	dec a
-	jr .asm_8c04
-
-.asm_8c0b
-	ld b, $0
-	add hl, bc
-	ld bc, $0604
-	ld a, [$c705]
-	and $3
-	call Function9663
-	call Function323d
-	ret
-; 8c1d
-
-Function8c1d: ; 8c1d
-	call CheckCGB
-	ret z
-	ld a, e
-	and a
-	jr z, .asm_8c2d
-	ld a, [CurPartySpecies]
-	call Function9775
-	jr .asm_8c33
-
-.asm_8c2d
-	ld a, [TrainerClass]
-	call Function976b
-
-.asm_8c33
-	ld de, Unkn1Pals
-	call Function9643
-	call Function9699
-	call Function96b3
-	call Function96a4
-	ret
-; 8c43
-
-Function8c43: ; 8c43
-	ld a, [$d10a]
-	and a
-	jr z, .asm_8c52
-	cp $1
-	jr z, .asm_8c57
-	cp $2
-	jr z, .asm_8c70
-	ret
-
-.asm_8c52
-	ld de, $d092
-	jr .asm_8c5a
-
-.asm_8c57
-	ld de, $d09a
-
-.asm_8c5a
-	ld l, c
-	ld h, $0
-	add hl, hl
-	add hl, hl
-	ld bc, $68be
-	add hl, bc
-	ld bc, $0004
-	ld a, $5
-	call FarCopyWRAM
-	ld a, $1
-	ld [hCGBPalUpdate], a
-	ret
-
-.asm_8c70
-	ld e, c
-	inc e
-	ld hl, $cdf8
-	ld bc, $0028
-	ld a, [CurPartyMon]
-.asm_8c7b
-	and a
-	jr z, .asm_8c82
-	add hl, bc
-	dec a
-	jr .asm_8c7b
-
-.asm_8c82
-	ld bc, $0208
-	ld a, e
-	call Function9663
-	ret
-; 8c8a
-
-Function8c8a: ; 8c8a
-	call CheckCGB
-	ret z
-	ld hl, $4f6a
-	ld b, $0
-	dec c
-	add hl, bc
-	add hl, bc
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld a, [hli]
-	ld [Unkn1Pals], a
-	ld [$d010], a
-	ld a, [hl]
-	ld [$d001], a
-	ld [$d011], a
-	pop af
-	ld [rSVBK], a
-	call Function96a4
-	ld a, $1
-	ret
-; 8cb4
-
-Function8cb4: ; 8cb4
-	ld l, e
-	ld h, $0
-	add hl, hl
-	add hl, hl
-	add hl, hl
-	ld de, Data8d05
-	add hl, de
-	call CheckCGB
-	jr nz, .asm_8cf0
-	push hl
-	ld hl, $5ce6
-	ld de, $cda9
-	ld bc, $0010
-	call CopyBytes
-	pop hl
-	inc hl
-	inc hl
-	ld a, [hli]
-	ld [$cdac], a
-	ld a, [hli]
-	ld [$cdad], a
-	ld a, [hli]
-	ld [$cdae], a
-	ld a, [hli]
-	ld [$cdaf], a
-	ld hl, $cda9
-	call Function9809
-	ld hl, $5a86
-	call Function9809
-	ret
-
-.asm_8cf0
-	ld de, $d000
-	ld bc, $0008
-	ld a, $5
-	call FarCopyWRAM
-	call Function96a4
-	call Function9699
-	call Function96b3
-	ret
-; 8d05
-
-Data8d05: ; 8d05
-INCBIN "baserom.gbc", $8d05, $8d55 - $8d05
-; 8d55
-
-INCLUDE "predef/cgb.asm"
-
-
-INCBIN "baserom.gbc", $95f0, $9610 - $95f0
-
-
-Function9610: ; 9610
-	ld de, $d000
-	ld c, $4
-.asm_9615
-	push bc
-	ld a, [hli]
-	push hl
-	call Function9625
-	call Function9630
-	pop hl
-	inc hl
-	pop bc
-	dec c
-	jr nz, .asm_9615
-	ret
-; 9625
-
-Function9625: ; 9625
-	ld l, a
-	ld h, $0
-	add hl, hl
-	add hl, hl
-	add hl, hl
-	ld bc, $5df6
-	add hl, bc
-	ret
-; 9630
-
-Function9630: ; 9630
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld c, $8
-.asm_9639
-	ld a, [hli]
-	ld [de], a
-	inc de
-	dec c
-	jr nz, .asm_9639
-	pop af
-	ld [rSVBK], a
-	ret
-; 9643
-
-Function9643: ; 9643
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld a, $ff
-	ld [de], a
-	inc de
-	ld a, $7f
-	ld [de], a
-	inc de
-	ld c, $4
-.asm_9654
-	ld a, [hli]
-	ld [de], a
-	inc de
-	dec c
-	jr nz, .asm_9654
-	xor a
-	ld [de], a
-	inc de
-	ld [de], a
-	inc de
-	pop af
-	ld [rSVBK], a
-	ret
-; 9663
-
-Function9663: ; 9663
-.asm_9663
-	push bc
-	push hl
-.asm_9665
-	ld [hli], a
-	dec c
-	jr nz, .asm_9665
-	pop hl
-	ld bc, $0014
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .asm_9663
-	ret
-; 9673
-
-Function9673: ; 9673
-	push af
-	push bc
-	push de
-	push hl
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, $d000
-	ld c, $8
-.asm_9683
-	ld a, $ff
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	xor a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	dec c
-	jr nz, .asm_9683
-	pop af
-	ld [rSVBK], a
-	pop hl
-	pop de
-	pop bc
-	pop af
-	ret
-; 9699
-
-
-Function9699: ; 9699
-	ld hl, AttrMap
-	ld bc, $0168
-	xor a
-	call ByteFill
-	ret
-; 96a4
-
-Function96a4: ; 96a4
-	ld hl, $d000
-	ld de, $d080
-	ld bc, $0080
-	ld a, $5
-	call FarCopyWRAM
-	ret
-; 96b3
-
-Function96b3: ; 96b3
-	ld a, [rLCDC]
-	bit 7, a
-	jr z, .asm_96d0
-	ld a, [hBGMapMode]
-	push af
-	ld a, $2
-	ld [hBGMapMode], a
-	call DelayFrame
-	call DelayFrame
-	call DelayFrame
-	call DelayFrame
-	pop af
-	ld [hBGMapMode], a
-	ret
-
-.asm_96d0
-	ld hl, AttrMap
-	ld de, VBGMap0
-	ld b, $12
-	ld a, $1
-	ld [rVBK], a
-.asm_96dc
-	ld c, $14
-.asm_96de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	dec c
-	jr nz, .asm_96de
-	ld a, $c
-	add e
-	jr nc, .asm_96ea
-	inc d
-
-.asm_96ea
-	ld e, a
-	dec b
-	jr nz, .asm_96dc
-	ld a, $0
-	ld [rVBK], a
-	ret
-; 96f3
-
-Function96f3: ; 96f3
-	ld hl, $cd9b
-	ld a, [$cda9]
-	ld e, a
-	ld d, $0
-	add hl, de
-	ld e, l
-	ld d, h
-	ld a, [de]
-	inc a
-	ld e, a
-	ld hl, $ce0c
-	ld bc, $0028
-	ld a, [$cda9]
-.asm_970b
-	and a
-	jr z, .asm_9712
-	add hl, bc
-	dec a
-	jr .asm_970b
-
-.asm_9712
-	ld bc, $0208
-	ld a, e
-	call Function9663
-	ret
-; 971a
-
-
-Function971a: ; 971a
-	ld hl, $7681
-	ld de, MartPointer
-	ld bc, $0010
-	ld a, $5
-	call FarCopyWRAM
-	ret
-; 9729
-
-Function9729: ; 9729
-	push de
-	callba Function3da85
-	ld c, l
-	ld b, h
-	ld a, [TempBattleMonSpecies]
-	call Function974b
-	pop de
-	ret
-; 973a
-
-Function973a: ; 973a
-	push de
-	callba Function3da97
-	ld c, l
-	ld b, h
-	ld a, [TempEnemyMonSpecies]
-	call Function9764
-	pop de
-	ret
-; 974b
-
-Function974b: ; 974b
-	and a
-	jp nz, Function97f9
-	ld a, [$d45b]
-	bit 2, a
-	jr nz, .asm_9760
-	ld a, [PlayerGender]
-	and a
-	jr z, .asm_9760
-	ld hl, FalknerPalette
-	ret
-
-.asm_9760
-	ld hl, $70ce
-	ret
-; 9764
-
-Function9764: ; 9764
-	and a
-	jp nz, Function97f9
-	ld a, [TrainerClass]
-
-Function976b: ; 976b
-	ld l, a
-	ld h, $0
-	add hl, hl
-	add hl, hl
-	ld bc, $70ce
-	add hl, bc
-	ret
-; 9775
-
-Function9775: ; 9775
-	call Function97ee
-	ret
-; 9779
-
-INCBIN "baserom.gbc", $9779, $97ee - $9779
-
-Function97ee: ; 97ee
-	ld l, a
-	ld h, $0
-	add hl, hl
-	add hl, hl
-	add hl, hl
-	ld bc, $68ce
-	add hl, bc
-	ret
-; 97f9
-
-Function97f9: ; 97f9
-	push bc
-	call Function97ee
-	pop bc
-	push hl
-	call CheckShininess
-	pop hl
-	ret nc
-	inc hl
-	inc hl
-	inc hl
-	inc hl
-	ret
-; 9809
-
-Function9809: ; 9809
-	ld a, [$cfbe]
-	push af
-	set 7, a
-	ld [$cfbe], a
-	call Function981a
-	pop af
-	ld [$cfbe], a
-	ret
-; 981a
-
-Function981a: ; 981a
-	ld a, [hl]
-	and $7
-	ret z
-	ld b, a
-.asm_981f
-	push bc
-	xor a
-	ld [rJOYP], a
-	ld a, $30
-	ld [rJOYP], a
-	ld b, $10
-.asm_9829
-	ld e, $8
-	ld a, [hli]
-	ld d, a
-.asm_982d
-	bit 0, d
-	ld a, $10
-	jr nz, .asm_9835
-	ld a, $20
-
-.asm_9835
-	ld [rJOYP], a
-	ld a, $30
-	ld [rJOYP], a
-	rr d
-	dec e
-	jr nz, .asm_982d
-	dec b
-	jr nz, .asm_9829
-	ld a, $20
-	ld [rJOYP], a
-	ld a, $30
-	ld [rJOYP], a
-	call Function9a7a
-	pop bc
-	dec b
-	jr nz, .asm_981f
-	ret
-; 9853
-
-Function9853: ; 9853
-	call CheckCGB
-	ret nz
-	di
-	ld a, [$cfbe]
-	push af
-	set 7, a
-	ld [$cfbe], a
-	xor a
-	ld [rJOYP], a
-	ld [hSGB], a
-	call Function994a
-	jr nc, .asm_988a
-	ld a, $1
-	ld [hSGB], a
-	call Function98eb
-	call Function99b4
-	call Function9a7a
-	call Function993f
-	call Function992c
-	call Function9a7a
-	call Function993f
-	ld hl, $5d66
-	call Function981a
-
-.asm_988a
-	pop af
-	ld [$cfbe], a
-	ei
-	ret
-; 9890
-
-
-Function9890: ; 9890
-	call CheckCGB
-	ret z
-	ld a, $1
-	ld [rVBK], a
-	ld hl, VTiles0
-	ld bc, $2000
-	xor a
-	call ByteFill
-	ld a, $0
-	ld [rVBK], a
-	ld a, $80
-	ld [rBGPI], a
-	ld c, $20
-.asm_98ac
-	ld a, $ff
-	ld [rBGPD], a
-	ld a, $7f
-	ld [rBGPD], a
-	dec c
-	jr nz, .asm_98ac
-	ld a, $80
-	ld [rOBPI], a
-	ld c, $20
-.asm_98bd
-	ld a, $ff
-	ld [rOBPD], a
-	ld a, $7f
-	ld [rOBPD], a
-	dec c
-	jr nz, .asm_98bd
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, $d000
-	call Function98df
-	ld hl, $d080
-	call Function98df
-	pop af
-	ld [rSVBK], a
-	ret
-; 98df
-
-Function98df: ; 98df
-	ld c, $40
-.asm_98e1
-	ld a, $ff
-	ld [hli], a
-	ld a, $7f
-	ld [hli], a
-	dec c
-	jr nz, .asm_98e1
-	ret
-; 98eb
-
-Function98eb: ; 98eb
-	ld hl, $58ff
-	ld c, $9
-.asm_98f0
-	push bc
-	ld a, [hli]
-	push hl
-	ld h, [hl]
-	ld l, a
-	call Function981a
-	pop hl
-	inc hl
-	pop bc
-	dec c
-	jr nz, .asm_98f0
-	ret
-; 98ff
-
-INCBIN "baserom.gbc", $98ff, $992c - $98ff
-
-Function992c: ; 992c
-	call Function9938
-	push de
-	call Function9a24
-	pop hl
-	call Function99d8
-	ret
-; 9938
-
-Function9938: ; 9938
-	ld hl, $651e
-	ld de, $606e
-	ret
-; 993f
-
-Function993f: ; 993f
-	ld hl, VTiles0
-	ld bc, $2000
-	xor a
-	call ByteFill
-	ret
-; 994a
-
-Function994a: ; 994a
-	ld hl, $5d26
-	call Function981a
-	call Function9a7a
-	ld a, [rJOYP]
-	and $3
-	cp $3
-	jr nz, .asm_99a6
-	ld a, $20
-	ld [rJOYP], a
-	ld a, [rJOYP]
-	ld a, [rJOYP]
-	call Function9a7a
-	call Function9a7a
-	ld a, $30
-	ld [rJOYP], a
-	call Function9a7a
-	call Function9a7a
-	ld a, $10
-	ld [rJOYP], a
-	ld a, [rJOYP]
-	ld a, [rJOYP]
-	ld a, [rJOYP]
-	ld a, [rJOYP]
-	ld a, [rJOYP]
-	ld a, [rJOYP]
-	call Function9a7a
-	call Function9a7a
-	ld a, $30
-	ld [rJOYP], a
-	ld a, [rJOYP]
-	ld a, [rJOYP]
-	ld a, [rJOYP]
-	call Function9a7a
-	call Function9a7a
-	ld a, [rJOYP]
-	and $3
-	cp $3
-	jr nz, .asm_99a6
-	call Function99ab
-	and a
-	ret
-
-.asm_99a6
-	call Function99ab
-	scf
-	ret
-; 99ab
-
-Function99ab: ; 99ab
-	ld hl, $5d16
-	call Function981a
-	jp Function9a7a
-; 99b4
-
-Function99b4: ; 99b4
-	call DisableLCD
-	ld a, $e4
-	ld [rBGP], a
-	ld hl, $5df6
-	ld de, VTiles1
-	ld bc, $1000
-	call CopyData
-	call DrawDefaultTiles
-	ld a, $e3
-	ld [rLCDC], a
-	ld hl, $5d06
-	call Function981a
-	xor a
-	ld [rBGP], a
-	ret
-; 99d8
-
-Function99d8: ; 99d8
-	call DisableLCD
-	ld a, $e4
-	ld [rBGP], a
-	ld de, VTiles1
-	ld bc, $0140
-	call CopyData
-	ld b, $12
-.asm_99ea
-	push bc
-	ld bc, $000c
-	call CopyData
-	ld bc, $0028
-	call ClearBytes
-	ld bc, $000c
-	call CopyData
-	pop bc
-	dec b
-	jr nz, .asm_99ea
-	ld bc, $0140
-	call CopyData
-	ld bc, Start
-	call ClearBytes
-	ld bc, $0080
-	call CopyData
-	call DrawDefaultTiles
-	ld a, $e3
-	ld [rLCDC], a
-	ld hl, $5d46
-	call Function981a
-	xor a
-	ld [rBGP], a
-	ret
-; 9a24
-
-Function9a24: ; 9a24
-	call DisableLCD
-	ld a, $e4
-	ld [rBGP], a
-	ld de, VTiles1
-	ld b, $80
-.asm_9a30
-	push bc
-	ld bc, $0010
-	call CopyData
-	ld bc, $0010
-	call ClearBytes
-	pop bc
-	dec b
-	jr nz, .asm_9a30
-	call DrawDefaultTiles
-	ld a, $e3
-	ld [rLCDC], a
-	ld hl, $5d36
-	call Function981a
-	xor a
-	ld [rBGP], a
-	ret
-; 9a52
-
-CopyData: ; 0x9a52
-; copy bc bytes of data from hl to de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	dec bc
-	ld a, c
-	or b
-	jr nz, CopyData
-	ret
-; 0x9a5b
-
-ClearBytes: ; 0x9a5b
-; clear bc bytes of data starting from de
-	xor a
-	ld [de], a
-	inc de
-	dec bc
-	ld a, c
-	or b
-	jr nz, ClearBytes
-	ret
-; 0x9a64
-
-DrawDefaultTiles: ; 0x9a64
-; Draw 240 tiles (2/3 of the screen) from tiles in VRAM
-	ld hl, VBGMap0 ; BG Map 0
-	ld de, 32 - 20
-	ld a, $80 ; starting tile
-	ld c, 12 + 1
-.line
-	ld b, 20
-.tile
-	ld [hli], a
-	inc a
-	dec b
-	jr nz, .tile
-; next line
-	add hl, de
-	dec c
-	jr nz, .line
-	ret
-; 0x9a7a
-
-Function9a7a: ; 9a7a
-	ld de, $1b58
-.asm_9a7d
-	nop
-	nop
-	nop
-	dec de
-	ld a, d
-	or e
-	jr nz, .asm_9a7d
-	ret
-; 9a86
-
-INCBIN "baserom.gbc", $9a86, $a51e - $9a86
-
-SGBBorder:
-INCBIN "gfx/misc/sgb_border.2bpp"
-
-INCBIN "baserom.gbc", $a8be, $a8d6 - $a8be
-
-PokemonPalettes:
-INCLUDE "gfx/pics/palette_pointers.asm"
-
-INCBIN "baserom.gbc", $b0ae, $b0d2 - $b0ae
-
-TrainerPalettes:
-INCLUDE "gfx/trainers/palette_pointers.asm"
-
-Functionb1de: ; b1de
-	callba Function494ac
-	jr c, .asm_b230
-	ld a, [$d19a]
-	and $7
-	ld e, a
-	ld d, $0
-	ld hl, $7279
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [TimeOfDayPal]
-	and $3
-	add a
-	add a
-	add a
-	ld e, a
-	ld d, $0
-	add hl, de
-	ld e, l
-	ld d, h
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, Unkn1Pals
-	ld b, $8
-.asm_b210
-	ld a, [de]
-	push de
-	push hl
-	ld l, a
-	ld h, $0
-	add hl, hl
-	add hl, hl
-	add hl, hl
-	ld de, MornPal
-	add hl, de
-	ld e, l
-	ld d, h
-	pop hl
-	ld c, $8
-.asm_b222
-	ld a, [de]
-	inc de
-	ld [hli], a
-	dec c
-	jr nz, .asm_b222
-	pop de
-	inc de
-	dec b
-	jr nz, .asm_b210
-	pop af
-	ld [rSVBK], a
-
-.asm_b230
-	ld a, [TimeOfDayPal]
-	and $3
-	ld bc, $0040
-	ld hl, $7469
-	call AddNTimes
-	ld de, Unkn2Pals
-	ld bc, $0040
-	ld a, $5
-	call FarCopyWRAM
-	ld a, [$d19a]
-	cp $1
-	jr z, .asm_b253
-	cp $2
-	ret nz
-
-.asm_b253
-	ld a, [MapGroup]
-	ld l, a
-	ld h, $0
-	add hl, hl
-	add hl, hl
-	add hl, hl
-	ld de, $7569
-	add hl, de
-	ld a, [TimeOfDayPal]
-	and $3
-	cp $2
-	jr c, .asm_b26d
-	inc hl
-	inc hl
-	inc hl
-	inc hl
-
-.asm_b26d
-	ld de, $d032
-	ld bc, $0004
-	ld a, $5
-	call FarCopyWRAM
-	ret
-; b279
-
-INCBIN "baserom.gbc", $b279, $b319 - $b279
-
-MornPal: ; 0xb319
-INCBIN "tilesets/morn.pal"
-; 0xb359
-
-DayPal: ; 0xb359
-INCBIN "tilesets/day.pal"
-; 0xb399
-
-NitePal: ; 0xb399
-INCBIN "tilesets/nite.pal"
-; 0xb3d9
-
-DarkPal: ; 0xb3d9
-INCBIN "tilesets/dark.pal"
-; 0xb419
-
-INCBIN "baserom.gbc", $b419, $b7a9 - $b419
-
-Paletteb7a9: ; b7a9
-	RGB 31, 31, 31
-	RGB 24, 25, 28
-	RGB 24, 24, 09
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 30, 10, 06
-	RGB 24, 24, 09
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 15, 31, 00
-	RGB 24, 24, 09
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 15, 31
-	RGB 24, 24, 09
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 15, 21, 31
-	RGB 24, 24, 09
-	RGB 00, 00, 00
-
-	RGB 31, 31, 11
-	RGB 31, 31, 06
-	RGB 24, 24, 09
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 16, 19, 29
-	RGB 25, 22, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 21, 21, 21
-	RGB 13, 13, 13
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 30, 10, 06
-	RGB 31, 00, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 12, 25, 01
-	RGB 05, 14, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 12, 25, 01
-	RGB 30, 10, 06
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 06
-	RGB 20, 15, 03
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 06
-	RGB 15, 21, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 06
-	RGB 20, 15, 03
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 24, 21
-	RGB 31, 13, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-; b829
+INCLUDE "engine/color.asm"
 
 
 SECTION "bank3",ROMX,BANK[$3]