Sometime ago, Josh Millard made the PICO Junior.
A few days ago, sta64 found out about PICO-8's Screen Resolutions.
I had the idea to combine the ideas, so I present the PICO Junior (Jr. for short) Challenge.
Requirements:
- 4 colors in total (transparency doesn't count)
- Must be 64x64
- One Player
Everything else? Fair Game.
To make sure that the games are easy to find, I've got 2 ideas:
- Put them all in this post.
- Tag them with "picojr".
I've got an example cartridge, lemme know which method would be easier.

Hi, I was trying to cache an entire frame in ram to be able to blit it later on on screen.
However the user defined memory is not big enough to hold an entire frame (lacks 1kB)
Fair enough, as I was not using sfx at all, i tried to overlap on that memory but for some reasons some bytes in that area seem to be masked and cannot take value greater than 0x7F
So my question is: Is there a place in RAM where i can safely read/write the extra 1024 bytes i need to cache an entire screen frame ?

Design, coding: @AshleyPringle
Music: @Pizzamakesgames
Thanks to @XenoNS and @TRASEVOL_DOG for their invaluable help with playtesting!
[hidden]

Hi all
I made this just to get acquainted with Pico 8. It's a 2D gravitation simulation in a closed domain (the planets bounce off the walls). You can add planets, toggle lines and watch trajectories.
Fun fact: for 2 dimensions, the power law of gravity is actually 1/r. So you won't see closed orbits even with only two bodies.

2 player chess. Arrows to move, button 1 to select a piece and confirm a move, button 2 to deselect.
En passant, castling, and pawn promotion don't work. Because they're complicated. I'm going to try and make an improved version soon which will have these rules working properly. This is why it's v0.95.
If you're going to look at the code, be warned: here be dragons. Its messy. Also white and black are swapped in the code from what they actually are in the game. Don't ask.
The new export option is amazing, so I started messing with three.js (a webgl library) to use it with Pico 8.
And it works, so I made a simple proof of concept by drawing the pico 8 output in a sort of cathodic display style. The next step will be to import a 3D model of a computer screen or maybe an arcade cabin. So we can finaly see this great fantasy console.
Feel free to use the source code and mess with it. You can change your game just by replacing the game .js by the one exported from Pico 8.
Here is the page
Here is the source code


Whenever I start up a game using the new web player, it says "future-version: 5", then after some time passes, I get "timeout :(". I figure I need to update the web player by clearing my cache, no biggie.
The new player gets to "loading cartridge..." then the web page crashes! (In Google Chrome, this is "Aw, snap!")
Offline carts still work, thank god.
Zep, don't sweat. Every game/program's pre-release stage is rocky.

This is a function that will generate cart's guid (used for cartdata function) based on things specific to the cartridge (mapdata, gfx, sfx and code).
function getcartguid() reload(0x4300,0x4300,7168) alphabet = "1234567890abcdefghijklmnopqrstuvwxyz_1234567890abcdefghijklmnopqrstuvwxyz_1234567890abcdefghijklmnopqrstuvwxyz_1234567890abcdefghijklmnopqrstuvwxyz_1234567890abcdefghijklmnopqrstuvwxyz_1234567890abcdefghijklmnopqrstuvwxyz_1234567890abcdefghijklmnopqrstuvwx" guid = "" for i=0,15 do num = peek (0x0+i) guid = guid .. sub(alphabet,num+1,num+1) end for i=0,15 do num = peek (0x2000+i) guid = guid .. sub(alphabet,num+1,num+1) end for i=0,15 do num = peek (0x3200+i) guid = guid .. sub(alphabet,num+1,num+1) end for i=0,15 do num = peek (0x43af+i) guid = guid .. sub(alphabet,num+1,num+1) end --print (#guid) --print (guid) return guid end |
E.g. for storing text (hiscore name, anyone?). Since each number is 4 bytes long, to make standard "Top10" list you'd use only 40 bytes (results only). Which leaves 216 bytes free, that could be used for names, each 21 letters long (well, 21.6 actually, but we can't have 0.6 of character, now can we?). I know we can peek/poke into save data (although it seems memory map haven't been updated in manual), but I'm not sure if it would save.

As of version 1.2, PICO-8 includes a command useful for debugging: printh("string") This command prints a string to the host operating system's console. You can put printh() calls in your code to examine events or state without cluttering the game screen with debugging information.
So how do you see the host operating system's console?
In Linux, you probably already run the "pico8" command from a terminal window. If you don't, locate where you put the "pico-8" directory, then run the pico8 command from a terminal window using its full path. For example:
~/pico-8/pico8 |
In Mac OS X, instead of double-clicking the PICO-8 icon, open Terminal, then start PICO-8 with the following command, adjusting the path to match where you put the app. For example:
/Applications/PICO-8.app/Contents/MacOS/pico8 |
In Windows, instead of double-clicking the PICO-8 icon, open Command Prompt, then start PICO-8 with the following command:
"\Program Files (x86)\PICO-8\pico8.exe" |

Hey guys!
I was messing around with Pico and I've discovered a total of 6 new screen modes!! Please check
the GIF attached to see them in action. Some of them are sort of screen effects (mirror) but the others include
2x1 aspect ratio, 64 x 64 pixels and so on. I am so excited about this. I think this could change the look and feel of many games and makes Pico feel like the Amstrad CPC, C64 or other retro computers. I hope this is a feature and not a bug :)
I will post a cartridge soon.


5 October 2015
- You're now a bit smarter and can cancel jumps! (press down or the action button other than the one you started the jump with)
- That extra brain power comes with added brain mass and now lily pads can sink! (6 seconds per pad, 13 on the first pad)
- You can now perform small hops and land on the same lily pad you're on
- Shortened delays in the game over -> title sequence

Since PICO-8's sin(), cos() and atan2() are not the standard functions, how to implement them in another language? Some pseudocode would be ok, I'm aiming javascript by the way.
I looked into PicoLove's code as an example, but the results are different. For example in PICO-8:
print(sin(0)) -- 0 print(sin(0.5)) -- 0 print(sin(0.25)) -- -1 print(sin(-3)) -- 0 print(sin(-0.45)) -- 0.309 print(sin(78.4)) -- 0.5877 |
The PicoLove code remaps sin() to:
sin = function(x) return math.sin(-(x or 0)*(math.pi*2)) end |
that in javascript is:
window.sinp8 = function (x) { return Math.sin(-(x || 0) * (Math.PI * 2)); };
|
Now, the results are very different:
console.log(sinp8(0)); // -0
console.log(sinp8(0.5)); // -1.2246467991473532e-16
console.log(sinp8(0.25)); // -1
console.log(sinp8(-3)); // -7.347880794884119e-16
console.log(sinp8(-0.45)); // 0.3090169943749475
console.log(sinp8(78.4)); // 0.5877852522924427
|






19 comments









