Log In  

Hey All, I hope you had a great new year!

PICO-8 0.1.4 builds are live on the updates page and on Humble. The main features of this update are:

Friendlier Token Counting

Pairs of brackets and block deliminations now count as one token each, and local declarations do not count at all. You can now fit in around 30% more code because of this, and there is less need for odd space-saving techniques (e.g. using blah"" instead of blah()), or getting rid of local variables. It does mean you're more likely to hit the compressed code limit (use INFO to check), but I don't think this will be a problem. The raw character limit has also been increased from 32k to 64k.

Importing / Exporting Data

import() and export() can now load and save the sprite sheet: export("something.png") and sfx: export("something.wav"). These aren't very flexible yet, but in future they'll be able to do things like grabbing particular sets of sprites, or only importing into empty slots.

External Cartridge Data Access

reload() and cstore() now take an optional 4th parameter: a filename to grab the data from or store the data to. This is useful for making custom tools, or doing fancy data management. It's intended at this point mainly as a development tool, and isn't supported by the exporter or BBS player. But of course, you can do what you like with it :P

Here's Let's Karate being gradually replaced with data from Jelpi during runtime:



        Added: spritesheet importing and exporting with import("blah.png"), export("blah.png")
        Added: sfx exporting with export("blah%d.wav")
        Added: External cartridge parameter for reload() and cstore()
        Added: Persistent cartridge data mapped to 0x5e00
        Added: Click token limit to toggle token & char limit display
        Added: assert(), type()
        Added: P to pause
        Changed: code char limit: 64k (was 32k)
        Changed: local declarations and semicolons not counted as tokens
        Changed: Pairs of brackets and block delimitations count as one token
        Changed: Only _update() or _draw() need to exist to enter main loop
        Changed: Allow forward-slash in code editor
        Changed: info() reports current (last loaded or saved) filename
        Changed: html5 version compiled with NO_DYNAMIC_EXECUTION 
        Fixed: Shift-drag-copy sprites -> paste only pastes 1x1
        Fixed: ".." should count as one token
        Fixed: Tracker displaying D instead of .
        Fixed: Multi-line comments
        Fixed: Crash on run when code close to char limit
        Fixed: When over token limit, can not run any command
        Fixed: Unused high bits in SFX section not saved in .p8 format
        Fixed: Camera position memory mapping out of sync
        Fixed: pico8.txt link broken in windows installer
        Fixed: print() crashes when parameter is not a string or numbers
        Fixed: Multi-line strings & escape chars mess up tokenizer and print()
        Fixed: Joystick not responding when left stick is up to the left
        Fixed: Alt-F4 saves screenshot before quitting
        Fixed: Sprite editor mode button doesn't show fullscreen mode
        Fixed: -sound parameter not working in html5 version 

P#18122 2016-01-02 18:14 ( Edited 2016-02-13 18:26)

Very nice. I can see the pairs of brackets thing helping a ton with math heavy games. :)

P#18123 2016-01-02 19:38 ( Edited 2016-01-03 00:38)

Excellent update. One unnoted (and unintentional?) change is that keyboard shortcuts on the Mac version now use the Control key instead of Command key. Any reason for that?

P#18126 2016-01-03 00:36 ( Edited 2016-01-03 05:36)

Thanks :-)
Assert and type are welcome.
Happy new year!

P#18127 2016-01-03 01:49 ( Edited 2016-01-03 06:49)

thanks for the update! works fine under linux (debian+i3wm) but sadly the screenshot / video save doesn't save anything on my setup :D

(perhaps because since I'm using a tiling manager I have NO actual "desktop").

P#18129 2016-01-03 10:19 ( Edited 2016-01-03 15:19)

Yay, update! Happy new year, Zep.

P#18130 2016-01-03 11:16 ( Edited 2016-01-03 16:16)

Thanks! Very cool new features to play with! :)

Special keys on german keyboards (win8) are broken again...
Pressing "{" inserts "7{", pressing "}" inserts "0}" ... same for "[" and "]". All those require RIGHT ALT to be held down.

P#18131 2016-01-03 15:05 ( Edited 2016-01-03 20:05)

The disabled command key shortcuts was a mistake -- I've uploaded 0.1.4b to correct this.

@movAX13h Ah, nuts! Is that with 0.1.4 or 0.1.4b? (check the startup screen to be sure)

P#18134 2016-01-03 18:27 ( Edited 2016-01-03 23:27)

@rez yes, this is likely the problem. I didn't get around to fixing this; as a work-around you can just create ~/Desktop and it should save there. If it can't find ~ ($HOME), it writes to the current working directory.

P#18135 2016-01-03 18:32 ( Edited 2016-01-03 23:32)

@zep Thanks for the quick turnaround. My muscle memory appreciates it.

P#18136 2016-01-03 19:37 ( Edited 2016-01-04 00:37)

Thanks to the new pause button, it's more like a Sega Master System!

P#18142 2016-01-04 02:13 ( Edited 2016-01-04 07:13)

@zep: both

P#18146 2016-01-04 12:36 ( Edited 2016-01-04 17:36)

