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
|
||
|