JWinslow23 [Lexaloffle Blog Feed]https://www.lexaloffle.com/bbs/?uid=35014 Apathello <p>Do not worry. It's going to be okay.</p> <p> <table><tr><td> <a href="/bbs/?pid=133216#p"> <img src="/bbs/thumbs/pico8_apathello-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=133216#p"> Apathello</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=133216#p"> [Click to Play]</a> </td></tr></table> </p> <p>Has today been rough? Are you feeling a distinct lack of emotion due to outside factors? Come sit down, relax, and distract yourself for a little. Play games of Othello against this sentient void, who will be here to support you. It will be okay.</p> <p>Made for <a href="https://itch.io/jam/a-game-by-its-cover-2023">A Game By Its Cover 2023</a>. Inspired by <a href="https://twitter.com/lumbud84">Lumbud84</a>'s cover art for <a href="https://famicase.com/23/softs/104">Apathello</a> from the <a href="https://famicase.com/23/">Famicase Exhibition 2023</a>. Developed for PICO-8. Also available on <a href="https://winslowjosiah.itch.io/apathello">itch.io</a>.</p> <h3>Instructions</h3> <ul> <li>Arrow keys: Move cursor, change player difficulty</li> <li>X, V, or M: Start game, place disk</li> <li>Z, C, or N: Advance through dialog boxes</li> </ul> <h3>Version History</h3> <ul> <li>0.9.5 (August 13, 2023) Initial release for AGBIC 2023</li> <li>0.9.6 (August 18, 2023) Added move highlight; skipped opening cutscene if last played &lt;5 days ago</li> <li>0.9.7 (August 19, 2023) Changed color of move highlight; added AI level (or human icon) to results screen</li> </ul> <h3>Planned Features</h3> <ul> <li>My original vision was to have the sentient void talk to you while you play against it. Everything is in place in the cart for this to happen; I simply have to write enough lines of dialogue.</li> <li>It would be nice to include a tutorial option on the cart. I don't know if I have the tokens for it, but this would be nice to have for those unfamiliar with Othello.</li> <li>My brother keeps asking me to have the colors of the disks be changeable. This is a good idea, but I'd have to change a few things about the palette.</li> </ul> https://www.lexaloffle.com/bbs/?tid=53786 https://www.lexaloffle.com/bbs/?tid=53786 Fri, 18 Aug 2023 07:42:21 UTC IDKHOW - From the Gallows <p> <table><tr><td> <a href="/bbs/?pid=88632#p"> <img src="/bbs/thumbs/pico8_hedisusafe-5.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=88632#p"> IDKHOW - From the Gallows</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=88632#p"> [Click to Play]</a> </td></tr></table> </p> <p>A fun PICO-8 cover of the song &quot;From the Gallows&quot; by I DON'T KNOW HOW BUT THEY FOUND ME.</p> <p>It also comes with a simple visualization modeled after the cover of their Razzmatazz album, courtesy of Tellexx.</p> <p>The original song is <a href="https://www.youtube.com/watch?v=bSRbIE8c1HU">here</a>. (Content warning: reference to suicide in the lyrics.)</p> https://www.lexaloffle.com/bbs/?tid=41893 https://www.lexaloffle.com/bbs/?tid=41893 Sun, 07 Mar 2021 06:40:45 UTC Ataxxmas (PICO-8 Advent 2020) <p> <table><tr><td> <a href="/bbs/?pid=85540#p"> <img src="/bbs/thumbs/pico8_ataxxmas-6.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=85540#p"> Ataxxmas</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=85540#p"> [Click to Play]</a> </td></tr></table> </p> <p>Ataxxmas is a Christmas take on a board game no one remembers. Flip the chips to your own color in this exciting up-to-4-player experience! You can even play against AI players...but good luck winning against them. 😉</p> <h3>Controls</h3> <p><strong>ARROW KEYS</strong> to navigate menus/the game board.<br /> <strong>Z/C/N</strong> to select.<br /> <strong>X/V/M</strong> to go back.</p> <p>Made for <a href="https://www.lexaloffle.com/bbs/?tid=40701">PICO-8 Advent Calendar 2020</a>.</p> https://www.lexaloffle.com/bbs/?tid=40835 https://www.lexaloffle.com/bbs/?tid=40835 Fri, 18 Dec 2020 13:59:53 UTC Decimal Floating Point <p>Have you ever wanted to use numbers that were bigger or smaller than the range you're given in PICO-8? Perhaps you want some more digits of precision for the fractional part of your numbers. Or maybe you're interested in doing math in a severely inefficient way...</p> <p>Introducing, the Decimal Floating Point library for PICO-8!</p> <p> <table><tr><td> <a href="/bbs/?pid=81072#p"> <img src="/bbs/thumbs/pico8_wisogipuji-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=81072#p"> Decimal Floating Point Library v1.0.1</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=81072#p"> [Click to Play]</a> </td></tr></table> </p> <p>(This example cart calculates the value of pi in all three &quot;datatypes&quot;, using Vi&egrave;te's formula.)</p> <h3>Wait, what? Doesn't Lua have floating point already?</h3> <p>Not PICO-8's Lua. It actually uses 16.16 fixed point numbers. Because of this lack of floating-point numbers on PICO-8, I decided to make this library to fill that void (not that anyone asked it to be filled, but still).</p> <h3>What <em>are</em> floating point numbers?</h3> <p>Without getting too much into the nitty-gritty, floating point numbers are numbers that are represented in the following form:</p> <p><code>sign * coefficient * (base ^ exponent)</code></p> <p>where <strong>sign</strong> is either 1 or -1, and (in the case of this library) <strong>base</strong> is 10. Floating point numbers are meant to give a trade-off between range and precision.</p> <h3>How do I start using this library?</h3> <p>In order to declare a new float, you can use any one of <strong>df_single()</strong>, <strong>df_double()</strong>, or <strong>df_quad()</strong>. &quot;Single&quot; is the lowest precision available, with 7 significant digits; &quot;double&quot; is the next-lowest precision, with 16 significant digits; and &quot;quad&quot; is the highest precision available, with 34 significant digits.</p> <p>By default, the way to declare floats is by giving the sign, coefficient, and exponent to the constructors in a table. The sign can either be <strong>&quot;+&quot;</strong> or <strong>&quot;-&quot;</strong>, the coefficient is given as a string of decimal digits, and the exponent is a number representing the power of 10 to multiply the coefficient by.</p> <p>For example, to create a single-precision float representing the number 256 (or equivalently, +256 * 10^0):</p> <p><code>df_single({&quot;+&quot;,&quot;256&quot;,0})</code></p> <p>To create a double-precision float representing the number -3.14159 (or equivalently, -314159 * 10^-5):</p> <p><code>df_double({&quot;-&quot;,&quot;314159&quot;,-5})</code></p> <p>To create a quad-precision float representing the number 116.9 billion (or equivalently, 1169 * 10^8):</p> <p><code>df_quad({&quot;+&quot;,&quot;1169&quot;,8})</code></p> <p>Note: this means that a number with trailing zeros can have multiple representations (e.g. <strong>{&quot;+&quot;,&quot;1169&quot;,8}</strong>, <strong>{&quot;+&quot;,&quot;11690&quot;,7}</strong>, or <strong>{&quot;+&quot;,&quot;1169000&quot;,5}</strong>), depending on how many digits of accuracy are given.</p> <p>If you add a dash to the <strong>--[[</strong> comment in tab 2 to uncomment the tab, you can also supply strings (or anything that can be turned into a string with <strong>tostr()</strong>), like these:</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>df_single(&quot;12&quot;) df_double(&quot;-76&quot;) df_single(&quot;+3.14159&quot;) df_quad(&quot;0.003&quot;) df_single(&quot;4e9&quot;) df_double(&quot;0.73e-7&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>If you want to declare a value of Infinity, have the exponent be the string <strong>&quot;inf&quot;</strong> (the coefficient doesn't <em>really</em> matter). If string parsing is enabled, this can also be done by passing the single string <strong>&quot;inf&quot;</strong> or <strong>&quot;infinity&quot;</strong>.<br /> If you want to declare a value of NaN, have the exponent be the string <strong>&quot;qnan&quot;</strong> (if you provide a coefficient, it can be retrieved via the <strong>df_payload()</strong> function). If string parsing is enabled, this can also be done by passing the single string <strong>&quot;nan&quot;</strong>, with optional &quot;payload&quot; digits at the end.<br /> If you want to declare a value of sNaN (&quot;signaling NaN&quot;, which will error out on most arithmetic operations), have the exponent be the string <strong>&quot;snan&quot;</strong> (if you provide a coefficient, it can be retrieved via the <strong>df_payload()</strong> function). If string parsing is enabled, this can also be done by passing the single string <strong>&quot;snan&quot;</strong>, with optional &quot;payload&quot; digits at the end.</p> <h3>How do I display a float?</h3> <p>To convert a float to a string, use <strong>df_tostr(val)</strong>, where <strong>val</strong> is your float.</p> <h3>How do I do mathematical operations to floats?</h3> <p>The following functions return a new float with the value of the result:</p> <p>To add two floats, use <strong>df_add(val1, val2)</strong>.<br /> To subtract two floats, use <strong>df_subtract(val1, val2)</strong>.<br /> To multiply two floats, use <strong>df_multiply(val1, val2)</strong>.<br /> To divide two floats, use <strong>df_divide(val1, val2)</strong>.<br /> To integer-divide two floats, use <strong>df_div(val1, val2)</strong>.<br /> To get the remainder of division of two floats, use <strong>df_mod(val1, val2)</strong>.<br /> To get the integer-quotient and remainder simultaneously, use <strong>df_divmod(val1, val2)</strong>. <em>(Note: this returns two values - the integer-quotient, then the remainder.)</em><br /> To get the integer part of a float, use <strong>df_ipart(val)</strong>.<br /> To get the fractional part of a float, use <strong>df_fpart(val)</strong>.<br /> To reverse a float's sign, use <strong>df_unm(val)</strong>.</p> <p>The following functions return a true or false value depending on the result of the comparison:</p> <p>To check for equality between two floats, use <strong>df_eq(val1, val2)</strong>.<br /> To check if one float is less than another float, use <strong>df_lt(val1, val2)</strong>.<br /> To check if one float is less than or equal to another float, use <strong>df_le(val1, val2)</strong>.</p> <p>Note: floats are represented as tables; thus, in order to copy the value of a float into another variable, the table will need to be cloned by value. Luckily, you can use the included function <strong>clone(tbl)</strong>, which returns a shallow copy of a table, to clone float values as well.</p> <h3>Is there anything else I can do with floats?</h3> <p>Yes, there is!</p> <p>To get the sign of a float, use <strong>df_sign(val)</strong>. <em>(Note: to return 0 for a float representing 0, use <strong>df_sign(val, true)</strong> instead. And yes, this implies that a &quot;negative zero&quot; is a possible value.)</em><br /> To check if a float is a finite number (i.e. not Infinity, NaN, or sNaN), use <strong>df_is_finite(val)</strong>.<br /> To check if a float is either NaN or sNaN, use <strong>df_is_nan(val)</strong>.<br /> To check if a float is sNaN, use <strong>df_is_snan(val)</strong>.<br /> To get the &quot;payload&quot; of a NaN or sNaN, use <strong>df_payload(val)</strong>. <em>(Note: returns <strong>nil</strong> if the number is not a NaN or sNaN; returns <strong>&quot;0&quot;</strong> if no payload has been provided.)</em><br /> To round a float to <strong>p</strong> significant digits, use <strong>df_round(val, p)</strong>. <em>(Note: omit the <strong>p</strong> argument to round it to the given precision for the number.)</em><br /> To convert a float to a string, use <strong>df_tostr(val)</strong>.</p> <p>If you add a dash to the <strong>--[[</strong> comment in tab 1 to uncomment the tab, the following functions become available:</p> <p>To convert a float to a table of byte values (4 for single-precision, 8 for double-precision, and 16 for quad-precision), use <strong>df_tobytes(val)</strong>.<br /> To convert a table of byte values to a float, use <strong>df_from(bytes)</strong>. <em>(Note: the table will be assumed to contain the proper amount of bytes for the desired float precision: 4 for single-precision, 8 for double-precision, and 16 for quad-precision.)</em></p> <h3>I have a question/comment that isn't addressed here!</h3> <p>Good! Reply to this post to tell me about it (or tell me in the Discord server, my tag is JWinslow23#6531).</p> <h3>How are you going to end this post?</h3> <p>I...um...<br /> ...shoot...I didn't think of that...I'm <em>terrible</em> at ending forum posts...</p> <h3>Version History</h3> <p><strong>v1.0.1</strong> (August 25, 2020)</p> <ul> <li>Token optimizations, fixed bug when dividing by infinity</li> </ul> <p><strong>v1.0</strong> (August 23, 2020)</p> <ul> <li>Initial release</li> </ul> https://www.lexaloffle.com/bbs/?tid=39319 https://www.lexaloffle.com/bbs/?tid=39319 Sun, 23 Aug 2020 06:04:54 UTC You Have To Burn The Rope <p> <table><tr><td> <a href="/bbs/?pid=77892#p"> <img src="/bbs/thumbs/pico8_burntherope-2.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=77892#p"> You Have To Burn The Rope</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=77892#p"> [Click to Play]</a> </td></tr></table> </p> <p>PICO-8 games are getting so hard these days...</p> <p>This is a port of a Flash game from <a href="https://mazapan.se">Kian Bashiri</a> called &quot;You Have To Burn The Rope&quot;. It's a really hard game. You have to burn the rope there.</p> <p>Here's a pretty apt description of the game, according to its original programmer:</p> <p><code>You Have To Burn The Rope is, by formal definitions, a game since it has all the things that make up a game - besides losing condition which I regret not adding - but I wouldn't call it a game since it is hardly interactive in any meaningful way. The point was to make fun of other games that limit the player's interaction by being easy, linear, or heavily controlled and jokingly ask at which point these games also cease to be games.</code></p> <p>If at any point you are stuck, I suggest that you <a href="http://mazapan.se/YouHaveToBurnTheRopeManual/">check out the enclosed instruction book</a>.</p> <h2>Version History</h2> <ul> <li><strong>v1.0.1 (June 12, 2020)</strong><br /> Added timer (activated by pressing Z/C/N at the title screen)</li> <li><strong>v1.0 (June 11, 2020)</strong><br /> Initial release</li> </ul> https://www.lexaloffle.com/bbs/?tid=38366 https://www.lexaloffle.com/bbs/?tid=38366 Wed, 10 Jun 2020 11:32:23 UTC You Have To Burn The Rope demo <p> <table><tr><td> <a href="/bbs/?pid=77753#p"> <img src="/bbs/thumbs/pico8_hemegayezo-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=77753#p"> You Have To Burn The Rope demo</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=77753#p"> [Click to Play]</a> </td></tr></table> </p> <p>PICO-8 games are getting <em>so</em> hard these days...</p> <p>This is a demo of an upcoming port of a Flash game called You Have To Burn The Rope. (I say &quot;demo&quot;, but it's only missing the ending cinematic.) The game, according to <a href="http://mazapan.se/games/burnTheRope.php">its original creator</a>, was made &quot;to make fun of other games that limit the player's interaction by being easy, linear, or heavily controlled and jokingly ask at which point these games also cease to be games.&quot;</p> <p>It's a really hard game. You have to burn the rope there.</p> https://www.lexaloffle.com/bbs/?tid=38320 https://www.lexaloffle.com/bbs/?tid=38320 Sun, 07 Jun 2020 02:50:27 UTC Snow Plower (PICO-8 Advent 2019) <p> <table><tr><td> <a href="/bbs/?pid=70847#p"> <img src="/bbs/thumbs/pico8_snowplower-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=70847#p"> Snow Plower</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=70847#p"> [Click to Play]</a> </td></tr></table> </p> <p>It's Christmas Day, and you're the only one working the snowplow today. Can you clear out all the snow?</p> <h3>Controls</h3> <p><strong>ARROW KEYS</strong> to move your snowplow.<br /> <strong>Z/C/N</strong> to select things in menus.<br /> <strong>X/V/M</strong> to go back.<br /> Hold <strong>X/V/M</strong> on the title screen to erase your progress (don't worry, you probably won't do it by accident!).</p> <p>There are 100 levels to complete. Can you clear them all before seasonal depression kicks in?</p> <p>Made for <a href="https://www.lexaloffle.com/bbs/?pid=70441#p">PICO-8 Advent Calendar 2019</a>.</p> https://www.lexaloffle.com/bbs/?tid=36211 https://www.lexaloffle.com/bbs/?tid=36211 Tue, 10 Dec 2019 16:26:03 UTC Egypt <p> <table><tr><td> <a href="/bbs/?pid=66935#p"> <img src="/bbs/thumbs/pico8_egypt-3.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=66935#p"> Egypt</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=66935#p"> [Click to Play]</a> </td></tr></table> </p> <h1>Description</h1> <p>Welcome to the mystical land of Ancient Egypt! One day, you find yourself lost within a mysterious temple, when you come across a goddess incarnated as a jewel. Your job is to restore the goddess's power by breaking the seals found throughout the temple.</p> <p>To break a seal, you must match together all of the idols within it. This is done by moving your jewel onto arrow tiles, which shift your row or column in the given direction (and the idols along with it). Once you match up all the idols in a level, the game is over.</p> <h1>Controls</h1> <ul> <li>D-PAD: Moves your jewel UP, DOWN, LEFT, or RIGHT.</li> <li>Z/C/N: Lets you choose a magic spell to use. Use LEFT and RIGHT to choose between them, and X/V/M to confirm. Use Z/C/N to go back.</li> <li>X/V/M: Lets you enter a level on the world map.</li> <li>P/Enter: Pauses the game. On the world map, this tells you a password (just in case!). In a level, this gives you the options to restart the level or give up.</li> </ul> <h1>Version History</h1> <ul> <li><strong>v1.02</strong> (March 30th, 2020)<br /> Fixed password length restriction</li> <li><strong>v1.01</strong> (August 25th, 2019)<br /> Fixed some debug code</li> <li><strong>v1.0</strong> (August 25th, 2019)<br /> Initial release for GBJAM 7</li> </ul> https://www.lexaloffle.com/bbs/?tid=35177 https://www.lexaloffle.com/bbs/?tid=35177 Sun, 25 Aug 2019 09:01:18 UTC Super Mario Bros PICO-8 (in progress) <p> <table><tr><td> <a href="/bbs/?pid=66661#p"> <img src="/bbs/thumbs/pico8_sudaduzafa-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=66661#p"> Super Mario Bros WIP</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=66661#p"> [Click to Play]</a> </td></tr></table> </p> <p>I am undertaking a project to port Super Mario Bros to the PICO-8! (Yes, I know <a href="https://www.lexaloffle.com/bbs/?tid=28942">a few people</a> <a href="https://www.lexaloffle.com/bbs/?tid=31744">have tried to</a> <a href="https://www.lexaloffle.com/bbs/?tid=28754">do this before</a>, but this one is <em>mine</em>, so I want to make it extra special, and extra accurate.)</p> <p>So far, I've gotten the level renderer to work (almost! missing a few items and functionalities, but the general idea is here). It takes hex data just like you'd see in the original game, and renders it exactly like the game would. I give an example of World 1-1 here, but I've tested this with the entirety of the first two worlds and a few of the bonus areas. If anyone has any questions about this project, please let me know!</p> https://www.lexaloffle.com/bbs/?tid=35070 https://www.lexaloffle.com/bbs/?tid=35070 Wed, 14 Aug 2019 00:26:01 UTC Cryptograms! <p> <table><tr><td> <a href="/bbs/?pid=65421#p"> <img src="/bbs/thumbs/pico8_cryptograms-3.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=65421#p"> Cryptograms! v1.0.1.1</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=65421#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Description</h2> <p>Uh-oh! After browsing the quotes from your favorite book, you discover that all the letters have been jumbled up and replaced with random other letters! Your mission is to reconstruct the text of all 100 of your quotes using only your knowledge of the English language.</p> <h2>Controls</h2> <p>Use the arrow keys to navigate the letters on the board.<br /> Hold X and use the arrow keys to fill in a guess for a letter. You are not penalized for wrong guesses.<br /> Press Z to erase a guess for a letter.</p> <h2>Version History</h2> <ul> <li><strong>v1.0.1.1</strong> (October 16, 2019)<br /> Corrected a small typo in one of the quotes</li> <li><strong>v1.0.1</strong> (June 29, 2019)<br /> Made the cryptogram text static, as opposed to bobbing up and down</li> <li><strong>v1.0</strong> (June 27, 2019)<br /> Initial release</li> </ul> https://www.lexaloffle.com/bbs/?tid=34589 https://www.lexaloffle.com/bbs/?tid=34589 Thu, 27 Jun 2019 12:10:30 UTC Fully-featured scaled text function! <p> <table><tr><td> <a href="/bbs/?pid=65232#p"> <img src="/bbs/thumbs/pico8_menojumagu-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=65232#p"> menojumagu</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=65232#p"> [Click to Play]</a> </td></tr></table> </p> <p>Scaled text without any lost cartridge/screen data? At last we have it, and to that I say:</p> <p> <iframe src="sfxp.php?id=35014_1" width="769" height="97" style="border:none; overflow:hidden"></iframe><a style="cursor:pointer; font-size:8pt" onclick=' var el = document.getElementById("sfxcode_35014_1"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("/bbs/sfxc/35014_1.txt", function (retdata){ var el = document.getElementById("sfxcode_35014_1"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [sfx] </a> <textarea rows=3 class=lexinput id="sfxcode_35014_1" style="width:480px;background-color:#fed;display:none;overflow:hidden; font-size:4pt;"></textarea> </p> <p>Everything you need to start scaling your text is in tab 0 of this cart. If you don't feel like looking at the cart, just copy-paste these fully-commented, fully-optimized routines you see here:</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 mcpy(dest,src) --because poke4() is so --relatively fast, it actually --outperforms memcpy(). the --print_big() function abuses --this very much. for i=0,319,4 do poke4(dest+i,peek4(src+i)) end end function print_big(text,x,y,col,factor) --set aside the palette values --of black and &quot;col&quot; for later --somewhere in user ram poke(0x4580,peek(0x5f00+col)) poke2(0x4581,peek2(0x5f00)) --oh yeah, same with camera poke4(0x4583,peek4(0x5f28)) --and fillp poke2(0x4587,peek2(0x5f31)) poke(0x4589,peek(0x5f33)) --set &quot;col&quot; color to &quot;col&quot; --&amp; &quot;col&quot; transparency to off poke(0x5f00+col,col) --if &quot;col&quot; is black, then we --will instead draw black text --on a dark blue background. --so if &quot;col&quot; is black, then --dark blue is transparent and --black is not transparent. --but if &quot;col&quot; is not black, --vice versa. poke2(0x5f00,col==0 and 0x1100 or 0x0110) --copy the first 5 scanlines --of the spritesheet to yet --another place in user ram mcpy(0x4440,0x0) --copy the first 5 scanlines --of the screen to that part --of the spritesheet we just --backed up mcpy(0x0,0x6000) --print the text normally over --the background of the right --color (black or dark blue) camera() fillp(0) rectfill(0,0,127,4,(16-peek(0x5f00))*0x0.1) print(text,0,0,col) --copy the first 5 scanlines --of this text to still --another place in user ram mcpy(0x4300,0x6000) --copy the spritesheet screen --backup back to the screen mcpy(0x6000,0x0) --now the screen is intact. --copy the text to the first 5 --scanlines of the spritesheet mcpy(0x0,0x4300) --display the text at the --desired scale camera(peek2(0x4583),peek2(0x4585)) sspr(0,0,128,5,x,y,128*factor,5*factor) --copy the userram spritesheet --backup back to the sheet mcpy(0x0,0x4440) --restore our backups of the --previous palette values poke(0x5f00+col,peek(0x4580)) poke2(0x5f00,peek2(0x4581)) fillp(peek2(0x4587)+peek(0x4589)*0x.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> https://www.lexaloffle.com/bbs/?tid=34528 https://www.lexaloffle.com/bbs/?tid=34528 Sun, 16 Jun 2019 17:02:39 UTC DESCENT - days 1-4 <p> <table><tr><td> <a href="/bbs/?pid=64500#p"> <img src="/bbs/thumbs/pico8_zohakirobe-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=64500#p"> DESCENT v0.0.1</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=64500#p"> [Click to Play]</a> </td></tr></table> </p> <p>&quot;I'm sick of this guy always doing ports. Why can't he make his own game for once?&quot; - snarky PICO-8 player who is somewhat familiar with my current library of games</p> <p>First off, <a href="https://www.lexaloffle.com/bbs/?tid=33306">Wal-Rush!</a> was original.</p> <p>Second off, I'm beginning progress on an original game called DESCENT! It's based on a game of the same name that I made for the TI-84+ and TI-84+ CE back in 2017. Only, instead of delivering boxes, in this game you're slowly becoming insane.</p> <p>I've implemented almost every mechanic I plan to use in the game, and I've made 4 stages with basic demonstrations of the first few of them. (There are ways to get stuck in these stages, and I don't have a restart-stage function yet. If you get stuck, you'll have to reset the cart. Sorry!)</p> https://www.lexaloffle.com/bbs/?tid=34244 https://www.lexaloffle.com/bbs/?tid=34244 Fri, 17 May 2019 08:43:17 UTC Achievement Unlocked! <p> <table><tr><td> <a href="/bbs/?pid=64184#p"> <img src="/bbs/thumbs/pico8_unlocked1-2.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=64184#p"> Achievement Unlocked v1.02</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=64184#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Description</h2> <p>Who needs gameplay when you have ACHIEVEMENTS? Don't worry about beating levels, finding ways to kill enemies, or beating the final boss...there are none. Focus solely on your ultimate destiny...doing random tasks that have nothing to do with anything. Metagame yourself with ease! Self-satisfaction never felt so...artificial!</p> <h2>Controls</h2> <p>Use the arrow keys...if you dare.</p> <h2>Version History</h2> <ul> <li><strong>v1.02</strong> (May 17, 2019)<br /> Fixed a bug with the 0th achievement description, and with holding UP immediately upon starting</li> <li><strong>v1.01</strong> (May 6, 2019)<br /> Made some important secrets even more secret</li> <li><strong>v1.0</strong> (May 5, 2019)<br /> Initial release</li> </ul> https://www.lexaloffle.com/bbs/?tid=34138 https://www.lexaloffle.com/bbs/?tid=34138 Sun, 05 May 2019 11:25:03 UTC Custom Font Scroller <p>I haven't released a cart since I last released a cart. Let's change that, shall we?</p> <p> <table><tr><td> <a href="/bbs/?pid=63994#p"> <img src="/bbs/thumbs/pico8_fiporadozi-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=63994#p"> Custom Font Scroller - example</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=63994#p"> [Click to Play]</a> </td></tr></table> </p> <p>This time, it's a curiosity. I wanted to make a custom font, and so I did. The routines for rendering it do not require the use of the spritesheet (though the glyphs are all in there, for my own benefit while creating this cart).</p> <p>I've set this up as a demoscene-like or cracktro-like scroller, demonstrating the different glyphs of this font. It's based on the font on the cover of Panic! at the Disco's album &quot;Pray for the Wicked&quot;. I hope to use this font (and this song!) in a P!ATD-related demo cart.</p> <p>In the meantime, you should try out this font somewhere! Tab 2 in the code gives all the details on using it ;) .</p> https://www.lexaloffle.com/bbs/?tid=34059 https://www.lexaloffle.com/bbs/?tid=34059 Sat, 27 Apr 2019 04:09:59 UTC Magic Bubble <p> <table><tr><td> <a href="/bbs/?pid=62908#p"> <img src="/bbs/thumbs/pico8_magic_bubble-5.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=62908#p"> Magic Bubble v1.2.1.1</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=62908#p"> [Click to Play]</a> </td></tr></table> </p> <p>Based on <a href="https://www.youtube.com/watch?v=r2Je-7zo6ng">one of the most controversial games for the NES</a> (warning: NSFW), Jayson Lowis Harwin (i.e. me) brings you: Magic Bubble!</p> <h2>Description</h2> <p>Playing &quot;Magic Bubble&quot; is easy. Bubbles of many colors come floating upward. You must fit the Bubble Clusters together so four or more Bubbles of the same color touch one another. When four or more of the same colored bubbles press together, the pressure inside the Bubbles increases causing them to pop.</p> <p>Keep the bubbles bursting since in every space a Bubble gets stuck there is one less place to put the next Bubble Cluster, and they just keep coming. If you can't pop the Bubbles fast enough, the cave fulls up, and the game will end.</p> <p>It sounds easy, right? Get read to enjoy all 24 mind-blowing stages of bubble popping excitement!</p> <h2>Controls</h2> <ul> <li>D-PAD: Moves the rising Bubble Cluster RIGHT or LEFT, and controls how fast the Bubble Cluster floats up. Pushing DOWN will release a Magic Bubble (see below).</li> <li>Z/C/N: Turns the Bubble Cluster around horizontally (turns left to right).</li> <li>X/V/M: Flips the Bubble Cluster vertically (rotates upside down).</li> </ul> <h3>Air Pockets</h3> <p>Air Pockets are formed in the empty spaces between Bubbles that don't fit perfectly. One misplaced bubble can cause many Air Pockets, and Air Pockets take up as much space as Bubbles. One way to get rid of Air Pockets is to remove all the Bubbles below it and expose the Air Pocket to open water. When this is done the Air Pocket will dissolve.</p> <p>If you're not careful Air Pockets will fill the screen faster than Bubble Clusters. Luckily, you can slide Bubbles into Air Pockets. When you pop the Bubbles you will also get rid of the Air Pockets.</p> <h3>Mystic Pearl</h3> <p>Sometimes during game play a Mystic Pearl will be part of a Bubble Cluster. The glow of the Mystic Pearl has magical powers and will change the color of the Bubbles around it to a single color.</p> <p>Try to maneuver the Bubble Cluster so when the energies of the Mystic Pearl are released it will affect as many Bubbles as possible.</p> <p>Plan the position of the Mystic Pearl carefully. The number of Bubbles popped can increase or decrease depending on the color the surrounding Bubbles change to.</p> <h3>Magic Bubbles</h3> <p>Every time you pop a Letter Bubble the letter will be placed in the Magic Window at the top of the screen. After you have collected all the letters needed to spell the word MAGIC, you will receive 1 Magic Bubble. To release a Magic Bubble hold down on the D-Pad.</p> <p>When a Magic Bubble is released it will float motionless at the bottom of the screen until the Bubble Cluster has settled.</p> <p>The first thing a Magic Bubble does is remove all Air Pockets. This will cause all Bubbles to settle and should cause some Bubbles to pop. The remaining Bubbles will begin to pulsate with energy and change colors. If you're lucky this will cause even more Bubbles to pop.</p> <p>There is no indication on screen for Magic Bubbles. It's up to you to remember how many you have collected.</p> <h2>Easter Egg</h2> <p>Only do this if you are 18 or older (I'm serious).<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 /> Pause on the title screen. You'll see a menu item labelled &quot;CENSOR OFF&quot;. Choosing this item disables the censoring, and unlocks some very interesting cutscenes...<br /> </div></div></div></p> <h2>Version History</h2> <p><strong>v1.2.1.1 | 2021/9/4</strong></p> <ul> <li>Removed the cutscene code, because somehow <strong>menuitem</strong> doesn't behave like it did anymore</li> </ul> <p><strong>v1.2.1 | 2019/3/27</strong></p> <ul> <li>Fixed a glitch where finishing the game can trap you at the high score screen</li> </ul> <p><strong>v1.2 | 2019/3/26</strong></p> <ul> <li>Added the Mystic Pearl</li> </ul> <p><strong>v1.1 | 2019/3/21</strong></p> <ul> <li>Added cutscenes, for those man enough to find them</li> </ul> <p><strong>v1.0 | 2019/3/20</strong></p> <ul> <li>Initial release</li> </ul> https://www.lexaloffle.com/bbs/?tid=33673 https://www.lexaloffle.com/bbs/?tid=33673 Wed, 20 Mar 2019 08:38:57 UTC PICO-Book: &quot;The Black Cat&quot; by Edgar Allan Poe <p> <table><tr><td> <a href="/bbs/?pid=62685#p"> <img src="/bbs/thumbs/pico8_ebook_blackcat-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=62685#p"> PICO-Book: &quot;The Black Cat&quot;</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=62685#p"> [Click to Play]</a> </td></tr></table> </p> <p>Introducing the first ever fully-featured e-book reader for the PICO-8!</p> <p>I decided to include Poe's &quot;The Black Cat&quot; as an example story, mostly because it almost perfectly fits within the length requirements of this e-book engine (this story happens to be 21747 characters long uncompressed).</p> <p>The text of the story is not stored as strings within the program, but it is encoded with Huffman coding in the bytes of the spritesheet and map. This is a more complete version of <a href="https://www.lexaloffle.com/bbs/?tid=33565">this project</a>, so look at the details of that to learn more.</p> <p>One thing I added here is the ability to save your progress through resets, and also add one bookmark that you can set and jump to anytime, with the X and O buttons respectively.</p> <p>Let me know what you think!</p> https://www.lexaloffle.com/bbs/?tid=33573 https://www.lexaloffle.com/bbs/?tid=33573 Fri, 08 Mar 2019 12:08:06 UTC Moby Dick e-book demo <p>Compression seems to be <a href="https://www.lexaloffle.com/bbs/?tid=33460">a thing I've</a> <a href="https://www.lexaloffle.com/bbs/?tid=33509">been doing recently</a>. Continuing this tradition, I am releasing an (only partially done) e-book reader for the PICO-8, with the first two chapters of Moby Dick! (It's also got some of the third one, too.)</p> <p> <table><tr><td> <a href="/bbs/?pid=62673#p"> <img src="/bbs/thumbs/pico8_wejinezono-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=62673#p"> Moby Dick - e-book reader</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=62673#p"> [Click to Play]</a> </td></tr></table> </p> <p>Some things to note:</p> <ul> <li> <p>Text is stored in the graphics, map, and sprite property data, as Huffman-coded bytes.</p> </li> <li> <p>The text is divided up into sections that encode up to 6351 characters each (the length of user RAM <em>minus</em> one screen's worth of characters). These sections are byte-aligned.</p> </li> <li> <p>With Huffman coding, each character of the source text is basically replaced with a variable-length bit sequence (one that is sure to never be a substring of any other), with the bit sequences getting shorter the more frequent a character is.</p> </li> <li> <p>I tried to design this in a general way, such that anyone who knows how (i.e. me) can change the aesthetics, or the parameters for decoding the book, by changing a few values in the first few lines of the code.</p> </li> <li>Currently, the encoded data is only stored in the first 12544 bytes of RAM. In theory, filling the music and SFX with compressed data could add over 8000 characters to the book. I will leave this, however, as an exercise for another day.</li> </ul> <p>If I can find some sort of book that fits within the ~22000 characters that this e-book reader can hold, I will release an official PICO-8 cartridge of that book (and possibly add some new features, like page-by-page scrolling and bookmark-saving!). Please alert me of any books that might fit this limit!</p> <p>Thanks to @Scylus on the PICO-8 Discord for providing me with a way to generate and interpret the dictionaries.</p> https://www.lexaloffle.com/bbs/?tid=33565 https://www.lexaloffle.com/bbs/?tid=33565 Fri, 08 Mar 2019 05:58:16 UTC 4-color video demo <p>I've been experimenting with video compression lately, so here's a demo of a 4-color video.</p> <p> <table><tr><td> <a href="/bbs/?pid=62498#p"> <img src="/bbs/thumbs/pico8_fisazameso-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=62498#p"> B**** Lasagna</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=62498#p"> [Click to Play]</a> </td></tr></table> </p> https://www.lexaloffle.com/bbs/?tid=33509 https://www.lexaloffle.com/bbs/?tid=33509 Mon, 04 Mar 2019 02:41:13 UTC Bad Apple (with sound) <p> <table><tr><td> <a href="/bbs/?pid=62417#p"> <img src="/bbs/thumbs/pico8_badapple_sound-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=62417#p"> Bad Apple (with sound)</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=62417#p"> [Click to Play]</a> </td></tr></table> </p> <p>This was originally supposed to be an engine for animating a splash screen with as little cartridge storage as possible. As it turns out, it's not too difficult to make a good-looking smooth animation, as long as it's not too long. However, the music video for &quot;Bad Apple&quot; is <strong>not</strong> not too long.</p> <p>In order to fit the entire animation, I had to render it at 3.75 FPS, and make it 16*16 pixels...but hey, it fits on a PICO-8 cartridge, so why not?</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;">If any of you are interested in the splash-screen engine, I can fine-tune and release that here.</div></div></div></p> https://www.lexaloffle.com/bbs/?tid=33460 https://www.lexaloffle.com/bbs/?tid=33460 Sat, 02 Mar 2019 18:10:22 UTC This is the Only Level <p> <table><tr><td> <a href="/bbs/?pid=62346#p"> <img src="/bbs/thumbs/pico8_titol1-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=62346#p"> This is the Only Level</a><br><br> by <a href="/bbs/?uid=35014"> JWinslow23</a> <br><br><br> <a href="/bbs/?pid=62346#p"> [Click to Play]</a> </td></tr></table> </p> <p>(Note: this cart uses devkit mode, so be sure you can attach a mouse to your PICO-8!)</p> <h2>Description</h2> <p>The elephant forgot the rest of the levels, but luckily he still has one left! Help him beat it in all his metagaming glory. Use your keen knowledge of gaming and dexterity to manhandle your way through a variety of challenges. Get your mind out of the box for once! Take it outside for a walk, or maybe grab a bite to eat with it.</p> <p>Oh, and beat the level. There's only one.</p> <h2>Controls</h2> <p>Arrow keys, but I am told not to tell you any more than that. The elephant says so.</p> <h3>Response from jmtb02 (who made the original)</h3> <p><a href="https://twitter.com/jmtb02/status/1101572654799060992">&quot;holy shit&quot;</a><br /> <a href="https://twitter.com/jmtb02/status/1101572779462148097">&quot;THIS IS EVERYTHING&quot;</a><br /> <a href="https://twitter.com/jmtb02/status/1101893449400217600">&quot;Thanks for doing these, each time you share one of these with me it brings me so much joy&quot;</a></p> https://www.lexaloffle.com/bbs/?tid=33431 https://www.lexaloffle.com/bbs/?tid=33431 Fri, 01 Mar 2019 08:39:07 UTC