Please do not edit below this line.
; Line Buster 6502
; by edit12
BEGINNING:
LDX #$1C ;NUMBER POSITION
STX $0A
LDX #$0
STX $06 ;ONES
LDX #$0
STX $07 ;TENS
LDX #$0
STX $08 ;HUNDREDS
LDX #$0
STX $09 ;THOUSANDS
DIRECTNUMBERSET:
LDA #$00
LDX #$1C
LDY #$00
JSR DRAWNUMBER0 ;ONES
LDA #$00
LDX #$18
LDY #$00
JSR DRAWNUMBER0 ;TENS
LDA #$00
LDX #$14
LDY #$00
JSR DRAWNUMBER0 ;HUNDREDS
LDA #$00
LDX #$10
LDY #$00
JSR DRAWNUMBER0 ;THOUSANDS
LDA #$01
LDX #$00
LDY #$00
JSR DRAWLINES
;0----------------------------
DRAWNUMBER0:
LDA DIGIT0,Y
STA $0200,X
INX
INY
LDA DIGIT0,Y
STA $0200,X
INX
INY
LDA DIGIT0,Y
STA $0200,X
INX
INY
LDA DIGIT0,Y
STA $0200,X
INX
INY
STY $00
LDY #$00
CLEARX0:
DEX
INY
CPY #$04
BNE CLEARX0
LDY #$00
NEXTY0:
INX
INY
CPY #$20
BNE NEXTY0
LDY $00
CPY #$10
BNE DRAWNUMBER0
RTS
;1--------------------------
DRAWNUMBER1:
LDA DIGIT1,Y
STA $0200,X
INX
INY
LDA DIGIT1,Y
STA $0200,X
INX
INY
LDA DIGIT1,Y
STA $0200,X
INX
INY
LDA DIGIT1,Y
STA $0200,X
INX
INY
STY $00
LDY #$00
CLEARX1:
DEX
INY
CPY #$04
BNE CLEARX1
LDY #$00
NEXTY1:
INX
INY
CPY #$20
BNE NEXTY1
LDY $00
CPY #$10
BNE DRAWNUMBER1
RTS
;2------------------------
DRAWNUMBER2:
LDA DIGIT2,Y
STA $0200,X
INX
INY
LDA DIGIT2,Y
STA $0200,X
INX
INY
LDA DIGIT2,Y
STA $0200,X
INX
INY
LDA DIGIT2,Y
STA $0200,X
INX
INY
STY $00
LDY #$00
CLEARX2:
DEX
INY
CPY #$04
BNE CLEARX2
LDY #$00
NEXTY2:
INX
INY
CPY #$20
BNE NEXTY2
LDY $00
CPY #$10
BNE DRAWNUMBER2
RTS
;3------------------------
DRAWNUMBER3:
LDA DIGIT3,Y
STA $0200,X
INX
INY
LDA DIGIT3,Y
STA $0200,X
INX
INY
LDA DIGIT3,Y
STA $0200,X
INX
INY
LDA DIGIT3,Y
STA $0200,X
INX
INY
STY $00
LDY #$00
CLEARX3:
DEX
INY
CPY #$04
BNE CLEARX3
LDY #$00
NEXTY3:
INX
INY
CPY #$20
BNE NEXTY3
LDY $00
CPY #$10
BNE DRAWNUMBER3
RTS
;4------------------------
DRAWNUMBER4:
LDA DIGIT4,Y
STA $0200,X
INX
INY
LDA DIGIT4,Y
STA $0200,X
INX
INY
LDA DIGIT4,Y
STA $0200,X
INX
INY
LDA DIGIT4,Y
STA $0200,X
INX
INY
STY $00
LDY #$00
CLEARX4:
DEX
INY
CPY #$04
BNE CLEARX4
LDY #$00
NEXTY4:
INX
INY
CPY #$20
BNE NEXTY4
LDY $00
CPY #$10
BNE DRAWNUMBER4
RTS
;5------------------------
DRAWNUMBER5:
LDA DIGIT5,Y
STA $0200,X
INX
INY
LDA DIGIT5,Y
STA $0200,X
INX
INY
LDA DIGIT5,Y
STA $0200,X
INX
INY
LDA DIGIT5,Y
STA $0200,X
INX
INY
STY $00
LDY #$00
CLEARX5:
DEX
INY
CPY #$04
BNE CLEARX5
LDY #$00
NEXTY5:
INX
INY
CPY #$20
BNE NEXTY5
LDY $00
CPY #$10
BNE DRAWNUMBER5
RTS
;6------------------------
DRAWNUMBER6:
LDA DIGIT6,Y
STA $0200,X
INX
INY
LDA DIGIT6,Y
STA $0200,X
INX
INY
LDA DIGIT6,Y
STA $0200,X
INX
INY
LDA DIGIT6,Y
STA $0200,X
INX
INY
STY $00
LDY #$00
CLEARX6:
DEX
INY
CPY #$04
BNE CLEARX6
LDY #$00
NEXTY6:
INX
INY
CPY #$20
BNE NEXTY6
LDY $00
CPY #$10
BNE DRAWNUMBER6
RTS
;7------------------------
DRAWNUMBER7:
LDA DIGIT7,Y
STA $0200,X
INX
INY
LDA DIGIT7,Y
STA $0200,X
INX
INY
LDA DIGIT7,Y
STA $0200,X
INX
INY
LDA DIGIT7,Y
STA $0200,X
INX
INY
STY $00
LDY #$00
CLEARX7:
DEX
INY
CPY #$04
BNE CLEARX7
LDY #$00
NEXTY7:
INX
INY
CPY #$20
BNE NEXTY7
LDY $00
CPY #$10
BNE DRAWNUMBER7
RTS
;8------------------------
DRAWNUMBER8:
LDA DIGIT8,Y
STA $0200,X
INX
INY
LDA DIGIT8,Y
STA $0200,X
INX
INY
LDA DIGIT8,Y
STA $0200,X
INX
INY
LDA DIGIT8,Y
STA $0200,X
INX
INY
STY $00
LDY #$00
CLEARX8:
DEX
INY
CPY #$04
BNE CLEARX8
LDY #$00
NEXTY8:
INX
INY
CPY #$20
BNE NEXTY8
LDY $00
CPY #$10
BNE DRAWNUMBER8
RTS
;9------------------------
DRAWNUMBER9:
LDA DIGIT9,Y
STA $0200,X
INX
INY
LDA DIGIT9,Y
STA $0200,X
INX
INY
LDA DIGIT9,Y
STA $0200,X
INX
INY
LDA DIGIT9,Y
STA $0200,X
INX
INY
STY $00
LDY #$00
CLEARX9:
DEX
INY
CPY #$04
BNE CLEARX9
LDY #$00
NEXTY9:
INX
INY
CPY #$20
BNE NEXTY9
LDY $00
CPY #$10
BNE DRAWNUMBER9
RTS
RESETDRAWLINES:
LDX #$00
LDY #$00
LDA #$01
DRAWLINES:
STA $0300,X
INX
INY
CPY #$1F ;NUMBER OF LINE PIXELS
BNE DRAWLINES
STA $0300,X
LDY #$00
NEXTLINEY:
INX
INY
CPY #$21
BNE NEXTLINEY
LDY #$00
CPX #$00 ;ARE THE LINES FINISHED GENERATING?
BNE DRAWLINES
PADDLEANDBALL:
LDY #$00 ;BALL'S DIRECTION
STY $03
LDX #$04 ;POSITION OF THE BALL
STX $01
LDY #$01 ;STRIP CHANGER
STY $02
LDX #$8F ;PADDLE'S POSITION
LDA #$00
TXS
RESETCLEARLINE:
LDX #$80
CLEARLINE:
LDA #$00
STA $0500,X
INX
CPX #$A0
BNE CLEARLINE
RESET:
LDA #$01
LDY #$00
TSX
DRAW:
STA $0500,X
INX
INY
CPY #$04
BNE DRAW
LDX #$00
FREQ:
INX
CPX #$10 ;HOW MANY TIMES DELAYED IN EACH FRAME
BNE FREQ
CHECKKEYS:
LDA $FF
CMP #$64
BEQ RIGHT
CMP #$61
BEQ LEFT
BNE BALL
RIGHT:
TSX
INX
CPX #$9D
BEQ BLOCKRIGHT
BACKTORIGHT:
TXS
LDY #$00
LDA #$00
JMP BALL
LEFT:
TSX
DEX
CPX #$7F
BEQ BLOCKLEFT
BACKTOLEFT:
TXS
LDY #$00
LDA #$00
JMP BALL
BLOCKRIGHT:
DEX
JMP BACKTORIGHT
BLOCKLEFT:
INX
JMP BACKTOLEFT
BALL:
LDX $01
LDA #$00
LDY $02
CPY #$00
BEQ STOREON4
CPY #$01
BEQ STOREON3
CPY #$02
BEQ STOREON2
CPY #$01
BEQ STOREON1
FURTHERINBALL:
LDY $03
CPY #$00
BEQ DOWNRIGHT
CPY #$01
BEQ UPRIGHT
DOWNRIGHT:
LDY #$00
MOVEDOWNRIGHT:
INX
INY
CPX #$FF
BEQ CHANGESTRIPDOWN
CPY #$21
BNE MOVEDOWNRIGHT
JMP CONTINUEBALL
UPRIGHT:
LDY #$00
MOVEUPRIGHT:
DEX
INY
CPX #$00
BEQ CHANGESTRIPUP
CPY #$1F
BNE MOVEUPRIGHT
JMP CONTINUEBALL
CONTINUEBALL:
LDA $0500,X ;CHECK COLLISION ON STRIP 4
CMP #$01
BEQ PADDLEROTATEBALL
LDY $02
LDA #$01
CPY #$00
BEQ STOREON4DRAW
CPY #$01
BEQ STOREON3DRAW
CPY #$02
BEQ STOREON2DRAW
CPY #$03
BEQ STOREON1DRAW
FURTHERINBALL2:
STX $01
JMP RESETCLEARLINE
STOREON4:
STA $0500,X
JMP FURTHERINBALL
STOREON3:
STA $0400,X
JMP FURTHERINBALL
STOREON2:
STA $0300,X
JMP FURTHERINBALL
STOREON1:
STA $0200,X
JMP FURTHERINBALL
STOREON4DRAW:
STA $0500,X
JMP FURTHERINBALL2
STOREON3DRAW:
STA $0400,X
JMP FURTHERINBALL2
STOREON2DRAW:
LDA $0300,X ;CHECK COLLISION ON STRIP 2
CMP #$01
BEQ BUMPFROMTOP
LDA #$01
STA $0300,X
JMP FURTHERINBALL2
STOREON1DRAW:
JMP RESETDRAWLINES
STA $0200,X
JMP FURTHERINBALL2
CHANGESTRIPDOWN:
INX
INY
CPY #$21
BNE CHANGESTRIPDOWN
LDY $02
CPY #$00
BEQ STOPPROGRAM
DEY
STY $02
JMP CONTINUEBALL
CHANGESTRIPUP:
DEX
INY
CPY #$1F
BNE CHANGESTRIPUP
JSR LOADSTRIP
JMP CONTINUEBALL
LOADSTRIP:
LDY $02
INY
STY $02
RTS
PADDLEROTATEBALL: ;IF THE BALL BUMPED ON THE PADDLE
TXA ;A=BALL POS
TSX ;X=PADDLE POS
INX
INX
STX $05
CMP $05 ;CHECK IF THE BALL HIT THE LEFT PADDLE SIDE
LDY $03
LDY #$01
STY $03
JMP RESETCLEARLINE
BUMPFROMTOP:
LDA #$00 ;BREAK IT!
STA $0300,X
INX
STA $0300,X
DEX
DEX
STA $0300,X
INX
JSR COUNTSCORE1
LDY $03 ;CHANGE BALL'S DIRECTION
LDY #$00
STY $03
JMP RESETCLEARLINE
STOPPROGRAM:
BRK ;GAMEOVER
COUNTSCORE1:
LDX $0A
LDX #$1C
STX $0A
LDX $06
INX
INX
INX
INX
INX
STX $06
CHECKNUMBER:
CPX #$00
BEQ CALL0
CPX #$01
BEQ CALL1
CPX #$02
BEQ CALL2
CPX #$03
BEQ CALL3
CPX #$04
BEQ CALL4
CPX #$05
BEQ CALL5
CPX #$06
BEQ CALL6
CPX #$07
BEQ CALL7
CPX #$08
BEQ CALL8
CPX #$09
BEQ CALL9
CPX #$0A
BEQ COUNT10
CALL0:
LDA #$00
LDX $0A
LDY #$00
JSR DRAWNUMBER0
RTS
CALL1:
LDA #$00
LDX $0A
LDY #$00
JSR DRAWNUMBER1
RTS
CALL2:
LDA #$00
LDX $0A
LDY #$00
JSR DRAWNUMBER2
RTS
CALL3:
LDA #$00
LDX $0A
LDY #$00
JSR DRAWNUMBER3
RTS
CALL4:
LDA #$00
LDX $0A
LDY #$00
JSR DRAWNUMBER4
RTS
CALL5:
LDA #$00
LDX $0A
LDY #$00
JSR DRAWNUMBER5
RTS
CALL6:
LDA #$00
LDX $0A
LDY #$00
JSR DRAWNUMBER6
RTS
CALL7:
LDA #$00
LDX $0A
LDY #$00
JSR DRAWNUMBER7
RTS
CALL8:
LDA #$00
LDX $0A
LDY #$00
JSR DRAWNUMBER8
RTS
CALL9:
LDA #$00
LDX $0A
LDY #$00
JSR DRAWNUMBER9
RTS
COUNT10:
LDX #$00
STX $06
JSR CALL0
LDX $0A
LDX #$18
STX $0A
LDX $07
INX
STX $07
CPX #$0A
BEQ COUNT100
CONTCOUNT10:
JMP CHECKNUMBER
COUNT100:
LDX #$00
STX $07
JSR CALL0
LDX $0A
LDX #$14
STX $0A
LDX $08
INX
STX $08
CPX #$0A
BEQ COUNT1000
JMP CHECKNUMBER
COUNT1000:
LDX #$00
STX $08
JSR CALL0
LDX $0A
LDX #$10
STX $0A
LDX $09
INX
STX $09
JMP CHECKNUMBER
DIGIT0:
DCB $0,$1,$0,$0
DCB $1,$0,$1,$0
DCB $1,$0,$1,$0
DCB $0,$1,$0,$0
DIGIT1:
DCB $0,$1,$0,$0
DCB $1,$1,$0,$0
DCB $0,$1,$0,$0
DCB $1,$1,$1,$0
DIGIT2:
DCB $1,$1,$0,$0
DCB $0,$0,$1,$0
DCB $1,$1,$0,$0
DCB $1,$1,$1,$0
DIGIT3:
DCB $1,$1,$0,$0
DCB $0,$1,$1,$0
DCB $0,$0,$1,$0
DCB $1,$1,$0,$0
DIGIT4:
DCB $1,$0,$1,$0
DCB $1,$0,$1,$0
DCB $1,$1,$1,$0
DCB $0,$0,$1,$0
DIGIT5:
DCB $1,$1,$1,$0
DCB $1,$1,$0,$0
DCB $0,$0,$1,$0
DCB $1,$1,$0,$0
DIGIT6:
DCB $0,$1,$1,$0
DCB $1,$1,$0,$0
DCB $1,$0,$1,$0
DCB $0,$1,$0,$0
DIGIT7:
DCB $1,$1,$1,$0
DCB $0,$0,$1,$0
DCB $0,$1,$0,$0
DCB $1,$0,$0,$0
DIGIT8:
DCB $0,$1,$1,$0
DCB $1,$0,$1,$0
DCB $1,$1,$1,$0
DCB $1,$1,$0,$0
DIGIT9:
DCB $0,$1,$0,$0
DCB $1,$0,$1,$0
DCB $0,$1,$1,$0
DCB $1,$1,$0,$0
Please do not edit below this line.
Metadata
{ "slug": "line-buster-6502", "title": "Line Buster 6502", "description": "Break the blocks with the paddle and ball.", "author": "edit12", "license": "CC-BY-4.0", "displayMemory": "00000000000000000000000000000000000100000001000000010000000100000000000000000000000000000000000001000100010001000100010001000100000000000000000000000000000000000100010001000100010001000100010000000000000000000000000000000000000100000001000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101010101010101010101010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000000000101010101010101010101010101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000001010101010101010101010101010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000010101010101010101010101010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }Code
Submitted via Learn6502 app