986 lines
19 KiB
NASM
986 lines
19 KiB
NASM
|
.FILE 'SCORE.ASM'
|
|||
|
.TITLE 'SCORE STUFF FOR ROBO-RAMA GAME PROGRAM'
|
|||
|
.WIDTH 132
|
|||
|
.OPTION B,D,L,T
|
|||
|
.MNOLIST
|
|||
|
|
|||
|
;
|
|||
|
; INITIATED: MAY 6,1989
|
|||
|
; MODIFIED: !
|
|||
|
; SOFTWARE: MARK TURMELL
|
|||
|
;
|
|||
|
; COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC.
|
|||
|
;
|
|||
|
;
|
|||
|
; GET THE SYSTEM STUFF
|
|||
|
|
|||
|
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
|
|||
|
.INCLUDE "DISP.EQU" ;DISPLAY PROCESSOR EQUATES
|
|||
|
.INCLUDE "\VIDEO\SYS\SYS.INC" ;ZUNIT SYSTEM EQUATES
|
|||
|
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS, YEAH!
|
|||
|
.INCLUDE "IMGTBL.GLO"
|
|||
|
.INCLUDE "ROBO.EQU"
|
|||
|
.INCLUDE "LINK.EQU"
|
|||
|
;
|
|||
|
;SOUNDS
|
|||
|
;
|
|||
|
.REF FREEMAN,LOWSND,YAMOFF,FREESND
|
|||
|
;
|
|||
|
;SYMBOLS EXTERNALLY DEFINED
|
|||
|
;
|
|||
|
.REF LFCY,RFCY,LFACEP,RFACEP,LIVECNT,AUD1,SENDCRNR,KOFFC
|
|||
|
.REF GETFPAL,AFONT0,BLNKAREA,P1DATA,P2DATA,STATUS,XYSEEK2
|
|||
|
.REF STARTUP,OBJON,OBJOFF,CANT,OVERLAP
|
|||
|
.REF RD7FONT,RD15FONT,GAMSTATE,KILOBJ,DTIME,WNDO
|
|||
|
.REF STRNGLEN,DMAN,CR_STRTP,CR_CONTP,CCCC
|
|||
|
.REF GET_CREDITS,DMAQ,QDMAFLG ;FOR FILE SCORE USAGE
|
|||
|
.REF STRCNRMO
|
|||
|
.REF GETPRC,BEGINOBJ,BEGINOBJ2,HEXTOASC,STRLNRM,WORLDTL
|
|||
|
.REF WAVEYX,METERP1,METERP2,FRANIM,P1LVS,P2LVS
|
|||
|
.REF KILL
|
|||
|
.REF ICNFLG,FREETOT
|
|||
|
|
|||
|
|
|||
|
;
|
|||
|
;SYMBOLS DEFINED IN THIS FILE
|
|||
|
;
|
|||
|
.DEF AH,CNTDIG1,CNTDIG2,SET_1ST,FFLG
|
|||
|
;,AH2
|
|||
|
.DEF PDSIZE,MSG_PROC2,MSG_PROC,SCORETYP,SCORE_FLAG,METERS
|
|||
|
.DEF SCRADD2,INIT_SCORE,DRAW_SCORE,SCORE,SCRADD3
|
|||
|
.DEF DELSCORE,FSCORE,BSCORE,P1MTRY,P2MTRY,FILLUP
|
|||
|
.DEF EXTRA,FIXMETERS,FIXMETERS2,MTR1CNT,IS2,IS1
|
|||
|
;
|
|||
|
;UNINITIALIZED RAM DEFINITIONS
|
|||
|
;
|
|||
|
.BSS FFLG,8
|
|||
|
.BSS CNTDIG1,8
|
|||
|
.BSS CNTDIG2,8
|
|||
|
.BSS ADDSCR,16
|
|||
|
.BSS SCOUNT,16
|
|||
|
.BSS SCORETYP,16
|
|||
|
; .BSS MSGSET,16
|
|||
|
.BSS OLDCRD,16
|
|||
|
.BSS SCORE_FLAG,16
|
|||
|
.BSS BSCORE,16
|
|||
|
.BSS P1MTRY,16
|
|||
|
.BSS P2MTRY,16
|
|||
|
.BSS MTR1CNT,16 ;2 8 BIT POSITIONS FOR METER CNTRS
|
|||
|
;
|
|||
|
;EQUATES FIRST ORIGINATED IN THIS FILE
|
|||
|
;
|
|||
|
SCRSPC .EQU 12 ;SPACER FOR DIGITS (INCLUDING DIGIT)
|
|||
|
BPDMA1 .EQU 01
|
|||
|
BPDMA2 .EQU 02
|
|||
|
MSGSLP .EQU 52*1/4
|
|||
|
MSGSLP2 .EQU 52*2/4
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
.TEXT
|
|||
|
EXTRA:
|
|||
|
MMTM SP,A1,A2,A3,A4,A5,A6,A7
|
|||
|
MOVE *A0(OPLINK),A0,L
|
|||
|
MOVB *A0(PNUM),A4
|
|||
|
; MOVE A8,A0
|
|||
|
; CALLA DELOBJ
|
|||
|
MOVK 1,A0
|
|||
|
MOVB A0,@ICNFLG
|
|||
|
CALLR DO_EXTRA
|
|||
|
MOVB @FREETOT,A0
|
|||
|
INC A0
|
|||
|
MOVB A0,@FREETOT
|
|||
|
|
|||
|
MOVE A4,A9
|
|||
|
CALLA SENDCRNR
|
|||
|
CREATE FLYPID,KOFFC
|
|||
|
|
|||
|
MMFM SP,A1,A2,A3,A4,A5,A6,A7
|
|||
|
RETS
|
|||
|
|
|||
|
DO_EXTRA
|
|||
|
MMTM SP,A8,A7,A4
|
|||
|
MOVI P1DATA,A8
|
|||
|
MOVE @P1LVS,A7,L
|
|||
|
CMPI 1,A4
|
|||
|
JREQ CN
|
|||
|
;PLYR 2
|
|||
|
CMPI 2,A4
|
|||
|
JRNZ OUT2
|
|||
|
MOVI P2DATA,A8
|
|||
|
MOVE @P2LVS,A7,L
|
|||
|
CN MOVE *A8(PLIVES),A4,W ;GET NUMBER OF PLAYERS LIVES
|
|||
|
INC A4
|
|||
|
MOVE A4,*A8(PLIVES),W
|
|||
|
CMPI 10,A4
|
|||
|
JRGE OUT
|
|||
|
SLL 7,A4 ;*128 (NEXT HEADER PLEASE!!)
|
|||
|
ADDI AFONT0,A4 ;COMPUTE CORRECT HEADER
|
|||
|
MOVE A4,A1
|
|||
|
MOVE A7,A8
|
|||
|
MOVE *A8(OFLAGS),A4,W
|
|||
|
CALLA ANI
|
|||
|
OUT
|
|||
|
CREATE 0,YAMSND
|
|||
|
OUT2
|
|||
|
MMFM SP,A8,A7,A4
|
|||
|
RETS
|
|||
|
YAMSND
|
|||
|
;CHECK TO SEE IF IN RACKUP, IF SO, DO MUSICAL FREEMAN SND
|
|||
|
MOVB @CANT,A0
|
|||
|
JRNZ DIOUT ;REGMN
|
|||
|
; MOVI FREESND,A0 ;AUDIO EXTEND
|
|||
|
; CALLA ONESND
|
|||
|
; JRUC DIOUT
|
|||
|
;REGMN
|
|||
|
MOVI YAMOFF,A0
|
|||
|
CALLA ONESND
|
|||
|
SLEEP 2
|
|||
|
MOVI FREEMAN,A0 ;AUDIO EXTEND
|
|||
|
CALLA ONESND
|
|||
|
DIOUT
|
|||
|
MOVI AUDEXTRA,A0
|
|||
|
CALLA AUD1
|
|||
|
DIE
|
|||
|
|
|||
|
MTR1OR2 .LONG METERP1,METERP2
|
|||
|
FILLUP:
|
|||
|
;FILL UP THIS PLAYERS METER FROM EMPTY TO FULL
|
|||
|
;A10=PLAYERS PROC PTR WHO IS FILLING UP
|
|||
|
;
|
|||
|
; MOVK 1,A0
|
|||
|
; MOVB A1,@FFLG ;SOMEONE FILLING UP FLAG
|
|||
|
; MOVI WAVESND,A0
|
|||
|
; CALLA ONESND
|
|||
|
; CALLR KILLBEEP
|
|||
|
MOVE @METERP2,A8,L
|
|||
|
MOVB *A10(PNUM),A0
|
|||
|
DEC A0
|
|||
|
JRNZ TAG1
|
|||
|
MOVE @METERP1,A8,L
|
|||
|
TAG1
|
|||
|
MOVI FILLIN,A9
|
|||
|
MOVK 1,A1
|
|||
|
JSRP FRANIM
|
|||
|
;A10
|
|||
|
CALLA GETCNT
|
|||
|
MOVB *A10(PNUM),A0
|
|||
|
DEC A0
|
|||
|
SLL 3,A0
|
|||
|
ADDI MTR1CNT,A0 ;BASE OF METER CNT RAM
|
|||
|
MOVK 1,A1
|
|||
|
MOVB A1,*A0
|
|||
|
|
|||
|
CLR A1
|
|||
|
MOVB A1,@FFLG ;SOMEONE FILLING UP FLAG
|
|||
|
DIE
|
|||
|
|
|||
|
;KILLBEEP:
|
|||
|
; MOVI BEEPID,A0
|
|||
|
; CLR A1
|
|||
|
; NOT A1
|
|||
|
; JAUC KILALL ;KILL LOW ENERGY BEEPING PROCESS
|
|||
|
FILLIN:
|
|||
|
.LONG BOX6
|
|||
|
.WORD 6
|
|||
|
.LONG BOX5
|
|||
|
.WORD 6
|
|||
|
.LONG BOX4
|
|||
|
.WORD 6
|
|||
|
.LONG BOX3
|
|||
|
.WORD 6
|
|||
|
.LONG BOX2
|
|||
|
.WORD 6
|
|||
|
.LONG BOX1
|
|||
|
.WORD 6
|
|||
|
.LONG 0
|
|||
|
|
|||
|
METERS:
|
|||
|
;CK FOR PLAYER #
|
|||
|
;A10=PLAYER PROC PTR WHO IS METERING DOWN
|
|||
|
MOVB @FFLG,A0 ;ANYBODY FILLING UP FLAG
|
|||
|
JRNZ RY
|
|||
|
MOVB *A10(PNUM),A0
|
|||
|
DEC A0
|
|||
|
SLL 3,A0
|
|||
|
MOVI MTR1CNT,A2
|
|||
|
ADD A0,A2
|
|||
|
MOVB *A2,A1
|
|||
|
INC A1
|
|||
|
CMPI 8,A1
|
|||
|
JRLT DAD
|
|||
|
MOVK 7,A1
|
|||
|
DAD
|
|||
|
MOVB A1,*A2
|
|||
|
PUSH A1
|
|||
|
SLL 2,A0
|
|||
|
ADDI MTR1OR2,A0
|
|||
|
SLL 5,A1
|
|||
|
ADDI METRS,A1
|
|||
|
MOVE *A1,A1,L
|
|||
|
PUSH A8
|
|||
|
MOVE *A0,A8,L
|
|||
|
MOVE *A8,A8,L
|
|||
|
; MOVE @METERP1,A8,L
|
|||
|
MOVE *A8(OFLAGS),A4,W
|
|||
|
CALLA ANI
|
|||
|
PULL A8
|
|||
|
PULL A1
|
|||
|
; MOVB @MTR1CNT,A0
|
|||
|
CMPI 7,A1
|
|||
|
JREQ STP
|
|||
|
CMPI 5,A1
|
|||
|
JRNZ GETCNT
|
|||
|
|
|||
|
MOVI LOWSND,A0
|
|||
|
CALLA ONESND
|
|||
|
|
|||
|
; CREATE BEEPID,MRBEEP
|
|||
|
GETCNT:
|
|||
|
MOVE *A10(WPN_TYP),A0
|
|||
|
SLL 4,A0
|
|||
|
ADDI TIMERS,A0
|
|||
|
MOVE *A0,A0,W
|
|||
|
MOVE A0,*A10(SHOTCNT)
|
|||
|
RY RETS
|
|||
|
FIXMETERS:
|
|||
|
SLEEP 1
|
|||
|
MOVB @MTR1CNT,A0
|
|||
|
SLL 5,A0
|
|||
|
ADDI METRS,A0
|
|||
|
MOVE *A0,A1,L
|
|||
|
MOVE @METERP1,A8,L
|
|||
|
MOVE *A8(OFLAGS),A4,W
|
|||
|
CALLA ANI
|
|||
|
; CALLR GETCNT
|
|||
|
DIE
|
|||
|
FIXMETERS2:
|
|||
|
SLEEP 1
|
|||
|
MOVB @MTR1CNT+8,A0
|
|||
|
SLL 5,A0
|
|||
|
ADDI METRS,A0
|
|||
|
MOVE *A0,A1,L
|
|||
|
MOVE @METERP2,A8,L
|
|||
|
MOVE *A8(OFLAGS),A4,W
|
|||
|
CALLA ANI
|
|||
|
; CALLR GETCNT
|
|||
|
DIE
|
|||
|
|
|||
|
STP:
|
|||
|
; CALLR KILLBEEP
|
|||
|
CLR A0
|
|||
|
MOVE A0,*A10(WPN_TYP),W
|
|||
|
RETS
|
|||
|
;MRBEEP:
|
|||
|
; MOVI BEEPLO,A0
|
|||
|
; CALLA ONESND
|
|||
|
; SLOOP 24,MRBEEP
|
|||
|
; DIE
|
|||
|
|
|||
|
;SUBLZR .EQU 000H ;REGULAR LAZER SHOTS
|
|||
|
;SUBSPRY .EQU 0001H ;SPRAY SUB TYPE
|
|||
|
;SUBSPEW .EQU 0002H ;SPEW TYPE WEAPON (3)
|
|||
|
;SUBGRND .EQU 0003H ;GRENADE
|
|||
|
;SUBNOSTP .EQU 0004H ;NON STOPPING BULLET
|
|||
|
|
|||
|
TIMERS: .WORD 100,6,10,4,7,11,8,8 ;WEAPON 0,1,2,3,4 ETC
|
|||
|
METRS .LONG BOX7,BOX1,BOX2,BOX3,BOX4,BOX5,BOX6,BOX7
|
|||
|
|
|||
|
IS2 MOVI P2DATA,A11
|
|||
|
MOVI [35H,111H],A3
|
|||
|
JRUC IS3
|
|||
|
IS1
|
|||
|
MOVI P1DATA,A11
|
|||
|
MOVI [35H,24H],A3
|
|||
|
IS3 CLR A0
|
|||
|
MOVE A0,*A11(SCRCNT),L
|
|||
|
MOVE A0,*A11(SCRSUB),L
|
|||
|
MOVE A3,*A11(PSCRAD),L ;Y,X LOCATION OF SCORE 1
|
|||
|
RETS
|
|||
|
INIT_SCORE:
|
|||
|
CALLR IS1
|
|||
|
; MOVE A0,*A11(PSCORE),L
|
|||
|
MOVE @GAMSTATE,A0
|
|||
|
CMPI INAMODE,A0
|
|||
|
JRZ DOP1MSG
|
|||
|
; MOVE @MSGSET,A0
|
|||
|
MOVE @STATUS,A0
|
|||
|
SRL 1,A0
|
|||
|
JRC NOMSG1
|
|||
|
DOP1MSG:
|
|||
|
CREATE P1PID,MSG_PROC ;ALWAYS DISPLAY START STUFF IN ATTRACT
|
|||
|
NOMSG1:
|
|||
|
CALLR IS2
|
|||
|
; MOVE A0,*A11(PSCORE),L
|
|||
|
MOVE @GAMSTATE,A0
|
|||
|
CMPI INAMODE,A0
|
|||
|
JRZ DOP2MSG
|
|||
|
; MOVE @MSGSET,A0
|
|||
|
MOVE @STATUS,A0
|
|||
|
SRL 2,A0
|
|||
|
JRC NOMSG2
|
|||
|
DOP2MSG:
|
|||
|
CREATE P2PID,MSG_PROC ;ALWAYS DISPLAY START STUFF IN ATTRACT
|
|||
|
NOMSG2:
|
|||
|
CREATE SCOREPID,SCORE
|
|||
|
RETS
|
|||
|
SCORE:
|
|||
|
MOVI P1DATA,A2 ;UPDATE PLAYER 1
|
|||
|
CALLA MOVER
|
|||
|
MOVI P2DATA,A2 ;UPDATE PLAYER 2
|
|||
|
CALLA MOVER
|
|||
|
NODICE:
|
|||
|
SLEEP 10 ;4 ;5! ;7!
|
|||
|
JRUC SCORE
|
|||
|
;
|
|||
|
; MOVER-COUNT UP TO SCORE SPECIFIED IN SCRCNT
|
|||
|
;
|
|||
|
MOVER:
|
|||
|
MOVE *A2(SCRCNT),A4,L ;MOVE SCORE TO ADD INTO A1
|
|||
|
JRZ BYEALL ;NO SCORE SO EXIT
|
|||
|
MOVE *A2(SCRSUB),A0,L ;PRESENT BCD COUNT-UP
|
|||
|
MOVE @ADDSCR,A1,W ;ADD SCORE (ADDSCR+) AT A TIME
|
|||
|
CALLA BCDADD ;BCD PRODUCT IN A0
|
|||
|
CMP A4,A0 ;COUNT_UP MORE THAN AMOUNT TO ADD?
|
|||
|
JRHI PRFCT ;ALL DONE BYE!
|
|||
|
MOVE A0,*A2(SCRSUB),L ;UPDATE BCD COUNT-UP
|
|||
|
MOVE @ADDSCR,A1,W ;GET TOTAL AMOUNT PER ADD
|
|||
|
JRUC ESCAPE1 ;DO IT
|
|||
|
PRFCT:
|
|||
|
CLR A0
|
|||
|
MOVE A0,*A2(SCRCNT),L ;ZERO SCORE AMOUNT TO ADD
|
|||
|
MOVE A0,*A2(SCRSUB),L ;ZERO COUNTER
|
|||
|
JRUC BYEALL ;ALWAYS
|
|||
|
ESCAPE1:
|
|||
|
MOVE *A2(PSCORE),A0,L ;MOVE IN PLAYERS CURRENT SCORE
|
|||
|
CALLA BCDADD ;ADD CONTENTS OF A1 TO SCORE
|
|||
|
MOVE A0,*A2(PSCORE),L ;REVISED SCORE
|
|||
|
BYEALL:
|
|||
|
RETS
|
|||
|
;
|
|||
|
;DRAW_SCORE-UPDATE PLAYER 1 & 2 SCORE
|
|||
|
;
|
|||
|
;A2=PLAYER DATA STRUCTURE
|
|||
|
;
|
|||
|
DRAW_SCORE:
|
|||
|
MOVI AFONT0,A12
|
|||
|
MOVI SCRSPC,A8 ;SPACING BETWEEN DIGITS
|
|||
|
MOVI DMAWNZ,A5 ;CONTROL REGISTER
|
|||
|
;DRAW 1 BITS ONLY
|
|||
|
UPDSLP1:
|
|||
|
MOVI P1DATA,A9
|
|||
|
MOVE @SCORETYP,A0
|
|||
|
JRNZ PUTSCORE
|
|||
|
RETS ;0=NO SCORES 1=1 PLYR 2=2PLYR >3=BOTH
|
|||
|
|
|||
|
PUTSCORE:
|
|||
|
CMPI 1,A0
|
|||
|
JRZ OUTSCR
|
|||
|
CHK1BIT:
|
|||
|
CMPI 2,A0
|
|||
|
JRZ UPDSLP2
|
|||
|
;BOTH PLAYERS
|
|||
|
CALLR OUTSCR
|
|||
|
UPDSLP2:
|
|||
|
MOVI P2DATA,A9 ;BASE TABLE PLAYER 2
|
|||
|
;
|
|||
|
;OUTPUT SCORE TO SCREEN
|
|||
|
;A0=CURRENT PLAYER SCORE
|
|||
|
;A9=PLINDX=PLAYER DATA AREA
|
|||
|
;
|
|||
|
OUTSCR:
|
|||
|
MOVK 8,A6 ;DIGIT COUNT
|
|||
|
MOVE *A9(PSCRAD),A3,L ;PLAYER SCORE ADDRESS
|
|||
|
;
|
|||
|
MOVI >0101,A1
|
|||
|
MOVE *A9(PSCORE),A0,L ;PLAYER SCORE IN BCD FORM
|
|||
|
OUTSCL:
|
|||
|
MOVE A0,A14
|
|||
|
SRL 28,A14 ;NEXT DIGIT VALUE INTO LOWEST 4 BITS
|
|||
|
SLL 7,A14 ;*128 (NEXT HEADER PLEASE!!)
|
|||
|
ADD A12,A14 ;BASE ADDRESS OF IMAGE HEADER
|
|||
|
|
|||
|
*A1: CONSTANT COLOR:PALETTE
|
|||
|
*A3: DESTINATION Y:X
|
|||
|
*A5: OFFSET:CONTROL
|
|||
|
*A14: ADDRESS OF IMAGE HEADER
|
|||
|
*GETS: A2=H/W; A4=SAG
|
|||
|
MOVE *A14,A2,L ;GET VSIZE:HSIZE
|
|||
|
MOVE *A14(ISAG),A4,L ;GET SAG
|
|||
|
MOVE @QDMAFLG,A13,W ;IS Q BEING MODIFIED?
|
|||
|
JRNZ OUTSCRX
|
|||
|
MOVK 1,A13
|
|||
|
MOVE A13,@QDMAFLG,W ;Q BEING MODIFIED
|
|||
|
MOVE @DMAQCUR,A13,L
|
|||
|
CMPI DMAQ,A13
|
|||
|
JRLS OUTSCRX ;Q OVERLOAD, CAN IT
|
|||
|
MMTM A13,A1,A2,A3,A4,A5
|
|||
|
MOVE A13,@DMAQCUR,L
|
|||
|
CLR A13
|
|||
|
MOVE A13,@QDMAFLG,W
|
|||
|
|
|||
|
ADDXY A8,A3 ;ADD SPACE AFTER DIGIT
|
|||
|
SLL 4,A0 ;NEXT DIGIT PLEASE!
|
|||
|
DSJ A6,OUTSCL
|
|||
|
OUTSCRX:
|
|||
|
RETS
|
|||
|
SET_1ST
|
|||
|
;A11=P1 OR P2DATA AREA
|
|||
|
MMTM SP,A0,A1
|
|||
|
CLR A0
|
|||
|
MOVI >500000,A1 ;FIRST FREE MAN AT 500000
|
|||
|
CALLR BCDADD
|
|||
|
MOVE A0,*A11(PNEXTREP),L
|
|||
|
MMFM SP,A0,A1
|
|||
|
RETS
|
|||
|
;
|
|||
|
;SCRADD2-ADD BCD (8 DIGIT) AMOUNT TO PLAYERS SCORE
|
|||
|
;A1=AMOUNT TO ADD (8 DIGIT BCD)
|
|||
|
;
|
|||
|
SCRADD3
|
|||
|
;ENTRY POINT FOR BONUS RACKUP
|
|||
|
MMTM SP,A4
|
|||
|
MOVE *A2(PSCORE),A0,L ;GET SCORE
|
|||
|
CALLR BCDADD ;ADD IN NEW VALUE
|
|||
|
JRUC ONEPLYR
|
|||
|
SCRADD2:
|
|||
|
MMTM SP,A4
|
|||
|
MOVE @GAMSTATE,A0
|
|||
|
CMPI INAMODE,A0
|
|||
|
JREQ RT
|
|||
|
MOVE *A2(PSCORE),A0,L ;GET SCORE
|
|||
|
CALLR BCDADD ;ADD IN NEW VALUE
|
|||
|
MOVE @STATUS,A4
|
|||
|
;CHECK TO SEE IF WE WANT TO DOUBLE SCORES FOR TWO PLAYER GAME
|
|||
|
CMPI 3,A4
|
|||
|
JRNZ ONEPLYR
|
|||
|
CALLR BCDADD ;ADD IN NEW VALUE
|
|||
|
;TWO PLAYER GAME
|
|||
|
ONEPLYR MOVE A0,*A2(PSCORE),L ;STUFF IT
|
|||
|
MOVE *A2(PNEXTREP),A1,L ;GET NEXT FREE MAN SCORE POINT
|
|||
|
CMP A1,A0
|
|||
|
JRLO RT
|
|||
|
;GIVE PLAYER EXTRA LIFE
|
|||
|
MOVE A1,A0
|
|||
|
MOVI >1500000,A1 ;ADDITIONAL MEN
|
|||
|
CALLR BCDADD
|
|||
|
MOVE A0,*A2(PNEXTREP),L
|
|||
|
MOVK 1,A4
|
|||
|
CMPI P1DATA,A2
|
|||
|
JREQ RT0
|
|||
|
CMPI P2DATA,A2
|
|||
|
JRNZ RT
|
|||
|
MOVK 2,A4
|
|||
|
RT0
|
|||
|
CALLR DO_EXTRA
|
|||
|
RT
|
|||
|
MMFM SP,A4
|
|||
|
ANRT RETS
|
|||
|
;
|
|||
|
;SCRADD-ADD BCD (4 DIGIT) AMOUNT TO PLAYERS SCORE
|
|||
|
;A1,[Y,X]
|
|||
|
;Y HALF IS THE AMOUNT TO ADD (4 DIGIT BCD)
|
|||
|
;X HALF IS MULTIPLE FOR COUNT-UP
|
|||
|
;Y HALF MUST BE EVENLY DIVISIBLE BY X HALF
|
|||
|
;SCRADD:
|
|||
|
; MOVE A1,@ADDSCR,W ;MULTIPLE FOR SCORE ADD
|
|||
|
; SRL 16,A1 ;MOVE SCORE TO ADD INTO WORD
|
|||
|
; MOVE *A2(SCRCNT),A0,L ;COUNT ALREADY STORED
|
|||
|
; CALLR BCDADD ;ADD NEW VALUE (IN BCD)
|
|||
|
; MOVE A0,*A2(SCRCNT),L ;TO NEW TOTAL
|
|||
|
; RETS
|
|||
|
;
|
|||
|
;BCD ADD ROUTINE
|
|||
|
;A0=SCORE (8 DIGIT BCD) 32 BITS
|
|||
|
;A1=NUMBER TO ADD TO A0 (8 DIGIT BCD)
|
|||
|
;PACKED BCD FORMAT 4-BITS/ DIGIT
|
|||
|
;
|
|||
|
BCDADD:
|
|||
|
|
|||
|
;NEED ALL THESE MMTM'S?
|
|||
|
MMTM SP,A1,A3,A4,A5,A6
|
|||
|
MOVK 8,A5 ;DO 8 DIGITS
|
|||
|
CLRC ;CLEAR THE CARRY
|
|||
|
MOVK >0A,A6
|
|||
|
BCDLP:
|
|||
|
MOVK >0F,A3
|
|||
|
MOVK >0F,A4
|
|||
|
AND A1,A3 ;MASK GARBAGE
|
|||
|
AND A0,A4 ;TRANSFER
|
|||
|
ADDC A3,A4
|
|||
|
CMP A6,A4 ;NEED TO ADJUST? (PAST 9 DEC.)
|
|||
|
JRLO BCDAD1 ;NO. THEN ADD
|
|||
|
ADDK 6,A4 ;RETURN NUMBER TO 0
|
|||
|
SRL 4,A0 ;
|
|||
|
SLL 28,A4
|
|||
|
ADD A4,A0
|
|||
|
SRL 4,A1
|
|||
|
SETC ;SET CARRY
|
|||
|
DSJS A5,BCDLP ;DO ALL 8 DIGITS
|
|||
|
JRUC BCDADX ;UNSTACK REGISTERS
|
|||
|
BCDAD1:
|
|||
|
SRL 4,A0
|
|||
|
SLL 28,A4
|
|||
|
ADD A4,A0
|
|||
|
SRL 4,A1
|
|||
|
CLRC
|
|||
|
DSJS A5,BCDLP
|
|||
|
BCDADX:
|
|||
|
MMFM SP,A1,A3,A4,A5,A6
|
|||
|
RETS
|
|||
|
CNTDWN:
|
|||
|
;TAKE FACE AWAY, AND DISPLAY LARGE FONT DIGIT WITH COLOR CYCLE
|
|||
|
;DISPLAY A COUNTDOWN
|
|||
|
CREATE 0,OVERLAP
|
|||
|
MOVI 0FFF0H,A0
|
|||
|
CMPI P1DATA,A11
|
|||
|
JRNE V1
|
|||
|
MOVE @LFACEP,A8,L
|
|||
|
MOVE A0,*A8(OYPOS)
|
|||
|
MOVK 10,A0
|
|||
|
MOVB A0,@CNTDIG1
|
|||
|
MOVE @STATUS,A0
|
|||
|
ANDI 2,A0
|
|||
|
MOVE A0,@STATUS
|
|||
|
MOVE A0,@STARTUP
|
|||
|
CREATE DG1PID,DIGIT1
|
|||
|
JRUC V2
|
|||
|
V1
|
|||
|
MOVE @RFACEP,A8,L
|
|||
|
MOVE A0,*A8(OYPOS)
|
|||
|
MOVK 10,A0
|
|||
|
MOVB A0,@CNTDIG2
|
|||
|
MOVE @STATUS,A0
|
|||
|
ANDI 1,A0
|
|||
|
MOVE A0,@STATUS
|
|||
|
MOVE A0,@STARTUP
|
|||
|
CREATE DG2PID,DIGIT2
|
|||
|
V2
|
|||
|
DIE
|
|||
|
DIGIT2
|
|||
|
;DO DIGIT CNT
|
|||
|
;TURN ON NEW CNTR OBJECT
|
|||
|
MOVE @P2LVS,A0,L
|
|||
|
; CALLA OBJOFF
|
|||
|
MOVE *A0(OYPOS),A1
|
|||
|
XORI 0F00H,A1
|
|||
|
MOVE A1,*A0(OYPOS)
|
|||
|
|
|||
|
MOVB @CNTDIG2,A0
|
|||
|
ANDI 0FH,A0
|
|||
|
SLL 5,A0
|
|||
|
ADDI NUMBS,A0
|
|||
|
MOVE *A0,A2,L ;GET IMAGE
|
|||
|
|
|||
|
MOVE @RFACEP,A1,L
|
|||
|
MOVE *A1(OXVAL),A0,L
|
|||
|
MOVE @RFCY,A1
|
|||
|
ADDI 12,A1
|
|||
|
SLL 16,A1 ;GET Y
|
|||
|
MOVI CLSNEUT|TYPTEXT|SUBDG2I,A5
|
|||
|
MOVI 260,A3
|
|||
|
MOVI DMACNZ,A4 ;CONSTANT COLOR NON-ZERO
|
|||
|
CLR A6
|
|||
|
CLR A7
|
|||
|
CALLA BEGINOBJ2
|
|||
|
MOVI >3E3E0000,A0 ;COLOR NUMBER TO CYCLE
|
|||
|
MOVE A0,*A8(OPAL),L
|
|||
|
|
|||
|
HG2 SLEEP 60
|
|||
|
MOVB @CNTDIG2,A0
|
|||
|
ANDI 0FH,A0
|
|||
|
DEC A0
|
|||
|
MOVB A0,@CNTDIG2
|
|||
|
JRLE DV72
|
|||
|
SLL 5,A0
|
|||
|
ADDI NUMBS,A0
|
|||
|
MOVE *A0,A1,L ;GET IMAGE
|
|||
|
MOVE *A8(OFLAGS),A4,W
|
|||
|
CALLA ANI
|
|||
|
JRUC HG2
|
|||
|
DV72
|
|||
|
MOVE @STATUS,A1
|
|||
|
ANDI 1,A1
|
|||
|
MOVE A1,@STATUS
|
|||
|
MOVE A1,@STARTUP
|
|||
|
MOVE @P2LVS,A0,L
|
|||
|
JRUC DV8
|
|||
|
|
|||
|
NUMBS .LONG FON150,FON150,FON151,FON152,FON153,FON154,FON155,FON156,FON157
|
|||
|
.LONG FON158,FON159
|
|||
|
.LONG FON159,FON159,FON159,FON159,FON159,FON159,FON159,FON159
|
|||
|
DIGIT1
|
|||
|
;DO DIGIT CNT
|
|||
|
;TURN ON NEW CNTR OBJECT
|
|||
|
MOVE @P1LVS,A0,L
|
|||
|
; CALLA OBJOFF
|
|||
|
MOVE *A0(OYPOS),A1
|
|||
|
XORI 0F00H,A1
|
|||
|
MOVE A1,*A0(OYPOS)
|
|||
|
|
|||
|
MOVB @CNTDIG1,A0
|
|||
|
ANDI 0FH,A0
|
|||
|
SLL 5,A0
|
|||
|
ADDI NUMBS,A0
|
|||
|
MOVE *A0,A2,L ;GET IMAGE
|
|||
|
|
|||
|
MOVE @LFACEP,A1,L
|
|||
|
MOVE *A1(OXVAL),A0,L
|
|||
|
MOVE @LFCY,A1
|
|||
|
ADDI 12,A1
|
|||
|
SLL 16,A1 ;GET Y
|
|||
|
MOVI CLSNEUT|TYPTEXT|SUBDG1I,A5
|
|||
|
; MOVI CLSNEUT|TYPNEUT,A5
|
|||
|
MOVI 260,A3
|
|||
|
MOVI DMACNZ,A4 ;CONSTANT COLOR NON-ZERO
|
|||
|
CLR A6
|
|||
|
CLR A7
|
|||
|
CALLA BEGINOBJ2
|
|||
|
MOVI >3E3E0000,A0 ;COLOR NUMBER TO CYCLE
|
|||
|
MOVE A0,*A8(OPAL),L
|
|||
|
|
|||
|
HG SLEEP 60
|
|||
|
MOVB @CNTDIG1,A0
|
|||
|
ANDI 0FH,A0
|
|||
|
DEC A0
|
|||
|
MOVB A0,@CNTDIG1
|
|||
|
JRLE DV7
|
|||
|
SLL 5,A0
|
|||
|
ADDI NUMBS,A0
|
|||
|
MOVE *A0,A1,L ;GET IMAGE
|
|||
|
MOVE *A8(OFLAGS),A4,W
|
|||
|
CALLA ANI
|
|||
|
JRUC HG
|
|||
|
DV7
|
|||
|
MOVE @STATUS,A1
|
|||
|
ANDI 2,A1
|
|||
|
MOVE A1,@STATUS
|
|||
|
MOVE A1,@STARTUP
|
|||
|
MOVE @P1LVS,A0,L
|
|||
|
DV8
|
|||
|
; CALLA OBJON
|
|||
|
MOVE *A0(OYPOS),A1
|
|||
|
XORI 0F00H,A1
|
|||
|
MOVE A1,*A0(OYPOS)
|
|||
|
|
|||
|
MOVE A8,A0
|
|||
|
CALLA DELOBJ
|
|||
|
CLR A0
|
|||
|
MOVE A0,*A11(PLIVES)
|
|||
|
CMPI P1DATA,A11
|
|||
|
JRNE V3
|
|||
|
MOVE @LFCY,A0
|
|||
|
MOVE @LFACEP,A1,L
|
|||
|
MOVE A0,*A1(OYPOS)
|
|||
|
JRUC V4
|
|||
|
V3
|
|||
|
MOVE @RFCY,A0
|
|||
|
MOVE @RFACEP,A1,L
|
|||
|
MOVE A0,*A1(OYPOS)
|
|||
|
V4
|
|||
|
MOVK 2,A0 ;INDICATE KILL OFF PLAYER PRC ETC
|
|||
|
MOVB A0,*A11(CNTD)
|
|||
|
CALLA LIVECNT
|
|||
|
DIE
|
|||
|
|
|||
|
MSG_PROC2:
|
|||
|
;BOTH PLAYERS ARE PLAYING!
|
|||
|
;CHANGE MESSAGE ON HIS SCOREBOARD/PLUS STILL SHOW PLAYER SCORE!
|
|||
|
;COLOR CYCLE IT
|
|||
|
SLEEP 30
|
|||
|
MOVE A11,A2
|
|||
|
CREATE 0,CNTDWN
|
|||
|
JRUC DO_MSGS
|
|||
|
;
|
|||
|
; MSG_PROC - ALTERNATE BETWEEN PRESS START X TO PLAY/CONTINUE
|
|||
|
; INSERT COIN TO PLAY/CONTINUE
|
|||
|
; PARAMS:
|
|||
|
; A11 = PTR TO PLAYER DATA STRUCTURE
|
|||
|
;
|
|||
|
MSG_PROC:
|
|||
|
MOVE A11,A2
|
|||
|
PRESSLP:
|
|||
|
MOVE @GAMSTATE,A0
|
|||
|
CMPI ININTRO,A0
|
|||
|
JRNZ DO_GO
|
|||
|
DO_NADA:
|
|||
|
SLOOP 1,PRESSLP
|
|||
|
DO_GO:
|
|||
|
CMPI P2DATA,A11
|
|||
|
JRZ PMSG2
|
|||
|
;PUT P1 METER ON SCREEN
|
|||
|
MOVE @METERP1,A0,L
|
|||
|
MOVE @P1MTRY,A1,W
|
|||
|
MOVE A1,*A0(OYPOS),W
|
|||
|
MOVE @SCORETYP,A0,W ;TURN ON PLAYER 1 SCORE
|
|||
|
ORI 1,A0
|
|||
|
MOVE A0,@SCORETYP,W
|
|||
|
MOVI CLSNEUT|TYPTEXT|SUBP1TXT,A0
|
|||
|
JRUC DOSCRE1
|
|||
|
PMSG2:
|
|||
|
;PUT P2 METER ON SCREEN
|
|||
|
MOVE @METERP2,A0,L
|
|||
|
MOVE @P2MTRY,A1,W
|
|||
|
MOVE A1,*A0(OYPOS),W
|
|||
|
MOVE @SCORETYP,A0,W ;TURN ON PLAYER 2 SCORE
|
|||
|
ORI 2,A0
|
|||
|
MOVE A0,@SCORETYP,W
|
|||
|
|
|||
|
MOVI CLSNEUT|TYPTEXT|SUBP2TXT,A0
|
|||
|
DOSCRE1:
|
|||
|
CLR A1
|
|||
|
NOT A1
|
|||
|
CALLA KILOBJ ;CLEAR PLAYER MESSAGE
|
|||
|
|
|||
|
MOVI MSGSLP,A9
|
|||
|
WLUP1:
|
|||
|
MOVE @GAMSTATE,A0
|
|||
|
CMPI ININTRO,A0
|
|||
|
JRZ DO_NADA
|
|||
|
SLEEP 4 ;1
|
|||
|
DSJS A9,WLUP1
|
|||
|
;
|
|||
|
DO_MSGS:
|
|||
|
CALLA CCCC ;MAKE SURE THINGS ARE INTACT
|
|||
|
CALLA GET_CREDITS ;GET CURRENT CREDITS
|
|||
|
MOVE A0,@OLDCRD,W ;AND SAVE THEM AS PREVIOUS CREDITS
|
|||
|
CALLR AH
|
|||
|
|
|||
|
MOVB *A11(CNTD),A0
|
|||
|
JRNZ CB
|
|||
|
MOVE *A11(PSCORE),A0,L
|
|||
|
JRZ PRESSTRT ;NO SCORE, THIS IS A NEW START
|
|||
|
MOVE @GAMSTATE,A0,W
|
|||
|
CMPI INGAMEOV,A0
|
|||
|
JREQ PRESSTRT
|
|||
|
CMPI INAMODE,A0
|
|||
|
JREQ PRESSTRT
|
|||
|
|
|||
|
CB CALLA CR_CONTP ;CONTINUATION
|
|||
|
JRLO INSCONT ;NOT ENOUGH FOR THE CONTINUE
|
|||
|
JRUC PRESSTOC
|
|||
|
PRESSTRT:
|
|||
|
CALLA CR_STRTP
|
|||
|
JRLO INSCONT ;NOT ENUFF TO START THIS GUY
|
|||
|
;
|
|||
|
; OUTPUT "PRESS START 1" OR "PRESS START 2" ON TOP HALF
|
|||
|
;
|
|||
|
PRESSTOC:
|
|||
|
MOVE A11,A2
|
|||
|
MOVK STRT1MSG,A3 ;"PRESS START 1"
|
|||
|
CMPI P1DATA,A11
|
|||
|
JREQ PRESCON1
|
|||
|
PRESCONA:
|
|||
|
MOVK STRT2MSG,A3 ;"PRESS START 2"
|
|||
|
PRESCON1:
|
|||
|
CALLA PUTMSG
|
|||
|
JRUC NEXT1
|
|||
|
AH
|
|||
|
CMPI P2DATA,A11
|
|||
|
JRZ CLRSCRE2
|
|||
|
MOVE @SCORETYP,A0,W ;TURN OFF PLAYER 1 SCORE
|
|||
|
ANDI 0FFFEH,A0
|
|||
|
MOVE A0,@SCORETYP,W
|
|||
|
;TAKE AWAY P1 METER
|
|||
|
MOVE @METERP1,A0,L
|
|||
|
MOVI 0FFF0H,A1
|
|||
|
MOVE A1,*A0(OYPOS),W
|
|||
|
JRUC DOINTRO
|
|||
|
CLRSCRE2:
|
|||
|
MOVE @SCORETYP,A0,W ;TURN OFF PLAYER 2 SCORE
|
|||
|
ANDI 0FFFDH,A0
|
|||
|
MOVE A0,@SCORETYP,W
|
|||
|
;TAKE AWAY P2 METER
|
|||
|
MOVE @METERP2,A0,L
|
|||
|
MOVI 0FFF0H,A1
|
|||
|
MOVE A1,*A0(OYPOS),W
|
|||
|
DOINTRO:
|
|||
|
; MOVB @WNDO,A0
|
|||
|
RETS
|
|||
|
;AH2
|
|||
|
;
|
|||
|
;OUTPUT PLAYER STANDBY MESSAGE
|
|||
|
;
|
|||
|
; MOVK PLAYER1M,A3
|
|||
|
; CMPI P1DATA,A11
|
|||
|
; JREQ PRESSBMA
|
|||
|
; MOVK PLAYER2M,A3
|
|||
|
;PRESSBMA:
|
|||
|
; CALLA PUTMSG ;"PLAYER X"
|
|||
|
; MOVK STANDBYM,A3 ;"STANDBY"
|
|||
|
; CALLA PUTMSG
|
|||
|
; RETS
|
|||
|
|
|||
|
;
|
|||
|
; OUTPUT "INSERT COIN" ON TOP HALF
|
|||
|
;
|
|||
|
INSCONT:
|
|||
|
MOVE A11,A2
|
|||
|
CLR A3 ;"INSERT COIN"
|
|||
|
CALLA PUTMSG
|
|||
|
;
|
|||
|
; START OF NEXT MESSAGE
|
|||
|
;
|
|||
|
NEXT1:
|
|||
|
;
|
|||
|
; OUTPUT "TO CONTINUE" OR "TO PLAY" ON THE BOTTOM HALF
|
|||
|
;
|
|||
|
MOVB *A11(CNTD),A0
|
|||
|
JRNZ CB2
|
|||
|
MOVE A11,A2
|
|||
|
JRUC TOPLAY
|
|||
|
|
|||
|
; MOVE *A11(PSCORE),A0,L
|
|||
|
; JRZ TOPLAY ;NO SCORE, THIS IS A NEW START
|
|||
|
; MOVE @GAMSTATE,A0,W
|
|||
|
; CMPI INGAMEOV,A0
|
|||
|
; JREQ TOPLAY
|
|||
|
; CMPI INAMODE,A0
|
|||
|
; JREQ TOPLAY
|
|||
|
CB2 MOVK CONTMSG,A3 ;"TO CONTINUE"
|
|||
|
CALLA PUTMSG
|
|||
|
JRUC NEXT2
|
|||
|
TOPLAY:
|
|||
|
MOVK PLAYMSG,A3 ;"TO PLAY"
|
|||
|
CALLA PUTMSG
|
|||
|
NEXT2:
|
|||
|
MOVI MSGSLP2,A9 ;CHECK IF COIN DROP STATUS HAS CHANGED
|
|||
|
CRDLUP:
|
|||
|
CALLA CCCC ;MAKE SURE THINGS ARE IN TACT
|
|||
|
CALLA GET_CREDITS ;GET CURRENT CREDITS
|
|||
|
MOVE @OLDCRD,A1
|
|||
|
CMP A0,A1
|
|||
|
JRNZ RE_PLOT
|
|||
|
SLEEP 4 ;1
|
|||
|
DSJS A9,CRDLUP
|
|||
|
JRUC PRESSLP
|
|||
|
RE_PLOT:
|
|||
|
MOVI CLSNEUT|TYPTEXT|SUBP2TXT,A0
|
|||
|
CMPI P2DATA,A11
|
|||
|
JRZ KIP1
|
|||
|
MOVI CLSNEUT|TYPTEXT|SUBP1TXT,A0
|
|||
|
KIP1:
|
|||
|
CLR A1
|
|||
|
NOT A1
|
|||
|
CALLA KILOBJ
|
|||
|
JRUC DO_MSGS
|
|||
|
;
|
|||
|
; FSCORE - TRANSFER BOTH PLAYERS SCORE TO FORGROUND OBJECTS AND DISPLAY THEM
|
|||
|
; IN PLACE OF DIRECT-DMA OBJECTS
|
|||
|
; PARAMS:
|
|||
|
; BSCORE SET = TEXT OFFSET ADDED, WORLD COORDINATES IGNORED
|
|||
|
; BSCORE CLR = TEXT OFFSET IGNORED, SET TO WORLD COORDINATES
|
|||
|
FSCORE:
|
|||
|
;
|
|||
|
MOVI P1DATA,A9 ;TRANSFER PLAYER 1 SCORE
|
|||
|
CALLA TSCORE
|
|||
|
MOVI P2DATA,A9 ;TRANSFER PLAYER 2 SCORE
|
|||
|
|
|||
|
TSCORE:
|
|||
|
MOVK 8,A11 ;DIGIT COUNT
|
|||
|
MOVE *A9(PSCRAD),A0,L ;PLAYER SCORE ADDRESS
|
|||
|
MOVE *A9(PSCORE),A9,L ;PLAYER SCORE IN BCD FORM
|
|||
|
MOVE @BSCORE,A2
|
|||
|
JRZ PUTSCL
|
|||
|
MOVE @WAVEYX,A1,L
|
|||
|
ADD A1,A0 ;POSSIBLE OFFSET
|
|||
|
PUTSCL:
|
|||
|
MMTM SP,A0
|
|||
|
MOVE A9,A10
|
|||
|
SRL 28,A10 ;NEXT DIGIT VALUE INTO LOWEST 4 BITS
|
|||
|
SLL 7,A10 ;*128 (NEXT HEADER PLEASE!!)
|
|||
|
ADDI AFONT0,A10 ;BASE ADDRESS OF IMAGE HEADER
|
|||
|
CLR A1
|
|||
|
MOVY A0,A1 ;Y VAL
|
|||
|
SLL 16,A0 ;X VAL
|
|||
|
MOVI 50,A3 ;Z POS.
|
|||
|
MOVI DMAWNZ|M_NOCOLL,A4 ;FLAGS
|
|||
|
MOVI CLSNEUT|TYPTEXT|SUBSCOR,A5 ;OBJ. ID
|
|||
|
CLR A6 ;X VEL
|
|||
|
CLR A7 ;Y VEL
|
|||
|
MOVE @BSCORE,A2
|
|||
|
JRNZ NADJST
|
|||
|
MOVE A10,A2 ;IMG
|
|||
|
CALLA BEGINOBJ ;CREATE OBJECT, WORLD ADJUSTED
|
|||
|
JRUC DADJST
|
|||
|
NADJST:
|
|||
|
MOVE A10,A2 ;IMG
|
|||
|
CALLA BEGINOBJ2 ;CREATE OBJECT,WORLD UNADJUSTED
|
|||
|
DADJST:
|
|||
|
MMFM SP,A0
|
|||
|
MOVI SCRSPC,A1 ;SPACE BETWEEN DIGITS
|
|||
|
ADDXY A1,A0 ;ADD SPACE AFTER DIGIT
|
|||
|
SLL 4,A9 ;NEXT DIGIT PLEASE!
|
|||
|
DSJ A11,PUTSCL
|
|||
|
RETS
|
|||
|
|
|||
|
;
|
|||
|
; DELSCORE - DELETE FGND OBJECTS USED AS TEMPORARY SCORES
|
|||
|
; IN PLACE OF DIRECT-DMA OBJECTS
|
|||
|
DELSCORE:
|
|||
|
MOVI CLSNEUT|TYPTEXT|SUBSCOR,A0
|
|||
|
CLR A1
|
|||
|
NOT A1
|
|||
|
JAUC KILOBJ
|
|||
|
;
|
|||
|
PUTMSG:
|
|||
|
;A3=MSG #
|
|||
|
;A11=PLAYER INDEX
|
|||
|
CMPI P1DATA,A11
|
|||
|
JRNZ GP2 ;BR=PLAYER 2 IS BEING UPDATED
|
|||
|
CLR A4 ;OFFSET FOR BASE X POSITION
|
|||
|
MOVI CLSNEUT|TYPTEXT|SUBP1TXT,A5
|
|||
|
JRUC SETPUS
|
|||
|
GP2:
|
|||
|
MOVI 0EBH,A4
|
|||
|
MOVI CLSNEUT|TYPTEXT|SUBP2TXT,A5
|
|||
|
SETPUS:
|
|||
|
MOVI MSGIMG,A1
|
|||
|
SLL 5,A3
|
|||
|
ADD A3,A1
|
|||
|
MOVE *A1,A2,L
|
|||
|
SRL 1,A3
|
|||
|
MOVI MSGX,A1
|
|||
|
ADD A3,A1
|
|||
|
MOVE *A1,A0,W
|
|||
|
ADD A4,A0
|
|||
|
SLL 16,A0
|
|||
|
MOVI MSGY,A1
|
|||
|
ADD A3,A1
|
|||
|
MOVE *A1,A1,W
|
|||
|
SLL 16,A1
|
|||
|
CLR A6
|
|||
|
CLR A7 ;NO OBJECT VELOCITIES
|
|||
|
MOVI DMACNZ,A4 ;CONSTANT COLOR NON-ZERO
|
|||
|
MOVE A3,A9
|
|||
|
MOVI DMACNZ,A4 ;CONSTANT COLOR NON-ZERO
|
|||
|
CALLA BEGINOBJ
|
|||
|
MOVI >3B3B0000,A0 ;COLOR NUMBER
|
|||
|
MOVB *A11(CNTD),A1
|
|||
|
JRNZ HH
|
|||
|
CMPI 16*5,A9
|
|||
|
JRLT GJ
|
|||
|
HH MOVI >3E3E0000,A0 ;COLOR NUMBER TO CYCLE
|
|||
|
GJ
|
|||
|
MOVE A0,*A8(OPAL),L
|
|||
|
P2SETX:
|
|||
|
RETS
|
|||
|
MSGIMG:
|
|||
|
.LONG incoin,pstrt1,pstrt2,tocont,toplay,plyr1,plyr2,stndby
|
|||
|
MSGX:
|
|||
|
.WORD 038H-7,02FH-7,02FH-7,034H-7,044H-7,03BH-8,03BH-8,03DH
|
|||
|
MSGY:
|
|||
|
.WORD 50+3,50+3,50+3,60+3,60+3,50+3,50+3,60+3
|
|||
|
|
|||
|
|
|||
|
STRT1MSG .EQU 1
|
|||
|
;STRING "PRESS START 1"
|
|||
|
STRT2MSG .EQU 2
|
|||
|
;STRING "PRESS START 2"
|
|||
|
CONTMSG .EQU 3
|
|||
|
;STRING "TO CONTINUE"
|
|||
|
PLAYMSG .EQU 4
|
|||
|
;STRING "TO PLAY"
|
|||
|
.END
|
|||
|
|
|||
|
|
|||
|
|