Inspiration:
This tweetcart is an exploration of Entropy Locking, a process of randomly reducing the entropy of a generative space. In general, it is a technique that can be used to massively enrich for emergent behavior. The title is a reference to the sort of memeish "biblically literal angels" that are going around a lot, which I enjoy seeing. The intense shapes and colors here make me think of what it would be like to perceive an entity so far beyond comprehension... to the extant that would even be possible.
What is a Tweetcart Relay?:
Basically we receive a tweetcart as a 1/1 from a friend, and we modify it to make our own tweetcart, which we then send to someone else, to continue the process. Eventually it's our hope to have many relay chains going on with many people, anyone at all who likes to make tweetcarts or wants to learn how :)
Suggested Relay Guidelines from @Alexthescott (tz1St3n29AbYXZXV8W1BG41qYzz86J2CFAW7):
-> Copy the prior tweetcart 1:1, and tweak the cart while keeping some part of the original program until you've left your aesthetic changes however robust, and pass it on
or
-> Copy just a portion of the cart and build new, before passing on the tweet
Relay Information:
-> inspiration tweetcart: none (link; objkt number?)
-> inspiration tweetcart author: username; tz address
-> destination tweetcart author: @Alexthescott; tz1St3n29AbYXZXV8W1BG41qYzz86J2CFAW7
Pico-8 Source Code:
-> 128 Tokens, 275 Characters;
```
r=rnd
p=srand
s=r(-1)p(s)poke(0x5f54,0x60)poke(24364,7)a=r(32)+58b=r(32)+58c=1poke(0x5f2d,1)::_::_set_fps(60)
for i=0,2^8do
x=sin(t)+r()*r(a)y=sin(t)*cos(t)+r()*r(b)c+=r(1)pset(x,y,c)end
if(r()>.96)p(s)sspr(r(3),r(3),122,122,0,0,128,128)
if(stat(34)==1)extcmd("reset")
goto _
```
Explanation:
```
-- save chars by shrinking the names of these functions I will use a lot
r=rnd -- random number generator
p=srand -- re-seed random number generator
s=r(-1) -- get a random number of all possible numbers to use as seed
p(s) -- set the seed for initial setup
poke(0x5f54,0x60) -- enable the use of the display as a source instead of the sprite sheet
poke(24364,7) -- turn on horizontal + vertical mirror
a=r(32)+58 -- get a max value for x in our random loop
b=r(32)+58 -- same but for y
c=1 -- color, will increment, needs to be global
poke(0x5f2d,1) -- enable mouse control LOL
::_:: -- label for GOTO statement, the draw loop, saves chars and also enables lots of framerate glitches (yum)
-- I don't know why, but I swear that if this is in the loop, the colors get weirder
_set_fps(60) -- set 60 fps mode on
-- loop within the loop
for i=0,2^8 do
-- this began its life as a lemniscate
x=sin(t)+r()*r(a)
y=sin(t)*cos(t)+r()*r(b)
c+=r(1) -- increment color
pset(x,y,c) -- draw a pixel
end
-- entropy locking, if random value is high enough, reset seed, and randomly feed-forward expand a part of the display
if(r()>.96)p(s)sspr(r(3),r(3),122,122,0,0,128,128)
-- UX; if click or tap the screen, generate a new one
if(stat(34)==1)extcmd("reset")
goto _ -- go back to the label and end this draw loop iteration
```
To Friends and Creators:
Want to change the code, or make a relay Tweetcart of yourself based on this one? No problem! You can find the official education edition of the Pico-8 here, for free, usable in the browser, thanks to the Pico-8 Creators lexaloffle & co: https://www.pico-8-edu.com/ . Simply press escape to get to the code editor, copy and paste the source code here into there, and press ctrl+r to run the pico8.
You can find my social ids, newsletter, and links to tutorials at aebrer.xyz . Please feel welcome to join our Neoretro Creative Coding discord, and learn together :)
License:
CC0