Skip to content

[Example] Line-Buster-6502 #171

Description

@edit12-scratcher

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

; 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


Submitted via Learn6502 app

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions