Skip to main content
GameDev.net gamedev.net

PRO Tired of ads? Read GameDev.net ad-free and help keep the community independent with GameDev Pro — $3/month.

A C64 Game - Step 96

A C64 Game - Step 96

Endurion
Endurion
New Old Things · · 1 min read
4,205 2

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

Previous Step Next Step

Discussion

Loading comments...