************************************************************** * * 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