summaryrefslogtreecommitdiff
path: root/engine/palettes.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/palettes.asm')
-rw-r--r--engine/palettes.asm113
1 files changed, 113 insertions, 0 deletions
diff --git a/engine/palettes.asm b/engine/palettes.asm
new file mode 100644
index 0000000..d1f93c0
--- /dev/null
+++ b/engine/palettes.asm
@@ -0,0 +1,113 @@
+INCLUDE "constants.asm"
+
+SECTION "Overworld fade", ROMX[$433e],BANK[$23]
+
+OverworldFadeIn:: ; 23:433e
+ ld c, 0
+ call GetFadeStep
+ ld b, 4
+ call FadeTowardsWhite
+ ret
+
+OverworldFadeOut:: ; 23:4349
+ ld c, 9
+ call GetFadeStep
+ ld b, 4
+ call FadeTowardsBlack
+ ret
+
+
+; TODO: merge this
+SECTION "Palette fading, part 2?", ROMX[$43d1],BANK[$23]
+
+ApplyPalettesAtHL:: ; 23:43d1
+ push hl
+ ld a, [hli]
+ ld [rBGP], a
+ ld a, [hli]
+ ld [rOBP0], a
+ ld a, [hli]
+ ld [rOBP1], a
+ pop hl
+ ret
+
+FadeTowardsWhite:: ; 23:43dd
+ call ApplyPalettesAtHL
+ inc hl
+ inc hl
+ inc hl
+ ld c, 8
+ call DelayFrames
+ dec b
+ jr nz, FadeTowardsWhite
+ ret
+
+FadeTowardsBlack:: ; 23:43ec
+ call ApplyPalettesAtHL
+ dec hl
+ dec hl
+ dec hl
+ ld c, 8
+ call DelayFrames
+ dec b
+ jr nz, FadeTowardsBlack
+ ret
+
+GetFadeStep:: ; 23:43fb
+ ld a, [wTimeOfDayPal]
+ and 3
+ push bc
+ ld c, a
+ ld b, 0
+ ld hl, .sequences
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop bc
+ ld b, 0
+ add hl, bc
+ ret
+
+.sequences
+ dw .sequence0
+ dw .sequence1
+ dw .sequence2
+ dw .sequence3
+
+.sequence0
+ db $ff, $ff, $ff
+ db $fe, $fe, $fe
+ db $f9, $e4, $e4
+ db $e4, $d0, $d0
+ db $90, $80, $80
+ db $40, $40, $40
+ db $00, $00, $00
+
+.sequence1
+ db $ff, $ff, $ff
+ db $fe, $fe, $fe
+ db $f9, $e4, $e4
+ db $e9, $d0, $d0
+ db $90, $80, $80
+ db $40, $40, $40
+ db $00, $00, $00
+
+.sequence2
+ db $ff, $ff, $ff
+ db $fe, $fe, $ff
+ db $f9, $e4, $ff
+ db $f9, $d0, $ff
+ db $90, $80, $90
+ db $40, $40, $40
+ db $00, $00, $00
+
+.sequence3
+ db $ff, $ff, $ff
+ db $fe, $fe, $fe
+ db $f9, $e4, $e4
+ db $e8, $d0, $d0
+ db $90, $80, $80
+ db $40, $40, $40
+ db $00, $00, $00