-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSatTracking.ic10
119 lines (118 loc) · 2.46 KB
/
SatTracking.ic10
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
alias TrackingDish d5
define searchHStep 5
alias maxStrength r15
alias currentStrength r14
alias currentH r13
alias currentV r12
alias currentSignal r11
alias targetH r10
alias targetV r9
alias maxH r8
alias maxV r7
alias directionV r6
alias minOut r5
alias searchV r4
alias track r3
alias firstSignal r2
move sp 0
move r0 0
setupLoop:
push 0
add r0 r0 1
blt r0 64 setupLoop
move track 0
s db Setting track
move maxStrength 0
move searchV 35
s TrackingDish Vertical 45
sleep 2
jal LoadStuff
move firstSignal currentSignal
Search:
s db Setting 1
yield
jal LoadStuff
add targetH currentH searchHStep
s TrackingDish Horizontal targetH
brgt currentH searchHStep 3
add searchV searchV 45
mod searchV searchV 90
s TrackingDish Vertical searchV
beq firstSignal currentSignal Search
jal CheckListForSignal
# Track new Signal
move maxStrength currentStrength
move minOut currentH
s TrackingDish Vertical currentV
MoveDishH:
s db Setting 2
yield
jal LoadStuff
add targetH currentH searchHStep
s TrackingDish Horizontal targetH
blt currentStrength maxStrength GetDirectionV # maxH found -> Find maxV next
move maxH currentH
breq currentStrength maxStrength 2
move minOut currentH
move maxStrength currentStrength
j MoveDishH
GetDirectionV:
s db Setting 3
add r0 minOut maxH
brge maxH minOut 2
add r0 r0 360
div maxH r0 2
s TrackingDish Horizontal maxH
sleep 1
s db Setting 4
add targetV currentV 5
move maxStrength currentStrength
s TrackingDish Vertical targetV
yield
jal LoadStuff
sgt r0 currentStrength maxStrength
select directionV r0 5 -5
move maxStrength currentStrength
MoveDishV:
s db Setting 5
jal LoadStuff
add targetV currentV directionV
s TrackingDish Vertical targetV
beq currentV 90 Final # Signal is unreachable
beq currentV 0 Final # Signal is unreachable
blt currentStrength maxStrength Final # Max Signal Strength find -> finalize current search
move maxV currentV
breq currentStrength maxStrength 2
move minOut currentV
move maxStrength currentStrength
yield
j MoveDishV
Final:
s db Setting 6
move firstSignal 0
add r0 minOut maxV
brge maxV minOut 2
add r0 r0 360
div maxV r0 2
s dr3 Horizontal maxH
s dr3 Vertical maxV
move sp track
push currentSignal
add track track 1
mod track track 5
s db Setting track
j Search
LoadStuff:
l currentH TrackingDish Horizontal
l currentV TrackingDish Vertical
l currentStrength TrackingDish SignalStrength
l currentSignal TrackingDish SignalID
j ra
CheckListForSignal:
move sp 1
LoopList: # loop 1 to 5
peek r0
beq currentSignal r0 Search
add sp sp 1
bne sp 6 LoopList
j ra