mirror of
https://github.com/libretro/scummvm.git
synced 2024-11-27 03:10:37 +00:00
PS3: Initial version of the PlayStation 3 backend
This commit is contained in:
parent
872d672c33
commit
11cfa0d357
1
.gitignore
vendored
1
.gitignore
vendored
@ -19,6 +19,7 @@ lib*.a
|
||||
/MT32_CONTROL.ROM
|
||||
/MT32_PCM.ROM
|
||||
/ScummVM.app
|
||||
/scummvm-ps3.pkg
|
||||
/*.ipk
|
||||
/.project
|
||||
/.cproject
|
||||
|
@ -19,7 +19,7 @@
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#if defined(POSIX)
|
||||
#if defined(POSIX) || defined(PLAYSTATION3)
|
||||
|
||||
// Re-enable some forbidden symbols to avoid clashes with stat.h and unistd.h.
|
||||
// Also with clock() in sys/time.h in some Mac OS X SDKs.
|
||||
|
@ -30,6 +30,7 @@
|
||||
* Parts of this class are documented in the base interface class, FilesystemFactory.
|
||||
*/
|
||||
class POSIXFilesystemFactory : public FilesystemFactory {
|
||||
protected:
|
||||
virtual AbstractFSNode *makeRootFileNode() const;
|
||||
virtual AbstractFSNode *makeCurrentDirectoryFileNode() const;
|
||||
virtual AbstractFSNode *makeFileNodePath(const Common::String &path) const;
|
||||
|
@ -19,7 +19,7 @@
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#if defined(POSIX)
|
||||
#if defined(POSIX) || defined(PLAYSTATION3)
|
||||
|
||||
// Re-enable some forbidden symbols to avoid clashes with stat.h and unistd.h.
|
||||
// Also with clock() in sys/time.h in some Mac OS X SDKs.
|
||||
|
26
backends/fs/ps3/ps3-fs-factory.cpp
Normal file
26
backends/fs/ps3/ps3-fs-factory.cpp
Normal file
@ -0,0 +1,26 @@
|
||||
/* 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 2
|
||||
* 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, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "backends/fs/ps3/ps3-fs-factory.h"
|
||||
|
||||
AbstractFSNode *PS3FilesystemFactory::makeCurrentDirectoryFileNode() const {
|
||||
return makeRootFileNode();
|
||||
}
|
36
backends/fs/ps3/ps3-fs-factory.h
Normal file
36
backends/fs/ps3/ps3-fs-factory.h
Normal file
@ -0,0 +1,36 @@
|
||||
/* 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 2
|
||||
* 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, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef PS3_FILESYSTEM_FACTORY_H
|
||||
#define PS3_FILESYSTEM_FACTORY_H
|
||||
|
||||
#include "backends/fs/posix/posix-fs-factory.h"
|
||||
|
||||
/**
|
||||
* Creates PS3FilesystemFactory objects.
|
||||
*
|
||||
* Parts of this class are documented in the base interface class, FilesystemFactory.
|
||||
*/
|
||||
class PS3FilesystemFactory : public POSIXFilesystemFactory {
|
||||
virtual AbstractFSNode *makeCurrentDirectoryFileNode() const;
|
||||
};
|
||||
|
||||
#endif /*PS3_FILESYSTEM_FACTORY_H*/
|
@ -104,6 +104,13 @@ MODULE_OBJS += \
|
||||
midi/camd.o
|
||||
endif
|
||||
|
||||
ifdef PLAYSTATION3
|
||||
MODULE_OBJS += \
|
||||
fs/posix/posix-fs.o \
|
||||
fs/posix/posix-fs-factory.o \
|
||||
fs/ps3/ps3-fs-factory.o
|
||||
endif
|
||||
|
||||
ifeq ($(BACKEND),ds)
|
||||
MODULE_OBJS += \
|
||||
fs/ds/ds-fs.o \
|
||||
|
@ -34,6 +34,7 @@
|
||||
!defined(CAANOO) && \
|
||||
!defined(LINUXMOTO) && \
|
||||
!defined(SAMSUNGTV) && \
|
||||
!defined(PLAYSTATION3) && \
|
||||
!defined(OPENPANDORA)
|
||||
|
||||
#include "backends/platform/sdl/sdl.h"
|
||||
|
@ -29,6 +29,12 @@ MODULE_OBJS += \
|
||||
amigaos/amigaos.o
|
||||
endif
|
||||
|
||||
ifdef PLAYSTATION3
|
||||
MODULE_OBJS += \
|
||||
ps3/ps3-main.o \
|
||||
ps3/ps3.o
|
||||
endif
|
||||
|
||||
# We don't use rules.mk but rather manually update OBJS and MODULE_DIRS.
|
||||
MODULE_OBJS := $(addprefix $(MODULE)/, $(MODULE_OBJS))
|
||||
OBJS := $(MODULE_OBJS) $(OBJS)
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
#include "common/scummsys.h"
|
||||
|
||||
#if defined(POSIX) && !defined(MACOSX) && !defined(SAMSUNGTV) && !defined(WEBOS) && !defined(LINUXMOTO) && !defined(GPH_DEVICE) && !defined(GP2X) && !defined(DINGUX) && !defined(OPENPANDORA)
|
||||
#if defined(POSIX) && !defined(MACOSX) && !defined(SAMSUNGTV) && !defined(WEBOS) && !defined(LINUXMOTO) && !defined(GPH_DEVICE) && !defined(GP2X) && !defined(DINGUX) && !defined(OPENPANDORA) && !defined(PLAYSTATION3)
|
||||
|
||||
#include "backends/platform/sdl/posix/posix.h"
|
||||
#include "backends/plugins/sdl/sdl-provider.h"
|
||||
|
49
backends/platform/sdl/ps3/ps3-main.cpp
Normal file
49
backends/platform/sdl/ps3/ps3-main.cpp
Normal file
@ -0,0 +1,49 @@
|
||||
/* 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 2
|
||||
* 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, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "common/scummsys.h"
|
||||
|
||||
#include "backends/platform/sdl/ps3/ps3.h"
|
||||
#include "backends/plugins/sdl/sdl-provider.h"
|
||||
#include "base/main.h"
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
||||
// Create our OSystem instance
|
||||
g_system = new OSystem_PS3();
|
||||
assert(g_system);
|
||||
|
||||
// Pre initialize the backend
|
||||
((OSystem_PS3 *)g_system)->init();
|
||||
|
||||
#ifdef DYNAMIC_MODULES
|
||||
PluginManager::instance().addPluginProvider(new SDLPluginProvider());
|
||||
#endif
|
||||
|
||||
// Invoke the actual ScummVM main entry point:
|
||||
int res = scummvm_main(argc, argv);
|
||||
|
||||
// Free OSystem
|
||||
delete (OSystem_PS3 *)g_system;
|
||||
|
||||
return res;
|
||||
}
|
79
backends/platform/sdl/ps3/ps3.cpp
Normal file
79
backends/platform/sdl/ps3/ps3.cpp
Normal file
@ -0,0 +1,79 @@
|
||||
/* 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 2
|
||||
* 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, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_mkdir
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_time_h //On IRIX, sys/stat.h includes sys/time.h
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_unistd_h
|
||||
|
||||
#include "common/scummsys.h"
|
||||
#include "common/config-manager.h"
|
||||
#include "backends/platform/sdl/ps3/ps3.h"
|
||||
#include "backends/graphics/surfacesdl/surfacesdl-graphics.h"
|
||||
#include "backends/saves/default/default-saves.h"
|
||||
#include "backends/fs/ps3/ps3-fs-factory.h"
|
||||
|
||||
#include <dirent.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
int access(const char *pathname, int mode) {
|
||||
struct stat sb;
|
||||
|
||||
if (stat(pathname, &sb) == -1) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
OSystem_PS3::OSystem_PS3(Common::String baseConfigName)
|
||||
: _baseConfigName(baseConfigName) {
|
||||
}
|
||||
|
||||
void OSystem_PS3::init() {
|
||||
// Initialze File System Factory
|
||||
_fsFactory = new PS3FilesystemFactory();
|
||||
|
||||
// Invoke parent implementation of this method
|
||||
OSystem_SDL::init();
|
||||
}
|
||||
|
||||
void OSystem_PS3::initBackend() {
|
||||
ConfMan.registerDefault("joystick_num", 0);
|
||||
ConfMan.registerDefault("fullscreen", true);
|
||||
ConfMan.registerDefault("aspect_ratio", true);
|
||||
|
||||
// Create the savefile manager
|
||||
if (_savefileManager == 0)
|
||||
_savefileManager = new DefaultSaveFileManager(PREFIX "/saves");
|
||||
|
||||
// Invoke parent implementation of this method
|
||||
OSystem_SDL::initBackend();
|
||||
}
|
||||
|
||||
Common::String OSystem_PS3::getDefaultConfigFileName() {
|
||||
return PREFIX "/" + _baseConfigName;
|
||||
}
|
||||
|
||||
Common::WriteStream *OSystem_PS3::createLogFile() {
|
||||
Common::FSNode file(PREFIX "/scummvm.log");
|
||||
return file.createWriteStream();
|
||||
}
|
47
backends/platform/sdl/ps3/ps3.h
Normal file
47
backends/platform/sdl/ps3/ps3.h
Normal file
@ -0,0 +1,47 @@
|
||||
/* 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 2
|
||||
* 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, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef PLATFORM_SDL_PS3_H
|
||||
#define PLATFORM_SDL_PS3_H
|
||||
|
||||
#include "backends/platform/sdl/sdl.h"
|
||||
|
||||
class OSystem_PS3 : public OSystem_SDL {
|
||||
public:
|
||||
// Let the subclasses be able to change _baseConfigName in the constructor
|
||||
OSystem_PS3(Common::String baseConfigName = "scummvm.ini");
|
||||
virtual ~OSystem_PS3() {}
|
||||
|
||||
virtual void init();
|
||||
virtual void initBackend();
|
||||
|
||||
protected:
|
||||
// Base string for creating the default path and filename
|
||||
// for the configuration file
|
||||
Common::String _baseConfigName;
|
||||
|
||||
virtual Common::String getDefaultConfigFileName();
|
||||
|
||||
virtual Common::WriteStream *createLogFile();
|
||||
};
|
||||
|
||||
#endif
|
41
configure
vendored
41
configure
vendored
@ -743,6 +743,7 @@ Special configuration feature:
|
||||
n64 for Nintendo 64
|
||||
openpandora for OpenPandora
|
||||
ps2 for PlayStation 2
|
||||
ps3 for PlayStation 3
|
||||
psp for PlayStation Portable
|
||||
samsungtv for Samsung TV
|
||||
webos for HP Palm WebOS
|
||||
@ -1117,6 +1118,22 @@ ps2)
|
||||
_host_cpu=mips64r5900el
|
||||
_host_alias=ee
|
||||
;;
|
||||
ps3)
|
||||
_host_os=ps3
|
||||
_host_cpu=ppc
|
||||
_host_alias=powerpc64-ps3-elf
|
||||
|
||||
# The prefix is always the same on PS3 so we hardcode the default
|
||||
# here. It is still possible to define a custom prefix which is
|
||||
# needed when packaging the app with a user-specific app ID.
|
||||
test "x$prefix" = xNONE && prefix=/dev_hdd0/game/SCUM12000/USRDIR
|
||||
# PS3 apps are installed into app-specific directories. The
|
||||
# default directory structure of ScummVM makes no sense here so we
|
||||
# hardcode PS3 specific directories here.
|
||||
datarootdir='${prefix}/data'
|
||||
datadir='${datarootdir}'
|
||||
docdir='${prefix}/doc'
|
||||
;;
|
||||
psp)
|
||||
_host_os=psp
|
||||
_host_cpu=mipsallegrexel
|
||||
@ -1258,6 +1275,12 @@ ps2)
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
ps3)
|
||||
if test -z "$PS3DEV"; then
|
||||
echo "Please set PS3DEV in your environment. export PS3DEV=<path to ps3 toolchain>"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
psp)
|
||||
if test -z "$PSPDEV"; then
|
||||
PSPDEV=`psp-config --pspdev-path`
|
||||
@ -1450,7 +1473,7 @@ if test "$have_gcc" = yes ; then
|
||||
case $_host_os in
|
||||
# newlib-based system include files suppress non-C89 function
|
||||
# declarations under __STRICT_ANSI__
|
||||
amigaos* | android | dreamcast | ds | gamecube | mingw* | n64 | psp | ps2 | wii | wince )
|
||||
amigaos* | android | dreamcast | ds | gamecube | mingw* | n64 | psp | ps2 | ps3 | wii | wince )
|
||||
;;
|
||||
*)
|
||||
CXXFLAGS="$CXXFLAGS -ansi"
|
||||
@ -1839,6 +1862,16 @@ case $_host_os in
|
||||
DEFINES="$DEFINES -D_EE"
|
||||
DEFINES="$DEFINES -D__PLAYSTATION2__"
|
||||
;;
|
||||
ps3)
|
||||
# Force use of SDL from the ps3 toolchain
|
||||
_sdlpath="$PS3DEV/portlibs/ppu:$PS3DEV/portlibs/ppu/bin"
|
||||
|
||||
DEFINES="$DEFINES -DPLAYSTATION3"
|
||||
CXXFLAGS="$CXXFLAGS -I$PS3DEV/psl1ght/ppu/include -I$PS3DEV/portlibs/ppu/include"
|
||||
LDFLAGS="$LDFLAGS -L$PS3DEV/psl1ght/ppu/lib -L$PS3DEV/portlibs/ppu/lib"
|
||||
add_line_to_config_mk 'PLAYSTATION3 = 1'
|
||||
add_line_to_config_h "#define PREFIX \"${prefix}\""
|
||||
;;
|
||||
psp)
|
||||
if test -d "$PSPDEV/psp/lib"; then
|
||||
LDFLAGS="$LDFLAGS -L$PSPDEV/psp/lib"
|
||||
@ -2196,6 +2229,10 @@ if test -n "$_host"; then
|
||||
CXXFLAGS="$CXXFLAGS -s"
|
||||
fi
|
||||
;;
|
||||
ps3)
|
||||
_mt32emu=no
|
||||
_timidity=no
|
||||
;;
|
||||
psp)
|
||||
_backend="psp"
|
||||
_build_scalers=no
|
||||
@ -2419,7 +2456,7 @@ esac
|
||||
#
|
||||
echo_n "Checking if host is POSIX compliant... "
|
||||
case $_host_os in
|
||||
amigaos* | cygwin* | dreamcast | ds | gamecube | mingw* | n64 | ps2 | psp | wii | wince)
|
||||
amigaos* | cygwin* | dreamcast | ds | gamecube | mingw* | n64 | ps2 | ps3 | psp | wii | wince)
|
||||
_posix=no
|
||||
;;
|
||||
android | beos* | bsd* | darwin* | freebsd* | gph-linux | haiku* | hpux* | iphone | irix* | linux* | mint* | netbsd* | openbsd* | solaris* | sunos* | uclinux* | webos)
|
||||
|
BIN
dists/ps3/ICON0.PNG
Normal file
BIN
dists/ps3/ICON0.PNG
Normal file
Binary file not shown.
After Width: | Height: | Size: 42 KiB |
BIN
dists/ps3/PIC1.PNG
Normal file
BIN
dists/ps3/PIC1.PNG
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.0 MiB |
33
dists/ps3/sfo.xml
Normal file
33
dists/ps3/sfo.xml
Normal file
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" ?>
|
||||
<sfo>
|
||||
<value name="ATTRIBUTE" type="integer">
|
||||
0
|
||||
</value>
|
||||
<value name="BOOTABLE" type="integer">
|
||||
1
|
||||
</value>
|
||||
<value name="CATEGORY" type="string">
|
||||
HG
|
||||
</value>
|
||||
<value name="PARENTAL_LEVEL" type="integer">
|
||||
0
|
||||
</value>
|
||||
<value name="PS3_SYSTEM_VER" type="string">
|
||||
01.8000
|
||||
</value>
|
||||
<value name="RESOLUTION" type="integer">
|
||||
63
|
||||
</value>
|
||||
<value name="SOUND_FORMAT" type="integer">
|
||||
279
|
||||
</value>
|
||||
<value name="TITLE" type="string">
|
||||
ScummVM
|
||||
</value>
|
||||
<value name="TITLE_ID" type="string">
|
||||
SCUM12000
|
||||
</value>
|
||||
<value name="VERSION" type="string">
|
||||
01.00
|
||||
</value>
|
||||
</sfo>
|
25
ports.mk
25
ports.mk
@ -211,6 +211,27 @@ ifdef DIST_FILES_ENGINEDATA
|
||||
endif
|
||||
cp $(DIST_FILES_DOCS) $(AOS4PATH)
|
||||
|
||||
# Mark special targets as phony
|
||||
.PHONY: deb bundle osxsnap win32dist install uninstall
|
||||
#
|
||||
# PlayStation 3 specific
|
||||
#
|
||||
|
||||
ps3pkg: $(EXECUTABLE)
|
||||
$(STRIP) $(EXECUTABLE)
|
||||
sprxlinker $(EXECUTABLE)
|
||||
mkdir -p ps3pkg/USRDIR/data/
|
||||
mkdir -p ps3pkg/USRDIR/doc/
|
||||
mkdir -p ps3pkg/USRDIR/saves/
|
||||
make_self_npdrm "$(EXECUTABLE)" ps3pkg/USRDIR/EBOOT.BIN UP0001-SCUM12000_00-0000000000000000
|
||||
cp $(DIST_FILES_THEMES) ps3pkg/USRDIR/data/
|
||||
ifdef DIST_FILES_ENGINEDATA
|
||||
cp $(DIST_FILES_ENGINEDATA) ps3pkg/USRDIR/data/
|
||||
endif
|
||||
cp $(DIST_FILES_DOCS) ps3pkg/USRDIR/doc/
|
||||
cp dists/ps3/ICON0.PNG ps3pkg/
|
||||
cp dists/ps3/PIC1.PNG ps3pkg/
|
||||
sfo.py -f dists/ps3/sfo.xml ps3pkg/PARAM.SFO
|
||||
pkg.py --contentid UP0001-SCUM12000_00-0000000000000000 ps3pkg/ scummvm-ps3.pkg
|
||||
|
||||
# Mark special targets as phony
|
||||
.PHONY: deb bundle osxsnap win32dist install uninstall ps3pkg
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user