Jump to content
  • Advertisement
  • entries
    104
  • comments
    102
  • views
    259392

A C64 Game - Step 96

Sign in to follow this  
Endurion

1855 views

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

step96.png

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

 
Sign in to follow this  


2 Comments


Recommended Comments

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)

Share this comment


Link to comment

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).

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!