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