.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