Hello,
this is my first try at Pico8 with a simple shoot'm up
inspired by a submission to @pixelsweekly
Finally, i got back to 194-8 !
lots of new stuff in this build so i decided to jump to 1.0
Controls:
-Arrows to move
-X to Fire
-C to shoot big Lazor (the bottomleft jauge replenish when you catch pink globe)
changelog 1.0:
- lots of cleaning in the code (i'm sure a lot more can be done)
- boss battle with intro, music & attack pattern
- ennemies lifebar
- catching yellow orb while already at full health will boost your main gun up to 4 times
- lots of new ennemies and they now spawn in some pattern
- after each boss you continue the game with tougher opponent, and a new color palette
- your ship now fly faster when not firing
- the overall difficulty is ranked up
previous versions:
[hidden]
changelog 0.2:
- added player collision and life
- improved title screen
- put the right title -_-' it was 190-8 before ...
- added trail and engine FX
- added ground tower firing at the player
- added some new tiles and longer background loop
- added special power on C
changelog 0.3:
- New "Lantern Games" Splashscreen
- Replaced the "nuke the screen" power with a big lazor
- Added pink collectable that recharge the lazor
- Added gold collectable that give health or more lazor if your health is full
changelog 0.4:
- Title screen rework
- SFX for Lazor
- cleaner lazor beam
- yellow powerups now increase your fire rate if your health is already full
- Score screen with cartdata support for highscore
- smoke trail when you're or the ennemies are near death
- more FXs
- more BG environment
- fixed the fact that turret bullet can kill the ennemies
- boss arts done but not used ingame
Controls
Arrows - Movement
Z - Hold and release to make sounds. The longer it's held, the louder the sound
X - Move silently
This is a demake of our game Dark Echo (Steam, iOS, Android). You are trapped in a world of absolute darkness and can only see via visualized echolocation.
Known issues:
- You may occasionally walk through a wall. If you get stuck, try and find the exit from outside of the level - bonus feature!
Note:
This isn't a forum post saying "OMG PUT PICO-8 ON STEM NAOW!!!!", but rather a post on whether or not to do so.
This question was going to get asked eventually, so I thought I might do it.
Other engines, such as Game Maker have made it on Steam, so why not PICO-8?
PROS
- Would get more attention
- Steam Workshop could make it easy to get games
- Steam Discussion is pretty useful
- Paid games
CONS
- CoD Children might show up and say "THE GREEFICS LUK STOOPID"
- Valve gets a 10% cut of the profit (They're not bad people)
- The BBS would be useless as a result
- Again, Valve gets a cut
Think it over, but I could go either way...

A little game that is based on Zep's demo Jelpi. Using Jelpi's platforming code I reworked it to make a 2 player chasing game. Player 1 (the robber) has to collect all the diamonds before player 2 (the cop) catches them.
I have played around with the level layout to try to make it a bit easier for player 1, but I think it is still a bit easier for player 2.
Please let me know what you think! and I hope you enjoy it
(the gif was made with just me playing with two hands so it plays a bit weird)
1.4
Gave robber the ability to head butt the cop of they are standing still to prevent the cop camping on the last diamond
Changed end game text to say 'Press Z to restart' instead of 'Press button to restart'
1.3
Added new player graphics
Added more sparkles
Changed end round sequence slightly
Modified sound effects
Removed music
1.2
Added some new graphics (background and items).
Added player scores.
Fixed issue with player landing inside a platform (hopefully).
Fixed issue with music not starting again on new game.
1.1
Fixed bug with walking through screen edges on middle platform.
The string to number conversion code is sometimes setting the least significant bit erroneously when it converts negative numbers.
For example: "-1"*1 should and could exactly equal -1, but it does not, it equals (-1 + SHR(1,16)). This is vexing to the kind of programmers like me who like to use -1 as a special value...
BONUS WEIRDNESS: It doesn't always set it on negative numbers. In fact it seems like the pattern is if the number could be exactly represented, the LSB is set, whereas if the representation is already inexact the LSB is the same as the non-converted version.
So "-0.5"1 == -0.5+SHR(1,16) (not desired), but "-0.2"1==-0.2
(This function was useful looking at this...)
function bits(n) local a,s a=shr(1,16) s="" for i=0,31 do if band(n,shl(a,i))==0 then s="0"..s else s="1"..s end end print(s) end |
Hi guys, I just discovered PICO 8 recently, and got really thrilled about it, as I always wanted to make some games, and looks quite easy to work with.
Thing is, I have no idea of programming; do you think I can learn while using it? or should I get some notions first? any reccomendations?
Thanks a lot!

Technical Side of Things
To run PICO-8 games, I'd imagine the system would be a Linux machine, with a customized OS that only has the dependencies, a theme that looks VERY similar to the PICO-8 start-up screen, and doesn't show output.
(Just a thought) All it would need are the dependencies required to run PICO-8, and a small amount of flash storage that holds the system information (saying this is a well-hacked up version of Linux), along with the PICO-8 software.
Outer storage would probably be best accomplished by an SD Card slot (or a Flash drive, if you wish). The outer storage would be used to hold the games (and I guess also update the firmware), but what should we do if there isn't one detected? We could either run one of the Demo games (kinda like the Sega Master System, but not hidden), or just show a screen that says "No SD Card found!".
Console Design
There are quite a few Microconsoles out at the time of this writing that look just like slabs of black plastic. LAME!

The following code runs fine:
function _init()
local array = {}
for x = 1,8192 do
array[x] = {}
end
for x = 1,8192 do
foreach({},nil)
end
end
|
If I change the foreach line to
foreach(array[x],nil) |
I get an out of memory error. This suggests to me that indexing the array allocated memory. The memory appears to be garbage collected eventually; if I use a smaller array and put the code in _update, I don't see any error.
Testing out an engine for Super Scaler games. It's still work in progress, much is needed to be worked out with how I ultimately want to handle the slices (tiled 8x8 images or custom stretches and sizes for everything?).
Currently, sorting of the layers is not in there as I'm having trouble figuring out the best way to use FOREACH().
I want to ADD and DEL from the tables that make up the sprites, and then use FOREACH() to do the scaling rather than arbitrary FOR/END loops based on a sprite limit. The idea is that if I can keep adding to the front and deleting from the back, then I don't need to sort anything (i.e. speed increase)...but I can't get it to work!
Halp? :)

Controls:
Z - Examine/Pick-up/Drop
X - (not used until later in the game)
Up - Jump
Down - Duck/Crawl
Left/Right - Move
Story:
You have been drawn to a mysterious place, what secrets does it hold, and what will they mean for you?
Help:
When not carrying an item, you can examine things. If you're stuck, try examining signs and other objects.
When you have explored far enough into the western temple, you can use the 'X' button.
I'm calling this "done" though there are a few things I might touch up in the future. Right now though, I've spent too long working on this already and need to get back to work on things that stand a chance of making some money :P
1.4: fixed map initialisation corrupting some sprites
1.3: fixed a bug & added some minor text
I wanted to experiment with modifying SFX data via a cart.
Features:
- Compose and edit music
- Copy and Paste selections within patterns and between patterns
- Transpose selection by octaves
- Save to cart
Known issues:
- Modifying selections only works if the selection was made in a leftwards direction.
- The music staff isn't actually accurate at all. It just uses one px per semitone.
- Green play line isn't always accurate if you've changed the speed or pattern length, restarting playback fixes it.
SFX Data Layout for anyone interested:
Starting from 0x3200
Blocks of 68 bytes for each SFX pattern 64 bytes of sound data and then 4 bytes of metadata.
Each sound data chunk is made of a 16 bit value divided into
6 bits for the note, 3 bits for the instrument, 3 bits for the volume, 3 bits of the FX, 1 bit unused.
0bUFFFVVVIIINNNNNN
byte 65 is the speed
byte 66 is loop start
byte 67 is the loop end

Screensaver for when you're tired of playing small games. Every button does something. Not all of it will benefit your experience. Most effects will not be immediately noticeable. Simply hold the button for the effect long enough for it to become noticeable. Letting go of the button leaves the setting as it is so don't expect going neutral on either p1 or p2 pads will grant you any savior of frame rate.
This was a small research project for a planned item for the future. Feel free to enjoy the source for your own works. There's also a song in there commented out at the top fo the script if you're bored with flying squares.
Got to thinking about Populous today; played the hell out of the game on my Amiga 500 when I was a kid.
This is a first crack at a terrain manipulation demo in that style. There's no game here yet, just a small map you can terraform and a little dude running around willy nilly on it and seeming rather distressed when he's in the water. I may try and build a little game out of it, though just sort of working out how to handle the isometric sprites in a basic way has been the rewarding bit I was aiming for.
A neat discovery in all this was that I could get all of the terrain drawn using 7 distinct sprite shapes, thanks to careful use of horizontal and vertical flipping and palette swaps (and if I wanted to trade a little more code I could get rid of one of those by compositing two others). Was a little bit of a note-taking headache to make that work, but really satisfying once I got it.
Right now the map is just fixed in size (I threw in a little camera movement to follow the cursor around), but an obvious next step tech-wise would be to dynamically scroll through a larger map only showing a chunk of it in the viewport.
Hat tip to YellowAfterlife for their slick isometric demo last week, which put me on to the idea of giving this a shot.





12 comments














