Updated 6 November 2026

Playdate compatibility

Core8Bit does not create a playdate table. Games opt in with playdate = c8b, after which playdate.graphics, playdate.sound, playdate.timer, playdate.datastore, playdate.file, playdate.geometry, playdate.keyboard, playdate.easingFunctions and the top-level functions resolve to the Core8Bit implementations documented on the other pages. Every entry there carries a Playdate status: Same as Playdate, Partial (with a note), Core8Bit-only or Compatibility stub.

Main differences

  • Colors are RGB565 integers. kColorBlack = 0x0000, kColorWhite = 0xFFFF, kColorClear = -1; Playdate 1-bit art still works because black/white map to these values, and setBackgroundColor(0/1/2) is remapped.
  • Screen is 480x272 (Playdate: 400x240).
  • Assets must be converted: images to STI/STJ, image tables to STA, audio to STS (see AssetFormatSpecifications.md). .pdi/.pdt/.pda files are not loaded.
  • Buttons: extra X, Y, Menu, Select; no crank (crank functions are stubs) and no accelerometer.
  • Update loop: playdate.update is c8b.update. Sprites redraw the full frame each gfx.sprite.update(); dirty-rect APIs are stubs.
  • Timers advance a fixed 41.67 ms per updateTimers() call (see AUDIT.md).
  • Writing files: playdate.file.open with write modes fails; use c8b.file.writeString or playdate.datastore.write.
  • Collision types are numbered 1..4 (kCollisionTypeSlide = 1).
  • CoreLibs: import "CoreLibs/..." is mapped by class.lua: graphics, sprites, easing, timer and object return SDK tables; animation, animator, crank, keyboard, frameTimer, ui and nineslice are accepted no-ops; CoreLibs/sound returns an empty table. Note that frameTimer is not implemented.

Contents

The playdate table

playdate

playdate = c8b

Convention, not an SDK symbol: Playdate-style games assign playdate = c8b at the top of main.lua. The SDK protects the names playdate and pd from the game-switch global cleanup.

  • Availability: Console (BIOS) and emulator
  • Playdate: Same as Playdate
  • Defined in: Core8bit/SDCard/System/sdk/class.lua:643, Core8bit/SDCard/System/sdk/sandbox.lua:26
playdate = c8b
local pd = playdate
local gfx = pd.graphics

Status by page

Page Same Partial Core8Bit-only Stub
graphics 59 18 83 5
sprites 31 17 87 6
images-tilemaps 31 35 114 0
input 8 2 55 9
sound 51 4 19 9
music 0 0 115 0
files 16 14 15 0
time 49 4 9 0
network 0 0 51 0
system 32 9 71 11
json 4 2 26 0
math-utilities 17 2 10 0
playdate-compatibility 1 0 0 0

Playdate APIs not available

These Playdate SDK names were checked against the inventory and are not provided (calling them raises an error):

  • playdate.graphics.image:drawIgnoringOffset
  • playdate.graphics.image:sample
  • playdate.graphics.image:rotatedImage
  • playdate.graphics.image:scaledImage
  • playdate.graphics.image:copy
  • playdate.graphics.image:invertedImage
  • playdate.graphics.image:blurredImage
  • playdate.graphics.image:setInverted
  • playdate.graphics.image:blendWithImage
  • playdate.graphics.image:drawSampled
  • playdate.graphics.image:drawBlurred
  • playdate.graphics.image:load
  • playdate.graphics.sprite:setUpdatesEnabled
  • playdate.graphics.sprite:updatesEnabled
  • playdate.graphics.sprite:setAnimator
  • playdate.graphics.sprite:removeAnimator
  • playdate.graphics.sprite:setTilemap
  • playdate.graphics.sprite:copy
  • playdate.graphics.sprite:getCollideRect
  • playdate.graphics.sprite:setRedrawsOnImageChange
  • playdate.graphics.sprite:getGroupMask
  • playdate.graphics.sprite:setStencilImage
  • playdate.graphics.sprite:alphaCollision
  • playdate.graphics.sprite.querySpritesAtPoint
  • playdate.graphics.sprite.querySpritesInRect
  • playdate.graphics.sprite.querySpritesAlongLine
  • playdate.graphics.sprite.allOverlappingSprites
  • playdate.graphics.sprite.setBackgroundDrawingCallback
  • playdate.graphics.sprite.getAllSprites
  • playdate.graphics.sprite.performOnAllSprites
  • playdate.graphics.sprite.redrawBackground
  • playdate.graphics.sprite.addDirtyRect
  • playdate.graphics.sprite.setClipRectsInRange
  • playdate.graphics.imagetable:drawImage
  • playdate.graphics.imagetable:setImage
  • playdate.graphics.font.newFamily
  • playdate.graphics.getTextSizeForMaxWidth
  • playdate.graphics.drawLocalizedText
  • playdate.graphics.getLocalizedText
  • playdate.graphics.drawArc
  • playdate.graphics.drawSineWave
  • playdate.graphics.setPattern
  • playdate.graphics.perlin
  • playdate.graphics.perlinArray
  • playdate.graphics.getDisplayImage
  • playdate.graphics.getWorkingImage
  • playdate.graphics.setScreenClipRect
  • playdate.graphics.setStencilImage
  • playdate.graphics.setStencilPattern
  • playdate.graphics.clearStencil
  • playdate.graphics.checkAlphaCollision
  • playdate.graphics.animation.blinker
  • playdate.graphics.video
  • playdate.graphics.setFontTracking
  • playdate.graphics.getFontTracking
  • playdate.graphics.setFontFamily
  • playdate.graphics.setLineCapStyle
  • playdate.graphics.imageWithText
  • playdate.graphics.getSystemFont
  • playdate.sound.sequence
  • playdate.sound.track
  • playdate.sound.instrument
  • playdate.sound.channel
  • playdate.sound.micinput
  • playdate.sound.lfo
  • playdate.sound.envelope
  • playdate.sound.bitcrusher
  • playdate.sound.twopolefilter
  • playdate.sound.delayline
  • playdate.sound.overdrive
  • playdate.sound.ringmod
  • playdate.sound.onepolefilter
  • playdate.sound.playingSources
  • playdate.sound.getHeadphoneState
  • playdate.sound.setOutputsActive
  • playdate.sound.controlsignal
  • playdate.getCrankTicks
  • playdate.getCrankPosition
  • playdate.inputHandlers
  • playdate.startAccelerometer
  • playdate.stopAccelerometer
  • playdate.readAccelerometer
  • playdate.accelerometerIsRunning
  • playdate.datastore.writeImage
  • playdate.datastore.readImage
  • playdate.file.modtime
  • playdate.file.run
  • playdate.file.load
  • playdate.getStats
  • playdate.setCollectsGarbage
  • playdate.wait
  • playdate.stop
  • playdate.start
  • playdate.restart
  • playdate.getPowerStatus
  • playdate.getBatteryPercentage
  • playdate.getBatteryVoltage
  • playdate.isSimulator
  • playdate.display.setScale
  • playdate.display.getScale
  • playdate.display.setInverted
  • playdate.display.setMosaic
  • playdate.display.setFlipped
  • playdate.display.setOffset
  • playdate.display.getRect
  • playdate.display.flush
  • playdate.display.loadImage
  • playdate.frameTimer
  • playdate.ui.gridview
  • playdate.pathfinder
  • playdate.geometry.vector2D
  • playdate.geometry.lineSegment
  • playdate.geometry.polygon
  • playdate.geometry.affineTransform
  • playdate.geometry.arc
  • playdate.geometry.size
  • playdate.metadata
  • playdate.getSystemLanguage
  • playdate.apiVersion
  • playdate.argv