Just for fun

This commit is contained in:
Randy Thiemann 2023-10-26 10:44:00 +02:00
parent fb9b90e18b
commit 29daa6e90e
7 changed files with 118 additions and 8 deletions

Binary file not shown.

Binary file not shown.

89
src/dmgfx.asm Normal file
View File

@ -0,0 +1,89 @@
; DMGTRIS
; Copyright (C) 2023 - Randy Thiemann <randy.thiemann@gmail.com>
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
; You should have received a copy of the GNU General Public License
; along with this program. If not, see <https://www.gnu.org/licenses/>.
IF !DEF(DMGFX_ASM)
DEF DMGFX_ASM EQU 1
INCLUDE "globals.asm"
SECTION "DMG Intro Effect", ROM0
DoDMGEffect::
ld a, [wInitialA]
cp a, $11
ret z
; Yeet the logo
ld c, 10
.loop0
wait_vblank
ldh a, [rSCY]
dec a
ldh [rSCY], a
wait_vblank_end
dec c
jr nz, .loop0
ld c, 45
.loop1
wait_vblank
ldh a, [rSCY]
inc a
inc a
ldh [rSCY], a
wait_vblank_end
dec c
jr nz, .loop1
; Fade
wait_vblank
ld a, PALETTE_MONO_2
ldh [rBGP], a
ld c, 20
.loop2
wait_vblank
wait_vblank_end
dec c
jr nz, .loop2
wait_vblank
ld a, PALETTE_MONO_1
ldh [rBGP], a
ld c, 20
.loop3
wait_vblank
wait_vblank_end
dec c
jr nz, .loop3
wait_vblank
ld a, PALETTE_MONO_0
ldh [rBGP], a
ld c, 20
.loop4
wait_vblank
wait_vblank_end
dec c
jr nz, .loop4
ret
ENDC

View File

@ -26,9 +26,9 @@ INCLUDE "structs.asm"
; Waits for PPU mode to be 0 or 1. ; Waits for PPU mode to be 0 or 1.
; We don't wait for 2 because it's super short and impractical to do much of anything in. ; We don't wait for 2 because it's super short and impractical to do much of anything in.
MACRO wait_vram MACRO wait_vram
ld hl, rSTAT
.wvr\@ .wvr\@
bit STATB_BUSY, [hl] ldh a, [rSTAT]
bit STATB_BUSY, a
jr nz, .wvr\@ jr nz, .wvr\@
ENDM ENDM

View File

@ -68,13 +68,20 @@ Main::
ld a, l ld a, l
ld [wInitialL], a ld [wInitialL], a
; Turn off LCD during initialization. ; Let the DMG have some fun with the initial screen.
call DoDMGEffect
; Turn off LCD during initialization, but not on DMG.
ld a, [wInitialA]
cp a, $11
jr nz, :+
wait_vram wait_vram
xor a, a xor a, a
ldh [rLCDC], a ldh [rLCDC], a
; Set up stack ; Set up stack
ld sp, wStackEnd-1 : ld sp, wStackEnd-1
; GBC? Double speed mode and set up palettes. ; GBC? Double speed mode and set up palettes.
ld a, [wInitialA] ld a, [wInitialA]
@ -96,7 +103,7 @@ Main::
ld de, Tiles ld de, Tiles
ld hl, _VRAM ld hl, _VRAM
ld bc, TilesEnd - Tiles ld bc, TilesEnd - Tiles
call UnsafeMemCopy call SafeMemCopy
; Clear OAM. ; Clear OAM.
call ClearOAM call ClearOAM
@ -111,7 +118,11 @@ Main::
call SFXInit call SFXInit
; Set up the interrupt handlers. ; Set up the interrupt handlers.
call InitializeLCDCInterrupt ld a, [wInitialA]
cp a, $11
jr nz, :+
wait_vblank
: call InitializeLCDCInterrupt
; Switch to gameplay state. ; Switch to gameplay state.
call SwitchToTitle call SwitchToTitle

View File

@ -57,5 +57,15 @@ UnsafeMemSet::
jr nz, UnsafeMemSet jr nz, UnsafeMemSet
ret ret
SafeMemSet::
wait_vram
ld [hl], d
inc hl
dec bc
ld a, b
or a, c
jr nz, SafeMemSet
ret
ENDC ENDC

View File

@ -85,11 +85,11 @@ ClearOAM::
ld hl, _OAMRAM ld hl, _OAMRAM
ld bc, $9F ld bc, $9F
ld d, 0 ld d, 0
call UnsafeMemSet call SafeMemSet
ld hl, wShadowOAM ld hl, wShadowOAM
ld bc, $9F ld bc, $9F
ld d, 0 ld d, 0
call UnsafeMemSet call SafeMemSet
ret ret