BoneVolt [Lexaloffle Blog Feed] Assignment Bugs <p>Here are 3 bugs related to assignment operations:</p> <img style="" border=0 src="/media/38130/bugs_to_report_0.gif" alt="" /> <p>The result for the operation above should always be &lt;0, but when using <strong>rnd&quot;1&quot;</strong> this is not the case. Using <strong>rnd(1)</strong> works as intended.</p> <img style="" border=0 src="/media/38130/bugs_to_report_1.gif" alt="" /> <p>In this code, the sum of tab[1] and tab[2] should always be 4, but it's not always the case. Using <strong>rnd(2)</strong> instead of <strong>rnd&quot;2&quot;</strong> doesn't fix the issue in this case, you have to make a separate assignment for the table index. <strong>tab[rnd({1,2})]+=1</strong> doesn't work correctly either.</p> <img style="" border=0 src="/media/38130/bugs_to_report_2.gif" alt="" /> <p>Here rnd&quot;2&quot; is read as a function, as if the code was just <strong>a+=3-rnd</strong>. Using <strong>rnd(2)</strong> fixes it.</p> Mon, 28 Dec 2020 15:53:05 UTC Pixelart Tutorial Sprite Sheet <p> <table><tr><td> <a href="/bbs/?pid=83161#p"> <img src="/bbs/thumbs/pico8_pixelart_tutorial_sheet-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=83161#p"> Pixelart Tutorial Sprite Sheet</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=83161#p"> [Click to Play]</a> </td></tr></table> </p> <p>This is the sprite sheet used in my pixel art tutorial. You can use it as reference in your pixel art studies :)</p> <p>Alternatively, here's the png version:</p> <img style="" border=0 src="/media/38130/sht.png" alt="" /> <p>Video in question:<br /> <object width="640" height="400"><param name="movie" value=""></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="400"></embed></object></p> Tue, 20 Oct 2020 14:44:31 UTC Painto-8 Lite <p> <table><tr><td> <a href="/bbs/?pid=82916#p"> <img src="/bbs/thumbs/pico8_painto_8_lite-2.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=82916#p"> Painto-8 Lite</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=82916#p"> [Click to Play]</a> </td></tr></table> </p> <p>Have you ever wanted to edit the screen palette of your carts on the fly? Now you can!</p> <p>Using the secret palette can be hard because you need to go back and forth between the sprite editor and code, and you can't look at which color you're selecting.</p> <p>Painto-8 Lite enables you to change the palette of your games during gameplay (at the cost of 407 tokens), making the process a lot easier!</p> <img style="" border=0 src="/media/38130/mj_0.gif" alt="" /> <h3>Step 1</h3> <p>Copy the code from this cart to the cart of your choice. You have to copy everything below line #40. Paste at the end of your code, preferably in a separate tab.</p> <h3>Step 2</h3> <p>Run your cart. Right-click anywhere on the screen to open the palette selector. Select a color in the first row, and change it by clicking on a color in the second row. You can swap between the normal and hidden palettes on the &quot;pal&quot; tabs.</p> <h3>Step 3</h3> <p>Painto-8 Lite automatically saves your new palette in the clipboard. Go to the end of your <strong>_DRAW()</strong> function and paste your new palette there to make it permanent. You can also edit your sprites in the sprite tab with the new colors.</p> <h3>Step 4</h3> <p>Once you're done using Painto-8 Lite, erase the code injected in step 1!</p> <p>Let me know if this is useful for you! :)</p> Wed, 14 Oct 2020 01:24:42 UTC Crowded Dungeon Crawler <p> <table><tr><td> <a href="/bbs/?pid=82720#p"> <img src="/bbs/thumbs/pico8_crowded_dungeon_crawler-2.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=82720#p"> Crowded Dungeon Crawler</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=82720#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Controller/Keyboard</h2> <img style="" border=0 src="/media/38130/controls_keyboard_x3.gif" alt="" /> <h2>Mouse and Keyboard</h2> <img style="" border=0 src="/media/38130/controls_mouse_x3.gif" alt="" /> <h2>Gameplay</h2> <p>Crowded Dungeon Crawler is a mix of puzzle and dungeon crawler. Your goal is to defeat enough enemies to open the door to the next level.</p> <img style="" border=0 src="/media/38130/instructions_x3.png" alt="" /> <ul> <li>The <strong>TIME</strong> bar depletes as you play. Once it's empty it's game over. Attacking enemies and buying items will stop time for a few seconds.</li> <li>Melee items require <strong>HP</strong> to be used. When attacking multiple enemies, only the strongest one in the group will damage you.</li> <li>Magic items require <strong>MANA</strong>. Each item has a specific mana cost. If you don't have enough mana to cast an ability, you can hold the attack button to convert <strong>TIME</strong> into <strong>MANA</strong>.</li> <li>You can have up to 7 items in your <strong>INVENTORY</strong>. If you pick up more than that, you will drop the currently equipped item on the ground.</li> <li>Defeat enough enemies to open the <strong>EXIT</strong>. If you clear <strong>ALL</strong> enemies you will receive an additional reward.</li> </ul> <h1>Pause Menu</h1> <p>The pause menu has some special options:</p> <img style="" border=0 src="/media/38130/Sprite-0005.png" alt="" /> <ul> <li>If you don't have any plays left, select <strong>RESTART LEVEL</strong> to try again.</li> <li>Select <strong>REPLAY PUZZLES</strong> to play previous puzzles in which you didn't collect the golden gem.</li> <li><strong>CLEAR PROGRESS</strong> will restart the game from the beginning but keep your scores.</li> <li><strong>CLEAR SCORE</strong> will erase your scores but keep your progress on the puzzles.</li> <li>You can't interact with the pause menu with the mouse, only with the keyboard or controller.</li> </ul> <h2>Puzzle Levels</h2> <p>Each world consists of 7 puzzles and a sequence of random levels at the end. In puzzle levels, you have to defeat enough enemies before running out of resources. If you don't have any more health, mana, or items to use, pause the game and select <strong>RESTART LEVEL</strong>.</p> <img style="" border=0 src="/media/38130/crowded_2 (3).gif" alt="" /> <p>Puzzle levels have some specific rules:</p> <ul> <li>In puzzle mode, your <strong>TIME</strong> bar doesn't deplete unless you use a magic item to convert time into mana.</li> <li>Clearing all enemies will give you a <strong>GOLDEN GEM</strong>. Golden gems are used to unlock playable classes.</li> </ul> <h2>Adventure Mode</h2> <p>In world 6 there are no puzzle levels. Instead, you can play with different classes in an endless sequence of levels for high scores. It only ends when you run out of time.</p> <img style="" border=0 src="/media/38130/crowded_4 (2).gif" alt="" /> <ul> <li>Clearing all enemies gives you a <strong>RED GEM</strong>. Red gems can be used at special shops for unique items. If you keep them, they count as much as 100 coins!</li> <li>Each class has its own score counter. Try to see how far you can go with each one!</li> <li>Every 3 levels the dungeon type changes. You can see what's the next type on the <strong>STAIRS</strong>!</li> <li>Destroy the <strong>GOLDEN IDOL</strong> to double your score! Defeating the golden idol ends your run. Try to defeat it only when you think you can't go any further!</li> <li>After each level, some of your resources (HP, mana and items) will be refilled according to your class.</li> </ul> <h2>Items and Enemies</h2> <p>You should be able to figure out the item and enemy mechanics on your own. In case you get stuck here is some additional information. <strong>SPOILERS!</strong></p> <p><a href="">Enemy Table</a></p> <p><a href="">Item Table</a> </p> <h2>Credits</h2> <p>BoneVolt - Design, Programming, Graphics and SFX<br /> Jamaass - Music and Quality Assurance<br /> Special thanks to our <a href="">Discord</a> server for additional testing, feedback and support!</p> Thu, 08 Oct 2020 23:16:27 UTC Stuck in the Sewers <p> <table><tr><td> <a href="/bbs/?pid=82595#p"> <img src="/bbs/thumbs/pico8_stuck_in_the_sewers-6.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=82595#p"> Stuck in the Sewers</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=82595#p"> [Click to Play]</a> </td></tr></table> </p> <p>Mr. Mouse wants to go to the beach in his vacation, but got stuck in a maze of pipes.<br /> Help him find the exit!</p> <p>New version with speedrunning stats and with 2 new unlockable characters, which have different gameplay rules: Mademouselle and Mousefredini.</p> <p>Little puzzle game we made for Ludum Dare.</p> <p>Julio Maass - Concept, Level Design, Music/SFX, Programming, Additional art<br /> Bonevolt - Art, VFX programming, Story/Character design</p> Mon, 05 Oct 2020 14:09:33 UTC Scrap Boy <p> <table><tr><td> <a href="/bbs/?pid=82518#p"> <img src="/bbs/thumbs/pico8_scrap_boy-4.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=82518#p"> Scrap Boy</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=82518#p"> [Click to Play]</a> </td></tr></table> </p> <p>This is the new version of Scrap Boy, with different mechanics from the jam version.</p> <p>Featuring 3 levels, 6 weapons, 3 difficulties, collectibles and a time attack mode!</p> <p>(you can swap X and O in the pause menu if needed)</p> Fri, 02 Oct 2020 21:55:03 UTC RGB Zero <p> <table><tr><td> <a href="/bbs/?pid=81722#p"> <img src="/bbs/thumbs/pico8_rgbzero-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=81722#p"> RGB Zero LDJam</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=81722#p"> [Click to Play]</a> </td></tr></table> </p> <p>RGB Zero is a puzzle platformer: you can only touch things that share a RBG color with you. You start black, you can touch nothing. You will be able to touch walls and coins as you pick the color power-ups.</p> <h3>Controls</h3> <p>◄► - Move<br /> Z/X - Jump</p> <p>Try to pick as many coins as you can. If you finish the game with 50 coins... nothing will happen! I'll give ou my pro gamer seal of approval though.</p> <h3>Boss</h3> <p>You don't need to attack the boss, just evade his attacks. His HP decrases with each attack. If you get hit you lose a coin.</p> <img style="" border=0 src="/media/38130/A_nGEX.gif" alt="" /> <p>Made for Ludum Dare 45.</p> Fri, 11 Sep 2020 19:22:54 UTC Scrap Boy (Jam Version) <p> <table><tr><td> <a href="/bbs/?pid=81721#p"> <img src="/bbs/thumbs/pico8_scrap_boy_jam-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=81721#p"> Scrap Boy GMTK Jam</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=81721#p"> [Click to Play]</a> </td></tr></table> </p> <p>Made for GMTK Jam 2020.</p> <ul> <li>There are 6 power ups. Each power changes your shot and also your movement or other passive abilities.</li> <li>Scrap boy can't control when he swaps power ups. He will swap after some time or when hurt!</li> <li>The bar on the side of your current power shows how much time you have left with that power. When it's fully depleted, your next shot will trigger the swap.</li> <li>You can swap the O and X buttons in the pause menu if needed.</li> </ul> <img style="" border=0 src="/media/38130/dW6FGk.gif" alt="" /> <p>The level design is made in a way that you are able to play the entire game with any of the 6 power-ups. If you want more replayability, try to finish the game with each one, without picking the others :)</p> Fri, 11 Sep 2020 19:10:05 UTC Sonic 2.5 SAGE 2020 <p> <table><tr><td> <a href="/bbs/?pid=81589#p"> <img src="/bbs/thumbs/pico8_sonic_25_sage-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=81589#p"> Sonic 2.5 SAGE 2020</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=81589#p"> [Click to Play]</a> </td></tr></table> </p> <p>This is my entry for SAGE (Sonic Amateur Games Expo) 2020.</p> <p>The game is not finished yet, I'm releasing this demo for the event. The level is very short because it's using the default pico-8 map. The final version will have a stage as big as Sonic 2's Emerald Hill (and 2 acts if the compressed limit is in a good mood).</p> <p>Still, it's fun to roll and bounce around the level like a THPS game. Have fun :)</p> <h3>CRT version:</h3> <p><div><div><input type="button" value=" Show " onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = ' Hide '; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = ' Show '; }"></div><div><div style="display: none;"> <table><tr><td> <a href="/bbs/?pid=81658#p"> <img src="/bbs/thumbs/pico8_sonic_25_sage_2020_crt-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=81658#p"> Sonic 2.5 SAGE 2020 CRT</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=81658#p"> [Click to Play]</a> </td></tr></table> </div></div></div></p> Tue, 08 Sep 2020 01:38:54 UTC [New PICO-8 Feature] Enabling more than 16 colors on the screen <img style="" border=0 src="/media/38130/sonic_tech_area_6.gif" alt="" /> <p>As stated in the title, you can now use up to 32 colors at the same time in pico-8 now.</p> <p>The feature was revealed by Zep in this thread: <a href=""></a></p> <p>This makes all the suggestions I gave in that thread possible and more.</p> <p>You can't simply use all colors all over the screen though. You have 2 screen palettes and you basically have to select which palette you will use on each drawn line on the screen. In the gif above, the screen is divided into 2 halves, each with its own palette.</p> <h3>Palette Scanlines</h3> <p>Here is the code I used for both screen palettes:</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>--regular screen palette pal(( { [0]=128+9,9,1,128+12, 13,12,6,7, 8+(curr_shield==6 and 128 or 0),2,128+10,128+11, 128+15,10,4,15}),1) --values 0x10 and 0x30 to 0x3f change the effect poke(0x5f5f,0x10) --new colors on the affected line pal({[0]=2,0x8d,1,0x81,0x8d,0x8c,0x86,0x87,0x88,0x81,3,0x83,0x86,0x8a,0x82,0x87},2) --0x5f70 to 0x5f7f are the 16 sections of the screen --0xff is the bitfield of which of the 16 line of the section are affected memset(0x5f79,0xff,7)</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 first <strong>pal()</strong> is to set the game's screen palette. Nothing new here.</p> <p><del><strong>poke(0x5f2c,0x40)</strong> enables the 2nd palette. This is the same address that changes screen modes (rotated, stretched, mirrored). You can add these effects as usual, so 0xc5 (0x40+133) will rotate the screen and enable the 2nd palette. See the <a href="">wiki</a> for all effects.</del> This poke is no longer needed after update 0.2.1.</p> <p>Pal([table],2) changes the secondary palette. The second parameter defines the target palette (0 for draw, 1 for display, 2 for secondary). You can change colors individually with pal(c1,c2,2) as usual too. You can also access it by peeking/poking addresses 0x5f60 to 0x5f6f.</p> <p>The memset at the end is a bit more complicated: each address from 0x5f70 to 0x5f7f is a section of the screen. 0x5f70 is the first 8 lines, 0x5f71 is the next 8, etc, all the way to the bottom, 0x5f7f. The value you insert in the address is a bitfield for the 8 lines of that section. 0b1 will affect the first line, 0b11 will affect the first two lines, 0b1010101 will intercalate the lines between the two palettes, and 0b11111111 (or 0xff) will change all lines in the section.</p> <p>With this, you can select either palette for all lines on the screen. But what if you want to use columns instead of horizontal lines? poke(0x5f2c,133) will rotate the screen, so if you rotate the sprites back to compensate for the screen rotation you can have something like this:</p> <img style="" border=0 src="/media/38130/12_Sprite-0002.png" alt="" /> <p>Each character has their own palette!</p> <img style="" border=0 src="/media/38130/crowded_1.gif" alt="" /> <p>CRT effect, using the same principles! memset(0x5f70,0xaa,16) alternates lines!</p> <img style="" border=0 src="/media/38130/moonrace3_0 (2).gif" alt="" /> <p>In Moonrace I used the second palette for the mugshots! This might be the first game to use all 32 colors..? :)</p> <h3>Gradient Fill</h3> <p>If you poke(0x5f5f,n) with values between 0x30 and 0x3f, you'll have a different effect. The color corresponding to the last digit of the address will be swapped for a gradient of colors. Each of the 16 sections will be swapped for a different color (pokes 0x5f60 to 0x5f6f). An example will make it clearer:</p> <img style="" border=0 src="/media/38130/16_crowded_000.png" alt="" /> <p>Here the black background of the game was swapped for a gradient of the 16 basic colors, using the code below:</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>poke(0x5f5f,0x30) for i=0,15 do poke(0x5f60+i,i) 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>So what does the 0x5f70 address do in this mode? Now each bit determines if that particular line will use the corresponding 0x5f6n color or 0x5f6n+1. Adding the code below will produce the following effect:</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>memset(0x5f70,0xaa,16)</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <img style="" border=0 src="/media/38130/crowded_001.png" alt="" /> <p>This might seem a bit unimpressive at first, but remember that you are free to use any of the 32 colors in this gradient, not only the ones you're using currently on the screen. This can be used to add colors to a platformer background or background effects in a shmup for instance. Here is a quick example:</p> <img style="" border=0 src="/media/38130/g-raffe_0.gif" alt="" /> <p>If you look closely the game uses all 15 colors in the foreground and UI except for color #12 (light blue). The light blue is used for the gradient, using the regular colors 0, 1, 12, 6, and 7 and also 0x81 and 0x8c from the alternate palette (18 total colors). Here's another example using 21 colors:</p> <img style="" border=0 src="/media/38130/g-raffe_1.gif" alt="" /> <p>Here is the code for this gradient. Just swap the colors for whatever you like :)</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>--swap 0x30 for 0x3n where n is the color that will be swapped for the gradient poke(0x5f5f,0x30) --put the gradient colors in the table below: pal({[0]=0x82,0x82,0x84,0x84,4,4,0x89,0x89,0x8e,0x8e,0x8f,0x8f,15,15,0x87,0x87},2) --blend lines memset(0x5f70,0xaa,16)</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <img style="" border=0 src="/media/38130/multipal_test_0.gif" alt="" /> <p>You can use the gradient fill to add an extra color for some objects like in this example. Just be sure they never are on the same line. In this case, the camera never moves in the y axis, so there's no way they will overlap.</p> <p>That's all I have for now. Have fun!</p> Thu, 25 Jun 2020 22:17:23 UTC [Feature Suggestion] Screen palette line set <p>The first paragraphs are just some opening thoughts to contextualize where I'm coming from with this idea. If you are not interested in that, skip to <strong>[Suggestion]</strong>.</p> <h2>Context</h2> <p>When the 2nd palette was first discovered, increasing the total number of colors on the screen has been suggested a number of times. That in itself is a pretty weak idea: bumping up pico-8's limitations is against its whole purpose of self-imposed limitations. If you want more colors, just use any other platform. End of story.</p> <p>But recently, with the 0.2.0x versions, a lot of new features have been added that expand what pico-8 is capable of: better code compression, tline, the upcoming oval(), new chars (kana, puny). Tline in particular changes the whole feel of the carts that use it, with the possibility of mode7, rotation, map lighting, etc. While those effects were previously possible, the games that had them would pay a high cost in CPU and tokens.</p> <p>Ever since the 2nd palette came, I had some ideas of how the color limit could be increased without going against pico-8's design principles. From these ideas, I selected my favorite and arguably the one that fits pico-8 the best. With pico-8 going beta and possibly its core being set, this might be my last opportunity of sharing it, so here it is:</p> <h2>Suggestion</h2> <ul> <li> <p>Change the [p] parameter in pal(tbl,[p]) to a integer value between 0 and 128. The [p] value is the first scanline that uses the new palette;</p> </li> <li> <p>This would effectively increase the possible uses of the function from 2 (draw palette and screen palette) to 3 (draw palette, screen palette, and mid-screen palette);</p> </li> <li> <p>If [p] is 0, you change the draw palette as usual. Likewise if [p] is 1, the first line is changed to the new palette, all the way to the last line. No changes here. If [p] is above 1 it means the first scanline of this palette is not at the top of the screen, so it will change the screen palette from that line onwards;</p> </li> <li>Using [p&gt;1] more than once per flip will replace the last mid-screen palette. In the code below, only the [64] value would take effect:</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>function _draw() pal({129,130,131},32) --changes the mid-screen palette for y&gt;=32 pal({132,2,0},64) --overwrites the pal() above so only this one takes effect when the screen is drawn end</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <h2>Uses</h2> <p>In alignment with pico-8's philosophy, this would allow new things to be done, but also create new challenges to overcome and breed creativity through its limitations. Here are some examples:</p> <h3>Water palette</h3> <p>Pal-swap the lower half for some water effects, like in some 16-bit games. It could also be used for water reflection.</p> <img style="" border=0 src="/media/38130/sonic_tech_area_002.png" alt="" /> <h3>Split-Screen</h3> <p>In a game with split-screen, changing the screen palette would affect the other player's half-screen. This new feature would prevent that.</p> <img style="" border=0 src="/media/38130/bomber_000.png" alt="" /> <h3>Fighting game character select/VS screen</h3> <p>Poke(0x5f2c,0x85) rotates the screen, so instead of top/down palettes, it's left/right. With that, you can have nice 15-color palettes for each character in a VS screen, with the black background hiding the transition between palettes. More juice could be added to each side with their respective palettes (character's names, country flags or whatever else).</p> <img style="" border=0 src="/media/38130/12_Sprite-0002.png" alt="" /> <h3>UI</h3> <p>Kind of a crude example, since this game was not intended for that, but you could have some different colors for UI if it has a more clear separation from the game area, like it's common in RTSs and some point-and-click games (the red arrow indicates the transition line).</p> <img style="" border=0 src="/media/38130/crowded_000.png" alt="" /> <h3>Custom Tools</h3> <p>In my custom tool, Painto-8, the entire screen changes when you open the palette selection. This feature could help to circumvent that, making it less jarring.</p> <img style="" border=0 src="/media/38130/painto-8-v02_0.gif" alt="" /> <h3>Mode 7</h3> <p>In games that use mode7-like effects, you can have 1 palette above the horizon (for the sky and UI) and another below (ground, characters and objects).</p> <p>Anyways, you get the idea. It really creates a new layer of cool things to explore while mostly keeping the same restrictions. I think it fits pico-8 well... Who knows :)</p> Wed, 24 Jun 2020 23:45:43 UTC [Feature Request] Keyconfig on exported carts <p>A few days ago someone on my discord server asked me how to configure keys in an exported cart and I didn't figure out how to do it, nor did I find any information about it anywhere...</p> <p>So I assume there's no way to do it right now...?</p> <p>Just letting the player access the Keyconfig screen from the controls screen would be great.</p> <p>And saving the config after each session :)</p> <p>I think it's something that can easily affect user reviews in external sites,, Kongregate, and so on, and also help with accessibility.</p> Wed, 24 Jun 2020 18:20:54 UTC Cloud Outline <p> <table><tr><td> <a href="/bbs/?pid=73320#p"> <img src="/bbs/thumbs/pico8_cloud_outline-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=73320#p"> Cloud Outline</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=73320#p"> [Click to Play]</a> </td></tr></table> </p> <p>I created this cart to show a way to make the outline() function affect many objects (in this case the circles) at once instead of outlining each one individually.</p> <p>Some people got interested in how it works, so I'm sharing it here to show the code behind it.</p> <p>The bottom one uses just 3 more tokens than the top one.</p> Fri, 21 Feb 2020 19:00:18 UTC Transparent Lines <p> <table><tr><td> <a href="/bbs/?pid=73181#p"> <img src="/bbs/thumbs/pico8_transparent_lines-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=73181#p"> Transparent Lines</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=73181#p"> [Click to Play]</a> </td></tr></table> </p> <p>This is a test for the purpose of using poke() bytes vertically as a way to draw transparent lines more efficiently.</p> <p>Before version 1.12d you could only use pget/pset to draw a vertical transparent line, while now you can use poke(0x5f2c,135) to draw bytes vertically.</p> <p>While the effect is the same, the CPU usage difference is pretty significant :)</p> <p>This could be used for transparent rain effects for example.</p> <p>Keep in mind that poke(0x5f2c,135) only works in the bbs right now.</p> Mon, 17 Feb 2020 19:22:44 UTC Christmas RPG Doodle <p> <table><tr><td> <a href="/bbs/?pid=71333#p"> <img src="/bbs/thumbs/pico8_christmas_rpg_doodle-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=71333#p"> Christmas RPG Doodle</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=71333#p"> [Click to Play]</a> </td></tr></table> </p> <p>This is not a game, just an animation that looks like a Christmas-themed RGP.</p> <p>Maybe it will turn into a proper game someday.</p> <p><strong>Merry Christmas</strong> pico people! And a new year full of happiness and accomplishments for you and your family!</p> <p><a href="">Twitter</a> | <a href=""></a> | <a href="">Discord</a> | <a href="">Youtube</a></p> Mon, 23 Dec 2019 01:21:23 UTC Rainbow Tunnel <p> <table><tr><td> <a href="/bbs/?pid=69989#p"> <img src="/bbs/thumbs/pico8_rainbow_tunnel-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=69989#p"> Rainbow Tunnel</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=69989#p"> [Click to Play]</a> </td></tr></table> </p> <p>This is my first TweetTweetCart (558 chars of code)! Made for <a href="">TweetTweetJam 3</a>!</p> <p><strong>&lt;&gt; to move<br /> Z to jump</strong></p> <p>My best score is 560<br /> Itch page: <a href="">Rainbow Tunnel</a></p> <p>Have fun!</p> Sun, 17 Nov 2019 21:19:23 UTC Ball Distortion Effects <p> <table><tr><td> <a href="/bbs/?pid=68876#p"> <img src="/bbs/thumbs/pico8_ball_effects-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=68876#p"> Ball Distortion Effects</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=68876#p"> [Click to Play]</a> </td></tr></table> </p> <p>Made this cart to test some distortion effects for future projects.</p> <p>A lot of people got interested in a tweet I made with it so I'm posting here in case anyone wants to see the code or use it on a project.</p> <p>Move with the mouse;<br /> Z/X (O/X) to change size;<br /> Left mouse click to switch effect.</p> Mon, 14 Oct 2019 17:29:29 UTC Painto8 <h3>New version</h3> <p>I made a new version of Painto-8 that is easier to use and can change the palette during gameplay. I'm keeping the old version here in case someone still likes to use this one.</p> <p>New cart: <a href=""></a></p> <h3>Legacy cart</h3> <p> <table><tr><td> <a href="/bbs/?pid=67210#p"> <img src="/bbs/thumbs/pico8_painto8-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=67210#p"> Painto8</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=67210#p"> [Click to Play]</a> </td></tr></table> </p> <h3>--Version 02--</h3> <ul> <li> <p>Right-click on any color on the palette to open a menu with the 2 palettes. Swap between them with the tab on top.</p> </li> <li> <p>This version has poke(0x5f2e,1), so you can run the cart just when changing palette or drawing on the map area, otherwise, press ESC to resume to drawing on pico-8's sprite editor. (SHIFT+S to save changes so you don't lose what you've drawn while running the cart. Also saves the palette).</p> </li> <li> <p>Suggested use: Save a backup painto-8 blank cart, and create a new file copy for each new sprite sheet you draw. For example I saved painto-meteor-joe.p8 and painto-sonic.p8 for the sheets below.</p> </li> <li>Remember to change cartdata(&quot;bonevolt_painto-8&quot;) for each cart, otherwise all painto-8 carts will load the same palette.</li> </ul> <hr /> <img style="" border=0 src="/media/38130/painto-8-v02_000.png" alt="" /> <hr /> <img style="" border=0 src="/media/38130/paint-meteor-joe_000.png" alt="" /> <hr /> <h3>Older version</h3> <p><div><div><input type="button" value=" Show " onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = ' Hide '; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = ' Show '; }"></div><div><div style="display: none;"> <table><tr><td> <a href="/bbs/?pid=67210#p"> <img src="/bbs/thumbs/pico8_painto8-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=67210#p"> Painto8</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=67210#p"> [Click to Play]</a> </td></tr></table> </p> <p>I recently discovered the 16 extra colors, and since it's not very fun to go back and forth between sprites/code/game just to test colors, I made this cart so you can actually draw sprites with the extra colors directly!</p> <img style="" border=0 src="" alt="" /> <h3>Main features</h3> <ul> <li> <p><strong>Swap between tabs PAL1/PAL2</strong> to select which colors will compose the 16 colors of your sprites:</p> </li> <li> <p><strong>Select the index on the right and the color on the left.</strong> &quot;OK&quot; means your palette already has that color. &quot;▤&quot; Means that index is using a color from the pal1 when you're viewing pal2 and vice-versa.</p> </li> <li><strong>Your pallete is saved</strong> between sessions (poke 0x5e00~f).</li> </ul> <h3>Standard pico-8 features</h3> <ul> <li>Draw</li> <li>Zoom in/out with mouse wheel</li> <li>Save by pressing SHIFT+S or via the pause menu</li> <li>Pick colors with right mouse button on the sprite</li> </ul> <h3>Extra features</h3> <ul> <li> <p>2 extra sprite tabs, because why not! (will draw on the map region: 0x2000-0x2fff)</p> <p></div></div></div></p> </li> </ul> Wed, 04 Sep 2019 04:10:51 UTC 16 extra colors! <p>Hello everyone, today I stumbled on a undocumented feature I didn't know existed: 16 extra colors.!</p> <p>I searched on the wiki and the forums and I didn't see it mentioned anywhere (except <a href="">this thread</a>, but it was a differnt thing and that feature was removed by zep at that time).</p> <p>If you change the screen palette via poke (0x5f10 to 0x5f1f) to a value above 0x80, the color will change as shown below:</p> <img style="" border=0 src="" alt="" /> <p>Here's world 2 of Jack of Spades with all colors swapped, except black and yellow:</p> <img style="" border=0 src="" alt="" /> <p>Original colors for comparison:</p> <img style="" border=0 src="" alt="" /> <p>You can't have more than 16 colors in a single frame though, since poking (0x5f00 to 0x5f0f) will just make the color transparent, as documented in the wiki. Still it's good for fades, and can be used for someting like stage-specific palettes like in the NES and other old consoles.</p> <p>Pretty cool!</p> Wed, 04 Sep 2019 02:59:24 UTC Jokenpico <p> <table><tr><td> <a href="/bbs/?pid=65949#p"> <img src="/bbs/thumbs/pico8_jokenpico-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=65949#p"> Jokenpico</a><br><br> by <a href="/bbs/?uid=38130"> BoneVolt</a> <br><br><br> <a href="/bbs/?pid=65949#p"> [Click to Play]</a> </td></tr></table> </p> <p><strong>Jokenpico</strong> is Jokenpo with a twist with code that fits in a tweet!</p> <p>It is a 2-player game.</p> <p>Controls:<br /> <strong>RIGHT</strong> is rock<br /> <strong>LEFT</strong> is paper<br /> <strong>UP</strong> is scissors</p> <p>The diffence from regular jokenpo is the score:</p> <p>If <strong>Scissors</strong> wins: +4 points<br /> If <strong>Rock</strong> wins: +2 points<br /> If <strong>Paper</strong> wins: +1 points</p> <p>At a first glance scissors seems overpowered with 4 points, but it wins against paper (1 point), so it is less likely that your opponent will use paper.</p> <p>(an easy way to remember each score is: scissors cuts paper into 4 pieces, rock smashes scissors into two halves and paper wraps stone into one ball)</p> Fri, 19 Jul 2019 20:31:47 UTC