#include <pspgu.h>
#include "psp.h"
+#include "emu.h"
#include "../common/lprintf.h"
PSP_MODULE_INFO("PicoDrive", 0, 1, 34);
return 0;
}
+/* Power Callback */
+static int power_callback(int unknown, int pwrflags, void *common)
+{
+ /* check for power switch and suspending as one is manual and the other automatic */
+ if (pwrflags & PSP_POWER_CB_POWER_SWITCH || pwrflags & PSP_POWER_CB_SUSPENDING)
+ {
+ lprintf("power_callback: flags: 0x%08X: suspending\n", pwrflags);
+ engineState = PGS_Menu;
+ }
+ sceDisplayWaitVblankStart();
+ return 0;
+}
+
/* Callback thread */
static int callback_thread(SceSize args, void *argp)
{
int cbid;
- lprintf("callback_thread started with id %i, priority %i\n",
+ lprintf("callback_thread started with id %08x, priority %i\n",
sceKernelGetThreadId(), sceKernelGetThreadCurrentPriority());
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
+ cbid = sceKernelCreateCallback("Power Callback", power_callback, NULL);
+ scePowerRegisterCallback(0, cbid);
sceKernelSleepThreadCB();
SceUID thid;
lprintf("running in %08x kernel\n", sceKernelDevkitVersion()),
- lprintf("entered psp_init, threadId %i, priority %i\n", sceKernelGetThreadId(),
+ lprintf("entered psp_init, threadId %08x, priority %i\n", sceKernelGetThreadId(),
sceKernelGetThreadCurrentPriority());
thid = sceKernelCreateThread("update_thread", callback_thread, 0x11, 0xFA0, 0, 0);