From ada774960b5a9d7ff321f2378c9e9ec06ffe6049 Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Wed, 22 Jul 2020 23:46:04 -0400 Subject: [PATCH] Finish up work on the scorpion, adding support for shooting the scorpion. Some more cleanup of hard coded constants, moving them to globals. --- BuGS/game.s | 28 ++++++++++++++-------------- BuGS/gameScorpion.s | 28 +++++++++++++++++++++++----- BuGS/globals.s | 9 +++++++++ BuGS/sprites/sprites.macros | 8 ++++---- 4 files changed, 50 insertions(+), 23 deletions(-) diff --git a/BuGS/game.s b/BuGS/game.s index a2e3dbb..90cb3f3 100644 --- a/BuGS/game.s +++ b/BuGS/game.s @@ -599,21 +599,21 @@ drawAll entry setupScreen entry short i,m - lda $e0c035 ; Enable shadowing of SHR + lda >SHADOW_REGISTER ; Enable shadowing of SHR and #$f7 - sta $e0c035 + sta >SHADOW_REGISTER lda #$a1 - sta $e0c029 ; Enable SHR mode + sta >NEW_VIDEO_REGISTER ; Enable SHR mode long i,m sei phd tsc sta backupStack - lda $e1c068 ; Direct Page and Stack in Bank 01/ + lda >STATE_REGISTER ; Direct Page and Stack in Bank 01/ ora #$0030 - sta $e1c068 + sta >STATE_REGISTER ldx #$0000 lda #$9dfe @@ -625,9 +625,9 @@ nextWord anop dey bpl nextWord - lda $e1c068 + lda >STATE_REGISTER and #$ffcf - sta $e1c068 + sta >STATE_REGISTER lda backupStack tcs pld @@ -640,9 +640,9 @@ nextWord anop checkKeyboard entry checkKey_loop2 anop short i,m - lda $e0c000 + lda >KEYBOARD bpl checkKey_done - sta $e0c010 + sta >KEYBOARD_STROBE long i,m and #$007f @@ -665,7 +665,7 @@ checkKey_loop2 anop lda colourPalette inc a - cmp #$000e + cmp #NUM_COLOUR_PALETTES blt checkKey_skip lda #$0000 checkKey_skip anop @@ -694,9 +694,9 @@ checkKey_done anop waitForKey entry short i,m waitForKey_loop anop - lda $e0c000 + lda >KEYBOARD bpl waitForKey_loop - sta $e0c010 + sta >KEYBOARD_STROBE long i,m rtl @@ -705,10 +705,10 @@ waitForVbl entry short i,m vblLoop1 anop lda #$fe - cmp $e0c019 + cmp >READ_VBL bpl vblLoop1 vblLoop2 anop - cmp $e0c019 + cmp >READ_VBL bmi vblLoop2 long i,m rtl diff --git a/BuGS/gameScorpion.s b/BuGS/gameScorpion.s index 1d4fedb..88b2c57 100644 --- a/BuGS/gameScorpion.s +++ b/BuGS/gameScorpion.s @@ -158,7 +158,7 @@ updateScorpion entry updateScorpion_cont anop cmp #SCORPION_STATE_EXPLODING - bra updateScorpion_notExploding + bne updateScorpion_notExploding jmp updateScorpion_exploding updateScorpion_notExploding anop @@ -243,6 +243,7 @@ updateScorpion_maybePoison anop ora #TILE_POISON_A_MUSHROOM sta tiles+TILE_TYPE_OFFSET,x +updateScorpion_done anop rtl updateScorpion_offScreen anop @@ -250,9 +251,15 @@ updateScorpion_offScreen anop rtl updateScorpion_exploding anop -; Write this code - -updateScorpion_done anop + lda scorpionSprite + beq updateScorpion_explosionDone + sec + sbc #$4 + sta scorpionSprite + rtl + +updateScorpion_explosionDone anop + stz scorpionState rtl @@ -362,7 +369,18 @@ addScorpion_done anop shootScorpion entry -; TODO - Write this code + lda scorpionState + beq shootScorpion_done + cmp #SCORPION_STATE_EXPLODING + beq shootScorpion_done + + lda #SCORPION_STATE_EXPLODING + sta scorpionState + + lda #EXPLOSION_LAST_OFFSET + sta scorpionSprite + +shootScorpion_done anop rtl diff --git a/BuGS/globals.s b/BuGS/globals.s index 13b2630..a09e394 100644 --- a/BuGS/globals.s +++ b/BuGS/globals.s @@ -118,6 +118,15 @@ TILE_BELOW_OFFSET gequ 8 TILE_LEFT_OFFSET gequ 10 TILE_RIGHT_OFFSET gequ 12 +NUM_COLOUR_PALETTES gequ 14 + +KEYBOARD gequ $e0c000 +KEYBOARD_STROBE gequ $e0c010 +READ_VBL gequ $e0c019 +SHADOW_REGISTER gequ $e0c035 +NEW_VIDEO_REGISTER gequ $e0c029 +STATE_REGISTER gequ $e1c068 + backupStack dc i2'0' diff --git a/BuGS/sprites/sprites.macros b/BuGS/sprites/sprites.macros index f5500d9..d97ce2b 100644 --- a/BuGS/sprites/sprites.macros +++ b/BuGS/sprites/sprites.macros @@ -11,9 +11,9 @@ sei tsc sta backupStack - lda $e1c068 ; Direct Page and Stack in Bank 01/ + lda >STATE_REGISTER ; Direct Page and Stack in Bank 01/ ora #$0030 - sta $e1c068 + sta >STATE_REGISTER clc tya tcs @@ -22,9 +22,9 @@ macro _spriteFooter - lda $e1c068 + lda >STATE_REGISTER and #$ffcf - sta $e1c068 + sta >STATE_REGISTER lda backupStack tcs cli