Quantcast
Channel: zep [Lexaloffle Blog Feed]
Viewing all 137 articles
Browse latest View live

PICO-8 0.1.1

$
0
0
PICO-8 0.1.1 is now available! Grab it from the Updates page.

Note that PICO-8 is available to all Voxatron alpha users (including bundle customers). You may need to activate your account, or log in via email if you don't have a username/password already set up.

I'm doing things a little out of order here.. a full introductory post to PICO-8 will follow in a bit for those who haven't been around lately, but for now here's a rundown of new stuff in 0.1.1..

1. Gif saving! Press F9 to save the last 8 seconds (or F8 to set a starting point if you wish)



2. Token counting.

Instead of limiting cartridges to ~15k of ascii text, the primary limit is now 8192 tokens. I say primary limit, because the character count still stands, but is now 32k -- in practice the token limit is almost always reached first. There is actually also a third limit when saving cartridges -- the code must compress to the original 15k allocation. Exceeding this is extremely rare and you can probably ignore it! To get the status of your program, use the new INFO() command.

There aren't currently any cartridges that I know of that go over 8k tokens, and in general this change will give you around 20~30% more space.

3. Freeform sprite and map editing

You can now zoom out with the mousewheel and pan around using space. There is also a more traditional selection tool (you can use cursors to move the selection around). See the manual for more details.

4. New api functions

By popular demand, sqrt(), atan2() and sub() have been added.

atan2() follows the convention set by cos() and sin() of flipping y so that angles increase anti-clockwise in screenspace and reach a full circle at 1.0. So atan2(0,-1) is 0.25

To grab the length of a string, you can use the now-fixed # operator (#s) and grab individual characters with sub(s,pos,pos)

5. More palette control

Palette mapping now applies to all draw operations (note: there is a tiny bit of palette weirdness for existing carts because of this)
Also, you can specify which colours spr(), sspr() and map() should treat as transparent using palt()
palt(1, true) -- don't draw any dark blue pixels

6. Better saving, loading and re-loading

You can now quick-save with CTRL-S. Saving over files, or quitting without saving causes a backup to be saved in [pico-8 home]/backup.

When loading a .png, you can now omit the ".p8.png" and pico-8 will check for it.

Using CTRL-R will automatically reload the cartridge if no changes have been made (making it easier to work with external editors for heretics).

--

Thanks so much to everyone who has given suggestions and shaped the direction of this project. I'm really happy with the way token counting in particular has worked out, but the proof will be in the pudding! Let me know if there are any show-stopping problems that should be nipped in the bud, and I'll include them in a bug-fixing update next week (that will also hopefully include keyboard mapping & broken Yosemite mouse fixes).

Test 0.1.1 cart:

Froggleoid 1.1
by zep

