0.2.1c Candidate Changelog Added: batch matmul*() by specifying height as last param: v=userdata("f64",4,1000) v:matmul(matrix,true,4) Added: /demos/treegen.p64: for testing batch transforms and woozy audio slides Added: tline3d() flags 0x400 for faster low-quality mode (3 px/cycle, performs one divide every 8 pixels) Added: superfast (x2) spr(), sspr(), map() under default draw state (no fill pattern or masks): 6px/cycle Added: show/hide tabs and line numbers in code editor Added: bbs:// carts can run bundled carts inside their own sandbox: create_process("carts/foo.p64.rom") Added: bbs:// carts can run other bbs carts inside their own sandbox: create_process("bbs://bells.p64") Added: include(filename, new_env) to provide a limited _ENV to the included code Added: per-channel volume control while music is playing: sfx(-4, channel_index, vol) Added: music() play pattern from tick value (allows tracks that are playing at different speeds) Added: shift-space to play a pattern from just before cursor Added: ctrl-left/right to jump between tracks / track segments Added: [audio] faster arp commands: n,m Added: [audio] o command to oscillate between the current and relative (p0) pitch at a given speed (p1) Added: [audio] f command can be used to fade towards the channel's volume value (similar to the s command) Changed: [audio] s command always applies volume fade to target channel volume if there is one set in that row Changed: [audio] partially complete slide behaviour is different because of bug fixes below; is a breaking change Changed: reduced cpu costs on batch draw overhead, userdata op per-span overhead, :take() Fixed: enter in text editor removes one level of indentation when current line only contains whitespace Fixed: cpu accounting when an expensive (> 10% cpu) single operation spans multiple frames Fixed: drag and drop files from host is broken (regression caused by changes in sandbox rules) Fixed: sandboxed apps corunning in terminal can create_process() without usual sandbox restrictions Fixed: abs(nil) produces a runtime error // should return 0 to be PICO-8 compatible Fixed: tline3d observes fill pattern using only the first screen y value (i.e. only works for horizontal spans) Fixed: /demos/proggy.p64 enter brings up pause menu Fixed: :take() crash when the generated output userdata is larger than 16MB Fixed: [audio] pitch snaps back after slides (s, -, +) even when there is no pitch command in the next row Fixed: [audio] ditto for volume; a partially completed fade should carry over until next volume command Fixed: [audio] instrument retriggers when there is no instrument command (state is meant to carry over) Fixed: unsaved changes sometimes incorrectly reported for newly loaded cartridge Fixed: on_event("modified:...") message is not generated when copying or moving over a file Fixed: theme editor does not revert desktop to previous colour scheme when discarding unsaved changes Fixed: double line breaks in app menu after using Save As Fixed: family of sandbox injection attacks that rewrite functions used in kernal code (e.g. string.sub)