narc/NARC/NARCRIME.ASM

398 lines
9.9 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.

.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