Currently doing an Adafruit PI GRRL build. So far Pico-8 is running great on the RPi 1! My plan is to include it in an emulation station menu - but I haven't found a good way to quit Pico-8 itself without a full keyboard.
My suggestion would be to simply add this to the splore menu.

This is my first attempt on creating a game using PICO-8 within 24h.
The goal is simple: your character need to eat the good pills, knowing that the pill should be of the same color as the character.
- Use Left and Right arrow keys to move the character, and Down arrow to Speed up the Pill
- Use X and Z keys to change the character's color
- Put you under a pill to eat it
Have fun!

EDIT: fixed bug and added title screen
old version:

This is a shabby prototype of a combat system.
I suppose the main influences are Ocarina of Time and Golden Sun.
Maybe the over-the-shoulder perspective is heresy on a platform like this, I was thinking it's a bit like pokemon though.
I think the most interesting feature is the way your mobility is limited. your position is locked to north/south/east/west and you can move between a near/far plane, like this:

It would be great if it was possible to draw in the sprite and map editors using only the keyboard (i.e. without requiring the use of a mouse/touchpad). With sprites being only 8x8, I find myself wanting an easy way to precisely move the cursor by one pixel at a time instead of the inherent looseness/analogueness of a mouse/touchpad.
I also think in general it might be thematically fitting for all of PICO-8's editor modes to be completely useable without requiring a mouse, to be similar to older computers for which mice were either optional peripherals or not present at all :)
Update 2019-05-13: Use the "Enter Menu" to "load" some code examples.
Update 2017-05-14: The sonification can be switched off :-) (or rather, you need to explicitly turn it on in the X-menu).
Update 2017-05-05: Added crazily sounding sonification.
Update 2017-04-24: Made the UI a bit more clear and fixed some bugs.
TL;DR:
Hold X, pres DOWN once, release X, and watch the nerdy numbers fill your screen.
MORE INFO
Hey all, I made a very simple visual IDE for writing and running code in Urban Müller's Brainfuck programming language. https://en.wikipedia.org/wiki/Brainfuck
Top part of the screen is your code.
Bottom left is your memory.

Just wanted to make sure I understood how things worked before diving into it too deeply.
So I understand the idea behind the pattern editor, I've used it to make short sound clips and stuff (and then these are obviously arranged within the music editor to make different instrument tracks, etc)
From what I can tell at a surface glance though, is that the music editor only supports one song. Is that correct? I get the impression that I can set the loop start/end points to choose between different pattern sets to allow for multiple songs (eg 0-7 might be song 1, 8-16 could be song 2, etc). Additionally, I assume that I can create my own pattern arrangements on the fly by means of poke()
Anyone know for sure?

Is there any way to rotate or flip a sprite map?
I have a platformer room that is a sprite map but want to be able to rotate/flip the map so I can get several rooms out of a single drawn room.
My alternative is to use the map as a blueprint and then just draw the sprites myself in the loop at coordinates so I can rotate them that way, but sounds like quite a bit of effort (for me and the P8). So hoping I can manipulate the sprite map somehow.

Hi,
The other thread about converting numbers to hex strings got me wondering if it was possible to do the same with fixed point data. (I did try searching here first but didn't find anything about this specifically)
I wrote a quick test to dump the bits out, but for floats I'm not sure where to find the fractional part. I figured it'd be in the top byte, but as the last test shows, it's not there (or my code is wrong). Is it possible to get at this data?
Thanks
function convert(value)
local binary = ""
for i=1,16 do
local shift = shl(1,i-1)
binary=abs(shr(band(shift,value),i-1))..binary
end
print("convert "..value.." to binary:")
print(binary)
local integerval = 0
for k=1,16 do
local str = shl(sub(binary, k, k),16-k)
integerval += str
end
print("and back again: "..integerval)
print("")
end
function _init()
cls()
convert(0xc0de)
convert(12345)
convert(3.14159)
end
|

I'm trying to make a platformer that just uses pixel colors as a way to check for the ground/walls of a level, no sprite flags. At first it seems to work, the guy (stick) moves left/right and jumps on the initial ground just fine. But then when you jump up on the platform to the right and either walk or jump off back to the left, he sinks into the ground.
See code below, but what I'm doing is checking the pixel immediately below the stick to see if it's a ground color and if so, stop applying the gravity. Seems simple enough...made sense to me but I'm clearly missing something.
I'm happy with the jumping action, it's nice and smooth and such but landing seems to be an issue. If anyone has suggestions for my code or just insight in general, I appreciate it. Making a platformer is new to me...I usually make shmup games :)
NOTE: Code as-is is not checking for left/right collisions, just ground for jumping.

Lua's standard library has a pair of handy functions called "tonumber()" and "tostring()", but they don't seem to be present with Pico8, which is unfortunate. I realized that you can get a lot more storage space by using strings, rather than sprite byte encoding, but passing it back into usable number data is challenging.
At best, I've got this so far:
function str2hex(str)
local dd={}
dd["0"] = 0 dd["1"] = 1
dd["2"] = 2 dd["3"] = 3
dd["4"] = 4 dd["5"] = 5
dd["6"] = 6 dd["7"] = 7
dd["8"] = 8 dd["9"] = 9
dd["a"] = 10 dd["b"] = 11
dd["c"] = 12 dd["d"] = 13
dd["e"] = 14 dd["f"] = 15
local obj={}
for i=1,#str do
obj[i]=dd[sub(str,i,i)]
end
return obj
end
|

I've made a simple Cellular Automata generator as my first PICO 8 cart.
You can change the generation rule by modifying the rule variable at the beginning of the code.
More details about Cellular Automata can be found here
Any comments are welcome.
Hey guys thought I would post this here as I think the answer will help other too:)
Basically I want to make a function that approaches any number in as big chunks as possible. Like this:
Speed = approach (target number, amount to move by)
So speed = approach(0, 0.5)
If speed was 0.4 before I want it to hit 0 and not -0.1
So if speed was a higher number like 7 every frame till it hits the target 0 it would take 0.5
Really useful for making velocity and stuff feel good :)
Any help very much appreciated :)

A fun little toy/demo displaying some maze algorithms.
Note the mazes generated are perfect mazes, meaning they have exactly one path from any point to any other point inside the maze. They're not so useful for making games without some adaptation.
Algorithms:
Binary tree: at each cell, decides to go either down or right. Produces a bias towards diagonal movement and obvious lines at the bottom/right.
Sidewinder: goes along a run of cells horizontally, then adds one passage downwards. Tends towards vertical movement and obvious line at the bottom.
Aldous-Broder: random walk filling in cells as they're visited. Produces a totally unbiased maze (assuming rnd() is unbiased) but can be slow at the end.
If you're interested in the topic I recommend this book (that I got the idea/algorithms from): Mazes for Programmers.






7 comments




