-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathball.asm
143 lines (108 loc) · 2.93 KB
/
ball.asm
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
update_ball:
lda BallIsInUpperHalf
cmpa #0
bne after_ball_upper_half_1
lda #-99
ldb #0
jsr Moveto_d
after_ball_upper_half_1:
lda BallPositionY
ldb BallPositionX
jsr Moveto_d ; move the vector beam the
ldx #ball_list ; load the address of the to be
; drawn vector list to X
jsr Draw_VLc ; draw the line now
lda BallPositionY
ldb BallPositionX ; to 0 (x)
nega
negb
jsr Moveto_d ; move the vector beam the
lda BallIsInUpperHalf
cmpa #0
bne after_ball_upper_half_2
lda #99
ldb #0
jsr Moveto_d
after_ball_upper_half_2:
lda BallPositionX
adda BallVelocityX
sta BallPositionX
cmpa #-80
bgt ball_second_x_check
lda #-80
sta BallPositionX
jmp after_ball_x_move
ball_second_x_check
lda BallPositionX
cmpa #80
blt after_ball_x_move
lda #80
sta BallPositionX
after_ball_x_move
lda BallPositionY
adda BallVelocityY
sta BallPositionY
lda BallVelocityY
adda BallAccelerationY
sta BallVelocityY
lda BallIsInUpperHalf
cmpa #0
bne after_ball_upper_half_3
lda BallPositionY
cmpa #99
blt after_ball_half_update
lda #1
sta BallIsInUpperHalf
lda BallPositionY
adda #-99
sta BallPositionY
jmp after_ball_half_update
after_ball_upper_half_3:
lda BallPositionY
cmpa #-1
bgt after_ball_half_update
lda #0
sta BallIsInUpperHalf
lda BallPositionY
adda #99
sta BallPositionY
after_ball_half_update:
jsr ball_paddle_interaction
rts
ball_paddle_interaction
lda BallIsInUpperHalf
cmpa #0
bne after_ball_paddle_interaction
lda BallPositionY
cmpa #1
bgt after_ball_paddle_interaction
lda #0
sta BallVelocityX
sta BallVelocityY
lda #1
sta BallPositionY
lda BallPositionX
adda #-32
cmpa PaddlePositionX
bgt after_ball_paddle_interaction
lda BallPositionX
adda #32
cmpa PaddlePositionX
blt after_ball_paddle_interaction
lda PaddleVelocityY
cmpa #0
blt after_ball_paddle_interaction
lda PaddlePositionY
suba BallPositionY
cmpa #100
bgt after_ball_paddle_interaction
lda BallPositionY
cmpa PaddlePositionY
bge after_ball_paddle_interaction
lda PaddleVelocityY
adda #5
sta BallVelocityY
lda PaddleVelocityX
sta BallVelocityX
after_ball_paddle_interaction:
rts