diff --git a/BuGS/game.s b/BuGS/game.s index 6734e7c..7c8c2e8 100644 --- a/BuGS/game.s +++ b/BuGS/game.s @@ -203,7 +203,161 @@ startLevel entry pauseGame entry -; TODO - Write this code... + jsl pauseSound + + ldx #GAME_NUM_TILES_WIDE*4+2 + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + + ldx #GAME_NUM_TILES_WIDE*6+2 + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_LETTER_P + _overwriteTile TILE_LETTER_A + _overwriteTile TILE_LETTER_U + _overwriteTile TILE_LETTER_S + _overwriteTile TILE_LETTER_E + _overwriteTile TILE_LETTER_D + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + + ldx #GAME_NUM_TILES_WIDE*8+2 + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + + ldx #GAME_NUM_TILES_WIDE*10+2 + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_LETTER_P + _overwriteTile TILE_LETTER_R + _overwriteTile TILE_LETTER_E + _overwriteTile TILE_LETTER_S + _overwriteTile TILE_LETTER_S + _overwriteTile TILE_EMPTY + _overwriteTile TILE_LETTER_Q + _overwriteTile TILE_EMPTY + _overwriteTile TILE_LETTER_T + _overwriteTile TILE_LETTER_O + _overwriteTile TILE_EMPTY + _overwriteTile TILE_LETTER_Q + _overwriteTile TILE_LETTER_U + _overwriteTile TILE_LETTER_I + _overwriteTile TILE_LETTER_T + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + + ldx #GAME_NUM_TILES_WIDE*12+2 + _overwriteTile TILE_EMPTY + _overwriteTile TILE_LETTER_O + _overwriteTile TILE_LETTER_T + _overwriteTile TILE_LETTER_H + _overwriteTile TILE_LETTER_E + _overwriteTile TILE_LETTER_R + _overwriteTile TILE_EMPTY + _overwriteTile TILE_LETTER_K + _overwriteTile TILE_LETTER_E + _overwriteTile TILE_LETTER_Y + _overwriteTile TILE_EMPTY + _overwriteTile TILE_LETTER_T + _overwriteTile TILE_LETTER_O + _overwriteTile TILE_EMPTY + _overwriteTile TILE_LETTER_R + _overwriteTile TILE_LETTER_E + _overwriteTile TILE_LETTER_S + _overwriteTile TILE_LETTER_U + _overwriteTile TILE_LETTER_M + _overwriteTile TILE_LETTER_E + _overwriteTile TILE_EMPTY + + ldx #GAME_NUM_TILES_WIDE*14+2 + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + _overwriteTile TILE_EMPTY + + short i,m +pauseGame_loop anop + lda >KEYBOARD + bpl pauseGame_loop + sta >KEYBOARD_STROBE + long i,m + and #$7f + cmp #'q' + beq pauseGame_quit + cmp #'Q' + beq pauseGame_quit + jsl unpauseSound + rtl +pauseGame_quit anop + stz shouldQuit rtl @@ -239,18 +393,14 @@ checkKey_loop2 anop sta >KEYBOARD_STROBE long i,m and #$007f + + ldx gameRunning + beq checkKey_pause cmp #'q' beq checkKey_quit cmp #'Q' beq checkKey_quit - - cmp #'p' - beq checkKey_pause - cmp #'P' - beq checkKey_pause - cmp #$001b - beq checkKey_pause cmp #'1' beq checkKey_game diff --git a/BuGS/gameSound.s b/BuGS/gameSound.s index b8ba485..fbdb081 100644 --- a/BuGS/gameSound.s +++ b/BuGS/gameSound.s @@ -1154,6 +1154,7 @@ startFleaSound_doIt anop lda #SOUND_REG_VOLUME+FLEA_OSC_NUM sta >SOUND_ADDR_LOW lda tileRightVolume,x + sta fleaVolume sta >SOUND_DATA_REG sta >SOUND_DATA_REG eor #$ff @@ -1206,10 +1207,97 @@ stopFleaSound_doIt anop long m rtl + +pauseSound entry + short m + lda >SOUND_SYSTEM_VOLUME + and #$0f + ora #$20 + sta >SOUND_CONTROL_REG + + lda #SOUND_REG_VOLUME+SEGMENTS_OSC_NUM + sta >SOUND_ADDR_LOW + lda #0 + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + + lda #SOUND_REG_VOLUME+SPIDER_OSC_NUM + sta >SOUND_ADDR_LOW + lda #$0 + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + + lda #SOUND_REG_VOLUME+SCORPION_OSC_NUM + sta >SOUND_ADDR_LOW + lda #0 + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + + lda #SOUND_REG_VOLUME+FLEA_OSC_NUM + sta >SOUND_ADDR_LOW + lda #$0 + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + + long m + rtl + + +unpauseSound entry + lda segmentSoundIsPlaying + bne unpauseSound_skipSegment + + short m + lda >SOUND_SYSTEM_VOLUME + and #$0f + ora #$20 + sta >SOUND_CONTROL_REG + + lda #SOUND_REG_VOLUME+SEGMENTS_OSC_NUM + sta >SOUND_ADDR_LOW + lda #SEGMENTS_VOLUME + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + long m + +unpauseSound_skipSegment anop + lda fleaSoundIsPlaying + bne unpauseSound_skipFlea + + short m + lda >SOUND_SYSTEM_VOLUME + and #$0f + ora #$20 + sta >SOUND_CONTROL_REG + + lda #SOUND_REG_VOLUME+FLEA_OSC_NUM + sta >SOUND_ADDR_LOW + lda fleaVolume + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + eor #$ff + sta >SOUND_DATA_REG + sta >SOUND_DATA_REG + long m + +unpauseSound_skipFlea anop + rtl + bonusSoundOscReg dc i2'SOUND_REG_CONTROL+BONUS_OSC_NUM' fleaSoundIsPlaying dc i2'1' fleaSoundFreqOffset dc i2'0' +fleaVolume dc i2'0' segmentSoundIsPlaying dc i2'1' spiderSoundIsPlaying dc i2'1' scorpionSoundIsPlaying dc i2'1' diff --git a/BuGS/global.macros b/BuGS/global.macros index c528bd6..4b44fdd 100644 --- a/BuGS/global.macros +++ b/BuGS/global.macros @@ -127,6 +127,20 @@ _dirtyGameTile_skip&SYSCNT anop _dirtyNonGameTile_skip&SYSCNT anop mend + + + macro + _overwriteTile &type + lda #TILE_STATE_DIRTY + sta tileDirty,x + lda #&type + ldy tileScreenOffset,x + phx + jsl drawTile + plx + inx + inx + mend ; Update the score diff --git a/TODO.md b/TODO.md index c64eb98..3f893e0 100644 --- a/TODO.md +++ b/TODO.md @@ -3,7 +3,6 @@ TODO * Implement a high score list and save the high scores across restarts * Look at supporting a global high score list for systems with an Internet connection -* Implement the code to support pausing the game * Implement the code for supporting a two player game * Look at supporting Versions in order to support automatic SW upgrades * So much more.