-
Notifications
You must be signed in to change notification settings - Fork 0
/
advanced-pixel-movement-on-map.p8
351 lines (317 loc) · 26.8 KB
/
advanced-pixel-movement-on-map.p8
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
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
pico-8 cartridge // http://www.pico-8.com
version 29
__lua__
--deplacements par pixel
--fairedesjeux.fr
--inspire de mboffin
--lisez cette cartouche
--de preference dans un
--editeur de code
function _init()
create_player()
end
function _update()
player_movement()
end
function _draw()
cls()
map()
spr(p.sprite, p.x, p.y)
end
function create_player()
p = {
sprite = 6,
x = 24, y = 24,
w = 7, h = 8, --largeur, hauteur
dx = 0, dy = 0, --vitesse actuelle
max_speed = 2,
acceleration = 1, --vitesse ajoutee a la vitesse actuelle quand on bouge
friction = 0.75 --vitesse retiree a la vitesse actuelle quand on ne bouge plus
--friction = 1 : pas de ralentissement
--friction = 0 : arret instantane
}
end
function player_movement()
--selon les touches appuyees, on ajoute de l'acceleration a la vitesse actuelle
if (btn(⬅️)) p.dx -= p.acceleration
if (btn(➡️)) p.dx += p.acceleration
if (btn(⬆️)) p.dy -= p.acceleration
if (btn(⬇️)) p.dy += p.acceleration
--facultatif: lorsqu'on bouge en diagonale, on va plus vite.
--on peut reduire ce phenomene en reduisant la vitesse a 80%
--de la vitesse d'origine quand on se deplace en diagonale,
--mais ce nombre peut etre change selon votre preference
if abs(p.dx) > p.max_speed/2 and abs(p.dy) > p.max_speed/2 then
p.dx *= 0.75
p.dy *= 0.75
end
--on limite a la vitesse maximum
p.dx = mid(-p.max_speed, p.dx, p.max_speed)
p.dy = mid(-p.max_speed, p.dy, p.max_speed)
--avant de se deplacer, on bloque le mouvement dans
--la ou les directions ou on est colle a un mur
check_walls(p)
--can_move renvoie true s'il n'y a pas d'obstacle a la destination souhaitee
if can_move(p, p.dx, p.dy) then
--on applique la vitesse pour se deplacer
p.x += p.dx
p.y += p.dy
else
--s'il y a un obstacle, on en rapproche le perso aussi pres que possible
--on stocke la position ou le perso devait se rendre
local target_x=p.dx
local target_y=p.dy
--on va progressivement raccourcir 'target x y'
--jusqu'a trouver une position sans obstacle
while not can_move(p, target_x, target_y) do
--si 'target x' a ete reduit au point
--d'etre presque 0, on le met a 0
if abs(target_x) <= 0.1 then
target_x = 0
else
--sinon, sa nouvelle valeur est 90%
--de son ancienne
target_x *= 0.9
end
--pareil pour y
if abs(target_y) <= 0.1 then
target_y = 0
else
target_y *= 0.9
end
end
--on se deplace a la position obtenue
p.x += target_x
p.y += target_y
end
--on ralentit le personnage pour plus tard, en appliquant la friction
if (abs(p.dx) > 0) p.dx *= p.friction
if (abs(p.dy) > 0) p.dy *= p.friction
--si la vitesse est presque a 0, on la met simplement a 0
if (abs(p.dx) < 0.05) p.dx = 0
if (abs(p.dy) < 0.05) p.dy = 0
end
--can_move prend un objet avec des proprietes x, y, w, h
--ainsi qu'une vitesse pour former le carre ou l'on souhaite se rendre
--et regarde pour chaque coin du carre si un tile avec le flag 0 s'y trouve
function can_move(a, dx, dy)
--quelques variables pour plus de clarte
local x_left = a.x + dx
local x_right = a.x + dx + a.w-1
local y_top = a.y + dy
local y_bottom = a.y + dy + a.h-1
if (check_obstacle(x_left, y_top)) return false --coin haut-gauche
if (check_obstacle(x_left, y_bottom)) return false --coin haut-droite
if (check_obstacle(x_right, y_top)) return false --coin bas-gauche
if (check_obstacle(x_right, y_bottom)) return false --coin bas-droite
--des que le programme atteint un 'return',
--le reste de la fonction n'est pas joue.
--donc si on est arrive jusqu'ici, c'est
--qu'aucun coin n'etait sur un obstacle !
return true
end
--cette fonction prend un pixel sur la map
function check_obstacle(x, y)
--convertit les coordonnees du pixel en coordonnees sur la grille de la map
local map_x = flr(x/8)
local map_y = flr(y/8)
local sprite = mget(map_x, map_y)
--renvoie true si le sprite a le flag 0
return fget(sprite, 0)
end
--check_wall verifie si un objet aux proprietes x, y, w, h
--est face a un mur, et bloque cette direction si oui
function check_walls(a)
--si on va vers la gauche
if a.dx < 0 then
local wall_top_left = check_obstacle(a.x-1, a.y)
local wall_bottom_left = check_obstacle(a.x-1, a.y+a.h-1)
--s'il y a un mur dans cette direction,
--on reduit la vitesse x a 0
if wall_top_left or wall_bottom_left then
a.dx = 0
end
--vers la droite
elseif a.dx > 0 then
local wall_top_right = check_obstacle(a.x+a.w, a.y)
local wall_bottom_right = check_obstacle(a.x+a.w, a.y+a.h-1)
if wall_top_right or wall_bottom_right then
a.dx = 0
end
end
--vers le haut
if a.dy < 0 then
local wall_top_left = check_obstacle(a.x, a.y-1)
local wall_top_right = check_obstacle(a.x+a.w-1, a.y-1)
if wall_top_left or wall_top_right then
a.dy = 0
end
--vers le bas
elseif a.dy > 0 then
local wall_bottom_left = check_obstacle(a.x, a.y+a.h)
local wall_bottom_right = check_obstacle(a.x+a.w-1, a.y+a.h)
if wall_bottom_right or wall_bottom_left then
a.dy = 0
end
end
end
__gfx__
00000000333333333333333333bbbb331111d111dddddddd0eeeee00000000000000000000000000000000000000000000000000000000000000000000000000
000000003333333333a333333bbaabb311111111ddddddddeeeefee0000000000000000000000000000000000000000000000000000000000000000000000000
00700700333333333a9a33333bbbab131d1111d1ddddddddef1ff1e0000000000000000000000000000000000000000000000000000000000000000000000000
000770003333333333a333a33bbbb31311111111ddddddddeeffffe0000000000000000000000000000000000000000000000000000000000000000000000000
000770003333333333333a9a313b3313111d1111ddddddddee8888e0000000000000000000000000000000000000000000000000000000000000000000000000
0070070033333333333333a33311113311111111dddddddd08666600000000000000000000000000000000000000000000000000000000000000000000000000
00000000333333333333333333322333d1111d11dddddddd08aaaa00000000000000000000000000000000000000000000000000000000000000000000000000
0000000033333333333333333314423311111111dddddddd08600600000000000000000000000000000000000000000000000000000000000000000000000000
__label__
33bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb33
3bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb3
3bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab13
3bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb313
313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313
33111133331111333311113333111133331111333311113333111133331111333311113333111133331111333311113333111133331111333311113333111133
33322333333223333332233333322333333223333332233333322333333223333332233333322333333223333332233333322333333223333332233333322333
33144233331442333314423333144233331442333314423333144233331442333314423333144233331442333314423333144233331442333314423333144233
33bbbb3333bbbb3333bbbb3333bbbb33333333333333333333333333333333333333333333333333333333333333333333bbbb3333bbbb3333bbbb3333bbbb33
3bbaabb33bbaabb33bbaabb33bbaabb333333333333333333333333333333333333333333333333333333333333333333bbaabb33bbaabb33bbaabb33bbaabb3
3bbbab133bbbab133bbbab133bbbab1333333333333333333333333333333333333333333333333333333333333333333bbbab133bbbab133bbbab133bbbab13
3bbbb3133bbbb3133bbbb3133bbbb31333333333333333333333333333333333333333333333333333333333333333333bbbb3133bbbb3133bbbb3133bbbb313
313b3313313b3313313b3313313b33133333333333333333333333333333333333333333333333333333333333333333313b3313313b3313313b3313313b3313
33111133331111333311113333111133333333333333333333333333333333333333333333333333333333333333333333111133331111333311113333111133
33322333333223333332233333322333333333333333333333333333333333333333333333333333333333333333333333322333333223333332233333322333
33144233331442333314423333144233333333333333333333333333333333333333333333333333333333333333333333144233331442333314423333144233
33bbbb3333bbbb3333bbbb333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbbb3333bbbb3333bbbb33
3bbaabb33bbaabb33bbaabb3333333333333333333333333333333333333333333333333333333333333333333333333333333333bbaabb33bbaabb33bbaabb3
3bbbab133bbbab133bbbab13333333333333333333333333333333333333333333333333333333333333333333333333333333333bbbab133bbbab133bbbab13
3bbbb3133bbbb3133bbbb313333333333333333333333333333333333333333333333333333333333333333333333333333333333bbbb3133bbbb3133bbbb313
313b3313313b3313313b331333333333333333333333333333333333333333333333333333333333333333333333333333333333313b3313313b3313313b3313
33111133331111333311113333333333333333333333333333333333333333333333333333333333333333333333333333333333331111333311113333111133
33322333333223333332233333333333333333333333333333333333333333333333333333333333333333333333333333333333333223333332233333322333
33144233331442333314423333333333333333333333333333333333333333333333333333333333333333333333333333333333331442333314423333144233
33bbbb3333bbbb33333333333eeeee3333333333333333333333333333333333333333333333333333333333333333333333333333bbbb3333bbbb3333bbbb33
3bbaabb33bbaabb333333333eeeefee33333333333333333333333333333333333333333333333333333333333333333333333333bbaabb33bbaabb33bbaabb3
3bbbab133bbbab1333333333ef1ff1e33333333333333333333333333333333333333333333333333333333333333333333333333bbbab133bbbab133bbbab13
3bbbb3133bbbb31333333333eeffffe33333333333333333333333333333333333333333333333333333333333333333333333333bbbb3133bbbb3133bbbb313
313b3313313b331333333333ee8888e3333333333333333333333333333333333333333333333333333333333333333333333333313b3313313b3313313b3313
33111133331111333333333338666633333333333333333333333333333333333333333333333333333333333333333333333333331111333311113333111133
33322333333223333333333338aaaa33333333333333333333333333333333333333333333333333333333333333333333333333333223333332233333322333
33144233331442333333333338633633333333333333333333333333333333333333333333333333333333333333333333333333331442333314423333144233
33bbbb3333bbbb3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbbb3333bbbb33
3bbaabb33bbaabb33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbaabb33bbaabb3
3bbbab133bbbab133333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbbab133bbbab13
3bbbb3133bbbb3133333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbbb3133bbbb313
313b3313313b3313333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333313b3313313b3313
33111133331111333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333311113333111133
33322333333223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333332233333322333
33144233331442333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333314423333144233
33bbbb3333bbbb3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbbb3333bbbb33
3bbaabb33bbaabb333333333333333333333333333333333333333333333333333333333333333333333333333a3333333333333333333333bbaabb33bbaabb3
3bbbab133bbbab133333333333333333333333333333333333333333333333333333333333333333333333333a9a333333333333333333333bbbab133bbbab13
3bbbb3133bbbb31333333333333333333333333333333333333333333333333333333333333333333333333333a333a333333333333333333bbbb3133bbbb313
313b3313313b331333333333333333333333333333333333333333333333333333333333333333333333333333333a9a3333333333333333313b3313313b3313
3311113333111133333333333333333333333333333333333333333333333333333333333333333333333333333333a333333333333333333311113333111133
33322333333223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333332233333322333
33144233331442333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333314423333144233
33bbbb33333333333333333333333333333333331111d1111111d111dddddddddddddddd1111d1111111d1113333333333333333333333333333333333bbbb33
3bbaabb3333333333333333333333333333333331111111111111111dddddddddddddddd1111111111111111333333333333333333333333333333333bbaabb3
3bbbab13333333333333333333333333333333331d1111d11d1111d1dddddddddddddddd1d1111d11d1111d1333333333333333333333333333333333bbbab13
3bbbb313333333333333333333333333333333331111111111111111dddddddddddddddd1111111111111111333333333333333333333333333333333bbbb313
313b331333333333333333333333333333333333111d1111111d1111dddddddddddddddd111d1111111d111133333333333333333333333333333333313b3313
33111133333333333333333333333333333333331111111111111111dddddddddddddddd11111111111111113333333333333333333333333333333333111133
3332233333333333333333333333333333333333d1111d11d1111d11ddddddddddddddddd1111d11d1111d113333333333333333333333333333333333322333
33144233333333333333333333333333333333331111111111111111dddddddddddddddd11111111111111113333333333333333333333333333333333144233
33bbbb33333333333333333333333333333333331111d1111111d111dddddddddddddddd1111d1111111d1113333333333333333333333333333333333bbbb33
3bbaabb3333333333333333333333333333333331111111111111111dddddddddddddddd11111111111111113333333333a3333333333333333333333bbaabb3
3bbbab13333333333333333333333333333333331d1111d11d1111d1dddddddddddddddd1d1111d11d1111d1333333333a9a333333333333333333333bbbab13
3bbbb313333333333333333333333333333333331111111111111111dddddddddddddddd11111111111111113333333333a333a333333333333333333bbbb313
313b331333333333333333333333333333333333111d1111111d1111dddddddddddddddd111d1111111d11113333333333333a9a3333333333333333313b3313
33111133333333333333333333333333333333331111111111111111dddddddddddddddd111111111111111133333333333333a3333333333333333333111133
3332233333333333333333333333333333333333d1111d11d1111d11ddddddddddddddddd1111d11d1111d113333333333333333333333333333333333322333
33144233333333333333333333333333333333331111111111111111dddddddddddddddd11111111111111113333333333333333333333333333333333144233
33bbbb33333333333333333333333333333333331111d1111111d111dddddddddddddddd1111d1111111d1113333333333333333333333333333333333bbbb33
3bbaabb3333333333333333333333333333333331111111111111111dddddddddddddddd1111111111111111333333333333333333333333333333333bbaabb3
3bbbab13333333333333333333333333333333331d1111d11d1111d1dddddddddddddddd1d1111d11d1111d1333333333333333333333333333333333bbbab13
3bbbb313333333333333333333333333333333331111111111111111dddddddddddddddd1111111111111111333333333333333333333333333333333bbbb313
313b331333333333333333333333333333333333111d1111111d1111dddddddddddddddd111d1111111d111133333333333333333333333333333333313b3313
33111133333333333333333333333333333333331111111111111111dddddddddddddddd11111111111111113333333333333333333333333333333333111133
3332233333333333333333333333333333333333d1111d11d1111d11ddddddddddddddddd1111d11d1111d113333333333333333333333333333333333322333
33144233333333333333333333333333333333331111111111111111dddddddddddddddd11111111111111113333333333333333333333333333333333144233
33bbbb33333333333333333333333333333333331111d1111111d111dddddddddddddddd1111d1111111d1113333333333333333333333333333333333bbbb33
3bbaabb3333333333333333333333333333333331111111111111111dddddddddddddddd1111111111111111333333333333333333333333333333333bbaabb3
3bbbab13333333333333333333333333333333331d1111d11d1111d1dddddddddddddddd1d1111d11d1111d1333333333333333333333333333333333bbbab13
3bbbb313333333333333333333333333333333331111111111111111dddddddddddddddd1111111111111111333333333333333333333333333333333bbbb313
313b331333333333333333333333333333333333111d1111111d1111dddddddddddddddd111d1111111d111133333333333333333333333333333333313b3313
33111133333333333333333333333333333333331111111111111111dddddddddddddddd11111111111111113333333333333333333333333333333333111133
3332233333333333333333333333333333333333d1111d11d1111d11ddddddddddddddddd1111d11d1111d113333333333333333333333333333333333322333
33144233333333333333333333333333333333331111111111111111dddddddddddddddd11111111111111113333333333333333333333333333333333144233
33bbbb333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbbb3333bbbb33
3bbaabb3333333333333333333a33333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbaabb33bbaabb3
3bbbab1333333333333333333a9a3333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbbab133bbbab13
3bbbb313333333333333333333a333a3333333333333333333333333333333333333333333333333333333333333333333333333333333333bbbb3133bbbb313
313b3313333333333333333333333a9a33333333333333333333333333333333333333333333333333333333333333333333333333333333313b3313313b3313
331111333333333333333333333333a3333333333333333333333333333333333333333333333333333333333333333333333333333333333311113333111133
33322333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333332233333322333
33144233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333314423333144233
33bbbb333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbbb3333bbbb33
3bbaabb3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbaabb33bbaabb3
3bbbab13333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbbab133bbbab13
3bbbb313333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbbb3133bbbb313
313b331333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333313b3313313b3313
33111133333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333311113333111133
33322333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333332233333322333
33144233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333314423333144233
33bbbb3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbbb3333bbbb3333bbbb33
3bbaabb33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbaabb33bbaabb33bbaabb3
3bbbab133333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbbab133bbbab133bbbab13
3bbbb3133333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333bbbb3133bbbb3133bbbb313
313b3313333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333313b3313313b3313313b3313
33111133333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333331111333311113333111133
33322333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333223333332233333322333
33144233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333331442333314423333144233
33bbbb3333bbbb333333333333333333333333333333333333333333333333333333333333bbbb3333bbbb333333333333bbbb3333bbbb3333bbbb3333bbbb33
3bbaabb33bbaabb3333333333333333333333333333333333333333333333333333333333bbaabb33bbaabb3333333333bbaabb33bbaabb33bbaabb33bbaabb3
3bbbab133bbbab13333333333333333333333333333333333333333333333333333333333bbbab133bbbab13333333333bbbab133bbbab133bbbab133bbbab13
3bbbb3133bbbb313333333333333333333333333333333333333333333333333333333333bbbb3133bbbb313333333333bbbb3133bbbb3133bbbb3133bbbb313
313b3313313b331333333333333333333333333333333333333333333333333333333333313b3313313b331333333333313b3313313b3313313b3313313b3313
33111133331111333333333333333333333333333333333333333333333333333333333333111133331111333333333333111133331111333311113333111133
33322333333223333333333333333333333333333333333333333333333333333333333333322333333223333333333333322333333223333332233333322333
33144233331442333333333333333333333333333333333333333333333333333333333333144233331442333333333333144233331442333314423333144233
33bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb33
3bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb3
3bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab13
3bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb313
313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313
33111133331111333311113333111133331111333311113333111133331111333311113333111133331111333311113333111133331111333311113333111133
33322333333223333332233333322333333223333332233333322333333223333332233333322333333223333332233333322333333223333332233333322333
33144233331442333314423333144233331442333314423333144233331442333314423333144233331442333314423333144233331442333314423333144233
33bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb3333bbbb33
3bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb33bbaabb3
3bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab133bbbab13
3bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb3133bbbb313
313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313313b3313
33111133331111333311113333111133331111333311113333111133331111333311113333111133331111333311113333111133331111333311113333111133
33322333333223333332233333322333333223333332233333322333333223333332233333322333333223333332233333322333333223333332233333322333
33144233331442333314423333144233331442333314423333144233331442333314423333144233331442333314423333144233331442333314423333144233
__gff__
0000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__map__
0303030303030303030303030303030300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0303030301010101010101010303030300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0303030101010101010101010103030300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0303010101010101010101010103030300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0303010101010101010101010101030300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0303010101010101010101020101030300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0301010101040405050404010101010300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0301010101040405050404010201010300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0301010101040405050404010101010300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0301010101040405050404010101010300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0301010201010101010101010101030300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0301010101010101010101010101030300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0301010101010101010101010103030300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0303010101010101010303010303030300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0303030303030303030303030303030300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0303030303030303030303030303030300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__sfx__
0006000007550095501d500205001b5001f5000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005000050000500