diff --git a/ps3/main.c b/ps3/main.c index d624458bcf..b79e70c124 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -1,12 +1,31 @@ #include -int ssnes_main(int argc, char *argv[]); +#include +#include #include + +int ssnes_main(int argc, char *argv[]); + SYS_PROCESS_PARAM(1001, 0x100000) +void callback_sysutil_exit(uint64_t status, uint64_t param, void *userdata) +{ + (void) param; + (void) userdata; + + switch (status) + { + case CELL_SYSUTIL_REQUEST_EXITGAME: + break; + default: + break; + } +} + #undef main // Temporary, a more sane implementation should go here. int main(int argc, char *argv[]) { + sys_spu_initialize(4, 3); char arg1[] = "ssnes"; char arg2[] = "/dev_hdd0/game/SNES90000/USRDIR/main.sfc"; char arg3[] = "-v"; diff --git a/ps3/ps3_video_psgl.c b/ps3/ps3_video_psgl.c index 143ecff38b..ed80d7055d 100644 --- a/ps3/ps3_video_psgl.c +++ b/ps3/ps3_video_psgl.c @@ -1205,6 +1205,20 @@ static bool psgl_init_device(gl_t * gl, const video_info_t *video, uint32_t reso return true; } +void callback_sysutil_exit(uint64_t status, uint64_t param, void *userdata) +{ + (void) param; + (void) userdata; + + switch (status) + { + case CELL_SYSUTIL_REQUEST_EXITGAME: + gl->quitting = true; + break; + default: + break; + } +} static void *gl_init(const video_info_t *video, const input_driver_t **input, void **input_data) { @@ -1233,6 +1247,9 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo SSNES_LOG("GL: Using resolution %ux%u\n", gl->win_width, gl->win_height); + SSNES_LOG("Registering Callback\n"; + cellSysutilRegisterCallback(0, callback_sysutil_exit, NULL); + if (!gl_shader_init()) { SSNES_ERR("Shader init failed.\n");