diff options
Diffstat (limited to 'toxicinvaders_misc')
| -rw-r--r-- | toxicinvaders_misc/Sound Effects Index.txt | 36 | ||||
| -rw-r--r-- | toxicinvaders_misc/index_itchio.html | 1109 | ||||
| -rw-r--r-- | toxicinvaders_misc/labels/binicon.p8 | 280 | ||||
| -rw-r--r-- | toxicinvaders_misc/labels/binicon.png | bin | 0 -> 662 bytes | |||
| -rw-r--r-- | toxicinvaders_misc/labels/cartlabel.p8 | 280 | ||||
| -rw-r--r-- | toxicinvaders_misc/labels/cartlabel.png | bin | 0 -> 3727 bytes | |||
| -rw-r--r-- | toxicinvaders_misc/labels/musiclabel.p8 | 280 | ||||
| -rw-r--r-- | toxicinvaders_misc/labels/musiclabel.png | bin | 0 -> 2782 bytes | |||
| -rw-r--r-- | toxicinvaders_misc/musicplayer/background_music.lua | 106 | ||||
| -rw-r--r-- | toxicinvaders_misc/musicplayer/draw_music.lua | 29 | ||||
| -rw-r--r-- | toxicinvaders_misc/musicplayer/music.p8 | 385 | ||||
| -rw-r--r-- | toxicinvaders_misc/musicplayer/objects_music.lua | 69 | ||||
| -rw-r--r-- | toxicinvaders_misc/musicplayer/particles_music.lua | 29 | ||||
| -rw-r--r-- | toxicinvaders_misc/musicplayer/toxicinvadersost.p8.png | bin | 0 -> 17064 bytes | |||
| -rw-r--r-- | toxicinvaders_misc/musicplayer/ui_music.lua | 90 | ||||
| -rw-r--r-- | toxicinvaders_misc/musicplayer/update_music.lua | 51 | ||||
| -rw-r--r-- | toxicinvaders_misc/privacy.md | 5 |
17 files changed, 2749 insertions, 0 deletions
diff --git a/toxicinvaders_misc/Sound Effects Index.txt b/toxicinvaders_misc/Sound Effects Index.txt new file mode 100644 index 0000000..32c75d0 --- /dev/null +++ b/toxicinvaders_misc/Sound Effects Index.txt @@ -0,0 +1,36 @@ +CHANNELS +-------- +0 Music Track +1 Music Track / Player / Pickup / Portal Thruster Kill +2 Short SFX - Bullets / Basic Enemy Hits/Kills / Bomb Charge +3 Long SFX - Tough Enemy/Bosses + +SOUNDS +------ +00 Intro Transition +01 Respawn +02 Light Respawn +03 Portal Shoot +04 Portal Thruster Kill +05 Bomb Kill +06 Bomb Explode +07 Bomb Charge First Half +08 Bomb Charge Second Half +09 Player Shoot +10 Player Hit +11 Player Killed +12 Triple Shot +13 Powerup Get! +14 Rocket Shoot / Thruster Loop +15 Basic Enemy Shoot +16 Basic Enemy Hit +17 Basic Enemy Killed +18 Wall Crawl Shoot +19 Ball Shooter Shoot +20 Ball Shooter Kill +21 Boss Kill +22 Rewind Checkpoint +23 Laser Charge (1.5 Seconds) +24 Laser Loop +25 Laser Finished +.. MUSIC
\ No newline at end of file diff --git a/toxicinvaders_misc/index_itchio.html b/toxicinvaders_misc/index_itchio.html new file mode 100644 index 0000000..3dc6824 --- /dev/null +++ b/toxicinvaders_misc/index_itchio.html @@ -0,0 +1,1109 @@ +<html><head> +<title>Toxic Invaders - Pico-8</title> +<meta name="viewport" content="width=device-width, user-scalable=no"> +<script type="text/javascript"> + + // Default shell for PICO-8 0.2.2 (includes @weeble's gamepad mod 1.0) + // This file is available under a CC0 license https://creativecommons.org/share-your-work/public-domain/cc0/ + // (note: "this file" does not include any cartridge or cartridge artwork injected into a derivative html file when using the PICO-8 html exporter) + + // options + + // fullscreen, sound, close button at top when playing on touchscreen + var p8_allow_mobile_menu = false; + + // p8_autoplay true to boot the cartridge automatically after page load when possible + // if the browser can not create an audio context outside of a user gesture (e.g. on iOS), p8_autoplay has no effect + var p8_autoplay = true; + + // When pico8_state is defined, PICO-8 will set .is_paused, .sound_volume and .frame_number each frame + // (used for determining button icons) + var pico8_state = []; + + // When pico8_buttons is defined, PICO-8 reads each int as a bitfield holding that player's button states + // 0x1 left, 0x2 right, 0x4 up, 0x8 right, 0x10 O, 0x20 X, 0x40 menu + // (used by p8_update_gamepads) + var pico8_buttons = [0, 0, 0, 0, 0, 0, 0, 0]; // max 8 players + + // When pico8_mouse is defined, PICO-8 reads the 3 integers as X, Y and a bitfield for buttons: 0x1 LMB, 0x2 RMB + var pico8_mouse = []; + + // used to display number of detected joysticks + var pico8_gamepads = {}; + pico8_gamepads.count = 0; + + // When pico8_gpio is defined, reading and writing to gpio pins will read and write to these values + var pico8_gpio = new Array(128); + + // When pico8_audio_context context is defined, the html shell (this file) is responsible for creating and managing it. + // This makes satisfying browser requirements easier -- e.g. initialising audio from a short script in response to a user action. + // Otherwise PICO-8 will try to create and use its own context. + + var pico8_audio_context; + + + // menu button and controller graphics + p8_gfx_dat={ + "p8b_pause1": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAOUlEQVRIx2NgGPbg/8cX/0F46FtAM4vobgHVLRowC6hm0YBbQLFFoxaM4FQ0dHPy0C1Nh26NNugBAAnizNiMfvbGAAAAAElFTkSuQmCC", +"p8b_controls":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAQ0lEQVRIx2NgGAXEgP8fX/ynBaap4XBLhqcF1IyfYWQBrZLz0LEAlzqqxQFVLcAmT3MLqJqTaW7B4CqLaF4fjIIBBwBL/B2vqtPVIwAAAABJRU5ErkJggg==", +"p8b_full":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAN0lEQVRIx2NgGPLg/8cX/2mJ6WcBrUJm4CwgOSgGrQVEB8WoBaMWDGMLhm5OHnql6dCt0YY8AAA9oZm+9Z9xQAAAAABJRU5ErkJggg==", +"p8b_pause0":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAKUlEQVRIx2NgGHbg/8cX/7FhctWNWjBqwagFoxaMWjBqwagF5Fkw5AAAPaGZvsIUtXUAAAAASUVORK5CYII=", +"p8b_sound0":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAANklEQVRIx2NgGDHg/8cX/5Hx0LEA3cChYwEugwavBcRG4qgFoxYMZwuGfk4efqXp8KnRBj0AAMz7cLDnG4FeAAAAAElFTkSuQmCC", +"p8b_sound1":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAPUlEQVRIx2NgGDHg/8cX/5Hx0LEA3cChYwEugwhZQLQDqG4BsZFIKMhGLRi1YChbMPRz8vArTYdPjTboAQCSVgpXUWQAMAAAAABJRU5ErkJggg==", +"p8b_close":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAU0lEQVRIx2NkoDFgpJsF/z+++I8iwS9BkuW49A+cBcRaREgf/Swg1SJi1dHfAkIG4EyOOIJy4Cwg1iJCiWDUAvItGLqpaOjm5KFfmg79Gm3ItioAl+mAGVYIZUUAAAAASUVORK5CYII=", + +"controls_left_panel":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAEI0lEQVR42u3dMU7DQBCG0Tjam9DTcP8jpEmfswS5iHBhAsLxev/hvQY6pGXyZRTQ+nQCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHqbHEEtl+vt7hS+fLy/mXHBQqxEi/6aI/AiFW9SnB2BWDkDBAtAsADBAhAsAMECBAtAsAAECxAsAMECECxAsAAEC0CwONJ8tYvrXRAsImK19j0IFsPGSrQQLCJiNV+et7xAT7QQLIaN1dr3ooVgMWysRAvBIipWooVgERUr0UKwiIqVaCFYRMVKtBAsomIlWggWUbESLQSLqFiJFoJFVKxEC8EiKlaihWARFSvRQrDYJSSVfhaCBSBYAIIFCBbAHpoj4Bl/scOGBWDD4lX8iwE2LADBAgQLQLAABAsQLADBAhAsQLAABAtAsADBAhAsAMECBAtAsAAECxAsAMECECxAsAAECxAsAMECECxAsMh1ud7uTsHZVDcZyFo8Yt5sVJ6NyUAaSNEyIymaXwZepIKd4mwoQbAFC0CwAMECECwAwQIEC0CwAAQLECwAwQIQLECwAAQLQLAAwQI4UHME2/10QZq7usyBObBhRQwpmBUb1nADuPbuaUD/p2ezMH+1admwhosVfBcxb2SCJVaIlmAhVoiWYIkVoiVagiVWiJZgiZVYIVqCJVaIlmgJllghWoIlViBagiVWiJZoCZZYIVqCJVYgWoIlViBaggUIlnc0sPELlmghVmIlWKKFWAmWaIFYCZZoIVYIlmghVoIlWiBWgiVaiJVgIVqIlWCJFoiVYIkWYiVYiBZiJViihViJ1XbNEWyL1mMQRYvfvIGJlQ1rmE0LzIoNyyBiDrBhAYIFIFiAYAEIFoBgAYIFIFgAggUIFoBgAQgWIFgAggUgWIBgDc+Nn1D/tdH8YupwgZy5qG4ykKIlVmZDsDjshSlazqQqH7p793Q2CBaAYAGCBSBYAIIFCBaAYAEIFiBYAIIFIFiAYAEIFoBgAYIFIFgAggUIFoBgAQgWIFgAggUgWIBgAQgWwENzBKxZPub9CJ7WjA0LsGFRV+9N5+jNDhsWgGABggUgWACCxW56fgjuA3cEiz9Z/nWwR0iWP8P/YCFYDBstsUKwiIiWWCFYRERLrBAsIqIlVggWEdESKwSLiGiJFYJFRLTECsEiIlpihWARES2xQrCIiJZYIVhEREusECwioiVWCBYx0RIrBIuoaIkVr+YhFHTZtMCGBQgWgGABCBYgWACCBSBYgGABCBaAYAGCBSBYAIIFCBbj2uOR8s6AEbhexgsWYri3SKhKczcXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMA2n+e0UMDzh3yTAAAAAElFTkSuQmCC", + + +"controls_right_panel":"data:image/png;base64,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", + + }; + + + // added 0.2.1: work-around for iOS/Safari running from an iFrame (e.g. from itch.io page): + // touch events only register after adding dummy listeners on document. + + document.addEventListener('touchstart', {}); + document.addEventListener('touchmove', {}); + document.addEventListener('touchend', {}); + + + // -------------------------------------------------------------------------------------------------------------------------------- + // pico-8 0.2.2: allow dropping files + var p8_dropped_cart = null; + var p8_dropped_cart_name = ""; + function p8_drop_file(e) + { + // console.log("@@ dropping file..."); + + e.stopPropagation(); + e.preventDefault(); + + if (e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files[0]) + { + // read from file + reader = new FileReader(); + reader.onload = function (event) + { + p8_dropped_cart_name = 'untitled.p8'; + if (typeof e.dataTransfer.files[0].name !== 'undefined') p8_dropped_cart_name = e.dataTransfer.files[0].name; + if (typeof e.dataTransfer.files[0].fileName !== 'undefined') p8_dropped_cart_name = e.dataTransfer.files[0].fileName; + p8_dropped_cart = reader.result; + // data:image/png;base64 + e.stopPropagation(); + e.preventDefault(); + codo_command = 9; // read directly from p8_dropped_cart with libb64 decoder + }; + reader.readAsDataURL(e.dataTransfer.files[0]); + + } + else + { + // read from url (or data url) + txt = e.dataTransfer.getData('Text'); + if (txt){ + p8_dropped_cart_name = "untitled.p8.png"; + p8_dropped_cart = txt; + codo_command = 9; + } + } + } + function nop(evt) { + evt.stopPropagation(); + evt.preventDefault(); + } + function dragover(evt) { + evt.stopPropagation(); + evt.preventDefault(); + Module.pico8DragOver(); + } + function dragstop(evt) { + evt.stopPropagation(); + evt.preventDefault(); + Module.pico8DragStop(); + } + // -------------------------------------------------------------------------------------------------------------------------------- + + + var p8_buttons_hash = -1; + function p8_update_button_icons() + { + // buttons only appear when running + if (!p8_is_running) + { + requestAnimationFrame(p8_update_button_icons); + return; + } + var is_fullscreen=(document.fullscreenElement || document.mozFullScreenElement || document.webkitIsFullScreen || document.msFullscreenElement); + + // hash based on: pico8_state.sound_volume pico8_state.is_paused bottom_margin left is_fullscreen p8_touch_detected + var hash = 0; + hash = pico8_state.sound_volume; + if (pico8_state.is_paused) hash += 0x100; + if (p8_touch_detected) hash += 0x200; + if (is_fullscreen) hash += 0x400; + + if (p8_buttons_hash == hash) + { + requestAnimationFrame(p8_update_button_icons); + return; + } + + p8_buttons_hash = hash; + // console.log("@@ updating button icons"); + + els = document.getElementsByClassName('p8_menu_button'); + for (i = 0; i < els.length; i++) + { + el = els[i]; + index = el.id; + if (index == 'p8b_sound') index += (pico8_state.sound_volume == 0 ? "0" : "1"); // 1 if undefined + if (index == 'p8b_pause') index += (pico8_state.is_paused > 0 ? "1" : "0"); // 0 if undefined + + new_str = '<img width=24 height=24 style="pointer-events:none" src="'+p8_gfx_dat[index]+'">'; + if (el.innerHTML != new_str) + el.innerHTML = new_str; + + + + + // hide all buttons for touch mode (can pause with menu buttons) + + var is_visible = p8_is_running; + + if ((!p8_touch_detected || !p8_allow_mobile_menu) && el.parentElement.id == "p8_menu_buttons_touch") + is_visible = false; + + if (p8_touch_detected && el.parentElement.id == "p8_menu_buttons") + is_visible = false; + + if (is_fullscreen) + is_visible = false; + + if (is_visible) + el.style.display=""; + else + el.style.display="none"; + } + requestAnimationFrame(p8_update_button_icons); + } + + + + function abs(x) + { + return x < 0 ? -x : x; + } + + // step 0 down 1 drag 2 up (not used) + function pico8_buttons_event(e, step) + { + if (!p8_is_running) return; + + pico8_buttons[0] = 0; + + if (step == 2 && typeof(pico8_mouse) !== 'undefined') + { + pico8_mouse[2] = 0; + } + + var num = 0; + if (e.touches) num = e.touches.length; + + if (num == 0 && typeof(pico8_mouse) !== 'undefined') + { + // no active touches: release mouse button from anywhere on page. (maybe redundant? but just in case) + pico8_mouse[2] = 0; + } + + + for (var i = 0; i < num; i++) + { + var touch = e.touches[i]; + var x = touch.clientX; + var y = touch.clientY; + var w = window.innerWidth; + var h = window.innerHeight; + + var r = Math.min(w,h) / 12; + if (r > 40) r = 40; + + // mouse (0.1.12d) + + let canvas = document.getElementById("canvas"); + if (p8_touch_detected) + if (typeof(pico8_mouse) !== 'undefined') + if (canvas) + { + var rect = canvas.getBoundingClientRect(); + //console.log(rect.top, rect.right, rect.bottom, rect.left, x, y); + + if (x >= rect.left && x < rect.right && y >= rect.top && y < rect.bottom) + { + pico8_mouse = [ + Math.floor((x - rect.left) * 128 / (rect.right - rect.left)), + Math.floor((y - rect.top) * 128 / (rect.bottom - rect.top)), + step < 2 ? 1 : 0 + ]; + // return; // commented -- blocks overlapping buttons + }else + { + pico8_mouse[2] = 0; + } + } + + + // buttons + + b = 0; + + if (y < h - r*8) + { + // no controller buttons up here; includes canvas and menu buttons at top in touch mode + } + else + { + e.preventDefault(); + + if ((y < h - r*6) && y > (h - r*8)) + { + // menu button: half as high as X O button + // stretch across right-hand half above X O buttons + if (x > w - r*3) + b |= 0x40; + } + else if (x < w/2 && x < r*6) + { + // stick + + mask = 0xf; // dpad + var cx = 0 + r*3; + var cy = h - r*3; + + deadzone = r/3; + var dx = x - cx; + var dy = y - cy; + + if (abs(dx) > abs(dy) * 0.6) // horizontal + { + if (dx < -deadzone) b |= 0x1; + if (dx > deadzone) b |= 0x2; + } + if (abs(dy) > abs(dx) * 0.6) // vertical + { + if (dy < -deadzone) b |= 0x4; + if (dy > deadzone) b |= 0x8; + } + } + else if (x > w - r*6) + { + // button; diagonal split from bottom right corner + + mask = 0x30; + + // one or both of [X], [O] + if ( (h-y) > (w-x) * 0.8) b |= 0x10; + if ( (w-x) > (h-y) * 0.8) b |= 0x20; + } + } + + pico8_buttons[0] |= b; + + } + } + + // p8_update_layout_hash is used to decide when to update layout (expensive especially when part of a heavy page) + var p8_update_layout_hash = -1; + var last_windowed_container_height = 512; + var p8_layout_frames = 0; + + function p8_update_layout() + { + var canvas = document.getElementById("canvas"); + var p8_playarea = document.getElementById("p8_playarea"); + var p8_container = document.getElementById("p8_container"); + var p8_frame = document.getElementById("p8_frame"); + var csize = 512; + var margin_top = 0; + var margin_left = 0; + + // page didn't load yet? first call should be after p8_frame is created so that layout doesn't jump around. + if (!canvas || !p8_playarea || !p8_container || !p8_frame) + { + p8_update_layout_hash = -1; + requestAnimationFrame(p8_update_layout); + return; + } + + p8_layout_frames ++; + + // assumes frame doesn't have padding + + var is_fullscreen=(document.fullscreenElement || document.mozFullScreenElement || document.webkitIsFullScreen || document.msFullscreenElement); + var frame_width = p8_frame.offsetWidth; + var frame_height = p8_frame.offsetHeight; + + if (is_fullscreen) + { + // same as window + frame_width = window.innerWidth; + frame_height = window.innerHeight; + } + else{ + // never larger than window // (happens when address bar is down in portraight mode on phone) + frame_width = Math.min(frame_width, window.innerWidth); + frame_height = Math.min(frame_height, window.innerHeight); + } + + // as big as will fit in a frame.. + csize = Math.min(frame_width,frame_height); + + // .. but never more than 2/3 of longest side for touch (e.g. leave space for controls on iPad) + if (p8_touch_detected && p8_is_running) + { + var longest_side = Math.max(window.innerWidth,window.innerHeight); + csize = Math.min(csize, longest_side * 2/3); + } + + // pixel perfect: quantize to closest multiple of 128 + // only when large display (desktop) + if (frame_width >= 512 && frame_height >= 512) + { + csize = (csize+1) & ~0x7f; + } + + // csize should never be higher than parent frame + // (otherwise stretched large when fullscreen and then return) + if (!is_fullscreen && p8_frame) + csize = Math.min(csize, last_windowed_container_height); // p8_frame_0 parent + + + if (is_fullscreen) + { + // always center horizontally + margin_left = (frame_width - csize)/2; + + if (p8_touch_detected) + { + if (window.innerWidth < window.innerHeight) + { + // portrait: keep at y=40 (avoid rounded top corners / camera nub thing etc.) + margin_top = Math.min(40, frame_height - csize); + } + else + { + // landscape: put a little above vertical center + margin_top = (frame_height - csize)/4; + } + } + else{ + // non-touch: center vertically + margin_top = (frame_height - csize)/2; + } + } + + // skip if relevant state has not changed + + var update_hash = csize + margin_top * 1000.3 + margin_left * 0.001 + frame_width * 333.33 + frame_height * 772.15134; + if (is_fullscreen) update_hash += 0.1237; + + // unexpected things can happen in the first few seconds, so just keep re-calculating layout. wasm version breaks layout otherwise. + // also: bonus refresh at 5, 8 seconds just in case ._. + if (p8_layout_frames < 180 || p8_layout_frames == 60*5 || p8_layout_frames == 60*8 ) + update_hash = p8_layout_frames; + + if (!is_fullscreen) // fullscreen: update every frame for safety. should be cheap! + if (!p8_touch_detected) // mobile: update every frame because nothing can be trusted + if (p8_update_layout_hash == update_hash) + { + //console.log("p8_update_layout(): skipping"); + requestAnimationFrame(p8_update_layout); + return; + } + p8_update_layout_hash = update_hash; + + // record this for returning to original size after fullscreen pushes out container height (argh) + if (!is_fullscreen && p8_frame) + last_windowed_container_height = p8_frame.parentNode.parentNode.offsetHeight; + + + // mobile in portrait mode: put screen at top (w / a little extra space for fullscreen button if needed) + // (don't cart too about buttons overlapping screen) + if (p8_touch_detected && p8_is_running && document.body.clientWidth < document.body.clientHeight) + p8_playarea.style.marginTop = p8_allow_mobile_menu ? 32 : 8; + else if (p8_touch_detected && p8_is_running) // landscape: slightly above vertical center (only relevant for iPad / highres devices) + p8_playarea.style.marginTop = (document.body.clientHeight - csize) / 4; + else + p8_playarea.style.marginTop = 18; + + canvas.style.width = csize; + canvas.style.height = csize; + + // to do: this should just happen from css layout + canvas.style.marginLeft = margin_left; + canvas.style.marginTop = margin_top; + + p8_container.style.width = csize; + p8_container.style.height = csize; + + // set menu buttons position to bottom right + el = document.getElementById("p8_menu_buttons"); + el.style.marginTop = csize - el.offsetHeight; + + if (p8_touch_detected && p8_is_running) + { + // turn off pointer events to prevent double-tap zoom etc (works on Android) + // don't want this for desktop because breaks mouse input & click-to-focus when using codo_textarea + canvas.style.pointerEvents = "none"; + + p8_container.style.marginTop = "0px"; + + // buttons + + // same as touch event handling + var w = window.innerWidth; + var h = window.innerHeight; + var r = Math.min(w,h) / 12; + + if (r > 40) r = 40; + + el = document.getElementById("controls_right_panel"); + el.style.left = w-r*6; + el.style.top = h-r*7; + el.style.width = r*6; + el.style.height = r*7; + if (el.getAttribute("src") != p8_gfx_dat["controls_right_panel"]) // optimisation: avoid reload? (browser should handle though) + el.setAttribute("src", p8_gfx_dat["controls_right_panel"]); + + el = document.getElementById("controls_left_panel"); + el.style.left = 0; + el.style.top = h-r*6; + el.style.width = r*6; + el.style.height = r*6; + if (el.getAttribute("src") != p8_gfx_dat["controls_left_panel"]) // optimisation: avoid reload? (browser should handle though) + el.setAttribute("src", p8_gfx_dat["controls_left_panel"]); + + // scroll to cart (commented; was a failed attempt to prevent scroll-on-drag on some browsers) + // p8_frame.scrollIntoView(true); + + document.getElementById("touch_controls_gfx").style.display="table"; + document.getElementById("touch_controls_background").style.display="table"; + + } + else{ + document.getElementById("touch_controls_gfx").style.display="none"; + document.getElementById("touch_controls_background").style.display="none"; + } + + if (!p8_is_running) + { + p8_playarea.style.display="none"; + p8_container.style.display="flex"; + p8_container.style.marginTop="auto"; + + el = document.getElementById("p8_start_button"); + if (el) el.style.display="flex"; + } + requestAnimationFrame(p8_update_layout); + } + + + var p8_touch_detected = false; + addEventListener("touchstart", function(event) + { + p8_touch_detected = true; + + // hide codo_textarea -- clipboard support on mobile is not feasible + el = document.getElementById("codo_textarea"); + if (el && el.style.display != "none"){ + el.style.display="none"; + } + + }, {passive: true}); + + function p8_create_audio_context() + { + if (pico8_audio_context) + { + try { + pico8_audio_context.resume(); + } + catch(err) { + console.log("** pico8_audio_context.resume() failed"); + } + return; + } + + var webAudioAPI = window.AudioContext || window.webkitAudioContext || window.mozAudioContext || window.oAudioContext || window.msAudioContext; + if (webAudioAPI) + { + pico8_audio_context = new webAudioAPI; + + // wake up iOS + if (pico8_audio_context) + { + try { + var dummy_source_sfx = pico8_audio_context.createBufferSource(); + dummy_source_sfx.buffer = pico8_audio_context.createBuffer(1, 1, 22050); // dummy + dummy_source_sfx.connect(pico8_audio_context.destination); + dummy_source_sfx.start(1, 0.25); // gives InvalidStateError -- why? hasn't been played before + //dummy_source_sfx.noteOn(0); // deleteme + } + catch(err) { + console.log("** dummy_source_sfx.start(1, 0.25) failed"); + } + } + } + } + + function p8_close_cart() + { + // just reload page! used for touch buttons -- hard to roll back state + window.location.hash = ""; // triggers reload + } + + var p8_is_running = false; + var p8_script = null; + var Module = null; + function p8_run_cart() + { + if (p8_is_running) return; + p8_is_running = true; + + // touch: hide everything except p8_frame_0 + if (p8_touch_detected) + { + el = document.getElementById("body_0"); + el2 = document.getElementById("p8_frame_0"); + if (el && el2) + { + el.style.display="none"; + el.parentNode.appendChild(el2); + } + } + + // create audio context and wake it up (for iOS -- needs happen inside touch event) + p8_create_audio_context(); + + // show touch elements + els = document.getElementsByClassName('p8_controller_area'); + for (i = 0; i < els.length; i++) + els[i].style.display=""; + + + // install touch events. These also serve to block scrolling / pinching / zooming on phones when p8_is_running + // moved event.preventDefault(); calls into pico8_buttons_event() (want to let top buttons pass through) + addEventListener("touchstart", function(event){ pico8_buttons_event(event, 0); }, {passive: false}); + addEventListener("touchmove", function(event){ pico8_buttons_event(event, 1); }, {passive: false}); + addEventListener("touchend", function(event){ pico8_buttons_event(event, 2); }, {passive: false}); + + + // load and run script + e = document.createElement("script"); + p8_script = e; + e.onload = function(){ + + // show canvas / menu buttons only after loading + el = document.getElementById("p8_playarea"); + if (el) el.style.display="table"; + + if (typeof(p8_update_layout_hash) !== 'undefined') + p8_update_layout_hash = -77; + if (typeof(p8_buttons_hash) !== 'undefined') + p8_buttons_hash = -33; + + + } + e.type = "application/javascript"; + e.src = "toxicinvaders.js"; + e.id = "e_script"; + + document.body.appendChild(e); // load and run + + // hide start button and show canvas / menu buttons. hide start button + el = document.getElementById("p8_start_button"); + if (el) el.style.display="none"; + + // add #playing for touchscreen devices (allows back button to close) + // X button can also be used to trigger this + if (p8_touch_detected) + { + window.location.hash = "#playing"; + window.onhashchange = function() + { + if (window.location.hash.search("playing") < 0) + window.location.reload(); + } + } + + // install drag&drop listeners + { + let canvas = p8_document().getElementById("canvas"); + if (canvas) + { + canvas.addEventListener('dragenter', dragover, false); + canvas.addEventListener('dragover', dragover, false); + canvas.addEventListener('dragleave', dragstop, false); + canvas.addEventListener('drop', nop, false); + canvas.addEventListener('drop', p8_drop_file, false); + } + } + } + + + // Gamepad code + + var P8_BUTTON_O = {action:'button', code: 0x10}; + var P8_BUTTON_X = {action:'button', code: 0x20}; + var P8_DPAD_LEFT = {action:'button', code: 0x1}; + var P8_DPAD_RIGHT = {action:'button', code: 0x2}; + var P8_DPAD_UP = {action:'button', code: 0x4}; + var P8_DPAD_DOWN = {action:'button', code: 0x8}; + var P8_MENU = {action:'menu'}; + var P8_NO_ACTION = {action:'none'}; + + var P8_BUTTON_MAPPING = [ + // ref: https://w3c.github.io/gamepad/#remapping + P8_BUTTON_O, // Bottom face button + P8_BUTTON_X, // Right face button + P8_BUTTON_X, // Left face button + P8_BUTTON_O, // Top face button + P8_NO_ACTION, // Near left shoulder button (L1) + P8_NO_ACTION, // Near right shoulder button (R1) + P8_NO_ACTION, // Far left shoulder button (L2) + P8_NO_ACTION, // Far right shoulder button (R2) + P8_MENU, // Left auxiliary button (select) + P8_MENU, // Right auxiliary button (start) + P8_NO_ACTION, // Left stick button + P8_NO_ACTION, // Right stick button + P8_DPAD_UP, // Dpad up + P8_DPAD_DOWN, // Dpad down + P8_DPAD_LEFT, // Dpad left + P8_DPAD_RIGHT, // Dpad right + ]; + + // Track which player is controller by each gamepad. Gamepad index i controls the + // player with index pico8_gamepads_mapping[i]. Gamepads with null player are + // currently unassigned - they get assigned to a player when a button is pressed. + var pico8_gamepads_mapping = []; + + function p8_unassign_gamepad(gamepad_index) { + if (pico8_gamepads_mapping[gamepad_index] == null) { + return; + } + pico8_buttons[pico8_gamepads_mapping[gamepad_index]] = 0; + pico8_gamepads_mapping[gamepad_index] = null; + } + + + function p8_first_player_without_gamepad(max_players) { + var allocated_players = pico8_gamepads_mapping.filter(function(x) { return x != null; }); + var sorted_players = Array.from(allocated_players).sort(); + for (var desired = 0; desired < sorted_players.length && desired < max_players; ++desired) { + if (desired != sorted_players[desired]) { + return desired; + } + } + if (sorted_players.length < max_players) { + return sorted_players.length; + } + return null; + } + + function p8_assign_gamepad_to_player(gamepad_index, player_index) { + p8_unassign_gamepad(gamepad_index); + pico8_gamepads_mapping[gamepad_index] = player_index; + } + + + + function p8_convert_standard_gamepad_to_button_state(gamepad, axis_threshold, button_threshold) { + // Given a gamepad object, return: + // { + // button_state: the binary encoded Pico 8 button state + // menu_button: true if any menu-mapped button was pressed + // any_button: true if any button was pressed, including d-pad + // buttons and unmapped buttons + // } + if (!gamepad || !gamepad.axes || !gamepad.buttons) { + return { + button_state: 0, + menu_button: false, + any_button: false + }; + } + function button_state_from_axis(axis, low_state, high_state, default_state) { + if (axis && axis < -axis_threshold) return low_state; + if (axis && axis > axis_threshold) return high_state; + return default_state; + } + var axes_actions = [ + button_state_from_axis(gamepad.axes[0], P8_DPAD_LEFT, P8_DPAD_RIGHT, P8_NO_ACTION), + button_state_from_axis(gamepad.axes[1], P8_DPAD_UP, P8_DPAD_DOWN, P8_NO_ACTION), + ]; + + var button_actions = gamepad.buttons.map(function (button, index) { + var pressed = button.value > button_threshold || button.pressed; + if (!pressed) return P8_NO_ACTION; + return P8_BUTTON_MAPPING[index] || P8_NO_ACTION; + }); + + var all_actions = axes_actions.concat(button_actions); + + var menu_button = button_actions.some(function (action) { return action.action == 'menu'; }); + var button_state = (all_actions + .filter(function (a) { return a.action == 'button'; }) + .map(function (a) { return a.code; }) + .reduce(function (result, code) { return result | code; }, 0) + ); + var any_button = gamepad.buttons.some(function (button) { + return button.value > button_threshold || button.pressed; + }); + + any_button |= button_state; //jww: include axes 0,1 as might be first intended action + + return { + button_state, + menu_button, + any_button + }; + } + + // jww: pico-8 0.2.1 version for unmapped gamepads, following p8_convert_standard_gamepad_to_button_state + // axes 0,1 & buttons 0,1,2,3 are reasonably safe. don't try to read dpad. + // menu buttons are unpredictable, but use 6..8 anyway (better to have a weird menu button than none) + + function p8_convert_unmapped_gamepad_to_button_state(gamepad, axis_threshold, button_threshold) { + + if (!gamepad || !gamepad.axes || !gamepad.buttons) { + return { + button_state: 0, + menu_button: false, + any_button: false + }; + } + + var button_state = 0; + + if (gamepad.axes[0] && gamepad.axes[0] < -axis_threshold) button_state |= 0x1; + if (gamepad.axes[0] && gamepad.axes[0] > axis_threshold) button_state |= 0x2; + if (gamepad.axes[1] && gamepad.axes[1] < -axis_threshold) button_state |= 0x4; + if (gamepad.axes[1] && gamepad.axes[1] > axis_threshold) button_state |= 0x8; + + // buttons: first 4 taken to be O/X, 6..8 taken to be menu button + + for (j = 0; j < gamepad.buttons.length; j++) + if (gamepad.buttons[j].value > 0 || gamepad.buttons[j].pressed) + { + if (j < 4) + button_state |= (0x10 << (((j+1)/2)&1)); // 0 1 1 0 -- A,X -> O,X on xbox360 + else if (j >= 6 && j <= 8) + button_state |= 0x40; + } + + var menu_button = button_state & 0x40; + + var any_button = gamepad.buttons.some(function (button) { + return button.value > button_threshold || button.pressed; + }); + + any_button |= button_state; //jww: include axes 0,1 as might be first intended action + + return { + button_state, + menu_button, + any_button + }; + } + + + // gamepad https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API/Using_the_Gamepad_API + // (sets bits in pico8_buttons[]) + function p8_update_gamepads() { + var axis_threshold = 0.3; + var button_threshold = 0.5; // Should be unnecessary, we should be able to trust .pressed + var max_players = 8; + var gps = navigator.getGamepads() || navigator.webkitGetGamepads(); + + if (!gps) return; + + // In Chrome, gps is iterable but it's not an array. + gps = Array.from(gps); + + pico8_gamepads.count = gps.length; + while (gps.length > pico8_gamepads_mapping.length) { + pico8_gamepads_mapping.push(null); + } + + var menu_button = false; + var gamepad_states = gps.map(function (gp) { + return (gp && gp.mapping == "standard") ? + p8_convert_standard_gamepad_to_button_state(gp, axis_threshold, button_threshold) : + p8_convert_unmapped_gamepad_to_button_state(gp, axis_threshold, button_threshold); + }); + + // Unassign disconnected gamepads. + // gps.forEach(function (gp, i) { if (gp && !gp.connected) { p8_unassign_gamepad(i); }}); + gps.forEach(function (gp, i) { if (!gp || !gp.connected) { p8_unassign_gamepad(i); }}); // https://www.lexaloffle.com/bbs/?pid=87132#p + + + // Assign unassigned gamepads when any button is pressed. + gamepad_states.forEach(function (state, i) { + if (state.any_button && pico8_gamepads_mapping[i] == null) { + var first_free_player = p8_first_player_without_gamepad(max_players); + p8_assign_gamepad_to_player(i, first_free_player); + } + }); + + // Update pico8_buttons array. + gamepad_states.forEach(function (gamepad_state, i) { + if (pico8_gamepads_mapping[i] != null) { + pico8_buttons[pico8_gamepads_mapping[i]] = gamepad_state.button_state; + } + }); + + // Update menu button. + // Pico 8 only recognises the menu button on the first player, so we + // press it when any gamepad has pressed a button mapped to menu. + if (gamepad_states.some(function (state) { return state.menu_button; })) { + pico8_buttons[0] |= 0x40; + } + + requestAnimationFrame(p8_update_gamepads); + } + requestAnimationFrame(p8_update_gamepads); + + // End of gamepad code + + + // key blocker. prevent cursor keys from scrolling page while playing cart. + // also don't act on M, R so that can mute / reset cart + document.addEventListener('keydown', + function (event) { + event = event || window.event; + if (!p8_is_running) return; + if (pico8_state.has_focus == 1) + if ([32, 37, 38, 39, 40, 77, 82, 80, 9].indexOf(event.keyCode) > -1) // block cursors, M R P, tab + if (event.preventDefault) event.preventDefault(); + },{passive: false}); + + // when using codo_textarea to determine focus, need to explicitly hand focus back when clicking a p8_menu_button + function p8_give_focus() + { + el = (typeof codo_textarea === 'undefined') ? document.getElementById("codo_textarea") : codo_textarea; + if (el) + { + el.focus(); + el.select(); + } + } + + function p8_request_fullscreen() { + + var is_fullscreen=(document.fullscreenElement || document.mozFullScreenElement || document.webkitIsFullScreen || document.msFullscreenElement); + + if (is_fullscreen) + { + if (document.exitFullscreen) { + document.exitFullscreen(); + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if (document.msExitFullscreen) { + document.msExitFullscreen(); + } + return; + } + + var el = document.getElementById("p8_playarea"); + + if ( el.requestFullscreen ) { + el.requestFullscreen(); + } else if ( el.mozRequestFullScreen ) { + el.mozRequestFullScreen(); + } else if ( el.webkitRequestFullScreen ) { + el.webkitRequestFullScreen( Element.ALLOW_KEYBOARD_INPUT ); + } + } + +</script> + +<STYLE TYPE="text/css"> +<!-- +.p8_menu_button{ + opacity:0.3; + padding:4px; + display:table; + width:24px; + height:24px; + float:center; +} + +@media screen and (min-width:512px) { + .p8_menu_button{ + width:24px; margin:auto; + } +} +.p8_menu_button:hover{ + opacity:1.0; + cursor:pointer; +} + +canvas{ + image-rendering: optimizeSpeed; + image-rendering: -moz-crisp-edges; + image-rendering: -webkit-optimize-contrast; + image-rendering: optimize-contrast; + image-rendering: pixelated; + -ms-interpolation-mode: nearest-neighbor; + border: 0px; + cursor: none; +} + + +.p8_start_button{ + cursor:pointer; + background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAANvklEQVR4Ae1dz2scRxr9NBrN0Blm0GQOPT9AaDYJkUAsTMx6wSyxN16d4mUPIbkv+Qty0dXkqkv+grCQo5ccFjawYIjtsAhi4h1YtNghAQmx7pk+jBskpEZjydks37hUU7+6urq6pxXPRzFuV1dXld773nvXhe5yB6hqNVz6v/NKuwpz9HNEwLxmScC8/ecKmBMwr1kRcIn8Z7Oxv9nYz+aruQLmFpTD3u88g84z/Y42+2pOwFwBee39yZRGR5t9NSdgroCc9z5dko42+2pOwKtYxctxzaevTzpXWJ1nALDJzUTslo9a6C538KnVcNM4oF8aJ/l8q+qZwKq9cvuorXON3rj0iioAAZrQoKEDLSXFgT47CxqM/JREAABh71jx1ulXFGvwbXq3mtXplymEt4/ad0erF11sYOLUV3dHqzlpf5aAwchP6RinXyFDNqOez6bo07O5Q94zgC4UwWZjX5wHshCm5i9klJtiLSg9EcxLpYBWwyXQp5rGlnUQ86sc1kQBdOOvFGpLQWjrgN64RMZkyi+DX6bf8vPSGbtF78/dSnDzDCxopVDDB4sc2K3Nxv5mYx86z6aMHn2fDG5+8lVuLUhYS0H4vO7YP9M9hZ+p9rij+XnZyjRuQj33S2NexxkpgOcgP1KY6uKnr8cb/A45VADxH54GfLAjCJmt+2UACNtn0SstZoDidAAAcNLTn44CZExkXFtV78L3ZUOWB9zYbOxvVb1LkAEplayn0u419YnZn26igOxFsFX1tqqeoMfpolxeOsPpY7LzrOuCAFkAzCt3FrQUhHbSWL8U7fyy7o5WyfNmY1/zq8tEAAF9KQjNOOiNS7HmM6gZHo210F3u6FgQAzcmQQY6mPSydu/b+jZrAmKhn4SDfmksbEB6nu5KZj0dm9tHbfU+ssX0K+Em6itlbUEyiJ/XHTMvCnvH+OD0K/y806/0S2P6Dw57x06/gr8MoOQT4T7bR+3euER0wJw76f3SWHguoi/c324VknyM0KMU9Av/HuFfhUDrEymDRrGP/rm4f6roRytAYT741lAHflk6yb/yy2H7DOcvLLs0pucV+5BOB7/seJO/d8r6/XLYPuOBxpmwfUa+yoUCEGsCvYEOwvYZ+dVSjFckv8JXwiP4V45XDNtnwnPxFb9J2uibEEB3uhkHjlfEkRBo2Xrh5opXBvvkJQOMOdAvOo3p57S/le1jvRa6yx0AWCnU9DNAaEp8PKTdO7+MilCAZkfzuGMyWxfEK0eAPvS0aOj2J0z8AijZbOzjsG9BChdS+AmNJrOGDgaFUC4jB/hwd7SaHQEKiBUk/VI5mJkFmTmJbDE/ubN6svnhe2+/28tXy//6XzhSJ+DgxaHdMIiUEf3JzuoJuKefHnwJALni4O6/3yFM5DGEdbBWuM1SEO6snuysnpCZv5x+veLWcyUCfQ4MUvoiA3RiIFZI6GjlQe8ncE8BwOlXwvYZuKfglx2v2BuXZu48BPdUU3qKgAw4EKKPhRzkBH2m93MRwnaLQR8A8oa+vu8nCWqWgFSjmLzl0Qe/nDfH1+cgSVDbV4CMg0j0Ha941T9fCkI1i2nUt6+tffvampADTRcy5oDNACtJwISBwvcZ9I2DPQn0lWH/uNmrDPsAsFG7OC4yh42DOpoAKxzo+D6D/sUCv3y9v5Ak7XWgr6+/Rc8Ej38AgMqwT9OQalAvBaGUAOscxECfWiCkIQ30GSZ+e/JEM6iNOUBjUBFgkYMHvZ/+f1Ma30j05RwwBOysntz+za0DP/j+m75x76MFAcBxs4dv1TQk5IDYcgQBVmh46C6G7TMh+gBw1T+Xog8AfpmJBx59/PbP5fcAIJIDBfokCQgHP19+fO+OzJGMXYgORS0CEnIgbH9EHwBYbqLymRCws3oymXr5+e2VD+7+9Wv1ZXYPw9LvP+LR/+DWtS//vkPm6TXje3fwgWfCIIdp9AGgYD1p+fY3/JJSCV+TxndPHa+IK8Evb//tH5HtT8IWC9H/5OP3afSZImTsHoa7h1PwJUQ/BgEHLw5TZAkRjIs+Cqh3jBw4XrE3LkWaT+n3H1WGfZqDD25d++zzr+iVx82ekIPjZu+42eNp0ISeR19AQKvhkpEi4u5p2D5D/5mgTHMwjT7tPwz6xMQ00Sf4ksgFgC++m8KFDgCGg8qwXxn2CQ0JoRcQgKAPRj4Oyxwwbe6eIspTHOCQoy+Ia149oiKI073PkyFDn/EipCEh9GwItxouDfpg5JPJhDn80F3EfmejGMDpV6Z0wBVNgAz9yPbfPQwRaEQNESdoEkoU0NMrcZ/KsN87h+d1NpYjEVcRQKAnUkhOwEN3cWttFwA+PVwz44D4jDH6iHXw+IfKsL9RcxhH0izCE/LXm1KmeV0QwIiAV4AZBw/dxa2qB51nCg4wQtNA/+13eytu/cAPvvguVKPP4Mt4EW1c2Pu2aooAPpBp9BMRABDBAZe9Uuij0EcTQHPY/PA9nPzs868U6I/v3SEexUcCgz7uE9dqdDNAvdrchSgOtp9sTCKBR1Y7zB2vyOSzsH71p2uogO+/6St6Xwg9rQYGfTO7N7GgJBzcuP74/oN1noPtJxuT1jbgQAN9RTD+szNlLHSuElfpL07lM+GAQd8WByoLSkLAjeuP8YHhYPuoPWUvMjuyhz4TyLS5E/RpV/nPHy7QJyIAAB79/BJA0Gc4oE2J5UBNg1/Gf83Qp2HqL15YCu8qu4chtj/DDW6i0JaBLePfPpV4tur+g3WaA9qLsK765w/dxa213alYfonyFBNkUtv3eYxo4DYAdimvZ9A/bvbg3h0SAL1zeJ4GQFTnFeJ+efDiUJMDhQIAYKvqwdPXAeB27Ymg38mwij4BvXcOGzWH7/36+lto9797OkmFpSDEkQ4R8QmIpQMZ+gAwCQMZB1Q5XvF6f8EAfUU9rzs0pm+/2/vk4/f/WPkvpu5GzeFpU6eLcRNPWVCr4Q5GvtmmfOoq0EcX2ob2RAedZ7drT7afbAiXAdiEXhxsbh1/K8MdIotIxM1kgeg7XhFdaEoBxujTWDMJrMjnq/450cH2k42r/jk/7Ha67NWBH+AvbUppFOn95iDoPjrqPjpa6C53TFqmUNPXgfrtQ3fxZadbMBZ1qzILhAmhny5WstMyAZq9r3Yn6wSoQTTgwBb65gQQDm68OXGt+z+6l44DmTKSoP/QXURzR6NvDgIAGLbq/GRSAhJykAb6saDkcbSSug96P9H/7T46AoC9K1V6kiRwUgLM7OjG9ccpoR+LA0U4J/EcHQLoKlhJdpnH3bj+GEfazhMXLMWapSDkR3KvT5EARRGsGQ7SLgVqsQCN1YKIvuMVaathHviSvjC4hNCO7j9YR/TTdp4kvpHwr6arOQhgEGMHMQEMjgbKytJz8l8kcqMtaKVQ47tYOKnoiBtv+jhecdyxhq264u1Cd7kja3yzkMFNCPr3f3TTULpmQ2RwNFnQariDkaDn9q5UrREQi4OUooVcIHIy46Nl7a/wnykC+KsbnGcXhYMXh8Kt+ItZl0iSo/XbXxrCzA3o55VCLZID2e1tleYd0ugMnaPR9JuDQGdDKQH8qZnZbpaGbj1OiOcMoa7DQcGsC6xERULgZsiZxZISoKO1tK+Od0givlbDJb/ZHN0cBI5XdLyipgWpFECfzfCheS1NDhTLVgq1JBYxGPnk14ADs6Obg0ATfUMLiqsDNQ34NpZcmMXCb0nXtxouDitK1TmaLseLSNmL1wljlv6WvxbOqNfEhUDntoj7YOQjB2ZSMDuaqGGvXU1FAYxB6aQ0qkGmCR1KZNTq02AsArOjI0UwRYBiR7VNa04mzIxYIUTg1owBi0cLY1n2dqG73InETiE9hXEZmwx/ELMVeRvrCE0LSuNorL0rAi8SEKB/OZm5J7ml/jU0zQelkND9dY4etuph+8zxis1BIHublAAdDtIjYKVQS4lRK0eTBu8+OorE3UII802Bw8z9NU+xu7ksk82ORqMndj9s1feuVNXomyhAHwXr3RpLAcNWHQNwJuIT2r01AjQ5mJVd0MKXOXKqpY++uQVFgjtD9GdbsdA3V4BaCpmhj50ubHNiQTpqMFYMnbGOV4x0fPsEGKffYOSrjVsBLt9u3UdHOi0pXEaDGJeDuP0e24JaDbfVcPHBIgEy9MP2Wdg+QxoQFHVPOV6R/Ao31AGIOcKgi5OU+Oo8UoORL2vblAoVLQMXqzkIYKBwBhbKvSvVmcSyiQL4lk+IfqSGmoPA8YoEoOYg6D460gQLmx0HYyl8vzOyYDhWUy6UoH0CSLNbtCAd/pqDwKw9acR1PITmAIk3CIDULQhBR/NRJOclrb0rVZLJMiuTxTXhKXlgqAhA6BkaMi7eTyw26bBV17c4OlTC9tleu+p4RT5mYld3uSMc1954h36m/5vecNY34OYaGcx/6UF/JVujMyKv4axvKK6RfCx0lzs6sZmB+TDZqBmACU1AqKe4N0lSKgJmazWZFUmCmRBQEPZ7XOyS32NW6Nu6vwUCzEwGO3e2f4N17tHcsibArJqDQGijl6voBsrYDBNlwLBV14Qe/yoFVVnabr6qu9wxG876Btxcc9Y3hPM4yFsyo97tVRwKiK+98U4kB/wkc4CarVca+ptrcHNNlTaRsaxv/c1BAAOxLwFkZ7g5rKQhnCQ/ssy6V4gAx7tQFf3M1Bx9LJUFmZXQbeYlq/8BL+YHpjL1OFYAAAAQdEVYdExvZGVQTkcAMjAxMTAyMjHjWbbBAAAAAElFTkSuQmCC"); + -repeat center; + -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; + image-rendering: pixelated; +} + +.button_gfx{ + stroke-width:2; + stroke: #00B543; + stroke-opacity:0.4; + fill-opacity:0.2; + fill:black; +} + +.button_gfx_icon{ + stroke-width:3; + stroke: #00B543; + stroke-opacity:0.7; + fill:none; +} + +--> +</STYLE> + +</head> + +<body style="padding:0px; margin:auto; background-color:#1D2B53; color:#ccc"> +<div id="body_0"> <!-- hide this when playing in mobile (p8_touch_detected) so that elements don't affect layout --> + + +<!-- Add any content above the cart here --> + + +<div id="p8_frame_0" style="max-width:800px; max-height:800px; margin:auto;"> <!-- double function: limit size, and display only this div for touch devices --> +<div id="p8_frame" style="display:flex; width:100%; max-width:95vw; height:100vw; max-height:95vh; margin:auto;"> + + <div id="p8_menu_buttons_touch" style="position:absolute; width:100%; z-index:10; left:0px;"> + <div class="p8_menu_button" id="p8b_full" style="float:left;margin-left:10px" onClick="p8_give_focus(); p8_request_fullscreen();"></div> + <div class="p8_menu_button" id="p8b_sound" style="float:left;margin-left:10px" onClick="p8_give_focus(); p8_create_audio_context(); Module.pico8ToggleSound();"></div> + <div class="p8_menu_button" id="p8b_close" style="float:right; margin-right:10px" onClick="p8_close_cart();"></div> + </div> + + <div id="p8_container" + style="margin:auto; display:table;" + onclick="p8_create_audio_context(); p8_run_cart();"> + + <div id="p8_start_button" class="p8_start_button" style="width:100%; height:100%; display:flex;"> + <img width=80 height=80 style="margin:auto;" + src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAABpklEQVR42u3au23DQBCEYUXOXIGKcujQXUgFuA0XIKgW90Q9oEAg+Ljd27vd2RsCf058gEDqhofPj+OB6SMCAQlIQAIyAhKQgARkBAQDnM6XSRsB7/2e/tSA0//12fCAKsQX3ntDA4oRFwBRIc0AixE38BAhTQGLEAsBUSDNAXcRhYDRIZsAPlp99VECRoXsDpgN0g0wC6Q7IDpkGEBUyG6A0+vKBtkdMBukG2AWSHdAdMgwgKiQ4QDRIMMCokCGB4wOCQPYFVKw2cABNocUjl6wgE0gFashPKAZpHJ2TQNYBVmxW6cDFENWDv9pAUshCVgJScBKSAISkD9hPkT4GkNAMdzepyj8Kye852EBLe51CZHHWQK4JcThD1SlcHPEYY/0a+A0n6SkGZV6w6WZNb3g4Id1b7hwgGhwYQBR4dwB0eHcALPAdQfMBhcOEA0uDCAqnDsgOpwbYBa4poA/31+rZYFrBriFpwGMCtcEcA9PAhgdzhywBK8EEQXOFFCCtwaIBmcGKMWbI6LCmQBq8R6hw5kAMgISkIAEJCAjIAEJSEBGQI9ukV7lRn9nD+gAAAAASUVORK5CYII="/> + </div> + + <div id="p8_playarea" style="display:none; margin:auto; + -webkit-user-select:none; -moz-user-select: none; user-select: none; -webkit-touch-callout:none; + "> + + <div id="touch_controls_background" + style=" pointer-events:none; display:none; background-color:#000; + position:fixed; top:0px; left:0px; border:0; width:100vw; height:100vh"> +   + </div> + + <div style="display:flex; position:relative"> + <!-- pointer-events turned off for mobile in p8_update_layout because need for desktop mouse --> + <canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault();" > + </canvas> + <div class=p8_menu_buttons id="p8_menu_buttons" style="margin-left:10px;"> + <!-- <div class="p8_menu_button" style="position:absolute; bottom:125px" id="p8b_controls" onClick="p8_give_focus(); Module.pico8ToggleControlMenu();"></div> + <div class="p8_menu_button" style="position:absolute; bottom:90px" id="p8b_pause" onClick="p8_give_focus(); Module.pico8TogglePaused(); p8_update_layout_hash = -22;"></div> + <div class="p8_menu_button" style="position:absolute; bottom:55px" id="p8b_sound" onClick="p8_give_focus(); p8_create_audio_context(); Module.pico8ToggleSound();"></div> + --> <div class="p8_menu_button" style="position:absolute;" id="p8b_full" onClick="p8_give_focus(); p8_request_fullscreen();"></div> + </div> + </div> + + + <!-- display after first layout update --> + <div id="touch_controls_gfx" + style=" pointer-events:none; display:table; + position:fixed; top:0px; left:0px; border:0; width:100vw; height:100vh"> + + <img src="" id="controls_right_panel" style="position:absolute; opacity:0.5;"> + <img src="" id="controls_left_panel" style="position:absolute; opacity:0.5;"> + + + </div> <!-- touch_controls_gfx --> + + <!-- used for clipboard access & keyboard input; displayed and used by PICO-8 only once needed. can be safely removed if clipboard / key presses not needed. --> + <!-- (needs to be inside p8_playarea so that it still works under Chrome when fullscreened) --> + <textarea id="codo_textarea" class="emscripten" style="position:absolute; left:-9999px; height:0px; overflow:hidden"></textarea> + + </div> <!--p8_playarea --> + + </div> <!-- p8_container --> + +</div> <!-- p8_frame --> +</div> <!-- p8_frame_0 size limit --> + +<script type="text/javascript"> + + p8_update_layout(); + p8_update_button_icons(); + + var canvas = document.getElementById("canvas"); + Module = {}; + Module.canvas = canvas; + + // from @ultrabrite's shell: test if an AudioContext can be created outside of an event callback. + // If it can't be created, then require pressing the start button to run the cartridge + + if (p8_autoplay) + { + var temp_context = new AudioContext(); + temp_context.onstatechange = function () + { + if (temp_context.state=='running') + { + p8_run_cart(); + temp_context.close(); + } + }; + } + + // pointer lock request needs to be inside a canvas interaction event + // pico8_state.request_pointer_lock is true when 0x5f2d bit 0 and bit 2 are set -- poke(0x5f2d,0x5) + // note on mouse acceleration for future: // https://github.com/w3c/pointerlock/pull/49 + canvas.addEventListener("click", function() + { + if (!p8_touch_detected) + if (pico8_state.request_pointer_lock) + canvas.requestPointerLock(); + }); + +</script> + + + +<!-- Add content below the cart here --> + + + + +</div> <!-- body_0 --> +</body></html> + diff --git a/toxicinvaders_misc/labels/binicon.p8 b/toxicinvaders_misc/labels/binicon.p8 new file mode 100644 index 0000000..97d7f72 --- /dev/null +++ b/toxicinvaders_misc/labels/binicon.p8 @@ -0,0 +1,280 @@ +pico-8 cartridge // http://www.pico-8.com +version 35 +__lua__ +--▶ toxic invaders cart label ◀ +--▶ ribboncable ◀ + +cls(0) +pal(15,140,1) +pal(14,3,1) +pal(13,133,1) +pal(11,139,1) +pal(10,137,1) +pal(8,136,1) +pal(4,141,1) +pal(3,131,1) +pal(0,130,1) + +function _draw() +spr(0,0,0,16,16) +end + +__gfx__ +000000000000000000000000aaaaaaaa0000000000000000000000000000000000000000000000000000000000000000aaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaa0000000000000000000000000000000000000000000000000000000000000000aaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaa0000000000000000000000000000000000000000000000000000000000000000aaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaa0000000000000000000000000000000000000000000000000000000000000000aaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaa0000000000000000000000000000000000000000000000000000000000000000aaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaa0000000000000000000000000000000000000000000000000000000000000000aaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaa0000000000000000000000000000000000000000000000000000000000000000aaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaa0000000000000000000000000000000000000000000000000000000000000000aaaaaaaa000000000000000000000000 +0000000000000000aaaaaaaa99999999aaaaaaaa000000000000000000000000000000000000000000000000aaaaaaaa99999999aaaaaaaa0000000000000000 +0000000000000000aaaaaaaa99999999aaaaaaaa000000000000000000000000000000000000000000000000aaaaaaaa99999999aaaaaaaa0000000000000000 +0000000000000000aaaaaaaa99999999aaaaaaaa000000000000000000000000000000000000000000000000aaaaaaaa99999999aaaaaaaa0000000000000000 +0000000000000000aaaaaaaa99999999aaaaaaaa000000000000000000000000000000000000000000000000aaaaaaaa99999999aaaaaaaa0000000000000000 +0000000000000000aaaaaaaa99999999aaaaaaaa000000000000000000000000000000000000000000000000aaaaaaaa99999999aaaaaaaa0000000000000000 +0000000000000000aaaaaaaa99999999aaaaaaaa000000000000000000000000000000000000000000000000aaaaaaaa99999999aaaaaaaa0000000000000000 +0000000000000000aaaaaaaa99999999aaaaaaaa000000000000000000000000000000000000000000000000aaaaaaaa99999999aaaaaaaa0000000000000000 +0000000000000000aaaaaaaa99999999aaaaaaaa000000000000000000000000000000000000000000000000aaaaaaaa99999999aaaaaaaa0000000000000000 +00000000aaaaaaaa999999999999999999999999aaaaaaaa00000000000000000000000000000000aaaaaaaa999999999999999999999999aaaaaaaa00000000 +00000000aaaaaaaa999999999999999999999999aaaaaaaa00000000000000000000000000000000aaaaaaaa999999999999999999999999aaaaaaaa00000000 +00000000aaaaaaaa999999999999999999999999aaaaaaaa00000000000000000000000000000000aaaaaaaa999999999999999999999999aaaaaaaa00000000 +00000000aaaaaaaa999999999999999999999999aaaaaaaa00000000000000000000000000000000aaaaaaaa999999999999999999999999aaaaaaaa00000000 +00000000aaaaaaaa999999999999999999999999aaaaaaaa00000000000000000000000000000000aaaaaaaa999999999999999999999999aaaaaaaa00000000 +00000000aaaaaaaa999999999999999999999999aaaaaaaa00000000000000000000000000000000aaaaaaaa999999999999999999999999aaaaaaaa00000000 +00000000aaaaaaaa999999999999999999999999aaaaaaaa00000000000000000000000000000000aaaaaaaa999999999999999999999999aaaaaaaa00000000 +00000000aaaaaaaa999999999999999999999999aaaaaaaa00000000000000000000000000000000aaaaaaaa999999999999999999999999aaaaaaaa00000000 +aaaaaaaa9999999999999999999999999999999999999999aaaaaaaa0000000000000000aaaaaaaa9999999999999999999999999999999999999999aaaaaaaa +aaaaaaaa9999999999999999999999999999999999999999aaaaaaaa0000000000000000aaaaaaaa9999999999999999999999999999999999999999aaaaaaaa +aaaaaaaa9999999999999999999999999999999999999999aaaaaaaa0000000000000000aaaaaaaa9999999999999999999999999999999999999999aaaaaaaa +aaaaaaaa9999999999999999999999999999999999999999aaaaaaaa0000000000000000aaaaaaaa9999999999999999999999999999999999999999aaaaaaaa +aaaaaaaa9999999999999999999999999999999999999999aaaaaaaa0000000000000000aaaaaaaa9999999999999999999999999999999999999999aaaaaaaa +aaaaaaaa9999999999999999999999999999999999999999aaaaaaaa0000000000000000aaaaaaaa9999999999999999999999999999999999999999aaaaaaaa +aaaaaaaa9999999999999999999999999999999999999999aaaaaaaa0000000000000000aaaaaaaa9999999999999999999999999999999999999999aaaaaaaa +aaaaaaaa9999999999999999999999999999999999999999aaaaaaaa0000000000000000aaaaaaaa9999999999999999999999999999999999999999aaaaaaaa +aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa +00000000aaaaaaaaaaaaaaaa99999999999999999999999999999999999999999999999999999999999999999999999999999999aaaaaaaaaaaaaaaa00000000 +00000000aaaaaaaaaaaaaaaa99999999999999999999999999999999999999999999999999999999999999999999999999999999aaaaaaaaaaaaaaaa00000000 +00000000aaaaaaaaaaaaaaaa99999999999999999999999999999999999999999999999999999999999999999999999999999999aaaaaaaaaaaaaaaa00000000 +00000000aaaaaaaaaaaaaaaa99999999999999999999999999999999999999999999999999999999999999999999999999999999aaaaaaaaaaaaaaaa00000000 +00000000aaaaaaaaaaaaaaaa99999999999999999999999999999999999999999999999999999999999999999999999999999999aaaaaaaaaaaaaaaa00000000 +00000000aaaaaaaaaaaaaaaa99999999999999999999999999999999999999999999999999999999999999999999999999999999aaaaaaaaaaaaaaaa00000000 +00000000aaaaaaaaaaaaaaaa99999999999999999999999999999999999999999999999999999999999999999999999999999999aaaaaaaaaaaaaaaa00000000 +00000000aaaaaaaaaaaaaaaa99999999999999999999999999999999999999999999999999999999999999999999999999999999aaaaaaaaaaaaaaaa00000000 +0000000000000000aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999999999999999999999999999aaaaaaaaaaaaaaaa0000000000000000 +0000000000000000aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999999999999999999999999999aaaaaaaaaaaaaaaa0000000000000000 +0000000000000000aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999999999999999999999999999aaaaaaaaaaaaaaaa0000000000000000 +0000000000000000aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999999999999999999999999999aaaaaaaaaaaaaaaa0000000000000000 +0000000000000000aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999999999999999999999999999aaaaaaaaaaaaaaaa0000000000000000 +0000000000000000aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999999999999999999999999999aaaaaaaaaaaaaaaa0000000000000000 +0000000000000000aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999999999999999999999999999aaaaaaaaaaaaaaaa0000000000000000 +0000000000000000aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999999999999999999999999999aaaaaaaaaaaaaaaa0000000000000000 +000000000000000000000000aaaaaaaaaaaaaaaa9999999999999999aaaaaaaaaaaaaaaa9999999999999999aaaaaaaaaaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaaaaaaaaaa9999999999999999aaaaaaaaaaaaaaaa9999999999999999aaaaaaaaaaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaaaaaaaaaa9999999999999999aaaaaaaaaaaaaaaa9999999999999999aaaaaaaaaaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaaaaaaaaaa9999999999999999aaaaaaaaaaaaaaaa9999999999999999aaaaaaaaaaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaaaaaaaaaa9999999999999999aaaaaaaaaaaaaaaa9999999999999999aaaaaaaaaaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaaaaaaaaaa9999999999999999aaaaaaaaaaaaaaaa9999999999999999aaaaaaaaaaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaaaaaaaaaa9999999999999999aaaaaaaaaaaaaaaa9999999999999999aaaaaaaaaaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaaaaaaaaaa9999999999999999aaaaaaaaaaaaaaaa9999999999999999aaaaaaaaaaaaaaaa000000000000000000000000 +00000000000000000000000000000000aaaaaaaa9999999999999999aaaaaaaaaaaaaaaa9999999999999999aaaaaaaa00000000000000000000000000000000 +00000000000000000000000000000000aaaaaaaa9999999999999999aaaaaaaaaaaaaaaa9999999999999999aaaaaaaa00000000000000000000000000000000 +00000000000000000000000000000000aaaaaaaa9999999999999999aaaaaaaaaaaaaaaa9999999999999999aaaaaaaa00000000000000000000000000000000 +00000000000000000000000000000000aaaaaaaa9999999999999999aaaaaaaaaaaaaaaa9999999999999999aaaaaaaa00000000000000000000000000000000 +00000000000000000000000000000000aaaaaaaa9999999999999999aaaaaaaaaaaaaaaa9999999999999999aaaaaaaa00000000000000000000000000000000 +00000000000000000000000000000000aaaaaaaa9999999999999999aaaaaaaaaaaaaaaa9999999999999999aaaaaaaa00000000000000000000000000000000 +00000000000000000000000000000000aaaaaaaa9999999999999999aaaaaaaaaaaaaaaa9999999999999999aaaaaaaa00000000000000000000000000000000 +00000000000000000000000000000000aaaaaaaa9999999999999999aaaaaaaaaaaaaaaa9999999999999999aaaaaaaa00000000000000000000000000000000 +000000000000000000000000aaaaaaaa9999999999999999999999999999999999999999999999999999999999999999aaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaa9999999999999999999999999999999999999999999999999999999999999999aaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaa9999999999999999999999999999999999999999999999999999999999999999aaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaa9999999999999999999999999999999999999999999999999999999999999999aaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaa9999999999999999999999999999999999999999999999999999999999999999aaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaa9999999999999999999999999999999999999999999999999999999999999999aaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaa9999999999999999999999999999999999999999999999999999999999999999aaaaaaaa000000000000000000000000 +000000000000000000000000aaaaaaaa9999999999999999999999999999999999999999999999999999999999999999aaaaaaaa000000000000000000000000 +0000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000 +0000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000 +0000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000 +0000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000 +0000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000 +0000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000 +0000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000 +0000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000 +00000000aaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaa00000000 +00000000aaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaa00000000 +00000000aaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaa00000000 +00000000aaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaa00000000 +00000000aaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaa00000000 +00000000aaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaa00000000 +00000000aaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaa00000000 +00000000aaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaa00000000 +aaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaa +aaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaa +aaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaa +aaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaa +aaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaa +aaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaa +aaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaa +aaaaaaaa9999999999999999999999999999999999999999aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9999999999999999999999999999999999999999aaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +00000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa000000000000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000 +00000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa000000000000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000 +00000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa000000000000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000 +00000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa000000000000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000 +00000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa000000000000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000 +00000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa000000000000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000 +00000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa000000000000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000 +00000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa000000000000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000 +__label__ +iiiiiiiiiiiiiiiiiiiiiiiippppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiippppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiippppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiippppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiippppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiippppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiippppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiippppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiippppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiippppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiippppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiippppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiippppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiippppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiippppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiippppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiipppppppp99999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp99999999ppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiipppppppp99999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp99999999ppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiipppppppp99999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp99999999ppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiipppppppp99999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp99999999ppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiipppppppp99999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp99999999ppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiipppppppp99999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp99999999ppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiipppppppp99999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp99999999ppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiipppppppp99999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp99999999ppppppppiiiiiiiiiiiiiiii +iiiiiiiipppppppp999999999999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp999999999999999999999999ppppppppiiiiiiii +iiiiiiiipppppppp999999999999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp999999999999999999999999ppppppppiiiiiiii +iiiiiiiipppppppp999999999999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp999999999999999999999999ppppppppiiiiiiii +iiiiiiiipppppppp999999999999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp999999999999999999999999ppppppppiiiiiiii +iiiiiiiipppppppp999999999999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp999999999999999999999999ppppppppiiiiiiii +iiiiiiiipppppppp999999999999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp999999999999999999999999ppppppppiiiiiiii +iiiiiiiipppppppp999999999999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp999999999999999999999999ppppppppiiiiiiii +iiiiiiiipppppppp999999999999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp999999999999999999999999ppppppppiiiiiiii +pppppppp9999999999999999999999999999999999999999ppppppppiiiiiiiiiiiiiiiipppppppp9999999999999999999999999999999999999999pppppppp +pppppppp9999999999999999999999999999999999999999ppppppppiiiiiiiiiiiiiiiipppppppp9999999999999999999999999999999999999999pppppppp +pppppppp9999999999999999999999999999999999999999ppppppppiiiiiiiiiiiiiiiipppppppp9999999999999999999999999999999999999999pppppppp +pppppppp9999999999999999999999999999999999999999ppppppppiiiiiiiiiiiiiiiipppppppp9999999999999999999999999999999999999999pppppppp +pppppppp9999999999999999999999999999999999999999ppppppppiiiiiiiiiiiiiiiipppppppp9999999999999999999999999999999999999999pppppppp +pppppppp9999999999999999999999999999999999999999ppppppppiiiiiiiiiiiiiiiipppppppp9999999999999999999999999999999999999999pppppppp +pppppppp9999999999999999999999999999999999999999ppppppppiiiiiiiiiiiiiiiipppppppp9999999999999999999999999999999999999999pppppppp +pppppppp9999999999999999999999999999999999999999ppppppppiiiiiiiiiiiiiiiipppppppp9999999999999999999999999999999999999999pppppppp +pppppppppppppppp9999999999999999999999999999999999999999pppppppppppppppp9999999999999999999999999999999999999999pppppppppppppppp +pppppppppppppppp9999999999999999999999999999999999999999pppppppppppppppp9999999999999999999999999999999999999999pppppppppppppppp +pppppppppppppppp9999999999999999999999999999999999999999pppppppppppppppp9999999999999999999999999999999999999999pppppppppppppppp +pppppppppppppppp9999999999999999999999999999999999999999pppppppppppppppp9999999999999999999999999999999999999999pppppppppppppppp +pppppppppppppppp9999999999999999999999999999999999999999pppppppppppppppp9999999999999999999999999999999999999999pppppppppppppppp +pppppppppppppppp9999999999999999999999999999999999999999pppppppppppppppp9999999999999999999999999999999999999999pppppppppppppppp +pppppppppppppppp9999999999999999999999999999999999999999pppppppppppppppp9999999999999999999999999999999999999999pppppppppppppppp +pppppppppppppppp9999999999999999999999999999999999999999pppppppppppppppp9999999999999999999999999999999999999999pppppppppppppppp +iiiiiiiipppppppppppppppp99999999999999999999999999999999999999999999999999999999999999999999999999999999ppppppppppppppppiiiiiiii +iiiiiiiipppppppppppppppp99999999999999999999999999999999999999999999999999999999999999999999999999999999ppppppppppppppppiiiiiiii +iiiiiiiipppppppppppppppp99999999999999999999999999999999999999999999999999999999999999999999999999999999ppppppppppppppppiiiiiiii +iiiiiiiipppppppppppppppp99999999999999999999999999999999999999999999999999999999999999999999999999999999ppppppppppppppppiiiiiiii +iiiiiiiipppppppppppppppp99999999999999999999999999999999999999999999999999999999999999999999999999999999ppppppppppppppppiiiiiiii +iiiiiiiipppppppppppppppp99999999999999999999999999999999999999999999999999999999999999999999999999999999ppppppppppppppppiiiiiiii +iiiiiiiipppppppppppppppp99999999999999999999999999999999999999999999999999999999999999999999999999999999ppppppppppppppppiiiiiiii +iiiiiiiipppppppppppppppp99999999999999999999999999999999999999999999999999999999999999999999999999999999ppppppppppppppppiiiiiiii +iiiiiiiiiiiiiiiipppppppppppppppp9999999999999999999999999999999999999999999999999999999999999999ppppppppppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiipppppppppppppppp9999999999999999999999999999999999999999999999999999999999999999ppppppppppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiipppppppppppppppp9999999999999999999999999999999999999999999999999999999999999999ppppppppppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiipppppppppppppppp9999999999999999999999999999999999999999999999999999999999999999ppppppppppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiipppppppppppppppp9999999999999999999999999999999999999999999999999999999999999999ppppppppppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiipppppppppppppppp9999999999999999999999999999999999999999999999999999999999999999ppppppppppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiipppppppppppppppp9999999999999999999999999999999999999999999999999999999999999999ppppppppppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiipppppppppppppppp9999999999999999999999999999999999999999999999999999999999999999ppppppppppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiipppppppppppppppp9999999999999999pppppppppppppppp9999999999999999ppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiipppppppppppppppp9999999999999999pppppppppppppppp9999999999999999ppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiipppppppppppppppp9999999999999999pppppppppppppppp9999999999999999ppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiipppppppppppppppp9999999999999999pppppppppppppppp9999999999999999ppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiipppppppppppppppp9999999999999999pppppppppppppppp9999999999999999ppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiipppppppppppppppp9999999999999999pppppppppppppppp9999999999999999ppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiipppppppppppppppp9999999999999999pppppppppppppppp9999999999999999ppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiipppppppppppppppp9999999999999999pppppppppppppppp9999999999999999ppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp9999999999999999pppppppppppppppp9999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp9999999999999999pppppppppppppppp9999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp9999999999999999pppppppppppppppp9999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp9999999999999999pppppppppppppppp9999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp9999999999999999pppppppppppppppp9999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp9999999999999999pppppppppppppppp9999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp9999999999999999pppppppppppppppp9999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppp9999999999999999pppppppppppppppp9999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiipppppppp9999999999999999999999999999999999999999999999999999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiipppppppp9999999999999999999999999999999999999999999999999999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiipppppppp9999999999999999999999999999999999999999999999999999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiipppppppp9999999999999999999999999999999999999999999999999999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiipppppppp9999999999999999999999999999999999999999999999999999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiipppppppp9999999999999999999999999999999999999999999999999999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiipppppppp9999999999999999999999999999999999999999999999999999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiiiiiiiiiipppppppp9999999999999999999999999999999999999999999999999999999999999999ppppppppiiiiiiiiiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiippppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiippppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiippppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiippppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiippppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiippppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiippppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiii +iiiiiiiiiiiiiiiippppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiii +iiiiiiiipppppppp9999999999999999999999999999999999999999pppppppppppppppp9999999999999999999999999999999999999999ppppppppiiiiiiii +iiiiiiiipppppppp9999999999999999999999999999999999999999pppppppppppppppp9999999999999999999999999999999999999999ppppppppiiiiiiii +iiiiiiiipppppppp9999999999999999999999999999999999999999pppppppppppppppp9999999999999999999999999999999999999999ppppppppiiiiiiii +iiiiiiiipppppppp9999999999999999999999999999999999999999pppppppppppppppp9999999999999999999999999999999999999999ppppppppiiiiiiii +iiiiiiiipppppppp9999999999999999999999999999999999999999pppppppppppppppp9999999999999999999999999999999999999999ppppppppiiiiiiii +iiiiiiiipppppppp9999999999999999999999999999999999999999pppppppppppppppp9999999999999999999999999999999999999999ppppppppiiiiiiii +iiiiiiiipppppppp9999999999999999999999999999999999999999pppppppppppppppp9999999999999999999999999999999999999999ppppppppiiiiiiii +iiiiiiiipppppppp9999999999999999999999999999999999999999pppppppppppppppp9999999999999999999999999999999999999999ppppppppiiiiiiii +pppppppp9999999999999999999999999999999999999999pppppppppppppppppppppppppppppppp9999999999999999999999999999999999999999pppppppp +pppppppp9999999999999999999999999999999999999999pppppppppppppppppppppppppppppppp9999999999999999999999999999999999999999pppppppp +pppppppp9999999999999999999999999999999999999999pppppppppppppppppppppppppppppppp9999999999999999999999999999999999999999pppppppp +pppppppp9999999999999999999999999999999999999999pppppppppppppppppppppppppppppppp9999999999999999999999999999999999999999pppppppp +pppppppp9999999999999999999999999999999999999999pppppppppppppppppppppppppppppppp9999999999999999999999999999999999999999pppppppp +pppppppp9999999999999999999999999999999999999999pppppppppppppppppppppppppppppppp9999999999999999999999999999999999999999pppppppp +pppppppp9999999999999999999999999999999999999999pppppppppppppppppppppppppppppppp9999999999999999999999999999999999999999pppppppp +pppppppp9999999999999999999999999999999999999999pppppppppppppppppppppppppppppppp9999999999999999999999999999999999999999pppppppp +ppppppppppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiipppppppppppppppppppppppppppppppppppppppppppppppppppppppp +ppppppppppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiipppppppppppppppppppppppppppppppppppppppppppppppppppppppp +ppppppppppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiipppppppppppppppppppppppppppppppppppppppppppppppppppppppp +ppppppppppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiipppppppppppppppppppppppppppppppppppppppppppppppppppppppp +ppppppppppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiipppppppppppppppppppppppppppppppppppppppppppppppppppppppp +ppppppppppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiipppppppppppppppppppppppppppppppppppppppppppppppppppppppp +ppppppppppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiipppppppppppppppppppppppppppppppppppppppppppppppppppppppp +ppppppppppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiipppppppppppppppppppppppppppppppppppppppppppppppppppppppp +ppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppppppppppppppppppppppppppppppppppppppppppp +ppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppppppppppppppppppppppppppppppppppppppppppp +ppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppppppppppppppppppppppppppppppppppppppppppp +ppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppppppppppppppppppppppppppppppppppppppppppp +ppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppppppppppppppppppppppppppppppppppppppppppp +ppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppppppppppppppppppppppppppppppppppppppppppp +ppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppppppppppppppppppppppppppppppppppppppppppp +ppppppppppppppppppppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiipppppppppppppppppppppppppppppppppppppppppppppppp +iiiiiiiippppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiippppppppppppppppppppppppppppppppiiiiiiii +iiiiiiiippppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiippppppppppppppppppppppppppppppppiiiiiiii +iiiiiiiippppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiippppppppppppppppppppppppppppppppiiiiiiii +iiiiiiiippppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiippppppppppppppppppppppppppppppppiiiiiiii +iiiiiiiippppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiippppppppppppppppppppppppppppppppiiiiiiii +iiiiiiiippppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiippppppppppppppppppppppppppppppppiiiiiiii +iiiiiiiippppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiippppppppppppppppppppppppppppppppiiiiiiii +iiiiiiiippppppppppppppppppppppppppppppppiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiippppppppppppppppppppppppppppppppiiiiiiii + diff --git a/toxicinvaders_misc/labels/binicon.png b/toxicinvaders_misc/labels/binicon.png Binary files differnew file mode 100644 index 0000000..0920164 --- /dev/null +++ b/toxicinvaders_misc/labels/binicon.png diff --git a/toxicinvaders_misc/labels/cartlabel.p8 b/toxicinvaders_misc/labels/cartlabel.p8 new file mode 100644 index 0000000..0c8c1db --- /dev/null +++ b/toxicinvaders_misc/labels/cartlabel.p8 @@ -0,0 +1,280 @@ +pico-8 cartridge // http://www.pico-8.com +version 35 +__lua__ +--▶ toxic invaders cart label ◀ +--▶ ribboncable ◀ + +cls(0) +pal(15,140,1) +pal(14,3,1) +pal(13,133,1) +pal(11,139,1) +pal(10,137,1) +pal(8,136,1) +pal(4,141,1) +pal(3,131,1) +pal(0,130,1) + +function _draw() +spr(0,0,0,16,16) +end + +__gfx__ +00000444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +00004444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +00004444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +00044444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +00044444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +00044444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +00444444444444444444444444444444444444444444444444444444444aa4444444444444444aa4444444444444444444444444444444444444444444444444 +00444444444444444444444444444444444444444444444444444444444aa4444444444444444aa4444444444444444444444444444444444444444444444444 +004444444444444444444444444444444444444444444444444444444aa99aa444444444444aa99aa44444444444444444444444444444444444444444444444 +004444444444444444444444444444444444444444444444444444444aa99aa444444444444aa99aa44444444444444444444444444444444444444444444444 +0044444444444444444444444444444444444444444444444444444aa999999aa44444444aa999999aa444444444444444444444444444444444444444444444 +0044444444444444444444444444444444444444444444444444444aa999999aa44444444aa999999aa444444444444444444444444444444444444444444444 +00444444444444444444444444444444444444444444444444444aa9999999999aa4444aa9999999999aa4444444444444444444444444444444444444444444 +00444444444444444444444444444444444444444444444444444aa9999999999aa4444aa9999999999aa4444444444444444444444444444444444444444444 +00444444444444444444444444444444444444444444444444444aaaa9999999999aaaa9999999999aaaa4444444444444444444444444444444444444444444 +00044444444444444444444444444444333333333333333333333aaaa9999999999aaaa9999999999aaaa3333333333333444444444444444444444444444444 +0004444444444444444444444444444433333333333333333333333aaaa99999999999999999999aaaa333333333333333444444444444444444444444444444 +0000444444444444444444444444444433bbbbbbbbbb33bbbbbbbb3aaaa99999999999999999999aaaa3bb33bbbbbbbb33444444444444444444444444444444 +0000444444444444444444444444444433bbbbbbbbbb33bbbbbbbb334aaaa9999999999999999aaaa433bb33bbbbbbbb33444444444444444444444444444444 +00000444444444444444444444444444333333bb333333bb3333bb334aaaa9999999999999999aaaa433bb33bb33333333444444444444444444444444444444 +00000444444444444444444444444444333333bb333333bb3333bb33444aaaa9999aaaa9999aaaa44433bb33bb33333333444444444444444444444444444444 +00000044444444444444444444444444333333bb333333bb3333bb33444aaaa9999aaaa9999aaaa44433bb33bb33333333444444444444444444444444444444 +00400004444444444444444444444444333333bb333333bb3333bb3344444aa9999aaaa9999aa4444433bb33bb33333333444444444444444444444444444444 +00000022444444444444444444444444444433ee334433ee3333ee3344444aa9999aaaa9999aa4444433ee33ee33444444444444444444444444444444444444 +00000222244444444444444444444444444433ee334433ee3333ee33444aa9999999999999999aa44433ee33ee33444444444444444444444444444444444444 +00000222224444444444444444444444444433bb334433bb3333bb33444aa9999999999999999aa44433bb33bb33333333444444444444444444444444444444 +00000222222244444444444444444444444433bb334433bb3333bb334aaaaaaaaaaaaaaaaaaaaaaaa433bb33bb33333333444444444444444444444444444444 +00002222222222244444444444444444444433ee334433eeeeeeee334aaaaaaaaaaaaaaaaaaaaaaaa433ee33eeeeeeee33444444444444444444444444444444 +00002222222222224444444444444444444433ee334433eeeeeeee3aa9999999999aaaa9999999999aa3ee33eeeeeeee33444444444444444444444444444444 +0000222222222222444444444444444444443333334433333333333aa9999999999aaaa9999999999aa333333333333333444444444444444444444444444444 +00002222222222222444444444444444444433333344333333333aa9999999999aaaaaaaa9999999999aa3333333333333444444444444444444444444444444 +00022222222222222444444444444444444433333344333333333aa9999999999aaaaaaaa9999999999aa3333333333333444444444444444444444444444444 +00022222222222222244444444444444444433333344333333333aaaaaaaaaaaaaa4444aaaaaaaaaaaaaa3333333333333444444444444444444444444444444 +00022222222222444224444444444444444444444444444444444aaaaaaaaaaaaaa4444aaaaaaaaaaaaaa4444444444444444444444444444444444444444444 +00022222222224444422444444444444444444444444444444444aaaaaaaaaaaa44444444aaaaaaaaaaaa4444444444444444444444444444444444444444444 +0022222222224444444224444444444444444333334443333444433333aaaa33334443333aaaa33333aaa3333444443333444444444444444444444444444444 +00222222222444444444224444444444444443bbb34443bb334443b3b3aaa33bb34443bb334aa3bbb3a443bb3344433bb3444444444444444444444444444444 +002222222224444444444224444444444444433b334443b3b34443b3b3aaa3b3b34443b3b34aa3bb33a443b3b34443b333444444444444444444444444444444 +002222222244444442224422444444444444433e334443e3e34443eee34443eee34443e3e34443e3334443ee33444333e3444444444444444444444444444444 +00222222224444442444244224444444444443eee34443e3e344433e334443e3e34443ee3344433ee34443e3e34443ee33444444444444444444444444444444 +00222222224444444444424422444444444443333344433333444333334443333344433333444333334443333344433333444444444444444444444444444444 +00222222224444444444442442244444444443333344433333444433344443333344433334444433334443333344433334444444444444444444444444444444 +00222222224444444444442444222444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +00222222222444444444442244422222444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +0022222222244444444442224444422222222244444444444444444444444444444444444444444444444444444444444444aaa4444444444444444444444444 +00022222222244444444222244444224444422244444444444444444444444444444444444444444444444444444444444444aaa444444444444444444444444 +00022222222222444442222244444422444442224444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +0002222222222222222222224444442222444222244444e764444444444444444444444444444444444444444444444499944444444444444444444444444444 +0000222222222222222222222444442222444422224443bb66444444444444444444444444444444444444444444444449994444444444444444444444444444 +000022222222222222222222244444422444442222243ebbb74444444444444444444444444444444444444444444444449994444444444aaa44444444444444 +0000222222222222222222222444444444444422223bb3ebe344444444444444444444444444444444444444444449444444444444444444aaa4444444444444 +000002222222222222222222224444444444422223bbbb3e34444444444444444444444444444444444444444444999444444444444444444444444444444444 +00000222222222222222222222444444444442223bebbbe344444444444444444444444444444444444444444449999944444444444499944444444444444444 +000000222222222222222222222444444444222ebebebee244444444444444444444444444444444444444444444999994444444444449994444444444444444 +00000022222222222222222222224444444222ebbbebee32224444444444444444444444444444444444444ff444499944444444444444999444444444444444 +0000000222222222222222222222244442222ebbebbee3222222244444444444444444444444444444444f1f1144449444444444494444444444444444444444 +000000002222222222222222222222222222ebbbbbee322ebbe22222222224444444444444444444444fccfccff1444444444444999444444444444444444442 +00000000022222222222222222222222222ebbbbbee322ebebbbe22222224444444444444444444444fccfccccccf44444444449999944444444444444444422 +0000000000222222222222222222222222eebbbbee322ebebbebbe222222444444444444444444444fccfccf111fccf444444444999994444444444444444222 +0000000000002222222222222222222223ebbbbee332ebbbbebebe3222244444e764444444444444fccfccf11f11fccc14444444499944444444444444442222 +000000000000022222222222222222222eebbbbe333ebbbbbbebee3222244443bb664444444444441cfccf1161111cccc1114444449444444444444444422222 +000000000000022222222222222222223eebbbbe333ebbbbbbbee3322224443ebbb744444444444f1fccc11711111ccccc111144444444444444444444222222 +000000000000002222222222222222223eebbbbe333eebbbbbee333222243bb3ebe34444444444fcc1fcc1611111fcccccf1ff11444444444444444422222222 +000004444000002222222222222222223eebbbbbe3e3eebbbee333222223bbbb3e34444444444fcfcf1cc1f1111fcccccfcc11ff144444444444442222222222 +000044000400002222222222222222222eeebbbbb33e3eeeee33322222ebebbbe3444444444411ccfffccf1111fcccccfcccc1f1f44444444444222222222222 +0004044400400022222222222222222223eeebbbbb33e333333322222ebebebee44444444441fc1ff1ccccfffccccccfccccfc1f124444442222222222222222 +00044404404000222222222222222222399eeebbbbb33e3333322222ebbbebee34444444444fccf14fcfccccccccccfccccfcf11222222222222222222222222 +000040440040000222222222222222223a99eeebbbbbe3333333333ebbebbee34444444444676f144cccfccccff11fccccfcff12222222222222222222222222 +000000000400000222222222222222223aa99eeebbbbbbee33333ebbbbbbee344444442244777144fcfccccff1f1111fcfcff144222222222222222222222222 +0004000000000002222222222222222223aa993eebbbbbbbbbbbbbbbbbbee322222222222267644fcccfccf1f111fcf11cff1444422222222222222222222222 +00004044000000002222222222222292223aa933eebbbbbbbbbbbbbbbbee3222222222444444222fcccccff1222fcccf11f14444442222222222222222222222 +000000000000000022222222222229992223a3333eeebbbbbbbbbbbbbee322222222244444444441fcccff1442fcfcff11144444442222222222222222222222 +000000000000000022222222222299999222222399eeeebbbbbbbbbeee32222222224444444422221ffff144411ccff1444244444422222222222222222223ee +000000000000000022222222222229999922222aa99eeeeebbbbeeeee32222222222444444424444411114441fc1ff1244424444442222222222222222222eee +0000000000000000022222222222229992222223aa99eeeeeeeeeee322222222222244444424444444244444fccf122222224444442222222222222222222eee +00000000000000000222222222222229222222223aa99eeeeeeee3222222222222224444442444444442444676f1442222244444442222222222222222220eee +000040000000000002222222999222222222292223aa3233333322222222222222224444442444444442444777144444444444444222222222222222222003ee +00000000000000000222222229992222222299922233222222222222222222222222444444424444444424467644444444444444422222222222222222000000 +00000000000000000022222222999222222999992222222222222222222222222222444444442224444424444444444444444444222222222222222200000000 +00000000000000000022222222222222222299999222222222222222222222222222444444444444444422444444444444444442222222222222222000000000 +000000000000000000022aaa22222222222229992222222222222222222222222222244444444444444422244444444444444422222222223eee3003eee30000 +0000000000000000000022aaa222222222222292222222222222222222222222222224444444444444422222244444444444222222222222eeeee00eeeee3eee +0000000000000000000000222222222999222222222222222222222222222222222222444444444444422222222444444422222222222222eeeee00eeeeeeeee +0000000000000000000000002222222299922222222222222222222222222222222222244444444444222222222222222222222222222220eeeee00eeeeeeeee +00000000000000000000000022222222299922222222222222222222222222222222222224444444222222222222222222222222222200003eee3003eeeeeeee +000000000000000000000000002222222222222222222222222222222222222222222222222222222222222222222222222222222200000000000003eeeeeeee +0000000222220000000000000022aaa2222222222222222222222222222222222222222222222222222222222222222222222222220000000000000eeeeeeeee +00000222222222000000000000022aaa222222222222222222222222222222222222222222222222222222222222222222222222220000000000003eeeeeeeee +0000222222222220000000000002222222222222222222222222222000000222222222222222222222222222222222220000002222200040000000eeeeeeeeee +0000222222222222000000000000222222222222222222222222200222200022220002222222222222222222222222002222000222200000000003eeeeeeeeee +000222222000222200000000000022222222222222222222222202222222000222000000222222222222222222222022222220002220000000000eeeeeeeeeee +000222220222022220000000000002222222222222222222222202222222200222000000000000022222222222222022222222002220000003300eeeeeeeeeee +00022222022220222000000000000222222222222222222222220222222220022200000000000000000000222222202222222200222000003ee30eeeeeeeeeee +00022222022220222200000000000022222222222222222222220220222220022200000000000000000000222222202202222200222000003ee30eeeeeeeeeee +000222222022202222000000000000022222222222222222222220022222200222000000004040000000002222222200222222002220000003300eeeeeeeeeee +000222222222220222200000000000002222222222220222222222222222200222000000000000000000002222222222222222002220000000000eeeeeeeeeee +0002222222222202222000000000000000222222222000222222222222220002200000004004440000000002222222222222200022000000000003eeeeeeeeee +0000222222222202222000002222000000002222000000222222222222200022200000004044044000000002222222222222000222000000000000eeeeeeeeee +00002222222222022222000222222000000000000000000222222222220000220000000040444404000000002222222222200002200000000000003eeeeeeeee +000002222222200222220022222222000000000000000000222222222000022200000000044040040000000002222222220000222000000000000003eeeeeeee +0000002222220002222220222222220000000000000000000022222000002220000000000000004000000000000222220000022200000000000000000eeeeeee +000000000000000222222002222022200000000000000000000000000000220000000000004040000000000000000000000002200000003e300000003eeeeeee +00000000000000002222220022202220000000000000000000000000020000000000000000000000000000000000000000200000000000eee00003eeeeeeeeee +000000000000000022222220000222200000000000000000000000002220000000000000000000000000400000000000022200000000003e3003eeeeeeeeeeee +000000000000000002222222222222000000000000000000000000000200000000000000330000000000000000000000002000000000000000eeeeeeeeeeeeee +000000000000000000222222222222000000000000000000000000000000000000000003ee300000000000000000000000000000000000000eeeeeeeeeeeeeee +000000000000000000022222222220000000000000000000000000000000000000000003ee30000000000000000000000000000000000000eeeeeeeeeeeeeeee +0000000000000000000002222222000000000000000000000000000000000003e30000003303ee3000000003ee30000000000000003eee3eeeeeeeeeeeeeeeee +0000000000000000000000000000000000000004000000033003e3000000000eee000000000eeee00000003eeee300000000000000eeeeeeeeeeeeeeeeeeeeee +00000000004404000000000000000000000000000000003ee30eee0000000003e300000003eeeee0000000eeeeee00000000000000eeeeeeeeeeeeeeeeeeeeee +00000000000000400000000000000000000000000000003ee303e3000000000000000003eeeeeeee300000eeeeee00000000000000eeeeeeeeeeeeeeeeeeeeee +0000000040000000000000000000000000040000000000033000000000000000003eee3eeeeeeeeeee00003eeee3000000000000003eeeeeeeeeeeeeeeeeeeee +000000040044040000000000000000000000000000000000000000000000000000eeeeeeeeeeeeeeeee00003ee30000000000000003eeeeeeeeeeeeeeeeeeeee +000000040440444000000000000000000000000000000000000000000000000000eeeeeeeeeeeeeeeeee00000000000000003ee300eeeeeeeeeeeeeeeeeeeeee +000000040044404000000000000000000000000000000000000003eeeee3000000eeeeeeeeeeeeeeeeee300000000000003eeeeee3eeeeeeeeeeeeeeeeeeeeee +000000004000440000000000000000000000000000000003eeee3eeeeeeee0000eeeeeeeeeeeeeeeeeeee00000003eee33eeeeeeeeeeeeeeeeeeeeeeeeeeeeee +0000000004444000000000000000000000000000000000eeeeeeeeeeeeeeee33eeeeeeeeeeeeeeeeeeeee3000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +0000000000000000000000000000000000000000000003eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +000400000000000000000030000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee300000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +0000000000000000000003e3000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000003eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +000000000000000000000030000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee30003eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +00000000000000000000300000000000003e300000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +00000000000000000003e3000003eee300eee000000003eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +000000000400000000003000000eeeee003e30000003eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +000000000000000000000000000eeeee0000000003eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +000000000000000000000000000eeeee000000003eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +0000000000000000000000000003eee300000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +0000000000000000000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +__label__ +iiiiittttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiiitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiiitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiittttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiittttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiittttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttppttttttttttttttttppttttttttttttttttttttttttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttppttttttttttttttttppttttttttttttttttttttttttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttpp99ppttttttttttttpp99ppttttttttttttttttttttttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttpp99ppttttttttttttpp99ppttttttttttttttttttttttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttpp999999ppttttttttpp999999ppttttttttttttttttttttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttpp999999ppttttttttpp999999ppttttttttttttttttttttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttpp9999999999ppttttpp9999999999ppttttttttttttttttttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttpp9999999999ppttttpp9999999999ppttttttttttttttttttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttpppp9999999999pppp9999999999ppppttttttttttttttttttttttttttttttttttttttttttt +iiitttttttttttttttttttttttttttttjjjjjjjjjjjjjjjjjjjjjpppp9999999999pppp9999999999ppppjjjjjjjjjjjjjtttttttttttttttttttttttttttttt +iiitttttttttttttttttttttttttttttjjjjjjjjjjjjjjjjjjjjjjjpppp99999999999999999999ppppjjjjjjjjjjjjjjjtttttttttttttttttttttttttttttt +iiiittttttttttttttttttttttttttttjjrrrrrrrrrrjjrrrrrrrrjpppp99999999999999999999ppppjrrjjrrrrrrrrjjtttttttttttttttttttttttttttttt +iiiittttttttttttttttttttttttttttjjrrrrrrrrrrjjrrrrrrrrjjtpppp9999999999999999pppptjjrrjjrrrrrrrrjjtttttttttttttttttttttttttttttt +iiiiitttttttttttttttttttttttttttjjjjjjrrjjjjjjrrjjjjrrjjtpppp9999999999999999pppptjjrrjjrrjjjjjjjjtttttttttttttttttttttttttttttt +iiiiitttttttttttttttttttttttttttjjjjjjrrjjjjjjrrjjjjrrjjtttpppp9999pppp9999pppptttjjrrjjrrjjjjjjjjtttttttttttttttttttttttttttttt +iiiiiittttttttttttttttttttttttttjjjjjjrrjjjjjjrrjjjjrrjjtttpppp9999pppp9999pppptttjjrrjjrrjjjjjjjjtttttttttttttttttttttttttttttt +iitiiiitttttttttttttttttttttttttjjjjjjrrjjjjjjrrjjjjrrjjtttttpp9999pppp9999pptttttjjrrjjrrjjjjjjjjtttttttttttttttttttttttttttttt +iiiiii22ttttttttttttttttttttttttttttjj33jjttjj33jjjj33jjtttttpp9999pppp9999pptttttjj33jj33jjtttttttttttttttttttttttttttttttttttt +iiiii2222tttttttttttttttttttttttttttjj33jjttjj33jjjj33jjtttpp9999999999999999pptttjj33jj33jjtttttttttttttttttttttttttttttttttttt +iiiii22222ttttttttttttttttttttttttttjjrrjjttjjrrjjjjrrjjtttpp9999999999999999pptttjjrrjjrrjjjjjjjjtttttttttttttttttttttttttttttt +iiiii2222222ttttttttttttttttttttttttjjrrjjttjjrrjjjjrrjjtpppppppppppppppppppppppptjjrrjjrrjjjjjjjjtttttttttttttttttttttttttttttt +iiii22222222222tttttttttttttttttttttjj33jjttjj33333333jjtpppppppppppppppppppppppptjj33jj33333333jjtttttttttttttttttttttttttttttt +iiii222222222222ttttttttttttttttttttjj33jjttjj33333333jpp9999999999pppp9999999999ppj33jj33333333jjtttttttttttttttttttttttttttttt +iiii222222222222ttttttttttttttttttttjjjjjjttjjjjjjjjjjjpp9999999999pppp9999999999ppjjjjjjjjjjjjjjjtttttttttttttttttttttttttttttt +iiii2222222222222tttttttttttttttttttjjjjjjttjjjjjjjjjpp9999999999pppppppp9999999999ppjjjjjjjjjjjjjtttttttttttttttttttttttttttttt +iii22222222222222tttttttttttttttttttjjjjjjttjjjjjjjjjpp9999999999pppppppp9999999999ppjjjjjjjjjjjjjtttttttttttttttttttttttttttttt +iii222222222222222ttttttttttttttttttjjjjjjttjjjjjjjjjppppppppppppppttttppppppppppppppjjjjjjjjjjjjjtttttttttttttttttttttttttttttt +iii22222222222ttt22ttttttttttttttttttttttttttttttttttppppppppppppppttttppppppppppppppttttttttttttttttttttttttttttttttttttttttttt +iii2222222222ttttt22tttttttttttttttttttttttttttttttttppppppppppppttttttttppppppppppppttttttttttttttttttttttttttttttttttttttttttt +ii2222222222ttttttt22ttttttttttttttttjjjjjtttjjjjttttjjjjjppppjjjjtttjjjjppppjjjjjpppjjjjtttttjjjjtttttttttttttttttttttttttttttt +ii222222222ttttttttt22tttttttttttttttjrrrjtttjrrjjtttjrjrjpppjjrrjtttjrrjjtppjrrrjpttjrrjjtttjjrrjtttttttttttttttttttttttttttttt +ii222222222tttttttttt22ttttttttttttttjjrjjtttjrjrjtttjrjrjpppjrjrjtttjrjrjtppjrrjjpttjrjrjtttjrjjjtttttttttttttttttttttttttttttt +ii22222222ttttttt222tt22tttttttttttttjj3jjtttj3j3jtttj333jtttj333jtttj3j3jtttj3jjjtttj33jjtttjjj3jtttttttttttttttttttttttttttttt +ii22222222tttttt2ttt2tt22ttttttttttttj333jtttj3j3jtttjj3jjtttj3j3jtttj33jjtttjj33jtttj3j3jtttj33jjtttttttttttttttttttttttttttttt +ii22222222ttttttttttt2tt22tttttttttttjjjjjtttjjjjjtttjjjjjtttjjjjjtttjjjjjtttjjjjjtttjjjjjtttjjjjjtttttttttttttttttttttttttttttt +ii22222222tttttttttttt2tt22ttttttttttjjjjjtttjjjjjttttjjjttttjjjjjtttjjjjtttttjjjjtttjjjjjtttjjjjttttttttttttttttttttttttttttttt +ii22222222tttttttttttt2ttt222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +ii222222222ttttttttttt22ttt22222tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +ii222222222tttttttttt222ttttt222222222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttpppttttttttttttttttttttttttt +iii222222222tttttttt2222ttttt22ttttt222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttppptttttttttttttttttttttttt +iii22222222222ttttt22222tttttt22ttttt222tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iii222222222222222222222tttttt2222ttt2222ttttt376ttttttttttttttttttttttttttttttttttttttttttttttt999ttttttttttttttttttttttttttttt +iiii222222222222222222222ttttt2222tttt2222tttjrr66ttttttttttttttttttttttttttttttttttttttttttttttt999tttttttttttttttttttttttttttt +iiii222222222222222222222tttttt22ttttt22222tj3rrr7tttttttttttttttttttttttttttttttttttttttttttttttt999ttttttttttppptttttttttttttt +iiii222222222222222222222ttttttttttttt2222jrrj3r3jttttttttttttttttttttttttttttttttttttttttttt9ttttttttttttttttttpppttttttttttttt +iiiii222222222222222222222ttttttttttt2222jrrrrj3jttttttttttttttttttttttttttttttttttttttttttt999ttttttttttttttttttttttttttttttttt +iiiii222222222222222222222ttttttttttt222jr3rrr3jttttttttttttttttttttttttttttttttttttttttttt99999tttttttttttt999ttttttttttttttttt +iiiiii222222222222222222222ttttttttt2223r3r3r332tttttttttttttttttttttttttttttttttttttttttttt99999tttttttttttt999tttttttttttttttt +iiiiii2222222222222222222222ttttttt2223rrr3r33j222tttttttttttttttttttttttttttttttttttttsstttt999tttttttttttttt999ttttttttttttttt +iiiiiii2222222222222222222222tttt22223rr3rr33j2222222tttttttttttttttttttttttttttttttts1s11tttt9tttttttttt9tttttttttttttttttttttt +iiiiiiii22222222222222222222222222223rrrrr33j223rr32222222222ttttttttttttttttttttttsccsccss1tttttttttttt999tttttttttttttttttttt2 +iiiiiiiii222222222222222222222222223rrrrr33j223r3rrr32222222ttttttttttttttttttttttsccsccccccstttttttttt99999tttttttttttttttttt22 +iiiiiiiiii22222222222222222222222233rrrr33j223r3rr3rr3222222tttttttttttttttttttttsccsccs111sccsttttttttt99999tttttttttttttttt222 +iiiiiiiiiiii222222222222222222222j3rrrr33jj23rrrr3r3r3j2222ttttt376tttttttttttttsccsccs11s11sccc1tttttttt999tttttttttttttttt2222 +iiiiiiiiiiiii2222222222222222222233rrrr3jjj3rrrrrr3r33j2222ttttjrr66tttttttttttt1csccs1161111cccc111tttttt9tttttttttttttttt22222 +iiiiiiiiiiiii2222222222222222222j33rrrr3jjj3rrrrrrr33jj2222tttj3rrr7ttttttttttts1sccc11711111ccccc1111tttttttttttttttttttt222222 +iiiiiiiiiiiiii222222222222222222j33rrrr3jjj33rrrrr33jjj2222tjrrj3r3jttttttttttscc1scc1611111scccccs1ss11tttttttttttttttt22222222 +iiiiittttiiiii222222222222222222j33rrrrr3j3j33rrr33jjj22222jrrrrj3jttttttttttscscs1cc1s1111scccccscc11ss1ttttttttttttt2222222222 +iiiittiiitiiii2222222222222222222333rrrrrjj3j33333jjj222223r3rrr3jtttttttttt11ccsssccs1111scccccscccc1s1sttttttttttt222222222222 +iiititttiitiii2222222222222222222j333rrrrrjj3jjjjjjj222223r3r3r33tttttttttt1sc1ss1ccccsssccccccsccccsc1s12tttttt2222222222222222 +iiitttittitiii222222222222222222j99333rrrrrjj3jjjjj222223rrr3r33jttttttttttsccs1tscsccccccccccsccccscs11222222222222222222222222 +iiiitittiitiiii22222222222222222jp99333rrrrr3jjjjjjjjjj3rr3rr33jtttttttttt676s1ttcccsccccss11sccccscss12222222222222222222222222 +iiiiiiiiitiiiii22222222222222222jpp99333rrrrrr33jjjjj3rrrrrr33jttttttt22tt7771ttscsccccss1s1111scscss1tt222222222222222222222222 +iiitiiiiiiiiiii222222222222222222jpp99j33rrrrrrrrrrrrrrrrrr33j222222222222676ttscccsccs1s111scs11css1tttt22222222222222222222222 +iiiitittiiiiiiii222222222222229222jpp9jj33rrrrrrrrrrrrrrrr33j222222222tttttt222scccccss1222scccs11s1tttttt2222222222222222222222 +iiiiiiiiiiiiiiii2222222222222999222jpjjjj333rrrrrrrrrrrrr33j222222222tttttttttt1scccss1tt2scscss111ttttttt2222222222222222222222 +iiiiiiiiiiiiiiii22222222222299999222222j993333rrrrrrrrr333j222222222tttttttt22221ssss1ttt11ccss1ttt2tttttt2222222222222222222j33 +iiiiiiiiiiiiiiii22222222222229999922222pp9933333rrrr33333j2222222222ttttttt2ttttt1111ttt1sc1ss12ttt2tttttt2222222222222222222333 +iiiiiiiiiiiiiiiii2222222222222999222222jpp9933333333333j222222222222tttttt2ttttttt2tttttsccs12222222tttttt2222222222222222222333 +iiiiiiiiiiiiiiiii22222222222222922222222jpp9933333333j22222222222222tttttt2tttttttt2ttt676s1tt22222ttttttt222222222222222222i333 +iiiitiiiiiiiiiiii222222299922222222229222jppj2jjjjjj2222222222222222tttttt2tttttttt2ttt7771tttttttttttttt222222222222222222iij33 +iiiiiiiiiiiiiiiii2222222299922222222999222jj222222222222222222222222ttttttt2tttttttt2tt676ttttttttttttttt22222222222222222iiiiii +iiiiiiiiiiiiiiiiii22222222999222222999992222222222222222222222222222tttttttt222ttttt2ttttttttttttttttttt2222222222222222iiiiiiii +iiiiiiiiiiiiiiiiii22222222222222222299999222222222222222222222222222tttttttttttttttt22ttttttttttttttttt2222222222222222iiiiiiiii +iiiiiiiiiiiiiiiiiii22ppp222222222222299922222222222222222222222222222ttttttttttttttt222ttttttttttttttt2222222222j333jiij333jiiii +iiiiiiiiiiiiiiiiiiii22ppp22222222222229222222222222222222222222222222tttttttttttttt222222ttttttttttt22222222222233333ii33333j333 +iiiiiiiiiiiiiiiiiiiiii222222222999222222222222222222222222222222222222ttttttttttttt22222222ttttttt2222222222222233333ii333333333 +iiiiiiiiiiiiiiiiiiiiiiii22222222999222222222222222222222222222222222222ttttttttttt22222222222222222222222222222i33333ii333333333 +iiiiiiiiiiiiiiiiiiiiiiii2222222229992222222222222222222222222222222222222ttttttt2222222222222222222222222222iiiij333jiij33333333 +iiiiiiiiiiiiiiiiiiiiiiiiii22222222222222222222222222222222222222222222222222222222222222222222222222222222iiiiiiiiiiiiij33333333 +iiiiiii22222iiiiiiiiiiiiii22ppp222222222222222222222222222222222222222222222222222222222222222222222222222iiiiiiiiiiiii333333333 +iiiii222222222iiiiiiiiiiiii22ppp22222222222222222222222222222222222222222222222222222222222222222222222222iiiiiiiiiiiij333333333 +iiii22222222222iiiiiiiiiiii2222222222222222222222222222iiiiii22222222222222222222222222222222222iiiiii22222iiitiiiiiii3333333333 +iiii222222222222iiiiiiiiiiii2222222222222222222222222ii2222iii2222iii2222222222222222222222222ii2222iii2222iiiiiiiiiij3333333333 +iii222222iii2222iiiiiiiiiiii222222222222222222222222i2222222iii222iiiiii222222222222222222222i2222222iii222iiiiiiiiii33333333333 +iii22222i222i2222iiiiiiiiiiii22222222222222222222222i22222222ii222iiiiiiiiiiiii22222222222222i22222222ii222iiiiiijjii33333333333 +iii22222i2222i222iiiiiiiiiiii22222222222222222222222i22222222ii222iiiiiiiiiiiiiiiiiiii2222222i22222222ii222iiiiij33ji33333333333 +iii22222i2222i2222iiiiiiiiiiii2222222222222222222222i22i22222ii222iiiiiiiiiiiiiiiiiiii2222222i22i22222ii222iiiiij33ji33333333333 +iii222222i222i2222iiiiiiiiiiiii2222222222222222222222ii222222ii222iiiiiiiititiiiiiiiii22222222ii222222ii222iiiiiijjii33333333333 +iii22222222222i2222iiiiiiiiiiiii222222222222i2222222222222222ii222iiiiiiiiiiiiiiiiiiii2222222222222222ii222iiiiiiiiii33333333333 +iii22222222222i2222iiiiiiiiiiiiiii222222222iii22222222222222iii22iiiiiiitiitttiiiiiiiii22222222222222iii22iiiiiiiiiiij3333333333 +iiii2222222222i2222iiiii2222iiiiiiii2222iiiiii2222222222222iii222iiiiiiitittittiiiiiiii2222222222222iii222iiiiiiiiiiii3333333333 +iiii2222222222i22222iii222222iiiiiiiiiiiiiiiiii22222222222iiii22iiiiiiiitittttitiiiiiiii22222222222iiii22iiiiiiiiiiiiij333333333 +iiiii22222222ii22222ii22222222iiiiiiiiiiiiiiiiii222222222iiii222iiiiiiiiittitiitiiiiiiiii222222222iiii222iiiiiiiiiiiiiij33333333 +iiiiii222222iii222222i22222222iiiiiiiiiiiiiiiiiiii22222iiiii222iiiiiiiiiiiiiiitiiiiiiiiiiii22222iiiii222iiiiiiiiiiiiiiiii3333333 +iiiiiiiiiiiiiii222222ii2222i222iiiiiiiiiiiiiiiiiiiiiiiiiiiii22iiiiiiiiiiiititiiiiiiiiiiiiiiiiiiiiiiii22iiiiiiij3jiiiiiiij3333333 +iiiiiiiiiiiiiiii222222ii222i222iiiiiiiiiiiiiiiiiiiiiiiiii2iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii2iiiiiiiiiii333iiiij3333333333 +iiiiiiiiiiiiiiii2222222iiii2222iiiiiiiiiiiiiiiiiiiiiiiii222iiiiiiiiiiiiiiiiiiiiiiiiitiiiiiiiiiiii222iiiiiiiiiij3jiij333333333333 +iiiiiiiiiiiiiiiii2222222222222iiiiiiiiiiiiiiiiiiiiiiiiiii2iiiiiiiiiiiiiijjiiiiiiiiiiiiiiiiiiiiiiii2iiiiiiiiiiiiiii33333333333333 +iiiiiiiiiiiiiiiiii222222222222iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij33jiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii333333333333333 +iiiiiiiiiiiiiiiiiii2222222222iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij33jiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii3333333333333333 +iiiiiiiiiiiiiiiiiiiii2222222iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij3jiiiiiijjij33jiiiiiiiij33jiiiiiiiiiiiiiiij333j33333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiitiiiiiiijjiij3jiiiiiiiii333iiiiiiiii3333iiiiiiij3333jiiiiiiiiiiiiii3333333333333333333333 +iiiiiiiiiittitiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij33ji333iiiiiiiiij3jiiiiiiij33333iiiiiii333333iiiiiiiiiiiiii3333333333333333333333 +iiiiiiiiiiiiiitiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij33jij3jiiiiiiiiiiiiiiiiij33333333jiiiii333333iiiiiiiiiiiiii3333333333333333333333 +iiiiiiiitiiiiiiiiiiiiiiiiiiiiiiiiiitiiiiiiiiiiijjiiiiiiiiiiiiiiiiij333j33333333333iiiij3333jiiiiiiiiiiiiiij333333333333333333333 +iiiiiiitiittitiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii33333333333333333iiiij33jiiiiiiiiiiiiiiij333333333333333333333 +iiiiiiitittitttiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii333333333333333333iiiiiiiiiiiiiiiij33jii3333333333333333333333 +iiiiiiitiitttitiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij33333jiiiiii333333333333333333jiiiiiiiiiiiiij333333j3333333333333333333333 +iiiiiiiitiiittiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij3333j33333333iiii33333333333333333333iiiiiiij333jj333333333333333333333333333333 +iiiiiiiiittttiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii3333333333333333jj333333333333333333333jiiiiii333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij3333333333333333333333333333333333333333iiiiii333333333333333333333333333333333333 +iiitiiiiiiiiiiiiiiiiiijiiiiiiiiiiiiiiiiiiiiii33333333333333333333333333333333333333333jiiiii333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiij3jiiiiiiiiiiiiiiiiiiiii333333333333333333333333333333333333333333iiiiij33333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiijiiiiiiiiiiiiiiiiiiiiii333333333333333333333333333333333333333333jiiij333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiijiiiiiiiiiiiiij3jiiiiiiii33333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiij3jiiiiij333jii333iiiiiiiij3333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiitiiiiiiiiiijiiiiii33333iij3jiiiiiij333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiii33333iiiiiiiiij33333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiii33333iiiiiiiij333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiiij333jiiiiiiii3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 + diff --git a/toxicinvaders_misc/labels/cartlabel.png b/toxicinvaders_misc/labels/cartlabel.png Binary files differnew file mode 100644 index 0000000..c43b498 --- /dev/null +++ b/toxicinvaders_misc/labels/cartlabel.png diff --git a/toxicinvaders_misc/labels/musiclabel.p8 b/toxicinvaders_misc/labels/musiclabel.p8 new file mode 100644 index 0000000..d928ec5 --- /dev/null +++ b/toxicinvaders_misc/labels/musiclabel.p8 @@ -0,0 +1,280 @@ +pico-8 cartridge // http://www.pico-8.com +version 35 +__lua__ +--▶toxic invaders ost cart label◀ +--▶ ribboncable ◀ + +cls(0) +pal(15,140,1) +pal(14,3,1) +pal(13,133,1) +pal(11,139,1) +pal(10,137,1) +pal(8,136,1) +pal(4,141,1) +pal(3,131,1) +pal(0,130,1) + +function _draw() +spr(0,0,0,16,16) +end + +__gfx__ +00000444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +00004444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +00004444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +00044444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +00044444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +00044444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +00444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +004444444444444444444444444444444444444444444444444444444444444444444444444444444aa4444444444444444aa444444444444444444444444444 +004444444444444444444444444444444444444444444444444444444444444444444444444444444aa4444444444444444aa444444444444444444444444444 +0044444444444444444444444444444444444444444444444444444444444444444444444444444aa99aa444444444444aa99aa4444444444444444444444444 +0044444444444444444444444444444444444444444444444444444444444444444444444444444aa99aa444444444444aa99aa4444444444444444444444444 +00444444444444444444444444444444444444444444444444444444444444444444444444444aa999999aa44444444aa999999aa44444444444444444444444 +00444444444444444444444444444444444444444444444444444444444444444444444444444aa999999aa44444444aa999999aa44444444444444444444444 +004444444444444444444444444444444444444444444444444444444444444444444444444aa9999999999aa4444aa9999999999aa444444444444444444444 +004444444444444444444444444444444444444444444444444444444444444444444444444aa9999999999aa4444aa9999999999aa444444444444444444444 +000444444444444444444444444444444444444444444444444444444444444444444444444aaaa9999999999aaaa9999999999aaaa444444444444444444444 +000444444444444444444444444444444444444444444444444444333333333333333333333aaaa9999999999aaaa9999999999aaaa333333333333344444444 +00004444444444444444444444444444444444444444444444444433333333333333333333333aaaa99999999999999999999aaaa33333333333333344444444 +00004444444444444444444444444444444444444444444444444433bbbbbbbbbb33bbbbbbbb3aaaa99999999999999999999aaaa3bb33bbbbbbbb3344444444 +00000444444444444444444444444444444444444444444444444433bbbbbbbbbb33bbbbbbbb334aaaa9999999999999999aaaa433bb33bbbbbbbb3344444444 +000004444444444444444444444444444444444444444444444444333333bb333333bb3333bb334aaaa9999999999999999aaaa433bb33bb3333333344444444 +000000444444444444444444444444444444444444444444444444333333bb333333bb3333bb33444aaaa9999aaaa9999aaaa44433bb33bb3333333344444444 +004000044444444444444444444444444444444444444444444444333333bb333333bb3333bb33444aaaa9999aaaa9999aaaa44433bb33bb3333333344444444 +000000224444444444444444444444444444444444444444444444333333bb333333bb3333bb3344444aa9999aaaa9999aa4444433bb33bb3333333344444444 +000002222444444444444444444444444444444444444444444444444433ee334433ee3333ee3344444aa9999aaaa9999aa4444433ee33ee3344444444444444 +000002222244444444444444444444444444444444444444444444444433ee334433ee3333ee33444aa9999999999999999aa44433ee33ee3344444444444444 +000002222222444444444444444444444444444444444444444444444433bb334433bb3333bb33444aa9999999999999999aa44433bb33bb3333333344444444 +000022222222222444444444444444444444444444444444444444444433bb334433bb3333bb334aaaaaaaaaaaaaaaaaaaaaaaa433bb33bb3333333344444444 +000022222222222244444444444444444444444444444444444444444433ee334433eeeeeeee334aaaaaaaaaaaaaaaaaaaaaaaa433ee33eeeeeeee3344444444 +000022222222222244444444444444444444444444444444444444444433ee334433eeeeeeee3aa9999999999aaaa9999999999aa3ee33eeeeeeee3344444444 +00002222222222222444444444444444444444444444444444444444443333334433333333333aa9999999999aaaa9999999999aa33333333333333344444444 +000222222222222224444444444444444444444444444444444444444433333344333333333aa9999999999aaaaaaaa9999999999aa333333333333344444444 +000222222222222222444444444444444444444444444444444444444433333344333333333aa9999999999aaaaaaaa9999999999aa333333333333344444444 +000222222222224442244444444444444444444444444444444444444433333344333333333aaaaaaaaaaaaaa4444aaaaaaaaaaaaaa333333333333344444444 +000222222222244444224444444444444444444444444444444444444444444444444444444aaaaaaaaaaaaaa4444aaaaaaaaaaaaaa444444444444444444444 +002222222222444444422444444444444444444444444444444444444444444444444444444aaaaaaaaaaaa44444444aaaaaaaaaaaa444444444444444444444 +00222222222444444444224444444444444444444444444444444444444333334443333444433333aaaa33334443333aaaa33333aaa333344444333344444444 +002222222224444444444224444444444444444444444444444444444443bbb34443bb334443b3b3aaa33bb34443bb334aa3bbb3a443bb3344433bb344444444 +0022222222444444422244224444444444444444444444444444444444433b334443b3b34443b3b3aaa3b3b34443b3b34aa3bb33a443b3b34443b33344444444 +0022222222444444244424422444444444444444444444444444444444433e334443e3e34443eee34443eee34443e3e34443e3334443ee33444333e344444444 +002222222244444444444244224444444444444444444444444444444443eee34443e3e344433e334443e3e34443ee3344433ee34443e3e34443ee3344444444 +00222222224444444444442442244444444444444444444444444444444333334443333344433333444333334443333344433333444333334443333344444444 +00222222224444444444442444222444444444444444444444444444444333334443333344443334444333334443333444443333444333334443333444444444 +00222222222444444444442244422222444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +00222222222444444444422244444222222222444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 +00022222222244444444222244444224444422244444444444444444444442222222222222444422222222222222222222222222222222222222224444444444 +00022222222222444442222244444422444442224444444444444444444442999292929992444229922992929299229922999299929992299292924444444444 +00022222222222222222222244444422224442222444444444444444444442292292929222444292229292929292929292292292929292922292924444444444 +000022222222222222222222244444222244442222444444444444444444422a22aaa2aa224442aaa2a2a2a2a2a2a2a2a22a22aa22aaa2a222aa224444444444 +000022222222222222222222244444422444442222244444444444444444442a22a2a2a222444222a2a2a2a2a2a2a2a2a22a22a2a2a2a2a222a2a24444444444 +000022222222222222222222244444444444442222224444444444444444442a22a2a2aaa24442aa22aa222aa2a2a2aaa22a22a2a2a2a22aa2a2a24444444444 +00000222222222222222222222444444444442222222244444444444444444222222222222444222222222222222222222222222222222222222224444444444 +00000222222222222222222222444444444442222222224444444444444444222222222222444222222224222222222222222222222222222222224444444444 +00000022222222222222222222244444444422222222222244444444444444444444444444444444444444444444444444444444444444444444444444444444 +00000022222222222222222222224444444222222222222222444444444444444444444444444444444444444444444444444444444444444444444444444444 +00000002222222222222222222222444422222222222222222222444444444444444444444444444444444444444444444444444444444444444444444444444 +00000000222222222222222222222222222222222222222222222222222224444444444444444444444444444444444444444444444444444444444444444442 +00000000022222222222222222222222222222222222222222222222222244444444444444444444444444444444444444444444444444444444444444444422 +00000000002222222222222222222222222222222222222222222222222244444444444444444444444444444444444444444444444444444444444444444222 +00000000000022222222222222222222222222222222222222222222222444444444444444444444444444444444444444444444444444444444444444442222 +00000000000002222222222222222222222222222222222222222222222444444444444444444444444444444444444444444444444444444444444444422222 +00000000000002222222222222222222222222222222222222222222222444444444444444444444444444444444444444444444444444444444444444222222 +00000000000000222222222222222222222222222222222222222222222444444444444444444444444444444444444444444444444444444444444422222222 +00000444400000222222222222222222222222222222222222222222222444444444444444444444444444444444444444444444444444444444442222222222 +00004400040000222222222222222222222222222222222222222222222444444444444444444444444444444444444444444444444444444444222222222222 +00040444004000222222222222222222222222222222222222222222222244444444444444444444444444444444444444222222224444442222222222222222 +00044404404000222222222222222222222222222222222222222222222244444444444444444444444444444444442222222222222222222222222222222222 +00004044004000022222222222222222222222222222222222222222222224444444444444444444444444444442222224444442222222222222222222222222 +00000000040000022222222222222222222222222222222222222222222222244444442244444444444444442222222244444444222222222222222222222222 +00040000000000022222222222222222222222222222222222222222222222222222222222222444444222222222222444444444422222222222222222222222 +00004044000000002222222222222222222222222222222222222222222222222222224444442222222244422222222444444444442222222222222222222222 +00000000000000002222222222222222222222222222222222222222222222222222244444444444444444444222222444244444442222222222222222222222 +000000000000000022222222222222222222222222222222222222222222222222224444444422222444444444222224444244444422222222222222222223ee +00000000000000002222222222222222222222222222222222222222222222222222444444424444424444444442222244424444442222222222222222222eee +00000000000000000222222222222222222222222222222222222222222222222222444444244444442444444444222222224444442222222222222222222eee +00000000000000000222222222222222222222222222222222222222222222222222444444244444444244444444442222244444442222222222222222220eee +000040000000000002222222222222222222222222222222222222222222222222224444442444444442444444444444444444444222222222222222222003ee +00000000000000000222222222222222222222222222222222222222222222222222444444424444444424444444444444444444422222222222222222000000 +00000000000000000022222222222222222222222222222222222222222222222222444444442224444424444444444444444444222222222222222200000000 +00000000000000000022222222222222222222222222222222222222222222222222444444444444444422444444444444444442222222222222222000000000 +00000000000000000002222222222222222222222222222222222222222222222222244444444444444422244444444444444422222222223eee3003eee30000 +0000000000000000000022222222222222222222222222222222222222222222222224444444444444422222244444444444222222222222eeeee00eeeee3eee +0000000000000000000000222222222222222222222222222222222222222222222222444444444444422222222444444422222222222222eeeee00eeeeeeeee +0000000000000000000000002222222222222222222222222222222222222222222222244444444444222222222222222222222222222220eeeee00eeeeeeeee +00000000000000000000000022222222222222222222222222222222222222222222222224444444222222222222222222222222222200003eee3003eeeeeeee +000000000000000000000000002222222222222222222222222222222222222222222222222222222222222222222222222222222200000000000003eeeeeeee +00000002222200000000000000222222222222222222222222222222222222222222222222222222222222222222222222222222220000000000000eeeeeeeee +00000222222222000000000000022222222222222222222222222222222222222222222222222222222222222222222222222222220000000000003eeeeeeeee +0000222222222220000000000002222222222222222222222222222000000222222222222222222222222222222222220000002222200040000000eeeeeeeeee +0000222222222222000000000000222222222222222222222222200222200022220002222222222222222222222222002222000222200000000003eeeeeeeeee +000222222000222200000000000022222222222222222222222202222222000222000000222222222222222222222022222220002220000000000eeeeeeeeeee +000222220222022220000000000002222222222222222222222202222222200222000000000000022222222222222022222222002220000003300eeeeeeeeeee +00022222022220222000000000000222222222222222222222220222222220022200000000000000000000222222202222222200222000003ee30eeeeeeeeeee +00022222022220222200000000000022222222222222222222220220222220022200000000000000000000222222202202222200222000003ee30eeeeeeeeeee +000222222022202222000000000000022222222222222222222220022222200222000000004040000000002222222200222222002220000003300eeeeeeeeeee +000222222222220222200000000000002222222222220222222222222222200222000000000000000000002222222222222222002220000000000eeeeeeeeeee +0002222222222202222000000000000000222222222000222222222222220002200000004004440000000002222222222222200022000000000003eeeeeeeeee +0000222222222202222000002222000000002222000000222222222222200022200000004044044000000002222222222222000222000000000000eeeeeeeeee +00002222222222022222000222222000000000000000000222222222220000220000000040444404000000002222222222200002200000000000003eeeeeeeee +000002222222200222220022222222000000000000000000222222222000022200000000044040040000000002222222220000222000000000000003eeeeeeee +0000002222220002222220222222220000000000000000000022222000002220000000000000004000000000000222220000022200000000000000000eeeeeee +000000000000000222222002222022200000000000000000000000000000220000000000004040000000000000000000000002200000003e300000003eeeeeee +00000000000000002222220022202220000000000000000000000000020000000000000000000000000000000000000000200000000000eee00003eeeeeeeeee +000000000000000022222220000222200000000000000000000000002220000000000000000000000000400000000000022200000000003e3003eeeeeeeeeeee +000000000000000002222222222222000000000000000000000000000200000000000000330000000000000000000000002000000000000000eeeeeeeeeeeeee +000000000000000000222222222222000000000000000000000000000000000000000003ee300000000000000000000000000000000000000eeeeeeeeeeeeeee +000000000000000000022222222220000000000000000000000000000000000000000003ee30000000000000000000000000000000000000eeeeeeeeeeeeeeee +0000000000000000000002222222000000000000000000000000000000000003e30000003303ee3000000003ee30000000000000003eee3eeeeeeeeeeeeeeeee +0000000000000000000000000000000000000004000000033003e3000000000eee000000000eeee00000003eeee300000000000000eeeeeeeeeeeeeeeeeeeeee +00000000004404000000000000000000000000000000003ee30eee0000000003e300000003eeeee0000000eeeeee00000000000000eeeeeeeeeeeeeeeeeeeeee +00000000000000400000000000000000000000000000003ee303e3000000000000000003eeeeeeee300000eeeeee00000000000000eeeeeeeeeeeeeeeeeeeeee +0000000040000000000000000000000000040000000000033000000000000000003eee3eeeeeeeeeee00003eeee3000000000000003eeeeeeeeeeeeeeeeeeeee +000000040044040000000000000000000000000000000000000000000000000000eeeeeeeeeeeeeeeee00003ee30000000000000003eeeeeeeeeeeeeeeeeeeee +000000040440444000000000000000000000000000000000000000000000000000eeeeeeeeeeeeeeeeee00000000000000003ee300eeeeeeeeeeeeeeeeeeeeee +000000040044404000000000000000000000000000000000000003eeeee3000000eeeeeeeeeeeeeeeeee300000000000003eeeeee3eeeeeeeeeeeeeeeeeeeeee +000000004000440000000000000000000000000000000003eeee3eeeeeeee0000eeeeeeeeeeeeeeeeeeee00000003eee33eeeeeeeeeeeeeeeeeeeeeeeeeeeeee +0000000004444000000000000000000000000000000000eeeeeeeeeeeeeeee33eeeeeeeeeeeeeeeeeeeee3000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +0000000000000000000000000000000000000000000003eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +000400000000000000000030000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee300000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +0000000000000000000003e3000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000003eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +000000000000000000000030000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee30003eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +00000000000000000000300000000000003e300000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +00000000000000000003e3000003eee300eee000000003eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +000000000400000000003000000eeeee003e30000003eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +000000000000000000000000000eeeee0000000003eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +000000000000000000000000000eeeee000000003eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +0000000000000000000000000003eee300000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +0000000000000000000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +__label__ +iiiiittttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiiitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiiitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiittttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiittttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiittttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttppttttttttttttttttppttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttppttttttttttttttttppttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttpp99ppttttttttttttpp99ppttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttpp99ppttttttttttttpp99ppttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttpp999999ppttttttttpp999999ppttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttpp999999ppttttttttpp999999ppttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttpp9999999999ppttttpp9999999999ppttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttpp9999999999ppttttpp9999999999ppttttttttttttttttttttt +iiittttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttpppp9999999999pppp9999999999ppppttttttttttttttttttttt +iiitttttttttttttttttttttttttttttttttttttttttttttttttttjjjjjjjjjjjjjjjjjjjjjpppp9999999999pppp9999999999ppppjjjjjjjjjjjjjtttttttt +iiiittttttttttttttttttttttttttttttttttttttttttttttttttjjjjjjjjjjjjjjjjjjjjjjjpppp99999999999999999999ppppjjjjjjjjjjjjjjjtttttttt +iiiittttttttttttttttttttttttttttttttttttttttttttttttttjjrrrrrrrrrrjjrrrrrrrrjpppp99999999999999999999ppppjrrjjrrrrrrrrjjtttttttt +iiiiitttttttttttttttttttttttttttttttttttttttttttttttttjjrrrrrrrrrrjjrrrrrrrrjjtpppp9999999999999999pppptjjrrjjrrrrrrrrjjtttttttt +iiiiitttttttttttttttttttttttttttttttttttttttttttttttttjjjjjjrrjjjjjjrrjjjjrrjjtpppp9999999999999999pppptjjrrjjrrjjjjjjjjtttttttt +iiiiiittttttttttttttttttttttttttttttttttttttttttttttttjjjjjjrrjjjjjjrrjjjjrrjjtttpppp9999pppp9999pppptttjjrrjjrrjjjjjjjjtttttttt +iitiiiitttttttttttttttttttttttttttttttttttttttttttttttjjjjjjrrjjjjjjrrjjjjrrjjtttpppp9999pppp9999pppptttjjrrjjrrjjjjjjjjtttttttt +iiiiii22ttttttttttttttttttttttttttttttttttttttttttttttjjjjjjrrjjjjjjrrjjjjrrjjtttttpp9999pppp9999pptttttjjrrjjrrjjjjjjjjtttttttt +iiiii2222tttttttttttttttttttttttttttttttttttttttttttttttttjj33jjttjj33jjjj33jjtttttpp9999pppp9999pptttttjj33jj33jjtttttttttttttt +iiiii22222ttttttttttttttttttttttttttttttttttttttttttttttttjj33jjttjj33jjjj33jjtttpp9999999999999999pptttjj33jj33jjtttttttttttttt +iiiii2222222ttttttttttttttttttttttttttttttttttttttttttttttjjrrjjttjjrrjjjjrrjjtttpp9999999999999999pptttjjrrjjrrjjjjjjjjtttttttt +iiii22222222222tttttttttttttttttttttttttttttttttttttttttttjjrrjjttjjrrjjjjrrjjtpppppppppppppppppppppppptjjrrjjrrjjjjjjjjtttttttt +iiii222222222222ttttttttttttttttttttttttttttttttttttttttttjj33jjttjj33333333jjtpppppppppppppppppppppppptjj33jj33333333jjtttttttt +iiii222222222222ttttttttttttttttttttttttttttttttttttttttttjj33jjttjj33333333jpp9999999999pppp9999999999ppj33jj33333333jjtttttttt +iiii2222222222222tttttttttttttttttttttttttttttttttttttttttjjjjjjttjjjjjjjjjjjpp9999999999pppp9999999999ppjjjjjjjjjjjjjjjtttttttt +iii22222222222222tttttttttttttttttttttttttttttttttttttttttjjjjjjttjjjjjjjjjpp9999999999pppppppp9999999999ppjjjjjjjjjjjjjtttttttt +iii222222222222222ttttttttttttttttttttttttttttttttttttttttjjjjjjttjjjjjjjjjpp9999999999pppppppp9999999999ppjjjjjjjjjjjjjtttttttt +iii22222222222ttt22tttttttttttttttttttttttttttttttttttttttjjjjjjttjjjjjjjjjppppppppppppppttttppppppppppppppjjjjjjjjjjjjjtttttttt +iii2222222222ttttt22tttttttttttttttttttttttttttttttttttttttttttttttttttttttppppppppppppppttttppppppppppppppttttttttttttttttttttt +ii2222222222ttttttt22ttttttttttttttttttttttttttttttttttttttttttttttttttttttppppppppppppttttttttppppppppppppttttttttttttttttttttt +ii222222222ttttttttt22tttttttttttttttttttttttttttttttttttttjjjjjtttjjjjttttjjjjjppppjjjjtttjjjjppppjjjjjpppjjjjtttttjjjjtttttttt +ii222222222tttttttttt22ttttttttttttttttttttttttttttttttttttjrrrjtttjrrjjtttjrjrjpppjjrrjtttjrrjjtppjrrrjpttjrrjjtttjjrrjtttttttt +ii22222222ttttttt222tt22tttttttttttttttttttttttttttttttttttjjrjjtttjrjrjtttjrjrjpppjrjrjtttjrjrjtppjrrjjpttjrjrjtttjrjjjtttttttt +ii22222222tttttt2ttt2tt22ttttttttttttttttttttttttttttttttttjj3jjtttj3j3jtttj333jtttj333jtttj3j3jtttj3jjjtttj33jjtttjjj3jtttttttt +ii22222222ttttttttttt2tt22tttttttttttttttttttttttttttttttttj333jtttj3j3jtttjj3jjtttj3j3jtttj33jjtttjj33jtttj3j3jtttj33jjtttttttt +ii22222222tttttttttttt2tt22ttttttttttttttttttttttttttttttttjjjjjtttjjjjjtttjjjjjtttjjjjjtttjjjjjtttjjjjjtttjjjjjtttjjjjjtttttttt +ii22222222tttttttttttt2ttt222ttttttttttttttttttttttttttttttjjjjjtttjjjjjttttjjjttttjjjjjtttjjjjtttttjjjjtttjjjjjtttjjjjttttttttt +ii222222222ttttttttttt22ttt22222tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +ii222222222tttttttttt222ttttt222222222tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iii222222222tttttttt2222ttttt22ttttt222tttttttttttttttttttttt2222222222222tttt2222222222222222222222222222222222222222tttttttttt +iii22222222222ttttt22222tttttt22ttttt222ttttttttttttttttttttt2999292929992ttt22992299292929922992299929992999229929292tttttttttt +iii222222222222222222222tttttt2222ttt2222tttttttttttttttttttt2292292929222ttt29222929292929292929229229292929292229292tttttttttt +iiii222222222222222222222ttttt2222tttt2222ttttttttttttttttttt22p22ppp2pp22ttt2ppp2p2p2p2p2p2p2p2p22p22pp22ppp2p222pp22tttttttttt +iiii222222222222222222222tttttt22ttttt22222ttttttttttttttttttt2p22p2p2p222ttt222p2p2p2p2p2p2p2p2p22p22p2p2p2p2p222p2p2tttttttttt +iiii222222222222222222222ttttttttttttt222222tttttttttttttttttt2p22p2p2ppp2ttt2pp22pp222pp2p2p2ppp22p22p2p2p2p22pp2p2p2tttttttttt +iiiii222222222222222222222ttttttttttt22222222ttttttttttttttttt222222222222ttt22222222222222222222222222222222222222222tttttttttt +iiiii222222222222222222222ttttttttttt222222222tttttttttttttttt222222222222ttt22222222t22222222222222222222222222222222tttttttttt +iiiiii222222222222222222222ttttttttt222222222222tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiiiii2222222222222222222222ttttttt222222222222222tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiiiiii2222222222222222222222tttt22222222222222222222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiiiiiii22222222222222222222222222222222222222222222222222222tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt2 +iiiiiiiii222222222222222222222222222222222222222222222222222tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt22 +iiiiiiiiii22222222222222222222222222222222222222222222222222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt222 +iiiiiiiiiiii22222222222222222222222222222222222222222222222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt2222 +iiiiiiiiiiiii2222222222222222222222222222222222222222222222tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt22222 +iiiiiiiiiiiii2222222222222222222222222222222222222222222222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt222222 +iiiiiiiiiiiiii222222222222222222222222222222222222222222222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt22222222 +iiiiittttiiiii222222222222222222222222222222222222222222222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt2222222222 +iiiittiiitiiii222222222222222222222222222222222222222222222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttt222222222222 +iiititttiitiii2222222222222222222222222222222222222222222222tttttttttttttttttttttttttttttttttttttt22222222tttttt2222222222222222 +iiitttittitiii2222222222222222222222222222222222222222222222tttttttttttttttttttttttttttttttttt2222222222222222222222222222222222 +iiiitittiitiiii2222222222222222222222222222222222222222222222tttttttttttttttttttttttttttttt222222tttttt2222222222222222222222222 +iiiiiiiiitiiiii222222222222222222222222222222222222222222222222ttttttt22tttttttttttttttt22222222tttttttt222222222222222222222222 +iiitiiiiiiiiiii22222222222222222222222222222222222222222222222222222222222222tttttt222222222222tttttttttt22222222222222222222222 +iiiitittiiiiiiii222222222222222222222222222222222222222222222222222222tttttt22222222ttt22222222ttttttttttt2222222222222222222222 +iiiiiiiiiiiiiiii22222222222222222222222222222222222222222222222222222tttttttttttttttttttt222222ttt2ttttttt2222222222222222222222 +iiiiiiiiiiiiiiii2222222222222222222222222222222222222222222222222222tttttttt22222ttttttttt22222tttt2tttttt2222222222222222222j33 +iiiiiiiiiiiiiiii2222222222222222222222222222222222222222222222222222ttttttt2ttttt2ttttttttt22222ttt2tttttt2222222222222222222333 +iiiiiiiiiiiiiiiii222222222222222222222222222222222222222222222222222tttttt2ttttttt2ttttttttt22222222tttttt2222222222222222222333 +iiiiiiiiiiiiiiiii222222222222222222222222222222222222222222222222222tttttt2tttttttt2tttttttttt22222ttttttt222222222222222222i333 +iiiitiiiiiiiiiiii222222222222222222222222222222222222222222222222222tttttt2tttttttt2ttttttttttttttttttttt222222222222222222iij33 +iiiiiiiiiiiiiiiii222222222222222222222222222222222222222222222222222ttttttt2tttttttt2tttttttttttttttttttt22222222222222222iiiiii +iiiiiiiiiiiiiiiiii22222222222222222222222222222222222222222222222222tttttttt222ttttt2ttttttttttttttttttt2222222222222222iiiiiiii +iiiiiiiiiiiiiiiiii22222222222222222222222222222222222222222222222222tttttttttttttttt22ttttttttttttttttt2222222222222222iiiiiiiii +iiiiiiiiiiiiiiiiiii22222222222222222222222222222222222222222222222222ttttttttttttttt222ttttttttttttttt2222222222j333jiij333jiiii +iiiiiiiiiiiiiiiiiiii2222222222222222222222222222222222222222222222222tttttttttttttt222222ttttttttttt22222222222233333ii33333j333 +iiiiiiiiiiiiiiiiiiiiii222222222222222222222222222222222222222222222222ttttttttttttt22222222ttttttt2222222222222233333ii333333333 +iiiiiiiiiiiiiiiiiiiiiiii22222222222222222222222222222222222222222222222ttttttttttt22222222222222222222222222222i33333ii333333333 +iiiiiiiiiiiiiiiiiiiiiiii2222222222222222222222222222222222222222222222222ttttttt2222222222222222222222222222iiiij333jiij33333333 +iiiiiiiiiiiiiiiiiiiiiiiiii22222222222222222222222222222222222222222222222222222222222222222222222222222222iiiiiiiiiiiiij33333333 +iiiiiii22222iiiiiiiiiiiiii22222222222222222222222222222222222222222222222222222222222222222222222222222222iiiiiiiiiiiii333333333 +iiiii222222222iiiiiiiiiiiii2222222222222222222222222222222222222222222222222222222222222222222222222222222iiiiiiiiiiiij333333333 +iiii22222222222iiiiiiiiiiii2222222222222222222222222222iiiiii22222222222222222222222222222222222iiiiii22222iiitiiiiiii3333333333 +iiii222222222222iiiiiiiiiiii2222222222222222222222222ii2222iii2222iii2222222222222222222222222ii2222iii2222iiiiiiiiiij3333333333 +iii222222iii2222iiiiiiiiiiii222222222222222222222222i2222222iii222iiiiii222222222222222222222i2222222iii222iiiiiiiiii33333333333 +iii22222i222i2222iiiiiiiiiiii22222222222222222222222i22222222ii222iiiiiiiiiiiii22222222222222i22222222ii222iiiiiijjii33333333333 +iii22222i2222i222iiiiiiiiiiii22222222222222222222222i22222222ii222iiiiiiiiiiiiiiiiiiii2222222i22222222ii222iiiiij33ji33333333333 +iii22222i2222i2222iiiiiiiiiiii2222222222222222222222i22i22222ii222iiiiiiiiiiiiiiiiiiii2222222i22i22222ii222iiiiij33ji33333333333 +iii222222i222i2222iiiiiiiiiiiii2222222222222222222222ii222222ii222iiiiiiiititiiiiiiiii22222222ii222222ii222iiiiiijjii33333333333 +iii22222222222i2222iiiiiiiiiiiii222222222222i2222222222222222ii222iiiiiiiiiiiiiiiiiiii2222222222222222ii222iiiiiiiiii33333333333 +iii22222222222i2222iiiiiiiiiiiiiii222222222iii22222222222222iii22iiiiiiitiitttiiiiiiiii22222222222222iii22iiiiiiiiiiij3333333333 +iiii2222222222i2222iiiii2222iiiiiiii2222iiiiii2222222222222iii222iiiiiiitittittiiiiiiii2222222222222iii222iiiiiiiiiiii3333333333 +iiii2222222222i22222iii222222iiiiiiiiiiiiiiiiii22222222222iiii22iiiiiiiitittttitiiiiiiii22222222222iiii22iiiiiiiiiiiiij333333333 +iiiii22222222ii22222ii22222222iiiiiiiiiiiiiiiiii222222222iiii222iiiiiiiiittitiitiiiiiiiii222222222iiii222iiiiiiiiiiiiiij33333333 +iiiiii222222iii222222i22222222iiiiiiiiiiiiiiiiiiii22222iiiii222iiiiiiiiiiiiiiitiiiiiiiiiiii22222iiiii222iiiiiiiiiiiiiiiii3333333 +iiiiiiiiiiiiiii222222ii2222i222iiiiiiiiiiiiiiiiiiiiiiiiiiiii22iiiiiiiiiiiititiiiiiiiiiiiiiiiiiiiiiiii22iiiiiiij3jiiiiiiij3333333 +iiiiiiiiiiiiiiii222222ii222i222iiiiiiiiiiiiiiiiiiiiiiiiii2iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii2iiiiiiiiiii333iiiij3333333333 +iiiiiiiiiiiiiiii2222222iiii2222iiiiiiiiiiiiiiiiiiiiiiiii222iiiiiiiiiiiiiiiiiiiiiiiiitiiiiiiiiiiii222iiiiiiiiiij3jiij333333333333 +iiiiiiiiiiiiiiiii2222222222222iiiiiiiiiiiiiiiiiiiiiiiiiii2iiiiiiiiiiiiiijjiiiiiiiiiiiiiiiiiiiiiiii2iiiiiiiiiiiiiii33333333333333 +iiiiiiiiiiiiiiiiii222222222222iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij33jiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii333333333333333 +iiiiiiiiiiiiiiiiiii2222222222iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij33jiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii3333333333333333 +iiiiiiiiiiiiiiiiiiiii2222222iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij3jiiiiiijjij33jiiiiiiiij33jiiiiiiiiiiiiiiij333j33333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiitiiiiiiijjiij3jiiiiiiiii333iiiiiiiii3333iiiiiiij3333jiiiiiiiiiiiiii3333333333333333333333 +iiiiiiiiiittitiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij33ji333iiiiiiiiij3jiiiiiiij33333iiiiiii333333iiiiiiiiiiiiii3333333333333333333333 +iiiiiiiiiiiiiitiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij33jij3jiiiiiiiiiiiiiiiiij33333333jiiiii333333iiiiiiiiiiiiii3333333333333333333333 +iiiiiiiitiiiiiiiiiiiiiiiiiiiiiiiiiitiiiiiiiiiiijjiiiiiiiiiiiiiiiiij333j33333333333iiiij3333jiiiiiiiiiiiiiij333333333333333333333 +iiiiiiitiittitiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii33333333333333333iiiij33jiiiiiiiiiiiiiiij333333333333333333333 +iiiiiiitittitttiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii333333333333333333iiiiiiiiiiiiiiiij33jii3333333333333333333333 +iiiiiiitiitttitiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij33333jiiiiii333333333333333333jiiiiiiiiiiiiij333333j3333333333333333333333 +iiiiiiiitiiittiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij3333j33333333iiii33333333333333333333iiiiiiij333jj333333333333333333333333333333 +iiiiiiiiittttiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii3333333333333333jj333333333333333333333jiiiiii333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij3333333333333333333333333333333333333333iiiiii333333333333333333333333333333333333 +iiitiiiiiiiiiiiiiiiiiijiiiiiiiiiiiiiiiiiiiiii33333333333333333333333333333333333333333jiiiii333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiij3jiiiiiiiiiiiiiiiiiiiii333333333333333333333333333333333333333333iiiiij33333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiijiiiiiiiiiiiiiiiiiiiiii333333333333333333333333333333333333333333jiiij333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiijiiiiiiiiiiiiij3jiiiiiiii33333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiij3jiiiiij333jii333iiiiiiiij3333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiitiiiiiiiiiijiiiiii33333iij3jiiiiiij333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiii33333iiiiiiiiij33333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiii33333iiiiiiiij333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiiij333jiiiiiiii3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 + diff --git a/toxicinvaders_misc/labels/musiclabel.png b/toxicinvaders_misc/labels/musiclabel.png Binary files differnew file mode 100644 index 0000000..20a64a8 --- /dev/null +++ b/toxicinvaders_misc/labels/musiclabel.png diff --git a/toxicinvaders_misc/musicplayer/background_music.lua b/toxicinvaders_misc/musicplayer/background_music.lua new file mode 100644 index 0000000..dc57471 --- /dev/null +++ b/toxicinvaders_misc/musicplayer/background_music.lua @@ -0,0 +1,106 @@ +function scrollingcircles(y, speed, spacing, radius, color) + for i = 1, 256, spacing do + circfill((i-(gt*speed))%256-radius*2, y, radius, color) + end +end + +function scrollingsprite(sprite,x,y,w,h,speed,flip) + flip = flip or false + spr(sprite, -(gt*speed+x+w*8)%(128+w*8)-w*8, y, w, h, flip) +end + + +--ringed planet +function bgplanetmegasprite(x,y) + --default values + --x = 160-gt + --y = 50 + + palt(0,false) + palt(13,true) + spr(200,x,y,7,4) + spr(194,x-8,y+32,6,2) + palt() +end + + +function drawbg() + cls(0) + --stars + for i = 1, 64, 1 do + pset((((-gt*0.1)+i*4.3824)*(i/32))%128, sin(i*0.536382)*64+64, 4) --funny random star algorithm!! + end + + --galaxies + spr(239, 20, 30, 1, 1) + spr(255, 108, 40, 1, 1) + spr(255, 42, 74, 1, 1, true, true) + + --ringed planet + bgplanetmegasprite(150-(gt*10)%300,50) + + --clouds + scrollingcircles(-9, 24, 22, 22, 2) + --small clouds + scrollingsprite(207, 60, 10, 1, 1, 28) + scrollingsprite(207, 120, 10, 1, 1, 28) + scrollingsprite(207, 130, 12, 1, 1, 29) + scrollingsprite(207, 160, 15, 1, 1, 30)-- + scrollingsprite(223, 145, 15, 1, 1, 30)-- + scrollingsprite(223, 20, 10, 1, 1, 28) + scrollingsprite(223, 100, 10, 1, 1, 28) + scrollingsprite(223, 170, 15, 1, 1, 30) + --large clouds + scrollingsprite(35, 80, 5, 2, 1, 35) + scrollingsprite(35, 180, 9, 2, 1, 38) + scrollingsprite(35, 260, 9, 2, 1, 38)-- + scrollingsprite(51, 40, 5, 2, 1, 35) + scrollingsprite(51, 120, 7, 2, 1, 36)-- + scrollingsprite(51, 160, 7, 2, 1, 36) + scrollingsprite(51, 240, 9, 2, 1, 38) + --fg clouds + scrollingcircles(-11, 40, 25, 20, 2) + scrollingcircles(-12, 40, 25, 20, 4) + + --landscape + scrollingcircles(125, 72, 25, 20, 8) + scrollingcircles(126, 72, 25, 20, 2) + + --landscape lines + rectfill(0,112,128,128,8) + line(0, 113, 128, 113, 2) + line(0, 116, 128, 116, 2) + line(0, 119, 128, 119, 2) + + for i = 1, 32, 1 do + line(((-gt+i*2.5)*80)%128, 111, ((-gt+i*2.5)*80)%128*1.2-12.8, 125, 2) + end + + --pine trees + local treex = {10,30,20,50,62,70,80,95,100,120} + for i = 1, 10, 1 do + scrollingsprite(231,treex[i],94+sin(i/5.2323),1,2,72,(i%2==0)) + end + --small buildings + scrollingsprite(226,15,98,2,2,80) + scrollingsprite(226,65,97,2,2,80) + scrollingsprite(226,95,96,2,2,80) + scrollingsprite(226,115,97,2,2,80) + --totem poles + scrollingsprite(230,25,99,1,2,84) + scrollingsprite(230,65,100,1,2,83,true) + scrollingsprite(230,85,101,1,2,83) + --dead trees + scrollingsprite(228,30,104,2,2,86) + scrollingsprite(228,75,105,2,2,86,true) + scrollingsprite(228,100,104,2,2,86) + scrollingsprite(228,120,105,2,2,86,true) + --large buildings (front) + scrollingsprite(192,52,94,2,4,90) + scrollingsprite(192,22,91,2,4,90) + scrollingsprite(192,102,90,2,4,90) + scrollingsprite(192,137,92,2,4,90) + + scrollingcircles(150, 100, 30, 32, 8) + scrollingcircles(151, 100, 30, 32, 2) +end
\ No newline at end of file diff --git a/toxicinvaders_misc/musicplayer/draw_music.lua b/toxicinvaders_misc/musicplayer/draw_music.lua new file mode 100644 index 0000000..edc3bb6 --- /dev/null +++ b/toxicinvaders_misc/musicplayer/draw_music.lua @@ -0,0 +1,29 @@ +--pallete replacement +pal({1,2,131,141,5,6,7,136,9,137,139,12,133,3,140,130}, 1) --don't ask me why, but this table of colors starts at 1, and 0 is the final color + + +drawbg() +drawobjs() --only used for acid trans here + +menushipscroll += ft +for i = 1, 3, 1 do + spr(14+i*16, (-menushipscroll*(i*20)+(sin(i/3)*128)+8)%(128+8)-1*8, i*36+sin(menushipscroll*i/3)*i*2-20,1,1) +end + +if t() < 1 then + drawlogo(24,19.5+sin(0.25+t()*0.5)*6.5) +else + drawlogo(24,26) +end +credits(40,116) + +if not hideui then + --main screen items + mainmenutext(15,74) + + --intro acid transtition + acidcounter+=ft + acidtransition() +end + +-- print(autoplay,0,0,7)
\ No newline at end of file diff --git a/toxicinvaders_misc/musicplayer/music.p8 b/toxicinvaders_misc/musicplayer/music.p8 new file mode 100644 index 0000000..f94f733 --- /dev/null +++ b/toxicinvaders_misc/musicplayer/music.p8 @@ -0,0 +1,385 @@ +pico-8 cartridge // http://www.pico-8.com +version 35 +__lua__ +--▶ toxic invaders soundtrack ◀ +--▶ 1029chris ◀ + +-- 0-26 SLOTS RESERVED FOR SFX +-- SPRITEWORK BY RIBBONCABLE +-- CART PUT TOGETHER BY RIBBON + +#include objects_music.lua +#include particles_music.lua +#include ui_music.lua + +function _update60() +#include update_music.lua +end + +function _draw() +#include background_music.lua +#include draw_music.lua +end +__gfx__ +48888840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +8a98a980cccccccc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +89889880eeeeeeee0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +8988a980777777770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +48888840eeeeeeee0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000cccccccc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ebbbe3000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ebea00000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003eb900000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003bb3b000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003bb3b000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003eb900000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ebea00000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ebbbe3000000000 +00000000000000000000000000444000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000044444000044440000000000000000000000000000000000000000000000000000000000000000000000000000ebbbe900000000 +000000000000000000000000444444004444444000000000000000000000000000000000000000000000000000000000000000000000000003bbe30000000000 +00000000000000000000000044044004444004440000000000000000000000000000000000000000000000000000000000000000000000007e3b300000000000 +00000000000000000000000044400444400040440000000000000000000000000000000000000000000000000000000000000000000000007e3b300000000000 +000000000000000000000000444444440000444400000000000000000000000000000000000000000000000000000000000000000000000003bbe30000000000 +000000000000000000000000044444400000044000000000000000000000000000000000000000000000000000000000000000000000000000ebbbe900000000 +00000000000000000000000000444400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000444444400004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000004444444440044440000000000000000000000000000000000000000000000000000000000000000000000000033bb3000000000 +00000000000000000000000044440004444040440000000000000000000000000000000000000000000000000000000000000000000000007ebe33e900000000 +000000000000000000000000444044404444044400000000000000000000000000000000000000000000000000000000000000000000000000e3bbe000000000 +000000000000000000000000444044440444444000000000000000000000000000000000000000000000000000000000000000000000000000e3bbe000000000 +00000000000000000000000044440444004444000000000000000000000000000000000000000000000000000000000000000000000000007ebe33e900000000 +00000000000000000000000004444444000000000000000000000000000000000000000000000000000000000000000000000000000000000033bb3000000000 +00000000000000000000000000444440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +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 +0000000000000000000000000000000000000000000000000000000000000000222272222222222222fff3220000333333333333000a0000a99a000033333333 +000000000000000000000000000000000000000000000000000000000000000022252222222828222beffff200003bbbbb3bbbb300a9a0009999a0003b3bbbb3 +000000000000000000000000000000000000000000000000000000000000000022d2222222888882bdde1fff0000333b333b33b30a999a00aaaaaa003b3b3333 +0000000000000000000000000000000000000000000000000000000000000000200dd00022888882dffdf1f20000003b303b33b3a99999a0a99999a03b3b3000 +00000000000000000000000000000000000000000000000000000000000000000555070022288822d07d073f0000003e303e33e3aa99999aaa99999a3e3e3000 +0000000000000000000000000000000000000000000000000000000000000000dfcc060d28228222bdd9ad220000003b303b33b30aa999990aaaaaaa3b3b3333 +00000000000000000000000000000000000000000000000000000000000000002d0000d288822282ea9999220000003e303eeee300aa999900aaaaaa3e3eeee3 +00000000000000000000000000000000000000000000000000000000000000002220d222282222222ea999920000003330333333000aa99a000aaaa033333333 +0000000000000000ddddddd000dddd000022222222000022222222202222dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000 +0288888888888200dddddd000dddddd0000022200000222222222022222ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000 +2888888888888820ddddd022ddddddddd000000000222222222202222dddddddddddddddddddddddddddddddddddddddddddddddddddddddd22222dd02222000 +8822224442222880dddd022ddddddddddd0000002222222222022222ddddddddddddddddddddddd022222222dddddddddddddddddddddd022222222d22000200 +8822244422222880ddd0222dddddddddddd0002222222222002222ddddddddddddddddddddddd22222222222222ddddddddddddddddd02222222222220220020 +8888888888888880dd0222dddddddddddddd2222222222002222dddddddddddddddddddddd0222222222222222222dddddddddddd00222222222222222220200 +8820222222202880d0222ddddddddddddd22222222220022222ddddddddddddddd222dddd222222222222222222222ddddddddd0022222202222222202200000 +2200282028200220d2222ddddddddddd22222222220022222dddddddddddddddd22222d022002222222222222222222ddddddd002220dddd0222222200000000 +00002220222000000222dddddddd2222222222222d22222dddddddddddddddddd2200202202202222220000222222222dddd00220ddddddd0222222200000000 +00028888888200002222dddddd2222222222222d22222dddddddddddddddddddd22022022202022222022220222222222d0020dddddddddd2222222200000000 +002888888888200022222222222222222222dd2222ddddddddddddddddddddddd22200002222022220222022022002222200ddddddddddd02222222202220000 +02888222228882002222222222222222dddd2222ddddddddddddddddddddddddd0222222222022220022020202022022222dddddddddddd22222d22222022000 +0288288888288200222222222222ddd222222ddddddddddddddddddddddddddddd000000000222220022022202202022222ddddddddddd222222222d22202202 +288888888888882022222222dd222222222ddddddddddddddddddddddddddddddd0000000222222200222000002220222220ddddddddd222222d222d02220220 +2882882828828820d222222222222222ddddddddddddddddddddddddddddddddd00222222222222200022222222202222222dddddddd222222d222dd00000000 +2888888888888820dd22222222222dddddddddddddddddddddddddddddddddddd02222222222222220000222220022222222ddddddd2222222222ddd00000000 +2828284828282820000288888888200000000000000000002220222000008000d00002222222222222200000000222222222dddddd2222222d222ddd00444400 +2828888888882820002882242228820000000000282000002822282000028200d22220222220022222220000002222222222ddddd2222222d222dddd04400040 +2828484828282820008888888888880000000028282000002888882000088800222222022202202222222222222222222222dddd2222222d222ddddd40444004 +28288888888828200022200000022200000000282828200022828222008888202220022022202022222222222222222222220dd2222222d222dddddd44404404 +28284828282828200028200000028200000028282828200022828282082888802202002200222022222222222222222222200d2222222d222ddddddd04044004 +282888888888282000282888888282000000282828282000288888820088888222220002222202222222222222222222220002222222d222dddddddd00000040 +28282828284828200022888888882200000028282828200022828222088882880220200000002222222222222222222220002222222d222ddddddddd40000000 +2828888888882820002828284848820000002828282820000282820028828802d00022000002222222222222222222220002222222d222dddddddddd04044000 +2822282848222820002888888888820000002828282820000282820000288880d0022222222222222222222222222220002222222d222ddddddddddd00404000 +2828888888882820028822444222882000000288288200000282820008888888dd02222222222222222222222222220022222222d222dddddddddddd00000000 +2828282828282820028824442222882000000028282000000282820082808828dd0022222222222222222222222220022222222d222ddddddddddddd40044400 +2828882228882820028888888888882000000028820000000282820000888880dd002222222222222222222222200022222222d222dddddddddddddd40440440 +2828282228282820028288888828282000000028200000000282820008208820ddd00222222222222222222222000222222202222ddddddddddddddd40444404 +2888882228888820028888282888882000000028200000000282820000022200dd00002222222222222222220002222222202222dddddddddddddddd04404004 +2888282228288820028288222828282000020028200020000282820200008200d00000022222222222222200022222222202222ddddddddddddddddd00000040 +2888882228888822228888222888882202022028222020202282822200008200000dd00022222222222200022222222220222ddddddddddddddddddd00404000 +__label__ +iiiiittttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiiitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiiitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiittttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiittttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiittttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttppttttttttttttttttppttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttppttttttttttttttttppttttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttpp99ppttttttttttttpp99ppttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttpp99ppttttttttttttpp99ppttttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttpp999999ppttttttttpp999999ppttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttpp999999ppttttttttpp999999ppttttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttpp9999999999ppttttpp9999999999ppttttttttttttttttttttt +iitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttpp9999999999ppttttpp9999999999ppttttttttttttttttttttt +iiittttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttpppp9999999999pppp9999999999ppppttttttttttttttttttttt +iiitttttttttttttttttttttttttttttttttttttttttttttttttttjjjjjjjjjjjjjjjjjjjjjpppp9999999999pppp9999999999ppppjjjjjjjjjjjjjtttttttt +iiiittttttttttttttttttttttttttttttttttttttttttttttttttjjjjjjjjjjjjjjjjjjjjjjjpppp99999999999999999999ppppjjjjjjjjjjjjjjjtttttttt +iiiittttttttttttttttttttttttttttttttttttttttttttttttttjjrrrrrrrrrrjjrrrrrrrrjpppp99999999999999999999ppppjrrjjrrrrrrrrjjtttttttt +iiiiitttttttttttttttttttttttttttttttttttttttttttttttttjjrrrrrrrrrrjjrrrrrrrrjjtpppp9999999999999999pppptjjrrjjrrrrrrrrjjtttttttt +iiiiitttttttttttttttttttttttttttttttttttttttttttttttttjjjjjjrrjjjjjjrrjjjjrrjjtpppp9999999999999999pppptjjrrjjrrjjjjjjjjtttttttt +iiiiiittttttttttttttttttttttttttttttttttttttttttttttttjjjjjjrrjjjjjjrrjjjjrrjjtttpppp9999pppp9999pppptttjjrrjjrrjjjjjjjjtttttttt +iitiiiitttttttttttttttttttttttttttttttttttttttttttttttjjjjjjrrjjjjjjrrjjjjrrjjtttpppp9999pppp9999pppptttjjrrjjrrjjjjjjjjtttttttt +iiiiii22ttttttttttttttttttttttttttttttttttttttttttttttjjjjjjrrjjjjjjrrjjjjrrjjtttttpp9999pppp9999pptttttjjrrjjrrjjjjjjjjtttttttt +iiiii2222tttttttttttttttttttttttttttttttttttttttttttttttttjj33jjttjj33jjjj33jjtttttpp9999pppp9999pptttttjj33jj33jjtttttttttttttt +iiiii22222ttttttttttttttttttttttttttttttttttttttttttttttttjj33jjttjj33jjjj33jjtttpp9999999999999999pptttjj33jj33jjtttttttttttttt +iiiii2222222ttttttttttttttttttttttttttttttttttttttttttttttjjrrjjttjjrrjjjjrrjjtttpp9999999999999999pptttjjrrjjrrjjjjjjjjtttttttt +iiii22222222222tttttttttttttttttttttttttttttttttttttttttttjjrrjjttjjrrjjjjrrjjtpppppppppppppppppppppppptjjrrjjrrjjjjjjjjtttttttt +iiii222222222222ttttttttttttttttttttttttttttttttttttttttttjj33jjttjj33333333jjtpppppppppppppppppppppppptjj33jj33333333jjtttttttt +iiii222222222222ttttttttttttttttttttttttttttttttttttttttttjj33jjttjj33333333jpp9999999999pppp9999999999ppj33jj33333333jjtttttttt +iiii2222222222222tttttttttttttttttttttttttttttttttttttttttjjjjjjttjjjjjjjjjjjpp9999999999pppp9999999999ppjjjjjjjjjjjjjjjtttttttt +iii22222222222222tttttttttttttttttttttttttttttttttttttttttjjjjjjttjjjjjjjjjpp9999999999pppppppp9999999999ppjjjjjjjjjjjjjtttttttt +iii222222222222222ttttttttttttttttttttttttttttttttttttttttjjjjjjttjjjjjjjjjpp9999999999pppppppp9999999999ppjjjjjjjjjjjjjtttttttt +iii22222222222ttt22tttttttttttttttttttttttttttttttttttttttjjjjjjttjjjjjjjjjppppppppppppppttttppppppppppppppjjjjjjjjjjjjjtttttttt +iii2222222222ttttt22tttttttttttttttttttttttttttttttttttttttttttttttttttttttppppppppppppppttttppppppppppppppttttttttttttttttttttt +ii2222222222ttttttt22ttttttttttttttttttttttttttttttttttttttttttttttttttttttppppppppppppttttttttppppppppppppttttttttttttttttttttt +ii222222222ttttttttt22tttttttttttttttttttttttttttttttttttttjjjjjtttjjjjttttjjjjjppppjjjjtttjjjjppppjjjjjpppjjjjtttttjjjjtttttttt +ii222222222tttttttttt22ttttttttttttttttttttttttttttttttttttjrrrjtttjrrjjtttjrjrjpppjjrrjtttjrrjjtppjrrrjpttjrrjjtttjjrrjtttttttt +ii22222222ttttttt222tt22tttttttttttttttttttttttttttttttttttjjrjjtttjrjrjtttjrjrjpppjrjrjtttjrjrjtppjrrjjpttjrjrjtttjrjjjtttttttt +ii22222222tttttt2ttt2tt22ttttttttttttttttttttttttttttttttttjj3jjtttj3j3jtttj333jtttj333jtttj3j3jtttj3jjjtttj33jjtttjjj3jtttttttt +ii22222222ttttttttttt2tt22tttttttttttttttttttttttttttttttttj333jtttj3j3jtttjj3jjtttj3j3jtttj33jjtttjj33jtttj3j3jtttj33jjtttttttt +ii22222222tttttttttttt2tt22ttttttttttttttttttttttttttttttttjjjjjtttjjjjjtttjjjjjtttjjjjjtttjjjjjtttjjjjjtttjjjjjtttjjjjjtttttttt +ii22222222tttttttttttt2ttt222ttttttttttttttttttttttttttttttjjjjjtttjjjjjttttjjjttttjjjjjtttjjjjtttttjjjjtttjjjjjtttjjjjttttttttt +ii222222222ttttttttttt22ttt22222tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +ii222222222tttttttttt222ttttt222222222tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iii222222222tttttttt2222ttttt22ttttt222tttttttttttttttttttttt2222222222222tttt2222222222222222222222222222222222222222tttttttttt +iii22222222222ttttt22222tttttt22ttttt222ttttttttttttttttttttt2999292929992ttt22992299292929922992299929992999229929292tttttttttt +iii222222222222222222222tttttt2222ttt2222tttttttttttttttttttt2292292929222ttt29222929292929292929229229292929292229292tttttttttt +iiii222222222222222222222ttttt2222tttt2222ttttttttttttttttttt22p22ppp2pp22ttt2ppp2p2p2p2p2p2p2p2p22p22pp22ppp2p222pp22tttttttttt +iiii222222222222222222222tttttt22ttttt22222ttttttttttttttttttt2p22p2p2p222ttt222p2p2p2p2p2p2p2p2p22p22p2p2p2p2p222p2p2tttttttttt +iiii222222222222222222222ttttttttttttt222222tttttttttttttttttt2p22p2p2ppp2ttt2pp22pp222pp2p2p2ppp22p22p2p2p2p22pp2p2p2tttttttttt +iiiii222222222222222222222ttttttttttt22222222ttttttttttttttttt222222222222ttt22222222222222222222222222222222222222222tttttttttt +iiiii222222222222222222222ttttttttttt222222222tttttttttttttttt222222222222ttt22222222t22222222222222222222222222222222tttttttttt +iiiiii222222222222222222222ttttttttt222222222222tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiiiii2222222222222222222222ttttttt222222222222222tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiiiiii2222222222222222222222tttt22222222222222222222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +iiiiiiii22222222222222222222222222222222222222222222222222222tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt2 +iiiiiiiii222222222222222222222222222222222222222222222222222tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt22 +iiiiiiiiii22222222222222222222222222222222222222222222222222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt222 +iiiiiiiiiiii22222222222222222222222222222222222222222222222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt2222 +iiiiiiiiiiiii2222222222222222222222222222222222222222222222tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt22222 +iiiiiiiiiiiii2222222222222222222222222222222222222222222222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt222222 +iiiiiiiiiiiiii222222222222222222222222222222222222222222222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt22222222 +iiiiittttiiiii222222222222222222222222222222222222222222222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt2222222222 +iiiittiiitiiii222222222222222222222222222222222222222222222ttttttttttttttttttttttttttttttttttttttttttttttttttttttttt222222222222 +iiititttiitiii2222222222222222222222222222222222222222222222tttttttttttttttttttttttttttttttttttttt22222222tttttt2222222222222222 +iiitttittitiii2222222222222222222222222222222222222222222222tttttttttttttttttttttttttttttttttt2222222222222222222222222222222222 +iiiitittiitiiii2222222222222222222222222222222222222222222222tttttttttttttttttttttttttttttt222222tttttt2222222222222222222222222 +iiiiiiiiitiiiii222222222222222222222222222222222222222222222222ttttttt22tttttttttttttttt22222222tttttttt222222222222222222222222 +iiitiiiiiiiiiii22222222222222222222222222222222222222222222222222222222222222tttttt222222222222tttttttttt22222222222222222222222 +iiiitittiiiiiiii222222222222222222222222222222222222222222222222222222tttttt22222222ttt22222222ttttttttttt2222222222222222222222 +iiiiiiiiiiiiiiii22222222222222222222222222222222222222222222222222222tttttttttttttttttttt222222ttt2ttttttt2222222222222222222222 +iiiiiiiiiiiiiiii2222222222222222222222222222222222222222222222222222tttttttt22222ttttttttt22222tttt2tttttt2222222222222222222j33 +iiiiiiiiiiiiiiii2222222222222222222222222222222222222222222222222222ttttttt2ttttt2ttttttttt22222ttt2tttttt2222222222222222222333 +iiiiiiiiiiiiiiiii222222222222222222222222222222222222222222222222222tttttt2ttttttt2ttttttttt22222222tttttt2222222222222222222333 +iiiiiiiiiiiiiiiii222222222222222222222222222222222222222222222222222tttttt2tttttttt2tttttttttt22222ttttttt222222222222222222i333 +iiiitiiiiiiiiiiii222222222222222222222222222222222222222222222222222tttttt2tttttttt2ttttttttttttttttttttt222222222222222222iij33 +iiiiiiiiiiiiiiiii222222222222222222222222222222222222222222222222222ttttttt2tttttttt2tttttttttttttttttttt22222222222222222iiiiii +iiiiiiiiiiiiiiiiii22222222222222222222222222222222222222222222222222tttttttt222ttttt2ttttttttttttttttttt2222222222222222iiiiiiii +iiiiiiiiiiiiiiiiii22222222222222222222222222222222222222222222222222tttttttttttttttt22ttttttttttttttttt2222222222222222iiiiiiiii +iiiiiiiiiiiiiiiiiii22222222222222222222222222222222222222222222222222ttttttttttttttt222ttttttttttttttt2222222222j333jiij333jiiii +iiiiiiiiiiiiiiiiiiii2222222222222222222222222222222222222222222222222tttttttttttttt222222ttttttttttt22222222222233333ii33333j333 +iiiiiiiiiiiiiiiiiiiiii222222222222222222222222222222222222222222222222ttttttttttttt22222222ttttttt2222222222222233333ii333333333 +iiiiiiiiiiiiiiiiiiiiiiii22222222222222222222222222222222222222222222222ttttttttttt22222222222222222222222222222i33333ii333333333 +iiiiiiiiiiiiiiiiiiiiiiii2222222222222222222222222222222222222222222222222ttttttt2222222222222222222222222222iiiij333jiij33333333 +iiiiiiiiiiiiiiiiiiiiiiiiii22222222222222222222222222222222222222222222222222222222222222222222222222222222iiiiiiiiiiiiij33333333 +iiiiiii22222iiiiiiiiiiiiii22222222222222222222222222222222222222222222222222222222222222222222222222222222iiiiiiiiiiiii333333333 +iiiii222222222iiiiiiiiiiiii2222222222222222222222222222222222222222222222222222222222222222222222222222222iiiiiiiiiiiij333333333 +iiii22222222222iiiiiiiiiiii2222222222222222222222222222iiiiii22222222222222222222222222222222222iiiiii22222iiitiiiiiii3333333333 +iiii222222222222iiiiiiiiiiii2222222222222222222222222ii2222iii2222iii2222222222222222222222222ii2222iii2222iiiiiiiiiij3333333333 +iii222222iii2222iiiiiiiiiiii222222222222222222222222i2222222iii222iiiiii222222222222222222222i2222222iii222iiiiiiiiii33333333333 +iii22222i222i2222iiiiiiiiiiii22222222222222222222222i22222222ii222iiiiiiiiiiiii22222222222222i22222222ii222iiiiiijjii33333333333 +iii22222i2222i222iiiiiiiiiiii22222222222222222222222i22222222ii222iiiiiiiiiiiiiiiiiiii2222222i22222222ii222iiiiij33ji33333333333 +iii22222i2222i2222iiiiiiiiiiii2222222222222222222222i22i22222ii222iiiiiiiiiiiiiiiiiiii2222222i22i22222ii222iiiiij33ji33333333333 +iii222222i222i2222iiiiiiiiiiiii2222222222222222222222ii222222ii222iiiiiiiititiiiiiiiii22222222ii222222ii222iiiiiijjii33333333333 +iii22222222222i2222iiiiiiiiiiiii222222222222i2222222222222222ii222iiiiiiiiiiiiiiiiiiii2222222222222222ii222iiiiiiiiii33333333333 +iii22222222222i2222iiiiiiiiiiiiiii222222222iii22222222222222iii22iiiiiiitiitttiiiiiiiii22222222222222iii22iiiiiiiiiiij3333333333 +iiii2222222222i2222iiiii2222iiiiiiii2222iiiiii2222222222222iii222iiiiiiitittittiiiiiiii2222222222222iii222iiiiiiiiiiii3333333333 +iiii2222222222i22222iii222222iiiiiiiiiiiiiiiiii22222222222iiii22iiiiiiiitittttitiiiiiiii22222222222iiii22iiiiiiiiiiiiij333333333 +iiiii22222222ii22222ii22222222iiiiiiiiiiiiiiiiii222222222iiii222iiiiiiiiittitiitiiiiiiiii222222222iiii222iiiiiiiiiiiiiij33333333 +iiiiii222222iii222222i22222222iiiiiiiiiiiiiiiiiiii22222iiiii222iiiiiiiiiiiiiiitiiiiiiiiiiii22222iiiii222iiiiiiiiiiiiiiiii3333333 +iiiiiiiiiiiiiii222222ii2222i222iiiiiiiiiiiiiiiiiiiiiiiiiiiii22iiiiiiiiiiiititiiiiiiiiiiiiiiiiiiiiiiii22iiiiiiij3jiiiiiiij3333333 +iiiiiiiiiiiiiiii222222ii222i222iiiiiiiiiiiiiiiiiiiiiiiiii2iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii2iiiiiiiiiii333iiiij3333333333 +iiiiiiiiiiiiiiii2222222iiii2222iiiiiiiiiiiiiiiiiiiiiiiii222iiiiiiiiiiiiiiiiiiiiiiiiitiiiiiiiiiiii222iiiiiiiiiij3jiij333333333333 +iiiiiiiiiiiiiiiii2222222222222iiiiiiiiiiiiiiiiiiiiiiiiiii2iiiiiiiiiiiiiijjiiiiiiiiiiiiiiiiiiiiiiii2iiiiiiiiiiiiiii33333333333333 +iiiiiiiiiiiiiiiiii222222222222iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij33jiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii333333333333333 +iiiiiiiiiiiiiiiiiii2222222222iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij33jiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii3333333333333333 +iiiiiiiiiiiiiiiiiiiii2222222iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij3jiiiiiijjij33jiiiiiiiij33jiiiiiiiiiiiiiiij333j33333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiitiiiiiiijjiij3jiiiiiiiii333iiiiiiiii3333iiiiiiij3333jiiiiiiiiiiiiii3333333333333333333333 +iiiiiiiiiittitiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij33ji333iiiiiiiiij3jiiiiiiij33333iiiiiii333333iiiiiiiiiiiiii3333333333333333333333 +iiiiiiiiiiiiiitiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij33jij3jiiiiiiiiiiiiiiiiij33333333jiiiii333333iiiiiiiiiiiiii3333333333333333333333 +iiiiiiiitiiiiiiiiiiiiiiiiiiiiiiiiiitiiiiiiiiiiijjiiiiiiiiiiiiiiiiij333j33333333333iiiij3333jiiiiiiiiiiiiiij333333333333333333333 +iiiiiiitiittitiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii33333333333333333iiiij33jiiiiiiiiiiiiiiij333333333333333333333 +iiiiiiitittitttiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii333333333333333333iiiiiiiiiiiiiiiij33jii3333333333333333333333 +iiiiiiitiitttitiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij33333jiiiiii333333333333333333jiiiiiiiiiiiiij333333j3333333333333333333333 +iiiiiiiitiiittiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij3333j33333333iiii33333333333333333333iiiiiiij333jj333333333333333333333333333333 +iiiiiiiiittttiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii3333333333333333jj333333333333333333333jiiiiii333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij3333333333333333333333333333333333333333iiiiii333333333333333333333333333333333333 +iiitiiiiiiiiiiiiiiiiiijiiiiiiiiiiiiiiiiiiiiii33333333333333333333333333333333333333333jiiiii333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiij3jiiiiiiiiiiiiiiiiiiiii333333333333333333333333333333333333333333iiiiij33333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiijiiiiiiiiiiiiiiiiiiiiii333333333333333333333333333333333333333333jiiij333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiijiiiiiiiiiiiiij3jiiiiiiii33333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiij3jiiiiij333jii333iiiiiiiij3333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiitiiiiiiiiiijiiiiii33333iij3jiiiiiij333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiii33333iiiiiiiiij33333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiii33333iiiiiiiij333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiiij333jiiiiiiii3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 + +__sfx__ +a008000022614286102d6103061033610356103661037610376103561034610326102e6102b610286102661022610206101d610186101661013610116100f6100c61009610066100461003610016100161000615 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +471200001f0111f0121f0121f0121f0121f0121f0121f0122101121012210122101215012210122d0122d01321012210122101221012210122101221012210122301223012230122301223012230122301223012 +411200002201122012220122201222012220122201222012250112501225012250120d01219012250122501325012250122501225012250122501225012250122701227012270122701227012270122701227012 +41120000260112601226012260122601226012260122601228011280122801228012100121c012280122801328012280122801228012280122801228012280122a0112a0122a0122a0122a0122a0122a0122a012 +001208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +d11c00081f011220161a0161f0162b0112e016260162b016000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +490e00101000334615346253461510073346153462534615100033461534625346151007334615346253461500000000000000000000000000000000000000000000000000000000000000000000000000000000 +110e00080030207755077550775500700077550775507755000000000500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +09380000221212212229121291222912500100001000f1021b1211b1222812128122281250010000100281021d1211d1222112121122211250010000100211021f1211f122221212212222125221002210000000 +a71c0010373272e327373272e327373122d312223120c3122b327223272b327223272b31221312163120031200000000000000000000000000000000000000000000000000000000000000000000000000000000 +490e0008100533460510003346051c655346050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +4d0e002010053073250a425093251c655073250c4250a32510053073250a425093251c655073250c4250e32510053073250a425093251c655073250c4250a32510053073250a425093251c655073250042502325 +d11c000821011240161c016210162d01130016280162d01621000180001c000210002d00024000280002d00000000000000000000000000000000000000000000000000000000000000000000000000000000000 +4d0e002012053093250c4250b3251e655093250e4250c32512053093250c4250b3251e655093250e4251032512053093250c4250b3251e655093250e4250c32512053093250c4250b3251e655093250242504325 +4d0e00200e0530532508425073251a655053250a425083250e0530532508425073251a655053250a4250c3250e0530532508425073251a655053250a425083250e0530532508425073251a655053250042500325 +d11c000821011240161c016210162d01130016280162d0161f000220001a0001f0002b0002e000260002b00000000000000000000000000000000000000000000000000000000000000000000000000000000000 +d10e00201f42222422264222e4021f42222422264222e4021f42222422264222e4021f42222422264222e40225422284222c4222840225422284222c4222840225422284222c4222840225422284222c42234402 +911c02042b311133212b3211331100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +490e000021600156002160021600216003960039600396002162515600216002160021625396003960039600156252160521625240002d625396053962500000156251560521625216052d625396253962539625 +5d0e0020100730715407252071521c675071440c1420a14210073071540a152091521c675071540c3520e152160730d1540d2510d253226750d154121521015216073160731607316073226750d3541946425474 +5d0e0020100730713407242071321c675071340c1320a13210073071340a132091321c675071340c3420e132100730713407251072531c675071340c1320a13210073071340a132091321c675071340035202452 +5d0e0020100730727407252072521c675073440c4420a34210073073440a442093421c675073440c4420e342100730725407251072531c675073440c4420a34210073073440a442093421c675073440044202342 +5d0e0020100730725407252072521c675073440c4420a34210073073440a442093421c675073440c4420e342160730d2440d2410d243226750d3441244210342160730d344104420f342226750d3440644208342 +5d0e0020120730925409252092521e675093440e4420c34212073093440c4420b3421e675093440e44210342180730f2540f2510f253246750f3441444212342180730f3441244211342246750f344084420a342 +d10e002021422244222842230402214222442228422304022142224422284223040221422244222842230402274222a4222e4222a402274222a4222e4222a402274222a4222e4222a402274222a4222e42236402 +5d0e0020100730724413242072421c6751f2442b2421f24210073133441f340093421c67513344184420e342100730d244192410d243226750d2441e44210342100730d344104420f34222675193442b2422b243 +490e0010100633461534625346151e665346151006334615100633461534625346151e66534615346253461500000000000000000000000000000000000000000000000000000000000000000000000000000000 +5d0e0020120731524421242152421e67515244212422124312073093440c4420b3421e6751e6751e6751e675180730f2441b2410f243246750f2442c2421e242180730f3441244211342246750f3442044222342 +5d1c0008100530723413232072321c655072341323207242100001330007300093001c60013300184000e300100000d200192000d200226000d2001e40010300100000d300104000f30022600193002b2001f200 +5d1c1000100000723413232072321c6000723413232072321000007234132321f2321c600072341f23213232100000d200192000d200226000d2001e40010300100000d300104000f30022600193002b2001f200 +5d381000072440724213242072421c675072441c6751f242072440724213242072421c675072001c6001f200100000d200192000d200226000d2001e40010300100000d300104000f30022600193002b2001f200 +471200001f0111f0121f0121f0121f0121f0121f0121f0122101121012210122101215012210122d0122d0131d0121d0121d0121d0121d0121d0121d0121d0121f0111f0121f0121f012130121f0122b0122b013 +411200002201122012220122201222012220122201222012250112501225012250120d01219012250122501321012210122101221012210122101221012210122201122012220122201216012220122e0122e013 +41120000260112601226012260122601226012260122601228011280122801228012100121c01228012280132401224012240122401224012240122401224012260112601226012260120e0121a0122601226013 +5d1200000702213022070221302207022130220702213022090221502209022150220902215022090221502205022110220502211022050221102205022110220702213022070221302207022130220702213022 +5d120000100731302207022130221c675130220702213022100731502209022150221c675150220902215022100731102205022110221c675110220502211022100731302207022130221c675130220702213022 +5d120000100731302207022130221c675130220702213022100731502209022150221c675150220902215022100731502209022150221c6751502209022150220b0220b0220b0220b0220b0220b0220b0220b022 +__music__ +00 20616263 +00 20256263 +01 20266144 +00 23266263 +00 24266263 +00 20266144 +00 27286144 +02 2a296144 +00 2c6b4344 +00 2c2f4344 +00 2c304344 +00 2b2e6161 +00 33326161 +00 2d2e6161 +01 21316161 +02 21326161 +01 37756161 +01 37756161 +00 37356161 +01 21316161 +00 21326161 +00 35316161 +00 35326161 +00 35396161 +00 21346161 +00 21366161 +00 35346161 +00 35366161 +02 35236161 +01 7a3d7d7d +00 3a3d3c3b +00 413e657e +00 3a3e3c3b +00 413e657e +02 3a3d3c3b +00 1b1a1c3f +04 1d424344 + diff --git a/toxicinvaders_misc/musicplayer/objects_music.lua b/toxicinvaders_misc/musicplayer/objects_music.lua new file mode 100644 index 0000000..3c12f48 --- /dev/null +++ b/toxicinvaders_misc/musicplayer/objects_music.lua @@ -0,0 +1,69 @@ +obj = {} +gt = 0 -- game time +ft = 1/60 --frametime +scrollspeed = 0 +menushipscroll = 0 +acidcounter = 0 +hideui = false +autoplay = false +autoplaytimer = 90 +tracknumber = 0 +currentsong = -1 +fadeouttimer = 1 +tracktitleposition = -200 +newtracktitleposition = 0 + +function playsong(song, fade) + fade = fade or 0 + if song ~= currentsong then + music(song, fade) + currentsong = song + end +end + +function fadeoutsong() + fadeouttimer = 1 + playsong(-1,1000) --fades out currentsong +end + +function selectmusic() + if tracknumber == -1 then + tracknumber = 0 + elseif tracknumber == 0 then + playsong(29) + elseif tracknumber == 1 then + playsong(0) + elseif tracknumber == 2 then + playsong(8) + elseif tracknumber == 3 then + playsong(17) + elseif tracknumber == 4 then + playsong(35) + end +end + +function updatetracktitlepos() + if tracknumber == 0 then + newtracktitleposition = -4 + elseif tracknumber == 1 then + newtracktitleposition = 164 + elseif tracknumber == 2 then + newtracktitleposition = 336 + elseif tracknumber == 3 then + newtracktitleposition = 517 + elseif tracknumber == 4 then + newtracktitleposition = 700 + end +end + +function updateobjs() + foreach(obj, function(obj) obj:update() end) +end + +function drawobjs() + foreach(obj, function(obj) obj:draw() end) +end + +function lerp(start, destination, amount) + return start + amount * (destination - start); +end
\ No newline at end of file diff --git a/toxicinvaders_misc/musicplayer/particles_music.lua b/toxicinvaders_misc/musicplayer/particles_music.lua new file mode 100644 index 0000000..18ef3f8 --- /dev/null +++ b/toxicinvaders_misc/musicplayer/particles_music.lua @@ -0,0 +1,29 @@ +function addcircle(x, y, velx, vely, r, time, color, grav) + local circle = { + x = x, + y = y, + velx = velx, + vely = vely, + r = r, + time = time, + t = time, + col = color, + grav = grav or 0 + } + + function circle.draw() + circfill(circle.x, circle.y, circle.r*sin(circle.time/circle.t), circle.col) + end + + function circle.update() + circle.x += circle.velx + circle.vely -= circle.grav + circle.y += circle.vely + circle.time -= ft + if circle.time < 0 then + del(obj, circle) + end + end + + add(obj, circle, 1) +end
\ No newline at end of file diff --git a/toxicinvaders_misc/musicplayer/toxicinvadersost.p8.png b/toxicinvaders_misc/musicplayer/toxicinvadersost.p8.png Binary files differnew file mode 100644 index 0000000..be3e41b --- /dev/null +++ b/toxicinvaders_misc/musicplayer/toxicinvadersost.p8.png diff --git a/toxicinvaders_misc/musicplayer/ui_music.lua b/toxicinvaders_misc/musicplayer/ui_music.lua new file mode 100644 index 0000000..387b174 --- /dev/null +++ b/toxicinvaders_misc/musicplayer/ui_music.lua @@ -0,0 +1,90 @@ +function printdropshadow(text,x,y,colorMain,colorShadow) + print(text,x,y+1,colorShadow) + print(text,x,y,colorMain) +end + +function invaderslogotext(x,y) + --default values + -- x = 12 + -- y = 20 + + invaderstext = "I N V A D E R S" + for i = 1, 12, 1 do + print(invaderstext, x+i%3-1, y+i%4-1, 3) + end + print(invaderstext,x,y,14) + clip(x, y, 63, 3) + print(invaderstext,x,y,11) + clip() + + soundtracktext = "the soundtrack" + for i = 1, 12, 1 do + print(soundtracktext, x+i%3+1, y+i%4+9, 2) + end + print(soundtracktext,x+2,y+10,10) + clip(x+2, y+9, 69, 3) + print(soundtracktext,x+2,y+10,9) + clip() +end + +function drawlogo(x,y) + --default values + -- x = 24 + -- y = 26 + + sspr(88,88,16,8,x-3,y+2,32,16) --to shadow + sspr(88,88,16,8,x-3,y,32,16) --to + sspr(120,88,8,8,x+55,y+2,16,16) --ic shadow + sspr(120,88,8,8,x+55,y,16,16) --ic + --X + sspr(104,88,8,8,x+26,y-9,16,16) + sspr(104,88,8,8,x+42,y-9,16,16,true) + sspr(112,88,8,8,x+26,y+7,16,16,true) + sspr(112,88,8,8,x+42,y+7,16,16) + --invaders + invaderslogotext(x+11,y+20) +end + +function mainmenutext(x,y,currentlyplaying) + -- default values + -- x = 24 + -- y = 62 + x -= 1 + + printdropshadow("(\139) track selection (\145)",x,y,9,2) + + poke(0x5f58, 0x9 | 0x4) --makes score BIG + printdropshadow("iDLE iNERTIA bATTLE bEATS pADRONE pANIC fISSURE fINALE vICTORY vESSLE",x-tracktitleposition+circletimex,y+18+circletimey,11,3) + poke(0x5f58) +end + +function credits(x,y) + -- default vaues + -- x = 10 + -- y = 100 + sintimecredits = sin(t())*2 + timemodcredits = (t()%2<1) + + palt(2,true) + palt(0,false) + spr(186,x,y+sintimecredits,1,1,timemodcredits) --duck + palt() + printdropshadow("1029chris",x+11,y+2,9,2) +end + +--intro/ending acid effect +function acidtransition() + if acidcounter < 3 then + for i = 1, 128, 1 do + line(i-1,128,i-1,sin((i+0.22-acidcounter*20)/24.357)*2+acidcounter*80-5,11) --cool wavy transition effect!!!! + line(i-1,128,i-1,sin((i+acidcounter*60)/44.357)*5+acidcounter*80,3) + end + addcircle(rnd(128), acidcounter*80+5, 0,rnd(1),rnd(12)+2,1.5,14) + end +end + +--sfx for the intro transition +sfx(0,3,3) + +menuitem(1, "(\152) hide ui", function() hideui = not hideui end) +menuitem(3, "(❎ ⁙ 🅾️) to end", function() music(-1,3000,3) end)
\ No newline at end of file diff --git a/toxicinvaders_misc/musicplayer/update_music.lua b/toxicinvaders_misc/musicplayer/update_music.lua new file mode 100644 index 0000000..3e79211 --- /dev/null +++ b/toxicinvaders_misc/musicplayer/update_music.lua @@ -0,0 +1,51 @@ +--similar math elements grouped to lower tokens +flashtime = (ceil(t()*10%2) == 1) --for flashing elements (ship, score) +circletimex = sin(t())*3 -- for elements that move in a circle (respawn timer) +circletimey = cos(t())*3 + +gt += scrollspeed + 1/600 +fadeouttimer -= ft + +if t() < 2 then -- weird if because of freezing bubbles in the menu + updateobjs() --update all objects +end + +if tracknumber < 0 then + tracknumber = 4 +elseif tracknumber > 4 then + tracknumber = 0 +end + +if btnp(0) then + tracknumber-=1 + updatetracktitlepos() + fadeoutsong() +elseif btnp(1) then + tracknumber+=1 + updatetracktitlepos() + fadeoutsong() +end + +if fadeouttimer <= 0 then + fadeouttimer = 0 + selectmusic() + updatetracktitlepos() +end + +if autoplay then + autoplaytimer -= ft + if autoplaytimer <= 0 then + autoplaytimer = 90 + tracknumber+=1 + fadeoutsong() + end + autoplaymenutext = "(♪) autoplay" +else + autoplaymenutext = "(◆) autoplay" +end +menuitem(2, autoplaymenutext, function() autoplay = not autoplay end) + + +if btnp(4) and btnp(5) then music(-1,3000) end + +tracktitleposition = lerp(tracktitleposition,newtracktitleposition,0.03)
\ No newline at end of file diff --git a/toxicinvaders_misc/privacy.md b/toxicinvaders_misc/privacy.md new file mode 100644 index 0000000..f823de4 --- /dev/null +++ b/toxicinvaders_misc/privacy.md @@ -0,0 +1,5 @@ +## Privacy Policy + +The Android version of Toxic Invaders does not and can not connect to the internet. It does not collect any personal data. + +If there are any problems, contact 1029chris@gmail.com |
