diff --git a/BuGS/gameFlea.s b/BuGS/gameFlea.s index 58cca99..bc343dd 100644 --- a/BuGS/gameFlea.s +++ b/BuGS/gameFlea.s @@ -288,7 +288,7 @@ shootFlea entry beq shootFlea_faster jsl explodeFlea - ~FFStartPlaying #KILL_SOUND_GEN_BIT + ~FFStartPlaying #1|KILL_SOUND_GENERATOR jmp scoreAddTwoHundred shootFlea_faster anop diff --git a/BuGS/gameMushroom.s b/BuGS/gameMushroom.s index 71c893b..697c6de 100644 --- a/BuGS/gameMushroom.s +++ b/BuGS/gameMushroom.s @@ -82,9 +82,9 @@ resetMushrooms_keepChecking anop ~FFStartPlaying mushroomSound lda mushroomSound asl a - and #BONUS2_SOUND_GEN_BIT+BONUS3_SOUND_GEN_BIT + and #7|BONUS1_SOUND_GENERATOR bne resetMushrooms_doneSound - lda #BONUS1_SOUND_GEN_BIT + lda #1|BONUS1_SOUND_GENERATOR resetMushrooms_doneSound anop sta mushroomSound ldx mushroomToRefresh @@ -166,7 +166,7 @@ shootMushroom_done anop mushroomToRefresh dc i2'INVALID_TILE_NUM' mushroomExplosionSprite dc i2'0' -mushroomSound dc i2'BONUS1_SOUND_GEN_BIT' +mushroomSound dc i2'1|BONUS1_SOUND_GENERATOR' mushroomRefreshWait dc i2'0' diff --git a/BuGS/gamePlayer.s b/BuGS/gamePlayer.s index 17cadb4..0b79472 100644 --- a/BuGS/gamePlayer.s +++ b/BuGS/gamePlayer.s @@ -492,7 +492,7 @@ updatePlayer_contCollision anop sta playerFrameCount lda #SHIP_EXPLOSION_LAST_OFFSET sta playerExplosionOffset - ~FFStartPlaying #DEATH_SOUND_GEN_BIT + ~FFStartPlaying #1|DEATH_SOUND_GENERATOR jmp updatePlayer_exploding updatePlayer_noCollision anop diff --git a/BuGS/gameScorpion.s b/BuGS/gameScorpion.s index 4341803..9ae34b1 100644 --- a/BuGS/gameScorpion.s +++ b/BuGS/gameScorpion.s @@ -371,7 +371,7 @@ shootScorpion entry inc a inc a sta scorpionScreenOffset - ~FFStartPlaying #KILL_SOUND_GEN_BIT + ~FFStartPlaying #1|KILL_SOUND_GENERATOR jmp scoreAddOneThousand shootScorpion_done anop diff --git a/BuGS/gameSegments.s b/BuGS/gameSegments.s index 076414c..c5e3f20 100644 --- a/BuGS/gameSegments.s +++ b/BuGS/gameSegments.s @@ -1781,7 +1781,7 @@ isSegmentCollision_returnTrue anop ; Call this with the segment num * 2 in the X register shootSegment entry phx - ~FFStartPlaying #KILL_SOUND_GEN_BIT + ~FFStartPlaying #1|KILL_SOUND_GENERATOR lda segmentStates,x cmp #SEGMENT_STATE_BODY beq shootSegment_body diff --git a/BuGS/gameShot.s b/BuGS/gameShot.s index 7256898..9af64f5 100644 --- a/BuGS/gameShot.s +++ b/BuGS/gameShot.s @@ -75,13 +75,14 @@ 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 + ~FFStartPlaying shotSound + lda shotSound + asl a + and #31|FIRE1_SOUND_GENERATOR + bne updateShot_doneSound + lda #1|FIRE1_SOUND_GENERATOR +updateShot_doneSound anop + sta shotSound lda SHOT_STATE_SHOOTING sta shotState lda #1 @@ -212,5 +213,6 @@ shotShifted dc i2'0' shotAddress dc i2'0' shotTileOffsetAbove dc i2'0' shotTileOffsetBelow dc i2'0' +shotSound dc i2'1|FIRE1_SOUND_GENERATOR' end diff --git a/BuGS/gameSpider.s b/BuGS/gameSpider.s index 19b12a1..2044d84 100644 --- a/BuGS/gameSpider.s +++ b/BuGS/gameSpider.s @@ -810,7 +810,7 @@ shootSpider entry cmp #SPIDER_STATE_LEFT_DIAG_DOWN blt shootSpider_done - ~FFStartPlaying #KILL_SOUND_GEN_BIT + ~FFStartPlaying #1|KILL_SOUND_GENERATOR jsl explodeSpider cmp mouseAddress blt shootSpider_playerBelow diff --git a/BuGS/genData.pl b/BuGS/genData.pl index 90b2d23..605ca01 100755 --- a/BuGS/genData.pl +++ b/BuGS/genData.pl @@ -81,6 +81,22 @@ $gEquates{"P2_LIVES_OFFSET"} = ($gEquates{"LHS_FIRST_TILE"} + ($gEquates{"LHS_NU $gEquates{"HIGH_SCORE_ONES_OFFSET"} = ($gEquates{"LHS_FIRST_TILE"} + ($gEquates{"LHS_NUM_TILES_WIDE"} * 13) + ($gEquates{"LHS_NUM_TILES_WIDE"} - 2)) * $gEquates{"SIZEOF_TILE_INFO"}; +$gEquates{"BONUS1_SOUND_GENERATOR"} = 0; +$gEquates{"BONUS2_SOUND_GENERATOR"} = 1; +$gEquates{"BONUS3_SOUND_GENERATOR"} = 2; +$gEquates{"DEATH_SOUND_GENERATOR"} = 3; +$gEquates{"KILL_SOUND_GENERATOR"} = 4; +$gEquates{"SEGMENTS_SOUND_GENERATOR"} = 5; +$gEquates{"SPIDER_SOUND_GENERATOR"} = 6; +$gEquates{"FLEA_SOUND_GENERATOR"} = 7; +$gEquates{"SCORPION_SOUND_GENERATOR"} = 8; +$gEquates{"EXTRA_LIFE_SOUND_GENERATOR"} = 9; +$gEquates{"FIRE1_SOUND_GENERATOR"} = 10; +$gEquates{"FIRE2_SOUND_GENERATOR"} = 11; +$gEquates{"FIRE3_SOUND_GENERATOR"} = 12; +$gEquates{"FIRE4_SOUND_GENERATOR"} = 13; +$gEquates{"FIRE5_SOUND_GENERATOR"} = 14; + our @gTileDirty = ("TILE_STATE_CLEAN") x $gEquates{"TOTAL_NUM_TILES"}; our @gTileScreenOffset = (0) x $gEquates{"TOTAL_NUM_TILES"}; diff --git a/BuGS/globals.s b/BuGS/globals.s index e2e329d..06d40ec 100644 --- a/BuGS/globals.s +++ b/BuGS/globals.s @@ -105,24 +105,6 @@ 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 diff --git a/BuGS/main.c b/BuGS/main.c index 955b367..8c9bf49 100644 --- a/BuGS/main.c +++ b/BuGS/main.c @@ -46,7 +46,7 @@ word randomMushroomOffset(void) } -void setupSound(word soundNum, SoundParamBlock * soundParams, boolean looped) +void setupSound(word soundNum, SoundParamBlock * soundParams, word genNum, word numGenerators, boolean looped) { static word nextDocBuffer = 0; @@ -107,29 +107,21 @@ void setupSound(word soundNum, SoundParamBlock * soundParams, boolean looped) else soundParams->nextWavePtr = NULL; - FFSetUpSound((soundNum << 8) | 1, (Pointer)soundParams); + for (word i = 0; i < numGenerators; i++) + FFSetUpSound(((genNum + i) << 8) | 1, (Pointer)soundParams); } void loadSounds(void) { - static SoundParamBlock spiderSound; - static SoundParamBlock deathSound; - static SoundParamBlock segmentsSound; - static SoundParamBlock bonus1Sound; - static SoundParamBlock bonus2Sound; - static SoundParamBlock bonus3Sound; - static SoundParamBlock killSound; - static SoundParamBlock fireSound; + static SoundParamBlock soundParams[8]; - setupSound(SPIDER_SOUND, &spiderSound, TRUE); - setupSound(DEATH_SOUND, &deathSound, FALSE); - setupSound(SEGMENTS_SOUND, &segmentsSound, TRUE); - 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); + setupSound(SPIDER_SOUND, soundParams, SPIDER_SOUND_GENERATOR, 1, TRUE); + setupSound(DEATH_SOUND, soundParams, DEATH_SOUND_GENERATOR, 1, FALSE); + setupSound(SEGMENTS_SOUND, soundParams, SEGMENTS_SOUND_GENERATOR, 1, TRUE); + setupSound(BONUS_SOUND, soundParams, BONUS1_SOUND_GENERATOR, 3, FALSE); + setupSound(KILL_SOUND, soundParams, KILL_SOUND_GENERATOR, 1, FALSE); + setupSound(FIRE_SOUND, soundParams, FIRE1_SOUND_GENERATOR, 5, FALSE); } diff --git a/BuGS/main.h b/BuGS/main.h index 1f96a47..80d0c4e 100644 --- a/BuGS/main.h +++ b/BuGS/main.h @@ -17,9 +17,7 @@ /* Sounds */ #define rRawSound 1 -#define BONUS1_SOUND 1 -#define BONUS2_SOUND 2 -#define BONUS3_SOUND 3 +#define BONUS_SOUND 1 #define DEATH_SOUND 4 #define FIRE_SOUND 5 #define KILL_SOUND 6 diff --git a/BuGS/main.rez b/BuGS/main.rez index 2a8b61c..7982854 100644 --- a/BuGS/main.rez +++ b/BuGS/main.rez @@ -48,9 +48,7 @@ type rRawSound { hex string; }; -read rRawSound (BONUS1_SOUND) "sound/bonus.raw"; -read rRawSound (BONUS2_SOUND) "sound/bonus.raw"; -read rRawSound (BONUS3_SOUND) "sound/bonus.raw"; +read rRawSound (BONUS_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";