mirror of
https://github.com/He4eT/DotDashPit.git
synced 2026-05-04 17:37:23 +00:00
1035 lines
61 KiB
JavaScript
1035 lines
61 KiB
JavaScript
// title: DotDashPit
|
|
// desc: Defeat endless waves of enemies using Morse code.
|
|
// author: He4eT
|
|
// site: https://github.com/He4eT/DotDashPit
|
|
// license: MIT License
|
|
// input: gamepad
|
|
// saveid: DotDashPit
|
|
// script: js
|
|
// version: 0.1
|
|
|
|
/* Config */
|
|
|
|
const DOT_DASH_THRESHOLD = 200
|
|
const DOT_DASH_IDLE_TIMEOUT = 500
|
|
|
|
const HINT_DISTANCE = 30
|
|
|
|
/* Game Screens */
|
|
|
|
/** @type {keyof typeof gameScreens} */
|
|
let currentScreen = 'startScreen'
|
|
|
|
const gameScreens = {
|
|
startScreen,
|
|
gameScreen,
|
|
gameoverScreen,
|
|
}
|
|
|
|
function TIC() {
|
|
gameScreens[currentScreen]()
|
|
}
|
|
|
|
/* Morse Code */
|
|
|
|
const morseCode = [
|
|
['A', ' .- '],
|
|
['B', ' -... '],
|
|
['C', ' -.-. '],
|
|
['D', ' -.. '],
|
|
['E', ' . '],
|
|
['F', ' ..-. '],
|
|
['G', ' --. '],
|
|
['H', ' .... '],
|
|
['I', ' .. '],
|
|
['J', ' .--- '],
|
|
['K', ' -.- '],
|
|
['L', ' .-.. '],
|
|
['M', ' -- '],
|
|
['N', ' -. '],
|
|
['O', ' --- '],
|
|
['P', ' .--. '],
|
|
['Q', ' --.- '],
|
|
['R', ' .-. '],
|
|
['S', ' ... '],
|
|
['T', ' - '],
|
|
['U', ' ..- '],
|
|
['V', ' ...- '],
|
|
['W', ' .-- '],
|
|
['X', ' -..- '],
|
|
['Y', ' -.-- '],
|
|
['Z', ' --.. '],
|
|
].map(([letter, code]) => [letter, code.trim()])
|
|
|
|
const alphabet = morseCode.map(([letter]) => letter)
|
|
const letterToMorse = Object.fromEntries(morseCode)
|
|
const morseToLetter = Object.fromEntries(
|
|
morseCode.map((pair) => pair.reverse()),
|
|
)
|
|
|
|
function drawMorse(codeString, x, y, color, width) {
|
|
const code = codeString.slice(-1 * CODE_DISPLAY_W).split('')
|
|
const length = code.reduce((acc, c) => acc + (c === '-' ? 4 : 2), 0)
|
|
let offset =
|
|
x + 1 + (width ? width / 2 - Math.floor((length - 1) / 2) - 1 : 0)
|
|
|
|
code.forEach((c) => {
|
|
if (c === '-') {
|
|
rect(offset, y, 3, 1, color)
|
|
offset += 4
|
|
} else {
|
|
rect(offset, y, 1, 1, color)
|
|
offset += 2
|
|
}
|
|
})
|
|
}
|
|
|
|
function playMorseKey(seed) {
|
|
const bySeed = (from, to) => Math.floor(seed * (to - from + 1)) + from
|
|
|
|
const note = bySeed(57, 72)
|
|
const volume = bySeed(8, 10)
|
|
|
|
sfx(4, note, 4, 0, volume, 0)
|
|
}
|
|
|
|
/* Arena */
|
|
|
|
/** @type {Arena} */
|
|
const arena = {
|
|
screenPosition: {
|
|
x: 7,
|
|
y: 7,
|
|
},
|
|
bounds: {
|
|
top: 0,
|
|
right: 225,
|
|
bottom: 105,
|
|
left: 0,
|
|
},
|
|
highscore: pmem(0),
|
|
wave: 0,
|
|
waveSeed: 0,
|
|
}
|
|
|
|
function drawArena() {
|
|
cls(0)
|
|
map(30, 0, 30, 17)
|
|
}
|
|
|
|
/* Player */
|
|
|
|
/** @type {Player} */
|
|
const player = {
|
|
state: 'default',
|
|
score: 0,
|
|
key: {
|
|
history: '',
|
|
buffer: '.-----',
|
|
isDown: false,
|
|
downAt: 0,
|
|
upAt: 0,
|
|
},
|
|
position: {
|
|
x: rnd(arena.bounds.left, arena.bounds.right),
|
|
y: rnd(arena.bounds.top, arena.bounds.bottom),
|
|
},
|
|
}
|
|
|
|
const playerStates = {
|
|
default: {
|
|
speed: 1,
|
|
sprite: 256,
|
|
},
|
|
dot: {
|
|
speed: 1.5,
|
|
sprite: 257,
|
|
},
|
|
dash: {
|
|
speed: 2,
|
|
sprite: 258,
|
|
},
|
|
}
|
|
|
|
function handleMoves() {
|
|
let dx = 0
|
|
if (btn(BTN_L)) dx -= 1
|
|
if (btn(BTN_R)) dx += 1
|
|
|
|
let dy = 0
|
|
if (btn(BTN_U)) dy -= 1
|
|
if (btn(BTN_D)) dy += 1
|
|
|
|
const norm =
|
|
playerStates[player.state].speed /
|
|
([dx, dy].every((d) => d !== 0) ? Math.SQRT2 : 1)
|
|
|
|
player.position = {
|
|
x: clamp(player.position.x + dx * norm)(
|
|
arena.bounds.left,
|
|
arena.bounds.right,
|
|
),
|
|
y: clamp(player.position.y + dy * norm)(
|
|
arena.bounds.top,
|
|
arena.bounds.bottom,
|
|
),
|
|
}
|
|
}
|
|
|
|
function handleMorse() {
|
|
const { key } = player
|
|
const now = time()
|
|
|
|
const buttonPressed = [BTN_A, BTN_B, BTN_X, BTN_Y].some(btn)
|
|
|
|
/* Down */
|
|
if (buttonPressed && !key.isDown) {
|
|
key.isDown = true
|
|
key.downAt = now
|
|
}
|
|
|
|
/* Hold */
|
|
if (buttonPressed && key.isDown) {
|
|
const isDash = now - key.downAt > DOT_DASH_THRESHOLD
|
|
player.state = isDash ? 'dash' : 'dot'
|
|
playMorseKey(arena.waveSeed)
|
|
}
|
|
|
|
/* Release */
|
|
if (!buttonPressed && key.isDown) {
|
|
player.state = 'default'
|
|
key.isDown = false
|
|
key.upAt = now
|
|
key.buffer += key.upAt - key.downAt < DOT_DASH_THRESHOLD ? '.' : '-'
|
|
|
|
effects.push({
|
|
type: 'detection',
|
|
frames: [15],
|
|
to: player.position,
|
|
})
|
|
}
|
|
|
|
/* Flush */
|
|
if (
|
|
!buttonPressed &&
|
|
key.buffer.length > 0 &&
|
|
now - key.upAt > DOT_DASH_IDLE_TIMEOUT
|
|
) {
|
|
if (morseToLetter[key.buffer]) {
|
|
const letter = morseToLetter[key.buffer]
|
|
destroyEnemiesByLetter(letter)
|
|
key.history += letter
|
|
} else {
|
|
key.history += ' '
|
|
}
|
|
key.buffer = ''
|
|
key.history = key.history.slice(-1 * HISTORY_LENGTH)
|
|
}
|
|
}
|
|
|
|
function drawPlayer() {
|
|
drawSprite(
|
|
playerStates[player.state].sprite,
|
|
player.position.x,
|
|
player.position.y,
|
|
)
|
|
}
|
|
|
|
/* Enemies */
|
|
|
|
/** @type {Enemy[]} */
|
|
let enemies = []
|
|
|
|
const enemyBlueprints = {
|
|
point: {
|
|
sprite: 272,
|
|
spawnDistance: 20,
|
|
maxSpeed: 0,
|
|
dangerZone: 8,
|
|
value: 1,
|
|
behaviour: () => {},
|
|
},
|
|
fidget: {
|
|
sprite: 273,
|
|
spawnDistance: 40,
|
|
maxSpeed: 0.9,
|
|
dangerZone: 8,
|
|
value: 3,
|
|
behaviour: (enemy) => {
|
|
const jitter = 0.05
|
|
if (Math.random() < jitter) {
|
|
const angle = Math.random() * 2 * Math.PI
|
|
const current = enemy.positions[0]
|
|
const randomPrevious = {
|
|
x: current.x - Math.cos(angle),
|
|
y: current.y - Math.sin(angle),
|
|
}
|
|
enemy.positions[1] = randomPrevious
|
|
}
|
|
|
|
enemyBlueprints.bounce.behaviour(enemy)
|
|
},
|
|
},
|
|
bounce: {
|
|
sprite: 274,
|
|
spawnDistance: 100,
|
|
maxSpeed: 1.2,
|
|
dangerZone: 8,
|
|
value: 5,
|
|
behaviour: (enemy) => {
|
|
const minSpeed = 0.6
|
|
const speed = Math.max(minSpeed, enemy.speed)
|
|
const current = enemy.positions[0]
|
|
const previous = enemy.positions[1]
|
|
|
|
const d = getDirection(previous, current)
|
|
|
|
let dx = d.x * speed
|
|
let dy = d.y * speed
|
|
|
|
let newX = current.x + dx
|
|
let newY = current.y + dy
|
|
|
|
if (newX < arena.bounds.left || newX > arena.bounds.right) {
|
|
dx = -dx
|
|
newX = current.x + dx
|
|
}
|
|
|
|
if (newY < arena.bounds.top || newY > arena.bounds.bottom) {
|
|
dy = -dy
|
|
newY = current.y + dy
|
|
}
|
|
|
|
enemy.positions = [
|
|
{ x: newX, y: newY },
|
|
{ x: current.x, y: current.y },
|
|
]
|
|
},
|
|
},
|
|
zombie: {
|
|
sprite: 276,
|
|
spawnDistance: 80,
|
|
maxSpeed: 2,
|
|
dangerZone: 6,
|
|
value: 10,
|
|
behaviour: (enemy) => {
|
|
const laziness = 0.8
|
|
if (Math.random() > laziness) {
|
|
enemyBlueprints.follower.behaviour(enemy)
|
|
}
|
|
},
|
|
},
|
|
follower: {
|
|
sprite: 275,
|
|
spawnDistance: 80,
|
|
maxSpeed: 1,
|
|
dangerZone: 3,
|
|
value: 10,
|
|
behaviour: (enemy) => {
|
|
const minSpeed = 0.5
|
|
const speed = Math.max(minSpeed, enemy.speed)
|
|
const current = enemy.positions[0]
|
|
const target = player.position
|
|
|
|
const d = getDirection(current, target)
|
|
|
|
enemy.positions = [
|
|
{
|
|
x: current.x + d.x * speed,
|
|
y: current.y + d.y * speed,
|
|
},
|
|
]
|
|
},
|
|
},
|
|
}
|
|
|
|
function checkCollisions() {
|
|
const collide = (enemy) =>
|
|
getDistance(player.position, enemy.positions[0]) < enemy.dangerZone
|
|
|
|
if (enemies.some(collide)) {
|
|
gameover()
|
|
}
|
|
}
|
|
|
|
function spawnEnemies() {
|
|
if (enemies.length > 0) {
|
|
return
|
|
}
|
|
|
|
arena.wave += 1
|
|
arena.waveSeed = (Math.sin(arena.wave * 91.17) * 10000) % 1
|
|
|
|
const enemyCount = 1 + Math.floor(arena.wave / 2)
|
|
|
|
const getType = (wave) => {
|
|
if (wave <= 2) return 'point'
|
|
|
|
const availableTypes = Object.keys(enemyBlueprints)
|
|
return availableTypes[rnd(0, availableTypes.length - 1)]
|
|
}
|
|
|
|
const getSpawnPosition = (type) => {
|
|
const minDistance = enemyBlueprints[type].spawnDistance
|
|
const b = 4 * SPRITE_HALF
|
|
let x, y, distance
|
|
|
|
do {
|
|
x = rnd(arena.bounds.left + b, arena.bounds.right - b)
|
|
y = rnd(arena.bounds.top + b, arena.bounds.bottom - b)
|
|
distance = getDistance({ x, y }, player.position)
|
|
} while (distance < minDistance)
|
|
|
|
return { x, y }
|
|
}
|
|
|
|
enemies = arr(enemyCount).map(() => {
|
|
const type = getType(arena.wave)
|
|
return {
|
|
type,
|
|
speed: enemyBlueprints[type].maxSpeed * Math.random(),
|
|
value: enemyBlueprints[type].value,
|
|
letter: alphabet[rnd(0, alphabet.length - 1)],
|
|
positions: [getSpawnPosition(type), getSpawnPosition(type)],
|
|
dangerZone: enemyBlueprints[type].dangerZone,
|
|
}
|
|
})
|
|
|
|
enemies.forEach((enemy) => {
|
|
effects.push({
|
|
type: 'detection',
|
|
to: enemy.positions[0],
|
|
frames: arr(10, 4),
|
|
})
|
|
})
|
|
}
|
|
|
|
function moveEnemies() {
|
|
enemies.forEach((enemy) => {
|
|
enemyBlueprints[enemy.type].behaviour(enemy)
|
|
})
|
|
}
|
|
|
|
function destroyEnemiesByLetter(letter) {
|
|
const destructionEffects = [
|
|
['laser', '13577531'],
|
|
['laser', '24667642'],
|
|
['laser', '1234777654321'],
|
|
['nuke', '765432'],
|
|
['verticalLine', '45677654'],
|
|
['horizontalLine', '45677654'],
|
|
].map(([name, frames]) => [name, frames.split('')])
|
|
|
|
enemies
|
|
.filter((enemy) => enemy.letter === letter)
|
|
.forEach((enemy) => {
|
|
player.score += enemy.value
|
|
const [type, frames] =
|
|
destructionEffects[rnd(0, destructionEffects.length - 1)]
|
|
|
|
effects.push({
|
|
type,
|
|
frames,
|
|
from: player.position,
|
|
to: enemy.positions[0],
|
|
})
|
|
})
|
|
|
|
enemies = enemies.filter((enemy) => enemy.letter !== letter)
|
|
}
|
|
|
|
function drawEnemies() {
|
|
enemies.forEach((enemy) =>
|
|
drawSprite(
|
|
enemyBlueprints[enemy.type].sprite,
|
|
enemy.positions[0].x,
|
|
enemy.positions[0].y,
|
|
),
|
|
)
|
|
}
|
|
|
|
function drawEnemyLetters() {
|
|
enemies.forEach((enemy) => {
|
|
const bgColor = 2
|
|
const borderColor = 5
|
|
const enemyPosition = enemy.positions[0]
|
|
const d = getDirection(player.position, enemyPosition)
|
|
|
|
const letterPos = {
|
|
x: enemyPosition.x + d.x * 15,
|
|
y: enemyPosition.y + d.y * 15,
|
|
}
|
|
|
|
const screenPos = worldToScreen(letterPos)
|
|
|
|
rect(screenPos.x - 4, screenPos.y - 5, 10, 11, bgColor)
|
|
font(enemy.letter, screenPos.x - 3, screenPos.y - 3, 0, 8, 8, true)
|
|
rectb(screenPos.x - 4, screenPos.y - 5, 10, 11, borderColor)
|
|
|
|
if (getDistance(player.position, enemy.positions[0]) < HINT_DISTANCE) {
|
|
const code = letterToMorse[enemy.letter]
|
|
|
|
const hintWidth =
|
|
1 + code.split('').reduce((acc, x) => acc + { '.': 2, '-': 4 }[x], 0)
|
|
|
|
const hintPosition = {
|
|
x: screenPos.x - 4,
|
|
y: screenPos.y + 8,
|
|
}
|
|
|
|
rect(
|
|
hintPosition.x,
|
|
hintPosition.y - 1,
|
|
Math.max(10, hintWidth),
|
|
3,
|
|
borderColor,
|
|
)
|
|
drawMorse(code, hintPosition.x, hintPosition.y, 2, hintWidth)
|
|
}
|
|
})
|
|
}
|
|
|
|
/* Effects */
|
|
|
|
/** @type {Effect[]} */
|
|
let effects = []
|
|
|
|
const effectRenderers = {
|
|
flash: ({ frames }) => {
|
|
const color = frames.shift()
|
|
cls(color)
|
|
},
|
|
laser: ({ from, to, frames }) => {
|
|
const color = frames.shift()
|
|
line(from.x, from.y, to.x, to.y, color)
|
|
circ(from.x, from.y, frames.length / 3, color)
|
|
circ(to.x, to.y, frames.length / 2, color)
|
|
circb(to.x, to.y, frames.length, color + 3)
|
|
},
|
|
nuke: ({ to, frames }) => {
|
|
const color = frames.shift()
|
|
circ(to.x, to.y, Math.pow(frames.length, 5), color)
|
|
},
|
|
verticalLine: ({ to, frames }) => {
|
|
const color = frames.shift()
|
|
rect(0, to.y - frames.length, SCREEN_W, frames.length * 2, color)
|
|
},
|
|
horizontalLine: ({ to, frames }) => {
|
|
const color = frames.shift()
|
|
rect(to.x - frames.length, 0, frames.length * 2, SCREEN_W, color)
|
|
},
|
|
detection: ({ to, frames }) => {
|
|
const color = frames.shift()
|
|
const w = SPRITE_HALF
|
|
const d = frames.length + 2 * w
|
|
const corners = [
|
|
[+1, +1],
|
|
[+1, -1],
|
|
[-1, +1],
|
|
[-1, -1],
|
|
]
|
|
|
|
corners.forEach(([dx, dy]) => {
|
|
const x = to.x + dx * d
|
|
const y = to.y + dy * d
|
|
|
|
line(x, y, x - dx * w, y, color)
|
|
line(x, y, x, y - dy * w, color)
|
|
})
|
|
},
|
|
}
|
|
|
|
function drawFX() {
|
|
effects
|
|
.map((effect) => ({
|
|
...effect,
|
|
from: worldToScreen(effect.from ?? {}),
|
|
to: worldToScreen(effect.to ?? {}),
|
|
}))
|
|
.forEach((effect) => effectRenderers[effect.type](effect))
|
|
|
|
effects = effects.filter(({ frames }) => frames.length > 0)
|
|
}
|
|
|
|
/* HUD */
|
|
|
|
function drawHUD() {
|
|
drawMorse(player.key.buffer, 100, 123, 15, 36)
|
|
|
|
print(
|
|
player.key.history.padStart(HISTORY_LENGTH),
|
|
HISTORY_X,
|
|
HISTORY_Y,
|
|
6,
|
|
true,
|
|
)
|
|
print(
|
|
player.score.toString().padStart(SCORE_LENGTH),
|
|
SCORE_X,
|
|
SCORE_Y,
|
|
6,
|
|
true,
|
|
)
|
|
}
|
|
|
|
/* Start Screen */
|
|
|
|
function startScreen() {
|
|
cls(0)
|
|
map(0, 0, 30, 17)
|
|
|
|
font('DOT DASH PIT', 15, 15, 0, 7, 8, false, 1)
|
|
|
|
print('HIGH SCORE:', HISTORY_X, HISTORY_Y, 6, false)
|
|
print(
|
|
String(arena.highscore).padStart(SCORE_LENGTH),
|
|
SCORE_X,
|
|
SCORE_Y,
|
|
6,
|
|
true,
|
|
)
|
|
|
|
if (anyKeyPressed()) {
|
|
currentScreen = 'gameScreen'
|
|
}
|
|
}
|
|
|
|
/* Gameplay */
|
|
|
|
function gameScreen() {
|
|
checkCollisions()
|
|
spawnEnemies()
|
|
|
|
handleMoves()
|
|
handleMorse()
|
|
|
|
moveEnemies()
|
|
|
|
drawArena()
|
|
drawHUD()
|
|
drawFX()
|
|
drawEnemies()
|
|
drawPlayer()
|
|
drawEnemyLetters()
|
|
}
|
|
|
|
/* Game Over */
|
|
|
|
function gameoverScreen() {
|
|
cls(0)
|
|
map(0, 0, 30, 17)
|
|
drawFX()
|
|
drawEnemies()
|
|
drawPlayer()
|
|
|
|
if (effects.length === 0) {
|
|
print(
|
|
player.score.toString().padStart(SCORE_LENGTH),
|
|
SCORE_X,
|
|
SCORE_Y,
|
|
6,
|
|
true,
|
|
)
|
|
print(
|
|
player.score > arena.highscore ? 'NEW HIGH SCORE!' : 'GAME OVER',
|
|
HISTORY_X,
|
|
HISTORY_Y,
|
|
player.score > arena.highscore ? 9 : 10,
|
|
false,
|
|
)
|
|
|
|
if (anyKeyPressed()) {
|
|
reset()
|
|
}
|
|
}
|
|
}
|
|
|
|
function gameover() {
|
|
effects = [
|
|
{
|
|
type: 'flash',
|
|
frames: '77777777777765432'.split(''),
|
|
},
|
|
]
|
|
|
|
if (player.score > arena.highscore) {
|
|
pmem(0, player.score)
|
|
}
|
|
|
|
currentScreen = 'gameoverScreen'
|
|
}
|
|
|
|
/* Utils */
|
|
|
|
function arr(n, filler) {
|
|
const result = []
|
|
for (let i = 0; i < n; i++) {
|
|
result.push(filler)
|
|
}
|
|
return result
|
|
}
|
|
|
|
function clamp(value) {
|
|
return (min, max) => Math.max(min, Math.min(max, value))
|
|
}
|
|
|
|
function rnd(from, to) {
|
|
return Math.floor(Math.random() * (to - from + 1)) + from
|
|
}
|
|
|
|
function getDistance(from, to) {
|
|
return Math.hypot(from.x - to.x, from.y - to.y)
|
|
}
|
|
|
|
function getDirection(from, to) {
|
|
const dx = to.x - from.x
|
|
const dy = to.y - from.y
|
|
const distance = Math.hypot(dx, dy) || 1
|
|
|
|
return {
|
|
x: dx / distance,
|
|
y: dy / distance,
|
|
}
|
|
}
|
|
|
|
function worldToScreen({ x, y }) {
|
|
return {
|
|
x: Math.floor(x + arena.screenPosition.x),
|
|
y: Math.floor(y + arena.screenPosition.y),
|
|
}
|
|
}
|
|
|
|
function drawSprite(spriteIndex, x, y) {
|
|
const colorkey = 0
|
|
const center = worldToScreen({ x, y })
|
|
|
|
spr(spriteIndex, center.x - SPRITE_HALF, center.y - SPRITE_HALF, colorkey)
|
|
}
|
|
|
|
function anyKeyPressed() {
|
|
return arr(8)
|
|
.map((_, i) => i)
|
|
.some(btnp)
|
|
}
|
|
|
|
/* Constants */
|
|
|
|
/* Interface */
|
|
const HISTORY_LENGTH = 14
|
|
const HISTORY_X = 7
|
|
const HISTORY_Y = 118
|
|
const SCORE_LENGTH = 14
|
|
const SCORE_X = 152
|
|
const SCORE_Y = 125
|
|
const CODE_DISPLAY_W = 7
|
|
const SPRITE_HALF = 3
|
|
|
|
/* Screen */
|
|
const SCREEN_W = 240
|
|
const SCREEN_H = 136
|
|
|
|
/* Buttons */
|
|
const BTN_U = 0
|
|
const BTN_D = 1
|
|
const BTN_L = 2
|
|
const BTN_R = 3
|
|
const BTN_A = 4
|
|
const BTN_B = 5
|
|
const BTN_X = 6
|
|
const BTN_Y = 7
|
|
|
|
/* Types */
|
|
|
|
/**
|
|
* @typedef {{ x: number, y: number }} Point
|
|
*
|
|
* @typedef {{
|
|
* screenPosition: Point,
|
|
* bounds: {
|
|
* top: number,
|
|
* right: number,
|
|
* bottom: number,
|
|
* left: number,
|
|
* },
|
|
* highscore: number,
|
|
* wave: number,
|
|
* waveSeed: number,
|
|
* }} Arena
|
|
*
|
|
* @typedef {{
|
|
* state: keyof typeof playerStates,
|
|
* score: number,
|
|
* key: {
|
|
* history: string,
|
|
* buffer: string,
|
|
* isDown: boolean,
|
|
* downAt: number,
|
|
* upAt: number,
|
|
* },
|
|
* position: Point,
|
|
* }} Player
|
|
*
|
|
* @typedef {{
|
|
* type: keyof typeof enemyBlueprints,
|
|
* speed: number,
|
|
* positions: Point[],
|
|
* letter: string,
|
|
* dangerZone: number,
|
|
* value: number,
|
|
* }} Enemy
|
|
*
|
|
* @typedef {{
|
|
* type: keyof typeof effectRenderers
|
|
* from: Point,
|
|
* to: Point,
|
|
* frames: number[],
|
|
* }} Effect
|
|
*/
|
|
|
|
// <TILES>
|
|
// 001:0000000000000000000000000000000000000000000000000000055400000544
|
|
// 002:0000000000000000000000000000000000000000000000004444444444444444
|
|
// 003:0000000000000000000000000000000000000000000000000000000044444444
|
|
// 004:0000000000000000000000000000000000000000000000040000004444444444
|
|
// 005:0000444400044444004444440444444144444411444444444444444444444444
|
|
// 006:4444444444444444111111111111111111111111444444444444444444444444
|
|
// 007:4444444444444444111111141111114411111444444444444444444444444444
|
|
// 008:4444444444444440444444114444411144441111444111144400004440000444
|
|
// 009:0000444400044440114444001444400044440000444000004400000040000000
|
|
// 010:4444004400000444444444440000000000000000000000000000000000000000
|
|
// 011:4444444444444444444444400000000000000000000000000000000000000000
|
|
// 012:4444444400000000000000000000000000000000000000000000000000000000
|
|
// 013:4444444444444444000000000000000000000000000000000000000000000000
|
|
// 014:4450000045500000000000000000000000000000000000000000000000000000
|
|
// 016:0000000000000000000000000000000000000000000003330000030000000304
|
|
// 017:0000000000000000000000000000000000000000000000000000000044444444
|
|
// 018:0000000000000000000000000000000000000000333000000030000040300000
|
|
// 019:0000000000000000000000000000000000000000000001110000012200000124
|
|
// 020:0000000000000000000000000000000000000000111111112222222244444444
|
|
// 021:0000000000000000000000000000000000000000111000002210000042100000
|
|
// 032:0000000400000004000000040000000400000004000000040000000400000004
|
|
// 033:3000000300000000000000000000000000000000000000000000000030000003
|
|
// 034:4000000040000000400000004000000040000000400000004000000040000000
|
|
// 035:0000012400000124000001240000012400000124000001240000012400000124
|
|
// 036:2111111211111111111111111111111111111111111111111111111121111112
|
|
// 037:4210000042100000421000004210000042100000421000004210000042100000
|
|
// 048:0000030400000300000003330000000000000000000000000000000000000000
|
|
// 049:4444444400000000000000000000000000000000000000000000000000000000
|
|
// 050:4030000000300000333000000000000000000000000000000000000000000000
|
|
// 051:0000012400000122000001110000000000000000000000000000000000000000
|
|
// 052:4444444422222222111111110000000000000000000000000000000000000000
|
|
// 053:4210000022100000111000000000000000000000000000000000000000000000
|
|
// </TILES>
|
|
|
|
// <SPRITES>
|
|
// 000:8800088080000080008880000088800000888000800000808800088000000000
|
|
// 001:8800088080000080000000000008000000000000800000808800088000000000
|
|
// 002:0000000008808800080008000008000008000800088088000000000000000000
|
|
// 016:aaaaaaa0aaaaaaa0aa000aa0aa000aa0aa000aa0aaaaaaa0aaaaaaa000000000
|
|
// 017:aaaaaaa0a00a00a0a00a00a0aaaaaaa0a00a00a0a00a00a0aaaaaaa000000000
|
|
// 018:00a0a00000000000a0aaa0a000aaa000a0aaa0a00000000000a0a00000000000
|
|
// 019:aa000aa0aa000aa000aaa00000aaa00000aaa000aa000aa0aa000aa000000000
|
|
// 020:aa000aa0aaaaaaa00aaaaa000aaaaa000aaaaa00aaaaaaa0aa000aa000000000
|
|
// 065:0eeeeee00ee000e00ee000e00eeeeee00ee000e00ee000e00ee000e000000000
|
|
// 066:0eeeee000ee00e000ee00e000eeeeee00ee000e00ee000e00eeeeee000000000
|
|
// 067:0eeeeee00ee000e00ee000000ee000000ee000000ee000e00eeeeee000000000
|
|
// 068:0eeeee000ee000e00ee000e00ee000e00ee000e00ee000e00eeeee0000000000
|
|
// 069:0eeeeee00ee000000ee000000eeee0000ee000000ee000000eeeeee000000000
|
|
// 070:0eeeeee00ee000000ee000000eeeee000ee000000ee000000ee0000000000000
|
|
// 071:0eeeeee00ee000e00ee000000ee00ee00ee000e00ee000e00eeeeee000000000
|
|
// 072:0ee000e00ee000e00ee000e00eeeeee00ee000e00ee000e00ee000e000000000
|
|
// 073:00eeee00000ee000000ee000000ee000000ee000000ee00000eeee0000000000
|
|
// 074:00eeeee00000ee000000ee000000ee000e00ee000e00ee000eeeee0000000000
|
|
// 075:0ee000e00ee00e000ee0e0000eee0e000ee000e00ee000e00ee000e000000000
|
|
// 076:0ee000000ee000000ee000000ee000000ee000000ee000e00eeeeee000000000
|
|
// 077:0eee0ee00eeeeee00ee0e0e00ee0e0e00ee000e00ee000e00ee000e000000000
|
|
// 078:0ee000e00eee00e00ee0e0e00ee00ee00ee000e00ee000e00ee000e000000000
|
|
// 079:0eeeeee00ee000e00ee000e00ee000e00ee000e00ee000e00eeeeee000000000
|
|
// 080:0eeeeee00ee000e00ee000e00ee000e00eeeeee00ee000000ee0000000000000
|
|
// 081:0eeeeee00ee000e00ee000e00ee000e00ee000e00ee00e000eeee0e000000000
|
|
// 082:0eeeeee00ee000e00ee000e00ee000e00eeeeee00ee00e000ee000e000000000
|
|
// 083:0eeeeee00ee000e00ee000000eeeeee000000ee00e000ee00eeeeee000000000
|
|
// 084:0eeeeee0000ee000000ee000000ee000000ee000000ee000000ee00000000000
|
|
// 085:0ee000e00ee000e00ee000e00ee000e00ee000e00ee000e000eeee0000000000
|
|
// 086:0ee000e00ee000e00ee000e00ee000e00ee000e000ee0e00000ee00000000000
|
|
// 087:0ee000e00ee000e00ee000e00ee0e0e00ee0e0e00eeeeee000ee0e0000000000
|
|
// 088:0ee00ee00ee00ee000eeee00000ee00000eeee000ee00ee00ee00ee000000000
|
|
// 089:0ee00ee00ee00ee00ee00ee000eeee00000ee000000ee000000ee00000000000
|
|
// 090:0eeeeee00e000ee00000ee00000ee00000ee00000ee000e00eeeeee000000000
|
|
// </SPRITES>
|
|
|
|
// <MAP>
|
|
// 000:011111111111111111111111111111111111111111111111111111111121314141414141414141414141414141414141414141414141414141414151000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// 001:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// 002:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// 003:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// 004:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// 005:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// 006:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// 007:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// 008:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// 009:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// 010:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// 011:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// 012:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// 013:021212121212121212121212121212121212121212121212121212121222324242424242424242424242424242424242424242424242424242424252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// 014:031313131313131313131313131313131313131313131313131313131323334343434343434343434343434343434343434343434343434343434353000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// 015:10202020303030303030304050606060708090a0b0c0c0c0c0c0c0c0d0e010202020303030303030304050606060708090a0b0c0c0c0c0c0c0c0d0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// </MAP>
|
|
|
|
// <WAVES>
|
|
// 000:00000000ffffffff00000000ffffffff
|
|
// 001:0123456789abcdeffedcba9876543210
|
|
// 002:0123456789abcdef0123456789abcdef
|
|
// </WAVES>
|
|
|
|
// <SFX>
|
|
// 000:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000304000000000
|
|
// </SFX>
|
|
|
|
// <TRACKS>
|
|
// 000:100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
// </TRACKS>
|
|
|
|
// <SCREEN>
|
|
// 000:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 001:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 002:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 003:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 004:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 005:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 006:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 007:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 008:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 009:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 010:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 011:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 012:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 013:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 014:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 015:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 016:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 017:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 018:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 019:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 020:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 021:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 022:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 023:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 024:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 025:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 026:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 027:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 028:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 029:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 030:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 031:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 032:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 033:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 034:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 035:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 036:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 037:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 038:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 039:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 040:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 041:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 042:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 043:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 044:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 045:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 046:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 047:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 048:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 049:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 050:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 051:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 052:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 053:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 054:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 055:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 056:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 057:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 058:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 059:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 060:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 061:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 062:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 063:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 064:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 065:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 066:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 067:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 068:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 069:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 070:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 071:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 072:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 073:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 074:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 075:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 076:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 077:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 078:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 079:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 080:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 081:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 082:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 083:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 084:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 085:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 086:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 087:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 088:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 089:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 090:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 091:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 092:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 093:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 094:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 095:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 096:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 097:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 098:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 099:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 100:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 101:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 102:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 103:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 104:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 105:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 106:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 107:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 108:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 109:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 110:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 111:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 112:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 113:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 114:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 115:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 116:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 117:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 118:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 119:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 120:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 121:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 122:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 123:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 124:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 125:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 126:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 127:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 128:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 129:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 130:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 131:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 132:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 133:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 134:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// 135:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
|
// </SCREEN>
|
|
|
|
// <PALETTE>
|
|
// 000:000000002b3607364221292c586e75657b83839496ffffffb58900cb4b16dc322fd336826c71c4268bd22aa198859900
|
|
// </PALETTE>
|