PICO-8 Cartridge[#11253#] | Posted 2015-06-11 20:08:44
9


Full changelog:


v0.1.1
&nbsp&nbsp&nbsp&nbspAdded: Token-based code limiting (8192 tokens, 32k ascii text)
&nbsp&nbsp&nbsp&nbspAdded: Freeform move, pan and selection in sprite and map editors
&nbsp&nbsp&nbsp&nbspAdded: Flood-fill tool (sprite and map)
&nbsp&nbsp&nbsp&nbspAdded: .GIF saver
&nbsp&nbsp&nbsp&nbspAdded: CTRL-Stamp to stamp with transparency
&nbsp&nbsp&nbsp&nbspAdded: Single-step undo for map and sprites
&nbsp&nbsp&nbsp&nbspAdded: 2x2 brush
&nbsp&nbsp&nbsp&nbspAdded: sqrt(), atan2()
&nbsp&nbsp&nbsp&nbspAdded: CTRL-S to quick-save
&nbsp&nbsp&nbsp&nbspAdded: CTRL-R reloads .p8 file and runs (useful for external text editing)
&nbsp&nbsp&nbsp&nbspAdded: Automatic backups on overwriting or quitting without saving
&nbsp&nbsp&nbsp&nbspAdded: Scroll wheel zooms in sprite editor
&nbsp&nbsp&nbsp&nbspAdded: Customisable resolution //&nbsp&nbspe.g. pico8 -width 580
&nbsp&nbsp&nbsp&nbspAdded: Strings highlighted as green
&nbsp&nbsp&nbsp&nbspAdded: ALT-click can optionally simulate right click (see config.txt)
&nbsp&nbsp&nbsp&nbspAdded: palt() to control transparency for spr(), sspr()
&nbsp&nbsp&nbsp&nbspAdded: info()
&nbsp&nbsp&nbsp&nbspChanged: load() tries adding .p8.png, .png if file doesn't exist
&nbsp&nbsp&nbsp&nbspChanged: Draw operations apply only to selection when active
&nbsp&nbsp&nbsp&nbspChanged: Move operations (cursors) apply to selection if present
&nbsp&nbsp&nbsp&nbspChanged: Removed time()
&nbsp&nbsp&nbsp&nbspChanged: Random seed is random on cart startup
&nbsp&nbsp&nbsp&nbspChanged: api functions never read directly from cart rom
&nbsp&nbsp&nbsp&nbspChanged: sspr() can take negative values for dw, dh
&nbsp&nbsp&nbsp&nbspFixed: Sparse table indexing with integers fails
&nbsp&nbsp&nbsp&nbspFixed: Assignment operators and shortform if-then-else failing
&nbsp&nbsp&nbsp&nbspFixed: sspr() failed when w0 == 128
&nbsp&nbsp&nbsp&nbspFixed: Circle drawing broken when camera not (0,0)
&nbsp&nbsp&nbsp&nbspFixed: CPU hogging
&nbsp&nbsp&nbsp&nbspFixed: Noise instrument clobbers rnd() sequence
&nbsp&nbsp&nbsp&nbspFixed: Audio system not resetting on program reset
&nbsp&nbsp&nbsp&nbspFixed: % operator sometimes wrong for negative values
&nbsp&nbsp&nbsp&nbspFixed: Length operator (#)
&nbsp&nbsp&nbsp&nbspFixed: Power operator (^)
&nbsp&nbsp&nbsp&nbspFixed: Line clipping bug on right and bottom edges
&nbsp&nbsp&nbsp&nbspFixed: print() precision for whole numbers
&nbsp&nbsp&nbsp&nbspFixed: print() broken for negative y values
&nbsp&nbsp&nbsp&nbspFixed: tokenization and keyword highlighting
&nbsp&nbsp&nbsp&nbspFixed: sprite properties not copied/pasted
&nbsp&nbsp&nbsp&nbspFixed: Only sfx 0..32 could be used as music patterns
&nbsp&nbsp&nbsp&nbspFixed: Saving and loading a .p8 file adds newline to end of code
&nbsp&nbsp&nbsp&nbspFixed: Drag selection to left margin in code editor -> selects all


Voxatron Lua Scripting Preview

$
0
0
The general strategy for developing Voxatron's toolset is to provide specialized features (modifiers, microscripting, physics properties etc) that capture 90% of a typical designer's requirements, and then leave the rest to Lua scripting. Lua will be kind of like a glue that that holds the engine together and fills in the gaps of functionality.

Working on custom player inventories and menus that have a plethora of possible requirements, I feel I've hit that 90% boundary. The engine is now complete enough that it is possible to create a Lua API that is grounded in something stable and maintainable. For this purpose, I've created a text editor that can be used within Designer, and a custom version of Lua designed to work efficiently with Voxatron (both of which you can see in action in PICO-8). It's time to (carefully) plug everything in and see what happens!

It will also be possible to write cartridges from scratch in Lua, of course. This would be handy for making games that need their own style of physics, or things like RTS, sim or puzzle games that deviate a lot from typical Voxatron shooty-runny things. The purest cartridge can contain simply one Lua script, and no rooms or object definitions.

If all goes well, I'll start to roll out a minimal API later next month for anyone to experiment with. It is a typical object-wise callback scheme, where things happening in the world/engine call Lua functions that the cart designer provides.

Here's a simple example:



This is a regular twirly gun using emitters to shoot out the bullets. I've attached a script to each bullet (it's just a SCRIPT item that sits anywhere in the bullet's resource tree) that looks like this:



function this.new()
&nbsp&nbsplocal a = new_bullet()
&nbsp&nbspa.col = 12
&nbsp&nbspreturn a
end

function this.draw(a)
&nbsp&nbsplocal x,y,z = a:xyz()
&nbsp&nbspline3d(x,y,z-30,x,y,z-5,a.col)
end




Every time a bullet is created, the new() function is called (if one exists), and some Lua data (a table, to be precise) is attached to that object. Now, any time something happens to the bullet -- it's moved or drawn or collides -- a corresponding function is called. Here I've only provided a single function that is called by the engine each time the bullet is drawn which grabs the bullet's world position and draws a line straight up.

If you're new to programming and want to get a head-start, I would suggest playing around with PICO-8, which is free for all existing Voxatron alpha users (including the earlier Humble Bundles). Have a look at the Updates Page for download instructions.

Incidentally, I am relatively new to Lua scripting myself! So if you have any feedback or questions about Voxatron scripting, feel free to post here.

Adaptive HUD Formatting

$
0
0


The last inventories thing I needed for 0.3.3: adaptive formatting (an extreme example). Each inventory item is assigned a group (left, middle, right), and it does its best to figure out how to format everything in a sensible way that doesn't jump around too much and doesn't overlap. I had to be careful not to end up with a 1996 html table renderer!

It's possible with the new inventory system to display the capacity of an item (e.g. empty slots for up to 5 potions), to draw different icons for wielded or carried, and to draw different icons depending on how much ammo each one has.

To handle 1p vs multiplayer inventories, you can tag animations with context information -- how many players should exist for them to be displayed and with which attributes. For example, a single player inventory might show a row of potions, but when playing multiplayer it might be displayed as a single icon with a number to save space.

There's not long to go before 0.3.3 -- just a few microscripting details and converting legacy cartridges over to the new system on load. 0.3.4 will be a smaller follow-up, so let me know if there's something you're hanging out for, and I'll see if I can bump it up, or make sure it will be possible with Lua scripting later on. Things that were recently mentioned and are already confirmed:

- pico-8 music tracker and music triggering (and some new music!)
- custom inventories with selection and/or button bindings
- inventory microscripting (check for number of arrows in a quiver etc.)
- items that share the same ammo (e.g. all spells cost MP)
- id duplication and aliasing bugs after copy/paste
- fixed density allowing actors to sink in liquid
- scroll-wheel zoom, mb3 camera movement , alt-click mb2 emulation
- fixed total playtime bug for speedruns, made restarts faster

There are a few things that are wishlisted, but might be better suited to Lua scripting later on:

- player selection menu
- separate inventory menu
- assigning chase targets to monsters (for waypoints or making snakey monsters)
- arcade style lives

PICO-8 Fanzine #1

$
0
0


Issue #1 of the community-made PICO-8 zine is out! You can order the 48-page printed version via pico8fanzine.bigcartel.com for a nominal fee, or download the pdf (mirror).

Much respect to @arnaud_debock and contributors for putting this together -- it's humbling to see the world of PICO-8 extended in such a creative and kick-ass way. Issue #1 includes artwork and articles by @dotsukiHARA, @bitmoo, @TheRealMolen, @pizzamakesgames, @PROGRAM_IX, @aliceffekt, @modernmodron and @terrycavanagh. I also took the opportunity to write something on the history of PICO-8 and it's relationship with other Lexaloffle projects.

If you'd like to contribute to future issues, see also this thread, or tweet @arnaud_debock.

Updates Ahoy

$
0
0


Just a quick note for blog-checkers, Voxatron 0.3.3 and PICO-8 0.1.2 are both arriving this month.

I'll go into detail about new Voxatron developments and plans after the update's out, but here's a quick preview until then.

Also, here's the current changelog for pico-8 0.1.2. There are still known issues that I've rolled over to 0.1.3 but let me know if I missed something small that's easy to fix!



v0.1.2
&nbsp&nbsp
&nbsp&nbsp&nbsp&nbspAdded: Cartridge save data (64 fixed point numbers)
&nbsp&nbsp&nbsp&nbspAdded: 8-player input
&nbsp&nbsp&nbsp&nbspAdded: demo carts: COLLIDE and BUTTERFLY
&nbsp&nbsp&nbsp&nbspAdded: Command-line parameters // load cart, -run, settings
&nbsp&nbsp&nbsp&nbspAdded: Alternative function keys (F6..F9 aliased as F1..F4)
&nbsp&nbsp&nbsp&nbspAdded: pairs()
&nbsp&nbsp&nbsp&nbspAdded: printh() for debugging
&nbsp&nbsp&nbsp&nbspChanged: music pattern length taken to be first non-looping channel's length
&nbsp&nbsp&nbsp&nbspChanged: screenshot captures whole window contents at display resolution
&nbsp&nbsp&nbsp&nbspChanged: del() moves remaining items up one index to maintain a packed table
&nbsp&nbsp&nbsp&nbspChanged: count() includes non-array elements. count(a,v) counts instances of value v
&nbsp&nbsp&nbsp&nbspChanged: add(),del(),count(),all() no longer store hidden fields
&nbsp&nbsp&nbsp&nbspTweaked: palette: slightly darker gray, warmer greens and yellow
&nbsp&nbsp&nbsp&nbspFixed: sqrt() crashing for 0 or >= 32761
&nbsp&nbsp&nbsp&nbspFixed: Semi-colon characters in text editor
&nbsp&nbsp&nbsp&nbspFixed: Long lines split when saving in .p8 format
&nbsp&nbsp&nbsp&nbspFixed: pget() does not respect camera position
&nbsp&nbsp&nbsp&nbspFixed: Error message when peeking or poking outside of legal address space
&nbsp&nbsp&nbsp&nbspFixed: Search replace colour fills one pixel outside of selected region
&nbsp&nbsp&nbsp&nbspFixed: Playing an empty music pattern breaks subsequent music playback
&nbsp&nbsp&nbsp&nbspFixed: Invalid sfx editing state on startup
&nbsp&nbsp&nbsp&nbspFixed: Painting instruments values in frequency view also sets volumes
&nbsp&nbsp&nbsp&nbspFixed: Inconsistent gif recording speeds
&nbsp&nbsp&nbsp&nbspFixed: Unmapped joystick support
&nbsp&nbsp&nbsp&nbspFixed: Compressed code size sometimes larger than uncompressed
&nbsp&nbsp&nbsp&nbspFixed: mid() fails when first argument is not smallest
&nbsp&nbsp&nbsp&nbspFixed: Scroll wheel changes sprite/map zoom while in code editor
&nbsp&nbsp&nbsp&nbspFixed: CTRL-R (quick-run) overwriting current command line
&nbsp&nbsp&nbsp&nbspFixed: Label capture (F7) does not respect screen palette state


PICO-8 0.1.2

$
0
0
Check your updates page!

Note: If you bought PICO-8 (rather than Voxatron), it isn't possible yet to activate your Lexaloffle account from Humble. I've been activating accounts manually, so if you purchased PICO-8 very recently and don't see it show up yet, please check back in a day or so. The Humble Bundle library builds should be live soon too.

New stuff: HTML5 exporter, 8-player joystick support, cartridge save data.

To export your cartridge as a stand-alone html5 version:


EXPORT BLAH.HTML


Open the folder (FOLDER) and you should be able to see BLAH.HTML and BLAH.JS

Here's a demo of cartridge saving. Note that save data is not persistent yet in the web version:

Bitpools 0.1.2
by zep

PICO-8 Cartridge[#14880#] 2015-10-02 17:25:58&nbsp CC4-ATTR-NC-SA
4


Changelog:


&nbsp&nbsp&nbsp&nbspAdded: html5 cartridge exporter
&nbsp&nbsp&nbsp&nbspAdded: Cartridge save data (64 fixed point numbers)
&nbsp&nbsp&nbsp&nbspAdded: 8-player input
&nbsp&nbsp&nbsp&nbspAdded: Demo carts: COLLIDE and BUTTERFLY
&nbsp&nbsp&nbsp&nbspAdded: Command-line parameters // load cart, -run, settings
&nbsp&nbsp&nbsp&nbspAdded: Alternative function keys (F6..F9 aliased as F1..F4)
&nbsp&nbsp&nbsp&nbspAdded: pairs()
&nbsp&nbsp&nbsp&nbspAdded: printh() for debugging
&nbsp&nbsp&nbsp&nbspAdded: Tab completion for filenames in console
&nbsp&nbsp&nbsp&nbspAdded: stack trace on runtime error
&nbsp&nbsp&nbsp&nbspChanged: music pattern length taken to be first non-looping channel's length
&nbsp&nbsp&nbsp&nbspChanged: noise instrument (6) has low frequency white noise scaled by volume
&nbsp&nbsp&nbsp&nbspChanged: screenshot captures whole window contents at display resolution
&nbsp&nbsp&nbsp&nbspChanged: del() moves remaining items up one index to maintain a packed table
&nbsp&nbsp&nbsp&nbspChanged: add(),del(),count(),all() no longer store extra fields
&nbsp&nbsp&nbsp&nbspChanged: removed count() from docs -- now just a legacy function. Use # operator instead.
&nbsp&nbsp&nbsp&nbspChanged: cursor only blinks while window is active
&nbsp&nbsp&nbsp&nbspChanged: peek(), poke() and binary operations (band()..) have no function call overhead
&nbsp&nbsp&nbsp&nbspChanged: yellow slightly warmer
&nbsp&nbsp&nbsp&nbspChanged: No camera snapping after pan in map mode
&nbsp&nbsp&nbsp&nbspFixed: sqrt() crashing for 0 or >= 32761
&nbsp&nbsp&nbsp&nbspFixed: Semi-colon characters in text editor
&nbsp&nbsp&nbsp&nbspFixed: Long lines split when saving in .p8 format
&nbsp&nbsp&nbsp&nbspFixed: pget() does not respect camera position
&nbsp&nbsp&nbsp&nbspFixed: Error message when peeking or poking outside of legal address space
&nbsp&nbsp&nbsp&nbspFixed: Search replace colour fills one pixel outside of selected region
&nbsp&nbsp&nbsp&nbspFixed: Playing an empty music pattern breaks subsequent music playback
&nbsp&nbsp&nbsp&nbspFixed: Invalid sfx editing state on startup
&nbsp&nbsp&nbsp&nbspFixed: Painting instruments values in frequency view also sets volumes
&nbsp&nbsp&nbsp&nbspFixed: Inconsistent gif recording speeds
&nbsp&nbsp&nbsp&nbspFixed: Unmapped joystick support
&nbsp&nbsp&nbsp&nbspFixed: Compressed code size sometimes larger than uncompressed
&nbsp&nbsp&nbsp&nbspFixed: mid() fails when first argument is not smallest
&nbsp&nbsp&nbsp&nbspFixed: Scroll wheel changes sprite/map zoom while in code editor
&nbsp&nbsp&nbsp&nbspFixed: CTRL-R (quick-run) drawing over current line in command mode
&nbsp&nbsp&nbsp&nbspFixed: Label capture (F7) does not respect screen palette state
&nbsp&nbsp&nbsp&nbspFixed: Syntax highlighting of api functions and hex numbers
&nbsp&nbsp&nbsp&nbspFixed: Looping to 0 with negative step finishes at 1
&nbsp&nbsp&nbsp&nbspFixed: nil values printed as false instead of nil
&nbsp&nbsp&nbsp&nbspFixed: Hexidecimal fractional parts
&nbsp&nbsp&nbsp&nbspFixed: btnp() unresponsive when skipping frames
&nbsp&nbsp&nbsp&nbspFixed: Editing mode is lost when using ctrl-r to run
&nbsp&nbsp&nbsp&nbspFixed: Tracker note entry keys mapped, messing up piano-like layout
&nbsp&nbsp&nbsp&nbspFixed: Shared gfx/map memory out of sync after some editor operations
&nbsp&nbsp&nbsp&nbspFixed: Alt-gr character entry
&nbsp&nbsp&nbsp&nbspFixed: Using shift to select in code editor has wrong selection range
&nbsp&nbsp&nbsp&nbspFixed: Dragging above top of text causes selection to flip to end
&nbsp&nbsp&nbsp&nbspFixed: Duplicate at end of file listing

PICO-8 0.1.3

$
0
0
You can find it on your Updates page. The new builds should be up on Humble soon too (check the version numbers on the files).

This is a quick bug-fixing update. Due to a rogue dev-debug-mode flag being mistakenly switched on in 0.1.2, much of the standard Lua library was accessible. So if you've started using PICO-8 recently, not knowing the library is not supposed to be there and tried to use it, sorry about the confusion!

v0.1.3 Changes:

Added: paste into commandline
Fixed: lua standard libraries accessible
Fixed: command-line loading doesn't work
Fixed: music pattern finished too early when all tracks set to looping
Fixed: peek()ing odd bytes in sfx address space masks bit 7
Fixed: cstore and reload from code space should have no effect

New BBS Features

$
0
0
Hey All

There's a new version of the BBS live now. It's still a little rough -- let me know in the comments if you find something weird going on. I'll be tweaking and extending it over the next month or so.



New stuff:

:: Read More

Multi-Update

$
0
0


Hey All

I've been doing some spring cleaning, and updated all of the older Lexaloffle games: Neko Puzzle (which is now free), Swarm Racer, Chocolate Castle, Zen Puzzle Garden, Swarm Racer and Swarm Racer 3000. If you had any trouble running these games on newer versions of OSX or 64-bit Linux, these versions should work out of the box.

SR3K also has some new wall rendering and analogue joystick support. I've been chipping away at it very sporadically but it's on slow burn until after Voxatron is finished. An 8-track preview is available to any Lexaloffle customers.

You can find downloads on the game pages, or your updates page / Humble Library page.

User-made ZPG and Chocolate Castle puzzles are also back up with new HTML5 players. You can post puzzles by saving them to clipboard and then pasting the puzzle text into a BBS post.

Tokyo Demo Fest 2016

$
0
0


This weekend (20th, 21st) I'll be at Tokyo Demo Fest 2016, giving a short PICO-8 seminar at 3pm on Sunday, and also making a wee demo for the Wild compo (also in PICO-8, naturally). If you're in Tokyo, come along! The venue is larger than last year -- 3331 Arts Chiyoda, which is around 8 minutes walk from Akihabara station. You can find the registration page and more information here.

Here's a 4k demo from last year (it won the combined pc section):



New Website and Player Layout

$
0
0
Hey All

I'm in the process of simplifying the website a little. In particular, I wanted to improve the experience of playing cartridges in threads by removing clutter. They now look more like a page dedicated to the cart:

- The player starts open
- There's a big obvious play button and large thumbnail
- There's no banner at the top of each page

Cartridge[#20430#] |2016-05-11 | Link




I removed the PLAY buttons from the thread previews, and autoplay, as I think they're no longer needed -- the whole playable region of a cart is now visible without scrolling after opening the cart's thread, and it's more obvious to new visitors what to do next.

There are still a few small things to finish, but let me know what you think of the new layout, and if there's anything that bugs you.

Carts in Carts

$
0
0

A heads up for Voxatron users -- the first version of the Lua api will be out next week in 0.3.5!

Pictured above is the result of drawing voxels directly into a room's map. The 0.3.5 api also provides access to actor attributes and state, spawning, camera control, and direct access to the display. The entire PICO-8 api is in there with some 3D counterparts (line3d, box, sphere), and it's possible to import a pico-8 cart into the resource tree, place it in a room, and run the cart on a single slice of the display. The .p8 cart shows up in the resource navigator, and is placeable in the room like this:

The code can also be edited to make slight adjustments for the 3d display:

In other news, I've updated the website with mobile-friendly cart listings and touch controls for the carts. It's still a work in progress -- the sound in particular is very choppy or missing altogether. But apart from that it is quite useable. If you have a modern phone or touch device please try it out!

Rise and Shine Professor Miggles

$
0
0

Rise and Shine Professor Miggles 1.1

by zep


[Click to Play]

Every day, Professor Miggles goes to work. And every day he snoozes in bed until the last possible moment. To keep the points you get for snoozing, make sure to head out in time without forgetting to put your trousers on.

v1.1: Fixed high score bug, and added persistent high score (when played from pico-8)

PICO-8 0.1.5

$
0
0

Hey All

Here's a quick update with music copying and keyboard configuration for controller buttons.

To configure buttons, use KEYCONFIG from the commandline.

To copy a song from one cartridge to another:

  1. In the song editor, click on the start pattern and then shift-click on the end pattern that you want to transport. They should light up green.
  2. Control-C to copy the pattern data, along with the sfx they point to.
  3. Load the cart you want to paste into, open the song view and click on the pattern index you want to paste to.
  4. CTRL-V to paste. When pasting a song, any SFX that are needed are written to unused slots and then the pattern indexes are adjusted accordingly.

Changelog:

v0.1.5
        Added: Keyboard configuration for player buttons (KEYCONFIG) 
        Added: Music tracker select / copy / paste
        Added: Single-level undo in audio tools
        Added: Live preview of frequencies in sound editor
        Fixed: Command history extends past last reboot
        Fixed: Sfx exporter broken
        Fixed: Slashes at end of path resolve to double slashes
        Fixed: Load cart from commandline under Windows

Tokyo Demo Fest 2016

$
0
0

This weekend (20th, 21st) I'll be at Tokyo Demo Fest 2016, giving a short PICO-8 seminar at 3pm on Sunday, and also making a wee demo for the Wild compo (also in PICO-8, naturally). If you're in Tokyo, come along! The venue is larger than last year -- 3331 Arts Chiyoda, which is around 8 minutes walk from Akihabara station. You can find the registration page and more information here.

Here's a 4k demo from last year (it won the combined pc section):


PICO-8 for Raspberry Pi

$
0
0

A build of PICO-8 0.1.5 is now available for Raspberry Pi! Check your updates page or look in your Humble library under the Linux downloads section.

It works in fullscreen under either X Windows or directly from the terminal (using directfb). For speed, the default resolution is 280,280; you can set this with the -width and -height switches:

pico8 -width 720 -height 480

Known issues:

  • After quitting, keypresses during the session are sometimes dumped to terminal (annoying if you quit by typing shutdown instead of CTRL-Q!)
  • Freeze on exit (observed on a zero)
  • Some math-heavy cartridges (e.g. /demos/cast.p8) don't run at full speed on first generation models.

There are two builds included in the archive. pico8 is compiled statically (so no need to install SDL2), and pico8_dyn dynamically loads libraries, in case you'd like to supply your own SDL2.

Have fun, and please post pictures if you get pico-8 running on any cute displays!

Drippy Save

$
0
0

Drippy Save

by zep


[Click to Play]

This is a demo of the new cartridge storing in 0.1.6. (you'll need to update to 0.1.6 if you load this in PICO-8)

Press O (mapped to Z or C) to save the screen, and X to restore it. The cursor position is not saved.

To save, the screen is copied to the sprite sheet and then stored for clarity -- but it could have just been a straight cstore(0x0, 0x6000, 0x2000), and same again in reverse when restoring.

 if (btn(4)) then
  memcpy(0x0,0x6000,0x2000)
  cstore()
 end

 if (btn(5)) then
  len = reload()
  memcpy(0x6000,0x0,0x2000)
 end

This should also work in your browser, even if you close it and run the cartridge again. Please let me know if it doesn't!

Note that in 0.1.6 you can also cstore to separate cartridge files, meaning we can have quite large save games, and also saved data shared between carts on the bbs.

PICO-8 0.1.6

$
0
0

Here's 0.1.6! You can download it from your updates page while you're logged in, or from your Humble Store Library. Just a reminder, that if you're a Voxatron alpha customer, you also own PICO-8! (it should show up automatically in both places).

By far the biggest change is the addition of SPLORE, a complete bbs and local cartridge explorer. You can run it by typing SPLORE, or start PICO-8 with "pico-8 -splore". If you plug a joystick in and auto-boot into splore, it's possible to navigate everything using only the 6 buttons + menu button.

This version also has a lot of new data storage functionality. Cartridges can cstore() to themselves in order to save extra data, and this is now officially supported on the web, so don't feel like it's a weird hack that's going to break! (actually it might break, but it's supported, so I'll fix it :p). Here's a demo:

Drippy Save

by zep


[Click to Play]

Notes on cartridge storage, and the full change log:

--------------------------------------------------------------------------------------------
    Cartridge Data
--------------------------------------------------------------------------------------------

    Each cartidge is able to store 64 numbers (256 bytes) of persistent data 
    on the user's PICO-8 (rather than on the cart itself). This can be used as
    a lightweight way to store things like high scores or to save player progress.

    If you need more than 256 bytes, it is also possible to write directly to the
    cartridge using cstore(). The disadvantage is that the data is tied to that
    particular version of the cartridge. e.g. if a game is updated, players will
    lose their savegames.

    Another alternative is to write directly to a second cartridge by specifying
    a fourth parameter to cstore(). This requires a cart swap though (so is 
    slightly slower), and leaves data-cart litter when run from a local folder.

    v0.1.6

        Added: SPLORE local & bbs cartridge explorer
        Added: setmetatable(), cocreate(), coresume(), costatus(), yield()
        Added: Spinning cart icon to show when a cart is swapped / written to
        Added: Permanent storage when carts played in a browser
        Added: Adjustable aspect ratio (-aspect 420 for 1:1)
        Changed: Lua memory limit: 1024k (was 512k)
        Changed: Music channel now resumes after being clobbered by an sfx 
        Changed: Arpeggios double speed when SFX speed <= 8
        Changed: Exceeding compressed code limit does not block saving in .p8 format 
        Changed: spr() half as expensive, to be consistent with map()
        Changed: Fractional hex number notation: 0x0.3 == 0x0.3000, (was 0x0.0003)
        Changed: : operator doesn't count as an extra token (same as .)
        Changed: cstore() writes directly to disk
        Changed: cstore(), reload() return number of bytes read / written
        Changed: save() while running does nothing. (use cstore() instead)
        Changed: load() while running loads and runs the specified cartridge 
        Fixed: Small pops in audio mixer caused by sound wave discontinuities
        Fixed: HTML5-exported sound clicks badly under Chrome
        Fixed: Display palette is not oberserved when exporting GIFs
        Fixed: Rapid keypresses causes duplicate readings in tracker & text editor
        Fixed: += inside comments breaks preprocessor
        Fixed: sspr() cpu cost the same when clipped
        Fixed: cartdata() with bad parameters crashes
        Fixed: EXPORT from commandline can not be used without brackets and quotes

PICO-8 is Coming to PocketC.H.I.P.!

$
0
0

If you're looking for a complete portable PICO-8 solution, good news! PICO-8 is going to ship pre-installed on Next Thing Co.'s upcoming PocketC.H.I.P. -- a complete portable mini-computer with built-in storage, wifi, keyboard, battery, touchscreen and everything else PICO-8 needs! The last few months, I've been working closely with the team at Next Thing Co. to create "PICO-8 C" -- a fully functioning and compatible edition designed to integrate nicely with NTC's hardware and software. It will be available to Kickstarter backers, or you can also pre-order one for just $49 bucks.

You can read more about the PocketC.H.I.P. over at getchip.com

PICO-8 Jam #2

$
0
0

Time for another jam! EDIT: The theme is Chain Reaction.

EDIT2:
and... that's time! Thanks everyone who contributed a cartridge! If you submitted something with the p8jam2 tag, you can now rate other p8jam2-tagged carts at the top of the cart's thread.

P8JAM2 THREADS

If you'd like to continue working on your cartridges, feel free -- but please leave the compo version at the top of the p8jam2-tagged threads until voting finishes in one week (June 5, 24:00 PST). Good luck!

PICO-8 Jam #2

by zep


[Click to Play]

Same deal as last time, except with some limited theme voting:

Duration: The Jam will take place from 00:00 PST on Saturday the 21st of May 2016 and will finish at 24:00 PST on Sunday the 29th. So, it spans 2 weekends and 5 weekdays. You can spend as much or little time on your carts as you like. Tiny silly cartridges are more than welcome.

Theme: As is customary with other jams, a theme will be posted at the start and the goal is simply to make a cart (or some carts) during the jam that reflect your interpretation of the theme. Any type of cartridge is ok: games, toys, demos, music carts or pixels.

This time, the theme will be selected by a small twitter poll that begins 24 hours before the jam starts.

Submitting: To submit or update a jam cart before the deadline, just tag it with p8jam2. You can update your cartridge as often as you like before the deadline.

Voting: Jam participants will be able to use a voting widget on all p8jam2-tagged carts, and exactly 1 week after the jam finished, ratings will be tallied.

There will be a small mystery prize for the highest rated cart, but you should enter for glory and honor (or just for kicks).

During the jam, you'll be able to view all carts and posts tagged with p8jam2.

Rules: Teams / collaborations are allowed, in which case you should nominate one user to be the submitter (and voter). Re-using existing PICO-8 cart material is allowed as long as it is ok by the author, and that the carts are publicly available before the jam starts. Submissions should be mostly new material created during the jam, but it's ultimately up to other participants making ratings to decide what's cool and what's not.

Viewing all 137 articles
Browse latest View live