1573 lines
24 KiB
NASM
Executable File
1573 lines
24 KiB
NASM
Executable File
STTL ROBOT GAME
|
|
OPT NOL
|
|
LIB RRF
|
|
OPT LIS
|
|
ORG RGORG
|
|
JMP PLAYRV
|
|
JMP RNDXYV
|
|
JMP CKOBSV
|
|
JMP MANDSV
|
|
JMP START1
|
|
JMP START2
|
|
JMP TDISP
|
|
FDB MANLP1
|
|
FDB LLPIC
|
|
*
|
|
*SOUNDS
|
|
*
|
|
PDSND FCB $EE,$02,$08,$11,$01,$20,$17,0 PLAYER DEATH
|
|
ST1SND FCB $F0,$01,$10,$28,0 START 1
|
|
ST2SND FCB $F0,$01,$10,$25,0 START 2
|
|
WVSND FCB $E0,$1D,$04,$0E,0 WAVE END
|
|
LASSND FCB $D0,$01,$08,1,0 LASER SOUND
|
|
*
|
|
*GAME START
|
|
*
|
|
START2 LDA #2
|
|
BRA SST0
|
|
STRTX JMP SUCIDE
|
|
START1 LDA #1
|
|
SST0 LDY #HCK2+1345
|
|
TST STATUS
|
|
BPL STRTX
|
|
LDB COINSL+1 CHECK FREEBY
|
|
ANDB #$F
|
|
CMPB #9
|
|
BNE SST00 NO FREE PLAY
|
|
STA CREDIT
|
|
SST00 CMPA CREDIT
|
|
BHI STRTX INSUFFICIENT FUNDS
|
|
STA PLRCNT MAKE APPROPRIATE SOUND
|
|
CLR BUNITS
|
|
CLR CUNITS
|
|
LDB #8
|
|
JSR AUD GAMES PLAYED
|
|
LDU #$D015
|
|
NEGA
|
|
ADDA #$9A
|
|
ADDA CREDIT
|
|
DAA
|
|
STA CREDIT
|
|
LDX #CREDST
|
|
JSR WCMOSA
|
|
LDA PLRCNT
|
|
SUBA #2
|
|
LDD #ST1SND
|
|
BCS SST01
|
|
LDD #ST2SND
|
|
SST01 JSR SNDLD
|
|
CLRA
|
|
CKS11 ADDA ,U ADD NEXT BYTE
|
|
LEAU $8,U NEXT ONE
|
|
CMPU #$EAB1
|
|
BLO CKS11
|
|
STA -1345,Y STORE
|
|
LDA #$7F
|
|
STA STATUS
|
|
JSR SCRCLR
|
|
LDX #PLDATA
|
|
SST1 CLR ,X+
|
|
CMPX #PLDEND
|
|
BNE SST1
|
|
LDX #NSHIP GET # OF SHIPS
|
|
JSR RCMOSA
|
|
JSR NEWBCH IN BINARY PLEASE
|
|
STA ZP1LAS
|
|
LDA #1
|
|
STA CURPLR
|
|
LDA #1
|
|
STA ZP1WAV
|
|
STA PCFLG
|
|
LDX #REPLAY
|
|
JSR RCMOSA
|
|
CLRB
|
|
LSRA
|
|
RORB
|
|
LSRA
|
|
RORB
|
|
LSRA
|
|
RORB
|
|
LSRA
|
|
RORB
|
|
STD REPLA
|
|
STD ZP1RP+1
|
|
JSR GETWV
|
|
LDX #PLDATA
|
|
SSTRAN LDA ,X+
|
|
STA PLDLEN-1,X
|
|
CMPX #ZP1END
|
|
BNE SSTRAN
|
|
LDA PLRCNT
|
|
DECA
|
|
BNE PLSTRT
|
|
CLR ZP2LAS NO PLAYER 2
|
|
PLSTRT LDA #$7F
|
|
STA STATUS
|
|
JSR PLINDX
|
|
DEC PLAS,X
|
|
JSR SCRCLR
|
|
JSR GNCIDE
|
|
LDX [ACTIVE] REINIT PROC STRUCT IF NO COINS
|
|
BNE PLS0
|
|
JSR PINIT
|
|
MAKP PLS0
|
|
JMP EXECV
|
|
PLS0 JSR CRINIT
|
|
JSR EXINIT
|
|
JSR OINIT
|
|
JSR GTWCOL GET WALL COLOR
|
|
JSR P1SW
|
|
LDA PIA3 COCKTAIL??
|
|
BPL PLS000 NO
|
|
LDA CURPLR PLAYER 2?
|
|
DECA
|
|
BEQ PLS000 NO
|
|
JSR P2SW
|
|
PLS000 JSR TDISP
|
|
JSR COLST
|
|
CLR RIPFLG
|
|
LDA PCFLG
|
|
BNE PLS00C
|
|
JSR WVMESS
|
|
BRA PLS0A NO DEATH.. NO MESSIE POOH
|
|
PLS00C LDD ZP1SCR+1
|
|
BNE PLS0C NOT GAME START
|
|
LDA #$11
|
|
STA TEXCOL
|
|
LDA #113
|
|
JSR WRD5V COPYRIGHT MESSAGE
|
|
BRA PLS0D
|
|
PLS0C JSR WVMESS
|
|
PLS0D CLR PCFLG
|
|
LDA PLRCNT
|
|
DECA
|
|
BEQ PLS0A 1 PLAYER GAME
|
|
LDA PSTCOL
|
|
STA TEXCOL
|
|
LDB CURPLR
|
|
LDA #103
|
|
JSR WRD7V
|
|
NAP 115,PLS0B PLAYER UP MESSAGE
|
|
PLS0B CLR TEXCOL
|
|
LDB CURPLR
|
|
LDA #103
|
|
JSR WRD7V ERASE MESSAGE
|
|
PLS0A JSR PLRES
|
|
JSR PLINIT
|
|
CLR PCRAM+6
|
|
CLR CRAM+6
|
|
JSR HULKST
|
|
JSR BRNST
|
|
JSR TANKST
|
|
JSR HUMST
|
|
JSR PSINIT
|
|
JSR RINIT
|
|
JSR ROBOFF
|
|
LDA #8
|
|
STA PSTREF DOUBLE REFRESH RATE
|
|
MAKP PSTRPC REFRESH POSTS
|
|
JSR PSTON
|
|
JSR CRINIT
|
|
JSR CIRCST
|
|
JSR SQST
|
|
LDA #$19
|
|
STA STATUS
|
|
LDA BRNCNT BRAIN WAVE???
|
|
BEQ PLS00 NO
|
|
MAKP TRANST TRANSPORT EM
|
|
NAP 150,PLS1
|
|
PLS00 JMP APPEAR
|
|
PLS1 JSR PAPPR PLAYER APPEAR
|
|
JSR PSTON ON POSTS
|
|
NAP 06,PLS1A
|
|
PLS1A JSR PDAPPR DIAG PLAYER APPEAR
|
|
NAP 4,PLS2
|
|
PLS2 JSR ROBON
|
|
MAKP LSPROC
|
|
MAKP COLCHK
|
|
CLR STATUS
|
|
NAP 12,PLS3
|
|
PLS3 JSR ROBON TURN THEM ON
|
|
JSR PSTON
|
|
NAP 10,PLS4
|
|
PLS4 JSR ROBON
|
|
JSR PSTON
|
|
LDA #4
|
|
STA PSTREF STD REFRESH RATE
|
|
CLR TEXCOL OFF CPM
|
|
LDA #113
|
|
JSR WRD5V
|
|
JSR WVMESS ON WAVE #
|
|
LDX #$20FB COPIERS TAKE NOTE:
|
|
LDU #HIDTAB HIDDEN COPY RIGHT HERE
|
|
HIDLP LDA ,U+
|
|
EORA #$5A
|
|
BEQ HIDEND
|
|
JSR PR35V
|
|
BRA HIDLP
|
|
HIDEND JMP GEXEC
|
|
|
|
FCC ' (C) 1982 WILLIAMS ELECTRONICS INC. '
|
|
*
|
|
*MAKE YOUR ROBOTS APPEAR
|
|
*PD=CNT,PD2=PTR,PD4=REFPTR,PD6=REF LIM
|
|
*
|
|
APPEAR LDU CRPROC
|
|
CLR PD,U
|
|
LDX #RPTR
|
|
STX PD2,U
|
|
LDX RPTR
|
|
STX PD4,U
|
|
STX PD6,U
|
|
APL LDA #1
|
|
PSHS A 1/FRAME
|
|
APL1 LDX PD2,U GET INDEX
|
|
LDX ,X
|
|
BEQ AP3 ALL DONE
|
|
JSR APCENT GET CENTER
|
|
LDA PD,U
|
|
ANDA #3
|
|
CMPA #3
|
|
BNE AP1
|
|
JSR HAPST
|
|
BRA AP2
|
|
AP1 JSR APST
|
|
AP2 STX PD2,U
|
|
AP3 INC PD,U
|
|
LDA PD,U
|
|
CMPA #32
|
|
BLS AP4
|
|
LDY PD6,U EXPAND REFRESH LIST
|
|
BEQ APX1
|
|
LDY ,Y
|
|
BEQ APX1 DONE
|
|
STY PD6,U
|
|
AP4 DEC ,S
|
|
BNE APL1
|
|
PULS A
|
|
BSR APREF
|
|
NAP 1,APL
|
|
APX1 PULS A
|
|
NAP 2,APX2 LET EVERYONE FINISH
|
|
APX2 BSR ROBON TURN EVERYONE ON
|
|
NAP 10,PLS1
|
|
*
|
|
*REFRESH APEAREES
|
|
*
|
|
APREF PSHS X
|
|
LDA #4 4 PER FRAME
|
|
STA XTEMP
|
|
LDX PD4,U
|
|
APRL CMPX PD6,U
|
|
BNE APR1
|
|
LDX #RPTR
|
|
BRA APRX
|
|
APR1 JSR DMAON
|
|
APRX LDX ,X
|
|
DEC XTEMP
|
|
BNE APRL
|
|
STX PD4,U
|
|
PULS X,PC
|
|
*
|
|
*ON ROBOTS
|
|
*
|
|
ROBON LDX RPTR
|
|
BEQ ROBONX
|
|
ROBON1 JSR DMAON
|
|
LDX ,X
|
|
BNE ROBON1
|
|
ROBONX RTS
|
|
*
|
|
*ON POSTS
|
|
*
|
|
PSTON LDX PPTR
|
|
BEQ PSTONX
|
|
PSTON1 LDA PSTCOL
|
|
JSR OPON
|
|
STX [OBJID,X]
|
|
PSTONL LDX ,X
|
|
BNE PSTON1
|
|
PSTONX RTS
|
|
*
|
|
*OFF POSTS
|
|
*
|
|
PSTOFF LDX PPTR
|
|
BRA ROBOF0
|
|
*
|
|
*OFF ROBOTS
|
|
*
|
|
ROBOFF LDX RPTR
|
|
ROBOF0 BEQ ROBOFX
|
|
ROBOF1 LDD OBJX,X
|
|
LDY OPICT,X
|
|
JSR PCTOFF
|
|
LDX ,X
|
|
BNE ROBOF1
|
|
ROBOFX RTS
|
|
*
|
|
*APPEAR CENTER CALCULATE
|
|
*X=OBJ, STORES CENT-CENTMP
|
|
APCENT PSHS D,U
|
|
LDU OPICT,X X CENTER
|
|
LDB OBJW,U
|
|
LDA OBJX,X
|
|
ASLA
|
|
BCC APC1
|
|
LDA #$FF
|
|
APC1 MUL
|
|
ADDA OBJX,X
|
|
STA CENTMP
|
|
LDB OBJH,U
|
|
LDA OBJY,X
|
|
MUL
|
|
ADDA OBJY,X
|
|
STA CENTMP+1
|
|
PULS D,U,PC
|
|
*
|
|
*PLAYER DIAGONAL APPEAR
|
|
*
|
|
PDAPPR LDX #PLOBJ
|
|
LDY OPICT,X
|
|
LDA OBJH,Y
|
|
PSHS A
|
|
DPAPP1 LDA ,S
|
|
ADDA PX+1
|
|
DECA
|
|
STA CENTMP+1
|
|
CLRA
|
|
JSR DAPST
|
|
COMA
|
|
JSR DAPST
|
|
LDA ,S
|
|
SUBA #3
|
|
STA ,S
|
|
BPL DPAPP1
|
|
PULS A,PC
|
|
*
|
|
*SUPER PLAYER APPEAR
|
|
*
|
|
PAPPR LDX #PLOBJ
|
|
LDY OPICT,X
|
|
LDA OBJH,Y
|
|
PSHS A
|
|
PAPPR1 LDA ,S
|
|
ADDA PX+1
|
|
DECA
|
|
STA CENTMP+1
|
|
JSR APST VERTS
|
|
DEC ,S
|
|
BNE PAPPR1
|
|
LDA OBJW,Y
|
|
STA ,S
|
|
PAPPR2 LDA ,S
|
|
ADDA PX
|
|
DECA
|
|
STA CENTMP
|
|
JSR HAPST
|
|
DEC ,S
|
|
BNE PAPPR2
|
|
PULS A,PC
|
|
*
|
|
*GET WALL COLOR
|
|
*
|
|
GTWCOL JSR PLINDX
|
|
LDU #WCTAB
|
|
LDA PWAV,X
|
|
DECA
|
|
GTWL CMPA #9
|
|
BLS GTW1
|
|
SUBA #10
|
|
BRA GTWL
|
|
GTW1 LEAU A,U
|
|
LDA ,U
|
|
STA WALCOL
|
|
LDA 10,U
|
|
STA PSTCOL
|
|
LDB 20,U
|
|
LDX PSTP1
|
|
ABX
|
|
STX PSTANI POST IMAGE
|
|
LDA 30,U
|
|
STA LASCOL
|
|
RTS
|
|
*WAVE COLOR TABLES
|
|
WCTAB EQU *
|
|
FCB $22,$55,$11,$EE,$77,$33,$44,$88,$00,$CC
|
|
*POST COLOR TABLES
|
|
FCB $FF,$EE,$BB,$DD,$EE,$FF,$11,$BB,$DD,$AA
|
|
*POST IMAGES
|
|
FCB $00,$10,$20,$30,$40,$50,$70,$80,$00,$60
|
|
*LASER COLOR
|
|
FCB $99,$00,$99,$66,$99,$99,$99,$11,$AA,$99
|
|
*CHECK END OF WAVE
|
|
WVCHEK LDA ROBCNT
|
|
ADDA CIRCNT
|
|
ADDA ENFCNT
|
|
ADDA BRNCNT
|
|
ADDA TNKCNT
|
|
ADDA SQCNT
|
|
RTS
|
|
*
|
|
*GAME EXEC
|
|
*
|
|
GEXEC LDU CRPROC
|
|
LDA #18
|
|
STA PD,U
|
|
CLR SCRFLG
|
|
GEXEC0 BSR WVCHEK
|
|
BNE GEXEC1
|
|
JSR PLINDX
|
|
GEXX INC PWAV,X
|
|
BNE GEXX1
|
|
INC PWAV,X
|
|
GEXX1 INC PLAS,X
|
|
LDD #WVSND
|
|
JSR SNDLD
|
|
JSR GETWV
|
|
JSR GNCIDE
|
|
LDA #$7F
|
|
STA STATUS TURN EVERYTHING OFF
|
|
JSR SCRCLR
|
|
JSR RMST DO MARQUEE EFFECT
|
|
JMP PLSTRT
|
|
GEXEC1 LDA PIA2
|
|
CMPA #$58
|
|
BNE NORIPP
|
|
JSR RIPV
|
|
NORIPP DEC PD,U
|
|
BNE GEXECX
|
|
LDA #15
|
|
STA PD,U
|
|
LDA ROBCNT TOO MANY ROBOTS
|
|
CMPA #30
|
|
BHS GEXECX
|
|
LDD #$FFFE
|
|
TST SCRFLG
|
|
BNE GEXEC2
|
|
LDD #$FEFC BONE HIM FOR STALLING
|
|
GEXEC2 ADDA RMXSPD
|
|
CLR SCRFLG
|
|
CMPA #1
|
|
BGE GEXEC3
|
|
LDA #1
|
|
GEXEC3 STA RMXSPD
|
|
ADDB ROBSPD
|
|
CMPB RMXSPD
|
|
BGE GEXEC4
|
|
LDB RMXSPD
|
|
GEXEC4 STB ROBSPD
|
|
GEXECX LDA GAMTIM
|
|
INCA
|
|
CMPA #150 1/4 SEC. CTS
|
|
BLO GEXX2
|
|
LDB #6 HIT THE TIMER
|
|
JSR AUD1
|
|
CLRA
|
|
GEXX2 STA GAMTIM
|
|
NAP 15,GEXEC0
|
|
*
|
|
*PLAYER RESTORE
|
|
*
|
|
PLRES JSR PLINDX
|
|
LEAX PENEMY,X
|
|
LDU #ELIST
|
|
PLRES1 LDA ,X+
|
|
STA ,U+
|
|
CMPU #ELEND
|
|
BNE PLRES1
|
|
JSR PLINDX
|
|
LDA PWAV,X
|
|
CMPA #4
|
|
BHI PLRESX NO BOZO
|
|
LDB PLAS,X
|
|
STD XTEMP SAVE WAVE,SHIPS
|
|
TSTB
|
|
BEQ BOZO LAST SHIP
|
|
CMPA #2
|
|
BHI PLRESX NOT WAVE 1,2
|
|
LDX #NSHIP
|
|
JSR RCMOSA
|
|
JSR NEWBCH
|
|
DECA
|
|
CMPA XTEMP+1
|
|
BLS PLRESX NOT DOWN SHIPS
|
|
BOZO LDA XTEMP
|
|
LDX #BOZOTB-4
|
|
ASLA
|
|
ASLA
|
|
LEAX A,X
|
|
LDD ,X++
|
|
STA CDPTIM
|
|
STB ENSTIM
|
|
LDD ,X
|
|
STA ROBSPD
|
|
STB RMXSPD
|
|
PLRESX RTS
|
|
*
|
|
*BOZO TABLE: FOR ALL YOU BOZOS OUT THERE
|
|
*
|
|
BOZOTB EQU *
|
|
FCB 38,96,30,15 WAVE 1
|
|
FCB 38,96,25,12 2
|
|
FCB 36,48,20,10 3
|
|
FCB 30,30,15,7 4
|
|
*
|
|
*SAVE PLAYER STATE
|
|
*
|
|
PLSAV JSR PLINDX
|
|
LEAX PENEMY,X
|
|
LDU #ELIST
|
|
PLSAV1 LDA ,U+
|
|
STA ,X+
|
|
CMPU #ELEND
|
|
BNE PLSAV1
|
|
RTS
|
|
*
|
|
*GET NEXT WAVE
|
|
*
|
|
GETWV LDX #GA1 GET DIFFICULTY
|
|
JSR RCMOSB
|
|
JSR BCDBIN
|
|
JSR PLINDX
|
|
CMPB #5 EASY SET UP??
|
|
BHS GTWV0X NO
|
|
LDA PWAV,X
|
|
CMPA #14 WAVE 14 OR GREATER
|
|
BLO GTWV01 NO
|
|
LDB #5
|
|
GTWV01 CMPA #5 WAVE 5 OR GT?
|
|
BLO GTWV0X NO
|
|
LDA PLAS,X 4 OR MORE LASERS LEFT?
|
|
CMPA #3
|
|
BLO GTWV0X NO
|
|
LDB #5 YES SCREW HIM
|
|
GTWV0X SUBB #5
|
|
STB XTEMP+1 SAVE SIGN
|
|
BPL GETWV0
|
|
NEGB
|
|
GETWV0 STB XTEMP MAGNITUDE
|
|
LDB PWAV,X
|
|
LDU #WVTAB+2
|
|
LEAX PENEMY,X
|
|
GETWV1 CMPB #40
|
|
BLS GETWV2
|
|
SUBB #20
|
|
BRA GETWV1
|
|
GETWV2 EQU *
|
|
CMPU #WVCNT
|
|
BLO GETWV3
|
|
LEAU -3,U NO MAX/MINS
|
|
LDA B,U
|
|
BRA GETWV9
|
|
GETWV3 LDA B,U
|
|
PSHS D
|
|
LDB -2,U GET FRACTION
|
|
ANDB #$1F
|
|
LDA XTEMP
|
|
MUL MULTIPLY BY MAGNITUDE
|
|
PULS A
|
|
MUL
|
|
ADCA #0 ROUND
|
|
LDB XTEMP+1
|
|
EORB -2,U PLUS OR MINUS ????
|
|
PULS B
|
|
BPL GETWV4
|
|
NEGA
|
|
BEQ GETWV4 ZERO CASE
|
|
ADDA B,U
|
|
BCS GETWV5 O.K.
|
|
BRA GETWV6 UNDERFLOW GET MIN
|
|
GETWV4 ADDA B,U
|
|
BCS GETWV8 OVERFLOW GET MAX
|
|
GETWV5 CMPA -1,U CHECK MIN
|
|
BHS GETWV7
|
|
GETWV6 LDA -1,U
|
|
GETWV7 CMPA ,U
|
|
BLS GETWV9
|
|
GETWV8 LDA ,U
|
|
GETWV9 STA ,X+
|
|
LEAU 43,U
|
|
CMPU #WVTEND-1
|
|
BLO GETWV2
|
|
CLR ,X+ GET TANK COUNT
|
|
RTS
|
|
HIDTAB FCB $01,$19,$06,$7A,$6B,$63,$62,$68,$7A,$0D,$13,$16,$16,$13,$1B
|
|
FCB $17,$09,$7A,$1F,$16,$1F,$19,$67,$7A,$13,$14,$19,$67,$5A
|
|
WVTAB EQU *
|
|
FCB $8E,10,20 SIGN/DELTA,MIN,MAX
|
|
FCB 20,15,15,15,15,15,15,15,15,15,14,14,14,14,14,13,13,13,13,13 ROBSPD
|
|
FCB 14,14,14,14,14,14,13,13,13,13,13,13,12,12,12,12,12,12,15,12
|
|
FCB $8E,03,10
|
|
FCB 09,07,06,05,05,05,05,04,04,04,04,04,04,04,04,04,04,04,04,04 RMXSPD
|
|
FCB 04,04,04,04,04,04,03,03,04,03,03,03,03,03,03,03,03,03,04,03
|
|
FCB $0E,$08,12
|
|
FCB 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 ENFNUM
|
|
FCB 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11
|
|
FCB $8E,13,40
|
|
FCB 30,28,26,24,22,20,18,18,16,14,14,14,14,14,14,14,14,14,14,14 ENSTIM
|
|
FCB 15,15,15,15,15,15,15,15,15,14,14,14,14,14,14,14,14,14,14,14
|
|
FCB $8E,12,40
|
|
FCB 30,28,26,24,30,20,18,16,18,25,12,12,12,25,25,12,12,12,18,20 CDPTIM
|
|
FCB 14,14,14,14,14,25,14,14,18,25,12,12,12,12,25,12,12,12,18,20
|
|
FCB $8E,05,09
|
|
FCB 08,08,07,07,07,07,07,06,06,06,06,05,05,05,05,05,05,05,05,05 HLKSPD
|
|
FCB 05,05,05,05,05,05,05,05,05,05,05,05,05,05,05,05,05,05,05,05
|
|
FCB $8E,25,80
|
|
FCB 64,64,64,64,64,40,40,38,38,38,38,38,38,38,38,38,36,36,36,36 BSHTIM
|
|
FCB 32,32,32,32,32,32,32,30,30,30,30,30,25,25,25,25,25,25,25,25
|
|
FCB $8E,6,10
|
|
FCB 08,08,08,08,08,07,07,07,07,07,07,07,07,07,07,06,06,06,06,06 BRNSPD
|
|
FCB 06,06,06,06,06,06,06,06,06,06,06,06,06,06,06,06,06,06,06,06
|
|
FCB $8E,20,40
|
|
FCB 32,32,32,32,32,32,32,30,30,30,30,30,30,28,28,28,28,28,28,28 THKSHT
|
|
FCB 30,30,30,30,30,30,28,28,28,28,28,26,26,26,26,26,24,24,24,24
|
|
FCB $0E,$A0,$FF
|
|
FDB $B0B0,$B0B0,$B0B0,$B0B0,$B0B0,$B0B0,$B0B0,$B0B0,$B0B0,$B0B0 SHLSPD
|
|
FDB $B8B8,$B8B8,$B8B8,$B8B8,$B8B8,$C0C0,$C0C0,$C0C0,$C0C0,$C0C0
|
|
FCB $8E,$0C,$30
|
|
FDB $1010,$1010,$1010,$1010,$1010,$1010,$1010,$0F0F,$0F0F,$0F0F TDPTIM
|
|
FDB $0E0E,$0E0E,$0E0E,$0E0E,$0E0E,$0E0E,$0E0E,$0E0E,$0E0E,$0E0E
|
|
FCB $0E,$28,$44
|
|
FDB $3232,$3232,$3232,$3232,$3232,$3232,$3838,$3838,$3838,$3838 SQSPD
|
|
FDB $3838,$3838,$3838,$3838,$3C3C,$3C3C,$3C3C,$3C3C,$3C3C,$3C3C
|
|
WVCNT EQU *
|
|
FCB 15,17,22,34,20,32,00,35,60,25,35,00,35,27,25,35,00,35,70,25 ROBCNT
|
|
FCB 35,00,35,00,25,35,00,35,75,25,35,00,35,30,27,35,00,35,80,30
|
|
FCB 05,15,25,25,20,25,00,25,00,20,25,00,25,05,20,25,00,25,00,20 PSTCNT
|
|
FCB 25,00,25,00,20,25,00,25,00,20,25,00,25,00,15,25,00,25,00,15
|
|
FCB 01,01,02,02,15,03,04,03,03,00,03,03,03,05,00,03,03,03,03,08 MOMCNT
|
|
FCB 03,03,03,03,25,03,03,03,03,00,03,03,03,03,00,03,03,03,03,10
|
|
FCB 01,01,02,02,00,03,04,03,03,22,03,03,03,05,00,03,03,03,03,08 DADCNT
|
|
FCB 03,03,03,03,00,03,03,03,03,25,03,03,03,03,00,03,03,03,03,10
|
|
FCB 00,01,02,02,01,03,04,03,03,00,03,03,03,05,22,03,03,03,03,08 KIDCNT
|
|
FCB 03,03,03,03,01,03,03,03,03,00,03,03,03,03,25,03,03,03,03,10
|
|
FCB 00,05,06,07,00,07,12,08,04,00,08,13,08,20,02,03,14,08,03,02 HLKCNT
|
|
FCB 08,15,08,13,01,08,16,08,04,01,08,16,08,25,02,08,16,08,06,02
|
|
FCB 00,00,00,00,15,00,00,00,00,20,00,00,00,00,20,00,00,00,00,20 BRNCNT
|
|
FCB 00,00,00,00,21,00,00,00,00,22,00,00,00,00,23,00,00,00,00,25
|
|
FCB 00,01,03,04,01,04,00,05,05,01,05,00,05,02,01,05,00,05,05,02 CIRCNT
|
|
FCB 05,00,05,06,01,05,00,05,05,01,05,00,05,02,01,05,00,05,05,01
|
|
FCB 00,00,00,00,00,00,10,00,00,00,00,12,00,00,00,00,12,00,00,00 SQCNT
|
|
FCB 00,12,00,07,00,00,12,01,01,01,01,13,01,02,02,02,14,02,01,01
|
|
WVTEND EQU *
|
|
*
|
|
*PLAYER INITIALIZE
|
|
*
|
|
PLINIT LDX #PLOBJ
|
|
LDD #MANDP1
|
|
STD OPICT,X
|
|
STD OLDPIC,X
|
|
CLR PLAIMC ANI COUNT+NUM
|
|
CLR PLAIMN
|
|
LDD #PISD
|
|
STD PLAIMB ANI BASE
|
|
LDD #PCOORD
|
|
STD OBJX,X
|
|
STA OX16,X
|
|
CLR OX16+1,X
|
|
STB OY16,X
|
|
CLR OY16+1,X
|
|
CLR LCNT
|
|
CLR PCFLG
|
|
CLR SAVCNT MAN SAVED COUNTER
|
|
CLR BCMCNT
|
|
CLR SPKCNT
|
|
CLR BRNFLG
|
|
CLR ENFCNT
|
|
LDA #2
|
|
STA TNKSPD
|
|
CLR SHLCNT
|
|
RTS
|
|
*
|
|
*PLAYER MOTION+OUTPUT
|
|
*
|
|
PLAYRV LDA STATUS
|
|
BITA #$01
|
|
BEQ PL00
|
|
RTS
|
|
PL00 TSTA
|
|
BPL PL01
|
|
LDA ATRSW2 FONY SWITCH
|
|
BRA PL02
|
|
PL01 LDA PIA2
|
|
PL02 LDX #PLOBJ
|
|
LDU #PITAB
|
|
ANDA #$F
|
|
ASLA
|
|
ASLA
|
|
LEAU A,U
|
|
LDD ,U GET YOUR TABLE ENTRY FOR SWITCH POSITION
|
|
ADDB PY16
|
|
CMPB #YMIN
|
|
BLO PL1
|
|
CMPB #YMAX-11
|
|
BHI PL1
|
|
STB PY16
|
|
PL1 CLRB
|
|
ASRA
|
|
RORB
|
|
ADDD PX16
|
|
CMPA #XMIN
|
|
BLO PL2
|
|
CMPA #XMAX-3
|
|
BHI PL2
|
|
STD PX16
|
|
PL2 LDD 2,U
|
|
BEQ PLXX NO IMAGE CHANGE
|
|
CMPD PLAIMB BASE CHANGE?
|
|
BEQ PL3
|
|
STD PLAIMB
|
|
CLR PLAIMN
|
|
CLR PLAIMC
|
|
PL3 LDB PLAIMC COUNT READY?
|
|
BNE PL10
|
|
LDU PLAIMB
|
|
LDA PLAIMN
|
|
LDB A,U
|
|
BNE PL4
|
|
CLR PLAIMN END OF SEQUENCE
|
|
LDB ,U
|
|
PL4 INC PLAIMN
|
|
DECB
|
|
ASLB
|
|
ASLB
|
|
CLRA
|
|
ADDD #MANLP1
|
|
STD PPICT
|
|
PL10 LDA PLAIMC
|
|
INCA
|
|
CMPA #2
|
|
BLO PL11
|
|
CLRA
|
|
PL11 STA PLAIMC
|
|
PLXX RTS
|
|
*
|
|
*PLAYER IMAGE TABLE
|
|
*DX,DY,IMAGE SEQ
|
|
*B0=U,B1=D,B2=L,B3=R
|
|
PITAB FDB 0,0 0000
|
|
FDB $00FF,PISU 0001 U
|
|
FDB $0001,PISD 0010 D
|
|
FDB $0,0 0011
|
|
FDB $FF00,PISL 0100 L
|
|
FDB $FFFF,PISL 0101 U+L
|
|
FDB $FF01,PISL 0110 D+L
|
|
FDB 0,0 0111
|
|
FDB $0100,PISR 1000 R
|
|
FDB $01FF,PISR 1001 U+R
|
|
FDB $0101,PISR 1010 D+R
|
|
FDB 0,0 1011
|
|
FDB 0,0 1100
|
|
FDB 0,0 1101
|
|
FDB 0,0 1110
|
|
FDB 0,0 1111
|
|
*
|
|
*PLAYER ANIMATION TABLE
|
|
*
|
|
PISL FCB 1,2,1,3,0
|
|
PISR FCB 4,5,4,6,0
|
|
PISD FCB 7,8,7,9,0
|
|
PISU FCB 10,11,10,12,0
|
|
*
|
|
*CHECK FOR OBSTACLE
|
|
*CARDBOARD BOX
|
|
*D= SCREEN ADDR X,Y
|
|
*X=OBJ,U=LIST TO CHECK AGAINST
|
|
*RET NE IF BLOCKED, EQ OTHERWISE
|
|
CKOBSV PSHS U,D
|
|
PSHS D
|
|
ADDD [OPICT,X]
|
|
PSHS D
|
|
BRA CKOBLP
|
|
CKOB1 LDD OBJX,U
|
|
CMPA ,S
|
|
BHS CKOBLP
|
|
CMPB 1,S
|
|
BHS CKOBLP
|
|
ADDD [OPICT,U]
|
|
CMPA 2,S
|
|
BLS CKOBLP
|
|
CMPB 3,S
|
|
BLS CKOBLP
|
|
PSHS U IS IT ITSELF??
|
|
CMPX ,S++
|
|
BNE CKOBX NOPE
|
|
CKOBLP LDU ,U
|
|
BNE CKOB1
|
|
CKOBX LEAS 4,S CLEAN UP YOUR MESS
|
|
PULS U,D,PC
|
|
*
|
|
*CHECK PLAYER COLLISION
|
|
*
|
|
COLCHK LDA #1
|
|
STA PCFLG
|
|
LDD PX PLAYER
|
|
LDU POLDPC
|
|
LDX #RPTR ROBOTS
|
|
JSR COL0
|
|
BNE PLEND DIE
|
|
LDD PX
|
|
LDU POLDPC
|
|
LDX #PPTR POSTS (FATAL OBSTACLES)
|
|
JSR COL0
|
|
BNE PLEND
|
|
LDD PX
|
|
LDU POLDPC
|
|
LDX #OPTR MOTION OBJECTS
|
|
JSR COL0
|
|
BNE PLEND
|
|
LDD PX HUMANS
|
|
LDU POLDPC
|
|
LDX #HPTR
|
|
JSR COL0
|
|
CLR PCFLG
|
|
NAP 1,COLCHK
|
|
*
|
|
*PLAYER DEAD
|
|
*
|
|
PLEND LDD #PDSND
|
|
JSR SNDLD
|
|
LDA #$1B
|
|
STA STATUS
|
|
JSR GNCIDE
|
|
LDB #7
|
|
JSR AUD1 MEN PLAYED
|
|
JSR COLST START YOUR COLORS
|
|
JSR PDEATH GO FOR IT...
|
|
JSR PLINDX
|
|
LDA ZP1LAS
|
|
ORA ZP2LAS
|
|
BNE PLEND1
|
|
LDA #$FF
|
|
STA STATUS
|
|
LDD #$1C0A GAME OVER MESSAGE
|
|
LDX #$3C7E
|
|
JSR BLKCLR
|
|
LDA #40
|
|
LDB #$AA
|
|
STB TEXCOL
|
|
JSR WRD7V
|
|
NAP 120,ENDPRC
|
|
PLEND1 JSR PLINDX
|
|
LDA RMXSPD-ELIST+PENEMY,X RESTORE MAX SPEED
|
|
STA RMXSPD
|
|
CMPA ROBSPD
|
|
BLS PLEND2
|
|
STA ROBSPD
|
|
PLEND2 CLRA
|
|
LDB ENFCNT CONVERT LEFTOVER ENFORCERS INTO CIRCLES
|
|
BEQ PLE2C
|
|
PLE0A SUBB #4
|
|
BMI PLE1A
|
|
INCA
|
|
BRA PLE0A
|
|
PLE1A TSTA
|
|
BNE PLE2A
|
|
TST CIRCNT
|
|
BNE PLE2A
|
|
INCA
|
|
PLE2A ADDA CIRCNT
|
|
CMPA CIRCNT-ELIST+PENEMY,X NO MORE THAN YOU STARTED WITH
|
|
BLS PLE2B
|
|
LDA CIRCNT-ELIST+PENEMY,X
|
|
PLE2B STA CIRCNT
|
|
PLE2C JSR PLSAV
|
|
PLEND3 JSR PLINDX
|
|
LDB PLAS,X
|
|
BNE PLE1B
|
|
LDD #$1C20 PLAYER N GAME OVER MESSAGE
|
|
LDX #$3C77
|
|
JSR BLKCLR
|
|
LDA #75
|
|
LDB #$AA
|
|
STB TEXCOL
|
|
LDB CURPLR
|
|
JSR WRD7V
|
|
NAP $60,PLE1B
|
|
PLE1B LDA CURPLR
|
|
PLE1 EORA #3
|
|
JSR PLDX
|
|
LDB PLAS,X
|
|
BEQ PLE1
|
|
STA CURPLR
|
|
JMP PLSTRT
|
|
*
|
|
*RANDOM X,Y->D ON PLAYFIELD FOR OBJECT X
|
|
*
|
|
RNDXYV EQU *
|
|
LDD [OPICT,X]
|
|
PSHS D
|
|
LDA #XMAX-XMIN
|
|
SUBA ,S+
|
|
JSR RANDU
|
|
ADDA #XMIN-1
|
|
TFR A,B
|
|
LDA #YMAX-YMIN
|
|
SUBA ,S+
|
|
JSR RANDU
|
|
ADDA #YMIN-1
|
|
EXG A,B
|
|
RTS
|
|
*LASER START
|
|
LSPROC CLR PD,U PREV STATE
|
|
CLR PD1,U TIMECOUNT
|
|
LSPLP LDA STATUS
|
|
BPL LSP0
|
|
LDD ATRSW2
|
|
BRA LSP00
|
|
LSP0 LDA PIA2
|
|
LDB PIA3
|
|
LSP00 LSRB
|
|
RORA
|
|
LSRB
|
|
RORA
|
|
ANDA #$F0
|
|
LDB PD,U
|
|
STA PD,U
|
|
CMPB PD,U
|
|
BNE LSPX
|
|
INC PD1,U
|
|
LDB PD1,U
|
|
CMPB #2
|
|
BEQ LSP1
|
|
ANDB #$7
|
|
BNE LSPNAP
|
|
LSP1 LDB LCNT
|
|
CMPB #4
|
|
BHS LSPX1
|
|
TST FREE
|
|
BEQ LSPNAP NO MORE PROCS
|
|
LSRA
|
|
LSRA
|
|
PSHS A
|
|
LSRA
|
|
ADDA ,S+
|
|
LDY #LTAB
|
|
LEAY A,Y
|
|
CMPA #LTEND-LTAB
|
|
BHS LSPNAP DUD
|
|
LDX ,Y
|
|
BEQ LSPNAP DUD
|
|
CLRA
|
|
JSR MKPROC
|
|
TFR X,U
|
|
JSR GETOBJ
|
|
STX PD,U
|
|
LDD 4,Y
|
|
ADDD #LLPIC
|
|
STD OPICT,X
|
|
STD OLDPIC,X
|
|
LDD PX
|
|
ADDA 2,Y
|
|
STA OX16,X
|
|
ADDB 3,Y
|
|
STB OY16,X
|
|
INC LCNT
|
|
LDD #LASSND
|
|
JSR SNDLD
|
|
BRA LSPNAP
|
|
LSPX CLR PD1,U
|
|
BRA LSPNAP
|
|
LSPX1 DEC PD1,U
|
|
LSPNAP NAP 1,LSPLP
|
|
*LASER TABLE: ROUTINE,XY OFFSET,OBJECT
|
|
LTAB EQU *
|
|
FDB 0,0,0 0000 CASE
|
|
FDB ULASR,$02FF,4 0001
|
|
FDB DLASR,$0204,4 0010
|
|
FDB 0,0,0 0011
|
|
FDB LLASR,$0004,0 0100
|
|
FDB ULLASR,$0000,12 0101
|
|
FDB DLLASR,$0004,8 0110
|
|
FDB 0,0,0 0111
|
|
FDB RLASR,$0204,0 1000
|
|
FDB URLASR,$0200,8 1001
|
|
FDB DRLASR,$0204,12 1010
|
|
LTEND EQU *
|
|
*RT. LASER
|
|
RLASR LDX PD,U
|
|
LDA OX16,X
|
|
ADDA #3
|
|
CMPA #XMAX-2
|
|
BHI RLDIE
|
|
STA OX16,X
|
|
LDD #$0100
|
|
JSR LASOUT
|
|
NAP 1,RLASR
|
|
*LEFT LASER
|
|
LLASR LDX PD,U
|
|
LDA OX16,X
|
|
SUBA #3
|
|
CMPA #XMIN
|
|
BLO LLDIE
|
|
STA OX16,X
|
|
LDD #$FF00
|
|
JSR LASOUT
|
|
NAP 1,LLASR
|
|
*UP LASER
|
|
ULASR LDX PD,U
|
|
LDA OY16,X
|
|
ADDA #-6
|
|
CMPA #YMIN
|
|
BLO ULDIE
|
|
STA OY16,X
|
|
LDD #$00FF
|
|
JSR LASOUT
|
|
NAP 1,ULASR
|
|
*DOWN LASER
|
|
DLASR LDX PD,U
|
|
LDA OY16,X
|
|
ADDA #6
|
|
CMPA #YMAX-5
|
|
BHI DLDIE
|
|
STA OY16,X
|
|
LDD #$0001
|
|
JSR LASOUT
|
|
NAP 1,DLASR
|
|
*
|
|
*LASER OUT OF BOUNDS
|
|
*
|
|
RLDIE LDA #XMAX+1 RT LASER DIE
|
|
BRA LLDIE1
|
|
LLDIE LDA #XMIN-1 LFT LASER DIE
|
|
LLDIE1 LDB OY16,X
|
|
BRA LASDIH
|
|
ULDIE LDB #YMIN-1
|
|
BRA DLDIE1
|
|
DLDIE LDB #YMAX+1
|
|
DLDIE1 LDA OX16,X GLOW POINT
|
|
BRA LASDIV
|
|
*
|
|
*LASER DIE HORIZONTAL
|
|
*
|
|
LASDIH STD PD2,U
|
|
JSR LASOFF
|
|
LDX PD2,U
|
|
LDA LASCOL
|
|
LDB LASCOL
|
|
STD -1,X
|
|
STA 1,X
|
|
NAP 2,LDH1
|
|
LDH1 LDA WALCOL
|
|
LDX PD2,U
|
|
STA -1,X
|
|
STA 1,X
|
|
NAP 1,LDH2
|
|
LDH2 LDA WALCOL
|
|
STA [PD2,U]
|
|
JMP SUCIDE
|
|
*
|
|
*LASER DIE VERTICAL
|
|
*
|
|
LASDIV CMPB #YMAX
|
|
BHS LDV0
|
|
LDB #YMIN-2
|
|
LDV0 CMPA #XMIN-1
|
|
BHI LDV00
|
|
INCA
|
|
LDV00 STD PD2,U
|
|
JSR LASOFF
|
|
LDA LASCOL
|
|
LDB LASCOL
|
|
LDX PD2,U
|
|
STD ,X
|
|
LDA WALCOL
|
|
ANDA #$F0
|
|
PSHS A
|
|
LDA LASCOL
|
|
ANDA #$0F
|
|
ADDA ,S+
|
|
TFR A,B
|
|
STD -$100,X
|
|
NAP 2,LDV1
|
|
LDV1 LDX PD2,U
|
|
LDA WALCOL
|
|
LDB WALCOL
|
|
STD -$100,X
|
|
ANDA #$0F
|
|
ANDB #$0F
|
|
PSHS D
|
|
LDA LASCOL
|
|
LDB LASCOL
|
|
ANDA #$F0
|
|
ANDB #$F0
|
|
ADDD ,S++
|
|
STD ,X
|
|
NAP 1,LDV2
|
|
LDV2 LDA WALCOL
|
|
LDB WALCOL
|
|
STD [PD2,U]
|
|
JMP SUCIDE DONE!!!
|
|
LASDH JMP LASDIH
|
|
LASDV BRA LASDIV
|
|
*
|
|
*LASER DIE SCAN
|
|
*FIND WHERE WE RAN OFF
|
|
LDSCAN STB XTEMP+1
|
|
CLRB
|
|
ASRA
|
|
RORB
|
|
STD XTEMP2
|
|
TFR Y,D
|
|
ADDA OX16,X
|
|
ADDB OY16,X
|
|
STA OX16,X
|
|
STB OY16,X
|
|
LDSCXL LDD XTEMP2
|
|
ADDD OX16,X
|
|
STD OX16,X
|
|
LDB OY16,X
|
|
ADDB XTEMP+1
|
|
STB OY16,X
|
|
CMPB #YMAX
|
|
BHI LASDV
|
|
CMPB #YMIN
|
|
BLO LASDV
|
|
CMPA #XMAX
|
|
BHI LASDH
|
|
CMPA #XMIN
|
|
BLO LASDH
|
|
BRA LDSCXL
|
|
*
|
|
*DOWN LEFT DIE
|
|
DLLDIE LDY #$0005
|
|
LDD #$FF01
|
|
BRA LDSCAN
|
|
*UP LEFT DIE
|
|
ULLDIE LDY #$0000
|
|
LDD #$FFFF
|
|
BRA LDSCAN
|
|
*UP RIGHT DIE
|
|
URLDIE LDY #$0200
|
|
LDD #$01FF
|
|
BRA LDSCAN
|
|
*DOWN RT DIE
|
|
DRLDIE LDY #$0205
|
|
LDD #$0101
|
|
BRA LDSCAN
|
|
*DOWN LEFT DIAG LASER
|
|
DLLASR LDX PD,U
|
|
LDA OX16,X
|
|
SUBA #3
|
|
LDB OY16,X
|
|
ADDB #6
|
|
CMPA #XMIN
|
|
BLO DLLDIE
|
|
CMPB #YMAX-5
|
|
BHI DLLDIE
|
|
STA OX16,X
|
|
STB OY16,X
|
|
LDD #$FF01
|
|
BSR LASOUT
|
|
NAP 1,DLLASR
|
|
*UPPER LEFT DIAG
|
|
ULLASR LDX PD,U
|
|
LDA OX16,X
|
|
SUBA #3
|
|
CMPA #XMIN
|
|
BLO ULLDIE
|
|
LDB OY16,X
|
|
SUBB #6
|
|
CMPB #YMIN
|
|
BLO ULLDIE
|
|
STA OX16,X
|
|
STB OY16,X
|
|
LDD #$FFFF
|
|
BSR LASOUT
|
|
NAP 1,ULLASR
|
|
*UPPER RIGHT DIAG
|
|
URLASR LDX PD,U
|
|
LDA OX16,X
|
|
ADDA #3
|
|
CMPA #XMAX-2
|
|
BHI URLDIE
|
|
LDB OY16,X
|
|
SUBB #6
|
|
CMPB #YMIN
|
|
BLO URLDIE
|
|
STA OX16,X
|
|
STB OY16,X
|
|
LDD #$01FF
|
|
BSR LASOUT
|
|
NAP 1,URLASR
|
|
*DOWN RT DIAG
|
|
DRLASR LDX PD,U
|
|
LDA OX16,X
|
|
ADDA #3
|
|
CMPA #XMAX-2
|
|
BHI DRLDIE
|
|
LDB OY16,X
|
|
ADDB #6
|
|
CMPB #YMAX-5
|
|
BLS DRL1
|
|
JMP DRLDIE
|
|
DRL1 STA OX16,X
|
|
STB OY16,X
|
|
LDD #$0101
|
|
BSR LASOUT
|
|
NAP 1,DRLASR
|
|
*OUTPUT LASER
|
|
LASOUT STD LASDIR SAVE DIRECTION FOR HITS
|
|
JSR DMAOFN
|
|
PSHS U,X
|
|
LDU OPICT,X
|
|
LDD OBJX,X
|
|
LDX #PPTR
|
|
JSR COL0
|
|
BNE LASDIE
|
|
LDX ,S
|
|
LDU OPICT,X
|
|
LDD OBJX,X
|
|
LDX #RPTR
|
|
JSR COL0
|
|
BNE LASDIE
|
|
LDX ,S
|
|
LDU OPICT,X
|
|
LDD OBJX,X
|
|
LDX #OPTR
|
|
JSR COL0
|
|
BNE LASDIE
|
|
PULS X,U,PC
|
|
*LASER DIE
|
|
LASDIE PULS X,U
|
|
BSR LASOFF
|
|
JMP SUCIDE
|
|
*LASER OFF
|
|
LASOFF JSR DMAOFF
|
|
LDD OFREE RETURN OBJECT TO FREE LIST
|
|
STD ,X
|
|
STX OFREE
|
|
DEC LCNT
|
|
RTS
|
|
*
|
|
*DISPLAY TOP OF SCREEN
|
|
*
|
|
TDISP PSHS D,X,Y,U
|
|
LDA PLRCNT
|
|
TD1 JSR SCRTR0
|
|
DECA
|
|
BNE TD1
|
|
BSR BORDER
|
|
JSR MANDSP
|
|
PULS D,X,Y,U,PC
|
|
*
|
|
*DISPLAY WAVE # MESSAGE
|
|
*
|
|
WVMESS LDA ZP1WAV
|
|
JSR HEXBCD
|
|
TFR A,B
|
|
LDA #104
|
|
JSR WRD5V
|
|
LDA PLRCNT
|
|
DECA
|
|
BEQ WVMESX
|
|
LDA ZP2WAV
|
|
JSR HEXBCD
|
|
TFR A,B
|
|
LDA #114
|
|
JSR WRD5V
|
|
WVMESX RTS
|
|
*
|
|
*DISPLAY MEN LEFT
|
|
*MAX OF 7
|
|
*
|
|
MANDSV LDX #P1MAN
|
|
LDD #$1508
|
|
JSR BLKCLR CLEAR MAN DISPLAY
|
|
LDX #P2MAN
|
|
JSR BLKCLR CLEAR EM OUT
|
|
LDY #MNPIC
|
|
LDA ZP1LAS
|
|
BEQ MAND2
|
|
CMPA #7
|
|
BLS MAND1
|
|
LDA #7
|
|
MAND1 STA XTEMP
|
|
LDD #P1MAN
|
|
MAND1L JSR PCTON
|
|
ADDA #4
|
|
DEC XTEMP
|
|
BNE MAND1L
|
|
MAND2 LDA ZP2LAS
|
|
BEQ MAND3
|
|
CMPA #7
|
|
BLS MAND2A
|
|
LDA #7
|
|
MAND2A STA XTEMP
|
|
LDD #P2MAN
|
|
MAND2L JSR PCTON
|
|
ADDA #4
|
|
DEC XTEMP
|
|
BNE MAND2L
|
|
MAND3 RTS
|
|
*
|
|
*DISPLAY BORDER
|
|
*
|
|
BORDER LDX #(XMIN-1)*256+YMIN-2
|
|
LDA WALCOL
|
|
BORD1 STA (XMAX-XMIN)*$100+$200,X
|
|
STA ,X+
|
|
CMPX #(XMIN-1)*256+YMAX+2
|
|
BLS BORD1
|
|
LDX #XMIN*256+YMIN-2
|
|
LDB WALCOL
|
|
BORD2 STD ,X
|
|
STD YMAX-YMIN+3,X
|
|
LEAX 256,X
|
|
CMPX #XMAX*256+YMIN-2
|
|
BLS BORD2
|
|
RTS
|
|
*
|
|
*POST REFRESH PROCESS
|
|
*PSTREF=#TO REF EVERY 2 FRAME
|
|
PSTRPC LDU PSTIN
|
|
CMPU #PSLIST+64
|
|
BLO PSTP0
|
|
LDU #PSLIST
|
|
PSTP0 LDA PSTREF
|
|
PSHS A
|
|
LDY PSTANI
|
|
PSTPL LDX ,U++
|
|
BEQ PSTP01
|
|
LDD ,Y
|
|
EORA #4
|
|
EORB #4
|
|
SEI
|
|
STD DMASIZ SETUP SIZE
|
|
LDB PSTCOL
|
|
STB DMACON
|
|
LDD OBJDAT,Y
|
|
STD DMAORG
|
|
LDD OBJX,X
|
|
STD DMADES
|
|
LDB #$1A
|
|
STB DMACTL
|
|
CLI
|
|
PSTP01 DEC ,S
|
|
BNE PSTPL
|
|
LEAS 1,S
|
|
STU PSTIN
|
|
NAP 2,PSTRPC
|
|
*
|
|
*MINI MAN PICT
|
|
*
|
|
MNPIC FCB 3,8
|
|
FDB MANPD
|
|
MANPD FCB $02,$22,$00
|
|
FCB $BB,$0B,$B0
|
|
FCB $BB,$0B,$B0
|
|
FCB $00,$20,$00
|
|
FCB $88,$08,$80
|
|
FCB $30,$80,$30
|
|
FCB $08,$08,$00
|
|
FCB $88,$08,$80
|
|
*
|
|
*LASER PICT PTRS
|
|
*
|
|
LLPIC FCB 3,1
|
|
FDB LLPC
|
|
ULPIC FCB 1,6
|
|
FDB ULPC
|
|
DLLPIC FCB 3,6
|
|
FDB DLLPC
|
|
ULLPIC FCB 3,6
|
|
FDB ULLPC
|
|
*LASER PICTURES
|
|
LLPC FCB $AA,$AA,$AA
|
|
ULPC FCB $A0,$A0,$A0,$A0,$A0,$A0
|
|
DLLPC FCB $00,$00,$0A
|
|
FCB $00,$00,$A0
|
|
FCB $00,$0A,$00
|
|
FCB $00,$A0,$00
|
|
FCB $0A,$00,$00
|
|
FCB $A0,$00,$00
|
|
ULLPC FCB $A0,$00,$00
|
|
FCB $0A,$00,$00
|
|
FCB $00,$A0,$00
|
|
FCB $00,$0A,$00
|
|
FCB $00,$00,$A0
|
|
FCB $00,$00,$0A
|
|
*
|
|
*PLAYER IMAGES...
|
|
MANLP1 FCB 4,12
|
|
FDB MANLD1
|
|
MANLP2 FCB 4,12
|
|
FDB MANLD2
|
|
MANLP3 FCB 4,12
|
|
FDB MANLD3
|
|
MANRP1 FCB 4,12
|
|
FDB MANRD1
|
|
MANRP2 FCB 4,12
|
|
FDB MANRD2
|
|
MANRP3 FCB 4,12
|
|
FDB MANRD3
|
|
MANDP1 FCB 4,12
|
|
FDB MANDD1
|
|
MANDP2 FCB 4,12
|
|
FDB MANDD2
|
|
MANDP3 FCB 4,12
|
|
FDB MANDD3
|
|
MANUP1 FCB 4,12
|
|
FDB MANUD1
|
|
MANUP2 FCB 4,12
|
|
FDB MANUD2
|
|
MANUP3 FCB 4,12
|
|
FDB MANUD3
|
|
MANLD1 EQU *
|
|
FDB $0B22,$2000
|
|
FDB $0BBB,$BB00
|
|
FDB $0B22,$2B00
|
|
FDB $0022,$2000
|
|
FDB $0009,$0000
|
|
FDB $0099,$9000
|
|
FDB $0093,$9000
|
|
FDB $0093,$9000
|
|
FDB $0003,$0000
|
|
FDB $0001,$0000
|
|
FDB $0099,$0000
|
|
FDB $0000,$0000
|
|
MANLD2 EQU *
|
|
FDB $0B22,$2000
|
|
FDB $0BBB,$BB00
|
|
FDB $0B22,$2B00
|
|
FDB $0022,$2000
|
|
FDB $0009,$0000
|
|
FDB $0009,$9000
|
|
FDB $0333,$9300
|
|
FDB $0009,$9300
|
|
FDB $0090,$9300
|
|
FDB $0090,$9000
|
|
FDB $0990,$9000
|
|
FDB $0000,$0000
|
|
MANLD3 EQU *
|
|
FDB $0B22,$2000
|
|
FDB $0BBB,$BB00
|
|
FDB $0B22,$2B00
|
|
FDB $0022,$2000
|
|
FDB $0009,$0000
|
|
FDB $0009,$9000
|
|
FDB $0339,$9300
|
|
FDB $0009,$9300
|
|
FDB $0090,$9300
|
|
FDB $0090,$9000
|
|
FDB $0990,$9000
|
|
FDB $0000,$0000
|
|
MANRD1 EQU *
|
|
FDB $0222,$B000
|
|
FDB $BBBB,$B000
|
|
FDB $B222,$B000
|
|
FDB $0222,$0000
|
|
FDB $0090,$0000
|
|
FDB $0999,$0000
|
|
FDB $0939,$0000
|
|
FDB $0939,$0000
|
|
FDB $0030,$0000
|
|
FDB $0090,$0000
|
|
FDB $0099,$0000
|
|
FDB $0000,$0000
|
|
MANRD2 EQU *
|
|
FDB $0222,$B000
|
|
FDB $BBBB,$B000
|
|
FDB $B222,$B000
|
|
FDB $0222,$0000
|
|
FDB $0090,$0000
|
|
FDB $0990,$0000
|
|
FDB $3993,$3000
|
|
FDB $3990,$0000
|
|
FDB $3909,$0000
|
|
FDB $0909,$0000
|
|
FDB $0909,$9000
|
|
FDB $0000,$0000
|
|
MANRD3 EQU *
|
|
FDB $0222,$B000
|
|
FDB $BBBB,$B000
|
|
FDB $B222,$B000
|
|
FDB $0222,$0000
|
|
FDB $0090,$0000
|
|
FDB $0990,$0000
|
|
FDB $3933,$3000
|
|
FDB $3990,$0000
|
|
FDB $3909,$0000
|
|
FDB $0909,$0000
|
|
FDB $0909,$9000
|
|
FDB $0000,$0000
|
|
MANDD1 EQU *
|
|
FDB $0022,$2000
|
|
FDB $BBB2,$BBB0
|
|
FDB $B0B0,$B0B0
|
|
FDB $0B22,$2B00
|
|
FDB $0009,$0000
|
|
FDB $0993,$9900
|
|
FDB $3993,$9930
|
|
FDB $3093,$9030
|
|
FDB $3090,$9030
|
|
FDB $0090,$9000
|
|
FDB $0990,$9900
|
|
FDB $0000,$0000
|
|
MANDD2 EQU *
|
|
FDB $0022,$2000
|
|
FDB $BBB2,$BBB0
|
|
FDB $B0B0,$B0B0
|
|
FDB $0B22,$2B00
|
|
FDB $0009,$0000
|
|
FDB $0993,$9900
|
|
FDB $3993,$9930
|
|
FDB $3093,$9030
|
|
FDB $3090,$9000
|
|
FDB $0990,$9000
|
|
FDB $0000,$9000
|
|
FDB $0000,$9900
|
|
MANDD3 EQU *
|
|
FDB $0022,$2000
|
|
FDB $BBB2,$BBB0
|
|
FDB $B0B0,$B0B0
|
|
FDB $0B22,$2B00
|
|
FDB $0009,$0000
|
|
FDB $0993,$9900
|
|
FDB $3993,$9930
|
|
FDB $3093,$9030
|
|
FDB $0090,$9030
|
|
FDB $0090,$9900
|
|
FDB $0090,$0000
|
|
FDB $0990,$0000
|
|
MANUD1 EQU *
|
|
FDB $BB22,$2BB0
|
|
FDB $B222,$22B0
|
|
FDB $B222,$22B0
|
|
FDB $0022,$2000
|
|
FDB $0009,$0000
|
|
FDB $0999,$9900
|
|
FDB $3999,$9930
|
|
FDB $3099,$9030
|
|
FDB $3090,$9030
|
|
FDB $0090,$9000
|
|
FDB $0990,$9900
|
|
FDB $0000,$0000
|
|
MANUD2 EQU *
|
|
FDB $BB22,$2BB0
|
|
FDB $B222,$22B0
|
|
FDB $B222,$22B0
|
|
FDB $0022,$2000
|
|
FDB $0009,$0000
|
|
FDB $0999,$9900
|
|
FDB $3999,$9930
|
|
FDB $3099,$9030
|
|
FDB $3090,$9000
|
|
FDB $0990,$9000
|
|
FDB $0000,$9000
|
|
FDB $0000,$9900
|
|
MANUD3 EQU *
|
|
FDB $BB22,$2BB0
|
|
FDB $B222,$22B0
|
|
FDB $B222,$22B0
|
|
FDB $0022,$2000
|
|
FDB $0009,$0000
|
|
FDB $0999,$9900
|
|
FDB $3999,$9930
|
|
FDB $3099,$9030
|
|
FDB $0090,$9030
|
|
FDB $0090,$9900
|
|
FDB $0090,$0000
|
|
FDB $0990,$0000
|
|
END
|