-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmove-sprite.asm
More file actions
133 lines (116 loc) · 2.71 KB
/
move-sprite.asm
File metadata and controls
133 lines (116 loc) · 2.71 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
* = $C000
;helpful labels
CLEAR = $E544
GETIN = $FFE4
SCNKEY = $FF9F
ENTER = $C202
MOVE = $C203
;sprite 0 setup
SPRITE0 = $07F8
COLOR0 = $D027
SP0X = $D000
SP0Y = $D001
MSBX = $D010
SP0VAL = $0340
ENABLE = $D015
YEXPAND = $D017
XEXPAND = $D01D
;*=$1000
JSR CLEAR
LDA #13
STA ENTER
LDA #$0D ;using block 13 for sprite0
STA SPRITE0
LDA #01 ;enable sprite0
STA ENABLE
LDA #02 ;use red for sprite0
STA COLOR0
LDX #0
LDA #0
;reset the spriteval data
CLEANUP STA SP0VAL,X
INX
CPX #63
BNE CLEANUP
;build the sprite
LDX #0
BUILD LDA DATA,X
STA SP0VAL,X
INX
CPX #63
BNE BUILD
;position
LDA #0 ;stick with x0-255
STA MSBX
;starting sprite location
LDX #100
LDY #70
STX SP0X
STY SP0Y
SCAN JSR SCNKEY;get key
JSR GETIN ;put key in A
START CMP #87 ;W - up
BEQ UP
CMP #83 ;S - down
BEQ DOWN
CMP #65 ;A - left
BEQ LEFT
CMP #68 ;D - right
BEQ RIGHT
CMP ENTER ;end if enter clicked
BEQ END
JMP SCAN
UP LDY SP0Y
DEY
STY SP0Y
JMP SCAN
DOWN LDY SP0Y
INY
STY SP0Y
JMP SCAN
LEFT LDX SP0X
DEX
STX SP0X
CPX #255
BNE SCAN
LDA #0
STA MSBX
JMP SCAN
RIGHT LDX SP0X
INX
STX SP0X
CPX #255
BNE SCAN
LDA #1
STA MSBX
JMP SCAN
;clean up at the end
END JSR CLEAR
LDA #0
STA ENABLE
RTS
;define the sprite
;
DATA
;
BYTE 0,0,0
BYTE 0,0,0
BYTE 0,0,0
BYTE 0,0,0
BYTE 0,0,0
BYTE 0,60,0
BYTE 0,36,0
BYTE 0,60,0
BYTE 31,255,248
BYTE 31,255,248
BYTE 0,255,0
BYTE 0,255,0
BYTE 0,255,0
BYTE 0,255,0
BYTE 0,255,0
BYTE 0,255,0
BYTE 0,195,0
BYTE 0,195,0
BYTE 0,195,0
BYTE 0,195,0
BYTE 1,195,128