CINXE.COM
Lexaloffle Blog
<html> <head> <title>Lexaloffle Blog</title> <meta charset="utf-8"/><meta property="og:title" content="Lexaloffle Blog"/> <meta name="viewport" content="width=device-width"> <script type="text/javascript"> function microAjax(B,A){this.bindFunction=function(E,D){return function(){return E.apply(D,[D])}};this.stateChange=function(D){if(this.request.readyState==4){this.callbackFunction(this.request.responseText)}};this.getRequest=function(){if(window.ActiveXObject){return new ActiveXObject("Microsoft.XMLHTTP")}else{if(window.XMLHttpRequest){return new XMLHttpRequest()}}return false};this.postBody=(arguments[2]||"");this.callbackFunction=A;this.url=B;this.request=this.getRequest();if(this.request){var C=this.request;C.onreadystatechange=this.bindFunction(this.stateChange,this);if(this.postBody!==""){C.open("POST",B,true);C.setRequestHeader("X-Requested-With","XMLHttpRequest");C.setRequestHeader("Content-type","application/x-www-form-urlencoded");C.setRequestHeader("Connection","close")}else{C.open("GET",B,true)}C.send(this.postBody)}}; </script> <STYLE TYPE="text/css"> <!-- @font-face { font-family: 'proggyvec'; src: url('/proggyvec.woff') format('woff'); } .banner_div{display:block} .topmenu_div{display:table} .lilmenu_div{display:none} .desktop_div{display:inline} .mobile_div{display:none} .avatar{ border-radius:10%; box-shadow: 4px 4px 6px rgba(0.2, 0.0, 0.4, 0.1); } .avatar_tiny{ border-radius:20%; box-shadow: 4px 4px 6px rgba(0.2, 0.0, 0.4, 0.1); } .scrollable_with_touch{ max-width:95vw; overflow-x:auto;overflow-y:hidden; -webkit-overflow-scrolling:touch; } .info_box { display:table; float:left; margin-left:8px; margin-right:16px; margin-top:0px; margin-bottom:16px; text-align:left; } .info_box_right_old {display:table; margin-left:16px; margin-right:8px; margin-top:-10px; margin-bottom:16px; float:right; text-align:left; } .info_box_right { margin-top:-10px; } .info_box h2 {margin-top:-16px;} h2 {margin-top:0px;} .info_group { display:table; max-width:800px; margin-bottom:20px; text-align:left } .info_group img{ min-width:192px; } .info_group h2{ text-decoration: none; color:#fab; font-weight: normal; } .lexchex{ padding:8px; color:#444; font-size:12pt; } .lexchex input{ margin-right:6px; height: 24px; width: 24px; background-color: #eee; position:relative; top:4px; } .pip_form_input{ background:#222; color:#ccc; } .form_button{ padding:6px; padding-left:10px; padding-right:10px; display:table; margin-top:12px; border:2px solid; border-color:#999; border-radius:6px; background:#222; color:#ccc; } .form_button:hover{ background-color:#fab; color:#222; cursor:pointer; } .form_button_span{ padding:2px; padding-left:4px; padding-right:4px; display:inline; border:1px solid; border-color:#999; } .form_button_span:hover{ background-color:#fab; color:#222; cursor:pointer; } .edit_tool_button{ padding:4px; display:table; padding-left:8px; padding-right:8px; border-radius:1; margin-right:4px; margin-bottom:2px; border:1px solid; border-color:#999; margin-bottom:8px; } .edit_tool_button:hover{ background-color:#fab; color:#222; cursor:pointer; } .form_tab{ padding:12px; padding-right:20px; padding-top:8px; padding-bottom:8px; display: table; float:left; font-size:14pt; border-radius:0px; margin-right:2px; color:#ccc; background-color:#444; } .form_tab:hover{ background-color:#f8a; color:#fff; cursor:pointer; } zzz_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; width:512px; height:512px; } .favlike{ min-width:160px; } .pixel_perfect{ 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; } .subnav{float:right; max-width:400px; margin-top:10px} .snb{ padding:6px; margin:2px; display:flex; } @media screen and (max-width: 800px) { .subnav{float:left; width:100%;} .snb{padding:5px;} } @media screen and (max-width: 920px) { .banner_div{display:none;} .topmenu_div{display:none;} .lilmenu_div{display:table;} .desktop_div{display:none;} .mobile_div{display:inline;} .info_box{float:left;width:100%; margin:0px; margin-bottom:10px} .info_box_right{float:left; width:100%; margin:0px; margin-bottom:10px} .favlike{ min-width:10px; } } .block { text-align: center; margin: 20px; } .centered { display: inline-block; vertical-align: middle; width: 300px; } img{ max-width: 100%; height:auto; } body{ font-size:11pt; font-family : proggyvec; line-height: 1.4; color:#ccc; background-color:#303030; margin:0px; padding:0px; } code { padding:2px; margin:2px; padding-left:4px; padding-right:4px; background-color:#ddd; color: #222; } TD{font-size:11pt;} p{ font-size:11pt; } pre{ font-size:11pt; } code{ font-size:11pt; } a:hover { cursor:pointer; } b{color: #ffffff} .tag { float:left; display:table; text-align:left; font-size:8pt; margin-right:4px; margin-bottom:4px; padding:3px; padding-left:6px; padding-right:6px; background-color:#aaa; color:#444; border-radius:2px; } .tag:hover { cursor:pointer; color:#fff; background-color:#f8a; } .tagblue { font-size:8pt; padding:4px; padding-left:6px; padding-right:6px; background-color:#8ad; color:#222; margin-top:6px; display:inline-block; border-radius:2px; } .tagblue:hover { cursor:pointer; color:#fff; background-color:#f8a; } .bright_hover{ cursor:pointer; opacity: 0.3; } .bright_hover:hover{ opacity: 1.0; } .menu_icon_lil { display:inline-block; padding-top:4px; padding-left:2px; padding-right:2px; } .menu_icon { display:inline-block; padding-top:4px; padding-left:2px; padding-right:2px; } .menu_icon a{ display:inline-block; opacity:0.5; } .menu_icon a:hover{ opacity:1.0; background: #ff80a0; } .menu_icon hover{ opacity:1.0; background: #ff80a0; } .thread_preview{ width:100%; min-height:64px; margin-top:2px; background-color:#444; } .stitched { padding: 10px; padding-left: 20px; padding-right: 20px; margin: 10px; margin-right: 50px; background: #f8f8f8; color: #404040; font-size: 21px; font-weight: bold; line-height: 0.5em; border: 2px dashed #d0e0ff; border-radius: 5px; box-shadow: 0 0 0 4px #f8f8f8, 2px 1px 6px 4px rgba(5, 5, 0, 0.2); font-weight: normal; } .social_button{ opacity:0.5; } .social_button:hover{ opacity:1.0; } .support_button{ padding:8px; background-color:#fab; color:#333; font-size:10pt; display:table; opacity:1.0; } .support_button:hover{ background-color:#fab; opacity:1.0; } .pinkhover{ cursor:pointer; } .pinkhover:hover{ background:#fab; color:#222; } .pink-hover_t a{ opacity: 0.5; } .pink-hover_t2 a{ } .pink-hover a:hover { display: block; background: #ff80a0; opacity: 1.0; } .pink-hover_t a:hover { display: block; background: #ff80a0; opacity: 1.0; } .post_title{ font-size: 9pt; } .post_title2{ font-size: 20pt; color : #ffffff; margin: 0px; margin-bottom: 8px; margin-top:0px; } @media screen and (max-width: 800px) { .post_title2{font-size:16pt}; } .breadcrumbs{ margin-left:8px; font-size:12px; color:#888; border-radius:0px; } .breadcrumbs a:link { color: #ccc; padding: 4px; display:inline-block; } .breadcrumbs a:visited { color: #ccc; background-color: #666; } .breadcrumbs a:hover { color: #fff; background-color: #888; } .breadcrumbs2{ margin-left:8px; font-size:12px; color:#888; border-radius:0px; } .breadcrumbs2 a:link { color: #999; padding: 4px; padding-left: 8px; padding-right: 8px; display:inline-block; } .breadcrumbs2 a:visited { color: #999; } .breadcrumbs2 a:hover { color: #fab; } .post_title3{ font-size: 12pt; font-weight : bold; color : #ff3070; } .blog_title2{ font-size: 20pt; color : #ff3070; } .blog_title{ font-size: 16pt; color : #202020; } .blog_num_comments{ font-size: 14pt; color : #303030; font-weight : bold; } .user_title{ font-size: 12pt; color : #ffe0d0; } h1{color:#ffffff;font-size:22pt;padding-top:8px} h2{color:#ffffff;font-size:18pt;padding-top:16px} h3{color:#f7a; font-size:14pt;padding-top:8px} A:link { text-decoration: none; color: #fff; } A:visited { text-decoration: none; color: #fff; } p A:link { zzz_text-decoration: underline; color:#fbc; } p A:hover{ color:#f0f; } p A:visited { zzz_text-decoration: underline; color:#fbc; } p A:visited:hover { color:#fff; } .link_with_image_unused{ background-image:url("/gfx/ext_link.png"); background-repeat: no-repeat; background-position: right; padding-right:20px;color:#fff; } A:hover { text-decoration: none; color: #fff; } A:active { text-decoration: none; color: #ffffff } .navstring a { color: #808080; font-weight : bold; } .navstring a:hover { color: #faa; font-weight : bold; } .navstring{ color: #c0c0c0; font-weight : bold; } .linkydiv{ display: block; text-align: center; vertical-align: middle; margin: 0px; background-color : #ff80a0; } .linkydiv:hover { background-color : #ff80a0; color: #ffffff; } .cartfile{ float:left; width:160px; height:200px; margin: 4px; padding: 4px; text-align: center; } .cartlabel{ background:#333; width:124; padding:2px; margin-top:8px; padding-top:4px; padding-bottom:4px; font-size:10px; } .cartlabelbig{ background:#333; width:252; padding-top:14px; padding-bottom:14px; margin-top:16px; font-size:16px; } .linkybutton { float: left; font-size: 14px; color: #808080; display: table-cell; text-align: center; vertical-align: middle; padding-top: 10px; padding-bottom: 10px; padding-left: 12px; padding-right: 12px; margin: 0px; height: 16px; } @media screen and (max-width: 800px) { .linkybutton{ float:none; display:flex; padding:12px; align-text: left; margin-left:50px; font-size:11pt; } } .linkbutton.img img{ display:inline-block; vertical-align:middle; } .linkybutton:hover { background-color : #ff80a0; color: #ffffff; } .linkybutton_lil0 { float:left; background-color : #555; padding: 6px; color: #aaa; font-size: 12px; height:20px; vertical-align:center; display:inline-table; margin:2px; } .linkybutton_lil { float:left; background-color : #555; padding: 6px; color: #aaa; font-size: 16px; height:20px; vertical-align:center; display:inline-table; margin:2px; } .linkybutton_lil:hover { background-color : #ff80a0; color: #ffffff; } .pinkbutton{ background:#505050; padding:6px; } .pinkbutton:hover { background-color : #808080; } .pbutton{ padding: 0px; margin: 0px; background-color : #505050; color : #a0a0a0; } .pbutton:hover{ background-color : #707070; } .logininput { font-size: 12px; color: #000000; line-height: 14px; border: 0; margin: 2px; padding: 2px; background-color : #ccc; height: 30px; } .logininput:hover { background-color : #ff80a0; } .logininput2 { font-size: 12px; color: #fff; border-width: 1px; border-style: solid; border-color:#fff; border-radius:3px; margin: 4px; padding: 8px; padding-left:16px; padding-right:16px; background-color : #333; height: 32px; cursor:pointer; } .logininput2:hover { background-color : #ff80a0; } input { background-color:#ffffe0; color:#202020; border-width: 1px; border-style: solid; border-color: #999999; font-size: 12pt; color: #404040; } .lexinput_search { background-color:#999; color:#202020; font-size: 10pt; color: #111; height:20px; margin-right: 8px; } .lexinput { background-color:#ffffe0; color:#202020; border-width: 1px; border-style: solid; border-color: #999999; font-size: 12pt; color: #404040; height:32px; margin-left:8px; } .result_msg { color:#888; } #login_button { width: 48px; height: 16px; margin: 0; padding: 0; border: 0; background: transparent url(img/login_button.png) no-repeat center top; text-indent: -1000em; } #signup_button { width: 48px; height: 16px; margin: 0; padding: 0; border: 0; background: transparent url(img/signup_button.png) no-repeat center top; text-indent: -1000em; } --> </STYLE> <script> var current_time="2024-12-04 00:16:44"; var s_uid=0; function $(name) { return document.getElementById(name); } // globals var p_page = 1; var p_sub = 0; var p_cat = 0; var p_pid = 0; var p_mode = 0; var search_url_base = ""; var tag_url_base = ""; var pip_form_data = {}; var touch_detected = false; var undefined = "undefined"; // :/ var current_playing_cart_id = -1; function microAjax(B,A){this.bindFunction=function(E,D){return function(){return E.apply(D,[D])}};this.stateChange=function(D){if(this.request.readyState==4){this.callbackFunction(this.request.responseText)}};this.getRequest=function(){if(window.ActiveXObject){return new ActiveXObject("Microsoft.XMLHTTP")}else{if(window.XMLHttpRequest){return new XMLHttpRequest()}}return false};this.postBody=(arguments[2]||"");this.callbackFunction=A;this.url=B;this.request=this.getRequest();if(this.request){var C=this.request;C.onreadystatechange=this.bindFunction(this.stateChange,this);if(this.postBody!==""){C.open("POST",B,true);C.setRequestHeader("X-Requested-With","XMLHttpRequest");C.setRequestHeader("Content-type","application/x-www-form-urlencoded");C.setRequestHeader("Connection","close")}else{C.open("GET",B,true)}C.send(this.postBody)}}; // from: https://plainjs.com/javascript/ajax/send-ajax-get-and-post-requests-47/ function post_ajax(url, data, success) { var params = typeof data == 'string' ? data : Object.keys(data).map( function(k){ return encodeURIComponent(k) + '=' + encodeURIComponent(data[k]) } ).join('&'); var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); xhr.open('POST', url); xhr.onreadystatechange = function() { if (xhr.readyState>3 && xhr.status==200) { success(xhr.responseText); } }; xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); //xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.setRequestHeader('Content-Type', 'text/plain; charset=UTF-8'); xhr.send(params); return xhr; } // in ms. 1000, 20 means 50fps for 1 second. function poll_function(duration, interval, func) { var start_t = (new Date()).getTime(); (function p() { tt = (new Date).getTime() - start_t; if (tt <= duration) { func(tt/duration); setTimeout(p, interval); } })(); } function insertTextAtCursor(el, text, overwrite) { if (typeof el == "string") { el_str = el; el = document.getElementById(el); if (!el){ console.log("@ could not find element to insert text: "+el_str); } } var val = el.value, endIndex, range, doc = el.ownerDocument; if (overwrite) { el.focus(); el.value = text; return; } if (typeof el.selectionStart == "number" && typeof el.selectionEnd == "number") { endIndex = el.selectionEnd; el.value = val.slice(0, endIndex) + text + val.slice(endIndex); el.selectionStart = el.selectionEnd = endIndex + text.length; } else if (doc.selection != "undefined" && doc.selection.createRange) { el.focus(); range = doc.selection.createRange(); range.collapse(false); range.text = text; range.select(); } } function set_enter_to_save(el, save_el) { if (!el) return; // experimental: only auto-save when value has changed (can tab through unchanged fields) var start_val = el.value; if (!el.installed_enter_to_save) // only install once { console.log("@installing set_enter_to_save: "+el+", "+save_el); el.installed_enter_to_save = true; el.addEventListener("keyup", function(event){ //console.log(event.keyCode); if (event.keyCode == 13) //if (el.value != start_val) // commented -- don't need / confusing. save_el.click(); //if (event.keyCode == 9) // tab // commented -- use blur if want to do this // save_el.click(); } ); // also auto-save on tab / click off // careful not to introduce double sends (hard to get right -- maybe not worth it) el.addEventListener("blur", function(event){ var x = event.clientX, y = event.clientY; if (typeof x != 'number') return; if (typeof y != 'number') return; var el0 = document.elementFromPoint(x, y); if (!el0 || el0.name != "cancel_button") //if (el.value != start_val) save_el.click(); save_el.click(); } ); } } function toggle_set_button(el_name, post_id, which, sid) { var el = document.getElementsByClassName(el_name); var eli = document.getElementsByClassName('i_'+el_name); if (s_uid == 0) { window.alert("Please log in first."); return; } // window.alert(el_name); for(var i = 0; i < eli.length; i++) { eli[i].innerHTML = '<center><img src=/gfx/load16.gif width=20 height=20></center>'; } microAjax("/bbs/set.php?pid="+post_id+"&sid="+sid+"&which="+which, function (retdata) { var el = document.getElementsByClassName(el_name); for(var i = 0; i < el.length; i++) { el[i].innerHTML = json_parse(retdata)['printable']; } if (which == "tick") { // location.reload(true); // bleh } } ); } function hide_save_draft_button() { var el = document.getElementById("save_draft_button"); if (el) el.style.display = "none"; var el = document.getElementById("preview_button"); if (el) el.style.display = ""; var el = document.getElementById("publish_post_button"); if (el) el.style.innerHTML = "Publish Changes"; } function save_attr(val_id, div_id, url, post_save, extract_snippets) { if (extract_snippets) url = url+'&extract_snippets=1'; //console.log("@ save_attr("+val_id+", "+div_id+", "+url+")"); //console.log(" @ extract_snippets: "+extract_snippets); var el1 = document.getElementById(div_id); var el = document.getElementById(val_id); if (el) { //console.log(" @ sending:" + el.value); value = el.value; post_ajax(url, el.value, function (retdata) { dat = json_parse(retdata); el1.innerHTML = dat['printable']; // set value field if (dat['modified'] && dat['status'] == "ok") el.value = dat['modified']; //else // console.log(" @ no modified text"); if (post_save) post_save(); } ); } else { // grab value from url (val=) instead of body. e.g. catsub buttons microAjax(url, function (retdata) { el1.innerHTML = json_parse(retdata)['printable']; } ) } //el1.innerHTML = '<img src=/gfx/load16.gif>'; el1.innerHTML = '<div style="padding:8px"><img src=/gfx/load16.gif></div>'; } function cancel_attr(val_id, div_id, url) { console.log("@ cancel_attr("+val_id+", "+div_id+", "+url); var el = document.getElementById(val_id); if (el) { var el1 = document.getElementById(div_id); el1.innerHTML = '<div style="padding:8px"><img src=/gfx/load16.gif></div>'; microAjax(url, function (retdata) { el1.innerHTML = json_parse(retdata)['printable'];; } ); } } function edit_attr(val_id, div_id, save_id, url, has_autosave) { //console.log("@ edit_attr("+val_id+", "+div_id+", "+url+", "+has_autosave); var el = document.getElementById(div_id); if (el) { //el.innerHTML='<img src=/gfx/load16.gif>';//+el.innerHTML; el.innerHTML = '<div style="padding:8px"><img src=/gfx/load16.gif></div>'; microAjax(url, function (retdata) { el.innerHTML = json_parse(retdata)['printable']; var el2 = document.getElementById(val_id); if (el2) if (has_autosave) { el2.focus(); //el2.select(); var el3 = document.getElementById(save_id); set_enter_to_save(el2, el3); } } ); } } // enter data function submit_pip_form_data(form) { // for each class=pip_form_input element, add to global pip_form_data var els = document.getElementsByClassName('pip_form_input'); console.log("@ submit form: adding "+els.length+" values"); for(var i = 0; i < els.length; i++) { el = els[i]; if (el.checked) { pip_form_data[el.id] = "checked"; } else if (el.value) { pip_form_data[el.id] = el.value; } console.log("@ set "+el.id+" to "+pip_form_data[el.id]); if (el.files && el.files[0]) { console.log("@ file: "+el.files[0].name); pip_form_data["uploaded_file"] = JSON.stringify(el.files[0]); pip_form_data["uploaded_file_size"] = el.files[0].size; pip_form_data["uploaded_name"] = el.files[0].name; pip_form_data["uploaded_type"] = el.files[0].type; } } } function reload_pip_form(form, step) { var el = document.getElementById(form); console.log("reloading form: "+form+" // step "+step); if (el) { var file_size = 0; if (pip_form_data.file_contents) file_size = pip_form_data.file_contents.length * 6 / 8; if (form == "cart_submit" && file_size > 1024*1024) // 1MB for pico-8 / voxatron carts { window.alert('Sorry, that file is too large. ('+Math.floor(file_size/1024)+'k / 1024k)'); return; } if (file_size > 1024*1024*8) { window.alert('Sorry, that file is too large. ('+Math.floor(file_size/(1024*1024))+'MB / 8MB)'); return; } // upload stringified_data = JSON.stringify(pip_form_data); var el1 = document.getElementById("form_loading_icon"); if (el1) el1.innerHTML='<img src=/gfx/load16.gif>'; //window.alert('pip_form_data.target_field:'+pip_form_data["target_field"]); // pass along some context post_ajax("/form.php?form="+form+"&step="+step+"&cat="+p_cat+"&sub="+p_sub+"&pid="+ p_pid+"&page="+p_page+"&mode="+p_mode, stringified_data, function (retdata) { el.innerHTML = retdata; // not JSON! } ); } else { console.log("@@ could not find form element"); } } function save_open_pip_form_fields() { // click all the save buttons var els = document.getElementsByClassName('form_button'); //for(var i = 0; i < els.length; i++) // invalidates iterator on first save! ha! for(var i = els.length-1; i >= 0; i--) { var el = els[i]; suffix = el.id.substr(el.id.length-5); if (suffix == "_save") el.click(); } } function submit_pip_form(form, step) { // save any open fields submit_pip_form_data(form); reload_pip_form(form, step); } function clear_pip_form() { pip_form_data = {}; } function randomize_cart_id_field() { el = document.getElementById("cart_lid"); c = "bdfghjkmnprstwyz"; v = "aiueo"; val = ""; for (i = 0; i < 5; i++) { val = val + c.substr(Math.floor(Math.random()*16), 1); val = val + v.substr(Math.floor(Math.random()*6), 1); } el.value = val; } // https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string function Uint8ToBase64(u8Arr){ var CHUNK_SIZE = 0x8000; //arbitrary number var index = 0; var length = u8Arr.length; var result = ''; var slice; while (index < length) { slice = u8Arr.subarray(index, Math.min(index + CHUNK_SIZE, length)); result += String.fromCharCode.apply(null, slice); index += CHUNK_SIZE; } return btoa(result); } function reader_onload(evt) { // evt.target.result is a ArrayBuffer var bytes = new Uint8Array( evt.target.result ); pip_form_data["file_contents"] = Uint8ToBase64(bytes); // show submit button var el = document.getElementById("uploaded_button"); el.style.display = "table"; } function filechooser_onchange(files) { var file = files[0]; var reader = new FileReader(); reader.onload = function(evt) { reader_onload(evt); }; reader.readAsArrayBuffer(file); } function toggle_visible(el) { //console.log("@toggle_visible: "+el); if (typeof el == 'string') { el = document.getElementById(el); } if (!el){ return; } if (el.style.display == "") { el.style.display="none"; return false; } else { el.style.display=""; return true; } } /* show active tab under tab_name, hide others assume only one set of tabs on page */ function show_tab(tab_name, which, tab_group) { var el; console.log("toggle tab "+tab_name+"_"+which); if (!tab_group) tab_group = "form_tab"; var els = document.getElementsByClassName(tab_group); //console.log("found "+els.length); for(var i = 0; i < els.length; i++) { el = els[i]; el2 = document.getElementById(el.id+"_content"); if (el.id == tab_name+"_"+which) { // open tab el.style["background-color"] = "#f8a"; el.style.color="#222"; if (el2) console.log(" opening "+el2.id); if (el2) el2.style.display="block"; } else { // hide tab el.style["background-color"] = ""; el.style.color="#fff"; if (el2) console.log(" hiding "+el2.id); if (el2) el2.style.display="none"; } } } function get_cart_url(lid, cat) { //console.log("@get_cart_url lid:"+lid+" cat:"+cat); /* console.log("@number: "+Number(lid)); console.log("@string: "+String(lid)); console.log("@equality:"+((Number(lid) == String(lid)) ? "true" : "false")); */ if (Number(lid) == String(lid) && Number(lid) > 0) { num = Math.floor(lid / 10000); url = `/bbs/cposts/`+num+`/`; if (cat == 6) return url + `cpost` + lid + `.png`; if (cat == 7) return url + lid + `.p8.png`; if (cat == 8) return url + lid + `.p64.png`; } else { lid = String(lid); if (cat == 6) return `/bbs/cposts/`+lid.substr(0,2)+`/`+lid+`.vx.png`; if (cat == 7) return `/bbs/cposts/`+lid.substr(0,2)+`/`+lid+`.p8.png`; if (cat == 8) return `/bbs/cposts/`+lid.substr(0,2)+`/`+lid+`.p64.png`; } return ''; } function element_dismisser(el, event) { var inner = el.childNodes[1]; if (!inner) return; var rect = inner.getBoundingClientRect(); if (!el.real_dismiss) { //console.log(' @@ element_dismisser: not real click -- return early'); el.real_dismiss = true; // next time! return; } if (rect && rect.bottom > 0) if (event.clientX < rect.left || event.clientX > rect.right || event.clientY > rect.bottom || event.clientY < rect.top) { //console.log(' @@ element_dismisser: dismissing'); console.log(rect); el.style.display="none"; document.removeEventListener('click', dismisser_func); } } var dismisser_func = null; function install_dismisser(el1) { //console.log('@@ installing dismisser'); // just in case document.removeEventListener('click', dismisser_func); dismisser_func = function(event){ element_dismisser(el1, event); } document.addEventListener('click', dismisser_func); el1.real_dismiss = false; // hack -- first click is to open pulldown } function install_search_listener(el) { el.addEventListener("keyup", function(event){ if (event.keyCode == 13) window.location.hash = "" + search_url_base + el.value; } ); } function update_checkout() { var checkboxes = document.getElementsByClassName('checkout_checkbox'); var items = document.getElementsByClassName('checkout_item'); var show_which = "buy"; if (document.getElementById("buy_p8") && document.getElementById("buy_p8").checked == true) show_which = show_which + "_p8"; if (document.getElementById("buy_vx") && document.getElementById("buy_vx").checked == true) show_which = show_which + "_vx"; if (document.getElementById("buy_p64") && document.getElementById("buy_p64").checked == true) show_which = show_which + "_p64"; console.log("show_which: "+show_which); // show only the selected bundle / product for (i = 0; i < items.length; i++) { if (items[i].id == show_which) items[i].style.display = ""; else items[i].style.display = "none"; } } function json_parse(data){ if (data[0] != '{'){ window.alert('Error // Bad Data Format: ' + data); return {"printable" : "[error]", "status" : "bad_data"}; } return JSON.parse(data); }</script> <script> var cart_info = {}; // from https://github.com/kripken/emscripten/issues/2053 function fullscreenable_canvas(canEl) { // var canEl = document.getElementById("canvas"); var reqFuncName = (canEl.mozRequestFullScreen || canEl.webkitRequestFullScreen || {"name": "requestFullScreen"}).name; document.addEventListener(reqFuncName.slice(0, -"requestFullScreen".length) + "fullscreenchange", function (evt) { if(document.mozFullScreen || document.webkitIsFullScreen || document.fullScreen || document.isFullScreen) { var w = canEl.clientWidth; var h = canEl.clientHeight; var factor = Math.min(screen.width / w, screen.height / h); canEl.setAttribute("style", "width: " + Math.round(w * factor) + "px !important; height: " + Math.round(h * factor) + "px !important;"); } else { canEl.removeAttribute("style"); } }, false); // in Firefox full screen must be set to the parent of the canvas to allow resizing the canvas for correct aspect ratio if(reqFuncName == "mozRequestFullScreen") { canEl[reqFuncName] = function() { this.parentNode[reqFuncName].apply(this.parentNode, arguments); }; } } function pip_requestFullscreen( element ) { if ( element.requestFullscreen ) { element.requestFullscreen(); } else if ( element.mozRequestFullScreen ) { element.mozRequestFullScreen(); } else if ( element.webkitRequestFullScreen ) { element.webkitRequestFullScreen( Element.ALLOW_KEYBOARD_INPUT ); } } window.onload = function() { //fullscreenable_canvas(); } </script> <script> function validate_signup (form) { if (form.su_agree.checked) { return true; } else { alert ("If you wish to sign up, you need to agree to the Terms of Use") return false; } } </script> </head><body><div id="body_0"> <div class=mobile_div> <div class = "lilmenu_div" style = " padding:0px; margin:0px; top:0px; width:100%; height:128px; background:url('/bbs/files/1/pi_tv_1.jpg') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> <a href="/bbs/?uid=1"> <div style=" position:absolute; top: 0px; height:128; width:100%; "> </div></a> <div style=" position:relative; height:48px; top: 76px; margin:0px; "><div style="float:left; height:48px; display:flex; align-items:center; "> <a onclick=" var el = document.getElementById('lil_menu_pulldown'); toggle_visible(el); var el = document.getElementById('account_pulldown'); el.style.display='none'; "> <div style="background-color:rgba(0,0,0,0.5); margin-left:8px; padding:12px"> <img src="/gfx/top_pulldown.png" width=20 height=20> </div> </a> </div> <div style="float:right; margin-right:12px; height:48px; display:flex; align-items:center; background-color:rgba(0,0,0,0.5); "> <script> function click_account_pulldown() { el1 = document.getElementById('account_pulldown'); if (toggle_visible(el1)) { install_dismisser(el1); el2 = document.getElementById('lil_menu_pulldown'); el2.style.display='none'; } } </script> <a onclick="click_account_pulldown();"> <div style="display:flex; align-items:center; height:100%; float:right; "> <div style=" padding:8px; display:flex; align-items:center; "> Log In  <img style="margin-left:8px;" src="/gfx/top_drop.png"> </div> </div> </a></div></div></div> <style> .pdmi{ display:flex; align-items:center; padding:4px; font-size:12pt; }; </style> <div id="lil_menu_pulldown" style=" z-index: 400; position:absolute; display:table; padding-top:20px; padding-bottom:20px; background-color:rgba(0,0,0,0.8); width:100%; display:none"><div style="width:auto;padding:16px"><div class="menu_icon" title="Lexaloffle Games"><a href="/"><img src="/gfx/top_info.png"></a></div><div class="menu_icon" title="PICO-8"><a href="/pico-8.php"><img src="/gfx/p8b_pico8.png"></a></div><div class="menu_icon" title="Voxatron"><a href="/voxatron.php" style="padding-right:4px;padding-left:4px;"><img src="/gfx/p8b_vox.png"></a></div><div class="menu_icon" title="Picotron"><a href="/picotron.php"><img src="/gfx/p8b_picotron.png"></a></div><div class="menu_icon" title="BBS" ><a href="/bbs"><img src="/gfx/bbs_cube.gif" width=40></a></div><div class="menu_icon" title="Superblog"><a href="/bbs/superblog.php"><img src="/gfx/top_blog.png"></a></div></div><div style="float:left; padding:8px"> <a href="/bbs/?uid=1#m"> @zep</a>:</div><a href=?uid=1#m ><div class="linkybutton" style="background-color : #a0a0a0; color:#fff"><img1 src="/gfx/view_posts0.png"> Blog</div></a><a href=?uid=1&mode=carts&sub=2#m ><div class="linkybutton"><img1 src="/gfx/view_cposts.png"> Cartridges </div></a><a href=?uid=1&mode=gifs#m ><div class="linkybutton"><img1 src="/gfx/view_posts.png"> GIFs</div></a><a href=?uid=1&mode=posts#m ><div class="linkybutton"><img1 src="/gfx/view_posts.png"> Posts</div></a><a href=?uid=1&mode=files#m ><div class="linkybutton"><img1 src="/gfx/view_files.png"> Files</div></a></div></div> <div class = "topmenu_div" id = "banner" style=" margin:0px; top:0px; background-color:#111; width:100%; height:320px; background:url('/bbs/files/1/pi_tv_1.jpg') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> <a href="/bbs/?uid=1"> <div style=" position:absolute; top: 0px; height:320px; width:100%; "> </div></a> <div class = "topmenu_div" id="m" style=" position:relative; top: -47.9px; transform: translate(0, 320px); margin:0px; background-color:rgba(10,0,20,0.8); width:100%; height:48px; "><div style="float:left; margin-left:0px;"><div class="menu_icon" title="Lexaloffle Games"><a href="/"><img src="/gfx/top_info.png"></a></div><div class="menu_icon" title="PICO-8"><a href="/pico-8.php"><img src="/gfx/p8b_pico8.png"></a></div><div class="menu_icon" title="Voxatron"><a href="/voxatron.php" style="padding-right:4px;padding-left:4px;"><img src="/gfx/p8b_vox.png"></a></div><div class="menu_icon" title="Picotron"><a href="/picotron.php"><img src="/gfx/p8b_picotron.png"></a></div><div class="menu_icon" title="BBS" ><a href="/bbs"><img src="/gfx/bbs_cube.gif" width=40></a></div><div class="menu_icon" title="Superblog"><a href="/bbs/superblog.php"><img src="/gfx/top_blog.png"></a></div><div style="display:inline-block;background-color:#555;width:1px;height:40px; margin-left:10px;margin-right:10px"></div><div style="display:inline-block;margin:4px" class="navstring"><div style="float:left; padding:8px"> <a href="/bbs/?uid=1#m"> @zep</a>:</div><a href=?uid=1#m ><div class="linkybutton" style="background-color : #a0a0a0; color:#fff"><img1 src="/gfx/view_posts0.png"> Blog</div></a><a href=?uid=1&mode=carts&sub=2#m ><div class="linkybutton"><img1 src="/gfx/view_cposts.png"> Cartridges </div></a><a href=?uid=1&mode=gifs#m ><div class="linkybutton"><img1 src="/gfx/view_posts.png"> GIFs</div></a><a href=?uid=1&mode=posts#m ><div class="linkybutton"><img1 src="/gfx/view_posts.png"> Posts</div></a><a href=?uid=1&mode=files#m ><div class="linkybutton"><img1 src="/gfx/view_files.png"> Files</div></a></div></div> <script> function click_account_pulldown() { el1 = document.getElementById('account_pulldown'); if (toggle_visible(el1)) { install_dismisser(el1); el2 = document.getElementById('lil_menu_pulldown'); el2.style.display='none'; } } </script> <a onclick="click_account_pulldown();"> <div style="display:flex; align-items:center; height:100%; float:right; "> <div style=" padding:8px; display:flex; align-items:center; "> Log In  <img style="margin-left:8px;" src="/gfx/top_drop.png"> </div> </div> </a></div></div><div id = "account_pulldown" style="position:relative; left: -28px; float:right; width: 240px; height:0px; z-index: 400; display:none;" > <div id = "account_pulldown_inner" style=" padding:12px; background-color:rgba(0,0,0,0.8); width:100%; border-width: 1px; border-style: solid; border-color: #000; "> <div style="margin-right:20px"> <form style="margin:8px;" name="loginsubmit" method="post" action="/account.php?page=login"> <table><tr> <td>User:</td><td> <INPUT name="user" class="logininput" size=16 ><br> </td></tr><tr><td> Password:</td><td> <INPUT name="pass" type="password" class="logininput" size=16 type=text><br> <INPUT type="hidden" name="go" value="/bbs/?uid=1"> </td></tr><tr><td></td><td> <input type=submit class="logininput2" style="margin-top:8px" value="LOG IN"> </td></tr></table> <br> <a href="/account.php?page=new_user" style="color:#fab">New User</a> | <a href="/account.php" style="color:#fab">Account Help</a> </td></tr></table> </form></div></div></div> <div style="max-width:100vw; padding:0vw"> <div id="main_div" style=" max-width:1120px; min-height:50vh; margin:auto; display:block; padding-top:16px; padding-bottom:16px; overflow:hidden; " ><script language="javascript" type="text/javascript"> var p_sub = 0; var p_cat = 0; var s_uid = 0; var p_page = "1"; var p_mode = ""; var imageChooserWindow; function popup(which) { if (imageChooserWindow) imageChooserWindow.close(); imageChooserWindow=window.open('popup.php?page='+which,'windowname','height=600,width=600,scrollbars=yes'); } function load_hash_location() { var h = window.location.hash.substr(1); var params = 'use_hurl=1'; // use "#url" format for single page location changes if (typeof p_cat !== 'undefined') params = params+'&cat=' + p_cat; // pass along params specified in ? part // (when clicked, effectively moves from ? part to # part if (typeof p_sub !== 'undefined') params = params+'&sub='+p_sub; if (typeof p_page !== 'undefined') params = params+'&page='+p_page; if (typeof p_mode !== 'undefined') params = params+'&mode='+p_mode; if (typeof p_orderby !== 'undefined') params = params+'&orderby='+p_orderby; params = params+'&'+h; console.log("@ load_hash_location "+params); // set main_list to loading show_loading_spinner(); // /bbs/lister.php microAjax('lister.php?'+params, function (retdata) { var el = document.getElementById('main_list'); if (el) { el.innerHTML = retdata; hide_loading_spinner(); // re-run self (including this) var el2 = document.getElementById('cart_data_script'); if (el2) { console.log("@ running cart_data_script\n"); eval(el2.innerHTML); } update_stick_scrolling(); } } ); } function show_loading_spinner() { var el = document.getElementById('loading_spinner'); //if (el) el.style.display = 'block'; if (el) el.innerHTML='<img src="/gfx/load16.gif">'; } function hide_loading_spinner() { // var el = document.getElementById('loading_spinner'); // if (el) el.style.display = 'none'; } function get_relative_time(s) { //return '['+current_time+' , '+s+']'; var d0 = Math.round(new Date(s.replace(" ","T")).getTime() / 1000); //var d1 = Math.round(new Date().getTime() / 1000); var d1 = Math.round(new Date(current_time.replace(" ","T")).getTime() / 1000); var t = d1-d0; // seconds if (t < 60) return "just now"; //return Math.round(t)+" seconds ago"; if (t < 3600) return Math.round(t / 60)+" minutes ago"; if (t < 3600*24) return Math.round(t / 3600)+" hours ago"; // convert to days t = Math.round(t / (3600*24)); if (t < 30) return Math.round(t)+" days ago"; if (t < 365) return Math.round(t/30.43)+" months ago"; return Math.round(t/365.25)+" years ago"; } function update_stick_scrolling() { var el = document.getElementById('sticky'); if (el) { // when placeholder parent is above top of screen, make fixed var screen_y = el.parentNode.getBoundingClientRect().top; if (screen_y < 0) el.style.position = 'fixed'; else el.style.position = 'relative'; } } document.addEventListener("scroll", update_stick_scrolling); function print_cart_code(url, div_id) { /* if (print_pico8_code){ print_pico8_code(url, div_id); return; } */ window.alert("printing code 1! "+url+" "+div_id); e = document.createElement("script"); e.type = "application/javascript"; e.src = "/bbs/cart_tools.js"; e.id = "e_script"; document.body.appendChild(e); // load and run Module.onRuntimeInitialized = _ => { const print_pico8_code = Module.cwrap('print_pico8_code', 'number', ['string','string']); print_pico8_code(url, div_id); }; } </script><div style="display:table; padding-bottom:8px; margin-bottom:8px; width:100%;"><div style="width:100%; display:table;"><div style="width:100%; display:table; margin-left:0px; margin-bottom:16px; margin-top: 16px; "><div class=form_button style="display:table; float:right; margin-right:20px; padding:6px; padding-left:10px; padding-right:10px; margin:4px; " onclick="toggle_set_button('rate_1_follow', 1, 'follow', 11);" ><div style="display:table; float:left; margin-right:6px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_1_follow" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_1_follow" > <img src="/gfx/set_follow0.png" width=20 height=20> </div></div></div>Follow</div><img class="avatar" width=96 height=96 src="/media/1/grappleoid_wave.png" style="float:left; margin-left:8px; margin-right:16px; "><div style="margin-top:0px; margin-bottom:10px; margin-right:16px; color:#fff; font-size:24pt">zep</div><a target=_rss href="/bbs/feed.php?uid=1" class=social_button> <img src="/gfx/so_rss.png" width=24 height=24 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=24 height=24 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=24 height=24 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=24 height=24 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=24 height=24 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=24 height=24 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=24 height=24 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> <div style="max-width:95vw;margin-left:10px; margin-right:10px; margin-bottom:10px"> <p>Making fantasy consoles (<a href="http://www.voxatron.com">Voxatron</a>, <a href="http://www.pico-8.com">PICO-8</a> and <a href="https://www.lexaloffle.com/picotron.php">Picotron</a>) and trying to make my way back to userland.</p> </div> </div></div><div style=" overflow-x:auto; overflow-y:hidden; -webkit-overflow-scrolling:touch; max-height:240px; margin-bottom:12px; display:flex;"><div style="padding-bottom:10px; overflow-x:auto; overflow-y:hidden; -webkit-overflow-scrolling:touch; height:224px; display:flex;"><div onclick="document.location.href='/bbs/?tid=145156';return true;" style="cursor:pointer; margin-left:8px; min-width:224px; max-width:224px; height:224px; margin-bottom:12px; background:url('/media/1/px9 visualiser_1.gif') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> </div><div onclick="document.location.href='/bbs/?tid=144566';return true;" style="cursor:pointer; margin-left:8px; min-width:344px; max-width:344px; height:224px; margin-bottom:12px; background:url('/media/25898/q2_q3_picoview_coverart_128.png') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> <div style="padding:8px; background-color:rgba(8,0,16,0.6); width:328px; display:table; overflow:hidden"> <span style="font-size:14pt; color:#ddd; "> Pico-View Issue #14</span> <br> <a href="/bbs/?uid=25898"> <span style="font-size:9pt; color:#bbb"> by </span> </a> </div> </div><div onclick="document.location.href='/bbs/?tid=144356';return true;" style="cursor:pointer; margin-left:8px; min-width:224px; max-width:224px; height:224px; margin-bottom:12px; background:url('/media/1/many_pixels.gif') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> </div><div onclick="document.location.href='/bbs/?tid=52576';return true;" style="cursor:pointer; margin-left:8px; min-width:344px; max-width:344px; height:224px; margin-bottom:12px; background:url('/bbs/thumbs/pico8_tfl-1.png') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> <div style="padding:8px; background-color:rgba(8,0,16,0.6); width:328px; display:table; overflow:hidden"> <span style="font-size:14pt; color:#ddd; "> Time For Lunch</span> <br> <a href="/bbs/?uid=1"> <span style="font-size:9pt; color:#bbb"> by </span> </a> </div> </div><div onclick="document.location.href='/bbs/?tid=144083';return true;" style="cursor:pointer; margin-left:8px; min-width:224px; max-width:224px; height:224px; margin-bottom:12px; background:url('/media/1/aberrated_carpet.gif') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> </div><div onclick="document.location.href='/bbs/?tid=46984';return true;" style="cursor:pointer; margin-left:8px; min-width:344px; max-width:344px; height:224px; margin-bottom:12px; background:url('/bbs/thumbs/pico8_picochill-1.png') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> <div style="padding:8px; background-color:rgba(8,0,16,0.6); width:328px; display:table; overflow:hidden"> <span style="font-size:14pt; color:#ddd; "> Pico & Chill</span> <br> <a href="/bbs/?uid=11292"> <span style="font-size:9pt; color:#bbb"> by </span> </a> </div> </div><div onclick="document.location.href='/bbs/?tid=47278';return true;" style="cursor:pointer; margin-left:8px; min-width:344px; max-width:344px; height:224px; margin-bottom:12px; background:url('/media/1/pico8_edu_release.gif') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> <div style="padding:8px; background-color:rgba(8,0,16,0.6); width:328px; display:table; overflow:hidden"> <span style="font-size:14pt; color:#ddd; "> PICO-8 Education Edition for Web</span> <br> <a href="/bbs/?uid=1"> <span style="font-size:9pt; color:#bbb"> by </span> </a> </div> </div><div onclick="document.location.href='/bbs/?tid=40058';return true;" style="cursor:pointer; margin-left:8px; min-width:344px; max-width:344px; height:224px; margin-bottom:12px; background:url('/bbs/thumbs/pico8_wobblepaint-6.png') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> <div style="padding:8px; background-color:rgba(8,0,16,0.6); width:328px; display:table; overflow:hidden"> <span style="font-size:14pt; color:#ddd; "> Wobblepaint</span> <br> <a href="/bbs/?uid=1"> <span style="font-size:9pt; color:#bbb"> by </span> </a> </div> </div><div onclick="document.location.href='/bbs/?tid=34009';return true;" style="cursor:pointer; margin-left:8px; min-width:344px; max-width:344px; height:224px; margin-bottom:12px; background:url('/bbs/files/1/pocketchip3_0.gif') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> <div style="padding:8px; background-color:rgba(8,0,16,0.6); width:328px; display:table; overflow:hidden"> <span style="font-size:14pt; color:#ddd; "> PICO-8 For PocketCHIP</span> <br> <a href="/bbs/?uid=1"> <span style="font-size:9pt; color:#bbb"> by </span> </a> </div> </div><div onclick="document.location.href='/bbs/?tid=3421';return true;" style="cursor:pointer; margin-left:8px; min-width:344px; max-width:344px; height:224px; margin-bottom:12px; background:url('/bbs/thumbs/pico21603.png') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> <div style="padding:8px; background-color:rgba(8,0,16,0.6); width:328px; display:table; overflow:hidden"> <span style="font-size:14pt; color:#ddd; "> Mistigri</span> <br> <a href="/bbs/?uid=9308"> <span style="font-size:9pt; color:#bbb"> by </span> </a> </div> </div><div onclick="document.location.href='/bbs/?tid=2686';return true;" style="cursor:pointer; margin-left:8px; min-width:344px; max-width:344px; height:224px; margin-bottom:12px; background:url('/bbs/thumbs/pico15928.png') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> <div style="padding:8px; background-color:rgba(8,0,16,0.6); width:328px; display:table; overflow:hidden"> <span style="font-size:14pt; color:#ddd; "> Graphics Exercise</span> <br> <a href="/bbs/?uid=10942"> <span style="font-size:9pt; color:#bbb"> by </span> </a> </div> </div></div></div><div></div><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p156526 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=145008">GIFs and Postcarts</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2024-11-02 11:01 *edited 2024-11-11 09:14" href="/bbs/?pid=156526#p" style="color:#f8a">2024-11-02*</a><a class="desktop_div" title="2024-11-02 11:01 *edited 2024-11-11 09:14" href="/bbs/?pid=156526#p" style="color:#f8a">2024-11-02 11:01*</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=7"style="color:#fff">Blog</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_156526'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_156526" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_156526_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_156526_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_156526_watch', 156526, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_156526_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_156526_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_156526_pinned', 156526, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><p><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/postcart300.gif" width=0 height=0 alt="" /><a href="https://www.lexaloffle.com/bbs/?pid=156452#p"><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/kitty_loves_twisters.gif" width=256 height=256 alt="" /></a><a href="https://www.lexaloffle.com/bbs/?pid=156075#p"><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/9551/squishy_77.gif" width=256 height=256 alt="" /></a><a href="https://www.lexaloffle.com/bbs/?pid=156347#p"><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/43011/zx_0.gif" width=256 height=256 alt="" /></a></p> <p>// by <a href="https://www.lexaloffle.com/bbs/?uid=9551"> @kittenm4ster</a> and <a href="https://www.lexaloffle.com/bbs/?uid=43011"> @Minion</a></p> <p>The <a href="https://www.lexaloffle.com/bbs/superblog.php?mode=gifs">GIF Gallery</a> is a new corner of the BBS where GIFs & postcarts can be shared as separate items and live forever¹ in their uncompressed glory. Each profile page has its own GIF section, and there is a separate gallery for just the postcart GIFs:<br /> <a href="https://www.lexaloffle.com/bbs/superblog.php?mode=gifs&postcarts=1">https://www.lexaloffle.com/bbs/superblog.php?mode=gifs&postcarts=1</a></p> <p>GIF posts don't show up in thread activity lists, so adding many separate GIFs is fine. I think it will be useful for things like tiny dev updates that are too small to be bloggy, gameplay captures, and archiving old tweetcarts. And of course some wee experimental ideas only really need to live as a gif rather than a whole cart. GIFs do show up in the <a href="https://www.lexaloffle.com/bbs/superblog.php">superblog feed</a>, and can be pinned to your profile page.</p> <p><a href="/bbs/?pid=156526#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=bbs"><span class="tag">bbs</span></a> <a href="/bbs/?cat=7#tag=update"><span class="tag">update</span></a> <a href="/bbs/superblog.php?mode=gifs&postcarts=1"><span class="tag">postcart</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_156526_like', 156526, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_156526_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_156526_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">19</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_156526_fav', 156526, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_156526_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_156526_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=145008#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 5 comments </div> </a> <a href="/bbs/?uid=13822" title="Liquidream" style="height:40px"> <img loading="lazy" src="/media/13822/avatar-large-cropped-trans-blinking.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=76139" title="cheesemug" style="height:40px"> <img loading="lazy" src="/media/76139/Spining_Duck.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=1" title="zep" style="height:40px"> <img loading="lazy" src="/media/1/grappleoid_wave.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=43011" title="Minion" style="height:40px"> <img loading="lazy" src="/media/43011/PICO8 Minion.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=41031" title="merwok" style="height:40px"> <img loading="lazy" src="/media/41031/avapourwok.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p155392 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=144631">Jar Life</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2024-10-06 22:06 *edited 2024-10-07 17:30" href="/bbs/?pid=155392#p" style="color:#f8a">2024-10-06*</a><a class="desktop_div" title="2024-10-06 22:06 *edited 2024-10-07 17:30" href="/bbs/?pid=155392#p" style="color:#f8a">2024-10-06 22:06*</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=2"style="color:#fff">Cartridges</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_155392'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_155392" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_155392_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_155392_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_155392_watch', 155392, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_155392_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_155392_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_155392_pinned', 155392, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><p><div style="display:table; margin:0px; padding:0px"><div id="pjarlife-1" class="playarea_0" style="width:100%; "><script> // globals var p8_is_running = false; var p8_script = null; var Module = null; var codo_textarea = null; var menu_buttons_extra_hack = 0; var is_voxatron = false; var is_picotron = false; var p8_current_playing_lid = null; function p8_document() { /* if (p8_current_playing_lid) { var playing_div = document.getElementById("cart_player_"+p8_current_playing_lid); if (playing_div) return playing_div; } */ return document; } // Default shell for PICO-8 0.1.12 // options // 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 = false; // 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 = []; // use to send keypresses // var codo_key_buffer = []; var codo_key_buffer = []; var p8_keyboard_state = 0; // mode (toggle with shift) // 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 // picotron var picotron_buttons = []; // max 8 players // When pico8_mouse is defined and .length>0, 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 // Otherwise, PICO-8 will create its own one var pico8_audio_context; 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=", "p8b_cart":'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAZ0lEQVR4Ae2dsQrAMAhEa+ie1f//uq79Ajs1OKRyiGDTeuAQAr4cp5lpU5LzEH32ijqPvi2ioaUpgDqTp2BApHbrEs3k6fV5GRSgAD8DmJtsbegaDpb4iz6eAao7q5njHAfo9Lxiii5mqxbMNtaN0wAAABB0RVh0TG9kZVBORwAyMDExMDIyMeNZtsEAAAAASUVORK5CYII=', "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,iVBORw0KGgoAAAANSUhEUgAAASwAAAFeCAYAAAA/lyK/AAAKHklEQVR42u3dAZKaWBAGYE3tvfBmMCfDnGzWJLhLHHBGBt7rhu+rSiWbbAk8p3+7UeF0AgAAAAAAAAAAAOAQzpaAzN5vDlOsNwILhJXQSuIfP/YoZMGcxQ9LgLByfAILQGABAgtAYAEILEBgAQgsAIEFCCwAgQUgsACBBSCwAAQWILAABBYst/cL3LmA3/9ccRRFTRquZIigylKsrjwKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMZ0tAXz0/v7eLi6q8/nNCgos2CKYmttvl+E/uw02cX/M6y3IflpxgQVLu6fuScC8HDIP4ff08XVhwNMwuf3q3z9qvzP+fTUgh1+P+iHkAP4Li6mQairtTzO3T54tEFRhu5mZrk9wwYGDqo0+ds10XYILjhRUjgOI2J30ezqRvcdjAmH1dzeyu6KeCC7dFiQt5sMU8mMwe/YhV9cx1jhuQKehswRWCKvm4GvRCC3I0VUYhT6GlvNaIKyEFiCshBYIK6EltKBuAQorawYKz9oBaxWct+uXraGPf0ChYuudh7GOkKkzUGTrhpZOFTYcBY0x1hR0A7pWQFF5MYDDFJSxpdBoaDVgp93Vk3sJzmmjdjF76rLc+Zmq3dXvH8KbKCF1+nPn5svDP12HX1Om/v9fukh3d4621pC1u2oD7cv4+vDtwscJeZ/BSOsNKbur2udVtrqlVtT7DDqXBQlf7aduo1UoFPsjrzvorpaFVdGbOUwEZHPEtYeMYdXU6jZqXzcqQmiN9sHHSOCFsaQpvN0mSIdT9WoKo3UwFkLEkSTaZWtqh6exEIK+uke9xta40zpKlwvGwc+32Qf+NH2VfTMWQsBRJMMXq2t9bcZYCF8rkrZ0UUYefWp9Ofke5tl+hn4oI0oVSOnOZfjjr+/0/Yy6LsO+XWusUa1tQorAKjwOphp5KnVZzmNB7YLM+BWUGvvsPBY8L45eIc7uc/FvANxP+GdaJ+ewKOm602192+hc1sUaCSwqjzsVtnVNuFTX0utVY3sCiyxdxNset5V1nzOukcBibzrHsF8CC6EVcCxEYIHAElgAAgtAYAECC0BgAQgsiOdiCQQWx9IJLIEFwsoxCCxYW8YL07mYnsDiYAU5+kJvxtHq8nAMAhIqhVWxq2m6gN/XA8sF/OCTDqKALmEHcV+b6w6fD0jZYbkJRaD9zdiJ6rAopSu8vWuWLmt8S7IDPC+QooNo3Uh1ch+r3kjViXd4HiBthaJ0q/qZtfFTCZ90PJUCoQ+4HtX2zT0J4esdT1Nwm81oNGwDrsV7hW03xkEIWijRQuthf5oK22+jn9uDw46FEUJiqrOqtR/GQUjw6v4QWjXOG/UBwso4CAsKpq+8/WLBMWyzD9Lh9cZBSDSSTARIv+G22ppdnXEQ1iviNsh+rHpCfgjETR57D+sOuqx1g6tfUtTD4/TRgmpP3dVZ6VArJE5/vsfWlbr+0xf36XL6eBWD62n+KgpT//8p0nFFXW+BRbou6/cP4U3QQD2dvv7l4G44ljdrDTvtsqJ/128n69w7dwUrvfJ7m33T9W28Mwi6LN0VKCq8GECSscVoaE1BN6BrBTYqMqFlHSHVGKMz+F6nahSEwqGl4KwdKDxrBqxZgL0CXBRWzluB0BJWgNASViC0hBVQr0C9XT8dVj7+AQlCqz/oGvTCCnJ2F4fpto563KDT0FkCtQt5b13HxO3IjICws6JOH1x7PCZgvttK243s5TiAhQUfvTuJeuNVoF5whRurJkY/QQWC64NqXddMNyWogE+7mXt4tRtvu50JKSfTX+QusByy6xr+2E388/jvrufz+ecroXj6+7b1s4+f+XbxAmv/hfH6E+MHuljnNQqZboNNdEvCD4Hlhx4vNgLLWGGsAEJ2Uk7cAuG7KW+NA9mCyocPgfBB5esdQPygchxAxO7EJUqAVN2Ii8ABYYvZZXaBFF2HGxkYEUGnobME1g4rN+MUWpCiqzAKndzuHISV0AKEldACYYXQgmAFKKysGSg8awesVXDerl+2hj7+AYWKrXcexjpCps5Aka0bWjpV2HAUNMZYU9AN6FoBReXFAA5TUMaWQqOh1YBA3dWeinLNY9FlwYrdVdTH28u67GltyOtH9u5q+GO31mOeb7J3Wvd9vx/LirqHdQcivOJn7Sa23m9dFjqsIN1V9k5rw85KlwUZXumzdBQl91OXhQ7rtYK5f3zhuvW2MnRahTqrsevD8wAC64nLluNgptCqEFbjdb8oIQg6kkQbhWruj7EQHdZr42BXetuROq1KndWHLstYiMD62jh4rbHxCKEVIKzG628shOijiLHUWIgO66VxpKYanVaQzirU84DAitxdhfqwYsnQChhWYZ8XBFYot5p9O1JoRQ2rSM8DROywwp4z2Wrfop8nch4LHdZz16Bd3+qdVuQxMPrzgcBSIAVDK0lYCSwE1kwBpzixu0ZoJQqrdM8PAqt0ILwl2MfFoZUtrJx4R2DtwJLQythZgcA6YGgJKxBYKUJLWIHAShFawgoEVorQElYgsFKElrACgZUmtIQVCKzwpkZCQGCFDavzQGiBwAofVo8jodACgRU6rIQWCKxUYSW0YOeBlemqAK98dCFraLlKAwJruqDfkhXyy5+zytxpuWoDAmvaZY9hlTi0LsoIZoIgeiGvtY9ZrpXumu7osOZ1e+2skndanVJCYM0HQxtwn1b/bmD00HLCHYH1vIDfghbuZl9kztBpOeEOT8IhUvGW2p+I54qcv0KH9bluKJZmz51V9E5rtP6dMkJgzbsOv1+OElZBQ+vy8HwAEUeRo2/fOIgOK8lYGOFKobU7LeMgvFgwwwt8f+Suotb+/Fr3YdONn0YIWKxRR6Aa+2UcxEi4fCxsSxRo7TEwyng4Wm/jIER7pfedPt0VOqwUXVamW3GV6LR0VxD0FT9rJ7Hlfuuu0GGt12X1axZmls6qVKc1Wl/dFazxyr/G2+x76SLWPI7Rx0h0V7BCQbVrfS5rT0W5YmDdP3flcjKgqI7xYgBMjC0+gW1NQTegawU2KjKhZR0h1RijM/hep2oUhMKhpeCsHSg8awasWYC9AlwUVs5bgdASVoDQElYgtIQVUK9AvV0/HVY+/gEJQqs/6Br0wgpydheH6baOetyg09BZArULeW9dx9BVGQFhx0WdPrj2eEzAfLeVthvZy3EACws+encydFSCCgRX3LFqYvQTVCC4PqjWdc10U4IK+LSbuYdXu/G225mQcjKdwzhbguUBMvyxm/jn8d9dz+fzz1dC8fbbZeax/vq72+O+eSYQWLzceY1CpttgE92S8AOBxZIu7PUnRvcEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwwL/cvBIh09+hJAAAAABJRU5ErkJggg==", }; // added w/ pico-8 0.2.1: dummys listeners on document required to allow touch events inside iframe (e.g. itch.io player) 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(); let file = null; // dropped file if (e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files[0]) file = e.dataTransfer.files[0] // file selected via chooser if (!file && e.target && e.target.files && e.target.files[0]) file = e.target.files[0]; if (file) { // read from file reader = new FileReader(); let dropped_filename = 'dropped.p8.png'; try { if (typeof file.fileName !== 'undefined') dropped_filename = file.fileName; if (typeof file.name !== 'undefined') dropped_filename = file.name; } catch(err) { // was happening when inside reader.onload -- files[] becomes an empty set by that stage under Chrome on Chromebook (eh?) console.log("@@ failed to set dropped file name: "+err.message+" files:"+JSON.stringify(e.dataTransfer.files)); } console.log("@@ fetching dropped file: "+dropped_filename); reader.onload = function (event) { p8_dropped_cart = reader.result; p8_dropped_cart_name = dropped_filename; console.log("@@ finished reading dropped file: "+dropped_filename); // data:image/png;base64 e.stopPropagation(); e.preventDefault(); codo_command = 9; // read directly from p8_dropped_cart with libb64 decoder }; reader.readAsDataURL(file); } else if (e.dataTransfer) { // 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() { var w = 24; var bottom_margin = 12; var padding = 4; var left = 44; var p8tv_mode = false; // buttons only appear when running if (!p8_is_running) { requestAnimationFrame(p8_update_button_icons); return; } // p8tv font page player if (typeof(pico8_player_button_w) !== 'undefined') { p8tv_mode = true; w = Math.floor(pico8_player_button_w); // console.log("@@ player_button_w: "+w); bottom_margin = Math.floor(w*3/4) - 4; padding = Math.floor(w / 4); left = Math.floor(w * 2 / 3); } 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; hash += bottom_margin * 0.001; hash += left * 1001.3; if (p8_buttons_hash == hash) { requestAnimationFrame(p8_update_button_icons); return; } p8_buttons_hash = hash; // console.log("@@ updating button icons"); // regenerate every frame (shouldn't be expensive?) els = p8_document().getElementsByClassName('p8_menu_button'); for (i = 0; i < els.length; i++) { el = els[i]; index = el.id; if (p8tv_mode) // cludge button positions { el.style.marginBottom = bottom_margin; el.style.paddingBottom = bottom_margin; el.style.padding = 0; el.style.left = left; } else { // arrrrgh //el.style.marginLeft = menu_buttons_extra_hack; } 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='+w+' height='+w+' style="display:table; 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 && el.parentElement.id == "p8_menu_buttons_touch") // if (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; } function pico8_buttons_event(e, step) { if (!p8_is_running) return; if (!document.getElementById("touch_controls_gfx")) return; // console.log("button event step ",step); if (step == 2 && typeof(pico8_mouse) !== 'undefined') { pico8_mouse[2] = 0; } // on canvas var num = 0; if (e.touches) num = e.touches.length; if (num == 0) { // no active touches: release mouse button from anywhere on page if (typeof(pico8_mouse) !== 'undefined') pico8_mouse[2] = 0; } else { let touch = e.touches[0]; var x = touch.clientX; var y = touch.clientY; var w = window.innerWidth; var h = window.innerHeight; let canvas = p8_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) { // only define pico8_mouse once it is needed (otherwise codo mouse is clobbered on desktop) if (is_picotron) pico8_mouse = [ Math.floor((x - rect.left) * 480 / (rect.right - rect.left)), Math.floor((y - rect.top) * 270 / (rect.bottom - rect.top)), step < 2 ? 1 : 0 ]; else 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 ]; //console.log("-> x y b ", pico8_mouse[0], pico8_mouse[1], pico8_mouse[2]); // return; // commented -- blocks overlapping buttons }else { pico8_mouse[2] = 0; } } } if (document.getElementById("touch_controls_gfx").style.display != "none") pico8_buttons_event_virtual_dpad(e, step); else pico8_buttons_event_virtual_keyboard(e, step); } // ** dupe ** (virtual_dpad) function pico8_buttons_event_virtual_keyboard(e, step) { if (!p8_is_running) return; if (step != 0) return; var num = 0; if (e.touches) num = e.touches.length; for (var i = 0; i < num; i++) if (e.touches[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; var keybd_h = (r*12)*132.0/200.0 // console.log("x:",x," y:",y," keybd_h:",keybd_h," r:",r); if (y < h - r*9) { // no controller buttons up here; includes canvas and menu buttons at top in touch mode } else { e.preventDefault(); var y1 = Math.floor((y - (h - keybd_h)) * 6 / keybd_h); if (y1 == 3) x -= (r*12.0/10.0)*3.0/20.0; if (y1 == 4) x -= (r*12.0/10.0)*6.0/20.0; var x1 = Math.floor(x * 10 / (r*12)); if (x1 >= 0 && x1 < 10 && y1 >= 0 && y1 < 6) { // send keypress signal to pico-8 let key_chars=[ [ "X{[(*-=_+X", "1234567890", "qwertyuiop", "asdfghjklX", "zxcvbnm,.X", "XXXX <>/" ], [ "XXXXX[]`~X", `!"#$%^&@()`, "QWERTYUIOP", "ASDFGHJKLX", "ZXCVBNM;:X", `XXXX ?'\\` ] ]; let val = key_chars[p8_keyboard_state][y1].charCodeAt(x1); if ((y1==3 || y1==4) && x1==9) val = 13; // enter //if (y1==0 && x1==9) val = 9; // del if (y1==0 && x1==9) val = 8; // backspace if (y1==0 && x1==0) val = 27; if (y1==5 && x1>=0 && x1 < 4) val = -1; // shift, alt, left, right codo_key_buffer.push(val); // macros if (p8_keyboard_state == 0) if (y1 == 0 && x1 >= 1 && x1 <= 3) { if (x1 == 1) codo_key_buffer.push("}".charCodeAt(0)); if (x1 == 2) codo_key_buffer.push("]".charCodeAt(0)); if (x1 == 3) codo_key_buffer.push(")".charCodeAt(0)); // to do: push left-cursor here } // special: shift key (show alt keys set) if (y1 == 5 && x1 == 0){ // toggle p8_keyboard_state = p8_keyboard_state ? 0 : 1; el = document.getElementById("controls_keyboard_panel"); if (el) el.setAttribute("src", p8_keyboard_state ? "/gfx/controls_keyboard2.png" : "/gfx/controls_keyboard.png"); } p8_give_focus(); // ** hrm. } } } } // step 0 down 1 drag 2 up (not used) function pico8_buttons_event_virtual_dpad(e, step) { if (!p8_is_running) return; pico8_buttons[0] = 0; var num = 0; if (e.touches) num = e.touches.length; for (var i = 0; i < num; i++) if (e.touches[i]) { var touch = e.touches[i]; var x = touch.clientX; var y = touch.clientY; var w = window.innerWidth; var h = window.innerHeight; //console.log("dpad touch ",x,y); var r = Math.min(w,h) / 12; if (r > 40) r = 40; 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; // escape button for pwa (doesn't do anything otherwise) if (x < r*3){ codo_key_buffer.push(27); p8_give_focus(); } } 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; } } var p8_update_layout_hash = -1; var last_windowed_container_height = 512; var last_windowed_container_width = 512; function p8_update_layout() { var canvas = p8_document().getElementById("canvas"); var p8_playarea = p8_document().getElementById("p8_playarea"); var p8_container = p8_document().getElementById("p8_container"); var p8_frame = p8_document().getElementById("p8_frame"); var csize = 512; var margin_top = 0; var margin_left = 0; var aspect = p8_aspect; // page didn't load yet? first call should be after p8_frame is created if (!canvas || !p8_playarea || !p8_container || !p8_frame) { p8_update_layout_hash = -1; requestAnimationFrame(p8_update_layout); return; } // 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 (aspect == 1.0) // pico-8 if (frame_width >= 512 && frame_height >= 512) { csize = (csize+1) & ~0x7f; } // csize should never be wider / taller than parent frame // (otherwise stretched large when fullscreen and then return) // update: also -- picotron pushes out width of page and messes up touch controls formatting if (!is_fullscreen && p8_frame) { // p8_frame_0 parent csize = Math.min(csize, last_windowed_container_height); csize = Math.min(csize, last_windowed_container_width / aspect); } if (is_fullscreen) { // always center horizontally margin_left = (frame_width - (csize * aspect))/2; if (p8_touch_detected) { if (window.innerWidth < window.innerHeight) { // portrait: keep at y=40 (avoid rounded top corners / camer num 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; } // turn off temp hack /* deleteme canvas.style.position = ""; canvas.style.left = 0.0; */ } /* deleteme else { // temp hack: had to remove margin:auto from p8_container tostop blurry scale under chrome p8_container.style.margin = 0; // WHHHHY let left = (frame_width - (csize * aspect))/2; canvas.style.position = "relative"; canvas.style.left = left; menu_buttons_extra_hack = left; // p8_menu_buttons.style.marginLeft = 40;//10.0 + Math.floor(left); } */ // temporary voxatron hacks // if (p8_aspect > 1.0) // margin_left -= 40; // 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; 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; last_windowed_container_width = p8_frame.parentNode.parentNode.offsetWidth; } //console.log("@@ p8_update_layout(): updating "+(is_fullscreen ? "fullscreen" : "windowed")+" csize: " + csize); // mobile in portrait mode: put screen at top (w / a little space for fullscreen button) // (don't cart about buttons overlapping screen) if (p8_touch_detected && p8_is_running && document.body.clientWidth < document.body.clientHeight) p8_playarea.style.marginTop = 32; 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 = ""; canvas.style.width = csize * aspect; canvas.style.height = csize; // to do: this should just happen from css layout. used in fullscreen canvas.style.marginLeft = margin_left; canvas.style.marginTop = margin_top; // console.log("margin_left: "+margin_left+" width: "+(csize * aspect)); p8_container.style.width = csize * aspect; p8_container.style.height = csize; 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"]); el = document.getElementById("controls_keyboard_panel"); el.style.left = 0; el.style.top = h-r*12*(132.0/200.0); el.style.width = r*12; el.style.height = r*12*(132.0/200.0); if (el.getAttribute("src") == "") el.setAttribute("src", "/gfx/controls_keyboard.png"); // scroll to cart (need to stop running with X) p8_frame.scrollIntoView(true); if (pico8_state.show_dpad == 0 && w < h) // not true when undefined { // virtual keyboard document.getElementById("touch_controls_gfx").style.display="none"; document.getElementById("touch_keyboard_gfx").style.display="table"; // hide touch menu bottons //document.getElementById("p8_menu_buttons_touch").style.display="none"; } else{ // virtual dpad document.getElementById("touch_controls_gfx").style.display="table"; document.getElementById("touch_keyboard_gfx").style.display="none"; } // don't use background -- just hide body div //document.getElementById("touch_controls_background").style.display="table"; } else{ // no touch document.getElementById("touch_controls_gfx").style.display="none"; document.getElementById("touch_keyboard_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 = p8_document().getElementById("p8_start_button"); if (el) el.style.display="flex"; } requestAnimationFrame(p8_update_layout); } var p8_touch_detected = false; //addEventListener("click", function(event){alert(pico8_state.show_dpad);}); addEventListener("touchstart", function(event) { p8_touch_detected = true; // hide textarea, so that virtual mobile keyboard doesn't come up // (and fall back to internal copy/paste -- can't paste from other apps, but can ctrl-c,v within PICO-8) if (codo_textarea && codo_textarea.style.display != "none") codo_textarea.style.display="none"; /* // deleteme if (typeof(pico8_state.show_dpad) === 'undefined' || pico8_state.show_dpad) { if (codo_textarea && codo_textarea.style.display != "none") codo_textarea.style.display="none"; } else { if (codo_textarea && codo_textarea.style.display != "") codo_textarea.style.display=""; } */ }, {passive: true}); function p8_create_audio_context() { // console.log("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"); } } } } // just hides. can reopen in a paused state. // used only by mobile X button after touch_detected function p8_close_cart() { p8_is_running = false; p8_touch_detected = false; Module.pico8SetPaused(1); // hide stuff el = document.getElementById("p8_frame_0"); if (el) el.style.display="none"; // show page el = document.getElementById("body_0"); if (el) el.style.display=""; el = document.getElementById("lex_footer"); if (el) el.style.display=""; // (re-)show dormant players els = document.getElementsByClassName("dormant_player"); for (i = 0; i < els.length; i++) els[i].style.display = ''; // show } function p8_run_cart(player_url, cart_lid, cart_url) { console.log("p8_run_cart: "+player_url+" "+cart_lid+" "+cart_url); p8_current_playing_lid = cart_lid; //codo_textarea = document.getElementById("codo_textarea_global"); codo_textarea = document.getElementById("codo_textarea_"+cart_lid); // e.g. for "currently playing" update if (typeof(p8_run_cart_onrun) !== 'undefined') { p8_run_cart_onrun(cart_lid); } if (p8_is_running) { if (cart_lid != 0){ _cartname=[String(cart_lid)]; codo_command = 6; } return; } p8_is_running = true; // 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(){ //window.alert("loaded "+p8_update_layout_hash); // show canvas / menu buttons only after loading el = document.getElementById("p8_playarea"); if (el) el.style.display="table"; if (typeof(last_pico8_player_layout_hash) !== 'undefined') // p8tv last_pico8_player_layout_hash = -1; if (typeof(p8_update_layout_hash) !== 'undefined') p8_update_layout_hash = -77; if (typeof(p8_buttons_hash) !== 'undefined') p8_buttons_hash = -1; /* // happens outside; when generating player. Module = {}; Module.canvas = document.getElementById("canvas"); Module.arguments = [cart_url.toString()]; p8_update_button_icons(); */ // Module.arguments = [cart_url.toString()]; // doesn't work // hack: use command 6 instead. will load as soon as codo_update is spinning // allows starting player AND choosing cart by clicking on p8tv cart // could just always do this anyway; is cleaner. if (cart_lid != 0){ _cartname=[String(cart_lid)]; codo_command = 6; } // install drag and drop thing function noopHandler(evt) { evt.stopPropagation(); evt.preventDefault(); } var canvas = p8_document().getElementById("canvas"); canvas.addEventListener('dragenter', noopHandler, false); canvas.addEventListener('dragover', noopHandler, false); canvas.addEventListener('dragleave', noopHandler, false); canvas.addEventListener('drop', noopHandler, false); canvas.addEventListener('drop', p8_drop_file, false); } e.type = "application/javascript"; e.src = player_url; 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) if (p8_touch_detected) { window.location.hash = "#playing"; window.onhashchange = function() { if (window.location.hash.search("playing") < 0) p8_close_cart(); } } // 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); } } // install "sure you'd like to navigate away?" thing window.onbeforeunload = function() { if (pico8_state.require_page_navigate_confirmation) return "Are you sure you want to navigate away?"; else return null; // ok to close immediately } } // Gamepad code // from @weeble's mod 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, picotron_button_state: [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0] }; } 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 // picotron var picotron_button_state = [ -gamepad.axes[0], gamepad.axes[0], -gamepad.axes[1], gamepad.axes[1], gamepad.buttons[1].value, gamepad.buttons[0].value, gamepad.buttons.length > 9 ? Math.max(gamepad.buttons[8].value, gamepad.buttons[9].value) : 0, // menu button 0, // 7: reserved -gamepad.axes[2], gamepad.axes[2], -gamepad.axes[3], gamepad.axes[3], // secondary stick gamepad.buttons[2].value, // diamond-L gamepad.buttons[3].value, // diamond-U gamepad.buttons[4].value, gamepad.buttons[5].value // shoulder L, R ]; // dpad if (gamepad.buttons.length >= 16){ picotron_button_state[0] = Math.max(picotron_button_state[0], gamepad.buttons[14].value); picotron_button_state[1] = Math.max(picotron_button_state[1], gamepad.buttons[15].value); picotron_button_state[2] = Math.max(picotron_button_state[2], gamepad.buttons[12].value); picotron_button_state[3] = Math.max(picotron_button_state[3], gamepad.buttons[13].value); } // extra menu button: big one in the middle if (gamepad.buttons.length >= 17) picotron_button_state[6] = Math.max(picotron_button_state[6], gamepad.buttons[16].value); // picotron expects integer values 0..32767 for (var j=0; j < 16; j++) { picotron_button_state[j] = Math.max(0, Math.min(Math.floor(picotron_button_state[j] * 32767.0), 32767)); if (picotron_button_state[j] >= 8192){ any_button |= 0xff; //console.log("btn "+j+": "+picotron_button_state[j]); } } return { button_state, menu_button, any_button, picotron_button_state }; } // 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, picotron_button_state : [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0] }; } 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 // picotron: use pico-8 var picotron_button_state = [ (button_state & 1) ? 0x7fff : 0, (button_state & 2) ? 0x7fff : 0, (button_state & 4) ? 0x7fff : 0, (button_state & 8) ? 0x7fff : 0, (button_state & 16) ? 0x7fff : 0, (button_state & 32) ? 0x7fff : 0, (button_state & 64) ? 0x7fff : 0, 0, 0,0,0,0, 0,0,0,0 ]; return { button_state, menu_button, any_button, picotron_button_state }; } // 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; picotron_buttons[pico8_gamepads_mapping[i]] = gamepad_state.picotron_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; if (picotron_buttons[0]) picotron_buttons[0][6] = 0xff; // ditto for picotron } 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; //console.log(event.keyCode+":"+([17,88,67,86].indexOf(event.keyCode))); if (pico8_state.has_focus == 1) // commented -- catch /all/ keypresses to support editor, and because using codo_textfield focus method // if ([32, 37, 38, 39, 40, 77, 82, 80, 9].indexOf(event.keyCode) > -1) // allow: cursors, M R P, tab if ([17,88,67,86].indexOf(event.keyCode) < 0) // block all keypresses except ctrl,x,c,v (need for codo_textfield clipboard) if (event.preventDefault) event.preventDefault(); //if (is_picotron) // picotron: block everything // if ([86].indexOf(event.keyCode) == -1) // ** except V to paste -- need native browser behaviour on that one ** // if (event.preventDefault) event.preventDefault(); },{passive: false}); // same as in codo_update_js_textfield() 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 ); } } var p8_aspect = 1.0; function activate_p8_player(player_url, cart_lid, cart_url, new_parent_id, dormant_player_id) { var p8_frame_0 = document.getElementById("p8_frame_0"); var new_parent = document.getElementById(new_parent_id); var dormant_player = document.getElementById(dormant_player_id); p8_aspect = 1.0; if (player_url.indexOf("vox") >= 0) is_voxatron = true; if (player_url.indexOf("picotron") >=0 || player_url.indexOf("playground")>= 0) is_picotron = true; if (is_voxatron) p8_aspect = 820.0/512.0; if (is_picotron) p8_aspect = 480.0/270.0; if (!p8_frame_0) { console.log("@@ could not find p8_frame_0"); return; } p8_frame_0.parentNode.removeChild(p8_frame_0); new_parent.appendChild(p8_frame_0); //p8_frame_0.style.display="table"; p8_frame_0.style="display:table; width:100%;height:100%; max-width:100vw;max-height:100vh; min-width:256px;min-height:256px;margin:0px;background-color:#111" dormant_player.style.display = 'none'; // bbs player: can remove entire page and move player div to front // (differs from exported player approach if (p8_touch_detected) { el = document.getElementById("body_0"); if (el) el.style.display="none"; el.parentNode.appendChild(document.getElementById("p8_frame_0")); el = document.getElementById("lex_footer"); if (el) el.style.display="none"; } // run! p8_run_cart(player_url, cart_lid, cart_url); // load cart menu embedded = (window.parent && window.parent != window) ? 1 : 0; // to do: decide cab (and make cab system clearer. count as bbs play -- need for voxatron embeds) //var el = document.getElementById("more_carts_global"); //if (!el) console.log("@@ could not find "+"more_carts_"+cart_lid); //if (el) // only load if can find element for it { microAjax("/bbs/on_play.php?id="+cart_lid+"&embedded="+embedded+"&cab=0", function (retdata){ var el = document.getElementById("more_carts_"+cart_lid); //var el = document.getElementById("more_carts_global"); if (el) el.innerHTML = retdata; } ); } // show dormant frames on other carts // was set_active_widget() els = document.getElementsByClassName("dormant_player"); for (i = 0; i < els.length; i++) if (els[i] != dormant_player) els[i].style.display = ''; // show // safety. should be unnecessary :| // when running wasm version, canvas seems right size, but then shrinks. sdl? to do: investigate setTimeout(function(){ p8_update_layout_hash = -56; },200); setTimeout(function(){ p8_update_layout_hash = -56; },300); setTimeout(function(){ p8_update_layout_hash = -57; },500); setTimeout(function(){ p8_update_layout_hash = -58; },1000); setTimeout(function(){ p8_update_layout_hash = -59; },2000); } function toggle_cart_menu(div_id) { var el=$(div_id); if (el) { el.style.display = (el.style.display=='none') ? 'table' : 'none'; var slider_el = el.childNodes[1]; if (true) { left_target = 0; slider_el.style.left = (left_target + 540)+'px'; poll_function(200, 10, function(q){ q= 1 - (1-q)*(1-q); slider_el.style.left = (left_target + (1-q)*540)+'px'; }); } codo_running = (el.style.display == 'none'); // running if hidden codo_command = 5; codo_command_p = !codo_running; } } // for downloading saved carts function download_browser_file(filename, contents) { var element = document.createElement('a'); if (filename.substr(filename.length - 7) == ".p8.png") element.setAttribute('href', 'data:image/png;base64,' + encodeURIComponent(contents)); else if (filename.substr(filename.length - 4) == ".wav") element.setAttribute('href', 'data:audio/x-wav;base64,' + encodeURIComponent(contents)); else element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(contents)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } </script><STYLE TYPE="text/css"> <!--.p8_menu_button{ opacity:0.2; padding:4px; display:table; width:24px; height:24px; } .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; } .button_gfx{ stroke-width:2; stroke: #ffffff; stroke-opacity:0.4; fill-opacity:0.2; fill:black; } .button_gfx_icon{ stroke-width:3; stroke: #909090; stroke-opacity:0.7; fill:none; } .p8_start_button{ cursor:pointer; -repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; } .p8_menu_buttons{ display: flex; flex-direction: column; height:512px; background-color:#f8a; } @media screen and (max-width: 800px) { .cart_player_wrapper{ width:384px; height:384px; } .p8_menu_buttons{ margin-top:0px; display:none; } } --> </STYLE> <div id="p8_frame_0" style="display:none; width:100%;height:100%; max-width:95vw;max-height:95vh; min-width:256px;min-height:256px;margin:auto;background-color:#111"> <div id="p8_frame" style="display:flex; width:100%;height:100%; max-width:95vh; max-height:95vw;min-width:256px;min-height:256px;margin:auto;"> <textarea id="codo_textarea_jarlife-1" class="emscripten" style="display:none; position:absolute; left:-9999px; height:0px; overflow:hidden"></textarea><input id="p8_file_chooser" type="file" name="name" style="display: none;" onchange='p8_drop_file(event)'/><div style="position:absolute"> <div id="cart_menu_jarlife-1" style=" display:none; position:absolute; width:696px; height:640px; max-width:696px; max-height:640px; z-index:200; overflow:hidden; padding:0px; " > <div style=" background: rgba(24.0,24.0,42.0,0.95); position:relative; top:0px; left:0px; margin:0px; display:block; width:688px; height:632px; padding-left:8px; padding-top:8px; overflow:hidden; " > <div style="margin:8px; margin-top:12px; margin-bottom:20px; width:100%; height:128px; float:left"><div style="margin-top:8px; margin-left:px; width:128px; height:128px; float:left; background:url('/bbs/thumbs/pico8_jarlife-1.png') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> </div><div style="padding:8px; padding-left:32px; display:table"><a target="_parent" href="https://www.lexaloffle.com/bbs/?pid=jarlife#p"> <div style="font-size:16pt; color:#fff; margin-bottom:8px">Jar Life</div> </a><div style="padding-bottom:12px"><a target="_parent" style="color:#fab" href="/bbs/cposts/ja/jarlife-1.p8.png">Cart File</a> | <a target="_parent" style="color:#fab" href="https://www.lexaloffle.com/bbs/?pid=jarlife-1#p">Forum Post</a> | </div> <table cellpadding=0 cellspacing=8><tr><td rowspan=2> <a target="_parent" href=https://www.lexaloffle.com/bbs/?uid=1><img src="/media/1/grappleoid_wave.png" width=48></a> </td><td> <a target="_parent" style="color:#fab" href="https://www.lexaloffle.com/bbs/?uid=1&mode=carts">More cartridges</a> by <a target="_parent" href=https://www.lexaloffle.com/bbs/?uid=1><b>zep</b></a> </td></tr><tr><td> <a target=_rss href="/bbs/feed.php?uid=1" class=social_button> <img src="/gfx/so_rss.png" width=24 height=24 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=24 height=24 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=24 height=24 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=24 height=24 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=24 height=24 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=24 height=24 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=24 height=24 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a> </td></tr></table> </div></div><div style="display:table; font-size:14pt; color:#fff; width:100%; padding:4px; padding-top:24px; ">More Cartridges <a target="_parent" style="font-size:10pt; color:#aaa" href="https://www.lexaloffle.com/bbs/?cat=7#sub=2&mode=carts">[View All]</a> </div><div id="more_carts_jarlife-1"></div></div></div></div> <div id="p8_menu_buttons_touch" style="position:absolute; width:100%; z-index:10; left:0px; top: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="if (!p8_is_running) {p8_create_audio_context(); p8_run_cart('/play/pico8_0206c_dev8.js', 'jarlife-1', '/bbs/cposts/ja/jarlife-1.p8.png');}"> <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; opacity:0.5; position:fixed; top:0px; left:0px; border:0; width:100vw; height:200vh; overflow:hidden">   </div> <div id="p8_playarea_flex" style="display:flex; position:relative"> <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; margin-top:20px" id="p8b_cart" onClick="p8_give_focus(); toggle_cart_menu('cart_menu_jarlife-1');"></div> <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; bottom:20px" 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 --> <div id="touch_keyboard_gfx" style=" pointer-events:none; display:table; position:fixed; top:0px; left:0px; border:0; width:100vw; height:100vh"> <img src="" id="controls_keyboard_panel" style="position:absolute; opacity:0.5;"> </div> <!-- touch_keyboard_gfx --> </div> <!--p8_playarea --> </div> <!-- p8_container --> </div> <!-- p8_frame --> </div> <!-- size limit --> <script type="text/javascript">p8_update_layout(); p8_update_button_icons(); var canvas = document.getElementById("canvas"); Module = {}; Module.canvas = canvas; // 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) { // console.log("requesting lock"); canvas.requestPointerLock(); } }); Module.arguments = ["/bbs/cposts/ja/jarlife-1.p8.png"];</script> <div id="cart_player_jarlife-1" style="overflow:hidden; display:table; width:740px; max-width:95vw; height:640px; max-height:95vw; background-color:#111"> <div class="dormant_player" id="cart_player_dormant_jarlife-1" style=""> <div style="position:absolute; z-index:20; padding:8px; max-width:740px;"> <div style="font-size:15pt"> <a href="https://www.lexaloffle.com/bbs/?pid=jarlife#p">Jar Life</a> </div> <div style="font-size:11pt; margin-top:4px"> by <a href="https://www.lexaloffle.com/bbs/?uid=1">zep</a> </div> </div> <center><div style="display:table; position:relative; background-color:#000; width:640; height:640; max-width:95vw; max-height:95vw; align-items:center;"> <div style="display:flex; position:absolute; z-index:10; width:100%; height:100%; align-items:center;"> <img style="cursor:pointer; width:80px; height:80px; margin:auto;" onClick="activate_p8_player('/play/pico8_0206c_dev8.js', 'jarlife-1', '/bbs/cposts/ja/jarlife-1.p8.png', 'cart_player_jarlife-1', 'cart_player_dormant_jarlife-1');" src="/gfx/play80.png"/> </div> <img src="/bbs/thumbs/pico8_jarlife-1.png" style="opacity:0.7; width:100%; height:100%; "> </div></center> </div> <!-- dormant --> </div> <div style="display:table; width:100%; background-color:#222; padding-top:2px; padding-bottom:2px"> <div class=desktop_div style="margin-top:4px;margin-left:8px;float:left;"> <a href="/bbs/cposts/ja/jarlife-1.p8.png"><img src="/gfx/cart32.png" width=16 height=20></a> </div> <div style="margin-top:6px;margin-left:4px;float:left;"> <font color=#999 size=1> <a title="Open Cartridge File" href="/bbs/cposts/ja/jarlife-1.p8.png">Cart</a> #jarlife-1 | <span title="2024-10-07 17:16:56" >2024-10-07</span> | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartsrc_jarlife-1"); if (el.style.display == "none") { el.style.display = ""; //print_cart_code("https://www.lexaloffle.com/bbs/cposts/ja/jarlife-1.p8.png", "cartsrc_jarlife-1"); } else el.style.display = "none"; /* microAjax("/bbs/snippet.php?cart_id=jarlife-1&src=1", function (retdata){ var el = document.getElementById("cartsrc_jarlife-1"); el.innerHTML = retdata; } ); */ '> Code ▽</a> <span class=desktop_div > | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartembed_jarlife-1"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; '> Embed ▽</a> </span> | <span class="desktop_div" style="color:#666">License:</span> <a target=_cc4 href="https://creativecommons.org/licenses/by-nc-sa/4.0/" style="color:#aaa">CC4-BY-NC-SA</a></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_155392_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_155392_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_155392_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_155392_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">40</div></div></div> </font></div></div></div> <div style="max-width:740px; border:0px; margin:0px; padding:0px; background-color:#224; display:none" id="cartsrc_jarlife-1" > <iframe loading="lazy" src="/bbs/snippet.php?cart_id=jarlife-1&src=1" style="width:100%; height:400px; border:none; overflow:hidden"></iframe> </div> <div style="width:620px; display:none; background-color:#222;" id="cartembed_jarlife-1"> <div style="padding:8px; display:table; color:#fff; width:100%"> Copy and paste the snippet below into your HTML. </div> <div style="padding:10px;"> <textarea rows=5 class=lexinput style="width:580px;height:50px;background-color:#fed;font-size:10pt;"><iframe src="https://www.lexaloffle.com/bbs/widget.php?pid=jarlife" allowfullscreen width="621" height="513" style="border:none; overflow:hidden"></iframe></textarea> </div> </div> <br></p> <h2>Controls</h2> <p>Z/C to jump<br /> X to bunch up / hoist / throw</p> <p>Save 4 creatures in each room to progress to the next level (not everyone needs to make it out alive!). Grab a key to open the door, but the player can not enter until 4 creatures have passed through. To restart at any time, press ENTER and choose "restart level".</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/jarlife-1_0.gif" alt="" /> <hr /> <p>Made for Ludum Dare 56. You can find the jam page (and play the compo version) here: <a href="https://ldjam.com/events/ludum-dare/56/jar-life">https://ldjam.com/events/ludum-dare/56/jar-life</a></p> <h2>Changes</h2> <p>jarlife-0: ldjam compo version</p> <p>jarlife-1: added 'x to retry' when there are no longer any creatures left to save, but less than 4 have exited and the player is still alive.</p> <p><a href="/bbs/?pid=155392#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=ldjam"><span class="tag">ldjam</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_155392_like', 155392, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_155392_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_155392_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">40</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_155392_fav', 155392, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_155392_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_155392_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=144631#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 8 comments </div> </a> <a href="/bbs/?uid=82541" title="TRUL0U" style="height:40px"> <img loading="lazy" src="/media/82541/10_orbits_1.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=13549" title="cheapshot" style="height:40px"> <img loading="lazy" src="/media/13549/Cheap Profile Pic p8 solid.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=6" title="matt" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/6/bright3.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=90325" title="shrimpcat" style="height:40px"> <img loading="lazy" src="/media/90325/lilpc.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=10391" title="Meep" style="height:40px"> <img loading="lazy" src="/media/10391/bigpslime_simple_transparent_pixel.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=14827" title="paloblancogames" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/14827/doba.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=99004" title="MadeInNL" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi28.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=1" title="zep" style="height:40px"> <img loading="lazy" src="/media/1/grappleoid_wave.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p155243 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=144570">BLORB</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2024-10-03 16:57" href="/bbs/?pid=155243#p" style="color:#f8a">2024-10-03</a><a class="desktop_div" title="2024-10-03 16:57" href="/bbs/?pid=155243#p" style="color:#f8a">2024-10-03 16:57</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=2"style="color:#fff">Cartridges</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_155243'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_155243" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_155243_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_155243_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_155243_watch', 155243, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_155243_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_155243_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_155243_pinned', 155243, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><p><div style="display:table; margin:0px; padding:0px"><div id="pblorb-1" class="playarea_0" style="width:100%; "> <div id="cart_player_blorb-1" style="overflow:hidden; display:table; width:740px; max-width:95vw; height:640px; max-height:95vw; background-color:#111"> <div class="dormant_player" id="cart_player_dormant_blorb-1" style=""> <div style="position:absolute; z-index:20; padding:8px; max-width:740px;"> <div style="font-size:15pt"> <a href="https://www.lexaloffle.com/bbs/?pid=blorb#p">BLORB (pico-1k)</a> </div> <div style="font-size:11pt; margin-top:4px"> by <a href="https://www.lexaloffle.com/bbs/?uid=1">zep</a> </div> </div> <center><div style="display:table; position:relative; background-color:#000; width:640; height:640; max-width:95vw; max-height:95vw; align-items:center;"> <div style="display:flex; position:absolute; z-index:10; width:100%; height:100%; align-items:center;"> <img style="cursor:pointer; width:80px; height:80px; margin:auto;" onClick="activate_p8_player('/play/pico8_0206c_dev8.js', 'blorb-1', '/bbs/cposts/bl/blorb-1.p8.png', 'cart_player_blorb-1', 'cart_player_dormant_blorb-1');" src="/gfx/play80.png"/> </div> <img src="/bbs/thumbs/pico8_blorb-1.png" style="opacity:0.7; width:100%; height:100%; "> </div></center> </div> <!-- dormant --> </div> <div style="display:table; width:100%; background-color:#222; padding-top:2px; padding-bottom:2px"> <div class=desktop_div style="margin-top:4px;margin-left:8px;float:left;"> <a href="/bbs/cposts/bl/blorb-1.p8.png"><img src="/gfx/cart32.png" width=16 height=20></a> </div> <div style="margin-top:6px;margin-left:4px;float:left;"> <font color=#999 size=1> <a title="Open Cartridge File" href="/bbs/cposts/bl/blorb-1.p8.png">Cart</a> #blorb-1 | <span title="2024-10-01 08:32:30" >2024-10-01</span> | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartsrc_blorb-1"); if (el.style.display == "none") { el.style.display = ""; //print_cart_code("https://www.lexaloffle.com/bbs/cposts/bl/blorb-1.p8.png", "cartsrc_blorb-1"); } else el.style.display = "none"; /* microAjax("/bbs/snippet.php?cart_id=blorb-1&src=1", function (retdata){ var el = document.getElementById("cartsrc_blorb-1"); el.innerHTML = retdata; } ); */ '> Code ▽</a> <span class=desktop_div > | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartembed_blorb-1"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; '> Embed ▽</a> </span> | <span style="color:#777">No License</a> </div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_155243_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_155243_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_155243_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_155243_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">13</div></div></div> </font></div></div></div> <div style="max-width:740px; border:0px; margin:0px; padding:0px; background-color:#224; display:none" id="cartsrc_blorb-1" > <iframe loading="lazy" src="/bbs/snippet.php?cart_id=blorb-1&src=1" style="width:100%; height:400px; border:none; overflow:hidden"></iframe> </div> <div style="width:620px; display:none; background-color:#222;" id="cartembed_blorb-1"> <div style="padding:8px; display:table; color:#fff; width:100%"> Copy and paste the snippet below into your HTML. </div> <div style="padding:8px; display:table; color:#fab;"> Note: This cartridge's settings do not allow embedded playback. A [Play at lexaloffle] link will be included instead. </div> <div style="padding:10px;"> <textarea rows=5 class=lexinput style="width:580px;height:50px;background-color:#fed;font-size:10pt;"><iframe src="https://www.lexaloffle.com/bbs/widget.php?pid=blorb" allowfullscreen width="621" height="513" style="border:none; overflow:hidden"></iframe></textarea> </div> </div> <br></p> <h2>BLORB LIKES CANS. GET CANS!</h2> <ul> <li>DPAD / Cursors to Move</li> <li>Hold X to Grab / Retract</li> <li>Retract all the way back to the portal to collect a can. </li> <li>You only get 1 life ~ CTRL-R to restart if you crash (or open the menu with ENTER).</li> <li>There is no sound in space (I mean .. there is no space for sound)</li> </ul> <p>Good luck! </p> <p>This is a game made in 1024 bytes for <a href="https://itch.io/jam/pico-1k-2024">PICO-1k Jam 2024</a>, co-designed and pixelled by <a href="https://www.lexaloffle.com/bbs/?uid=11378"> @castpixel</a> (<a href="https://twitter.com/castpixel">twitter</a>). It is our third production as POD Design; you can find the first two <a href="https://www.lexaloffle.com/bbs/?pid=98017">here</a> and <a href="https://www.lexaloffle.com/bbs/?pid=76564">here</a>. BLORB is also up on <a href="https://castpixel.itch.io/blorb">itch</a> and has a <a href="https://itch.io/jam/pico-1k-2024/rate/3008293">PICO-1K entry page</a>. Thanks as always to <a href="https://www.lexaloffle.com/bbs/?uid=13822"> @Liquidream</a> for running this great jam, and <a href="https://www.lexaloffle.com/bbs/?uid=29645"> @thisismypassword</a> for the invaluable <a href="https://thisismypassport.github.io/shrinko8/">Shrinko8</a>!</p> <p><a href="/bbs/?pid=155243#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=pico1k"><span class="tag">pico1k</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_155243_like', 155243, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_155243_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_155243_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">13</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_155243_fav', 155243, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_155243_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_155243_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=144570#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 2 comments </div> </a> <a href="/bbs/?uid=13822" title="Liquidream" style="height:40px"> <img loading="lazy" src="/media/13822/avatar-large-cropped-trans-blinking.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=752" title="tailot" style="height:40px"> <img loading="lazy" src="/media/752/7_Screenshot 2024-10-13 alle 22.54.28.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p142119 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=140421">PICO-8 0.2.6</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2024-02-28 13:33" href="/bbs/?pid=142119#p" style="color:#f8a">2024-02-28</a><a class="desktop_div" title="2024-02-28 13:33" href="/bbs/?pid=142119#p" style="color:#f8a">2024-02-28 13:33</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=7"style="color:#fff">Blog</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_142119'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_142119" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_142119_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_142119_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_142119_watch', 142119, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_142119_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_142119_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_142119_pinned', 142119, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><p>Hey All! PICO-8 0.2.6b is up now up on <a href="https://www.lexaloffle.com/games.php?page=updates">lexaloffle</a>, <a href="https://www.humblebundle.com/home/library">Humble</a>, <a href="https://lexaloffle.itch.io/pico-8">itch.io</a>, and for <a href="https://lexaloffle.com/bbs/?tid=34009">PocketCHIP</a> and web (<a href="https://pico-8-edu.com">Education Edition</a>). Note: you'll need to update to 0.2.6b to play new carts and SFX snippets created in 0.2.6!</p> <h1>Inverted Draw Operations</h1> <p>Thanks to <a href="https://www.lexaloffle.com/bbs/?uid=28958"> @p01</a> for nudging me about this one! Filled draw operations (circfill, ovalfill, rectfill) can now be drawn inside-out: every pixel outside the area is drawn instead of every inside pixel. This can be controlled in a way similar to setting the fill pattern per draw call: first <code>poke(0x5f34,0x2)</code> to enable inverted draws, and then set bits 0x1800 in the colour argument. Here is a snippet to blank out everything except a circle in the middle (that changes size):</p> <div> <div class=scrollable_with_touch style="width:100%; max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre>poke(0x5f34,0x2) circfill(64,64,50+cos(t()/4)*10,0 | 0x1800)</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p><a href="/bbs/?pid=142119#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=pico-8"><span class="tag">pico-8</span></a> <a href="/bbs/?cat=7#tag=update"><span class="tag">update</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_142119_like', 142119, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_142119_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_142119_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">73</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_142119_fav', 142119, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_142119_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_142119_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=140421#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 27 comments </div> </a> <a href="/bbs/?uid=43011" title="Minion" style="height:40px"> <img loading="lazy" src="/media/43011/PICO8 Minion.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=45577" title="Sup3rAw3som3Gam3r" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi9.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=85395" title="kozm0naut" style="height:40px"> <img loading="lazy" src="/media/85395/picocolordance_24.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=91503" title="Chiruchu" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi15.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=65920" title="Kaius" style="height:40px"> <img loading="lazy" src="/media/65920/8_Red Mushroom Avatar.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=13822" title="Liquidream" style="height:40px"> <img loading="lazy" src="/media/13822/avatar-large-cropped-trans-blinking.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=44175" title="ridgek" style="height:40px"> <img loading="lazy" src="/media/44175/2_7066611.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=43473" title="RyanC" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi17.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=38130" title="BoneVolt" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/38130/PICO-8_2.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=74518" title="StrongSand94191" style="height:40px"> <img loading="lazy" src="/media/74518/headshot (no bg).png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p139154 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=55482">Elf Curling</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2023-12-25 18:32" href="/bbs/?pid=139154#p" style="color:#f8a">2023-12-25</a><a class="desktop_div" title="2023-12-25 18:32" href="/bbs/?pid=139154#p" style="color:#f8a">2023-12-25 18:32</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=2"style="color:#fff">Cartridges</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_139154'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_139154" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_139154_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_139154_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_139154_watch', 139154, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_139154_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_139154_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_139154_pinned', 139154, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><p><div style="display:table; margin:0px; padding:0px"><div id="pelf_curling-2" class="playarea_0" style="width:100%; "> <div id="cart_player_elf_curling-2" style="overflow:hidden; display:table; width:740px; max-width:95vw; height:640px; max-height:95vw; background-color:#111"> <div class="dormant_player" id="cart_player_dormant_elf_curling-2" style=""> <div style="position:absolute; z-index:20; padding:8px; max-width:740px;"> <div style="font-size:15pt"> <a href="https://www.lexaloffle.com/bbs/?pid=elf_curling#p">Elf Curling</a> </div> <div style="font-size:11pt; margin-top:4px"> by <a href="https://www.lexaloffle.com/bbs/?uid=1">zep</a> </div> </div> <center><div style="display:table; position:relative; background-color:#000; width:640; height:640; max-width:95vw; max-height:95vw; align-items:center;"> <div style="display:flex; position:absolute; z-index:10; width:100%; height:100%; align-items:center;"> <img style="cursor:pointer; width:80px; height:80px; margin:auto;" onClick="activate_p8_player('/play/pico8_0206c_dev8.js', 'elf_curling-2', '/bbs/cposts/el/elf_curling-2.p8.png', 'cart_player_elf_curling-2', 'cart_player_dormant_elf_curling-2');" src="/gfx/play80.png"/> </div> <img src="/bbs/thumbs/pico8_elf_curling-2.png" style="opacity:0.7; width:100%; height:100%; "> </div></center> </div> <!-- dormant --> </div> <div style="display:table; width:100%; background-color:#222; padding-top:2px; padding-bottom:2px"> <div class=desktop_div style="margin-top:4px;margin-left:8px;float:left;"> <a href="/bbs/cposts/el/elf_curling-2.p8.png"><img src="/gfx/cart32.png" width=16 height=20></a> </div> <div style="margin-top:6px;margin-left:4px;float:left;"> <font color=#999 size=1> <a title="Open Cartridge File" href="/bbs/cposts/el/elf_curling-2.p8.png">Cart</a> #elf_curling-2 | <span title="2023-12-25 11:26:30" >2023-12-25</span> | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartsrc_elf_curling-2"); if (el.style.display == "none") { el.style.display = ""; //print_cart_code("https://www.lexaloffle.com/bbs/cposts/el/elf_curling-2.p8.png", "cartsrc_elf_curling-2"); } else el.style.display = "none"; /* microAjax("/bbs/snippet.php?cart_id=elf_curling-2&src=1", function (retdata){ var el = document.getElementById("cartsrc_elf_curling-2"); el.innerHTML = retdata; } ); */ '> Code ▽</a> <span class=desktop_div > | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartembed_elf_curling-2"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; '> Embed ▽</a> </span> | <span class="desktop_div" style="color:#666">License:</span> <a target=_cc4 href="https://creativecommons.org/licenses/by-nc-sa/4.0/" style="color:#aaa">CC4-BY-NC-SA</a></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_139154_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_139154_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_139154_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_139154_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">23</div></div></div> </font></div></div></div> <div style="max-width:740px; border:0px; margin:0px; padding:0px; background-color:#224; display:none" id="cartsrc_elf_curling-2" > <iframe loading="lazy" src="/bbs/snippet.php?cart_id=elf_curling-2&src=1" style="width:100%; height:400px; border:none; overflow:hidden"></iframe> </div> <div style="width:620px; display:none; background-color:#222;" id="cartembed_elf_curling-2"> <div style="padding:8px; display:table; color:#fff; width:100%"> Copy and paste the snippet below into your HTML. </div> <div style="padding:10px;"> <textarea rows=5 class=lexinput style="width:580px;height:50px;background-color:#fed;font-size:10pt;"><iframe src="https://www.lexaloffle.com/bbs/widget.php?pid=elf_curling" allowfullscreen width="621" height="513" style="border:none; overflow:hidden"></iframe></textarea> </div> </div> <br></p> <p>A wee game for the the 2023 Holiday Bundle: <a href="https://www.lexaloffle.com/bbs/?tid=55407">https://www.lexaloffle.com/bbs/?tid=55407</a></p> <p>It is 2 player, but if you'd like to play around with both teams, you can enable 'hotseat' mode in the pause menu which allows using the same controls for both teams.</p> <p>The goal is to get as many curling stones inside or even barely touching the red (5 points) and blue (2 points) circles, counted at the end of the match. Each elf is assigned a fixed amount of time to do whatever they like, including jumping on stones, riding them around, and pushing around the opponents' curling stones or players.</p> <p>There are no points awarded for having elves in the circles at the end of the match -- it is just about the stones, for a maximum of 15 points. The last elf has the last-move advantage, but only 7 seconds instead of 10. The first 2 elves get 15 seconds each. Players can decide who goes first with a game of real-world rock paper scissors, and the first player to press X goes first.</p> <p><a href="/bbs/?pid=139154#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=curling"><span class="tag">curling</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_139154_like', 139154, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_139154_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_139154_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">23</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_139154_fav', 139154, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_139154_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_139154_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=55482#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 1 comment </div> </a> <a href="/bbs/?uid=13750" title="VgBlade" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/13750/restos_pixel_by_zapilai-d7n8vst.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p135203 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=54397">Loom Valley</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2023-10-01 10:54 *edited 2023-10-01 12:33" href="/bbs/?pid=135203#p" style="color:#f8a">2023-10-01*</a><a class="desktop_div" title="2023-10-01 10:54 *edited 2023-10-01 12:33" href="/bbs/?pid=135203#p" style="color:#f8a">2023-10-01 10:54*</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=8"style="color:#fff">Jam</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_135203'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_135203" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_135203_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_135203_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_135203_watch', 135203, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_135203_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_135203_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_135203_pinned', 135203, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><p><div style="display:table; margin:0px; padding:0px"><div id="plv-2" class="playarea_0" style="width:100%; "> <div id="cart_player_lv-2" style="overflow:hidden; display:table; width:740px; max-width:95vw; height:640px; max-height:95vw; background-color:#111"> <div class="dormant_player" id="cart_player_dormant_lv-2" style=""> <div style="position:absolute; z-index:20; padding:8px; max-width:740px;"> <div style="font-size:15pt"> <a href="https://www.lexaloffle.com/bbs/?pid=lv#p">loom valley</a> </div> <div style="font-size:11pt; margin-top:4px"> by <a href="https://www.lexaloffle.com/bbs/?uid=1">zep</a> </div> </div> <center><div style="display:table; position:relative; background-color:#000; width:640; height:640; max-width:95vw; max-height:95vw; align-items:center;"> <div style="display:flex; position:absolute; z-index:10; width:100%; height:100%; align-items:center;"> <img style="cursor:pointer; width:80px; height:80px; margin:auto;" onClick="activate_p8_player('/play/pico8_0206c_dev8.js', 'lv-2', '/bbs/cposts/lv/lv-2.p8.png', 'cart_player_lv-2', 'cart_player_dormant_lv-2');" src="/gfx/play80.png"/> </div> <img src="/bbs/thumbs/pico8_lv-2.png" style="opacity:0.7; width:100%; height:100%; "> </div></center> </div> <!-- dormant --> </div> <div style="display:table; width:100%; background-color:#222; padding-top:2px; padding-bottom:2px"> <div class=desktop_div style="margin-top:4px;margin-left:8px;float:left;"> <a href="/bbs/cposts/lv/lv-2.p8.png"><img src="/gfx/cart32.png" width=16 height=20></a> </div> <div style="margin-top:6px;margin-left:4px;float:left;"> <font color=#999 size=1> <a title="Open Cartridge File" href="/bbs/cposts/lv/lv-2.p8.png">Cart</a> #lv-2 | <span title="2023-10-01 10:08:50" >2023-10-01</span> | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartsrc_lv-2"); if (el.style.display == "none") { el.style.display = ""; //print_cart_code("https://www.lexaloffle.com/bbs/cposts/lv/lv-2.p8.png", "cartsrc_lv-2"); } else el.style.display = "none"; /* microAjax("/bbs/snippet.php?cart_id=lv-2&src=1", function (retdata){ var el = document.getElementById("cartsrc_lv-2"); el.innerHTML = retdata; } ); */ '> Code ▽</a> <span class=desktop_div > | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartembed_lv-2"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; '> Embed ▽</a> </span> | <span class="desktop_div" style="color:#666">License:</span> <a target=_cc4 href="https://creativecommons.org/licenses/by-nc-sa/4.0/" style="color:#aaa">CC4-BY-NC-SA</a></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_135203_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_135203_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_135203_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_135203_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">40</div></div></div> </font></div></div></div> <div style="max-width:740px; border:0px; margin:0px; padding:0px; background-color:#224; display:none" id="cartsrc_lv-2" > <iframe loading="lazy" src="/bbs/snippet.php?cart_id=lv-2&src=1" style="width:100%; height:400px; border:none; overflow:hidden"></iframe> </div> <div style="width:620px; display:none; background-color:#222;" id="cartembed_lv-2"> <div style="padding:8px; display:table; color:#fff; width:100%"> Copy and paste the snippet below into your HTML. </div> <div style="padding:10px;"> <textarea rows=5 class=lexinput style="width:580px;height:50px;background-color:#fed;font-size:10pt;"><iframe src="https://www.lexaloffle.com/bbs/widget.php?pid=lv" allowfullscreen width="621" height="513" style="border:none; overflow:hidden"></iframe></textarea> </div> </div> <br></p> <p>X to accelerate -- try to stay on the ground to maintain speed!</p> <p>This is a 1022 byte cartridge made for the <a href="https://itch.io/jam/pico-1k-2023">pico-1k jam</a>, but while I was commenting it I found a bunch of unused junk, so now it is 999 bytes compressed :) (see the code in tab 1, minified by <a href="https://www.lexaloffle.com/bbs/?uid=29645"> @thisismypassword</a>'s excellent <a href="https://thisismypassport.github.io/shrinko8">Shrinko8</a> )</p> <p>pico1k entry page: <a href="https://itch.io/jam/pico-1k-2023/rate/2289420">https://itch.io/jam/pico-1k-2023/rate/2289420</a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=pico1k"><span class="tag">pico1k</span></a> <a href="/bbs/?cat=7#tag=racing"><span class="tag">racing</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_135203_like', 135203, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_135203_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_135203_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">40</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_135203_fav', 135203, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_135203_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_135203_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=54397#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 4 comments </div> </a> <a href="/bbs/?uid=31246" title="DivergentClouds" style="height:40px"> <img loading="lazy" src="/media/31246/depiction_flower-lily-diede.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=51934" title="Ummmm_ok" style="height:40px"> <img loading="lazy" src="/media/51934/pixil-gif-drawing.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=65399" title="auex" style="height:40px"> <img loading="lazy" src="/media/65399/4_auex.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=71945" title="ioil13" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi9.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p130531 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=52986">Fill Pattern Catalogue</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2023-06-05 09:02 *edited 2023-06-06 01:27" href="/bbs/?pid=130531#p" style="color:#f8a">2023-06-05*</a><a class="desktop_div" title="2023-06-05 09:02 *edited 2023-06-06 01:27" href="/bbs/?pid=130531#p" style="color:#f8a">2023-06-05 09:02*</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=2"style="color:#fff">Cartridges</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_130531'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_130531" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_130531_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_130531_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_130531_watch', 130531, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_130531_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_130531_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_130531_pinned', 130531, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><p><div style="display:table; margin:0px; padding:0px"><div id="pfillp_cat-2" class="playarea_0" style="width:100%; "> <div id="cart_player_fillp_cat-2" style="overflow:hidden; display:table; width:740px; max-width:95vw; height:640px; max-height:95vw; background-color:#111"> <div class="dormant_player" id="cart_player_dormant_fillp_cat-2" style=""> <div style="position:absolute; z-index:20; padding:8px; max-width:740px;"> <div style="font-size:15pt"> <a href="https://www.lexaloffle.com/bbs/?pid=fillp_cat#p">fill pattern catalogue</a> </div> <div style="font-size:11pt; margin-top:4px"> by <a href="https://www.lexaloffle.com/bbs/?uid=1">zep</a> </div> </div> <center><div style="display:table; position:relative; background-color:#000; width:640; height:640; max-width:95vw; max-height:95vw; align-items:center;"> <div style="display:flex; position:absolute; z-index:10; width:100%; height:100%; align-items:center;"> <img style="cursor:pointer; width:80px; height:80px; margin:auto;" onClick="activate_p8_player('/play/pico8_0206c_dev8.js', 'fillp_cat-2', '/bbs/cposts/fi/fillp_cat-2.p8.png', 'cart_player_fillp_cat-2', 'cart_player_dormant_fillp_cat-2');" src="/gfx/play80.png"/> </div> <img src="/bbs/thumbs/pico8_fillp_cat-2.png" style="opacity:0.7; width:100%; height:100%; "> </div></center> </div> <!-- dormant --> </div> <div style="display:table; width:100%; background-color:#222; padding-top:2px; padding-bottom:2px"> <div class=desktop_div style="margin-top:4px;margin-left:8px;float:left;"> <a href="/bbs/cposts/fi/fillp_cat-2.p8.png"><img src="/gfx/cart32.png" width=16 height=20></a> </div> <div style="margin-top:6px;margin-left:4px;float:left;"> <font color=#999 size=1> <a title="Open Cartridge File" href="/bbs/cposts/fi/fillp_cat-2.p8.png">Cart</a> #fillp_cat-2 | <span title="2023-06-06 01:26:52" >2023-06-06</span> | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartsrc_fillp_cat-2"); if (el.style.display == "none") { el.style.display = ""; //print_cart_code("https://www.lexaloffle.com/bbs/cposts/fi/fillp_cat-2.p8.png", "cartsrc_fillp_cat-2"); } else el.style.display = "none"; /* microAjax("/bbs/snippet.php?cart_id=fillp_cat-2&src=1", function (retdata){ var el = document.getElementById("cartsrc_fillp_cat-2"); el.innerHTML = retdata; } ); */ '> Code ▽</a> <span class=desktop_div > | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartembed_fillp_cat-2"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; '> Embed ▽</a> </span> | <span class="desktop_div" style="color:#666">License:</span> <a target=_cc4 href="https://creativecommons.org/licenses/by-nc-sa/4.0/" style="color:#aaa">CC4-BY-NC-SA</a></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_130531_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_130531_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_130531_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_130531_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">55</div></div></div> </font></div></div></div> <div style="max-width:740px; border:0px; margin:0px; padding:0px; background-color:#224; display:none" id="cartsrc_fillp_cat-2" > <iframe loading="lazy" src="/bbs/snippet.php?cart_id=fillp_cat-2&src=1" style="width:100%; height:400px; border:none; overflow:hidden"></iframe> </div> <div style="width:620px; display:none; background-color:#222;" id="cartembed_fillp_cat-2"> <div style="padding:8px; display:table; color:#fff; width:100%"> Copy and paste the snippet below into your HTML. </div> <div style="padding:10px;"> <textarea rows=5 class=lexinput style="width:580px;height:50px;background-color:#fed;font-size:10pt;"><iframe src="https://www.lexaloffle.com/bbs/widget.php?pid=fillp_cat" allowfullscreen width="621" height="513" style="border:none; overflow:hidden"></iframe></textarea> </div> </div> <br></p> <p>This is a little tool for viewing all possible 4x4 fill patterns, after removing duplicates which are the same pattern inverted, translated, rotated, or flipped in x/y/diagonally. There are 65536 possible raw fill patterns (1 << 16), but only 433 unique patterns once "equivalent" ones have been discarded.</p> <p>To use a fill pattern that you like, prefix it with "0x" (it is a hexadecimal number) and pass it fillp():</p> <div> <div class=scrollable_with_touch style="width:100%; max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre>fillp(0x95a6) circfill(64,64,40,0xacd) fillp() -- reset </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>Press UP and DOWN to browse the catalogue, [X] to invert and [O] (z/c) to hide the info bar.</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/fillp_cat2_3.gif" alt="" /> <p>I don't know if there is a </p> <p><a href="/bbs/?pid=130531#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=fillp"><span class="tag">fillp</span></a> <a href="/bbs/?cat=7#tag=pattern"><span class="tag">pattern</span></a> <a href="/bbs/?cat=7#tag=tool"><span class="tag">tool</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_130531_like', 130531, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_130531_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_130531_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">55</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_130531_fav', 130531, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_130531_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_130531_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=52986#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 8 comments </div> </a> <a href="/bbs/?uid=20645" title="Godmil" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/20645/avatar.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=66501" title="Heracleum" style="height:40px"> <img loading="lazy" src="/media/66501/3_682398-B50.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=41031" title="merwok" style="height:40px"> <img loading="lazy" src="/media/41031/avapourwok.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=1" title="zep" style="height:40px"> <img loading="lazy" src="/media/1/grappleoid_wave.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=71562" title="lupoman" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi10.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=80974" title="goose2point0" style="height:40px"> <img loading="lazy" src="/media/80974/11_canvas.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p129655 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=52692">Picotron Playground (Part II)</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2023-05-12 10:53" href="/bbs/?pid=129655#p" style="color:#f8a">2023-05-12</a><a class="desktop_div" title="2023-05-12 10:53" href="/bbs/?pid=129655#p" style="color:#f8a">2023-05-12 10:53</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=1"> Blogs</a>></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_129655'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_129655" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_129655_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_129655_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_129655_watch', 129655, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_129655_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_129655_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_129655_pinned', 129655, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><p>Hey All! I've been trucking on some Picotron stuff a bit lately, and I've added a lot of it to the current build of Picotron Playground which you can play around with in your browser here:</p> <p><a href="https://www.lexaloffle.com/picotron.php?page=playground">https://www.lexaloffle.com/picotron.php?page=playground</a></p> <p>A quick recap for some context: <a href="https://www.picotron.net">Picotron</a> is a fantasy workstation that aims to be extremely <a href="/picotron.php?page=faq">hackable and flexible</a>. It is not quite in production yet, but an experimental web version <a href="https://www.lexaloffle.com/picotron.php?page=playground">is available</a> ~ that's what "Picotron Playground" is. The desktop version of Picotron, with built-in dev tools + HTML exporter are planned for <a href="https://www.lexaloffle.com/picotron.php?page=roadmap">later this year</a>.</p> <p>For more background, see also: <a href="https://www.lexaloffle.com/bbs/?tid=50923">Part I: The release thread</a></p> <h2>Code Editor</h2> <p>The code editor is now implemented as a GUI component that anyone can embed in their own programs. This will make it easier to create things like bespoke programming toys and scriptable level editing tools. Have a look at /demos/proggy.p64 to see how this works (although, that api might change a little later). It is still janky, but now janky in a more powerful way!</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/159_proggy_sand.png" alt="" /> <p><a href="/bbs/?pid=129655#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=1#tag=picotron"><span class="tag">picotron</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_129655_like', 129655, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_129655_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_129655_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">45</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_129655_fav', 129655, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_129655_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_129655_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=52692#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 61 comments </div> </a> <a href="/bbs/?uid=16399" title="Cesco" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/16399/IMG_0570.JPG" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=10500" title="Shoozza" style="height:40px"> <img loading="lazy" src="/media/10500/RrfJ7BsQ_200x200__________________.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=1281" title="Eiyeron" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/1281/av.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=57071" title="ooooggll" style="height:40px"> <img loading="lazy" src="/media/57071/ooooggll minimal square.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=1" title="zep" style="height:40px"> <img loading="lazy" src="/media/1/grappleoid_wave.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=65920" title="Kaius" style="height:40px"> <img loading="lazy" src="/media/65920/8_Red Mushroom Avatar.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=59015" title="Flami" style="height:40px"> <img loading="lazy" src="/media/59015/New Piskel-1.png (7).png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=66093" title="shadowtide13" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi13.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=12874" title="Felice" style="height:40px"> <img loading="lazy" src="/media/12874/56_av_violet_pikuseru_flat.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=54999" title="taxicomics" style="height:40px"> <img loading="lazy" src="/media/54999/3_LogoNeu (2).jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p129209 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=52576">Time For Lunch</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2023-05-01 00:34 *edited 2023-05-26 22:05" href="/bbs/?pid=129209#p" style="color:#f8a">2023-05-01*</a><a class="desktop_div" title="2023-05-01 00:34 *edited 2023-05-26 22:05" href="/bbs/?pid=129209#p" style="color:#f8a">2023-05-01 00:34*</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=2"style="color:#fff">Cartridges</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_129209'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_129209" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_129209_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_129209_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_129209_watch', 129209, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_129209_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_129209_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_129209_pinned', 129209, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><p><div style="display:table; margin:0px; padding:0px"><div id="ptfl-1" class="playarea_0" style="width:100%; "> <div id="cart_player_tfl-1" style="overflow:hidden; display:table; width:740px; max-width:95vw; height:640px; max-height:95vw; background-color:#111"> <div class="dormant_player" id="cart_player_dormant_tfl-1" style=""> <div style="position:absolute; z-index:20; padding:8px; max-width:740px;"> <div style="font-size:15pt"> <a href="https://www.lexaloffle.com/bbs/?pid=tfl#p">Time For Lunch</a> </div> <div style="font-size:11pt; margin-top:4px"> by <a href="https://www.lexaloffle.com/bbs/?uid=1">zep</a> </div> </div> <center><div style="display:table; position:relative; background-color:#000; width:640; height:640; max-width:95vw; max-height:95vw; align-items:center;"> <div style="display:flex; position:absolute; z-index:10; width:100%; height:100%; align-items:center;"> <img style="cursor:pointer; width:80px; height:80px; margin:auto;" onClick="activate_p8_player('/play/pico8_0206c_dev8.js', 'tfl-1', '/bbs/cposts/tf/tfl-1.p8.png', 'cart_player_tfl-1', 'cart_player_dormant_tfl-1');" src="/gfx/play80.png"/> </div> <img src="/bbs/thumbs/pico8_tfl-1.png" style="opacity:0.7; width:100%; height:100%; "> </div></center> </div> <!-- dormant --> </div> <div style="display:table; width:100%; background-color:#222; padding-top:2px; padding-bottom:2px"> <div class=desktop_div style="margin-top:4px;margin-left:8px;float:left;"> <a href="/bbs/cposts/tf/tfl-1.p8.png"><img src="/gfx/cart32.png" width=16 height=20></a> </div> <div style="margin-top:6px;margin-left:4px;float:left;"> <font color=#999 size=1> <a title="Open Cartridge File" href="/bbs/cposts/tf/tfl-1.p8.png">Cart</a> #tfl-1 | <span title="2023-05-01 23:50:44" >2023-05-01</span> | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartsrc_tfl-1"); if (el.style.display == "none") { el.style.display = ""; //print_cart_code("https://www.lexaloffle.com/bbs/cposts/tf/tfl-1.p8.png", "cartsrc_tfl-1"); } else el.style.display = "none"; /* microAjax("/bbs/snippet.php?cart_id=tfl-1&src=1", function (retdata){ var el = document.getElementById("cartsrc_tfl-1"); el.innerHTML = retdata; } ); */ '> Code ▽</a> <span class=desktop_div > | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartembed_tfl-1"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; '> Embed ▽</a> </span> | <span class="desktop_div" style="color:#666">License:</span> <a target=_cc4 href="https://creativecommons.org/licenses/by-nc-sa/4.0/" style="color:#aaa">CC4-BY-NC-SA</a></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_129209_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_129209_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_129209_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_129209_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">126</div></div></div> </font></div></div></div> <div style="max-width:740px; border:0px; margin:0px; padding:0px; background-color:#224; display:none" id="cartsrc_tfl-1" > <iframe loading="lazy" src="/bbs/snippet.php?cart_id=tfl-1&src=1" style="width:100%; height:400px; border:none; overflow:hidden"></iframe> </div> <div style="width:620px; display:none; background-color:#222;" id="cartembed_tfl-1"> <div style="padding:8px; display:table; color:#fff; width:100%"> Copy and paste the snippet below into your HTML. </div> <div style="padding:10px;"> <textarea rows=5 class=lexinput style="width:580px;height:50px;background-color:#fed;font-size:10pt;"><iframe src="https://www.lexaloffle.com/bbs/widget.php?pid=tfl" allowfullscreen width="621" height="513" style="border:none; overflow:hidden"></iframe></textarea> </div> </div> <br></p> <p>Here's an orange and some sandwiches for The Wizard. Use the dpad (or cursors) to control the owl, and watch out for castle creatures. Also, take care of the basket ~~ if it hits a wall too hard, it might smash. Good luck!</p> <p>This is a short game made for Ludum Dare vol.53</p> <p><a href="https://ldjam.com/events/ludum-dare/53/$366108">https://ldjam.com/events/ludum-dare/53/$366108</a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=ldjam"><span class="tag">ldjam</span></a> <a href="/bbs/?cat=7#tag=action"><span class="tag">action</span></a> <a href="/bbs/?cat=7#tag=owl"><span class="tag">owl</span></a> <a href="/bbs/?cat=7#tag=physics"><span class="tag">physics</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_129209_like', 129209, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_129209_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_129209_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">126</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_129209_fav', 129209, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_129209_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_129209_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=52576#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 19 comments </div> </a> <a href="/bbs/?uid=68753" title="PBES-studio" style="height:40px"> <img loading="lazy" src="/media/68753/logo carre虂.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=57071" title="ooooggll" style="height:40px"> <img loading="lazy" src="/media/57071/ooooggll minimal square.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=65920" title="Kaius" style="height:40px"> <img loading="lazy" src="/media/65920/8_Red Mushroom Avatar.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=2836" title="JTE" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bimg/pi/pi20.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=68168" title="Bloodbane" style="height:40px"> <img loading="lazy" src="/media/68168/2014_avatar.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=75969" title="Doriencey" style="height:40px"> <img loading="lazy" src="/media/75969/pet the cat 2_5.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=68936" title="Verb" style="height:40px"> <img loading="lazy" src="/media/68936/5_BigVerb.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=74588" title="praiseafrog" style="height:40px"> <img loading="lazy" src="/media/74588/19_frog-removebg-preview (1).png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=66501" title="Heracleum" style="height:40px"> <img loading="lazy" src="/media/66501/3_682398-B50.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=65636" title="mcman" style="height:40px"> <img loading="lazy" src="/media/65636/lancer-deltarune.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p125754 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=51606">Lovebyte 2023 Intros</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2023-02-12 13:21 *edited 2023-02-13 10:10" href="/bbs/?pid=125754#p" style="color:#f8a">2023-02-12*</a><a class="desktop_div" title="2023-02-12 13:21 *edited 2023-02-13 10:10" href="/bbs/?pid=125754#p" style="color:#f8a">2023-02-12 13:21*</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=2"style="color:#fff">Cartridges</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_125754'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_125754" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_125754_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_125754_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_125754_watch', 125754, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_125754_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_125754_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_125754_pinned', 125754, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><p>It's <a href="https://lovebyte.party/">Lovebyte</a> this weekend, and I made a couple of size-coded intros for it. First up is an invite to another <a href="https://en.wikipedia.org/wiki/Demoscene">demoscene</a> party: <a href="https://sessions.frontl1ne.net/">SESSIONS in C4 LAN 2023 SPRING</a>, taking place in Shizuoka / Japan end of April. This one is 512 bytes, around 100 of which are for the music (don't wait for the drop!): </p> <p><div style="display:table; margin:0px; padding:0px"><div id="psessions_2023-0" class="playarea_0" style="width:100%; "> <div id="cart_player_sessions_2023-0" style="overflow:hidden; display:table; width:740px; max-width:95vw; height:640px; max-height:95vw; background-color:#111"> <div class="dormant_player" id="cart_player_dormant_sessions_2023-0" style=""> <div style="position:absolute; z-index:20; padding:8px; max-width:740px;"> <div style="font-size:15pt"> <a href="https://www.lexaloffle.com/bbs/?pid=sessions_2023#p">sessions 2023 invitro</a> </div> <div style="font-size:11pt; margin-top:4px"> by <a href="https://www.lexaloffle.com/bbs/?uid=1">zep</a> </div> </div> <center><div style="display:table; position:relative; background-color:#000; width:640; height:640; max-width:95vw; max-height:95vw; align-items:center;"> <div style="display:flex; position:absolute; z-index:10; width:100%; height:100%; align-items:center;"> <img style="cursor:pointer; width:80px; height:80px; margin:auto;" onClick="activate_p8_player('/play/pico8_0206c_dev8.js', 'sessions_2023-0', '/bbs/cposts/se/sessions_2023-0.p8.png', 'cart_player_sessions_2023-0', 'cart_player_dormant_sessions_2023-0');" src="/gfx/play80.png"/> </div> <img src="/bbs/thumbs/pico8_sessions_2023-0.png" style="opacity:0.7; width:100%; height:100%; "> </div></center> </div> <!-- dormant --> </div> <div style="display:table; width:100%; background-color:#222; padding-top:2px; padding-bottom:2px"> <div class=desktop_div style="margin-top:4px;margin-left:8px;float:left;"> <a href="/bbs/cposts/se/sessions_2023-0.p8.png"><img src="/gfx/cart32.png" width=16 height=20></a> </div> <div style="margin-top:6px;margin-left:4px;float:left;"> <font color=#999 size=1> <a title="Open Cartridge File" href="/bbs/cposts/se/sessions_2023-0.p8.png">Cart</a> #sessions_2023-0 | <span title="2023-02-10 12:21:24" >2023-02-10</span> | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartsrc_sessions_2023-0"); if (el.style.display == "none") { el.style.display = ""; //print_cart_code("https://www.lexaloffle.com/bbs/cposts/se/sessions_2023-0.p8.png", "cartsrc_sessions_2023-0"); } else el.style.display = "none"; /* microAjax("/bbs/snippet.php?cart_id=sessions_2023-0&src=1", function (retdata){ var el = document.getElementById("cartsrc_sessions_2023-0"); el.innerHTML = retdata; } ); */ '> Code ▽</a> <span class=desktop_div > | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartembed_sessions_2023-0"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; '> Embed ▽</a> </span> | <span class="desktop_div" style="color:#666">License:</span> <a target=_cc4 href="https://creativecommons.org/licenses/by-nc-sa/4.0/" style="color:#aaa">CC4-BY-NC-SA</a></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_125754_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_125754_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_125754_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_125754_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">18</div></div></div> </font></div></div></div> <div style="max-width:740px; border:0px; margin:0px; padding:0px; background-color:#224; display:none" id="cartsrc_sessions_2023-0" > <iframe loading="lazy" src="/bbs/snippet.php?cart_id=sessions_2023-0&src=1" style="width:100%; height:400px; border:none; overflow:hidden"></iframe> </div> <div style="width:620px; display:none; background-color:#222;" id="cartembed_sessions_2023-0"> <div style="padding:8px; display:table; color:#fff; width:100%"> Copy and paste the snippet below into your HTML. </div> <div style="padding:10px;"> <textarea rows=5 class=lexinput style="width:580px;height:50px;background-color:#fed;font-size:10pt;"><iframe src="https://www.lexaloffle.com/bbs/widget.php?pid=sessions_2023" allowfullscreen width="621" height="513" style="border:none; overflow:hidden"></iframe></textarea> </div> </div> <br></p> <p>I also tried a bunch of 64 byte intros based on poking semi-structured patterns into ram that could double as audio and visual data. This is the one that I submitted to the 64 byte compo:</p> <p><div style="display:table; margin:0px; padding:0px"><div id="pattack_on_venus-0" class="playarea_0" style="width:100%; "> <div id="cart_player_attack_on_venus-0" style="overflow:hidden; display:table; width:740px; max-width:95vw; height:640px; max-height:95vw; background-color:#111"> <div class="dormant_player" id="cart_player_dormant_attack_on_venus-0" style=""> <div style="position:absolute; z-index:20; padding:8px; max-width:740px;"> <div style="font-size:15pt"> <a href="https://www.lexaloffle.com/bbs/?pid=attack_on_venus#p">attack_on_venus</a> </div> <div style="font-size:11pt; margin-top:4px"> by <a href="https://www.lexaloffle.com/bbs/?uid=1">zep</a> </div> </div> <center><div style="display:table; position:relative; background-color:#000; width:640; height:640; max-width:95vw; max-height:95vw; align-items:center;"> <div style="display:flex; position:absolute; z-index:10; width:100%; height:100%; align-items:center;"> <img style="cursor:pointer; width:80px; height:80px; margin:auto;" onClick="activate_p8_player('/play/pico8_0206c_dev8.js', 'attack_on_venus-0', '/bbs/cposts/at/attack_on_venus-0.p8.png', 'cart_player_attack_on_venus-0', 'cart_player_dormant_attack_on_venus-0');" src="/gfx/play80.png"/> </div> <img src="/bbs/thumbs/pico8_attack_on_venus-0.png" style="opacity:0.7; width:100%; height:100%; "> </div></center> </div> <!-- dormant --> </div> <div style="display:table; width:100%; background-color:#222; padding-top:2px; padding-bottom:2px"> <div class=desktop_div style="margin-top:4px;margin-left:8px;float:left;"> <a href="/bbs/cposts/at/attack_on_venus-0.p8.png"><img src="/gfx/cart32.png" width=16 height=20></a> </div> <div style="margin-top:6px;margin-left:4px;float:left;"> <font color=#999 size=1> <a title="Open Cartridge File" href="/bbs/cposts/at/attack_on_venus-0.p8.png">Cart</a> #attack_on_venus-0 | <span title="2023-02-10 12:22:48" >2023-02-10</span> | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartsrc_attack_on_venus-0"); if (el.style.display == "none") { el.style.display = ""; //print_cart_code("https://www.lexaloffle.com/bbs/cposts/at/attack_on_venus-0.p8.png", "cartsrc_attack_on_venus-0"); } else el.style.display = "none"; /* microAjax("/bbs/snippet.php?cart_id=attack_on_venus-0&src=1", function (retdata){ var el = document.getElementById("cartsrc_attack_on_venus-0"); el.innerHTML = retdata; } ); */ '> Code ▽</a> <span class=desktop_div > | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartembed_attack_on_venus-0"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; '> Embed ▽</a> </span> | <span class="desktop_div" style="color:#666">License:</span> <a target=_cc4 href="https://creativecommons.org/licenses/by-nc-sa/4.0/" style="color:#aaa">CC4-BY-NC-SA</a></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_125754_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_125754_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_125754_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_125754_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">18</div></div></div> </font></div></div></div> <div style="max-width:740px; border:0px; margin:0px; padding:0px; background-color:#224; display:none" id="cartsrc_attack_on_venus-0" > <iframe loading="lazy" src="/bbs/snippet.php?cart_id=attack_on_venus-0&src=1" style="width:100%; height:400px; border:none; overflow:hidden"></iframe> </div> <div style="width:620px; display:none; background-color:#222;" id="cartembed_attack_on_venus-0"> <div style="padding:8px; display:table; color:#fff; width:100%"> Copy and paste the snippet below into your HTML. </div> <div style="padding:10px;"> <textarea rows=5 class=lexinput style="width:580px;height:50px;background-color:#fed;font-size:10pt;"><iframe src="https://www.lexaloffle.com/bbs/widget.php?pid=attack_on_venus" allowfullscreen width="621" height="513" style="border:none; overflow:hidden"></iframe></textarea> </div> </div> <br></p> <p><a href="/bbs/?pid=125754#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=512b"><span class="tag">512b</span></a> <a href="/bbs/?cat=7#tag=64b"><span class="tag">64b</span></a> <a href="/bbs/?cat=7#tag=lovebyte"><span class="tag">lovebyte</span></a> <a href="/bbs/?cat=7#tag=demoscene"><span class="tag">demoscene</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_125754_like', 125754, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_125754_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_125754_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">18</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_125754_fav', 125754, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_125754_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_125754_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=51606#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 1 comment </div> </a> <a href="/bbs/?uid=23246" title="DRStudio2010" style="height:40px"> <img loading="lazy" src="/media/23246/31_drskalcolors.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p125248 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=51465">PICO-8 0.2.5g</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2023-02-03 20:29 *edited 2023-02-06 17:42" href="/bbs/?pid=125248#p" style="color:#f8a">2023-02-03*</a><a class="desktop_div" title="2023-02-03 20:29 *edited 2023-02-06 17:42" href="/bbs/?pid=125248#p" style="color:#f8a">2023-02-03 20:29*</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=7"style="color:#fff">Blog</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_125248'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_125248" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_125248_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_125248_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_125248_watch', 125248, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_125248_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_125248_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_125248_pinned', 125248, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/pico8_025f.gif" width=384 height=384 alt="" /> <p>More bugfixin'</p> <p>PICO-8 <span style="text-decoration: line-through;">0.2.5f</span> 0.2.5g is up now up on <a href="https://www.lexaloffle.com/games.php?page=updates">lexaloffle</a>, <a href="https://www.humblebundle.com/home/library">Humble</a>, <a href="https://lexaloffle.itch.io/pico-8">itch.io</a>, and for <a href="https://lexaloffle.com/bbs/?tid=34009">PocketCHIP</a> and web (<a href="https://pico-8-edu.com">Education Edition</a>).</p> <h3>v0.2.5g Changelog:</h3> <p>Fixed: tonum("123abc") returns 123 (should return nothing) // also breaks split(). regression in 0.2.5f<br /> Fixed: draw_tabs not listed by CONFIG command</p> <h3>v0.2.5f Changelog:</h3> <p>Added: CONFIG DRAW_TABS 1 to show tab characters in code editor (previously required editing config.txt)<br /> Changed: tokenizer recognises long comments / string using [=<em>[ ]=</em>] e.g. [==[ long string ]==]<br /> Changed: Nested long comments and strings no longer allowed<br /> Changed: x % 0 gives 0 (was x)<br /> Optimised: software blitter now faster when using PocketCHIP, windowed raspi or blit_method 1</p> <p><a href="/bbs/?pid=125248#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=pico-8"><span class="tag">pico-8</span></a> <a href="/bbs/?cat=7#tag=update"><span class="tag">update</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_125248_like', 125248, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_125248_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_125248_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">27</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_125248_fav', 125248, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_125248_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_125248_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=51465#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 24 comments </div> </a> <a href="/bbs/?uid=13822" title="Liquidream" style="height:40px"> <img loading="lazy" src="/media/13822/avatar-large-cropped-trans-blinking.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=1" title="zep" style="height:40px"> <img loading="lazy" src="/media/1/grappleoid_wave.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=15232" title="dw817" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/15232/me-square.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=27691" title="pancelor" style="height:40px"> <img loading="lazy" src="/media/27691/dinnerwashingatsunset.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=12874" title="Felice" style="height:40px"> <img loading="lazy" src="/media/12874/56_av_violet_pikuseru_flat.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=47515" title="SquidLight" style="height:40px"> <img loading="lazy" src="/media/47515/squidlight.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=68442" title="ericb" style="height:40px"> <img loading="lazy" src="/media/68442/18_intoruins_avatar.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=2836" title="JTE" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bimg/pi/pi20.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=47064" title="Yolwoocle" style="height:40px"> <img loading="lazy" src="/media/47064/22_cacti_sleep_pico-8_ver-export.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=72766" title="HTV04" style="height:40px"> <img loading="lazy" src="/media/72766/HTV04 Avatar 1.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p123355 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=50923">Picotron Playground</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2022-12-31 15:33 *edited 2023-06-04 06:45" href="/bbs/?pid=123355#p" style="color:#f8a">2022-12-31*</a><a class="desktop_div" title="2022-12-31 15:33 *edited 2023-06-04 06:45" href="/bbs/?pid=123355#p" style="color:#f8a">2022-12-31 15:33*</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=1"> Blogs</a>></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_123355'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_123355" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_123355_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_123355_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_123355_watch', 123355, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_123355_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_123355_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_123355_pinned', 123355, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/picotron_playground.gif" alt="" /> <p><strong>UPDATE: Part II Thread</strong> <a href="https://www.lexaloffle.com/bbs/?tid=52692">https://www.lexaloffle.com/bbs/?tid=52692</a></p> <p>A new year, a new fantasy machine! <a href="https://www.lexaloffle.com/picotron.php?page=playground">Picotron Playground</a> is an experimental web version of <a href="https://www.picotron.net">Picotron</a>'s WIP runtime and API, bundled with a terminal and code editor in order to make some toy programs. You can read more about the goals of Picotron and its specifications in the FAQ:</p> <p><a href="https://www.lexaloffle.com/picotron.php?page=faq">https://www.lexaloffle.com/picotron.php?page=faq</a></p> <p>Although I'm still mostly occupied with PICO-8 and Voxatron, I hope this will be a good way to chip away at the project and let future users try out the API in a low-stakes way before it is ready to go into production.</p> <p>Launch Picotron Playground here:</p> <p><a href="https://www.lexaloffle.com/picotron.php?page=playground">https://www.lexaloffle.com/picotron.php?page=playground</a></p> <p>Note: you'll need a US layout keyboard and <strong>there is no permanent storage</strong>, although the clipboard does work if you want to store some snippets. Please work on anything larger than toy programs at your own risk!</p> <p><a href="/bbs/?pid=123355#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=1#tag=picotron"><span class="tag">picotron</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_123355_like', 123355, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_123355_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_123355_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">76</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_123355_fav', 123355, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_123355_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_123355_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=50923#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 86 comments </div> </a> <a href="/bbs/?uid=5819" title="flex" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/5819/_flex.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=70005" title="RicketyHalo" style="height:40px"> <img loading="lazy" src="/media/70005/6_Pico-8pfp.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=32135" title="thattomhall" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/32135/ck.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=27691" title="pancelor" style="height:40px"> <img loading="lazy" src="/media/27691/dinnerwashingatsunset.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=15232" title="dw817" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/15232/me-square.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=42335" title="Sosasees" style="height:40px"> <img loading="lazy" src="/media/42335/sosasees-profile-picture-2024-01-16%20p8_0.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=49583" title="bikibird" style="height:40px"> <img loading="lazy" src="/media/49583/2_HeadShot.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=13822" title="Liquidream" style="height:40px"> <img loading="lazy" src="/media/13822/avatar-large-cropped-trans-blinking.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=1" title="zep" style="height:40px"> <img loading="lazy" src="/media/1/grappleoid_wave.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=47515" title="SquidLight" style="height:40px"> <img loading="lazy" src="/media/47515/squidlight.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p123001 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=50824">Wooden Toy Joinery</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2022-12-25 12:51 *edited 2022-12-25 13:12" href="/bbs/?pid=123001#p" style="color:#f8a">2022-12-25*</a><a class="desktop_div" title="2022-12-25 12:51 *edited 2022-12-25 13:12" href="/bbs/?pid=123001#p" style="color:#f8a">2022-12-25 12:51*</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=2"style="color:#fff">Cartridges</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_123001'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_123001" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_123001_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_123001_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_123001_watch', 123001, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_123001_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_123001_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_123001_pinned', 123001, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><p><div style="display:table; margin:0px; padding:0px"><div id="pwtj-0" class="playarea_0" style="width:100%; "> <div id="cart_player_wtj-0" style="overflow:hidden; display:table; width:740px; max-width:95vw; height:640px; max-height:95vw; background-color:#111"> <div class="dormant_player" id="cart_player_dormant_wtj-0" style=""> <div style="position:absolute; z-index:20; padding:8px; max-width:740px;"> <div style="font-size:15pt"> <a href="https://www.lexaloffle.com/bbs/?pid=wtj#p">Wooden Toy Joinery</a> </div> <div style="font-size:11pt; margin-top:4px"> by <a href="https://www.lexaloffle.com/bbs/?uid=1">zep</a> </div> </div> <center><div style="display:table; position:relative; background-color:#000; width:640; height:640; max-width:95vw; max-height:95vw; align-items:center;"> <div style="display:flex; position:absolute; z-index:10; width:100%; height:100%; align-items:center;"> <img style="cursor:pointer; width:80px; height:80px; margin:auto;" onClick="activate_p8_player('/play/pico8_0206c_dev8.js', 'wtj-0', '/bbs/cposts/wt/wtj-0.p8.png', 'cart_player_wtj-0', 'cart_player_dormant_wtj-0');" src="/gfx/play80.png"/> </div> <img src="/bbs/thumbs/pico8_wtj-0.png" style="opacity:0.7; width:100%; height:100%; "> </div></center> </div> <!-- dormant --> </div> <div style="display:table; width:100%; background-color:#222; padding-top:2px; padding-bottom:2px"> <div class=desktop_div style="margin-top:4px;margin-left:8px;float:left;"> <a href="/bbs/cposts/wt/wtj-0.p8.png"><img src="/gfx/cart32.png" width=16 height=20></a> </div> <div style="margin-top:6px;margin-left:4px;float:left;"> <font color=#999 size=1> <a title="Open Cartridge File" href="/bbs/cposts/wt/wtj-0.p8.png">Cart</a> #wtj-0 | <span title="2022-12-25 06:07:27" >2022-12-25</span> | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartsrc_wtj-0"); if (el.style.display == "none") { el.style.display = ""; //print_cart_code("https://www.lexaloffle.com/bbs/cposts/wt/wtj-0.p8.png", "cartsrc_wtj-0"); } else el.style.display = "none"; /* microAjax("/bbs/snippet.php?cart_id=wtj-0&src=1", function (retdata){ var el = document.getElementById("cartsrc_wtj-0"); el.innerHTML = retdata; } ); */ '> Code ▽</a> <span class=desktop_div > | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartembed_wtj-0"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; '> Embed ▽</a> </span> | <span class="desktop_div" style="color:#666">License:</span> <a target=_cc4 href="https://creativecommons.org/licenses/by-nc-sa/4.0/" style="color:#aaa">CC4-BY-NC-SA</a></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_123001_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_123001_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_123001_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_123001_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">20</div></div></div> </font></div></div></div> <div style="max-width:740px; border:0px; margin:0px; padding:0px; background-color:#224; display:none" id="cartsrc_wtj-0" > <iframe loading="lazy" src="/bbs/snippet.php?cart_id=wtj-0&src=1" style="width:100%; height:400px; border:none; overflow:hidden"></iframe> </div> <div style="width:620px; display:none; background-color:#222;" id="cartembed_wtj-0"> <div style="padding:8px; display:table; color:#fff; width:100%"> Copy and paste the snippet below into your HTML. </div> <div style="padding:10px;"> <textarea rows=5 class=lexinput style="width:580px;height:50px;background-color:#fed;font-size:10pt;"><iframe src="https://www.lexaloffle.com/bbs/widget.php?pid=wtj" allowfullscreen width="621" height="513" style="border:none; overflow:hidden"></iframe></textarea> </div> </div> <br></p> <p>Use the dpad to move head pieces around, join them to tiles (only some tiles join, and only on certain sides), and move your creation to the target area to complete each puzzle.</p> <p>A wee game for <a href="https://www.lexaloffle.com/bbs/?tid=50644">Twelve Days of PICO-8 Christmas 2022</a>. To get the full experience, play it from <a href="https://www.lexaloffle.com/bbs/?uid=14839"> @TheTomster</a>'s <a href="https://www.lexaloffle.com/bbs/?tid=50644">menu cart</a>!</p> <p>Some scenes from other games in the collection:</p> <p><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/mittens_0.gif" alt="" /><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/freezing knights battle 3_0.gif" alt="" /><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/puffy coats_0.gif" alt="" /><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/decigobloopbloop_0.gif" alt="" /></p> <p>Wooden Toy Joinery was a 3 day collaboration with my 9 year-old while visiting my folk's place in the south of New Zealand. Yesterday out of nowhere my Dad produced what looks to be one of the first BASIC programs I ever wrote (maybe.. 1985?). I didn't have access to a computer at the time, and this was before understanding what variables are. I suspect I was imitating a pick-a-path adventure code listing I'd seen, but applied to an action game.</p> <p><a href="/bbs/?pid=123001#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_123001_like', 123001, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_123001_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_123001_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">20</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_123001_fav', 123001, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_123001_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_123001_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=50824#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 2 comments </div> </a> <a href="/bbs/?uid=27691" title="pancelor" style="height:40px"> <img loading="lazy" src="/media/27691/dinnerwashingatsunset.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=68168" title="Bloodbane" style="height:40px"> <img loading="lazy" src="/media/68168/2014_avatar.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p122312 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=50632">PICO-8 0.2.5d</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2022-12-13 15:16 *edited 2023-01-02 14:00" href="/bbs/?pid=122312#p" style="color:#f8a">2022-12-13*</a><a class="desktop_div" title="2022-12-13 15:16 *edited 2023-01-02 14:00" href="/bbs/?pid=122312#p" style="color:#f8a">2022-12-13 15:16*</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=7"style="color:#fff">Blog</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_122312'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_122312" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_122312_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_122312_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_122312_watch', 122312, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_122312_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_122312_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_122312_pinned', 122312, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/bunny_1.gif" alt="" /> <p>Hey all! Time for some more bugfixes and esoteric features / QOL improvements to finish off 0.2.5*. And thanks to some snippets from <a href="https://www.lexaloffle.com/bbs/?uid=14958"> @samhocevar</a>'s excellent <a href="https://github.com/samhocevar/z8lua">z8lua</a>, some cleaner code parsing. <a href="https://www.pico-8.com">PICO-8</a> 0.2.5d is now up on <a href="https://www.lexaloffle.com/games.php?page=updates">lexaloffle</a>, <a href="https://www.humblebundle.com/home/library">Humble</a>, <a href="https://lexaloffle.itch.io/pico-8">itch.io</a>, and for <a href="https://lexaloffle.com/bbs/?tid=34009">PocketCHIP</a> and web (<a href="https://pico-8-edu.com">Education Edition</a>).</p> <h3>0.2.5e</h3> <p>0.2.5e fixes a bug in the loader that causes uppercase characters to not be loaded as punyfont (e.g. breaking _ENV).</p> <h3>0.2.5d</h3> <p>Added: tline(bits) to set number of bits used for fractional part of mx,my,mdx,mdy (13 by default)<br /> Added: ctrl+mousewheel to scroll code horizontally<br /> Added: current bbs cartridge id shown in window title (config.txt show_cart_id_in_title to disable)<br /> Added: poke(0x5f36, (@0x5f36)|0x80) to enable character wrap by default when printing<br /> Added: blit_method in config.txt // Can use a software blitter by default (slower but more reliable)<br /> Added: reminder when re-locating sprites that only the top half of map is altered by default<br /> Added: draw boot sound as note glyphs on startup when sound is off<br /> Changed: print() returns both max(cur_x), max(cur_y) and includes non-printed characters (e.g. tabs)<br /> Changed: extcmd("folder") and extcmd("set_title", "foo") can now be used from bbs carts<br /> Changed: Indexing a string out of range returns nil (was "")<br /> Changed: Replaced most of pre-processor with Lua parser modifications based on z8lua (fixes various edge cases)<br /> Changed: "a</p> <p><a href="/bbs/?pid=122312#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=pico-8"><span class="tag">pico-8</span></a> <a href="/bbs/?cat=7#tag=update"><span class="tag">update</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_122312_like', 122312, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_122312_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_122312_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">41</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_122312_fav', 122312, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_122312_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_122312_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=50632#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 20 comments </div> </a> <a href="/bbs/?uid=41031" title="merwok" style="height:40px"> <img loading="lazy" src="/media/41031/avapourwok.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=15232" title="dw817" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/15232/me-square.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=61038" title="Emalan-P" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi14.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=68924" title="aced" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi28.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=9599" title="dddaaannn" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi31.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=25532" title="freds72" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/25532/icon.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=47206" title="drakeblue" style="height:40px"> <img loading="lazy" src="/media/47206/6_LogoCropped.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=1" title="zep" style="height:40px"> <img loading="lazy" src="/media/1/grappleoid_wave.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=44101" title="japhib" style="height:40px"> <img loading="lazy" src="/media/44101/profile.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=44150" title="rnd" style="height:40px"> <img loading="lazy" src="/media/44150/avatest_7_240.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p120267 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=50098">aajibi (512b intro)</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2022-11-07 18:18" href="/bbs/?pid=120267#p" style="color:#f8a">2022-11-07</a><a class="desktop_div" title="2022-11-07 18:18" href="/bbs/?pid=120267#p" style="color:#f8a">2022-11-07 18:18</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=2"style="color:#fff">Cartridges</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_120267'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_120267" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_120267_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_120267_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_120267_watch', 120267, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_120267_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_120267_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_120267_pinned', 120267, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><p><div style="display:table; margin:0px; padding:0px"><div id="paajibi-0" class="playarea_0" style="width:100%; "> <div id="cart_player_aajibi-0" style="overflow:hidden; display:table; width:740px; max-width:95vw; height:640px; max-height:95vw; background-color:#111"> <div class="dormant_player" id="cart_player_dormant_aajibi-0" style=""> <div style="position:absolute; z-index:20; padding:8px; max-width:740px;"> <div style="font-size:15pt"> <a href="https://www.lexaloffle.com/bbs/?pid=aajibi#p">aajibi (512b intro)</a> </div> <div style="font-size:11pt; margin-top:4px"> by <a href="https://www.lexaloffle.com/bbs/?uid=1">zep</a> </div> </div> <center><div style="display:table; position:relative; background-color:#000; width:640; height:640; max-width:95vw; max-height:95vw; align-items:center;"> <div style="display:flex; position:absolute; z-index:10; width:100%; height:100%; align-items:center;"> <img style="cursor:pointer; width:80px; height:80px; margin:auto;" onClick="activate_p8_player('/play/pico8_0206c_dev8.js', 'aajibi-0', '/bbs/cposts/aa/aajibi-0.p8.png', 'cart_player_aajibi-0', 'cart_player_dormant_aajibi-0');" src="/gfx/play80.png"/> </div> <img src="/bbs/thumbs/pico8_aajibi-0.png" style="opacity:0.7; width:100%; height:100%; "> </div></center> </div> <!-- dormant --> </div> <div style="display:table; width:100%; background-color:#222; padding-top:2px; padding-bottom:2px"> <div class=desktop_div style="margin-top:4px;margin-left:8px;float:left;"> <a href="/bbs/cposts/aa/aajibi-0.p8.png"><img src="/gfx/cart32.png" width=16 height=20></a> </div> <div style="margin-top:6px;margin-left:4px;float:left;"> <font color=#999 size=1> <a title="Open Cartridge File" href="/bbs/cposts/aa/aajibi-0.p8.png">Cart</a> #aajibi-0 | <span title="2022-11-07 17:43:30" >2022-11-07</span> | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartsrc_aajibi-0"); if (el.style.display == "none") { el.style.display = ""; //print_cart_code("https://www.lexaloffle.com/bbs/cposts/aa/aajibi-0.p8.png", "cartsrc_aajibi-0"); } else el.style.display = "none"; /* microAjax("/bbs/snippet.php?cart_id=aajibi-0&src=1", function (retdata){ var el = document.getElementById("cartsrc_aajibi-0"); el.innerHTML = retdata; } ); */ '> Code ▽</a> <span class=desktop_div > | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartembed_aajibi-0"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; '> Embed ▽</a> </span> | <span class="desktop_div" style="color:#666">License:</span> <a target=_cc4 href="https://creativecommons.org/licenses/by-nc-sa/4.0/" style="color:#aaa">CC4-BY-NC-SA</a></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_120267_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_120267_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_120267_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_120267_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">38</div></div></div> </font></div></div></div> <div style="max-width:740px; border:0px; margin:0px; padding:0px; background-color:#224; display:none" id="cartsrc_aajibi-0" > <iframe loading="lazy" src="/bbs/snippet.php?cart_id=aajibi-0&src=1" style="width:100%; height:400px; border:none; overflow:hidden"></iframe> </div> <div style="width:620px; display:none; background-color:#222;" id="cartembed_aajibi-0"> <div style="padding:8px; display:table; color:#fff; width:100%"> Copy and paste the snippet below into your HTML. </div> <div style="padding:10px;"> <textarea rows=5 class=lexinput style="width:580px;height:50px;background-color:#fed;font-size:10pt;"><iframe src="https://www.lexaloffle.com/bbs/widget.php?pid=aajibi" allowfullscreen width="621" height="513" style="border:none; overflow:hidden"></iframe></textarea> </div> </div> <br></p> <p>Turn on your subwoofer!</p> <p>This is a 512 byte intro I made for <a href="https://2022.inercia.pt/">inercia 2022</a>, a demoparty that took place in Lisbon over the weekend. It's the first time that I put the <a href="https://www.lexaloffle.com/bbs/?tid=41991">no longer secret</a> 0x808 audio channel to use, with around 200 bytes of the (compressed) code spent on generating the music.</p> <p>I was pleased to find that techniques used for golfing down visual effects' code size transfer quite well to audio. There are a lot of expressions in there that change meaning over time in a way that produces some kind of structured progression -- some planned, some not so planned. The whole thing is really a single effect, with a lot of janky math to roll out different audio and gfx layers at different times. I can't completely explain how it works in places, but feel free to ask about anything if you like!</p> <p><a href="/bbs/?pid=120267#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=512b"><span class="tag">512b</span></a> <a href="/bbs/?cat=7#tag=demoscene"><span class="tag">demoscene</span></a> <a href="/bbs/?cat=7#tag=intro"><span class="tag">intro</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_120267_like', 120267, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_120267_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_120267_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">38</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_120267_fav', 120267, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_120267_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_120267_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=50098#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 2 comments </div> </a> <a href="/bbs/?uid=15232" title="dw817" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/15232/me-square.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=71945" title="ioil13" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi9.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p116373 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=49075">PICO-8 0.2.5</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2022-08-28 10:32 *edited 2022-08-29 00:38" href="/bbs/?pid=116373#p" style="color:#f8a">2022-08-28*</a><a class="desktop_div" title="2022-08-28 10:32 *edited 2022-08-29 00:38" href="/bbs/?pid=116373#p" style="color:#f8a">2022-08-28 10:32*</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=7"style="color:#fff">Blog</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_116373'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_116373" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_116373_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_116373_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_116373_watch', 116373, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_116373_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_116373_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_116373_pinned', 116373, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/boat3b_1.gif" width=384 height=384 alt="" /> <p>Hey All!</p> <p><a href="https://www.pico-8.com">PICO-8</a> 0.2.5 is now up on <a href="https://www.lexaloffle.com/games.php?page=updates">lexaloffle</a>, <a href="https://www.humblebundle.com/home/library">Humble</a>, <a href="https://lexaloffle.itch.io/pico-8">itch.io</a>, and for <a href="https://lexaloffle.com/bbs/?tid=34009">PocketCHIP</a> and web (<a href="https://pico-8-edu.com">Education Edition</a>).</p> <p>Edit: 0.2.5b is now up for Linux users who had trouble connecting to the BBS: <a href="https://www.lexaloffle.com/bbs/?pid=116441#p">https://www.lexaloffle.com/bbs/?pid=116441#p</a></p> <h2>Built-in Help</h2> <p>PICO-8 0.2.5 has built-in documentation on API functions and other topics. Type "HELP" at the prompt to see a list of topics in blue, and then e.g. "HELP GFX" to get more information about that thing.</p> <p>While in the code editor, you can also press CTRL-U to get help on whatever is under the cursor, including operators and Lua keywords.</p> <div> <div class=scrollable_with_touch style="width:100%; max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre>> HELP FILLP</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/help_fillp.png" width=384 height=384 alt="" /> <h2>String Indexing</h2> <p>Single characters can now be grabbed from strings using a familiar str[i] style syntax that means something similar to sub(str, i, i). The index is rounded down to the closest integer, and can be negative to index from the end of the string.</p> <p><a href="/bbs/?pid=116373#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=pico-8"><span class="tag">pico-8</span></a> <a href="/bbs/?cat=7#tag=update"><span class="tag">update</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_116373_like', 116373, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_116373_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_116373_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">44</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_116373_fav', 116373, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_116373_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_116373_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=49075#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 41 comments </div> </a> <a href="/bbs/?uid=68041" title="Doubleshotgun" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi9.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=15227" title="johanp" style="height:40px"> <img loading="lazy" src="/media/15227/14_johapeitz-sunny.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=13822" title="Liquidream" style="height:40px"> <img loading="lazy" src="/media/13822/avatar-large-cropped-trans-blinking.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=10391" title="Meep" style="height:40px"> <img loading="lazy" src="/media/10391/bigpslime_simple_transparent_pixel.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=15232" title="dw817" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/15232/me-square.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=27691" title="pancelor" style="height:40px"> <img loading="lazy" src="/media/27691/dinnerwashingatsunset.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=1" title="zep" style="height:40px"> <img loading="lazy" src="/media/1/grappleoid_wave.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=41031" title="merwok" style="height:40px"> <img loading="lazy" src="/media/41031/avapourwok.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=25119" title="StinkerB06" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi31.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=32989" title="TheRoboZ" style="height:40px"> <img loading="lazy" src="/media/32989/du.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p110017 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=47328">PICO-8 0.2.4c</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2022-04-10 22:32" href="/bbs/?pid=110017#p" style="color:#f8a">2022-04-10</a><a class="desktop_div" title="2022-04-10 22:32" href="/bbs/?pid=110017#p" style="color:#f8a">2022-04-10 22:32</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=7"style="color:#fff">Blog</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_110017'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_110017" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_110017_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_110017_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_110017_watch', 110017, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_110017_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_110017_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_110017_pinned', 110017, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><p><a href="https://www.pico-8.com">PICO-8</a> 0.2.4c is now up on <a href="https://www.lexaloffle.com/games.php?page=updates">lexaloffle</a>, <a href="https://www.humblebundle.com/home/library">Humble</a>, <a href="https://lexaloffle.itch.io/pico-8">itch.io</a>, and for <a href="https://lexaloffle.com/bbs/?tid=34009">PocketCHIP</a>.</p> <p>This is mostly a bug-fixing update; you can see the main 0.2.4 change notes in the <a href="https://www.lexaloffle.com/bbs/?tid=45538">0.2.4 thread</a>.</p> <h2>URL Cartridges</h2> <p>With the release of <a href="https://www.lexaloffle.com/bbs/?tid=47278">PICO-8 Education Edition</a>, it is now possible to encode cartridges into a 2040-character URL that runs it in a web version of PICO-8's editing tools. Only the code and graphics sections are stored.</p> <div> <div class=scrollable_with_touch style="width:100%; max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre>> SAVE @URL COPIED URL TO CLIPBOARD 265 / 2040 CHARS</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <h2>Tiny Cartridges</h2> <p>When exporting cartridges to .p8.rom format (the raw 32k block of data that is encoded inside .p8.png argb data), 0.2.4c allows only the code section to be stored using the -t (for tiny) switch:</p> <div> <div class=scrollable_with_touch style="width:100%; max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre>> EXPORT -T TINY.P8.ROM WRITING 154 BYTES (CODE ONLY)</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>You should get a file that is exactly as large as the compressed code size reported by INFO. When using LOAD, that file will be loaded into the code section, and the other sections reset to their default states.</p> <p>There isn't much practical use for tiny .P8.ROM files, but I think it is nice to be able to store a tiny program in its true tiny form on disk.</p> <p>On the subject of tiny cartridges, for those making </p> <p><a href="/bbs/?pid=110017#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=pico-8"><span class="tag">pico-8</span></a> <a href="/bbs/?cat=7#tag=update"><span class="tag">update</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_110017_like', 110017, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_110017_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_110017_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">32</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_110017_fav', 110017, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_110017_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_110017_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=47328#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 18 comments </div> </a> <a href="/bbs/?uid=10198" title="MBoffin" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/10198/W0rILG8T.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=15232" title="dw817" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/15232/me-square.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=32135" title="thattomhall" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/32135/ck.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=27691" title="pancelor" style="height:40px"> <img loading="lazy" src="/media/27691/dinnerwashingatsunset.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=62729" title="blakery" style="height:40px"> <img loading="lazy" src="/media/62729/Screenshot 2022-11-21 6.06.10 PM.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=45631" title="CraftyCommander" style="height:40px"> <img loading="lazy" src="/media/45631/4_IMG_20200625_181517_858.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=41031" title="merwok" style="height:40px"> <img loading="lazy" src="/media/41031/avapourwok.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=1" title="zep" style="height:40px"> <img loading="lazy" src="/media/1/grappleoid_wave.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=39052" title="nathanfdunn" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi12.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=53625" title="PineberryFox" style="height:40px"> <img loading="lazy" src="/media/53625/pine-pixel.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p109795 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=47278">PICO-8 Education Edition for Web</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2022-04-06 20:21 *edited 2022-04-08 18:40" href="/bbs/?pid=109795#p" style="color:#f8a">2022-04-06*</a><a class="desktop_div" title="2022-04-06 20:21 *edited 2022-04-08 18:40" href="/bbs/?pid=109795#p" style="color:#f8a">2022-04-06 20:21*</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=7"style="color:#fff">Blog</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_109795'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_109795" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_109795_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_109795_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_109795_watch', 109795, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_109795_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_109795_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_109795_pinned', 109795, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/pico8_edu_release.gif" width=512 height=512 alt="" /> <p>\o/</p> <p>Say hi to the newest member of the <a href="https://www.pico-8.com">PICO-8</a> family! A free, web-based, account-less version of the console making it a more accessible way to learn how to program, push pixels and write chip tunes. It comes with a fully functional set of cartridge editing tools, and can load and save .p8 and .p8.png files to and from your local drive (as well as storing them to a temporary filesystem in the browser's cache).</p> <hr /> <p>Just run it from any browser that has a keyboard + mouse attached:</p> <p><a href="https://www.pico-8-edu.com">www.pico-8-edu.com</a></p> <hr /> <p>If you are new to <a href="https://www.pico-8-com">PICO-8</a> you can find a <a href="https://www.lexaloffle.com/pico-8.php?page=resources">manual and tutorials</a> on the <a href="https://www.pico-8.com">main site</a>, or click on the blue bunny for some tips. Here's a 2-minute GIF showing the creaton of a simple PICO-8 cartridge from scatch:</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/duck_dance.gif" width=256 height=256 alt="" /> <p><a href="/bbs/?pid=109795#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=pico-8"><span class="tag">pico-8</span></a> <a href="/bbs/?cat=7#tag=new-release"><span class="tag">new-release</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_109795_like', 109795, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_109795_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_109795_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">108</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_109795_fav', 109795, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_109795_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_109795_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=47278#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 56 comments </div> </a> <a href="/bbs/?uid=46865" title="Niall Chandler" style="height:40px"> <img loading="lazy" src="/media/46865/Devlyn Brown.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=29043" title="trevorade" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/29043/trevorade.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=15232" title="dw817" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/15232/me-square.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=31305" title="ViNull" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi9.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=64705" title="Bignall" style="height:40px"> <img loading="lazy" src="/media/64705/Bignall.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=1" title="zep" style="height:40px"> <img loading="lazy" src="/media/1/grappleoid_wave.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=60989" title="Kuldr" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi29.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=36383" title="nikgid" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi31.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=42575" title="MaxBize" style="height:40px"> <img loading="lazy" src="/media/42575/profile.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=25119" title="StinkerB06" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi31.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p105760 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=46333">PICO-8 0.2.4b</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2022-01-27 21:01 *edited 2022-04-05 16:35" href="/bbs/?pid=105760#p" style="color:#f8a">2022-01-27*</a><a class="desktop_div" title="2022-01-27 21:01 *edited 2022-04-05 16:35" href="/bbs/?pid=105760#p" style="color:#f8a">2022-01-27 21:01*</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=7"style="color:#fff">Blog</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_105760'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_105760" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_105760_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_105760_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_105760_watch', 105760, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_105760_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_105760_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_105760_pinned', 105760, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><p>Hi All</p> <p><a href="https://www.pico-8.com">PICO-8</a> 0.2.4b is now up on <a href="https://www.lexaloffle.com/games.php?page=updates">lexaloffle</a>, <a href="https://www.humblebundle.com/home/library">Humble</a>, <a href="https://lexaloffle.itch.io/pico-8">itch.io</a>, and for <a href="https://lexaloffle.com/bbs/?tid=34009">PocketCHIP</a>.</p> <p>This is mostly a bug-fixing update; you can see the main 0.2.4 change notes in the <a href="https://www.lexaloffle.com/bbs/?tid=45538">0.2.4 thread</a>.</p> <p>There are a few handy editor features though; here's a demo of setting animation loops: press l to start and end, and then -,+ or q,w or a,z (for azerty keyboards) to switch frames. This also works at different sprite selection sizes (shift-click and drag a selection from the spritesheet). This gif also shows using ctrl-b to "paste big" multiple times.</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/jelpi_anim_demo3.gif" alt="" /> <p>Full 0.2.4b changelog:</p> <p>Added: l in sprite sheet navigator to set loop start / end points (then q,w or a,z to navigate)<br /> Added: ctrl-b in gfx editor to paste 2x2 original size ("paste big")</p> <p><a href="/bbs/?pid=105760#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=pico-8"><span class="tag">pico-8</span></a> <a href="/bbs/?cat=7#tag=update"><span class="tag">update</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_105760_like', 105760, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_105760_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_105760_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">17</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_105760_fav', 105760, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_105760_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_105760_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=46333#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 10 comments </div> </a> <a href="/bbs/?uid=42184" title="SmellyFishstiks" style="height:40px"> <img loading="lazy" src="/media/42184/spezkit icon4.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=27691" title="pancelor" style="height:40px"> <img loading="lazy" src="/media/27691/dinnerwashingatsunset.gif" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=15232" title="dw817" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/15232/me-square.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=32989" title="TheRoboZ" style="height:40px"> <img loading="lazy" src="/media/32989/du.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=41031" title="merwok" style="height:40px"> <img loading="lazy" src="/media/41031/avapourwok.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=1" title="zep" style="height:40px"> <img loading="lazy" src="/media/1/grappleoid_wave.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=57697" title="lzc" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi1.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><div style="width:100%; height:1px; background-color:#555; margin-bottom:10px"></div><div style="display:block; width:100%; max-width:100%; padding-bottom:0px; margin-bottom:0px; margin-bottom:-16px; padding-bottom:0px "><div id=p style="padding:8px; display:block;"><div id=p103519 style="display:flex; min-width:240px; margin-bottom:16px; "><div class="desktop_div" style=" margin-right:16px; padding-top:6px; min-width:72px; padding-right:8px; "> <center><a href=/bbs/?uid=1><img class=avatar width=64 height=64 src="/media/1/grappleoid_wave.png"> <br> </a><div style="min-width:54px; max-width:66px; display:table"><a target=_home href="https://www.lexaloffle.com/bbs/?tid=40058" class=social_button> <img src="/gfx/so_home.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_mastodon href="https://mastodon.social/@zep" class=social_button> <img src="/gfx/so_mastodon.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_twitter href="https://twitter.com/lexaloffle" class=social_button> <img src="/gfx/so_twitter.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_youtube href="https://youtube.com/lexaloffletv" class=social_button> <img src="/gfx/so_youtube.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_itch href="https://lexaloffle.itch.io/" class=social_button> <img src="/gfx/so_itch.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a><a target=_bluesky href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button> <img src="/gfx/so_bluesky.png" width=16 height=16 style="float:left; margin-left:4px; margin-top:0px; margin-bottom:4px"> </a></div> </center> </div><div style="width:100%;"><div style="display:flex; width:100%; justify-content: space-between;"><div><div style="font-size:32px; color:#ccc;"><a href="/bbs/?tid=45856">Holiday Jumper</a></div><div style="display:table;color:#49f;font-size:10pt"> <a href="/bbs/?uid=1"><b style="color:#fff;font-size:12pt">zep</b></a> • <a class="mobile_div" title="2021-12-25 11:36 *edited 2021-12-25 12:00" href="/bbs/?pid=103519#p" style="color:#f8a">2021-12-25*</a><a class="desktop_div" title="2021-12-25 11:36 *edited 2021-12-25 12:00" href="/bbs/?pid=103519#p" style="color:#f8a">2021-12-25 11:36*</a> • <div class=breadcrumbs style="display:inline; margin-left:0px; margin-top:4px"><div class=desktop_div><a href="/bbs">BBS</a>></div><a href="/bbs/?cat=7"> PICO-8</a>><a href="/bbs/?cat=7#sub=2"style="color:#fff">Cartridges</a></div></div></div><div style="max-width:64px; margin-left:4px"><div style="display:table; min-width:48px; min-height:48px"> <div style=" margin:2px; background-color:#444;"><center> <div style="padding:8px; padding-left:8px; padding-right:8px; background-color:#444; display:table; cursor:pointer; " onClick=" el1 = document.getElementById('set_extra_103519'); if (toggle_visible(el1)) install_dismisser(el1); "> <img src="/gfx/top_drop.png" style="min-width:12px"> </div> </center> </div> </div> </div></div> <div id="set_extra_103519" style="display:none; float:right; width:288px; position:relative; top:34px; left:34px; " > <div style=" padding:8px; background-color:#444; position:absolute; width:288px; z-index: 300; box-shadow: -14px 14px 16px rgba(0.2, 0.0, 0.4, 0.1); "><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_103519_watch" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_103519_watch" > <img src="/gfx/set_watch0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_103519_watch', 103519, 'watch', 12);">Subscribe to this Thread<br><span style="color:#999;font-size:9pt"> (Receive email notifications)</span></div> </div> </div><div style=" margin:2px;"> <div style="padding:4px; display:flex; background-color:#444;"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_103519_pinned" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="" class="i_rate_103519_pinned" > <img src="/gfx/set_pinned0.png" width=20 height=20> </div></div> <div style="margin-left:10px; cursor:pointer" onclick="toggle_set_button('rate_103519_pinned', 103519, 'pinned', 10);">Pin To Profile</div> </div> </div></div></div><br><div style="max-width:880px"><div style="min-height:44px;"><p><div style="display:table; margin:0px; padding:0px"><div id="pjumper-3" class="playarea_0" style="width:100%; "> <div id="cart_player_jumper-3" style="overflow:hidden; display:table; width:740px; max-width:95vw; height:640px; max-height:95vw; background-color:#111"> <div class="dormant_player" id="cart_player_dormant_jumper-3" style=""> <div style="position:absolute; z-index:20; padding:8px; max-width:740px;"> <div style="font-size:15pt"> <a href="https://www.lexaloffle.com/bbs/?pid=jumper#p">Holiday Jumper</a> </div> <div style="font-size:11pt; margin-top:4px"> by <a href="https://www.lexaloffle.com/bbs/?uid=1">zep</a> </div> </div> <center><div style="display:table; position:relative; background-color:#000; width:640; height:640; max-width:95vw; max-height:95vw; align-items:center;"> <div style="display:flex; position:absolute; z-index:10; width:100%; height:100%; align-items:center;"> <img style="cursor:pointer; width:80px; height:80px; margin:auto;" onClick="activate_p8_player('/play/pico8_0206c_dev8.js', 'jumper-3', '/bbs/cposts/ju/jumper-3.p8.png', 'cart_player_jumper-3', 'cart_player_dormant_jumper-3');" src="/gfx/play80.png"/> </div> <img src="/bbs/thumbs/pico8_jumper-3.png" style="opacity:0.7; width:100%; height:100%; "> </div></center> </div> <!-- dormant --> </div> <div style="display:table; width:100%; background-color:#222; padding-top:2px; padding-bottom:2px"> <div class=desktop_div style="margin-top:4px;margin-left:8px;float:left;"> <a href="/bbs/cposts/ju/jumper-3.p8.png"><img src="/gfx/cart32.png" width=16 height=20></a> </div> <div style="margin-top:6px;margin-left:4px;float:left;"> <font color=#999 size=1> <a title="Open Cartridge File" href="/bbs/cposts/ju/jumper-3.p8.png">Cart</a> #jumper-3 | <span title="2021-12-25 11:16:33" >2021-12-25</span> | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartsrc_jumper-3"); if (el.style.display == "none") { el.style.display = ""; //print_cart_code("https://www.lexaloffle.com/bbs/cposts/ju/jumper-3.p8.png", "cartsrc_jumper-3"); } else el.style.display = "none"; /* microAjax("/bbs/snippet.php?cart_id=jumper-3&src=1", function (retdata){ var el = document.getElementById("cartsrc_jumper-3"); el.innerHTML = retdata; } ); */ '> Code ▽</a> <span class=desktop_div > | <a style="cursor:pointer;" onclick=' var el = document.getElementById("cartembed_jumper-3"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; '> Embed ▽</a> </span> | <span class="desktop_div" style="color:#666">License:</span> <a target=_cc4 href="https://creativecommons.org/licenses/by-nc-sa/4.0/" style="color:#aaa">CC4-BY-NC-SA</a></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_103519_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_103519_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div></div> <div class="desktop_div" style="float:right; margin-right:10px; margin-top:2px"> <div style="display:flex; align-items: center; cursor:pointer;" class="rate_103519_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_103519_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">69</div></div></div> </font></div></div></div> <div style="max-width:740px; border:0px; margin:0px; padding:0px; background-color:#224; display:none" id="cartsrc_jumper-3" > <iframe loading="lazy" src="/bbs/snippet.php?cart_id=jumper-3&src=1" style="width:100%; height:400px; border:none; overflow:hidden"></iframe> </div> <div style="width:620px; display:none; background-color:#222;" id="cartembed_jumper-3"> <div style="padding:8px; display:table; color:#fff; width:100%"> Copy and paste the snippet below into your HTML. </div> <div style="padding:10px;"> <textarea rows=5 class=lexinput style="width:580px;height:50px;background-color:#fed;font-size:10pt;"><iframe src="https://www.lexaloffle.com/bbs/widget.php?pid=jumper" allowfullscreen width="621" height="513" style="border:none; overflow:hidden"></iframe></textarea> </div> </div> <br></p> <p>Happy Holidays, everyone! This cartridge is my addition to the <a href="https://www.lexaloffle.com/bbs/?tid=45525">2021 PICO-8 Advent Calendar</a>, which you should also check out if you haven't already!</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/1/holiday jumper_0.gif" alt="" /> <h3>Controls</h3> <ul> <li>LEFT/RIGHT: Slow down or speed up. It is vital to get the right speed for some jumps</li> <li>O (Z/C): Jump. You can get more height by going fast and/or holding the button longer.</li> <li>X: To restart after crashing.</li> </ul> <p>This game gets reasonably tricky; especially from level 3. But if you can reach the end, you'll get a simple ending along with your total time and number of restarts. The randomish elements in the game (you'll see what I mean) are actually deterministic, so it's possible to form strategies and optimise your time, if that's your cup of tea.</p> <p><a href="/bbs/?pid=103519#p"> <span style="font-size: 16px;"><span style="color: #ffaabb;"> [ Continue Reading.. ] </span></span> </a></p></div><div style="display:table; margin-bottom:8px; margin-top: 8px"><a href="/bbs/?cat=7#tag=pico8advent"><span class="tag">pico8advent</span></a> <a href="/bbs/?cat=7#tag=jumper"><span class="tag">jumper</span></a> <a href="/bbs/?cat=7#tag=action"><span class="tag">action</span></a> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_103519_like', 103519, 'like', 1);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_103519_like" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Give this post a star" class="i_rate_103519_like" > <img src="/gfx/set_like0.png" width=20 height=20> </div><div style="margin-left:4px; margin-right:6px; margin-top:2px; font-size:9pt; color:#999">69</div></div> </div> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" onclick="toggle_set_button('rate_103519_fav', 103519, 'fav', 2);" > <div style="display:flex; align-items: center; cursor:pointer;" class="rate_103519_fav" onclick="window.alert('Please log in first.')"> <div style="display:table; width:20px; height:20px" title="Add to your favourites collection" class="i_rate_103519_fav" > <img src="/gfx/set_fav0.png" width=20 height=20> </div></div> </div> <a href="/bbs/?tid=45856#comments"> <div class=form_button style="float:left; margin-right:12px; margin-bottom:-10px" > <img src="/gfx/i_discuss1.png" style="width:18px; height:16px; margin-right:8px; padding-top:2px; margin-bottom:-2px"> 7 comments </div> </a> <a href="/bbs/?uid=15232" title="dw817" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/15232/me-square.jpg" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=24137" title="luchak" style="height:40px"> <img loading="lazy" src="/media/24137/5_cloud.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=39267" title="remcode" style="height:40px"> <img loading="lazy" src="https://www.lexaloffle.com/bbs/files/39267/pico_remcode.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=1" title="zep" style="height:40px"> <img loading="lazy" src="/media/1/grappleoid_wave.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=31671" title="ocojo" style="height:40px"> <img loading="lazy" src="/bimg/pi/pi23.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=44175" title="ridgek" style="height:40px"> <img loading="lazy" src="/media/44175/2_7066611.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a><a href="/bbs/?uid=72593" title="baker" style="height:40px"> <img loading="lazy" src="/media/72593/4_convenienceStore.png" class=avatar_tiny style="float:left; width:32px; height:32px; margin-right:4px; margin-top:14px;"></a></div></div></div></div></div><br><br><br><hr> <br><center><div style="width:320px; display:flex"> <a href="?uid=1#m" class=form_button >Top</a>    <a href="?uid=1&beforewhen=2021-12-25 11:36:42#m" class=form_button >Load More Posts -></a> </div></center><br><script id=cart_data_script> p_sub = 0; pdat=[ ['jarlife-1', 144631, `Jar Life`,"",,,"2024-10-07 17:16:56",1,"zep","",0,"",,1,155392,7,2,'0',[],0,5,,``,``], ['blorb-1', 144570, `BLORB (pico-1k)`,"",,,"2024-10-01 08:32:30",1,"zep","",0,"",,1,155243,7,2,'0',[],0,0,,``,``], ['elf_curling-2', 55482, `Elf Curling`,"",,,"2023-12-25 11:26:30",1,"zep","",0,"",,1,139154,7,2,'0',[],0,5,,``,``], ['lv-2', 54397, `loom valley`,"",,,"2023-10-01 10:08:50",1,"zep","",0,"",,1,135203,7,8,'0',[],0,5,,``,``], ['fillp_cat-2', 52986, `fill pattern catalogue`,"",,,"2023-06-06 01:26:52",1,"zep","",0,"",,1,130531,7,2,'0',[],0,5,,``,``], ['tfl-1', 52576, `Time For Lunch`,"",,,"2023-05-01 23:50:44",1,"zep","",0,"",,1,129209,7,2,'0',[],0,5,,``,``], ['sessions_2023-0', 51606, `sessions 2023 invitro`,"",,,"2023-02-10 12:21:24",1,"zep","",0,"",,1,125754,7,2,'0',[],0,5,,``,``], ['attack_on_venus-0', 51606, `attack_on_venus`,"",,,"2023-02-10 12:22:48",1,"zep","",0,"",,1,125754,7,2,'0',[],0,5,,``,``], ['wtj-0', 50824, `Wooden Toy Joinery`,"",,,"2022-12-25 06:07:27",1,"zep","",0,"",,1,123001,7,2,'0',[],0,5,,``,``], ['aajibi-0', 50098, `aajibi (512b intro)`,"",,,"2022-11-07 17:43:30",1,"zep","",0,"",,1,120267,7,2,'0',[],0,5,,``,``], ['jumper-3', 45856, `Holiday Jumper`,"",,,"2021-12-25 11:16:33",1,"zep","",0,"",,1,103519,7,2,'0',[],0,5,,``,``], ]; var updat=[ ]; search_url_base = "?sub=0&search="; tag_url_base = "/bbs/?cat=0#tag="; function make_stat_box(set_name, num, state, post_id, bg, margin) { var imgf = set_name; if (state == 1) imgf = imgf + `1.png`; else imgf = imgf + `0.png`; var s = ` <div style="display:flex; background:`+bg+`; padding:6px; align-items: center; cursor:pointer; margin-left:`+margin+`px" class=rate_` + post_id + `_` + set_name; if (set_name!="comments") { s = s + ` onclick="window.alert('Please log in to like and favourites posts.');"`; } s = s + ` > <div class=i_rate_` + post_id + `_` + set_name+` style="width:20px;height:20px"> <img width=20 height=20 src="/gfx/set_`+imgf+`"> </div> `; if (num >= 0) s=s+`<div style="margin-left:8px">`+num+`</div>`; s = s + ` </div>`; return s; } function generate_thread_preview(dat, set_flags) { //var s = `<div style="display:flex;align-items: center; padding:4px">`; var s= `<table width=100% cellspacing=0 cellpadding=0><tr><td width=100%>`; var thread_url = `/bbs/?tid=`+dat[1]; var pid_url = `/bbs/?pid=`+dat[0]; if (dat[15] == -1){ thread_url = pid_url + `&tkey=`+dat[23]; pid_url = pid_url + `&tkey=`+dat[23]; } // :: thumb if (dat[17]) { // cover s += ` <a href="`+pid_url+`#p"> <div style="display:flex; min-height:64px; align-items:center; float:left; padding:8px"> <div style=" cursor:pointer; width:64px; height:64px; background:url(\'`+dat[3]+`\') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> </div> </div> </a> `; /* popup player. better just to show the cart in thread context with fast load s += ` <div style="display:flex; min-height:64px; align-items:center; float:left; padding:8px"> <div style="width:64px"> <a onClick="toggle_playarea('playarea_popup','`+dat[17]+`');"> <center> <img src="`+dat[3]+`" width=`+dat[4]+` height=`+dat[5]+`></center> </a> </div> </div> `; */ } else { // no cart in thumb; link to cat s += ` <div style="display:flex; min-height:64px; align-items:center; float:left; padding:8px"> <div style="width:64px"> <a href="/bbs/?cat=`+dat[15]+`"> <center><img src="`+dat[3]+`" width=`+dat[4]+` height=`+dat[5]+`></center> </a> </div> </div> `; } // :: title and tags (gets space left over) { var title_str = dat[2]; if (title_str == "" && dat[16] == 16) title_str = "[gif]"; s = s + `<div style="display:flex; min-height:48px; align-items: center; padding:10px;"> <div> <div style="font-size:14pt;margin-bottom:8px; margin-top:4px"> <a href="`+thread_url+`" >`; s = s + title_str; s = s + `</a>` // by fred, last reply by annie 4 days ago { s += ` <br> <span style="color:#777;font-size:8pt;padding-top:4px; display:table"> by <a style="color:#ccc" href=?uid=`+dat[7]+`>`+dat[8]+`</a>`; s += ` `+get_relative_time(dat[6]);//+`</span>`; if (true) { if (dat[13] > 1) s += ` :: <a style="color:#ccc" href=?uid=`+dat[10]+`>`+dat[11]+`</a> replied `+get_relative_time(dat[9]); } } s += `</span>`; s += `</div>`; // category (only need if not viewing that sub-forum) if (false) if (p_sub==0) { s = s + `<div style="float:left; display:flex; align-items:center; margin:4px; padding:4px; background-color:#999; color:#222; font-size:8pt; border-color:#939; border:4px; border-radius:4px"> <div style="width:16px"><img src="/gfx/i_cart1.png" width=16 height=16></div> <div style="display:span">Carts</div></div>`; } // catsub if (p_cat == 0 || p_sub == 0) { label = ''; if (false) if (p_cat == 0) { label = 'Blog'; if (dat[15] == 6) label = 'Voxatron > '; if (dat[15] == 7) label = 'PICO-8 > '; if (dat[15] == 8) label = 'Picotron > '; if (dat[15] == -1) label = 'Unlisted'; } cols = ['f47','fab','4af','fa4','f8a','5ff','4c4','f47','f8a', 'cde', 'cde', 'cde', '8df', 'cde', 'fcb', '8fa']; col = cols[dat[16]%16]; if (dat[16] == 1) label += 'Chat'; //else if (dat[16] == 2) label += '<img src=/gfx/i_cart1.png width=18> Carts'; else if (dat[16] == 2) label += 'Cartridges'; else if (dat[16] == 3) label += 'WIP'; else if (dat[16] == 4) label += 'Collab'; else if (dat[16] == 5) label += 'Workshop'; else if (dat[16] == 6) label += 'Support'; else if (dat[16] == 7) label += 'Blog'; else if (dat[16] == 8) label += 'Jam'; else if (dat[16] == 9) label += 'Code Snippet'; else if (dat[16] == 14) label += 'GFX Snippet'; else if (dat[16] == 15) label += 'SFX Snippet'; else if (dat[16] == 16) label += 'GIF Stream'; else if (dat[16] == 17) label += 'VOB'; //else label += '?'; // category icon // if (p_cat == 0) // fine to include! not noisey and reminder of context { cat_icon = null; if (dat[15] == 6) cat_icon = "p8b_vox.png"; if (dat[15] == 7) cat_icon = "p8b_pico8.png"; if (dat[15] == 8) cat_icon = "p8b_picotron.png"; if (cat_icon) s += '<a href="?cat='+dat[15]+'"><img src="/gfx/'+cat_icon+'" style="width:20px; height:20px; float:left; margin-right:4px;"></a>'; } s += ` <a href=?cat=`+dat[15]+`#sub=`+dat[16]+`> <div class=tag style="background-color:#`; s += col; s += `;">`+label+`</div></a>`; } // cc4 if (dat[20] & 0x1) { s += ` <a href="/bbs/?cat=`+p_cat+`#sub=`+p_sub+`&cc4=1"> <div class=tag style="background-color:#f90; color:#fff"> CC</div></a>`; } // resolved if (dat[16] == 6) // support sub. to do: how-to or workshop sub? { if (dat[19] & 0x1) s += `<div class=tag style="background-color:#2a4; color:#afa"> <img src="/gfx/set_tick1.png" width=10 height=10> Resolved</div>`; else s += `<div class=tag style="background-color:#c96; color:#fff">Unresolved</div>`; } // tags if (dat[18]) // tags { for (var j=0; j < dat[18].length; j++) s +=` <a href="` + tag_url_base + dat[18][j] + `"><div class="tag">#`+dat[18][j]+`</div></a>`; } s = s + `</div></div>`; } s = s + `</td><td>`; // :: extra info float right if (dat[15] != -1) { s = s + ` <div style="float:right;margin-right:12px;display:flex;align-items: center;">`; // :: resolved tick in support sub, when same author if (false) // nope -- just set inside post view (should be after reading anyway) if (dat[16] == 6 && s_uid == dat[7]) { s = s + make_stat_box("tick", -1, (set_flags & 0x4) ? 1 : 0, dat[0]); } // :: author + timestamp x2 /* s = s + ` <div class="desktop_div" style="margin-right:10px; min-width:120px; font-size:9pt"> <a href=?uid=`+dat[7]+`>`+dat[8]+`</a><br> <span style="color:#777;font-size:8pt;margin-right:10px;">`+get_relative_time(dat[6])+`</span><br> <div style="display:block; height:6px"></div> <a href=?uid=`+dat[10]+`>`+dat[11]+`</a><br> <span style="color:#777;font-size:8pt;margin-right:10px;">`+get_relative_time(dat[9])+`</span> </div> `; */ // :: fav, like, comments s = s + `<div class="desktop_div" style="background-color:;">`; s = s + ` <div style="min-width:160px;float:right;margin-right:4px;display:flex;">`; s = s + make_stat_box("fav", -1, (set_flags & 0x2) ? 1 : 0, dat[0], "#555", 12); s = s + make_stat_box("like", dat[12], (set_flags & 0x1) ? 1 : 0, dat[0], "#555", 12); s = s + `<a href="`+thread_url+`">`; s = s + make_stat_box("comments", dat[13], 0, dat[0], "#555", 12); s = s + `</a></div>`; if (false) { s += ` <span style="color:#777;font-size:8pt;padding:4px; padding-left:12px; display:table;"> <a href=?uid=`+dat[7]+`>`+dat[8]+`</a> `+get_relative_time(dat[6])+`</span>`; } s += `</div>`; // end of extra info float right s = s + `</div>`; } s = s + `</td></tr></table>`; //s = s + `</div>`; return s; } // overlapping function generate_cart_preview_overlapping(dat, set_flags) { // /gfx/p8b_pico8.png s = ''; // image s = s + ` <div style="cursor:pointer; margin-right:10px; float:left; width:256px; height:192px; margin-bottom:12px; background:url('`+dat[3]+`') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> `; // title, author s += ` <div > <div style="display:block; padding-top:0px; padding-bottom:6px; overflow:hidden; border-radius:0px;"> <div style="display:block; padding-top:4px; padding-bottom:8px; background-color:rgba(16,0,32,0.5); // rgba border-radius:0px; min-height:40px "> <div style="float:right; display:table;"> `; // favourite, cc4 s += `<div style="margin-top:-6px">`; // dat[0] is the containing post s += make_stat_box("fav", -1, 0, dat[0], "", 2); if (dat[20] & 0x1) //cc4 { s += ` <a href="/bbs/?cat=`+p_cat+`#sub=`+p_sub+`&cc4=1"> <div class=tag style="background-color:#444; margin-top:-4px; margin-left:6px; color:#bbb; border:1px solid; border-radius:4px; padding:0px; padding-right:4px; padding-left:4px"> CC</div></a>`; } s += `</div>`; s += ` </div> <div style="max-height:90px; margin-left:5px"> <a href="?pid=`+dat[0]+`#p"> <font style="color:#fff; font-size:12pt">`+dat[22]+`</font> </a> <br> <a href="/bbs/?uid=`+dat[7]+`&mode=carts"> <font style="color:#fab; font-size:8pt">@`+dat[8]+`</font> </a> </div> </div> </div> </div> `; // buttons s = s + ` <div style="display:flex; color:#222;"> `; //s = s + make_stat_box("comments", -1, -1, dat[0], "#ddd"); // like and fav are for parent post, not cart id bgcol="#ddd"; bgcol="#bbb"; //s = s + '<div style="display:inline-block">'; if (false) { s = s + make_stat_box("cc", -1, (set_flags & 8) ? 1 : 0, dat[0], bgcol, 2); s = s + make_stat_box("fav", -1, (set_flags & 0x12) ? 1 : 0, dat[14], bgcol, 2); s = s + make_stat_box("like", dat[12], (set_flags & 0x11) ? 1 : 0, dat[14], bgcol, 2); } //s = s + '</div>'; s = s + ` </div></div> `; s = s + ` </div> </div> `; return s; } function generate_cart_preview(dat, set_flags) { // /gfx/p8b_pico8.png s = ''; bgcol="#bbb"; // image /* pop up player s = s + ` <a onClick="toggle_playarea('playarea_popup','`+dat[17]+`');" style="cursor:pointer;"> <img class=pixel_perfect src="`+dat[3]+`" width=`+dat[4]+` height=`+dat[5]+` style="border:1px solid black; margin-bottom:-4px; "> </a> `; */ // image // cover square // pixel perfect iff pico-8 var class_str=''; if (dat[15] == 7) class_str='class="pixel_perfect"'; s = s + ` <a href="/bbs/?pid=`+ dat[0] + `#p" > <div `+class_str+` style=" border-radius:0px; cursor:pointer; width:320px; height:320px; background:url(\'`+dat[3]+`\') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> </div> </a> `; s += ` <div> <div style="position:relative; top:-63px; margin-bottom:-60px; min-height:64px; padding-top:0px; padding-bottom:6px; overflow:hidden; border-radius:0px;"> <div style="padding-top:8px; padding-bottom:8px; background-color:rgba(15, 10, 60, 0.7); color:#fff; border-radius:0px; min-height:36px; width:320px;"> <div style="float:right; display:table;"> `; // favourite, cc4 s += `<div style="margin-top:-6px">`; // dat[0] is the containing post s = s + make_stat_box("fav", -1, (set_flags & 0x2) ? 1 : 0, dat[0], "", 2); if (false) { s += '<div style="margin-top:-10px">'; s = s + make_stat_box("like", dat[12], (set_flags & 0x1) ? 1 : 0, dat[0], "", 2); s += '</div>'; } if (dat[20] & 0x1) { s += `<div class=tag style="background-color:#444; margin-top:-4px; margin-left:6px; color:#bbb; border:1px solid; border-radius:4px; padding:0px; padding-right:4px; padding-left:4px"> CC</div>`; } s += `</div>`; var imgstr = '<img src="/gfx/p8b_pico8.png" width=20>'; if (dat[15] == 6) imgstr = '<img src="/gfx/p8b_vox.png" width=20>'; // title, author s += ` </div> <div style="max-height:90px; margin-left:8px; display:table"> <div style="padding-bottom:3px; padding-right:4px"> <a href="?pid=`+dat[0]+`#p"> <font style="color:#eee; font-size:10pt">`+dat[22]+`</font> </a> </div> <div style="float:left; margin-bottom:4px; margin-right:8px">`+imgstr+`</div> <a href="/bbs/?uid=`+dat[7]+`&mode=carts"> <font style="color:#bbb; font-size:8pt;">by `+dat[8]+`</font> </a> </div> </div> </div> </div> `; // buttons s = s + ` <div style="display:flex; color:#222;"> `; //s = s + make_stat_box("comments", -1, -1, dat[0], "#ddd"); // like and fav are for parent post, not cart id //s = s + '<div style="display:inline-block">'; if (false) { s = s + make_stat_box("cc", -1, (set_flags & 8) ? 1 : 0, dat[0], bgcol, 2); s = s + make_stat_box("fav", -1, (set_flags & 0x2) ? 1 : 0, dat[0], bgcol, 2); s = s + make_stat_box("like", dat[12], (set_flags & 0x1) ? 1 : 0, dat[0], bgcol, 2); } //s = s + '</div>'; s = s + ` </div></div> `; s = s + ` </div> `; return s; } function inject_cart_data() { /* var el = document.getElementById('cart_data_script'); if (el) { eval(el.innerHTML); } */ console.log('@ injecting ' + pdat.length); for (var i = 0; i < pdat.length; i++) { // generate inner html var dat = pdat[i]; set_flags = updat[i]; el = document.getElementById('pdat_'+dat[0]); if (el) { if (pdat[i][19] & 2) // show as cart el.innerHTML = generate_cart_preview(pdat[i], updat[i]); else el.innerHTML = generate_thread_preview(pdat[i], updat[i]); } else { // no placeholder console.log('error: no placeholder for pdat_'+dat[0]); } } } //------------------------------------------ window.onhashchange=load_hash_location; //inject_cart_data(); //------------------------------------------ inject_cart_data();</script></div></div> <div id="lex_footer" style=" width:100%; min-height:300px; background-color:#111; "><div style="padding:20px"> <center><div style="display:table"> <div style="display:block; margin-bottom:10px;"> <center> <a style="margin:8px" href="/info.php">About</a> | <a style="margin:8px" href="/cdn-cgi/l/email-protection#5e363b271e323b263f32313838323b703d3133">Contact</a> | <a style="margin:8px" href="/games.php?page=updates">Updates</a> | <a style="margin:8px" href="/info.php?page=tos">Terms of Use</a> | <a style="margin:8px" href="/picotron.php">Picotron</a> </center> </div> <center> <div style="display:table; margin-bottom:10px"> <div style="font-size:10pt; display:flex; align-items:center"> Follow Lexaloffle:   <a href="https://mastodon.social/@zep" class=social_button><img class=pixel_perfect src="/gfx/so_mastodon.png" width=32 height=32 border=0></a>   <a href="https://twitter.com/lexaloffle" class=social_button><img class=pixel_perfect src="/gfx/so_twitter.png" width=32 height=32 border=0></a>   <a href="https://www.youtube.com/user/lexaloffletv" class=social_button> <img class=pixel_perfect src="/gfx/so_youtube.png" width=32 height=32 border=0></a>   <a href="https://www.lexaloffle.com/bbs/feed.php" class=social_button><img class=pixel_perfect src="/gfx/so_rss.png" width=32 height=32></a> </div> </div> <div style="color:#777;font-size:8pt;"> Generated 2024-12-04 00:16:44 | 0.195s | Q:185 <div id=cache_info style="display:inline;"> </div> </div> </center> </div></center> </div></div> </div> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script></body> </html>