615 lines
19 KiB
NASM
615 lines
19 KiB
NASM
**************************************************************
|
||
*
|
||
* 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
|
||
|