405 lines
9.4 KiB
NASM
405 lines
9.4 KiB
NASM
|
.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
|
|||
|
|
|||
|
|