I wrote a new tool that turns carts upside down.
% ./p8upsidedown jelpi.p8.png |
The tool is built with the picotool library (discussion). This version of the tool inverts the sprites, inverts the map, and translates the code to use inverted coordinates for drawing functions.
This is meant as a hack/demo and is known not to work with every cart. It works with many carts, and some of the failures are interesting. Notably:
-
The code translation increases the token count, so large carts (Celeste, Dusk Child) can't be turned upside down.
-
This version doesn't support spr/sspr calls that draw a rectangle of tiles. This wouldn't be too difficult to support: it'd need to flip the entire spritesheet not just individual sprites, translate the sprite IDs in the map, and extend the code to rewrite sprite ID args. But I have other things to do this weekend. :)
-
The print function will always print left to right, so we compromise and merely relocate the y coordinate for print / cursor calls. There's nothing the tool can do with carts that call multiple coordinate-less prints.
- I wrote this to exercise and demonstrate the picotool libraries for mutating Lua code via the AST. The lib doesn't know how to write out an arbitrary AST and preserve other comments/spaces, so p8upsidedown generates hideous code. Unfortunately the luafmt writer isn't entirely up to snuff either so it's not much help. This is mostly not an issue to Pico-8, though I did find a bug where Pico-8's special "t += val" syntax rejects a newline between the "+=" and the "val", which p8upsidedown might accidentally introduce.
Anyway, a fun weekend hack with picotool. Enjoy!
-- Dan
When I load a cart that has too many tokens, the "run" command fails correctly, saying "Program Too Large, xxx / 8192 tokens". Unfortunately all other commands fail in the same way in this condition, including "reboot", "ls", and "load". As a workaround, I can go into the editor, delete enough code to reduce the token count below the limit, then I can perform commands. Filesystem commands should just be allowed in this case.

(old tag: 16090)
I thought I wanted to make a game about launching missiles, but then I thought about it some more. All I really wanted was to make a game about moving an unwieldy cursor over a radar screen and pressing a button to do something.
So here we have SUPPLYDROP, in which you control a crosshair over a busy radar screen. Distant and imperilled groups of people have pooled their scant resources to send a distress signal, in the hope of reaching you and calling down desperately-needed supplies. You can help them, but their signals are terribly brief. Moreover, you only have ten supply drops to use. One supply drop can feed many people, but do you want to hold it back, in hopes of two beacons near each other? Or will you respond immediately to each call?
Watch for the signal beacons (orange squares). Move the crosshair with the arrow keys and use Z to place supplies near or on them to help those people. At the end of the game, you'll see your score and how many groups you saved. Any groups you missed will lower your score.
(Press Z on the score screen to restart.)
I had a lot of fun making this one over the last few days. I hope you enjoy playing it!

I would like to learn how to reproduce the famous sinus scroller text effect, but i can't make it to work.
Can someone explain the idea behind this ? I don't want the code (i want to find it myself), i just want to understand how to approach this.
I've created a table with a cell for each letter of my text, now i need to print and move each later to the left in a sinus pattern, but i can't figured out :
cls()
table={1,2,3,4,5,6}
x=127
function _update()
end
function _draw()
for i=1,6 do
print(table[i],127-i*10,cos(i*3/12)*20+60)
end
end
|
With this i have a sinus with my text, but it's not moving in real time, and it's in reverse mode. At some point i need to erase each letter from their previous position ? How to erase only one printed letter ? Print the same letter at the same position with transparent color ? Maybe sprite are better for this because they are easiest to move ?

Hi,
I won the LiveCode Create it Competition Round 1 (last wednesday). So, I'm in for the round 2 (Feb 2016).
I will have to share my time between LiveCode and Pico (and my daily job because we have to fill the fridge).
It would be nice if one of you (no more) helps me for the LudumDare October Challenge 2015 : I need $1 on http://jihem.itch.io/bld. I can do the same (so if you're making the challenge too, I can validate it)
Regards,
jihem
Minesweeper! Features multiple difficulty levels and amazing sound effects. Released under the zlib/libpng license.
Arrows transport cursor and navigate menu
Z reveal tiles or activate menu options, menu opened when tiles not revealed
X flag tiles for knowledge

I have dual monitors setup to my really old laptop. I'm running windows8.
I'd like to use my external monitor for pico8 without having to redistribute through windows which monitor is #1.
Does anyone know what I can do to 'force' pico8 to fullscreen on monitor 2? It doesn't seem to care what desktop it's on when maximized like most programs. Voxatron has same issue.
I don't think this is necessarily a Pico8 issue and is more of a windows issue, but I thought I'd ask here in case other people found a solution to this.
Hi, new member here.
I have some requests for the pattern editor:
- insert/delete line: please assign ins/del for that, leaving the Delete key as it is
- please allow copy/paste and undo for notes
- please give us one octave above, for convincing high-hats. one octave below for pounding bass would be nice too
- I suspect the way effects 6 and 7 work, only allow for 4/4 signatures. I'd love to be able to start the effect on the exact same line that I call it, instead of every 4 lines.
I know some of these are doable by editing the cart data, but leaving pico8 is a hassle when you're in the zone.
By the way I wrote this:

Hello, community,
My first cartridge is here: 40 levels to make your brain burn.
Enjoy ! :)
Rules:
Take the red token to the center of the board.
You can move any token.
The tokens can only move iif there's another one to stop it.
0.1.1 changelog:
- added: onscreen controls
NYI:
- Menu and ingame bgm.
- Juice it or lose it (tweening, camera effects...).
.png)
Whenever I use "Alt+Left" shortcut to go from the sprite editor to the code editor, the cursor in the code editor moves one character left. This also happens when using "Alt+Right" from the tracker, except the cursor moves right instead.
It's not the most annoying thing in the world, I know, but I think this could be easily fixed.
Here you can see a .gif:
I'm pleased to announce picotool, a set of tools and Python libraries for manipulating Pico-8 game files. picotool can read .p8.png and .p8 files, and can write .p8 files.
To get picotool and learn how to use it, visit the picotool Github repo.
The p8tool command is a multi-tool with multiple functions. You can run it like this:
% p8tool stats helloworld.p8.png hello world (helloworld.p8.png) by zep version: 0 lines: 48 chars: 419 tokens: 134 |
picotool currently includes the following tools:
- build: builds a cart from pieces of other carts
- stats: a statistics reporting tool
- listlua: prints the Lua region of a cart
- writep8: converts a .p8.png cart to a .p8 cart
- luafmt: writes a new .p8 cart with Lua rewritten with regular formatting, to make it easier to read

the second thing i have ever coded in my life, this cartridge is a MUST HAVE collectible for when i become a billionaire pico-8 video game designer specialist executive.
UPDATES
0.0.2 -new content in the first few minutes of release, this developer is on fire!
-character will now warp when reaching the edge of the screen.






4 comments















