mirror of
https://github.com/CTCaer/RetroArch.git
synced 2025-01-20 01:43:37 +00:00
(Salamander) Reuse rarch_console_exec for Salamander
This commit is contained in:
parent
9e3848e423
commit
7f269779ce
@ -8,7 +8,7 @@ include $(CELL_MK_DIR)/sdk.makedef.mk
|
||||
STRIP = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-strip.exe
|
||||
|
||||
PPU_CFLAGS += -I. -D__CELLOS_LV2__ -DIS_SALAMANDER
|
||||
PPU_SRCS = console/salamander/main.c file_path.c compat/compat.c conf/config_file.c
|
||||
PPU_SRCS = console/salamander/main.c console/rarch_console_exec.c file_path.c compat/compat.c conf/config_file.c
|
||||
|
||||
ifeq ($(HAVE_LOGGER), 1)
|
||||
PPU_CFLAGS += -DHAVE_LOGGER -Iconsole/logger
|
||||
|
@ -14,7 +14,7 @@
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#if defined(__CELLOS_LV2__)
|
||||
#include <cell/sysmodule.h>
|
||||
@ -28,41 +28,42 @@
|
||||
#endif
|
||||
|
||||
#include "rarch_console_exec.h"
|
||||
#include "../retroarch_logger.h"
|
||||
|
||||
void rarch_console_exec (void)
|
||||
void rarch_console_exec(const char *path)
|
||||
{
|
||||
if(g_console.return_to_launcher)
|
||||
{
|
||||
RARCH_LOG("Attempt to load executable: [%s].\n", g_console.launch_app_on_exit);
|
||||
RARCH_LOG("Attempt to load executable: [%s].\n", path);
|
||||
#if defined(_XBOX)
|
||||
XLaunchNewImage(g_console.launch_app_on_exit, NULL);
|
||||
XLaunchNewImage(path, NULL);
|
||||
#elif defined(__CELLOS_LV2__)
|
||||
char spawn_data[256];
|
||||
for(unsigned int i = 0; i < sizeof(spawn_data); ++i)
|
||||
spawn_data[i] = i & 0xff;
|
||||
char spawn_data[256];
|
||||
for(unsigned int i = 0; i < sizeof(spawn_data); ++i)
|
||||
spawn_data[i] = i & 0xff;
|
||||
|
||||
char spawn_data_size[16];
|
||||
snprintf(spawn_data_size, sizeof(spawn_data_size), "%d", 256);
|
||||
char spawn_data_size[16];
|
||||
snprintf(spawn_data_size, sizeof(spawn_data_size), "%d", 256);
|
||||
|
||||
const char * const spawn_argv[] = {
|
||||
spawn_data_size,
|
||||
"test argv for",
|
||||
"sceNpDrmProcessExitSpawn2()",
|
||||
NULL
|
||||
};
|
||||
const char * const spawn_argv[] = {
|
||||
spawn_data_size,
|
||||
"test argv for",
|
||||
"sceNpDrmProcessExitSpawn2()",
|
||||
NULL
|
||||
};
|
||||
|
||||
SceNpDrmKey * k_licensee = NULL;
|
||||
int ret = sceNpDrmProcessExitSpawn2(k_licensee, g_console.launch_app_on_exit, (const char** const)spawn_argv, NULL, (sys_addr_t)spawn_data, 256, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M);
|
||||
if(ret < 0)
|
||||
{
|
||||
RARCH_WARN("SELF file is not of NPDRM type, trying another approach to boot it...\n");
|
||||
sys_game_process_exitspawn(g_console.launch_app_on_exit, NULL, NULL, NULL, 0, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M);
|
||||
}
|
||||
sceNpTerm();
|
||||
cellSysmoduleUnloadModule(CELL_SYSMODULE_SYSUTIL_NP);
|
||||
cellSysmoduleUnloadModule(CELL_SYSMODULE_NET);
|
||||
#else
|
||||
RARCH_WARN("External loading of executables is not supported for this platform.\n");
|
||||
#endif
|
||||
SceNpDrmKey * k_licensee = NULL;
|
||||
int ret = sceNpDrmProcessExitSpawn2(k_licensee, path, (const char** const)spawn_argv, NULL, (sys_addr_t)spawn_data, 256, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
RARCH_WARN("SELF file is not of NPDRM type, trying another approach to boot it...\n");
|
||||
sys_game_process_exitspawn(path, NULL, NULL, NULL, 0, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M);
|
||||
}
|
||||
|
||||
sceNpTerm();
|
||||
sys_net_finalize_network();
|
||||
cellSysmoduleUnloadModule(CELL_SYSMODULE_SYSUTIL_NP);
|
||||
cellSysmoduleUnloadModule(CELL_SYSMODULE_NET);
|
||||
#else
|
||||
RARCH_WARN("External loading of executables is not supported for this platform.\n");
|
||||
#endif
|
||||
}
|
||||
|
@ -17,6 +17,6 @@
|
||||
#ifndef RARCH_CONSOLE_EXEC_H__
|
||||
#define RARCH_CONSOLE_EXEC_H__
|
||||
|
||||
void rarch_console_exec (void);
|
||||
void rarch_console_exec(const char *path);
|
||||
|
||||
#endif
|
||||
|
@ -44,6 +44,8 @@
|
||||
#define PATH_MAX 512
|
||||
#endif
|
||||
|
||||
#include "../rarch_console_exec.h"
|
||||
|
||||
#include "../../retroarch_logger.h"
|
||||
#include "../../file.h"
|
||||
|
||||
@ -294,7 +296,6 @@ static void callback_sysutil_exit(uint64_t status, uint64_t param, void *userdat
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int ret;
|
||||
#if defined(_XBOX)
|
||||
XINPUT_STATE state;
|
||||
|
||||
@ -316,13 +317,8 @@ int main(int argc, char *argv[])
|
||||
//normal executable loading path
|
||||
init_settings();
|
||||
}
|
||||
|
||||
XLaunchNewImage(libretro_path, NULL);
|
||||
RARCH_LOG("Launch libretro core: [%s] (return code: %x]).\n", libretro_path, ret);
|
||||
#elif defined(__CELLOS_LV2__)
|
||||
CellPadData pad_data;
|
||||
char spawn_data[256], spawn_data_size[16];
|
||||
SceNpDrmKey * k_licensee = NULL;
|
||||
|
||||
cellSysutilRegisterCallback(0, callback_sysutil_exit, NULL);
|
||||
|
||||
@ -363,36 +359,12 @@ int main(int argc, char *argv[])
|
||||
|
||||
#ifdef HAVE_LOGGER
|
||||
logger_shutdown();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
for(unsigned int i = 0; i < sizeof(spawn_data); ++i)
|
||||
spawn_data[i] = i & 0xff;
|
||||
rarch_console_exec(libretro_path);
|
||||
|
||||
snprintf(spawn_data_size, sizeof(spawn_data_size), "%d", 256);
|
||||
|
||||
const char * const spawn_argv[] = {
|
||||
spawn_data_size,
|
||||
"test argv for",
|
||||
"sceNpDrmProcessExitSpawn2()",
|
||||
NULL
|
||||
};
|
||||
|
||||
ret = sceNpDrmProcessExitSpawn2(k_licensee, libretro_path, (const char** const)spawn_argv, NULL, (sys_addr_t)spawn_data, 256, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M);
|
||||
RARCH_LOG("Launch libretro core: [%s] (return code: %x]).\n", libretro_path, ret);
|
||||
|
||||
if(ret < 0)
|
||||
{
|
||||
RARCH_LOG("Executable file is not of NPDRM type, trying another approach to boot it...\n");
|
||||
sys_game_process_exitspawn2(libretro_path, NULL, NULL, NULL, 0, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M);
|
||||
}
|
||||
|
||||
sceNpTerm();
|
||||
|
||||
sys_net_finalize_network();
|
||||
|
||||
cellSysmoduleUnloadModule(CELL_SYSMODULE_SYSUTIL_NP);
|
||||
|
||||
cellSysmoduleUnloadModule(CELL_SYSMODULE_NET);
|
||||
#ifdef __CELLOS_LV2__
|
||||
cellSysmoduleUnloadModule(CELL_SYSMODULE_SYSUTIL_GAME);
|
||||
cellSysmoduleLoadModule(CELL_SYSMODULE_FS);
|
||||
cellSysmoduleLoadModule(CELL_SYSMODULE_IO);
|
||||
|
@ -368,7 +368,8 @@ begin_shutdown:
|
||||
}
|
||||
#endif
|
||||
|
||||
rarch_console_exec();
|
||||
if(g_console.return_to_launcher)
|
||||
rarch_console_exec(g_console.launch_app_on_exit);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -177,7 +177,9 @@ begin_shutdown:
|
||||
video_null.stop();
|
||||
#endif
|
||||
input_xinput.free(NULL);
|
||||
rarch_console_exec();
|
||||
|
||||
if(g_console.return_to_launcher)
|
||||
rarch_console_exec(g_console.launch_app_on_exit);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user