From c2cf5151897b6c60417682e85ce619050b74baa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Jos=C3=A9=20Garc=C3=ADa=20Garc=C3=ADa?= Date: Thu, 8 Sep 2016 01:25:14 +0200 Subject: [PATCH] (VITA) Initial Salamander --- Makefile.vita.salamander | 82 +++++++++++++++++++++++++++++++++ frontend/drivers/platform_psp.c | 22 +++++---- frontend/frontend_driver.c | 4 +- 3 files changed, 97 insertions(+), 11 deletions(-) create mode 100644 Makefile.vita.salamander diff --git a/Makefile.vita.salamander b/Makefile.vita.salamander new file mode 100644 index 0000000000..25025e78de --- /dev/null +++ b/Makefile.vita.salamander @@ -0,0 +1,82 @@ +HAVE_FILE_LOGGER = 0 +DEBUG = 0 + +TARGET = retroarchvita_salamander +TITLE_ID = RETROVITA + +ifeq ($(DEBUG), 1) + OPTIMIZE_LV := -O0 -g +else + OPTIMIZE_LV := -O2 +endif + +PREFIX = arm-vita-eabi +CC = $(PREFIX)-gcc + +INCDIR = libretro-common/include +CFLAGS = -Wl,-q $(OPTIMIZE_LV) -I$(INCDIR) -std=gnu99 -mfloat-abi=hard -ffast-math -fsingle-precision-constant -mword-relocations +ASFLAGS = $(CFLAGS) + +RARCH_DEFINES = -DVITA -DIS_SALAMANDER -DRARCH_CONSOLE + +LIBDIR = +LDFLAGS = +LIBS = -lSceKernel_stub -lSceDisplay_stub -lSceGxm_stub -lSceNet_stub -lSceNetCtl_stub\ + -lSceSysmodule_stub -lSceCtrl_stub -lSceAudio_stub -lSceFiber_stub\ + -lScePower_stub -lSceRtc_stub -lSceCommonDialog_stub -lScePgf_stub \ + -lSceMotion_stub -lSceAppMgr_stub -lfreetype -lpng -lm -lc + +ifeq ($(HAVE_FILE_LOGGER), 1) +CFLAGS += -DHAVE_FILE_LOGGER +endif + +CFLAGS += $(RARCH_DEFINES) + +OBJS = frontend/frontend_salamander.o \ + frontend/frontend_driver.o \ + frontend/drivers/platform_psp.o \ + frontend/drivers/platform_null.o \ + libretro-common/file/file_path.o \ + libretro-common/string/stdstring.o \ + libretro-common/lists/string_list.o \ + libretro-common/lists/dir_list.o \ + libretro-common/file/retro_dirent.o \ + libretro-common/compat/compat_strl.o \ + libretro-common/file/config_file.o \ + libretro-common/streams/file_stream.o \ + libretro-common/file/retro_stat.o \ + libretro-common/hash/rhash.o \ + file_path_str.o \ + verbosity.o + +all: $(TARGET).vpk + +%.vpk: eboot.bin + vita-mksfoex -s TITLE_ID=$(TITLE_ID) "$(TARGET)" param.sfo + vita-pack-vpk -s param.sfo -b eboot.bin $@ + +eboot.bin: $(TARGET).velf + vita-make-fself $< $@ + +%.velf: %.elf + vita-elf-create $< $@ + +$(TARGET).elf: $(OBJS) + $(CC) $(CFLAGS) $^ $(LIBS) -o $@ + +%.o: %.png + $(PREFIX)-ld -r -b binary -o $@ $^ + +clean: + @rm -rf $(TARGET).vpk $(TARGET).velf $(TARGET).elf $(OBJS) \ + eboot.bin param.sfo + +vpksend: $(TARGET).vpk + curl -T $(TARGET).vpk ftp://$(PSVITAIP):1337/ux0:/ + @echo "Sent." + +PSVITAIP = 192.168.1.15 + +send: eboot.bin + curl -T eboot.bin ftp://$(PSVITAIP):1337/ux0:/app/$(TITLE_ID)/ + @echo "Sent." diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c index 6dd3a6c803..3d27732729 100644 --- a/frontend/drivers/platform_psp.c +++ b/frontend/drivers/platform_psp.c @@ -22,7 +22,7 @@ #include #include #include -int scePowerSetArmClockFrequency(int freq); +#include #else #include #include @@ -101,8 +101,8 @@ static void frontend_psp_get_environment_settings(int *argc, char *argv[], /* bundle data*/ fill_pathname_join(g_defaults.dir.assets, "app0:/", "assets", sizeof(g_defaults.dir.assets)); - fill_pathname_join(g_defaults.dir.core, g_defaults.dir.port, - "cores", sizeof(g_defaults.dir.core)); + fill_pathname_join(g_defaults.dir.core, "app0:/", + "", sizeof(g_defaults.dir.core)); fill_pathname_join(g_defaults.dir.core_info, g_defaults.dir.core, "info", sizeof(g_defaults.dir.core_info)); /* user data*/ @@ -178,12 +178,13 @@ static void frontend_psp_get_environment_settings(int *argc, char *argv[], path_mkdir(g_defaults.dir.sram); path_mkdir(g_defaults.dir.system); + + +#ifndef IS_SALAMANDER #ifdef VITA params = (struct rarch_main_wrap*)params_data; params->verbose = true; #endif - -#ifndef IS_SALAMANDER if (!string_is_empty(argv[1])) { static char path[PATH_MAX_LENGTH]; @@ -231,7 +232,8 @@ static void frontend_psp_shutdown(bool unused) { (void)unused; #ifdef VITA - sceKernelExitProcess(0); + //sceKernelExitProcess(0); + return; #else sceKernelExitGame(); #endif @@ -296,7 +298,7 @@ static void frontend_psp_init(void *data) static void frontend_psp_exec(const char *path, bool should_load_game) { -#if defined(HAVE_KERNEL_PRX) || defined(IS_SALAMANDER) +#if defined(HAVE_KERNEL_PRX) || defined(IS_SALAMANDER) || defined(VITA) char *fullpath = NULL; char argp[512] = {0}; SceSize args = 0; @@ -316,9 +318,11 @@ static void frontend_psp_exec(const char *path, bool should_load_game) #endif RARCH_LOG("Attempt to load executable: [%s].\n", path); - +#if defined(VITA) + sceAppMgrLoadExec(path, NULL, NULL); +#else exitspawn_kernel(path, args, argp); - +#endif #endif } diff --git a/frontend/frontend_driver.c b/frontend/frontend_driver.c index 213346c84d..070a87bd67 100644 --- a/frontend/frontend_driver.c +++ b/frontend/frontend_driver.c @@ -134,7 +134,7 @@ bool frontend_driver_get_core_extension(char *s, size_t len) strlcpy(s, "pbp", len); return true; #elif defined(VITA) - strlcpy(s, "velf", len); + strlcpy(s, "self|bin", len); return true; #elif defined(_XBOX1) strlcpy(s, "xbe", len); @@ -168,7 +168,7 @@ bool frontend_driver_get_salamander_basename(char *s, size_t len) strlcpy(s, "EBOOT.PBP", len); return true; #elif defined(VITA) - strlcpy(s, "default.velf", len); + strlcpy(s, "eboot.bin", len); return true; #elif defined(_XBOX1) strlcpy(s, "default.xbe", len);