Hey All -- PICO-8 0.1.8 builds are now live on Lexaloffle and Humble! Note that there was no 0.1.7 release for Desktop; there were in-development versions of 0.1.7 released early for web and Pocket C.H.I.P. to resolve pressing issues, so I'm calling this 0.1.8 to keep version numbers in sync across platforms. New stuff:
60 FPS supportThis breaks the 'every cart runs the same on all PICO-8s' rule of PICO-8's design philosophy a little bit, but I think it's worth it! On all of the desktop host platforms, it is now possible to make cartridges that display and update at 60 frames per second instead of 30. You don't get any more CPU though, so that means half the usual CPU allowance per frame. From the manual:
:: Running PICO-8 at 60fps If _update60() is defined instead of _update(), PICO-8 will run in 60fps mode: - both _update60() and _draw() are called at 60fps - half the PICO-8 CPU is available per frame before dropping down to 30fps ** please note that not all PICO-8s support 60fps. On machines that do not support it, _update60() will instead be called twice per frame and _draw() at 30fps. You can check the behaviour of your program running at 30fps by adding the following snippet to the bottom of your code: u60=_update60 _update60=nil function _update() u60() u60() end
The two action buttons on the PICO-8 controller are called O (BTN(4)) and X (BTN(5)). To make it easier to print instruction in-game explaining the controls, you can now insert glyph characters directly into strings in your code with Shift - U D L R O X.
Adjust the maximum GIF length in config.txt or by running PICO-8 with -gif_len n switch, where n is the number of seconds to record for (maximum: 120). The GIF output is not optimized, so you might want to run it through an optimizer to get smaller file sizes.
Custom Menu ItemsIt is now also possible to add your own items to the pause menu to trigger things like 'RESTART PUZZLE' or 'EXIT TO OVERWORLD'. Here's an example program:
col=12 function _draw() cls() rectfill(0,20,127,107,col) end function changecol() col = (col+1) end menuitem(1, "change colour", changecol)
The first parameter is the position (1-5) in the menu to insert the item, the second is the item's label, and the 3rd is a function to be called when the item is selected. I opted to keep this simple and quite rigid, so there's no way to have extra stuff going on in the background while the cart is paused, or to re-appropriate the pause button as an in-game button.
Music ExporterTo record a .wav of a PICO-8 tune, first navigate to the pattern you'd like to start from in the music editing mode, then press escape to enter the console and type:
If the song is looping, it will export around 4:30 that you can then manually trim in a [sound editing program](http s://sourceforge.net/projects/audacity/).
Pre-installed GamesThere are now 5 BBS games that ship included with PICO-8, so that it's easy to get up and playing something more than the demo carts, even when internet access is not immediately available. To install them, use INSTALL_GAMES -- they will be accessible from your favourites list in SPLORE. The games are Celeste, Frog Home, Tower of Archeos, Hug Arena, and Dusk Child.
Linux BuildsI've included both statically and dynamically linked versions of the executables for i386, amd64 and Raspberry Pi. The RasPi build still depends on bcm, so it is tricky (impossible?) to get it up and running on Chromebooks.
I plan to look at better Chromebook support at some point, but it will probably have to be during beta. Pocket C.H.I.P. owners, and later on regular C.H.I.P. owners can expect updates too, of course --- but we are still sorting out details and it will take a while. o( )o
Next up, 0.1.9 will be mostly ongoing bugfixes, and improvements to the web player (optimization, fold-out touch controls for mobile, and controller instructions).
v0.1.8 Added: 60fps support Added: Music exporter Added: Custom GIF length (maximum 120 seconds) Added: -,+ to navigate sprite tabs, sfx, music patterns Added: sfx editor: navigate with home, end, pageup/down, mousewheel Added: <, > to modify sfx speed, or click and drag Added: Middle mouse button to pan around spritesheet / map Added: Shortcut command for splore: S Added: Pre-installed selection of BBS cart (use INSTALL_GAMES) Added: Warning when saving .p8.png with no label Added: (OSX) logging to ~/Library/Logs (viewable with Console.app) Changed: Can not CTRL-S save over a loaded bbs cart Changed: Only .p8 files listed by dir() and by splore Changed: Command history increased to 256 Changed: exit() / shutdown() have no effect while running cart Fixed: Memory useage (stat(0)) inconsistent across host platforms Fixed: Spinny disks shows when reloading current cart with load() Fixed: GIF saver does not respect 64x64 / mirrored modes Fixed: Miscellaneous multi-line comments / strings issues Fixed: Empty map cels cost cpu in mapdraw() Fixed: mapdraw() slowdown when drawing bottom half of map Fixed: preprocess changes semantics when += and : operators on same line Fixed: Identifiers starting with underscore counted as extra token Fixed: Saving .png exceeding compressed code limit fails silently Fixed: Right-clicking a sprite does not set the currently edited sprite Fixed: (Windows) extra space added to pasted lines Fixed: spr() expensive when drawn with low negative coordinates Fixed: pipe character identical to colon character Fixed: (Raspberry Pi) shift key appends a character when entering text Fixed: Editor mode buttons are still clickable during cart runtime Fixed: When loading a .p8.png file, label is reset and needs to be re-captured Fixed: export() does not report failure Fixed: mset()'d changes in shared memory not readable via peek() / sget() Fixed: cstore() saving edited code Fixed: audio pop between patterns during music playback v0.1.7 Added: menuitem() Added: button glyphs in code (shift-L, R, U, D, X, O) Added: Customisable data directory (e.g. pico8 -home mydata) Added: Web gpio pins: read and write pico8_gpio in javscript Fixed: SPLORE search doesn't reset Fixed: Splore skipping 33rd cart listing after loading more items Fixed: Crash when selecting a local binary file in splore Fixed: Semicolon can't be used as a list or statement separator Fixed: Exported html can not cstore self
"I opted to keep this simple and quite rigid, so there's no way to have extra stuff going on in the background while the cart is paused, or to re-appropriate the pause button as an in-game button."
Funny you mention that. https://www.lexaloffle.com/bbs/?tid=3703
More particularly: https://www.lexaloffle.com/bbs/?pid=23648#p23648
|poke(0x5f30,1) seems to disable the pause menu, can anyone confirm?|
Here's an example :
So wait...did someone say the 60fps won't work in the web version? So if I make a game using 60fps, it will run fine on the desktop client but not the web version? Hmmm...if so, that's a bummer...
Very cool to have the menu option though, will certainly be using that
Wonderful update <3
@morningtoast seems like the html export currently ignores the _update60 altogether. makes sharing 60fps carts a bit harder hey
update: eh no works exactly like Zep described, it just renders my neat 60fps trickery useless :)
Again, I can't see a reason why _update60 is desktop only, where there are many HTML5 games that run on 60hz flawlessly. Heck, some people wrote emulators in HTML5 for systems that naturally ran in 60hz refresh rate.
If there are no technical problems forbidding implementation of a feature without breaking "every pico behaves the same" concept, it should be done so, and in this case there isn't.
@zep as seen (loved & retweeted) on twitter, you are going to add a "JAM" entry in splore and here on the forum, which is really cool!
I'm not speaking for the next release, but do you have any plan to allow cart submission directly from Pico8? That would be really nice to have such a feature! Especially for JAM entries :D
i had a look a little everywhere on the bbs, wiki etc but i have no clue how to start/install Pico-8 on raspberry pi :/
i just bough voxatron and wanted to give pico-8 a try on rpi.
if someone could hook me up i would be extremelly grateful :)
thanks a lot
i checked that page earlier and had a look at the sdl2 tutorial also. i think i will wait for my pocket c.h.i.p. to get in and until then just use pico on windows.
im just grafic design, not very skilled coder, thats already too much for me :)
"Splore" needs a CLS upon escaping. I got confused and thought it was still running. OTT, pretty decent update! :D
EDIT: It's not just Splore. It's anything running when you hit Escape to back out of it, into the console screen.
Can _update60() and _update() both be used simultaneously? O.o
I hope the PocketCHIP version supports 60 FPS, but why wouldn't it?
@zep, thanks for the update.
I just found out that you added logging to ~/Library/Logs on OSX. Unfortunately, I failed to find any logs in the directory, both using Console.app and the good old "ls" command.
Is there a new command to log (instead of printh)? Both print() and printh() do not seem to create any log file.
I guess it's broken?
meanwhile you can use the old command line workaround:
cd /Applications/PICO-8/PICO-8.app/Contents/MacOS ./pico8 >& ~/Library/Logs/pico8.log
then use printh()
[Please log in to post a comment]