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.
Any chances to be able to modify the sound code in the future to allow sound effects and music to play at the same time? (though it probably won't be even remotely easy)