mirror of
https://github.com/jeremysrand/BuGS.git
synced 2024-06-10 23:29:30 +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
|
beq shootFlea_faster
|
||||||
|
|
||||||
jsl explodeFlea
|
jsl explodeFlea
|
||||||
~FFStartPlaying #KILL_SOUND_GEN_BIT
|
~FFStartPlaying #1|KILL_SOUND_GENERATOR
|
||||||
jmp scoreAddTwoHundred
|
jmp scoreAddTwoHundred
|
||||||
|
|
||||||
shootFlea_faster anop
|
shootFlea_faster anop
|
||||||
|
|
|
@ -82,9 +82,9 @@ resetMushrooms_keepChecking anop
|
||||||
~FFStartPlaying mushroomSound
|
~FFStartPlaying mushroomSound
|
||||||
lda mushroomSound
|
lda mushroomSound
|
||||||
asl a
|
asl a
|
||||||
and #BONUS2_SOUND_GEN_BIT+BONUS3_SOUND_GEN_BIT
|
and #7|BONUS1_SOUND_GENERATOR
|
||||||
bne resetMushrooms_doneSound
|
bne resetMushrooms_doneSound
|
||||||
lda #BONUS1_SOUND_GEN_BIT
|
lda #1|BONUS1_SOUND_GENERATOR
|
||||||
resetMushrooms_doneSound anop
|
resetMushrooms_doneSound anop
|
||||||
sta mushroomSound
|
sta mushroomSound
|
||||||
ldx mushroomToRefresh
|
ldx mushroomToRefresh
|
||||||
|
@ -166,7 +166,7 @@ shootMushroom_done anop
|
||||||
|
|
||||||
mushroomToRefresh dc i2'INVALID_TILE_NUM'
|
mushroomToRefresh dc i2'INVALID_TILE_NUM'
|
||||||
mushroomExplosionSprite dc i2'0'
|
mushroomExplosionSprite dc i2'0'
|
||||||
mushroomSound dc i2'BONUS1_SOUND_GEN_BIT'
|
mushroomSound dc i2'1|BONUS1_SOUND_GENERATOR'
|
||||||
mushroomRefreshWait dc i2'0'
|
mushroomRefreshWait dc i2'0'
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -492,7 +492,7 @@ updatePlayer_contCollision anop
|
||||||
sta playerFrameCount
|
sta playerFrameCount
|
||||||
lda #SHIP_EXPLOSION_LAST_OFFSET
|
lda #SHIP_EXPLOSION_LAST_OFFSET
|
||||||
sta playerExplosionOffset
|
sta playerExplosionOffset
|
||||||
~FFStartPlaying #DEATH_SOUND_GEN_BIT
|
~FFStartPlaying #1|DEATH_SOUND_GENERATOR
|
||||||
jmp updatePlayer_exploding
|
jmp updatePlayer_exploding
|
||||||
|
|
||||||
updatePlayer_noCollision anop
|
updatePlayer_noCollision anop
|
||||||
|
|
|
@ -371,7 +371,7 @@ shootScorpion entry
|
||||||
inc a
|
inc a
|
||||||
inc a
|
inc a
|
||||||
sta scorpionScreenOffset
|
sta scorpionScreenOffset
|
||||||
~FFStartPlaying #KILL_SOUND_GEN_BIT
|
~FFStartPlaying #1|KILL_SOUND_GENERATOR
|
||||||
jmp scoreAddOneThousand
|
jmp scoreAddOneThousand
|
||||||
|
|
||||||
shootScorpion_done anop
|
shootScorpion_done anop
|
||||||
|
|
|
@ -1781,7 +1781,7 @@ isSegmentCollision_returnTrue anop
|
||||||
; Call this with the segment num * 2 in the X register
|
; Call this with the segment num * 2 in the X register
|
||||||
shootSegment entry
|
shootSegment entry
|
||||||
phx
|
phx
|
||||||
~FFStartPlaying #KILL_SOUND_GEN_BIT
|
~FFStartPlaying #1|KILL_SOUND_GENERATOR
|
||||||
lda segmentStates,x
|
lda segmentStates,x
|
||||||
cmp #SEGMENT_STATE_BODY
|
cmp #SEGMENT_STATE_BODY
|
||||||
beq shootSegment_body
|
beq shootSegment_body
|
||||||
|
|
|
@ -75,13 +75,14 @@ updateShot_shifted anop
|
||||||
updateShot_notNone anop
|
updateShot_notNone anop
|
||||||
cmp #SHOT_STATE_START_SHOOTING
|
cmp #SHOT_STATE_START_SHOOTING
|
||||||
bne updateShot_shooting
|
bne updateShot_shooting
|
||||||
; pha
|
~FFStartPlaying shotSound
|
||||||
; ~FFSoundDoneStatus #FIRE_SOUND_GENERATOR
|
lda shotSound
|
||||||
; pla
|
asl a
|
||||||
; bne updateShot_noSoundPlaying
|
and #31|FIRE1_SOUND_GENERATOR
|
||||||
; ~FFStopSound #FIRE_SOUND_GEN_BIT
|
bne updateShot_doneSound
|
||||||
;updateShot_noSoundPlaying anop
|
lda #1|FIRE1_SOUND_GENERATOR
|
||||||
~FFStartPlaying #FIRE_SOUND_GEN_BIT
|
updateShot_doneSound anop
|
||||||
|
sta shotSound
|
||||||
lda SHOT_STATE_SHOOTING
|
lda SHOT_STATE_SHOOTING
|
||||||
sta shotState
|
sta shotState
|
||||||
lda #1
|
lda #1
|
||||||
|
@ -212,5 +213,6 @@ shotShifted dc i2'0'
|
||||||
shotAddress dc i2'0'
|
shotAddress dc i2'0'
|
||||||
shotTileOffsetAbove dc i2'0'
|
shotTileOffsetAbove dc i2'0'
|
||||||
shotTileOffsetBelow dc i2'0'
|
shotTileOffsetBelow dc i2'0'
|
||||||
|
shotSound dc i2'1|FIRE1_SOUND_GENERATOR'
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -810,7 +810,7 @@ shootSpider entry
|
||||||
cmp #SPIDER_STATE_LEFT_DIAG_DOWN
|
cmp #SPIDER_STATE_LEFT_DIAG_DOWN
|
||||||
blt shootSpider_done
|
blt shootSpider_done
|
||||||
|
|
||||||
~FFStartPlaying #KILL_SOUND_GEN_BIT
|
~FFStartPlaying #1|KILL_SOUND_GENERATOR
|
||||||
jsl explodeSpider
|
jsl explodeSpider
|
||||||
cmp mouseAddress
|
cmp mouseAddress
|
||||||
blt shootSpider_playerBelow
|
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{"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 @gTileDirty = ("TILE_STATE_CLEAN") x $gEquates{"TOTAL_NUM_TILES"};
|
||||||
our @gTileScreenOffset = (0) 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
|
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_SLOW gequ 0
|
||||||
SPRITE_SPEED_FAST gequ 1
|
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;
|
static word nextDocBuffer = 0;
|
||||||
|
|
||||||
|
@ -107,29 +107,21 @@ void setupSound(word soundNum, SoundParamBlock * soundParams, boolean looped)
|
||||||
else
|
else
|
||||||
soundParams->nextWavePtr = NULL;
|
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)
|
void loadSounds(void)
|
||||||
{
|
{
|
||||||
static SoundParamBlock spiderSound;
|
static SoundParamBlock soundParams[8];
|
||||||
static SoundParamBlock deathSound;
|
|
||||||
static SoundParamBlock segmentsSound;
|
|
||||||
static SoundParamBlock bonus1Sound;
|
|
||||||
static SoundParamBlock bonus2Sound;
|
|
||||||
static SoundParamBlock bonus3Sound;
|
|
||||||
static SoundParamBlock killSound;
|
|
||||||
static SoundParamBlock fireSound;
|
|
||||||
|
|
||||||
setupSound(SPIDER_SOUND, &spiderSound, TRUE);
|
setupSound(SPIDER_SOUND, soundParams, SPIDER_SOUND_GENERATOR, 1, TRUE);
|
||||||
setupSound(DEATH_SOUND, &deathSound, FALSE);
|
setupSound(DEATH_SOUND, soundParams, DEATH_SOUND_GENERATOR, 1, FALSE);
|
||||||
setupSound(SEGMENTS_SOUND, &segmentsSound, TRUE);
|
setupSound(SEGMENTS_SOUND, soundParams, SEGMENTS_SOUND_GENERATOR, 1, TRUE);
|
||||||
setupSound(BONUS1_SOUND, &bonus1Sound, FALSE);
|
setupSound(BONUS_SOUND, soundParams, BONUS1_SOUND_GENERATOR, 3, FALSE);
|
||||||
setupSound(BONUS2_SOUND, &bonus2Sound, FALSE);
|
setupSound(KILL_SOUND, soundParams, KILL_SOUND_GENERATOR, 1, FALSE);
|
||||||
setupSound(BONUS3_SOUND, &bonus3Sound, FALSE);
|
setupSound(FIRE_SOUND, soundParams, FIRE1_SOUND_GENERATOR, 5, FALSE);
|
||||||
setupSound(KILL_SOUND, &killSound, FALSE);
|
|
||||||
setupSound(FIRE_SOUND, &fireSound, FALSE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -17,9 +17,7 @@
|
||||||
|
|
||||||
/* Sounds */
|
/* Sounds */
|
||||||
#define rRawSound 1
|
#define rRawSound 1
|
||||||
#define BONUS1_SOUND 1
|
#define BONUS_SOUND 1
|
||||||
#define BONUS2_SOUND 2
|
|
||||||
#define BONUS3_SOUND 3
|
|
||||||
#define DEATH_SOUND 4
|
#define DEATH_SOUND 4
|
||||||
#define FIRE_SOUND 5
|
#define FIRE_SOUND 5
|
||||||
#define KILL_SOUND 6
|
#define KILL_SOUND 6
|
||||||
|
|
|
@ -48,9 +48,7 @@ type rRawSound {
|
||||||
hex string;
|
hex string;
|
||||||
};
|
};
|
||||||
|
|
||||||
read rRawSound (BONUS1_SOUND) "sound/bonus.raw";
|
read rRawSound (BONUS_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 (DEATH_SOUND) "sound/death.raw";
|
||||||
read rRawSound (FIRE_SOUND) "sound/fire.raw";
|
read rRawSound (FIRE_SOUND) "sound/fire.raw";
|
||||||
read rRawSound (KILL_SOUND) "sound/kill.raw";
|
read rRawSound (KILL_SOUND) "sound/kill.raw";
|
||||||
|
|
Loading…
Reference in New Issue
Block a user