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