shiftalow [Lexaloffle Blog Feed]https://www.lexaloffle.com/bbs/?uid=32759 Changing the drawing target does not update the bottom of the map. <p> <table><tr><td> <a href="/bbs/?pid=0#p"> <img src="/bbs/thumbs/pico8_mapdrawtarget-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=0#p"> mapdrawtarget</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=0#p"> [Click to Play]</a> </td></tr></table> </p> <p>This cart has already had its ID written to the bottom of the MAP (x:0-127, y:32-64).<br /> When you run it, the following processes are performed.</p> <ul> <li>Change the drawing target to the sprite sheet</li> <li>Call <code>rectfill()</code> with color 0 on the bottom of the sprite sheet (shared with the bottom of the MAP)</li> <li>Change the drawing target to the screen</li> <li>Draw the bottom of the MAP</li> </ul> <p>The screen should turn completely black as expected, but the MAP continues to draw what it was before it was updated.</p> <p>Finally, it calls <code>cstore()</code> to exit, and when you run it again, it will update to a completely black screen.</p> https://www.lexaloffle.com/bbs/?tid=147927 https://www.lexaloffle.com/bbs/?tid=147927 Thu, 20 Mar 2025 12:53:15 UTC tline() practice for cloud parallax <p> <table><tr><td> <a href="/bbs/?pid=163221#p"> <img src="/bbs/thumbs/pico8_bc_cloud_parallax-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=163221#p"> bc_cloud_parallax</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=163221#p"> [Click to Play]</a> </td></tr></table> </p> <p>tline-GFX for practice and understanding.</p> <p><a href="https://www.lexaloffle.com/bbs/?tid=147597">https://www.lexaloffle.com/bbs/?tid=147597</a><br /> I will share the code used in this post to implement it step by step.<br /> Coding the ideal effect all at once can be complicated and difficult to implement.<br /> Isolating all the elements and solving them one by one will bring you closer to your goal.</p> <h3>Step1</h3> <p>Draw one line from top to bottom with tline().</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/tline_stretch01_5.gif" alt="" /> <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>bottom=127 for i=0,bottom do tline(0,i,127,i,0,i/8) 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> <h3>Step2</h3> <p>Shift the reference y coordinate so that it scrolls from bottom to top.</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/tline_stretch01_0.gif" alt="" /> <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>bottom=127 t=time()*4 for i=0,bottom do tline(0,i,127,i,0,t+i/8) 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> <h3>Step3</h3> <p>Stretch the bottom edge to the same size as the screen, and stretch the top edge to twice that size.</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/tline_stretch01_1.gif" alt="" /> <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>width=128 swidth=256 sw=swidth/width d=(1-1/sw)/8/height --creates a transition that doubles the width (default: 1tile/8). for i=0,bottom do tline(0,i,127,i,0,i/8,(1/8/sw+d*i)) --0.5/8 to 1/8(default) 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> <h3>Step4</h3> <p>Slide it to the left to adjust it to a trapezoid.</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/tline_stretch01_2.gif" alt="" /> <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>width=128 swidth=256 sw=swidth/width height=128 left=32 l=(swidth-width-left)/2/sw dl=l/height --creates a change in the slide that halves the amount of change d=(1-1/sw)/8/height --creates a transition that doubles the width (default: 1tile/8). for i=0,height-1 do tline(0,i,127,i,(l-dl*i)/8,i/8,(1/8/sw+d*i)) --0.5/8 to 1/8 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> <h3>Step5</h3> <p>Stretch display height.</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/tline_stretch01_3.gif" alt="" /> <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>height=128 sheight=64 sh=sheight/height for i=0,sheight-1 do y=i/sh tline(0,i,127,i,0,y/8) 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> <h3>Step6</h3> <p>Combine all the steps.</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/tline_stretch01_4.gif" alt="" /> <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>width=128 swidth=256 sw=swidth/width height=128 sheight=64 sh=sheight/height t=time()*4 l=(swidth-width-left)/2/sw dl=l/height --creates a change in the slide that halves the amount of change d=(1-1/sw)/8/height --creates a transition that doubles the width (default: 1tile/8). for i=0,sheight-1 do y=i/sh tline(0,i,127,i,(l-dl*i)/8,t+y/8,(1/8/sw+d*i)) --0.5/8 to 1/8 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> https://www.lexaloffle.com/bbs/?tid=147649 https://www.lexaloffle.com/bbs/?tid=147649 Wed, 05 Mar 2025 08:13:44 UTC konsairi_bgm08_jeweldot_rev03 <p> <iframe src="sfxp2.php?id=32759_6" width="402" height="300" style="border:none; overflow:hidden" scrolling="no" allow="autoplay"></iframe><a style="cursor:pointer; font-size:8pt" onclick=' var el = document.getElementById("sfxcode_32759_6"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("/bbs/sfxc/32759_6.txt", function (retdata){ var el = document.getElementById("sfxcode_32759_6"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [sfx] </a> <textarea rows=3 class=lexinput id="sfxcode_32759_6" style="width:480px;background-color:#fed;display:none;overflow:hidden; font-size:4pt;"></textarea> </p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/147_2_1.gif" alt="" /> <p> <table><tr><td width=96> <img src="https://www.lexaloffle.com/bbs/gfxc/32759_5.png" width=96 height=96> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_32759_5"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/32759_5.txt", function (retdata){ var el = document.getElementById("gfxcode_32759_5"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [24x24]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_32759_5" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> <br /> This is one of the pieces of music played in my own game. ☺</p> <h3>KONSAIRI BGM Posts</h3> <ul> <li> <p> <table><tr><td width=96> <img src="https://www.lexaloffle.com/bbs/gfxc/32759_4.png" width=96 height=96> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_32759_4"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/32759_4.txt", function (retdata){ var el = document.getElementById("gfxcode_32759_4"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [24x24]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_32759_4" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> <a href="https://www.lexaloffle.com/bbs/?tid=146827">konsairi_bgm04_tensy_exploring_rev02</a></p> </li> <li> <p> <table><tr><td width=96> <img src="https://www.lexaloffle.com/bbs/gfxc/32759_2.png" width=96 height=96> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_32759_2"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/32759_2.txt", function (retdata){ var el = document.getElementById("gfxcode_32759_2"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [24x24]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_32759_2" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> <a href="https://www.lexaloffle.com/bbs/?tid=33756">konsairi_bgm06_darkness_rev06</a></p> </li> <li> <p> <table><tr><td width=96> <img src="https://www.lexaloffle.com/bbs/gfxc/32759_5.png" width=96 height=96> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_32759_5"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/32759_5.txt", function (retdata){ var el = document.getElementById("gfxcode_32759_5"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [24x24]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_32759_5" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> <a href="https://www.lexaloffle.com/bbs/?tid=147027">konsairi_bgm08_jeweldot_rev03</a></p> </li> <li> <table><tr><td width=96> <img src="https://www.lexaloffle.com/bbs/gfxc/32759_3.png" width=96 height=96> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_32759_3"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/32759_3.txt", function (retdata){ var el = document.getElementById("gfxcode_32759_3"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [24x24]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_32759_3" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> <a href="https://www.lexaloffle.com/bbs/?tid=146645">konsairi_bgm10_remains_rev04</a></li> </ul> https://www.lexaloffle.com/bbs/?tid=147027 https://www.lexaloffle.com/bbs/?tid=147027 Thu, 06 Feb 2025 08:46:03 UTC konsairi_bgm04_tensy_exploring_rev02 <p> <iframe src="sfxp2.php?id=32759_5" width="402" height="300" style="border:none; overflow:hidden" scrolling="no" allow="autoplay"></iframe><a style="cursor:pointer; font-size:8pt" onclick=' var el = document.getElementById("sfxcode_32759_5"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("/bbs/sfxc/32759_5.txt", function (retdata){ var el = document.getElementById("sfxcode_32759_5"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [sfx] </a> <textarea rows=3 class=lexinput id="sfxcode_32759_5" style="width:480px;background-color:#fed;display:none;overflow:hidden; font-size:4pt;"></textarea> </p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/145_2_1.gif" alt="" /> <p> <table><tr><td width=96> <img src="https://www.lexaloffle.com/bbs/gfxc/32759_4.png" width=96 height=96> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_32759_4"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/32759_4.txt", function (retdata){ var el = document.getElementById("gfxcode_32759_4"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [24x24]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_32759_4" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> <br /> This is one of the pieces of music played in my own game. ☺</p> <h3>KONSAIRI BGM Posts</h3> <ul> <li> <p> <table><tr><td width=96> <img src="https://www.lexaloffle.com/bbs/gfxc/32759_4.png" width=96 height=96> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_32759_4"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/32759_4.txt", function (retdata){ var el = document.getElementById("gfxcode_32759_4"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [24x24]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_32759_4" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> <a href="https://www.lexaloffle.com/bbs/?tid=146827">konsairi_bgm04_tensy_exploring_rev02</a></p> </li> <li> <p> <table><tr><td width=96> <img src="https://www.lexaloffle.com/bbs/gfxc/32759_2.png" width=96 height=96> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_32759_2"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/32759_2.txt", function (retdata){ var el = document.getElementById("gfxcode_32759_2"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [24x24]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_32759_2" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> <a href="https://www.lexaloffle.com/bbs/?tid=33756">konsairi_bgm06_darkness_rev06</a></p> </li> <li> <p> <table><tr><td width=96> <img src="https://www.lexaloffle.com/bbs/gfxc/32759_5.png" width=96 height=96> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_32759_5"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/32759_5.txt", function (retdata){ var el = document.getElementById("gfxcode_32759_5"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [24x24]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_32759_5" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> <a href="https://www.lexaloffle.com/bbs/?tid=147027">konsairi_bgm08_jeweldot_rev03</a></p> </li> <li> <table><tr><td width=96> <img src="https://www.lexaloffle.com/bbs/gfxc/32759_3.png" width=96 height=96> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_32759_3"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/32759_3.txt", function (retdata){ var el = document.getElementById("gfxcode_32759_3"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [24x24]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_32759_3" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> <a href="https://www.lexaloffle.com/bbs/?tid=146645">konsairi_bgm10_remains_rev04</a></li> </ul> https://www.lexaloffle.com/bbs/?tid=146827 https://www.lexaloffle.com/bbs/?tid=146827 Tue, 28 Jan 2025 14:14:35 UTC konsairi_bgm10_remains_rev04 <p> <iframe src="sfxp2.php?id=32759_3" width="402" height="300" style="border:none; overflow:hidden" scrolling="no" allow="autoplay"></iframe><a style="cursor:pointer; font-size:8pt" onclick=' var el = document.getElementById("sfxcode_32759_3"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("/bbs/sfxc/32759_3.txt", function (retdata){ var el = document.getElementById("sfxcode_32759_3"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [sfx] </a> <textarea rows=3 class=lexinput id="sfxcode_32759_3" style="width:480px;background-color:#fed;display:none;overflow:hidden; font-size:4pt;"></textarea> </p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/144_konsairi_pr1 2_0.gif" alt="" /> <p> <table><tr><td width=96> <img src="https://www.lexaloffle.com/bbs/gfxc/32759_3.png" width=96 height=96> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_32759_3"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/32759_3.txt", function (retdata){ var el = document.getElementById("gfxcode_32759_3"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [24x24]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_32759_3" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> <br /> This is one of the pieces of music played in my own game. ☺</p> <h3>KONSAIRI BGM Posts</h3> <ul> <li> <p> <table><tr><td width=96> <img src="https://www.lexaloffle.com/bbs/gfxc/32759_4.png" width=96 height=96> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_32759_4"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/32759_4.txt", function (retdata){ var el = document.getElementById("gfxcode_32759_4"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [24x24]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_32759_4" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> <a href="https://www.lexaloffle.com/bbs/?tid=146827">konsairi_bgm04_tensy_exploring_rev02</a></p> </li> <li> <p> <table><tr><td width=96> <img src="https://www.lexaloffle.com/bbs/gfxc/32759_2.png" width=96 height=96> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_32759_2"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/32759_2.txt", function (retdata){ var el = document.getElementById("gfxcode_32759_2"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [24x24]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_32759_2" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> <a href="https://www.lexaloffle.com/bbs/?tid=33756">konsairi_bgm06_darkness_rev06</a></p> </li> <li> <p> <table><tr><td width=96> <img src="https://www.lexaloffle.com/bbs/gfxc/32759_5.png" width=96 height=96> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_32759_5"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/32759_5.txt", function (retdata){ var el = document.getElementById("gfxcode_32759_5"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [24x24]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_32759_5" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> <a href="https://www.lexaloffle.com/bbs/?tid=147027">konsairi_bgm08_jeweldot_rev03</a></p> </li> <li> <table><tr><td width=96> <img src="https://www.lexaloffle.com/bbs/gfxc/32759_3.png" width=96 height=96> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_32759_3"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/32759_3.txt", function (retdata){ var el = document.getElementById("gfxcode_32759_3"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [24x24]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_32759_3" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> <a href="https://www.lexaloffle.com/bbs/?tid=146645">konsairi_bgm10_remains_rev04</a></li> </ul> https://www.lexaloffle.com/bbs/?tid=146645 https://www.lexaloffle.com/bbs/?tid=146645 Mon, 20 Jan 2025 05:24:11 UTC EXINPUT [Extra input for key and mouse] <p> <table><tr><td> <a href="/bbs/?pid=156149#p"> <img src="/bbs/thumbs/pico8_exinput_bc-3.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=156149#p"> exinput_bc</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=156149#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Feature Overview</h2> <h3>Buttons input</h3> <p><code>getbtns()</code> updates the extended button(key) input state.</p> <ul> <li>This must be done in the <code>_update()</code> function.</li> <li>Required <code>poke(0x5f2d,1)</code></li> <li>button values: <ul> <li>btrg: returns true only for frames where a key was entered.</li> <li>butrg: returns true only for frames where a key was released.</li> <li>btns: returns true whenever the key is pressed.</li> <li>btnc: returns the count while the key is held.[number]</li> <li>_key: typed characters.[string]</li> <li>_ent: enter key typed.</li> <li>_del: delete/backspace key typed.</li> </ul></li> <li>modifier keys values: <ul> <li>_ctr: ctrl/command key pressed.</li> <li>_alt: alt/opt key pressed.</li> <li>_sft: shift(left) key pressed.</li> </ul></li> <li>This function consumes 179 Token.</li> </ul> <h3>Example</h3> <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>-- Repeat the loop until Q is entered. while not btrg.q do getbtns() flip() end</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <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>-- Fills the screen with white while holding down W. while 1 do getbtns() cls(btns.w and 7 or 6) flip() end</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <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>-- Update the rotation position by the length you press E. while 1 do getbtns() cls() ?'e',sin(btnc.e/30)*16+64,cos(btnc.e/30)*16+64,9 flip() end </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <h3>Mouse input</h3> <p>'getmouse()' updates the mouse state.</p> <ul> <li>this must be done in the <code>_update()</code> function.</li> <li>Required <code>poke(0x5f2d,1)</code></li> <li>mouse values: <ul> <li>_mo.x: Mouse X coordinate[number]</li> <li>_mo.y: Mouse Y coordinate[number]</li> <li>_mo.lt: returns true only for frames where the left-button was pressed.</li> <li>_mo.lu: returns true only for frames where the left-button was released.</li> <li>_mo.l: returns true whenever the left-button is pressed.</li> <li>_mo.ldb: returns true if the left-button is double-clicked.</li> <li>_mo.rt: returns true only for frames where the right-button was pressed.</li> <li>_mo.ru: returns true only for frames where the right-button was released.</li> <li>_mo.r: returns true whenever the right-button is pressed.</li> <li>_mo.rdb: returns true if the right-button is double-clicked.</li> <li>_mo.mt: returns true only for frames where the middle-button was pressed.</li> <li>_mo.mu: returns true only for frames where the middle-button was released.</li> <li>_mo.m: returns true whenever the middle-button is pressed.</li> <li>_mo.mdb: returns true if the middle-button is double-clicked.</li> <li>_mo.w: returns the mouse wheel input.[number]</li> <li>_mo.sx: returns the x coordinate where the drag started.[number]</li> <li>_mo.sy: returns the y coordinate where the drag started.[number]</li> </ul></li> <li>This function consumes 285 Token.</li> </ul> <h3>Example</h3> <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>-- Display the ★ mouse cursor and use the left button to change its shape and the right button to change its color. while not btrg.q do getmouse() cls() ?_mo.l and '✽' or '★',_mo.x,_mo.y,_mo.r and 14 or 10 flip() end </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> https://www.lexaloffle.com/bbs/?tid=144891 https://www.lexaloffle.com/bbs/?tid=144891 Wed, 23 Oct 2024 13:07:25 UTC ISCDATAEMPTY() [Check that cartdata is empty] <p> <table><tr><td> <a href="/bbs/?pid=155637#p"> <img src="/bbs/thumbs/pico8_iscdataempty_bc-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=155637#p"> iscdataempty_bc</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=155637#p"> [Click to Play]</a> </td></tr></table> </p> <p>Use this to check that the saved state of the game, such as mid-game progress, is the initial state (all 0).</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>print(iscdataempty() and 'cartdata empty' or 'cartdata found')</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <ul> <li>Returns true if it is in the initial state.</li> <li>Returns false if there is any data contained in it.</li> <li>This function consumes 14 Token.</li> </ul> <p>With this test cart, we will verify that entering CARTDATA with the mouse will cause it to return to its initial state.<br /> You can reset CARTDATA in the pause menu.</p> https://www.lexaloffle.com/bbs/?tid=144715 https://www.lexaloffle.com/bbs/?tid=144715 Sat, 12 Oct 2024 13:27:28 UTC JPRINT() [Japanese text write] <p> <table><tr><td> <a href="/bbs/?pid=155450#p"> <img src="/bbs/thumbs/pico8_jprint_bc-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=155450#p"> jprint_bc</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=155450#p"> [Click to Play]</a> </td></tr></table> </p> <p>Japanese is output using a custom font.<br /> Also, voiced consonants and semi-voiced consonants(濁点・半濁点) are adjusted to be placed at the top of the characters.</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>jprint('かわいい いちこ゛た゛いふく さん&hearts;',14) -- Usage is the same as for print().</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/32759/jprint p8_1.png" alt="" /> <p><code>ぁぃぅぇぉ</code>,<code>ァィゥェォ</code> does not exist as a character in standard Pico-8.<br /> Therefore, we have rewritten the default emoji as shown in the table below.</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>'ぁ' &gt; '&hellip;' ,'ぃ' &gt; '➡️' ,'ぅ' &gt; '★' ,'ぇ' &gt; '⧗' ,'ぉ' &gt; '⬆️', 'ァ' &gt; 'ˇ' ,'ィ' &gt; '&and;' ,'ゥ' &gt; '❎' ,'ェ' &gt; '▤' ,'ォ' &gt; '▥', </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 can view the Character set from the menu.</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/jprint p8_0.png" alt="" /> <h3>Text conversion scripts for SpreadSheet custom scripts</h3> <p>This script converts &quot;かな/カナ&quot; text to <code>JPRINT()</code> specification in a spreadsheet.<br /> Register it in a custom script and execute <code>p8Katamukikana([Cell-ID])</code> on the cell you want to convert.</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>function p8Katamukikana(text) { const kanamap = { 'が': 'か゛', 'ぎ': 'き゛','ぐ': 'く゛','げ': 'け゛','ご': 'こ゛', 'ざ': 'さ゛', 'じ': 'し゛','ず': 'す゛','ぜ': 'せ゛','ぞ': 'そ゛', 'だ': 'た゛', 'ぢ': 'ち゛','づ': 'つ゛','で': 'て゛','ど': 'と゛', 'ば': 'は゛', 'び': 'ひ゛','ぶ': 'ふ゛','べ': 'へ゛','ぼ': 'ほ゛', 'ぱ': 'は゜', 'ぴ': 'ひ゜','ぷ': 'ふ゜','ぺ': 'へ゜','ぽ': 'ほ゜', 'ガ': 'カ゛', 'ギ': 'キ゛','グ': 'ク゛','ゲ': 'け゛','ゴ': 'コ゛', 'ザ': 'サ゛', 'ジ': 'シ゛','ズ': 'ス゛','ゼ': 'セ゛','ゾ': 'ソ゛', 'ダ': 'タ゛', 'ヂ': 'チ゛','ヅ': 'ツ゛','デ': 'テ゛','ド': 'ト゛', 'バ': 'ハ゛', 'ビ': 'ヒ゛','ブ': 'フ゛','ベ': 'ヘ゛','ボ': 'ホ゛', 'パ': 'ハ゜', 'ピ': 'ヒ゜','プ': 'フ゜','ペ': 'ヘ゜','ポ': 'ホ゜', 'ぁ': '&hellip;', 'ぃ': '➡️','ぅ': '★','ぇ': '⧗','ぉ': '⬆️', 'ァ': 'ˇ', 'ィ': '&and;','ゥ': '❎','ェ': '▤','ォ': '▥', 'ゔ': 'う゛', 'ヴ': 'ウ゛','ぅ゙': 'ぅ゛','ゥ゙': 'ゥ゛', 'ー': '-', '-': '-', '~': '~', } var result = '' for (var i = 0; i &lt; text.length; i++) { result += kanamap[text.charAt(i)] || text.charAt(i); } return result; }</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/32759/スクリーンショット 2023-05-29 143859.png" alt="" /> https://www.lexaloffle.com/bbs/?tid=144648 https://www.lexaloffle.com/bbs/?tid=144648 Tue, 08 Oct 2024 09:53:31 UTC Filename Typewriter(Safe filename input) <p> <table><tr><td> <a href="/bbs/?pid=154944#p"> <img src="/bbs/thumbs/pico8_filename_typewirter_bc-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=154944#p"> filename_typewirter_bc</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=154944#p"> [Click to Play]</a> </td></tr></table> </p> <p>This is the file name input code for writing a .p8l file with printh.</p> <p>The following characters are excluded from input to make it safe to enter file names:</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>'\\/:*?&quot;&lt;&gt;|!\'#$%&amp;()+-*^=~`@{}[]&lt;&gt;,.;'</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>If these characters are included in the file name, an error will occur and I have experienced my edited data being ruined. This is to prevent this from happening.</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/filename_typewriter p8_0.png" alt="" /> <p>By the way, there is no reference document for the excluded characters, and it seems that there are more characters that pico8 cannot handle in file names than the host OS.</p> <p><em>I have not checked the excluded characters in detail and have set them based on a guess. Has anyone checked all the excluded characters?</em></p> https://www.lexaloffle.com/bbs/?tid=144466 https://www.lexaloffle.com/bbs/?tid=144466 Sat, 28 Sep 2024 11:52:35 UTC MinimemTracker【切り抜きトラックシーケンサ】 <p>V0.3<br /> <table><tr><td> <a href="/bbs/?pid=154471#p"> <img src="/bbs/thumbs/pico8_minimemtracker_bc-2.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=154471#p"> minimemtracker_bc</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=154471#p"> [Click to Play]</a> </td></tr></table> </p> <p><object width="640" height="400"><param name="movie" value="https://www.youtube.com/v/s51hfnlign0&hl=en&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="https://www.youtube.com/v/s51hfnlign0&hl=en&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="400"></embed></object></p> <h2>Overview</h2> <p>This is a sequencer that plays sounds from a waveform memory mechanism through PCM.<br /> It achieves several things that could not be done with the Pico-8 standard tracker.</p> <h2>Operation</h2> <p><strong>Mainly mouse operations. </strong><br /> <strong>When you press a key on the keyboard, it makes a sound</strong></p> <h3>Basic screen</h3> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/minimemtracker_0.png" alt="" /> <ul> <li>Channel tab: Left click to select, mouse wheel to mute/unmute.</li> <li>Channel panel: Mouse wheel to adjust sequence speed (0-63), left click to open view.</li> <li>Space bar to play track.</li> <li>Press and hold enter to open the menu.</li> </ul> <h3>Effect view</h3> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/minimemtracker_1.png" alt="" /> <ul> <li>Left click to select, mouse wheel to increase/decrease value of selected item. Right click to deselect.</li> <li>Shift + left drag to select playback range. Shift + right click to deselect.</li> <li>Ctrl(Cmd) + left click within the playback range to set a flag. Ctrl(Cmd) + right click to clear the flag.</li> <li>Clicking the left radio button will slide the view to the next or previous line.</li> <li>Parameters: <ul> <li>TYP: Waveform type, initially set to 2 &quot;Square wave 1:1&quot;. If multiple ranges are set, the waveform will switch during playback. The flag is the sustain point (the position where the sound will be repeated).</li> <li>ENV: Envelope, raises and lowers the volume. Initially set to 15-15-8-4. The flag is the sustain point.</li> <li>PIT: Pitch bend, raises and lowers the pitch. Initially not set. Not set or 0 has no effect on the pitch. The flag is the sustain point.</li> </ul></li> </ul> <h3>Note view</h3> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/minimemtracker_2.png" alt="" /> <ul> <li>Left click to select, and you can set the note by typing the key for the selected item. Right click to clear the selection.<br /> to deselect.</li> <li>Left click to select the octave &quot;0-4&quot; from the left bar. - Shift + Left drag to select the playback range. Shift + Right click - Ctrl (Cmd) + Left click within the playback range to set a flag. Ctrl (Cmd) + Right click to deselect the flag.</li> <li>Clicking the left radio button will slide the view to the next or previous line.</li> <li>In note view with tracks 2-4 selected, press shift + space to play from those tracks.</li> <li>Parameters: <ul> <li>ARP: Arpeggio, raises or lowers the note (musical notation). Initially unset. Unset, &quot;C2&quot; has no effect on the note. Flag sustain point. When the ENV (envelope) flag is unset, multiple notes are connected as one note and sounded. When the ENV flag is set, each note is sounded as one note. (Envelope is reset)</li> <li>TR1-TR4: Note track, notes are played by sequence. Tracks are played and repeated 1-2-3-4-1-2.... If no range is set, it will be skipped. The flag is the position where the arpeggio will start to be disabled.</li> </ul></li> </ul> <h1>Data storage</h1> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/minimemtracker_4.png" alt="" /> <ul> <li>You can save data from 1-8.</li> <li>Ctrl(Cmd) + S to save (press again for quick save)</li> <li>Ctrl(Cmd) + O to load (press again for quick load)</li> <li>Mouse wheel to page forward.</li> <li>Click on the file to save or load.</li> <li>Clicking without selecting will exit the screen.</li> </ul> <h3>Remove data(cartdata)</h3> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/minimemtracker_3.gif" alt="" /> <p>Press and hold Enter and select REMOVE DATA from the menu. Type 'YES' to delete the internal data. After that, reset &quot;CTRL(Cmd)+R&quot; or restart the software to start with the initial data.</p> <h2>Specifications</h2> <ul> <li>Sound is played in PCM (5512.5Hz).</li> <li>The number of waveforms that can be used is fixed at 16! (There is no way to customize them)</li> <li>The number of channels that can be used is 6ch!</li> <li>White noise &quot;long cycle&quot; and &quot;short cycle&quot; are available. (<a href="https://dic.nicovideo.jp/a/gb%E9%9F%B3%E6%BA%90">GAMEBOY sound source</a> was customized and dropped in)</li> <li>Envelope with any length (resolution) and sustain point: ENV</li> <li>Pitch bend with any length (resolution) and sustain point: PIT</li> <li>Waveform switching with any length (resolution) and sustain point: TYP</li> <li>Arpeggio with any length (resolution) and sustain point: ARP</li> <li>Note track with any length (resolution): TR1-TR4</li> <li>5 octaves (8 octaves inaccurate with arpeggio combinations)</li> <li>Data storage: 8 data (SFX storage area), temporary data (Persistent cart data 256BYTE)</li> <li>Channel mute</li> </ul> <hr /> <p><strong>JAPANESE LANGUAGE</strong><br /> <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> <h2>概要</h2> <p>波形メモリの仕組みの音をPCMを通して再生するシーケンサーです。<br /> Pico-8標準機能のトラッカーではできなかったことをいくつか実現しています。</p> <h2>操作(多くはクローズド最新版v0.2のものが含まれます)</h2> <p><strong>主にマウス操作で行います。</strong><br /> <strong>キーボードのキーを押すと音が出ます(打鍵します)。</strong></p> <h3>基本画面</h3> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/minimemtracker_0.png" alt="" /> <ul> <li>チャンネルタブ:左クリックで選択、マウスホイールでミュート・解除ができます。</li> <li>チャンネルパネル:マウスホイールでシーケンス速度を調整(0-63)、左クリックでビューを開きます。</li> <li>スペースバーでトラックを再生します。</li> <li>Enterを長押ししてメニューが開きます。</li> </ul> <h3>エフェクトビュー</h3> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/minimemtracker_1.png" alt="" /> <ul> <li>左クリックで選択、選択したものはマウスホイールで値を上下できます。右クリックで選択解除。</li> <li>Shift + 左ドラッグで再生範囲選択。Shift + 右クリックで選択解除。</li> <li>再生範囲内でCtrl(Cmd) + 左クリックするとフラグが立ちます。Ctrl(Cmd) + 右クリックでフラグ解除</li> <li>左のラジオボタンを押すとビューを次のライン・前のラインへスライドさせます。</li> <li>各パラメータ: <ul> <li>TYP:波形タイプ、初期は2「矩形波1:1」が設定されています。複数の範囲を設定すると音の再生中に波形が切り替わります。フラグは持続点(繰り返される位置)です。</li> <li>ENV:エンベロープ、音量を上下させます。初期は15-15-8-4が設定されています。フラグは持続点です。</li> <li>PIT:ピッチベンド、音程を上下させます。初期は未設定です。未設定や0は音程に影響はありません。フラグは持続点です。</li> </ul></li> </ul> <h3>ノートビュー</h3> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/minimemtracker_2.png" alt="" /> <ul> <li>左クリックで選択、選択したものはキーを打ち込んでノートを設定できます。右クリックで選択解除。</li> <li>左のバーから左クリックでオクターブ「0-4」を選択できます。</li> <li>左のラジオボタンを押すとビューを次のライン・前のラインへスライドさせます。</li> <li>Shift + 左ドラッグで再生範囲選択。Shift + 右クリックで選択解除。</li> <li>再生範囲内でCtrl(Cmd) + 左クリックするとフラグが立ちます。Ctrl(Cmd) + 右クリックでフラグ解除</li> <li>トラック2-4を選択したノートビューで shift + space を押してそのトラックからの演奏をします。</li> <li>各パラメータ: <ul> <li>ARP:アルペジオ、ノート(音譜)を上下させます。初期は未設定です。未設定、「C2」はノートに影響はありません。フラグ持続点です。ENV(エンベロープ)フラグが未設定では1音として複数のノートを繋げて音を鳴らします。ENVフラグが設定されているとそれぞれのノートを1音として鳴らします。(エンベロープがリセットされる)</li> <li>TR1-TR4:ノートトラック、シーケンスによってノートが再生されます。トラックは1-2-3-4-1-2...と再生と繰り返しを行います。範囲が設定されていない場合はスキップされます。フラグはアルペジオ無効を開始する位置です。</li> </ul></li> </ul> <h3>データの保存管理</h3> <ul> <li>保存できるデータは1-8までです。</li> <li>Ctrl(Cmd) + Sでセーブ(もう一度押すとクイックセーブ)</li> <li>Ctrl(Cmd) + Oでロード(もう一度押すとクイックロード)</li> <li>セーブ、ロードするデータをクリックで決定します。</li> <li>選択していない状態でクリックをすると、画面から抜けます。</li> </ul> <h3>内部保存データの削除</h3> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/minimemtracker_3.gif" alt="" /> <p>Enterを長押しして、メニューからREMOVE DATAを選択してください。<br /> 「YES」と打ち込むと内部のデータが削除されます。リセット「CTRL(Cmd)+R」をするか、ソフトを再起動すると初期状態のデータで起動します。</p> <h2>仕様</h2> <ul> <li>音はPCM(5512.5Hz)にて再生します。</li> <li>使用できる波形は16個で固定です!(カスタムする方法はありません)</li> <li>使用できるチャンネルは6chです!</li> <li>ノイズはホワイトノイズ「長周期」「短周期」のものを用意しています。(<a href="https://dic.nicovideo.jp/a/gb%E9%9F%B3%E6%BA%90">GAMEBOY音源</a>のをカスタムして落とし込みました)</li> <li>任意の長さ(分解能)、持続点ありのエンベロープ: ENV</li> <li>任意の長さ(分解能)、持続点ありのピッチベンド: PIT</li> <li>任意の長さ(分解能)、持続点ありの波形切り替え: TYP</li> <li>任意の長さ(分解能)、持続点ありのアルペジオ: ARP</li> <li>任意の長さ(分解能)、ノートトラック: TR1-TR4</li> <li>5オクターブ(アルペジオの組み合わせで不正確な8オクターブ)</li> <li>データ保存: 8件のデータ(SFX 保存領域)、一時データ(Persistent cart data 256BYTE)</li> <li>チャンネルミュート<br /> </div></div></div></li> </ul> https://www.lexaloffle.com/bbs/?tid=144299 https://www.lexaloffle.com/bbs/?tid=144299 Thu, 19 Sep 2024 03:25:13 UTC Loop and One-time Animation sample <p> <table><tr><td> <a href="/bbs/?pid=153817#p"> <img src="/bbs/thumbs/pico8_bc_lpotanimation-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=153817#p"> bc_lpotanimation</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=153817#p"> [Click to Play]</a> </td></tr></table> </p> <p>z: Slow animation<br /> x: Action animation</p> <p><em>For simplicity of use, the sprite table is determined as a state flag.</em></p> https://www.lexaloffle.com/bbs/?tid=144066 https://www.lexaloffle.com/bbs/?tid=144066 Fri, 06 Sep 2024 05:29:35 UTC Flower of Effect Visualizer 🌸 <p> <table><tr><td> <a href="/bbs/?pid=152482#p"> <img src="/bbs/thumbs/pico8_flowerofeffect-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=152482#p"> flowerofeffect</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=152482#p"> [Click to Play]</a> </td></tr></table> </p> <p>フラワーオブライフのような模様を描画してみたくなり、作ってみました。</p> <p>クエリは<a href="https://www.lexaloffle.com/bbs/?tid=36325">&quot;HTBL()&quot;</a>の解析をある程度理解する必要があります。まずサンプル(tab:6)を見てください。</p> <p>演出はパートでテーブル区切られており、パートごとに描画グループを複数設定することができます。</p> <h2>クエリ作成(QUERY)</h2> <h3>描画グループの指定</h3> <p><code>{id number radius color distance angle [option]}</code></p> <ul> <li>id: 操作する描画オブジェクトのインデックス</li> <li>number: 描画する数</li> <li>radius: 描画する円の半径</li> <li>color: 描画色</li> <li>distance: 中心からの距離</li> <li>angle: 描画を開始する角度</li> <li>option: segment fillを使った描画パラメータ<br /> <code>{func angle division color ...}</code> <ul> <li>func: &quot;segfill&quot;を指定します。</li> <li>angle: 描画を開始する角度</li> <li>division: 円状に連続する描画の細かさ、円周を1とする。</li> <li>color: 描画色であり、後ろに指定した数だけ描画されます。</li> </ul></li> </ul> <h3>パートの指定</h3> <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>{{ {group} {group} {group} ... } duration}</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <ul> <li>{group}: 描画グループ、テーブルとして扱うために複数のグループを{}でまとめます。</li> <li>duration: パートアニメーションの継続時間<br /> 次のパートに移ると一つ前のパートから連続的に変化するようにアニメーションをします。<br /> group内のidは次のパートで同じidのパラメータによって操作されます。</li> </ul> <h2>クエリ実行</h2> <p>fquery(QUERY, SYSTEM_PALETTE, DELAY, ...)</p> <ul> <li>QUEEY: 「クエリ作成」で作った文字列</li> <li>SYSTEM_PALETTE: パレットを連続した16進文字列で指定する。</li> <li>DELAY, ...: 遅延実行フレーム数、引数を指定した分だけ並列に実行されます。</li> </ul> <h2>GIF録画</h2> <p>ポーズメニューから「RECORD GIF」を選択してください。</p> <ul> <li>RECORD GIF x1:実行開始時から、最初のパート表示に戻るところまで録画します。(パート総合DURATION + パート1番目DURATION)</li> <li>RECORD GIF LOOP:パート1番目が表示しきってから実行開始時から、最初のパート表示に戻るところまで録画します。(パート総合DURATION)</li> </ul> <h2>REC x1</h2> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/streamoflife p8_0.gif" alt="" /> <h2>REC LOOP</h2> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/streamoflife_4.gif" alt="" /> <p><strong>DELAYを設定した遅延時間分、録画時間は追加されます。</strong></p> <p><strong> - English - </strong><br /> <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;"><br /> I wanted to draw a pattern like the Flower of Life, so I made one.</p> <p>Queries require some understanding of <a href="https://www.lexaloffle.com/bbs/?tid=36325">&quot;HTBL()&quot;</a> analysis. Please look at the sample(tab:6) first.</p> <p>The effects are divided into parts in a table, and multiple drawing groups can be set for each part.</p> <h2>Query creation (QUERY)</h2> <h3>Drawing group specification</h3> <p><code>{id number radius color distance angle [option]}</code></p> <ul> <li>id: Index of the drawing object to be operated</li> <li>number: Number to draw</li> <li>radius: Radius of the circle to be drawn</li> <li>color: Drawing color</li> <li>distance: Distance from the center</li> <li>angle: Angle to start drawing</li> <li>option: Drawing parameters using segment fill<br /> <code>{func angle division color ...}</code></li> <li>func: Specify &quot;segfill&quot;.</li> <li>angle: Angle to start drawing</li> <li>division: Fineness of continuous drawing in a circle, circumference is 1.</li> <li>color: Drawing color, drawn only for the number specified after.</li> </ul> <h3>Specifying parts</h3> <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>{{ {group} {group} {group} ... } duration}</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <ul> <li>{group}: Multiple groups are grouped together with {} to be treated as a drawing group or table.</li> <li>duration: Duration of part animation<br /> When moving to the next part, the animation will change continuously from the previous part.<br /> The id in the group is operated by the same id parameter in the next part.</li> </ul> <h2>Query execution</h2> <p>fquery(QUERY, SYSTEM_PALETTE, DELAY, ...)</p> <ul> <li>QUEEY: Character string created in &quot;Query creation&quot;</li> <li>SYSTEM_PALETTE: Specifies the palette with a continuous hexadecimal string.</li> <li>DELAY, ...: Number of delayed execution frames, executed in parallel for the number of arguments specified.</li> </ul> <h2>GIF recording</h2> <p>Select &quot;RECORD GIF&quot; from the pause menu.</p> <ul> <li> <p>RECORD GIF x1: Records from the start of execution until the display returns to the first part. (Part total duration + 1st part duration)</p> </li> <li>RECORD GIF LOOP: Records from the time the 1st part is fully displayed until it returns to the display of the first part. (Part total duration)</li> </ul> <h2>REC x1</h2> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/streamoflife p8_0.gif" alt="" /> <h2>REC LOOP</h2> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/streamoflife_4.gif" alt="" /> <p><strong>The recording time is increased by the delay time set by DELAY.</strong><br /> </div></div></div></p> https://www.lexaloffle.com/bbs/?tid=143587 https://www.lexaloffle.com/bbs/?tid=143587 Sat, 10 Aug 2024 13:09:58 UTC Parabolic curve animation <p> <table><tr><td> <a href="/bbs/?pid=152263#p"> <img src="/bbs/thumbs/pico8_parabolic_anim_bc-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=152263#p"> parabolic_anim_bc</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=152263#p"> [Click to Play]</a> </td></tr></table> </p> <p>Displays an animation of a parabola.</p> <p>After opening the menu, use the up and down keys to select the item you wish to control.</p> <p>Z: open control menu / close control menu</p> <ul> <li>START: Specifies the animation start position.</li> <li>TARGET: Specifies the animation end position.</li> <li>HEIGHT: Adjusts the height of the middle point.</li> <li>DURATION: Specifies the animation length. (If TIME exceeds DURATION, the animation will start from the beginning.)</li> <li>FRAMERATE: Switches the frame rate to 30 or 60.</li> </ul> https://www.lexaloffle.com/bbs/?tid=143512 https://www.lexaloffle.com/bbs/?tid=143512 Tue, 06 Aug 2024 12:09:04 UTC QSORTZ() [Quick sort by z] <p> <table><tr><td> <a href="/bbs/?pid=151719#p"> <img src="/bbs/thumbs/pico8_qsortz_bc-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=151719#p"> qsortz_bc</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=151719#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Feature Overview</h2> <p><code>QSORTZ()</code> Quick sort by z.</p> <ul> <li>sorts by reference to z from the argument table.</li> <li>See the code in the cart for the single value type <code>QSORT()</code> where table t is sorted by v.</li> <li>This function consumes 76 Token.</li> </ul> <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>tb={{id='a', z=1}, {id='b', z=2}, {id='c', z=1.5}, {id='d', z=-0.5}} ?'before sort',6 for i,v in pairs(tb) do ?v.id..':'..v.z end qsortz(tb,1,#tb) ?'\nafter sort' for i,v in pairs(tb) do ?v.id..':'..v.z end --[[ before sort a:1 b:2 c:1.5 d:-0.5 after sort d:-0.5 a:1 c:1.5 b:2 ]] </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> https://www.lexaloffle.com/bbs/?tid=143291 https://www.lexaloffle.com/bbs/?tid=143291 Wed, 24 Jul 2024 02:15:27 UTC It may be difficult to adjust knobs by dragging <p>When turning knobs in the SFX or instruments editors, it can be difficult to adjust by dragging.</p> <p>This happens when the window size is x2 or more and you use Alt + Tab to switch application windows.<br /> As a temporary fix to this problem, you can restore adjustments by returning the window to normal size.</p> <p>This has been the case since the version before v0.1.0h when the mouse lock function was added.</p> https://www.lexaloffle.com/bbs/?tid=143260 https://www.lexaloffle.com/bbs/?tid=143260 Mon, 22 Jul 2024 08:06:28 UTC SECTFILL() [Fill the sector shape] <p> <table><tr><td> <a href="/bbs/?pid=151359#p"> <img src="/bbs/thumbs/pico8_sectfill_bc-2.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=151359#p"> sectfill_bc</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=151359#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Feature Overview</h2> <p><code>SECTFILL()</code> Fill sector shape.</p> <ul> <li>The start and end angles are specified from 0 to 1.</li> <li>If the difference between the start angle and the end angle is 0.5 or more, it is a semicircle, and if the difference is 1 or more, it is a circle.</li> <li>If the start position is higher than the end position, it is replaced.</li> <li>This function consumes 428 Token. (segfill &amp; trifill ver: 185 Token + segfill + trifill)</li> </ul> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/sectfill_3.gif" alt="" /> <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>-- Draw the Mouth characters sectfill(96,64,20,11,-0.2,0.9)-- x, y, size(radius), color, start angle, distance sectfill(54,64,8,12,-0.2,0.9) sectfill(26,64,8,12,-0.2,0.9)</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/32759/untitled_5_0.png" alt="" /> <p>release note<br /> <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> <p><strong>v0.2</strong></p> <ul> <li>stabilization of the bottom shape.</li> <li>short arcs do not display segments.</li> <li>the radius and y coordinate arguments are converted to integers.</li> <li>update to the latest segfill.</li> </ul> <p><strong>v0.1</strong></p> <ul> <li>first release</li> </ul> <p></div></div></div></p> <h3>Drawing Related Posts</h3> <ul> <li><a href="https://www.lexaloffle.com/bbs/?tid=142070">SEGFILL() - Fill the segment shape</a></li> <li><a href="https://www.lexaloffle.com/bbs/?tid=143159">SECTFILL() - Fill the sector shape</a></li> </ul> https://www.lexaloffle.com/bbs/?tid=143159 https://www.lexaloffle.com/bbs/?tid=143159 Mon, 15 Jul 2024 13:46:02 UTC SEGFILL() [Fill the segment shape] <p> <table><tr><td> <a href="/bbs/?pid=147747#p"> <img src="/bbs/thumbs/pico8_segfill_bc-6.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=147747#p"> segfill_bc</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=147747#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Feature Overview</h2> <p><code>SEGFILL()</code> Fill segment shape.</p> <ul> <li>The start and end angles are specified from 0 to 1.</li> <li>If the difference between the start angle and the end angle is 0.5 or more, it is a semicircle, and if the difference is 1 or more, it is a circle.</li> <li>If the start position is higher than the end position, it is replaced.</li> <li>This function consumes 314 Token.</li> </ul> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/110_untitled_4_0.png" alt="" /> <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>-- Draw a half moon segfill(32,24,16,10,0.625,0.5) -- x, y, size(radius), color, start angle, distance </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p><em>It may be helpful to understand how it works by executing a COLOR COMMENT OUT line.</em></p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/segfill_0.gif" alt="" /> <h3>release note</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> <p><strong>v0.4</strong></p> <ul> <li>argument radius and y coordinate are converted to integers.</li> <li>when the angle distance was 0, the starting point had rasterization chipping at angles of 0.5 or more.</li> </ul> <p><strong>v0.3</strong></p> <ul> <li>Stabilization of the shape of the lower part.</li> <li>Substitute line() for short arcs.</li> <li>For complete circles, substitute circfill().</li> </ul> <p><strong>v0.2</strong></p> <ul> <li>remove extra judgments and variable swapping</li> <li>remove noise at distance 0</li> <li>distance 1 or more and 1 or less will make the result the same</li> </ul> <p><strong>v0.1</strong></p> <ul> <li>first release<br /> </div></div></div></li> </ul> <h3>Drawing Related Posts</h3> <ul> <li><a href="https://www.lexaloffle.com/bbs/?tid=142070">SEGFILL() - Fill the segment shape</a></li> <li><a href="https://www.lexaloffle.com/bbs/?tid=143159">SECTFILL() - Fill the sector shape</a></li> </ul> https://www.lexaloffle.com/bbs/?tid=142070 https://www.lexaloffle.com/bbs/?tid=142070 Fri, 05 Jul 2024 02:45:02 UTC PELOGEN_CATCH(3Drender test) <p> <table><tr><td> <a href="/bbs/?pid=150266#p"> <img src="/bbs/thumbs/pico64_pelogen_catch-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=150266#p"> pelogen_catch</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=150266#p"> [Click to Play]</a> </td></tr></table> <br /> You can grab it with a mouse click and drag it to throw it.</p> <p><em>Shellsort seems to have a slightly better affinity with this 3D rendering engine.</em></p> <p>Release note</p> <ul> <li><strong>v0.2</strong> Added sorting functionality and the ability to toggle object states.</li> <li><strong>v0.1</strong> Release</li> </ul> <p>PELOGEN 2 is a 3d model engine running on pico8.<br /> <a href="https://www.lexaloffle.com/bbs/?tid=140324">https://www.lexaloffle.com/bbs/?tid=140324</a></p> https://www.lexaloffle.com/bbs/?tid=142815 https://www.lexaloffle.com/bbs/?tid=142815 Sat, 22 Jun 2024 14:00:12 UTC number has no integer representation. <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>number has no integer representation</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>v0.1.0g</p> <p>NUMBER with a decimal point cannot be operated with the bitwise operator.<br /> Or is there a workaround to bitwise the decimal point?</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/32759/sshot12.png" alt="" /> https://www.lexaloffle.com/bbs/?tid=142759 https://www.lexaloffle.com/bbs/?tid=142759 Wed, 19 Jun 2024 15:12:08 UTC Execution state of vid() <p>When the code that sets the window property and executes vid() is run, the file browser is covered by the console screen.<br /> In this state, you cannot return to the file browser unless you type <code>exit</code> into the console.</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>window{ width=128 ,height=128 } vid(3)</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>I don't understand the underlying mechanism, so it's hard to offer suggestions for a solution...<br /> but something like these may be what we need.</p> <ul> <li>Restrict the use of window and vid() at the same time.</li> <li>If a new console is running, even in a window application, close window and console after execution is finished.</li> <li>Running window application from CART RAM is always done on the console screen.</li> </ul> <p>I hope i can find a simple solution.</p> https://www.lexaloffle.com/bbs/?tid=142485 https://www.lexaloffle.com/bbs/?tid=142485 Wed, 29 May 2024 05:34:36 UTC