Jump to content
IGNORED

Atari 2600 Sound Effects Library?


TROGDOR

Recommended Posts

Has anyone ever compiled a library of Atari 2600 sound effects? I did some google searches, and also poked around on AA, but didn't find anything. If it doesn't exist, I'd like to at least make an ad-hoc collection here, in this post, which could possibly be compiled into a more formal collection later. Ideally, I'd like to have wave files of the sounds to go with the code, or perhaps a ROM that demonstrates all the sounds. In the meantime, the sounds I'm including below can be heard by playing the games from my blog.

 

Each of my sounds assumes a SoundClk variable that starts at 0 and counts up once per frame.

 

Splash - splashing sound from The Battle of Midway, when a bomb lands in the water.

 

SplashSound

LDA SoundClk
CMP #16
BEQ DoneSound
CMP #8
BCC SplashCreshendo

EOR #%11111111
SplashCreshendo
STA AUDV1

LDA #$08		;Standard issue white noise.
STA AUDC1
LDA #1
STA AUDF1

 

The Ominous Grumble - This is one of my favorite trademark sounds that I've used in Master of Arcturus and Hunt the Wumpus. In Hunt the Wumpus, you'll hear this sound when the Wumpus eats you.

 

ComputerConquerSound

       LDA #$03                ;Ominous grunge tone.
       STA AUDC0
       LDA #$1F                ;Lowest possible note.
       STA AUDF0

       LDA SoundClk
       CMP #255
       BEQ DoneSound

       CMP #128
       BCC Decreshendo1

Creshendo1
       LDA #255
       SBC SoundClk

Decreshendo1
       LSR
       LSR
       LSR
       STA AUDV0
       JMP OverScanWait 

 

Launching and Landing - From Master of Arcturus.

 

LaunchLandSound
LDA #8
STA AUDC0
LDA SoundClk
CMP #64
BCC ContinueSound0

CMP #96
BCS DoneSound

EOR #%11111111
ADC #96
LSR
STA AUDV0

OverScanWaitHop
JMP OverScanWait

ContinueSound0
LSR
STA Temp4
LSR
STA AUDV0

LDA Temp4

LDX SoundPtr
CPX #2
BEQ LandingSound

LSR			;Launching sound alteration.
EOR #%11111111		;Makes tone go up instead of down.
ADC #32			;Converts 64 -> 96 to 32 -> 16.

LandingSound
STA AUDF0

JMP OverScanWait

 

Rubber band / Bow Firing - The bow sound when an arrow is fired in Hunt the Wumpus.

PlayArrowShot

LDA #7
STA AUDC0
LDA SoundClk
CMP #8
BEQ DoneSound

CLC
ADC #4
STA AUDF0
EOR #%11111111
STA AUDV0
JMP DoneSoundCheck

 

The Ion Pulse Cannon - From Stellar Fortress. This has a nice beefy sound to it. I wanted something more powerful than the pea-shooter from Asteroids.

 

; Sound 1: Ion Pulse Cannon.
; Volume fades as pitch goes from high to low.
LDA #$0F
STA AUDC1
LDA SoundClk
CMP #32
BEQ DoneSound

STA AUDF1
EOR #%11111111
AND #%00011111
LSR
STA AUDV1

INC SoundClk

JMP EndSoundQueue

 

Here are sound ideas I'm currently working on. Suggestions are welcome.

 

- Realistic water dripping.

 

- A cricket chirping.

 

- A frog croaking.

 

- A person stumbling over rocks in the darkness.

 

- A dragon breathing. Similar to the dragon breathing sound from AD&D for the Intellivision.

 

- A rubber ball ricochet sound. I may be able to produce this sound by tweaking the pitch of the bow sound.

 

Feel free to post your sounds here. You're welcome to use my sounds in your code, as long as you give credit in the comments.

Edited by TROGDOR
  • Like 3
Link to comment
Share on other sites

