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:

Changelog:

	v0.1.4

		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 

14


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


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?


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


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").


Yay, update! Happy new year, Zep.


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

Report:
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.


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)


@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.


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


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


@zep: both


@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 ?!


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


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


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)


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


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


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


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.


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


@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 :-/
Thanks


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


There already is pause. It is bound to p


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


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


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!


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, ... ?


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


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


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


@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


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:

CLS
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.


"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 ;)



[Please log in to post a comment]