shithub: pokecrystal

Download patch

ref: 04da88a285b0d43192db4ecd5d49d86e5bfeaea3
parent: 6d29673a5fe731e4705f0f11e885d89b47eec927
author: yenatch <[email protected]>
date: Thu Aug 29 15:37:35 EDT 2013

move palette asm from main.asm to engine/palettes.asm

--- /dev/null
+++ b/engine/palettes.asm
@@ -1,0 +1,347 @@
+; Functions dealing with palettes.
+
+
+UpdatePalsIfCGB: ; c2f
+; update bgp data from BGPals
+; update obp data from OBPals
+; return carry if successful
+
+; check cgb
+	ld a, [hCGB]
+	and a
+	ret z
+
+
+UpdateCGBPals: ; c33
+; return carry if successful
+; any pals to update?
+	ld a, [hCGBPalUpdate]
+	and a
+	ret z
+
+
+ForceUpdateCGBPals: ; c37
+
+	ld a, [rSVBK]
+	push af
+	ld a, 5 ; BANK(BGPals)
+	ld [rSVBK], a
+
+	ld hl, BGPals ; 5:d080
+
+; copy 8 pals to bgpd
+	ld a, %10000000 ; auto increment, index 0
+	ld [rBGPI], a
+	ld c, rBGPD % $100
+	ld b, 4 ; NUM_PALS / 2
+.bgp
+	rept $10
+	ld a, [hli]
+	ld [$ff00+c], a
+	endr
+
+	dec b
+	jr nz, .bgp
+	
+; hl is now 5:d0c0 OBPals
+	
+; copy 8 pals to obpd
+	ld a, %10000000 ; auto increment, index 0
+	ld [rOBPI], a
+	ld c, rOBPD - rJOYP
+	ld b, 4 ; NUM_PALS / 2
+.obp
+	rept $10
+	ld a, [hli]
+	ld [$ff00+c], a
+	endr
+
+	dec b
+	jr nz, .obp
+	
+	pop af
+	ld [rSVBK], a
+
+; clear pal update queue
+	xor a
+	ld [hCGBPalUpdate], a
+
+	scf
+	ret
+; c9f
+
+
+DmgToCgbBGPals: ; c9f
+; exists to forego reinserting cgb-converted image data
+
+; input: a -> bgp
+
+	ld [rBGP], a
+	push af
+
+	ld a, [hCGB]
+	and a
+	jr z, .end
+
+	push hl
+	push de
+	push bc
+	ld a, [rSVBK]
+	push af
+
+	ld a, 5
+	ld [rSVBK], a
+
+; copy & reorder bg pal buffer
+	ld hl, BGPals ; to
+	ld de, Unkn1Pals ; from
+; order
+	ld a, [rBGP]
+	ld b, a
+; all pals
+	ld c, 8
+	call CopyPals
+; request pal update
+	ld a, 1
+	ld [hCGBPalUpdate], a
+
+	pop af
+	ld [rSVBK], a
+	pop bc
+	pop de
+	pop hl
+.end
+	pop af
+	ret
+; ccb
+
+
+DmgToCgbObjPals: ; ccb
+; exists to forego reinserting cgb-converted image data
+
+; input: d -> obp1
+;        e -> obp2
+
+	ld a, e
+	ld [rOBP0], a
+	ld a, d
+	ld [rOBP1], a
+	
+	ld a, [hCGB]
+	and a
+	ret z
+
+	push hl
+	push de
+	push bc
+	ld a, [rSVBK]
+	push af
+
+	ld a, 5
+	ld [rSVBK], a
+
+; copy & reorder obj pal buffer
+	ld hl, OBPals ; to
+	ld de, Unkn2Pals ; from
+; order
+	ld a, [rOBP0]
+	ld b, a
+; all pals
+	ld c, 8
+	call CopyPals
+; request pal update
+	ld a, 1
+	ld [hCGBPalUpdate], a
+
+	pop af
+	ld [rSVBK], a
+	pop bc
+	pop de
+	pop hl
+	ret
+; cf8
+
+
+Functioncf8: ; cf8
+	ld [rOBP0], a
+	push af
+	ld a, [hCGB]
+	and a
+	jr z, .asm_d22
+	push hl
+	push de
+	push bc
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, $d0c0
+	ld de, MartPointer
+	ld a, [rOBP0]
+	ld b, a
+	ld c, $1
+	call CopyPals
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	pop af
+	ld [rSVBK], a
+	pop bc
+	pop de
+	pop hl
+
+.asm_d22
+	pop af
+	ret
+; d24
+
+Functiond24: ; d24
+	ld [rOBP1], a
+	push af
+	ld a, [hCGB]
+	and a
+	jr z, .asm_d4e
+	push hl
+	push de
+	push bc
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, $d0c8
+	ld de, $d048
+	ld a, [rOBP1]
+	ld b, a
+	ld c, $1
+	call CopyPals
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	pop af
+	ld [rSVBK], a
+	pop bc
+	pop de
+	pop hl
+
+.asm_d4e
+	pop af
+	ret
+; d50
+
+
+
+CopyPals: ; d50
+; copy c palettes in order b from de to hl
+
+	push bc
+	ld c, 4 ; NUM_PAL_COLORS
+.loop
+	push de
+	push hl
+	
+; get pal color
+	ld a, b
+	and %11 ; color
+; 2 bytes per color
+	add a
+	ld l, a
+	ld h, 0
+	add hl, de
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	
+; dest
+	pop hl
+; write color
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	inc hl
+; next pal color
+	srl b
+	srl b
+; source
+	pop de
+; done pal?
+	dec c
+	jr nz, .loop
+	
+; de += 8 (next pal)
+	ld a, 8 ; NUM_PAL_COLORS * 2 ; bytes per pal
+	add e
+	jr nc, .ok
+	inc d
+.ok
+	ld e, a
+	
+; how many more pals?
+	pop bc
+	dec c
+	jr nz, CopyPals
+	ret
+; d79
+
+
+Functiond79: ; d79
+	ld a, [hCGB]
+	and a
+	ret z
+	ld a, 1
+	ld [rVBK], a
+	ld hl, VTiles0
+	ld bc, $2000
+	xor a
+	call ByteFill
+	ld a, 0
+	ld [rVBK], a
+	ret
+; d90
+
+
+Functiond90: ; d90
+	ret
+; d91
+
+
+Functiond91: ; d91
+	ld a, [hCGB]
+	and a
+	ret z
+	ld a, [rSVBK]
+	push af
+	ld a, 5 ; BANK(BGPals)
+	ld [rSVBK], a
+	ld hl, BGPals
+	ld bc, $40 + $10
+	xor a
+	call ByteFill
+	pop af
+	ld [rSVBK], a
+	ld a, 1
+	ld [hCGBPalUpdate], a
+	call DelayFrame
+	ret
+; db1
+
+
+Functiondb1: ; db1
+	ld a, [hROMBank]
+	push af
+	ld a, BANK(Function4c000)
+	rst Bankswitch
+	call Function4c000
+	pop af
+	rst Bankswitch
+	ret
+; dbd
+
+Functiondbd: ; dbd
+	ld a, [hROMBank]
+	push af
+	ld a, BANK(Function4c03f)
+	rst Bankswitch
+	call Function4c03f
+	pop af
+	rst Bankswitch
+	ret
+; dc9
+
--- a/main.asm
+++ b/main.asm
@@ -131,354 +131,7 @@
 INCLUDE "engine/decompress.asm"
 
 
