shiftalow [Lexaloffle Blog Feed]https://www.lexaloffle.com/bbs/?uid=32759 INRNG() [Test that the value is within a range] <p> <table><tr><td> <a href="/bbs/?pid=69481#p"> <img src="/bbs/thumbs/pico8_knutil_inrng-2.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=69481#p"> knutil_inrng</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=69481#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Feature Overview</h2> <p>INRNG() Tests if the value is between the lowest and highest values.</p> <ul> <li>Tests that the specified value is within a range.</li> <li>This function consumes 10 Token.</li> </ul> <div> <div style="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>--[true] in range value inrng(5,1,10) --[true] lowest range value inrng(1,1,10) --[true] highest range value inrng(10,1,10) --[false] out of range value inrng(0,1,10) </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>This function is included in the <a href="https://www.lexaloffle.com/bbs/?tid=32411">KNUTIL</a> library.</p> <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;"><br /> v0.2</p> <ul> <li>change arguments to a tuple</li> </ul> <p>v0.1</p> <ul> <li>first release</li> </ul> <p></div></div></div></p> https://www.lexaloffle.com/bbs/?tid=35802 https://www.lexaloffle.com/bbs/?tid=35802 Thu, 30 Jun 2022 01:57:55 UTC &quot;One-off characters&quot; prints unnaturally. <img style="" border=0 src="/media/32759/p8scii_oneofee0.png" alt="" /> <p>One-off characters [8 chars of raw binary data] print unnaturally.</p> <p>Or I may not understand this feature.<br /> I was aware that &quot;\^.00000000&quot; would print nothing.</p> https://www.lexaloffle.com/bbs/?tid=36343 https://www.lexaloffle.com/bbs/?tid=36343 Sun, 17 Apr 2022 12:38:07 UTC Crashes with Tab stop controll code <p>Setting Tab stop controll code to 0 and outputting tab characters at the same time causes pico-8 crash.</p> <p>pico-8 version:0.2.4b</p> <div> <div style="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(&quot;\^s0\t&quot;)</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=36573 https://www.lexaloffle.com/bbs/?tid=36573 Tue, 05 Apr 2022 13:53:20 UTC RCEACH()[Iterate from rectangle values] <p> <table><tr><td> <a href="/bbs/?pid=72450#p"> <img src="/bbs/thumbs/pico8_rceach-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=72450#p"> rceach</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=72450#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Feature Overview</h2> <p>RCEACH() performs a two-dimensional loop in a single function.</p> <ul> <li>The rectangle value arguments correspond to [table] {x,y,w,h} and [string] &quot;x y w h&quot;.</li> <li>You can refer to the current x and y values in the specified function.</li> <li>This function consumes 50 Token.</li> </ul> <div> <div style="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>rceach({16,16,32,32},function(x,y,r) local c=(x+y)%8+8 pset(x,y,c) 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>One of KNUTIL's functions, the object generated by EXRECT(), has a rectangle value format to be used for the RCEACH() argument.<br /> may want to Use <a href="https://www.lexaloffle.com/bbs/?tid=32830">DMP()</a> if check the converted table.<br /> This function is included in the <a href="https://www.lexaloffle.com/bbs/?tid=32411">KNUTIL</a> library.</p> https://www.lexaloffle.com/bbs/?tid=36681 https://www.lexaloffle.com/bbs/?tid=36681 Wed, 30 Mar 2022 10:32:02 UTC TMAP()[More flexible foreach()] <p> <table><tr><td> <a href="/bbs/?pid=77195#p"> <img src="/bbs/thumbs/pico8_tablemap-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=77195#p"> table_map</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=77195#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Feature Overview</h2> <p>TMAP(), like foreach(), applies the function of the second argument to each element of the table.</p> <ul> <li>Usage is almost the same as foreach(), plus index values can be referenced within the function.</li> <li>The specified table is returned. (TMAP() nested functions can be applied multiply)</li> <li>The return value in the function specified in the argument can update each element of the table.</li> <li>This function consumes 27 Token.</li> </ul> <div> <div style="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>local t={ 'toast' ,'letus' ,'bacon' ,'cheese' } t=tmap(t, function(v,i) ?i..'..'..v end) -------- t=tmap(t, function(v,i) v='super★'..v ?i..'..'..v return v end) -------- t=tmap({ 'shield' ,'armor' ,'sword' ,'ring' }, function(v,i) v=t[i]..'&bull;'..v ?i..'..'..v return v 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>may want to Use <a href="https://www.lexaloffle.com/bbs/?tid=32830">DMP()</a> if check the converted table.<br /> This function is included in the <a href="https://www.lexaloffle.com/bbs/?tid=32411">KNUTIL</a> library.</p> https://www.lexaloffle.com/bbs/?tid=38126 https://www.lexaloffle.com/bbs/?tid=38126 Mon, 21 Mar 2022 08:51:22 UTC COMB()[Combine tables] <p> <table><tr><td> <a href="/bbs/?pid=108664#p"> <img src="/bbs/thumbs/pico8_combine_table-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=108664#p"> combine_table</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=108664#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Feature Overview</h2> <p>COMB() combines two tables to create a hash table.</p> <ul> <li>Returns the joined table.</li> <li>The two arguments must be tables of index arrays.</li> <li>The argument is nondestructive.</li> <li>Hash tables are not in constant order. (This is a Lua specification.)</li> <li>This function consumes 26 Token.</li> </ul> <div> <div style="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>local keys={'name','species','home','skill'} local values={'ruth','fox','port town','kon-psi'} local charcter=comb(keys,values)</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>may want to Use <a href="https://www.lexaloffle.com/bbs/?tid=32830">DMP()</a> if check the converted table.<br /> This function is included in the <a href="https://www.lexaloffle.com/bbs/?tid=32411">KNUTIL</a> library.</p> https://www.lexaloffle.com/bbs/?tid=46985 https://www.lexaloffle.com/bbs/?tid=46985 Tue, 15 Mar 2022 14:40:26 UTC CAT() [Concat Table] <p> <table><tr><td> <a href="/bbs/?pid=88288#p"> <img src="/bbs/thumbs/pico8_concat___table-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=88288#p"> concat___table</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=88288#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Feature Overview</h2> <p>CAT() concatenates two or more tables.</p> <ul> <li>The second and subsequent arguments are added to the table elements of the first argument.</li> <li>Returns a concatenated table.</li> <li>The table used for the first argument is updated. (destructive)</li> <li>This function consumes 39 Token.</li> </ul> <div> <div style="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>local tbl_1 = {'a'} local tbl_2 = {'b', 'c'} cat(tbl_1, tbl_2) ?tbl_1[1] ?tbl_1[2] ?tbl_1[3] -- Only primary elements can be cloned. local tbl = {1, 2, 3} local tbl_dup = cat({}, tbl) tbl[1] = 256 ?tbl_dup[1] ?tbl_dup[2] ?tbl_dup[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>See the code in the cartridge for further examples.</p> <p>may want to Use <a href="https://www.lexaloffle.com/bbs/?tid=32830">VDMP()</a> if check the converted table.<br /> This function is included in the <a href="https://www.lexaloffle.com/bbs/?tid=32411">KNUTIL</a> library.</p> https://www.lexaloffle.com/bbs/?tid=41798 https://www.lexaloffle.com/bbs/?tid=41798 Fri, 11 Mar 2022 14:12:28 UTC Feature request: copying SFX from the clipboard <p>Hello. </p> <p>I want to use the clipboard to paste SFX data to another console as shown in the image below.<br /> With the current (0.2.4b) function of PICO-8, you can only paste SFX data on the same console.<br /> It would be simpler to share sound effects if they could be pasted to the clipboard in a format like<br /> <code>[gfx] wwhhpp... [/gfx)</code></p> <img style="" border=0 src="/media/32759/04c6be65e48425a0f764f371eb89c57d.gif" alt="" /> https://www.lexaloffle.com/bbs/?tid=46736 https://www.lexaloffle.com/bbs/?tid=46736 Sun, 27 Feb 2022 15:26:39 UTC Return value when tonum() cannot convert hexadecimal numbers <p>In what situations do you use these conversions?</p> <div> <div style="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>hexnumber = '3xz' --A tonum(hexnumber,1) : 768 (0x0300.0000) --B tonum(&quot;0x&quot;..hexnumber,4) : 0 (0x0000.0000) --C tonum('0x'..hexnumber) : -- NO VALUE --([nil])</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p><strong>Example</strong><br /> I want &quot;nil&quot; to be returned when I use a character as an identifier. Therefore, I use the &quot;C&quot; conversion.</p> <div> <div style="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>hexstr = '108000789$' hexval = TONORM(hexstr) -- Normalize the value [number boolian nil], otherwise it remains a string. hextable = {} if type(hexval) == 'string' then foreach(split(hexstr, 3), function(v) add(hextable, tonum('0x' .. v)) end) end -- Handle hexadecimal conversions without being converted to numbers by normalization. -- Only the value of number is stored in the hextable. -- &quot;$&quot; is not stored. </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=42448 https://www.lexaloffle.com/bbs/?tid=42448 Thu, 24 Feb 2022 10:36:55 UTC Using more than two characters in split() <p>I noticed that split() splits the table at the first character if you use a separator of more than two characters.<br /> Is it a bug or a specification that split() cannot be used with separators of more than two characters?</p> <img style="" border=0 src="/media/32759/split_2chr.png" alt="" /> <p>Thank you.</p> <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;"><br /> If there is no limit to the number of characters in the separator, string replacement can be implemented in a compact way. (as in replace_short())</p> <div> <div style="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 replace_short(s,f,r) return join(split(s,f),r or '') end -- join() is custom function function replace(s,f,r) local a='' while #s&gt;0 do local t=sub(s,1,#f) a=a..(t~=f and sub(s,1,1) or r or '') s=sub(s,t==f and 1+#f or 2) end return a 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=46617 https://www.lexaloffle.com/bbs/?tid=46617 Thu, 17 Feb 2022 13:37:57 UTC KNUTIL Scene Manager Library <p> <table><tr><td> <a href="/bbs/?pid=59538#p"> <img src="/bbs/thumbs/pico8_knutil-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=59538#p"> knutil v0.5</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=59538#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Feature Overview</h2> <p>&quot;KNUTIL&quot; is a library for PICO-8 that contains functions that are frequently used in the games I have created.<br /> I've kept the functions that I eventually needed in my production.</p> <p>In this cart, I show you how the scene functions work with animations.<br /> Z key: Execute the order command.<br /> Up/Down: Select the order command.</p> <p><strong>SCENE MANAGER</strong> controls and replaces the order in which functions are called with a small number of tokens by using consecutive string instructions.<br /> The generated SCENE can register a global function as an ORDER.<br /> One of the registered ORDERS is retrieved by SCENE and the process is repeated for the specified length.<br /> When the processing is finished, it repeats the processing of the next ORDER.<br /> This is expected to facilitate the planning of the performance. </p> <h2>Using SCENE</h2> <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> <h3>Create a SCENE ( MKSCENES )</h3> <div> <div style="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>SCENES, INDEXES = MKSCENES( { 'UPD', 'DRW', 'KEY' } )</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>SCENES: Contains the generated SCENEs.<br /> INDEXES: The indexes needed to run the SCENES in the order they were generated.</p> <h3>Enter an ORDER into a SCENE ( CMDSCENES )</h3> <div> <div style="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>CMDSCENES([[ [SCENE NAME] [COMMAND] [FUNCTION NAME] [DURATION FRAME] [SCENE NAME] [COMMAND] [FUNCTION NAME] [DURATION FRAME] ... ]])</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>[SCENE NAME] : Specify the name generated by MKSCENES.</li> <li>[COMMAND] : Specify the following ORDER COMMANDS.</li> <li>[FUNCTION NAME] : Specify the name of the global function.</li> <li>[DURATION FRAME]: Specifies the number of frames to be sustained; if set to 0, it will not automatically terminate.</li> </ul> <p></div></div></div></p> <h2>ORDER COMMANDS</h2> <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> <h3>ST (SET): Delete all stacked ORDERS in SCENE and set new ORDERS.</h3> <div> <div style="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>CMDSCENES[[ UPD ST MANAGE 0 ]]</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>Clean the SCENE &quot;UPD&quot; and add a &quot;FUNCTION MANAGE&quot;.</p> <h3>PS (PUSH): Add an ORDER to the SCENE</h3> <div> <div style="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>CMDSCENES[[ KEY PS KEYCHECK 0 ]]</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>Add the SCENE &quot;KEY&quot; with &quot;FUNCTION KEYCHECK&quot; at the top.</p> <h3>US (UNSHIFT): interrupt ORDER at the beginning of a SCENE.</h3> <div> <div style="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>CMDSCENES[[ DRW US DRAWRECT 200 DRW US NIL 100 DRW US DRAWCIRC 200 ]]</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>Scene &quot;DRW&quot; is executed in the ORDER of DRAWCIRC, NIL, DRAWRECT.</p> <h3>RM (REMOVE): remove one ORDER.</h3> <div> <div style="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>CMDSCENES[[ DRW RM ]]</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>Removes the first ORDER of the SCENE &quot;DRW&quot;.</p> <div> <div style="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>CMDSCENES[[ DRW RM DRAWRECT ]]</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>Deletes the DRAWRECT ORDER of SCENE &quot;DRW&quot;, starting from the top.</p> <h3>CL (CLEAR): Remove all stacked ORDERS from the SCENE.</h3> <div> <div style="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>CMDSCENES[[ KEY CL ]]</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>Deletes all the ORDERS registered in the SCENE &quot;KEY&quot;.</p> <h3>FI (FIND): Search and retrieve ORDERS from a SCENE.</h3> <div> <div style="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>RES = CMDSCENES[[ DRW FI DRAWRECT ]]</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>In this case, the return value RES is a table, and the ORDER &quot;DRAWRECT&quot; is in the first element.</p> <p></div></div></div></p> <h2>Create a function for ORDERS.</h2> <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 style="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 KEYCHECK( ORDER ) PRINT('PROCESSIONG ORDER') 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> <h2>Run each SCENE.</h2> <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 style="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>## In the _UPDATE() and _DRAW() functions FOR V IN ALL(INDEXES) SCENES[V].TRA() 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> <h2>ORDER function</h2> <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 style="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 [FUNCTION NAME] ( ORDER ) CLS() IF ORDER.FST THEN STOP&quot;IT'S FIRST!&quot; END IF ORDER.LST THEN STOP&quot;IT'S LAST!&quot; END PRINT('COUNT: '..ORDER.CNT..'/'..ORDER.DUR) 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> <h2>Properties of ORDER</h2> <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> <h3>FST / LST</h3> <p>ORDER.FST : at first execution<br /> ORDER.LST : at the last execution.</p> <h3>CNT / DUR</h3> <p>ORDER.CNT : Execution count of the currently running ORDER.<br /> ORDER.DUR : Count of expected end of the currently running ORDER.</p> <h3>PRM</h3> <p>It contains the value specified in the second argument of CMDSCENES.</p> <h3>RATE</h3> <p>Used to specify the end from the start, e.g. in coordinates.</p> <div> <div style="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>ORDER.rate('[start] [end]', duration, count )</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 default values for duration and count are the ones specified in CMDSCENES.</p> <h3>Force ORDER termination.</h3> <p>Do <code>return 1</code><br /> or<br /> do <code>ORDER.rm = 1</code>.<br /> </div></div></div></p> <h2>Functions other than scenes</h2> <h3>There is one in this library that I have already posted.</h3> <p><a href="https://www.lexaloffle.com/bbs/?tid=36325">HTBL</a>: Converting a string to a table(Multidimensional Array / Hash Table / Jagged Arrays)<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;"> <table><tr><td> <a href="/bbs/?pid=71300#p"> <img src="/bbs/thumbs/pico8_stringhashtable-2.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=71300#p"> stringhashtable</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=71300#p"> [Click to Play]</a> </td></tr></table> </div></div></div></p> <p><a href="https://www.lexaloffle.com/bbs/?tid=32830">DMP</a>: Dumps information about a variable.<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;"> <table><tr><td> <a href="/bbs/?pid=60679#p"> <img src="/bbs/thumbs/pico8_vdmplua-2.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=60679#p"> DMP (Dumping table values)</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=60679#p"> [Click to Play]</a> </td></tr></table> </div></div></div></p> <p><a href="https://www.lexaloffle.com/bbs/?tid=41798">CAT</a>: Concatenate tables. Indexes are added last and identical keys are overwritten.<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;"> <table><tr><td> <a href="/bbs/?pid=88288#p"> <img src="/bbs/thumbs/pico8_concat___table-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=88288#p"> concat___table</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=88288#p"> [Click to Play]</a> </td></tr></table> </div></div></div></p> <p><a href="https://www.lexaloffle.com/bbs/?tid=46985">COMB</a>: Combines two tables to create a hash table.<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;"> <table><tr><td> <a href="/bbs/?pid=108664#p"> <img src="/bbs/thumbs/pico8_combine_table-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=108664#p"> combine_table</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=108664#p"> [Click to Play]</a> </td></tr></table> </div></div></div></p> <p><a href="https://www.lexaloffle.com/bbs/?tid=38126">TMAP</a>: More compact operable foreach iterator.<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;"> <table><tr><td> <a href="/bbs/?pid=77195#p"> <img src="/bbs/thumbs/pico8_tablemap-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=77195#p"> table_map</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=77195#p"> [Click to Play]</a> </td></tr></table> </div></div></div></p> <p><a href="https://www.lexaloffle.com/bbs/?tid=36681">RCEACH</a>: Iterate from rectangle values.<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;"> <table><tr><td> <a href="/bbs/?pid=72450#p"> <img src="/bbs/thumbs/pico8_rceach-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=72450#p"> rceach</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=72450#p"> [Click to Play]</a> </td></tr></table> </div></div></div></p> <p><a href="https://www.lexaloffle.com/bbs/?tid=35802">INRNG</a>: Tests that the specified value is within a range.<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;"> <table><tr><td> <a href="/bbs/?pid=69481#p"> <img src="/bbs/thumbs/pico8_knutil_inrng-2.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=69481#p"> knutil_inrng</a><br><br> by <a href="/bbs/?uid=32759"> shiftalow</a> <br><br><br> <a href="/bbs/?pid=69481#p"> [Click to Play]</a> </td></tr></table> </div></div></div></p> <h3>Functions not posted on BBS. (I will post them some other time)</h3> <p><strong>TONORM</strong>: String to type conversion(boolian, nil, number).<br /> <strong>TOHEX</strong>: Convert hexadecimal string without &quot;0x&quot;.<br /> <strong>TTOH</strong>: Sum the numbers in argument 1 by shifting bits to argument 2.<br /> <strong>HTOT</strong>: Divide an integer value into 8 bits and make it into a table.<br /> <strong>REPLACE</strong>: Perform string substitutions.<br /> <strong>EXRECT(RFMT)</strong>: Drawing and overlap judgment with the generated rectangle.<br /> <strong>TOC</strong>: Divide the value and exclude the remainder.<br /> <strong>JOIN</strong>: Convert a table containing strings into a single string.<br /> <strong>SPLIT(wrapper function)</strong>: Split() for two-dimensional support. Defaults to space separator.<br /> <strong>HTD</strong>: Convert a hexadecimal string to a 4-bit-16-bit table.<br /> <strong>SLICE</strong>: Cuts out the table at the specified index.<br /> <strong>TBFILL</strong>: Creates a table filled with the specified values. (Two dimensional support)<br /> <strong>OUTLINE</strong>: Display text with edges.<br /> <strong>MKPAL</strong>: Create a table to be used in pal(), specifying the colors before and after the change.<br /> <strong>ECMKPAL</strong>: Generate a set of tables to be retrieved by MKPAL().<br /> <strong>ECPALT</strong>: Run palt() on the table.<br /> <strong>TTABLE</strong>: If it is not a table, it returns FALSE, otherwise it returns as is.<br /> <strong>AMID</strong>: Expand the arguments to positive and negative and do mid().<br /> <strong>BMCH</strong>: Compares two values to judge that they both have a bit in common.</p> <h3>UPDATE HISTORY</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;"><br /> <strong>v0.5</strong><br /> Mainly due to sub()'s CPU cost countermeasure.</p> <ul> <li>replace: fix usage of sub()</li> <li>htd: Convert from split()</li> <li>htbl: Run newlines without replace()</li> <li>scene: Save cost with split()&amp;comb() at initialization</li> <li>dbg: Change to display values without dbg() argument</li> <li>example: Add htbl() example use<br /> </div></div></div></li> </ul> https://www.lexaloffle.com/bbs/?tid=32411 https://www.lexaloffle.com/bbs/?tid=32411 Wed, 03 Mar 2021 12:49:21 UTC Publish on Steam! <p>Hello, everyone.</p> <p>A few days ago, a game I created called KONSAIRI was released on Steam!<br /> <a href="http://store.steampowered.com/app/1448220/">http://store.steampowered.com/app/1448220/</a></p> <p>There are still very few examples of PICO-8 games on the Steam platform as PICO-8 games.</p> <p>I think that's because, as content, PICO8 titles are seen as lacking when compared to other game engines and those created in a free development environment with no restrictions.</p> <p>But I challenge you to dream of being in the same store as a masterpiece game, despite its limitations.</p> <p>I also wish to see more interest in PICO-8 in my part of Japan.</p> <p> <table><tr><td width=0> <img src="https://www.lexaloffle.com/bbs/gfxc/32759_4.png" width=0 height=0> </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(); } ); '> [0x0]</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> </p> https://www.lexaloffle.com/bbs/?tid=40108 https://www.lexaloffle.com/bbs/?tid=40108 Sun, 01 Nov 2020 14:36:32 UTC local_config.txt global_config.txt <p>Hello.</p> <p>Suggestion.<br /> I would like the exported file to include the current config.txt (global_config.txt) as local_config.txt in the exported file.</p> <p>This will allow us to play from the creator's ideal config in another user's environment.</p> <p>&quot;global_config.txt&quot; refers to the config.txt that I've been using.<br /> If both global_config.txt and local_config.txt exist, local_config.txt is assumed to take precedence.</p> <p><strong><em>Sequence of events</em></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 recently released the PICO-8 app in executable format.<br /> However, the user's environment that downloaded it had different operations and a lower frame rate for inactive windows.<br /> The released manual had to be rewritten and the creator was unable to provide the ideal play environment.<br /> </div></div></div></p> <p>A question thread containing this<br /> <a href="https://www.lexaloffle.com/bbs/?tid=39940">https://www.lexaloffle.com/bbs/?tid=39940</a></p> https://www.lexaloffle.com/bbs/?tid=39958 https://www.lexaloffle.com/bbs/?tid=39958 Mon, 19 Oct 2020 03:47:42 UTC Drop Frame in the back window <p>Is there a recommended coding method that would eliminate the drop frames that occur when the pico8 window is turned to the back?<br /> Or is there a memory address I can set?</p> <p>I want to keep the number of times to execute _update60() and draw() the same, even at 30fps.</p> <img style="" border=0 src="/media/32759/2_0.gif" alt="" /> https://www.lexaloffle.com/bbs/?tid=39940 https://www.lexaloffle.com/bbs/?tid=39940 Sun, 18 Oct 2020 03:05:42 UTC Release KONSAIRI! And then... <p>Has anyone played it?</p> <p><a href="https://bitchunk.itch.io/konsairi">https://bitchunk.itch.io/konsairi</a></p> <p><blockquote class="twitter-tweet" data-lang="en"><a href="https://twitter.com/lexaloffle/status/1309871182594732032">[tweet <img src="/gfx/load16.gif">]</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></p> https://www.lexaloffle.com/bbs/?tid=39781 https://www.lexaloffle.com/bbs/?tid=39781 Wed, 30 Sep 2020 12:29:47 UTC BBS: I don't know how to erase a draft. <img style="" border=0 src="/media/32759/スクリーンショット 2020-09-25 175221.png" alt="" /> <p>Before I knew it, I had made a lot of them...</p> https://www.lexaloffle.com/bbs/?tid=39723 https://www.lexaloffle.com/bbs/?tid=39723 Fri, 25 Sep 2020 08:54:24 UTC KONSAIRI (Action Adventure / Dungeon mode) <img style="" border=0 src="/media/32759/1_1.gif" alt="" /> <p>I'm developing KONSAIRI, a game I've been working on for a while now that I'm finalizing and checking throughout the game.</p> <p>As I mentioned before, the goal of the game is to move back and forth between 16 different areas to reach the final destination.</p> <p>However, it seemed to feel like the same old thing before you even reach halfway through the game.</p> <p>That's why i added Dungeon mode, which changes the look and feel of the adventure dramatically.</p> <p>Not only do you take damage when you touch an enemy, but there are hidden passages and hints scattered throughout the game that will help you get to the true ending.</p> <img style="" border=0 src="/media/32759/1_2.gif" alt="" /> <p>When you stand in front of an enemy, you will see a timing gauge.<br /> It's not for attacking, but for getting through to the enemy's rear.<br /> A well-timed &quot;step move&quot; will allow you to move forward with no damage.<br /> If time passes, you will be damaged.<br /> If you move away from the spot, you can avoid the danger.</p> <p>You can bring in items, throw them and use skills.<br /> You can open doors, read hints, light up and explore, and more...!</p> <h2>KONSAIRI TRIAL version</h2> <p><strong> <a href="https://bitchunk.itch.io/konsairi">https://bitchunk.itch.io/konsairi</a> </strong></p> https://www.lexaloffle.com/bbs/?tid=39478 https://www.lexaloffle.com/bbs/?tid=39478 Thu, 03 Sep 2020 16:01:42 UTC Feature Request: Horizontal scrolling in the code editor <p>I think being able to scroll horizontally with &quot;Shift + mouse wheel&quot; would make it easier to check for longer lines.</p> <p>I can also use line breaks to keep up appearances, but I don't want to add too many characters.</p> https://www.lexaloffle.com/bbs/?tid=39262 https://www.lexaloffle.com/bbs/?tid=39262 Mon, 17 Aug 2020 13:30:01 UTC KONSAIRI (Action Adventure / 4x carts project) <h2>Current Development</h2> <p>I'm building a relationship between NPCs and area map connections.<br /> These are mainly for the latter 8 areas.<br /> (The &quot;keys&quot; that NPCs have might be easier to understand.)</p> <p>This game has a combined total of 16 areas.<br /> There are also useful items that will help you move through such a large world.<br /> These items can be found at the end of the first half of the game.</p> <p>Then, the image below shows the map of the first half of the game.</p> <h2>Reduced map for 8 areas</h2> <p>Most of the maps are over 128*128 cell size.<br /> The aspect ratio varies from area to area and the structure is challenging to explore.<br /> Once you get your &quot;KUWAI&quot;, use it! You can look around the entire area.</p> <img style="" border=0 src="/media/32759/4xcartporj_02.png" alt="" /> <h2>Actual map display</h2> <p>An animated tile is provided in each area.<br /> These tiles bring about the effect of the wind.<br /> You can use &quot;PERSNIP&quot; to change the wind (flow).</p> <img style="" border=0 src="/media/32759/konsaimap_1.gif" alt="" /> <h2>Awaking bells</h2> <p>The status limit is relaxed when you earn a BELL.<br /> When you earn bells, the status limit is relaxed.<br /> Bells can be earned by eating with NPCs when your friendship is somewhat higher.</p> <p>The higher your status, the less items you'll have to wear out or take time to move around.</p> <img style="" border=0 src="/media/32759/3_001.png" alt="" /> <h2>The color of the BELL is the color of the POT</h2> <p>Acquiring a bell of the same color (material) will have no effect.<br /> You may be able to get bells of a different color from a different NPC.<br /> The color of the pot and the color of the bell are the same; check it when you help the NPC.</p> <img style="" border=0 src="/media/32759/3_3.gif" alt="" /> <h2>Updated KONSAIRI trial version!</h2> <p>The performance of the action part has been improved!<br /> Download a playable file here.<br /> <a href="https://bitchunk.itch.io/konsairi">https://bitchunk.itch.io/konsairi</a></p> <p>Have fun in a small and wide world! ;)</p> https://www.lexaloffle.com/bbs/?tid=39172 https://www.lexaloffle.com/bbs/?tid=39172 Thu, 13 Aug 2020 02:27:35 UTC srand() reproducibility <p>Does the random value generation by srand() always produce the same pattern output as long as the same seed value is input?</p> <p>Does the output pattern change due to a change in the environment?<br /> For example, the upgrades, the amount of code, the timing of the exports, the machine or OS you're running...</p> <p>So far I haven't been able to verify much and I haven't encountered the fact that the output results have changed, but I am concerned.</p> <p>Thanks for your help.</p> https://www.lexaloffle.com/bbs/?tid=38917 https://www.lexaloffle.com/bbs/?tid=38917 Mon, 20 Jul 2020 12:55:11 UTC