🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

A C64 Game - Step 96

posted in New Old Things
Published April 20, 2013
Advertisement

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

Previous Entry A C64 Game - Step 95
0 likes 2 comments

Comments

Sik_the_hedgehog

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)

April 20, 2013 06:55 AM
Endurion

The player code wasn't done by me; I only received the binary part, so I can't say on this one. Quite common with C64, the musician would program his own player code and compose in it.

However I had worked with a different musician who made sfx play over the music. You always have to keep in mind that the C64 has only 3 midi-like sound channels, and music is played via them as well. So usually the music is overlayed by a sound effect (which can sound good or awkward, depends pretty much on the composition).

April 20, 2013 07:12 AM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement