2.6.2
November 25, 2024
Added
-
C API docs: added explanation of offset parameter in signalNoteOffFunc #5346
Fixed
-
Fixed dropped serial connection when wifi is active
-
CoreLibs/graphics
drawTextInRect
now respects UTF-8 sequences when wrapping text -
playdate.graphics.getTextSize(" ")
now returns positive height instead of zero -
Mac: Restored Quick Look thumbnails for pdi, pdt and pft files
-
Mac: Simulator: Fixed ability to debug C applications with the Simulator
-
Docs: fixed C API gfx→drawRotatedBitmap() return value void, not LCDBitmap*
-
track:getLength()
now contains the entire last note in the track instead of just its note-on event -
Docs: added
userdata
arg tofileplayer→fadeVolume
2.6.1
November 14, 2024
Added
-
.mid file parser now reads pitch bend range controller change messages
Fixed
-
pd→graphics→setPixel()
now draws to pushed context instead screen -
Fixed regression: can once again use
nil
in modulator setters to clear them -
fixed
inverted rect in LCD_addUpdateRect()!
warnings on stdout when text is drawn outside screen bounds -
fixed serial input slowness causing
-
docs: removed unused gfx.kWrapTruncateEnd
-
fixed language constant mismatch between
playdate.getSystemLanguage()
and gfx.font language constants (notably, causing DemonQuest85 to throw an error on startup) -
[MacOS] Fixed the Quicklook plugin for Playdate files
2.6.0
October 21, 2024
Added
-
Added a new "Gather Diagnostic" feature to aid Support in diagnosing system errors
-
API: Added additional width/height, wrap and truncation to Lua
drawText()
-
API: Added C API
drawTextInRect()
-
Pitch bend info from midi files is now used
-
Added
snd.instrument:setPitchBend()
andsetPitchBendRange()
to Lua API -
Added
snd.channel.getDry/WetLevelSignal()
-
Docs: Added install instructions for the SDK
-
The documentation for
playdate.graphics.sprite:setAnimator()
now indicates that the animator should specify its start and end value using playdate.geometry.points -
Added
signal→newSignalForValue()
andsynth→clearEnvelope()
to C APIplaydate→sound
Changed
-
"Input Test" and "Send Crash Report" have moved to the new Diagnostic group in Settings
-
The "Device Metrics" option has been moved into the System Settings group
-
Docs: Updated Caps font tool documentation
Fixed
-
Fixed possible crash due when using
imagetable:setImage()
-
delayline tap should be stereo if its delayline is
-
Fixed R/L levels for panned mono channels
-
Fixed possible crash on device startup
-
Fixed concurrency issue in C API scoreboard callbacks
-
pdutil
is now correctly compiled for x86 on macOS -
Fileplayers
without valid sources no longer crash in certain situations -
Simulator: Mac: Debugger will now correctly step in to a function from a different file
-
Simulator: Mac/Windows/Linux: Debugger no longer will attempt to resolve a file for internal symbols
-
Fixed playback issues in sample-based synths with short sustain ranges
-
Synth instrument notes scheduled for the future are no longer dropped
-
Can now use C functions for menu items when Lua is active
-
firmware_symbolizer.py
no longer assumes it’s being run on macOS
2.5.0
May 23, 2024
Added
-
C API: added
graphics→getBitmapTableInfo()
for accessing the table’s image count and width -
C API: added
graphics→getBitmapPixel()
-
C API: added
shouldFreeData
flag tosound→sample→newSampleFromData()
to let sample take ownership of data buffer -
C API:
graphics→setDrawMode()
now returns the previous setting -
C API: added
graphics→setPixel()
-
Lua: Added
playdate.restart()
function to restart current game -
Lua: Added channel level signals to sound lib
Changed
-
Docs:
gfx.imagetable:load()
now says it loads a new image table, not a new image -
Docs: added a note stating
sound→effect→delayline→setLength()
isn’t safe to call while the delay line is in use -
Docs: explained that
playdate.file.exists(path)
requires file extension -
JSON encoder no longer escapes forward slashes
-
Simulators: Removed various update Device Firmware menu items
-
Simulator: Linux: No longer excessively refreshes Device availability on some systems
-
Simulator: Windows/Linux improved http request timeouts
-
C API:
sequence→getTempo()
returns a float, not int
Fixed
-
Fixed a crash in "Unwrap All" when an OS notification was showing in the Launcher
-
Fixed crash that could occur in some situations when selecting Catalog from the System menu
-
Fixed Replay Intro still running if you choose cancel on the Restart dialog
-
Fixed an issue that could cause the system menu time to be cropped when the battery is very low
-
Instrument voice no longer will scope out while playing
-
Fixed crash loop on device when simulator is showing memory map in device stats
-
Rotated/scaled sprites now update when their source has changed
-
synth:copy()
on sample-based synth followed bysetWaveform()
no longer crashes -
envelope:trigger()
now works as expected -
Fixed random crash when an empty imagetable is freed after not having all its images set
-
pdc
now handles multisegment pdex.elf files -
import
now uses custom environment when called fromplaydate.file.run/load()
with env arg set -
Fixed typos in 2D vector and affine transform equality test functions
-
Fixed: Keyboard now draws correctly if drawOffset is not (0, 0)
-
Added USB serial RX buffer initialization to fix random serial connection issues
-
Simulator: Mac: fixed possible deadlock when canceling mic recording
-
Simulator: Linux/Windows: Lua Memory sort by size column not sorting as expected
-
Fixed case of
readline()
in__stub.lua
-
Fixed crashes when using certain sprite APIs when no sprites have been added
-
Docs: Mention the Keyboard doesn’t work at scales other than 1x
-
Docs: Remove example code links on the website docs
-
C Docs: remove
playdate→graphics→setSpriteDrawFunction()
-
C Docs: fixed: default refresh rate is 20 rather than 30
-
C Docs: fixed formatting goof making
playdate→system→setButtonCallback()
function disappear
2.4.2
March 19, 2024
Added
-
Games that are incompatible with the current OS are now listed in Settings → Games, instead of being hidden
-
If the Catalog executable has been corrupted and the user attempts to launch it from the System Menu, the system will now guide the user to download a new version of Catalog
2.4.1
March 7, 2024
Fixed
-
removed null terminator from string passed to playdate.keyPressed
-
reverted change to drawEllipseInRect() that shifted drawn area
-
mkdir, stat, delete, and rename functions now work as expected for paths in the /Shared folder
-
Nova extension: resolved an issue preventing the extension from finding a Lua project’s
main.lua
andpdxinfo
files automatically -
fixed leaking sound sources
2.4.0
March 1, 2024
Added
-
Nova extension: Support for specifying a completely custom build phase using Nova’s task pipelines for more advanced building options
-
Experimental feature: added read/write access for all games to top-level /Shared folder
-
Added callback for receiving messages via the serial port
msg
command:playdate.serialMessageReceived()
in Lua andpd→system→setSerialMessageCallback()
in C -
C API: added
userdata
to sound API callbacks -
Simulator: Windows/Linux: Holding option key while paused and pressing play will render one frame at a time
-
Added direct access to affineTransform’s parameters
-
pdc
: added--check-fonts
flag to help spot errors in font files -
Added
playdate.setButtonQueueSize()
andpd→system→setButtonCallback()
, an optional button event queue and callback for more precise button handling -
C API: added
pd→system→parseString()
-
C API: added
pd→system→vaFormatString()
-
Added MicSource enum to
pd→sound→setMicCallback()
to specify internal/headset/autodetect source -
Added optional source arg ("internal" or "headset") to
snd.micinput.startListening()
-
Added
sample:decompress()
andpd→sound→sample→decompress()
so the sample can be used in a synth -
Added BSD Zero license to Lua and C examples and C build files
-
C API: added copyUserdata callback function to
synth→setGenerator()
-
C API: added
synth→copy()
Changed
-
Simulators: Updated game controller profiles
-
pdc
now sets the mod time for copied files to the source’s so that rsync doesn’t think it changed -
Docs: Changed lua example code from links to SDK paths
Fixed
-
Simulator: Windows: fixed display scaling issue when text scaling is set at 125%
-
Simulators: No longer send debug key presses when paused
-
Simulator: Mac: Don’t disable Console edit field when controlling the device
-
Fixed incorrect idle value in
playdate.getStats()
-
Serial port can now receive more than 64 KB/s
-
Fixed leaks and crashes in sound code by adding retain counts to make sharing objects between Lua, C API and sound lib more flexible
-
Fixed rounding problems in
gfx→drawEllipseInRect()
causing center and 90 degree drawing issues -
sequence:addTrack()
returns the created track now like it’s supposed to -
fixed
snd.envelope:trigger()
-
common.mk
added-g
to buildgcc
flags to generate debug symbols -
Fixed frequency wraparound at 5513 Hz on noise synths
-
C API: fixed possible stack overflow when calling
sprite→setImage()
when Lua is active -
Fixed stalled ADPCM playback when file end syncs with audio frame
-
Simulator: Windows/Linux add
graphics→display()
support -
Copied sample synths and wavetable synths now work correctly
-
Fixed crash when sequence tracks with control signals assigned are freed
-
Add the
pdz
extension to the path passed tofile.run()
orfile.load()
if it isn’t already there -
C API: changed
pd→sound→loadMidiFile()
topd→sound→loadMIDIFile()
for consistency -
Simulator: Mac: fixed possible exception when plugging in a controller with the preferences window open
-
Fixed animator jitter in axis-aligned linear interpolation
-
Simulator: Mac: No longer refresh Malloc Log window when it’s closed
-
Fixed possible hang in fileplayer caused by switching from mono to stereo file
-
Simulator: Mac: Fixed FPS graph possibly drawing out of bounds in Device Stats window on Sonoma
-
Docs: expanded description of
pd→system→formatString()
-
Docs: attempted to clarify difference between tables and userdata
-
Docs: clarified that
repeatCount
is a property of the animator -
Docs: fixed inconsistent styling of
\n
literal -
Docs: merged duplicate
sprite:moveWithCollisions()
functions -
Docs: noted that
playdate.setDebugDrawColor()
values are in the range 0-1 -
Docs: updated description of
playdate.getStats()
-
Docs: removed broken link to
animator.lua
single file example -
Docs: fixed return type for
fileplayer→getOffset()
-
Docs: noted that
MIDINote
is a floating point value -
Docs: added note that we always use forward slashes for path separators
-
Docs: note that you clear the drawing stencil with
pd→graphics→setStencil(NULL)
-
Docs: note that you clear modulators by setting them to nil/NULL
-
Docs:
LCDSpriteDrawFunction
uses PDRect, not LCDRect -
Docs: added note that sprite draw callback isn’t called if sprite doesn’t have a size set
-
Docs: autolock timeout is now 3 minutes
-
Docs: fixed the remaining places where our previous formatting change had duplicated descriptions
-
Docs: added
PDMenuItemCallbackFunction
typedef to system menu section -
Docs: added missing
[extend]
togeometry.arc:pointOnArc()
-
Docs: fixed link to SoundSource in
playdate→sound→removeSource()
-
Docs: fixed return type for a bunch of C API sound functions
2.3.1
February 7, 2024
Fixed
-
Fixed sample overrelease (and subsequent crash) after using C API function pd→sound→sample→loadIntoSample()
-
Fixed performance regression due to tracking of source image changes on scaled sprites
2.3.0
February 5, 2024
Added
-
Added an Unwrap All option the system menu
-
Simulator: Windows/Linux: Samples can now be saved from the Sampler window
Changed
-
Crank noise filtering is now only applied when it’s moving slowly
-
table.getsize()
now reports hash size 0 for empty tables -
Fixed compiler warning in C API JSON example
-
Simulators: Now disable screen record button if the Simulator is paused
-
Simulators: Will no longer attempt to connect to a device if the device is in use by Mirror
-
Simulator: Mac: Now uses a fixed width numeric font in Device Info window
-
Simulator: Mac: Updated Device Info window colors to match Windows/Linux
-
Simulator: Linux: Moved preference file to standard XDG location usually in
~/.config
. Note: the~/.Playdate Simulator
folder may be removed and the app preferences will be reset on first launch -
Simulator: Windows/Linux: The Volume icon now matches the text color if not using device colors and other minor UI tweaks
-
Simulator: Windows/Linux: Upload Game to Device… no longer allows uploading folders that don’t end in
.pdx
-
Added custom table functions to
__stub.lua
-
Optimization: mp3 decoder is now using builtin CLZ op
Fixed
-
Updated documentation for
playdate.graphics.animator:valueAtTime(time)
to indicate that time should be specified in milliseconds rather than seconds -
loadIntoBitmapTable()
returns an error message if the file is not loaded -
Fixed formatString leak in C API Sprite Game example
-
Controlling the device crank with the Simulator no longer spams console with
OK
messages -
90 degree rotated image now draws correctly when top of source image is clipped
-
playdate.graphics.drawarc()
inCoreLibs/graphics.lua
now respects clockwise argument -
Fixed an out of bounds read causing tiny audio glitch in an extremely rare case
-
Scaled/rotated sprites now redraw when source image is updated
-
Fixed a hang when audio task is loaded down
-
Fixed problem with skipped drawing when using
drawTiled()
with a stencil -
snd→fileplayer→setLoopRange()
now works correctly when called beforeplay()
-
playdate.timer
now continues from paused value when calling timer:start() -
synth:getEnvelope()
no longer causes subsequent error on synth:playNote() -
Fixed screen redraw weirdness with overlapping sprites and visibility changes
-
Fixed a problem with stale dirty rects causing redundant drawing when sprites go off-screen
-
Non-integral sprite positions now round to negative instead of towards zero so they don’t stutter at the edge of the screen
-
Fixed an overrelease in sample-based synth:copy()
-
Settings > System > Replay Intro no longer replays the intro when returning to the launcher after Cancel is selected
-
Fixed a visual issue when unwrapping games with an incorrectly-sized card image
-
The "New Games" LED indicator light will now turn off more reliably after unlocking and re-locking
-
Fixed several instances in CoreLibs where variables were being leaked
-
Launcher card highlight animation stops on incorrect frame when a loopCount of 1 is specified
-
Simulator: Mac: now pauses while the screenshot save modal dialog is up
-
Simulator: Windows: Fixed malloc pool limit not working
-
Simulator: Windows: Fixed possible error dialog appearing when using the device as a controller
-
Simulator: Mac: Fixed malloc pool item count not updating when in map view
-
Simulator: Mac: audio no longer stops working if mic recording is requested without a mic attached
-
Simulator: Mac:
playdate.simulator.getURL/openURL
no longer crash if passed null values
2.2.0
January 9, 2024
Added
-
C API: added
MINGW
target toC_API/buildsupport/playdate_game.cmake
-
Simulators: Various slight interface tweaks, including macOS accent color
-
Simulators: Added cmd/control+G keyboard shortcut to Get Screenshot menu item
-
Inside Playdate: Added note to indicate keyboard is only designed for 1x display scale
Changed
-
sampleplayer:playAt()
with volume set overrides the default player volume,set
/getVolume()
only affect the default volume -
Simulator: Windows/Linux: no longer open a connection to the microphone until a game requests it
-
C API: Makefile clean now deletes the built dylib/so/dll/bin from the Source folder
-
C API: CMake clean when building for ARM now deletes the .pdx folder
-
C API: Makefile
make device
andmake simulator
targets always create a .pdx folder -
C API: Makefile
make pdx
target now just runs pdc on the Source folder -
Inside Playdate:
sampleplayer:playAt()
now explains that the "when" arg is relative to the audio time base, not an offset into the future -
Inside Playdate:
sampleplayer:playAt()
notes that only one note can be queued -
Inside Playdate with C: added explanation of pixel format in getDebugBitmap()
-
Inside Playdate with C: changed where the macOS SDK installer puts the ARM toolchain from /Applications/ARM to /usr/local/panic
-
Inside Playdate with C: cleared up build targets description
-
Inside Playdate with C: reordered to help with the order of operations when first configuring the build system
Fixed
-
Fixed 24 hour clock redraw issue in the system menu
-
Fixed possible crash on rev 2 devices when waking up from deep sleep
-
Improved
image:drawBlurred()
performance on rev 2 hardware -
sprite:setRotation()
no longer messes up a previoussprite:setScale(xscale,yscale)
call -
Fixed compiler warning in C API JSON example
-
Fixed keyboard display issues when the draw offset is not (0, 0)
-
Fixed update rect computation in
gfx.fillPolygon()
-
Fixed a problem with skipped drawing when using drawTiled() with a stencil
-
Fixed an error trying to set padded stencil image with unpadded width < 32
-
Fixed a problem with empty tilemap images being considered opaque, leading to sprite drawing glitches
-
Fixed leaking note data in
playdate.sound.track
-
Fixed a bad reference in
lua→pushSprite()
-
Fixed noise in twopolefilter output when mix is between 0 and 1
-
Fixed a memory management issue in launcher that could lead to crashes
-
Fixed case of
readline()
for__stub.lua
in the docs -
Fixed hash collision in
snd.channel:addEffect()
causing effects to potentially scope out and crash while in use -
Fixed some font glitches in the
SDK/Resources/Fonts
folder -
Sustain range in sample-based synths is now aligned correctly, no longer makes clicking noises
-
pd→sound→noteOff(synth,0)
now works as expected -
Fixed rotated image being drawn in the wrong place when center param is off center, x or y scale is -1, and rotation is close to a 90-degree increment
-
Fixed an issue that would cause needless work to be done if the crankIndicator is drawn after not having been drawn for a long time
-
Fixed a leak when using ADPCM files in a
sampleplayer
-
C API:
snd→effect→getUserdata()
now returnsuserdata
that was passed tosnd→newEffect()
-
C API: removed broken and confusing
LCDMakePattern()
macro -
Simulators: Fixed dangling pointer bug causing C API
gfx→drawText()
to draw incorrectly or crash after reloading game -
Simulator: Windows: Simulator now correctly reports crashes
-
Simulator: Windows: Improved reliability of firmware updates
-
Inside Playdate:
synth.new()
now points out that sustain range values are in sample count units -
Inside Playdate: fixed misformatting in "Lua assignment operators" section
-
Inside Playdate: Fixed contrast between <code> element and background in Dark Mode
-
Inside Playdate: removed out of date comments in "A Basic Playdate Game in Lua"
-
Inside Playdate: fixed default frame rate in
display.setRefreshRate()
-
Inside Playdate: removed extra args from id tag for
delayline:addTap
anddelayline:setFeedback
2.1.1
November 3, 2023
Fixed
-
Simulator: Mac: fixed Console log output not appearing in macOS Sonoma
-
Simulator: Mac: various fixes for interface issues in macOS Sonoma
2.1.0
October 25, 2023
Added
-
Added a new a Notification Light section to Settings
-
Added wavetable synthesis to sound engine
-
Added new playdate.ui.crankIndicator:getBounds() method
-
Added setStartPhase() to LFO
-
C API: added pd→graphics→getTextTracking()
-
C API: added sprite→setCenter() and sprite→getCenter
-
Simulator: Added a dev email list sign-up
-
Docs: sprite draw callback description now explains that the rect args are in sprite-local coordinates
-
Docs: added playdate.timer.paused property
-
Docs: clarified that setColor() and setPattern() are mutually exclusive
Changed
-
Simplified the interface for playdate.ui.crankIndicator, replacing :start() and :update() methods with just a :draw() method, and removed the dependency on playdate.timer
-
Added disk buffer to json encoder, making json.encodeToFile() and playdate.datastore.write() 3x faster on device
Fixed
-
Fixed a memory leak in playdate.ui.gridview
-
playdate.graphics.drawArc() in CoreLibs/graphics.lua now respects arc’s clockwise flag
-
sequence:setTempo() now handles floating point values, sets play offset correctly
-
image:drawFaded() with an inverted image now works as expected
-
Improved __stub.lua file so it is valid Lua
-
playdate.ui.crankIndicator animation speed is now independent of refresh rate
-
playdate.ui.crankIndicator now displays properly at 2x, 4x, and 8x scales
-
Docs: image:addMask() default value is true/opaque instead of transparent
-
Docs: fixed link in coroutine usage example
-
Docs: fixed typo in playdate.sound.envelope:setRelease()
-
Docs: Inside Playdate no longer says SDK contains "The latest firmware image for the console hardware"
-
Docs: fixed sprite:updatesEnabled()
-
Docs: it’s pd→graphics→getDisplayBufferBitmap(), not getDisplayFrameBitmap()
-
Simulator: Windows: improved device eject handling
-
Simulator: Mac: fixed gameWillTerminate() breakpoint getting hit on game startup when debugging with VSCode in some cases
-
Simulator: Mac: Fixed width of last column of Sampler tables
-
Simulator: Mac: OS no longer goes to sleep when using device as controller
-
Simulator: fixed a premature free of a custom system menu on quit
-
Simulator: Windows/Linux: Fixed firmware version string comparison issues
-
Improved image:drawBlurred() performance in some cases
-
File-based system update now works correctly from a crash screen
-
Fixed crash when trying to play a sample player with nothing set to play
-
Fixed bug causing incorrect register values in crashlog.txt
2.0.3
August 23, 2023
Added
-
pdc: added
-I/--libpath
command line flag andPLAYDATE_LIB_PATH
environment var for adding an import path outside the project or SDK
Fixed
-
Fixed an issue where the battery percentage indicator may not reach 100% when the Playdate is fully charged
-
Fixed a CoreLibs grid view edge case calculation that could result in the content width and height being set incorrectly
-
Fixed leaking sound object after closing keyboard
-
pdc: fixed handling of import statements in files accessed via .. paths pointing outside the project root
-
Fixed the size of the
card.png
image in the Pathfinder example project -
Fixed a display error that occurred when re-downloading uninstalled games
-
Simulators: Fixed an error when showing the game meta data dialog
-
Fixed a memory leak in playdate.ui.gridview
-
Fixed error trying to set padded stencil image with unpadded width < 32
2.0.2
(Internal-only release)
2.0.1
July 10, 2023
Changed
-
Launcher: list view icons now switch to their highlighted state immediately when the selection changes
-
Launcher: Improved scrolling performance when holding the up or down buttons
-
Simulator: Mac/Windows/Linux the device activity window no longer floats above all OS windows
Fixed
-
Simulator: Windows improved performance in 3x or fullscreen modes
-
Simulator: Window/Linux fixed a regression where the preferences file was not written to disk
-
Simulator: Windows/Linux fix possible crash on quit
-
pdc: fixed problem with files imported more than once via different paths
-
pdc: .. in import path is now handled correctly so that file names in errors aren’t ridiculous
-
pdc: fixed bug requiring lua file extensions when import path contains a period
-
pdc: fixed processing of pdex.elf files with more than one segment
-
pdc: no longer get a missing file build error using nmake on Windows
-
Fixed bug in HTTP library causing outgoing headers to be truncated
-
playdate.graphics.tilemap:draw()'s sourceRect argument is no longer affected by the current draw offset
-
Fixed leaked path string when cleaning up fileplayers
-
Fixed graphical glitch in C API 3D example
-
Fixed rare crash when plugging in headphones
-
A device with a very large number of games installed should no longer crash when viewing Settings > Games
-
Fixed a crash that could occur in Settings > Games when the game list is being refreshed
-
Fixed a floating point precision issue with the sprite collision system that could cause unexpected collision behavior
-
Fixed some visual glitches when switching launcher view modes or opening the system menu while a game unwrap animation is active
-
Screen no longer blanks after exiting from a game to the launcher
-
Fixed an issue that could cause the wrong game to be selected when switching between view modes right after a new game has been downloaded
2.0.0
June 12, 2023
Added
-
Adds List View to the launcher; a more compact view of installed games
-
A new binary format for C components of Games to support Rev B hardware
-
Adds extended characters to the Roobert font
-
Adds C API function for clearing icache
-
Simulator: Sampler: C game sampler interface an has improved layout
-
Simulator: Sampler: C game OS symbols are now more accurate
-
Simulator: Sampler: C games now includes OS and Game symbols at the same time
-
Simulator: Sampling C games now color codes game symbols
Changed
-
Fileplayer’s
stopOnUnderflow
flag now defaults tofalse
Fixed
-
Sideloaded games without build numbers are no longer offered for re-download continuously
-
Fixed potential buffer overflow in json encoding
-
Fixed a crash that could occur if a game on disk is missing a build number
-
Fixed zero-byte
pdex.bin
and unnecessary recompile due to dependency issues incommon.mk
-
Simulator: Mac: fixes possible crash when sampling Lua games with an invalid Lua stack frame
-
Simulator: Mac: fixes sound not working for some people
-
Simulator: Mac: no longer prompt for mic access at launch
-
Simulator: mic input now buffers 256 byte frames to match device
-
pdc
: now shows an error message if a resource fails to copy
1.13.6
May 1, 2023
Changed
-
pdc now errs if fnt file has duplicate character entries
-
playdate.graphics.font:drawText() and playdate.graphics.drawText() now both return width, height values
-
Provide a "Wi-Fi not available" message for some server errors
Fixed
-
sprite:setImage() no longer resets the sprite’s scale
-
Better error handling when turning on Automatic time setting
-
Kerning now works correctly when right-hand character is on a different page from the left and not page 0
-
Added minimum animator duration of 0.001 to avoid division by zero
-
Fixed crash when Launcher cache file has unexpected values
-
Simulator no longer fails an assert after sequence finishes playing
-
snd.instrument.new(synth) now returns the instrument, not the synth you passed in
-
Fixed crash in fillPolygon() in certain cases
-
Fixed a case where the device could become stuck when locked
1.13.5
Apr 19, 2023
Changed
-
Updated group names to be consistent in Launcher and Games screen
-
Direct reader to font:drawText() as an alternative to gfx.drawText() in docs
-
Update Simulator Controller DB mapping
-
Add fps to launchImages documentation
Fixed
-
fixed regression in 1.13.3 causing gfx.sprite.new(tilemap) to fail
-
Mac installer will no longer fail if there are symlinks in previous SDK folder
-
Fixed buttons getting stuck in "down" state if system menu is opened while held
-
pdc import path handling now uses forward slashes on Windows
-
fixed position of images with lopsided left/right padding drawn at 90 or 270 degree rotation
-
Fixed image corruption when setting a mask image with mismatched rowbytes
-
Fixed regression where sprite:setImage() ignores scale factors
-
Fixed leak when calling setMenuImage() multiple times in a row
-
Windows/Linux Simulator: possible deadlock on quit
-
Macos Simulator: indeterminate progress bar doesn’t move in floating status window
-
Windows/Linux Simulator: Possible crash in debugger
-
Windows/Linux Simulator: possible crash with failed pd_malloc in specific situation
-
Simulators: Debugger hangs after lua stack overflow
1.13.4
Apr 10, 2023
Changed
-
Simulator: Mac/Windows/Linux: Added friendly error message when trying to load Catalog games
Fixed
-
Fixed the Clock drifting backward across reboots
-
Fixed an uncommon crash when making requests to Playdate servers
-
Improved read/write reliability when using Playdate disk via USB
-
Fixed some memory leaks when performing background Wi-Fi syncs
-
pdc: fixed regression in transparency handling in animated gifs
-
Removes callback functions from VSCode stub file
-
Fixes varargs in VSCode stub file
-
Fixed muted audio after plugging and unplugging headphones when headphone change callback is set
-
Fixed problem with mic input getting data zeroed out
-
Simulator: Windows/Linux: getDebugBitmap() is now implemented
-
Settings: Changing time to 'update automatically' should trigger a network time sync
-
Fixed gain on delay line taps so that they’re actually audible
-
Fixed crash after changing delay line tap delay time
1.13.3
Apr 4, 2023
Changed
-
Fixed performance regression: Sprites are tables again
Fixed
-
Fixed difficulty spike in Flipper Lifter that arose from performance regression
-
Fixed battery drain that occurred while device was locked if no Access Point was available
1.13.2
Mar 6, 2023
Added
-
Adds a “new” group to the top of the Settings > Games screen when there are pending downloads
-
Adds auto-refresh when launching into Games screen
Fixed
-
Fixed a possible hang in Spellcorked
-
Fixes an issue that would cause the Launcher to refuse to scroll after unlocking the device
-
Fixes a crash when the device is locked during a game’s launch animation
-
Fixed game card layout issues that could occur if device was locked immediately after a reboot
-
Fix crash that can occur when a game uses the filesystem while also downloading to a file
-
Fixed an issue updating a game if Settings was launched while the game’s card was animating
-
Fixed a hang returning from the system menu after a fileplayer is paused in
playdate.gameWillPause()
and restarted inplaydate.gameWillResume()
-
Fixed issue with looping sample players stopping spontaneously
1.13.1
Feb 22nd, 2023
Fixed
-
Settings app: Studio now displayed on game detail screen
-
table.indexOfElement()
can now find userdatas (e.g. sprites, as of 1.13.0) -
Fixed stack error in
playdate→lua→callFunction()
-
Fixed issue with sprite x/y/width/height properties not updating correctly, leading to miscalculated collision rects and displaced sprites
-
Setting sprite subclass’s image in its init function by passing it to
super.init()
now works again -
Fixed integer overflow in
snd.sequence:goToStep()
causing it to not work correctly for large step offsets -
snd.removeEffect()
works again -
Simulator: Windows/Linux: Upload game to device now launches with the correct path
-
Simulator: Windows/Linux: Breakpoints weren’t working as expected
-
Simulator: Windows/Linux: Fixed possible crash reloading the Simulator
1.13.0
Feb 9th, 2023
Added
-
The system will now prompt the player to plug in when the battery percentage falls below 10%
-
The Launcher will now show a notification at the top of the game list if a system update is available
-
Perform automatic retries for failed firmware update
-
Added user instructions on-screen when in disk mode
-
Added time functions to C API to match Lua
-
Lua
warn()
function now logs a message to the Console -
Simulator: Windows/Linux: Can now use a debugger to debug Lua games using the debug adapter protocol
-
Simulator: Mac/Windows/Linux: Debugger now supports Log Point messages
-
Simulator: Mac/Windows/Linux: While in a debugger, a Lua exception backtrace is logged to the debug console before the breakpoint is hit
-
Simulator: Mac/Windows/Linux: Debugger autocomplete now triggers on
.
and:
characters -
Simulator: Windows/Linux: can now change the Console font
-
Simulator: Windows/Linux: can now disable sending crash reports
-
Added smart quotes to system fonts
-
Added
playdate.shouldDisplay24HourTime()
-
pd→lua→getArgObject()
can now be used with all Playdate object types -
Renamed
pd→lua→set/getObjectValue
topd→lua→set/getUserValue
-
Added new vector constructor,
playdate.geometry.vector2D.newPolar(length, angle)
-
Updated sprite docs to indicate that tags are limited to the range of 0 to 255
-
Added curvature parameter to synth envelopes for better plucked/percussive type sounds
-
Added
playdate.getFPS()
to complementplaydate.drawFPS()
-
CoreLibs/keyboard.lua
now has key repeat functionality -
Added rate scaling and velocity sensitivity to synth envelopes
-
Simulator: Mac/Windows/Linux: Added "Wrap Current Game" for testing wrapping patterns
-
Simulator: Mac/Windows/Linux: can now update device firmware for diagnostic purposes
-
Added
snd.track:removeNote()
andsnd.track:clearNotes()
-
Added
snd.sequence.setLoops(count)
variant, which loops the full sequence -
snd.sequence:addTrack()
with no args now creates and returns a new track -
Docs: added
playdate→sound→sequence→get/setCurrentStep()
-
Simulator: Windows/Linux: now logs messages to
stdout
-
Added optional "extend" flag to
pointOnLine/Arc/Polygon()
functions to allow returned point outside of line/arc/polygon -
Add an escape hatch for firmware update failures due to eMMC issues
Changed
-
The Delete Game Data button is now always visible, even before the size has been calculated
-
Output to device speaker is now both channels mixed, not just left channel
-
Increase Wi-Fi Sync Period to 10 hours from 6
-
Updated description of
buildNumber
in pdxinfo to indicate it is required for sideloaded games -
animation.blinker
refinements:stop()
no longer sets loop to false; you can now pass default property values to.new()
and:start()
; setting the.default
on a stopped blinker now updates the.on
state. -
Simulator: Linux: moved desktop file to
/usr/share/applications
-
Simulator: Mac/Windows/Linux: changed game loading behavior to better match the device
-
Simulator: Windows/Linux:
playdate.keyPressed(key)
now passes in lower case strings to match the Mac Simulator -
Removed
tonewheel.lua
from Single File Examples for being uninteresting
Fixed
-
Playdate should show error screen on runloop timeout, not the crash screen
-
Fixed menu navigation strangeness in Settings when holding up or down while locking the device
-
Fixed a visual glitch in the System Menu that could occur when extra menu items had been added
-
Fix a crash when a screenshot fails to save to disk
-
Fixed screenshots for games with a
:
in their name -
Fix the clock getting "stuck" if the unlock UI dismisses while a button is held
-
Fixed jumpy accelerometer values in weird unknown case
-
Fix crash when waking up from Shipping Mode
-
Uninstalled games now show the correct status when being re-installed
-
Add better checks for failed firmware updates
-
Headphone output should switch immediately on plug / unplug
-
Fix case where the Low power clock may not draw correctly when there’s a low battery
-
The system menu background image now displays properly if
playdate.display.setMosaic()
orplaydate.display.setOffset()
orplaydate.display.setOffset()
have been set -
Fixed reference errors when passing image from Lua to C then back to Lua
-
Added missing arguments to the documentation for
playdate.ui.gridview:setSelection()
-
pdc
: fixed harmless out of bounds read on wav files -
Simulator: Mac: debug adapter protocol now sends success response to launch request
-
Simulator: Mac: debug adapter protocol no longer advertises it supports the terminate request
-
Simulator: Mac: debugger variables no longer appear with error messages in Visual Studio Code
-
Simulator: Mac: debugger breakpoints are now marked as verified
-
Fixed mismatched arguments between
drawLocalizedTextInRect()
anddrawTextInRect()
and a crash indrawLocalizedTextInRect()
-
Data folders and files in the pdx starting with "Data" now work as expected
-
Added running tally to allocator to avoid
mallinfo()
call, fixing case where it was taking up all available GC time -
Fixed ignored font argument in
drawTextInRect()
when using the rect variation -
getElapsedTime()
now represents game time instead of clock time, pausing when game is paused -
The macOS installer would fail if there were other copies of some system commands
-
Fixed cache thrashing in image blurring functions
-
Sprites are now able to be bounce-collided with more than once during a
moveWithCollisions()
call -
Fixed SpriteCollisionMasks example code so that sprites bounce off of wall sprites and remain in frame
-
C API default drawing context is now correctly reset before game launch
-
Lua profiler: samples'
frametime
is now shown with the correct frame, not off by one -
sprite:checkCollisions()
returning different values thansprite:moveWithCollisions()
-
Fixed weirdness with pushing a synth from C to Lua
-
C docs: fixed
synth→getParameterCount()
function name, changed "0-based" to "1-based" insynth→setParameter()
-
Device: run serial command doesn’t work with a game with spaces in the name
-
logfunc()
no longer divides by zero when string ends with newline character -
Inconsistencies in readings from the high-resolution timer on-device
-
Clarified documentation for
playdate.getPowerStatus()
-
Fixed alignment problem in image scaling algorithm
-
Updated docs for
playdate→sprite→getPosition()
to indicate it returns floats rather than ints -
Text no longer clips to 400x240 on offscreen images
-
Fixes incorrect behavior when using the sourceRect argument when calling
playdate.graphics.image:draw()
after a draw offset has been set. -
Fixed crash using Lua memory browser with classes registered from C
-
Sprites shouldn’t be added to all sprites table until they’re added to the scene
-
Perform daily NTP sync if Wi-Fi is used
-
Docs:
playdate→sound→instrument→newSequence()
should benewInstrument()
-
Fixed problem with
sequencer:goToStep()
going to the wrong step -
Windows SDK installer will now prompt to install Visual C++ runtime if needed
-
Fixed leak in video player
-
Fixed typo in
playdate.graphics.sprite.new()
docs: "onscreeen" → "onscreen" -
playdate.graphics.sprite:overlappingSprites()
andplaydate.graphics.sprite.allOverlappingSprites()
could return incorrect results for sprites using negative coordinates -
C SDK: Updated several files to allow compiling with C++ < 20
-
C SDK: Fixed possible CMake/Make build errors on Linux
-
C SDK: Slightly simplified ARM building in CMake examples
-
Synths can now play samples created with
pd→sound→sample→newSampleFromData()
orsnd.sample:getSubsample()
-
Fixed an issue causing the wrong touch point to be returned by
sprite:moveWithCollisions()
andsprite:moveWithCollisions()
-
Simulator: Mac: Fixed possible crash with the Quicklook plugin
-
Fixed a case where the compiler was messing up register usage in compound assignments
-
CoreLibs animator now works correctly with easing functions that overshoot and bounce back
-
Docs: updated default minimum GC time to 1 ms
-
Simulator: Linux: fixed
getTime()
API -
Asheville Sans 14 Bold’s asterisk has an extra pixel
-
playdate.geometry
vector * transform
no longer throws bogus type error -
C API
free()
shim should ignore NULL argument -
C API docs:
sprite→free()
should besprite→freeSprite()
-
Simulator: Mac/Windows/Linux: fixed missing allocations in Malloc Log list view
-
Fixed leak when nesting
pushContext()
/lockFocus()
calls with target images -
Removed incorrect kerning entries in Sasser Slab and Sasser Slab Italic
-
pdc
now notices changes to image sequence when deciding whether to recompile image table -
Fixed sample-based synth playing past end of data
-
Sampleplayer now starts from beginning of play range instead of always offset 0
-
Fixed (again) pushing values from C API while in a Lua coroutine
-
pdc
: fixed crash trying to compile an animated gif without a global color table -
Fixed crash on device when
file:readline()
sees a\r
character -
Simulator: Windows/Linux: Possible crash when closing main window with active checking for update call
-
Fixed memory access error on device when playing VBR mp3 files with frames < 38 bytes long
-
C docs:
sample→loadFile()
should besample→load()
,sampleplayer→newSamplePlayer()
should besampleplayer→newPlayer()
-
Simulator: Windows/Linux: Copy Screenshot to clipboard now works as expected
-
Docs: removed incorrect
frame
arg from LCDSpriteDrawFunction -
Removed crashy unused code in arcs.lua single file example
-
Fixed typo in
playdate.graphics.tilemap:setTileAtPosition
documentation -
Simulator: Windows/Linux: Fixed possible crash when closing Controller preferences editor
-
Simulator: Mac/Windows/Linux:
Games/
folder is no longer being created at the wrong location -
Simulator: Mac: Unresponsive to controller input after pushing buttons mapped to "Crank Clockwise"
-
Simulator: Windows: can now connect to device if COM port is greater than 9
-
Fixed crash when
playdate.sound.track
is collected, lua error when instrument is collected -
drawRoundRect()
API radius of 0 will now draw a squared corner -
Fixed glitch in last frame of multiple line segment animator
-
Simulator: Windows: fixed possible crashes when using certain file APIs
-
fixed glitch in
fileplayer:getOffset()
between when the input hits the loop point and the output loops -
Fix registration flow on Windows / Linux Simulator
1.12.3
Aug 16th, 2022
Fixed
-
Improved battery performance and energy percentage accuracy
-
Improved button de-bouncing
1.12.2
July 12th, 2022
Fixed
-
Fixed crash that occurs when playing ADPCM file at rate greater than 1
1.12.1
July 5th, 2022
Added
-
Added wrapping pattern templates to Inside Playdate
Fixed
-
Fixed "bad loadlen" warning, possible hang at the end of VBR mp3 playback
-
Fixed a regression introduced in the SDK 1.12.0 release that would cause incorrect rects to be returned from
tilemap:getCollisionRects()
andsprite.addWallSprites()
-
sampleplayer:setOffset()
works correctly with ADPCM files. Again. -
Animator start time delay is no longer doubled
-
Changed README.md on macOS to tell users to get the Nova extension from the extension repository rather than from the SDK
-
Looping sound sequences work again
-
Fixed a case where RAM can fail to initialize after being in Disk Mode
1.12.0
June 15th, 2022
Added
-
Added function arguments to the Nova Playdate extension autocomplete
-
Added "__stub.lua" API reference file for improved autocomplete in 3rd party editors
-
Added
animator:progress()
to CoreLibs/animator -
Added
animator.reverses
flag to CoreLibs/animator to enable ping-ponging -
Added
animator:reset()
to CoreLibs/animator -
Added
animator:valueAtTime(t)
to CoreLibs/animator -
Added
pd→sound→signal
for custom PDSynthSignals -
Added
gfx.font.getGlyph()
-
Added
showhidden
flag to Luafile.listFiles()
and Cfile→listFiles()
-
Added
sprite:setStencilPattern(row1, row2, …)
variant to matchgfx.setStencilPattern
-
pdc now reads green in a source image as transparent if the image doesn’t already have transparent pixels
-
C API: Added
pd→graphics→makeFontFromData()
to turn a data blob into a font -
C API: added
LCDOpaquePattern()
macro -
Simulator: Mac/Windows/Linux: support for drag and drop images to preview them on the device
-
Simulator: Windows/Linux: Added button to send Console commands to the device
-
Simulator: Mac: When Controlling device with the Simulator the Console prompt icon now indicates commands are going to the device
-
Simulator: Mac/Windows/Linux: Added help menu item
-
Simulator: Mac/Windows/Linux: Added content warning fields to meta data window
-
Inside Playdate with C: added
PDSynthInstrument
to list ofSoundSource
subtypes -
Added 2 second hold time after docking crank for recalibrating crank angle
Changed
-
pd→graphics→getBitmapData()
now returns full width and height, flattens padding if you’re accessing the data -
Changed "hasMask" arg in
pd→graphics→getBitmapData
to "mask", returning a pointer to the mask data (or NULL) instead of just a flag -
Microphone recording LED is now orange and dimmer
-
Removed old compatibility code from
playdate.graphics.animation.loop
-
pd→sound→channel→newChannel()
now adds the channel to the sound engine, to match the Lua equivalent -
synth:playNote(0)
is now a synonym forsynth:noteOff()
, in case that’s useful? -
Renamed
luaL_Val
in pd_api_lua.h tolua_val
-
Simulator: Mac/Windows/Linux: C API null argument error is now logged to the Console and stops game
-
Simulator: Mac: When running a C game, the Memory button will now open Malloc Log
-
Simulator: Mac: Malloc Log Group by Call Tree and Auto refresh are now off by default
-
Simulator: Mac/Windows/Linux: Updated button artwork
-
Simulator: Mac/Windows/Linux: button key equivalents are now under the buttons instead of inside of them
-
Simulator: Mac/Windows/Linux: no longer pauses when C API update callback returns 0, to match the device and the docs
-
Inside Playdate with C: Minor clarifications to building on Windows and other tweaks
Fixed
-
Playdate sometimes gets stuck on boot logo after needing to plug in to boot
-
Clock not updating or syncing after re-watching the Intro Animation
-
Fixed inaccurate frame timing when Playdate has been on for several days
-
Word clock now correctly rounds up to the next day (and potentially month) when the time is just before midnight
-
Entry to low-power mode is now less susceptible to voltage spikes
-
Fixes an issue that can cause
drawTextInRect()
to hang on unusually long words -
Fixed an issue with the CoreLibs function
playdate.graphics.drawTextInRect()
that could cause text to be drawn outside of the bounds of the specified rect. -
Fixed
gfx.setStencilPattern(alpha)
-
High resolution timer is no longer truncated to nearest millisecond
-
pdc: -m no longer complains about missing main.lua
-
pdc: shouldn’t give warning when copying pdv files
-
pdc: Windows: fixed -k check for card-highlighted\animation.txt
-
Added round end caps to drawn bounds in drawWideLine
-
playdate.graphics.sprite.getCollisionRects()
now correctly handles invalid tileIDs -
Fixed possible crash calling
micinput.stopRecording()
when not recording -
pd→sound→synth→setGenerator()
now works -
pd→sound→lfo→setGlobal()
now works correctly, updates the lfo in the background whether it’s in use or not -
Adjusting the delay on an active
playdate.graphics.animation.loop
now works as expected -
Fixed obscure graphics corruption bug
-
Mac Installer now removes the quarantine bit during installation
-
Microphone recording LED is turned off when locking the device
-
Fixed a drawing problem on the Settings > Games game detail screen that could cause the version number to wrap to the next line
-
animator:ended()
no longer returns true during last loop of repeating animation -
Device:
isDir()
value is now 1 or 0 -
Bootloader doesn’t update plug state quick enough, gets stuck on Playdate screen after low power
-
Sprites now respect the setRedrawsOnImageChange flag
-
sequence:setLoops()
now uses the loop count argument instead of always looping endlessly -
Fixed
getLength()
andgetOffset()
for mp3 fileplayers -
Dynamically-built imagetables now work as expected :fingers_crossed:
-
Fixed crash trying to play ADPCM files with negative rate
-
Fixed a visual issue with the default game launch animation
-
Fixed odd case where sprites leave trails
-
Fixed precision issue in
file:seek()
for offsets > 16MB -
Fixed problem with repeating tilemap ids when calling
playdate.graphics.tilemap:getCollisionRects()
orplaydate.graphics.sprite.addWallSprites()
-
Fixed incorrect length on adpcm sampleplayers
-
Simulator: Windows: Unicode filenames inside of a game now work correctly
-
Simulator: Windows: Deleting folders recursively now works as expected
-
Simulator: Windows: Fixed crash when attempting to delete a game
-
Simulator: Linux:
listFiles()
no longer may incorrectly filter or show . and .. files -
Simulator: Mac: 2x Display menu item has a checkmark when enabled
-
Simulator: Windows/Linux: Improvements to Console log output formatting
-
Simulator: Windows/Linux: Fixed possible crash when getting meta data
-
Simulator: Linux/Windows: Fixed possible crash when using wifi API
-
Simulator: Linux/Windows: Improved reliability of wifi calls
-
Simulator: Windows/Linux: fixed
getTime().milliseconds
returning 0 -
Simulator: Windows/Linux: fixed possible crash on quit
-
Simulator: Mac/Windows/Linux: Fixed crash when debugDraw is called during a yielded
update()
with an active graphics context stack -
Inside Playdate:
playdate.timer.allTimers()
should have a function icon -
Inside Playdate:
lineSegment.fast_intersection
should have dot, not colon -
Sample code: Fixed drawing glitch in Level 1-1 demo when player hits a ? box
-
Sample code: C API 3D demo no longer throws float→double warnings
1.11.1
May 19th, 2022
Added
-
Games can now optionally show content warnings the first time they are launched
-
SDK: C API: now checks for NULL pointers and logs a warning message
-
SDK: C API: now allows possible optional out arguments to be passed NULL pointers
-
Inside Playdate: explain more about how we use custom file types inside the pdx
-
Simulator: Windows/Mac: computer will no longer sleep the display when using the device as a controller
-
Simulator: Windows/Linux: added a hot key for Upload Game to Device
-
Device: Added a better error message when registering a device with an unrecognized serial number
Changed
-
Inside Playdate: removed redundant
setClipRect()
call in A Basic Playdate Game in Lua
Fixed
-
Stuck display after unlocking device
-
Side-loaded games zipped using Windows zip may not install properly
-
Crank alignment not being saved to disk correctly in some cases
-
Bug that caused some screenshots to not be saved if a Screenshots folder was not present
-
Issue that could cause games to become uninstalled if the system attempted to download an update while the game was open
-
System menu callback crash if called during a
playdate.wait()
-
Potential crash when adding and removing menu items to the system menu
-
Potential heap corruption when using Scoreboards
-
Simulator: Mac: fixed mic recording when using certain mic hardware
-
SDK: Windows: CMake: script wouldn't open games in the Simulator with spaces correctly
-
Simulator: Mac:
playdate.setDebugDrawColor()
is now reset before loading pdx, not after -
Simulator: Windows: fixed deleting folders using the API
-
Simulator: Windows: Fixed screenshot saving
-
playdate->system->getAccelerometer()
crashes when passed NULL for unneeded axes -
Simulator: Mac: improved Wi-Fi check in Registration dialog
-
Simulator: Linux: fixed crash when closing the main window when paused and in the background
1.11.0
May 9th, 2022
Added
-
Added playdate.menu:getMenuItems()
-
Simulator: Mac/Windows/Linux: Added the ability to lock thumb stick controller position
-
Simulator: Mac/Windows/Linux: Added dock/undock crank controller button action
-
Simulator: Windows/Linux: Improved error messages when attempting to load an invalid pdx
-
Added "Reboot to Data Disk" to the Settings > System menu
-
Launcher posts alert about old version of Casual Birder instead of launching it
Changed
-
New Lua crash dialog: shows falling blocks UI; user needs to press B to see backtrace
-
When leaving the Settings > Games screen while downloads are in progress the alert dialog now defaults to "Stay"
-
New game unwrap animations are now shown even if the Reduce Flashing setting is turned on
-
Simulator: Windows/Linux: Don’t attempt to re-open apps across SDK releases
Fixed
-
Simulator: Windows/Linux: better support for unicode throughout the app
-
Simulator: Windows/Linux: Console log format now matches the Mac Sim and is less verbose
-
Crank is now correctly mirrored in Upside Down mode
-
Game screenshots work: now using game name instead of bundleID in screenshot filename, and truncating it if it’s too long
-
playdate.ui.crankIndicator now ignores the current draw offset
-
Simulator: Mac/Linux: now puts screenshots in the SDK’s /Disk/Screenshots folder instead of inside the pdx if it’s running from outside /Disk/Games
-
Simulator: Mac/Windows/Linux: fixed possible crash when registering Simulator
1.10.0
April 18, 2022
Added
-
Device LED is now red when recording from mic
-
Added a return value to fileplayer→loadIntoPlayer() indicating whether the given file exists
-
Better management of battery charging to help increase battery longevity
-
Added sprite:setRedrawsOnImageChange() to disable automatic redraw after calling sprite:setImage()
-
IP and MAC addresses are now shown in the Device Info screen in Settings
-
Simulator: added limit of 64 simultaneous open files to match the limit on the hardware
-
The sample is now passed to the snd.micinput.recordToSample()
-
pdc: added note when compiler copies unrecognized file to pdx, -k flag for skipping unrecognized files (and -q for turning off the notice)
-
Datastore.writeImage() gif encoding now supports transparency
-
Simulator: Windows/Linux: map mouse scroll wheel to crank
-
Simulator: Windows/Linux: add update notification dialog
-
Simulator: Windows/Linux: can now retry loading a game on a failed initial load
-
Simulator: Windows/Linux: add Malloc Log tool
-
Added implementations of _malloc_r etc. to setup.c so that libc functions that allocate heap magically work
-
Added warnings to indicate System games cannot be run from outside the System folder
-
The device intro animation can now be replayed from the Settings > System menu
-
Runloop stall error screen now shows Lua stack trace, if it’s available
-
C API: added gfx→setStencilImage() and sprite→setStencilImage() with "tile" flag
-
Added support for reverting to a factory/recovery firmware image
-
Added playdate.getButtonState()
-
Added pd→sound→lfo→setGlobal()
-
Added pd→sound→track→getSignalForController()
Changed
-
Removed unused, undocumented playdate.getFrameTime()
-
Game’s data folder isn’t created until something will be written into it
-
MenuItem:getTitle() returns the original title, not the lower-cased version
-
Device should not be lockable while downloading a firmware update
-
Use a smoothed battery voltage for low power modes
-
More accurate battery measurements with disabled charge/usb power while reading
-
Screenshots are now saved on the data disk in a root-level Screenshots folde
-
Factory reset will only prompt to remove account if the device is registered
-
Added serial number and device-specific QR code to the factory reset screen
-
Simulator: Mac: controller configuration is now located in the Preferences window
-
Replaced fisr() in C API 3D demo with sqrtf(), or vsqrt instruction on ARM
-
GCC will now be used on linux on our Makefile
-
Simulator: Mac/Linux/Windows: Accelerometer is no longer constrained to unit circle, in order to simulate shake events
-
Lua docs no longer describe multiple return values as "tuples"
-
Improved instructional text on Account Registration setup screen
-
Floats that are converted to doubles now get a warning at build time
-
Lua error screen timeout increased to 5 minutes
-
We don’t need to clean the DCache on every audio interrupt
-
Don’t allow new heap allocations when performing emergency GC
-
Pressing B at the main menu in Settings now returns to the Launcher
-
pd→sound→synth→setGenerator() still doesn’t work, but no longer crashes
-
Calling gfx:lockFocus(image) instead of gfx.lockFocus(image) now throws an error
Fixed
-
Fix integer overflow on some SDK-internal data structure capacities
-
Fixed slow number parsing in json decoder
-
Simulator: Mac/Linux/Windows: Fixed accelerometer z value when using device as controller
-
Menu button volume shortcuts button presses no longer leak through to games
-
Simulator: Mac: Games opened in the Simulator will now be added to the Open Recent menu
-
pd→lua→callFunction() no longer drops called function’s return values
-
Long Wi-Fi names now scroll in the Wi-Fi password entry screen
-
Move high score caches out of the game’s data directory
-
Clarify "Wi-Fi not yet configured" message
-
Arguments are no longer cast to ints in geom.point:offset(x,y), geom.polygon.new(x1,y1,x2,y2..), and the geom.distanceFromPointToPoint(x1,y1,x2,y2) functions
-
The game list is now reset when a device is unregistered
-
pdc: \n and \t are now properly translated in strings files
-
pd→file→open() with kFileReadData (and not kFileRead) doesn’t read files from Data folder
-
Simulator: Mac: Device info status queries could stack up if device was temporarily unresponsive.
-
Game download will retry if an invalid partial download is in place
-
Simulator: Mac: Will no longer process input when the simulator is paused.
-
If the menu is open, game audio shouldn’t start after unlocking the device
-
Menu glitch if button is pressed repeatedly
-
SSL Connections shouldn’t fail if device time is incorrectly set
-
Simulator: Mac: No longer clear the registration fields when window is focused.
-
C API: renamed confusing playdate→system→setAutoLock() argument
-
Fixed scaling on PO synths so they’re audible again, added synth.lua single file example back in
-
Simulator: Mac: If Wi-Fi is not configured when attempting to register the Simulator, the error now explains why registration failed.
-
Simulator: Windows: Fixed running from non-primary drive
-
pdc can now handle multiple imports inside one statement (for example in a table constructor)
-
pdc: U+xxxx sequences in fnt files are never marked as whitespace
-
Inside Playdate: updated fnt section to note we support "U+xxxx" sequences and all Unicode up to U+3FFFF
-
Docs: Fixed formatting in playdate→lua→indexMetatable()
-
Added note that playNote() only queues one note, use playdate.sound.sequence for sequences
-
Support timestamps in the filesystem
-
Added explanation of bitmap data format in playdate→graphics→getBitmapData()
-
The exit full screen prompt was drawn in the incorrect location when in full screen mode.
-
Incorrect menu titles immediately after forgetting a Wi-Fi network
-
Fixed duplicated setMaskImage/getMaskImage text
-
CMakeFiles: fixed common.mk fix for
No rule to make target 'build/pdex.bin', needed by 'device'
-
Docs: fixed description of fileplayer:getOffset()
-
Heap overflow in gfx.getDisplayImage()
-
Fixes an issue that could leave the device in a stuck state when pressing buttons rapidly while the system menu is closing.
-
Fix a crash due to using Sound Channels and a File/SamplePlayer completing
-
Fixed fileplayer looping (again)
-
Documentation: updated tilemap:getCollisions() description to indicate return value is in tilemap coordinates
-
Simulator: Mac: fixed double error message when load fails
-
Fix FilePlayer when used with an MP3 Stream Source
-
Simulator: Mac: Search function in Lua memory viewer now recurses through tables again
-
Fix a pdc hang that can occur when we get file errors on read
-
Fixed hang that could occur when playdate.graphics.drawTextInRect() was called with a very narrow width argument
-
Fixed regression in mp3 playback breaking decoding for some files
-
Fixed crash due to stack overflow if mp3 decoding fails
-
Release internal references when removing sprites in bulk
-
setBackgroundDrawingCallback() now properly returns the newly created sprite
-
Fix a potential frame skip when using an inverted framebuffer
-
Lua glue now correctly tracks references to multiple playing sound sequences
-
Docs: fixed description of playMIDINote
-
Fileplayer’s getLength() function (both C and Lua) needs to open the file if it isn’t already
-
Docs: leftButtonDown should say "presses" instead of "releases"
-
Docs: fixed typo in fileplayer→loadIntoPlayer()
-
Removed hidden variation selector on double exclamation point character in Asheville Sans 14 Light fnt file
-
Fixed case where markDirty() wasn’t causing an uncovered sprite to redraw
-
Fixed edge cases in polygon:containsPoint()
-
pdc: Mac: -sdkpath is being side stepped
-
Sprite:setStencilPattern() now tiles the stencil image to the entire screen
-
Fixed crash in image:transformedImage() with specific image sizes
-
Calling setImage() on a copied sprite now works as expected
-
Simulator: Windows: improved window layout when using 150% scale factor
-
clipped fillRect() can get bounds wrong
-
Sprites with the same z index should be drawn in the order they were added
-
Mac: the QuickLook icon thumbnail could be positioned off center.
-
Simulator: Windows/Linux: improved simulating refresh rate 0
-
Simulator: Windows: no longer drop frames when interacting with UI
-
Simulator: Windows: C games failed to run out of the Games folder
-
Simulator: Windows: README now mentions the x64 bit C++ runtime
-
Simulator: Windows/Linux: improved WIFI check when registering the Simulator
1.9.3
March 18, 2022
Added
-
Simulator: limit number of open file handles to match hardware
-
CMakeLists files provided for all C examples
-
Document performance considerations around floating point operations in Inside Playdate with C
Changed
-
fileplayer
now leaves file closed until data is needed
Fixed
-
Launcher: Fixes a problem that would sometimes cause an new game to animate in over top of an existing game
-
Launcher: Fixes an issue that could sometime cause an unwrap animation to be out of sync with the audio
-
Launcher: Fixes a visual glitch that could occur when the A button was rapidly pressed as the Launcher was starting up
-
Correct support info in Inside Playdate with C
1.9.2
March 16, 2022
Changed
-
Added flag for tiling stencils in setStencilImage instead of always tiling images < screen size
Fixed
-
Fixed missing text glitch while menu animates in
-
Crash when exiting the game list during a game download
1.9.1
March 9, 2022
Added
-
Better logging of firmware update failures
-
Individual values can now be passed to playdate.geometry.polygon:containsPoint, playdate.geometry.rect:containsRect, and playdate.geometry.rect:containsPoint
-
Added gfx.imagetable:setImage(pos, image)
-
Simulator: Windows/Linux Register Simulator dialog now has link to the website
-
Added SoundFormat and helper macros to Inside Playdate with C
Changed
-
Unified keyboard shortcuts in all the Simulators
-
Increase Autolock timeout to 3 minutes
-
Inside Playdate: factored parameters out of list of easing functions
-
If the toolchain fails to download it will be retried
-
Removed error when using error-diffusing dither types in gfx.setDitherPattern()
Fixed
-
Simulator: Mac: Command-right/left arrow no longer rotates the Simulator unexpectedly when in the Console.
-
Fixed a bug where a text formatting character could appear in drawn text
-
snd.getCurrentTime() no longer stops when Simulator volume is set to 0
-
MacOS SDK installer no longer requires Rosetta
-
Changed delay effect mix in Drum Machine example so you hear the notes at the right time
-
Fixed Input Test error when the crank angle is exactly 345 degrees
-
Fixed backward incompatibilities with older games
-
eventHandler declaration in pd_api.h now includes Windows export tag
-
Simulator: Mac: fixed some drawing and timing glitches in animated gif export
-
Simulator: Windows: now correctly include the game controller map
-
sprite:setScale() and :setRotation() now handle opaque images with padding
-
sprite:setScale() and :setRotation() now copy image’s invert flag
-
Update FPU settings in CMake builds
-
Simulator: Windows/Linux: Fixed a crash when using unmapped thumb sticks
-
Simulator: Windows/Linux: Fixed an issue where Playdate settings would not be saved correctly
-
Simulator: Linux: fixed compatiblity with libpng on certain distros which could lead to a crash
-
Fixed bounds checking in imagetable:getImage(x,y)
-
Fix game crashes if /Data doesn’t exist
1.9.0
February 28, 2022
First public release!