Open
Description
- Added: SFX filters: noiz (white noise for inst 6), buzz, detune (flange/overtone), reverb, dampen (lpf)
- Added: SFX length (leave the second loop value at 0 to use). Can be >= 32.
- Added: P8SCII control characters when using print() -- can adjust colour and cursor position etc.
- Added: User-defined font at 0x5600, accessible via control character \014
- Added: poke(addr, val0, val1, val2 .. valn) -- same for poke2, poke4
- Added: can peek multiple values: a,b,c = peek(addr, 3) -- same for peek2, peek4
- Added: Locked mouse pointer // poke(0x5f2d, 0x5) and then stat(38),stat(39) to read
Added: right click in sfx pitch mode to grab the instrument of that note- Added: IMPORT command can specify target location in pixels: IMPORT FOO.PNG -X 16 -Y 32
- Added: IMPORT -S to shrink the imported image (e.g. -S 3 means shrink from 384x384 -> 128x128)
Added: ctrl-c at empty command prompt to copy the most recent error message- Added: extcmd("screen",0,1) / extcmd("video",0,1) saves files in same path as cart / exported executable or app.
- Added: set bit POKE(0x5F36, 0x8) to treat sprite 0 as opaque when drawn by map(), tline()
Added: shift-tab in gfx/map editor for full-fullscreen mode (with no red menu bars)- Added: extcmd("rec_frames") to record each gif frame only when flip() is called regardless of rendering speed
- Added: extcmd("folder") to open the folder on the host operating system (where printf, extcmd saves files to)
- Added: custom menu callbacks can optionally leave the pause menu open, and can read LEFT and RIGHT button presses
Added: ctrl-h hex mode in map / gfx views (displays current sprite in hex, and shows map tile values)- Added: export map as a single image with export foo.map.png
Added: @weeble's gamepad improvements to the default html shell (dpad layout detection, better mapping / hotplugging)- Added: stack trace on bad memory access e.g. poke(-1,0)
- Improved: General optimisation pass; heavy carts use 20~30% less host cpu
- Changed: Most api functions are local by default for performance. use "pico8 -global_api 1" if needed for debugging.
- Changed: unpack() now has a non-zero cost but still fairly fast
- Changed: .. operator has a small cost based on number of characters concatenated
- Changed: LOADK vm instruction costs 1 cycles (was 2) // otherwise "c=0" costs more than "c=a+b"!
- Changed: removed function cpu refunds; speed-critical calls to bitwise function should use operator counterparts instead.
- Changed: Incremental garbage collection each frame for improved performance.
- Changed: stat(0) performs garbage collection in order to obtain a meaningful result; use stat(99) for raw value
- Changed: options menu always available from pause menu (used to only be available in web exports)
- Changed: tostr() returns "" instead of nil
- Changed: exporting gif/png from web version now creates a pop-up div that can be dismissed
- Changed: print() from commandline automatically wraps long strings
- Changed: glyph constants set only when running cartridge, not when running a command from prompt
- Changed: Using printh from exported carts outputs files in the same folder as the .exe / .app
- Changed: Various kana font adjustments
- Changed: type() returns nothing instead of causing a runtime error
- Changed: fill pattern is cleared when program is suspended by default. Use poke(0x5f2e,0x20) to preserve.
- Changed: reset() resets everything from 0x5f00..0x5f7f, same as when program is initialised (including new random seed)
- Changed: font tweaks for hiragana, katagana, ampersand characters
- Changed: (raspi) separate binaries that support gpio to remove wiringPi dependency and gpio poking-related crashes
Fixed: Diagonal lines in editor contain an incorrect step when snapping to -1:1, 1:-1- Fixed: rnd(tbl) is not random enough when table has 2 elements /bbs/?pid=81092#p
- Fixed: add(tbl) causes runtime error. should have no effect and return nothing
Fixed: cursor position in code editor incorrect when changing lines contaning glyphs/tabsFixed: CONFIG TAB_WIDTH does not take effect until restarting PICO-8Fixed: Selecting sprites from bottom right -> top left and then pasting only pastes a single spriteFixed: Moving map selection around with cursor keys beyond original selection leaves streaks- Fixed: stdout/stdin serial() streams should be binary, not text mode (causes \r chars under Windows)
- Fixed: printh("hello.txt",fn,true,true) fails to save to desktop when fn has an extention
Fixed: IMPORT FOO.PNG using the current sprite location as target instead of 0,0- Fixed: tonum behaving differently to parser for string numbers out of range. e.g. tonum("-0x9000") should be 0x7000
Fixed: Exporting the same zip file multiple times creates duplicate file entries- Fixed: tline / line clipping // sometimes off by 1px, sometimes incorrectly discarded altogether
- Fixed: poking values with bit 0x80 to 0x5f28,0x5f30,0x5f3c,0x5f3e clobbers following address
- Fixed: deli(tbl,nil) behaves the same as deli(tbl) -- should have no effect
- Fixed: stat(13),stat(15) reporting y coordinates of menu with 0 items
- Fixed: memory leak when saving gifs (causes web export to crash after a few records)
- Fixed: print() linefeeds clobber multi-line text printed at bottom of screen
- Fixed: preprocessor can not handle form: "::_::a+=1" (regression in 0.2.1)
- Fixed: When split() by group size (e.g. split("ab12",2,false)), last parameter ignored
- Fixed: partial cstore (len < 0x4300) from splore/export clobbering data outside that range on subsequent reload
Fixed: joystick stops responding after unplug and plug back in twice (also happens when some devices sleep / wake up)- Fixed: mkdir(nil) crashes
Fixed: possible to edit an SFX without the cursor visible (confusing)- Fixed: menuitem() callbacks broken when there is no _draw() or _update() defined
- Fixed: should only be able to call from commandline: cd mkdir install_games keyconfig info
Fixed: controller menu (pause->options->controls) does not show custom key settingsFixed: -export failing to find files relative from current pathFixed: -export failing to locate html template path- Fixed: binary export storing multicart cart names with path (should be named "dat1.p8", not "dat/dat1.p8")
- Fixed: pause menu broken when cartridge is launched from splore and run() is called inside first frame
- Fixed: text printing does not respect draw palette (was broken in 0.2) // ref: /bbs/?tid=41428
- Fixed: for backwards compatibility, non-numbery colour parameters should be taken to mean zero
- Fixed: preprocessor: self assignment with quoted function calls on RHS a+=1+cos"0"
- Fixed: ctrl-r during pause menu only takes effect after closing menu
- Fixed: (bug in RC1) pack(...).n is zero
- Fixed: (bug in RC1) using filters noiz:1, dampen:2, lpf is not applied to melodic instruments (but should be)