-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathgrand_theft_antic.mfk
85 lines (71 loc) · 1.26 KB
/
grand_theft_antic.mfk
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
byte i @ $b0
pointer screen @ $b2
array(word) scores[17] @ $80
asm void openmode(byte register(a) m) @ $ef9c extern
asm void pause() {
lda os_RTCLOK.b2
.rt_check:
cmp os_RTCLOK.b2
beq .rt_check
rts
}
// print in HEX
void printScore(word val) {
array(byte) tmp[4]
byte iter
tmp[0] = val.hi >> 4
tmp[1] = val.hi & %00001111
tmp[2] = val.lo >> 4
tmp[3] = val.lo & %00001111
for iter:tmp {
if tmp[iter] < 10 {
screen[iter] = tmp[iter] + $10
} else {
screen[iter] = tmp[iter] + $17
}
}
if i < 16 {
screen[4] = 0
screen[5] = 'G' atariscr
screen[6] = 'R' atariscr
screen[7] = '.' atariscr
if i < 10 {
screen[8] = i + $10
} else {
screen[8] = i + $17
}
} else {
screen[4] = 0
screen[5] = 'O' atariscr
screen[6] = 'F' atariscr
screen[7] = 'F' atariscr
}
screen += 40
}
void main(){
for i:scores {
scores[i] = 0
}
for i,0,to,15 {
openmode(i)
pause()
os_RTCLOK.b2 = 0
while os_RTCLOK.b2 < 100 {
scores[i] += 1
}
}
os_SDMCTL = 0
i = 16
pause()
os_RTCLOK.b2 = 0
while os_RTCLOK.b2 < 100 {
scores[i] += 1
}
os_SDMCTL = $22
openmode(0)
screen = os_SAVMSC
for i:scores {
printScore(scores[i])
}
while true {}
}