**Arkanoid II** BALLS
BEQ CAPSET
CMP #1,D0
BEQ GSNAK
CMP #2,D0
BEQ B16
MULTIMEG:MOVE #1,MEGA
MOVE.L #$5A950,BALLTYPE
BRA DISPJN
BADMULT:MOVE #8,BADMAX
BRA CAPSET
B16: MOVE.B #16,BALLS
MOVE.L #ESHOT,D7
BSR SON
MOVE BALLINPLAY,D0
BSR TRNSCLC
BSR TRNSIN
MOVE #48,D0
BSR TRNSCLC
MOVE SPEED,D0
ASL #4,D0
MOVE.L #DIRTABX,A0
ADD D0,A0
MOVE #7,d1
B16ER: MOVE DIRTABY-DIRTABX(A0),YDRCT
MOVE (A0)+,XDRCT
TST 256(A5)
BPL B162
BSR TRNSOUT
B162: NEG YDRCT
ADDQ.L #2,A5
TST 256(A5)
BPL B163
BSR TRNSOUT
B163: ADDQ.L #2,A5
DBRA D1,B16ER
BRA CAPSET
GLAS: MOVE.B #LAS,BATTYPE
MOVE.L #X+48,MAXSHOTS
BRA CAPSET
GSNAK: MOVE BALLINPLAY,D0
BSR TRNSCLC
BSR TRNSIN
MOVE X,SNAKX
MOVE Y,SNAKY
MOVE XDRCT,SNAKXD
MOVE YDRCT,SNAKYD
MOVE ANGLE,SNAKANG
MOVE #11,D0
SUB.B BALLS,D0
MOVE D0,SNAKCNTR
MOVE.B #20,SPEEDUP
BRA CAPSET
NGOL:
CAPSET: MOVE.B OLDBT,D7
BEQ.L STRNS
CMP.B #ext,D7
BEQ.S EXRET
CMP.B #SHRINK,D7
BEQ SHRKRET
CMP.B #TWIN,D7
BEQ CAPFIN
CMP.B #GHOST,D7
BEQ GHOSTRET
CMP.B #las,D7
BNE.L STRNS
MOVE.L #$6E340,SRCE+4
MOVE.L #$6E350,MASK+4
MOVE.B #24,GLOCNT
RETNGLO: MOVE.L #-$820,GLODRN
MOVE.B #2,TRANS
BRA.S CAPFIN
EXRET: MOVE.L #$6D2D0,SRCE+4
MOVE.L #$6D2E8,MASK+4
MOVE.B #16,GLOCNT
MOVE #1,XCHNGE
MOVE.L #E5,D7
BSR.L son
BRA.S RETNGLO
SHRKRET:MOVE.L #$6D470,SRCE+4
MOVE.L #$6D488,MASK+4
MOVE.B #16,GLOCNT
MOVE #-1,XCHNGE
MOVE.L #E42,D7
BSR son
BRA.S RETNGLO
GHOSTRET:MOVE #-1,C+4
MOVE #-1,C+6S
TRNS: BSR.L STRANS
CAPFIN: MOVE.L #player1 +2,A0
BSR.L score
CAPEND: MOVE #$FFFF,C+10
NOCAP:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SPARKLESPARKLER: SUBQ.W #1,SKCNTR
BNE.S NSPARKLER
MOVE #2,SKCNTR
MOVE.L #X,A0
MOVE.L #30,D1
ADD.L D1,A0
S
[...]
OVE X+18,(A1)
MOVE D0,C-X(A1)
MOVE Y,Y-X(A1)
MOVE XDRCT,XDRCT-X(A1)
MOVE YDRCT,YDRCT-X(A1)
MOVE #-1,ANGLE-X(A1)
ADDQ #1,BADNO
BSR RANDSUB
AND BADAND,D0
ADD BADPLUS,D0
MOVE D0,BADTYPE
MOVE D0,XCALC-X(A1)
CMP #7,D0
BNE NBONST
CLR YDRCT-X(A1)
BONST: BSR RANDSUB
AND #2,D0
SUBQ #1,D0
MOVE D0,XDRCT-X(A1)
NBONST: MOVE BADTYPE,D1
ASL #2,D1
MOVE.L #BADADD,A4
ADD D1,A4
MOVE.L BADRST-BADADD(A4),D0
MOVE.L D0,(A2)
ADD.L BADMSK-BADADD(A4),D0
MOVE.L D0,MASK-SRCE(A2)
MOVE.L BADHEI-BADADD(A4),HEI-SRCE(A2)
TCLOSE: ADDQ.W #1,Y+18
SUBQ.L #2,HEI+140
BGT.S NPART
CLR.B TADIRN
MOVE #-1,C+18
BRA.S NPART
NPART:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BREKKER:TST.B BREK
BEQ NBREKR
MOVE.L #-1,BACKS+768+52
MOVE.L #-1,BACKS+768+32
LEA SRCE+116,A0
MOVE.L (A0),D0
ADD.L #$B40,D0
CMP.L #$6AA38,D0
BCS.S BRKJN
MOVE.L #$68878,D0
BRKJN: MOVE.L D0,(A0)
NBREKR:
MLOOPEND:
;******************************************************
BSR.L REPCOPY
MOVE #1,CNTR
BREPLP: MOVE CNTR,D0
BSR.L replace
ADDQ.W #1,CNTR
CMP.W #64,CNTR
BCS.S BREPLP
MOVE #15,D1
MOVE #48,D0
PRNLP: BSR DIRECT
ADDQ #1,D0
DBRA D1,PRNLP
MOVE #22,D1
MOVE #1,D0
EPRLP: BSR.L prnt
ADDQ #1,D0
DBRA D1,EPRLP
TST SYNC
BEQ NS1
BSR SETSCRN
NS1: MOVE #23,D1
MOVE #24,D0
EPRLP2: BSR.L prnt
ADDQ #1,D0
DBRA D1,EPRLP2
NSPKPRT: BSR KEYS
BOTWAIT:TST SYNC
BEQ BOTWAIT
BSR SETSCRN
BSR.L wvbl2
BSR SWAPSCRN
TST.B SCORFLG
BEQ.S NSCPR
BSR.L SCOREPRNT
NSCPR: TST.B BREK
BEQ.S NTOUT2
MOVE.W #1,BATMOV
MOVE XMAX,D0
ADDQ #8,D0
CMP X+8,D0
BCS.L BROUT
NEG BATMOV
CMP #12,X+8
BCS BROUT
NTOUT2: TST DOH
BNE LAST
NTOUT: TST DECIDE
BEQ NDECIDE
SUBQ #1,DECIDE
BNE NDECIDE
MOVE #1,BATMOV
CMP #90,X+8
BCC BROUT
NEG BATMOV
BRA BROUT
NDECIDE:TST FIN
BNE END
TST.B BALLS
BGT.L MLOOP
MOVE.L #-1,BACKS+208
MOVE.L #-1,BACKCOP+208
MOVE.L #E7,D7
BSR.L son
BSR.L ALLOUT
BSR.L INITPHYS
TST DOH
BEQ NLASTDEED
MOVE PURPLE,PALREG+20
NLASTDEED:BSR.L NORMBAT
MOVE.L #$68880,SRCE+4
MOVE.L #$68890,MASK+4
SUBQ #2,Y+8
MOVE.L #14,HEI+4
MOVE.L #4,D1
DISAPPEAR: MOVE #4,D0
BSR.L prnt
MOVE.W #5,D0
BSR.L wayter
MOVE.L SRCE+4,D0
ADD.L #$8C0,D0
MOVE.L D0,SRCE+4
ADD.L #$10,D0
MOVE.L D0,MASK+4
MOVE #4,D0
BSR.L replace
DBRA D1,DISAPPEAR
SUBQ.B #1,LIVES
BMI.L DEED
LEA REBCNTR,A0
MOVE #31,D0
SREAPLP:TST.W (A0)
BMI.S SREAPNXT
MOVE.L 128(A0),A6
MOVE.L #-1,128(A0)
MOVE.L #-1,(A0)
MOVE.B REAPHITS,(A6)
MOVEM.L A0-A6/D0-D7,-(SP)
BSR REAPRNT
MOVEM.L (SP)+,A0-A6/D0-D7S
REAPNXT:ADDQ #4,A0
DBRA D0,SREAPLP LEA X+48,A1
MOVREPLP:MOVE 256(A1),D0
BMI MOVRNXT
MOVE D0,C
ADD #128,D0
MOVE XCALC-X(A1),X
MOVE YCALC-X(A1),Y
BSR GRIDDLE
MOVE.B D0,(A6)
MOVRNXT:ADDQ #2,A1
CMP.L #X+64,A1
BNE MOVREPLP
TST.B PLAYERMAX
BEQ.L NUMAN
SWPLAYERS:TST.B OLIVES
BMI.L NUMAN
MOVE.B LIVES,D0
MOVE.B OLIVES,LIVES
MOVE.B D0,OLIVES
MOVE SCREEN,D0
MOVE OSCREEN,SCREEN
MOVE D0,OSCREEN
MOVE.B round+6,D0
MOVE.B Oround,round+6
MOVE.B D0,Oround
MOVE.B round+7,D0
MOVE.B Oround+1,round+7
MOVE.B D0,Oround+1
MOVE.B OXTR,D0
MOVE.B XTR,OXTR
MOVE.B D0,XTR
MOVE.B LASTHIT,D0
MOVE.B OLASTHIT,LASTHIT
MOVE.B D0,OLASTHIT
MOVE #4,D1
LEA player1,A0
LEA player2,A1
SCTRNS: MOVE.B (A0),D0
MOVE.B (A1),(A0)+
MOVE.B D0,(A1)+
DBRA D1,SCTRNS
BSR INITPHYS
EOR.W #31,PLAYERY
MOVE #127,D1
LEA GRID,A0
LEA OGRID,A1
GDTRNS: MOVE.L (A0),D0
MOVE.L (A1),(A0)+
MOVE.L D0,(A1)+
DBRA D1,GDTRNS
ADDQ.B #1,FIRST
BEQ.L NUSCREEN1
CMP #66,SCREEN
BPL NUSCREEN1
MOVE.B #1,FIRST
BRA.L NUPLAY
DEED: MOVE.L #gameover,A4
MOVE #76,X
MOVE #152,Y
CLR.B TEXTMSK
BSR.L pmes
MOVE.L #50,D0
BSR.L wayter
LEA hituneB,A0
LEA hitune,A1
LEA hitune,A2
BSR.L tunest
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HISCORELASTJN: BSR.L clrplay
MOVE.B #1,TEXTMSK
LEA hitable+8,A0
LEA player1,A1
CLR.W CNTR
SCPOS: MOVE CNTR,D0
ASL #5,D0
CLR.W D1
SCMP: MOVE.B (A0,D0.W),D2
CMP.B (A1,D1.W),D2
BEQ.S SCMPNXT
BCC.S SCPNXT
BRA.S COPLP
SCMPNXT:ADDQ #1,D0
ADDQ #1,D1
CMP #5,D1
BNE.S SCMP
SCPNXT: ADDQ #1,CNTR
CMP #5,CNTR
BCS.S SCPOS
MOVE #-1,CNTR
BRA.L HIPAST
COPLP: LEA hitable+104,A2
MOVE.W #3,D0
SUB CNTR,D0
BMI.S COPPER
COPLP4: MOVE #18,D1
COPLP3: MOVE.B (A2,D1.W),32(A2,D1.W)
DBRA D1,COPLP3
SUB.L #32,A2
DBRA D0,COPLP4
COPPER: MOVE CNTR,D0
ASL #5,D0
MOVE #4,D1
ADDQ #4,D0
COPLP2: MOVE.B (A1,D1.W),(A0,D0.W)
SUBQ #1,D0
DBRA D1,COPLP2
MOVE.B roun
PKLFLP: TST 256(A0)
BMI.S SPKLNFND
MOVEQ #0,D0
MOVE 256(A0),D0
ADDQ #1,D0
CMP.W #24,D0
BCS.S SPKOK
MOVE.W #$FFFF,D0
SPKOK: MOVE D0,256(A0)
SPKLNFND: SUBQ.W #2,A0
SUBQ.W #2,D1
CMP.W #28,D1
BCC.S SPKLFLP
NSPARKLER:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PARTERPARTER: CMP.W #1,SKCNTR
BNE.L NPART
TST DOH
BNE PUSTULE
TST.B TADIRN
BEQ.L NPART
BMI.L TCLOSE
ADDQ.L #2,HEI+140
SUBQ.W #1,Y+18
BPL.L NPART
MOVE.B #-1,TADIRN
CLR XDRCT
MOVE #1,YDRCT
MOVE #7,Y
BRA BADGEN
PUSTULE:MOVEQ #0,D0
MOVE.B TADIRN,D0
TST.B D0
BEQ NPART
ADD.B D0,SRCE+260+3
ADDQ.B #1,TACNTR
CMP.B #3,TACNTR BEQ PUSBAD
CMP.B #6,TACNTR BNE NPART
MOVE #-1,C+18
CLR.B TADIRN
BRA NPART
PUSBAD: NEG.B TADIRN
MOVE BADMAX,D0
CMP BADNO,D0
BLE NPART
MOVE PXD,XDRCT
MOVE PYD,YDRCT
MOVE X+18,D0
ADD PXD,D0
ADD PXD,D0
MOVE D0,X+18
MOVE Y+18,D0
ADD PYD,D0
ADD PYD,D0
MOVE D0,YBADGEN:
MOVE.L #X+64,A1
MOVE.L #SRCE+224,A2
MOVE.B #8,CNTR
BADSLP: CMP.W #0,256(A1)
BMI.S BADST
ADDQ.L #2,A1
ADDQ.L #4,A2
SUBQ.B #1,CNTR
BNE.S BADSLP
BRA.L TCLOSE
BADST: MOVE #64,D0
SUB.B CNTR,D0
[...]
,D0 BSR WAYTER
DBRA D1,SHRINKA
MOVE #5,D0
BSR REPLACE
MOVE #10,D0
BSR WAYTER
BSR.L INITPHYS
BSR DARK
BSR.L transfer
BSR.L CZERO
MOVE.B #1,SUPERUSER
BSR BLUESHIP
BSR.L SCOREPRNT
BSR.L HISCPRNT
LEA hituneB,A0
LEA hitune,A1
LEA hitune,A2
BSR tunest
MOVE.L #$78000,A0
MOVE.L #$70000,A1
MOVE #$1F40,D0
SHBK: MOVE.L (A0)+,(A1)+
DBRA D0,SHBK
CLR CNTR
MOVE.L #$69058,SRCE+328
MOVE #82,C+2
MOVE #98,X+2
MOVE #151,Y+2
MOVE #83,C
MOVE #134,X
MOVE #60,Y
MOVE.L #$6BB98,SRCE+332
LASTALP:BSR WVBL
MOVE #0,D0
BSR REPLACE
MOVE CNTR,D0
AND #7,D0
BNE NHCLOSE
CMP #38,CNTR
BMI NHOPEN
CMP #58,CNTR
BPL NHOPEN
ADD.L #$780,SRCE+328
MOVE #1,D
[...]
d+6,11(A0,D0.W)
MOVE.B round+7,12(A0,D0.W)
ADD #17,D0
MOVE.B #32,(A0,D0.W)
MOVE.B #32,1(A0,D0.W)
MOVE.B #32,2(A0,D0.W)
MOVE.L #hiscore,A1
MOVE #4,D1
HISCLP: MOVE.B (A0,D1.W),(A1,D1.W)
DBRA D1,HISCLP
BSR.L HISCPRNT
HIPAST: MOVE D0,D3
MOVE.L A0,A3
MOVE.L #records,A4
MOVE #0,X
MOVE #25,Y
BSR.L ymes
MOVE.L #hitable,A4
BSR.L pmes
TST.B CNTR
BMI.L NHENT
MOVE CNTR,D0
LSL #4,D0
ADD #105,D0
MOVE D0,Y
MOVE #192,X
MOVE #2,D2
INPT: BSR.L twvbl
BSR.L inkey
TST.B D0
BEQ.S INPT
CMP.B #13,D0
BEQ.S NHENT
MOVE.L D0,D1
SWAP D1
CMP.B #$0E,D1
BNE.S NDELETE
CMP #2,D2
BEQ.S INPT
SUBQ #8,X
MOVE #32,D0
BSR.L textprnt
SUBQ #8,X
ADDQ #1,D2
SUBQ #1,D3
BRA.S INPT
NDELETE:TST.B D2
BMI.S INPT
CMP.B #32,D0
BEQ.S INPOK
AND.L #223,D0
CMP.B #65,D0
BCS.S INPT
CMP.B #91,D0
BCC.S INPTI
NPOK: MOVE.B D0,(A3,D3.W)
BSR.L textprnt
ADDQ.B #1,D3
SUBQ #1,D2
BRA.S INPT
NHENT: LEA gotune,A1
LEA gotune,A0
LEA gotune+2,A2
BSR.L tunest
MOVE.B #24,TRANS2
MOVE.B #24,TRANS3
MOVE #80,D0
BSR.L twayter
TST.B PLAYERMAX
BEQ.S mbwt
TST.B OLIVES
BPL.L SWPLAYERS
mbwt: MOVE #400,CNTR
mbwait: BSR.L wvbl
SUBQ #1,CNTR
BEQ.S RESTART
TST.B mbut
BEQ.S mbwait
RESTART:BRA.L NUGAME
BROUT: MOVE.L #E13,D7
BSR son CLR.B PRIORITY
BSR.L INITPHYS
BSR.L ALLOUT
MOVE.L #$7F2D0,BACKS+4
MOVE.L #19,BACKW+4
MOVE.L #12,BACKH+4
MOVE.B #40,CNTR
BRLP: MOVE X+8,D0
ADD.W BATMOV,D0
MOVE D0,X+8
BSR.L wvbl
MOVE #4,D0
BSR.L replace
MOVE #8,D0
BSR.L prnt
MOVE #13,D0
BSR prnt
MOVE #4,D0
BSR.L prnt
MOVE #1,D0
BSR.L replace
CMP #-30,X+8
BLT BRFIN
CMP #220,X+8
BLT.S BRLP
BRFIN: MOVE #100,CNTR
BRSC: MOVE.L #player1 +3,A0
BSR.L score
BSR.L SCOREPRNT
SUBQ #1,CNTR
BNE.S BRSC
BSR.L wvbl
NUSC: BSR.L INITPHYS
MOVE.L #round+7,A0
BSR.L score
MOVE SCREEN,D1
AND #254,D1
MOVEQ #5,D0
SUB BATMOV,D0
LSR #1,D0
ADD D0,D1
MOVE D1,SCREEN
BRA.L NUSCREEN
LAST: TST.B LASTHIT
BPL NTOUT
CMP #2,DOH
BEQ ATLAST
BPL ENDSTORY
TST.W C+2
BMI B1OUT
BRA NTOUT
B1OUT: BSR ALLOUT
MOVE.L #EFADE,D7
BSR SON
MOVE #$467,COL5
MOVE #$007,COL12
MOVE #$345,COL13
MOVE #$004,COL14
CLR PALREG+20
; RING BLACK
MOVE #3,INTON
MOVE #$777,D0
BRFADE: MOVE.L #COL5,A0
MOVE #3,D1
BRFADE1:MOVE D0,(A0)
BSR WVBL
BSR WVBL
BSR WVBL
ADDQ #2,A0
DBRA D1,BRFADE1
SUB #$111,D0
BPL BRFADE
MOVE.L PHYS,-(SP)
MOVE #69,C
MOVE #54,Y
MOVE #70,X
BSR PRNT0
BSR SWAPSCRN
BSR PRNT0
MOVE.L #$70000,PHYS
BSR PRNT0
MOVE.L (SP)+,PHYS
MOVE #70,C+2
MOVE #68,Y+2
MOVE #96,X+2
MOVE.B #-1,LASTHIT
CLR BADMAX
CLR BADNO
CLR INTON
BSR SETSCRN
MOVE #30,D0
LEA C+10,A0
MOVE.L #-1,D1
BSLP: MOVE.L D1,(A0)+
DBRA D0,BSLP
BSR BREKSTART
MOVE #1,D0
BSR PRNT
MOVE #20,D0
BSR WAYTER
MOVE PURPLE,PALREG+20
MOVE #20,D0
BSR WAYTER
CLR CNTR
BSR SWAPSCR
NBRAINLP:BSR REPCOPY
BSR BAT
MOVE #1,D0
BSR REPLACE
MOVE #1,D0
BSR PRNT
MOVE #4,D0
BSR REPLACE
MOVE #4,D0
BSR PRNT
BSR WVBL
BSR SETSCRN
BSR WVBL
BSR SWAPSCRN
ADDQ #1,CNTR
MOVE CNTR,D0
LSR #2,D0
SUB D0,Y+2
BPL BRAINLP
MOVE #1,D0
BSR REPLACE
BSR REPCOPY
MOVE #1,D0
BSR REPLACE
MOVE #-1,C+2
CLR DOH
BRA NTOUT
ATLAST: MOVE.L #$3CBA0,SRCE+184
MOVE.L PHYS,-(SP)
BSR.L ALLOUT
MOVE.L #$78000,PHYS
Bsr setscrn
MOVE.L #E12,D7
BSR.L son
MOVE #56,CNTR
MOVE.L #$38030,SRCE+188
MOVE #47,C
MOVE #68,X
MOVE #28,Y
DERES: BSR.L prnt0
ADD.L #$140,SRCE+188
ADDQ #2,Y
BSR.L wvbl
SUBQ #1,CNTR
BNE.S DERES
MOVE #$777,CNTR
FADER: MOVE CNTR,D0
MOVE D0,PALREG+20
MOVE #4,D0
BSR.L wayter
SUB #$111,CNTR
BPL.S FADER
MOVE.L #$70000,PHYS
BSR SCLR
MOVE.L #$78000,PHYS
MOVE #79,C
MOVE #40,Y
MOVE #85,X
BSR PRNT0
MOVE #90,X
BSR PRNT0
MOVE #$705,PURPLE
MOVE #$705,PALREG+20
MOVE.L #$78000,A0
MOVE.L #$70000,A1
MOVE.L #$40000,A2
MOVE #$1F40,D0
DBBLP: MOVE.L (A0),(A1)+
MOVE.L (A0)+,(A2)+
DBRA D0,DBBLP
MOVE #3,DOH
MOVE.L #gridmap+$4C80,A0
MOVE.L #GRID+16,A1
MOVE.L #71,D0
SCRSLP2:MOVE.L (A0)+,(A1)+
DBRA D0,SCRSLP2
MOVE.L #C+12,A0
MOVE #59,D0
ZERLOP: MOVE #-1,(A0)+
DBRA D0,ZERLOP
MOVE.L #X+32,A0
MOVE #19,D0
TENTSET:MOVE #-1,C-X(A0)
MOVE #2,YDRCT-X(A0)
ADDQ #2,A0
DBRA D0,TENTSET
MOVE.L (SP)+,PHYS
MOVE #68,SCREEN
BRA NUSCREEN
ENDSTORY:BSR TUNOFF
BSR ALLOUT
MOVE #5,D0
BSR REPLACE
BSR SETSCRN
CLR PALREG+20
MOVE #81,C+10
ADDQ #6,Y+10
ADDQ #3,X+10
MOVE.L #$3DB80,SRCE+324
MOVE.L #EWAH,D7
BSR SON MOVE #3,D1
SHRINKA:ADD.L #$10,SRCE+324
MOVE #5,D0
BSR PRNT
MOVE #10(