narc/NARC/NARCRIME.ASM

398 lines
9.9 KiB
NASM
Raw Normal View History

2021-04-06 14:36:38 -07:00
.FILE 'NARCRIME.ASM'
.TITLE " <<< N A R C -- CRIME SCENE ROUTINES & DATA >>>"
**************************************************************************
* *
* COPYRIGHT (C) 1988 WILLIAMS ELECTRONICS GAMES, INC. *
* ALL RIGHTS RESERVED. *
* *
**************************************************************************
.WIDTH 132
.OPTION B,D,L
.MNOLIST
* GET THE SYSTEM STUFF
.INCLUDE "\video\MPROCEQU.ASM" ;MPROC equates
.INCLUDE "\video\DISPEQU.ASM" ;Display processor equates
.INCLUDE "\video\GSP.INC" ;GSP assembler equates
.INCLUDE "\video\SYS.INC" ;Zunit system equates
.INCLUDE "\video\MACROS.HDR" ;Macros, Yeah!
* LOCAL STUFF
.INCLUDE "NARCEQU.ASM" ;NARC Equates
.INCLUDE "IMGTBL.GLO" ;Image Label Equates
.INCLUDE "BGNDTBL.GLO" ;Background Block Equates
*
*EXTERNALS
.GLOBAL SETCRIMENO
.GLOBAL HYPOCRM1,GANGCRM1,MBIGCRM1,RAMBCRM1
.GLOBAL DUMPCRM1,CLWNCRM1,LOFFCRM1
.EVEN
**** .DATA
.text
**************************************************************************
SETCRIMENO:
mmtm SP,A0,A2
MOVI CRIMETAB,A0 ;GET THE WAVE TUNE TABLE
MOVE @WAVE,A2,W
DEC A2 ;ZERO BASE
SLL 28,A2 ;ONLY SIGNIFICANT TO 4 BITS RIGHT NOW
SRL 23,A2
ADD A2,A0
MOVE *A0,A0,L
MOVE *A0+,A2,W
MOVE A2,@CRIMENO,W
mmfm SP,A0,A2
rets
**************************************************************************
**************************************************************************
* *
* CRIME - SHOW THE CRIME/GOAL FOR THE CURRENT WAVE *
* NOTE: CALL WITH JSRP *
* *
**************************************************************************
CRIME
CLR A0
MOVE A0,@GAMERASE,W
MOVE A0,@DISPLAYON,W
CALLA AUTOEOFF
CALLA DMAQWAIT
CALLA WRAMINIT ;INITIALIZE WAVE RAM
CALLA OINIT
CALLA BBINIT
CALLA GETWAVE ;SET UP WAVE DIFFICULTY PARAMS
MOVI CRIMETAB,A10 ;GET THE WAVE TUNE TABLE
MOVE @WAVE,A2,W
DEC A2 ;ZERO BASE
SLL 28,A2 ;ONLY SIGNIFICANT TO 4 BITS RIGHT NOW
SRL 23,A2
ADD A2,A10
MOVE *A10,A10,L
CALLR INITCRIM ;GET THE CRIME SCENE
MOVI WSCANMLL,A0
MOVE A0,@SCRNTL,L
MOVI WSCANMLR,A0
MOVE A0,@SCRNLR,L
MOVK 1,A0
MOVE A0,@DISPLAYON,W ;TURN THE DISPLAY PROC ON
CREATE BUPDPID,BBOFSCRN ;CREATE THE BACKGROUND UPDATE PROCESS
MOVI 05H,A0 ;EXPAND-A-COOL
PUSHP A10
MOVI WSCANST,A10 ;ALSO ALLOWING BBOFSCRN A CRACK
MOVI WSCANEND,A11
MMTM A12,A8,A9,A11
JSRP SCREXP32
MMFM A12,A8,A9,A11
PULLP A10
MOVE *A10,A0,L
JSRPR A0 ;DO THE CRIME
MOVI BUPDPID,A0
CLR A1
NOT A1
CALLA KILALL ;KILL THE BACKGROUND UPDATE
RETP
**************************************************************************
* *
* INITCRIM - INITIALIZE A CRIME SCENE *
* A10 = PTR TO BACKGROUND INIT TABLE *
* RETURNS *
* A10 = PTR TO CRIME_PROC TABLE ENTRY *
* *
**************************************************************************
INITCRIM
MMTM SP,A0,A1,A2,A14
MOVE *A10+,A2,W
MOVE A2,@CRIMENO,W
MOVE *A10+,A2,W
MOVE A2,@PLYMAX,W
SUBI ZORIGIN,A2
MOVE A2,@PLZMAX,W
MOVE *A10+,A1,W
MOVE A1,@PLYMIN,W ;STUFF Y BOUNDRIES
SUBI ZORIGIN,A1
MOVE A1,@PLZMIN,W ;AND Z BOUNDRIES
SUB A1,A2 ;A2 = PLAYFIELD Z WIDTH
SRL 1,A2
ADD A1,A2 ;A2 = Z MIDLINE OF PLAYFIELD
MOVE A2,@PLZMID,W
MOVE *A10+,A2,W
SUBI ZORIGIN,A2
MOVE A2,@PSZMAX,W
MOVE *A10+,A1,W
SUBI ZORIGIN,A1
MOVE A1,@PSZMIN,W
SUB A1,A2 ;A2 = STREET Z WIDTH
SRL 1,A2
ADD A1,A2 ;A2 = Z MIDLINE OF STREET
MOVE A2,@PSZMID,W
MOVE *A10+,A14,L ;GET THE BACKGROUND PRIMARY MODULE LIST
MOVE A14,@BAKMODS,L
MOVE *A10+,A14,L ;GET THE BACKGROUND SECONDARY MODULE LIST
MOVE A14,@BAK2MODS,L
MOVE *A10+,A14,L
ICRIM5
MOVE *A14,A0,W ;INITIALIZE FORE/BACKGROUND OBJECTS
JRN ICRIM6 ;END OF FORE/BACKGROUND LIST
calla MAKFBOBJ
JRUC ICRIM5
ICRIM6
MMFM SP,A0,A1,A2,A14
RETS
DUMCRIME
SLEEP 120
RETP
*
*TABLE OF CRIME SCENES
CRIMETAB
.LONG LOFFCRIM,HYPOCRIM,DUMPCRIM,CLOWNCRI,RAMBCRIM,GANGCRIM,MBIGCRIM
.LONG HEADCRIM,HYPOCRIM,DUMPCRIM,CLOWNCRI,RAMBCRIM,GANGCRIM,MBIGCRIM
*CRIME HEADER
* .WORD CRIMENO,PLYMAX,PLYMIN,PSYMAX,PSYMIN
* .LONG BACKGROUND,SECONDARY_BACKGROUND,FOREGROUND_OBJECTS,CRIME_PROC
*
*THE LOFFREDO CRIME(HE IS A CRIME)
LOFFCRIM
.WORD 0,399,298,399,337
.LONG LOFMODS,NULLSKY,LOFFORE,LOFFCRM1
*
*SGT. SKYHIGH'S CRIME
RAMBCRIM
.WORD 6,399,242,399,337
.LONG HIGHMODS,NULLSKY,HIGHFORE,RAMBCRM1
*
*THE DUMPSTER MANS CRIME
DUMPCRIM
.WORD 4,399,298,399,337
.LONG DUMPMODS,NULLSKY,NULLFORE,DUMPCRM1
*
*THE CLOWNS CRIME
CLOWNCRI
.WORD 2,399,298,399,337
.LONG CLOWNMOD,NULLSKY,CLOWNFOR,CLWNCRM1
*
*THE HYPO MAN CRIME
HYPOCRIM
.WORD 3,399,298,399,337
.LONG HYPOMOD,NULLSKY,HYPOFORE,HYPOCRM1
*
*THE GANGSTERS CRIME
GANGCRIM
.WORD 5,399,298,399,337
.LONG BIGMOD,NULLSKY,GANGFORE,GANGCRM1
*
*THE MR. BIG CRIME SCENE
MBIGCRIM
.WORD 9,399,250,399,337
.LONG BIGMOD,NULLSKY,BIGFORE,MBIGCRM1
*
*THE MR. BIG HEAD CRIME SCENE
HEADCRIM
.WORD 7,399,250,399,337
.LONG HEADMOD,NULLSKY,NULLFORE,DUMCRIME
LOFMODS
.LONG ALLEY2BMOD
.WORD 44,42+SKYTOPOF ;x,y pos.
.LONG PIPELINEBMOD
.WORD BLSTEND,33+SKYTOPOF ;x,y pos.
.LONG ALLEY2BMOD
.WORD BLSTEND,42+SKYTOPOF ;x,y pos.
.LONG >FFFFFFFF
LOFFORE
.LONG 0,0,[164+87,0],[107+SKYTOPOF,0]
.WORD 0,0
.LONG ARMDR1,ARMDRZ,DUMCOLL
.WORD DMAWNZ,BGDCID|ARMDRID
.LONG 0
.WORD 0FFFFH
*
*SKYHIGH BACKGROUND
HIGHMODS
.LONG GHSINTBMOD
.WORD 36,(-56+SKYTOPOF)
.LONG >FFFFFFFF
HIGHFORE
.LONG 0,0,[120,0],[-56+136+SKYTOPOF,0]
.WORD 0,0
.LONG WEED,WEEDZ,DUMCOLL
.WORD DMAWNZ,WEEDOID
.LONG 0
.LONG 0,0,[225,0],[-56+136+SKYTOPOF,0]
.WORD 0,0
.LONG WEED,WEEDZ,DUMCOLL
.WORD DMAWNZ,WEEDOID
.LONG 0
.LONG 0,0,[330,0],[-56+136+SKYTOPOF,0]
.WORD 0,0
.LONG WEED,WEEDZ,DUMCOLL
.WORD DMAWNZ,WEEDOID
.LONG 0
.LONG 0,0,[435,0],[-56+136+SKYTOPOF,0]
.WORD 0,0
.LONG WEED,WEEDZ,DUMCOLL
.WORD DMAWNZ,WEEDOID
.LONG 0
.WORD 0FFFFH
DUMPMODS
.LONG BRIDGEBMOD
.WORD 100,-80+SKYTOPOF ;x,y pos.
.LONG BRIDGEBMOD
.WORD BLSTEND,-80+SKYTOPOF ;x,y pos.
.LONG >FFFFFFFF
CLOWNMOD
.LONG BOOK1BMOD
.WORD -15,27+SKYTOPOF ;x,y pos.
.LONG BOOK1BMOD
.WORD BLSTEND,27+SKYTOPOF ;x,y pos.
.LONG BOOK1BMOD
.WORD BLSTEND,27+SKYTOPOF ;x,y pos.
.LONG >FFFFFFFF
CLOWNFOR
.LONG 0,0,((-15+89)*>10000),((90+SKYTOPOF)*Y)
.WORD 0,0
.LONG ARMDR1,ARMDRZ,DUMCOLL
.WORD DMAWNZ,BGDCID|ARMDRID
.LONG 0
.LONG 0,0,((165+89)*>10000),((90+SKYTOPOF)*Y)
.WORD 0,0
.LONG ARMDR1,ARMDRZ,DUMCOLL
.WORD DMAWNZ,BGDCID|ARMDRID
.LONG 0
.LONG 0,0,((335+89)*>10000),((90+SKYTOPOF)*Y)
.WORD 0,0
.LONG ARMDR1,ARMDRZ,DUMCOLL
.WORD DMAWNZ,BGDCID|ARMDRID
.LONG 0
.WORD 0FFFFH
HYPOMOD
.LONG KASTLEBMOD
.WORD 126,32+SKYTOPOF ;x,y pos.
.LONG >FFFFFFFF
HYPOFORE
.LONG 0,0,[126+271,0],[75+32+SKYTOPOF,0]
.WORD 0,0
.LONG ARMDR1,ARMDRZ,DUMCOLL
.WORD DMAWNZ,BGDCID|ARMDRID
.LONG 0
.LONG 0,0,[46+327,0],[75+32+SKYTOPOF,0]
.WORD 0,0
.LONG ARMDR1,ARMDRZ,DUMCOLL
.WORD DMAWNZ,BGDCID|ARMDRID
.LONG 0
.WORD 0FFFFH
BIGMOD
.LONG BIGFLR4BMOD
.WORD 16,0+SKYTOPOF
.LONG BIGFLR10BMOD
.WORD BLSTEND,0+SKYTOPOF
.LONG BIGFLR4BMOD
.WORD BLSTEND,0+SKYTOPOF
.LONG >FFFFFFFF
BIGFORE
.LONG 0,0,((140+16)*>10000),(((0+61)+SKYTOPOF)*Y)
.WORD 0,0
.LONG safedrlg,0,DUMCOLL
.WORD DMAWNZ,BGDCID
.LONG 0
.LONG 0,0,((140+47)*>10000),(((0+61)+SKYTOPOF)*Y)
.WORD 0,0
.LONG safedrrg,0,DUMCOLL
.WORD DMAWNZ,BGDCID
.LONG 0
.LONG 0,0,((264+62)*>10000),(((0+54)+SKYTOPOF)*Y)
.WORD 0,0
.LONG cardslot2,0,DUMCOLL
.WORD DMAWNZ|M_PREVZ,JUNKOID
.LONG 0
.LONG 0,0,((264+62)*>10000),(((0+54)+SKYTOPOF)*Y)
.WORD 0,0
.LONG cardslot2,0,DUMCOLL
.WORD DMAWNZ|M_FLIPH|M_PREVZ,JUNKOID
.LONG 0
.LONG 0,0,((264+62)*>10000),(((0+54)+SKYTOPOF)*Y)
.WORD 0,0
.LONG GOLDTYPE,0,DUMCOLL
.WORD DMAWAL|M_PREVZ,JUNKOID
.LONG 0
.LONG 0,0,((264+62)*>10000),(((0+54)+SKYTOPOF)*Y)
.WORD 0,0
.LONG OPENTYPE,0,DUMCOLL
.WORD DMAWAL|M_PREVZ,JUNKOID
.LONG 0
.LONG 0,0,((264+37)*>10000),(((0+188)+SKYTOPOF)*Y)
.WORD 0,0
.LONG GOLDcard,0,DUMCOLL
.WORD DMAWNZ,JUNKOID
.LONG 0
.WORD 0FFFFH
*
*GANGSTER CRIME SCENE FOREGROUND
GANGFORE
.LONG 0,0,((140+16)*>10000),(((0+61)+SKYTOPOF)*Y)
.WORD 0,0
.LONG safedrlr,0,DUMCOLL
.WORD DMAWNZ,BGDCID
.LONG 0
.LONG 0,0,((140+47)*>10000),(((0+61)+SKYTOPOF)*Y)
.WORD 0,0
.LONG safedrrr,0,DUMCOLL
.WORD DMAWNZ,BGDCID
.LONG 0
.LONG 0,0,((264+62)*>10000),(((0+54)+SKYTOPOF)*Y)
.WORD 0,0
.LONG cardslot2,0,DUMCOLL
.WORD DMAWNZ|M_PREVZ,JUNKOID
.LONG 0
.LONG 0,0,((264+62)*>10000),(((0+54)+SKYTOPOF)*Y)
.WORD 0,0
.LONG cardslot2,0,DUMCOLL
.WORD DMAWNZ|M_FLIPH|M_PREVZ,JUNKOID
.LONG 0
.LONG 0,0,((264+62)*>10000),(((0+54)+SKYTOPOF)*Y)
.WORD 0,0
.LONG REDTYPE,0,DUMCOLL
.WORD DMAWAL|M_PREVZ,JUNKOID
.LONG 0
.LONG 0,0,((264+62)*>10000),(((0+54)+SKYTOPOF)*Y)
.WORD 0,0
.LONG OPENTYPE,0,DUMCOLL
.WORD DMAWAL|M_PREVZ,JUNKOID
.LONG 0
.WORD 0FFFFH
*
*HEAD CRIME MODULES
HEADMOD
.LONG HEADRBMOD
.WORD -1200,(35+SKYTOPOF) ;0 x,y pos.
.LONG 0FFFFFFFFH
NULLFORE
.WORD 0FFFFH
NULLSKY
.LONG >FFFFFFFF
.END