https://github.com/cranksters/playdate-reverse-engineering
Panic Playdate reverse-engineering notes/tools - covers file formats, server API and USB commands
https://github.com/cranksters/playdate-reverse-engineering
file-formats playdate playdate-reverse-engineering reverse-engineering usb-serial
Last synced: about 1 month ago
JSON representation
Panic Playdate reverse-engineering notes/tools - covers file formats, server API and USB commands
- Host: GitHub
- URL: https://github.com/cranksters/playdate-reverse-engineering
- Owner: cranksters
- License: cc0-1.0
- Created: 2022-03-01T00:16:48.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-07-16T10:52:55.000Z (10 months ago)
- Last Synced: 2024-08-01T23:30:51.892Z (10 months ago)
- Topics: file-formats, playdate, playdate-reverse-engineering, reverse-engineering, usb-serial
- Language: Python
- Homepage:
- Size: 119 KB
- Stars: 233
- Watchers: 14
- Forks: 16
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-playdate - Playdate Reverse Engineering - Unofficial documentation covering the Playdate's file formats, USB serial commands, and server API. (Game Development / Programming Frameworks & Languages)
README
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**
- [**pdex.bin**](formats/pdex.md) - Executable code
- [**.luac**](formats/luac.md) - Lua bytecode
- [**.pdz**](formats/pdz.md) - File container
- [**.pda**](formats/pda.md) - Audio file
- [**.pdi**](formats/pdi.md) - Image file
- [**.pdt**](formats/pdt.md) - Imagetable file
- [**.pdv**](formats/pdv.md) - Video file
- [**.pds**](formats/pds.md) - Strings file
- [**.pft**](formats/pft.md) - Font file
- **Other formats**
- [**.fnt**](formats/fnt.md) - Font source file
- **.strings** - Strings source file (TODO)
- **Server**
- [**Playdate API**](server/api.md) - Main Playdate server API
- **Misc**
- [**USB**](usb/usb.md) - USB serial interface
- [**Streaming**](usb/stream.md) - Video/audio streaming protocol (via USB serial), used by Playdate Mirror## Tools
- [**`pdz.py`**](tools/pdz.py) - Unpacks all files from a `.pdz` file container.
- [**`pdex2elf.py`**](tools/pdex2elf.py) - Converts a `pdex.bin` to an ELF file that can be analyzed in tools such as readelf, objdump or Ghidra, or compiled back to the same original `pdex.bin` by `pdc`.
- [**`usbeval.py`**](tools/usbeval.py) - Uses the Playdate's USB `eval` command to evaluate a Lua script over USB. Has access to the Lua runtime of the currently loaded game, except for system apps.## Related Projects and Resources
- [**pd-usb**](https://github.com/jaames/pd-usb) - JavaScript library for interacting with the Playdate's serial API from a WebUSB-compatible web browser.
- [**unluac**](https://github.com/scratchminer/unluac) - Fork of the unluac Lua decompiler, modified to support Playdate-flavoured Lua.
- [**lua54**](https://github.com/scratchminer/lua54) - Fork of Lua that aims to match the custom tweaks that Panic added for Playdate-flavoured Lua.## Special Thanks
- [Zhuowei](https://github.com/zhuowei) for this [script for unpacking Playdate .pdx executables](https://gist.github.com/zhuowei/666c7e6d21d842dbb8b723e96164d9c3), which was the base for `pdz.py`
- [Scratchminer](https://github.com/scratchminer) for their further reverse-engineering work on the Playdate's [file formats](https://github.com/scratchminer/pd-emu), streaming protocol and [Lua implementation](https://github.com/scratchminer/lua54).
- [Simon](https://github.com/simontime) for helping with some ADPCM audio data reverse engineering
- The folks at [Panic](https://panic.com/) for making such a wonderful and fascinating handheld!----
2022-2023 James Daniel
Playdate is © [Panic Inc.](https://panic.com/) - this project isn't affiliated with or endorsed by them in any way.