playdate-reverse-engineering
playdate-reverse-engineering copied to clipboard
Panic Playdate reverse-engineering notes/tools - covers file formats, server API and USB commands
Unofficial Playdate reverse-engineering notes/tools - covers file formats, server API and USB serial commands
⚠️ This documentation is unofficial and is not affiliated with Panic. All of the content herein was gleaned from reverse-engineering Playdate tools and game files, and as such there may be mistakes or missing information.
Documentation
-
File Formats
-
Playdate game formats
- .pdz - Executable file container
- .pda - Audio file
- .pdi - Image file
- .pdt - Imagetable file
- .pdv - Video file
- .pds - Strings file
- .pft - Font file (TODO)
-
Other formats
- .fnt - Font source file
- .strings - Strings source file (TODO)
-
Playdate game formats
-
Server
- Playdate API - Main Playdate server API
-
Misc
- USB - Playdate USB serial interface
Tools
-
pdz.py
- Unpacks all files from a.pdz
file container -
pdex2elf.py
- Converts apdex.bin
to an ELF file that can be analysed in a decompilation tool such as Ghidra -
usbeval.py
- Uses the Playdate's USBeval
command to evaluate a Lua script over USB. Has access to the Lua runtime of the currently loaded game, except for system apps.
Special Thanks
- Simon for helping with some ADPCM audio data reverse engineering
-
Zhuowei for this script for unpacking Playdate .pdx executables, which was the base for
pdz.py
- The folks at Panic for making such a wonderful and fascinating handheld!
2022 James Daniel
Playdate is © Panic Inc. - this project isn't affiliated with or endorsed by them in any way.