-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.s
234 lines (202 loc) · 3.7 KB
/
utils.s
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
;**boxsz
;**adddensity
inccurrp ld a,tilesize
add a,iyl
ld iyl,a
ret nc
inc iyh
ret
boxsz proc
local loop0,loop2,loop3,cont2,cont3,cont4,cont5,cont6,cont7,cont8
local curx
;xmin - d, ymin - e
;xmax - b, ymax - c
curx equ t1 ;connected to infov
;cury - h
ld de,$a0c0
xor a
ld b,a
ld c,a
ld (curx),a
ld h,a
ld iy,tiles
loop0 xor a
ld ix,oriy
ld (jsrfar+1),ix
push iy
call calllo1
inc iy
call calllo1
inc iy
call calllo1
inc iy
call calllo1
inc iy
call calllo1
inc iy
call calllo1
inc iy
call calllo1
inc iy
call calllo1
pop iy
jp z,cont7
ld ixl,a
ld l,$ff
loop2 rlca
inc l
jr nc,loop2
ld a,(curx)
rlca
rlca
rlca
ld ixh,a
add a,l
cp d
jr nc,cont2
ld d,a
cont2 ld a,ixl
ld l,8
loop3 rrca
dec l
jr nc,loop3
ld a,ixh
add a,l
cp b
jr c,cont3
ld b,a
cont3 push iy
xor a
ld l,a
call calllo1
jr nz,cont4
inc l
inc iy
call calllo1
jr nz,cont4
inc l
inc iy
call calllo1
jr nz,cont4
inc l
inc iy
call calllo1
jr nz,cont4
inc l
inc iy
call calllo1
jr nz,cont4
inc l
inc iy
call calllo1
jr nz,cont4
inc l
inc iy
call calllo1
jr nz,cont4
inc l
inc iy
call calllo1
cont4 pop iy
ld a,h
rlca
rlca
rlca
ld ixh,a
add a,l
cp e
jr nc,cont5
ld e,a
cont5 push iy
push de
ld de,7
ld l,e
add iy,de
pop de
xor a
call calllo1
jr nz,cont6
dec l
dec iy
call calllo1
jr nz,cont6
dec l
dec iy
call calllo1
jr nz,cont6
dec l
dec iy
call calllo1
jr nz,cont6
dec l
dec iy
call calllo1
jr nz,cont6
dec l
dec iy
call calllo1
jr nz,cont6
dec l
dec iy
call calllo1
jr nz,cont6
dec l
dec iy
call calllo1
cont6 pop iy
ld a,ixh
add a,l
cp c
jr c,cont7
ld c,a
cont7 call inccurrp
ld a,(curx)
inc a
cp hormax
jr z,cont8
ld (curx),a
jp loop0
cont8 xor a
ld (curx),a
inc h
ld a,h
cp vermax
jp nz,loop0
ld a,c
sub e
inc a
ld h,a
ld a,b
sub d
inc a
ld (curx),a
ld a,(tiles) ;it is at the low mem
or c
or b
ret
endp
calccells1 proc ;OUT: HL; USED: A,BC,DE
local ll,ls
;ld hl,calccells
;call calllo
ld hl,readlow
ld (jsrfar+1),hl
ld hl,0
ld bc,cellcnt
ld de,10000
call ls
ld de,1000
call ls
ld de,100
call ls
ld e,10
call ls
ld e,1
ls ld a,(bc)
inc bc
or a
ll ret z
add hl,de
dec a
jr ll
endp