64 lines
2.0 KiB
C
64 lines
2.0 KiB
C
// main_playdate.c - Playdate entry point for Cell runtime
|
|
// This file provides the eventHandler entry point required by Playdate SDK
|
|
// and initializes the global Playdate API pointers used by other modules.
|
|
|
|
#include "cell.h"
|
|
#include "playdate/common.h"
|
|
|
|
// Global Playdate API pointers - used by all playdate integration modules
|
|
PlaydateAPI *pd = NULL;
|
|
const struct playdate_file *pd_file = NULL;
|
|
const struct playdate_sys *pd_sys = NULL;
|
|
const struct playdate_graphics *pd_gfx = NULL;
|
|
const struct playdate_sprite *pd_sprite = NULL;
|
|
const struct playdate_display *pd_display = NULL;
|
|
const struct playdate_sound *pd_sound = NULL;
|
|
const struct playdate_lua *pd_lua = NULL;
|
|
const struct playdate_json *pd_json = NULL;
|
|
const struct playdate_scoreboards *pd_scoreboards = NULL;
|
|
const struct playdate_network *pd_network = NULL;
|
|
|
|
// Forward declaration
|
|
extern int cell_init(int argc, char **argv);
|
|
|
|
// Playdate update callback
|
|
static int update(void *userdata)
|
|
{
|
|
// The Cell runtime uses its own event loop, so we just return 1 to continue
|
|
return 1;
|
|
}
|
|
|
|
// Playdate event handler - main entry point
|
|
#ifdef _WINDLL
|
|
__declspec(dllexport)
|
|
#endif
|
|
int eventHandler(PlaydateAPI *playdate, PDSystemEvent event, uint32_t arg)
|
|
{
|
|
(void)arg;
|
|
|
|
if (event == kEventInit) {
|
|
// Store global API pointers
|
|
pd = playdate;
|
|
pd_file = playdate->file;
|
|
pd_sys = playdate->system;
|
|
pd_gfx = playdate->graphics;
|
|
pd_sprite = playdate->sprite;
|
|
pd_display = playdate->display;
|
|
pd_sound = playdate->sound;
|
|
pd_lua = playdate->lua;
|
|
pd_json = playdate->json;
|
|
pd_scoreboards = playdate->scoreboards;
|
|
pd_network = playdate->network;
|
|
|
|
// Set up the update callback
|
|
pd_sys->setUpdateCallback(update, NULL);
|
|
|
|
// Initialize Cell runtime with no arguments
|
|
// On Playdate, we'll look for main.ce in the data folder
|
|
char *argv[] = { "cell", "main.ce", NULL };
|
|
cell_init(2, argv);
|
|
}
|
|
|
|
return 0;
|
|
}
|