-
Notifications
You must be signed in to change notification settings - Fork 1
/
darkanoid.p8
522 lines (505 loc) · 34.7 KB
/
darkanoid.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
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
pico-8 cartridge // http://www.pico-8.com
version 21
__lua__
-- darkanoid
-- firedev.com
DEBUG=false
function _init()
game=init_game('welcome')
end
function _update60()
game:update()
end
function _draw()
game:draw()
end
-->8
-- game state
function init_game(initial_state)
local game = {
lives=0,
level=0,
game_objects={},
states = init_states(),
to_state = function(self, state)
self.state = self.states[state]
end,
reset = function(self)
self.game_objects={}
self.lives = 3
self.level = 1
init_bat(self)
init_ball(self)
init_level(self)
end,
update = function(self)
self.state.update(self)
end,
draw = function(self)
self.state.draw(self)
end,
create_game_object=function(self, id, x, y, width, height, props)
local game_object = {
id = id,
x=x,
y=y,
width=width,
height=height,
inactive=false,
update = function(self)
end,
draw_bounding_box = function(self)
if DEBUG then rect(self.x, self.y, self.x+self.width, self.y+self.height) end
end
}
for k, v in pairs(props) do
game_object[k] = v
end
add(self.game_objects,game_object)
return game_object
end,
}
game:reset()
game:to_state(initial_state)
return game
end
function init_states()
return {
running = {
update = function(game)
for object in all(game.game_objects) do
object:update()
end
end,
draw = function(game)
cls(1)
for object in all(game.game_objects) do
object:draw()
object:draw_bounding_box()
end
for n=1,game.lives do
spr(33, n*6, 0)
end
end
},
welcome = {
update = function(game)
if(btn(❎)) then
-- pal(1,140,1)
-- pal(2,136,1)
cls()
game:to_state("running")
end
end,
draw = function()
cls()
for x=0,9 do
for y=0,1 do
spr(64+x+y*16,24+x*8,40+y*8)
end
end
rect(0,0,127,127,7)
print ("press ❎ to start",31,72, 6)
end
},
lifelost = {
update = function(game)
game.lives-=1
if game.lives < 0 then
game:to_state('gameover')
else
game.ball:reset()
game:to_state('running')
end
end,
draw = function(game)
end
},
gameover = {
update = function(game)
if(btn(❎)) then
game:reset()
game:to_state("welcome")
end
end,
draw = function()
rectfill(0,60,128,80,5)
print ("game over", 50, 65, 7)
print ("press ❎ to continue",27,72, 6)
end
}
}
end
-->8
-- states
function interact_with_bat(bat, ball)
ball.y_sp=abs(ball.y_sp) * -1.05
ball.x_sp+=(ball.x - (bat.x+bat.width/2)) / bat.width
ball.y_sp=mid(-ball.mx_sp, ball.y_sp, -0.5)
ball.y=mid(0, ball.y, bat.y)
end
function is_hit(object,point)
return object.x<=point.x+point.x_sp and (object.x+object.width)>=point.x+point.x_sp
and object.y<=point.y+point.y_sp and (object.y+object.height)>=point.y+point.y_sp
end
function interact(ball)
for object in all(game.game_objects) do
if (not object.inactive) then
if is_hit(object, ball) then
if object.id == 'bat' then
sfx(0)
interact_with_bat(object, ball)
elseif object.id == 'block' then
sfx(2)
-- if(ball.y<=object.y or ball.y>=(object.y+object.height)) then
-- ball.y_sp*=-1
-- elseif(ball.x<=object.x or ball.x>=(object.x+object.width)) then
-- ball.x_sp*=-1
-- end
if deflx_ballbox(ball.x,ball.y,ball.x_sp,ball.y_sp,object.x,object.y,object.width,object.height) then
ball.x_sp*= -1
else
ball.y_sp*= -1
end
object.inactive = true
if DEBUG then
if(ball.x<=object.x+2) object.sprite = 48
if(ball.x>=(object.x+object.width-2)) object.sprite = 49
if(ball.y<=object.y+2) object.sprite = 50
if(ball.y>=(object.y+object.height-2)) object.sprite = 51
end
end
end
end
end
end
-->8
-- level
function init_level(game)
local level = {
current = 0,
offset={
x=4,
y=0,
},
load = function(self,num)
self.current=num
for mapx=0,14 do
for mapy=0,11 do
local sprite = mget((self.current-1)*16+mapx,mapy)
if sprite != 0 then
game:create_game_object("block", self.offset.x+mapx*8, self.offset.y+mapy*8, 8, 8, {
sprite = sprite,
mapx = x,
mapy = y,
draw = function(self)
if DEBUG or not self.inactive then
spr(
self.sprite,
self.x,
self.y
)
end
end,
})
end
end
end
end
}
level:load(game.level)
return level
end
-->8
-- bat
function init_bat(game)
game:create_game_object('bat', 64, 120, 24,8, {
l=1, -- left sprite
m=2, -- mid sprite
r=3, -- rightsprite
sp=0, -- speed
mx_sp=3, -- max speed
update=function(self)
if(btn(⬅️)) then
self.x-=self.mx_sp
elseif(btn(➡️)) then
self.x+=self.mx_sp
end
self.x=mid(0, self.x, 128-self.width)
end,
draw=function(self)
local m=ceil((self.width-16)/8)
for n=1,m do
spr(self.m, self.x+n*8, self.y)
end
spr(self.l, self.x,self.y)
spr(self.r, self.x+self.width-8,self.y)
end
})
end
-->8
-- ball
function init_ball(game)
ball = game:create_game_object('ball', 0,0,0,0,{
x_sp=0, -- x speed
y_sp=0, -- y speed
mx_sp=2, -- max speed
update=function(self)
interact(self)
self.x=self.x+self.x_sp
self.y=self.y+self.y_sp
if(self.x>126 or self.x<2) self.x_sp*=-1
if(self.y<2) self.y_sp*=-1
if(self.y>130) then
sfx(1)
game:to_state('lifelost')
end
self.x_sp=mid(-self.mx_sp,self.x_sp,self.mx_sp)
self.y_sp=mid(-self.mx_sp,self.y_sp,self.mx_sp)
end,
draw=function(self)
spr(16,self.x-4,self.y-4)
end,
reset=function(self)
self.x_sp = 1
self.y_sp = 1
self.x = 64
self.y = 64
end,
})
ball:reset()
game.ball = ball
end
-->8
-- deflx_ballbox
function deflx_ballbox(bx, by, bdx, bdy, tx, ty, tw, th)
local slp = bdy / bdx
local cx, cy
if bdx == 0 then
return false
elseif bdy == 0 then
return true
elseif slp > 0 and bdx > 0 then
cx = tx - bx
cy = ty - by
return cx > 0 and cy/cx < slp
elseif slp < 0 and bdx > 0 then
cx = tx - bx
cy = ty + th - by
return cx > 0 and cy/cx >= slp
elseif slp > 0 and bdx < 0 then
cx = tx + tw - bx
cy = ty + th - by
return cx < 0 and cy/cx <= slp
else
cx = tx + tw - bx
cy = ty - by
return cx < 0 and cy/cx >= slp
end
end
__gfx__
0000000000775777777777777775770000000000eee8eee2ffffeff8ccccccc1bbbbbbb399999994ddddddd50000000000000000000000000000000000000000
0000000007667676666666666767667000000000e7888882f7eeeee8c7ccccccb77abbb3977a9994d776ddd50000000000000000000000000000000000000000
0070070076776777777777777776776700000000e8888882feeeeeeeccccccc1babbbbbb9a999999d6dddddd0000000000000000000000000000000000000000
000770007777677777777777777677770000000088888882feeeeee8ccccccc1bbbbbbb399999994ddddddd50000000000000000000000000000000000000000
000770006777d77777777777777d777600000000e8888882eeeeeeeeccccccccbbbbbbbb99999999dddddddd0000000000000000000000000000000000000000
007007006676d67777777777776d676600000000e8888888feeeeee8ccccccc1bbbbbbb399999994ddddddd50000000000000000000000000000000000000000
00000000056d5d666666666666d5d65000000000e8888882feeeeee8ccccccc1bbbbbbb399999994ddddddd50000000000000000000000000000000000000000
00000000005515555555555555515500000000002282282288e88e881c1c11113b3b3333494944445d5d55550000000000000000000000000000000000000000
00000000000100000000000000000000000000000000000077777770000000000000000077777770000000000000000000000000000000000000000000000000
00000000001410000011100000000000000000000000077777707777770000000000077770000077770000000000000000000000000000000000000000000000
000aa900014941000114110000000000000000000007777777707777777700000007770000777000077700000000000000000000000000000000000000000000
00a7aa90199994100144410000000000000000000077777777707777777770000077000000700000000770000000000000000000000000000000000000000000
00aaaa90014941000114110000000000000000000077777777707777777770000070007000770000700070000000000000000000000000000000000000000000
009aaa90001410000011100000000000000000000700777770000077777007000770070700700007070077000000000000000000000000000000000000000000
00099900000100000000000000000000000000000777007777000777700777000700700070000070707007000000000000000000000000000000000000000000
00000000000000000000000000000000000000000777770707707707077777000700070700777000000007000000000000000000000000000000000000000000
00000000000000000000000000000000000000007777777007777700777777707700007007007700000007700000000000000000000000000000000000000000
00000000000000000000000000000000000000007777770007777700077777707000000070077770000000700000000000000000000000000000000000000000
00000000000000000000000000000000000000007777777777777777777777707007700070777770007700700000000000000000000000000000000000000000
0007a0000e1e10000000000000000000000000007777777777777777777777707007700070777770007700700000000000000000000000000000000000000000
000aa000eeee81000000000000000000000000007777770007777700077777707000000077777770000000700000000000000000000000000000000000000000
000110001ee810000000000000000000000000007777777007777700777777707700000007777700000007700000000000000000000000000000000000000000
00000000018100000000000000000000000000000777770707707707077777000700007000777000700007000000000000000000000000000000000000000000
00000000001000000000000000000000000000000777007777000777700777000700070700000007000007000000000000000000000000000000000000000000
00000000000000000007000000000000000000000700777770000077777007000770700070777070700077000000000000000000000000000000000000000000
00700000000070000077700000000000000000000077777777707777777770000070070700700007000070000000000000000000000000000000000000000000
07000000000007000707070000070000000000000077777777707777777770000077007000770000700770000000000000000000000000000000000000000000
77777000007777700007000000070000000000000007777777707777777700000007770000700000077700000000000000000000000000000000000000000000
07000000000007000007000007070700000000000000077777707777770000000000077770000077770000000000000000000000000000000000000000000000
00700000000070000000000000777000000000000000000077777770000000000000000077777770000000000000000000000000000000000000000000000000
00000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00008000000000000000000000000000000000000080000000000000000000000000000000800000000000000000000000000000000000000000000000000000
00088800000000000000080000000000000000000880000000000000000000000000000008880000000000000000000000000000000000000000000000000000
00888880000000800000888000000000000000008880000000000000000000000000000088888000000000000000000000000000000000000000000000000000
00088888000008800008888800000000000000088880800000000000000000000000000008888800000000000000000000000000000000000000000000000000
88808888800088808880888880888000800000888880880000088800008888000088808880888880000000000000000000000000000000000000000000000000
88800888880888808880088888888008880008888880888000088800888888880088808880088888000000000000000000000000000000000000000000000000
88808888808888808880888880888088888088888880888800088800887888880088808880888880000000000000000000000000000000000000000000000000
8888888808888880888888880088888888088888888088888008880e878888888088808888888800000000000000000000000000000000000000000000000000
22222220222222202222222000222222202222202220222222022202222222222022202222222000000000000000000000000000000000000000000000000000
22222202222222202222220000222222022222002220222222222202222222222022202222220000000000000000000000000000000000000000000000000000
22222022222022202222222000222222202222202220222022222202222222222022202222200000000000000000000000000000000000000000000000000000
22220222220022202222222200222222220222220000222002222200222222220022202222000000000000000000000000000000000000000000000000000000
22200022222022202220222220222022222022200000222000222000222222220022202220000000000000000000000000000000000000000000000000000000
22000002222200002200022200220002220002000000222000020000002222000022002200000000000000000000000000000000000000000000000000000000
20000000222000002000002000200000200000000000000000000000000000000020002000000000000000000000000000000000000000000000000000000000
00000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__label__
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000008000000000000000000000000000000000000080000000000000000000000000000000800000000000000000000000000007
70000000000000000000000000088800000000000000080000000000000000000880000000000000000000000000000008880000000000000000000000000007
70000000000000000000000000888880000000800000888000000000000000008880000000000000000000000000000088888000000000000000000000000007
70000000000000000000000000088888000008800008888800000000000000088880800000000000000000000000000008888800000000000000000000000007
70000000000000000000000088808888800088808880888880888000800000888880880000088800008888000088808880888880000000000000000000000007
70000000000000000000000088800888880888808880088888888008880008888880888000088800888888880088808880088888000000000000000000000007
70000000000000000000000088808888808888808880888880888088888088888880888800088800887888880088808880888880000000000000000000000007
7000000000000000000000008888888808888880888888880088888888088888888088888008880e878888888088808888888800000000000000000000000007
70000000000000000000000022222220222222202222222000222222202222202220222222022202222222222022202222222000000000000000000000000007
70000000000000000000000022222202222222202222220000222222022222002220222222222202222222222022202222220000000000000000000000000007
70000000000000000000000022222022222022202222222000222222202222202220222022222202222222222022202222200000000000000000000000000007
70000000000000000000000022220222220022202222222200222222220222220000222002222200222222220022202222000000000000000000000000000007
70000000000000000000000022200022222022202220222220222022222022200000222000222000222222220022202220000000000000000000000000000007
70000000000000000000000022000002222200002200022200220002220002000000222000020000002222000022002200000000000000000000000000000007
70000000000000000000000020000000222000002000002000200000200000000000000000000000000000000020002000000000000000000000000000000007
70000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000007770777077700770077000000777770000007770077000000770777077707770777000000000000000000000000000007
70000000000000000000000000000007070707070007000700000007707077000000700707000007000070070707070070000000000000000000000000000007
70000000000000000000000000000007770770077007770777000007770777000000700707000007770070077707700070000000000000000000000000000007
70000000000000000000000000000007000707070000070007000007707077000000700707000000070070070707070070000000000000000000000000000007
70000000000000000000000000000007000707077707700770000000777770000000700770000007700070070707070070000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
__map__
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000505050505050505050000000000000a0a0a0a0a0a0a0a0a0a0a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000607070707070707070706000000000a0a0906060000000606090a0a0a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000606060707070707070706060600000a0a0909060600000006060909070a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
060605060608080808080606050606000a070909060600000006060909070700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0706060609090909090909060606070007070909060600000006060909070700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
070706090909090909090909060707000707090a0a0a0a0a0a0a0a0a09070700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000007070a0a000000000000000a0a070700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000070a0a0000000000000000000a0a0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000a0a00000000000000000000000a0a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000a000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000064142434445464700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000505152535455565700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__sfx__
000100000875000700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700
000300001b3501a35018350163501535013350103500d3500a3500635001350003000030000300003000030000300003000030000300003000030000300003000030000300003000030000300003000030000300
000100001d5501d500005000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005000050000500