1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program 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 <http://www.gnu.org/licenses/>.
*
*/
#include <psp2/kernel/processmgr.h>
#include <psp2/power.h>
#include <psp2/appmgr.h>
#include "common/scummsys.h"
#include "backends/platform/sdl/psp2/psp2.h"
#include "backends/plugins/psp2/psp2-provider.h"
#include "base/main.h"
int _newlib_heap_size_user = 192 * 1024 * 1024;
char boot_params[1024];
int main(int argc, char *argv[]) {
#ifdef __PSP2_DEBUG__
psp2shell_init(3333, 10);
#endif
scePowerSetArmClockFrequency(444);
scePowerSetBusClockFrequency(222);
scePowerSetGpuClockFrequency(222);
scePowerSetGpuXbarClockFrequency(166);
// Create our OSystem instance
g_system = new OSystem_PSP2();
assert(g_system);
// Pre initialize the backend
g_system->init();
#ifdef DYNAMIC_MODULES
PluginManager::instance().addPluginProvider(new PSP2PluginProvider());
#endif
sceAppMgrGetAppParam(boot_params);
int res;
if (strstr(boot_params,"psgm:play"))
{
char *path_param = strstr(boot_params, "&path=");
char *gameid_param = strstr(boot_params, "&game_id=");
if (path_param != NULL && gameid_param != NULL)
{
char path[256];
char game_id[64];
if (gameid_param > path_param)
{
// handle case where gameid param follows path param
path_param += 6;
memcpy(path, path_param, gameid_param - path_param);
path[gameid_param-path_param] = 0;
snprintf(game_id, 64, gameid_param + 9);
}
else
{
// handle case where path param follows gameid param
gameid_param += 9;
memcpy(game_id, gameid_param, path_param - gameid_param);
game_id[path_param-gameid_param] = 0;
snprintf(path, 256, path_param + 6);
}
const char* args[4];
args[0] = "ux0:app/VSCU00001/eboot.bin";
args[1] = "-p";
args[2] = path;
args[3] = game_id;
res = scummvm_main(4, args);
goto exit;
}
}
// Invoke the actual ScummVM main entry point:
res = scummvm_main(argc, argv);
exit:
// Free OSystem
g_system->destroy();
#ifdef __PSP2_DEBUG__
psp2shell_exit();
#endif
return res;
}
|