Has anyone ever compiled a library of Atari 2600 sound effects? I did some google searches, and also poked around on AA, but didn't find anything. If it doesn't exist, I'd like to at least make an ad-hoc collection here, in this post, which could possibly be compiled into a more formal collection later.

Great idea, thanks for posting these!

 

Michael

Link to comment
Share on other sites

Hi there!

 

Here's my SFX driver from Seawolf, called once per frame:

DriveSFX
	LDY FXType,X
	DEC FXTimer,X
	BPL ContinueEffect
	LDA spawn,Y
	BMI SFXOver
	TAY
	JSR UseChannel1

SFXOver
	INC FXTimer,X
	LDA #$00
	STA AUDV0,X
	BEQ ChannelDone

ContinueEffect
	LDY FXType,X
	LDA FXFreq,X
	CLC
	ADC addf,Y
	STA FXFreq,X
	LSR
	LSR
	LSR
	STA AUDF0,X
	LDA FXVol,X
	CLC
	ADC addv,Y
	AND #$7F
	STA FXVol,X
	LSR
	LSR
	LSR
	STA AUDV0,X
ChannelDone
	RTS

 

To launch a SFX you'd just load the desired SFX number into Y and call this routine:

DoSFX
	LDX #$01
	LDA FXTimer
	CMP FXTimer+1
	BCS UseChannel1
	LDA pingCounter
	BNE UseChannel1
	LDX #$00
UseChannel1
	LDA audc,Y
	STA AUDC0,X
	LDA startf,Y
	STA FXFreq,X
	LDA startv,Y
	STA FXVol,X
	LDA length,Y
	STA FXTimer,X
	STY FXType,X
	RTS

 

Here's a typical call:

	LDY #$05
JSR DoSFX

 

Here's the required variables:

FXTimer			 ds 2
FXType			  ds 2
FXFreq			  ds 2
FXVol			   ds 2

 

And here's the data for all SFX used in Seawolf:

; TSFX Values
; Shot,Bink,Mineexp,Shipsink,Shipexp,Subsink,restock,charge

;000 0 Square  = 4
;001 1 Bass	= 6
;010 2 Pitfall = 7
;011 3 Noise   = 8
;100 4 Buzz	= 15
;101 5 Lead	= 12
;110 6 Saw	 = 1
;111 7 Engine  = 3

addf
.byte   0	  , 0	  , 1	  , -128   , 2	  , -32	, 1	  , -128   , 2	  , -4	 , 0
addv
.byte   1	  , 0	  , 0	  , -2	 , 0	  , -4	 , 0	  , -2	 , 0	  , 0	  , 1
audc
.byte   8	  , 4	  , 8	  , 8	  , 8	  , 12	 , 8	  , 8	  , 8	  , 4	  , 12
startf
.byte   20*8-1 , 6*8-1  , 8*8-1  , 0*8-1  , 20*8-1 , 32*8-1 , 8*8-1  , 0*8-1  , 20*8-1 , 16*8-1 , 20*8-1
startv
.byte   2*8-1  , 15*8-1 , 15*8-1 , 15*8-1 , 15*8-1 , 15*8-1 , 5*8-1  , 9*8-1  , 5*8-1  , 15*8-1 , 2*8-1
length
.byte   3*8-1  , 1*8-1  , 2*8-1  , 5*8-1  , 3*8-1  , 7*8-1  , 2*8-1  , 4*8-1  , 2*8-1  , 2*8-1  , 3*8-1
spawn
.byte   $FF	, $FF	, 6	  , 7	  , 8	  , $FF	, $FF	, $FF	, $FF	, $FF	, $FF

 

As you can see, it requires 7 bytes for each SFX and 5 bytes for launching one. I'm very happy with this engine, having it used (with slight modifications) for Seawolf, Crazy Balloon and Colony 7.

 

It will automatically find out which of the channels is free or the least busy one and launch a new SFX there.

 

A Seawolf speciality is the spawning of SFX, that way a SFX can launch another when it's done. So this is how the explosions have echoes, when the big explosion SFX will spawn a smaller one.

 

The only other custom bit in the driver is for the Sonar ping, which was running some separate code ripped from Polaris ;)

  • Like 1
Link to comment
Share on other sites

  • 15 years later...

I would love to revive this thread and get a bunch more sound effects contributions - or maybe there's an existing sound repository that I don't know about.

 

I'm starting to experiment with some custom sounds using the TIATracker.  Hopefully my results will be worth sharing.

Link to comment
Share on other sites

On 2/26/2023 at 10:26 PM, 8bitPoet said:

I would love to revive this thread and get a bunch more sound effects contributions - or maybe there's an existing sound repository that I don't know about.

Check out this TIA sound effects collection from RevEng in the file soundtest.bas. It's in 7800 sound data format, but it's easy enough to extract the values you need to put the data in the format you would like for a 2600 project. I've raided the collection many times for both 7800 and 2600 projects.

 

Edit: Link for forum topic:

 

 

 

  • Like 4
Link to comment
Share on other sites

2 hours ago, Karl G said:

Check out this TIA sound effects collection from RevEng in the file soundtest.bas. It's in 7800 sound data format, but it's easy enough to extract the values you need to put the data in the format you would like for a 2600 project. I've raided the collection many times for both 7800 and 2600 projects.

Do you have a link to the collection?

Link to comment
Share on other sites

13 minutes ago, Al_Nafuur said:

Do you have a link to the collection?

https://github.com/7800-devtools/7800basic/blob/master/samples/soundtest/soundtest.bas

 

Thanks @Karl G - This is great! There are 115 sounds in this collection:

 

 salvo laser shot
 spcinvader shot
 berzerk r.death
 echo 1
 echo 2
 jumpman
 cavalry
 alien trill 1
 alien trill 2
 pitfall jump
 adventure pickup
 adventure drop
 adv dragon bite
 adv dragon slain
 bling
 drop medium
 electro bump
 explosion
 humanoid
 transporter
 twinkle
 electro switch
 nono bounce
 70s tv computer
 alien life
 chirp
 plonk
 spawn
 maser
 rubber mallet
 alien kitty
 electro punch
 drip
 ribbit
 wolf whistle
 cab whistle
 jumpo
 pulse cannon
 spring
 buzz bomb
 bass bump
 hop hop
 distressed
 ouch
 laser recoil
 electrosplosion
 hop hip
 hop hip quick
 bass bump 2
 pickup prize
 distressed 2
 pew pew
 denied
 teleported
 alien klaxon
 crystal chimes
 one up
 baby wah
 got the coin
 baby ribbit
 squeek
 whoa
 got the ring
 yahoo
 war cry
 down the pipe
 power up
 falling
 eek
 uh oh
 another up
 bubble up
 jump 1
 plain laser
 alien coo
 simple buzz
 jump 2
 jump 3
 dunno
 snore
 uncovered
 door pound
 distressed 3
 eek 2
 rubber hammer
 alien buzz
 anotherjumpman
 anotherjump dies
 long gong silver
 strum
 dropped
 alien aggressor
 electro switch 2
 good item
 baby ribbit hop
 distressed 4
 ha ha ha
 yeah
 arf arf
 activate
 ha ha ha 2
 wilhelm
 poof1
 poof2
 dragit
 roarcheep
 roarroar
 deeproar
 echobang
 tom
 clopclop
 museboom
 bigboom
 thud
 bump
 shouty
 quack

  • Like 3
Link to comment
Share on other sites

  • 1 month later...

I like to have look-up table based sounds in my games, where each frame updates AUDC0 and AUDF0 with a byte of data. Typically, I pack these with the AUDC0 data in the left Nibble and AUDF0 data in the right nibble. This gets the full range of AUDC0 values, but only half the frequency values. It's also possible to have a 3-bit AUDC0 and 5-bit AUDF0 to get the full range of frequencies at the expense of having less AUDC0 types to select.   

 

 

  • Like 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...