NoReset
jsr ResetPPositions
jsr SetM0Pos
- jsr PlayBirdHitPlayerSong
+
+ ldx #0 ; first song
+ ldy #BIRDHITPLAYERTRACKSIZE
+ jsr PlaySong
NoP0P1Collision ; p0 and p1 did not collide!
; now we dio p0 m0 collision. m0 must be collected by turtle to advance
dex
stx Score
jsr SetM0Pos ; new position for m0
- jsr PlayFoodCollectedSong
+
+ ldx #2 ; second song
+ ldy #FOODCOLLECTEDTRACKSIZE
+ jsr PlaySong
NoP0M0Collision
; now we check if m0 is in a wall
bit CXM0FB
sta AUDV0,x
rts
-PlayBirdHitPlayerSong
- lda #<(BirdHitPlayerTrack)
- sta SoundTrackPtr
- lda #>(BirdHitPlayerTrack)
- sta SoundTrackPtr+1
-
- ;lda #BIRDHITPLAYERVOLUME
- ;sta SoundVolumePtr
-
- lda #BIRDHITPLAYERTRACKSIZE ; 4 frames long
- sta SoundEnabled
-
- lda #<(BirdHitPlayerControl)
- sta SoundControl
-
- lda #>(BirdHitPlayerControl)
- sta SoundControl+1
-
- ;lda #S_FULLSPEED
- ;sta SoundSpeed
- rts
-
-PlayFoodCollectedSong
- lda #<(FoodCollectedTrack)
+; subroutine
+; inputs: x = offset in track and control table
+; y = track length
+PlaySong
+ lda #SoundTrackTable,x
sta SoundTrackPtr
- lda #>(FoodCollectedTrack)
+ lda #SoundTrackTable+1,x
sta SoundTrackPtr+1
- ;lda #FOODCOLLECTEDVOLUME
- ;sta SoundVolumePtr
+ sty SoundEnabled
- lda #FOODCOLLECTEDTRACKSIZE ; 4 frames long
- sta SoundEnabled
-
- lda #<(FoodCollectedControl)
+ lda #SoundControlTable,x
sta SoundControl
- lda #>(FoodCollectedControl)
+ lda #SoundControlTable+1,x
sta SoundControl+1
- ;lda #S_HALFSPEED
- ;sta SoundSpeed
rts
-PlayLevelClearSong
- lda #<(LevelClearTrack)
- sta SoundTrackPtr
- lda #>(LevelClearTrack)
- sta SoundTrackPtr+1
-
- ;lda #LEVELCLEARVOLUME
- ;sta SoundVolumePtr
-
- lda #LEVELCLEARTRACKSIZE ; 4 frames long
- sta SoundEnabled
-
- lda #<(LevelClearControl)
- sta SoundControl
-
- lda #>(LevelClearControl)
- sta SoundControl+1
-
- ;lda #S_HALFSPEED
- ;sta SoundSpeed
- rts
SetM0Pos
ldx 2
stx GameState
ldx #LEVELCLEARTRACKSIZE*2
stx Temp+1 ; used for frame counter for blank screen
- jsr PlayLevelClearSong
+
+ ldx #4 ; third song
+ ldy #LEVELCLEARTRACKSIZE
+ jsr PlaySong
rts
NextMap
.byte 0, $4F, $4F, $4F, $4F, $4F, $4F, $4F, $4F, $4F, $4F
.byte $4F, $4F, $4F, $4F, $4F, $4F, $4F, $4F, $4F, $4F
+; table holding all the needed addresses
+SoundTrackTable
+ .word BirdHitPlayerTrack
+ .word FoodCollectedTrack
+ .word LevelClearTrack
+
+SoundControlTable
+ .word BirdHitPlayerControl
+ .word FoodCollectedControl
+ .word LevelClearControl
; Free memory check
ECHO ([$FFFA-*]d), "bytes free before end of cart ($FFFA)"