electricgryphon [Lexaloffle Blog Feed]https://www.lexaloffle.com/bbs/?uid=10844 Pico Backrooms <p> <table><tr><td> <a href="/bbs/?pid=189378#p"> <img src="/bbs/thumbs/pico8_pico_backrooms-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=189378#p"> pico_backrooms</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=189378#p"> [Click to Play]</a> </td></tr></table> </p> <h1>Pico Backrooms</h1> <p>These hallways seem to extend forever -- branching endlessly and impossibly. I think I see glinting teeth when I stray too far away from the elevator and into the dark, and then ... well I always end up back here. But I think there might be something in these journal pages -- if I can just find them.</p> <p><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/pico_backrooms_1.png" alt="" /><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/office_level8_4.png" alt="" /><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/office_level8_2.png" alt="" /><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/levelfun_floor3_4.png" alt="" /></p> <h2>Features:</h2> <p>Explore 5 unique, infinite, procedurally generated levels, including: Level 0, the Poolrooms, Level Fun, and an endless office.<br /> Collect journal pages to reveal the story<br /> Smilers inhabit the dark corners of the world</p> <h2>Instructions</h2> <h3>Exploring the Floors:</h3> <p>Pick up pages by walking up to them and hitting &quot;z&quot;. They can be well hidden in the maze.<br /> The elevator is behind you when you start<br /> Face the elevator controls and click &quot;z&quot; to bring up the elevator keypad<br /> It gets darker the further you stray from the center. If you go far enough, you may see things. Or...more importantly they may see you.</p> <h3>Elevator Keypad: (use mouse or gamepad)</h3> <p>Select floor buttons to change floors. Not every floor can be access.<br /> Click the exit icon to leavel the elevator and explore the current floor.<br /> Click the journal icon to read the collected pages.</p> <h3>Journal:</h3> <p>As more pages are collected, more of the story is revealed. Maybe there is even a way out.<br /> Click the Keypad icon to return to the Elevator Keypad.</p> <h2>Credits:</h2> <p>Music is &quot;Cursed Storytime&quot; by Fettuccini. <a href="https://fettuccini.itch.io/storytime">https://fettuccini.itch.io/storytime</a></p> <h2>Technical:</h2> <p><div><div><input type="button" value=" Show " onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = ' Hide '; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = ' Show '; }"></div><div><div style="display: none;"><br /> This is built off of my previous portal-based backrooms engine, but with the addition of procedural generation using room linking. Essentially, the map is built out as you explore forward, while still allowing you to backtrack / maintain history. Rooms do not follow the rules of physics when branching, and can overlap with eachother -- in fact, it's impossible for rooms to loop back -- even if it feels like they should. Rooms are built out of template chunks that are plugged together at doors / portals.</p> <p>I am using a multi-cart to be able to fit everything in here. As it stands, I've used 8185/8192 tokens and 14826/15616 compressed space for the most detailed level. Code is minimized to oblivion using shrinko8. (Readibility went out the window... but I needed those tokens and compressed space for levels.)</p> <p>The portal engine is great for walls and rooms, but there's a low-fidelity object rendering pipeline as well. It just handles vertical faces and horizontal polygons, but this allows for things like desks, chairs and columns.</p> <p>In order to support environmental objects like pools and pits, I implemented a stencil buffer. This lets me have objects that appear to dip into the ground, without the rendering problems of doing this with the portal engine itself.<br /> </div></div></div></p> <h2>File Package:</h2> <p><a href="https://www.lexaloffle.com/bbs/files/10844/pico_backrooms_file_package.zip">https://www.lexaloffle.com/bbs/files/10844/pico_backrooms_file_package.zip</a><br /> This is a zip of all of the levels / multi-cart to enable offline/SBC play or viewing source code.</p> https://www.lexaloffle.com/bbs/?tid=156774 https://www.lexaloffle.com/bbs/?tid=156774 Sat, 09 May 2026 06:32:11 UTC Render Edit and Render Space Engine <h1>Instructions for Render Edit - V15</h1> <p><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/render_edit-15_0.png" alt="" /> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/render_space_example-01_0.png" alt="" /></p> <p> <table><tr><td> <a href="/bbs/?pid=181895#p"> <img src="/bbs/thumbs/pico8_semunamida-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=181895#p"> render edit</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=181895#p"> [Click to Play]</a> </td></tr></table> </p> <h1>Introduction:</h1> <p>Render Edit is a portal based map editor created for Backrooms Level 0 and Render Space Engine by ElectricGryphon. (See <a href="https://www.lexaloffle.com/bbs/?tid=152772">https://www.lexaloffle.com/bbs/?tid=152772</a>)</p> <p>This really only functions using a computer as a local cart -- while you can play around with the basic functions on a phone or online, you won't be able to save or load files.</p> <p>Fair warning--this is far from user friendly, and creating a map editor within Pico8 while also building a game engine was not the wisest of choices. As it stands, this is right at the token limit and will need refactoring in order to enable any feature additions or interface improvements. Not only does this harken back to the dark ages of GUI design, but it also suffers from Pico8's lack of a native file opening routines. So yeah... it's hacky. Consider yourself warned.</p> <h1>Example Cart</h1> <p> <table><tr><td> <a href="/bbs/?pid=181895#p"> <img src="/bbs/thumbs/pico8_renderspaceexample-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=181895#p"> renderspaceexample</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=181895#p"> [Click to Play]</a> </td></tr></table> </p> <h1>Editor Overview</h1> <p>The map consists of Points, that make up concave sectors (or rooms), that can be connected by ports.</p> <p>Points: The basic building block of the world. Each point is on a 2D grid without any height information. </p> <p>Sectors: A sector is a clockwise list of points that enclose a convex region. Concave sectors are not allowed. Points must be in clockwise order otherwise the sector will not be allowed. (This is because of winding, which is used to quickly detect if a point is inside or outside the polygon.)</p> <p>Each sector can have it's own cieling, wall, and floor textures as well as an overall brightness.<br /> Each wall in a sector can have a unique texture if desired -- it will otherwise defualt to the sector texture.<br /> Finally, each sector can have a floor and cieling height.</p> <p>Ports: A port is a special type of wall that links two adjacent sectors together. For a port to work, the wall segment of both touching rooms needs to be between the same two points.</p> <p>When drawing the view in the Render Space Engine, portals define whether the player can see into the next room. This works very well for things like hallways, and even rooms with two entrances. They are not (at least as I have coded them) very efficient for creating things like columns or sunken pockets in the floor. But, we can get around that with Instances.</p> <p>Instances: An instance is essentially a prop within the world that is made up of vertical walls or horizontal floor / cieling polygons.<br /> -Some instances are decorative only (wall outlets, or cieling lights)<br /> -Other instances can act as architecture walls such as columns.<br /> -There are doors which open and close (if the player has the key item)<br /> -Finally, there are items, such as the key, flashlight, or ladder which can be picked up or used</p> <h1>Menu and Function Overview</h1> <p>Requires a mouse. Really not worth trying to run on a phone because you will not be able to save or open files anyway.</p> <h2>Buttons:</h2> <p>Cursor keys -- move the viewport<br /> Z -- Zoom In<br /> X -- Zoom Out</p> <h2>Mouse:</h2> <p>left-click -- select menu items, existing points or to add points depending on the mode</p> <h2>File:</h2> <p>Save -- See <strong>How to save and copy a map into the engine</strong><br /> Load -- See <strong>How to load a map file into Render Edit</strong><br /> New -- Clear the map currently loaded in memory</p> <h2>View:</h2> <p>Label -- Show vertice labels and room labels (Sometimes good for debuging or for hard coding things<br /> Snap -- Snaps points to 0.5 unit increments</p> <h2>Point:</h2> <p>Add P -- Set mode to add vertex points. Click on the grid to add a new point.<br /> (Points are the building blocks of sectors.)<br /> Del P -- Set mode to delete vertex points. Click on a point to delete it.<br /> (Note: Points that are currently part of a sector cannot be deleted unless all sectors that reference those points are deleted.)<br /> Move P -- Set mode to move vertex points. Click and drag to move a point. Points that are part of sectors can be moved.<br /> (Note: If the resultant sector becomes convex, it will turn from dark blue to purple and will cause glitches in the engine.)<br /> Add I -- Sets mode to add instance points. Click to add an instance, which will default to the last instance type used. At the start, it will be set to a square cieling light.)<br /> -Instances will draw preview lines showing the outline of the instance, and a small circle showing the center of the instance.<br /> Move I -- Set mode to move instamce points. Click and drag on the small circle of an instance to move it around.<br /> Sel I -- Set mode to select and edit instance definitions. Click on an instance point to bring up the Instance Dialog Box. Click away from an instance to close the dialog box.</p> <h3>Instance Dialog Box:</h3> <p><em>Template -- This is the type of the instance. Click arrows to change the number / type. The </em>description is listed below.<br /> <em>Y: This is the height of the instance.<br /> </em>Angle: This is the angle of rotation of the instance</p> <h2>Sector:</h2> <p>Add Sector -- Set mode to add sector. With this mode activated, click points in a clockwise order to build a sector. You will see that lines link the points with gray normal spikes that point in towards the center of the sector. Select the starting point as the final point to close and create the sector. The sector will not be created if it is concave or if it not clockwise.<br /> [Warning: It will create a sector that is just a line. This is a bug that I should probably fix.]<br /> After the sector is created, it will fill with dark blue.</p> <p>Select Sector -- Set the mode to select sectors. Select a sector (click inside of it) with the mouse to bring up the Sector Dialog Box. Click way from a sector to close the dialog box.</p> <h3>Sector Dialog Box:</h3> <p>Cur Sec: This is the currently selected sector index<br /> Height: This is the cieling height of the sector. The default height is +2. Click the arrows to adjust in 0.25 unit increments.<br /> Base: This is the floor height of the sector. The default height is -2. Click the arrows to adjust in 0.25 unit increments. (Note that the player can't climb up distances of more than 0.5 units.)<br /> Wall: This is the wall texture number. A preview is shown next to it. Click the arrows to change.<br /> Ciel: This is the cieling texture. A preview is shown next to it. Click the arrows to change.<br /> Flr: This is the floor texture. A preview is shown next to it. Click the arrows to change.<br /> Bright: This is the room brightness, which ranges from 0 to 2, with 1 being default brightness. Use the arrows to adjust. If the brightness is 0.1 or 0, it will be too dark to see without the flashlight item.</p> <p>Del Sector -- Set the mode to delete sectors. Click inside a sector to delete it. The points will remain intact. All connected ports between adjacent sectors will revert back to standard walls.<br /> Make Port -- Set the mode to make portals between sectors. Click on a shared wall to turn it into a connecting portal between two adjacent sectors. The wall must be shared (have the same points) between both sectors. Portals will turn green. (Note: To delete a portal, it is necessary to delete the sector.)<br /> Sel Wall -- Set the mode to select a wall. Click on a wall (towards the inside of the wall) to activate it and bring up the Wall Dialog.</p> <h3>Wall Dialog Box:</h3> <p>Texture: This is the current texture of the wall. Click the arrows to change the texture. A value of 0 will make it use the default texture for the current sector.</p> <h1>How to save and copy a map into the engine</h1> <p>1) When your map is ready File-&gt;Save<br /> This will output the file into rs_export.txt in your default cart directory</p> <p>2) Open the rs_export.txt. Copy the long string of numbers.</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>example data: -4,3,3,3,3,-3,-4,-3,3,1,3,-1,8,-1,8,1,8,4,10,-3,8,-3,10,4,12,4,10,7,15.5,4,12,7,7.5,7,7.5,15,13.5,15,13.5,7|0,-2,0,1,0,11,0,-13,5,0,9.5,0,-9.5,5,0.125,-2,1,-1,3,0.125,|3,-2,3,9,15,1&gt;1,2,0,2,5,0,5,6,-2,6,3,0,3,4,0,4,1,0|2,-2,5,10,5,0.8&gt;5,8,0,8,7,-3,7,6,0,6,5,-1|2,-2,2,7,11,1&gt;9,12,0,12,13,-4,13,15,0,15,10,0,10,11,0,11,7,0,7,8,-2,8,9,0|2,-2,1,7,8,0.7&gt;16,13,0,13,12,-3,12,14,0,14,16,-5|3,-2,1,7,8,1&gt;18,19,0,19,20,0,20,16,0,16,14,-4,14,17,0,17,18,0</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>3) Open the render_space engine code file eg. &quot;render_space_example-01.p8&quot;<br /> 4) Paste the string of numbers into map_string=[[ &lt;data goes here&gt; ]]</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>example map_string: map_string=[[ -4,3,3,3,3,-3,-4,-3,3,1,3,-1,8,-1,8,1,8,4,10,-3,8,-3,10,4,12,4,10,7,15.5,4,12,7,7.5,7,7.5,15,13.5,15,13.5,7|0,-2,0,1,0,11,0,-13,5,0,9.5,0,-9.5,5,0.125,-2,1,-1,3,0.125,|3,-2,3,9,15,1&gt;1,2,0,2,5,0,5,6,-2,6,3,0,3,4,0,4,1,0|2,-2,5,10,5,0.8&gt;5,8,0,8,7,-3,7,6,0,6,5,-1|2,-2,2,7,11,1&gt;9,12,0,12,13,-4,13,15,0,15,10,0,10,11,0,11,7,0,7,8,-2,8,9,0|2,-2,1,7,8,0.7&gt;16,13,0,13,12,-3,12,14,0,14,16,-5|3,-2,1,7,8,1&gt;18,19,0,19,20,0,20,16,0,16,14,-4,14,17,0,17,18,0 ]]</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>5) Save and load the code file into Pico8</p> <h1>How to load a map file into Render Edit</h1> <p>1) Open the text file containing the map string (eg. rs_export.txt)</p> <p>2) Copy the entire string into your clipboard<br /> [I told you this was going to be hacky.]</p> <p>3) Load and run Render Edit in Pico8</p> <p>4) Paste (eg. control 'v' or command 'v')</p> <p>5) File-&gt;Load</p> <p>6) Any map currently loaded will be erased and the map from the pasted string will be loaded.</p> <p><strong>Warnings and notes</strong><br /> This is a way around Pico8 not being able to directly open and read files. Basically pasting the text string while the cart is running makes it available for Pico8 to import. (Note that your can't simply import directly from the clipboard, you need to actually paste while the program is running.)<br /> There is <em>no</em> error checking for the imported file. If it is not formated properly or has an error, the Render Edit cart will error out. </p> https://www.lexaloffle.com/bbs/?tid=154311 https://www.lexaloffle.com/bbs/?tid=154311 Thu, 15 Jan 2026 07:17:01 UTC Backrooms Level 0 <p> <table><tr><td> <a href="/bbs/?pid=177560#p"> <img src="/bbs/thumbs/pico8_backrooms01-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=177560#p"> backrooms-01</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=177560#p"> [Click to Play]</a> </td></tr></table> </p> <h1>Backrooms Level 0</h1> <p>The fluorescent lights hum gently but incessantly as you trudge across the damp yellow carpet. Weren't you already here? Or was that over there? It's either been days or minutes since you no-clipped through the floor of reality into this maze of rooms.</p> <p>Find a way out--maybe back to the real world...</p> <h3>Controls</h3> <ul> <li>Arrow Keys: Turn Left/Right, Forward/Backwards</li> <li>Z: Pickup Item, Open Door (if you have the key), Climb</li> </ul> <h3>Dev Notes</h3> <p>This game/demo is running on a portal-based engine that works with linked, convex sectors, somewhat similar to the Build engine. It handles textured walls, ceilings and floors at different heights as well as 3D prop items built out of vertical and horizontal surfaces. (The engine is far from perfect, but handles these sorts of worlds pretty well.)</p> <p>I designed the levels using a custom editor (built in pico-8 because I like to make my life harder), which outputs level data as a really long string. It's a quirky beast, which somehow became about as complicated as the game engine.</p> <p>Overall this was a fun exercise to build something atmospheric that I can get lost in myself.</p> <p>--Electric Gryphon</p> <p>You can find the level editor here, along with some basic instructions.<br /> <a href="https://www.lexaloffle.com/bbs/?tid=154311">https://www.lexaloffle.com/bbs/?tid=154311</a></p> <p>(Warning: The level editor is not especially user-friendly. But maybe it will be useful to someone.)</p> https://www.lexaloffle.com/bbs/?tid=152772 https://www.lexaloffle.com/bbs/?tid=152772 Sat, 15 Nov 2025 07:11:11 UTC 1k Landscape <p> <table><tr><td> <a href="/bbs/?pid=118151#p"> <img src="/bbs/thumbs/pico8_onek_landscape06-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=118151#p"> onek_landscape06</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=118151#p"> [Click to Play]</a> </td></tr></table> </p> <p>Here's my entry for the 1k jam!</p> <p>After the image renders, hit &quot;z&quot; to make a new one.</p> <p>-ElectricGryphon</p> https://www.lexaloffle.com/bbs/?tid=49526 https://www.lexaloffle.com/bbs/?tid=49526 Thu, 29 Sep 2022 06:10:53 UTC PicoShop Pro <p> <table><tr><td> <a href="/bbs/?pid=110273#p"> <img src="/bbs/thumbs/pico8_picoshoppro_v1-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=110273#p"> picoshoppro_v1</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=110273#p"> [Click to Play]</a> </td></tr></table> </p> <h1>PicoShop Pro Manual</h1> <p>PicoShop Pro is an exciting new offering from ElectricGryphon Industries, enabling realistic full 16-color dithered images to be developed directly on the Pico8 microcomputer.</p> <p><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/painter_pro-23_0.png" alt="" /> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/painter_pro-22_6.gif" alt="" /></p> <h2>Features:</h2> <p>--18-bit color rendering (using dithering), with 6 bit transparency.<br /> --Moveable Toolbars (Collapse with double-click. Show/Hide with Tab key.)<br /> --Two rendering modes: Fast Pattern and 64-level Bayer (Toggle with 'R')<br /> --Painting Tools<br /> ----Brush Tool with feathering<br /> ----Gradient Tool (Draws from foreground color to transparent)<br /> ----Pencil Tool<br /> --Mask Functionality (You can only draw where image is not masks.)<br /> --Path Functionality (Paths can be converted to masks.)<br /> --Quick-key functionality (See instructions / type 'H' for keys.)</p> <h3>Saving and Loading:</h3> <p>--Save Pic: Saves a PNG of your image in the current render mode to the desktop.<br /> --Export: Save a text file of the image in 24-bit hex format to the desktop<br /> --Import: To import image, copy the text of the text file. Select Import. Paste the text into Pico8.</p> <h3>Quick keys:</h3> <p><strong>Tools</strong><br /> -Tab- Show/Hide all Toolbars<br /> -R- Toggle Bayer Render Mode<br /> -H- Toggle Keypad Help<br /> Double Click on Title Bars to Collapse/Expand Toolbars</p> <p><strong>Colors</strong><br /> -D- Set Color to Black<br /> -Q- Set Color to Erase</p> <p><strong>Paint</strong><br /> -B- Select Brush Tool<br /> -N- Select Pencil Tool<br /> -G- Select Gradient Tool</p> <p><strong>Path</strong><br /> -L- Select Path Draw Tool<br /> -E- Select Path Edit Tool<br /> -W- Select Path Select/Move Tool<br /> -9- Show/Hide Paths</p> <p><strong>Mask</strong><br /> -K- Mask Current Path<br /> -M- Select Rectangle/Marquee Mask Tool<br /> -CTRL Backspace- Fill Mask<br /> -Backspace- Erase Mask<br /> -I- Invert Mask<br /> -A- Clear Mask<br /> -0- Show/Hide Mask<br /> Hold Shift while making masks for ADD mode<br /> Hold CTRL while making masks for SUB mode</p> https://www.lexaloffle.com/bbs/?tid=47390 https://www.lexaloffle.com/bbs/?tid=47390 Fri, 15 Apr 2022 05:53:51 UTC Extended Color Image Rendering <p> <table><tr><td> <a href="/bbs/?pid=109561#p"> <img src="/bbs/thumbs/pico8_bimofihipa-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=109561#p"> bimofihipa</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=109561#p"> [Click to Play]</a> </td></tr></table> </p> <p><strong>WARNING FLASHING IMAGES</strong></p> <p>I wanted to try out the new extended (32 color) low res palette mode.</p> <p>Use left and right arrows to cycle image rendering methods.<br /> (Some of these methods take a while to draw, especially with the extended &quot;flicker palette&quot;--it's a slow dither.)</p> <p>Your mileage may vary with the flicker color modes. I think it's a nifty way to get more colors, but many people find it to be distracting / uncomfortable to look at. </p> <p><strong>Modes</strong><br /> 1) Floyd Steinberg: Standard Palette<br /> 2) Floyd Steinberg: Optimized Palette (basically just swapped some greens and blues)<br /> 3) Low Res with all 32 colors at once!<br /> 4) Low Res with &quot;flicker palette&quot; built up from all 32 colors mixed (be patient)<br /> 5) Floyd Steinberg with &quot;flicker palette&quot; with standard colors (be patient)<br /> 6) Floyd Steinberg with &quot;flicker palette&quot; with optimized colors (be patient)</p> <p><strong>Notes</strong><br /> --Actual image data is stored as 4-bit RGB channels, with Red in the sprite sheet, Green in the music blocks, and Blue stored as a string. There is no reason for Pico8 to be able to store 4096 color images. But, if you ever want to, this is one way.<br /> --The low res mode with 32 colors is interesting, but I don't think the extended palette colors complement the standard palette very well--definitely not enough to make up for the loss of resolution. Dithering with 16 colors looks better to me.</p> https://www.lexaloffle.com/bbs/?tid=47200 https://www.lexaloffle.com/bbs/?tid=47200 Sat, 02 Apr 2022 04:14:58 UTC Picowings Flight Simulator <p> <table><tr><td> <a href="/bbs/?pid=108483#p"> <img src="/bbs/thumbs/pico8_picowings_2-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=108483#p"> picowings_2</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=108483#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Presenting Picowings Flight Simulator</h2> <p>Take off and explore the mountains and lakes of Picotopia!</p> <p><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/pico_wings-02 p8_4.png" alt="" /> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/pico_wings-02 p8_6.png" alt="" /></p> <p><strong>Controls</strong><br /> -- left, right: Roll + Yaw<br /> -- up, down: Pitch<br /> -- z, x: Throttle<br /> -- p: Pause and set time of day</p> <p><strong>Tips:</strong><br /> Hold down Z to increase speed on the runway before pulling up (down arrow) to take off.<br /> If you look around, you will see houses, buildings, and ships.</p> <p><strong>Technical Notes</strong><br /> Flight model should be &quot;somewhat realistic&quot; in that it models thrust, lift, drag and weight--Of course all the numbers are made up, and things are grossly simplified.</p> <p>Landscape uses a smooth noise function and can go on forever without repeating. (Well, not forever--it uses a 4095 long list of random numbers-- but longer than I have patience or memory for.)</p> <p>Water is drawn using a marching squares algorithm in order to have more organic shapes, which I think is kinda neat even if it does take cycles and tokens.</p> https://www.lexaloffle.com/bbs/?tid=46944 https://www.lexaloffle.com/bbs/?tid=46944 Sat, 12 Mar 2022 05:53:36 UTC PSET Bug with negative fractional color values <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/world_flight-01 p8_2.png" alt="" /> <p>Saw some unexpected behavior today with pset(x,y,c) when c negative and fractional.</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> cls(6) for i=0,127 do for j=0,127 do pset(i,j,(i-16)/32) end 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>If I add a floor command, then the funny stippling goes away. e.g. pset(i,j,flr((i-16)/32))</p> <p> <table><tr><td> <a href="/bbs/?pid=106366#p"> <img src="/bbs/thumbs/pico8_seyotabebu-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=106366#p"> seyotabebu</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=106366#p"> [Click to Play]</a> </td></tr></table> </p> https://www.lexaloffle.com/bbs/?tid=46453 https://www.lexaloffle.com/bbs/?tid=46453 Sat, 05 Feb 2022 01:18:38 UTC Metablobs <p> <table><tr><td> <a href="/bbs/?pid=94379#p"> <img src="/bbs/thumbs/pico8_jaburazaga-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=94379#p"> jaburazaga</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=94379#p"> [Click to Play]</a> </td></tr></table> </p> <p>The world needs more metablobs. 'Nuff said. </p> https://www.lexaloffle.com/bbs/?tid=43648 https://www.lexaloffle.com/bbs/?tid=43648 Fri, 02 Jul 2021 23:01:08 UTC Space Station Demo <p> <table><tr><td> <a href="/bbs/?pid=94322#p"> <img src="/bbs/thumbs/pico8_space_station_demo-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=94322#p"> space_station_demo</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=94322#p"> [Click to Play]</a> </td></tr></table> </p> <p>Here's a quick demo of a 6 degree of freedom 3D engine that I have been working on.<br /> You can just explore a small space station in a Descent-like style. </p> <p><strong>Controls</strong><br /> Z: Thrust<br /> Arrow Keys: Turn<br /> X+Arrows: Roll</p> <p><strong>Notes</strong><br /> The map is stored in a <strong>long</strong> string and is generated from a Blender OBJ file. The station is as complex as I can make it before running out of compressed code space. To make something larger, I think I would have to switch to more of a 3D tile system with room building blocks that snap together.</p> <p>The engine uses a simplified portal system paired with convex sectors to determine room visibility and draw order.</p> <p><strong>Thanks</strong><br /> Thanks to Fred72 for the polyfill code. (<a href="https://www.lexaloffle.com/bbs/?tid=3393">https://www.lexaloffle.com/bbs/?tid=3393</a>)</p> <p>Updates: fixed some code that broke with version 2.5g</p> https://www.lexaloffle.com/bbs/?tid=43642 https://www.lexaloffle.com/bbs/?tid=43642 Fri, 02 Jul 2021 05:53:02 UTC Stat(1) Reporting Wrong Value <p>I've found an issue in a recent cart where if I exceed CPU of 2, the reported CPU in stat(1) goes back to being less than 1. (Basically looks like stat(1) is reporting CPU%2.)</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/space_station-11 p8_0.gif" alt="" /> <p>And here I was being excited about being able to handle 100 objects without breaking a sweat. :-D</p> <p> <table><tr><td> <a href="/bbs/?pid=92758#p"> <img src="/bbs/thumbs/pico8_diginbus-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=92758#p"> diginbus</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=92758#p"> [Click to Play]</a> </td></tr></table> </p> <p>-ElectricGryphon</p> https://www.lexaloffle.com/bbs/?tid=43108 https://www.lexaloffle.com/bbs/?tid=43108 Sat, 29 May 2021 05:00:01 UTC Sphero <p> <table><tr><td> <a href="/bbs/?pid=92323#p"> <img src="/bbs/thumbs/pico8_sphero_a1-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=92323#p"> sphero_a1</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=92323#p"> [Click to Play]</a> </td></tr></table> </p> <h1>Sphero</h1> <p>Version a1</p> <p><strong>Rescue Blocklandia from the evil clutches of Duke Cube. Find the nine golden keys to unlock the gate to the magic portal and recover the crown.</strong></p> <h3>Instructions</h3> <p>--Move the Sphero with the arrow keys<br /> --Interact with special blocks by rolling over them<br /> --Collect keys to open locked doors<br /> --Collect floating coins<br /> --Grab the crown to win the game!</p> <p>If you beat the game, please post a picture!</p> <h3>Implementation Notes</h3> <p>There are some tidbits in this cart that might be interesting/useful to other pico8 programmers. </p> <p><strong>Level Storage</strong></p> <p>8X8 rooms are stored in a compressed format within a long string contained at the end of the P8 file. Blocks are stored in a manner that is closer to a drawing format-- e.g. change current tile, place tile at location x or fill a given region with tile. These instructions are tightly bit packed and then saved a single line of hex for each room.<br /> This allowed for 117 unique rooms in the game with a reasonable level of detail before hitting the code compression limit. (15438/15616 in the end!)</p> <p>I have tool to allow for rooms to also be stored in the cart data as well, but it didn't end up being necessary. (I got tired of designing rooms before I got ran out of space.)</p> <p>I have a level editor (also made in pico8), which outputs levels to a text file, that I can share.</p> <p><strong>Sprite Packing</strong></p> <p>This game uses two sprite sheets worth of a sprites by mashing them together-- e.g. the first 2 bits code for sprite sheet one and the second 2 bits code for sprite sheet 2. I posted a demo cart of this earlier, and there are a couple of other carts on the bbs that explain this in more detail.</p> <p><strong>Physics</strong></p> <p>Collisions are handled using signed distance fields for the blocks in the local area of the ball, which make it really easy to check for where and when the sphere of the ball hits something--or multiple somethings. As a bonus, they also make it easy to find the normal at the intersection point, so bouncing type collisions are pretty straight forward.</p> <p>I can do more of a write-up for these things if folks want.</p> <p>-ElectricGryphon</p> https://www.lexaloffle.com/bbs/?tid=42987 https://www.lexaloffle.com/bbs/?tid=42987 Sat, 22 May 2021 00:57:30 UTC Image Merge Demo <p> <table><tr><td> <a href="/bbs/?pid=91562#p"> <img src="/bbs/thumbs/pico8_gasefabufe-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=91562#p"> gasefabufe</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=91562#p"> [Click to Play]</a> </td></tr></table> </p> <p>Here's a quick and dirty cart that will merge 2 PNGs into 1.<br /> Assumptions: Use black, white, with Pink for transparent.<br /> Drag first image onto cart.<br /> Drag second image onto cart.<br /> Output is saved in the sprite sheet.</p> <p>This will only work on desktop pico8.</p> <p>-ElectricGryphon</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/17_first_col.png" alt="" /> <p>+</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/18_second_col.png" alt="" /> <p>=</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/merged_sprites.png" alt="" /> https://www.lexaloffle.com/bbs/?tid=42787 https://www.lexaloffle.com/bbs/?tid=42787 Thu, 06 May 2021 06:16:29 UTC PicoVox <p> <table><tr><td> <a href="/bbs/?pid=90020#p"> <img src="/bbs/thumbs/pico8_gesadupito-2.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=90020#p"> gesadupito</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=90020#p"> [Click to Play]</a> </td></tr></table> </p> <h1>PicoVox</h1> <p><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/pico_vox-a1 p8_000.png" alt="" /> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/pico_vox-59 p8_027.png" alt="" /></p> <h2>version a2</h2> <p>Old versions<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=90020#p"> <img src="/bbs/thumbs/pico8_gesadupito-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=90020#p"> gesadupito</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=90020#p"> [Click to Play]</a> </td></tr></table> </div></div></div></p> <p>PicoVox is a voxel art creation program for Pico8.<br /> --Use your mouse to add, remove, and recolor blocks on an isometric grid.<br /> --Render ray-traced images and rotation animations of your pieces<br /> --Save and share your creations in the form of data PNGs<br /> --Import data PNGs from others by dragging them onto PicoVox</p> <h3>saving and import</h3> <p>Click the disk icon to save your work. A PNG will be generated that contains the voxel data for your scene. This file can be posted on the BBS or social media.</p> <p>To open a file, simply drag the image on top of the running PicoVox application window.<br /> (Saving and opening may require standalone Pico8 and not work on the BBS web-player. TBD)<br /> See example save image below:</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/pico_vox-52 p8_008.png" alt="" /> <h3>mouse support</h3> <p>PicoVox requires a mouse to function properly, though it may work &quot;ok&quot; with a touch screen. With a mouse and the block tool selected, left mouse places blocks and the right mouse deletes them. The scroll wheel can be used to zoom in and out and clicking and holding the scroll wheel will cause the model to rotate.<br /> If you do not have a right mouse button, you can delete blocks by selecting the black color with the red slash in the color palette.</p> <h3>rendering</h3> <p>PicoVox can render images in a dithered Pico8 palette using ray-tracing. Special rendering features include transparency, reflection, glowing, as well as shadows and ambient occlusion.<br /> Click the camera tool to start a render, which will save to the desktop by default when complete. (Generally rendering takes around 10 seconds and will be interactively displayed while it progresses.)</p> <p>The loop icon will render a rotation animation as a gif to your desktop by default. Please note that this will take a long time to render all of the frames. Currently, the animation render cannot be canceled so please remember to save your work before starting.</p> <h3>new scene</h3> <p>To change the width, depth and height of the scene, click the &quot;clear scene&quot; tool. Note that this will erase your current file.</p> <h3>tools</h3> <p>block: add blocks<br /> brush: paint color<br /> cam: render<br /> floor: toggle floor<br /> disk: save<br /> bucket: fill color<br /> hand: pan<br /> loop: render animation<br /> doc: clear scene<br /> ?: info text</p> <h3>blocks</h3> <p>solid block<br /> transparent block<br /> mirror block<br /> bright block</p> <h3>colors</h3> <p>select color<br /> black is erase</p> <h3>keys</h3> <p>arrow keys rotate view<br /> z+arrow: pan<br /> shift+up/down: zoom<br /> x: quick render</p> <h3>wmouse</h3> <p>left: add block<br /> right: del block<br /> middle: rotate<br /> scroll wheel: zoom<br /> shift+middle: look at</p> https://www.lexaloffle.com/bbs/?tid=42321 https://www.lexaloffle.com/bbs/?tid=42321 Mon, 05 Apr 2021 16:46:14 UTC Slower Execution Between V0.2.2 and Prev Versions <p>I've seen a significant performance difference between the latest v0.2.2 and v0.2.1b.</p> <p>For this particular cart, it runs significantly slower on the latest version when measured with a stop watch, but when using the stat(1), the system claims the opposite--i.e. that it's faster. (These are both being run from the .exe on Windows.)</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> Version stat(1) Stopwatch Timed v0.2.1b 285 30 seconds v0.2.2 219 8 minutes, 14 seconds </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 included the cart for reference.</p> <p>-ElectricGryphon</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/10_render_dif_pioc8_v022_02.png" alt="" /> <p> <table><tr><td> <a href="/bbs/?pid=87830#p"> <img src="/bbs/thumbs/pico8_render_speed_dif-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=87830#p"> render_speed_dif</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=87830#p"> [Click to Play]</a> </td></tr></table> </p> https://www.lexaloffle.com/bbs/?tid=41633 https://www.lexaloffle.com/bbs/?tid=41633 Thu, 18 Feb 2021 06:27:28 UTC PICO-RAY V1.0 <h1>PICO-RAY</h1> <p>Brought to you by the same productivity-focused team as <a href="https://www.lexaloffle.com/bbs/?tid=34765">Hypercolor Paint</a>, PICO-RAY offers state of the art 3D modeling and rendering capabilities for the Pico-8 computer system.</p> <p> <table><tr><td> <a href="/bbs/?pid=81360#p"> <img src="/bbs/thumbs/pico8_pico_ray_v1_0-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=81360#p"> pico_ray_v1_0</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=81360#p"> [Click to Play]</a> </td></tr></table> </p> <p><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/pico_ray-v1-0 p8_007.png" alt="" /><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/pico_ray-v1-0 p8_009.png" alt="" /></p> <h2>Features:</h2> <p>--Ray marched, photo-realistic 3D graphics<br /> --Soft shadows, ambient occlusion, reflection, refraction<br /> --Materials properties, including: color, gloss, reflection, refraction, patterns<br /> --Primitives including: box, sphere, torus, cone, plane, sponge, and landscape<br /> --Realtime wireframe box previews<br /> --Quick render modes for preview<br /> --2x2 anti-aliased high-quality mode</p> <h2>Instructions:</h2> <p>PICO-RAY requires the pico-mouse to operate. Click on menus and increment widgets to create and edit geometric primitives.</p> <h3>Menus:</h3> <p>-REND- Control rendering options<br /> 1x1:No skipped pixels<br /> 2x2:Render 2x2 blocks<br /> 4x4:Render 4x4 blocks (faster)<br /> QUICK: Render in fast grayscale with no shadows/materials (only 2X2 and 4X4)<br /> NORMAL: Render with shadows, materials<br /> HIGH: Render with anti-aliasing on (slowest)<br /> OUTLINE: Show bounding boxes for all objects (selected object highlighted in blue)<br /> HIDE MENUS: Hide menus for saving screenshots (click to turn menus on</p> <p>-PARAM- Create new objects and change the dimensional properties and shape of objects.<br /> [OBJECT TYPE] Type of the selected object primitive. Click left/right to change type.<br /> [Properties] Depends on the object type (e.g. height, width, depth of box)<br /> MAT: Material number (can also change form MAT menu)<br /> NEW: Click to create a new object--defaults to location 0,0,0<br /> DELETE: Delete selected object. Scene must contain one object, so last object cannot be deleted. (However it's object type can be changed.)</p> <p>-LOC- Adjust object position and orientation<br /> X:<br /> Y:<br /> Z:Click on arrow buttons to move selected object along axis. Hold down to repeat.<br /> AX:<br /> AY:<br /> AZ: Click on arrow buttons to rotate selected object about axis.</p> <p>-CAM- Control the camera location and orientation<br /> CAM X:<br /> CAM Y:<br /> CAM Z: Control the camera location<br /> CAM AX:<br /> CAM AY:<br /> CAM AZ: Control the camera angle</p> <p>-SCENE- Adjust the scene properties<br /> L AX:<br /> L AY: Direction of light source. (Infinite, directional light)<br /> SKY1 R,G,B: First sky gradiant color. RGB goes from 0 to 1 for colors<br /> SKY2 R,G,B: Second sky gradiant color.<br /> SUN RGB: Color of sun glow (seen when looking into the light source)</p> <p>-MAT- Material properties<br /> MAT: Material number of selected object. (Also, number of material currently being edited.)<br /> COL R,G,B: Base color of material.<br /> SPEC: Specularity of material.<br /> GLOSS: Glossiness of material.<br /> SHINY: Shine of material. (SPEC, GLOSS, and SHINY work together to create matte or glossy surfaces)<br /> REFL: Reflectivity (0 to 1)<br /> TRANS: Transparency of mateiral from 0 to 1 (completely transparent). This is affected by color of material. A value other than 0 will also enable refraction, which slows rendering.<br /> IOR: Index of Refractin. A value of 1.5 is approximately equal to glass. A value of 1.0 is equal to air. Refraction slows rendering.</p> <h3>Material defaults:</h3> <p>1--White<br /> 2--Red<br /> 3--Green<br /> 4--Dark Blue<br /> 5--Yellow<br /> 6--Light Blue<br /> 7--Purple<br /> 8--Orange<br /> 9--Black<br /> 10--Light Mirror<br /> 11--Dark Mirror<br /> 12--Wood Pattern<br /> 13--Black and White Tile (works best on planes)<br /> 14--Clear Glass</p> <h3>Primitives:</h3> <p>BOX: Box with Width, Height, Depth<br /> SPHERE: Sphere with Radius<br /> TORUS: Donut with R1 Major Radius and R2 Minor Radius<br /> CYLINDER: Cylinder with Radius and Height<br /> PLANE: Plane -- no properties. Note that the plane defaults to to 0,0,0 which may block the camera.<br /> SPONGE: Menger Sponge fractal<br /> TERRAIN: Mountain range</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/10844/7_3d_ray_edit-15 p8_003.png" alt="" /> https://www.lexaloffle.com/bbs/?tid=39433 https://www.lexaloffle.com/bbs/?tid=39433 Sun, 30 Aug 2020 06:17:57 UTC More Postcards from the Fringe <p> <table><tr><td> <a href="/bbs/?pid=68270#p"> <img src="/bbs/thumbs/pico8_landscape_16-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=68270#p"> landscape_16</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=68270#p"> [Click to Play]</a> </td></tr></table> <br /> Old Version<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 /> <table><tr><td> <a href="/bbs/?pid=68270#p"> <img src="/bbs/thumbs/pico8_landscape_07-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=68270#p"> landscape_07</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=68270#p"> [Click to Play]</a> </td></tr></table> <br /> </div></div></div></p> <p>Explore alien lands with a high-color world generator.</p> <p><a href="https://www.lexaloffle.com/bbs/files/10844/landscape-16_011.png" target=_view_image><img loading="lazy" style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/files/10844/landscape-16_011.png" width=160 height=160 alt="" /></a><a href="https://www.lexaloffle.com/bbs/files/10844/landscape-16_008.png" target=_view_image><img loading="lazy" style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/files/10844/landscape-16_008.png" width=160 height=160 alt="" /></a></p> <p>This is a new take on Postcards From the Fringe, which I made a few years ago. <a href="https://www.lexaloffle.com/bbs/?tid=28026">https://www.lexaloffle.com/bbs/?tid=28026</a></p> <p>Press &quot;z&quot; to visit a new, random planet.</p> <p>Features:<br /> --High-color flicker dither technology with 4,096 indexed colors/patterns [Warning flashing lights]<br /> --Endless bicubic noise mountains<br /> --Mountain shape variations: islands, hills, spires, etc.<br /> --Alien sunset sky with clouds<br /> --Water with ripples and sky reflection<br /> --Preview render in standard (non flicker) mode<br /> --Anti-aliased image composing with alpha channel</p> <p>To do:<br /> --Ability to save / share worlds<br /> --Controls to tweak variables</p> <p>Technical:<br /> This is a voxel landscape engine, actually adapted from Pico Kart but with height added. The system is not very optimized for speed right now... definitely room to make it a lot faster even if not real-time.<br /> Color handling is taken from my Hypercolor Paint cart. The palettes of colors and patterns are loaded from cart memory and generated by another cart that takes ages to run.</p> <p>-Electric Gryphon</p> https://www.lexaloffle.com/bbs/?tid=35481 https://www.lexaloffle.com/bbs/?tid=35481 Mon, 30 Sep 2019 05:26:39 UTC hypercolor_paint <p> <table><tr><td> <a href="/bbs/?pid=65915#p"> <img src="/bbs/thumbs/pico8_hypercolor_paint-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=65915#p"> hypercolor_paint</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=65915#p"> [Click to Play]</a> </td></tr></table> </p> <p>Introducing Hypercolor Paint, a high-color painting application for the PICO-8.</p> <p>Features:<br /> Paint in either high color mode (flicker) or standard (dithered) mode.<br /> While editing, pixels are treated as 56,535 level 3-channel color.<br /> Use a variety of brushes, with control of color, size and pressure to achieve desired effects.<br /> Save images (requires download)<br /> Export images (requires download)</p> <p>Example Images: (High color mode is simulated)<br /> <img loading="lazy" style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/files/10844/tiger_blended-01.png" alt="" /><img loading="lazy" style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/files/10844/hypercolor_paint-14_bunny_blend.png" alt="" /><img loading="lazy" style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/files/10844/hypercolor_paint-14_face_blend.png" alt="" /><img loading="lazy" style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/files/10844/palette_blended-01.png" alt="" /></p> <p>&lt;b&gt;Keyboard:&lt;/b&gt;<br /> Z: Switch between paint mode and palette mode<br /> Tab: Switch between high color and standard color mode<br /> Mouse: Paint with left mouse button</p> <p>&lt;b&gt;Palette Screen:&lt;/b&gt;<br /> ?: Show splash screen<br /> Color: Switch between paint mode and palette mode<br /> Save: Save image locally to hyper_color_save.p8 (image will be cropped)<br /> Load: Load image locally from hyper_color_save.p8<br /> Export: Export image to hyper_color_export.p8<br /> For standard color images, the sprite sheet will capture the full image.<br /> For high color images, data is stored in sprite sheet as well as map and sound effect locations.</p> <p>In order to view images, paste the following code into hyper_color_export.p8:<br /> &lt;code&gt;<br /> k_display_adr=0x6000<br /> k_screen_1_adr=0x0000<br /> k_screen_2_adr=0x2000<br /> k_screen_len=0x2000<br /> cur_frame=0</p> <p>function _update60()<br /> end<br /> function _draw()<br /> cur_frame+=1<br /> if(cur_frame%2==0)then<br /> memcpy(k_display_adr,k_screen_1_adr,k_screen_len)<br /> else<br /> memcpy(k_display_adr,k_screen_2_adr,k_screen_len)<br /> end<br /> end<br /> &lt;/code&gt;</p> <p>Technical notes:<br /> Two different 16X16X16 color look up tables are used to achieve responsive paint effects with dithering at 60 fps. In order to avoid a massive slow down (it takes a number of minutes to build the color cube) the look up table is generated by a different cart and loaded into sprite, map and sound memory.</p> <p>Example exported cart:<br /> <table><tr><td> <a href="/bbs/?pid=65915#p"> <img src="/bbs/thumbs/pico8_bunny-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=65915#p"> bunny</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=65915#p"> [Click to Play]</a> </td></tr></table> </p> https://www.lexaloffle.com/bbs/?tid=34765 https://www.lexaloffle.com/bbs/?tid=34765 Thu, 18 Jul 2019 06:08:27 UTC flyover_toy <p> <table><tr><td> <a href="/bbs/?pid=64881#p"> <img src="/bbs/thumbs/pico8_flyover_toy-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=64881#p"> flyover_toy</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=64881#p"> [Click to Play]</a> </td></tr></table> </p> <p>Been playing with cubic smoothing of simple noise for endless landscape generation.<br /> It's definitely slower than lerping, but I think it creates more realistic looking shapes. In order to get a nice interactive frame rate, I had to rely on scrolling the screen and just updating the top portion. It kinda works although the textures smear vertically.</p> <p>Press &quot;z&quot; to randomize parameters.</p> <p>-Electric Gryphon</p> https://www.lexaloffle.com/bbs/?tid=34382 https://www.lexaloffle.com/bbs/?tid=34382 Fri, 31 May 2019 04:43:44 UTC Pico Image Morph 2000 <p> <table><tr><td> <a href="/bbs/?pid=62193#p"> <img src="/bbs/thumbs/pico8_image_morph_a-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=62193#p"> image_morph_a</a><br><br> by <a href="/bbs/?uid=10844"> electricgryphon</a> <br><br><br> <a href="/bbs/?pid=62193#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Pico Image Morph 2000</h2> <p>Use your personal Pico-8 computer to create professional-quality image morphing effects as seen in blockbusters such as &quot;Willow&quot; and &quot;Terminator 2&quot;. Use the power of Pico Image Moprh 2000 to seamlessly transform one person into another or even change a cat into a dog!</p> <p>Pico Image Morph 2000 can even be used to create wacky deformations! The possibilities are endless!</p> <h3>Instructions:</h3> <p>Pico Image Morph 2000 requires the use of the Pico Mouse Accessory.<br /> While in &quot;Position Mode&quot;, locate deform points along critical portions of the image, such as centers of eyes or the edges of lips.<br /> Switch to &quot;Deform Mode&quot; to drag deform points to new locations.<br /> Use the &quot;Onion Skin&quot; button to switch between viewing the Start Image, Target Image, or a blended overlay of both.<br /> Click the &quot;Animate&quot; button to loop the animation<br /> The system include 5 different image to morph between.</p> <p><img loading="lazy" style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/files/10844/image_morph-09_005.png" alt="" /> <img loading="lazy" style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/files/10844/image_morph-09_003.png" alt="" /></p> <p><img loading="lazy" style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/files/10844/image_morph-09_2.gif" alt="" /> <img loading="lazy" style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/files/10844/monro_anim2.gif" alt="" /></p> <h3>Technical notes:</h3> <p>Morphing is done by using affine triangle transformations, and blending control point and texture coordinate positions for a source and a destination image and then compositing them together. This is a naive way to morph images, but at this resolution it actually works pretty well.<br /> Images are store in strings within the code--they are simply 64X64 16 level grayscale images. I can share the python script if anyone wants it.</p> <p><a href="https://en.wikipedia.org/wiki/Morphing">https://en.wikipedia.org/wiki/Morphing</a></p> <p>Totally worth watching is the demo real for Elastic Reality from the early 90's. <a href="https://www.youtube.com/watch?v=AD5R7dJM4eU">https://www.youtube.com/watch?v=AD5R7dJM4eU</a></p> <p>--Electric Gryphon</p> https://www.lexaloffle.com/bbs/?tid=33366 https://www.lexaloffle.com/bbs/?tid=33366 Sun, 24 Feb 2019 02:23:28 UTC