mirror of
https://github.com/jeremysrand/BuGS.git
synced 2025-03-04 04:29:28 +00:00
Disassociate sound resources from the generators they are connected with. Use multiple generators to play multiple shot sounds at the same time. It sounds weird but it kind of works.
This commit is contained in:
parent
bae931aaa6
commit
0136579125
@ -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
|
||||
|
@ -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'
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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"};
|
||||
|
@ -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
|
||||
|
28
BuGS/main.c
28
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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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";
|
||||
|
Loading…
x
Reference in New Issue
Block a user