// // Copyright (c) 2009, Pal_Bazzi. // // All rights reserved. // // This file is part of SDLPAL. // // SDLPAL is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // #include #include #include #include #include #include #include #define PSP_HEAP_MEMSIZE 12288 PSP_MODULE_INFO("SDLPAL", 0, 1, 1); PSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_USER); PSP_HEAP_SIZE_KB(PSP_HEAP_MEMSIZE); // //Exit callback // int PSPExitCallback(int arg1, int arg2, void *common) { exit(0); return 0; } // //Reopen MKF files when resume from suspend // int PSPSuspendCallback(int arg1, int arg2, void *common) { if (pwrflags & PSP_POWER_CB_RESUME_COMPLETE) { gpGlobals->f.fpFBP = UTIL_OpenRequiredFile("fbp.mkf"); gpGlobals->f.fpDATA = UTIL_OpenRequiredFile("data.mkf"); gpGlobals->f.fpFIRE = UTIL_OpenRequiredFile("fire.mkf"); gpGlobals->f.fpSSS = UTIL_OpenRequiredFile("sss.mkf"); gpGlobals->lpObjectDesc = PAL_LoadObjectDesc(va("%s%s", PAL_PREFIX, "desc.dat")); SOUND_Reload_VOC(); } int cbid; cbid = sceKernelCreateCallback("suspend Callback", PSPSuspendCallback, NULL); scePowerRegisterCallback(0, cbid); return 0; } // //setup callbacks thread // int PSPRegisterCallbackThread(SceSize args, void *argp) { int cbid; cbid = sceKernelCreateCallback("Exit Callback", PSPExitCallback, NULL); sceKernelRegisterExitCallback(cbid); cbid = sceKernelCreateCallback("suspend Callback", PSPSuspendCallback, NULL); scePowerRegisterCallback(0, cbid); sceKernelSleepThreadCB(); return 0; } // //setup exit callback // int PSPSetupCallbacks(void) { int thid = 0; thid = sceKernelCreateThread("update_thread", PSPRegisterCallbackThread, 0x11, 0xFA0, 0, 0); if(thid >= 0) sceKernelStartThread(thid, 0, 0); return thid; } // //Init on PSP // void sdlpal_psp_init(void) { // Init Debug Screen pspDebugScreenInit(); // PSP set callbacks PSPSetupCallbacks(); // Register sceKernelExitGame() to be called when we exit atexit(sceKernelExitGame); // set PSP CPU clock scePowerSetClockFrequency(333 , 333 , 166); }