Here is my Pico-8 version of Cargobot. It was an iPad game from 2012 developed on an Ipad.
Cargobot is a puzzle game where the player commands a robot to sort crates.
If you stock the crates too high the robot will crash.
The robot will also crash into the side of the wall when the incorrect instructions are given.
There are 7 categories (tutorials, easy, medium, hard, crazy, impossible, bonus) with 40 levels in total.
Each level can be solved in many ways.
The goal is to earn 3 stars for each level by solving the level in as few registers as possible.
The earned stars are saved in cdata.
The progress made per level (implemented actions, conditions) is saved in cstore.
The speed of the robot can be configured in the menu. Where you also can find a hint per level.
If you find a solution with less registers as indicated in the level select screen, you can always post a screenshot here.
Have fun!


I've lately been working with image compression routines which output strings, and I've been able to increase efficiency and versatility by using as wide a range of characters to store data as possible. I've grown a bit frustrated at times, though, because any strings which use Puny font characters don't show up correctly unless I go into Puny Font mode. There have been a number of times I couldn't get things to work, and spent time debugging my code, only to realize that the problem was that I forgot to press Ctrl+P.
I know it's not a big issue, and it can be worked around, but it's kind of inconsistent how strings can be created with Puny characters at any time, but you have to enter a certain mode to view the output correctly. Is it possible this could be changed without breaking some other feature? I mean, is there any way to let the program know that a string has been created by Pico-8 and therefore display it as intended?






The decoration feature of PICO-8 v0.2.2 could also be useful to also draw dakuten / handakuten marks above the kana characters, rather than to the side of them, but sadly, since the current syntax only allows them to be shifted horizontally between -2 and 1 pixels.
Maybe it's worth it to adjust the "\v" character syntax so that it works differently after wide characters, or add a different one where the horizontal shifts use 3 bits instead of 2 (and allow for horizontal adjustments between -4 and 3 pixels?).
A little demo of a water sprite, inspired heavily by 7DRL game A Root Path. I wanted to see if I can replicate the art style and add some little glowy lightning effects to it.

Messing around with some collision detection. Up and down modify gravity, left and right push the ball in the corresponding direction.
Code is a mess, read at your own risk. Currently only handles static obstacles -- shouldn't be too hard to add once you know the contact point but didn't really feel the need, I've already had my fun with it :)
I made this game for a weeklong jam where the theme was "Spinning," and I'm really happy with how it turned out. It's a short bullet hell that forces you to get a little closer to the enemies than games in this genre typically do! Mastering the sword might take some time, but once you start to get a feel for the movement it's fun to play around with (imho, of course). Let me know what you think! Any feedback is welcome.
You'll have to forgive the programmer art, it's the best I can do on my own unfortunately. This was also my first time making music of any kind, and I decided to remix a song called "Jack of all Trades" by CaseJackal. You should definitely check out the original! It has a lot more depth than my 1-minute loop :P



Here is my second game on PICO-8: Eleni Foot Bag. Inspired by California Games, a game I played in my childhood on the Sega Master System, and in particular the foot bag mini-game, I'm testing myself on recreating this one, with personalized graphics and sounds.
Controls:
- ⬅️ and ➡️ to move Eleni,
- ❎ for using the foot and the knee,
- ⬅️ + ❎ for using the right heel,
- ➡️ + ❎ for using the left heel,
- 🅾️ for jumping (for using the head).
Each bodypart that shoots the ball gains:
- 1 point for the foot or for the knee,
- 2 points for the right heel or for the left heel,
- 3 points for the head.



Hi,
I played around with Pico-8 and wanted a fancy way to build and run
custom cart when the idea came to me like the urge to go π :
I NEEDED A DEDICATED SPLORE SERVER !
One hour later it was alive

Showing custom list and loading whatever I want directly from SPLORE.
I was surprised at how simple it is to make a proxy.
First I edited "drivers\etc\hosts" but it lacked flexibility...
Then I came up with the idea of replacing wininet.dll by a custom script.
That way you just put (or remove) the file near pico.exe and start it.
No user hack, no patch, no third party.
You can make your own proxy with the MASM32 code below
(I think I can share it with you because it does not disclose any flaws or infringe any copyright)
(The code of the server may be more sensitive to disclose)
Anyway, I swear that no "pico8.exe" were harmed during the making of this progam.
[hidden]
.386 .model flat, stdcall option casemap :none option Prologue:none option Epilogue:none include windows.inc include user32.inc include kernel32.inc includelib user32.lib includelib kernel32.lib .data _Wininet dd 0 _InternetOpenA dd 0 _InternetOpenUrlA dd 0 _InternetReadFile dd 0 _sInternetOpenA db "InternetOpenA" , 0 _sInternetOpenUrlA db "InternetOpenUrlA" , 0 _sInternetReadFile db "InternetReadFile" , 0 _URL db "http://127.0.0.1:80" , 0 ;<=== YOUR SERVER URL HERE _SysDLL db "c:\windows\system32\WININET.DLL", 0 ;<=== YOUR PATH HERE temp db 260 DUP(0) ; GIVE IT SOME SPACE !! .code ; MAIN DLL FUNCTION _DllMainCRTStartup proc instance:DWORD,reason:DWORD,unused:DWORD ; ONLY ON PROCESS ATTACH mov eax, [esp+8] cmp eax, 1 jne @next ; GET REAL "WININET.DLL" push offset _SysDLL call LoadLibraryA mov _Wininet, eax ; GET REAL "InternetOpen" push offset _sInternetOpenA push _Wininet call GetProcAddress mov _InternetOpenA, eax ; GET REAL "InternetOpenUrl" push offset _sInternetOpenUrlA push _Wininet call GetProcAddress mov _InternetOpenUrlA, eax ; GET REAL "InternetReadFile" push offset _sInternetReadFile push _Wininet call GetProcAddress mov _InternetReadFile, eax @next: mov eax, 1 ret 12 _DllMainCRTStartup endp ; FAKE "InternetOpen" InternetOpenA proc jmp [_InternetOpenA] InternetOpenA endp ; FAKE "InternetReadFile" InternetReadFile proc jmp [_InternetReadFile] InternetReadFile endp ; FAKE "InternetOpenUrl" InternetOpenUrlA proc ; LAZY STRING REPLACE ^^ mov eax, [esp+8] add eax, 25 push eax push offset _URL call lstrcat mov [esp+8], eax ; CALL REAL "InternetOpenUrl" jmp [_InternetOpenUrlA] InternetOpenUrlA endp end ; DEF FILE LOOK LIKE => ;LIBRARY WININET ;EXPORTS ; ;InternetOpenA @1 ;InternetOpenUrlA @2 ;InternetReadFile @3 |



I made this game and published it in 1 day!
I got much of the particle system code from https://mboffin.itch.io/gamedev-with-pico-8-issue1 because I can't wrap my head around particle systems for some reason.