Hello again, Toy Box Jammers!
This cart has a few tools that are handy when using text.
By editing the text in this cart, and rerunning it, you can encode all the text for your game in a string, while setting the maximum width and height of individual pages. It can also embed x- and y-offsets so that your text prints centered without requiring any additional code (just print!), and optionally, you can have it return the width and height of each text box so that you can put nice borders (such as the included "speech bubble") around it.
Simply include one of the two decode functions in your program, and call it with the text that's copied to the clipboard after running this cart, and the decoder will return a table organized into:
This is a small utility cart for folks working on Toy Box Jam 2023: you can paste one of the fonts into the spritesheet and run the cart to copy a pasteable version for your carts, or use the code directly. I've set it up to take characters beginning at the space and running through 0x7F, but it can be easily modified as you see fit.
You can either paste the relevant routines and spritesheets into your own cart or run this, then paste the command (which includes the relevant P8SCII command) into your cart at a cost of two tokens.
EDIT: I've been told that the embedded version has problems displaying the font snippet I used; you may have to run this or grab the P8 to get the correct results if you're pasting in the font I used here.
I was working on an earlier version of this tweetcart when I noticed a problem with ord used to poke in a single call (i.e. the three-parameter version).
The relevant portion:
s="ンH!\0イTvzw」😐゛\"%l_b<く゛■}ト0aOヤE⁘~わ、そ」う1U゛^Wヌ}ろ014ャ ⁸+Zc=:•ᶠ⬅️~ふO7dウ ➡️ イ⁙★wき&□0◜▶せ~p⁵\n:リ hU>ᶠみ○dI、U)7&⁸とv3r³\"ふ\"∧a]Z。F🐱■゛tᶜv¥⁷C],□y゜ウ+ふ$し+m&WIニ~_¥ホrへWW|Y7}Cd゛}ᵇ‖■へM_Eスvイ36ᵇめ-モeそ◀ラ ▥9gKE4ヒ(=ᶠ" poke(17152,ord(s,1,#s)) --rest of the cart |
On my Mac, at least, I got:
pico8(36303,0x10ab435c0) malloc: Incorrect checksum for freed object 0x7fca4d589600: probably modified after being freed. Corrupt value: 0x3deadbeef pico8(36303,0x10ab435c0) malloc: *** set a breakpoint in malloc_error_break to debug |

I've noticed that when I try to build a makefile for multicarts that calling export from the command line of my host machine doesn't respect root_path.
For example:
pico8 -root_path ./ -export mygame.html title.p8 intro.p8 mygame.p8 |
produces an html export that only gets title.p8 but neither of intro or mygame carts if the root path isn't already the pico-8 cartridge directory.
Does anybody know of a workaround short of actually changing the pico-8 system config for each new directory?

Hey, all!
I live out in Seattle, and I think there are probably at least a few of us in or near that area. If there are enough people interested, I'd love to start putting together a group to meet up as the city reopens post-pandemic. I don't think it would take too much to run a monthly meetup, especially in a city like Seattle, and we could run tutorials / show and tells / demo sessions / collabs / local events if we got enough interest.
So who's interested? :D


For TweetTweetJam 6, I drew again upon my backlog of childhood MS-DOS favorites, inspired by the Argo Software title Night Raid (itself a modernization of the 1981 Apple ][ classic Sabotage by Mark Allen).
Controls
Left/Right: Rotate the cannon
X: Hold to fire, release to reload
Features
- Gradually increasing difficulty
- Session high scores
- The ability to destroy a large number of meeples in a matter of seconds, thereby taking an aggressive stance on the popular board game Carcassonne
Thanks
Thanks to @shy for noticing the bug in the first version of this cart and to @ElGregos for proposing the last little change I needed to get back down under the limit as I fixed it.


A few people have asked me for hints / a walkthrough for Bob of Thunder. Rather than just produce a video that you have to skip through, I've decided to give this hint guide to give a little nudge and let people solve things the rest of the way by themselves!
General Hints
Ljessnir, Bob's hammer, can hit switches at a distance, and will try to return to him even across the room. Try to experiment with different ways you can hit switches and different orders - all switches don't do the same things!
No matter what order you do things, there's always a way to progress, but it may be something you forgot about in a previous area. If you get stuck, try wandering back through the places you've been.
Hearts and coins respawn when you leave a room, so if you're low on health or money, you can return to any rooms that contain those items again.
The NPCs want Bob to succeed, so if you see any of them, make sure to talk to them right away!
Entrance Area
Q: How do I go further north?
I'm excited to introduce Bob of Thunder, my entry to Toy Box Jam 2!
This is probably my most ambitious cart in terms of process: it borrows heavily from the techniques I used in Astro Clerk in The Documents of Mars last year, but it has a considerably larger map requiring compression, more in terms of scripted events, and took way more planning. I plan to write up some of the more interesting parts later on.
The Story So Far







My favorite 2600 game has to be Activision's StarMaster. It had everything: space combat, docking maneuvers, a map. The whole nine yards.
This game only has one of those things. I'd hoped to complete it for TweetTweetJam 5, but I'm just happy it got finished at all. There are a couple tricks I'm pretty proud of in here, and I look forward to the next one!
Code:
The Atari 2600 gave me a lot of silly memories.
Unfortunately, there were no characters to spare for realistic wood paneling texture.
This isn't my most impressive cart ever, but I had fun with it.
Code follows:
f=rectfill cls()f(0,1,0,3,6)pset(1,2,8)f(2,0,3,4)f(2,2,5,3)f(6,1,7,2)memcpy(0,24576,512)poke(24364,3)w=64y=8d=0r=64s=0p={}h=-9m=w::_::cls(12)b=btn()y+=b\8%2-b\4%2pal(6,5+d%2) ?s,1,1,7 f(0,50,w,w,3)y=mid(0,y,32)spr(0,8,y,1,1,1)h-=.5d-=1if(d<0)d,r=r,max(r-1,9)add(p,{x=w,y=rnd(36)}) pal(8,2)for i in all(p)do i.x-=1x,z=i.x,i.y spr(0,x,z-2) if(x<-8)del(p,i) if(x==32)q=pget(12,z)f(x,z,0,z,9) end if(h<-8)h=w+rnd(32)g="⌂" [ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=84103#p) |

Who doesn't love gambling in Final Fantasy XIV?
I do. Especially when the odds are in my favor.
This FF14 Mini Cactpot "solver" takes a simple approach: average all the possible outcomes of each decision you make during the Mini Cactpot minigame, and suggest the specific choice where the average outcome is highest.
Press square to make choices and X to undo them.
Okay, bear with me, because this is a pretty niche bug and also I can't post the actual code because it's spoilers for a demo I'm putting together.
I have code that basically works like this:
local a,b={},{} --a loop that populates a,b with 128 nums each ::_:: cls() --some code that involves nested looping through a,b to draw pixel-by-pixel on the screen flip() goto _ |
This is not a super uncommon design pattern for my tweetcarts. One thing I'd intended to do was encode the contents of a,b rather than the code that populates them. So I did, and the performance tanked.
Weird. Maybe there's a performance difference I'm not aware of?
What was odd is that I know a and b are local in both cases, and they take up the same storage as far as I can tell. I started poking around, and I tried this:
local a,b={},{} --a loop that populates a,b with 128 nums each local anew, bnew = {...my constants...}, {...my other constants...} ::_:: [ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=80528#p) |




I couldn't resist making a cursed PICO-8 cart after someone sent me the What's Your Alex Jones Conspiracy Theory post on reddit by /u/dreggmuffin.
Given the subject matter "mad libs" is almost a double entendre.
(Press z/O button or x/X button to get a new conspiracy theory that you'll use to exploit the patriotism of your listeners!)


This cart contains three things of interest:
- A 6x15 font I used in Astro Clerk
- Code for encoding your own 6x15 font in the same way (i.e. four 1-bit graphics per tile)
- Code for decoding/printing with a 6x15 font
Inside the cart, you can use initfont to create a starting point by upscaling the system font, encode6x15 to write the sprites, and print6x15 to output the result.
I was working on a half-baked 3D engine when my brother texted me to tell me that my games are just like the ones on Adventure Time.
Well, I'll show him.




In the future, humanity will achieve world peace by offloading all of its paperwork to Mars.
You are Astro Clerk, a capable custodian of all documents, forms, certificates, contracts, and records to be found on the red planet.
Tomorrow is Mars Day, the beginning of a long weekend. Unfortunately, this year it falls on the first of the month!
Traverse the hostile terrain and rescue the common pencil-pushers from an endless night locked away completing their quarterly mars reports!
Astro Clerk is my entry for RNDGame Jam 2020, an homage to the early-90s classic The Monuments of Mars. It features 20 levels of puzzle action, autosave, high scores, and 2-bit CGA color!



It's the fourth TweetTweetJam! My entry for this Jam is a stripped-down OutRun clone in 559 characters.
There's a couple things I'm proud of in this cart, so I'm posting an annotated, less-minified version of it below.
Controls
Use left and right arrows and stay on the road as long as possible! Sorry, if you crash you may have to refresh the page or reload the PICO-8 widget.
Code



