szczm_ [Lexaloffle Blog Feed]https://www.lexaloffle.com/bbs/?uid=37261 BALLOON <p> <table><tr><td> <a href="/bbs/?pid=71289#p"> <img src="/bbs/thumbs/pico8_zajodowiyob-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=71289#p"> BALLOON</a><br><br> by <a href="/bbs/?uid=37261"> szczm_</a> <br><br><br> <a href="/bbs/?pid=71289#p"> [Click to Play]</a> </td></tr></table> </p> <p>​Try to keep your balloon grounded and don't pop so you don't stop. Definitely not a Flappy Bird clone.</p> <p>This is a game made for the <a href="https://onehourgamejam.com">243th One Hour Game Jam</a>, the theme of which was &quot;Cactus&quot;. I made it in 3 hours. I lagged a little.</p> <p><a href="https://szczm.itch.io/balloon">Also on itch.io</a>.<br /> ​</p> https://www.lexaloffle.com/bbs/?tid=36321 https://www.lexaloffle.com/bbs/?tid=36321 Sat, 21 Dec 2019 23:21:39 UTC MOUSE MAZE <p> <table><tr><td> <a href="/bbs/?pid=70202#p"> <img src="/bbs/thumbs/pico8_mousemaze-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=70202#p"> MOUSE MAZE</a><br><br> by <a href="/bbs/?uid=37261"> szczm_</a> <br><br><br> <a href="/bbs/?pid=70202#p"> [Click to Play]</a> </td></tr></table> </p> <h1>MOUSE MAZE</h1> <p>You're the last mouse on <strong>Mouse Earth</strong> (which is just sewers, but with a nice name), and <strong>Mouse Earth</strong> (still just sewers) is about to get <strong>flooded</strong> by <strong>water</strong>! Will you escape the maze in time and protect the <strong>legacy</strong> of <strong>Mouse Earth?</strong> (<em>sewers</em>)</p> <h3>Features:</h3> <ul> <li>cute <strong>mouse</strong>!</li> <li><strong>procedurally generated levels!</strong> yes, exactly like that <strong>No Man's Sky</strong> game!</li> <li>cute <strong>graphics</strong>!</li> <li><strong>maze-oriented gameplay</strong>! yes, exactly like that <strong>DOOM</strong> game!</li> <li><em>spooky music~</em></li> <li><strong>innovative!</strong></li> <li><strong><em>disruptive!</em></strong></li> <li><strong><em>FUN.</em></strong></li> </ul> <p>This is a small game that originally started as a submission for the <a href="https://onehourgamejam.com">239th One Hour Game Jam</a>, the theme of which was &quot;<strong>Mouse Only</strong>&quot;, which is of course open to interpretation. I made the basic maze in 2 hours and then decided to take additional time (~8 hours) and make it a sweet little game. I really like the end result and I hope you do too, you <em>lovely human you</em>.</p> <p>Unless you're a robot.</p> <p>You lovely <em>robot you</em>.</p> <p><a href="https://szczm.itch.io/mouse-maze">Also on itch.io.</a></p> https://www.lexaloffle.com/bbs/?tid=36024 https://www.lexaloffle.com/bbs/?tid=36024 Sun, 24 Nov 2019 20:21:55 UTC FLOATING ISLANDS <p> <table><tr><td> <a href="/bbs/?pid=69599#p"> <img src="/bbs/thumbs/pico8_floatingislands-2.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=69599#p"> FLOATING ISLANDS</a><br><br> by <a href="/bbs/?uid=37261"> szczm_</a> <br><br><br> <a href="/bbs/?pid=69599#p"> [Click to Play]</a> </td></tr></table> </p> <p>Try to get as high as possible and don't fall off of the floating islands! Totally not a clone of Icy Tower!</p> <p>This is a game made for the <a href="https://onehourgamejam.com/">236th One Hour Game Jam</a>, the theme of which was &quot;Floating Islands&quot;.</p> <p><a href="https://szczm.itch.io/floating-islands">Also on itch.io.</a></p> https://www.lexaloffle.com/bbs/?tid=35835 https://www.lexaloffle.com/bbs/?tid=35835 Sat, 02 Nov 2019 21:17:56 UTC Multicart communication problem <p>With the launch of <a href="https://www.lexaloffle.com/bbs/?tid=34751">PICOWARE</a>, I got many reports from player saying they got a &quot;communication error&quot; when trying to play the minigames. This error was a fail-safe mechanism intended to avoid a situation, wherein someone tries to start a minigame cart in any other way than from the main cart.</p> <p>The implementation is: on main cart load, zero out the &quot;difficulty&quot; save data. On subcart load, set the difficulty &mdash; it's guaranteed to be in range 1..15. In subcart, check if saved difficulty is 0 &mdash; if yes, stop the cart and display a message about a communication error.</p> <p>Subcarts decide what mode/difficulty/minigame will be used based on the data received from the main cart, and so this is to enforce starting from the main cart. Furthermore, after a whole playthrough, subcarts are supposed to return to the main cart and inform it of the score. Can't imagine a situation when the player starts a minigame in a &quot;single minigame&quot; mode, then the subcart starts the whole story mode, and after finishing returns to the story cart which informs the player that they beat the whole stage.</p> <p>As players started flooding in, I got reports saying they get the &quot;communication error&quot; during normal play. Different browsers, different operating systems, web and standalone, online and offline, and very unreliable. Further investigation showed that indeed &mdash; very rarely, with no noticable pattern &mdash; the save data in the subcart is zeroed out.</p> <p>Nothing seems to have any effect on this bug: changed dset/dget to poke4/peek4, tried setting the data a few seconds before the load, still the bug hasn't disappeared. Tried reproducing this with a set of test carts using code below:</p> <p><code>a.p8.png</code>:</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 _init() cartdata(&quot;foo_bar&quot;) -- set to a random number for i=1,10 do dset(0, rnd(-1)) end dset(0, 1337) load(&quot;b.p8.png&quot;, &quot;breadcrumb&quot;) 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><code>b.p8.png</code>:</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 _init() cartdata(&quot;foo_bar&quot;) -- should fail if dget(0) ~= 0 if dget(0) == 1337 then extcmd(&quot;go_back&quot;) return end cls() print(dget(0), 1, 1, 7) flip() repeat until false 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>I've had this running non-stop for 10 minutes, and&hellip; nothing. This just works. I'm lost. This probably is influenced also by something else &mdash; PICOWARE cart is so dense (it seems to have broken the cart image somehow), maybe that could be a factor.</p> <p>Here is a GIF of me reproducing the bug (PICO-8 standalone, offline cart):</p> <img style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/files/37261/picoware_subcart01.p8_0.gif" alt="" /> <p>And the steps to reproduce:</p> <ol> <li>Load PICOWARE (e.g. <code>load #picoware</code>)</li> <li>Start story cart (any mode, any cart)</li> <li>If cart was loaded and started correctly, go back using the breadcrumb menuitem and try again until bug occurs</li> </ol> <p>Also, one thing I noticed personally &mdash; this never happened the other way around, that is when returning from a subcart. Although communication data in the subcart is set instantly right before returning, there never appears any problem with the main cart receiving this data &mdash; which, if happened, would appear as the main cart showing the title screen first instead of the cart view/score screen (cartdata is used for this too).</p> <p>This seems like a very peculiar bug, nonetheless one that affected many PICOWARE players, and I'm lost trying to figure out the root of this.</p> <p>EDIT: Additional updates in comments below.</p> https://www.lexaloffle.com/bbs/?tid=35029 https://www.lexaloffle.com/bbs/?tid=35029 Sun, 11 Aug 2019 19:25:18 UTC PICOWARE <p> <table><tr><td> <a href="/bbs/?pid=65884#p"> <img src="/bbs/thumbs/pico8_picoware-20.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=65884#p"> PICOWARE</a><br><br> by <a href="/bbs/?uid=37261"> szczm_</a> <br><br><br> <a href="/bbs/?pid=65884#p"> [Click to Play]</a> </td></tr></table> </p> <h1>PICOWARE!</h1> <p>Do <strong>you</strong> love WarioWare? And do <strong>you</strong> love PICO-8? What we if we combine them into one game that you can play in your browser, right now?</p> <h2>Say hello to <strong>PICOWARE</strong>!</h2> <p>Over <strong>50+ developers</strong> made <strong>68 microgames</strong> during the <a href="https://itch.io/jam/picoware"><strong>24 hour PICOWARE gamejam</strong></a> starting on July 27th 2019, with the intention of combining them together into one bigger game, called <strong>PICOWARE</strong>!</p> <p><strong>It's there!</strong> Up above! This is the game! The game all the <em>cool kids</em> play! Don't you want to join them? Do you want to stick out? <strong>Of course not!</strong></p> <h2>SHARE PICOWARE!</h2> <p>Fancy a fancy link? Here!<br /> <a href="https://is.gd/picoware">is.gd/picoware</a></p> <p>Use Twitter? Here's the official tweet-tweet!<br /> <a href="https://twitter.com/TonicMaciej/status/1159708844437725185">twitter.com/TonicMaciej/status/1159708844437725185</a></p> <p>Use PICO-8? I&mdash; I hope you do. Just say the magic word:<br /> <code>load #picoware</code></p> <p>Want to play offline? Download all the carts below:</p> <img style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/cposts/pi/picoware-20.p8.png" alt="" /> <p><img style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/cposts/pi/picoware_subcart01-8.p8.png" alt="" /> <img style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/cposts/pi/picoware_subcart02-6.p8.png" alt="" /> <img style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/cposts/pi/picoware_subcart03-6.p8.png" alt="" /><br /> <img style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/cposts/pi/picoware_subcart04-3.p8.png" alt="" /> <img style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/cposts/pi/picoware_subcart05-5.p8.png" alt="" /> <img style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/cposts/pi/picoware_subcart06-4.p8.png" alt="" /><br /> then load the main cart as you normally would:<br /> <code>load picoware-20.p8.png</code></p> <h2>MAKE PICOWARE</h2> <p>Here are all creators of the PICOWARE minigames, in no particular order:</p> <ol> <li><strong>Pico-Race</strong>, made by @random_disconnect</li> <li><strong>Sleepers Sheepers</strong>, made by Jpecina and TyPhyter</li> <li><strong>Barbershop Sim</strong>, made by @demonicx + @setff</li> <li><strong>Wake-up Call</strong>, made by GreenCheekGames</li> <li><strong>Pick a Good One!</strong>, made by <a href="https://www.lexaloffle.com/bbs/?uid=31597"> @Leo9</a></li> <li><strong>Get Through the Day</strong>, made by LuBu</li> <li><strong>Stay Dry</strong>, made by Javier Rizzo</li> <li><strong>Slam Dunk</strong>, made by <a href="https://twitter.com/v360dev">@v360dev</a></li> <li><strong>Pet the Puppos</strong>, made by <a href="https://dekent.itch.io">dekent.itch.io</a></li> <li><strong>Shine the Spotlight</strong>, made by <a href="https://twitter.com/WinslowJosiah">JWinslow23</a></li> <li><strong>Catch All the Stars</strong>, made by <a href="https://twitter.com/picoter8"><a href="https://www.lexaloffle.com/bbs/?uid=38895"> <a href="https://www.lexaloffle.com/bbs/?uid=38895"> <a href="https://www.lexaloffle.com/bbs/?uid=38895"> @picoter8</a></a></a></a></li> <li><strong>Save Helpi from Bosso</strong>, made by <a href="https://twitter.com/thattomhall"><a href="https://www.lexaloffle.com/bbs/?uid=32135"> @thattomhall</a></a></li> <li><strong>Beam Up Jelpi</strong>, made by joll05</li> <li><strong>Abduct the Cows</strong>, made by <a href="https://twitter.com/mauszozo">@mauszozo</a></li> <li><strong>Avoid the Flying Jelpis</strong>, made by <a href="https://twitter.com/picoter8"><a href="https://www.lexaloffle.com/bbs/?uid=38895"> <a href="https://www.lexaloffle.com/bbs/?uid=38895"> <a href="https://www.lexaloffle.com/bbs/?uid=38895"> @picoter8</a></a></a></a></li> <li><strong>Shoot the Spaceship</strong>, made by Javier Rizzo</li> <li><strong>Survive the Zombie Jelpis</strong>, made by <a href="https://twitter.com/picoter8"><a href="https://www.lexaloffle.com/bbs/?uid=38895"> <a href="https://www.lexaloffle.com/bbs/?uid=38895"> <a href="https://www.lexaloffle.com/bbs/?uid=38895"> @picoter8</a></a></a></a></li> <li><strong>Existence</strong>, made by @RhizomaticWarmachine</li> <li><strong>Spaceship Landing</strong>, made by Jesus Gonzalez</li> <li><strong>Alien Rescue</strong>, made by <a href="https://twitter.com/sam_c_lee">@sam_c_lee</a></li> <li><strong>They Live</strong>, made by @RhizomaticWarmachine</li> <li><strong>Jumpship!</strong>, made by <a href="https://twitter.com/bellicapax"><a href="https://www.lexaloffle.com/bbs/?uid=14779"> @bellicapax</a></a></li> <li><strong>Super Jelpi</strong>, made by Eos Wander</li> <li><strong>Crush in a Jam</strong>, made by <a href="https://twitter.com/knh1901">knh190</a></li> <li><strong>Wigglebee</strong>, made by <a href="https://twitter.com/katbuilt">@katbuilt</a> and <a href="https://twitter.com/acreature">@acreature</a></li> <li><strong>Oh Nose! More Bees!</strong>, made by <a href="https://twitter.com/Jusiv_">@Jusiv_</a></li> <li><strong>Obligatory Bee Game</strong>, made by @RhizomaticWarmachine</li> <li><strong>Beware of Flower Pots</strong>, made by Insane Scatterbrain</li> <li><strong>Humble Bumble</strong>, made by MasterNyborg and Buzby</li> <li><strong>Sheer the Sheep</strong>, made by <a href="https://twitter.com/ctinney94">@ctinney94</a></li> <li><strong>Save Sugar Cube!</strong>, made by <a href="https://cpiod.itch.io">cpiod</a></li> <li><strong>Dizzy Fly</strong>, made by My Roe Ate</li> <li><strong>Combo Bounce</strong>, made by <a href="https://twitter.com/DoubleATam"><a href="https://www.lexaloffle.com/bbs/?uid=27232"> @DoubleATam</a></a></li> <li><strong>Home for a Hermit Crab</strong>, made by <a href="https://twitter.com/josephmarksjr">@josephmarksjr</a></li> <li><strong>Help Jelpi Vent!</strong>, made by Jamie</li> <li><strong>Climb the Tree</strong>, made by JustFire45</li> <li><strong>Ruin the Party</strong>, made by @peepeenanah</li> <li><strong>Sushi Scramble</strong>, made by <a href="https://twitter.com/robotinker"><a href="https://www.lexaloffle.com/bbs/?uid=29056"> @Robotinker</a></a></li> <li><strong>Drop the Mint</strong>, made by Dooma4</li> <li><strong>Perfect Beer</strong>, made by Dooma4</li> <li><strong>Get the Balloon!</strong>, made by Stephmo</li> <li><strong>Spotlight Landing</strong>, made by <a href="https://twitter.com/svntax"><a href="https://www.lexaloffle.com/bbs/?uid=24528"> @svntax</a></a></li> <li><strong>Target Practice</strong>, made by <a href="https://twitter.com/FuwanekoGames">@FuwanekoGames</a></li> <li><strong>Pop the Balloon</strong>, made by fwip</li> <li><strong>Paper Airplane</strong>, made by @RhizomaticWarmachine</li> <li><strong>Frequency Check</strong>, made by dberzins</li> <li><strong>Bubble Fishy</strong>, made by qst0</li> <li><strong>Scratch the Advertising!</strong>, made by OniriCorpe</li> <li><strong>Publish or Perish</strong>, made by <a href="https://twitter.com/Kirais_Gamer">Kirais</a></li> <li><strong>Sort Out the Beans</strong>, made by <a href="https://www.lexaloffle.com/bbs/?uid=38901"> @yeff</a></li> <li><strong>Find the Backwards Word</strong>, made by <a href="https://www.lexaloffle.com/bbs/?uid=14449"> @nephilim</a></li> <li><strong>Lantern Lights</strong>, made by capucat</li> <li><strong>Get the Shape!</strong>, made by <a href="https://twitter.com/reecegames1">@reecegames1</a></li> <li><strong>Fill the Buckets</strong>, made by fwip</li> <li><strong>Jelpi Counter</strong>, made by <a href="https://twitter.com/sam_c_lee">@sam_c_lee</a></li> <li><strong>Ninja Sort</strong>, made by Cupcake&lt;3 (Paul Wandley)</li> <li><strong>Jelpuzzle</strong>, made by <a href="https://twitter.com/vrnspr">@vrnspr</a></li> <li><strong>Pour the Tea into the Cup</strong>, made by <a href="https://twitter.com/WinslowJosiah">JWinslow23</a></li> <li><strong>Walk on Ice</strong>, made by <a href="https://twitter.com/knh1901">knh190</a></li> <li><strong>Jelpi Lander</strong>, made by Jamie</li> <li><strong>Slide to the Goal Tile</strong>, made by Numzyx</li> <li><strong>Fuzero</strong>, made by @planeteightgames</li> <li><strong>Supportive Chatroom</strong>, made by @noscoperadio</li> <li><strong>Jelpocracy</strong>, made by GooGroker</li> <li><strong>Tetrominoes in the Night</strong>, made by <a href="https://twitter.com/@alce_x">@alce_x</a> and Lin Han</li> <li><strong>Get the Cherry</strong>, made by Akumarai</li> <li><strong>Catch the Bar!</strong>, made by <a href="https://cpiod.itch.io">cpiod</a></li> <li><strong>Don't Drown</strong>, made by <a href="https://twitter.com/pixelsixnet">@pixelsixnet</a></li> </ol> <p>&hellip;and the people without whom making the final game wouldn't be possible:</p> <ul> <li><a href="https://cpiod.itch.io">cpiod</a></li> <li>knh190 <a href="https://twitter.com/knh1901">@knh1901</a></li> <li>ReeceGames <a href="https://twitter.com/reecegames1">@reecegames1</a></li> <li>Gruber <a href="https://twitter.com/gruber_music">@gruber_music</a></li> <li>Tom Hall <a href="https://twitter.com/thattomhall"><a href="https://www.lexaloffle.com/bbs/?uid=32135"> @thattomhall</a></a></li> <li>Maciej Szczerba (that's me) <a href="https://twitter.com/TonicMaciej">@TonicMaciej</a></li> </ul> <h2>FIX PICOWARE</h2> <p>Notice any bugs? Your Jelpi's not working! Help us make <strong>PICOWARE</strong> the best it can be and post feedback using any method you want!</p> <h3>PICOWARE.</h3> https://www.lexaloffle.com/bbs/?tid=34751 https://www.lexaloffle.com/bbs/?tid=34751 Tue, 16 Jul 2019 10:49:05 UTC GROWTH <p> <table><tr><td> <a href="/bbs/?pid=65822#p"> <img src="/bbs/thumbs/pico8_growth-3.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=65822#p"> GROWTH</a><br><br> by <a href="/bbs/?uid=37261"> szczm_</a> <br><br><br> <a href="/bbs/?pid=65822#p"> [Click to Play]</a> </td></tr></table> </p> <p><em>A flower blooms slowly towards the sky.</em></p> <p>This is a game made for the <a href="https://onehourgamejam.com">220th One Hour Game Jam</a>, the theme of which was &quot;Growth&quot;.</p> <p><a href="https://szczm.itch.io/growth">Also on itch.io.</a></p> <p>Cart art by the amazing Wallkick!</p> https://www.lexaloffle.com/bbs/?tid=34712 https://www.lexaloffle.com/bbs/?tid=34712 Sat, 13 Jul 2019 21:41:11 UTC City Limits <p> <table><tr><td> <a href="/bbs/?pid=65671#p"> <img src="/bbs/thumbs/pico8_citylimits-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=65671#p"> City Limits</a><br><br> by <a href="/bbs/?uid=37261"> szczm_</a> <br><br><br> <a href="/bbs/?pid=65671#p"> [Click to Play]</a> </td></tr></table> </p> <p>Drive recklessly and try not to crash in this Reckless Driving Simulator 2019 Extreme Deluxe Edition called <strong>City Limits</strong>! <em>(DLC not included)</em></p> <p>This is a game made for the 219th <a href="http://onehourgamejam.com/">One Hour Game Jam</a>, the theme of which was &quot;Limit&quot;.</p> <p>Also available on <a href="https://szczm.itch.io/city-limits">itch.io</a>.</p> https://www.lexaloffle.com/bbs/?tid=34645 https://www.lexaloffle.com/bbs/?tid=34645 Sun, 07 Jul 2019 10:19:24 UTC LIINES <p> <table><tr><td> <a href="/bbs/?pid=64653#p"> <img src="/bbs/thumbs/pico8_liines-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=64653#p"> LIINES</a><br><br> by <a href="/bbs/?uid=37261"> szczm_</a> <br><br><br> <a href="/bbs/?pid=64653#p"> [Click to Play]</a> </td></tr></table> </p> <p>LIINES, a short demo released at <a href="https://moonshinedragons.party">Moonshine Dragons 2019 demoparty</a> in Opole, Poland for the wild competition.</p> <p>Not tested exhaustively in browsers, and it can go out of sync. If you experience any bugs, let me know!</p> <p>For best experience, download cart, or binaries (Windows, Mac, Linux) <a href="ftp://ftp.untergrund.net/users/samar/liines-final.zip">here</a>.</p> https://www.lexaloffle.com/bbs/?tid=34297 https://www.lexaloffle.com/bbs/?tid=34297 Tue, 21 May 2019 14:43:16 UTC Befunge-93 Interpreter <p> <table><tr><td> <a href="/bbs/?pid=64297#p"> <img src="/bbs/thumbs/pico8_befunge-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=64297#p"> Befunge-93 Interpreter</a><br><br> by <a href="/bbs/?uid=37261"> szczm_</a> <br><br><br> <a href="/bbs/?pid=64297#p"> [Click to Play]</a> </td></tr></table> </p> <p>This is a Befunge-93 interpreter that I made in a few days. Tested on <a href="https://rosettacode.org/wiki/Category:Befunge">all examples from Rosetta Code</a> that fit. You can finally code in an esoteric language inside a fantasy console!</p> <h2>Excuse me, what is Befunge?</h2> <p>Befunge is a <strong>stack-based, esoteric programming language</strong>, in which the code is represented on a <strong>two-dimensional grid</strong>. The control flow of the program is directed using instructions such as <em>v</em>, <em>&gt;</em>, <em>^</em> and <em>&lt;</em> (respectively: down, right, up, left). If a border is reached, the program wraps around (both directions). Single character instructions can pop values of the stack, or place them on top of the stack, and act based on the retrieved values. Read more <a href="http://wikipedia.org/wiki/Befunge">on Wikipedia</a>.</p> <h2>&hellip;what instructions?</h2> <p>Here's <a href="https://en.wikipedia.org/wiki/Befunge#Befunge-93_instruction_list">the list of all instructions explained</a>, also on Wikipedia. There are not many of them, and most are self-explanatory (arrow instructions, arithmetic operators, numbers). Just like with any other language, the more fun you have with it, the more you'll learn!</p> <h2>&hellip;and why should I care?</h2> <p>In my opinion, Befunge really tests (and improves) your logical thinking and flow control skills. This is also a language like no other, in which you can actually visualize the control flow on a grid. Lastly, this is a stack based language, so it teaches you how to operate under a set of limitations (of course, you can just store and read values using <em>g</em> and <em>p</em> instructions, but that's cheating (not really)).</p> <p>Also, you don't have to care if you don't want to! Democracy!</p> <h2>Okay, maybe some examples?</h2> <p>Sure:</p> <h3>Hello World!</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>&quot;!dlrow olleh&quot;,,,,,,,,,,,,@</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>First, <em>&quot;</em> enables string mode; all characters until next <em>&quot;</em> will be pushed into the stack as ASCII values. Then, the string <em>hello world!</em> is pushed onto the stack (values go bottom to top on the stack). Then <em>,</em> prints a single character, so all characters are printed. Finally, <em>@</em> ends the program.</p> <h3>Multiply n numbers together</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>1&amp;&gt;\&amp;*\1-:v ^ _\.@</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>Push 1, then prompt user for n (&amp;, stack: 1 [n]). Swap two top values (\, stack: [n] 1). Prompt user for a number a (stack: [n] 1 [a]), then multiply (*, stack: [n] 1*[a]). Swap values again (stack: 1*[a] [n]), subtract 1 (stack: 1*[a] [n]-1), and if the new value is 0, go right (_), swap values (stack: 0 1*[a]), print number (.) and end the program (@). Otherwise, repeat.</p> <h3>99 Bottles of Beer</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>92+9*07pv,_ $:| &gt; &gt;:^:&lt; &gt; 70g!#@_^ ^:+670+1g70&quot;bottles of beer on&quot;&lt; &gt;&quot;selttob&quot;07g1+067+&quot;,llaw eht &quot;^ ^&quot; of beer&quot;+76&quot;take one down a&quot;&lt; &gt;&quot;lttob&quot;07g0&quot;dnuora ti ssap dn&quot;^ ^&quot;es of beer on the wall!&quot;+76 &lt; vp70.:-1&lt;</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>Sadly, I made this one myself. I'll let you figure this one out. Most important aspects of this code:</p> <ul> <li><em>07p</em> stores the top value in cell (0,7), <em>07g</em> retrieves it</li> <li><em>+67</em> is 6+7=13 == &quot;\r&quot;, carriage return, which is a newline in PICO-8</li> <li>a <em>0</em> is always appended after bottle count, that is to be able to discern if a character or a number should be printed</li> <li>going past grid borders wraps around</li> </ul> <h2>Features:</h2> <ul> <li>Visualization! See the instruction pointer move and wiggle as the code is being executed!</li> <li>Load/save support! And it autosaves when you run! And it apparently also works in the browser!</li> <li>Hints! Find out what a certain instruction does by hovering over it with the cursor!</li> <li>It just works! I'm surprised that it really works, and it works good!</li> <li>You can't copy/paste code in or out! This is a nightmare!</li> <li>Procedural sound! Instructions make little bleeps when they are being executed, and so do your keys! Doesn't seem to work in the browser! Family fun!</li> </ul> <p>If you want to share your code, you can either share a screenshot, or you can copy the save file, which should be in your usual PICO-8 cart location under the name <em>_picofunge_save.p8</em>. Interwebz!</p> <h2>How to use:</h2> <p>All the usual ASCII characters from your keyboard work, so just poke the interpreter in any way you want! </p> <p>Use <strong>arrow keys</strong> to navigate the grid. Use <strong>Backspace</strong> to erase an instruction and go back one cell, or <strong>Space</strong> to go forward.</p> <p>Use <strong>Tab</strong> to quickly run code. You can also use the Tab button as an alternative for Enter in situations where you would normally use the latter, since Enter opens the pause menu.</p> <p>Use <strong>Enter</strong> to enter the pause menu, in which you'll find the following options:</p> <ul> <li><strong>RUN/STOP CODE</strong></li> <li><strong>SAVE</strong></li> <li><strong>CLEAR GRID</strong></li> <li><strong>ENABLE/DISABLE AUTOSAVE</strong></li> <li><strong>ENABLE/DISABLE SOUND</strong></li> </ul> <p>To reload code, restart the cart. There is no LOAD button, since there are only 5 menu items available to me :(</p> <h2>Limitations/known bugs/quirks:</h2> <ul> <li>Backspace button doesn't work in the browser (tested in Firefox)</li> <li>If the <em>p</em> instruction is used to put a nonprintable (value outside of ASCII) character in the grid, the character is displayed in a distinct way as a &quot;glitch&quot;, it is considered data, and is not saved</li> <li>The P key opens up the main menu, which can be sometimes annoying, but is not otherwise a problem</li> <li>The grid is smaller than usual Befunge (it's size is 32 columns and 8 rows)</li> <li>There is currently no support for big numbers, numbers inside the interpreter are normal PICO-8 numbers (so usual things like integer overflow can happen)</li> <li>Small ASCII character codes assumed for letters, since PICO-8 only supports one case.</li> </ul> <h2>Bug reports</h2> <p>If you encounter any bugs or weird behaviour, please let me know either in this thread or on <a href="https://twitter.com/szczm_">Twitter @szczm_</a>. Bonus points for including a screenshot!</p> <h2>Source code, or &quot;how can I make this about me&quot;</h2> <p>If you have any ideas on how you could use this project, the source code is extensively documented &mdash; each function and class is explained and I tried to comment every important bit that needed explanation or description. This cart is released under a CC4-BY-NC-SA licence on this website thanks to an upload option, and this is <a href="https://github.com/szczm/pico8-befunge-interpreter">also released on GitHub</a> under the MIT licence. Basically, do anything you want with it, if you want to, and I'll be happy if you let me know!</p> <h2>Last question &mdash; why?</h2> <p>Please don't ask.</p> https://www.lexaloffle.com/bbs/?tid=34176 https://www.lexaloffle.com/bbs/?tid=34176 Fri, 10 May 2019 16:10:27 UTC