I don't know if anyone else has done a write up on this, but there is actually a pretty solid way to get around most of the data limits on the system, and it's kinda gross, and doesn't with the webplayer. The nice thing is that it gives you a legit file system, and basically limitless binary data!
Here is a proof of concept, I created two files (this one is test.pb)
CLS()
PRINT("")
PRINT("")
RELOAD (0x6000, 0x4300, 128)
LOAD ("TEST2")
RELOAD (0x6100, 0x4300, 128)
FUNCTION _DRAW() END
FUNCTION _UPDATE() END
|
Test 2 contains nothing but garbage code that would crash the machine.
The rational behind this is that:
1) If LOAD trashes execution, it would crash when the new program runs
2) If LOAD aborts the current thread, it would simply return to the prompt with TEST2 loaded
3) If LOAD doesn't allow shared state, it would copy the same thing out of the code area of the cartridge
This test proves 3 things...
1) RUN performs LUA compilation, so LOADing garbage data doesn't harm execution state
2) The existing machine state is preserved after a LOAD call, while altering the loaded filename and data stored with in the cartridge
3) Storage space is essentially limitless.
Basic rundown of what happens with LOAD / RUN
LOAD: Sets the active filename for the cartridge, loads the 32k cartridge into the cartridge buffer, and loads the first 0x4300 bytes into memory (tiles, maps, sounds and patterns)
RUN: Disposes of existing Lua runtime state, discarding any global values, functions, etc, then parses and executes the code stored in the cartridge buffer.
This also means that whatever is in ram at 0x4300~0x7FFF is PRESERVED BETWEEN RUNS. The only downside here is that LOAD will print garbage to the screen, so write to this area after you LOAD, but before you RUN the LOADed cartridge.
So, if you want to get past the data storage limits, use a LOAD without running first.
If you want to get past the CODE limits, store persistent data at 0x4300~0x7FFF and then RUN.

Something has survived from the past
You must kill the last surviving rebels pixels.
Video games must enter the industrial era.
For a maximun profit, bomb the city, nothing should survive in the 15 levels.
This game is the remake of Bomb On Pixel City VCS 2600 which was a demake of Bomb On Pixel City iOS which was a tribute to the vcs 2600.
This game is part of a plan to conquer the world
This game has not been approved for any audience.

Updated: Changed music, and the box sprite, and cleaned up collisions.
This is my first Pico-8 game. :D
Help Stephanie get dressed by collecting boxes of her clothes and accessories, but be sure to avoid gender stereotypes! Pride flags can refill your health.
It's a submission to the FEMICOM Jam #2 at itch.io.
It's pretty simple, but I hope you enjoy!
Warning: There are tiny pixel privates, like the old troll dolls. Nothing graphic, but if you don't want to see them, please don't play this game.

I've been playing way too much Celeste
so much in fact that I got a little bored and decided to see what the game would be like if it were made by an insane person who liked nearly impossible games.
would it be ok to post the cartridge on here, obviously giving credit for the code and sprites I haphazardly edited

I'm back! It turns out my game had heavy slowdowns after this several Pico8 updates, but on the other hand I got a bunch of tokens! I optimized the game quite a bit, added a new enemy and more. Still not finished, but I hope I'll be able to play this on a PocketCHIP soon :D
I hope you like it!
DESCRIPTION
-----------------
You're the son of Death, he is out for holidays, and left you in charge of the whole soul reaping business. But for some reason, the undead got out of their graves and are wreaking havoc.
Your objective is to find all the scattered souls in the graveyard, and to find the source of this madness.
Everytime you die, you will lose a Soul. If you lose all of them, you die for real. Souls are also your score, so the more souls you have when you reach the ending, the better player you are :D
Right now there's no ending, no highscore screen, nothing. But you can still get a bunch of those souls placed on the map.
There are also two Great Souls, hidden in difficult to reach areas. Those are upgrades, that will allow ReaperJr to Double Jump or Charge his scythe and release a special attack.
[b]CONTROLS

Hello guys!
Thank you for your comments.
Some updates:
-time limit
-random arrangement of bananas
-levels with more bananas
-banana adds two seconds to the time of the collection
-at start of new level from the time of the collection subtracted a random number
Hello guys!
I've just started learning pico-8 and this is my first test game.
You should take all bananas.
Controls:
cursors - move
z - take banana

