-
Notifications
You must be signed in to change notification settings - Fork 1
/
snake.p8
750 lines (643 loc) · 33.7 KB
/
snake.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
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
pico-8 cartridge // http://www.pico-8.com
version 16
__lua__
-- fruit snake brawl
-- by simone
start_length=5
grow_rate=6
dot = {}
chery = {}
ps = {}
colors = { 12, 8, 10, 11, 9, 2, 14, 5 }
psel = 1 -- default n.of players
game_started=false
in_initial_screen=true
snk_anim = {
stage = 1,
spr = 1,
pos = { x = 0, y = 24 },
delay = -50,
}
function _init()
music()
local offx = 26
local offy = 16
draw_bg()
spr(6,3+offx,0+offy,8,4)
spr(64,0+offx,31+offy,10,3)
txt_press_to_start()
local pos1, pos2 = rand_pos(), rand_pos()
dot.x, dot.y = pos1[1], pos1[2]
chery.x, chery.y = pos2[1], pos2[2]
end
function _update()
if in_players_select then
if psel < 8 and (btnp(1,0) or btnp(2,0)) then
psel+=1
sfx(10)
elseif psel > 1 and (btnp(3,0) or btnp(0,0)) then
psel-=1
sfx(10)
elseif btnp(4,0) or btnp(5,0) then
start_game()
return
end
end
if in_initial_screen and (btnp(4,0) or btnp(5,0)) then
sfx(11)
d_players_select=true
in_players_select=true
in_initial_screen=false
end
if in_game_over and (btnp(4,0) or btnp(5,0)) then
in_game_over=false
ps = {}
_init()
start_game()
end
if (not game_started) return
if all_dead() then
in_game_over=true
music(-1)
return
end
for i=1,psel do
local pl = ps[i]
if pl.dead then
update_death(pl)
goto continue
end
set_player_dir(pl, i)
update_snake(pl, i)
::continue::
end
end
function _draw()
if d_game_start then
draw_bg()
d_game_start=false
end
if d_players_select then
clr_txt()
txt_players_select()
end
-- 16 to 21, and 37 (7 in total)
if in_initial_screen then
if snk_anim.delay >= 20 then
if snk_anim.stage == 1 then
spr(snk_anim.spr+15, snk_anim.pos.x, snk_anim.pos.y)
elseif snk_anim.stage == 2 then
palt(0, false) -- black not transparent
rectfill(snk_anim.pos.x-8, snk_anim.pos.y, 8, 8, 0)
palt() -- reset
end
snk_anim.spr= snk_anim.spr+1
snk_anim.delay= snk_anim.delay+1
if (snk_anim.spr > 6) snk_anim.spr=1
snk_anim.delay=0
snk_anim.pos.x= snk_anim.pos.x+8
else
snk_anim.delay= snk_anim.delay+1
end
end
if (not game_started) return
draw_fruits()
for i=1,psel do
local pl = ps[i]
if pl.dead then
draw_pl_game_over(pl)
else
draw_cut_tail(pl)
draw_head(pl)
end
end
if in_game_over then
txt_game_over(winner_id)
end
end
function draw_bg()
rectfill(0, 0, 127, 127, 0)
end
function draw_fruits()
palt(0, false) -- black not transparent
if dot.prevx then
rectfill(dot.prevx+2, dot.prevy+2, dot.prevx+5, dot.prevy+5, 0)
dot.prevx = nil
dot.prevy = nil
end
if chery.prevx then
palt(0, false)
rectfill(chery.prevx+2, chery.prevy+2, chery.prevx+5, chery.prevy+5, 0)
chery.prevx = nil
chery.prevy = nil
end
palt() -- reset transparency
spr(2, dot.x, dot.y)
spr(5, chery.x, chery.y)
end
function draw_pl_game_over(pl)
if (#pl.trail <= 0) return
local hd = pl.trail[#pl.trail]
-- cut pl's head
pset(hd.x,hd.y,0)
for c in all(pl.trail) do
if c == hd then
-- {hd.x,hd.y} got deleted
else
-- random color except black
pset(c.x,c.y,flr(rnd(14))+1)
end
end
end
function draw_cut_tail(pl)
if #pl.trail >= pl.len then
local tail = pl.trail[1]
-- cut pl's tail
pset(tail.x,tail.y,0)
end
end
function draw_head(pl)
pset(pl.x, pl.y, pl.color)
end
-- true if pixel is not black
function collides(c)
return pget(c.x, c.y) > 0
end
-- _update functions
function start_game()
-- generate players
for i=1,psel do
add(ps, {
len = start_length,
trail = {},
color = colors[i],
score = 0
})
end
-- assign coords
if psel == 1 then
ps[1].x, ps[1].y = 64, 64
elseif psel == 2 then
ps[1].x, ps[1].y = 56, 64
ps[2].x, ps[2].y = 72, 64
elseif psel == 3 then
ps[1].x, ps[1].y = 48, 64
ps[2].x, ps[2].y = 64, 72
ps[3].x, ps[3].y = 80, 64
elseif psel == 4 then
ps[1].x, ps[1].y = 48, 56
ps[2].x, ps[2].y = 56, 72
ps[3].x, ps[3].y = 64, 72
ps[4].x, ps[4].y = 72, 56
elseif psel == 5 then
ps[1].x, ps[1].y = 48, 56
ps[2].x, ps[2].y = 56, 72
ps[3].x, ps[3].y = 64, 80
ps[4].x, ps[4].y = 72, 72
ps[5].x, ps[5].y = 80, 56
elseif psel == 6 then
ps[1].x, ps[1].y = 48, 72
ps[2].x, ps[2].y = 64, 80
ps[3].x, ps[3].y = 80, 72
ps[4].x, ps[4].y = 48, 40
ps[5].x, ps[5].y = 64, 48
ps[6].x, ps[6].y = 80, 40
elseif psel == 7 then
ps[1].x, ps[1].y = 32, 48
ps[2].x, ps[2].y = 40, 72
ps[3].x, ps[3].y = 48, 64
ps[4].x, ps[4].y = 56, 80
ps[5].x, ps[5].y = 64, 64
ps[6].x, ps[6].y = 72, 72
ps[7].x, ps[7].y = 80, 48
elseif psel == 8 then
ps[1].x, ps[1].y = 44, 60
ps[2].x, ps[2].y = 52, 68
ps[3].x, ps[3].y = 60, 74
ps[4].x, ps[4].y = 68, 82
ps[5].x, ps[5].y = 76, 82
ps[6].x, ps[6].y = 84, 74
ps[7].x, ps[7].y = 92, 68
ps[8].x, ps[8].y = 100,60
end
d_players_select=false
in_players_select=false
d_game_start=true
game_started=true
music(6)
end
function update_death(pl)
local hd = pl.trail[#pl.trail]
-- del() shifts the indexes
-- so trail becomes a queue
del(pl.trail, hd)
end
function set_player_dir(pl, i)
local idx = i-1
if (pl.dir ~= 1 and btnp(0,idx)) pl.dir=0
if (pl.dir ~= 0 and btnp(1,idx)) pl.dir=1
if (pl.dir ~= 3 and btnp(2,idx)) pl.dir=2
if (pl.dir ~= 2 and btnp(3,idx)) pl.dir=3
end
function update_snake(pl, i)
if pl.dir ~= nil then
add(pl.trail, {x=pl.x, y=pl.y})
end
if pl.dir==0 then
-- out-of-bounds?
if (pl.x <= 0) pl.x = 127
nextc = {x=pl.x-1, y=pl.y}
if is_colliding(nextc, dot) then
on_dot_collected(pl)
pl.x-=1
elseif is_colliding(nextc, chery) then
on_chery_collected(pl)
pl.x-=1
elseif collides(nextc) then
if is_last_alive(i) then
die(pl)
win(i)
else
die(pl)
end
else
pl.x-=1
end
elseif pl.dir==1 then
-- out-of-bounds?
if (pl.x >= 127) pl.x = 0
nextc = {x=pl.x+1, y=pl.y}
if is_colliding(nextc, dot) then
on_dot_collected(pl)
pl.x+=1
elseif is_colliding(nextc, chery) then
on_chery_collected(pl)
pl.x+=1
elseif collides(nextc) then
if is_last_alive(i) then
die(pl)
win(i)
else
die(pl)
end
else
pl.x+=1
end
elseif pl.dir==2 then
-- out-of-bounds?
if (pl.y <= 0) pl.y = 127
nextc = {x=pl.x, y=pl.y-1}
if is_colliding(nextc, dot) then
on_dot_collected(pl)
pl.y-=1
elseif is_colliding(nextc, chery) then
on_chery_collected(pl)
pl.y-=1
elseif collides(nextc) then
if is_last_alive(i) then
die(pl)
win(i)
else
die(pl)
end
else
pl.y-=1
end
elseif pl.dir==3 then
-- out-of-bounds?
if (pl.y >= 127) pl.y = 0
nextc = {x=pl.x, y=pl.y+1}
if is_colliding(nextc, dot) then
on_dot_collected(pl)
pl.y+=1
elseif is_colliding(nextc, chery) then
on_chery_collected(pl)
pl.y+=1
elseif collides(nextc) then
if is_last_alive(i) then
die(pl)
win(i)
else
die(pl)
end
else
pl.y+=1
end
else end -- no dir, initial state
if #pl.trail >= pl.len+1 then
local hd = pl.trail[1]
-- del() shifts the indexes
-- so trail becomes a queue
del(pl.trail, hd)
end
end
function on_dot_collected(pl)
pos = rand_pos()
dot.prevx, dot.prevy = dot.x, dot.y
dot.x, dot.y = pos[1], pos[2]
sfx(0)
pl.len+= grow_rate
pl.score += flr(pl.len / grow_rate)
end
function on_chery_collected(pl)
pos = rand_pos()
chery.prevx, chery.prevy = chery.x, chery.y
chery.x, chery.y = pos[1], pos[2]
sfx(0)
pl.len+= grow_rate
pl.score += flr(pl.len / grow_rate)
end
function rand_pos()
return {
flr(rnd(119)), --127-8
flr(rnd(119))
}
end
function die(player)
sfx(1)
player.dead = true
end
function all_dead()
for i=1,psel do
local pl = ps[i]
if not pl.dead then
return false
end
end
return true
end
function win(idx)
winner_id=idx
end
function is_last_alive(idx)
if (ps[idx].dead) return false
for i=1,psel do
local pl = ps[i]
if i ~= idx and not pl.dead then
return false
end
end
return true
end
-- utils
function tostrtable(t)
local s = ""
for v in all(t) do
s = s .. tostrcoord(v) .. " "
end
return s
end
function tostrcoord(c)
return "{x="..c.x..",y="..c.y.."}"
end
-- screen center minus the
-- string length times the
-- pixels in a char's width,
-- cut in half
function hcenter(str)
return 64 -#str * 2
end
-- screen center minus the
-- string height in pixels,
-- cut in half
vcenter=61
-- a is snake, b is sprite/dot
function is_colliding(a,b)
return not (
a.x < b.x+2 or
b.x+5 < a.x or
a.y < b.y+2 or
b.y+5 < a.y)
end
-- text functions
function txt_game_over(winner_i)
local text="game over. player " ..
winner_i .. " wins!"
print(text,hcenter(text),vcenter-20,8)
local fin="final score"
print(fin, hcenter(fin), vcenter-8,8)
local pl = ps[winner_i]
local sc = tostr(pl.score)
print(sc, hcenter(sc), vcenter,9)
txt_press_to_start(true)
end
function txt_press_to_start(re)
local text="press \x97 to "
if re then
text = text .. "restart"
else
text = text .. "start"
end
print(text,hcenter(text)-1,vcenter+20,15)
end
function txt_players_select(clr)
local text="number of players: " .. psel
print(text,hcenter(text),vcenter+20,7)
end
function clr_txt()
rectfill(0, 81, 127, 85, 0)
end
__gfx__
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aaa0000000000000000000000000000000
00000000000330000000000000000000000030000000000000000000000000000000aaaaaa0000aa000000aa00000a9990000000000000000000000000000000
00700700007788000003300000000000000330000000000000000000aaaaa00000aa999999a000990000009900000999900aaaaa00aaaaa00000000000000000
000770000788888000788800000330000030030000003000000aaaaa999990000a99999999900099000000990000099990099999aa99999a0000000000000000
00077000088888800088880000088000078008800003030000a9999999999000a999999999900099000000990000000000099999999999990000000000000000
007007000088880000088000000000000880088000800800009999999999000a999999999990009900000099a0000aaaa0099999999999990000000000000000
00000000000880000000000000000000000000000000000000999999900000a99990009999900099000000999000099990099909999009990000000000000000
000000000000000000000000000000000000000000000000009999990000009999000a9999000099000000999000099990000009999009900000000000000000
00000000000000000000000000000000000000000000000000999900aa000a999000a99990000099000000999000099990000009999009900000000000000000
000000000000000000000000000000000000000000000000009999aa9900099990aa999900000099a0000099900009999a000009999000000000000000000000
0000bbbbbbbb0000000000000000000000000000bb00000000999999900009999a999990000000999aa00a999000099999000009999000000000000000000000
bbbb33333333bbbbbbbbbbbb00b7bb00bbb7bb0033b7bb0000999999900009999999990000000099999aa9999000099999000009999000000000000000000000
333300000000333333333333bbbbb80033bbb80000bbb800009999900000099999999000a0000009999999990000099999000009999000000000000000000000
0000000000000000000000003330000000000000000000000099900000000999990000009a000000999999990000099999000009999000000000000000000000
000000000000000000000000000000000000000000000000009990000000099999a0000099000000099999990000099999a00009999000000000000000000000
00000000000000000000000000000000000000000000000000999a0000000999999aa00099a00000009999990000099999900009999a00000000000000000000
00000000000000000000000000000000000000000000000000099900000000990099900a99900000000099900000009999900000999900000000000000000000
000000000000000000000000000000000000000000000000000999a00000009900099aa999900000000000000000009999000000099900000000000000000000
00000000000000000000000000000000000000000000000000099990000000990000999999000000000000000000000000000000009900000000000000000000
0000000000000000000000000000000000000000007bb70000099999000000990000999990000000000000000000000000000000000900000000000000000000
000000000000000000000000000000000000000000b88b0000000000000000000000000000000000066000006000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000055000006000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000006666660060000060000066000006006600006666660000000000000000000000000
00000000000000000000000000000000000000000000000000000000000066555550066000060000655600006066500006555550000000000000000000000000
00000000000000000000000000000000000000000000000000000000000065000000066600060000600600006665000006000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000066666600065560060006600660006666000006666000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000055555600060056660066566566006556600006555000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000006600060005660065055056006005660006000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000666666500060000560060000006006000556006666660000000000000000000000000
00000000000000000000000000000000000000000000000000000000000555555000050000050050000005005000005005555550000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000cccc0000000ccc00000000000000cc000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000
ccccccccc000cccccccc0000000000cccc00c0000000000000000000000000c10c00000000000000000000000000000000000000000000000000000000000000
c111111cc00cccccccccccc000000cccccc01cc0000000000000000000000c11cc00000000000000000000000000000000000000000000000000000000000000
c11111ccc001ccccc11111ccc000ccc22ccc11cc00000000000000000000cc1cc100000000000000000000000000000000000000000000000000000000000000
cc000ccc10011cccc111111ccc0ccc2222ccc11cc000000000c00000000cc10cc100000000000000000000000000000000000000000000000000000000000000
1c00ccc110001ccc10000cccc1cccc2222cccc1cccc000000ccc000000ccc1ccc000000000000000000000000000000000000000000000000000000000000000
1ccccccccc000ccc100ccccc1ccccccccccccc11cccc0000ccccc0000ccc1ccc1000000000000000000000000000000000000000000000000000000000000000
0cc1111111c00ccccccccc11ccccc111111cccc11cccc00ccccccc00cccc1ccc1000000000000000000000000000000000000000000000000000000000000000
01cc111111cc0cccccc1111ccccc11111111cccc11cccc0ccc1ccc0cccc1cccc0000000000000000000000000000000000000000000000000000000000000000
01ccc0000ccc0ccccccc11ccccc1100000011cccc11cccccc111ccccccc1ccc10000000000000000000000000000000000000000000000000000000000000000
00ccc000ccc10cc11ccccc1ccccccccccccccccccc11ccccc101cccccc1cccc10000000000000000000000000000000000000000000000000000000000000000
00cccc0ccc11ccc1100cccc1ccc1111111111cccccc11ccc10001cccc1ccccccc000000000000000000000000000000000000000000000000000000000000000
001cccccc110cc1000c11ccc1111111111111111cccc11c1100011cc1cccccccccccc00000000000000000000000000000000000000000000000000000000000
001ccccc110ccc100cccc11ccc1000000000011111cc0111000001c11111cccccccccccc00000000000000000000000000000000000000000000000000000000
000ccc11100cc100c11111111ccc0000000000001111c0100000001101111111111ccccccc000000000000000000000000000000000000000000000000000000
000cc111000c110011111001111cc0000000000000111c0000000010000011111111111111c00000000000000000000000000000000000000000000000000000
000c1100000110001000000001111c00000000000000110000000000000000000001111111100000000000000000000000000000000000000000000000000000
00011000000100000000000000011100000000000000010000000000000000000000000000100000000000000000000000000000000000000000000000000000
00010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__label__
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000aaa00000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000aaaaaa0000aa000000aa00000a99900000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000aaaaa00000aa999999a000990000009900000999900aaaaa00aaaaa000000000000000000000000000000000000
00000000000000000000000000000000aaaaa999990000a99999999900099000000990000099990099999aa99999a00000000000000000000000000000000000
0000000000000000000000000000000a9999999999000a9999999999000990000009900000000000999999999999900000000000000000000000000000000000
00000000000000000000000000000009999999999000a999999999990009900000099a0000aaaa00999999999999900000000000000000000000000000000000
0000000000000000000000000000000999999900000a999900099999000990000009990000999900999099990099900000000000000000000000000000000000
00000000000000000000000000000009999990000009999000a99990000990000009990000999900000099990099000000000000000000000000000000000000
0000000000000000000000000000000999900aa000a999000a999900000990000009990000999900000099990099000000000000000000000000000000000000
00000000000000000000000000000009999aa9900099990aa999900000099a0000099900009999a0000099990000000000000000000000000000000000000000
0000bbbbbbbb0000000000000000000999999900bb9999a99999bbbbbbbb99aa00a999000099999000009999bb0000000000bbbbbbbb00000000000000000000
bbbb33333333bbbbbbbbbbbb00b7bb09bbb7bb0033b7bb99bbbb33333333bbbbbbbbbbbb00b7bb90bbb7bb9933b7bb00bbbb33333333bbbbbbbbbbbb00b7bb00
333300000000333333333333bbbbb80933bbb80000bbb89933330a000000333333333333bbbbb89033bbb89900bbb800333300000000333333333333bbbbb800
000000000000000000000000333000099900000000999990000009a0000009999999900033399990000099990000000000000000000000000000000033300000
00000000000000000000000000000009990000000099999a0000099000000099999990000099999a000099990000000000000000000000000000000000000000
0000000000000000000000000000000999a0000000999999aa00099a00000009999990000099999900009999a000000000000000000000000000000000000000
0000000000000000000000000000000099900000000990099900a999000000000999000000099999000009999000000000000000000000000000000000000000
00000000000000000000000000000000999a00000009900099aa9999000000000000000000099990000000999000000000000000000000000000000000000000
00000000000000000000000000000000999900000009900009999990000000000000000000000000000000099000000000000000000000000000000000000000
00000000000000000000000000000000999990000009900009999900000000000000000000000000000000009000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000660000060000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000550000060000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000066666600600000600000660000060066000066666600000000000000000000000000000000000000000000
00000000000000000000000000000000000000000665555500660000600006556000060665000065555500000000000000000000000000000000000000000000
00000000000000000000000000000000000000000650000000666000600006006000066650000060000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000666666000655600600066006600066660000066660000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000555556000600566600665665660065566000065550000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000066000600056600650550560060056600060000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000006666665000600005600600000060060005560066666600000000000000000000000000000000000000000000
00000000000000000000000000000000000000005555550000500000500500000050050000050055555500000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000cccc0000000ccc00000000000000cc000000000000000000000000000000c00000000000000000000000000000000000000
00000000000000000000000000ccccccccc000cccccccc0000000000cccc00c0000000000000000000000000c10c000000000000000000000000000000000000
00000000000000000000000000c111111cc00cccccccccccc000000cccccc01cc0000000000000000000000c11cc000000000000000000000000000000000000
00000000000000000000000000c11111ccc001ccccc11111ccc000ccc22ccc11cc00000000000000000000cc1cc1000000000000000000000000000000000000
00000000000000000000000000cc000ccc10011cccc111111ccc0ccc2222ccc11cc000000000c00000000cc10cc1000000000000000000000000000000000000
000000000000000000000000001c00ccc110001ccc10000cccc1cccc2222cccc1cccc000000ccc000000ccc1ccc0000000000000000000000000000000000000
000000000000000000000000001ccccccccc000ccc100ccccc1ccccccccccccc11cccc0000ccccc0000ccc1ccc10000000000000000000000000000000000000
000000000000000000000000000cc1111111c00ccccccccc11ccccc111111cccc11cccc00ccccccc00cccc1ccc10000000000000000000000000000000000000
0000000000000000000000000001cc111111cc0cccccc1111ccccc11111111cccc11cccc0ccc1ccc0cccc1cccc00000000000000000000000000000000000000
0000000000000000000000000001ccc0000ccc0ccccccc11ccccc1100000011cccc11cccccc111ccccccc1ccc100000000000000000000000000000000000000
0000000000000000000000000000ccc000ccc10cc11ccccc1ccccccccccccccccccc11ccccc101cccccc1cccc100000000000000000000000000000000000000
0000000000000000000000000000cccc0ccc11ccc1100cccc1ccc1111111111cccccc11ccc10001cccc1ccccccc0000000000000000000000000000000000000
00000000000000000000000000001cccccc110cc1000c11ccc1111111111111111cccc11c1100011cc1cccccccccccc000000000000000000000000000000000
00000000000000000000000000001ccccc110ccc100cccc11ccc1000000000011111cc0111000001c11111cccccccccccc000000000000000000000000000000
00000000000000000000000000000ccc11100cc100c11111111ccc0000000000001111c0100000001101111111111ccccccc0000000000000000000000000000
00000000000000000000000000000cc111000c110011111001111cc0000000000000111c0000000010000011111111111111c000000000000000000000000000
00000000000000000000000000000c1100000110001000000001111c000000000000001100000000000000000000011111111000000000000000000000000000
00000000000000000000000000000110000001000000000000000111000000000000000100000000000000000000000000001000000000000000000000000000
00000000000000000000000000000100000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000fff0fff0fff00ff00ff000000fffff000000fff00ff000000ff0fff0fff0fff0fff000000000000000000000000000000
0000000000000000000000000000000f0f0f0f0f000f000f0000000ff0f0ff000000f00f0f00000f0000f00f0f0f0f00f0000000000000000000000000000000
0000000000000000000000000000000fff0ff00ff00fff0fff00000fff0fff000000f00f0f00000fff00f00fff0ff000f0000000000000000000000000000000
0000000000000000000000000000000f000f0f0f00000f000f00000ff0f0ff000000f00f0f0000000f00f00f0f0f0f00f0000000000000000000000000000000
0000000000000000000000000000000f000f0f0fff0ff00ff0000000fffff0000000f00ff000000ff000f00f0f0f0f00f0000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__sfx__
000100001315013150141501415014150141501415015150161501715018150191501a1501b1501e1501f1502215022150231502415025150261502615027150291502a1502b1502d1502f150301503215034150
000800003b6703a6603b0603816039060380503705034150321503505030150340502e150320502b1503005026250271502e050231502c050201502a0501e1501d1501a4401d340184401d3301b3301742014420
010d0020030030c0730f3000c0730000024675246000c073000000c073000000c0730000024675246050c073000000c073000002460000000246750c0000c073000000c073000002460000000246752460500000
010d00200e40000000000000e42000000104200000011420000000e420000000e4200000000000000001042000000104200000000000134000000000000134200000013420000000000000000000000000000000
010d01202670026740267402674026740267302673026730267302672026720267202672026720267102671026710297000000029700000000000000000000000000029720287002872000000267200000029720
011000002543529400284350000025435000002543500000274203542037420324203042037420394203042000000000000000000000000000000000000000000000000000000000000000000000000000000000
000600000000000000100501605014050200500000023150000002965000000000002525000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000200000000000000000000000000000000003835036350313503035000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000200002a35000000000000000000000000000000000000000000000000000000000000000000000002a35000000000000000000000000000000000000000000000000000000000000000000000000000000000
000400003015033150361503f15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000400002415000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0008000024250302503c2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__music__
00 02034444
00 41020344
00 41020344
00 41020344
00 41020304
02 41020304
00 41020304
00 41020304
03 41024344