diff --git a/Makefile.ps3.cobra b/Makefile.ps3.cobra new file mode 100644 index 0000000000..23a8936f11 --- /dev/null +++ b/Makefile.ps3.cobra @@ -0,0 +1,199 @@ +RARCH_VERSION = "0.9.9.3" + +#which compiler to build with - GCC or SNC +#set to GCC for debug builds for use with debugger +CELL_BUILD_TOOLS = SNC +CELL_GPU_TYPE = RSX +CELL_PSGL_VERSION = ultra-opt + +RMENU_IMG_DIR := media/rmenu + +# options +DOWNLOAD_SHADERS = 1 +STRIPPING_ENABLE = 0 +DEBUG = 0 +HAVE_RGL = 1 +HAVE_LOGGER = 0 +HAVE_FREETYPE = 0 +HAVE_RLAUNCH = 0 +PERF_TEST = 0 +WHOLE_ARCHIVE_LINK = 0 + +CONTENT_ID_FULL = UP0001-SSNE10000_00-0000000000000001 +CONTENT_ID = SSNE10000 + +PC_DEVELOPMENT_IP_ADDRESS = "192.168.1.7" +PC_DEVELOPMENT_UDP_PORT = 3490 + +CELL_MK_DIR ?= $(CELL_SDK)/samples/mk +include $(CELL_MK_DIR)/sdk.makedef.mk + +PPU_TARGET = retroarch_ps3.elf +SALAMANDER_TARGET = retroarch-salamander_ps3.elf + +EBOOT_PATH = ps3/pkg/USRDIR/EBOOT.BIN +CORE_PATH = ps3/pkg/USRDIR/cores/CORE.SELF + +LDDIRS = -L. -L$(CELL_SDK)/target/ppu/lib/PSGL/RSX/ultra-opt +INCDIRS = -I. -Ips3 -Icommon + +# system platform +system_platform = unix +ifeq ($(shell uname -a),) +EXE_EXT = .exe + system_platform = win +else ifneq ($(findstring Darwin,$(shell uname -a)),) + system_platform = osx +else ifneq ($(findstring MINGW,$(shell uname -a)),) + system_platform = win +endif + +PKG_SCRIPT = ps3/ps3py/pkg.py +ifeq ($(shell uname), Linux) +PKG_FINALIZE = package_finalize +MAKE_SELF_WC = make_self_wc +MAKE_SELF = make_self_npdrm +PYTHON2 = python2 +GIT = git +else +PKG_FINALIZE = package_finalize.exe +MAKE_SELF_WC = make_self_wc.exe +MAKE_SELF = make_self_npdrm.exe +PYTHON2 = python2.exe +GIT = git.exe +endif + +PPU_SRCS = griffin/griffin.c + +ifeq ($(PERF_TEST), 1) + DEFINES += -DPERF_TEST +endif + +ifeq ($(HAVE_RLAUNCH), 1) + DEFINES += -DHAVE_RLAUNCH +endif + +DEFINES += -DHAVE_RMENU -DHAVE_MENU -DRARCH_INTERNAL + +ifeq ($(HAVE_RGL), 1) +DEFINES += -DHAVE_RGL +GL_LIBS := -L. -lrgl_ps3 +else +GL_LIBS := -L$(CELL_SDK)/target/ppu/lib/PSGL/RSX/ultra-opt -lPSGL -lPSGLcgc +endif + +ifeq ($(HAVE_FREETYPE), 1) +DEFINES += -DHAVE_FREETYPE +FONT_LIBS := -lfontFT_stub -lfreetype_stub +else +DEFINES += -DHAVE_LIBDBGFONT +FONT_LIBS := -ldbgfont +endif + +ifeq ($(CELL_BUILD_TOOLS), SNC) + PPU_CXXLD = $(CELL_SDK)/host-win32/sn/bin/ps3ppuld.exe + PPU_CXX = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe + PPU_CC = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe +else +ifneq($(system_platform), win) + PPU_CXX = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-g++.exe + PPU_CC = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-gcc.exe + PPU_CXXLD = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ld.exe + PPU_CCLD = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ld.exe +endif + +ifeq ($(WHOLE_ARCHIVE_LINK), 1) +WHOLE_START := -Wl, --whole-archive +WHOLE_END := -Wl, --no-whole-archive +endif + +PPU_LDLIBS = $(FONT_LIBS) $(GL_LIBS) $(WHOLE_START) -lretro_ps3 $(WHOLE_END) -lcgc -lgcm_cmdasm -lgcm_sys_stub -lresc_stub -lm -lio_stub -lfs_stub -lsysutil_stub -lsysutil_game_stub -lsysutil_screenshot_stub -lsysutil_np_stub -lpngdec_stub -ljpgdec_stub -lsysmodule_stub -laudio_stub -lnet_stub -lnetctl_stub -lpthread + +PPU_RANLIB = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ranlib.exe + +DEFINES += -DHAVE_THREADS -DRARCH_CONSOLE -DHAVE_OPENGL -DHAVE_OVERLAY -DHAVE_HEADSET -DHAVE_VID_CONTEXT -DHAVE_OPENGLES -DHAVE_OPENGLES1 -DHAVE_PSGL -DHAVE_CG -DHAVE_CG_RUNTIME_COMPILER -DHAVE_FBO -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_RSOUND -DHAVE_ZLIB -DWANT_MINIZ -DSINC_LOWER_QUALITY -D__CELLOS_LV2__ -DHAVE_NETPLAY=1 -DHAVE_SOCKET_LEGACY=1 -DHAVE_OSK -DHAVE_MOUSE -DHAVE_GRIFFIN=1 -DHAVE_MULTIMAN=0 -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) + +ifeq ($(DEBUG), 1) + PPU_OPTIMIZE_LV := -O0 -g +else + PPU_OPTIMIZE_LV := -O3 -g +endif + +ifeq ($(HAVE_LOGGER), 1) +DEFINES += -DHAVE_LOGGER +INCDIRS += -Iconsole/logger +endif + +PPU_CFLAGS := $(PPU_OPTIMIZE_LV) $(INCDIRS) $(DEFINES) +PPU_CXXFLAGS := $(PPU_OPTIMIZE_LV) $(INCDIRS) $(DEFINES) + +EXIST_EBOOT_WILDCARD := $(wildcard $(EBOOT_PATH)) +EXIST_CORE_WILDCARD := $(wildcard $(CORE_PATH)) + +EBOOT_EXISTS = 1 +CORE_EXISTS = 1 + +ifneq ($(strip $(EXIST_EBOOT_WILDCARD)),) +EBOOT_EXISTS = 0 +endif + +ifneq ($(strip $(EXIST_CORE_WILDCARD)),) +CORE_EXISTS = 0 +endif + +include $(CELL_MK_DIR)/sdk.target.mk + +MAKE_FSELF = $(CELL_SDK)/host-win32/bin/make_fself.exe +MAKE_FSELF_NPDRM = $(CELL_SDK)/host-win32/bin/make_fself_npdrm.exe +MAKE_PACKAGE_NPDRM = $(CELL_SDK)/host-win32/bin/make_package_npdrm.exe + +.PHONY: create-npdrm-core create-core create-npdrm-salamander create-shaders clean-selfs create-salamander + +create-npdrm-core: + $(MAKE_FSELF_NPDRM) $(PPU_TARGET) $(CORE_PATH) + +create-core: + $(MAKE_SELF_WC) $(PPU_TARGET) $(CORE_PATH) + +create-npdrm-salamander: + $(MAKE_FSELF_NPDRM) $(SALAMANDER_TARGET) $(EBOOT_PATH) + +create-salamander: + $(MAKE_SELF) $(SALAMANDER_TARGET) $(EBOOT_PATH) $(CONTENT_ID_FULL) + +copy-media-files: + @cp -r $(RMENU_IMG_DIR)/*.png ps3/pkg/USRDIR/cores/borders/Menu/ + +create-shaders: + make -f Makefile.shaders deploy-ps3 + +pkg: $(PPU_TARGET) create-shaders copy-media-files create-npdrm-salamander create-npdrm-core + $(MAKE_PACKAGE_NPDRM) ps3/pkg/package.conf ps3/pkg + +pkg-signed: $(PPU_TARGET) create-shaders copy-media-files create-salamander create-core + $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION).pkg + +pkg-signed-standalone: $(PPU_TARGET) create-shaders copy-media-files create-core + $(MAKE_SELF) $(PPU_TARGET) $(EBOOT_PATH) $(CONTENT_ID) + $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION).pkg + +pkg-signed-cfw: $(PPU_TARGET) create-shaders copy-media-files create-salamander create-core + $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION)-kmeaw.pkg + $(PKG_FINALIZE) retroarch-ps3-cfw-$(RARCH_VERSION)-kmeaw.pkg + +pkg-signed-cfw-standalone: $(PPU_TARGET) create-shaders copy-media-files create-core + $(MAKE_SELF) $(PPU_TARGET) $(EBOOT_PATH) $(CONTENT_ID) + $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION).pkg + $(PKG_FINALIZE) retroarch-ps3-cfw-$(RARCH_VERSION)-kmeaw.pkg + +clean-selfs: +ifeq ($(EBOOT_EXISTS),1) + @echo "WARNING: Couldn't find file to delete: [$(EBOOT_PATH)], skipping this step." +else + rm $(EBOOT_PATH) +endif +ifeq ($(CORE_EXISTS),1) + @echo "WARNING: Couldn't find file to delete: [$(CORE_PATH)], skipping this step." +else + rm $(CORE_PATH) +endif diff --git a/Makefile.shaders b/Makefile.shaders index fce323dd8b..0c0a9c8380 100644 --- a/Makefile.shaders +++ b/Makefile.shaders @@ -3,6 +3,7 @@ SHADER_DIR := media/shaders SHADER_GLSL_DIR := media/shaders_glsl SHADER_DEST_PS3_DIR := ps3/pkg/USRDIR/cores/shaders +SHADER_DEST_PS3_COBRA_DIR := ps3/iso/PS3_GAME/USRDIR/cores/shaders # system platform system_platform = unix @@ -53,3 +54,12 @@ deploy-ps3: checkout-shaders mkdir -p $(SHADER_DEST_PS3_DIR) || bin/true; \ fi @echo "[DEPLOY PS3::] Copied shaders to PS3 shaders directory." + +deploy-ps3-cobra: checkout-shaders + @if test -d $(SHADER_DEST_PS3_COBRA_DIR); then \ + cp -r $(SHADER_DIR)/* $(SHADER_DEST_PS3_COBRA_DIR); \ + else \ + echo "[DEPLOY PS3::] Creating PS3 shader directory first..."; \ + mkdir -p $(SHADER_DEST_PS3_COBRA_DIR) || bin/true; \ + fi + @echo "[DEPLOY PS3::] Copied shaders to PS3 shaders directory." diff --git a/dist-scripts/ps3-cores-cobraode.sh b/dist-scripts/ps3-cores-cobraode.sh new file mode 100644 index 0000000000..abe961b08d --- /dev/null +++ b/dist-scripts/ps3-cores-cobraode.sh @@ -0,0 +1,36 @@ +#!/bin/sh +#For this script to work correctly, you must place the "data" folder containing your ps3 keys for scetool to use in the dist-scripts folder. + +make -C ../ -f Makefile.ps3.salamander clean || exit 1 +make -C ../ -f Makefile.ps3.rgl clean || exit 1 +make -C ../ -f Makefile.ps3.cobra clean || exit 1 + +make -C ../ -f Makefile.ps3.salamander || exit 1 +make -C ../ -f Makefile.ps3.rgl || exit 1 + +GENPS3ISO_PATH=/cygdrive/c/Cobra_ODE_GenPS3iso_v2.3/genps3iso.exe +SCETOOL_PATH=/cygdrive/c/Users/aaa801/ps3tools/ps3tools/tools/scetool/scetool.exe +SCETOOL_FLAGS="--sce-type SELF --compress-data FALSE --self-type APP --key-revision 0004 --self-fw-version 0003004100000000 --self-app-version 0001000000000000 --self-auth-id 1010000001000003 --self-vendor-id 01000002 --self-cap-flags 00000000000000000000000000000000000000000000003b0000000100040000" + +for f in *_ps3.a ; do + name=`echo "$f" | sed 's/\(_libretro\|\)_ps3.a$//'` + whole_archive= + if [ $name = "nxengine" ] ; then + whole_archive="WHOLE_ARCHIVE_LINK=1" + echo $name yes + fi + cp -f "$f" ../libretro_ps3.a + make -C ../ -f Makefile.ps3.cobra $whole_archive -j3 || exit 1 + $SCETOOL_PATH $SCETOOL_FLAGS --encrypt ../retroarch_ps3.elf ../CORE.SELF + mv -f ../CORE.SELF ../ps3/iso/PS3_GAME/USRDIR/cores/"${name}_libretro_ps3.SELF" + rm -f ../retroarch_ps3.elf ../retroarch_ps3.self ../CORE.SELF +done + +cp -r ../media/rmenu/*.png ../ps3/iso/PS3_GAME/USRDIR/cores/borders/Menu/ + +make -C ../ -f Makefile.shaders deploy-ps3-cobra + +$SCETOOL_PATH $SCETOOL_FLAGS --encrypt ../retroarch-salamander_ps3.elf ../ps3/iso/PS3_GAME/USRDIR/EBOOT.BIN +rm -rf ../retroarch-salamander_ps3.elf + +$GENPS3ISO_PATH ../ps3/iso RetroArch-COBRA-ODE.iso \ No newline at end of file diff --git a/ps3/iso/PS3_DISC.SFB b/ps3/iso/PS3_DISC.SFB new file mode 100644 index 0000000000..647719d829 Binary files /dev/null and b/ps3/iso/PS3_DISC.SFB differ diff --git a/ps3/iso/PS3_GAME/ICON0.PNG b/ps3/iso/PS3_GAME/ICON0.PNG new file mode 100644 index 0000000000..5cb77d77f7 Binary files /dev/null and b/ps3/iso/PS3_GAME/ICON0.PNG differ diff --git a/ps3/iso/PS3_GAME/PARAM.SFO b/ps3/iso/PS3_GAME/PARAM.SFO new file mode 100644 index 0000000000..e769d575e6 Binary files /dev/null and b/ps3/iso/PS3_GAME/PARAM.SFO differ diff --git a/ps3/iso/PS3_GAME/PS3LOGO.DAT b/ps3/iso/PS3_GAME/PS3LOGO.DAT new file mode 100644 index 0000000000..1fe5303335 Binary files /dev/null and b/ps3/iso/PS3_GAME/PS3LOGO.DAT differ diff --git a/ps3/iso/PS3_GAME/USRDIR/.empty b/ps3/iso/PS3_GAME/USRDIR/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ps3/iso/PS3_GAME/USRDIR/cores/.empty b/ps3/iso/PS3_GAME/USRDIR/cores/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ps3/iso/PS3_GAME/USRDIR/cores/borders/Menu/.empty b/ps3/iso/PS3_GAME/USRDIR/cores/borders/Menu/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ps3/iso/PS3_GAME/USRDIR/cores/borders/Menu/captain-cpsx.png b/ps3/iso/PS3_GAME/USRDIR/cores/borders/Menu/captain-cpsx.png new file mode 100644 index 0000000000..f9f6e34946 Binary files /dev/null and b/ps3/iso/PS3_GAME/USRDIR/cores/borders/Menu/captain-cpsx.png differ diff --git a/ps3/iso/PS3_GAME/USRDIR/cores/presets/.empty b/ps3/iso/PS3_GAME/USRDIR/cores/presets/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ps3/iso/PS3_GAME/USRDIR/cores/savestates/.empty b/ps3/iso/PS3_GAME/USRDIR/cores/savestates/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ps3/iso/PS3_GAME/USRDIR/cores/sram/.empty b/ps3/iso/PS3_GAME/USRDIR/cores/sram/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ps3/iso/PS3_GAME/USRDIR/cores/system/.empty b/ps3/iso/PS3_GAME/USRDIR/cores/system/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ps3/iso/PS3_UPDATE/PS3UPDAT.PUP b/ps3/iso/PS3_UPDATE/PS3UPDAT.PUP new file mode 100644 index 0000000000..e69de29bb2