A C64 Game - Step 96
And a nice little update, Richard Bayliss added sounds effects. Now there's a SFX mode, toggle in the title screen with left/right.

The effects are integrated in the player code as separate "songs". So we add a variable SFX_MODE and check it's value when we want to play an effect or start the music:
No music in title when SFX mode enabled:
;initialise music player
ldx #0
ldy #0
lda SFX_MODE
bne +
lda #MUSIC_TITLE_TUNE
jsr MUSIC_PLAYER
Play an effect is similar:
lda SFX_MODE
beq +
lda #MUSIC_PICKUP
jsr MUSIC_PLAYER
+
To toggle sfx mode move the joystick left/right in the title screen and display its state:
;switch through music/sfx mode
lda #$04
bit JOYSTICK_PORT_II
bne .NotLeftPressed
lda LEFT_RELEASED
beq .LeftPressed
lda SFX_MODE
eor #$01
sta SFX_MODE
jsr DisplaySfxMode
lda SFX_MODE
beq +
lda #MUSIC_PICKUP
jmp ++
+
lda #MUSIC_TITLE_TUNE
++
jsr MUSIC_PLAYER
lda #0
jmp .LeftPressed
.NotLeftPressed
lda #1
.LeftPressed
sta LEFT_RELEASED
lda #$08
bit JOYSTICK_PORT_II
bne .NotRightPressed
lda RIGHT_RELEASED
beq .RightPressed
lda SFX_MODE
eor #$01
sta SFX_MODE
jsr DisplaySfxMode
lda SFX_MODE
beq +
lda #MUSIC_PICKUP
jmp ++
+
lda #MUSIC_TITLE_TUNE
++
jsr MUSIC_PLAYER
lda #0
jmp .RightPressed
.NotRightPressed
lda #1
.RightPressed
sta RIGHT_RELEASED
!zone DisplaySfxMode
DisplaySfxMode
lda SFX_MODE
bne +
lda #TEXT_MUSIC
jmp .DisplaySfxMode
+
lda #TEXT_SFX
.DisplaySfxMode
sta ZEROPAGE_POINTER_1 + 1
lda #34
sta PARAM1
lda #24
sta PARAM2
jmp DisplayText
Due to technical limitations in the player code there are not too many sounds, but there are enough to make it worthwile.
step96.zip