AntiBrain [Lexaloffle Blog Feed]https://www.lexaloffle.com/bbs/?uid=71860 Frozen Caves (CC Mod) <p> <table><tr><td> <a href="/bbs/?pid=152963#p"> <img src="/bbs/thumbs/pico8_frozencaves-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=152963#p"> frozencaves</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=152963#p"> [Click to Play]</a> </td></tr></table> <br /> itch io link<br /> <a href="https://antibrain.itch.io/frozen-caves">https://antibrain.itch.io/frozen-caves</a></p> <h1>Frozen caves (READ CONTROLS BELOW)</h1> <p>ESDF to move, Space to jump, W to throw a rope, R to throw a bomb.</p> <p>Space to select (when in a menu)</p> <p>Use the mouse to mine tiles and interact with things in the mine.</p> <p>TAB for menu (Not enter or p!!)</p> <p>If you're not a fan of jump being space, you can change it in the tab menu.</p> <p>If you are having issues with lag in the mine, try clearing objects while in the town. (3rd tab menu option)</p> <h3>Story</h3> <p>Legends tell of a massive treasure at the bottom of the mines, but none have dared to venture so deep. Until now, that is. Madeline, an aspiring spelunker wants to see if its as hard as the stories tell. Lucky for her, She has people willing to help her on her quest! Lani and granny have set up shop in the town, and offer services to help you improve your mining. Lani will buy any ores you find, and granny owns a shop where you can buy a variety of tools that will help you get deeper in the mine.</p> https://www.lexaloffle.com/bbs/?tid=143761 https://www.lexaloffle.com/bbs/?tid=143761 Tue, 20 Aug 2024 08:15:07 UTC Pipe Dream Teaser <p>Thank you for clicking on this blog post! I have something very special to share with all of you.</p> <p>This is a mod called &quot;Pipe Dream&quot;, which has been in the works for many months now. Some of you in the Celeste Classic discord server may have seen this already, but for anyone else, here are a few videos of the type of content to expect in the full game.</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/71860/pipedream_compress_4.gif" alt="" /> <p>Here we can see one of the several core mechanics, the water! Everything underwater is shaded too, which makes for some really interesting looking levels. The background tiles and ground tiles are supposed to give a sort of encrusted or run down ocean-y vibe, which i feel it does somewhat well in their current state.</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/71860/pipedream_compress_5.gif" alt="" /> <p>Oh! theres the elephant in the room, and a big elephant it is. &quot;water is cool, but its just water! do something special!&quot; Well, i have a treat for you! This mod is a Metroidvania! That means that backtracking and spitting paths are common, and sometimes you wont have everything you need to get to an area, so youll have to explore around a bit. This gif shows multiple exits and backtracking, which was a pain to get working and optimise, but it came out really well.</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/71860/pipedream_compress_6.gif" alt="" /> <p>Hey, Who turned out the lights!? I did! now, before you yell at me, There will never be an invisible tile or spike. No dark room puzzles here! well, the room <em>is</em> dark, but you know what i mean. (right?) Some levels will take place very deep underwater! The environment is colder, Its a lot harder to see, but fear not! By the power of Bio-luminescence (And normal luminescence), Some objects, including the player, will emit a light source! Yes, this basically does nothing since no tiles will ever be invisible, but it looks <em>REALLY</em> cool okay?</p> <p>Im sure youre all thinking &quot;Wow! This looks amazing! i want to play it so bad!&quot;, and, well, first of all, thank you, and second of all, Lets talk about release dates. </p> <p>The release window is...</p> <p>Drum-roll please....</p> <p>...</p> <p>Uh, Well, im not exactly sure. I have so many ideas for levels and mechanics and visuals that i really have no idea how long the mod will take. I want to say by the end of the year, but i said the same thing for CORE and that didnt end up happening (lol). My hopes, is that i can finish by the end of the year, but again, i really dont know. Ive been working on this a lot, but school is about to start again, and ill have a lot less time then i do now. I will release this eventually, so dont be upset if it takes a long time. The longer i take, the more polished and developed this mod will become.</p> <p>If you're <em>really</em> dying for an anti mod, Look forward to 'Frozen Caves', Releasing VERY soon! (Or you could check out some of my other things :3)</p> <p>Thank you for reading!</p> https://www.lexaloffle.com/bbs/?tid=143743 https://www.lexaloffle.com/bbs/?tid=143743 Mon, 19 Aug 2024 07:18:00 UTC Celeste Gym <p> <table><tr><td> <a href="/bbs/?pid=152817#p"> <img src="/bbs/thumbs/pico8_ccgym-3.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=152817#p"> ccgym</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=152817#p"> [Click to Play]</a> </td></tr></table> </p> <h1>CCGYM</h1> <p>This is a tutorial mod to help new players learn how to perform most speed tricks and glitches.<br /> Inspired by Strawberry Jam's Gym levels</p> <p>Thanks to rio for the idea :D</p> https://www.lexaloffle.com/bbs/?tid=143726 https://www.lexaloffle.com/bbs/?tid=143726 Sat, 17 Aug 2024 23:46:35 UTC Buckshot Roulette (ASCII) <p> <table><tr><td> <a href="/bbs/?pid=150383#p"> <img src="/bbs/thumbs/pico8_buckshot-5.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=150383#p"> buckshot</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=150383#p"> [Click to Play]</a> </td></tr></table> </p> https://www.lexaloffle.com/bbs/?tid=142847 https://www.lexaloffle.com/bbs/?tid=142847 Tue, 25 Jun 2024 07:02:29 UTC AI plays Celeste Classic [CCGA 6.1] <p> <table><tr><td> <a href="/bbs/?pid=147618#p"> <img src="/bbs/thumbs/pico8_ccga-47.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=147618#p"> ccga</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=147618#p"> [Click to Play]</a> </td></tr></table> </p> <h1>CC GENETIC ALGORITHM</h1> <p>If runs are taking too long, Consider disabling <code>FLIP?</code> on page 3 of the settings (READ SETTINGS REFERENCE BELOW)</p> <p>This is a mod of Celeste classic where you get to watch a genetic algorithm learn how to play Celeste classic.</p> <p><a href="https://en.wikipedia.org/wiki/Genetic_algorithm">Wiki page for the Genetic Algorithm</a></p> <h3>SETTINGS REFERENCE</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;"></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>CELESTE CLASSIC GENETIC ALGORITHM [CCGA] MOD BY ANTIBRAIN [SETTINGS REFERENCE] `FPS` : Simulation FPS. The timer in the corner will not be affected. You do not need to set it to a normal number. framerates like 22 and 46 are just fine. `# OF PLAYERS` : How many players to simulate at once. More players means it will learn faster, but too many can lag the machine. `CYCLE LEN` : How many cycles to run before selecting iteration to reproduce and grow. `ADDED PER C` : How many FRAMES to add after every cycle SET. [after `cycle&gt;max_cycle`] `FALLBACK` : Min # of frames the ai is allowed to go back from preserved solution in the event of failure. `MAX_H YSPD` : If enabled, MAX_HEIGHT will ONLY be updated if THIS.SPD.Y==0 `COIN REWARD` : Amount of points given for collecting a coin. `BASE MUTATE` : The base mutate chance from 0-100%, without any deaths or changes. The mutate chance for each instance will never go below this number. `SFX?` : Toggles sound effects that instances can make. (dashing, jumping, etc) `MUSIC?` : Toggles music. `SHOW N` : Toggles whether to display each player's instance number on itself. Enable to keep track of players. `FLIP?` : Toggles whether to call flip() every frame to update the screen. When disabled, each frame will be updated instantly after the last frame. When disabled, It does break menus and cause a LOT of flickering, so use caution. `IMPRV FALLBK` : Number of frames to wait after last improvement to try again from improvement. `IMPRV MOD` : Number of frames to add after improvement fallback, to avoid an infinite loop. Can be disabled. `MTATE KEEP` : Toggles if kept frames can be mutated. `SEED RND?` : Toggles weather to seed the rnd function. Read below for info about modifying the seed. NOTE THAT PAGE 5 SEED SETTINGS ARE ONLY AVAILABLE IF `SEED RND?` IS ENABLED. `S` : Shows current seed. `INC BY .1` : Increments or decrements seed by .1. `INC BY 1` : Increments or decrements seed by 1. `INC BY 10` : Increments or decrements seed by 10. `▤ PAGE X/Y ▤` : Current page number. Left/right to view other pages. Numbers can be changed with L/R. Booleans [TRUE/FALSE] can be changed with any button.</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p></div></div></div></p> <h3>CHANGELOG</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;"></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>CELESTE CLASSIC GENETIC ALGORITHM [CCGA] MOD BY ANTIBRAIN [CHANGELOG] 1.0: - Initial release 1.1: - Added - This changelog - Changed - Balloons now reward the ai for collecting them THE FIRST TIME - This is to increase the chances of winning levels like 2800m and 900m, where balloons are the only way of beating them, and there isn't much vertical reward. 1.2: - Added - Reward coin collectibles that make ai happy when grabbed :D - This is to make sure the ai wont just ignore certain VERY IMPORTANT sections of levels. aka ALL OF 200M AAAAAAAAAAAAA 1.3: - Added - Several menuitem features to change how the AI &quot;Learns&quot;, As well as sim speed and such. - Functions include: FPS (10-60), Weather springs reward the AI, Weather Walljumping rewards the ai (Based on height walljumped from), Reward granted from collecting a coin, Score penalty for dying, Frames added per generation, % chance to mutate each instruction not kept, and the ability to reset the AI, starting fresh with new params. - Changed - Coins no longer respawn once collected, as the ai would just die to get them again, and it follows the same path regardless of if the coin is there or not if it was collected at least once. (unless it died and the death pen is more then coin reward) 1.4: - Removed - Reset AI menuitem - Caused too many issues, might add back later once fixed. 1.41: - Fixed - &quot;Last Improvement&quot; Showed FRAME number instead of GENERATION number 1.5: - Added - Simple title screen with basic instructions - This is to allow changing settings before a simulation has been started. - Added - SRAND settings - Accessible when on title screen, select to enable, l/r to change seed. 1.6: - Changed - Dying now removes all collectibles. - This is to prevent the ai from just dying over and over again to keep getting the reward from grabbing coins or berries. 1.61: - Removed - Testing things i accidentally left behind (Whoops!) - Fixed - Typos 2.0 : - Major release - Removed - A ton of settings that dont work anymore - Removed - Some text that doesn't apply anymore - Added - Multiple players at once - Added - Fallback system - Based on deaths that generation. The more deaths the farther back mutations can be made, up to two seconds if 90% die, and 10 seconds if 100% die. This is to ensure that they dont get softlocked. - Changed - Its a real genetic algorithm now - Changed - Reward values - Higher death penalty - Changed - Height Rewards - Only counts as grounded if this.spd.y==0 - Changed - Most of the algorithm and code to work with multiple instances. - Changed - Title Screen - Changed - Keep system doesn't HAVE to keep &quot;working&quot; solutions if they are terrible 2.1 : - Fixed bugs - Changed - Fallback only resets to unmodified best if ALL instances die in a single generation. 2.2 : - Fixed bugs - Working towards fitness choosing error - For some reason, the program will choose a different instance then the one who was selected to reproduce, to reproduce. I have no idea why that is, as its not supposed to do that. Also sometimes instruction sets get boggled randomly and i dont know why. Patch in progress. 2.3 : - Fixed bugs - Note that this version is not public, due to some issues regarding the fitness function. 3.0 : - Added - Cycle Based system - Added - Ability to change `max_cycles`, and `frames_added_per_cycle` in pause menu. [SEE SETTINGS REFERENCE ABOVE] - After X cycles, Best of X cycles reproduces, Add X frames. - Changed - Algorithm now reproduces after `cycle&gt;=max_cycle` - Removed - Old reproduction system - Fixed - Issue where system would choose wrong iteration to reproduce. - I'm not entirely sure what fixed it, but it definitely shows up way less now. - Changed - Reformatted [CHANGELOG] and [COMMAND REFERENCE] to be in code blocks, because i think it looks nice. 3.1 : - Changed - Default Population from 5 -&gt; 10 - 5 Was simply too slow. 10 is low enough where the flickering wasn't too bad, and high enough where it wont take too long to beat scores and learn. - Updated - Cart label 3.21 : - Attempt to fix bugs - At STILL for SOME REASON just picks the WRONG instance to reproduce. Most of the time this wont really do much besides make it take longer to beat levels, but sometimes it can lead to them all dying over and over. 3.22 : - Added - Ability to change fallback length - This is to allow users to work around a suspected cause of the wrong_reproduce bug, until it is fixed. 3.3 : - Added - Many settings accessible from pause menu on title screen. See [COMMAND REFERENCE] Above for more info. 3.31 : - Changed - Each instance may only pick one coin up per generation - Changed - Coins no longer despawn on collect - These two fixes are to make sure that instances dont mess things up and devalue other, better instances. 3.4 : - Added - Ability to disable FLIP() call every frame - Note that this causes a lot of flickering and breaks the pause menu. - Removed - FREEZE function. Removed so that the whole cart will not freeze when an instance opens the big chest containing the gem. 3.41 : - Fixed - Timer silliness when FLIP() is disabled. 3.5 : - Changed - Fallback system only happens if all instances die in a run - Changed - Fallback duration is now no longer a dynamic parameter 3.51 : - Changed - Changed coin behavior back to what it was before - Coins now despawn on collect instead of instances only being able to collect one coin per cycle. 3.52 : - Fixed - Issue with fallback system not triggering properly, or even at all, upon a failure. 3.6 : - Fixed - LOTS of bugs - Removed - Ability to change death penalty - Changed - Death penalty is now a fixed penalty of &quot;-16000&quot; - Why keep bad solutions? - NOTE - Please note that, due to a few bugs, the ai will not always be able to complete levels quickly, or in rare cases, at all. - NOTE - With this new patch, it is now 100% possible for the ai to beat the game. 4.0 : - Added - AI now plays each level individually (eg, plays 100m until win, then plays 200m until win) - Added - Able to replay the entire run after ai reaches flag at summit - Fixed - SO MANY BUGS - Every known bug is now fixed!! Please let me know if you find any more issues with the cart. - Changed - Fallback is now by default 5f (5 frames) 4.1 : - Changed - Decreased mutate chance on death (70%-&gt;20% Per instruction) 4.2 : - Fixed - Issues when multiple instances interact with a single object at once 4.3 : - Fixed - Issues with fallback system (again) - Changed - MAX_FALLBACK is now a dynamic parameter. Repeated failures will increase fallback range. - FALLBACK (Setting) Is now the minimum value instead of the maximum value. See settings reference for more information on settings. - Changed - Default Population is now 25. - After a lot of testing, 25 instances was the best and fastest overall. Lower values such as 10 would generate suboptimal solutions, and large values like 50 would take a really long time. - Note - Larger population sizes generate better solutions but are slower, and small sizes will generate worse solutions, but are much quicker. 4.31 : - Changed - MAX_H YSPD (setting) is now false by default. 4.4 : - Changed - Keys now award bonus score - Changed - Cartridge ID is now #ccga 4.41 : - Changed - Keys are now worth 15 points, to prevent the ai from cheating - Changed - After ai's time is more then 900 frames, reset to best score. This is to avoid ram crashing. 4.42 : - Fixed - Issue where scores werent properly reset on level win 4.43 : - Added - Reset all instances if all of them died more then 25 times in a row - Changed - Reset all after 900 frames instead of going back to best 4.44 : - Changed - Minimum mutate chance per instruction is no longer dependent on current cycle - Changed - Mutate chance increase on death (+10 -&gt; +30*(DEATH_ROW+1), where 'DEATH_ROW' is failures in a row) 4.5 : - Added - New coin type for when AI needs to save a dash 4.51 : - Fixed - Issue with new coin type collecting at wrong times - Fixed - Bad coin placement in one pregem level 4.6 : - Fixed - Issue with timer overflowing - It now will only overflow after 32768 DAYS (90 Years) - Fixed - Issue with springs not hiding when below crumble leaves. 4.7 : - Fixed - Issue where playback was being mutated - Fixed - Issue where too many players were being spawned during playback 4.71 : - Fixed - Issue with springs giving their reward more then once 4.72 : - Changed - Default Minimum Fallback length lowered (5f -&gt; 2f) 4.73 : - Added - Now shows user current memory usage. 4.74 : - Fixed - Ai will no longer preserve garbage data. (Eg, if improvement at frame 100, only frames 1-100 are kept). - This may have fixed the replay issue. if anyone reaches the summit, please let me know via discord. (antibrain0) 5.00 : - Added - Speed based reward incentives - Ai will now strive for fast solutions in addition to working ones. If the ai finds a faster solution to a solved area, it will consider that an improvement. - Added - Since_improvement fallback and setting - Ai will reset itself to last improvement after a set number of cycles. 60 by default. feel free to change it in the options. - Added - Ai is now able to mutate kept solutions - This is to allow for the possibility for a faster solution. much smaller chance to mutate an instruction if it is being kept. - Changed - Default mutate chance is now 0.1% 5.01: - Added - Mutating kept frames is now toggleable (Off by default) 5.02: - Changed - Base mutate chance reverted to 0% 5.03: - Fixed - Issue where best frametimes were not being reset 5.04.1: - Changed - Temporarily removed some speed functions. GA now works as intended. - Please note that speed based learning may not function in this version. 5.1 : - Added - AI can now increase how long until a frametime fallback. (see settings reference `IMPRV MOD`) - Can be disabled, of course. 5.2 : - Added - Ability to seed RND(). See settings reference for more information. - Fixed - Issues with kept solutions keeping garbage data. - Fixed - Issue where frametimes were not being respected properly / being respected too much. 6.0 : - Fixed - Replay system. Please dm &quot;@antibrain0&quot; on discord if you encounter any issues, or just leave a comment below. - Changed - Increments for seed 6.1 : - Changed - GA now presses an input for frame instead of toggling its held state when called. </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p></div></div></div></p> https://www.lexaloffle.com/bbs/?tid=142040 https://www.lexaloffle.com/bbs/?tid=142040 Tue, 30 Apr 2024 02:43:59 UTC Desktop Cat <p> <table><tr><td> <a href="/bbs/?pid=143640#p"> <img src="/bbs/thumbs/pico64_desktop_cat-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=143640#p"> desktop_cat</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=143640#p"> [Click to Play]</a> </td></tr></table> </p> <h1>Desktop cat 1.0</h1> <p>This is a desktop wallpaper that lets you watch a cat run around and play! It uses up barely any cpu at <em>all</em> (~0.0113 as of 0.8), so dont worry about it eating up too much cpu.</p> <p>Features:<br /> Watch a cat run around and play on your desktop! It can roam around, sit or sleep, chase the mouse, or even chase a toy around!</p> <p>On boot, it spawns a random amount of toys (and cats!), but the chance for a lot to spawn is pretty low.</p> <p>Sometimes the cats <em>do</em> try and break things, so dont be discouraged if you come back to find all of the toys are missing.</p> <p>To install this animated wallpaper, put the file in /picotron/drive/appdata/system/wallpapers/. then just select it from settings.</p> <p>v1.1:</p> <ul> <li>Fixed - Collision not accounting for z position.</li> </ul> https://www.lexaloffle.com/bbs/?tid=140849 https://www.lexaloffle.com/bbs/?tid=140849 Mon, 18 Mar 2024 04:25:02 UTC avoid <p> <table><tr><td> <a href="/bbs/?pid=143212#p"> <img src="/bbs/thumbs/pico64_avoider-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=143212#p"> avoider</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=143212#p"> [Click to Play]</a> </td></tr></table> </p> <p>This is a simple arcade like game i made on launch day. posting it now that saving is fixed :D</p> <p>Avoid asteroids for as long as you can!</p> <p>If you like this game, or more specifically the engine running it, feel free to edit this cart or make your own things using its engine! I hope you all like avoid.p64!</p> https://www.lexaloffle.com/bbs/?tid=140696 https://www.lexaloffle.com/bbs/?tid=140696 Fri, 15 Mar 2024 22:24:14 UTC Roundelie Rescue <p> <table><tr><td> <a href="/bbs/?pid=140766#p"> <img src="/bbs/thumbs/pico8_roundelierescue-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=140766#p"> roundelierescue</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=140766#p"> [Click to Play]</a> </td></tr></table> </p> <p>bug: roundelie can kill the player if it is against the left screen edge and the player tries to push it further. if roundelie is on that edge, try not to push it any more or else you will die.<br /> Bugfix in progress but its complicated due to the nature of the bug.</p> <h1>Roundelie Rescue (READ BELOW)</h1> <p>Welcome to Adelie Rescue Team, or ART for short. Here at ART we make it our mission to save as many penguins in need as we can. That is why you're here! There have been reports of ice caps melting around the arctic, more specifically ones home to the rare Adelie penguin variant, &quot;Roundelie&quot; (scientific name &quot;Pygoscelis adeliae Sphericallus&quot;). Roundelie penguins are known for their mobility, or lack thereof. They cant move on their own anymore due to the climate changes in their natural habitat, and we worry they might go extinct. Thats why we called YOU here! Weve sent you to their home to rescue as many as you can. there sadly should only be four or five of them left here, but thats still more then none! good luck out there adventurer! May meep be on your side!</p> <h3>Controls+How to</h3> <p>Roundelie are heavy! dont let one squish you!<br /> You may push roundelie around without hurting it.<br /> Dash into its side to launch it a bit! dont worry about hurting it, roundelie are very strong.<br /> Line yourself up with one and walk away from it to drag it behind you.<br /> Dash away from it while dragging to throw it overhead.<br /> Roundelie arent affected by any spikes you may see, but dont let them fall off the level.</p> <h3>Credits</h3> <p>Meep - ON_MOVE function and inventing penguins<br /> My sibling - Sad Roundelie mechanic<br /> Celeste classic community - Support<br /> Roundelie sprite - Taco360<br /> EverCore team - Their work on the EverCore base cart</p> https://www.lexaloffle.com/bbs/?tid=140010 https://www.lexaloffle.com/bbs/?tid=140010 Sun, 28 Jan 2024 20:00:47 UTC Posseste (Celeste Classic Mod) <p> <table><tr><td> <a href="/bbs/?pid=139541#p"> <img src="/bbs/thumbs/pico8_posseste-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=139541#p"> posseste</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=139541#p"> [Click to Play]</a> </td></tr></table> </p> <h1>posseste</h1> <p>M- Madeline? ...Is everything okay?</p> <h3>Disclaimer: Flashing lights</h3> <p><div><div><input type="button" value=" Show " onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = ' Hide '; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = ' Show '; }"></div><div><div style="display: none;"><br /> Thank you to the evercore team for all your hard work on evercore! This mod wouldnt be possible without your work.<br /> </div></div></div></p> https://www.lexaloffle.com/bbs/?tid=55594 https://www.lexaloffle.com/bbs/?tid=55594 Tue, 02 Jan 2024 17:20:25 UTC OH GOD (Celeste Classic Mod) <p> <table><tr><td> <a href="/bbs/?pid=139385#p"> <img src="/bbs/thumbs/pico8_ohgod-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=139385#p"> ohgod</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=139385#p"> [Click to Play]</a> </td></tr></table> </p> <h1>OH GOD</h1> <p>In this mod, madeline has had one too many drinks and is having trouble... living. &quot;play&quot; this &quot;celeste&quot; &quot;classic&quot; &quot;mod&quot; and &quot;try&quot; to make it to the &quot;top&quot; of the &quot;mountain&quot; as you &quot;progress&quot; through &quot;levels&quot; and the &quot;game&quot; until you &quot;win&quot;!! </p> <p>This mod is 100% playable,</p> <p>Thats it.</p> <p>Good luck if you try playing this, as i couldn't get past 500m in testing. may the hangover gods be in your favor.</p> https://www.lexaloffle.com/bbs/?tid=55551 https://www.lexaloffle.com/bbs/?tid=55551 Sat, 30 Dec 2023 03:33:51 UTC STAT() Viewer <p> <table><tr><td> <a href="/bbs/?pid=138848#p"> <img src="/bbs/thumbs/pico8_stat-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=138848#p"> statviewer</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=138848#p"> [Click to Play]</a> </td></tr></table> </p> <p>Simple cart that lets you view all of <code>stat()</code>'s outputs!</p> https://www.lexaloffle.com/bbs/?tid=55369 https://www.lexaloffle.com/bbs/?tid=55369 Mon, 18 Dec 2023 16:05:44 UTC Mademaker (CChristmas Jam!!) <p> <table><tr><td> <a href="/bbs/?pid=138747#p"> <img src="/bbs/thumbs/pico8_mademaker-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=138747#p"> mademaker</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=138747#p"> [Click to Play]</a> </td></tr></table> </p> <h3>My 12 Days Of CChristmas jam submission!</h3> <p>In this mod, the mountain has changed. you play as the aspiring contractor madeline, armed with a hammer and a whimsical magic mouse cursor that can manipulate the world at her whim! normal contractor equipment. Progress threw the mountain and take advantage of the wacky new gimick! ooooor just build a path to the top and win every level... the choice is yours! i cant take it from you, my lawyer advised against it.</p> <p>Link to CChristmas jam page! </p> <p><a href="https://evergreengames.github.io/cchristmas/">https://evergreengames.github.io/cchristmas/</a></p> https://www.lexaloffle.com/bbs/?tid=55341 https://www.lexaloffle.com/bbs/?tid=55341 Fri, 15 Dec 2023 19:08:39 UTC MINIgame <p> <table><tr><td> <a href="/bbs/?pid=138023#p"> <img src="/bbs/thumbs/pico8_mini-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=138023#p"> mini</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=138023#p"> [Click to Play]</a> </td></tr></table> </p> <p>REALLY small game made as a tweetcart, but i couldnt compact it enough so ill just put it here.</p> <p>Feel free to steal this if you want to try compacting it!</p> https://www.lexaloffle.com/bbs/?tid=55170 https://www.lexaloffle.com/bbs/?tid=55170 Wed, 29 Nov 2023 20:17:29 UTC Magic Cart <p> <table><tr><td> <a href="/bbs/?pid=137098#p"> <img src="/bbs/thumbs/pico8_magic-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=137098#p"> magic</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=137098#p"> [Click to Play]</a> </td></tr></table> </p> <p>Maaaaaaagic</p> <p>this cart can detect if you are on bbs/SPLORE or on pico-8 editors.</p> <p>Basically, it detects if you've loaded the cart from online, or have it locally saved. the only way to load from online is from bbs/splore, so its easy to assume its one of the two.</p> <p>How this works:</p> <p>Pico-8 carts can use <code>ls()</code> to get a list of files in the current directory. online-loaded carts have no access to the filesystem and bbs has no filesystem, so in those cases ls is returned as NIL. when the cart is saved, only possible on a pico-8 editor, ls() returns as &quot; &quot; or whatever files you have in your carts dir. this cart detects what platform you are on by checking if <code>ls()</code> is equal to nil or not nil, then doing something accordingly.</p> <p>feel free to use this concept whenever you like!</p> https://www.lexaloffle.com/bbs/?tid=54941 https://www.lexaloffle.com/bbs/?tid=54941 Tue, 07 Nov 2023 21:59:18 UTC Lights Out <p> <table><tr><td> <a href="/bbs/?pid=136874#p"> <img src="/bbs/thumbs/pico8_lightsout-15.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=136874#p"> Lights Out 3.0</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=136874#p"> [Click to Play]</a> </td></tr></table> </p> <h1>Lights Out</h1> <h3>Dear photosensitive players: please show caution when playing this game. it includes minor and medium intensity flashing.</h3> <p>Where is this? Who are you? when am i?<br /> Find yourself in an unknown location with only a LIDAR scanner to your name. we'll see if you can make it out alive. who know's whats just around the corner.</p> <h1>How to play:</h1> <p>The game includes instructions accessible from the title screen.</p> <p>if you need more info on how certain mechanics work, feel free to ask below.</p> <h1>Special thanks</h1> <p>Thank you to the celeste classic community and the comments here for feedback on sound, gameplay and mechanics<br /> ! i really appreciate the help!</p> <p>All code, sprites, sounds, mechanics, levels were all made by me. if you find any bugs, please let me know via twitter or in the comments below.</p> <h3>Changelog</h3> <p>v2.2</p> <p><div><div><input type="button" value=" Show " onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = ' Hide '; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = ' Show '; }"></div><div><div style="display: none;"></p> <ul> <li>added - this changelog</li> <li>fixed - able to die when ending level <ul> <li>this was because of some variables changing at incorrect times.</li> </ul></li> <li>fixed - level ending can spawn red pixels <ul> <li>also modified level transition effect to pick from a pool of colors instead of a random value<br /> </div></div></div></li> </ul></li> </ul> <p>v2.21</p> <p><div><div><input type="button" value=" Show " onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = ' Hide '; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = ' Show '; }"></div><div><div style="display: none;"></p> <ul> <li>removed - some tiles used for debugging purposes</li> <li>changed - changed changelog to use bulletpoints to make it easier to read (?)<br /> </div></div></div></li> </ul> <p>v3.0</p> <p><div><div><input type="button" value=" Show " onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = ' Hide '; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = ' Show '; }"></div><div><div style="display: none;"></p> <ul> <li>added - save data features <ul> <li>saves time played, current level, and some other flags.</li> </ul></li> <li>fixed - can accidentally skip through paul's dialogue <ul> <li>this should make it easier to pick up on some of his dialogues which explain a certain mechanic</li> </ul></li> <li>fixed - xldr can leave pixel artifacts when in level transit<br /> </div></div></div></li> </ul> <p>v3.2</p> <p><div><div><input type="button" value=" Show " onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = ' Hide '; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = ' Show '; }"></div><div><div style="display: none;"></p> <ul> <li>changed - deaths now properly save to save file</li> <li>fixed - dying removes PLACED bulb and restores bulbs in &quot;inventory&quot;<br /> </div></div></div></li> </ul> https://www.lexaloffle.com/bbs/?tid=54889 https://www.lexaloffle.com/bbs/?tid=54889 Fri, 03 Nov 2023 21:06:52 UTC Fire On The Mountain <p> <table><tr><td> <a href="/bbs/?pid=136406#p"> <img src="/bbs/thumbs/pico8_fireonthemountain-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=136406#p"> Fire On The Mountain v1.0</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=136406#p"> [Click to Play]</a> </td></tr></table> </p> <p>unlike boingleste, this one is creative!</p> <p>Remember the floor is lava? no, not the tv show, im talking about the playground game. you know, where if you touch the ground you get maimed by your best friend? what? thats not normal? what are you talking about? anyways, this mod fully simulates what its feels like to touch the ground while playing that game. unless you're weird and didnt die inside when you lost at a game at school. well, forget dying inside! if you touch the ground here, you die in r- wait wrong game- you die! yay! walljump around and dont touch the ground! featuring patented seizure-o-matic effects! who needs to see the game when you have S M O K E</p> <h1>------------------------------------------------</h1> <h1>Important:</h1> <h3>If you are prone to seizures, then DO NOT PLAY THIS CART BEFORE DOING THIS! before starting the game, make sure to toggle off special effects in the pause menu. just pres enter or p and select &quot;disable effects&quot;. if you want them back, one, be careful and talk to your doctor. i was joking about the &quot;die in real life&quot; part, but this is serious. i know no one does it, but dont enable special effects unless your doctor makes sure it wont kill you.</h3> <h1>------------------------------------------------</h1> <p>Thanks for playing! I hope this mod burns in your heart the same way it burned into my monitor. </p> <p>Here is my best time while playtesting as usual (all berries too!)</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/71860/Screenshot 2023-10-25 8.35.49 PM.png" alt="" /> https://www.lexaloffle.com/bbs/?tid=54757 https://www.lexaloffle.com/bbs/?tid=54757 Thu, 26 Oct 2023 03:38:44 UTC Real Time Corrupter Portable (RTC-P) Now with Single-Script Version! <p> <table><tr><td> <a href="/bbs/?pid=136378#p"> <img src="/bbs/thumbs/pico8_rtcp-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=136378#p"> Real Time Corrupter Portable</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=136378#p"> [Click to Play]</a> </td></tr></table> </p> <h1>NEW ONESCRIPT DUMMY-PROOF VERSION (READ BELOW)</h1> <p>Remember RealTimeCelester and maybe RealTimeProggrupter?<br /> They were RTC programs for celeste classic. what that means is they corrupt the games memory over time!<br /> Now, have you ever wished you could ruin ANY cart? not just celeste? well i have the thing for you!</p> <p>Introducing RTC-P! The first portable RTC for Pico-8! Simple copy the below code, following the instructions, and bam! ruin any cart with ease!</p> <p>Important: Do NOT run the cart above, as it will do nothing. that is just the corrupter, but it has no cart to corrupt. to use, copy the code below and add it in a new code tab, or somewhere clutter-free. then add <code>rtc()</code> at the 1ST LINE in your update cycle. to change corrupt time or corrupt level, just go into the pause menu, go to the setting you want to change and press left or right. <code>nxt cprt in:</code> is how many frames until next corruption.</p> <p>REMEMBER: to use you must be able to EDIT your cart! to do this, just load it in desktop pico-8 or at <a href="https://pico-8-edu.com">https://pico-8-edu.com</a><br /> To load your cart, find it in splore, exit splore and press esc. for edu users, find your cart on the bbs and either download it and load it, or copy its cart id at the bottom of the runnable cartridge on its page. (something like <code>#rtcp</code> or <code>#18471</code>)</p> <hr /> <p>RTC-P Manual (For non-game loop using carts)<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;"></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>--rtc-- --portable rtc made by antibrain cf,clvl,ct=150,100,0 function rtc() if cf&lt;0then cf=0elseif clvl&lt;0then clvl=0end menuitem(1,&quot;corrupt spd:&quot;..cf,function(b) icf(b) end) menuitem(2,&quot;corrupt lvl:&quot;..clvl, function(b) iclvl(b) end) menuitem(3,&quot;nxt crpt in:&quot;..-(ct-cf)) ct+=1 if ct&gt;=cf then ct=0 for i=1,clvl do poke(abs(rnd(-1)),rnd(-1)) end end end function icf(b) if(b&amp;2&gt;0)then cf+=10 rtc()end if(b&amp;1&gt;0)then cf-=10 rtc()end return true end function iclvl(b) if(b&amp;2&gt;0)then clvl+=10 rtc()end if(b&amp;1&gt;0)then clvl-=10 rtc()end return true end --[[ how to use: copy all above text and put it in a new code tab. (click the plus up top) then add &quot;rtc()&quot; to the start of your cart's update loop. this only works in desktop p8 or edu, because you need to edit the cart to use it. to change values, simply open the pause menu (enter/p), scroll to the setting you want to change, then press ⬅️ or ➡️. &quot;nxt crpt in&quot; is the number of frames left until the next corruption. thank you for using rtc-p! hope you have fun ruining your favorite games! ]]</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p></div></div></div></p> <hr /> <p>Now, what if this is all too complicated? what if you just want to throw in a script and just have it work? well good news, ive concocted a easy to use RTC script that doesnt need anything! just put it in a <strong>new code tab</strong> or <strong>below all game loops</strong> (_init, _update, _draw) to use! the program will do the rest of the work.</p> <p> <table><tr><td> <a href="/bbs/?pid=136378#p"> <img src="/bbs/thumbs/pico8_rtcp_auto-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=136378#p"> rtcp_auto</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=136378#p"> [Click to Play]</a> </td></tr></table> </p> <p>Click <code>code</code> on cart above, or copy code below.</p> <p>HOW TO USE:<br /> Copy code, then go to a <strong>Pico-8 Editor</strong>- this can be on desktop pico-8 or at pico-8 edu, which you can access <a href="https://www.pico-8-edu.com">here</a>. then just load your cartridge you'd like to corrupt by typing <code>load</code> followed by its cart id. Cart id's can be found below the cart on BBS.</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/71860/Screenshot 2023-11-14 2.04.26 AM.png" alt="" /> <p>for example, to load <strong>manual rtcp</strong>, you would type <code>load #rtcp</code>. the &quot;-0&quot; isnt necessary. that's just the version number and pico-8 automatically grabs the latest version.</p> <hr /> <p>RTCP_OneScriptFitsAll(Most)</p> <p><div><div><input type="button" value=" Show " onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = ' Hide '; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = ' Show '; }"></div><div><div style="display: none;"></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>--[[ rtc-p+ ]]-- --portable rtc made by antibrain -- onescriptfitsall(most) ver -- cf,clvl,ct=150,100,0 if _init!=nil then _init() end function rtc() if cf&lt;0then cf=0elseif clvl&lt;0then clvl=0end menuitem(1,&quot;corrupt spd:&quot;..cf,function(b) icf(b) end) menuitem(2,&quot;corrupt lvl:&quot;..clvl, function(b) iclvl(b) end) menuitem(3,&quot;nxt crpt in:&quot;..-(ct-cf)) ct+=1 if ct&gt;=cf then ct=0 for i=1,clvl do poke(abs(rnd(-1)),rnd(-1)) end end end function icf(b) if(b&amp;2&gt;0)then cf+=10 rtc()end if(b&amp;1&gt;0)then cf-=10 rtc()end return true end function iclvl(b) if(b&amp;2&gt;0)then clvl+=10 rtc()end if(b&amp;1&gt;0)then clvl-=10 rtc()end return true end while true do rtc() if _update!=nil then _update() elseif _update60!=nil then _update60() end if _draw!=nil then _draw() end flip() --the below loop can be removed if you are short on tokens. if (_update==nil or _update60==nil) and _draw==nil then ?&quot;no update or draw loops found!&quot; ?&quot;for carts that dont use&quot; ?&quot;game loops, load #rtcp and&quot; ?&quot;use that instead.&quot; ?&quot; &quot; ?&quot;if loaded off bbs, please&quot; ?&quot;use a pico-8 editor to use this.&quot; stop() 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></div></div></div></p> <hr /> https://www.lexaloffle.com/bbs/?tid=54751 https://www.lexaloffle.com/bbs/?tid=54751 Wed, 25 Oct 2023 16:13:39 UTC Boingleste <p> <table><tr><td> <a href="/bbs/?pid=136307#p"> <img src="/bbs/thumbs/pico8_boingleste-3.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=136307#p"> Boingleste 1.3</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=136307#p"> [Click to Play]</a> </td></tr></table> </p> <p>Thanks to the evercore team for the evercore cart! this wouldn't be possible without your hard work!</p> <h1>Boingleste</h1> <p>A big goofy, a little silly, but still fun!</p> <p>Is Madeline made of rubber or is the mountain made of rubber? I personally don't think a whole mountain can just change what it's made of, so we'll go with the 1st option.</p> <p>Play as- Wait no- Try to play as Boingaline as you fall over and over into the same hole in 500m. Features an almost-state-of-the-art path tracing mechanic that shows you where you keep dying and will die again! dash into walls and remember the 4 things you &quot;had to do&quot; and go do that instead! so many ways to rage quit and so many holes to walk into.</p> <p>Also features its own REM jank! remember spike clips? well get ready for &quot;Wall clips&quot;! time it right and get shot up to the top of <code>insert_wall_here</code>! definitely a feature and not a bug i cant fix because REM is buggy to mess with, not just in game, but in code too!</p> <p>I would add a save feature like Kaizoleste had, But let's be honest- You aren't ever going to play this again after you rage quit. (And yes you will!)</p> <h2>Important</h2> <p>Not saying everything else here isn't, but still.</p> <p>All levels AND berries are possible! I've tested it (see img below!). Some levels can only be beaten with wall clips and spike clips, and no, i will not explain wall clips. (Don't worry, they aren't that hard to do.)</p> <p>I don't think gemskip is possible, as you cant walljump, only boing around.<br /> And yes, i did try adding a boing sound effect, it just got way too annoying and i took it out.<br /> Also please tell me my kiwi's look good. no one says they look good :(<br /> And yes, the spinny thing is a pinwheel.</p> <p>Here is my best time while playtesting:</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/71860/Screenshot 2023-10-23 7.59.05 PM.png" alt="" /> <p>Changelogs:</p> <p>v1.0<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;"></p> <ul> <li>Initial Release<br /> </div></div></div></li> </ul> <p>v1.1<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;"></p> <ul> <li>Removed - Any reference to &quot;Hard Mode&quot;, as hard mode was changed to be normal mode during development. <ul> <li>This is because of technical reasons, not to be evil. normal mode made boingaline only bounce if no dashes were left and she is not on the ground. this allowed for clipping through walls for some reason, and was removed halfway through development.<br /> </div></div></div></li> </ul></li> </ul> <p>v1.2<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;"></p> <ul> <li>Changed - Moved Boingaline quote to be lower down to seperate it from credits text. <ul> <li>Also changed &quot;-Madaline&quot; to &quot;-Boingaline&quot; because funny<br /> </div></div></div></li> </ul></li> </ul> <p>v1.3<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;"></p> <ul> <li>Changed - Made gravestone text funny<br /> </div></div></div></li> </ul> https://www.lexaloffle.com/bbs/?tid=54731 https://www.lexaloffle.com/bbs/?tid=54731 Tue, 24 Oct 2023 03:21:27 UTC Top-Down Game Template <p> <table><tr><td> <a href="/bbs/?pid=136110#p"> <img src="/bbs/thumbs/pico8_tdtemplate-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=136110#p"> tdtemplate</a><br><br> by <a href="/bbs/?uid=71860"> AntiBrain</a> <br><br><br> <a href="/bbs/?pid=136110#p"> [Click to Play]</a> </td></tr></table> </p> <h1>Info:</h1> <p>This can be used and is intended to be used as a top-down game template. What this is for is so you can make a top-down game without having to worry about shooting or movement making sense.</p> <p>To use, just download the cartridge and edit away! some starting sprites are included, as well as some functions to display ranges and landing point of shots.</p> https://www.lexaloffle.com/bbs/?tid=54656 https://www.lexaloffle.com/bbs/?tid=54656 Thu, 19 Oct 2023 19:35:37 UTC Picotron Keyboard Functions (PtKbTester) <p>Hey everyone!</p> <p>I've been messing around with picotron, and some people keep saying (including myself) that they hope for more buttons to work with or more input methods, but i've discovered something interesting that anyone can use! (until api changes)</p> <p>I've made a keyboard tester that is fully commented out, and explains how it works and how get_key works and how to use it. to run the cart, click &quot;show&quot; below and copypaste code into picotron, then run it.</p> <p><div><div><input type="button" value=" Show " onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = ' Hide '; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = ' Show '; }"></div><div><div style="display: none;"></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>-- get_key_&lt;state/pressed&gt; usage example -- made by antibrain -- define list of all supported key names keys={&quot;1&quot;,&quot;2&quot;,&quot;3&quot;,&quot;4&quot;,&quot;5&quot;,&quot;6&quot;,&quot;7&quot;,&quot;8&quot;,&quot;9&quot;,&quot;0&quot;, &quot;q&quot;,&quot;w&quot;,&quot;e&quot;,&quot;r&quot;,&quot;t&quot;,&quot;y&quot;,&quot;u&quot;,&quot;i&quot;,&quot;o&quot;,&quot;p&quot;, &quot;a&quot;,&quot;s&quot;,&quot;d&quot;,&quot;f&quot;,&quot;g&quot;,&quot;h&quot;,&quot;j&quot;,&quot;k&quot;,&quot;l&quot;, &quot;z&quot;,&quot;x&quot;,&quot;c&quot;,&quot;v&quot;,&quot;b&quot;,&quot;n&quot;,&quot;m&quot;, &quot;[&quot;,&quot;]&quot;,&quot;shift&quot;,&quot;space&quot;,&quot;backspace&quot;} --define vars currentkeyname=&quot;&quot; keystr=&quot;&quot; keyoffset=0 kpressed=true ikd=false -- get_key usage: -- get_key_pressed(key) checks if key &quot;key&quot; is pressed and returns &quot;true&quot; for the frame that key &quot;key&quot; is pressed. -- get_key_state(key) returns 1 if key &quot;key&quot; is held. if key &quot;key&quot; isnt held, returns &quot;nil&quot; -- &quot;q&quot;, &quot;1&quot;, &quot;space&quot;, &quot;backspace&quot; are all valid key names. -- &quot;Q&quot;, &quot;!&quot;, &quot;^&quot;, &quot;`&quot; are not valid key names. -- lowercase letters, numbers, and control keys (space, alt, backspace, etc) are all valid key names -- uppercase letters, symbols, F keys and hotkeys are NOT valid key names. -- if you want to use symbols (eg. shift+4=$), you can check if shift is held, then change output chars while it is. -- an easy way to check for all keys is to make a table of all supported keynames, then iterate over it. -- main update loop (30fps) function _update() -- clear screen and reset drawing vars cls() kstrx=6 kstry=20 --for every key in keys, run key checking script for i=1,#keys do -- check if key &quot;keys[i]&quot; is held and set it to currentkey currentkey=get_key_state(keys[i]) -- if current key isnt held, set it to 0 so future calculations dont die if currentkey==nil then currentkey=0 end -- if current key is held, then set its name to currentkeyname for later if currentkey==1 then currentkeyname=keys[i] end -- if key string length in pixels is longer than screen length, move it back by 476 ish pixels if (kstrx-(keyoffset*5))+(#keystr*5)&gt;480 then kstrx=6 kstry+=8 j=#keystr-keyoffset keyoffset=#keystr end if (#keystr&lt;(keyoffset)) then keyoffset-=j end -- display all keys and change its color to red if key is held print(keys[i],6+(i*6),6,currentkey+7) -- draw line at next char in keystr to show where next char will go if sub(tostr(flr(time())/2),-1)==&quot;5&quot; then line(((#keystr+1)*5)-keyoffset*5,kstry+8,(((#keystr+1)*5)+4)-keyoffset*5,kstry+8,currentkey+7) end -- draw key string at kstrx,kstry in hyperlink blue print(keystr,kstrx-(keyoffset*5),kstry,28) -- if a key hasnt been pressed this frame if ikd==false then -- set ikd to true if one is ikd=get_key_pressed(keys[i]) end -- if a key has been pressed this frame if ikd==true then -- set space to &quot; &quot; so that it doesnt just add the word &quot;space&quot; to keystr if currentkeyname==&quot;space&quot; then currentkeyname=&quot; &quot; end -- if backspace has been pressed, set keyname to &quot;&quot; so it doesnt print anything, then remove one char from end of keystr by setting keystr to substring of keystr from char 0 to char #keystr minus 1 if currentkeyname==&quot;backspace&quot; then currentkeyname=&quot;&quot; keystr=sub(keystr,0,#keystr-1) end keystr=keystr..currentkeyname --reset key vars currentkeyname=&quot;&quot; ikd=false end 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></div></div></div></p> <p>I'll explain some things about get_key here.</p> <p>There are two forms of get_key. <code>get_key_pressed</code> and <code>get_key_state</code>. they are very different and are usefull in their own ways.</p> <p><code>get_key_pressed(key)</code> returns true or false, depending on if key <code>key</code> is pressed. it returns <code>true</code> for one frame when key <code>key</code> is pressed.</p> <p><code>get_key_state(key)</code> returns nil or 1, depending on if key <code>key</code> is HELD. holding the key will make it return 1, and if key is not held, it returns NIL.</p> <p>as for what to put in <code>key</code>, there are rules on what a valid keyname is.</p> <p><code>&quot;a&quot;</code>,<code>&quot;space&quot;</code> and <code>&quot;ctrl&quot;</code> are all valid keynames.<br /> <code>&quot;A&quot;</code>,<code>&quot;`&quot;</code> and <code>&quot;!&quot;</code> are NOT valid keynames.</p> <p>Valid keynames include: lowercase letters; numbers; control keys (space,ctrl,backspace,shift,etc)<br /> INVALID keynames include: uppercase letters; symbols; upper key chars; anything you have to press shift for; F keys; programmable hotkeys.</p> <p>Interestingly enough, <code>&quot;[&quot;</code> and <code>&quot;]&quot;</code> are also valid keynames, even though no other symbols seem to work.</p> <p>If you want to use uppercase letters/symbols, you actually arent out of luck! you can write a script to check if shift is held using <code>get_key_state</code>, then change what keys do what.</p> <p>I hope this guide/tutorial/cart was useful to you all! just remember that the API still might change before 0.1, so dont expect this to work later down the line. ill try to update this if it stops working, but dont count on it.</p> https://www.lexaloffle.com/bbs/?tid=54536 https://www.lexaloffle.com/bbs/?tid=54536 Tue, 10 Oct 2023 20:59:49 UTC