Building a PICO-8 Beatemup part 1
Introduction and Aknowledgements
Hello and thanks for reading. This post will be an explanation of the basics of my Ninja Turtles beatemup engine. I'm going to try and explain every single step along the way so this will be a fairly long post. You should probably have some familiarity with basic development but I'll make this as understandable as possible across skill levels.
This blog post obviously owes a lot to a lot of people but much of this specific workflow was derived from these two posts:
and
Using _𝘦𝘯𝘷 in PICO-8 by slainte.
Please read both if you have not. Neither is a prerequisite, but you'll be glad you did.
Help Wanted
I’m not a programmer by trade so I’m looking forward to learning from the community by explaining what I’ve created to people who are smarter than me, and receiving feedback on improvements. I hope this helps anyone along their own path. Please feel free to use this code or anything you find in any of my stuff, really. I'd love to play your game some day.

Changelogs v2.0
- Added difficulty level selector.
- Adjusted velocity of asteroids according to size of asteroids: bigger asteroids will be slower, and smaller will be faster.
- Now all asteroids will always have, relatively, equal sizes at the start of the game.
- Added counter of total destroyed asteroids.
- Added stats of number of destroyed asteroids.
- Randomize color of the ship.
- Added music.
Edit: desactive key binding for reset best time in game over screen as can be easily pressed by mistake in mobiles.
Music
Song "space" from Pico-8 Tunes Volume 1 by @gruber_music. See https://www.lexaloffle.com/bbs/?tid=29008



Version 1.1 of Undertale fangame Knifetale.
If you find any bugs, exploits, or impossibly difficult attacks, tell me and I'll fix them
Hope you like it!
please make better sprites for me if you want mine are garbage
Changelog:
changed quite a few attacks
reduced token count by a lot
made cherry soda work
changed main menu
increased hitbox size for sans and legendary heroes
legendary hero odds changed, adding more attacks shouldn't change the spawn chance
installed windows (in corridor)
prevents attacks from happening twice in a row
gaster blasters spawn cooler
you actually stand on platforms and don't just fall in place
some bugfixes. don't ask me what i don't remember










Hello, I am trying to pass my player.score variable (an int from 0 to wherever), using GPIO.
I have been using poke2(location, player.score) and then reading to the browser using pico8-gpio-listener.js library by Ben Wiley.
However, my player.score maxes out at 255 and then resets to 0. This doesn't seem right so any help would be appreciated. The player.score itself goes as high as I need it to, it's just when I use poke2() it limits to 4bits(?) I think.


Hi! You want to draw pixel art? You like puzzle games? You can't wait for Christmas? Well the game's for you! Solve puzzles by following clues on grids to draw pixel art that'll turn onto Xmas-themed patterns. Each solved pattern is saved and retrieved in following sessions.
Xmas Patterns is part of the Twelve Days of PICO-8 Christmas 2022 you'll find there: https://www.lexaloffle.com/bbs/?tid=50644
The game lacks a proper ending and some other bits I'm probably the only one to know. Despite two months of work the game's never looked like it wanted to be finished. It's sorry about that and hopes you'll like it nonetheless.




Hi Zep! :) I think I found a bug in one of the more esoteric stat calls?
Bug:
According to the manual, stat(56) should return the number of ticks played in the current pattern. Currently (0.2.5e), it seems to poll the leftmost sfx in the pattern for the count. That makes sense bc the overall pattern length is determined by the leftmost sfx which is not a loop, but as the title says, stat(56) will reset back to 0 early if the leftmost sfx is a loop.
Expected behavior:
stat(56) should return the number of pattern ticks played regardless of looped sfx
Thanks for your time! :)





Controls
❎ to smash
⬅️➡️⬆️⬇️ to move
Set-up
An ancient evil threatens the island nation of Japan. The League of Ninjas has pin-pointed the orgin. A small set of Southern islands, but how do you seal a great evil from crawling out beneath the earth? YOU NAIL THE EARTH DOWN!!!
Smash all of the stakes down through four rounds to seal the evil away, and achieve victory over said evil. BUT, be careful. Demons will try to prevent you from getting to this most holy goal.
Behind The Scenes







Tiny game made for the Twelve Days of PICO-8 Christmas 2022 event!
Built from Freezing Knights' battle engine.
Music from pico-8 tunes vol. 1 & 2 by @gruber_music / @krajzek:
https://www.lexaloffle.com/bbs/?tid=29008
https://www.lexaloffle.com/bbs/?tid=33675



Run export game.bin -i 1
(with a sprite in slot 1) while the editor is using a custom palette with the palette persist flag poke(0x5f2e,1)
The resulting executables will have icons using the default palette instead of the custom one the editors are currently using:

Source sprite:

(This also causes the command line to use the default palette temporarily while the command runs)




(v04 12-18-22)
TO LOAD THIS PICO-8 CART, in immediate mode, type:
load #newcompress
Hello.
I have need of a data compressor for the 2023 project I'm working on now so I wrote one. And it's better than a 6-bit or 7-bit because once again, this is an 8-bit compressor.
Now this is different from the picture compressor I wrote which you can find HERE:
https://www.lexaloffle.com/bbs/?tid=45335
That compressor is looking for Pico-8 pixels specifically.
No, THIS compressor is looking for raw data. While I am demonstrating it with pictures it is in fact geared for byte data, maps, PCM sound, and what have you.





Hello.
I would like to suggest, @zep, please, that you add the cursor's X-location to the editor.
There is some screen real estate not being used HERE:

This would help me as I'm now working on some data tables of different lengths across.
Additionally a way of getting the true length of a string before converting it to untypables.
For instance:
a="\48\0" ?#a ?truelen(a) |
2
5
Is there room for a 3rd request ?
The other is more technical. I'd like this:
\07
to convert to chr(0).."7" instead of chr(7).
For instance if you want chr(0) and chr(7) it would be: \0\7
or \0⁷
or chr(7) by itself would be, \7
or ⁷
\00543
would convert to chr(0).."0543" instead of "63"
Quite simply do not allow a prefix zero to be included in a numerical argument "\" for P8SCII or lower ASCII commands. A "\0" always denotes chr(0). This is only true for CHR(0), no other, "\111" for instance does not give chr(1)..chr(1)..chr(1), it gives "O" (letter oh).
Naturally normal \
without a prefix of zero is fine.
\48
= "0"
\64
= "@"
\13
= chr(13) or \r
etc.
But once again something like, \013
would not return a CR but chr(0).."13"
I'm trying to run pico-8 on an older raspi (model b rev 1). Tried on fresh installs of both buster and bullseye, but i used lite versions because this raspi is very old and wouldn't run a desktop environment very well. The problem is: I execute the program, but it doesn't show video, even though I can hear the boot chirp of pico-8. Do I need something else to run pico-8 from text mode on a raspi without a desktop environment.



Controls
[CURSOR KEYS]: Navigate menu and puzzle grid
[X,M,V]: Confirm / Activate row/column
[Z,N,C]: Preview puzzle
About the game
Get in Santa’s Pants 3 won’t be ready this year, so I made a return to Pico-8 to make the dreaded spin-off puzzle game! Solve puzzles to unlock new artwork of everybody’s favourite blue-haired elf [citation needed].
The game contains suggestive themes and imagery.






