.FILE 'NARCATT.ASM' .TITLE " <<< N A R C -- ATTRACT MODE >>>" .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 .BSS AWAVE,32 .TEXT * *GLOBALS IN THIS FILE .GLOBAL ATSTRT * *EXTERNALS .GLOBAL HSTDTAB,TITLPAGE,FBIBADGE,CRED_P,CRD_SCRN .GLOBAL NRAMINIT,INITFGND,GOALXFER *ATTRACT MODE START UP ROUTINE ATSTRT MMTM SP,A0,A1,A7 MOVE @GAMSTATE,A0 CMPI INDIAG,A0 JREQ ATSTRTX MOVK 1,A0 MOVE A0,@DISPLAYON,W ;TURN DISPLAY PROCESSOR ON CALLA NRAMINIT ;INITIALIZE GAME RAM MOVI INAMODE,A0 MOVE A0,@GAMSTATE,W CALLA AUTOEOFF ;TURN OFF AUTOERASE CALLA SYNCFULL CALLA CLR_SCRN ;ZERO THE BIT MAP CALLA COLRSTRT ;START THE COLORS CREATE AMODPID,AMODE ;CREATE THE ATTRACT MODE CLR A0 MOVE A0,@PLAYPAGE,W ;CLEAR AMODE PLAY PAGE ATSTRTX MMFM SP,A0,A1,A7 RETS *AMODUS ZYKLEN AMODE CALLA WIPEOUT CALLA COLRSTRT ;START THE COLORS JSRP HSTDTAB CALLA WIPEOUT CALLA COLRSTRT JSRP ATTPLAY ;DO SOME ATTRACT MODE PLAY STUFF JRUC AMODE2 AMODE1 CALLA WIPEOUT CALLA COLRSTRT JSRP ATTPLAY ;DO SOME ATTRACT MODE PLAY STUFF CALLA WIPEOUT CALLA COLRSTRT ;START THE COLORS JSRP HSTDTAB CALLA WIPEOUT CALLA COLRSTRT JSRP ATTPLAY ;DO SOME ATTRACT MODE PLAY STUFF AMODE2 CALLA WIPEOUT CALLA COLRSTRT ;START THE COLORS JSRP TITLPAGE CALLA WIPEOUT CALLA COLRSTRT JSRP ATTPLAY ;DO SOME ATTRACT MODE PLAY STUFF CALLA WIPEOUT CALLA COLRSTRT ;START THE COLORS JSRP FBIBADGE *** CALLA CRED_P *** JRZ AMODE1 ;DON'T SHOW 0 CREDITS BOZO JSRP CRD_SCRN SLEEP 600 MOVI AMODPID,A0 MOVE A0,*A13(PROCID),W ;I AM WHAT I AM! JRUC AMODE1 ************************************************************************** * * * ATTPLAY - ATTRACT MODE GAME PLAY * * NOTE: CALL WITH JSRP * * * ************************************************************************** NATTWAVS .EQU 3 ;# OF ATTRACT MODE WAVES ATTPLAY MOVK 1,A0 MOVE A0,@SOUNDSUP,W ;TURN ALL SOUNDS OFF MOVE @AWAVE,A0,W INC A0 CMPI NATTWAVS,A0 JRLS ATTWGO ATTWRST MOVK 1,A0 ;RESET TO WAVE 1 ATTWGO MOVE A0,@AWAVE,W MOVE A0,@WAVE,W MOVK 1,A0 MOVE A0,@PLAYPAGE,W ;MARK IT AS THE PLAY PAGE JSRP AMODWAVE MOVI P1DATA,A11 CLR A8 MOVE A8,*A11(PDRUGS),W ;CLEAR COUNTERS FOR SAFETY MOVE A8,*A11(PMONEY),W MOVE A8,*A11(PBUSTS),W ATTWRELD MOVE @AWAVE,A9,W DEC A9 SLL 5,A9 ADDI AMOVETAB,A9 MOVE *A9,A9,L ;GET THIS WAVES MOVEMENT TABLE ATTNEXT MOVE *A9+,A0,W ;GET SOME JOYSTICK BITS CMPI 0FFFFFFFFH,A0 JREQ ATTWRELD ;RELOAD THE TABLE MOVE A0,@P1CTRL,W MOVE *A9+,A10,W ;GET THE SLEEP TIME JSRP ATTPSLP JRNC ATTNEXT INC A8 CMPI 2,A8 JRHS ATTP1DUN SLEEP 160 JRUC ATTNEXT ATTP1DUN SLEEP 60 ATTWXXX CLR A0 MOVE A0,@SOUNDSUP,W ;TURN ALL SOUNDS ON MOVE A0,@P1DATA+POBJ,L ;MAKE SURE ALL OBJECT PTRS ARE CLEAR MOVE A0,@P1DATA+PLOBJ,L MOVE A0,@P2DATA+POBJ,L MOVE A0,@P2DATA+PLOBJ,L RETP AMOVETAB .LONG AWAV1MOV,AWAV2MOV,AWAV3MOV,AWAV4MOV,AWAV5MOV,AWAV6MOV .LONG AWAV1MOV,AWAV2MOV,AWAV3MOV,AWAV4MOV,AWAV5MOV,AWAV6MOV .LONG AWAV1MOV,AWAV2MOV,AWAV3MOV,AWAV4MOV,AWAV5MOV,AWAV6MOV * *ATTRACT MODE PLAYER MOVEMENT TABLES * .WORD STICK_BITS,SLEEP_TIME * . * . * .WORD 0FFFFH AWAV1MOV AWAV4MOV AWAV5MOV .WORD PRYTE,20H .WORD PRYTE|PUP|PFIRE,30H .WORD PRYTE,20H .WORD PLEFT|PCROUCH,1 .WORD PCROUCH|PFIRE,20H .WORD PJUMP|PDOWN|PRYTE,20H .WORD 0,30H .WORD PCROUCH|PFROCK,16H .WORD PCROUCH|PUP,10H .WORD PCROUCH|PRYTE,20H .WORD PJUMP|PFIRE,20H .WORD PDOWN|PLEFT,40H .WORD PRYTE|PCROUCH,1 .WORD PCROUCH|PFROCK,20H .WORD PLEFT,20H .WORD PUP,10H .WORD 0FFFFH AWAV2MOV .WORD PRYTE|PUP,20H .WORD PRYTE|PUP|PJUMP,30H .WORD PFIRE,20H .WORD PCROUCH|PFIRE,20H .WORD 0,30H .WORD PRYTE|PDOWN,10H .WORD PRYTE,10H .WORD PLEFT|PCROUCH,1 .WORD PCROUCH|PFIRE,10H .WORD PJUMP|PFROCK,20H .WORD PDOWN|PLEFT,40H .WORD PRYTE|PCROUCH,1 .WORD PCROUCH|PFROCK,20H .WORD PLEFT,20H .WORD PUP,10H .WORD PRYTE,20H .WORD PRYTE|PUP|PFIRE,30H .WORD PRYTE,20H .WORD PLEFT|PCROUCH,1 .WORD PCROUCH|PFIRE,20H .WORD PJUMP|PDOWN|PRYTE,20H .WORD 0,30H .WORD 0FFFFH AWAV3MOV .WORD PUP,20H .WORD PLEFT|PFIRE,10H .WORD PLEFT|PFROCK,10H .WORD PRYTE,5H .WORD PRYTE|PFROCK,10H .WORD PRYTE|PFIRE,10H .WORD PRYTE|PDOWN,38H .WORD PRYTE,50H .WORD PRYTE|PJUMP,20H .WORD PRYTE,60H .WORD PLEFT,30H .WORD PCROUCH,5 .WORD PFIRE|PLEFT,20H .WORD PCROUCH,10H .WORD PRYTE,50H .WORD PRYTE|PFROCK,1H .WORD PRYTE|PUP,18H .WORD PRYTE|PDOWN,30H .WORD PRYTE|PUP,18H .WORD PJUMP,10H .WORD 0,30H .WORD PCROUCH|PFROCK,16H .WORD PCROUCH|PUP,10H .WORD PCROUCH|PRYTE,20H .WORD PJUMP|PFIRE,20H .WORD PDOWN|PLEFT,40H .WORD PRYTE|PCROUCH,1 .WORD PCROUCH|PFROCK,20H .WORD PLEFT,20H .WORD PUP,10H .WORD 0FFFFH AWAV6MOV .WORD PLEFT|PFIRE|PCROUCH|PUP,20H .WORD PDOWN,10H .WORD PCROUCH|PFROCK,10H .WORD 0,10H .WORD PRYTE|PFROCK,20H .WORD 0,2 .WORD PFROCK,20H .WORD 0,2 .WORD PJUMP,5H .WORD PFROCK,5H .WORD 0,10H .WORD PRYTE,20H .WORD PRYTE|PUP|PFIRE,30H .WORD PRYTE,20H .WORD PLEFT|PCROUCH,1 .WORD PCROUCH|PFIRE,20H .WORD PJUMP|PDOWN|PRYTE,20H .WORD 0,30H .WORD PCROUCH|PFROCK,16H .WORD PCROUCH|PUP,10H .WORD PCROUCH|PRYTE,20H .WORD PJUMP|PFIRE,20H .WORD PDOWN|PLEFT,40H .WORD PRYTE|PCROUCH,1 .WORD PCROUCH|PFROCK,20H .WORD PLEFT,20H .WORD PUP,10H .WORD PRYTE|PUP,20H .WORD PRYTE|PUP|PJUMP,30H .WORD PFIRE,20H .WORD PCROUCH|PFIRE,20H .WORD 0,30H .WORD PRYTE|PDOWN,10H .WORD PRYTE,10H .WORD PLEFT|PCROUCH,1 .WORD PCROUCH|PFIRE,10H .WORD PJUMP|PFROCK,20H .WORD PDOWN|PLEFT,40H .WORD PRYTE|PCROUCH,1 .WORD PCROUCH|PFROCK,20H .WORD PLEFT,20H .WORD PUP,10H .WORD PRYTE,20H .WORD PRYTE|PUP|PFIRE,30H .WORD 0FFFFH ************************************************************************** * * * ATTPSLP - ATTRACT MODE PLAYER SLEEP, CHECKS FOR DEATH EACH TICK * * A10 = # TICKS TO SLEEP * * A11 = PLINDX * * RETURNS: * * CARRY CLEAR = NOT DEAD YET * * CARRY SET = DEAD! * * NOTE: CALL WITH JSRP * * * ************************************************************************** ATTPSLP PUSHP A10 ATTPSLPL MOVE *A11(PFLAGS),A0,L BTST BDEAD,A0 JRNE ATTPSLPD ;BR = CAN IT, HE'S DEAD SLEEP 1 DSJS A10,ATTPSLPL CLRC JRUC ATTPSLPX ATTPSLPD SETC ATTPSLPX PULLP A10 RETP ************************************************************************** * * * AMODWAVE - INITIALIZE AN ATTRACT MODE WAVE: * * - MAKE BACKGROUND BLOCKS USING WAVE BGND INIT. TABLE * * - FIRE OFF ALL PROCESS USING WAVE PROC. INIT. TABLE * * CURRENT ATTRACT WAVE MUST BE INDICATED IN VARIABLE, AWAVE. * * IT IS ASSUMED THAT THE DISPLAYON FLAG IS CLEAR WHEN THIS IS CALLED. * * THIS ROUTINE WILL SET THAT FLAG BEFORE FINISHING. * * NOTE: CALL WITH JSRP * * * ************************************************************************** AMODWAVE MMTM A12,A8,A9,A10,A11 CLR A0 MOVE A0,@DISPLAYON,W CALLA DMAQWAIT CALLA CLR_SCRN CALLA MYOINIT CALLA WRAMINIT ;INITIALIZE WAVE RAM CALLA BBINIT CALLA GETWAVE ;SET UP WAVE DIFFICULTY PARAMS MOVK 1,A0 MOVE A0,@DISPLAYON,W *SET UP SCORE AREA CALLA P1LLINIT ;SEND OUT PLAYER ONE MOVI P1DATA,A11 CREATE P1PID|PMPID,PRESCONT MOVI P2DATA,A11 CREATE P2PID|PMPID,PRESCONT MOVI SCRNMID,A0 ;POINT FROM WHICH TO START THE EXPAND MOVE A0,@SCRNTL,L MOVE A0,@SCRNLR,L ;MAKE THE SCREEN WINDOW A POINT MOVI WAVEBGND,A10 MOVE @AWAVE,A0,W DEC A0 ;MAKE WAVE # 0 BASED SLL 28,A0 ;WAVE ONLY SIGNIFICANT TO 4 BITS RIGHT NOW SRL 23,A0 *** SLL 5,A0 MOVI BAKSTAKS,A1 MOVE A1,@BAKSTAKP,L ;INITIALIZE BACKGROUND STACK POINTER MOVI OBJSTAKS,A1 MOVE A1,@OBJSTAKP,L ;INITIALIZE OBJECT STACK POINTER ADD A0,A10 MOVE *A10,A10,L CALLA INITBGND ;INITIALIZE THE CURRENT BACKGROUND MOVE *A10+,A1,W ;AND THE SCROLL STOPPER MOVE A1,@GOALCARD,W CALLA GOALXFER ;TRANSFER GOAL DATA TO RAM BLOCK MOVI GOALDOOR,A14 CALLA INITFGND ;INITIALIZE THESE FORE GROUND DITTIES CALLA SCORAREA CREATE BGNDPID,BSCHKG ;CREATE THE SCROLL CHECKER CREATE BUPDPID,BBOFSCRN ;CREATE THE BACKGROUND UPDATE PROCESS **** CREATE INDPID,GAMEOTXT ;PUT UP THE "GAME OVER" TEXT MOVI 40,A0 MOVI SCRNST,A10 MOVI SCRNEND,A11 JSRP SCREXP32 ;EXPAND THE PLAYFIELD SCREEN MOVI 1000H,A9 CREATE SKYPID,SKYUP CREATE MASTERID,MASTERDP ;CREATE MASTER DISPATCH MOVK 2,A1 MOVE A1,@GAMERASE,W ;FULL SCREEN AUTO-ERASE MMFM A12,A8,A9,A10,A11 RETP .STRING "NNAARRCC CCOOPPYYRRIIGGHHTT ((CC)) 11998888 " .STRING "WWIILLLLIIAAMMSS EELLEECCTTRROONNIICCSS GGAAMMEESS,, IINNCC.." .EVEN