From 2927cb0c689b980cd17cc43ddbc7ce4d474207fb Mon Sep 17 00:00:00 2001 From: blondie7575 Date: Tue, 25 Jul 2023 14:33:23 -0700 Subject: [PATCH] Game/menu transitions working - Also cleaned up key mapping - Fixed a bug in VRAM pointer calculation --- animation.s | 1 + gamemanager.s | 15 +++++++++++++-- input.s | 41 +++++++++++++++++++++-------------------- titleScreen.s | 11 +++++++++-- 4 files changed, 44 insertions(+), 24 deletions(-) diff --git a/animation.s b/animation.s index 34387e9..88cff4b 100644 --- a/animation.s +++ b/animation.s @@ -25,6 +25,7 @@ renderAnimation: phx ; Calculate VRAM position jsr vramPtr +BREAK cpx #$ffff beq renderAnimationSkip stx SCRATCHL2 diff --git a/gamemanager.s b/gamemanager.s index 9f0942d..e0430a2 100644 --- a/gamemanager.s +++ b/gamemanager.s @@ -41,8 +41,12 @@ beginGameplay: jsr compileTerrain jsr clipTerrain + jsr renderTerrain - ; Set up palette for terrain and players + jsr renderInventory + jsr renderPlayers + + ; Fade in from menu lda #basePalette sta PARAML2 jsr paletteFade @@ -191,7 +195,14 @@ gameplayLoopEndFrame: gameplayLoopEndFrameCont: lda quitRequested beq gameplayLoopContinue - jmp quitGame + + ; Transition back to menu + stz quitRequested + lda #skyPalette + sta PARAML2 + jsr paletteFade + jmp titleScreen + gameplayLoopContinue: jmp gameplayLoop diff --git a/input.s b/input.s index 18e6a00..d387e42 100644 --- a/input.s +++ b/input.s @@ -28,6 +28,7 @@ kbdScanTitle: beq kbdScanEnterTitle cmp #(32 + $80) beq kbdScanSpaceTitle + bra kbdScanDebugPiggyback kbdScanTitleDone: BITS16 @@ -80,16 +81,16 @@ kbdScanGameplay: beq kbdScanLeftArrow cmp #(21 + $80) beq kbdScanRightArrow - cmp #('q' + $80) - beq kbdScanQ - cmp #('a' + $80) - beq kbdScanA - cmp #('z' + $80) - beq kbdScanZ - cmp #('s' + $80) - beq kbdScanS - cmp #('x' + $80) - beq kbdScanX + cmp #(11 + $80) + beq kbdScanUpArrow + cmp #(10 + $80) + beq kbdScanDownArrow + cmp #(27 + $80) + beq kbdScanESC + cmp #(',' + $80) + beq kbdScanComma + cmp #('.' + $80) + beq kbdScanPeriod cmp #(' ' + $80) beq kbdScanSpace cmp #(9 + $80) @@ -107,8 +108,8 @@ kbdScanDebug: sta KBDSTROBE kbdScanDebugPiggyback: - cmp #(27 + $80) - beq kbdScanESC + cmp #('`' + $80) + beq kbdScanBackQuote cmp #(127 + $80) beq kbdScanDEL cmp #('=' + $80) @@ -120,7 +121,7 @@ kbdScanDebugPiggyback: ; Gameplay Key Handlers ; -kbdScanRightArrow: +kbdScanPeriod: BITS16 lda mapScrollPos cmp #VISIBLETERRAINWIDTH-VISIBLETERRAINWINDOW @@ -132,7 +133,7 @@ kbdScanRightArrow: sta mapScrollRequested rts -kbdScanLeftArrow: +kbdScanComma: BITS16 lda mapScrollPos @@ -144,32 +145,32 @@ kbdScanLeftArrow: sta mapScrollRequested rts -kbdScanQ: +kbdScanESC: BITS16 lda #1 sta quitRequested rts -kbdScanA: +kbdScanLeftArrow: BITS16 lda #2 sta angleDeltaRequested rts -kbdScanZ: +kbdScanRightArrow: BITS16 lda #-2 sta angleDeltaRequested rts -kbdScanS: +kbdScanUpArrow: BITS16 lda #1 sta powerDeltaRequested rts -kbdScanX: +kbdScanDownArrow: BITS16 lda #-1 sta powerDeltaRequested @@ -181,7 +182,7 @@ kbdScanSpace: sta fireRequested rts -kbdScanESC: +kbdScanBackQuote: BITS16 lda #1 sta breakpoint diff --git a/titleScreen.s b/titleScreen.s index d9c7ecd..edc9238 100644 --- a/titleScreen.s +++ b/titleScreen.s @@ -26,6 +26,7 @@ titleScreen: lda #%10000000 ; Set all SCBs to 320, no interrupts, palette 0 jsr initSCBs + stz leftScreenEdge ; Copy title screen art from where it was loaded in bank 6 ; This isn't fast, but doesn't need to be @@ -120,6 +121,7 @@ titleScreenStillCat2: titleScreenKeyboard: ; Check for selection jsr kbdScanTitle + jsr kbdScanDebug lda menuActionRequested beq titleScreenMainLoopEndFrame @@ -163,6 +165,11 @@ titleScreenMainLoopEndFrame: jmp titleScreenMainLoop titleScreenBeginGame: + ; Transition to gameplay + stz menuActionRequested + lda #skyPalette + sta PARAML2 + jsr paletteFade jmp beginGameplay titleScreenQuit: @@ -171,9 +178,9 @@ titleScreenQuit: titleAnimationCounter: .word 0 titleAnimationPos0: - .word 130,120 + .word 114,120 titleAnimationPos1: - .word 208,120 + .word 192,120 animationDelay0: .word CAT_DELAY/2 animationDelay1: