total-carnage/SOUNDS.ASM

615 lines
19 KiB
NASM
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

**************************************************************
*
* Software: George Petro
* Initiated:
*
* Modified: Shawn Liptak, 9/30/91 -High speed version
* Shawn Liptak, 1/8/92 -Reserved 8 channels
*
* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC.
*
*.Last mod - 1/9/92 16:52
**************************************************************
.FILE 'SOUNDS.ASM'
.TITLE "SOUND PROCESSOR"
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
; GET THE SYSTEM STUFF
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS
.INCLUDE "GAME.EQU" ;SOUND HEADER
.include "shawn.hdr" ;My macros
;SOUND DRIVER STUFF
.DEF SNDRES,ONESND,SNDLD,SNDSND,CKSNDPRI,QSNDRST
.DEF MUSICOFF,YAMOFF,FADE_DOWN,ALLOFF,SNDPRC,FADE_UP
.def ONESNDOVR
;SOUND HEADERS USED IN GAME
.DEF UGH1,UGH2,UGH3,UGH4,MEUGH,HASND,NOWAY,BUYMSC,GUYDI,MTING
.DEF TRGTSND,KEYSND,CHUCK,KEYSND2,WRPSND
.DEF ALTEXP5,EXP5,GULP,HORN2,TORCH,ALTEXP6,SCASH2,YEAHHH,CNTDWN2
.DEF SALTXP4,SEXP2HI,HORNSND,EXITSND,LOVEIT,CRSSND,CNTDOWN
.DEF TING2,TING3
.DEF ALTEXP1,ALTEXP3,EXP2HI,SETDWN,GRNTSHT,GETWPN,AIRSCRM,EXP1L
.DEF ALTXP1A,ALTEXP4,CANNON,EXP2HIB,TUNE3,TUNE3O,CRSSND2,SQUISH
.DEF SHOT,THUMP2,THUMP,EXP1,EXP2,EXP3,EXP4,TOTCARN,FIREDI,GETSND
.DEF ELECTRO,MECH1,GLSEXP,TUNE1,TUNE2,SENDIN,WOO1,WOO2,COINSND
.DEF FLAMSND,SHOT2,STATSND,JEEPSND,TURTSND,FNDSND
.DEF DIESCRM,SCREAM,SLIDEIN,PLYRONE,PLYRTWO,AGLSEXP
.DEF TING,GRNSND,BEEP1,THNKU,SCASH,FREEMAN,SCASH3
.DEF HIMUSC,BEEP2
.REF SOUNDSUP
.text
*SOUND PROCESSOR MAKES SOUNDS FOR N-CHANNELS (CURRENTLY 6):
*
* CHANNEL #0 OKI CHANNEL 3
* CHANNEL #1 OKI CHANNEL 4
* CHANNEL #2 YAMAHA SOUNDS
* CHANNEL #3 MUSIC
* CHANNEL #4 OKI CHANNEL 1 (PLAYER 1)
* CHANNEL #5 OKI CHANNEL 2 (PLAYER 2)
*
*THE ROUTINE "SNDRES" MUST BE CALLED TO INITAILIZE SOUND BOARD
*ALSO SCRATCHPAD RAM MUST BE INITIALIZED TO ZERO
*THE ROUTINE "SNDPRC" MUST BE CALLED EVERY 16MSEC. IN THE MAIN PROGRAM LOOP
*(THE SAME PLACE WHERE "PRCDSP" IS NORMALLY CALLED)
*MAKING A SOUND:
*
*SOUND TABLE FORMAT
*
*SOUND DESCRIPTION:
* .WORD PRIORITY, TIME, SOUND CODE, (PRIORITY), (TIME), (SOUND CODE), 0
*
*SOUND ENDS IN 0000.
*PRIORITY WORD = 1111INNNPPPPPPPP; I=1=NON-INTERRUPTABLE
*NNN=CHANNEL #(0-7);
*PP=PRIORITY (00-FF), FF=HIGHEST.
*TIME WORD =TTTT (0000-7FFF X 16MS).
*SOUND WORD =8SSS SSS=SOUND CODE(000-FFF).
*EXAMPLE 1:
*
* MOVI SND1,A0 ;LOAD ABSOLUTE ADDRESS OF SND1 IN A0
* CALLA ONESND ;MAKE ONE SND1
*
*SND1: .WORD >F0FF,>0100,>8088,0
*
*SND1 IS FOR CHANNEL=0, PRIORITY=FF (HIGHEST), TIME = 100H X 16MSEC.
*SOUND CODE = 88H
*SND1 WILL MAKE ONE SOUND 88H, AND NOT ALLOW IT TO BE INTERRUPTED
*FOR 100H X 16MSEC., EXCEPT BY A SOUND OF EQUAL OR GREATER PRIORITY ON
*CHANNEL 0
*
* MOVI SND2,A0 ;LOAD SND2 ADDRESS
* MOVK 3,A1 ;REPEAT IT 3 TIMES
* CALLA SNDLD ;GO DO IT
*SND2: .WORD >F311,>0020,>8044,>8044,0
*
*SND2 IS ON CHANNEL 3, PRIORITY 11H. IT WILL MAKE ONE SOUND 44H, WAIT
*20H X 16 MSEC., THEN MAKE ANOTHER SOUND 44H, WHICH CANNOT BE INTERRUPTED
*FOR 20H X 16 MSEC., EXCEPT BY A SOUND OF EQUAL OR GREATER PRIORITY ON
*CHANNEL 3
*
*SINCE A1 IS LOADED WITH A REPEAT COUNT OF 3, THIS PROCESS WILL BE REPEATED
*THREE TIMES. THE END RESULT WILL BE 6 SOUND 44H SEPERATED BY 20H X 16MSEC.
*
*NOTE: THE CHANNEL SPECIFIED BY "MUSICHAN" WILL CAUSE THE MUSIC SECTION OF
* THE SOUND BOARD TO BE STROBED.
*
SNDPRI .SET 0 ;PRIORITY (00=LOWEST, FF=HIGHEST)
SNDTMR .SET 010h ;TIMER COUNTDOWN
SNDPTR .SET 020h ;POINTER TO SOUND TABLE DATA
SNDREP .SET 040h ;REPEAT COUNT OF SOUND
;SNDTIM .SET 050h ;TIMER 000-7FFF
SNDST .SET 060h ;ADDRESS OF SOUND TABLE START
*NOTE: IF YOU CHANGE SNDSIZ, MAKE SURE ANY CODE THAT USES IT AS A DIVISOR
* PERFORMS THE CORRECT OP. CURRENTLY IT IS A POWER OF 2 SO SRL IS USED.
SNDSIZ .SET 080h
SL_CHANNEL .EQU 21 ;SHIFTS REQUIRED TO ISOLATE CHANNEL NUMBER
SR_CHANNEL .EQU 29
NCHAN EQU 6 ;DECLARE NUMBER OF ALLOWED CHANNELS
MUSICHAN EQU 3 ;THIS CHANNEL IS FOR THE TUNES
*THESE STROBE EQUATES ARE FOR THE HOT NEW WILLY VIDEO SOUND CARD tm
RESETBIT EQU 0FE00H ;THIS IS THE ^RESET BIT
SOUNDBIT EQU 0FD00H ;THIS IS THE SOUND SIDE STROBE
EXTENDED_CODE .EQU 7AH ;SEND THIS TO INDICATE EXTENDED SOUND CALL
*
*EQUATES FOR READING SOUND BOARD IRQ REQUEST LINE
*
TALKPORT .EQU SWITCH+10H ;PORT TO FIND THIS LINE
B_SIRQ .EQU 14 ;BIT TO READ FOR SOUND IRQ LINE
.BSS SNDSTR,8*SNDSIZ ;RESERVE STORAGE AREA
.BSS SNDEND,0 ;END OF SOUND PROCESSOR RAM
**************************************************************************
* *
* CLRSNDDB - CLEAR THE SOUND PROCESSOR DATA BASE *
* *
**************************************************************************
CLRSNDDB
MMTM SP,A0,A1
MOVI SNDSTR,A1
CLR A0
CLRSDBL
MOVE A0,*A1+
CMPI SNDEND,A1
JRLO CLRSDBL
MMFM SP,A0,A1
RETS
********************************
* Sound loader
* A0=* to sound data, A1=Repeat count
*Sound format= PRI,TIME,SOUND CODE,(PRI),(TIME),(SOUND CODE),0=END
*PRIORITY WORD = 1111INNNPPPPPPPP; I=1=NON-INTERRUPTABLE
* NNN=CHANNEL #(0-7); PP=PRIORITY (00-FF), FF=HIGHEST.
*TIME WORD =TTTT (0000-7FFF X 16MS).
*SOUND WORD =8SSS SSS=SOUND CODE(000-FFF).
SNDLD
PUSH a0,a1,a2,a3,a4
jruc sl20
**************************************************************************
* Make one sound overriding any current sound
* A0=* to sound data
* Rets: A0=Same
ONESNDOVR
PUSH a0,a1,a2,a3,a4
movk 1,a1
move @SOUNDSUP,a2
jrnz sndldx ;Quiet?
move *a0,a2 ;Get priority word
sll SL_CHANNEL,a2
srl SR_CHANNEL,a2 ;Extract channel bits
sll 7,a2 ;*SNDSIZ
addi SNDSTR,a2 ;+Base
jruc sl50
**************************************************************************
* Make one sound
* A0=* to sound data
* Rets: A0=Same
ONESND
PUSH a0,a1,a2,a3,a4
movk 1,a1
sl20 move @SOUNDSUP,a2
jrnz sndldx ;Quiet?
move *a0,a2 ;Get priority word
move a2,a3
sll SL_CHANNEL,a2
srl SR_CHANNEL,a2 ;Extract channel bits
sll 7,a2 ;*SNDSIZ
addi SNDSTR,a2 ;+Base
move *a2,a4 ;Get current priority
btst 11,a4
jrnz sndldx ;Non-interruptable?
sll 32-8,a3 ;Mask priorities
sll 32-8,a4
cmp a4,a3
jrlo sndldx ;New pri < old pri?
sl50 move a0,*a2(SNDST),L ;Setup sound start pointer
move *a0+,*a2+,L ;Set PRI,TMR
move *a0+,a3 ;Snd code
move a0,*a2+,L ;Set PTR
move a1,*a2+ ;Set RPT (Repeat count)
callr SNDSND ;Send sound code
sndldx PULL a0,a1,a2,a3,a4
rets
********************************
* Sound processor called every main loop (16 MSEC)
SNDPRC
movi SNDSTR,a0
movk NCHAN,a1
splp move *a0(SNDTMR),a2 ;Check timer
jrz sp5 ;Inactive channel?
subk 1,a2
move a2,*a0(SNDTMR) ;New time
jrnz sp5 ;No timeout?
callr SNDUPD ;Update sound
sp5 addi SNDSIZ,a0
dsjs a1,splp
rets
********************************
* Update sound
* A0=* to sound channel ram
SNDUPD
move *a0(SNDPTR),a2,L ;Get * to rom table
sud2 move *a2+,a3 ;Get next rom table entry
jrnz sud8 ;Another snd?
move *a0(SNDREP),a3 ;Check repeat count
subk 1,a3
move a3,*a0(SNDREP)
jrle sud6 ;No repeats?
move *a0(SNDST),a2,L
jruc sud2 ;Start sound over
sud6 clr a2
move a2,*a0 ;Clear sound priority
move a2,*a0(SNDST),L ;Clear sound ptr
rets
sud8 move a3,*a0+ ;Set PRI
move *a2+,*a0+ ;Set TMR
move *a2+,a3 ;Get code
move a2,*a0,L ;Set PTR
subk 32,a0 ;Fix A0
; jruc SNDSND ;Send sound code
;Fall through
**************************************************************************
* SNDSND - Raw hardware sound call
* A3=Sound code 0->1ff
* Trashes A14
**************************************************************************
SNDSND
PUSH a0,a3
sll 32-12,a3
srl 32-12,a3 ;Strip off bits
cmpi >100,a3
jrlo ss20 ;Not extended sound call?
move a3,a0
movi EXTENDED_CODE,a3 ;Send the extended feature
callr SNDSND
move a0,a3
sll 32-8,a3
srl 32-8,a3
ss20
addi SOUNDBIT,a3 ;Pull sound section interrupt
move a3,@SOUND ;Hit sound
movk 8,a0
dsj a0,$ ;Slow it down a bit
ori >ff00,a3 ;Put out 1's
move a3,@SOUND
movk 8,a0
dsj a0,$
movi 390/3,a3 ;180 micros max firq delay on snd board
ss50 movb @TALKPORT+B_SIRQ-7,a0
jrn ssx ;Done?
dsj a3,ss50
.if DEBUG
nop ;So we can breakpoint
.endif
ssx PULL a0,a3
rets
**************************************************************************
* *
* SNDRES - FULL SOUND BOARD RESET, SOUND CHECKSUMS ARE REPORTED. *
* *
* NOTE: TRASHES A14 *
* *
**************************************************************************
SNDRES
PUSH a0
MOVI RESETBIT,A0 ;HIT RESET BIT
MOVE A0,@SOUND
MOVI 100,A0 ;WAIT FOR IT TO CATCH
DSJS A0,$
movi -1,a0 ;Let it go
MOVE A0,@SOUND
PULL a0
RETS
**************************************************************************
* *
* IS_SOUND - CHECK SOUND DATA BASE TO SEE IF THE GIVEN SOUND SCRIPT *
* IS CURRENTLY BEING PROCESSED. (I.E. ANOTHER SOUND *
* HAS OR HAS NOT TAKEN OVER.) *
* A0 = PTR TO SOUND SCRIPT *
* RETURNS *
* Z = SAME SCRIPT *
* NZ = SCRIPT NO LONGER ACTIVE *
* *
**************************************************************************
IS_SOUND
PUSH A3
MOVE *A0,A14,W ;GET CHANNEL/PRIORITY WORD
MOVI SNDSIZ,A3
SLL SL_CHANNEL,A14
SRL SR_CHANNEL,A14 ;EXTRACT CHANNEL BITS
MPYU A14,A3
ADDI SNDSTR,A3 ;GET THE CORRECT RAM CHANNEL ADDRESS
MOVE *A3(SNDST),A14,L
CMP A0,A14 ;SAME SCRIPT ACTIVE?
PULL A3
RETS
**************************************************************************
* *
* CKSNDPRI - CHECK SOUND CHANNEL FOR EXISTANCE OF A GIVEN SOUND PRIORITY *
* A0 = CHANNEL # *
* A1 = SOUND PRIORITY *
* RETURNS: *
* CARRY CLEAR = PRIORITY NOT ACTIVE *
* CARRY SET = PRIORITY ACTIVE *
* *
**************************************************************************
CKSNDPRI
MMTM SP,A0,A2
MOVI SNDSTR,A2
SLL 7,A0 ;CHANNEL x 128
ADD A2,A0 ;OFFSET TO CORRECT CHANNEL AREA
MOVB *A0,A0
CMP A0,A1
JRNE CKSPRI1 ;BR = PRIORITY NOT ACTIVE
SETC
MMFM SP,A0,A2
RETS
CKSPRI1
CLRC
MMFM SP,A0,A2
RETS
**************************************************************************
* *
* QSNDRST - QUIET SOUND RESET, NO DIAGNOSTIC DONGERS *
* *
**************************************************************************
QSNDRST
MMTM SP,A3,A5
CALLR SNDRES ;RESET THE BOARD
MOVI 100,A0
DSJS A0,$ ;NEED 30 mics BEFORE SENDING CODE
CLR A3
CLR A5
CALLR SNDSND ;PEND ON DIG SIDE
MOVK MUSICHAN,A5
CALLR SNDSND ;PEND ON YAMAHA SIDE
MMFM SP,A3,A5
RETS
**************************************************************************
* *
* FADE_UP - PROCESS TO FADE THE SOUND UP *
* A11 = FADE RATE *
* *
**************************************************************************
FADE_UP:
MOVI FADE_UP_TAB,A8
JRUC FADER
**************************************************************************
* *
* FADE_DOWN - PROCESS TO FADE THE SOUND UP *
* A11 = FADE RATE *
* *
**************************************************************************
FADE_DOWN:
MOVI FADE_DOWN_TAB,A8
JRUC FADER
FADER:
MOVI FADEPID,A0
CLR A1
NOT A1
CALLA KILALL ;WASTE ANY OTHER FADERS
FADE_LP:
MOVE *A8+,A0,L
JRZ FADE_DONE
CALLR ONESND
SLOOPR A11,FADE_LP
FADE_DONE:
DIE
FADE_UP_TAB:
.LONG VOLUME0
.LONG VOLUME1
.LONG VOLUME2
.LONG VOLUME3
.LONG VOLUME4
.LONG VOLUME5
.LONG VOLUME6
.LONG VOLUME7
.LONG VOLUME8
.LONG VOLUME9
.LONG VOLUMEA
.LONG VOLUMEB
.LONG VOLUMEC
.LONG VOLUMED
.LONG VOLUMEE
.LONG VOLUMEF
.LONG 0
FADE_DOWN_TAB:
.LONG VOLUMEF
.LONG VOLUMEE
.LONG VOLUMED
.LONG VOLUMEC
.LONG VOLUMEB
.LONG VOLUMEA
.LONG VOLUME9
.LONG VOLUME8
.LONG VOLUME7
.LONG VOLUME6
.LONG VOLUME5
.LONG VOLUME4
.LONG VOLUME3
.LONG VOLUME2
.LONG VOLUME1
.LONG VOLUME0
.LONG 0
**************************************************************************
* *
* POPULAR SOUND CALLS *
* *
**************************************************************************
*
*HIGH PRIORITY OFF CODES, NOTHING SHOULD BEAT THESE
CVSDOFF .WORD >F0FF|>800,>01,>8000,0 ;CVSD BACKGROUND LOOP OFF
CVSDFOFF .WORD >F0FF|>800,>01,>8000,0 ;CVSD FOREGROUND LOOP OFF
SOUNDOFF .WORD >F0FF|>800,>01,>8000,0 ;TURN SOUND SIDE OFF
ALLOFF .WORD >F3FF|>800,>01,>8000,0 ;MUSIC AND EFFECTS OFF
MUSICOFF .WORD >F3FF|>800,>01,>807E,0 ;TURN JUST MUSIC OFF
MUSITOFF .WORD >F3FF|>800,>01,>8040,0 ;MUSIC TRANSITION OFF
YAMOFF .WORD >F2FF|>800,>01,>807F,0 ;YAMAHA EFFECT OFF
VOLUME0 .WORD >F3FE,>1,>802F,0
VOLUME1 .WORD >F3FE,>1,>802E,0
VOLUME2 .WORD >F3FE,>1,>802D,0
VOLUME3 .WORD >F3FE,>1,>802C,0
VOLUME4 .WORD >F3FE,>1,>802B,0
VOLUME5 .WORD >F3FE,>1,>802A,0
VOLUME6 .WORD >F3FE,>1,>8029,0
VOLUME7 .WORD >F3FE,>1,>8028,0
VOLUME8 .WORD >F3FE,>1,>8027,0
VOLUME9 .WORD >F3FE,>1,>8026,0
VOLUMEA .WORD >F3FE,>1,>8025,0
VOLUMEB .WORD >F3FE,>1,>8024,0
VOLUMEC .WORD >F3FE,>1,>8023,0
VOLUMED .WORD >F3FE,>1,>8022,0
VOLUMEE .WORD >F3FE,>1,>8021,0
VOLUMEF .WORD >F3FE,>1,>8020,0
*
*SOUND PROCESSOR MAKES SOUNDS FOR N-CHANNELS (CURRENTLY 6):
*
* CHANNEL #0 OKI CHANNEL 3 MISC. SAMPLES
* CHANNEL #1 OKI CHANNEL 4 SPEECH
* CHANNEL #2 YAMAHA SOUNDS FX
* CHANNEL #3 BACKGROUND MUSIC
* CHANNEL #4 OKI CHANNEL 1 EXPLOSIONS
* CHANNEL #5 OKI CHANNEL 2 GUN SHOTS
*
*PRIORITY WORD = 1111INNNPPPPPPPP; I=1=NON-INTERRUPTABLE
*NNN=CHANNEL #(0-7);
*PP=PRIORITY (00-FF), FF=HIGHEST.
*TIME WORD =TTTT (0000-7FFF X 16MS).
*SOUND WORD =8SSS SSS=SOUND CODE(000-FFF).
TUNE1 .WORD >F3FE,10,>8001,0 ;REPORTER TUNE AT INTRO
TUNE2 .WORD >F3FE,1,>8002,0 ;INTRO INTO DESERT
TUNE3 .WORD >F3F0,1,>8005,0 ;INTRO INTO TAUNTS/RACKUP
TUNE3O .WORD >F3F0,1,>8090,0 ;TUNE 3 OFF
HIMUSC .WORD >F3F0,10,>8001,0 ;HIGH SCORE MUSIC
BUYMSC .WORD >F3FE,10,>8006,0 ;BUYIN MUSIC
SHOT .WORD >F450,05,>8043,0 ;REGULAR SHOT LOWER VOLUME
THUMP .WORD >F460,08,>8046,0 ;NON STOP THUMPER SOUND
CANNON .WORD >F560,09,>80DE,0 ;T72 CANNON
THUMP2 .WORD >FC58,04,>8046,0 ;SPDBALL THUMPER SOUND #2
EXP1 .WORD >FC55,18,>8030,0 ;EXPLOSION
EXP1L .WORD >FC55,10,>8040,0 ;GRUNT EXP SND
EXP2 .WORD >FC55,10,>8032,0 ;EXPLOSION LARGE
EXP2HI .WORD >FC75,10,>8032,0 ;EXPLOSION LARGE HIGHER PRI
EXP2HIB .WORD >FC75,05,>8032,0 ;EXPLOSION LARGE HIGHER PRI
EXP3 .WORD >F455,06,>8034,0 ;EXPLOSION
EXP4 .WORD >FC5A,06,>803A,0 ;SMART BOMB SND
EXP5 .WORD >FC7A,06,>8030,0 ;GUNNER EXP
SEXP2HI .WORD >F4E5,35,>8032,0 ;EXPLOSION LARGE HIGHER PRI
SALTXP4 .WORD >F5E5,20,>80D8,0
ALTEXP1 .WORD >FD75,10,>80E0,0 ;GRUNT EXP SND
ALTXP1A .WORD >FD85,04,>80D4,0 ;ALT CHANNEL EXPLOSION
ALTEXP3 .WORD >F575,15,>80D9,0 ;ALT CHAN MINE LAYER EXP
ALTEXP4 .WORD >F575,>10,>80DF,0 ;ALT CHAN EXP - JEEPS
ALTEXP5 .WORD >F575,>10,>80DE,0 ;ALT CHAN EXP
ALTEXP6 .WORD >F577,>38,>80DE,0 ;ALT CHAN EXP
TORCH .WORD >FDB5,40,>80BC,0 ;AHMED FLAME THROWER
SETDWN .WORD >F8F4,05,>80D4,0 ;SET DOWN TIME BOMB
CNTDOWN .WORD >FBF5,05,>80A4,0 ;BUYIN CNTDWN CLANG
CNTDWN2 .WORD >FBF5,05,>80A5,0 ;BUYIN CNTDWN CLANG #2
;CNTDOWN .WORD >FBF5,05,>8010,0 ;BUYIN CNTDWN CLANG
;CNTDWN2 .WORD >FBF5,05,>8011,0 ;BUYIN CNTDWN CLANG #2
FLAMSND .WORD >F460,05,>8044,0 ;FLAME THROWER
SHOT2 .WORD >FC61,05,>804E,0 ;SPRAY WEAPON
GRNTSHT .WORD >F54F,10,>80E7,0 ;GRUNT SHOOTS AT PLYR
TURTSND .WORD >F550,08,>805C,0 ;TURRET GUN FIRE SND
TOTCARN .WORD >F9F0,120,>80CF,0 ;"TOTAL CARNAGE"
SENDIN .WORD >F180,01,>80CE,0 ;"SEND IN SQUAD"
ELECTRO .WORD >F0F0,40,>80C9,0 ;SHOCK SND AT DEATH
MECH1 .WORD >F080,40,>80C5,0 ;MECHANICAL SND 1
AGLSEXP .WORD >FDE8,20,>80DB,0 ;ALT CHAN GLASS SHATTER
GLSEXP .WORD >FCE8,20,>8036,0 ;GLASS SHATTER
WOO1 .WORD >F97E,>24,>80CB,0 ;WHHOOO
WOO2 .WORD >F97E,>24,>80CC,0 ;"YEAH"
THNKU .WORD >F97E,>10,>80BE,0 ;"THANK YOU"
SCASH3 .WORD >F395,08,>8091,0 ;HOSTAGE PICKUP
GUYDI .WORD >F9FD,>44,>80FF,0 ;BAD GUY DIE SCREAM
YEAHHH .WORD >F9F0,>64,>80FE,0 ;RACKUP YEAHHH
SCASH .WORD >F395,08,>808C,0 ;CASH PICKUP SND
SCASH2 .WORD >F395,08,>80A1,0 ;BMB PICKUP SND
SQUISH .WORD >FBA5,18,>80AD,0 ;SQUISH SND
WRPSND .WORD >FBFF,38,>80A9,0 ;FE ;WARP SND
GETWPN .WORD >F858,15,>80D5,0 ;GUN BEING COCKED
COINSND .WORD >FBFF,>10,>80B7,0 ;COIN IN MELODY SND
NOWAY .WORD >F9F7,>40,>80E6,0 ;"NO WAY" AT GAME OVER
FREEMAN .WORD >FBEE,>18,>808D,0 ;FREE MAN FANFARE
KEYSND .WORD >F3EE,>18,>80A8,0 ;KEY MELODY SND
KEYSND2 .WORD >FBEE,>18,>8098,0 ;BIG STUFF SND 1
GETSND .WORD >FBEE,>18,>80AB,0 ;GET HELPER
LOVEIT .WORD >F9F0,>78,>80CD,0 ;"I LOVE IT"
GRNSND .WORD >F365,>18,>8089,0 ;GRENADE LAUNCH SND
STATSND .WORD >F08E,>18,>80C0,0 ;STATIC
JEEPSND .WORD >F08F,>18,>80C3,0 ;JEEP DOWN SCRN
HORNSND .WORD >F38E,>18,>8087,0 ;JEEP HORN 1
HORN2 .WORD >F88E,>18,>80E9,0 ;JEEP HORN 2
EXITSND .WORD >F38E,>18,>808C,0 ;EXIT SND
FNDSND .WORD >F99E,>18,>80D2,0 ;FIEND DEATH
BEEP1 .WORD >F3F7,>8,>80AC,0 ;BEEP CLICK
BEEP2 .WORD >F3F7,>30,>8096,0 ;BEEP TONE 2 - NO BMB
TRGTSND .WORD >FBF0,>50,>8097,0 ;CRUISE MISSILE TARGETED
PLYRONE .WORD >F9FE,>58,>80D0,0 ;"PLAYER ONE"
PLYRTWO .WORD >F9FE,>58,>80D1,0 ;"PLAYER TWO"
DIESCRM .WORD >F18E,>8,>80D2,0 ;DIE SCREAM BEFORE SHOCK SND
FIREDI .WORD >F88E,>40,>80D7,0 ;BURNING FLAME FOR DEATH
AIRSCRM .WORD >F9FD,>58,>80D3,0 ;DIE SCREAM FOR UP INTO AIR
SCREAM .WORD >F1F2,>48,>80E8,0 ;DIE SCREAM FOR CANDY BLITZER
SLIDEIN .WORD >F3F7,>8,>808E,0 ;SLIDE IN SOUND
TING .WORD >F38B,>10,>809C,0 ;BULLET HITTING METAL
TING2 .WORD >F38B,>10,>809D,0 ;BULLET HITTING METAL
TING3 .WORD >F38B,>10,>809E,0 ;BULLET HITTING METAL
MTING .WORD >F3BB,>5,>80A3,0 ;LAND MINE BLOW UP
GULP .WORD >FB8B,>35,>809F,0 ;SHIELD ON
CRSSND .WORD >FCEB,>35,>80EA,0 ;CRUISE MISSILE COMING IN
CRSSND2 .WORD >F4EB,>35,>80EA,0 ;CRUISE MISSILE COMING IN
MEUGH .WORD >F9F0,15,>80FD,0 ;PLAYER DIE UGH
UGH1 .WORD >F1A0,8,>80F5,0 ;C0 ;UGH
UGH2 .WORD >F1A0,8,>80F8,0 ;UGH
UGH3 .WORD >F1A0,8,>80FA,0 ;UGH
UGH4 .WORD >F1A0,8,>80FC,0 ;UGH
HASND .WORD >F9F2,>30,>80F2,0 ;WICKED LAUGHTER
CHUCK .WORD >F0F3,>70,>80C7,0 ;UPCHUCK SND FOR FIENDS
.END