;================================================================================= ; Quick palette fade ;================================================================================= .section "Quick fade" free FadeInScreen: halt ; wait for Vblank xor a out ($bf),a ; palette index (0) ld a,$c0 out ($bf),a ; palette write identifier ld b,32 ; number of palette entries: 32 (full palette) ld hl,PaletteBuffer ; source -: ld a,(hl) ; load raw palette data and %00101010 ; modify color values: 3 becomes 2, 1 becomes 0 srl a ; modify color values: 2 becomes 1 out ($be),a ; write modified data to CRAM inc hl djnz - ld b,4 ; delay 4 frames -: halt djnz - ld b,32 ; number of palette entries: 32 (full palette) ld hl,PaletteBuffer ; source -: ld a,(hl) ; load raw palette data and %00101010 ; modify color values: 3 becomes 2, 1 becomes 0 out ($be),a ; write modified data to CRAM inc hl djnz - ld b,4 ; delay 4 frames -: halt djnz - ld b,32 ; number of palette entries: 32 (full palette) ld hl,PaletteBuffer ; source -: ld a,(hl) ; load raw palette data out ($be),a ; write unfodified data to CRAM, palette load complete inc hl djnz - ret ;--------------------------------------------------------------------------------- FadeOutScreen: halt ; wait for Vblank xor a out ($bf),a ; palette index (0) ld a,$c0 out ($bf),a ; palette write identifier ld b,32 ; number of palette entries: 32 (full palette) ld hl,PaletteBuffer ; source -: ld a,(hl) ; load raw palette data and %00101010 ; modify color values: 3 becomes 2, 1 becomes 0 out ($be),a ; write modified data to CRAM inc hl djnz - ld b,4 ; delay 4 frames -: halt djnz - ld b,32 ; number of palette entries: 32 (full palette) ld hl,PaletteBuffer ; source -: ld a,(hl) ; load raw palette data and %00101010 ; modify color values: 3 becomes 2, 1 becomes 0 srl a ; modify color values: 2 becomes 1 out ($be),a ; write modified data to CRAM inc hl djnz - ld b,4 ; delay 4 frames -: halt djnz - ld b, 32 ; number of palette entries: 32 (full palette) xor a ; we want to blacken the palette, so a is set to 0 -: out ($be), a ; write zeros to CRAM, palette fade complete djnz - ret .ends