-UpdatePalsIfCGB: ; c2f
-; update bgp data from BGPals
-; update obp data from OBPals
-; return carry if successful
-
-; check cgb
-	ld a, [hCGB]
-	and a
-	ret z
-
-
-UpdateCGBPals: ; c33
-; return carry if successful
-; any pals to update?
-	ld a, [hCGBPalUpdate]
-	and a
-	ret z
-
-
-ForceUpdateCGBPals: ; c37
-
-	ld a, [rSVBK]
-	push af
-	ld a, 5 ; BANK(BGPals)
-	ld [rSVBK], a
-
-	ld hl, BGPals ; 5:d080
-
-; copy 8 pals to bgpd
-	ld a, %10000000 ; auto increment, index 0
-	ld [rBGPI], a
-	ld c, rBGPD % $100
-	ld b, 4 ; NUM_PALS / 2
-.bgp
-	rept $10
-	ld a, [hli]
-	ld [$ff00+c], a
-	endr
-
-	dec b
-	jr nz, .bgp
-	
-; hl is now 5:d0c0 OBPals
-	
-; copy 8 pals to obpd
-	ld a, %10000000 ; auto increment, index 0
-	ld [rOBPI], a
-	ld c, rOBPD - rJOYP
-	ld b, 4 ; NUM_PALS / 2
-.obp
-	rept $10
-	ld a, [hli]
-	ld [$ff00+c], a
-	endr
-
-	dec b
-	jr nz, .obp
-	
-	pop af
-	ld [rSVBK], a
-
-; clear pal update queue
-	xor a
-	ld [hCGBPalUpdate], a
-
-	scf
-	ret
-; c9f
-
-
-DmgToCgbBGPals: ; c9f
-; exists to forego reinserting cgb-converted image data
-
-; input: a -> bgp
-
-	ld [rBGP], a
-	push af
-
-	ld a, [hCGB]
-	and a
-	jr z, .end
-
-	push hl
-	push de
-	push bc
-	ld a, [rSVBK]
-	push af
-
-	ld a, 5
-	ld [rSVBK], a
-
-; copy & reorder bg pal buffer
-	ld hl, BGPals ; to
-	ld de, Unkn1Pals ; from
-; order
-	ld a, [rBGP]
-	ld b, a
-; all pals
-	ld c, 8
-	call CopyPals
-; request pal update
-	ld a, 1
-	ld [hCGBPalUpdate], a
-
-	pop af
-	ld [rSVBK], a
-	pop bc
-	pop de
-	pop hl
-.end
-	pop af
-	ret
-; ccb
-
-
-DmgToCgbObjPals: ; ccb
-; exists to forego reinserting cgb-converted image data
-
-; input: d -> obp1
-;        e -> obp2
-
-	ld a, e
-	ld [rOBP0], a
-	ld a, d
-	ld [rOBP1], a
-	
-	ld a, [hCGB]
-	and a
-	ret z
-
-	push hl
-	push de
-	push bc
-	ld a, [rSVBK]
-	push af
-
-	ld a, 5
-	ld [rSVBK], a
-
-; copy & reorder obj pal buffer
-	ld hl, OBPals ; to
-	ld de, Unkn2Pals ; from
-; order
-	ld a, [rOBP0]
-	ld b, a
-; all pals
-	ld c, 8
-	call CopyPals
-; request pal update
-	ld a, 1
-	ld [hCGBPalUpdate], a
-
-	pop af
-	ld [rSVBK], a
-	pop bc
-	pop de
-	pop hl
-	ret
-; cf8
-
-
-Functioncf8: ; cf8
-	ld [rOBP0], a
-	push af
-	ld a, [hCGB]
-	and a
-	jr z, .asm_d22
-	push hl
-	push de
-	push bc
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, $d0c0
-	ld de, MartPointer
-	ld a, [rOBP0]
-	ld b, a
-	ld c, $1
-	call CopyPals
-	ld a, $1
-	ld [hCGBPalUpdate], a
-	pop af
-	ld [rSVBK], a
-	pop bc
-	pop de
-	pop hl
-
-.asm_d22
-	pop af
-	ret
-; d24
-
-Functiond24: ; d24
-	ld [rOBP1], a
-	push af
-	ld a, [hCGB]
-	and a
-	jr z, .asm_d4e
-	push hl
-	push de
-	push bc
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, $d0c8
-	ld de, $d048
-	ld a, [rOBP1]
-	ld b, a
-	ld c, $1
-	call CopyPals
-	ld a, $1
-	ld [hCGBPalUpdate], a
-	pop af
-	ld [rSVBK], a
-	pop bc
-	pop de
-	pop hl
-
-.asm_d4e
-	pop af
-	ret
-; d50
-
-
-
-CopyPals: ; d50
-; copy c palettes in order b from de to hl
-
-	push bc
-	ld c, 4 ; NUM_PAL_COLORS
-.loop
-	push de
-	push hl
-	
-; get pal color
-	ld a, b
-	and %11 ; color
-; 2 bytes per color
-	add a
-	ld l, a
-	ld h, $0
-	add hl, de
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	
-; dest
-	pop hl
-; write color
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	inc hl
-; next pal color
-	srl b
-	srl b
-; source
-	pop de
-; done pal?
-	dec c
-	jr nz, .loop
-	
-; de += 8 (next pal)
-	ld a, 8 ; NUM_PAL_COLORS * 2 ; bytes per pal
-	add e
-	jr nc, .ok
-	inc d
-.ok
-	ld e, a
-	
-; how many more pals?
-	pop bc
-	dec c
-	jr nz, CopyPals
-	ret
-; d79
-
-
-Functiond79: ; d79
-	ld a, [hCGB]
-	and a
-	ret z
-	ld a, $1
-	ld [rVBK], a
-	ld hl, VTiles0
-	ld bc, $2000
-	xor a
-	call ByteFill
-	ld a, $0
-	ld [rVBK], a
-	ret
-; d90
-
-
-Functiond90: ; d90
-	ret
-; d91
-
-
-Functiond91: ; d91
-	ld a, [hCGB]
-	and a
-	ret z
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, $d080
-	ld bc, $0050
-	xor a
-	call ByteFill
-	pop af
-	ld [rSVBK], a
-	ld a, $1
-	ld [hCGBPalUpdate], a
-	call DelayFrame
-	ret
-; db1
-
-
-Functiondb1: ; db1
-	ld a, [hROMBank]
-	push af
-	ld a, $13
-	rst Bankswitch
-
-	call $4000
-	pop af
-	rst Bankswitch
-
-	ret
-; dbd
-
-Functiondbd: ; dbd
-	ld a, [hROMBank]
-	push af
-	ld a, $13
-	rst Bankswitch
-
-	call $403f
-	pop af
-	rst Bankswitch
-
-	ret
-; dc9
-
+INCLUDE "engine/palettes.asm"
 
 
 Functiondc9: ; dc9