mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-01-23 09:16:20 -08:00
move palette asm from main.asm to engine/palettes.asm
This commit is contained in:
parent
6d29673a5f
commit
04da88a285
347
engine/palettes.asm
Normal file
347
engine/palettes.asm
Normal file
@ -0,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
|
||||
|
349
main.asm
349
main.asm
@ -131,354 +131,7 @@ INCLUDE "engine/joypad.asm"
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user