-
Notifications
You must be signed in to change notification settings - Fork 0
/
gemsfall.p8
738 lines (648 loc) · 31.4 KB
/
gemsfall.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
pico-8 cartridge // http://www.pico-8.com
version 35
__lua__
debug = false
game_over = true
music_playing = false
--combo_max = 300 --frames in combo timer (using square time right now)
square_time = 180 --time it takes a square to fade
current_speed = 0.4
function _init()
border_timer = 0
border_color = 1
begin()
end
function _update60()
if not game_over then
block.update()
board.update()
else
if btnp(🅾️) or btnp(❎) then
begin()
game_over = false
end
end
end
function _draw()
cls()
border_colors = {1,2,6,8,12,13}
if border_timer <= 20 then
border_timer += 2
else
border_timer = 0
border_color = one_of(border_colors)
end
if not game_over then
board.draw()
block.draw()
else
grid.draw()
rectfill(44, 44, 84, 66, 0)
rect(44, 44, 84, 66, border_color)
if score > 0 then
spr(1, 46, 46)
print(score, 59, 47, border_color)
spr(2, 75, 46)
print("🅾️", 46, 60 , 12)
print("❎", 76, 60 , 12)
print("retry", 55, 60 , 12)
else
print("move ⬅️➡️",47, 46, 8)
print("drop ⬆️⬇️",47, 53, 2)
print("spin 🅾️❎",47, 60, 12)
end
end
end
function begin()
board.clear()
block.new()
score = 0
combo = 0
combo_timer = 0
end
function init_cell(gx, gy, color) --parent
local cell = {}
cell.gx = gx
cell.gy = gy
cell.x = (board.start_gx + cell.gx) * 8
cell.y = (board.start_gy + cell.gy) * 8
cell.animator = add_animator(cell)
cell.timer = 0
cell.arrived = false
cell.squared = false
cell.origin = false
cell.speed = 1.5
cell.type = color or one_or_two()
cell.debug = ""
cell.move = function(gx, gy, speed)
local goal_x = (cell.gx + gx) * 8
local distance_x = goal_x - cell.x
local direction_x = sgn(distance_x)
local arrived_x = false
if abs(distance_x) < speed * 2 then
cell.x = goal_x
arrived_x = true
else
cell.x += direction_x * speed * 2
end
local goal_y = (cell.gy + gy) * 8
local distance_y = goal_y - cell.y
local direction_y = sgn(distance_y)
local arrived_y = false
if abs(distance_y) < speed then
cell.y = goal_y
arrived_y = true
else
cell.y += direction_y * speed
end
cell.arrived = arrived_x and arrived_y
return cell.arrived
end
cell.draw = function()
spr(cell.type, cell.x, cell.y)
if cell.timer > square_time * 2/3 then
rectfill(cell.x + 1, cell.y + 1, cell.x + 6, cell.y + 6, 0)
elseif cell.timer > square_time * 1/3 then
rectfill(cell.x + 2, cell.y + 2, cell.x + 5, cell.y + 5, 1)
elseif cell.timer > 0 then
rectfill(cell.x + 3, cell.y + 3, cell.x + 4, cell.y + 4, 2)
end
if debug then
print(cell.debug, cell.x, cell.y, 7)
--rectfill(cell.gx*8, cell.gy*8, cell.gx*8 + 7, cell.gy*8 + 7, 12)
end
end
return cell
end
block = {
new = function()
block.gx = board.start_gx
block.gy = board.start_gy
block.speed = current_speed
block.min_speed = current_speed
block.max_speed = 8
--block.x_multiplier = 2
block.cells = {
init_cell(0, 1, one_or_two(), block),
init_cell(1, 1, one_or_two(), block),
init_cell(0, 0, one_or_two(), block),
init_cell(1, 0, one_or_two(), block)
}
block.active = true
block.arrived = false
block.rotation = 0
block.rotation_timer = 0
block.debug = ""
end,
bottom_y = function()
for cell in all(block.cells) do
if cell.gy == 0 then return cell.y + 2 end
end
end,
update = function()
local input = btnp(➡️) and 1 or (btnp(⬅️) and -1 or 0)
if btn(⬆️) or btn(⬇️) then
block.speed = block.max_speed
else
block.speed = block.min_speed
end
if btnp(🅾️) then
block.rotate("counterclockwise")
elseif btnp(❎) then
block.rotate("clockwise")
end
if block.active then
local current_gy = pixel_to_grid(block.bottom_y())
local goal_gx = block.gx + input
if input and board.square_free(goal_gx, current_gy) then
block.gx = goal_gx
end
block.gy = board.last_square(block.gx, block.gy)
block.arrived = block.update_cells()
if block.arrived then
block.active = false
end
else
board.commit_block(block)
sfx(0)
end
end,
rotate = function(direction)
local direction = direction or "clockwise"
if direction == "clockwise" then
local rotation = block.rotation + 1
block.rotation = rotation < 3 and rotation or -1
for cell in all(block.cells) do
if cell.gx + cell.gy == 0 then
--top left cell, moving to top right
cell.gx = 1
cell.animator.queue("ur")
cell.animator.queue("dr")
elseif cell.gx + cell.gy == 2 then
--bottom right cell, moving to bottom left
cell.gx = 0
cell.animator.queue("dl")
cell.animator.queue("ul")
elseif cell.gx == 1 and cell.gy == 0 then
--top right cell moving bottom right
cell.gy = 1
cell.animator.queue("dr")
cell.animator.queue("dl")
elseif cell.gx == 0 and cell.gy == 1 then
--bottom left cell, moving top left
cell.gy = 0
cell.animator.queue("ul")
cell.animator.queue("ur")
end
end
elseif direction == "counterclockwise" then
local rotation = block.rotation - 1
block.rotation = rotation > -3 and rotation or 1
for cell in all(block.cells) do
if cell.gx + cell.gy == 0 then
--top left cell moving bottom left
cell.gy = 1
--cell.y += 8
cell.animator.queue("dl")
cell.animator.queue("dr")
elseif cell.gx + cell.gy == 2 then
--bottom right cell moving top right
cell.gy = 0
--cell.y -= 8
cell.animator.queue("ur")
cell.animator.queue("ul")
elseif cell.gx == 1 and cell.gy == 0 then
--top right moving top left
cell.gx = 0
--cell.x -= 8
cell.animator.queue("ul")
cell.animator.queue("dl")
elseif cell.gx == 0 and cell.gy == 1 then
--bottom left cell moving bottom right
cell.gx = 1
--cell.x += 8
cell.animator.queue("dr")
cell.animator.queue("ur")
end
end
end
end,
update_cells = function()
local direction = sgn(block.rotation)
local arrived = true
for cell in all(block.cells) do
local current_arrival = cell.move(block.gx, block.gy, block.speed)
cell.animator.tick()
arrived = current_arrival and arrived
end
return arrived
end,
draw = function()
for cell in all(block.cells) do
cell.draw()
end
if debug then
draw_square(block.gx, block.gy, 8)
print(block.debug, block.gx*8, block.gy*8 - 6, 10)
end
end
}
board = {
start_gx = 7,
start_gy = -2,
cells = {},
debug = "",
clear = function()
for i = 0, 15 do
board.cells[i] = {}
for j = 0, 15 do
board.cells[i][j] = nil
end
end
end,
update = function()
if combo_timer > 0 then
combo_timer -= 1
-- if not music_playing then
-- music(0, 0, 4)
-- music_playing = true
-- end
elseif combo > 0 then
combo = 0
-- music(-1)
-- music_playing = false
sfx(3)
end
for i = 15, 0, -1 do
for j = 0, 15 do
--checking every cell (empty or not) in board
local cell = board.cells[i][j]
if cell then
if board.cell_free(cell.gx, cell.gy + 1) then
--floating cells fall
cell.gy = board.last_gy(cell.gx, cell.gy + 1)
board.cells[i][j] = nil
board.cells[i][cell.gy] = cell
elseif cell.squared then
cell.timer += 1
--cell.debug = cell.timer
if cell.timer > square_time then
board.cells[cell.gx][cell.gy] = nil
sfx(2)
end
end
if board.is_square(cell.gx, cell.gy) and not cell.origin then
combo_timer = square_time
combo += 1
score += (1 + 1 * flr(combo/10))
current_speed += .005
if combo > 8 then
sfx(5)
elseif combo > 3 then
sfx(4)
else
sfx(1)
end
--cells that are part of a new square
--could be cleaned into a local table to set squared and timer
local highest_timer = 0
cell.squared = true
cell.origin = true
--highest_timer = max(highest_timer, cell.timer)
local cell_above = board.cells[cell.gx][cell.gy - 1]
local cell_right = board.cells[cell.gx + 1][cell.gy]
local cell_diagonal = board.cells[cell.gx + 1][cell.gy - 1]
cell_above.squared = true
cell_right.squared = true
cell_diagonal.squared = true
highest_timer = max(cell.timer, cell_above.timer, cell_right.timer, cell_diagonal.timer)
cell.timer = highest_timer
cell_above.timer = highest_timer
cell_right.timer = highest_timer
cell_diagonal.timer = highest_timer
end
cell.move(0, 0, cell.speed)
board.debug = score.." : "..combo.." : "..combo_timer.." : "..current_speed.." : "..stat(7)
end
end
end
end,
draw = function()
grid.draw()
for row = 0, 15 do
for gy = 0, 15 do
if board.cells[row][gy] then
board.cells[row][gy].draw()
end
end
end
for square in all(board.squares) do
draw_square(square.gx, square.gy - 1)
end
if debug then
rectfill(0,0, 100, 5, 0)
print(board.debug, 0 , 0, 15)
end
end,
cell_free = function (gx, gy)
if gx < 0 or gx > 15 or gy > 15 then
return false
end
if board.cells[gx][gy]then
return false
end
return true
end,
square_free = function(gx, gy)
if board.cell_free(gx, gy) and
board.cell_free(gx + 1, gy) and
board.cell_free(gx, gy + 1) and
board.cell_free(gx + 1, gy + 1) then
return true
end
return false
end,
last_gy = function(gx, gy)
local last_gy = gy
for i = gy, 15 do
if board.cell_free(gx, i) then
last_gy = i
else
return last_gy
end
end
return last_gy
end,
last_square = function(gx, gy)
local left_gy = board.last_gy(gx, gy)
local right_gy = board.last_gy(gx + 1, gy)
local last_square = left_gy < right_gy and left_gy or right_gy
return last_square - 1
end,
is_square = function(gx, gy)
if gx <= 14 then
local cell = board.cells[gx][gy] and board.cells[gx][gy] or nil
local right_cell = board.cells[gx+1][gy] and board.cells[gx+1][gy] or nil
local top_right_cell = board.cells[gx+1][gy-1] and board.cells[gx+1][gy-1] or nil
local top_cell = board.cells[gx][gy-1] and board.cells[gx][gy-1] or nil
if cell and cell.arrived and
right_cell and cell.type == right_cell.type and right_cell.arrived and
top_right_cell and top_right_cell.type == cell.type and top_right_cell.arrived and
top_cell and top_cell.type == cell.type and top_cell.arrived then
return true
end
end
return false
end,
add = function(cell)
board.cells[cell.gx][cell.gy] = cell
end,
commit_block = function(block)
for cell in all(block.cells) do
cell.gx = block.gx + cell.gx
cell.gy = block.gy + cell.gy
board.add(cell)
end
board.start_gx = block.gx
if board.square_free(board.start_gx, 0) then
block.new()
else
game_over = true
end
end
}
grid = {
cells = {},
right_color = 1,
top_color = 6,
bottom_color = 2,
left_color = 5,
draw = function()
for i = 0 , 15 do
x = i*8
y = i*8
line(0, y+7, 128, y+7, grid.bottom_color)
line(x+7, 0, x+7, 128, grid.right_color)
line(0, y, 128, y, grid.top_color)
line(x, 0, x, 128, grid.left_color)
end
end
}
function add_animator(obj)
local animator = {
frame = 0,
animations = {}
}
animator.tick = function()
if animator.animations[1] then
local animation = animator.animations[1]
for property, value in pairs(animation) do
if property == 'gx' then
obj.x += value
elseif property == 'gy' then
obj.y += value
end
end
animator.frame += 1
if animator.frame >= animation.length then
del(animator.animations, animation)
animator.frame = 0
end
end
end
animator.queue = function (animation)
if animation == "ul" then
add(animator.animations, {
gx = -1,
gy = -1,
length = 4
})
elseif animation == "ur" then
add(animator.animations, {
gx = 1,
gy = -1,
length = 4
})
elseif animation == "dl" then
add(animator.animations, {
gx = -1,
gy = 1,
length = 4
})
elseif animation == "dr" then
add(animator.animations, {
gx = 1,
gy = 1,
length = 4
})
end
end
return animator
end
function draw_square(row, column, color)
local color = color or 10
rect(row*8, column*8, row*8 + 15, column * 8 + 15, color)
end
function one_or_two()
return flr(rnd(2))+1
end
function one_of(table)
local roll = flr(rnd(#table)+1)
return table[roll]
end
function pixel_to_grid(number)
return flr(number/8)
end
__gfx__
0000000089999999c777777700000000000500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000088999992cc77777d05555000005500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0070070088ee8822cc66ccdd00055000550005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0007700088e88822cc6cccdd00550000500005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0007700088888822ccccccdd00555500555555550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0070070088888822ccccccdd00000500000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000088111122cc2222dd05005000000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000081111112c222222d05550000000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__label__
56666666566666615666666156666661566666615666666156666661566666615666666156666661566666615666666156666661566666615666666156666661
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
52222221522222215222222152222221522222215222222152222221522222215222222152222221522222215222222152222221522222215222222152222221
66666666566666665666666156666661566666615666666156666661c7777777c777777756666661566666615666666156666661566666615666666156666661
50000001500000015000000150000001500000015000000150000001cc77777dcc77777d50000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001cc66ccddcc66ccdd50000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001cc6cccddcc6cccdd50000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001ccccccddccccccdd50000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001ccccccddccccccdd50000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001cc2222ddcc2222dd50000001500000015000000150000001500000015000000150000001
22222222522222215222222152222221522222215222222152222221c222222dc222222d52222221522222215222222152222221522222215222222152222221
66666666666666665666666656666661566666615666666156666661c77777778999999956666661566666615666666156666661566666615666666156666661
50000001500000015000000150000001500000015000000150000001cc77777d8899999250000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001cc66ccdd88ee882250000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001cc6cccdd88e8882250000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001ccccccdd8888882250000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001ccccccdd8888882250000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001cc2222dd8811112250000001500000015000000150000001500000015000000150000001
22222222222222225222222152222221522222215222222152222221c222222d8111111252222221522222215222222152222221522222215222222152222221
66666666666666666666666656666666566666615666666156666661566666615666666156666661566666615666666156666661566666615666666156666661
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
22222222222222222222222252222221522222215222222152222221522222215222222152222221522222215222222152222221522222215222222152222221
66666666666666666666666666666666566666665666666156666661566666615666666156666661566666615666666156666661566666615666666156666661
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
22222222222222222222222222222222522222215222222152222221522222215222222152222221522222215222222152222221522222215222222152222221
66666666666666666666666666666666666666665666666656666661566666615666666156666661566666615666666156666661566666615666666156666661
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
22222222222222222222222222222222222222225222222152222221522222215222222152222221522222215222222152222221522222215222222152222221
66666666666666666666666666666666666666666666666656666666566666615666666156666661566666615666666156666661566666615666666156666661
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
22222222222222222222222222222222222222222222222252222221522222215222222152222221522222215222222152222221522222215222222152222221
66666666666666666666666666666666666666666666666666666666566666665666666156666661566666615666666156666661566666615666666156666661
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
22222222222222222222222222222222222222222222222222222222522222215222222152222221522222215222222152222221522222215222222152222221
66666666666666666666666666666666666666666666666666666666666666665666666656666661566666615666666156666661566666615666666156666661
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
22222222222222222222222222222222222222222222222222222222222222225222222152222221522222215222222152222221522222215222222152222221
66666666666666666666666666666666666666666666666666666666666666666666666656666666566666615666666156666661566666615666666156666661
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
22222222222222222222222222222222222222222222222222222222222222222222222252222221522222215222222152222221522222215222222152222221
66666666666666666666666666666666666666666666666666666666666666666666666666666666566666665666666156666661566666615666666156666661
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
22222222222222222222222222222222222222222222222222222222222222222222222222222222522222215222222152222221522222215222222152222221
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666665666666656666661566666615666666156666661
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222225222222152222221522222215222222152222221
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666656666666566666615666666156666661
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222252222221522222215222222152222221
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666566666665666666156666661
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
50000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001500000015000000150000001
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222522222215222222152222221
6666666666666666666666666666666666666666c777777766666666666666668999999966666666666666666666666666666666666666665666666656666661
5000000150000001500000015000000150000001cc77777d50000001500000018899999250000001500000015000000150000001500000015000000150000001
5000000150000001500000015000000150000001cc66ccdd500000015000000188ee882250000001500000015000000150000001500000015000000150000001
5000000150000001500000015000000150000001cc6cccdd500000015000000188e8882250000001500000015000000150000001500000015000000150000001
5000000150000001500000015000000150000001ccccccdd50000001500000018888882250000001500000015000000150000001500000015000000150000001
5000000150000001500000015000000150000001ccccccdd50000001500000018888882250000001500000015000000150000001500000015000000150000001
5000000150000001500000015000000150000001cc2222dd50000001500000018811112250000001500000015000000150000001500000015000000150000001
2222222222222222222222222222222222222222c222222d22222222222222228111111222222222222222222222222222222222222222225222222152222221
6666666666666666666666666666666666666666c7777777c7777777c7777777c777777766666666666666666666666666666666666666666666666656666666
5000000150000001500000015000000150000001cc77777dcc77777dcc77777dcc77777d50000001500000015000000150000001500000015000000150000001
5000000150000001500000015000000150000001cc66ccddcc66ccddcc66ccddcc66ccdd50000001500000015000000150000001500000015000000150000001
5000000150000001500000015000000150000001cc6cccddcc6cccddcc6cccddcc6cccdd50000001500000015000000150000001500000015000000150000001
5000000150000001500000015000000150000001ccccccddccccccddccccccddccccccdd50000001500000015000000150000001500000015000000150000001
5000000150000001500000015000000150000001ccccccddccccccddccccccddccccccdd50000001500000015000000150000001500000015000000150000001
5000000150000001500000015000000150000001cc2222ddcc2222ddcc2222ddcc2222dd50000001500000015000000150000001500000015000000150000001
2222222222222222222222222222222222222222c222222dc222222dc222222dc222222d22222222222222222222222222222222222222222222222252222221
__sfx__
010300001252401504165240c50400504005040050400504005040050400504005040050400504005040050400504005040050400504005040050400504005040050400504005040050400504005040050400504
010c00002455228522295233055434525355253c5553c007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700007
000200000c215132150f2150020500205002050020500205002050020500205002050020500205002050020500205002050020500205002050020500205002050020500205002050020500205002050000500005
010400000c0131d432070010800500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
01100000265522a5222b5233255436525375253e55502000020000200002000020000200002000020000200002000020000200002000020000200002000020000200002000020000200002000020000200002000
01100000285522c5222d5233455438525395253f55504000040000400004000040000400004000040000400004000040000400004000040000400004000040000400004000040000400004000040000400004000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
011000000c0000c0000c0000c0001c0001c0001c0001c0001f0001f0001f0001f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
011000000c0230000000103001030c0431030300103001030c0330010300103001030c0230010300103001030c0430010300103001030c0230010300103001030c0330010300103001030c033001030010300103
011000000511005120051300512005110051100513005120051100512005110051400511005120051400512005110051200513005140051100511005140051200511005120051100514005110051200514005120
__music__
03 0a0b4344