total-carnage/BACKUP/SOUNDS.ASM

693 lines
22 KiB
NASM
Raw 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: ?
* Initiated:
*
* Modified: Shawn Liptak, 9/30/91 -High speed version
*
* COPYRIGHT (C) 1991 WILLIAMS ELECTRONICS GAMES, INC.
*
*.Last mod - 9/30/91 20:34
**************************************************************
.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
;SOUND HEADERS USED IN GAME
.DEF UGH1,UGH2,UGH3,UGH4,MEUGH,HASND,NOWAY,BUYMSC,GUYDI,MTING
.DEF TRGTSND,KEYSND,CHUCK,HELP,HELP2,HELP3,HELP4,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 FEET,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,NCHAN*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
**************************************************************************
* Make one sound
* A0=* to sound data
* Rets: A0=Same
ONESND
PUSH a0,a1,a2,a3,a4
movk 1,a1
jruc sl20
********************************
* 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
sl20 move @SOUNDSUP,a2
jrnz sndldx ;Somebody says no?
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?
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
**************************************************************************
* SNDSND - RAW HARDWARE SOUND CALL *
* A3=SOUND CODE B0-B7 *
* NOTE: TRASHES A14 *
**************************************************************************
SNDSND
PUSH a0,a3
SLL 20,A3
SRL 20,A3 ;STRIP OFF BITS
CMPI 100H,A3 ;IS THIS AN EXTENDED SOUND CALL?
JRLO SNDSND_BASE ;BR = NO
MOVE A3,A0
MOVI EXTENDED_CODE,A3 ;SEND THE EXTENDED FEATURE
CALLR SNDSND
MOVE A0,A3
SLL 32-8,A3
SRL 32-8,A3
SNDSND_BASE
ADDI SOUNDBIT,A3 ;PULL SOUND SECTION INTERRUPT
MOVE A3,@SOUND ;HIT SOUND
MOVK 8,A0
DSJS A0,$ ;SLOW IT DOWN A BIT
ORI 0FF00h,A3 ;PUT OUT 1'S
MOVE A3,@SOUND
MOVI 8,A0
DSJS A0,$ ;LET SOUND BOARD REACT
MOVB @TALKPORT+B_SIRQ-7,A0 ;ARE WE CONNECTED?
JRN SS_DEFAULT_WAIT ;BR = NO
**** MOVI 390,A0 ;MAX FIRQ DELAY ON SOUND BOARD IS 180 micros
**** DSJS A0,$
MOVI 390,A3 ;MAX IRQ DELAY FOR SOUND BOARD
SS_IRQ_WAIT
MOVB @TALKPORT+B_SIRQ-7,A0 ;DID SOUND BOARD SERVICE?
JRN SS_X ;BR = YES
DSJS A3,SS_IRQ_WAIT
SS_X
PULL a0,a3
RETS
*COME HERE BECAUSE SOUND BOARD IRQ REQUEST WAS NOT DETECTED
SS_DEFAULT_WAIT
MOVI 390,A0 ;MAX IRQ DELAY FOR SOUND BOARD
DSJS A0,$
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,10,>8002,0 ;INTRO INTO DESERT
TUNE3 .WORD >F3F0,10,>8005,0 ;INTRO INTO TAUNTS/RACKUP
TUNE3O .WORD >F3F0,10,>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,>8038,0 ;
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
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,100,>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
HELP .WORD >F97E,>24,>80C1,0 ;"HELP"
HELP2 .WORD >F97F,>34,>80BF,0 ;"OVER HERE"
HELP3 .WORD >F97E,>24,>80F1,0 ;WHISTLE
HELP4 .WORD >F87E,>24,>80D6,0 ;WHISTLE
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 >FBFE,38,>80A9,0 ;WARP SND
GETWPN .WORD >F858,15,>80D5,0 ;GUN BEING COCKED
COINSND .WORD >FBFF,>10,>8098,0 ;COIN IN MELODY SND
NOWAY .WORD >F9F7,>40,>80E6,0 ;"NO WAY" AT GAME OVER
FREEMAN .WORD >F1EE,>18,>80CD,0 ;FREE MAN SPEECH
KEYSND .WORD >F3EE,>18,>80A8,0 ;KEY MELODY SND
KEYSND2 .WORD >FBEE,>18,>8098,0 ;KEY MELODY SND
GETSND .WORD >FBEE,>18,>80AB,0 ;GET HELPER
LOVEIT .WORD >F9F0,>78,>80CD,0 ;"I LOVE IT"
FEET .WORD >F06E,>18,>80CA,0 ;FAST FEET PICKUP
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
;WOO3 .WORD >F1FE,>34,>80F0,0 ;GIRL YEAH
;VICMSC .WORD >F2F0,100,>80F0,0 ;MUTOID VICTORY MUSIC
;STRYMSC .WORD >F280,300,>80F0,0 ;MUSIC FOR STORY IN DEMO
;ENDTUNE .WORD >F280,300,>80F0,0 ;END OF GAME TUNE
;DOOR1 .WORD >F376,5,>80F0,0 ;DOOR SLIDING OPEN
;DOOR2 .WORD >F376,5,>80F0,0 ;DOOR SLIDING SHUT
;FSHOT .WORD >F7A0,>2E,>80F0,0 ;POD SIZZLE
;TUNE4 .WORD >F2FF,120,>80F0,0 ;3RD BKRND TUNE (SNAKES)
;BTUNE1 .WORD >F2FF,>120,>80F0,0 ;MUTOID BOSS TUNE
;BTUNE2 .WORD >F2FF,>120,>80F0,0 ;FACE BOSS TUNE
;BTUNE3 .WORD >F2FF,>120,>80F0,0 ;SNAKE BOSS TUNE
;ICON .WORD >F3AF,>1E,>80F0,0 ;WEAPON ICON PICKUP
;GDTH2 .WORD >F3AF,>1E,>80F0,0 ;GRUNT DEATH
;RIFL .WORD >F2E8,>08,>80F0,0 ;RIFLE SPRAY WEAPON
;HEXP .WORD >F3A0,>10,>80F0,0 ;OTHER HULK DEATH
;HEXP2 .WORD >F3A0,>1E,>80F0,0 ;OTHER HULK DEATH
;HEXP3 .WORD >F3A0,>1E,>80F0,0 ;OTHER HULK DEATH
;BUBL .WORD >FBFB,>1E,>80F0,0 ;BLOOD BUBBLE
;LOWSND .WORD >FBFD,120,>80F0,0 ;WEAPON LOW SND
;LAZSND .WORD >F3F7,>10,>80F0,0 ;LAZER BOLTS FROM EYES
;BONS1 .WORD >F3FF,>1,>80F0,0 ;BONUS BUILDUP
;BONS2 .WORD >F3FE,>1,>80F0,0 ;BONUS END
;SCRM .WORD >F3EF,>10,>80F0,0 ;SNAKE SCREAM DEATH
;BEEP3 .WORD >F3F7,>8,>80F0,0 ;BONUS PRIZE ERASE
;MONIN .WORD >F3F8,>10,>80F0,0 ;MONITOR SLIDE IN
;MISS .WORD >F2E8,>08,>80F0,0 ;MISSLES
;MISS2 .WORD >F0E7,>08,>80F0,0 ;MISSLES FROM BAD GUYS
;BLDS .WORD >F3DF,>1E,>80F0,0 ;BLADES
;TING2 .WORD >F3F3,>0F,>80F0,0 ;BULLET HITTING WALL
;GIFT .WORD >F3A0,50,>80F0,0 ;PRESENT PICKUP
;GDTH1 .WORD >F3E4,35,>80F0,0 ;GRUNT DEATH
;EXP1 .WORD >F0E8,>08,>80F0,0 ;EXPLOSION SMALL
;EXP3 .WORD >F0E8,>0F,>80F0,0 ;EXOLOSION LARGE
;EXP3HI .WORD >F2FE,15,>80F0,0 ;EXOLOSION LARGE FOR SMRT BMB
;EXP3HIA .WORD >F8FF,35,>80F0,0 ;EXOLOSION LARGE FOR MUTOID
;EXP3HIB .WORD >F0FF-08,35,>80F0,0 ;EXOLOSION LARGE FOR SMRTBMB
;UGH .WORD >F8FE,15,>80F0,0 ;PLAYER DIE SCREAM
;SHKSND .WORD >F8FE,120,>80F0,0 ;PLAYER ELECTRIC SHOCK
;CROWD1 .WORD >F8F8,>4E,>80F0,0 ;CROWD NOISE CHEERS
;CROWD1A .WORD >F0F8,>3E,>80F0,0 ;CROWD NOISE CHEERS TVMNTR
;CROWD2 .WORD >F8F8,>2E,>80F0,0 ;CROWD NOISE OOHS N AAHS
;ICSND .WORD >F3EF,>1E,>80F0,0 ;ICON PICKUP
;
;SPEECH TABLES
;
;PZLSND .LONG PZ1SND,PZ2SND,PZ3SND
;PZ1SND .LONG WOO3,WOO1,WOO1 ;STSTR,SCAR,SVCR
;PZ2SND .LONG WOO3,WOO1,WOO1 ;STELE,SLUGG,STRIP
;PZ3SND .LONG WOO3,WOO1,WOO1 ;SHGM,SMWR,SMEAT
;
;SPEECH
;
;GOGO .WORD >F2FE,>18,>80F0,0 ;GIRLS 'GO!'
;UGH2 .WORD >F2E8,>14,>80F0,0 ;UGH! / SNAKE GRUNT
;UGH3 .WORD >F2E8,>14,>80F0,0 ;OOF!
;
;OUCH .WORD >F2FE,>40,>80F0,0 ;OUCH GROWL
;AWWSND .WORD >F2FD,>3A,>80F0,0 ;BIG AWW SND
;AWWSND2 .WORD >F2FF,>3A,>80F0,0 ;BIG AWW SND FLAT FACE
;EESND .WORD >F2FD,>30,>80F0,0 ;EE-AAH SND
;ONOSND .WORD >F2FE,>30,>80F0,0 ;OH NO SND
;HA2SND .WORD >F2FE,>30,>80F0,0 ;HAHA SND
;WPWPSND .WORD >F2FF,>40,>80F0,0 ;WHOOP WHOOP SND
;WPSSND .WORD >F2FF,>40,>80F0,0 ;LOTS OF WHOOPS
;
;BINGO .WORD >F2FF-07,>30,>80F0,0 ;"BINGO"
;MCSPK2 .WORD >F2FE,>3F,>80F0,0 ;BIG MONEY
;MCSPK3 .WORD >F2FE,>3F,>80F0,0 ;BIG PRIZES
;MCSPK5 .WORD >F8FF-06,>5B,>80F0,0 ;CONTESTANT 1
;MCSPK6 .WORD >F8FF-06,>5B,>80F0,0 ;CONTESTANT 2
;MCSPK7 .WORD >F8FE,>53,>80F0,0 ;"TOTAL CARNAGE"
;LEGOSND .WORD >F8FE,>30,>80F0,0 ;LET'S GO
;MCSPK9 .WORD >F2FF-07,>53,>80F0,0 ;TEN SECONDS
;MCSPK10 .WORD >F8FE,>43,>80F0,0 ;"YOU'LL NEED IT"
;MCSPK11 .WORD >F8FE,>43,>80F0,0 ;"BUY FOR A DOLLAR:
;MCSPK4 .WORD >F2FE,>3F,>80F0,0 ;"GOOD LUCK"
.END