-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathbox.asm
More file actions
152 lines (124 loc) · 1.75 KB
/
Copy pathbox.asm
File metadata and controls
152 lines (124 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
FPS_CONFIG = $FFFD
CANVAS = $1000
CANVAS_WIDTH = 64
CANVAS_HEIGHT = 64
KEYBOARD = $2000
LINE = $00
BOX_X = $02
BOX_Y = $03
org $8000
init:
lda #<update
sta $FFFE
lda #>update
sta $FFFE+1
lda #$05
sta BOX_X
sta BOX_Y
lda #30
sta FPS_CONFIG
rts
update:
ldy #68
lda KEYBOARD, Y
beq .skip_right
inc BOX_X
.skip_right:
ldy #65
lda KEYBOARD, Y
beq .skip_left
dec BOX_X
.skip_left:
ldy #87
lda KEYBOARD, Y
beq .skip_up
dec BOX_Y
.skip_up:
ldy #83
lda KEYBOARD, Y
beq .skip_down
inc BOX_Y
.skip_down:
lda BOX_X
and #$3F
sta BOX_X
lda BOX_Y
and #$3F
sta BOX_Y
jsr clear_canvas
jsr box
rts
clear_canvas:
jsr line_reset
ldx #00
.loop_row:
cpx #CANVAS_HEIGHT
beq .over_row
ldy #00
.loop:
cpy #CANVAS_WIDTH
beq .over
lda #00
sta ($00),Y
iny
jmp .loop
.over:
jsr line_next
inx
jmp .loop_row
.over_row:
rts
box:
jsr line_reset
ldy BOX_Y
.loop:
cpy #$00
beq .over
jsr line_next
dey
jmp .loop
.over:
;; TODO: do the #$3F for each value of Y in the box routine
ldy BOX_X
lda #$FF
sta ($00),Y
iny
sta ($00),Y
iny
sta ($00),Y
iny
jsr line_next
ldy BOX_X
lda #$FF
sta ($00),Y
iny
sta ($00),Y
iny
sta ($00),Y
iny
jsr line_next
ldy BOX_X
lda #$FF
sta ($00),Y
iny
sta ($00),Y
iny
sta ($00),Y
iny
jsr line_next
rts
line_next:
clc
lda #64
adc $00
sta $00
lda #00
adc $01
sta $01
rts
line_reset:
lda #<CANVAS
sta LINE
lda #>CANVAS
sta LINE+1
rts