Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PICO-8 v0.2.2 compatiblity roadmap #24

Open
11 of 61 tasks
samhocevar opened this issue Feb 21, 2021 · 0 comments
Open
11 of 61 tasks

PICO-8 v0.2.2 compatiblity roadmap #24

samhocevar opened this issue Feb 21, 2021 · 0 comments

Comments

@samhocevar
Copy link
Owner

samhocevar commented Feb 21, 2021

  • 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/tabs
  • Fixed: CONFIG TAB_WIDTH does not take effect until restarting PICO-8
  • Fixed: Selecting sprites from bottom right -> top left and then pasting only pastes a single sprite
  • Fixed: 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 settings
  • Fixed: -export failing to find files relative from current path
  • Fixed: -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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant