Just for fun
This commit is contained in:
parent
fb9b90e18b
commit
29daa6e90e
BIN
bin/DMGTRIS.GBC
BIN
bin/DMGTRIS.GBC
Binary file not shown.
Binary file not shown.
|
@ -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
|
|
@ -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
|
||||||
|
|
||||||
|
|
19
src/main.asm
19
src/main.asm
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue