Add sounds for shooting, killing bugs, dying and resetting mushrooms after death. The shoot sound isn't great because it doesn't restart when rapid fire is happening but this is a start.

This commit is contained in:
Jeremy Rand 2020-12-10 00:45:48 -05:00
parent 8b2e753b68
commit bae931aaa6
11 changed files with 122 additions and 22 deletions

View File

@ -288,7 +288,7 @@ shootFlea entry
beq shootFlea_faster
jsl explodeFlea
~FFStartPlaying #KILL_SOUND_GEN_BIT
jmp scoreAddTwoHundred
shootFlea_faster anop

View File

@ -50,10 +50,13 @@ resetMushrooms_jumpInst anop
nop
resetMushrooms_doneReset anop
txa
inx
inx
bra resetMushrooms_loop
lda mushroomRefreshWait
beq resetMushrooms_next
dec a
sta mushroomRefreshWait
sec
rtl
resetMushrooms_startFromBeginning anop
ldx #0
@ -73,10 +76,24 @@ resetMushrooms_keepChecking anop
stx mushroomToRefresh
lda #TILE_MUSHROOM4
sta tileType,x
lda #TILE_STATE_DIRTY
sta tileDirty,x
jsl scoreAddFive
~FFStartPlaying mushroomSound
lda mushroomSound
asl a
and #BONUS2_SOUND_GEN_BIT+BONUS3_SOUND_GEN_BIT
bne resetMushrooms_doneSound
lda #BONUS1_SOUND_GEN_BIT
resetMushrooms_doneSound anop
sta mushroomSound
ldx mushroomToRefresh
lda #EXPLOSION_LAST_OFFSET
bra resetMushrooms_explode
sta mushroomExplosionSprite
lda #2
sta mushroomRefreshWait
sec
rtl
resetMushrooms_next anop
inx
@ -149,6 +166,8 @@ shootMushroom_done anop
mushroomToRefresh dc i2'INVALID_TILE_NUM'
mushroomExplosionSprite dc i2'0'
mushroomSound dc i2'BONUS1_SOUND_GEN_BIT'
mushroomRefreshWait dc i2'0'
end

View File

@ -15,7 +15,7 @@ gamePlayer start
using tileData
using screenData
PLAYER_EXPLOSION_FRAME_COUNT equ 4
PLAYER_EXPLOSION_FRAME_COUNT equ 3
PLAYER_RESTART_LEVEL_FRAME_COUNT equ 20
@ -112,6 +112,8 @@ updatePlayer_nextExplosion anop
sec
sbc #4
sta playerExplosionOffset
lda #PLAYER_EXPLOSION_FRAME_COUNT
sta playerFrameCount
bra updatePlayer_drawExplosion
updatePlayer_doneExplosion anop
lda #PLAYER_STATE_MUSHROOMS
@ -486,10 +488,11 @@ updatePlayer_explosionOffLeft anop
sta mouseAddress
updatePlayer_contCollision anop
lda #PLAYER_EXPLOSION_FRAME_COUNT-1
lda #PLAYER_EXPLOSION_FRAME_COUNT
sta playerFrameCount
lda #SHIP_EXPLOSION_LAST_OFFSET
sta playerExplosionOffset
~FFStartPlaying #DEATH_SOUND_GEN_BIT
jmp updatePlayer_exploding
updatePlayer_noCollision anop

View File

@ -371,6 +371,7 @@ shootScorpion entry
inc a
inc a
sta scorpionScreenOffset
~FFStartPlaying #KILL_SOUND_GEN_BIT
jmp scoreAddOneThousand
shootScorpion_done anop

View File

@ -1781,6 +1781,7 @@ isSegmentCollision_returnTrue anop
; Call this with the segment num * 2 in the X register
shootSegment entry
phx
~FFStartPlaying #KILL_SOUND_GEN_BIT
lda segmentStates,x
cmp #SEGMENT_STATE_BODY
beq shootSegment_body

View File

@ -75,6 +75,13 @@ updateShot_shifted anop
updateShot_notNone anop
cmp #SHOT_STATE_START_SHOOTING
bne updateShot_shooting
; pha
; ~FFSoundDoneStatus #FIRE_SOUND_GENERATOR
; pla
; bne updateShot_noSoundPlaying
; ~FFStopSound #FIRE_SOUND_GEN_BIT
;updateShot_noSoundPlaying anop
~FFStartPlaying #FIRE_SOUND_GEN_BIT
lda SHOT_STATE_SHOOTING
sta shotState
lda #1
@ -141,7 +148,9 @@ updateShot_checkCollision anop
rtl
updateShot_collision anop
cpx #SCREEN_ADDRESS
blt updateShot_done
bge updateShot_onScreen
rtl
updateShot_onScreen anop
and #$3333
bne updateShot_maybeMushroom

View File

@ -809,7 +809,8 @@ shootSpider entry
lda spiderState
cmp #SPIDER_STATE_LEFT_DIAG_DOWN
blt shootSpider_done
~FFStartPlaying #KILL_SOUND_GEN_BIT
jsl explodeSpider
cmp mouseAddress
blt shootSpider_playerBelow

View File

@ -105,6 +105,25 @@ TILE_POISON_A_MUSHROOM gequ TILE_POISON_MUSHROOM4-TILE_MUSHROOM4
NUM_COLOUR_PALETTES gequ 14
; These need to be kept consistent with the defines in main.h
BONUS1_SOUND_GENERATOR gequ 1
BONUS2_SOUND_GENERATOR gequ 2
BONUS3_SOUND_GENERATOR gequ 3
DEATH_SOUND_GENERATOR gequ 4
FIRE_SOUND_GENERATOR gequ 5
KILL_SOUND_GENERATOR gequ 6
SEGMENTS_SOUND_GENERATOR gequ 7
SPIDER_SOUND_GENERATOR gequ 8
BONUS1_SOUND_GEN_BIT gequ 1|BONUS1_SOUND_GENERATOR
BONUS2_SOUND_GEN_BIT gequ 1|BONUS2_SOUND_GENERATOR
BONUS3_SOUND_GEN_BIT gequ 1|BONUS3_SOUND_GENERATOR
DEATH_SOUND_GEN_BIT gequ 1|DEATH_SOUND_GENERATOR
FIRE_SOUND_GEN_BIT gequ 1|FIRE_SOUND_GENERATOR
KILL_SOUND_GEN_BIT gequ 1|KILL_SOUND_GENERATOR
SEGMENTS_SOUND_GEN_BIT gequ 1|SEGMENTS_SOUND_GENERATOR
SPIDER_SOUND_GEN_BIT gequ 1|SPIDER_SOUND_GENERATOR
SPRITE_SPEED_SLOW gequ 0
SPRITE_SPEED_FAST gequ 1

View File

@ -60,8 +60,48 @@ void setupSound(word soundNum, SoundParamBlock * soundParams, boolean looped)
soundParams->volSetting = 255;
soundParams->waveStart = *handle;
soundParams->waveSize = (handleSize / 256) + 1;
soundParams->bufferSize = 0;
nextDocBuffer += (soundParams->waveSize * 256);
if (handleSize > 16384)
{
soundParams->bufferSize = 7;
nextDocBuffer += 32768;
}
else if (handleSize > 8192)
{
soundParams->bufferSize = 6;
nextDocBuffer += 16384;
}
else if (handleSize > 4096)
{
soundParams->bufferSize = 5;
nextDocBuffer += 8192;
}
else if (handleSize > 2048)
{
soundParams->bufferSize = 4;
nextDocBuffer += 4096;
}
else if (handleSize > 1024)
{
soundParams->bufferSize = 3;
nextDocBuffer += 2048;
}
else if (handleSize > 512)
{
soundParams->bufferSize = 2;
nextDocBuffer += 1024;
}
else if (handleSize > 256)
{
soundParams->bufferSize = 1;
nextDocBuffer += 512;
}
else
{
soundParams->bufferSize = 0;
nextDocBuffer += 256;
}
if (looped)
soundParams->nextWavePtr = soundParams;
else
@ -76,17 +116,20 @@ void loadSounds(void)
static SoundParamBlock spiderSound;
static SoundParamBlock deathSound;
static SoundParamBlock segmentsSound;
static SoundParamBlock bonusSound;
static SoundParamBlock bonus1Sound;
static SoundParamBlock bonus2Sound;
static SoundParamBlock bonus3Sound;
static SoundParamBlock killSound;
static SoundParamBlock fireSound;
setupSound(SPIDER_SOUND, &spiderSound, TRUE);
setupSound(DEATH_SOUND, &deathSound, FALSE);
setupSound(SEGMENTS_SOUND, &segmentsSound, TRUE);
setupSound(BONUS_SOUND, &bonusSound, FALSE);
setupSound(BONUS1_SOUND, &bonus1Sound, FALSE);
setupSound(BONUS2_SOUND, &bonus2Sound, FALSE);
setupSound(BONUS3_SOUND, &bonus3Sound, FALSE);
setupSound(KILL_SOUND, &killSound, FALSE);
setupSound(FIRE_SOUND, &fireSound, FALSE);
// FFStartPlaying(1 << SEGMENTS_SOUND);
}

View File

@ -17,12 +17,14 @@
/* Sounds */
#define rRawSound 1
#define BONUS_SOUND 1
#define DEATH_SOUND 2
#define FIRE_SOUND 3
#define KILL_SOUND 4
#define SEGMENTS_SOUND 5
#define SPIDER_SOUND 6
#define BONUS1_SOUND 1
#define BONUS2_SOUND 2
#define BONUS3_SOUND 3
#define DEATH_SOUND 4
#define FIRE_SOUND 5
#define KILL_SOUND 6
#define SEGMENTS_SOUND 7
#define SPIDER_SOUND 8
#endif /* defined(_GUARD_PROJECTBuGS_FILEmain_) */

View File

@ -48,7 +48,9 @@ type rRawSound {
hex string;
};
read rRawSound (BONUS_SOUND) "sound/bonus.raw";
read rRawSound (BONUS1_SOUND) "sound/bonus.raw";
read rRawSound (BONUS2_SOUND) "sound/bonus.raw";
read rRawSound (BONUS3_SOUND) "sound/bonus.raw";
read rRawSound (DEATH_SOUND) "sound/death.raw";
read rRawSound (FIRE_SOUND) "sound/fire.raw";
read rRawSound (KILL_SOUND) "sound/kill.raw";