Log In  
Follow
AntiBrain

--[[

Hi, I'm antibrain! Thanks for checking out my page! Here is where I post ideas, technical demos, p8 utilities and games. Feel free to look around! If you want to reach out to me, I have discord [@antibrain0].

]]--

-- Big Release: Pipe Dream (features metroidvania like gameplay and some other neat mechanics. I'll release a demo after the music is done, unless I do everything else first)

Filament (12 days of CChrismas jam)
by
Frozen Caves (CC Mod)
by
AI plays Celeste Classic [CCGA 8.0]
by
PicoBrowser (v5.0)
by

Cart #filament-0 | 2025-01-19 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
5

Made (Well, ig finished) for the 12 Days of CChistmas jam!!!! No i will not spell crismats correctly.

post jam ver with some slight changes (Aka i changed three map tiles lmao)

Huge thank you to rubyred for hosting the event!!!!!
https://evergreengames.github.io/cchristmas/

5
1 comment



Cart #frozencaves-0 | 2024-08-20 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
8


itch io link
https://antibrain.itch.io/frozen-caves

Frozen caves (READ CONTROLS BELOW)

ESDF to move, Space to jump, W to throw a rope, R to throw a bomb.

Space to select (when in a menu)

Use the mouse to mine tiles and interact with things in the mine.

TAB for menu (Not enter or p!!)

If you're not a fan of jump being space, you can change it in the tab menu.

If you are having issues with lag in the mine, try clearing objects while in the town. (3rd tab menu option)

Story

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.

[ Continue Reading.. ]

8
1 comment



Thank you for clicking on this blog post! I have something very special to share with all of you.

This is a mod called "Pipe Dream", 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.

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.

Oh! theres the elephant in the room, and a big elephant it is. "water is cool, but its just water! do something special!" 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.

[ Continue Reading.. ]

2
0 comments



Cart #ccga-54 | 2025-04-19 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

PRESS Z/C AT FLAG TO SAVE AS TAS
TASFILE EXPORTS ONLY WORK ON DESKTOP P8!!!

CC GENETIC ALGORITHM

If runs are taking too long, Consider disabling FLIP? on page 3 of the settings (READ SETTINGS REFERENCE BELOW)

This is a mod of Celeste classic where you get to watch a genetic algorithm learn how to play Celeste classic.

Wiki page for the Genetic Algorithm

SETTINGS REFERENCE

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>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.

`DASH CHANCE` : % Chance for GA to decide to dash each frame. 10% by default.

`JUMP CHANCE` : % Chance for GA to decide to jump each frame. 10% by default.

`â–¤  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.

[ Continue Reading.. ]

27
13 comments



Cart #desktop_cat-1 | 2024-05-09 | Embed ▽ | License: CC4-BY-NC-SA
11

Desktop cat 1.0

This is a desktop wallpaper that lets you watch a cat run around and play! It uses up barely any cpu at all (~0.0113 as of 0.8), so dont worry about it eating up too much cpu.

Features:
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!

On boot, it spawns a random amount of toys (and cats!), but the chance for a lot to spawn is pretty low.

Sometimes the cats do try and break things, so dont be discouraged if you come back to find all of the toys are missing.

To install this animated wallpaper, put the file in /picotron/drive/appdata/system/wallpapers/. then just select it from settings.

[ Continue Reading.. ]

11
1 comment



Cart #avoider-0 | 2024-03-15 | Embed ▽ | License: CC4-BY-NC-SA
1

This is a simple arcade like game i made on launch day. posting it now that saving is fixed :D

Avoid asteroids for as long as you can!

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!

1
0 comments



Cart #roundelierescue-0 | 2024-01-28 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

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.
Bugfix in progress but its complicated due to the nature of the bug.

Roundelie Rescue (READ BELOW)

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, "Roundelie" (scientific name "Pygoscelis adeliae Sphericallus"). 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!

[ Continue Reading.. ]

4
1 comment



Cart #posseste-0 | 2024-01-02 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

posseste

M- Madeline? ...Is everything okay?

Disclaimer: Flashing lights


Thank you to the evercore team for all your hard work on evercore! This mod wouldnt be possible without your work.

4
5 comments



Cart #ohgod-0 | 2023-12-30 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
8

OH GOD

In this mod, madeline has had one too many drinks and is having trouble... living. "play" this "celeste" "classic" "mod" and "try" to make it to the "top" of the "mountain" as you "progress" through "levels" and the "game" until you "win"!!

This mod is 100% playable,

Thats it.

Good luck if you try playing this, as i couldn't get past 500m in testing. may the hangover gods be in your favor.

8
7 comments



Cart #stat-0 | 2023-12-18 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Simple cart that lets you view all of stat()'s outputs!

0 comments



Cart #mademaker-0 | 2023-12-15 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
6

My 12 Days Of CChristmas jam submission!

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.

Link to CChristmas jam page!

https://evergreengames.github.io/cchristmas/

6
1 comment



Cart #mini-0 | 2023-11-29 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

REALLY small game made as a tweetcart, but i couldnt compact it enough so ill just put it here.

Feel free to steal this if you want to try compacting it!

2
0 comments



Cart #magic-0 | 2023-11-07 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

Maaaaaaagic

this cart can detect if you are on bbs/SPLORE or on pico-8 editors.

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.

How this works:

Pico-8 carts can use ls() 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 " " or whatever files you have in your carts dir. this cart detects what platform you are on by checking if ls() is equal to nil or not nil, then doing something accordingly.

[ Continue Reading.. ]

2
1 comment



Cart #lightsout-15 | 2023-11-09 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
9

Lights Out

Dear photosensitive players: please show caution when playing this game. it includes minor and medium intensity flashing.

Where is this? Who are you? when am i?
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.

How to play:

The game includes instructions accessible from the title screen.

if you need more info on how certain mechanics work, feel free to ask below.

Special thanks

Thank you to the celeste classic community and the comments here for feedback on sound, gameplay and mechanics
! i really appreciate the help!

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.

[ Continue Reading.. ]

9
17 comments



Cart #fireonthemountain-0 | 2023-10-26 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

unlike boingleste, this one is creative!

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

------------------------------------------------

[ Continue Reading.. ]

4
6 comments




NEW ONESCRIPT DUMMY-PROOF VERSION (READ BELOW)

Remember RealTimeCelester and maybe RealTimeProggrupter?
They were RTC programs for celeste classic. what that means is they corrupt the games memory over time!
Now, have you ever wished you could ruin ANY cart? not just celeste? well i have the thing for you!

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!

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 rtc() 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. nxt cprt in: is how many frames until next corruption.

[ Continue Reading.. ]

1
0 comments



Cart #boingleste-3 | 2023-10-24 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

Thanks to the evercore team for the evercore cart! this wouldn't be possible without your hard work!

Boingleste

A big goofy, a little silly, but still fun!

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.

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 "had to do" and go do that instead! so many ways to rage quit and so many holes to walk into.

Also features its own REM jank! remember spike clips? well get ready for "Wall clips"! time it right and get shot up to the top of insert_wall_here! 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!

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!)

Important

Not saying everything else here isn't, but still.

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.)

I don't think gemskip is possible, as you cant walljump, only boing around.
And yes, i did try adding a boing sound effect, it just got way too annoying and i took it out.
Also please tell me my kiwi's look good. no one says they look good :(
And yes, the spinny thing is a pinwheel.

Here is my best time while playtesting:

[ Continue Reading.. ]

4
10 comments



Cart #tdtemplate-0 | 2023-10-19 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
5

Info:

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.

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.

5
0 comments



Hey everyone!

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)

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 "show" below and copypaste code into picotron, then run it.

-- get_key_<state/pressed> usage example
-- made by antibrain

-- define list of all supported key names

keys={"1","2","3","4","5","6","7","8","9","0",
       "q","w","e","r","t","y","u","i","o","p",
       "a","s","d","f","g","h","j","k","l",
       "z","x","c","v","b","n","m",
       "[","]","shift","space","backspace"}

--define vars

currentkeyname=""
keystr=""
keyoffset=0
kpressed=true
ikd=false

-- get_key usage:

-- get_key_pressed(key) checks if key "key" is pressed and returns "true" for the frame that key "key" is pressed.
-- get_key_state(key) returns 1 if key "key" is held. if key "key" isnt held, returns "nil" 

-- "q", "1", "space", "backspace" are all valid key names.
-- "Q", "!", "^", "`" 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 "keys[i]" 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)>480 then kstrx=6 kstry+=8 j=#keystr-keyoffset keyoffset=#keystr end
        if (#keystr<(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)=="5" 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 " " so that it doesnt just add the word "space" to keystr
            if currentkeyname=="space" then currentkeyname=" " end

            -- if backspace has been pressed, set keyname to "" 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=="backspace" then currentkeyname="" keystr=sub(keystr,0,#keystr-1) end
            keystr=keystr..currentkeyname

            --reset key vars
            currentkeyname=""
            ikd=false
        end
    end
end

[ Continue Reading.. ]

3
0 comments



If you post anything and go to the "posts" tab in your profile, it always shows at least one comment! (on PC)

I think this is because the number of "comments' shown, really is the number of posts in the thread, and the "thread" starts at your posts "title", and everything below it is a "comment", or a post in the thread.

An easy fix for this, @zep, is instead of displaying the length/how many posts there are in the thread, just change it to be posts_in_thread-1, or whatever your var names are. If it doesn't just work like that, then you can make a new var called something like "num_of_comments_in_thread" and set it to the number of posts in thread minus one, and display that instead of posts in thread.

1
2 comments





Top    Load More Posts ->