A port to Vircon32 of the Playdate Handheld C Api in SDL2
A reimplementation of enough of the Playdate C API to
build real Playdate games as cartridges for the
Vircon32 fantasy console. This project mirrors
what the Playdate_Api_SDL2 project does for desktop/SDL2 — a Playdate API
shim — but targets Vircon32 instead, working within a much more
constrained dialect (word-addressed memory, no linker, no varargs, no
filesystem, and other limits documented in VIRCON32_C_DIALECT.md).
games/ contains a growing catalog of real, previously-published Playdate
games ported on top of this shim to prove it against real-world source, not
just synthetic demos.
The shim and every game port in this project were built with the help of Claude.
This project (the shim itself, its examples, probes, and porting tools) is
licensed under the GNU General Public License v3.0 (GPL-3.0). See the
LICENSE file for the full text.
Each game under games/ is a port of a separate, independently authored
Playdate game; its own original license and copyright remain with its
original author, as noted in the table below.
pd_api.h
headers referenced as the source-of-truth ABI for this shim, and certain
bundled system font assets used across the ported games, originate from
Panic and their respective creators — not this project.games/ was originally written by its own author
— see the table below for attribution and a link to the original source.| Game | Author | Original repository |
|---|---|---|
| Blips | joyrider3774 | blips_playdate |
| Blockdude | joyrider3774 | blockdude_playdate |
| Bullethell | AndrewPrifer | playdate-bullethell-c |
| Bunnymark | Timofffee | bunnymark-playdate |
| Death Star Shooter | Darkusagi99 | deathStarShooter |
| Formula 1 Game & Watch | joyrider3774 | formula1_playdate |
| KaesuGaesu | raseene | Playdate_KaesuGaesu |
| pdxlander | cofinalsubnets | pdxlander |
| Playing With Blocks | cwmiller | playing-with-blocks |
| PlayPong | knightfox75 | PlayPong |
| Puzzle Land | joyrider3774 | puzzleland_playdate |
| RetroTime | joyrider3774 | retrotime_playdate |
| Rubido | joyrider3774 | rubido_playdate |
| Sokoban (Playdoban) | joyrider3774 | sokoban_playdate |
| Spaceshipment | renpenguin | Spaceshipment |
| Stellarator (Bifusion) | Hegodi | Playdate-Stellarator |
| Waternet | joyrider3774 | waternet_playdate |
| Witches | CoBinee | witches-playdate |
| Worm | joyrider3774 | worm_playdate |
| You Cannot Go Back | Tim Martin | YouCannotGoBack |
| Znax | joyrider3774 | znax_playdate |
Since Vircon32 has no crank hardware, the Playdate crank is simulated with the shoulder buttons:
| Playdate input | Vircon32 input |
|---|---|
| Crank | LB / RB (shoulder buttons) |
| D-pad | D-pad |
| A / B | A / B |
| System menu | Start |