kozm0naut [Lexaloffle Blog Feed]https://www.lexaloffle.com/bbs/?uid=85395 Pilgrimage (1K) <h1>Pilgrimage</h1> <p><em>An entry to the 2025 PICO-8 1K Jam</em></p> <p>You are traveling back to your origin.<br /> It is a journey of 200 steps.<br /> Steps which grow longer, wider, taller, and deeper.<br /> Some may even shift before your eyes.</p> <p>But take a deep breath. Be patient.<br /> Pay close attention to your surroundings.<br /> You will grow stronger with every step you take.<br /> Your capacity for flight (<strong>X</strong>) will extend.</p> <p>It may not be possible to complete all journeys.<br /> But there will be a new pilgrimage every day.</p> <p> <table><tr><td> <a href="/bbs/?pid=174891#p"> <img src="/bbs/thumbs/pico8_koz_pilgrimage-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=174891#p"> koz_pilgrimage</a><br><br> by <a href="/bbs/?uid=85395"> kozm0naut</a> <br><br><br> <a href="/bbs/?pid=174891#p"> [Click to Play]</a> </td></tr></table> </p> <p><strong>Press X to fly. Collect orbs to extend your flight time. Watch out for moving platforms!</strong><br /> The trial is different daily, but there are always 200 steps.</p> <h2>The Code</h2> <h3>1024-byte version</h3> <p><div><div><input type="button" value=" Show " onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = ' Hide '; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = ' Show '; }"></div><div><div style="display: none;"></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>q,v,z,b,l,i,u,c,e,n=0,0,0,0,5,0,0,0,0,0g=.0125𝘒=2j=2f=2𝘣=0𝘀={}π˜₯=stat(80)..stat(81)..&quot;.&quot;..stat(82)srand(tonum(π˜₯))𝘦=rnd()pal{4,9,3,1,5,2,[15]=6}for n=1,200do q+=8v+=8*sin(𝘦+n/64)+rnd()*.8*n-.4*n z=n/2*cos(𝘦+n/64)add(𝘀,{e=q,d=v,f=z,i=14-n%6,o=n/2})if(n==1)k,m=q,v end function _update60()if(e&lt;-1and not r)if(btn(5))run()else print(&quot;❎&quot;,61,118,0)return cls(7)𝘧=k-8*cos(i)𝘨=m-8*sin(i)𝘩=l+1.3u*=.92c*=.92n*=.96if(btn(2))u+=g*cos(i)c+=g*sin(i) if(btn(3))u-=g*cos(i)c-=g*sin(i) if(btn(0))n+=𝘒 if(btn(1))n-=𝘒 if(p)e=0f=j else e-=.003 w={}for n=1,1024do add(w,{})end r=nil for n in all(𝘀)do x(n.e-k,n.d-m)if d&lt;2.17do if l&gt;=n.f do r=n if l+e&lt;n.f do if(not p and not n.t)n.t=1n.o=t()+.1𝘣+=1j+=.05 p=1l=r.f e=0end else u*=-1c*=-1end end x(n.e-𝘧,n.d-𝘨)add(w[1+d\.5],n)end if(not r)p=nil k+=u m+=c i+=n&gt;&gt;14l+=e for n=1024,8,-1do if(n&gt;800or n&lt;10)fillp(β–‘) for n in all(w[n])do π˜ͺ(n.e,n.d,n.f)a,s=320/d,(𝘩-n.f)*260/d/d y=t()&lt;n.o and 7or n.i rectfill(h-a,o,h+a,o+(1024+8*n.e)/d,y-8)ovalfill(h-a,o-s,h+a,o+s,s&gt;0and y or y-8)if(not n.t)circfill(h,o-180/d,44/d,9+(d+32*i)%6)if(n.e%64==8)n.d+=n.e/6000*cos(n.e/6000*t())oval(h-a,o-s,h+a,o+s,7) end if n==13do if(r)π˜ͺ(k,m,r.f)ovalfill(60,o-2,68,o,r.i-8) rrectfill(61,78,7,11,1,15)if(btn(5)and f&gt;0)fillp(β–₯)rectfill(61,88,67,89,rnd{0,7})f-=.04e+=.005p=nil fillp(β–’)rectfill(63,86,65,80,13)rectfill(63,86,65,86-6*f/j,f&gt;0and 7)end fillp()end rrectfill(3,4,3+j\.4*2,5,1,0)if(f&gt;0)fillp(β–’)rectfill(4,5,4+f\.4*2,7,7)fillp() ?𝘣,3,12,0 ?π˜₯,3,120 end function x(n,e)b=atan2(n,e)d=n*cos(b)+e*sin(b)end function π˜ͺ(n,e,f)x(n-𝘧,e-𝘨)𝘫=(.5+i-b)%1-.5h=64+1024*𝘫+.5o=64-64/d*2.5*(f-𝘩)+.5end</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p></div></div></div></p> <h3>Non-Minified Version</h3> <p><div><div><input type="button" value=" Show " onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = ' Hide '; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = ' Show '; }"></div><div><div style="display: none;"></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>pico-8 cartridge // http://www.pico-8.com version 43 __lua__ --pilgrimage --by koz x,y,z,a,pz,pa,pdx,pdy,pdz,pda=0,0,0,0,5,0,0,0,0,0 pspd=.0125 ptrn=2 ptank=2 pfuel=2 score=0 objs={} date=stat(80)..stat(81)..&quot;.&quot;..stat(82) srand(tonum(date)) r=rnd() --poke4(0x5f00,0x309.041,0x702.0501) pal{4,9,3,1,5,2,[15]=6} --pal(15,6) --pat=~rnd(0x8000)\1+0b.111 for i=1,200 do x+=8 y+=8*sin(r+i/64)+rnd()*.8*i-.4*i z=i/2*cos(r+i/64) add(objs,{ --x=5*i*cos(i/30.2),y=5*i*sin(i/30.2),z=i*sin(i/128), --x=i%15*10,y=i\15*10,z=10*sin(i/27), --x=5*i*(1+i/128),y=8*sin(i/32)+64*sin(i/64)-i*sin(i/17)-4*sin(i/1.7),z=i/2*sin(i/64),--+i/12*sin(i/12) x=x,y=y,z=z, c=14-i%6,ptil=i/2 }) if (i==1) px,py=x,y end function _update60() if (pdz&lt;-1 and not plat) if (btn(5)) run() else print(&quot;❎&quot;,61,118,0) return cls(7) cx=px-8*cos(pa) cy=py-8*sin(pa) cz=pz+1.3 pdx*=.92 pdy*=.92 pda*=.96 if btn(2) then pdx+=pspd*cos(pa) pdy+=pspd*sin(pa) end if btn(3) then pdx-=pspd*cos(pa) pdy-=pspd*sin(pa) end if (btn(0)) pda+=ptrn if (btn(1)) pda-=ptrn --if (btnp(4)) _p=_p and _p+1 or 1 pstand=false px,py,pz=objs[_p].x,objs[_p].y,objs[_p].z+.01 if pstand then pdz=0 pfuel=ptank else pdz-=.003 end objstax={} for i=1,1024 do add(objstax,{}) end plat=nil for o in all(objs) do dista(o.x-px,o.y-py) if d&lt;2.17 then if pz&gt;=o.z then plat=o if pz+pdz&lt;o.z then if (not pstand and not o.pt) o.pt=1 o.ptil=t()+.1 score+=1 ptank+=.05 --pat=~rnd(0x8000)\1+0b.111 pstand=1 pz=plat.z pdz=0 end else pdx*=-1 pdy*=-1 end end dista(o.x-cx,o.y-cy) add(objstax[1+d\.5],o) end if (not plat) pstand=nil px+=pdx py+=pdy pa+=pda&gt;&gt;14 pz+=pdz for i=1024,8,-1 do --if (i&gt;800 or i&lt;10) fillp(β–’) if (i&gt;800 or i&lt;10) fillp(β–‘) for o in all(objstax[i]) do screenmap(o.x,o.y,o.z) wr,hr=320/d,(cz-o.z)*260/d/d c=t()&lt;o.ptil and 7 or o.c rectfill(sx-wr,sy,sx+wr,sy+(1024+8*o.x)/d,c-8) --if (i&lt;800 and i&gt;10) fillp(β–’) rectfill(sx-wr,sy+h+3,sx+wr,sy) fillp() ovalfill(sx-wr,sy-hr,sx+wr,sy+hr,hr&gt;0 and c or c-8) if not o.pt then circfill(sx,sy-180/d,44/d,9+(d+32*pa)%6) if (o.x%64==8) o.y+=o.x/6000*cos(o.x/6000*t()) oval(sx-wr,sy-hr,sx+wr,sy+hr,7) end end --if (i&gt;48 and i&lt;96) screenmap(px-(px+128*sin(i/32))%32+16,py-(py+132*sin(i/27))%32+16,pz-(i+pz)%32+16) pset(sx,sy,score&lt;50 and i or 8+(i+4*t()+rnd())%7) --if (i&gt;2 and i&lt;64) screenmap(px-(px+128*sin(i/32))%6+3,py-(py+132*sin(i/27))%6+3,pz-(i+pz+t())%9.1+8) pset(sx,sy,9+(i+6*t()+rnd(1.4))%6) if i==13 then --player shadow if plat then screenmap(px,py,plat.z) ovalfill(60,sy-2,68,sy,plat.c-8) end --player rrectfill(61,78,7,11,1,15) if (btn(5) and pfuel&gt;0) fillp(β–₯) rectfill(61,88,67,89,rnd{0,7}) pfuel-=.04 pdz+=.005 pstand=nil --if btn(❎) and pfuel&gt;0 then --for i=0,128 do screenmap(px-(px+128*sin(i/32))%32+16,py-(py+132*sin(i/27))%32+16,pz-(i+pz)%32+16) circfill(sx,sy,48/d,7) end --for i=0,1,.2 do line(61+64*i*pa%7,84+3*sin(i+t()),9+5*i) end --for i=0,2,.4 do line(64.5-4*cos(i+t()),88+sin(i+t())+128*pdz+i,9+(7*t()+rnd())%6) end --pat=pat or ~-rnd(0x8000)\1+0b.111 --fillp(32765.875) --rectfill(62,72,66,75,15) --ovalfill(63,87,65,90,9+(7*t()+rnd())%6) --if (score&gt;100) ovalfill(60,77,68,79) --else --pat=nil --end fillp(β–’) rectfill(63,86,65,86-6,13) rectfill(63,86,65,86-6*pfuel/ptank,pfuel&gt;0 and 7) end fillp() end rrectfill(3,4,3+ptank\.4*2,5,1,0) if (pfuel&gt;0) fillp(β–’) rectfill(4,5,4+pfuel\.4*2,7,7) fillp() ?score,3,12,0 ?date,3,120 end function dista(dx,dy) a=atan2(dx,dy) d=dx*cos(a)+dy*sin(a) end function screenmap(x,y,z) dista(x-cx,y-cy) sa=(.5+pa-a)%1-.5 sx=64+1024*sa+.5 sy=64-64/d*2.5*(z-cz)+.5 end</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p></div></div></div></p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/85395/pilgrimage_21.gif" alt="" /> <p><del>This was obviously intended to be an entry into this year's 1K Jam, but I left too many things to the last second and didn't realize the jam ended at 1PM (my fault, the time was clearly posted).</del> <em>Edit: My submission was accepted as a late entry! Thanks, <a href="https://www.lexaloffle.com/bbs/?uid=13822"> @Liquidream</a>!</em> In any case, I put a lot of time this month into tooling around with this, much of which had to be ripped right back out, but hopefully I kept the best bits for the space.</p> <p>Hope you enjoy. Let me know what you think and what your scores are!</p> https://www.lexaloffle.com/bbs/?tid=151834 https://www.lexaloffle.com/bbs/?tid=151834 Wed, 01 Oct 2025 03:35:21 UTC <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/85395/dna_13.gif" alt="" /> https://www.lexaloffle.com/bbs/?tid=145831 https://www.lexaloffle.com/bbs/?tid=145831 Mon, 02 Dec 2024 04:49:53 UTC Bouncy Ball <h1>Bouncy Ball</h1> <p> <table><tr><td> <a href="/bbs/?pid=145816#p"> <img src="/bbs/thumbs/pico8_bouncyball-3.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=145816#p"> bouncyball</a><br><br> by <a href="/bbs/?uid=85395"> kozm0naut</a> <br><br><br> <a href="/bbs/?pid=145816#p"> [Click to Play]</a> </td></tr></table> <br /> <strong>v3</strong> 2024-05-14:</p> <ul> <li>skarrmann hidden palette added</li> <li>increased chance of seeing secret unlockables</li> </ul> <hr /> <h1></h1> <p><em>&quot;The depressing thing about tennis is that no matter how good I get, I'll never be as good as a wall.&quot;</em><br /> <table cellpadding=0 cellspacing=8>&nbsp; &nbsp; - Mitch Hedberg</table></p> <h2>Game Guide</h2> <h3>It takes a steady paddle...</h3> <p><em>The paddle imparts its speed on the ball</em>, so <strong>keep it steady</strong> or use this to your advantage to <strong>control the ball</strong>.. if you can keep up with it!</p> <h3>Modifiers</h3> <p><strong>Modifiers</strong> will refresh along the back wall <strong>every 5 bounces</strong>. Some will give you an <strong>advantage</strong>, others a <strong>disadvantage</strong>. Be careful what you land on!</p> <ul> <li><strong>Paddle Size</strong><br /> <table cellpadding=0 cellspacing=8><tr><td valign=top> <table><tr><td width=28> <img src="https://www.lexaloffle.com/bbs/gfxc/85395_5.png" width=28 height=28> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_85395_5"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/85395_5.txt", function (retdata){ var el = document.getElementById("gfxcode_85395_5"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [7x7]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_85395_5" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> </td><td valign=top> <table><tr><td width=28> <img src="https://www.lexaloffle.com/bbs/gfxc/85395_6.png" width=28 height=28> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_85395_6"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/85395_6.txt", function (retdata){ var el = document.getElementById("gfxcode_85395_6"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [7x7]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_85395_6" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> </td></tr></table></li> <li><strong>Paddle Speed</strong><br /> <table cellpadding=0 cellspacing=8><tr><td valign=top> <table><tr><td width=28> <img src="https://www.lexaloffle.com/bbs/gfxc/85395_7.png" width=28 height=28> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_85395_7"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/85395_7.txt", function (retdata){ var el = document.getElementById("gfxcode_85395_7"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [7x7]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_85395_7" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> </td><td valign=top> <table><tr><td width=28> <img src="https://www.lexaloffle.com/bbs/gfxc/85395_9.png" width=28 height=28> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_85395_9"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/85395_9.txt", function (retdata){ var el = document.getElementById("gfxcode_85395_9"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [7x7]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_85395_9" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> </td></tr></table></li> <li><strong>Ball Speed</strong><br /> <table cellpadding=0 cellspacing=8><tr><td valign=top> <table><tr><td width=28> <img src="https://www.lexaloffle.com/bbs/gfxc/85395_10.png" width=28 height=28> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_85395_10"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/85395_10.txt", function (retdata){ var el = document.getElementById("gfxcode_85395_10"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [7x7]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_85395_10" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> </td><td valign=top> <table><tr><td width=28> <img src="https://www.lexaloffle.com/bbs/gfxc/85395_11.png" width=28 height=28> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_85395_11"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/85395_11.txt", function (retdata){ var el = document.getElementById("gfxcode_85395_11"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [7x7]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_85395_11" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> </td></tr></table></li> <li><strong>Gravity Wells</strong> (Temporary! Take care when they expire!)<br /> <table cellpadding=0 cellspacing=8><tr><td valign=top> <table><tr><td width=28> <img src="https://www.lexaloffle.com/bbs/gfxc/85395_12.png" width=28 height=28> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_85395_12"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/85395_12.txt", function (retdata){ var el = document.getElementById("gfxcode_85395_12"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [7x7]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_85395_12" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> </td><td valign=top> <table><tr><td width=28> <img src="https://www.lexaloffle.com/bbs/gfxc/85395_13.png" width=28 height=28> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_85395_13"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/85395_13.txt", function (retdata){ var el = document.getElementById("gfxcode_85395_13"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [7x7]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_85395_13" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> </td><td valign=top> <table><tr><td width=28> <img src="https://www.lexaloffle.com/bbs/gfxc/85395_14.png" width=28 height=28> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_85395_14"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/85395_14.txt", function (retdata){ var el = document.getElementById("gfxcode_85395_14"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [7x7]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_85395_14" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> </td><td valign=top> <table><tr><td width=28> <img src="https://www.lexaloffle.com/bbs/gfxc/85395_15.png" width=28 height=28> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_85395_15"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/85395_15.txt", function (retdata){ var el = document.getElementById("gfxcode_85395_15"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [7x7]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_85395_15" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> </td></tr></table></li> <li><strong>???</strong><br /> <table cellpadding=0 cellspacing=8><tr><td valign=top> <table><tr><td width=28> <img src="https://www.lexaloffle.com/bbs/gfxc/85395_16.png" width=28 height=28> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_85395_16"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/85395_16.txt", function (retdata){ var el = document.getElementById("gfxcode_85395_16"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [7x7]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_85395_16" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> </td></tr></table></li> <li><strong>Secret Unlockables?????</strong><br /> <table cellpadding=0 cellspacing=8><tr><td valign=top> <table><tr><td width=28> <img src="https://www.lexaloffle.com/bbs/gfxc/85395_18.png" width=28 height=28> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_85395_18"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/85395_18.txt", function (retdata){ var el = document.getElementById("gfxcode_85395_18"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [7x7]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_85395_18" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> </td><td valign=top> <table><tr><td width=28> <img src="https://www.lexaloffle.com/bbs/gfxc/85395_18.png" width=28 height=28> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_85395_18"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/85395_18.txt", function (retdata){ var el = document.getElementById("gfxcode_85395_18"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [7x7]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_85395_18" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> </td><td valign=top> <table><tr><td width=28> <img src="https://www.lexaloffle.com/bbs/gfxc/85395_18.png" width=28 height=28> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_85395_18"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/85395_18.txt", function (retdata){ var el = document.getElementById("gfxcode_85395_18"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [7x7]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_85395_18" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> </td></tr><tr><td valign=top><strong>...??</strong></td></tr></table></li> </ul> <h2>Demo Mode</h2> <p><em>Bouncy Ball</em> includes a self-playing demo mode. Unlock up to <strong>4 CPU demo skill levels</strong> by playing!</p> <h2>Thanks to the PICO-8 community!</h2> <p>Big heartfelt thanks to <a href="https://www.lexaloffle.com/bbs/?uid=1"> @zep</a> for making this wonderfully fun tool!<br /> Credit for nice smooth circles goes to <a href="https://www.lexaloffle.com/bbs/?uid=16330"> @2darray</a>: <code>aacirc()</code> is used from <a href="https://www.lexaloffle.com/bbs/?pid=136646">Marble Merger</a>.<br /> Thanks to everyone on the BBS and Discord for harboring such an amazing community!</p> <p>This is my first PICO-8 game release, and my second complete game release overall. I tried desperately to keep it as simple as possible in order to actually bring it to completion. As such, the game is <strong>only 4 colors!</strong>...</p> <p>...However, there <em>may or may not</em> be <strong>additional palettes</strong> included as hidden unlockables within the game...</p> <p><strong>Suggest a suitable (reasonable contrast) 4-color palette in the comments and I may just include it as a rare unlockable option, along with your name!</strong></p> <hr /> <h3>High Scores</h3> <ol> <li><strong>49</strong> skarrmann</li> </ol> https://www.lexaloffle.com/bbs/?tid=141469 https://www.lexaloffle.com/bbs/?tid=141469 Fri, 05 Apr 2024 17:45:38 UTC One-line minimap <p>This is pretty simple but I thought some devs might find it useful as an easy way to add a minimap to your game. It uses <code>tline</code> to draw a miniature version of the full map area to screen (during your _draw loop):</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>for i=0,64 do tline(0,32+i,128,32+i,4/8,4/8+i,1) end</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>The representative pixel is drawn from the center (4/8,4/8) of each sprite, but you can alter this if you want a different selection.</p> <p>Here's an example of what this looks like in <a href="https://www.lexaloffle.com/bbs/?tid=2145">Celeste</a>:</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/85395/celeste 1 0 fixed for p8 v0 1 2 _0.png" alt="" /> <p>And here's <a href="https://www.lexaloffle.com/bbs/?tid=52598">Air Delivery</a> with this line added:</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/85395/air delivery_0.png" alt="" /> <p>Obviously it can be a bit messy raw, but it's accurate. For your own project, you could put this against a solid background color in your pause menu, for example. And then you might add an indicator for player position ;)</p> <p>I hope this can be useful out there!</p> https://www.lexaloffle.com/bbs/?tid=140478 https://www.lexaloffle.com/bbs/?tid=140478 Sat, 02 Mar 2024 19:38:00 UTC Tweetcart: Shimmerscale <h1>Shimmerscale</h1> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/85395/shimmerscale_2.gif" alt="" /> <p>NOW IN GLORIOUS <strong>QUADRACOLOR</strong></p> <p>Consuming 239 chars because I didn't bother to minify further:</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>cls(13)s=sin a=12b=4 ::_:: t=time()/4 for i=0,36 do for j=0,42 do r=(i+1.4*j)/64 m=12*s(t+r) x=-8+4*i+3.4*s(t+r-.25) y=-20+4*j+8*s(r) if(btn(❎))a=11b=5 if(btn(πŸ…ΎοΈ))a=12b=4 o=a+(i/3+j/3+t*16)%b line(x,y-m,x+1,y-m+s(t+r+.75),o) end end goto _</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 ❎ to activate <strong>CHROMATOSIS:</strong><br /> <em>An experimental bleeding-edge 5-color mode</em></p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/85395/shimmerscale p8_2.gif" alt="" /> <h3>Feel free to use/modify this effect for your projects!</h3> <p><code>a</code> is the starting color and <code>b</code> is how many subsequent colors in the palette to use, so you can alter this to use any colors you want using <code>pal({})</code> and those two variables. Note that the effect relies on not using <code>cls()</code> so this would be best suited to a splash screen or menu, or for use with <code>clip()</code></p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/85395/colorwave_5.gif" alt="" /> <p>*<em>angle also slightly modified for this example</em></p> https://www.lexaloffle.com/bbs/?tid=139933 https://www.lexaloffle.com/bbs/?tid=139933 Mon, 22 Jan 2024 19:12:11 UTC Tweetcart: Fire Dance <p>I've been working on a little tweetcart so that I might have something to actually release while still at work on more ambitious projects.</p> <p><span style="text-decoration: line-through;">I was able to get it down to 272 chars</span>. It runs at 60fps.</p> <p><strong>Edit</strong>: Used up the last few characters fixing a bug, refining the decay and adding some slight interactivity. Some chars can probably be reclaimed by combining the loops somehow (and using goto instead) but I'll probably just leave it at this.</p> <p>It starts slow and continues building over time. Enjoy!</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/85395/tc280_fire p8_1.gif" alt="" /> <p> <table><tr><td> <a href="/bbs/?pid=139821#p"> <img src="/bbs/thumbs/pico8_tc_firedance-2.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=139821#p"> tc_firedance</a><br><br> by <a href="/bbs/?uid=85395"> kozm0naut</a> <br><br><br> <a href="/bbs/?pid=139821#p"> [Click to Play]</a> </td></tr></table> </p> https://www.lexaloffle.com/bbs/?tid=55673 https://www.lexaloffle.com/bbs/?tid=55673 Mon, 08 Jan 2024 16:39:10 UTC