/
re-hoard.p8
executable file
·666 lines (608 loc) · 47.3 KB
/
re-hoard.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
pico-8 cartridge // http://www.pico-8.com
version 8
__lua__
--re-hoard
--copyright tinglar 2017
--license gplv3 (gnu.org/licenses/gpl-3.0.en.html)
--revision 0
--
-- parameters
--
dungeon_initial_size_constant = 16
wall_sprite_constant = 1
floor_sprite_constant = 2
door_sprite_constant = 3
dungeon = {}
level = 0
--
-- structures
--
--entity-component system code adapted from:
--selfsame at lexaloffle bbs
function _has(ecs_single_entity, ecs_component_value)
for ecs_component_name in all(ecs_component_value) do
if not ecs_single_entity[ecs_component_name] then
return false
end
end
return true
end
function ecs_system(ecs_component_value, ecs_entity_function)
return function(ecs_every_entity)
for ecs_single_entity in all(ecs_every_entity) do
if _has(ecs_single_entity, ecs_component_value) then
ecs_entity_function(ecs_single_entity)
end
end
end
end
-- queue code adapted from:
-- deque implementation by pierre "catwell" chapuis
plain_queue_new = function()
local queue_instance = {head = 0, tail = 0}
return setmetatable(plain_queue_instance, {__index = methods})
end
plain_queue_length = function(self)
return self.tail - self.head
end
plain_queue_push = function(self, item)
assert(item ~= nil)
self.tail = self.tail + 1
self[self.tail] = item
end
plain_queue_pop = function(self)
if self:queue_length() == 0 then return nil end
local queue_instance = self[self.tail]
self[self.tail] = nil
self.tail = self.tail - 1
return queue_instance
end
-- priority queue code adapted from:
-- rosetta code
priority_queue = {
__index = {
priority_queue_push = function(self, element_priority, element_value)
local current_queue = self[element_priority]
if not current_queue then
current_queue = {first = 1, last = 0}
self[element_priority] = current_queue
end
current_queue.last = current_queue.last + 1
current_queue[current_queue.last] = element_value
end,
priority_queue_pop = function(self)
for element_priority, current_queue in pairs(self) do
if current_queue.first <= current_queue.last then
local element_value = current_queue[current_queue.first]
current_queue[current_queue.first] = nil
current_queue.first = current_queue.first + 1
return element_priority, element_value
else
self[element_priority] = nil
end
end
end, --please do not forget the commas!
priority_queue_pour = function(self) --returns value without the priority
for element_priority, current_queue in pairs(self) do
if current_queue.first <= current_queue.last then
local element_value = current_queue[current_queue.first]
current_queue[current_queue.first] = nil
current_queue.first = current_queue.first + 1
return element_value
else
self[element_priority] = nil
end
end
end,
priority_queue_length = function(self)
return self.last - self.first + 1
end
},
__call = function(cls)
return setmetatable({}, cls)
end
}
setmetatable(priority_queue, priority_queue)
-- usage:
-- declare = priority_queue()
-- declare:priority_queue_push(priority, value)
-- for priority, value in declare.pop, declare
--
-- algorithms
--
build_dungeon = function()
local dungeon_size = dungeon_initial_size_constant + flr(level/3)
local travelled_cells = plain_queue_new()
local immediate_cells = plain_queue_new()
local current_cell = nil
local cell_content_above = dungeon[current_cell[1]][current_cell[2] - 1]
local cell_content_below = dungeon[current_cell[1]][current_cell[2] + 1]
local cell_content_back = dungeon[current_cell[1] - 1][current_cell[2]]
local cell_content_front = dungeon[current_cell[1] + 1][current_cell[2]]
local cell_location_above = {current_cell[1], current_cell[2] - 1}
local cell_location_below = {current_cell[1], current_cell[2] + 1}
local cell_location_back = {current_cell[1] - 1, current_cell[2]}
local cell_location_front = {current_cell[1] + 1, current_cell[2]}
for x = 1, dungeon_size do
dungeon[x] = {}
for y = 1, dungeon_size do
if y == (1 or dungeon_size) then
dungeon[x][y] = false
end
end
if x == (1 or dungeon_size) then
dungeon[x][y] = false
end
end
-- this hard-coded section of the dungeon builder
-- is an optimization of the cases of the cells
-- that surround the north-west corner.
dungeon[2][2] = true
travelled_cells:plain_queue_push({2,2})
if flr(rnd(1)) then
dungeon[2][3] = true
current_cell = {2,3}
travelled_cells:plain_queue_push({2,3})
dungeon[3][2] = false
else
dungeon[3][2] = true
current_cell = {3,2}
travelled_cells:plain_queue_push({3,2})
dungeon[2][3] = false
end
repeat
-- if current_cell holds {x,y}, then
-- current_cell[1] holds x while current_cell[2] holds y.
if cell_content_back ~= nil then
immediate_cells:plain_queue_push(cell_location_back)
-- immediate_cells is a queue that holds tables.
-- after all, immediate_cells needs the locations, not their contents.
end
if cell_content_above ~= nil then
immediate_cells:plain_queue_push(cell_location_above)
end
if cell_content_front ~= nil then
immediate_cells:plain_queue_push(cell_location_front)
end
if cell_content_below ~= nil then
immediate_cells:plain_queue_push(cell_location_below)
end
if immediate_cells:plain_queue_length() == 0 then
current_cell = travelled_cells:plain_queue_pop()
else
local randomly = flr(rdm(immediate_cells:plain_queue_length())) + 1
-- the program goes to the randomly-picked cell.
current_cell = {immediate_cells.randomly}
-- if the program travelled horizontally...
if randomly % 2 == 1 then
if cell_content_above == nil then
cell_content_above = false
end
if cell_content_below == nil then
cell_content_below = false
end
else
if cell_content_back == nil then
cell_content_back = false
end
if cell_content_front == nil then
cell_content_front = false
end
end
travelled_cells:plain_queue_push({current_cell[1], current_cell[2]})
-- travelled_cells is a queue that holds tables.
dungeon[current_cell] = true
end
until travelled_cells:plain_queue_length() == 0
end
draw_dungeon = function()
cls()
for x in all(dungeon[1]) do
for y in all(dungeon[1][2]) do
-- lua can iterate over only one dimension at a time.
if dungeon(x,y) == false then
spr(wall_sprite_constant, x, y)
else
spr(floor_sprite_constant, x, y)
end
end
end
spr(door_sprite_constant, 2, 1)
end
--a* code adapted from:
--richard "richy486" adem
--dungeon is a table of tables that have the x and y integers.
--keep this in mind when reviewing the a* code.
my_start_location = nil
my_goal_location = nil
astar_heuristic = function(a, b)
return abs(a[1] - b[1]) + abs(a[2]- b[2])
end
astar_get_special_tile = function(astar_tile_id)
local astar_tile_x = nil
local astar_tile_y = nil
for astar_tile_x = 0, 15 do
for astar_tile_y = 0, 15 do
local astar_inspected_tile = mget(astar_tile_x, astar_tile_y) --contents
if astar_inspected_tile == astar_tile_id then
return {astar_tile_x, astar_tile_y} --location
end
end
end
end
astar_map_to_index = function(astar_map_x, astar_map_y)
return ( (astar_map_x + 1) * dungeon_initial_size_constant ) + astar_map_y
end
astar_index_to_map = function(astar_argued_index)
local astar_map_x = (astar_argued_index - 1) / dungeon_initial_size_constant
--the constant took the place of 16.
local astar_map_y = astar_argued_index - (astar_map_x * dungeon_initial_size_constant)
--the constant took the place of w.
return {astar_map_x, astar_map_y}
end
astar_vector_to_index = function(astar_argued_vector)
return astar_map_to_index(astar_argued_vector[1], astar_argued_vector[2])
end
astar_get_neighbor_locations = function(astar_your_location)
local astar_all_neighbor_locations = {}
local astar_your_x = astar_your_location[1]
local astar_your_y = astar_your_location[2]
local astar_neighbor_content_above = mget(astar_your_x, astar_your_y - 1)
local astar_neighbor_content_below = mget(astar_your_x, astar_your_y + 1)
local astar_neighbor_content_back = mget(astar_your_x - 1, astar_your_y)
local astar_neighbor_content_front = mget(astar_your_x + 1, astar_your_y)
local astar_neighbor_location_above = {astar_your_x, astar_your_y - 1}
local astar_neighbor_location_below = {astar_your_x, astar_your_y + 1}
local astar_neighbor_location_back = {astar_your_x - 1, astar_your_y}
local astar_neighbor_location_front = {astar_your_x + 1, astar_your_y}
if astar_your_x > 0 and (astar_neighbor_content_back != wall_sprite_constant) then
add(astar_all_neighbor_locations, {astar_neighbor_location_back})
end
if astar_your_y < 15 and (astar_neighbor_content_below != wall_sprite_constant) then
--is the number 15 artificially restricting the capacity of the a*?
add(astar_all_neighbor_locations, {astar_neighbor_location_below})
end
if astar_your_y > 0 and (astar_neighbor_content_above != wall_sprite_constant) then
add(astar_all_neighbor_locations, {astar_neighbor_location_above})
end
if astar_your_x < 15 and (astar_neighbor_content_front != wall_sprite_constant) then
add(astar_all_neighbor_locations, {astar_neighbor_location_front})
end
return astar_all_neighbor_locations
end
astar_algorithm = function()
local astar_start_location = astar_get_special_tile[my_start_location]
local astar_goal_location = astar_get_special_tile[my_goal_location]
local astar_frontier = priority_queue_new()
astar_frontier:priority_queue_push(0, astar_start_location)
local astar_came_from = {}
astar_came_from[astar_vector_to_index(astar_start_location)] = nil
local astar_cost_so_far = {}
astar_cost_so_far [astar_vector_to_index(astar_start_location)] = 0
local astar_current_location = nil
local astar_current_neighbors = nil
local astar_next_index = nil
local astar_new_cost = nil
local astar_new_priority = nil
while astar_frontier:priority_queue_length() > 0 do
astar_current_location = astar_frontier:priority_queue_pop()
if astar_vector_to_index(astar_current_location) == astar_vector_to_index(astar_goal_location) then
break
end
astar_current_neighbors = astar_get_neighbor_locations(astar_current_location)
for next in all(astar_current_neighbors) do
astar_next_index = astar_vector_to_index(next)
astar_new_cost = astar_cost_so_far[astar_vector_to_index(astar_current_location)]
if (astar_cost_so_far[astar_next_index] == nil) or (astar_new_cost < astar_cost_so_far[astar_next_index]) then
astar_cost_so_far[astar_next_index] = astar_new_cost
astar_new_priority = astar_new_cost + astar_heuristic(astar_goal_location, next) --is the order reversed?
astar_frontier:priority_queue_push(astar_new_priority, next)
astar_came_from[astar_next_index] = astar_current_location
end
end
end
end
--
--basic pico-8 stuff
--
function _init()
end
function _draw()
end
function _update()
end
__gfx__
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
22222200000000000000000000000000002222220000000000000000000000002220022200000000000000000000000022200222000000000000000000000000
02222200000000ff000000000000000000222220ff0000000000000000000000002002000ffffff00f0220f000000000002002000ffffff00f0220f000000000
002222ff0000000f0000ff2200000000ff222200f000000022ff0000000000000ffffff00f0ff0f00ff22ff0000000000f2ff2f00f0220f00ffffff000000000
0022220f222222222222f22000000000f022220022222222022f2222000000000f0ff0f02222222222222222000000000f0220f0222222222222222200000000
22222222202222022022220000000000222222222022220200222202000000000002200020222202202222020222222000022000202222022022220202222220
20222202202222002022220000222000202222020022220200222202000222000022220022022022220220222ffffff200222200220220222202202222222222
2020020002222200022222000222ff2000200202002222200022222002ff22200202202022000022220000222f2222f202022020220000222200002222222222
0220220022222200222222002222f222002202200022222200222222222f22220200002020000002200000022222222202000020200000022000000222222222
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00999000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00999000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
6660066655555555333b33bb5b5b55b5002222000002200000000000000000000000000000000000066600000666000006660000066600000666000006660000
66600666555555553bb33b33555555550200002000000000000000000000000000000000000000000fff00000fff00000fff00000fff00000fff00000fff0000
0000000055555555b333b33bbb555555002222000e0000e0000000000000000000000000000000000fff00000fff00000fff00000fff00000fff00000fff0000
0066666655555555b33b3333555555550000000000eeee0000000000000000000000000000000000006000000060000060606000606060006060000000600000
0066666655555555b33bbbb355555555088888800000000000000000000000000000000000000000066600000666000006660000066600000666600066666000
0066666655555555b33b333bb5555555800000088000000800000000000000000000000000000000606060006060600000600000006000000060000000600000
0000000055555555b3bbbb3355555555800000088000000800000000000000000000000000000000060600000606000006060000060600000606000006060000
66600666555555553b3b33b355555555088888800888888000000000000000000000000000000000600060000606000060006000060600006000600060006000
0aaa00000aaa00000aaa00000aaa00000aaa00000aaa00000ccc00000ccc00000ccc00000ccc00000ccc00000ccc000000000000000000000000000000000000
0aaa00000aaa00000aaa00000aaa00000aaa00000aaa00000ccc00000ccc00000ccc00000ccc00000ccc00000ccc000000000000000000000000000000000000
0aaa00000aaa00000aaa00000aaa00000aaa00000aaa00000ccc00000ccc00000ccc00000ccc00000ccc00000ccc000000000000000000000000000000000000
00a0000000a00000a0a0a000a0a0a000a0a0000000a0000000c0000000c00000c0c0c000c0c0c000c0c0000000c0000000000000000000000000000000000000
0aaa00000aaa00000aaa00000aaa00000aaaa000aaaaa0000ccc00000ccc00000ccc00000ccc00000cccc000ccccc00000000000000000000000000000000000
a0a0a000a0a0a00000a0000000a0000000a0000000a00000c0c0c000c0c0c00000c0000000c0000000c0000000c0000000000000000000000000000000000000
0a0a00000a0a00000a0a00000a0a00000a0a00000a0a00000c0c00000c0c00000c0c00000c0c00000c0c00000c0c000000000000000000000000000000000000
a000a0000a0a0000a000a0000a0a0000a000a000a000a000c000c0000c0c0000c000c0000c0c0000c000c000c000c00000000000000000000000000000000000
0222000002220000022200000222000002220000022200000bbb00000bbb00000bbb00000bbb00000bbb00000bbb000000000000000000000000000000000000
0222000002220000022200000222000002220000022200000bbb00000bbb00000bbb00000bbb00000bbb00000bbb000000000000000000000000000000000000
0222000002220000022200000222000002220000022200000bbb00000bbb00000bbb00000bbb00000bbb00000bbb000000000000000000000000000000000000
00200000002000002020200020202000202000000020000000b0000000b00000b0b0b000b0b0b000b0b0000000b0000000000000000000000000000000000000
0222000002220000022200000222000002222000222220000bbb00000bbb00000bbb00000bbb00000bbbb000bbbbb00000000000000000000000000000000000
202020002020200000200000002000000020000000200000b0b0b000b0b0b00000b0000000b0000000b0000000b0000000000000000000000000000000000000
0202000002020000020200000202000002020000020200000b0b00000b0b00000b0b00000b0b00000b0b00000b0b000000000000000000000000000000000000
200020000202000020002000020200002000200020002000b000b0000b0b0000b000b0000b0b0000b000b000b000b00000000000000000000000000000000000
08880000088800000888000008880000088800000888000009990000099900000999000009990000099900000999000000000000000000000000000000000000
08880000088800000888000008880000088800000888000009990000099900000999000009990000099900000999000000000000000000000000000000000000
08880000088800000888000008880000088800000888000009990000099900000999000009990000099900000999000000000000000000000000000000000000
00800000008000008080800080808000808000000080000000900000009000009090900090909000909000000090000000000000000000000000000000000000
08880000088800000888000008880000088880008888800009990000099900000999000009990000099990009999900000000000000000000000000000000000
80808000808080000080000000800000008000000080000090909000909090000090000000900000009000000090000000000000000000000000000000000000
08080000080800000808000008080000080800000808000009090000090900000909000009090000090900000909000000000000000000000000000000000000
80008000080800008000800008080000800080008000800090009000090900009000900009090000900090009000900000000000000000000000000000000000
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
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__gff__
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__map__
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__sfx__
011000001f3601f3501f3401f33022350223402233222342223502234021350213402235022342223522236024350243402433024340263600000026360000002636000000263600000026360263522635226340
011000002635026340263502634024350243422433224340243502436026350263402435024342243522433024360243502434024350223502234222332223402235022360243502434022350223422235222360
0110000026350263402635026340243502434224332243402435024360263502634024350243422435224330223502234022330223401f3601f3521f3421f3301f3401f3521f3421f3421f3421f3521f3421f340
011000001325013240132301324413200000001326513265132501324013230132441326000000132650000016250162401623016244000000000016265162651625016240162301624416260000001626500000
011000001825018240182301824413200000001826518265182501824018230182441826000000182650000016250162401623016244000000000016265162651525015240132301324413260000001326500000
011000001f7641f7501f7501f7401f7641f7501f7501f7401f7641f7501f7501f7401f7641f7501f7501f74022764227502275022740227502275021764217501f7641f7501f7501f7401f7501f7501f7401f750
011000002276422750227502274024764247502475024740247642475024750247402476424750247502474022764227502275022740227402275022764227501f7641f7501f7501f7401f7501f7501f7401f760
011000002b7622b7502b7402b750307623075030740307502e7622e7502e7402e7502d7622d7502d7402d7502b7622b7502b7402b7502d7622d7502d7402d750297622975029740297502b7622b7502b7402b750
011000002b7622b7502b7402b750307623075030740307502e7622e7502e7402e7502d7622d7502d7402d750297622975029740297502b7622b7502b7402b7502b7622b7502b7402b7502b7622b7502b7402b750
011000002b7622b7502b7402b750307623075030740307502e7622e7502e7402e7502d7622d7502d7402d750307623075030740307502b7622b7502b7402b7502b7622b7502b7402b7502b7422b7302b7202b710
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__music__
01 00030544
00 01040644
00 00030544
00 02040644
00 00030744
00 01040844
00 00030744
02 02040944
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344
00 41424344