So, I've been spending quite a bit of time these last few days trying to figure out the innerworkings of the PICO-8, especially the cartridge storage and I've basically got everything figured out at this point. One thing I thought might be helpful is letting everyone get a glimpse into the compression format that is used inside of the .PNG format, so you can avoid hitting that pesky 32kB code wall!
So, first I will start by breaking down the storage format for the current version of the .PNG. Note so far this has been a clean room RE, so if I'm duplicating anything that you already know, or has been described for you, just ignore me and move on.
Cartridge data is stored in the 2 lowest bits of a color channel, so each color is 8-bits worth of data (1 byte). The channels are ordered (MSB to LSB) ARGB (this is not raw uint8 data order from the image container, so keep that in mind). The images are 160*205, giving you a theoretical size of 32800, although only 32769 bytes are used, Everything past this is discarded.
0x0000~0x42FF: Ram initalizer (simply copied to RAM on load, see manual memory map for details) 0x4300~0x7FFF: Code (version 0 is ASCII encoded, version 1 is 0x8000: File version |

Could someone explain how glitch effects similar to Benjamin Soulé's Mr.Beam were done? No code as much as an overview.
Thanks in advance.
Alex
It would be like this:
floodfill x,y [c]
and it would work like floodfill tool in MS paint. In case of non-closed area, it'll take screen edge as the border.
This will make easier to make polygon-based 3D engines if one wishes to - currently we sure can but either we have to make up our own floodfill function which takes up tokens or have do with wireframes.

So, I'm currently using the Jelpi demo program to make a new game, and I was wondering:
Is there anyway to have multiple small maps?
What I'm using right now is going to be where there's technically one map, but it's separated into chunks.
However, I'm not confident about that.
I am going to put the game on the site Soon-ish.
This code:
sprinklerx = mid(sprinklermaxx+1,sprinklerminx-1,sprinklerx) |
is not equal to this:
if (sprinklerx>sprinklermaxx) sprinklerx = sprinklermaxx if (sprinklerx<sprinklerminx) sprinklerx = sprinklerminx |
Bug or what?
//edit: To elaborate, MID version always returns sprinklermaxx+1 for some reason, even if sprinklerx is 1. If we only had better debugging, like stepthrough, breakpoints...

This game is now what I had hoped it would be! Big thanks to the community for the art advice, and code fixes, and honest opinions.
HOW TO PLAY:
Button 1 to jump
Button 2 to peck
The regular peck strikes at an angle and give Poulet greater velocity, to allow jumping father. HOLD UP while pecking to do a "soft" peck, where your regular jump arc is not changed, for precise and controlled attacks. HOLD DOWN while pecking to do a vertical peck, to avoid flying off a ledge during an attack.
Every third balloon popped has a prize-- the first prize is a TOQUE, which lets Poulet take one hit before defeat. If you have your Toque when you collect yet another prize, then you get [b]HOTSAUCE
Memory Kitten, a kitten so smart he wears lab goggles, must bravely match off (and match up) the terrifying Mystery Card Invaders from the Second Dimension or face total humiliation at the upcoming Dinosaur Rodeo. Without his lucky dino-spurs, kept hostage by those depthless delinquents, he will never win the grand prize: a weapon of mass destruction!
Should a kitten, however smart, be allowed to own a weapon of mass destruction?
Are dinosaur rodeos cruelty to extinct animals?
Will the Stave King ever get the respect from Apple Tree that he craves?
The answers to these questions, and more, await, along with a catchy soundtrack and cool sound effects!
[b]How to Play
So, I just barely got started with PICO-8, and I'm very excited to do so.
The idea of implementation so far:
-Title Screen (Simple and straightforward; shuffles the collection of powers and allows the player a selection of game lengths, short being 4 powers, normal being 7 powers, long being 10 powers, and hardcore being 13 powers for the session)
-Starting Screen (a single start/end screen that produces the first neighboring "hub" scene)
-Hub Scene (a single screen blocked on two walls, the layout flips horizontally and vertically to create a four-screen block; with which to branch off transition rooms and corridors)
-Transition Screen (here's where the For loop takes the first 'n' powers, and applies them to the layout; before making the feedback loops relating to the items)
-Horizontal/Vertical Corridors (two endpoints with two or three screens of obstruction along the way, and mechanics defined in part by the powers used so far... the corridors go out from the transition screen, link to a second hub screen, and immediately double-back the same direction, to another corridor, that takes you to the item/prize room.
-Item/Prize Room (has the items, along with a one-way door often utilizing this power, to feed you back to the chamber you came from)
Finally, find a place in the feedback loop to hide two upgrades: a shot class, health up, or damage up, in the terrain that's generated along the way. This completes the item distribution cycle and accomplishes one important thing - it adds a new Hub scene, so now subsequent powers can be chained similarly from more Hubs, expanding the world while basically using the same fundamental setpieces.
-Objective/Puzzle Rooms
Finally, these will function like transition rooms, but for a thing you can collect for completion by utilizing your acquired powers; preferably in a resettable puzzle-like setting. I haven't thought this much through yet, so I'm not sure what I'm going to make these objectives be; but it's certainly part of the original Gentrieve formula that was missing. Perhaps generate a puzzle room that transitions to an objective room?
The powers, so far:
-Rollerball (planned to use more like Sonic Spindash more than traditional "morph ball")
-Bombs
-Grenades
-Double Jump
-Dash Drive
-Unlimited Jump
-Missile
-Super Missile
-Ice Missile
-Pong Shield
-Laser Blade
-Grapple Hook
-Warp Hole
-Shot Power Up
-Health/Battery Up
-Speed Booster
-Spread Shot
-Burst Shot
-Bank Shot
-Piercing Laser Shot
-Jetpack(?)
-SCUBA pack
-Shot Eraser/Blade Up
-Shot Deflector/Blade Up
*Shot effects are planned to stack up this time, rather than be toggled; charge shot for Grapple Hook.
Hopefully, the base sprite and rotations thereof will provide the variation of animations and mobility options I'd like to consider featuring...

PICO8Tool Is a Windows tool for exporting and importing images from your .p8 carts.
Export
Drag and Drop a .p8 file to preview graphic data. Then click on the Extract button to save as an 8bit png
Import
- Drag and Drop the .p8 file you wish to to embed a new image
- Next Drag and Drop a valid image file to replace the current image in the view
- Click the Embed button to import the current image and update the .p8 file
Viewer
- Pan and zoom the loaded image with the left button and wheel
Application zip v0.1-alpha
GitHub Page source

Made in about half an hour for August's #1GAM, since I have approximately 30,000 other projects on the go right now. Keeping to the theme of the most recent Ludum Dare, control the mower with the cursor keys and take down all those terrible terrible flowers, messing up your patch.
I'm rather pleased with the speed I put this together, simple as it is.






8 comments






