130 lines
2.2 KiB
ArmAsm
130 lines
2.2 KiB
ArmAsm
;
|
|
; titleScreen
|
|
; A friendly place to start the game
|
|
;
|
|
; Created by Quinn Dunki on 7/23/23
|
|
;
|
|
|
|
.a16
|
|
.i16
|
|
|
|
titlePalette:
|
|
.word $06af,$0072,$0072,$0861,$0c93,$0eb4,$0d66,$0f9a,$0777,$0d00,$0bbb,$ddd,$007b,$0a5b,$0000,$0fff
|
|
|
|
TITLE_ANIMATION_FRAMES = 5
|
|
CAT_DELAY = 300
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
; titleScreen
|
|
;
|
|
; Shows the title screen and main game menu
|
|
;
|
|
titleScreen:
|
|
|
|
lda #%10000000 ; Set all SCBs to 320, no interrupts, palette 0
|
|
jsr initSCBs
|
|
|
|
; Copy title screen art from where it was loaded in bank 6
|
|
; This isn't fast, but doesn't need to be
|
|
ldx #0
|
|
|
|
titleScreenCopyLoop:
|
|
lda $060000,x
|
|
sta VRAM,x
|
|
inx
|
|
inx
|
|
cpx #$7d00
|
|
bne titleScreenCopyLoop
|
|
|
|
; Set up sprite rendering
|
|
BITS8
|
|
lda #3
|
|
sta SpriteBankBank00+3 ; Tell compiled sprites what bank they are in
|
|
BITS16
|
|
|
|
; Set up audio
|
|
jsr initSoundSystem
|
|
|
|
; Fade in
|
|
lda #titlePalette
|
|
sta PARAML2
|
|
jsr paletteFade
|
|
|
|
titleScreenMainLoop:
|
|
|
|
; Track animations
|
|
jsr nextVBL
|
|
lda titleAnimationCounter
|
|
inc
|
|
cmp TITLE_ANIMATION_FRAMES
|
|
jsr titleScreenResetAnimation
|
|
|
|
; Time animations of cats
|
|
lda animationDelay0
|
|
dec
|
|
bne titleScreenStillCat
|
|
lda #CAT_DELAY
|
|
sta animationDelay0
|
|
|
|
; Render next frame of cats
|
|
lda #titleAnimationPos0
|
|
sta PARAML0
|
|
ldx #TITLE_ANIMATION_FRAMES
|
|
ldy #30
|
|
lda #ANIMATION_SIZE_16x32
|
|
jsr renderAnimation
|
|
bra titleScreenNextCat
|
|
|
|
titleScreenStillCat:
|
|
sta animationDelay0
|
|
ldy #$5d79
|
|
lda #29
|
|
jsr drawSpriteBankSafe
|
|
|
|
titleScreenNextCat:
|
|
lda animationDelay1
|
|
dec
|
|
bne titleScreenStillCat2
|
|
lda #CAT_DELAY
|
|
sta animationDelay1
|
|
|
|
lda #titleAnimationPos1
|
|
sta PARAML0
|
|
ldx #TITLE_ANIMATION_FRAMES
|
|
ldy #21
|
|
lda #ANIMATION_SIZE_16x32
|
|
jsr renderAnimation
|
|
bra titleScreenKeyboard
|
|
|
|
titleScreenStillCat2:
|
|
sta animationDelay1
|
|
ldy #$5da0
|
|
lda #20
|
|
jsr drawSpriteBankSafe
|
|
|
|
titleScreenKeyboard:
|
|
; Check for selection
|
|
jsr kbdScanTitle
|
|
lda menuActionRequested
|
|
beq titleScreenMainLoop
|
|
|
|
jmp beginGameplay
|
|
|
|
titleScreenResetAnimation:
|
|
stz titleAnimationCounter
|
|
rts
|
|
|
|
titleAnimationCounter:
|
|
.word 0
|
|
titleAnimationPos0:
|
|
.word 130,120
|
|
titleAnimationPos1:
|
|
.word 208,120
|
|
animationDelay0:
|
|
.word CAT_DELAY/2
|
|
animationDelay1:
|
|
.word CAT_DELAY
|
|
menuActionRequested:
|
|
.word 0
|