This s a nifty, but small code snippit I made. Basically it takes the persistent cart data and forces it into your work-ram (starting from the range you specify in the sms_ram_start variable), so 256 values of your work ram will be used, but this is nice. You can save the specified ram storage to persistent data with the other function.
★smsave() - saves memory to cart persistent data
★smload() - loads persistent data into work ram
--smart save manager --save work-ram to pers --and load pers to --work ram ★sms_ram_start=0x4300 function ★smsave() for i=0,255 do local _rs=★sms_ram_start+i if _rs>0x5dff then break end poke(0x5e00+i, peek(_rs)) end end function ★smload() for i=0,255 do local _rs=★sms_ram_start+i poke(_rs, peek(0x5e00+i)) end end |
Why would you need this? idk, but I was bored and this was fun to make for what ever reason.

- call _init_debugger() in the init function.
-
call _draw_debugger() in the _draw function.
- to print a message, call the _debugger_print() method and as a parameter pass in a variable you want to print.
you can also print warnings with _debugger_warning() and errors with _debugger_error()
EX:
...
_debugger_print("Hello World")
_debugger_warning("Hello World")
_debugger_error("Hello World")
...



@krajzeg and I released Vol. 1 EXACTLY TWO years ago! Vol. 2 has been in the works for a while, so we're excited to finally have this finished.
If you're not familiar with Pico-8 Tunes, the idea was to fill a Pico-8 cart with music that devs can use in their games. Jakub coded some amazing doodles and animations to accompany the music and create a demoscene-like experience. We're also very happy that @castpixel contributed her amazing artwork to Vol. 2. Thanks Christina!

If you're making a Pico-8 game, please feel free to download this cart, use the music in your own games, and check out some of Jakub's wizardry. You can also download all the music from










Based on one of the most controversial games for the NES (warning: NSFW), Jayson Lowis Harwin (i.e. me) brings you: Magic Bubble!
Description
Playing "Magic Bubble" is easy. Bubbles of many colors come floating upward. You must fit the Bubble Clusters together so four or more Bubbles of the same color touch one another. When four or more of the same colored bubbles press together, the pressure inside the Bubbles increases causing them to pop.
Keep the bubbles bursting since in every space a Bubble gets stuck there is one less place to put the next Bubble Cluster, and they just keep coming. If you can't pop the Bubbles fast enough, the cave fulls up, and the game will end.







PicoVJ
A functional VJ framework for Pico8! It's very scoped but still should be usable in a real gig with a single controller (6 buttons).
Instructions
Beat manager
LEFT - A single tap resets BPM / Beat num. A next tap in the 4th next beat, will store the calculated BPM.
X + UP / DOWN - adjust BPM speed.
X + LEFT / RIGHT - fine tune BPM sync.
Scene manager
Z + UP - set a random scene.
Z + LEFT / RIGHT - previous / next scene (cycled).
FX manager
UP / DOWN - increase / decrease FXRAGE from 0 to 1.
RIGHT - cycle FXFLASH value from 0 to 5.
FXRAGE is the hype value of the application, and how it behaves depends on each scene implementation. A scene at FXRAGE = 0 would be simple, slow, but the same scene at FXRAGE = 1 would be much faster and frenzy.

This is just a small school project for the science class in my school, nothing too big.
If you find any of the code as bad you can feel free to comment on it, always happy for some constructive criticism.
Gameplaywise i recomemend holding down Z for maximized firepower and always being ready to move given the random enemy spawn positions.
Story: Its simple, the damn fascists have taken over all of Italys airspace. You, the one and only Porco-Rosso needs to save it.






0.1.11g, Linux x64. This will crash P8:
x={} function x:__gc() end while true do y={} setmetatable(y, x) end |
If I change the loop to _update(), it doesn't happen.
However, there's another issue: it seems runtime errors aren't caught inside __gc(). If you put var="abc"+5 in there, it'll keep running until it crashes. If I do that, it will crash even using _update().
tokens: 823
This is a feature rich typewrite effect and its highly customizable. It features everything you need for RPG dialogue, including sprite-drawing mid line. Check it out for yourself with this demo here. (Press X to insta reveal or advance the dialogue).
is this unoptimized?
Well, probably yes. I'm still learning as I go, but I'm pretty proud of what I have so far so here it is. Enjoy, guys.
The code for it:
--shooting★'s ultimate text --★ is used as my signature. --[[ text codes: $u1 = underline text (0 for no underline) $b## = border color, ##= a number, 0-15 $o## = outline color $c## = text color $d## = delay extra (0-99) if more delay is needed, use $f## and create a custom fx for it. $f## = special effects for any of these, you can use xx instead of a number to reset it to default (based on the default config you have set up) alternatively, you can use 16 to set it to nil and remove it. ]]-- --==configurations==-- -- [ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=62835#p) |

This is a playable demo for our upcoming game Spycursion, an MMO about hacking and espionage set in a not very distant future, after a cyber war has changed the way we live.
It is a point and click adventure, and it's played with only the direction arrows and the x and z buttons.
The game is a work in progress and the adventure cannot be completed yet.
[Note: This is an update of an old cartridge with some improvements in the instructions]

I have this bit of code:
if f==1635 then sspr(0,32,128,64,64,64) sspr(0,32,128,64,-64,64,128,64,true,false) sspr(0,32,128,64,-64,0,128,64,true,true) sspr(0,32,128,64,64,0,128,64,false,true) end |
which causes the CPU load in a demo I'm working on to go over 1.0, even when f!=1635. If I comment out the sspr functions, the demo runs at 60fps. Is this speculative execution as planned, or is this a bug?
EDIT: I was able to drop the CPU load back under 1.0 by doing it as a separate function, like this:
function drawthese() sspr(0,32,128,64,64,64) sspr(0,32,128,64,-64,64,128,64,true,false) sspr(0,32,128,64,-64,0,128,64,true,true) sspr(0,32,128,64,64,0,128,64,false,true) end ... if f==1635 then drawthese() end |

