I'm trying to do some table trickery with the __newindex()
metamethod, but I can't actually create a new entry in the table from inside of it unless I nil-ify the __newindex
key first, because it'll just recurse back into it when I try to set something.
Supposedly, we're meant to use rawset(t,k,v)
to create keys safely while inside there, but we don't have access to that on pico.
@zep, is there any chance you could give us access to rawset()
in the next version, so I can do this properly? Setting the metamethod to nil and then restoring it just feels horribly inefficient and klunky, since it triples the work needed when I first set vec.x=123. I hope this is just an oversight in the list of exported Lua features.
Edit: Apparently there's a rawget()
too. I should probably ask for that as well.
Please? :)
PS: Also, since I'm being all greedy anyway, next()
would be nice too. ;) But not as important.

Hi, so I bought a pocketchip just to run pico8 and i was a bit disapointed that it doesn't run near as well as i expected (stutters, slows down, etc).
Are you guys aware of something else? I love the concept of the arduboy which dedicates 100% of its very limited resources to the game it runs. I'd love something like that but for the pico8, or at least as close as possible (maybe a super light distro that boots straight in pico8 with all 'extras' removed?
Thank you.









(Updated March 2025)
[box=ccffcc]You are Pat Blastrock, down on your luck space hero. After a particularly ill-fated adventure, you stumble into Space Tavern Station with only 500 credits to your name and a busted up escape pod. (It was a very ill-fated adventure.)
Luckily, if there's one thing Space Tavern Station has an endless supply of, besides surprisingly vile synth-ale, it's suckers. You're going take the only option you have left and gamble your way back to fame and fortune.
The poker played here at Space Tavern Station is not a fancy tournament. Here, they play tavern-style. You can leave the table at any time, but you can't go "all in". If you get raised out, you have to fold, so make sure you bring enough cash to play a grownup's game.
Some of your opponents might be desperate enough to bet the keys to their ship. Don't feel any remorse in taking that bet. It's not your problem how they're going to get home.
If you're light on cash, you can go to your inventory and sell something.










This update finalizes version 0.4. I changed what version 0.4 would include, I moved coin collection to the next release and introduced a camera overhaul to the current release. The camera overhaul is a very close match to the camera from Super Mario World. I still haven't implemented the platform snapping and free movement in the y direction when Mario/Luigi jump at max height (Equivalent to jumping with a full P-meter from Super Mario Bros. 3). I also temporarily confined the game space so you will no longer fall off the edges of the map, this is going to be obsolete once I change how we load the map data.
Thanks for checking this out, I appreciate any feedback anyone has.
Little Mario Bros.
This is meant to be a clone of the original Super Mario Bros. with PICO-8 size limitations. I'm aiming for 1:1 physics, and level design. Not sure on how many levels, I'm hoping to make the game up to the first castle.
Features by version
- 0.1 - Collision, movement, and ability to jump.
- 0.2 - Finer tuned movement, additional animations (jumping, skidding, etc.)
- 0.3 - Jump Buffering, near 1:1 physics (Missing water physics and enemy bounce)
- 0.4 - UI, minor death conditions, running animation based on speed and camera overhaul.
- 0.5 - Map overhaul to store maps as data to load on the fly.
- 0.6 - Block animations and coin collection
- 0.7 - Continue with either enemies or powerups (dreading the pixel art for big Mario/Luigi)
- 0.8 - To be continued...







Built on top of the Collide demo, Hrozgo's Helltruffles started life as a Zelda-like adventure game engine for my class to use and build upon. It has since ballooned in scope and complexity a bit into its own thing worth finishing. I am posting it here in a not very well commented state because it is almost a pretty solid framework that others could use to tell little stories.
Ask if you have any questions about what is going on in the code! Note that collisions are currently turned off but are there and can be made to work if you want them to...
It's practically entirely coded and put together on a pocketCHIP.


Summary: When working with _update60(), a jump in cpu load which causes it to exceed 1.0 will SOMETIMES cause the cpu load to get stuck above 1, dropping the fps to 30. To test above, tap "Z" to toggle extra computations. The CPU load should be below 1 when overload is off, and above when overload is on. cpu load tends to get "stuck" above 1.
Hi folks,
I've come across what I think is a strange bug. I created the cart above to test it. If you are interested, I suggest looking at the code - it's less than 50 lines.
I am performing arbitrary calculations in the update step, and just drawing random pixels in the draw step. Normally, the CPU load should be below 1. By pressing Z, I add extra calculations to the update step, causing the cpu load to exceed 1 and dropping the fps to 30. If you try mashing Z, sometimes the CPU load gets "stuck" above 1, even when there is no overload going on.
Does anyone have any ideas what might be happening?
Thanks,
Palo Blanco




Hi all,
Has anyone managed to edit their HTML file to successfully redefine the default E/S/D/F controls in the webplayer? Basically, I want it to be intuitive for non-PICO8 players using the web interface, so I'd like them to be able to use WASD instead.
I've edited the section of JS inside the exported HTML file, to detect keydown events for WASD then write to the live input bitfields as suggested in the comments, and this works to some extent. However, now the PICO8 is picking up certain button presses twice, because they belong in both WASD and ESDF. For example:
I press W to go up, and this works fine (only belongs to WASD)
I press S to go down, and I move down and left (WASD => move down, ESDF => move left)
It seems the live bitfields work in addition to the standard key detection of the PICO8, but I want it to work instead of it.
I hope this makes sense?
Thanks in advance!
Neil
This is my lowrezjam 2017 entry. I wanted to recreate the lost woods type of maze in the zelda series. There are things I am happy with, and things I am not. I am going to write up an article about what I gained from doing this jam, even though I didn't submit the actual entry in time. It's a journey not the destination kind of thing when you are learning.
So, make your way through a week as a ghost trying to find your way around a strange place. If you like memorizing long strings of four possible directions then this is for you. You have one maze per day to figure your way out and each day the length increases. Its a Monday through Sunday grind.
It's not much, but enjoy it for a few minutes.
Hi,
I'm in the progress of cloning the Atari game "Fall Down" (https://atariage.com/software_page.php?SoftwareLabelID=2722) written by Aaron Curtis. It's a simple but very addictive game where the down falling players gain points by passing lines. A player will die when he reaches the top of the screen. It is already playable but the following needs to be implemented:
- AI for single player games
- adding power ups for e.g. creating gaps in lines or becoming faster
- title screen with game mode selection
- end screen
- sound
- acceleration of platfoprms/lines
Player one is controlled via cursor left/right, player two via "s" and "f"
Cheers,
odie
This is my first thing I've made with Pico-8. Press Z/click to add a circle, and press X to clear.
How it works:
For every time you draw a circle it adds the X and Y of it to a table. Then, in the draw function, all circles in the table are rendered. I thought it was interesting how this rendered the circles so I published it for everyone to see.
