#include "psp.h"
#include "emu.h"
#include "../common/lprintf.h"
+#include "version.h"
extern int pico_main(void);
#ifndef FW15
-PSP_MODULE_INFO("PicoDrive", 0, 1, 40);
+PSP_MODULE_INFO("PicoDrive", 0, 1, 51);
PSP_HEAP_SIZE_MAX();
int main() { return pico_main(); } /* just a wrapper */
#else
-PSP_MODULE_INFO("PicoDrive", 0x1000, 1, 40);
+PSP_MODULE_INFO("PicoDrive", 0x1000, 1, 51);
PSP_MAIN_THREAD_ATTR(0);
int main()
#endif
+int psp_unhandled_suspend = 0;
+
unsigned int __attribute__((aligned(16))) guCmdList[GU_CMDLIST_SIZE];
void *psp_screen = VRAM_FB0;
-int psp_unhandled_suspend = 0;
static int current_screen = 0; /* front bufer */
/* Power Callback */
static int power_callback(int unknown, int pwrflags, void *common)
{
- static int old_state = PGS_Menu;
-
lprintf("power_callback: flags: 0x%08X\n", pwrflags);
/* 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 || pwrflags & PSP_POWER_CB_STANDBY)
{
- if (engineState != PGS_Suspending) {
- old_state = engineState;
- engineState = PGS_Suspending;
- }
+ psp_unhandled_suspend = 1;
+ if (engineState != PGS_Suspending)
+ engineStateSuspend = engineState;
+ sceKernelDelayThread(100000); // ??
}
else if (pwrflags & PSP_POWER_CB_RESUME_COMPLETE)
{
- engineState = old_state;
- psp_unhandled_suspend = 1;
+ engineState = PGS_SuspendWake;
}
//sceDisplayWaitVblankStart();
main_thread_id = sceKernelGetThreadId();
+ lprintf("\n%s\n", "PicoDrive v" VERSION " " __DATE__ " " __TIME__);
lprintf("running on %08x kernel\n", sceKernelDevkitVersion()),
lprintf("entered psp_init, threadId %08x, priority %i\n", main_thread_id,
sceKernelGetThreadCurrentPriority());
}
if (fd >= 0) sceIoClose(fd);
sceDisplayWaitVblankStart();
- psp_unhandled_suspend = 0;
if (i < 30)
lprintf("io resumed after %i tries\n", i);
else {
static log_entry *le_root = NULL;
#endif
+/* strange: if this function leaks memory (before psp_init() call?),
+ * resume after suspend breaks on 3.90 */
void lprintf(const char *fmt, ...)
{
va_list vl;