@zep @movAX13h: Same problem here with a french keyboard with 0.1.4 and 0.1.4b.

@zep: I made a sprite 16x16 (000,001,016,017). When I copy it into the map the left corner (000) is alway empty ?!

P#18147 2016-01-04 16:52 ( Edited 2016-01-05 06:15)

Ya done good, Zep. Extra kudos for using Let's Karate, I love that game.

P#18160 2016-01-05 02:52 ( Edited 2016-01-05 07:53)

@zep Will you update soon? I'm stuck on 0.1.3... If not, I will buy a qwerty keyboard.

P#18205 2016-01-09 02:18 ( Edited 2016-01-09 07:18)

0.1.4c is now live, to correct the international text entry bug. I'm traveling right now and attempted to fix it without being able to test. Please confirm if the fix works, and if it doesn't I'll do another patch shortly.

0.1.4c also fixes the tab spacing bug (causes cursor position to be wrong, and end of long lines unviewable)

P#18207 2016-01-09 09:22 ( Edited 2016-01-09 14:22)

ok, the text entry is still borked. I'll do 0.1.4d shortly!

P#18208 2016-01-09 09:59 ( Edited 2016-01-09 14:59)

0.1.4d is now available, with a confirmed fix for text entry.

P#18209 2016-01-09 11:08 ( Edited 2016-01-09 16:08)

@zep Thanks :-)
0.1.4d solves the issue in my case for the text entry.

P#18212 2016-01-09 15:21 ( Edited 2016-01-10 09:17)

With command line loading it doesn't seem to use your root folder. I thought command line loading was broke until I put in the full path to the file.

P#18214 2016-01-09 17:30 ( Edited 2016-01-09 22:30)

@jihem That's not a bug. Sprite 0 is always 'clear' on the map. Empty tiles of the map have sprite index 0.

P#18216 2016-01-09 21:04 ( Edited 2016-01-10 02:05)

@movAX13h You're right. This was working like that previously. Just I haven't used sprite 000 in a map before... Sorry for the noise :-/

P#18219 2016-01-10 04:17 ( Edited 2016-01-10 18:53)

Sorry if I keep on "reviving" this, but will there be a Pause function? Or is there already one?

P#18222 2016-01-10 12:54 ( Edited 2016-01-10 17:54)

There already is pause. It is bound to p

P#18224 2016-01-10 16:20 ( Edited 2016-01-10 21:20)

I meant a sort of way to control pausing, like a custom pause menu...

P#18226 2016-01-10 20:13 ( Edited 2016-01-11 01:13)

You may create your own pause menu. But this require to dedicate a button for this.

P#18230 2016-01-11 06:24 ( Edited 2016-01-11 11:24)

See, I can't really do that for a certain project that I'm making, since it takes both buttons...
Sometimes I curse the input limitations.
Oh well!

P#18231 2016-01-11 07:29 ( Edited 2016-01-11 12:29)

If the second player doesn't play you can use one of his buttons. In the worse case (two players are playing and all the buttons are required) may be a combination can help : left and right at the same time, ... ?

P#18235 2016-01-11 12:31 ( Edited 2016-01-11 17:33)

I've often considered making a twin-stick shooter in PICO-8 and just telling the player to use both the arrow keys and ESDF. I know it's not the intent of the design but it's pretty conveniently laid out on the keyboard if I wanted to do it that way. :L

The new features look promising! Also, I always like seeing some fun glitch art. heh eheheh

P#18427 2016-01-23 19:27 ( Edited 2016-01-24 00:27)

@zep looks like export("foo.wav") doesn't export any sound in osx.

P#18456 2016-01-25 04:46 ( Edited 2016-01-25 09:46)

The sound exporter is totally broken in 0.1.4d -- sorry about that. It's fixed for 0.1.5

P#18458 2016-01-25 09:44 ( Edited 2016-01-25 14:44)

@Skyrunner65 a custom pause menu is still on the cards -- I'm still figuring out the best way to do this. It will probably appear around v0.1.6

P#18460 2016-01-25 09:49 ( Edited 2016-01-25 14:49)

So - reload is failing for me. What am I doing wrong?

As a test, I do:

MEMSET(0x7000, 0x88, 256)

Bam, nice red bar across the screen.

Save screen with:

CSTORE(0x7000, 0x7000, 256, "test")

And I see a "test" file pops up. Neat. Now:

RELOAD(0x7000, 0x7000, 256, "test")

And I expect the red bar to copy back into screen memory from the saved 'test' cart - but nothing happens.

I am clearly missing something simple. It does not seem the screen is cleared, as if I do not do the cls, the red bar stays there. Is a puzzlement.

P#18583 2016-02-01 16:31 ( Edited 2016-02-01 21:31)

"The raw character limit has also been increased from 32k to 64k."

How does this count? My game stops working after exceeding approc. 36620 characters, I would dream of 64kb here... Would solve all my problems I have with my RPG ;)

P#18801 2016-02-13 13:26 ( Edited 2016-02-13 18:26)

[Please log in to post a comment]